Объясните мне пожалуйста, т.к. я окончательно запутался. На PB0 (ICP1) подается частота 40кГц со скважностью 50%. Лапа настроена на вход.
Код в main:
Код: Выделить всё
DDRB |= (1<<PB1);
TIMSK1 |= (1<<ICIE1);
TCCR1B |= (ICES1)|(1<<ICNC1)|(1<<CS10);
sei();Код: Выделить всё
ISR(TIMER1_CAPT_vect)
{
TCNT1 = 0;
Timer1calibrate = ICR1;
if (Timer1calibrate == 00) { PORTB ^= (1<<PB1);}
}Симулирую в протеусе. На картинке: канал А - PB0, а канал B - PB1.
Но вот чего странно:
1. бит ICES1 установлен, т.е. захват должен происходить по нарастающему фронту сигнала. Тогда почему вход в прерывание и инверсия PB1 осуществляется по спадающему фронту?
2. В прерывании фактически написано
Код: Выделить всё
if (ICR1 == 00) { PORTB ^= (1<<PB1);}Вопрос: это мой баг или глюк протеуса (версия 7.6)?
- Вложения
-
- Снимок.JPG
- (84.42 КБ) 290 скачиваний


