Seite 1 von 1

I2C Clock variabel

Verfasst: 15.05.2009, 08:38
von siegiathome
hallo zusammen,

hab gerade das Problem, dass ich einen I2C Bus Baustein habe, der max. 100kHz verkraftet. Die I2C Bus Clock Frequenz ist fest auf 400kHz eingestellt. Hat jemand die Möglichkeit, einen neuen Befehl einzubauen (z.B. ICF=... [kHz]), mit dem man die Bus Frequenz ändern kann?

LG
Siegi

Re: I2C Clock variabel

Verfasst: 15.05.2009, 12:09
von thoralt
Hallo Siegi,

wenn Du es "nur mal schnell" ausprobieren willst, könntest Du die Quarzfrequenz auf 4 MHz reduzieren. Dadurch verringert sich zwar auch die UART-Baudrate, aber Du solltest mit 9600 Baud mit dem Controller kommunizieren können.

Viele Grüße
Thoralt

Re: I2C Clock variabel

Verfasst: 15.05.2009, 12:22
von siegiathome
Hallo Thoralt,

da hab ich auch schon dran gedacht, wollte aber die restlichen Baugruppen nicht vom Bus abhängen bzw. auf eine andere Resonatorfrequenz umprogrammieren, da sonst die Antworten nicht durchkommen...
Trotzdem danke.

LG
Siegi.

PS:
hatte übrigens in der letzten Zeit öfter Probleme mit den ATMegas, bei denen der interne Resonator benutzt wird. Das Problem bestand darin, dass diese zu weit daneben lag, um eine Kommunikation per RS232 zu ermöglichen. Betraf mal eine komplette Charge mit 300 Stück... :-(

Re: I2C Clock variabel

Verfasst: 15.05.2009, 13:34
von ompf
siegiathome hat geschrieben:hatte übrigens in der letzten Zeit öfter Probleme mit den ATMegas, bei denen der interne Resonator benutzt wird. Das Problem bestand darin, dass diese zu weit daneben lag, um eine Kommunikation per RS232 zu ermöglichen. Betraf mal eine komplette Charge mit 300 Stück... :-(
Die initiale Kalibrierung ist spezifiziert mit 3% bei 25°C und 5,0V. Das ist für RS-232 schon grenzlagig. Über Temperatur und Alterung landest Du eher bei 10%.

Eigentlich müßtest Du bei einem empfangenen Datenwort die Breite des Startbits ausmessen (beim verwandten LIN-Bus wird extra hierzu 10101010 gesendet) und darauf Deine Oszillatorfrequenz nachstimmen. Klappt natürlich nur, wenn der andere Teilnehmer etwas genauer ist.


Gruß
Patrick

Re: I2C Clock variabel

Verfasst: 15.05.2009, 13:53
von ompf
siegiathome hat geschrieben:hab gerade das Problem, dass ich einen I2C Bus Baustein habe, der max. 100kHz verkraftet.
Das kannst Du notfalls sogar binär patchen. Im Code die Sequenz

Code: Alles auswählen

 ; >> TWIPORT Init <<
 LDI       _ACCA, 00Ch
OUT       TWBR, _ACCA
 LDI       _ACCA, 0FFh
STS       TWI_DevLock, _ACCA
suchen und 0x0C durch 0x30 ersetzen. _ACCA = 0x11, TWBR = 0x20.


Gruß
Patrick