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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.