Iemand die ervaring heeft met het werken met PCINT's bij Atmel controllers?
Ik heb een stukje code om te werken met vier drukknoppen. De 'naam' van de knop die wordt ingedrukt zou op het LCD scherm moeten verschijnen, maar dit heeft niet het gewenste resultaat...
code:
#include <avr/interrupt.h>
#include <avr/io.h>
#include "lcd.h"
#define PIJLBENEDEN PINC4 //PCINT4
#define PIJLBOVEN PINC5 //PCINT5
#define ENTER PINC6 //PCINT6
#define ESCAPE PINC7 //PCINT7
#define PINC_MASK (1<<PCINT20) | (1<<PCINT21) | (1<<PCINT22) | (1<<PCINT23);
ISR (PCINT2_vect) { //Interruptroutine
lcd_init(LCD_DISP_ON_CURSOR_BLINK);
if (PIJLBOVEN != 0 && PIJLBENEDEN != 0 && ENTER != 0 && ESCAPE != 0) { //Indrukken van een knop geeft een "1".
if (PIJLBENEDEN == 1) {
lcd_puts("PIJLBENEDEN\n");
}
if (PIJLBOVEN == 1) {
lcd_puts("PIJLBOVEN\n");
}
if (ENTER == 1) {
lcd_puts("ENTER\n");
}
if (ESCAPE == 1) {
lcd_puts("ESCAPE\n");
}
}
}
int main (void) {
sei();
//Opstarten van de LCD module
lcd_init(LCD_DISP_ON);
lcd_clrscr();
lcd_puts("\n");
lcd_puts(" xxxxxxxxxx\n");
PCMSK2 = PINC_MASK;
PCICR = (1<<PCIE2);
}
Alvast bedankt voor een eventuele reactie!!
Groeten, Gilles