PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was mache ich falsch....



oderlachs
10.12.2020, 11:08
Hallo Freunde !
Ich muss mich nach langer Pause wieder mit einer Frage in Sachen PCF8574 an Euch wenden, weil ich da mit einer Sache nicht zurecht komme.
Es geht um das Ansprechen von einzelnen PortPins, in meinem Fall P3
Er soll im sec. Takt mal 0 mal 1 sein, aber ich schaffe es einfach nicht , irgendwelchen Port auch immer anzusprechen.
hier mal ein Codeausschnitt:

unit8_t ADDR_Wr = 0x27;
TWI_Init();
//.....
// in der while Schleife:
{
TWI_START( ADRR_Wr);
TWI_WR_BYTE(0b00001000); // P3 = 1
TWI_STOP()
_delay_ms(1000);
TWI_START(ADDR_Wr);
TWI_WR_BYTE(0b00000000); // P3 = 0
TWI_STOP();
_delay_ms(1000);
}
//.....


Die Adresse stimmt, die TWI -Funktionen sind in Ordung aber am Ausgang des PCF8574 ändert sich überhaupt nix.
Ich weiss mir keinen Rat mehr, habe den Chip mit einer Arduino anwendung getestet alles OK.
Nur eben mit dem ATmega32 und C-Programmierung will es nicht.

Wenn mir wer helfen kann , es wäre eine gelungene Weihnachtsünbberraschung für mich.

Danke schon mal
Gerhard

oberallgeier
10.12.2020, 13:43
Hi Gerhard,
auf die Schnelle (zwischen Tür und Angel UND mit vollem Magen):
unit8_t ADDR_Wr = 0x27;
TWI_Init();
//.....
// in der while Schleife:
{
TWI_START( ADRR_Wr);
und - ohne dass ich den PCF8574 kenne: Schreibadressen bei TWI/I²C sind doch gerade Zahlen (mal so ein erster Blick ins www spricht von "..Der PCF8574 hat die Basisadresse 0x40..". Wie kommst Du da auf 27hex ?? Ungerade Adressen sind ja Leseadressen.

oderlachs
10.12.2020, 14:40
Hallo Joe !

Da hast Du den Nagel auf dem Kopfe getroffen....Ich habe nochmals in meinem I2C Scanner Quellcode geschaut ...und siehe da :
" TWI_START(ADDR_WR << 1)" !!
Das habe ich jetzt auch abgeändert, aber trotzdem komme ich mit der Verwendung der einzeln I/O Pins am PCF8574 nicht klar.

Aber trotzdem bin ich erst mal ein Stück weiter....und hoffe das ich es noch schaffen werde den PCF8574 zu "bändigen" ;)


Gruss und Dank


Gerhard