LINUX.ORG.RU

История изменений

Исправление 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
Если я еще не надоел, то ЧЯДНТ?