PCF 8574 Hardware TWI Error Codes

Gast #157205
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
Gast #157206
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.