Вот кусок кода, но в прерывание он входить вообще не хочет. Клавиатура и ножки GPIO исправны - по опросу все работает без ошибок. Подскажите где у меня неправильно.
CODE
</P><P>void KeyboardCLK(void)
{
static unsigned char data; // Holds the received scan code
LED2SET = 1;
VICADDRESS = 0;
VICINTENCLEAR_bit.EINT3 = 1;
if (IOINTSTATUS_bit.P2INT)
{
if (IO2INTSTATF_bit.P2_15)
{
{
if ( (bitcount < 11) && (bitcount > 2) ) // Bit 3 to 10 is data. Parity bit,
{ // start and stop bits are ignored.
data = (data >> 1);
if (FIO2PIN_bit.P2_14) data = data | 0x80; // Store a '1'
}
if (--bitcount == 0)
{ // All bits received
decode(data);
bitcount = 11;
}
}
}
IO2INTCLR_bit.P2_15 = 1;
}
LED2CLR = 1;
}
void init_keyboard_ps2(void)
{
// 33222222 22221111 11111100 00000000
// 10987654 32109876 54321098 76543210
//FIOnDIR = BIN32(00000000,00000000,00000000,00000000);
FIO2DIR &= BIN32(11111111,11111111,00111111,11111111); //0 - input / 1 - output
FIO2MASK &= BIN32(11111111,11111111,00111111,11111111); //0 - read/write / 1 - no effect
PINSEL4 &= BIN32(00001111,11111111,11111111,11111111); //GPIO
PINMODE4 &= BIN32(00001111,11111111,11111111,11111111); //pull-up resistor enabled.
IO2INTENR &= BIN32(11111111,11111111,00111111,11111111);
IO2INTENF = ( IO2INTENF & BIN32(11111111,11111111,00111111,11111111) ) | BIN32(00000000,00000000,10000000,00000000);
IO2INTCLR_bit.P2_15 = 1;
PCLKSEL1_bit.PCLK_GPIO = 1;
VIC_SetVectoredIRQ(KeyboardCLK,0,VIC_EINT3);
VICINTENABLE |= 1UL << VIC_EINT3;
bitcount = 11;
}
{
static unsigned char data; // Holds the received scan code
LED2SET = 1;
VICADDRESS = 0;
VICINTENCLEAR_bit.EINT3 = 1;
if (IOINTSTATUS_bit.P2INT)
{
if (IO2INTSTATF_bit.P2_15)
{
{
if ( (bitcount < 11) && (bitcount > 2) ) // Bit 3 to 10 is data. Parity bit,
{ // start and stop bits are ignored.
data = (data >> 1);
if (FIO2PIN_bit.P2_14) data = data | 0x80; // Store a '1'
}
if (--bitcount == 0)
{ // All bits received
decode(data);
bitcount = 11;
}
}
}
IO2INTCLR_bit.P2_15 = 1;
}
LED2CLR = 1;
}
void init_keyboard_ps2(void)
{
// 33222222 22221111 11111100 00000000
// 10987654 32109876 54321098 76543210
//FIOnDIR = BIN32(00000000,00000000,00000000,00000000);
FIO2DIR &= BIN32(11111111,11111111,00111111,11111111); //0 - input / 1 - output
FIO2MASK &= BIN32(11111111,11111111,00111111,11111111); //0 - read/write / 1 - no effect
PINSEL4 &= BIN32(00001111,11111111,11111111,11111111); //GPIO
PINMODE4 &= BIN32(00001111,11111111,11111111,11111111); //pull-up resistor enabled.
IO2INTENR &= BIN32(11111111,11111111,00111111,11111111);
IO2INTENF = ( IO2INTENF & BIN32(11111111,11111111,00111111,11111111) ) | BIN32(00000000,00000000,10000000,00000000);
IO2INTCLR_bit.P2_15 = 1;
PCLKSEL1_bit.PCLK_GPIO = 1;
VIC_SetVectoredIRQ(KeyboardCLK,0,VIC_EINT3);
VICINTENABLE |= 1UL << VIC_EINT3;
bitcount = 11;
}