Рейтинг
12.57
голосов: 10

О блоге

Алгоритмические хитрости, типовые решения и заумные трюки. Все то, что можно воплотить программно на любом микроконтроллере или на компе (но применимо к электронике)

Администраторы (1)

Модераторы (0)

Модераторов здесь не замечено

Читатели (152)

dcoder Krieger Tabke XANDER marvin_yorke kest Vga Alatar mzw kalvenolt Reverb mist grand1987 Gornist Rom kvm labor neiver Leopoldius rumkin

Все читатели блога

Конвертация времени

Итак, столкнулся с довольно тривиальной задачей — посчитать промежуток времени в секундах, минутах, часах, и днях между двумя датами и временем. Задача, в общем-то, не новая и легко решается на ПК.
Суть этого поста — адаптировать подобные преобразования для МК.
Сразу оговорюсь, что мы не будем учитывать зональность времени, а будем вычислять по гринвичу.


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

Цветовые палитры для пространства HSV

«Готовь сани летом» — именно этой пословице мы с другом решили последовать, начав разрабатывать новогоднюю гирлянду на широко известных RGB светодиодах со встроенным драйвером WS2812B.
После того, как было решено, что все программные манипуляции с цветом будем производить в цветовой модели HSV, встал вопрос о конвертере HSV->RGB. Ибо формата отличного от RGB светодиоды не понимают. Использовать готовые конвертеры или тупо переложить в код готовые формулы преобразований, чтобы просто оперировать стандартным пространством HSV — неинтересно. Душа требовала какой-нибудь изюминки. Ну и в общем-то что хотела, то и получила.



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

Собираем portable Eclipse-based-IDE для ARM

Как собрать C/C++ Eclipse IDE под Windows для сочинения и отладки микроконтроллерных программ, написано уже немало статей. Я же хочу показать, как сделать portable-версию IDE.


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

Проблема 2000h (или как собрать GCC-ARM-embedded линкером большой проект)

Тема в первую очередь будет интересна пользователям среды Eclipse IDE/GNU ARM plugin/GCC ARM compiler под Windows.

Всякий уважающий себя эмбеддер рано или поздно вырастает из светодиодных моргалок, забрасывает авр-ки на полку, и пересаживается на более продвинутые чипы. С ростом возможностей микроконтроллера увеличивается и сложность встроенных программ. Мегабайты и Мегамипсы так и просят прикрутить к проекту графический ЖКИ, стек TCP/IP, файловую систему, а для полного счастья — конечно ещё и фриртоску.

И вот в один прекрасный момент проект перестаёт собираться. А виноват в этом может быть (ну конечно же, Билл Гейтс) лимит на длину командной строки в 8192 символа. Что же делать?


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

Быстрый парсер NMEA

GPS навигацией не занимается только ленивый. Вот и мне пришлось…
Задача — парсерить ответы от модуля. В результате получился вот такой алгоритм
Я имел доступ к большому числу разных модулей (EB500 EB800, вся линейка Ublox,Quectel L76, ML8088)
Парсер работает со всеми этими модулями без изменений
Сам парсер вызывается из прерывания по приему каждого байта,
в результате работы — необходимые данные разложены по полочка
понимает та же глонас модули.


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

VinxFS - Самая маленькая файловая система FAT32 для AVR

Скачать одним файлом тут: github.com/vinxru/VinxFs/archive/master.zip
Смотреть на GITHUB: github.com/vinxru/VinxFs

Неоднократно читал на форумах, что люди ищут небольшую программу, которая бы позволяла работать с файловой системой FAT16/32. И многие выбирают Petit FatFS, потому что она работает даже на ATTiny. Но понимают через некоторе время, что она не умеет увеличивать размер существующих файлов. Приходится заранее создавать большие пустые файлы. А об удалении, создании, перемещении файлов или папок можно даже не думать.

Я предлагаю (безвозмездно) переработанную версию этой библиотеки. Это самая маленькая файловая система FAT16/FAT32 написанная на Си, умеющая создавать, изменять размер и удалять файлы. А так же переименовывать и переносить файлы и папки.


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

