Вкратце об устройстве.
Монитор предназначен для контроля состояния аккумуляторной батареи 12 В емкостью от 50 до 100 А*ч.
В процессе разряда аккумулятора ведется контроль напряжения и отданого нагрузке количества электричества (фактическая емкость). Предусмотрена аварийная сигнализация о почти полном разряде и индикация уровня заряда по требованию (кнопка) - "полный/половина/на исходе". Регистрируется также количество циклов заряд/разряд.
В процессе зарядки зарядное устройство считывает данные с монитора, оценивает состояние аккумулятора, заряжает. Контроллер на ЗУ тоже AVR.
Возник вопрос выбора итерфейса. В контроллере монитора для этого есть свободной только одна линия порта. Т.е. в любом случае нужен однопроводный интерфейс. Требования к нему весьма простые - переслать несколько байтов на малой скорости на расстояние 1-1,5 метра по одному проводу.
Сразу же вроде бы напрашивается 1-wire. Тем более, опыт работы с различными далласовским устройствами есть. Точнее, напрашивается эмуляция 1-wire slave устройства, коим будет монитор. Даже встречал реализацию подобного. Но, вроде как это не есть самым оптимальным решением, существуют и иные однопроводные интерфейсы. Хотя бы тот же LIN, с которым на практике до сих пор дела не имел, но немного о нем знаю. Возможно существуют еще простые однопроводные интерфейсы? Не мог бы кто подсказать, что еще из такого имеется? Достаточно, чтобы были только один master и один slave.
В любом случае реализация будет только софтовой, потому как только одна нога под это свободна, контроллер только восьминогий, т.е. tiny25, в крайнем случае - tiny45. Зато в момент обмена контроллера монитора с контроллером ЗУ мониторному контроллеру заниматься будет больше нечем, кроме как обменом данными, и под это можно задействовать либо один, либо оба таймера.