I2C Clock variabel

Hier werden Themen zur Programmierung des Port-Motherboards ADA-IO und seiner Tochterplatinen IO8-32, Optoschaltstufe, AD16-8 und DA12-8 diskutiert.
Antworten
Benutzeravatar
siegiathome
kann c't-Lab-Module umbauen
kann c't-Lab-Module umbauen
Beiträge: 62
Registriert: 30.11.2007, 11:43

I2C Clock variabel

Beitrag 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
Benutzeravatar
thoralt
Site Admin
Site Admin
Beiträge: 262
Registriert: 10.04.2006, 08:48
Wohnort: Chemnitz
Kontaktdaten:

Re: I2C Clock variabel

Beitrag 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
There are 10 kinds of people in this world: Those who understand binary and those who don't.
Benutzeravatar
siegiathome
kann c't-Lab-Module umbauen
kann c't-Lab-Module umbauen
Beiträge: 62
Registriert: 30.11.2007, 11:43

Re: I2C Clock variabel

Beitrag 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... :-(
Benutzeravatar
ompf
kann c't-Lab-Module konstruieren
kann c't-Lab-Module konstruieren
Beiträge: 168
Registriert: 19.01.2008, 13:03
Wohnort: Dortmund

Re: I2C Clock variabel

Beitrag 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
Benutzeravatar
ompf
kann c't-Lab-Module konstruieren
kann c't-Lab-Module konstruieren
Beiträge: 168
Registriert: 19.01.2008, 13:03
Wohnort: Dortmund

Re: I2C Clock variabel

Beitrag 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
Antworten