Hallo,
ich kann die gemessenen Werte nicht auslesen.
Kann mir jemand sagen was ich falsch mache.
Danke im voraus.Code:#include "system.h" #include "PIC16F877A.h" #pragma CLOCK_FREQ 20000000 #pragma DATA 0x2007, _HS_OSC & _WDT_OFF & _PWRTE_ON & _BODEN_ON & _LVP_OFF & _CPD_OFF & _WRT_OFF & _DEBUG_ON & _CP_OFF char RxHiData; char RxLoData; void Bus_reservieren(); void Bus_freigeben(); void main() { set_bit (trisc,3); // RC3 als Eingang set_bit (trisc,4); // RC4 als Eingang sspadd = 12; sspcon = 8; // Master Mode set_bit (sspcon, 5); // IIC einschalten while (1) { Bus_reservieren(); sspbuf = 0xE4; while (!(test_bit( pir1, 3))); clear_bit (pir1, 3); // Adresse gesendet sspbuf = 0x0; while (!(test_bit( pir1, 3))); clear_bit (pir1, 3); // Register gesendet sspbuf = 0x51; while (!(test_bit( pir1, 3))); clear_bit (pir1, 3); // Befehl gesendet Bus_freigeben(); delay_ms(65); // warten Bus_reservieren(); sspbuf = 0xE0; while (!(test_bit( pir1, 3))); clear_bit (pir1, 3); // Adresse gesendet sspbuf = 0x02; while (!(test_bit( pir1, 3))); clear_bit (pir1, 3); // Register gesendet Bus_freigeben(); // bis hier scheint er fehlerfrei zu laufen Bus_reservieren(); sspbuf = 0xE1; while (!(test_bit( pir1, 3))); clear_bit (pir1, 3); // Adresse gesendet set_bit (sspcon2 ,3); while (!(test_bit( pir1, 3))); clear_bit (pir1, 3); RxHiData = sspbuf; // Byte gelesen set_bit (sspcon2, 4); // Ack senden set_bit (sspcon2 ,3); while (!(test_bit( pir1, 3))); clear_bit (pir1, 3); RxLoData = sspbuf; // Byte gelesen Bus_freigeben(); } } void Bus_reservieren() { clear_bit (pir1, 3); set_bit (sspcon2, 0); while (!(test_bit( pir1, 3))); clear_bit (pir1, 3); // Bus übernommen } void Bus_freigeben() { set_bit (sspcon2, 0); while (!(test_bit( pir1, 3))); clear_bit (pir1, 3); // Bus freigegeben }
Lesezeichen