-
-
Moderator
Robotik Visionär
Hallo
Normalerweise schaltet man einen Taster zwischen Pin und GND. Der Pin wird dann als Eingang mit aktiviertem PullUp definiert. Ohne Taster ergibt die Abfrage eine 1 (5V über PullUp), mit Taster gedrückt erhält man 0 (Pin an GND):
// Initialisierung
DDRA &= ~3; // ADC0+1 auf Eingang (ist zwar default nach dem Einschalten, aber sicher ist sicher :)
PORTA |= 3; // PullUp einschalten
Nun kann man so die Tasten einlesen:
// Abfrage
uint8_t x;
x=PINA & 3;
Ohne Tasten ist x==3 weil beide Pins high sind (PullUps). Wenn eine Taste gedrückt wird, wird das entsprechende Bit zu 0:
Taste gedrückt an ADC0 -> x==2 (3-1)
Taste gedrückt an ADC1 -> x==1 (3-2)
Beide Tasten -> x==0 (3-(2+1))
Ein Beispiel:
while(PINA & 2); // wartet bis Taste an ADC1 gedrückt wird
Verwirrt? Ich hoffe nicht.
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen