Добрый день уважаемые программеры. Перерыл много примеров по теме прерывание по таймеру. Нашел более или менее нормальное описание да и с ним туплю. Помогите, подскажите. Мне надо чтобы таймер менял значение сигнала с 0 на 1 и на оборот. Вот что есть в инете на это, но куда, что и почём не догоняю. Код (C): volatile long cntr; boolean flip; void setup() { pinMode(13, OUTPUT); TCCR2A = 0; TCCR2B = 2; TCNT2=59; TIMSK2 |= (1 << TOIE2); } ISR(TIMER2_OVF_vect) { TCNT2=59;//55; cntr++; if(cntr>9999) { flip = !flip; cntr = 0; } } void loop() { if(flip) digitalWrite(13, HIGH); else digitalWrite(13, LOW); } Поясните пожалуйста
постили бы ссылку по которой нашли код, там наверняка были какието пояснения к нему если вкратце в основном цикле loop в зависимости от переменной flip на 13 ножку выводим 0 или 1 а сама переменная flip изменяется в обработчике прерывания TIMER2_OVF_vect строка flip = !flip в процедуре setup видимо включается эти самые прерывания по таймеру.
Да, это low-level настройка таймера. На уровне регистров AVR. При этом написанная без комметариев, поэтому, чтобы разобраться нужно сверять с даташитом. Я, например, не могу моментально в голове перевести 59 в двоичную систему и вспомним какому биту какая настройка соответствует. Для ваших нужд лучше воспользуйтесь библиотекой TimerOne. С ней всё проще.
Ладно тогда будем через TimerOne.h развликаться, просто не хотелось *.h использовать. Спасибо за ответы. Подскажите куда помесстить TimerOne.h если пишу проги на Arduino 1.0.4?