|
Tastenabfrage an der halvedDisc2®
Die Tasten T1 und T2 der halvedDisc2® (im Bild
unten) sind an PORT H0 und H1 angeschlossen.
Wir wollen sie externe Interrupts auslösen lassen.
Die Tastenbetätigungen sollen auf dem Display signalisiert
werden.
/*
* Programm: tastenabfrage.c
* Author:
tux@mikrocontrollerspielwiese.d e
*/
#include <avr/io.h>
#include <avr/interrupt.h>
#include
"oled.h" // Display
// Prototypen
void initialisierungen(void);
// globale Variablen
volatile int links=0, rechts=0;
int main(void) {
initialisierungen();
while(1) {
if(links==1){
oled_print(20, 10,
"links", BIG);
_delay_ms(255);
oled_print(20, 10,
" ", BIG);
links=0;
}
if(rechts==1){
oled_print(200,
10, "rechts", BIG);
_delay_ms(255);
oled_print(200,
10, " ", BIG);
rechts=0;
}
}
}
void initialisierungen(void) {
oled_init();
//Display initialisieren
cli();
//Interrupts deaktivieren, um in Ruhe diese zu
konfigurieren
PORTH_DIR &=
~0b00000011; //Port H0 und H1 als Eingänge
PORTH_INT0MASK =
0b0000001; //Taste
1 (links)
PORTH_INT1MASK =
0b0000010; //Taste
2 (rechts)
PORTH.INTCTRL = PORT_INT0LVL_LO_gc |
PORT_INT1LVL_LO_gc; //LoLevel-Interrupts für INT0 und
INT1 an PORTH
PMIC.CTRL|=PMIC_HILVLEN_bm|PMIC_MEDLVLEN_bm|PMIC_LOLVLEN_bm;
//enable Interrupts global
sei();
//Interrupts wieder zulassen
}
ISR(PORTH_INT0_vect) {
links = 1;
}
ISR(PORTH_INT1_vect) {
rechts = 1;
}
Links:
Hochschule Mittweida
halvedDisc
halvedDisc2
Datenblatt
des ATxMega128A1
|