mikrocontroller.net

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


Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.