Добрый день !
Обьясните, почему не работает мой кусок кода . Хочу переключать порт по прерыванию от 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) { }; //ждём прерывание
}
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|