Hallo allerseits!
Ich arbeite gerade an der Verbindung(I2C) zwischen einem PIC(PIC18f87j11) und einem Temperatursensor(Tmp100na).
Die beiden Busleitungen arbeiten beim senden korrekt aber sobald ich versuche etwas zu empfangen bekomme ich als erstes Byte den zuletzt gesendeten Wert wieder und dann kommt nichts mehr und der PIC vergammelt in der warte schleife.
Ich verwende MPLABX / Xc8Code:#include <p18f87j11.h> #include<pic18.h> #define _XTAL_FREQ 20000000 #pragma config XINST=OFF void i2c_Wait(void) { while (PIR1bits.SSP1IF == 0); PIR1bits.SSP1IF = 0; } void i2c_Restart(void) { i2c_Wait(); SSP1CON2bits.RSEN=1; } void i2c_Write(unsigned char data) { SSP1BUF = data; i2c_Wait(); } void AcknI2C1(void) { SSP1CON2bits.ACKDT = 0; SSP1CON2bits.ACKEN = 1; } unsigned char ReaI2C1(void) { SSP1CON2bits.RCEN = 1; i2c_Wait(); return ( SSP1BUF ); } void main(void) { SSP1STAT = 0b11000000; TRISC=0b00011000; OSCCON = 0b01111010; SSP1CON1 = 0b0001000; SSP1CON1bits.SSPEN=1 SSP1CON1bits.SSPEN1=1; SSPADD = 12; while(1) { //Senden PIR1bits.SSP1IF = 0; SSP1CON2bits.SEN = 1; i2c_Wait(); i2c_Write(0b10010010); i2c_Write(0b00000000); i2c_Write(0b10010010); SSP1CON2bits.PEN=1; //Empfangen unsigned char tmp1; unsigned char tmp2; tmp1 = ReaI2C1(); AcknI2C1(); tmp2 = ReaI2C1(); } }
Meine Vermutung liegt darin das der Fehler in der Initialisierung liegt aber ich hab bereits die Datenblätter von Sensor sowie von Controller mehrfach durchgelesen(den I2C-Part) und nichts gefunden...
Danke im voraus!







Zitieren

Lesezeichen