Hi da ich schon einige beiträge hier gelesen habe und ich trotzdem nicht voran komme, mache ich nun nochmal einen eigenen beitrag zu diesem thema auf. da ich neu im bereich i2c-bus bin wollte ich als kleine übung leds über den pcf8574 ansprechen. dafür habe ich mir die pcf8574.c runtergeladen und etwas angepasst. nur leider bekomme ich die leds in keinster weise davon überzeugt anzugehen. ich habe im anhang meinen c-code dafür mit hochgeladen. ich hoffe ihr könnt mir einen tipp geben was ich falsch mache oder wo ein fehler in meinem programm sein könnte.
Gast
#2351820
Frage zur nicht gezeigten Hardware/Schaltung: Adresse (0 im Code) am PCF8574 ist richtig eingestellt ()? In unsigned char pcf8574_send_add_rw (unsigned char address, unsigned char rw) hast du /*übergebene adresse um 1 nach links shiften*/ addr_byte = address << 1; OK. /*setze des RW-bits*/ addr_byte |= rw; OK. /*0b0100xxx0 --> adresse des Expander*/ addr_byte |= 0b01000000; Zerstört dir die beiden vorhergehenden Aktionen
Gast
#2351822
Stopp zurück, das |= ist OK, das zerstört nix.
Gast
#2351882
ja die adresse ist auf 0 eingestellt also a0-2 sind auf gnd geführt
ich habe jetzt rausgefunden, dass das programm bereits be der ersten while-schleife hängen bleibt.also bei /*warten bis die startbedingung gesendet wurde --> ACK*/ while (!(TWCR & (1<<TWINT))); anscheinend sendet der pcf8574 kein ack-signal. nur weiß ich leider nicht warum. ich habe 10kohm pullup widerstände angeschlossen. da das oft die fehlerquelle bei anderen war. nur leider bringt das auch keine verbesserung. kann mir irgend jemand helfen??
alles klar ich weiß zwar nicht warum aber jetzt geht es. sda leitung einmal abgeklemmt und wieder dran gehangen und es geht. trotzdem danke für die hilfe
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.