Изменение настроек Т0 (таймер0)
- Войдите на сайт для отправки комментариев
Ср, 30/01/2013 - 16:54
Попытался перепрограммить Т0 с нужным делителем, и написать (или переопределить) свой обработчик переполнения Т0.
В результате компилятор обрыгал ошибками как только в теле обработчика по переполнению появляется какой-то оператор.
ИДЕ - Ардуино 1.0.3. МК - Мега2560 от Ардуино.
Родные настройки таймера0 (в виде micros() и подобного) даром не нужны, но есть острая необходимость в полноценном использовании Т0, если это возможно.
Просьба не предлагать использовать другие таймеры, т.к. они все использованы.
Подскажите, как быть?
В результате компилятор обрыгал ошибками как только в теле обработчика по переполнению появляется какой-то оператор.
ИДЕ - Ардуино 1.0.3. МК - Мега2560 от Ардуино.
Родные настройки таймера0 (в виде micros() и подобного) даром не нужны, но есть острая необходимость в полноценном использовании Т0, если это возможно.
Просьба не предлагать использовать другие таймеры, т.к. они все использованы.
Подскажите, как быть?
В файле arduino-1.0\hardware\arduino\cores\arduino\wiring.с закомментируйте строки относящиеся к настройке таймера0 ,а именно вот это:
и в функции void init() это:
Родные настройки таймера0 (в виде micros() и подобного) даром не нужны, но есть острая необходимость в полноценном использовании Т0, если это возможно.
[...]
Первый вариант:
Переписать wiring.c/wiring.h, выбросив функцию обработки прерывания TIMER0_OVF и все так или иначе связанные с ней функции.
Потом, когда начнут глючить функции из других библиотек, переписать/адаптировать и их.
Второй вариант:
Изменить логику своих функций так, чтобы можно было воспользоваться обработчиками прерываний TIMER0_COMPA/TIMER0_COMPB и соответствующим(и) режимом(ами) работы таймера0. В сетвапе переключиться в один из этих режимов.
Третий вариант:
Перейти на AVR Studio или иной другой пакет, позволяющий программировать микроконтроллеры AVR и не навязывающий свои представления о прекрасном.
Четвертый и последующие варианты:
х.з.