TWI - Polling bleibt haengen

Gast #178892
Lesenswert?

Ich habe hier folgendes Phaenomen:

Die Ansteuerung meines TWI-Busser (eine RTC haengt da daran) bleibt oft
in der Schleife, in der das Interrupt-Bit gepollt wird, haengen (Bit
wird nie gesetzt, obwohl ich es vorher durch setzen geloescht habe),
und zwar schon beim Aktivieren der Start-Condition. Muesste der
Prozessor nicht auf jeden Fall das Bit setzen und mir einen Errorcode
zurueckliefern?

Mein Code:

[...Baudrate auf 80kHz setzen...]

outp((1<<TWINT)|(1<<TWEN)|(1<<TWSTA), TWCR); // Startcond. senden
while(!(inp(TWCR) & 128)); // Hier kommt er nie mehr raus

Mit dem selben Code hat es schon mal funktioniert, nur die Hardware
wurde geaendert.

PullUps sind auch ok, weiss nicht mehr weiter.

Gruss und Dank!
Friedemann
#178893
Lesenswert?

Vermutlich hast Du einen Fehler in der Software.

Wenn Du z.B. als Master-Receiver nach dem letzten Byte ein ACK sendest,
kann es sein, daß Du dann kein Stop senden kannst, weil der Slave ja das
nächste Byte auf den Bus legt.
Und damit kommt auch kein neues Start.


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