Hallo, mit folgender Anweisung (auf dem Mega8), frage ich doch den ersten Taster an PortB ab, oder? DDRB=0x00; //Taster PORTB=0xFF; //Pull-Up if (1<<PINB0) Im AVRSTUDIO macht er immer mit der folgenden Anweisung weiter, obwohl ich bei PINB0 gar keine 1 angelegt habe. Wieso?
Wie ist denn Dein Schalter angeschlossen? Mit dem aktivieren der Pull-Ups wird Ein Eingang auf 1 gezogen. Deine if-Bedingung ist also immer wahr. Mach doch einfach: if (!PINB0);
Nö. "1 << PINB0" ist eine binäre "1", die um "PINB0", also um 0 Stellen nach links geschoben ist. "1 << PINB0" hat also den Wert "0b00000001", also 1. Und 1 ist immer wahr, also ist auch die if-Bedingung immer erfüllt. Schau Dir mal das AVR-GCC-Tutorial und v.a. den Artikel Bitmanipulation an.
Patrick wrote: > Wie ist denn Dein Schalter angeschlossen? Mit dem aktivieren der > Pull-Ups wird Ein Eingang auf 1 gezogen. Deine if-Bedingung ist also > immer wahr. Mach doch einfach: > if (!PINB0); Da PINB0 als 0 definiert ist, ist !PINB0 1, also ebenfalls immer wahr. Erst denken, dann schreiben... Mit den Bedenken, was die Anschlussart des Tasters angeht, stimme ich allerdings zu. In den meisten Fällen (und auch auf den meisten mir bekannten Experimentierboards) sind die Taster Low-aktiv, und dementsprechend gibts ne Null am Pin bei gedrückter Taste...
Hmm stimmt, ich schiebe dann ja nur eine 1 rein :S Ich benutze das STK500, probiere es aber erstmal im AVRStudio.
Spyder24 wrote:
> Ich benutze das STK500, probiere es aber erstmal im AVRStudio.
Beim STK500 sind die Taster ebenfalls Low-side angheschlossen, also
Taster nicht gedrückt -> 1
Taster gedrückt -> 0
Spyder24 wrote: > DDRB=0x00; //Taster > PORTB=0xFF; //Pull-Up > if (1<<PINB0) if (PINB & (1<<PINB0)) // Einlesen // und // Bit vergleichen
Danke, jetzt komme ich erstmal weiter. Aber noch eine Frage: Was macht das Zeichen "^"?
Spyder24 wrote:
> Aber noch eine Frage: Was macht das Zeichen "^"?
Exklusiv-ODER. Das beste wird sein, Du besorgst Dir mal ein C-Buch oder
ein brauchbares Tutorial...
>> Aber noch eine Frage: Was macht das Zeichen "^"?
bitweise XOR
mfg Lötlackl
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.