Forum: Mikrocontroller und Digitale Elektronik I2C Bus Aufbau


von Daniel (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe schon wieder ein schwerwiegendes Problem.
Also ich habe eine Schaltung  mit dem ATMega aufgebaut, am I2C Bus
hängen in zwei Richtungen je ein PCF8574 nach dem einen PCF geht der
Bus noch weiter zu einem ST24C02 (Serieller Speicher) und einem PCF8583
(RTC).
Zwischen dem ST und dem RTC liegen die Pull-UPs (je 4k7). Das ganze ist
einige Zentimeter lang.

               PCF8574     ST24C02  Pullups    PCF8583
ATMega--+-------+------------+------+-------------+
        |
        |
     PCF8574

Ich verwende den Hardware-TWI und die Routinen aus der Atmel App. Note
315 für C. Dies ist mein Test-Code (ich habe die Namen der Funktionen
abgeändert, aber in den Funktionen sonst nur das was nötig war um die
Dateien kompilieren zu können):

[...]

TWIInit();

// Test für einen der PCF8574

messageBuf[0]=DevLCD+TWIWrite;
messageBuf[1]=0xff;
TWISend(messageBuf,2);

// Code um die Uhrzeit zu bekommen

messageBuf[0]=DevRTC+TWIWrite;
messageBuf[1]=0x01;
TWISend(messageBuf,2);
messageBuf[0]=DevRTC+TWIRead;
TWISend(messageBuf,8);
TWIGet(messageBuf,8);

// Code fürs EEPROM

messageBuf[0]=DevEEPROM+TWIWrite;
messageBuf[1]=addr;
messageBuf[2]=byte;
TWISend(messageBuf,3);

[...]

Keiner der Befehle scheint zu regelmäßig zu funktionieren. In letzter
Zeit bekomme ich oft den Fehlercode F8 (Atmel: TWI_No_State).

Ich habe die Frequenz des Buses (mittels der Register TWBR und TWPS )
mittlerweile weit unter die 100kHz gesetzt. Weil ich dachte, dass es
vielleicht daran liegen würde, geholfen hat es leider nicht.
Also definitiv funktionieren die beiden PCFs nicht. Manchmal scheint
die Uhr zu funktionieren, d.h. sie zählt, aber leider erstens viel zu
schnell (2fach) und zweitens funktioniert das auch nicht immer.

Ist grundsätzlich irgendwas am Aufbau oder am Code den ich verwende
irgendwas falsch?

Frohe Ostern!

Daniel

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.