PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mega32 als Master am I2C



Wastl
31.07.2004, 14:54
Hallo,

ich möchte den I2C-Bus mit einem Mega32 als Master ansteuern. In BASCOM gibt es den Befehl "config I2Cdelay 'wert'". Leider ist nicht genau ersichtlich, welches Register damit im M32 verändert wird.

Meine Frage ist, wie gross muss "wert" gesetzt werden, damit ich bei einem CPU Clock von 7'372'800 Hz einen serial clock (SCL) von ca. 100 kHz erhalte.

Die Analyse der unterschiedlichsten Beispiele im Netz ergibt keine verlässliche Aussage. Ich habe auch im Datenblatt geforscht und die untenstehenden Angaben gefunden. Die Formel wird aber ungenügend erläutert. Es wird auch kein Beispiel dazu gemacht.

Hat jemand Erfahrungen damit gemacht?

Gruss und Dank
Wastl



Datenblatt des M32, Kapitel "Overview of the TWI Module":

- SCL frequency = CPU Clock frequency / 16 + 2(TWBR) * 4 hoch TWPS

- Legende:
TWBR = Value of the TWI Bit Rate Register
TWPS = Value of the prescaler bits in the TWI Status Register
Anmerkung:
TWBR should be 10 or higher if the TWI operates in Master mode. ...

Frank
31.07.2004, 16:03
Bascom nutzt in der derzeitigen Version nicht den Hardware I2C-Port sondern hat eine eingebaute Software Implementation des I2C Übertragungsprotokolls. Durch oben genannten werde kann man die Geschwindigkeit bremsen.
Da aber der I2C Bus keine feste Taktrate besitzt, sondern nur eine maximale, braucht man gewöhnlich nichts zu ändern.

Gruß Frank

martin
31.07.2004, 16:04
Wenn deine Gleichung stimmt (Ich nehme an, die Frequenz wird durch den ganzen Term geteilt, sonst kommt man nicht so weit runter) könntest du TWPS=0 setzen und erhältst dann mit TWBR=0x1C 102MHz und mit TWBR=0x1D 99,6 MHz

Grüsse, Martin

Wastl
31.07.2004, 16:55
Frank
wenn das so ist, dass der I2C-Port des M32 gar nicht verwendet wird, dann muss ich mir darüber keine Gedanken mehr machen. Eigentlich ist es aber schade. Vielleicht wird der Port in einer kommenden Version verwendet werden.
Danke für Deine Hilfe

Martin
ob diese Gleichung stimmt, weiss ich eben nicht. Ich interpretiere den Text im Datenblatt so, wie ich's oben geschrieben habe. Deine Rechnungen kann ich nachvollziehen, ich weiss nur nicht, welche Werte TWPS annehmen kann. Wenn ich diese Register verwenden möchte, sollte ich dann gemäss Antwort von Frank nicht mehr BASCOM verwenden, sondern einen kleinen ASM-Einschub machen. Das allerdings ist mir zu aufwändig.
Besten Dank für Deine Hilfe