Gönderen Konu: mlx90614 pic18f4550  (Okunma sayısı 192 defa)

Çevrimdışı sevda

  • Yeni Üye
  • *
  • İleti: 1
mlx90614 pic18f4550
« : 29 Temmuz 2017, 18:12:30 »
Ben mlx90614 sensörünü kullanarak pic18f4550'de proje
yazıyorum ama derleyici void main kısmında çağırdığım
fonksiyon kısmında sürekli hata veriyor.
Nasıl düzeltebilirim veya nerede yanlış yapıyorum?

Kod: [Seç]
sbit LCD_RS at RD4_bit;
sbit LCD_EN at RD5_bit;
sbit LCD_D4 at RD0_bit;
sbit LCD_D5 at RD1_bit;
sbit LCD_D6 at RD2_bit;
sbit LCD_D7 at RD3_bit;

sbit LCD_RS_Direction at TRISD4_bit;
sbit LCD_EN_Direction at TRISD5_bit;
sbit LCD_D4_Direction at TRISD0_bit;
sbit LCD_D5_Direction at TRISD1_bit;
sbit LCD_D6_Direction at TRISD2_bit;
sbit LCD_D7_Direction at TRISD3_bit;




const  _IR_THERMO_ADDR = 0x5A;
const  _AMB_TEMP = 0x06;
const  _OBJ_TEMP = 0x07;

char Temp;

char ReadSensor(char Temp_Source){
unsigned int Temp_var;
  I2C1_Start();
  I2C1_Wr(_IR_THERMO_ADDR << 1);
  I2C1_Wr(Temp_Source);
  I2C1_Repeated_Start();
  I2C1_Wr(_IR_THERMO_ADDR << 1);
  Temp_var = I2C1_Rd(0);
  Temp_var = (I2C1_Rd(0) << 8) + Temp_var;
  I2C1_Stop();
   return Temp_var;
}
void Display_Temperature(char Temp_Source, float temperature){
char text[15];
FloatToStr(temperature, text);
  if (text[1] == '.')
  text[4] = 0;
    if (text[2] == '.')
    text[5] = 0;
  if (text[3] == '.')
    text[6] = 0;
strcat(text, "°C");
if (Temp_Source == _AMB_TEMP)
Lcd_Out(2, 1, text);
  if (Temp_Source == _OBJ_TEMP)
    Lcd_Out(2, 10, text);

     }



  void main(){
    ADCON1 |= 0x0F;
  CMCON |= 0x07;

  Lcd_Init();
  Lcd_Cmd(_LCD_CLEAR);
  Lcd_Cmd(_LCD_CURSOR_OFF);
  Lcd_Out(1,1,"Initialising I2C");

  I2C1_Init(50000);
  Delay_ms(1000);
  Lcd_Cmd(_LCD_CLEAR);
  Lcd_Out(1,1,"Init OK");
  Delay_ms(1000);

  Lcd_Cmd(_LCD_CLEAR);
  Lcd_Out(1,1,"Amb. t: ");
  Lcd_Out(1,9," Obj. t:");

   while(1){
   Temp = ReadSensor(_AMB_TEMP); /* kod bu satıra kadar derleniyor ama bu satıra gelince hata veriyor bu kısmı fonksiyon alarak yazdım ama değişen bir şey olmadı arkadaşımın bilgisayarında derleyince kodu demo hatası verdi microc'nin demo sürümünden kaynaklı olduğunu düşünüyorum bi türlü main fonkiyonun içide bu kısmı çalıştıramıyorum   */
    Temp = (Temp * 0.02) - 273.15;
    Display_Temperature(_AMB_TEMP, Temp); //hata veriyor bu satırları silince sorun olmuyor


    Temp = ReadSensor(_OBJ_TEMP); //hata veriyor
    Temp = (Temp * 0.02) - 273.15;
    Display_Temperature(_OBJ_TEMP, Temp); //hata veriyor

    Delay_ms(500);
   }

  }
« Son Düzenleme: 05 Ağustos 2017, 11:14:57 Gönderen: mehmet »