mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR C Progammierung


Autor: Heinz peter Posch (poschi8)
Datum:

Bewertung
0 lesenswert
nicht 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);
}
}
}

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...
{
...
}

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht 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. ;-)

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
if ( PINB & (1<<PB0) )

Grüße Marcel

Autor: Heinz peter Posch (poschi8)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ahhh,
ok danke.
Mfg,
Heinz Peter

Autor: Flo (Gast)
Datum:

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

Autor: bix (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.