Рейтинг
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

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

Программный таймер. Применение HAL

Сначала небольшая предыстория. Пользовался я раньше, значит, только прAVRославными контроллерами, да команды им посылал исключительно на богоугодном ассемблере. Все бы хорошо, но с портируемостью у асма, как известно, есть проблемы. В большинстве случаев, перенос какого-то куска интеллектуального труда с одного камня на другой подразумевал написание с нуля этого самого куска, но в реалиях периферии текущего мк. Вроде бы и несложно, да и обычно не особо напряжно, но как всегда есть НО. Проснулся интерес у меня к STMовским камням — обилие вкусной периферии плюс интересные цены прельщали (речь идет о STM8 и STM32). Вот тут-то я и задумался о том, что тут пора вспоминать С, да и изобретать свои велосипеды кроссплатформенно. Ибо каждый раз переписывать какое-нибудь типовое программное решение под другую архитектуру или модель контроллера, возможно и полезно с точки зрения тренировки и оптимизации, но грустно с точки зрения потраченного времени и сил. Такие вот дела.

А начал я, как следует из заголовка, с самого простого и необходимого модуля — программных таймеров.


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

Сигма-точечный фильтр Калмана

Если кому-то нужен протестированный код Unscented Kalman Filter (UKF) то предлагаю попробовать мою реализацию. Проверял на нескольких задачах, и сегодня проверил на модели BLDC, для которого никак не могу отладить EKF. На двигателе фильтр показывает себя хорошо, EKF так работать заставить не могу. Хотя он должен быть не на много хуже. Проблема только в поиске ошибок.


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

Простой способ создания меню для устройств с LCD дисплеем, пример на C для PSoC контроллера

Тема создания меню неоднократно обсуждалась, тем не менее мне захотелось создать более простой, компактный и универсальный вариант реализации, чем то, что нашёл в сети.

В итоге получилось довольно красивое решение, которым я буду рад поделиться с другими.

Меню может содержать до 127 пунктов, разделённых на группы. Выбор числа групп, связей между ними и числа пунктов в разных группах может иметь произвольную конфигурацию и легко задаётся в массиве констант.
В описаном примере меню состоит из 4х групп:


Видео работы на YouTube


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

Диспетчер, снова диспетчер

У каждого более-менее состоявшегося электронщика сформировалась своя система организации программ. Кто-то использует ОСРВ, кто-то диспетчеры, кто-то так и остался на уровне супер-цикла. В этой статье речь пойдет о диспетчере, который, так скажем, у меня недавно появился. Написан полностью на С.


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

Еще один makefile

MakefileДоброго времени суток!
Сколько уже про makefile говорено и писано — и все равно хочется отчебучить что-нибудь свое! Видят мои глаза отсутствие идеала, а пальцы стремятся это дело исправить.
Так что внесу и я свои 5 центов в это дело — опишу я идеальный makefile!
P. S. Все найденные ошибки, реализованные пожелания и изменения я буду здесь выкладывать. Так что здесь будет всегда актуальное состояние. Ну… так я планирую…


Читать дальше
  • +3
  • 25 марта 2014, 14:57
  • PICC
  • 1

Проект rusEfi и мысли о программировании МК вообще.

Я бы хотел рассказать о проекте автомобильного ЭБУ rusEfi и заодно озвучить некоторые мысли о программировании МК вообще.

Итак, по профессии я программист, по работе я делаю аналитику для биржевого терминала на java — там ничего гипер сложного, просто много данных которые нужно относительно быстро обработать. Значит нужно постоянно не забывать о производительности — при этом логики много, значит код должен должен читаться. Исходникам в этом году исполнится 10 лет — это даёт возможность окунуться в реалии работы со старым кодом, который уже никто не помнит, как почему и зачем вообще существует. Я рассказываю об этом, потому что именно этот мой опыт влияет на подход к программированию в rusEfi.




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

8 канальный ШИМ на attiny13

AVR attiny13 довольно популярный микроконтроллер (далее МК) и довольно дешевый (20 рублей на ebay). Но есть у него небольшой недостаток: 6 пинов I/O. А на деле вообще 5 (если не шаманить с reset). Если надо большое кол-во пинов на вывод чем может позволить микроконтроллер, то с легкостью используется микросхема регистра сдвига 74HC595, которая потребует 3-х пинов. Потратив 3 пина, можно получить 8*N пинов для вывода(где N — кол-во микросхем 74HC595).

Если со статическим выводом всё ясно, то что делать с ШИМ (PWM)?


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

Поменьше математики процессору, или оптимизация расчётов.

Досталась горстка дохлых ноутбучных батарей, тех самых, что на литиевых габарита 18650 собраны. По этому случаю делаю тут измеритель фактической ёмкости акумуляторов, чтобы хоть как то отбраковать их. Хочется видеть цифры по итогу в удобоваримом формате. А поскольку делаю на ATTiny26 (Не пинать! Ну, завалялся у меня.), то тащить вычисления с точкой накладно. Сел, помозговал — решаемо. Материал под катом может кому-то показаться очевидной истиной, может оказаться кому-то не востребованным, но надеюсь — большинство хоть что-нибудь подчерпнут для себя. Для нетерпеливых итог:
(1)(1)
Для тех, кто не боится формул — ниже.

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

Быстро делим на 3

Здравствуйте.

Часто читаю WE, так как интересуюсь программированием микроконтроллеров, и решил наконец-то зарегистрироваться, а заодно и запостить статеечку в личный блог.
Статья будет мало кому интересная по причине вопроса не шибко востребованного — а именно быстрого деления числа любой разрядности на 3.


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

2D Reed-Solomon Block Turbo Codes (RS BTC)

Речь идет о реализации а не описание алгоритмов. За описаниями алгоритмов в гугл. Они все открыты и очень хорошо расписаны.

Под реализацией понимается — реализация для микроконтроллеров. А не для DSP, PC, FPGA и прочих кодировщиков.



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