Как раскрутить Си-макросы
Да, знаю, сложные Си-макросы – это очень плохо. Но, иногда, без них приходится писать такую кучу кода, что неизвестно, что лучше. Вот и мне понадобилось наваять макро-кодогенератор, вот такой (только не спрашивайте, зачем 🙂 ) —
Но как увидеть, что он нагенерил? Оказывается, все просто. Для этого, запускаем cpp компилятор от Visual Studio со следующими ключами:
Он создаст файл имя_файла.i, куда положит исходный код с развернутыми макросами.
Обзор stm8
Когда я выбирал контроллер для очередной поделки, я наткнулся на резкий дефицит разного рода AVR’ок. Я начал искать, чем их заменить, и нашел stm8.
stm8 – это относительно новое семейство микроконтроллеров от компании STMicroelectronics. В нем воплощено чуть ли не все, чего можно ожидать от 8 битных чипов. Конечно-же, у каждого контроллера есть свои плюсы и свои минусы.
Шаблоны проектирования (Design patterns)
Самое сложное в программировании – не набивание кода, а создание архитектуры программы. Удачные кусочки архитектур можно позаимствовать у других и применить в своих программах, такие кусочки называются “шаблонами проектирования”.
offsetof(s, m)
Если порыться по стандартным заголовочным фалам ANSI-C компилятора, то в файле stddef.h можно найти макрос offsetof()
Макрос offsetof() имеет тру-эмбеддерское объявление
Самое интересное, что несмотря на полезность этого макроса, он очень редко используется. Я и сам не знал о его существовании до сегодняшнего дня.
(more…)Протопотоки (protothreads)
Protothreads – очень удобная библиотека, реализующая аналог кооперативной ОС с очень маленькими затратами ресурсов (2 байта на поток!). Особенно она актуальна для небольших контроллеров и, собственно снимает извечный вопрос – пользоваться ОС или нет.
Основные “фишки”
- Очень маленькие затраты – достаточно всего два байта на поток
- Библиотека написана на чистом C и C-препроцессоре без ассемблера и, поэтому, очень легко переносится
- Выпускается под BSD — лицензией