RTT с помощью OpenOCD (без J-Link и без софта от Segger)

Фирменный софт от Segger, разработчика программаторов J-Link, имеет одну очень удобную функцию, а именно терминал реального времени — Real Time Terminal (RTT) (есть информация на русском и пример использования). Вещь удобная, позволяет получить терминал до МК прямо во время отладки по SWD. По скорости и функционалу превосходит Semihosting и вывод информации через пин SWO. И хотя идея не оригинальна (например, до недавнего времени что-то подобное было в в составе набора утилит stlink utils от Texane), реализация оказалась удачной и удобной для использования. Поддерживаются все МК ARM Cortex-M. Жирный минус — привязка к недешёвым программаторам J-Link и к их фирменному софту. И если первая проблема уже давно решается покупкой клона или превращением ST-Link в J-Link OB, то вторая до недавнего времени не имела решений — или используй фирменный софт и бойся, что он залочит клон, или забудь об RTT. Но решение появилось: проект открытого отладчика для чипов OpenOCD (Open On-Chip Debugger) уже несколько лет поддерживает программаторы J-Link (без проблем работает прошивка и отладка), а в марте в репозитории проекта OpenOCD появился патч от Marc Schink, добавляющий поддержку RTT. Более того — вещь получилась универсальная, работает даже с другими SWD программаторами (я тестировал с ST-Link). И хотя патч ещё не включён основную ветку OpenOCD, ничто не мешает нам его попробовать.

Тестирование будем проводить на Linux (но можно повторить и на других ОС), программаторы J-Link-OB-072 и ST-Link-v1.

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

Кухонный таймер



Вступление

(можно не читать).
Достаточно часто на кухне надо следить за длительностью какой-нибудь операции или процесса. Например, чайничек поставили наливаться или макарошки вариться, или мясо в духовку ваша ненаглядная поставила. И вроде бы все хорошо, но стоит зазеваться(или засидеться в интернете), как чайник перельется, макароны переварятся или что еще хуже – мясо в духовке подгорит!
Для решения данного вопроса был приобретен механический таймер в виде яйца. И, в общем, он был неплох — места не занимает, звенит громко. Но спустя полгода таймер начал куда-то спешить. Да прилично так. Заводишь его на час, а он уже минут через 40 звенит. В общем не порядок! Немного подумав и посмотрев на готовые варианты, все-таки решил сделать свой кухонный таймер.

Требования

Требования были к нему достаточно простые:
  • Электронное управление
  • ЖК-индикация
  • Звуковая сигнализация
  • Компактность
  • Низкое энергопотребление
  • Измерение температуры (ну, как же без нее :-))



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

Мои онлайн-инструменты для электронщиков

Добрый день, сообщество.

У меня есть сайт на котором я реализую полезные инструменты для нашей профессии. Я вижу, что их популярность со временем растет благодаря поискам Гугла и Яндекса, значит они не совсем бесполезны и могут пригодиться и вам.

Продукты Keil

Эта страница позволяет скачать любые продукты Keil с их официального сайта без заполнения нудной формы. Выберите продукт и получите ссылку для скачивания.

Электротехнический калькулятор

Этот инструмент позволяет произвести некоторые электротехнические расчеты.

Как-то я сделал небольшой оффлайновый электротехнический калькулятор под Линукс. Но потом понял, что офлайновые программы неудобны и неактуальны и решил перенести калькулятор в веб. Но пока не успел перенести, зато новые идеи реализую сразу в вебе.

Сейчас в онлайновом электротехническом калькуляторе есть 3 инструмента:
  1. Расчет номинального сопротивления
  2. Расшифровка маркировки чип-резистора
  3. Расчет проводника

Генератор заголовочных файлов Си

Программистам на Си и Си++ будем полезно. Позволяет генерировать грамотный заголовочные файлы с защитой от повторного включения с уникальным идентификатором.

Пример генерируемого кода.

#pragma once
#ifndef EXAMPLE_H_20170303_211631
#define EXAMPLE_H_20170303_211631

#endif /* #ifndef EXAMPLE_H_20170303_211631 */


Чтобы не возникало споров и вопросов, поясню код.

