Как-то осенью возникла идея собрать велокомп на контроллере. Так-то велокомп был (китайский Assise ), но чет захотелось собрать свой родной. С контроллерами дело не имел, но общие представления были. Решил делать на Атмеге 16 и знакосинтезирующем ЖК 16х2. Решил начать с написания прошивки, т.к. ни контроллера, ни ЖК нет, да и вообще не представлял чего ешо надо. Прошивки тож никогда не писал (если не считать лабы по асм на PIC16F84 ). Скачал компилятор Codevision AVR, т.к. у него полно библиотек для разных устройств и просто писать. Сначала смущал язык Си, но потом увидел аналогию структуры языка с php и пошло-поехало. Эмулировал в Proteuse, там собрал схему и начал пробы. Потом решил добавить микросхемы точного времени и температуры, которые работают по шине I2C. Короч время шло, и потихоньку писал функции велокомпа. Первым делом написал вычисление скорости, каденса, расстояния и т.п. Потом начал писать навигацию по меню для обзора параметров. Ну а потом написал меню настроек. Сегодня прошивка почти готова, остались некоторые мелочи. Измеряемые параметры: скорость, макс. скорость, ср.скорость, дистанция, одометр, каденс, частота вращения колеса, время в пути, температура. В главном окне отображаются 4 параметра, которые могут выбираться в настройках. Другие параметры можно листать кнопками. Кнопок 5: выбор, влево, вправо, назад, подсветка. Подсветка включается на 10 секунд. При простое включается отображение времени и даты. Диапазон выбора диаметра колеса в пределах от 20 до 30 дюймов с шагом 0.5. Настройки и показания одометра и максимальной скорости сохраняются в ЕЕПРОМ, можно вручную, но планирую сделать автосохранение каждый день, например в 0 часов. Есть секундомер и установка даты и времени. Несколько раз заходил за отметку 95% занятой памяти, приходилось оптимизировать. На данный момент занято более 98% flash. Можно было бы и перейти на Атмегу 32, но детали уже заказали, да и 16-ой меги думаю для начала хватит. Скорость измеряется по принципу подсчета числа импульсов за промежуток времени - 3 сек. Для подсчета скорости используются еще 2 предыдущих значения и находится среднее арифметическое. Это позволяет повысить точность, однако повышает инерционность. Т.е. после остановки показания скорости будут снижаться и сравняются с нулем через 9 сек. Хотелось реализовать измерение скорости путем измерения времени между импульсами, это позволило бы увеличить скорость обновления показаний и повысило точность, однако при остановке время возрастает бесконечно. Поэтому хотел сочетать ети 2 режима измерения для разных скоростей. Однако места нет и придется забить. Теперь нужно составить схему и начать делать печатку.