История изменений
Исправление minakov, (текущая версия) :
Плохо, когда тыкаешь наугад - судя по даташиту я все правильно делаю, таймер крутится, даже иногда переполняется. Логику такую сделал:
OCR1 = 65000 //на всякий. Теоретически, он не должен сюда дойти до конца посылки,
ибо с делителем /64 он раз в секунду переполняется примерно, а пульт в секунду раза 4 дергается
// COUNTER
TCCR1B |= (1 << WGM12);
TIMSK |= (1 << OCIE1A);
//INT0
MCUCR |= ((0 << ISC00)|(1 << ISC01));
GICR |= (1 << INT0);
TCCR1B выключен
INT0_vect{
выключаем TCCR1B
ultoa TCNT1 в char*
шлем в UART этот массив(тут возможен сбой, ибо хз есть ли \0 после него, а посылка по \0 тормозится, но это неважно)
обнуляем TCNT1 (первый цикл пустой - для дебага)
включаем TCCRB с 1<<CS11 и 1<<CS10 // делитель /64
}
TIMER1_COMPA_vect{
дебажный PORTB |= (1<<1);
}
Итого:
Timer
0
6
1
5
3
9
113
6
12113
3
12113
3
12113
3
12113
3
12113
3
Исходная версия minakov, :
Плохо, когда тыкаешь наугад - судя по даташиту я все правильно делаю, таймер крутится, даже иногда переполняется. Логику такую сделал:
OCR1 = 65000 //на всякий. Теоретически, он не должен сюда дойти до конца посылки, ибо с делителем /64 он раз в секунду переполняется примерно, а пульт в секунду раза 4 дергается
TCCR1B выключен
INT0_vect{
выключаем TCCR1B
ultoa TCNT1 в char*
шлем в UART этот массив(тут возможен сбой, ибо хз есть ли \0 после него, а посылка по \0 тормозится, но это неважно)
обнуляем TCNT1 (первый цикл пустой - для дебага)
включаем TCCRB с 1<<CS11 и 1<<CS10 // делитель /64
}
TIMER1_COMPA_vect{
дебажный PORTB |= (1<<1);
}
Итого:
Timer
0
6
1
5
3
9
113
6
12113
3
12113
3
12113
3
12113
3
12113
3