Forum: Mikrocontroller und Digitale Elektronik AVR C Progammierung


von Heinz peter P. (poschi8)


Lesenswert?

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);
}
}
}

von Marcel (Gast)


Lesenswert?

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...
{
...
}

von Stefan E. (sternst)


Lesenswert?

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. ;-)

von Marcel (Gast)


Lesenswert?

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

von Heinz peter P. (poschi8)


Lesenswert?

Ahhh,
ok danke.
Mfg,
Heinz Peter

von Flo (Gast)


Lesenswert?

Die Pinkonfiguration musst du auch nur einmal machen, also am besten aus 
der while-Schleife raus. ;-)

von bix (Gast)


Lesenswert?

Ich sehe nicht die Stelle, wo PD0 mal wieder "1" wird.

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