Зачем нужна защита от повторного включения я не буду объяснять, это расписано в Википедии. Директива "#pragma once" нужна для компиляторов, которые ее понимают. Она позволяет не читать заголовочный файл целиком, а игнорировать его, если он уже включен. Тем самым ускоряется компиляция программы. Некоторые компиляторы не понимают эту директиву и игнорируют ее (такое поведение прописано в стандартах Си и Си++). Для непонимающих компиляторов нужны строки, которые идут дальше. С помощью обычных директив реализуется стандартная защита от повторного включения. Генератор выдает уникальный идентификатор, основанный на временной метке или на UUID. Это позволяет гарантировано избежать повторного включения. Особенно полезно, когда вы используете сторонние библиотеки, которые нельзя поправить, и у которых идентификаторы совпадают. Поздравляю тех, кому этого пока удается избегать.

Знакосинтезирующий ЖКИ 1602 и клавиатура: экономим выводы микроконтроллера

В рамках данной заметки мы рассмотрим, как можно сэкономить выводы микроконтроллера при использовании знакосинтезирующего жидкокристаллического индикатора совместно с кнопками управления меню устройства. Будет показано, что при использовании «обычного» ЖКИ (т.е. собранном на контроллере типа HD44780) и «стандартном» способе управления меню (кнопки «MENU/SELECT», «UP», «DOWN», «+» и «-») для опроса кнопок не требуется каких-либо дополнительных ресурсов камня, кроме уже задействованных под управление индикатором:





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

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

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

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



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

Эмуляция носителя FAT32 на stm32f4


Некоторое время назад возникла данная задача — эмуляция носителя FAT32 на stm32f4.
Её необычность заключается в том, что среди обвязки микроконтроллера вовсе может не быть накопителя, вроде FLASH-контроллера или SD-карты.
В моём случае накопитель был, но правила работы с ним не позволяли разместить файловую систему. В ТЗ, тем не менее, присутствовало требование организовать Mass Storage интерфейс для доступа к данным.
Результатом работы явился модуль, который я озаглавил «emfat», состоящий из одноимённого .h и .c файла.
Модуль независим от платформы. В прилагаемом примере он работает на плате stm32f4discovery.
Функция модуля — отдавать куски файловой системы, которые запросит usb-host, подставляя пользовательские данные, если тот пытается считать некоторый файл.
Итак, кому это может быть полезно и как это работает — читайте далее.


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

Программный многозадачный таймер на STM32.

После начало освоения STM32 с применением библиотеки HAL и STM32Cube и наигравшись с LEDBlink пришло время прокачатся до уровня 1, благо экспириенса получил прилично, спасибо за это СООБЩЕСТВУ. Глаз положил решил написать модуль для программных таймеров на базе SysTick, но без особых проблем под эту задачу можно использовать любой другой аппаратный таймер.
И тут многие скажут, зачем изобретать велосипед? Почему не использовать уже обкатанные варианты?
Все эти варианты хороши, выбирай на вкус, но все таки я попробую изобрести свой велосипед в этой области, к тому же это:
  1. бесценный опыт
  2. попробовать реализовать другой подход к решению задачи
  3. удовлетворить свое самолюбие
  4. ну и т.д.

Итак, мы приступаем…

Читать дальше
  • +4
  • 09 декабря 2015, 13:19
  • Helix
  • 1

Гальваническая развязка. Кто, если не оптрон?

// это копия статьи, размещенной вчера на geektimes.ru. Возможно это будет интересно и читателям электроникса.

Статья посвящена различным способам гальванической развязки цифровых сигналов. Кратко расскажу зачем оно нужно и как производители реализуют изоляционный барьер в современных интегральных микросхемах. Плюс бонус — гайд по гальванической развязке от SiLabs.


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

Асинхронное USB аудио на STM32

Для того, чтобы вывести звук из компьютера в микроконтроллер, у современного распространенного компьютера есть четыре подходящих интерфейса: Ethernet, Bluetooth, USB и S/PDIF. В МК, три из них требует использования внешнего железа (S/P DIF вход напрямую стал поддерживаться начиная с STM32F446), а Ethernet, кроме того — еще и специального драйвера на стороне компьютера. Поэтому выбор пал на USB.


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

Зарядное устройство для Li-ion на ТР4056

  Заказал на Ali лот из пяти модулей зарядных устройств на чипе TP4056 для Li-ion аккумуляторов (цена лота 68,70 руб, за модуль 13,74 руб, сентябрь 2015). Пришли на одной печатной плате, разделенные скрайбированием (надрезанием). На печатке логотип kvsun — китайский производитель широкого спектра зарядок Li-ion аккумуляторов различных типоразмеров и применений.



Статья в основном является компиляцией разрозненных данных интернета, с целью собрать все в одном месте.


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