Forum: Mikrocontroller und Digitale Elektronik PCF 8574 Hardware TWI Error Codes


von Daniel (Gast)


Lesenswert?

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

von thkais (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.