Bascom I2CREAD, ACK

OP (Firma: Manfred) #2344725
Lesenswert?

Hallo,

ich lese über einen 2. Atmega-Prozessor von einem myAVR-Ethernet das 
shared-RAM aus, das funktioniert so:
1
         i2cstart
2
         I2cwbyte 0
3
         Print "i2cwbyte 0"
4
         I2cstart
5
         Print "i2cstart"
6
         I2cwbyte Eth_read
7
         Print "Eth_read"
8
         I2crbyte I , Ack
9
         Print "1-Ack";i
10
         i2crybte I,nack
11
         I2cstop

Funktioniert alles soweit problemlos, jetzt drücke ich den Reset-Taster 
beim myAvr-Board (was in etwa einem Absturz simuliert) und dann bleibt 
mein Programm beim I2Crbyte,Ack hängen und wartet ewig...

Mit Hilfe eines Watchdog-Timers kann ich einen Reset erzwingen, aber 
gibts nicht eine andere Möglichkeit zu erkennen, dass I2Crbyte ewig 
wartet
OP (Firma: Manfred) #2345408
Lesenswert?

So Fehler gefunden,

Tja - da sind halt die Grenzen von Bascom erreicht.
Der Befehl I2CRByte i, ACK liefert immer ERR=1,
obwohl die Bytes im Normalbetrieb korrekt gelesen werden.
Eine Überprüfung auf ERR=1 ist daher sinnlos.

Da der myAVR-Ethernet nicht ein ganz korrektes Timing liefert,
versagt der Standard-I2CRByte mit Ack in Bascom. Mit Bascom-Mitteln sind 
keine Fehlerdiagnosen möglich.

Ich hab den Programmcode auf lauter einzelne I2CStart...I2CRByte mit 
NACK geändert und es geht!

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