Configuration Wizard в KEIL. Ассемблер А51, подбор битовых масок для вывода на семисегментный индикатор

  Что такое Configuration Wizard (мастер конфигураций) в KEIL? Это псевдокод написанный в комментариях и оформленный спецтегами. При наличии такого кода в проекте появляется дополнительная вкладка «Configuration Wizard».
  На странице помощи по Configuration Wizard упор сделан на С программировании. Но мастер конфигураций легко встраивается и в чисто ассемблерные проекты. При этом следует придерживаться ассемблерной орфографии. Ниже приведен пример подобного мастера.


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

Генератор на perl конечного автомата на C.

Идея написать статью возникла, когда наткнулся на easyelectronics.ru/avr-uchebnyj-kurs-konechnyj-avtomat.html

В данной статье рассматривается принцип работы сгенерированного кода, сам генератор написан на perl и в нём особо интересного ничего нет, берите, пользуйтесь, модифицируйте под свои нужды :)

По сути, предыстория написания программы-генератора: некоторое время назад я делал несколько мелких программ для нового проекта, все они различались реакциями на события. День тупого полумеханического труда по написанию почти одного и того же и к вечеру у меня сдали нервы. Попробовал поискать какой-нибудь готовый генератор кода для конечного автомата (КА) или хотя бы таблиц из некого формализованного описания, ведь по виду кажется просто — есть граф, генерируй-нехочу. Главными критериями были простота и чтоб в результате был код на чистом C, без всякиих плюсплюсов — мне же для микроконтроллера! Но тут меня ждал облом. Либо не просто, либо не C, либо вообще монструозно. В общем, ничего подходящего, не нашёл. К обеду следующего дня у меня был простенький наколенный генератор на perl, как в мультике — лучше день потерять зато потом за пять минут долететь :). Потом уже, когда его стали использовать коллеги, дописал некоторые вещи по их замечаниям. В конце концов получилось нечто, что уже не раз пригождалось узкому кругу людей, и что я и хочу представить на суд общественности, может кому-то ещё поможет.

Практически каждый программист микроконтроллеров (да, впрочем, и не только), делая свой проект, сталкивается с необходимостью обработки событий, изменяющих состояние программы/устройства. Обычно для этого используется тот или иной вариант реализации КА. При этом бывает так, что пишет человек КА, только об этом не знает :)


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

Инициализация периферии с помощью именованных аргументов

В статье речь пойдет о реализации способа работы c периферией микроконтроллера с помощью именованных аргументов функций Си. Способ разобран на примере реализации функции конфигурации таймера TIM4 семейства STM8L.

Вообще, существует 2 типа передачи параметров внутрь функции или программного модуля: позиционный или именной. Так например, обычные функции в Си используют позиционную передачу, т.е. мы должны знать что и в каком порядке передавать функции. Использование именованных аргументов же гарантирует, что мы присвоим нужные значения куда положено, да и освободим себя от необходимости помнить какой параметр за каким следует. Ну вообщем, на дальнейшем примере это станет понятно.


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

Формирование импульсов для IR-управления на аппаратном таймере-2 ATmega8

В этой статье приводится описание алгоритма формирования импульсов для IR-управления на аппаратном таймере-2 на примере ATmega8. К статье прилагается программа расчета констант и формирования фрагментов кода для AVR-С.

В процессе разработки поворотного стола для круговой фотосъемки возникла задача дистанционного управления фотокамерой. В поисках информации была найдена статья, автору которой я очень признателен за подробный разбор. Но у него стояла задача выдачи одной лишь команды на один тип камеры (ее выбор осуществляется на этапе компиляции), а мой девайс помимо этого занят другими важными делами, да и не люблю я транжирить память программ списком макросов Pulse/Pause. И к какой конфессии (Canon'истам или Nikon'истам) относится конечный пользователь — неизвестно. В результате было принято решение из статьи взять цифры, а остальное реализовать по-своему. Для этой задачи, как мне кажется, как нельзя лучше подходит аппаратный таймер-2. Потому что у нулевого нет прерывания по совпадению и, тем более, возможности «дрыгать» при этом ногой, а первый, 16-разрядный, тратить на это просто жалко.


Читать далее...
  • +5
  • 30 ноября 2014, 18:53
  • Kerim
  • 1