Тут селектор входов и мои комментарии и известные мне косяки - какие вспомню.
Нарисовано все не очень красиво - первое, что в eagle делал, да и не радиоинженер я...
Косяки по схеме:
-проект неоптимально разбит по платам, что затрудняет апгрейд и породило кучу разъемов/шлейфов;
если кто будет впервые что-то подобное делать - могу посоветовать регистры и буффера вынести на одну плату с релюшками, а с платой контроллера соединить одним шлейфом - передавать последовательные данные регистрам. Тогда появится возможность последовательно наращивать исполниттельные элементы, например добавить релюшки питания и т.п.
-сами релюшки не самые лучшие - лучше поискать поляризованные - упрощает схему и уменьшает потребление. Можно будет дарлингтон-массивы убрать;
- несмотря на возможность включить четыре входа, реально подключено только три, соответственно адаптирована прошивка;
-в результате подбора кнопок на морду по имеющейся дырке в корпусе совершенно случайно приобрел кнопки, работающие на размыкание.
Пришлось перевернуть диоды, формирующие 2-е прерывание и изменить прошивку.
Косяки в прошивке:
- замечен баг при включенной оптимизации (опция -Os компилятора), соответственно отключил ее до выяснения - буду разбираться;
- тайминг RC5 сильно загрублен из-за особенностей имеющегося пульта - у него первый mark ~1000-1200 usec, первый space 600~640 usec вместо положенных 889 там и там;
- пока не реализовано запоминание текущей громкости и входа в EPROM.
На сегодня регуляторная часть в рабочем состоянии и находится в тестовой эксплуатации.
В статическом состоянии регулятор на мой ух совершенно нейтрален по звуку.
При работе два момента:
-довольно громко клацают релюшки (меня особо не напрягает, но можно полечить капотированием и виброразвязкой плат с реле);
-три раза при изменении громкости во всем диапазоне (четверть, половина и три четверти) слышно щелчки в колонках. Обусловлено конечным (и разным для замыкания и размыкания) временем срабатывания реле. Думаю, можно минимизировать, подобрав задержку между сбросом предыдущего состояния и выставлением нового при изменении громкости (предпоследняя строка в функции send_volume() - там 1 ms сейчас).
И да... Забыл написать... Некоторые куски схемы целиком или частично дрались у других авторов. Адаптация шаговика отсюда:
http://radiokot.ru/articles/27/ , остальных кого вспомню - добавлю. Модуль работы с LCD в прошивке - не мой (там есть в тексте). По RC5 и некоторым другим вещам огромное спасибо Алексу Торресу за статьи.
В текущем виде повторять один к одному смысла нет (я бы теперь сделал по-другому), но некоторые моменты могут оказаться полезными. Если будет время - RC5 декодер оформлю как библиотеку.