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


von Paul H. (powl)


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

von Spess53 (Gast)


Angehängte Dateien:

Lesenswert?

Hi

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

MfG Spess

von Paul H. (powl)


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

von nico26plus1 (Gast)


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...

von Paul H. (powl)


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?

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.