Raspberry liest via I2C (TWI) nur jedes 2. Byte vom ATmega

Gast #3327904
Lesenswert?

Hallo,

ich benutze am ATmega8 die TWI-Slave-Bibliothek von Manfred Langemann 
und habe den folgenden Code:
1
TWIS_Init(15, 100000);
2

3
while (1) {
4
  TWIS_Write(0x00);
5
  for (int i = 0; i < 8; i++) {
6
    TWIS_Write(i);
7
  }
8
  TWIS_Stop();
9
}

Mittels
1
i2cdetect -y 1
am Raspberry wird der Chip auch korrekt erkannt und ich kann Bytes 
lesen, jeweils einen mit dem Befehl
1
i2cget 1 0x0f
Allerdings kommen die Bytes in der folgende Reihenfolge an:

0, 2, 4, 6, 0x1f (???), 1, 3, 5, 7

Bis auf die 31 (0x1f) zwischendrin und die fehlende 0 (es sollten ja 
eigentlich zwei Nullen sein) also die korrekten Bytes, allerdings in 
seltsamer Reihenfolge. Meine Vermutung wäre ja, dass die Clocks nicht 
korrekt synchron laufen, aber dagegen spricht, dass ich die Daten 
jedesmal zuverlässig lesen kann, nur nicht in der korrekten Reihenfolge.

Hat jemand eine Idee, warum dieses seltsame Verhalten auftritt bzw. wie 
ich das abstellen kann? Oder auch, wo die 0x1f her kommt?

Vielen Dank!
Gast #3328583
Lesenswert?

Kurzes Update, was ich jetzt schon probiert habe:
- Beim Kernel-Modul i2c_bcm2708 die Baudrate auf 23.000, später 10.000 
zu setzen
- Im ATmega die Frequenz auf 10.000 Hz zu setzen
- Die I2C-Daten mittels selbst geschriebenem Programm (mittels 
WiringPi-Lib) zu lesen

Bislang alles ohne Erfolg.

Falls noch jemand eine Idee hat, gerne her damit!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren