Добрый день !
Обьясните, почему не работает мой кусок кода .
Хочу переключать порт по прерыванию от PIT
#include "AT91SAM7S128.h"
//////////////Прерывание от PIT////////////////////
__irq void PIT_interrupt(void)
{
*AT91C_PIOA_ODSR=!*AT91C_PIOA_ODSR; //Сюда программа почему-то ни когда не заходит
*AT91C_AIC_EOICR = 0; //Выход из прерывания
}
//////////////////Настраиваем PIT///////////////////
void SET_PIT(void)
{
int x;
//Устанавливаем прерывание
AT91C_BASE_AIC->AIC_SMR[30]=0|(1<<5); //Приоритет 0, по переднему фронту
AT91C_BASE_AIC->AIC_SVR[30]=(unsigned long)PIT_interrupt;
AT91C_BASE_AIC->AIC_IECR=1<<30; //разрешаем прерывание
x=*AT91C_PITC_PIVR; //сбрасываем PICNT
*AT91C_PITC_PIMR=0x20 ; //устанавливаем значение PIV=0x20
*AT91C_PITC_PIMR|=AT91C_PITC_PITEN|AT91C_PITC_PITIEN; //разрешаем прерывание и запускаем таймер
}
int main(void)
{
SET_PORT(); //Настраиваем порт на выход
SET_PIT();
while(1) { }; //ждём прерывание
}