Добрый день. Я здесь новенький, так что не обесудте. Хочу сделать декодер команд ИК пульта с определением модуляции, приемник сажаю на INT0. Частота проца 8МГц, тимер с делителем на 8, в прерывании считаю длительность сигналов(и 0 и 1)и обнуляю таймер, в прерывании по переполнению таймера сбрасываю данные. Ситуация такая что у меня не получется считать время, оно всегда разное, даже при одном и томже сигнале, и также не все 1 проходят, есть пуль с которого идет 32 единици, а 8515 находит от 5 до 12. Неделю сижу, уже не знаю где собака зарыта, помогите плиз...
#pragma vector=INT0_vect __interrupt void ext_int0_my(void) { if ((PIND & (1<<(2)))!=0) pin=1; Timer_1=TCNT1-10; TCNT1=0; switch (pin) { case 0: dlina_bit1[Bit_index1]=Timer_1; Bit_index1++; break; case 1: dlina_bit0[Bit_index0]=Timer_1; if(Bit_index>0) {Bit_index0++;} break; default: ; } Bit_index++; pin=0; }
|