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); } } }
Gast
#1659763
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. ;-)
Gast
#1659779
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 | |
Grüße Marcel
Ahhh, ok danke. Mfg, Heinz Peter
Gast
#1659819
Die Pinkonfiguration musst du auch nur einmal machen, also am besten aus der while-Schleife raus. ;-)
Gast
#1659940
Ich sehe nicht die Stelle, wo PD0 mal wieder "1" wird.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.