Hallo, Ich versuche am MSP430F2272 das EEPROM AT24C512B von Atmel anzusteuern. Weitesgehend funktioniert das auch. Leider hängt sich das EEPROM beim Debuggen auf und es gibt nur 2 Möglichkeiten das System wieder in Gang zu bekommen. 1. Power und Debugger entfernen und damit reseten. 2. Folgende Sequenz übertragen: Startbyte, 9! Clock cycles, Startbyte, Stopbyte Ich hab keine Ahnung wie ich 9 clock cycles generieren kann. 8 bekomme ich ja noch mit Byteschreiben hin aber das 9? Kennt einer einen Trick? Danke :)
>Ich hab keine Ahnung wie ich 9 clock cycles generieren kann. 8 bekomme >ich ja noch mit Byteschreiben hin aber das 9? Du hast das Acknowledge vergessen. Es sind immer 9 Cycles per Byte.
Autsch. natürlich.... muss ich mir nur noch Gedanken machen wie ich das NACK in dem speziellen Fall abfange :) Danke
Lars D. schrieb: > Leider hängt sich das EEPROM beim > Debuggen auf Dann taugt Dein Debugger nichts, er sendet Störimpulse. Den EEPROM kriegst Du nicht zum Absturz. Vermutlich läßt Du ihn beim Daten lesen einfach stehen und dann läßt er SDA auf low (Datenbit = 0), bis wieder SCL getaktet wird. Peter
Peter Dannegger schrieb: > Dann taugt Dein Debugger nichts, er sendet Störimpulse. Das ist zu kurz gedacht. Wenn ich mitten in einer Read-Sequenz die Software anhalte und dann die CPU resette (oder sie stürzt ab, soll beim Debuggen vorkommen), wartet der Slave möglicherweise ewig auf das Read mit NACK. Er reagiert dann nicht auf ein Adressbyte. Und das alles ohne einen einzigen Störimpuls. MfG Klaus
Das ist der Hauptnachteil vieler HW-I2C, sie sind auf fehlerfreien Transfer angewiesen. D.h. sie können Fehler nicht erkennen und nicht beheben. Manche verklemmen sich sogar selber, ganz ohne Busfehler. Z.B. die AVRs als Multimaster, wenn sie die Arbitration verlieren. Ich benutze das HW-I2C daher nicht für Single-Master, sondern mache SW-I2C. Da ist die Fehlerbehebung ein Klacks. Auch code- und zeitmäßig ist kaum ein Unterschied zu HW-I2C. HW-I2C braucht man nur bei Slave, Multimaster oder im Interrupt. Dann aber auch ein Timeout und Bit-Banging zur Fehlerkerkennung und Behebung. Peter
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.