Problem med LM75 digital temperatursensor + PIC

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Axbri
Inlägg: 20
Blev medlem: 6 februari 2010, 20:15:47

Problem med LM75 digital temperatursensor + PIC

Inlägg av Axbri »

Nu har jag börjat med ett nytt "projekt" och har därför nya problem.

Jag försöker att läsa ut data från en digital LM75 temperatursensor 73-268-28 som är ansluten med en I2C-buss till en PIC16F887, och sedan lägga ut datan på två portar där det finns lysdioder anslutna. Jag programmerar i mikroC 8.2 och använder EasyPic5

Jag har aldrig lyckats få sensorn att skicka data över huvud taget. Vad gör jag för fel?

Så här ser koden ut:

Kod: Markera allt

 
unsigned short LM75_H = 0;
unsigned short LM75_L = 0;

 
  void main()                               // main
  {
  OSCCON = 113;                             // intern oscillator på 8 MHz

  CM1CON0 = 0;                              // inga komparatorer
  CM2CON0 = 0;
  CM2CON1 = 0;
  
  ANSEL = 0;                                // inga analoga ingångar
  ANSELH = 0;                               // inga analoga ingångar

  PORTA = 0;                                // clear PORTA
  TRISA = 0;                                // hela PORTA som output

  PORTB = 0;                                // clear PORTB
  TRISB = 0;                                // hela PORTB som output

  PORTC = 0;                                // clear PORTC
  TRISC = 0;                                // hela PORTC som output

  I2C_Init(100000);                         // data: PORTC,4    clock: PORTC,3

    while (1)                               // oändlig huvudloop
    {
    Delay_ms(100);
    I2C_Start();                            // Issue I2C start signal
    I2C_Wr(0x48);                           // (adressen: 1001000)
    I2C_Wr(0x00);                           // Send Pointer Reg. 0x00 = Temp
                                            //                   0x01 = Config.
                                            //                   0x02 = HYST Set Point
                                            //                   0x03 = OS Set Point
    I2C_Start();                            // Issue I2C start signal
    I2C_Wr(0x48);                           // Issue a Read Command
    LM75_H = I2C_Rd(1);                     // Read the data (acknowledge)
    LM75_L = I2C_Rd(0);                     // Read the data (NO acknowledge)
    I2C_Stop();                             // I2C stop
    
    PORTA = LM75_H;
    PORTB = LM75_L;
    
    Delay_ms(10000);                        // mät var tionde sekund
    
    }
  }
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: Problem med LM75 digital temperatursensor + PIC

Inlägg av vfr »

Du har med anrop till I2C-funktioner som inte finns definierade i din kod, så jag antar att det är biblioteksfunktioner för mikroC. Är du säker på att du kopplat på rätt sätt efter hur biblioteksfunktionerna är skrivna?
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Re: Problem med LM75 digital temperatursensor + PIC

Inlägg av v-g »

Minns då jag skulle ha igång det hela en gång i tiden med annan sensor, fasen vad jag felsökte och hittade allsköns fel också.

Om du har oscilloskop så kolla utgången så du VERKLIGEN skickar det du tror. I början skickade jag inte ett jota trots att jag trodde det. Själva protokollet är inte så svårt att begripa sig på.

Lägg en trigg (i koden)på någon ledig pinne just före du kommunicerar så har du två kanaler (förutsatt att du har ett tvåkanaligt osc.).

Har iofs koden kvar (någonstans :vissla: ) tyvärr skriven i ASM.
Skriv svar