PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : I2C Codeproblem (oder Denkfehler)



djdune
12.08.2010, 08:45
Hallo Liebe Leute!

Vorab möchte ich sagen, dass ich eigentlich PIC Programmierer bin, aber nun für ein Studiumsprojekt einen Atmel programmieren muss.

Ich muss einen I2C Slave basteln, der von meinem PIC Master Befehle bekommt.
Ich habe das Beispielprojekt aus dem Wiki übernommen: http://www.rn-wissen.de/index.php/TWI_Slave_mit_avr-gcc
Testhalber lasse ich eine Led Flashen, wenn die TWI ISR ausgeführt wird. Das funktioniert auch, wenn ich vom Master die Adresse vom Slave sende.
Nun zu meinem Problem:
Der Slave geht immer nur in den Transmit Modus, obwohl er nicht die Befehle dazu bekommt.
Den Code habe ich nicht abgeändert, bis auf ein Led Flashen bei Sende und Empfangsmodus eingebaut und davon leuchtet immer nur die vom Sendemodus.
Mein PIC sendet eigentlich auch nur die Daten wie bei einem EEPROM (start > Slave_addr > data1 > data2 > data3 > Stop)

Muss man noch irgendetwas dafür beachten? Ich danke für jeden Denkanstoß, da ich schon sehr zermürbt bin wegen dem Problem.

PicNick
12.08.2010, 09:46
Bist du sicher, dass der Master auch die I2C-Adresse + WriteBit sendet ?

also, addresse + 1

djdune
12.08.2010, 13:43
Vielen Dank!!! Da hab ich garnicht mehr daran gedacht :)
Oft sinds nur so Kleinigkeiten die zur Verzweiflung führen:

djdune
16.08.2010, 08:32
Servus!

Ich muss wieder zu diesem Problem nerven :)

Das mit dem Senden der Daten klappt mittlerweile wunderbar:
http://berndp.de/u/test5.png
Ich lasse die Leds nach dem Hexwert flashen und das macht keine Problme.

Umgekehrt will es jedoch nicht so wie ich:
http://berndp.de/u/test4.png
Ich setze wie im Codebeispiel den Buffer auf 0x00 und schalte dann auf Lesemodus. Bei diesem bekomme ich allerdings keine Rückmeldung.
Am Analyzerbild kann man schön sehen, dass Adresse + Lesebit richtig gesendet werden.

Hat vielleicht jemand eine Idee woran es haken könnte?