mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATmega8 Ausgabe TWI Stopbedingung abfragen? Assmbler!


Autor: Patt :-) (patt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Sascha Weber (sascha-w)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Patt :-) (patt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Patt :-) (patt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.