Hallo, Ich komme gerade echt nicht weiter. Ich experimentiere im Moment mit meinem Hardware TWI Bus und einem PCF 8574. Ich benutze dabei die Routinen aus der AppNote 315 von Atmel für C. Anscheinend funktioniert das Lesen und schreiben der Porterweiterung, allerdings habe ich noch einige offene Fragen! Dies ist mein Testcode A: while (0==0) { messageBuf[0]=DevLCD+TWIWrite; messageBuf[1]=pins; TWISend(messageBuf,2); eeprom_write_byte(&eeSpeicher[4*durchlauf+0],TWIStatus()); pins=~pins; [...Delay, beep...] } Die Fehlermeldung wird mir jedesmal (im EEPROM) ausgegeben. Sie ist immer abwechselnd 0x10 (Repeated START has been transmitted) und danach 0x48 (SLA+R has been tramsmitted and NACK received)... Wieso wechselt die Fehlermeldung denn überhaupt und wieso schickt der 8574 kein ACK? Testcode B lautet folgendermaßen: while (0==0) { messageBuf[0]=DevLCD+TWIWrite; messageBuf[1]=pins; TWISend(messageBuf,2); eeprom_write_byte(&eeSpeicher[4*durchlauf+0],TWIStatus()); messageBuf[0]=DevLCD+TWIRead; TWISend(messageBuf,2); eeprom_write_byte(&eeSpeicher[4*durchlauf+1],messageBuf[1]); eeprom_write_byte(&eeSpeicher[4*durchlauf+2],TWIStatus()); pins=~pins; [...Delay, beep...] } Diesmal möchte ich also auch etwas lesen. Das interessante ist jetzt, dass das "Problem" bestehen bleibt, das erste TWIStatus gibt mir 0x10 und das zweite 0x48, aber zumindest "liest er richtig", also er ließt das was ich davor geschrieben habe! Ihr fragt euch jetzt bestimmt, wieso ich das so kompliziert ausprobiert habe... Leider ist es mir nicht möglich, bspw. eine LED an einen der Ausgänge anzuschliesen (geschweige denn nachzumessen). Obwohl ich natürlich die LED von "+ nach Port" anschliese (Sink Current max 20mA) leuchtet sie leider nicht. Und das ist meine zweite Frage: Wieso? Vielen Dank, Daniel
0x10 ist keine Fehlermeldung, sondern nur eine Statusmeldung, daß das Start-Bit (wiederholt) übertragen wurde. Das läßt darauf schließen, daß vorher kein Stop-Bit da war... 0x48 bedeutet: Die Adresse, die Du dem 8574 sendest, ist falsch. Zu Frage 2: Bei LEDs muß die Polung beachtet werden.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.