Hallo, ich möchte PORTA eines AVR als Eingang und als Ausgang verwenden. Dies wird durch ein if-Anweisung entschieden. Leider funktioniert dies nicht immer. if(...) { PORTA = 0x00; DDRC = 0x00; //Eingangsdaten holen IN_DATEN= PORTA; ... } else { PORTA = 0x00; DDRC = 0xFF; //Ausgangsdaten senden PORTA = OUT_DATEN; ... } weiss jemand, warum das Senden der OUT_DATEN nicht funktioniert Vielen Dank Gruß
Gast
#865114
> IN_DATEN= PORTA;
Sollte eher
IN_DATEN= PINA;
heissen!
Danke das stimmt, war tippfehler. Aber das Senden der Daten funktioniert trotzdem nicht!
Gast
#865118
Warum sprichst Du DDRC an?
Es sollte DDRA heisen :-) Also PORTA als Ausgang definieren
Gast
#865124
du mußt ddra ansprechen. ddra = 0x00; port a = eingang ddra = 0xff; port a = ausgang je nachdem wie schnell dein uC läuft kann es sinnvoll sein noch ein paar nops zwischen dem zuweisen von ddra und porta zu setzen. und nimm fürs einlesen von porta besser pina.
Gast
#865126
>Es sollte DDRA heisen :-) Also PORTA als Ausgang definieren
Und, weiß Dein Compiler das auch?
Ja, die Übesetzung ging fehlerfrei... aber trotzdem bekomme ich immer 0xFF am PORT-Ausgang.
Gast
#865139
Dann solltest Du mal Deinen ganzen Code zeigen. Mit PORTA = 0x00 kann kein 0xff mehr vom AVR kommen. Externe Pullup? OUT_DATEN == 0xff?
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.