Hallo,
ich versuche gerade den I2C des 324ers ans Laufen zu bekommen, aber mit
P. Fleury's code den ich erfolgreich auf einem ATMega128 laufen habe
passiert nichts (Kein SCL messbar). Nun fiel mir auf, dass die
Initialisierung zu einem Fehler führt, da ich das Register TWBR nicht
auslesen kann (immer 0). Ist dies korrekt und das TWBR ist write-only?
Oder liegt da schon der Hund begraben, evtl. weil ich ATMega324P statt
ATMega324PA im Studio eingestellt habe (PA nicht für C unterstützt)?
Original Init:
1 | uint8_t TWIM_Init (uint32_t TWI_Bitrate)
|
2 | {
|
3 | TWBR = (uint8_t) ((F_CPU/(8*TWI_Bitrate))-2);
|
4 | if (TWBR < 1) return FALSE;
|
5 | return TRUE;
|
6 | }
|
Abgeändert da ich write-only des TWBR vermutete:
1 | uint8_t TWIM_Init (uint32_t TWI_Bitrate)
|
2 | {
|
3 | int brr = ((uint8_t) ((F_CPU/(8*TWI_Bitrate))-2));
|
4 | TWBR = brr;
|
5 | if (brr < 1) return FALSE;
|
6 | return TRUE;
|
7 | }
|
printf("%d",TWBR) ergibt immer null, egal was ich zuvor versuche
reinzuschreiben...
Hat jemand ne Idee was ich falsch mache?