Michael_K писал(а):посмотрите код прошлом моем посте - когда лучше(и правильнее) писать OCR2
(это величина "до которой считать" Таймеру2) ?
"1) OCR2 пишем когда захотим, внутри программы в обработчике переполнения Т0 работающей, а Т2 тупо сам работает по своему прерыванию по переполнению. Возможные перебои во время переписывания Т2 - не отвлекаемся."
Это возможно только в некоторых режимах работы таймера (корректная фаза и частота)
"2) OCR2 пишем только в начале самого прерывания по переполнению Таймера2, там-же где и его "общий счетчик" TCNT2."
Это - самый "красивый" и управляемый путь. На ваших частотах я бы использовал именно его.
Только не забудьте, что переменная, в которой хранится будущее значение OCR2
1. Должна быть объявлена как "volatile"
2. Запись в нее должна быть обрамлена в критическую секцию (если она двухбайтная и оба байта используются)
Добавлено спустя 13 минут 18 секунд:
Re: Прошу помощи - одновременное исп. трех таймеров на Atmega8
Alex_Sor писал(а):так они (насколько я понял вас) и так не разрешаются...
Зависит от того, что генерирует ваш компилятор. На асме можно написать и так, и сяк... и об косяк.
Alex_Sor писал(а):Т.е. получается что Atmega совсем тупое изделие, и его таймеры предназначены ТОЛЬКО для того чтобы рулить его "выходными ногами" ?
Как раз нет - все там управляемо: хочешь разрешай прерывания, не хочешь - не разрешай. Но этим именно нужно управлять. Я просто не знаю, как ведет себя CVAVR, чтобы конкретно что-то посоветовать.
Alex_Sor писал(а):тогда этим придется везде по ходу длинного кода заниматься...
Да, если код длинный (долгий) и разветвленный, то это неудобно.
У меня просто обычно "основной цикл" очень простой и быстрый-короткий получается...
Так почему-то повелось...
Alex_Sor писал(а):Это как раз не извращение.
Ну вот я бы как раз по этому пути пошел. Вообще я обычно стараюсь все временнЫе функции на один таймер вешать...
Тоже не факт, что именно так и надо - ну просто лично у меня так мозги работают...
Традиция