Hallo zusammen!
Ich habe folgendes Problem und komme irgendwie nicht weiter. Ich
verwende einen dsPIC33EP64MC204. Die AD-Wandler und 2 Timer
funktionieren bereits wie gewollt. Allerdings bekomme ich den Controller
nicht als I2C Slave zum funktionieren. An RC5 hängt SCL und an RC4 hängt
SDA. Zudem initialisiere ich das Modul wie folgt:
// I2C Slave initialisieren.
I2C1CON = 0x8000;
I2C1ADD = 0b00000010;
I2C1MSK = 0;
// I2C Slave Interrupts einstellen.
IFS1bits.SI2C1IF = 0;
IEC1bits.SI2C1IE = 1;
Zudem verwende ich folgenden Interrupt:
void _attribute_ ( ( interrupt, no_auto_psv ) ) _SI2C1Interrupt (
void )
{
// Some Code...
return;
}
Vom Master sende ich folgende 3 Bytes (Dezimalschreibweise): 4, 1, 30
Die Bytes werden auch geschickt. Mein Logic Analizer zeigt mir das
richtig an. Dort sehe ich folgenden Ablauf:
START, 4, 1, 30, STOP
Nun würde ich erwarten, dass der PIC beim empfangen des Adressbytes in
den Interrupt springt, damit ich dort die empfangenen Werte lesen kann.
Nur leider tut er das nicht. Den gleichen Code verwende ich bereits mit
einem PIC24. Dort funktioniert alles gut. Übersehe ich etwas? Ich hoffe
irgendjemand hat einen Tipp für mich. Bin langsam am verzweifeln :(
Vielen Dank!
euer Harry
Nur als Beispiel:
// FPOR
#pragma config ALTI2C1 = OFF // Alternate I2C1 pins (I2C1 mapped
to SDA1/SCL1 pins)
#pragma config ALTI2C2 = OFF // Alternate I2C2 pins (I2C2 mapped
to SDA2/SCL2 pins)
oder:
// Make all the ANx pins as digital pins
ANSELC = 0;
// Configre SCA/SDA pin as open-drain. This may change from device
to device.
//Refer the datasheet for more information.
ODCCbits.ODCCx = 0;
ODCCbits.ODCCx = 0;
I2C1BRG = xxx;
Danke für die Antwort, aber an all dem kann es nicht liegen. Das habe ich alles schon kontrolliert. Es ist ja nicht das erstemal, dass ich mich mit I2C rumärgere, aber so ratlos wie gerade war ich dabei noch nie..
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.