Forum: Mikrocontroller und Digitale Elektronik AVR_PORTA_IN/OUT


von Name N. (mar75)


Lesenswert?

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ß

von STK500-Besitzer (Gast)


Lesenswert?

>  IN_DATEN= PORTA;

Sollte eher

  IN_DATEN= PINA;

heissen!

von Name N. (mar75)


Lesenswert?

Danke das stimmt, war tippfehler.

Aber das Senden der Daten funktioniert trotzdem nicht!

von ghu (Gast)


Lesenswert?

Warum sprichst Du DDRC an?

von Name N. (mar75)


Lesenswert?

Es sollte DDRA heisen :-) Also PORTA als Ausgang definieren

von TheMason (Gast)


Lesenswert?

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.

von ghu (Gast)


Lesenswert?

>Es sollte DDRA heisen :-) Also PORTA als Ausgang definieren

Und, weiß Dein Compiler das auch?

von Name N. (mar75)


Lesenswert?

Ja, die Übesetzung ging fehlerfrei... aber trotzdem bekomme ich immer 
0xFF am PORT-Ausgang.

von ghu (Gast)


Lesenswert?

Dann solltest Du mal Deinen ganzen Code zeigen. Mit PORTA = 0x00 kann 
kein 0xff mehr vom AVR kommen.

Externe Pullup? OUT_DATEN == 0xff?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.