Hallo, Ich möchte mit einem AVR an PB0 eine steigende Flanke abfragen, falls eine steigende Flanke kommt soll PD0 aktiv werden. Ich habe folgenden Code geschrieben, könntet ihr ihn mal auf richtigkeit überprüfen: void main(void) { while (1) { DDRB = 0x00000000; PORTB = 0x00000000; DDRD = 0x11111111; if ( PB0 == 1) { PORTD &= ~(1<<PD0); } } }
Heinz peter Posch schrieb: > Ich möchte mit einem AVR an PB0 eine steigende Flanke abfragen, falls > eine steigende Flanke kommt soll PD0 aktiv werden. Warum nimmst du keint PinChange Interrupt? - wenn vorhanden und schaust in der Interrupt Routine nach? Welcher µC? Heinz peter Posch schrieb: > if ( PB0 == 1) > { > PORTD &= ~(1<<PD0); > } Das ist Müll ;) if ( PINB & PB0 ) // schaue dir nochmal das AVR-GCC Tutorial dazu an... { ... }
Marcel schrieb: > Heinz peter Posch schrieb: >> if ( PB0 == 1) >> { >> PORTD &= ~(1<<PD0); >> } > > Das ist Müll ;) > > if ( PINB & PB0 ) // schaue dir nochmal das AVR-GCC Tutorial dazu an... Das ist genauso Müll (immer false). Der Blick ins Tutorial könnte dir wohl auch nicht schaden. ;-)
Stefan Ernst schrieb: > Das ist genauso Müll (immer false). Der Blick ins Tutorial könnte dir > wohl auch nicht schaden. ;-) Da hast du recht - das kommt davon wenn man sich den geschriebenen Post nicht nochmal durchliest ^^ So ists richtig:
1 | if ( PINB & (1<<PB0) ) |
Grüße Marcel
Die Pinkonfiguration musst du auch nur einmal machen, also am besten aus der while-Schleife raus. ;-)
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.