?

Log in

No account? Create an account
Костерок

eddy_em


Емельянов Эдуард Владимирович


Обновленная прошивка хронометра
Костерок
eddy_em
Понемногу допиливаю прошивку хронометра. Исправил некоторые косяки и добавил возможность сохранять логи прямо во флеш-память микроконтроллера! Интересно, что, несмотря на то, что на корпусе написано STM32F103C8T6, фактически у него 128кБ флеша! Сама прошивка занимает почти 15кБ, после нее 2 страницы флеш-памяти отводится на хранение настроек (их туда аж 50 штук влезает, так что, очищать эти 2кБ нужно будет достаточно редко), а уже за ними все свободное место отведено под хранение логов.
Убил довольно-таки приличное количество времени, чтобы разобраться с линкер-скриптом и разместить хранилища именно там, где я хочу! При дебаге даже пришлось несколько раз сливать с камня прошивку после записи параметров и логов, чтобы убедиться, что все находится на своих местах.
Единственное, что мне сейчас не нравится — разбор команд, который у меня реализован тупо в лоб (серией if-else if). Вот чувствую, что можно сделать элегантное решение на вложенных switch'ах, но если это писать вручную, замучаюсь при добавлении новой команды (и лопухнуться легко при удалении ненужной), т.е. нужно писать генератор кода. И это останавливает от прогресса!

promo eddy_em август 17, 12:33 3
Buy for 10 tokens
Юра намедни напечатал корпус для хронометра. Для первого блина получилось неплохо: И еще немного фотографий:

Светодиодные модули P10
Костерок
eddy_em
Сижу, обмозговываю, как заставить работать вот такие модули с STM32. Китайский разработчик этого чуда, похоже, страдал психическими заболеваниями и находился в перманентном состоянии укурки и бодуна. Иначе как объяснить такую ненормальную логику?
В интернете никаких готовых вменяемых решений не нашел.
Пока думаю, что нужно использовать SPI: сразу получится и тактирование, и передача данных. Но вот как данные организовать?.. Понятно, что для построения текста удобней, когда байты расположены вертикально: берем 5-6 uint16_t на букву, и собираем слова... Но вот переадвать-то нужно побитно справа-налево, через четыре строки! Надо придумать какую-нибудь хитрую процедуру переформатирования экранного буфера в буфер для передачи по SPI. И, наверное, из-за слишком коротких посылок использовать DMA будет не очень резонно.
Может, кто-нибудь что посоветует?