Таймеры и задержки: сборник рецептов

AVR
Увидел в статье DI HALT "Простой программный таймер для конечных автоматов" некий кусок кода и решил накатать статью…

bool MainTimerIsExpired(const uint32_t Timer)                      // ???
{                                                                  // ???
   if ((TimeMs - Timer) < (1UL << 31)) return (Timer <= TimeMs);   // ???
   return false;                                                   // ???
}                                                                  // ???

Сначала писал длинно, с приколами и разжевыванием, но мне не понравилось и в итоге убрал в черновики. Решил переоформить как краткий сборник рецептов.


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

Среднечастотный частотомер на AVR. Часть 1, динамическая индикация.

  Давно хотелось иметь функциональный генератор с приличными характеристиками и не фантастической сложностью. Поэтому на Ali был прикуплен чип XR-2206, поиском по инету найдена схема генератора — XR-2206 5Hz to 300kHz Function Generator. Конструкция достаточно хорошо проработана и описана.
  Собственно к схеме генератора претензий нет, некоторые вещи я бы сделал по другому, но это потом в процессе изготовления. Мне сразу не понравилась цифровая шкала генератора (там же, страница 2). Его программа представляет сборку из скетчей Arduino, я их не понимаю и не горю желанием изучать. Да и применение ATmega328 мне показалось неоправданно жирным. Короче решил спроектировать свою цифровую шкалу на ATmega8A. Результат представляю вашему вниманию, код написан на ассемблере AVR в среде AVR Studio 4.19.


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

Простой контроллер освещения

Статью писал пол года назад на GeekTimes, может даже кто-то из сообщества ее читал. Переношу сюда для поддержания ресурса, плюс ко всему, возможно кому-нибудь из сообщества пригодиться концепция девайса. Как ни странно, на разработку этого устройства меня толкнули лень и дискомфорт. Каждый раз загоняя автомобиль в гараж, в темное время суток, постоянно приходилось искать заветную клавишу выключения света, что бы ориентироваться при выходе. В итоге начал обдумывать методы устранения данной проблемы. Первое что пришло на ум, готовый датчик движения, что применяется для уличного освещения. Но не захотел я легкого пути, решил изготовить самостоятельно. Начал прокручивать в голове различные решения на подобии измерителя поля на полевом транзисторе и антенне, ИК приемо-передатчиками в воротный проем и в итоге тернистый путь привел меня к широко известному PIR-датчику HC-SR50.



Читать дальше
  • +4
  • 14 июля 2017, 13:08
  • Jman
  • 1

Первый запуск STM32F030 и nRF24L01+ (china) Архив

Проект для IAR 7.4. Выкладываю по просьбе.
Библиотека отсюда stm32f4-discovery.com
Переделал для F0.
Обмен между двумя китайскими модулями, контроллеры stm32f030f4.
  • +1
  • 12 октября 2016, 21:18
  • Kitano8
  • 1

STM32 - входим в bootloader по кнопке.

Лирическое отступление.

Года 4 назад начались у нас продажи мелких партий устройств, основанных на STM32. Так как на само устройство мы, в виду миниатюрности устройства, не ставили разъём под программирование, то заливать прошивку был решено используя родной bootloader. Но тут опять возникла проблема — как в bootloader входить. Замыкать ножку BOOT при помощи джампера показалось плохой идеей. И тогда была поставлена задача — контроллер должен входить в bootloader по нажатию 1й кнопки.


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

Датчик DS18B20 вычисление отрицательной температуры.

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

И очень соблазнительно для точности 1градус, включить преобразование с точностью 9бит, и строчкой
temp=(StratchPad[0]>>4)|(StratchPad[1]<<4); получить знаковые 8 битные данные.
но при таком подходе, у меня вычисленные значения расходятся с табличкой из даташита.
В таблице 0xFF5E это -10,125С, а у меня получается 0xF5 это -11С
В таблице 0xFE6F это -25,0625C, а у меня получается 0xE6 это -26С
В таблице 0xFC90 это -55С, вот тут совпадение С9 это -55С
Пробуем перехитрить и просто инвертировать без добавления 1
~0xF5=0xA, ура 10С совпало!!!
~0xE6=0x19 ура 25С опять совпало!!!
~0xC9=0x36 блин 54С не совпало.
Решение оказалось простым надо сначала перевести из дополнительного кода в прямой, а потом отбрасывать лишние биты
((~0xFF5E)+1)>>4=0xA =10C(минус учитывается в программе)
((~0xFE6F)+1)>>4=0x19 =25C
((~0xFC90)+1)>>4=0x37=55C
ЗАРАБОТАЛО )))

Полезная книжка по аналоговому дизайну от ковбоев.

Texas Instruments активно пиарит свою бесплатную книгу Analog Engineer´s Pocket Reference. Раздают её в пдфе тут, и на мой взгляд шпаргалка стоит внимания.


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

Особенности адресации контроллера TM1638 для индикаторов с ОА.

  Приобрел модуль для экспериментов и возможно встраивания «LED&KEY» на чипе TM1638 от китайского чипмейкера Titan Micro Electronics. В пакете кроме самого модуля ничего не было, пришлось разбираться, благо модули на чипе TM1638 популярны у Ардуинщиков и в инете разрозненная информация по ним есть.
  Все разнообразие модулей сводится к трем разновидностям, о них ниже…


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

Реалиазция стандартного GATT-BLE профиля на RSoC фирмы Cypress

Эта статья является продолжением моей статьи [1]. Здесь речь пойдёт о программной реализации стандартного GATT (Generic Attribute Profile) профиля ESP (Environmental Sensing Profile), включающего два также стандартных сервиса: ESS (Environmental Sensing Service) и BAS (Battery Service). К описанному серверу можно будет подключиться с любого устройства, поддерживающего протокол BLE (Bluetooth Low Energy), например смартфон или планшет, для мониторинга температуры и относительной влажности воздуха, а также состояния батареи. Помимо этого будут представлены некоторые программные и аппаратные средства для разработки и отладки BLE приложений.

Устройство наше основано на том-же радиомодуле CYBLE-022001-00 фирмы Cypress Semiconductor, подробнее о нем см. в первой части статьи [1]. В состав модуля входит микроконтроллер с архитектурой ARM Cortex-M0, в который помимо стека BLE можно загрузить программу пользователя. В схему добавлена пара резисторов для измерения напряжения батареи встроенным в RSoC АЦП.

схема


Читать дальше
  • +3
  • 08 июня 2016, 09:31
  • Ser60

Вывод звука на STM32 + библиотека

Озадачился выводом звука (мелодий) на stm32 для одной поделки. Стал изучать материалы…
Задача: с минимальными ресурсами по CPU и памяти (а так-же с минимальным объема работ по подключению в коде) — выводить звук.
Итоги изысканий и результат:

Детали под катом…
UPDATE: Суть решения не выводе как таковом, а в формировании первоначального сигнала в коде. Я у себя использовал усилитель D-класса на рассыпухе. Но это не обязательно. Вывод можно делать и через DAC. Можно приделать любой усилитель. Можно использовать внешний DAC. Суть решения в пункте 2 и 3: генерация данных с минимум нагрузки на МК.
З.Ы. А вы обсуждаете первый пункт, который я применил в конкретном месте в конктерных условия, потому что мне так было проще…
З.З.Ы. Удалил часть про PWM, как не главную :)



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