AVR-Ports, Umgang mit unvollständiger Herausführung.

Gast #2798187
Lesenswert?
• ▲
▼
Werte Damen und Herren.

Als ich vor längerer Zeit mit dem AtMega 103
und dem AtMega 8515 werkelte war das noch kein Thema,
weil dort alle Ports auch komplett herausgefüht werden...

Bei'm Tiny2313 gilt das aber nur noch für Port B.
Port D hat nur noch  7 äußere Anschlüsse und Port A gar nur noch 3.
Für meinen Zweck brauche ich PA 0-1 als Ausgang.
PA 2 sollte ich wohl wegen der Reset-Funktion besser ganz in Ruhe 
lassen.
(Also auch keine Datenrichtung definieren usw... ?)
Port B 0-7 und Port D 0-7 brauche ich als Ausgänge.
Port B 7 muß aber unbedingt ein Eingang werden.

Natürlich gibt es passende Befehle dafür,
um auch bei einzelnen Pins die Datenrichtung festzulegen
und sie dann auch einzeln anzusteuern oder abzufragen.

Was passiert aber, wenn man z. B. den Port A komplett abfragt,
obwohl doch nur die ersten 3 Bit ein sinnvolles Ergebnis ergeben können?
Wo liegen sonst noch eventuelle "Fallsticke"?
(Hätte es gern mal gewußt, auch wenn ich PA 0-1 eigenlich als Ausgang 
nutzen will.)

Vielen Dank im Voraus: Wolfg.
Gast #2798197
Lesenswert?
• ▲
▼
W. Meyer schrieb:
> Werte Damen und Herren.
Werter Herr Meyer ;-)

> Für meinen Zweck brauche ich PA 0-1 als Ausgang.
DDRA=(1<<PA0)|(1<<PA1);

> PA 2 sollte ich wohl wegen der Reset-Funktion besser ganz in Ruhe
> lassen.
Wenn die passende Fuse für PA2=Reset gesetzt ist dürfte der Wert von 
DDRA<2> nicht interessieren.

> Port B 0-7 und Port D 0-7 brauche ich als Ausgänge.
DDRB=0xFF;

> Was passiert aber, wenn man z. B. den Port A komplett abfragt,
> obwohl doch nur die ersten 3 Bit ein sinnvolles Ergebnis ergeben können?
Wert=PINA&((1<<PA0)|(1<<PA1)|(1<<PA2)) und fertig.

Oder willst du Assembler?
Gast #2798220
Lesenswert?
• ▲
▼
Erst mal danke für die Antworten.

Ich habe es schon immer mit Assembler gemacht
weil damit gut klarkomme und halt kein C kann oder brauche.
Mit welchen Befehlen ich die Datenrichtung festlege
und die Abfrage oder Eingabe für einzelne Pins machen muß, weiß ich.
Das hätte ich vielleicht gleich deutlicher schreiben sollen.

"always read as 0" scheint also "der Tipp" für mich zu sein.

Vielen Dank: Wolfg.

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.