www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Fragen zum Timing beim I²C bus


Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Da das USI voll blöd ist und ich auf dessen Funktionen getrost 
verzichten kann wollte ich mir mit meinem Tiny26 eine Softwarelösung für 
den TWI-Master erstellen. Der Bustakt soll entweder mit dem Timer0 per 
Overflow Interrupt generiert werden oder mit dem Timer1 per Compare 
Match Interrupt, alles mit entsprechendem Vorteiler.

Nun habe ich ein paar Fragen zu den Timings. Was bedeutet eigentlich 10 
kHz Bustakt? Dass es 10000 mal in der Sekunde eine Taktflanke gibt? Also 
5000 Takte die Sekunde? Oder dass es volle 10000 Takte/s gibt und damit 
eben 20000 Taktflanken?

Zwischen einer fallenden und einer steigenden Taktflanke wird das Bit 
auf der SDA Leitung geändert. Muss ich hier noch eine Wartezeit 
einbauen? oder kann das unmittelbar geschehen? D.h. SCL auf low, kurz 
das Datenregister um ne Bitposition verschieben, das neue Bit an SDA 
ausgeben und SCL gleich wieder auf high und dann für ne entsprechende 
Zeit auf high lassen? Oder soll während das Bit auf der SDA leitung 
geändert wird genau die gleiche Zeit vergehen wie im darauffolgenden 
Takt-high?

Kann ich um die Startcondition zu senden wie folgt vorgehen: SDA auf 
low, danach sofort SCL auf low, das entsprechende Bit an SDA ausgeben 
und gleich mit dem ersten Takt beginnen, oder sollten hier noch 
Wartezeiten eingebaut werden? Wie lange soll entsprechend gewartet 
werden?

mfg PoWl

Autor: Spess53 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Im Anhang ist eine ältere Atmel AppNote mit I2C-Master in Software. Ist 
allerdings in ASM.

MfG Spess

Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, das gab schonmal aufschluss.. werde mir auch nochmal die 
Spezifikationen durchlesen. Aber was bedeutet denn nun 100khz bustakt? 
Dass es 100.000 High-Pulse pro sekunde gibt? Oder Flankenwechsel und 
somit nur die Hälfte an High-Pulsen? Sind die Low-Teile viel länger als 
die High Teile?

mfg PoWl

Autor: nico26plus1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also ne Frequenzangabe gilt immer für die gesammte Periode, also nur 
eine der beiden Flanken. ansonsten würde man nicht von kHz, sondern von 
kbit/s oder kBaud sprechen...

Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, d.h. die Periodendauer, 10µs bei 100khz oder 100µs bei 10khz, 
entspricht der Zeit zwischen beispielsweiser einer steigenden Taktflanke 
und der nächsten?

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.