Режим захвата в таймере
Господа, подскажите, плиз! Хочу запуститть на LPC2366 модуль захвата по таймеру 1, на вход cap1.0 приходит пачка импульсов, хочу мерить длительность, период и т.д. Запустил прерывание по загрузке T1CR0, контроллер прерывается (для теста этого дрыгаю разок пином) при каждом приходящем импульсе, т.е. получается счетный регистр T1TC переливает значение в T1CR0, вот токо считываются с T1CR0 только нули, непонятно, подскажите мою ошибку плиз! Привожу кусок кода:
// конфиг захвата по T1
PINSEL3|= _BV(5); PINSEL3|=_BV(4);
T1PR = 0x00000001; // предделитель
T1TCR|=_BV(1); // сброс таймера
T1CCR|= _BV(0); // захват по фронту канал 0
//T1CCR|= _BV(1); // захват по спаду канал 0
T1CCR|= _BV(2); // прерывание по захвату канал 0
T1TCR|=_BV(0); // разрешение таймера
VICVectAddr5 = (unsigned)T1Capt_vect;
VICVectPriority5 = 0x10;
VICVectCntl5=0x0f;
VICIntEnable|=_BV(5);
в векторе прерывания считываю значение T1CR0
void T1Capt_vect (void) __irq
{
n_phase++;
if (n_phase==1)
{
T_capt_1=T1CR0;
T1CCR|= _BV(1); // захват по спаду канал 0
T1CCR|= _BV(2); // прерывание по захвату канал 0
}
if (n_phase==2)
{
T_capt_2=T1CR0;
T1CCR|= _BV(0); // захват по фронту канал 0
T1CCR|= _BV(2); // прерывание по захвату канал 0
}
/*
FIO2SET|= _BV(0);
pause (100);
FIO2CLR|= _BV(0);
pause (100);
*/
T1IR|=_BV(0);
VICVectAddr = 0;
return;
}
__________________
То, что нас не убивает - делает нас сильнее
|