AtMega32 Bitmanipulation

Gast #3172653
Lesenswert?
• ▲
▼
Hallo,

ich verzweifel grade seit einigen Stunden an einer scheinbar extrem 
leichten Aufgabe:

Ich möchte 2 I/O Pins an einem Atmega32 schalten, und zwar entweder als 
Eingang (Pull-up deaktiviert), oder als Ausgang (high oder low) und das 
voneinander unabhängig. Quellcode und Fehlerbeschreibung sind wie folgt:

1. Fall: beide I/O Pins als eingang (funktioniert;  Messgerät zeigt 
zumindest 0V an)
PORTD &= ~((1<<PD2)|1<<PD3));
DDRD &= ~((1<<PD2)|(1<<PD3));

2. Fall: PD3 soll Ausgang (high) sein, PD 2 eingang
PORTD |= (1<<PD3);
DDRD |= (1<<PD3);
PORTD &= ~(1<<PD2);
DDRD &= ~(1<<PD2);
---> Beide Pins zeigen 5V an. Eigentlich soll ja nur PD3 5V ausspucken, 
und PD2 floaten (vermutlich nahe an 0V)

3. Fall: beide I/O Pins als Ausgang, beide low (funktioniert)
PORTD &= ~((1<<PD2)|(1<<PD3));
DDRD |= ((1<<PD2)|(1<<PD3));

4. Fall: beide I/O Pins als Ausgang, PD2 high, PD3 low:
PORTD |= (1<<PD2);
PORTD &= ~(1<<PD3);
DDRD |= ((1<<PD2)|(1<<PD3));
------> Beide Pins haben nun die gleiche Ausgangsspannung, und zwar etwa 
2,6V.

5. Fall: wie 4. Fall, nur PD2 low, PD3 high:
PORT |= (1<<PD3);
PORT &= ~(1<<PD2);
DDR |= (1<<PD2);
DDR |= (1<<PD3);
(gleicher Fehler wie bei 4.)

Hat jemand eine Idee?

Grüße...

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.