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

О блоге

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

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

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

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

Читатели (153)

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

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

Преобразуем в строку. Часть 1. Целые числа.

Задача преобразования числа в строку стоит всегда, когда нужно отобразить числовые результаты работы программы. Процессоры у нас оперируют двоичными данными, человеку-же подавай десятичные числа. Собственно задача состоит в преобразовании базы числа. Какие для этого есть способы? Целью данной статьи является описание и сравнение максимального количества способов преобразования числа в строку. Задачу, естественно, рассматриваем с точки зрения реализации на микроконтроллерах, по этому размер и скорость имеют значение. Для простоты рассматриваем только без-знаковые 32-х и 16-ти разрядные числа (со знаком не намного сложнее).


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

SOFT_UART_X3 с уверенным приемом и полным дуплексом, для любого микроконтроллера, используя один таймер

Небольшая предыстория.
Захотелось мне сделать uart на тех пинах, на которых его отродясь небыло. Хотел найти сразу готовое решение чтобы не изобретать сами знаете что, однако не все так просто. Порывшись, сразу нашел Программный UART для любого микроконтроллера, вроде реализация всем хороша, на передачу работает отлично. А вот на прием, где-то один байт из сорока приходит с ошибкой, по понятной причине,- просто опрашивая RX пин по таймеру, уверенного приема не добиться, рано или поздно попадем на границу фронта. Есть конечно способы сделать прием уверенным, но для этого обычно приходится задействовать много аппаратных ресурсов, иногда два таймера плюс прерывание с ножки. А удобно бы использовать один только таймер.



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

Sleep для RTOS

Хочу написать о достаточно полезной вещи(на мой взгляд) — функции sleep для RTOS.
Что это такое и зачем это надо? Допустим вам необходимо вывести что нибудь на LCD дисплей, а контроллер который там установлен не такой быстрый как наш stm32 и нам приходитбся делать паузы чтобы он успешно обработал наши запросы. Но если мы будем использовать обычный for для реализации паузы — то это будет напрасная трата ресурсов процессора, пока мы ждем мы могли бы выполнить еще что нибудь полезное.

update: Задача решена в любом RTOS, а это только доработка планировщика задач от DI. Рекомендуется использовать полноценные RTOS


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

BAM, или управляем кучей светодиодов

В статье пойдет речь о примере реализации BAM для плавного изменения яркости 22-х светодиодов. BAM — Bit Angle Modulation, подробности очень хорошо описаны тут bsvi.ru/bam-alternativa-shimu/


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

Еще один способ опроса энкодера


Мне известно два метода обработки энкодера: по прерыванию (от INT0,INT1,PCINT…)
и сравнение предыдущего состояния энкодера и текущего ( easyelectronics.ru/avr-uchebnyj-kurs-inkrementalnyj-enkoder.html ). Я предлагаю еще один способ, который заключается в следующем:

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

Программирование без условных переходов

Думая над структурой очередной программы, понял что ветвления это зло (для AVR это brcc, sbic и т.д.). Ветвление это принятие решение. Если входное данное такое, то идем туда. Если другое, то туда. Когда анализируешь работу программы, самое сложное это понимание участков с ветвлениями. Понял что возможно писать по другому принципу. Без использования операторов сравнений-ветвлений.

Суть такая. Входной байт данных не надо сравнивать с чем-то. А надо прогонять через последовательность заграждений или заборов. Каждое заграждение расчитано на свой байт. То есть если заграждение подготовлено для байта 0x0A, то по проходу этого байта выставляется 1 в соответствующем месте Идентификатора. Если заграждение прошел любой другой байт, выставляется 0 в Идентификаторе.


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

Работа с группами линий ввода-вывода на Си (без плюсов)

В процессе написания статьи по препроцессору Си я понял многое о его механизме работы и возможностях. Мне стало интересно, возможно ли реализовать групповые операции с линиями ввода-вывода, как это сделано тут с помощью препроцессора на обычном Си.



Здесь начинается препроцессорная жесть

Криптография для эмбеддера



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


Читать дальше
  • +10
  • 24 ноября 2011, 15:07
  • e_mc2
  • 1

Форматный вывод для МК на Си++

В предыдущей статье я писал о форматном выводе для микроконтроллеров стандартными средствами языка Си: Форматный вывод на Си для микроконтроллеров. Теперь посмотрим что интересного можно сделать на С++.

Астарожна многабукаф!


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

Форматный вывод на Си для микроконтроллеров.

Форматированный ввод-вывод применяется очень широко, в первую очередь это, конечно, взаимодействие с пользователем, а так-же отладочный вывод, логи, работа с различными текстовыми протоколами и многое другое. В этой статье рассматриваются особенности применения форматированного вывода (ввод оставим на потом) для микроконтроллеров.
Первая программа написанная для ПК традиционно называется «Hello, world» и естественно пишет в стандартный вывод эту знаменитую фразу:
#include <stdio.h>
int main(){
printf("%s", "Hello, world");
return 0;
}

Первая программа для микроконтроллера обычно зовётся «Blinky» и она просто мигает светодиодом. Дело в том, что заставить работать традиционный «Hello, world» на микроконтроллере не так уж и просто для начинающего. Во первых, нет стандартного устройства вывода и его функциональность ещё нужно реализовать. Во вторых, не всегда бывает очевидно как подружить стандартные функции вывода с целевым устройством. Ситуация усугубляется тем, что в каждом компиляторе (тулчейне) это делается каким-то своим способом.


Читать дальше
  • +7
  • 14 октября 2011, 09:21
  • neiver
  • 1