Hallo zusammen. Ich wage mich gerade an das Thema I²C. Doch es scheitert schon an Kleinigkeiten. Gebe ich meinem Master die Variable 1 uint8_t master_byte=1; >schickt er diese zum Slave und er gibt sie auf PortD aus. Wenn ich jedoch eine andere Variable nehme: uint8_t master_byte=2; oder 3 >dann kommt totale Gülle am PortD raus. woran kann das liegen.? Schonmal danke :)
An der relativen Mondfeuchtigkeit? Mal im Ernst "kompletten" Code posten?
Ich dachte der Fehler ist so leicht zu beheben, dass das Stück Code gereicht hätte :)
hallo, in TWImaster.c hab ich folgendes gefunden:
1 | uint8_t TWIM_Write (uint8_t byte){ |
2 | uint8_t twst; |
3 | /*
|
4 | ** Send data to the previously addressed device
|
5 | */
|
6 | TWDR = byte; |
7 | TWCR = (1<<TWINT)|(1<<TWEN); |
8 | /*
|
9 | ** Wait until transmission completed
|
10 | */
|
11 | // while (!(TWCR & (1<<TWINT)))
|
12 | // PORTD|= (1<<PD3);
|
13 | /*
|
14 | ** Check value of TWI Status Register. Mask prescaler bits
|
15 | */
|
16 | twst = TWSR & 0xF8; |
17 | if (twst != TWI_MTX_DATA_ACK) return 1; |
18 | return 0; |
19 | }
|
sind die auskommentierten Zeilen nach ** Wait until transmission completed beabsichtigt? hier sollte doch der Master solange warten bis das byte gesendet wurde und auf das ACK / NACK vom Slave warten... Gruß
Oh ja. Das wars. Frag mich echt, wie ich das übersehen konnte. Vielen Dank .!
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.