Pingvin писал(а):
DanGion писал(а):
Че-то я не понял, что именно вы хотите?
Чтобы основной цикл бегал непрерывно и только по выполнению условия начинали работать прерывания?
При кварце в 8МГц не хватает ресурсов контроллеру (быстродействия), чтобы успевать обрабатывать прерывания UART.
Тупо не считываются с него данные.
Это потому, что молотит с частотой 72 000 Гц прерывания таймера2, хотя, по сути - они нам нужны только в момент передачи ИК пакета и в момент приема ИК пакета.
Речь о том, чтобы отключать эти прерывания, когда они не нужны.
Вчитался, примерно так и понял мысль. Мысль годная. Зачем молотить когда это не нужно.
Вообще, как я понял, прерывания у Атмеги32 генерируются, в нашем случае, UARTом. При прерывании можно сначала запускать молотить таймер2 некоторое (нужное) время, обработать прерывание и пристукнуть таймер2.
Думаю нужно использовать 1 глобальный таймер (который чисто считает время от включения). А прерывания должны генерироваться по факту, а не по таймеру2 (сейчас там вроде 100мс? огромный лаг для динамичной ближней зарубы.).
Модульность и оптимальность алгоритмов вопрос интересный. Модульность должны быть "из коробки". Оптимальность это вопрос куда более многогранный, но тоже должна быть (особенно по определению "оптимального алгоритма").
А вот универсальность это лишнее, строить низкий уровень относительно более высокого - то еще удовольствие. Только, если куски копипастить друг у дружки (с допилом). Это можно, но это не универсальность.
За прошивку в ближайшее время возьмусь.
Pingvin, что там с платами решилось? Несподручно разрабатывать прошивку не имея самой "железяки", но будем пыхтеть