ATmega8 und PCF8574

Gast #638425
Lesenswert?
• ▲
▼
Hallo,

ich mache gerade meine ersten Gehversuche mit I2C am mega8 und habe dazu 
einen PCF8574 mit LEDs an den Controller angeschlossen sowie ein kleines 
Testprogramm geschrieben. Leider funktioniert es nicht :-(

Folgendes Problem:

Ich setze den Takt mit den Teilerfaktoren in TWBR und TWSR, das geht 
soweit.

Danach kommt folgender Code, um den I2C-Chip anzusprechen:
1
TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN); //Start
2
loop_until_bit_is_set(TWCR,TWINT); //Hier ist das Problem
3
//Bis hierher läuft das Programm gar nicht mehr
4

5
TWDR = adress;
6
TWCR = (1<<TWINT)|(1<<TWEN);
7
loop_until_bit_is_set(TWCR,TWINT);

Leider bleibt TWINT nach dem Start aber immer 0, d.h. das Programm 
bleibt in der loop_until-Anweisung gefangen.
Auf dem Oszilloskop sehe ich sowohl auf SCL als auch SDA einen Rechteck 
mit dem Bustakt. Ist das normal? Sollte nicht SCL high und SDA low sein 
als Start-Condition?

Hat jemand eine Idee was das Problem sein könnte oder gar eine Lösung 
parat?

Vielen Dank für alle Hinweise!

Gruß
Carsten

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.