Hallo Werte µController Gemeinde, ich hätte eine Frage bezüglich des I²C Interfaces beim Atmega8. Ich möchte allerdings eines vorweg nehmen: Ich bin noch "relativ" neu auf dem Gebiet der µController Programmierung. Ich bitte also um etwas Nachsicht :-) Nun zu meiner eigentlichen Frage. Ich habe den anhängenden Code geschrieben. Dieser ist eigentlich nur zu Testzwecken da. Ich möchte damit einen einfachen Wert auf einen EEPROM schreiben (M24C04 von STMicro). Wenn ich den Code aber Ausführe, bleibt er beim Schreiben (lesen konnte ich noch nicht testen) immer bei der ersten Error Schleife hängen. Der Grund dafür ist, dass im TWSR (also Two Wire Interface Status Register) immer 0x00 steht. Ich konnte am Oszilloskop zwar beobachten, dass eine Übertragung Stattfindet, allerdings wird im Statusregister die START-Bedingung nicht bestätigt. Hat jemand von euch eine Idee woran das liegen könnte? Vielen Dank Gruß HotProp
Was ich auf den ersten Blick gesehen habe. Du hast keine saubere Initialisierung für das TWI Modul. Bau das mal ein, dass man auch mal die Frequenz runter stellen kann. So wie du das hier eingestellt hast, ist die Frequenz bei 150kHz. Die Spezifikation bei I2C ist aber nur 100kHz im Standard Mode. Stell die mal runter und dann berichtest du wieder vom Erfolg oder Misserfolg Gruß, Jens
Hallo Jens, und wieder einmal muss ich feststellen, dass es Sinnvoll ist mehr Zeit in die "Vorbereitung" also in diesem in die Initialisierung zu stecken. Du hattest recht mit deinem Tipp. Ich habe die Frequenz runtergesetzt und zusätzlich noch die beiden Prescaler-Bits in TWSR genau definiert und schon läufts :-) Vielen Dank für deine Unterstützung Gruß HotProp
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.