Dummy Clockout on I2C

OP #2838617
Lesenswert?

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 :)
Gast #2838800
Lesenswert?

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
#2838883
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren