Forum: Compiler & IDEs TWI - Polling bleibt haengen


von F. Schlosser (Gast)


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

von Peter D. (peda)


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

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
Noch kein Account? Hier anmelden.