ещё один пост на надоевшую тему A4988 vs DRV8825

Если кто не в теме, то это драйверы ШД типа NEMA17 для всяких настольных 3D-принтеров.


Читать дальше

Приличный (без bit-banging) и дешёвый SPI-flash программатор, c DMA SPI и USB на основе flashrom и maple-mini (stm32).

В общем, понадобилось слить прошивку и прошить роутер TP-link (пересадить его с S25FL032A/P на M25P128). В итоге в сусеках интернета был найден на гитхабе проект github.com/dword1511/stm32-vserprog, который реализует то, что и указано в заголовке. Учитывя, что стоит она $4.2, и она у меня уже есть, я был очень рад.


Читать дальше

UART загрузчик для Миландров 1986ВЕ9x с убитым JTAG'ом

Суть такова. Начали осваивать сабжевые чипы, всё отлично. Но в один прекрасный момент при очередном сеансе отладке IAR сообщил, что JTAG не работает. ХЗ как я напортачил, просто включил пин 10 порта B, сам JTAG на этом порту не трогал (к слову, не работали оба JTAG'а), может, просто криво залилось. Вобщем, накатал по-быстрому UART загрузчик во FLASH.


Читать дальше

RTOS и управление режимами энергосбережения.

В предыдущем посте про litenkjerne-430
спрашивали про krn_uthread_idle и где-же в ней энергосбережение. На тот момент это была просто заглушка и я обещал в скором времени запостить пример.
Посмотрим, как же ОС помогает нам управлять энергосбережением.


Читать дальше

RTOS теперь для MSP430

Как-то я тут публиковал про самодельую litenkjerne — RTOS для STM8(003S).
Теперь пришло время пересесть на MSP430 (16 бит + очень низкое потребление). Ну и, собственно, почему бы не перенести на MSP430 свою RTOS? Неделя вечеров — и всё готово. Что же она умеет?


Читать дальше

CRC32: на STM32 как на компе или на компе как на STM32.

Все знают, что в STM32F1xx, STM32F2xx, STM32F4xx есть аппаратный блок CRC32 с полиномом 0x04C11DB7.
И он, в общем-то, работает. Но только контрольная сумма почему-то не совпадает с таковой, рассчитанной софтварно.
В гугле обычно 2 типа вопросов:
  1. Как хардварно посчитать на STM32 побайтовую CRC
  2. Как посчитать софтово CRC так, чтоб она совпала с хардовой на STM32
Причём, на первый вопрос ответ везде отрицательный. Так ли это? Попробуем разобраться.


Читать дальше

Пишем буферизованный ввод-вывод с испоьзование планировщика ОС.

В моём первом посте про самопальную litenkjerne я обещал сделать буферизованный ввод-вывод в UART. Собственно, под Новый Год выполняю обещанное. Да, на этом примере можно реализовать и всё остальное, скажем, ADC/DAC, SPI, I2C и прочее.


Читать дальше

Спасаем стек

Продолжим тему о микроконтроллерах с малым объёмом памяти. Я обычно подразумеваю под таковыми те, у которых ОЗУ 512-1К. Есть, конечно и со 128, и 256 байтами, но там уже не до СИ. При использовании ОС, которая умеет в переключение нитей, возникает проблема памяти для стека, тем более, что у каждой нити он свой. Стек расходуется в основном на две вещи (помимо контекста при переключении нитей): сохранение регистров и выделение фрейма при вызове функций. Соответственно, чем глубже вложенность вызовов, тем больше расходуется стек. Неприятные сюрпризы могут вылезти при использовании библиотечных функций, таких как printf (лол, никогда не знаешь, что там внутри, хотя, можно и посмотреть для интереса).


Читать дальше

ещё одна OS (для STM8S003)

Я люблю писать прошивки, которые не содержат всяких циклов ожидания и при случае используют переход в ждущий или спящий режим, чтоб продолжиться дальше после прихода прерывания. Но в последнее время, когда понадобилось написать прошивку с пользовательским диалогом через терминал, я понял, что начиная с некоторого объёма, машину состояний запрограммировать не так-то просто (хотя я это сделал-таки).


Читать дальше