Wie man Tasten am AtTiny2313 benutzen kann



Unser kleines Experimentierboard hat drei Tasten. Siehe unten rechts im Schaltplan.

experimentierboard schematic

Wie kann man die Tasten benutzen?


Vorgehensweise am Beispiel der Taste S3:

1. PD0 soll Eingang sein: 
        DDRD &= ~_BV(PD0);     // PD0 ist Eingang (Taste S3)
        PORTD |= _BV(PD0);       // internen Pull Up Widerstand an PD0 aktivieren

2. Eingang abfragen
        if (bit_is_clear(PIND,0)) {machwas} // Taste gedrückt
        if (bit_is_set(PIND,0)) {machwas}    // Taste nicht gedrückt


Beispiel für ein Programm, bei dem eine LED solange leuchtet, wie die Taste S3 gedrückt ist:

#include <avr/io.h>

int main(void){
 
    DDRB |= _BV(PB0);      //Ausgang definieren (LED)
   
    DDRD &= ~_BV(PD0);     //Eingang definieren (Taster)
    PORTD |= _BV(PD0);      //internen Pull-Up-Widerstand einschalten
   
    while(1){
        if (bit_is_clear(PIND,0)) {PORTB |=_BV(PB0); }
        if (bit_is_set(PIND,0))   {PORTB &=~_BV(PB0);}
    }
 
    return(0);
}



Im C-Kurs der Mikrocontrollerspielwiese steht's hier noch etwas ausführlicher