Witam.
Posiadam zestaw AVT-2887. W ramach nauki postanowiłem spróbować napisać jakiś przykładowy program. Problem mam z obsługą przycisków (klawiatury matrycowej). Nie wiem jak się do tego zabrać. Na początku postanowiłem wyświetlić na wyświetlaczu stan wszystkich portów z którymi przyciski mają jakieś połączenie. Wydaje mi się, że po naciśnieciu któregoś z przycisków, któryś z portów powinien zmienić stan. Chciałbym się dowiedzieć dlaczego zawsze na wyświetlaczu pokazuje mi same zera, niezależnie od naciśniętych przycisków.
Fragment mojego programu wygląda następująco:
W załączniku dołączam schemat podłączenia przycisków.
Posiadam zestaw AVT-2887. W ramach nauki postanowiłem spróbować napisać jakiś przykładowy program. Problem mam z obsługą przycisków (klawiatury matrycowej). Nie wiem jak się do tego zabrać. Na początku postanowiłem wyświetlić na wyświetlaczu stan wszystkich portów z którymi przyciski mają jakieś połączenie. Wydaje mi się, że po naciśnieciu któregoś z przycisków, któryś z portów powinien zmienić stan. Chciałbym się dowiedzieć dlaczego zawsze na wyświetlaczu pokazuje mi same zera, niezależnie od naciśniętych przycisków.
Fragment mojego programu wygląda następująco:
#include "Board.h"
void init(void)
{
AT91C_BASE_PMC->PMC_PCER = (1<<AT91C_ID_PIOA);
AT91C_BASE_PIOA->PIO_MDER = KEY0_MASK;
AT91C_BASE_PIOA->PIO_SODR = KEY0_MASK;
AT91C_BASE_PIOA->PIO_OER = KEY0_MASK | LCD_RS_MASK | LCD_ENA_MASK | LCD_DB4_MASK | LCD_DB5_MASK | LCD_DB6_MASK | LCD_DB7_MASK;
AT91C_BASE_PIOA->PIO_IFER = KEY0_MASK | KEY1_MASK | KEY2_MASK;
lcdInit();
}
int main( void )
{
init();
lcdCls();
while(1)
{
lcdLocate(0, 0);
lcdByte(!(LCD_PIO->PIO_PDSR & LCD_DB4_MASK));
lcdLocate(0, 2);
lcdByte(!(LCD_PIO->PIO_PDSR & LCD_DB5_MASK));
lcdLocate(0, 4);
lcdByte(!(LCD_PIO->PIO_PDSR & LCD_DB6_MASK));
lcdLocate(0, 6);
lcdByte(!(LCD_PIO->PIO_PDSR & LCD_DB7_MASK));
lcdLocate(0, 8);
lcdByte(!(KEY1_PIO->PIO_PDSR & KEY1_MASK));
lcdLocate(0, 10);
lcdByte(!(KEY2_PIO->PIO_PDSR & KEY2_MASK));
//wyłącznik
if (KEY0_PRESSED)
{
KEY0_PIO->PIO_CODR = KEY0_MASK;
break;
}
}
}
W załączniku dołączam schemat podłączenia przycisków.