Задача: ловить с выхода компаратора или микросхемы TA8025P импульсы частота следования импульсов 120-12000Гц....необходимо фиксить период следования этих импульсов и для этого использую вход CAP0.0 для захвата таймера.
Проблема: Схема часто ловит помехи...т.е. в результат попадают лишние импульсы. Даже просто при тыкании осциллографа (дабы глянуть чего творится) или пинцетом в ножку срабатывает прерывание. Выход компаратора притянут к питанию резистором 4.3к, питание компаратора 5в, контроллера 3.3в.
код инициализации таймера
CODE
void init_timer0(void){
PINSEL1 |= 0x30000000;
T0PR = 120; //предделитель на 120
T0TCR = 0x02;
T0CCR = 0x00000005;//захват по переднему фронту, разрешение прерывания
T0TCR = 0x01; //разрешаем счет таймера
VICVectAddr5 = (unsigned int)&T0ISR; //копируем адрес обработчика
VICVectCntl5 = 0x20 | VIC_TIMER0; //подключаем прерывание от таймера
VICIntEnable |=(1<<VIC_TIMER0); //разрешаем прерывапние от таймера
}
обработчик
CODE
void T0ISR(void){
new_coq(T0CR0);//моя функция
T0IR |= 0x10;
VICVectAddr=0;
}
TA8025P - специализированная микросхемка для работы с индуктивными датчиками, выход - открытый коллектор.
В обоих реализациях - и с компаратором и с TA8025P контроллер ведет себя одинаково.
Сообщение отредактировал Denisvak - Aug 10 2009, 21:15