Hallo Leuten ich versuche seit gestern Daten über i2c an ds3231 zu senden ohne Erfolg. Ich kann die Adresse senden. Aber wenn ich vielleicht 0x00 senden möchte, dann bekomme ich ein Fehler. Ich poste mein Code hier. Vielleicht kann mir jemand helfen Liebe Grüße Irene
irene schrieb: > Aber wenn ich vielleicht 0x00 senden möchte, dann bekomme ich ein Fehler. Aha. Was für einen Fehler?
hallo und danke für deine Antwort. ich bekomme hier:
1 | unsigned char i2c_sendData(unsigned char data) |
2 | {
|
3 | TWDR = data; |
4 | TWCR = (1<<TWINT) |(1<<TWEN); //Load SLA_W into TWDR Register. Clear TWINT bit |
5 | //in TWCR to start transmission of data
|
6 | while (!(TWCR & (1<<TWINT))); //Wait for TWINT flag set. This indicates that the |
7 | //data has been transmitted, and
|
8 | //while((TWSR & 0xF8) != MT_DATA_ACK) //ACK/NACK has been received.
|
9 | if ((TWSR & 0xF8) != MT_DATA_ACK) //Check value of TWI Status Register |
10 | return(1); |
11 | |
12 | else
|
13 | return(0); |
14 | |
15 | }
|
eine 1. Mein Programm hängt hier: while((TWSR & 0xF8) != MT_DATA_ACK). -- Mit den [ c ] [ /c ] -Tags wird Dein Quelltext lesbarer, meinst Du nicht auch? -rufus
:
Bearbeitet durch User
Hast du ein Speicheroszilloskop, um den I2C mal anzusehen und um ggf. herauszufinden, weshalb der I2C Slave kein ACK schickt?
Hallo Peter, ich habe leider kein Oszi. Ich habe auch gehört, dass man auch per i2c bit banging machen kann. Hast du vielleicht eine Ahnung.
irene schrieb: > eine 1. Mein Programm hängt hier: while((TWSR & 0xF8) != MT_DATA_ACK). Bekommst du eine 1 oder hängt das Programm? Wenn es hängt, dann wohl an dieser Stelle: while (!(TWCR & (1<<TWINT))); weil hier bei fehlender Rückmeldung eine Endlosschleife ist. Ansonsten mal den Wert von TWSR anzeigen lassen.
:
Bearbeitet durch User
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.