Hallo, ich habe ein kleines Verständnis-Problem mit der Ausgabe der Stopbedingung der TWI-Schnittstelle. Ich betreibe den ATmega8 als Master.( 10Khz TWI ) Wie fragt ihr ab ob die Stopbedingung schon komplett ausgegeben ist? Ich hatte die letzten Tage das Problem, dass wenn ich zu schnell wieder auf den TWI zugegriffen habe, die Stopbedingung nicht fertig ausgegeben worden ist sondern mit der nächsten Startbedinung überschrieben worden ist. --> Auf dem IIC-Bus wurde keine Stopbedinung gesendet. Bis jetzt hatte ich anscheinend immer Glück, dass die Zeit zwischen senden einer Stop-Start-bedingung groß genug war, dass keine Fehler passiert sind. ( Liegt vielleicht auch daran, dass ich eigentlich fast immer mit 100Khz bzw wenn es geht mit 400Khz fahre) Atmel macht die Abfrage in ihrem Bsp leider auch nicht. Datenblatt Seite 177 Mein Program Start sende Adresse sende Datum sende Datum Stop Es kann passieren dass nach dieser Routine gleich wieder auf den TWI gesendet wird und dann die Stopbedingung der ersten Routine nicht fertig gesendet wird. Meine Abhilfe: eine kleine Schleife nach dem senden der Stopbedinung die erst im Program weitermacht wenn das TWSTO-Bit im TWCR-Register 0 ist. Gibt es hier ne bessere Lösung? mfG patt
Patt :-) schrieb: > Gibt es hier ne bessere Lösung? nicht wirklich - ich warte einfach immer 10µs nach dem setzten der Stopbedingung. Die Slaves wollen ja meist noch eine kleine Pause zwischen der Stopbedingung und der nächsten Startbedingung. Sascha
Hi Datenblatt: TWCR Bit 4 – TWSTO: TWI STOP Condition Bit Writing the TWSTO bit to one in Master mode will generate a STOP condition on the Two-wire Serial Bus. When the STOP condition is executed on the bus, the TWSTO bit is cleared automatically. MfG Spess
Das ging ja schnell mit der Antwort :-) Das mit dem warten hab ich am Anfang auch gemacht. ( hat mir aber überhaupt nicht gefallen :-( ) Wenn man jetzt mal irgendwas baut was am TWI sehr langsam sein muss, muss man jedesmal aufpassen dass man lange genug wartet. Deswegen hab ich ja auch die Abfrage eingebaut ob das StopBit wieder 0 ist und dann erst weiter im Program. Danke!!! mfG patt
spess53 schrieb: > When the STOP condition is executed on the bus, the TWSTO > bit is cleared automatically. das hab ich schon auch gefunden, leider erst nachdem ich massive Probleme mit dem IIC-Bus hatte und genauer nachgelesen habe. Das man das nicht im Bsp-Program mit einbaut. Naja. Danke!! mfG patt
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.