"Надо написать прошивку - спиннер"

Пролог
В этом тексте я произвел обзор микросхемы DRV8870.
"Надо написать прошивку - спиннер"

Пролог
В этом тексте я произвел обзор микросхемы DRV8870.
Чего только не бывает на поприще разработки электроники. Кто бы мог подумать, что таймер может быть микрофоном. Однако это в какой-то степени так.
В разработке электроники в состав которой входит звуко излучатель порой нужно делать бинарный тест на наличие звука. В этом тексте я покажу один из самых простых способов проделать такой тест.
Постановка задачи
Требуется определить факт наличия звука в проводе микрофона. Не нужно определять частоту, не нужно определять спектр. Не нужно распознавать сигнал. Надо просто сказать есть звук или нет звука.
Каков план?

В комментариях к недавней статье оказалось что, во-первых, этот вопрос кому-то да и интересен, и, во-вторых, существует некоторое количество заблуждений на эту тему.
Вводные: нам нужен таймер, на Windows, с точностью порядка 1мс, драйвер при этом мы писать не хотим и решения при исполнении которых процессор попытается радикально ускорить глобальное потепление не приемлем.
Доброго времени суток. В этом посте я расскажу, как мне удалось заставить STM32F407VET6 измерять аналоговые сигналы в указанные моменты времени с помощью DMA.
Главной моей причиной измерять сигналы в точное время была необходимость измерять токи, протекающие в шунтах контроллера трехфазного BLDC мотора.
Для упрощения и ограничения задачи условимся, что
мы знаем точные моменты времени, когда необходимо измерять сигнал;
из предыдущего пункта также ясно, сколько измерений должно быть произведено;
разница по времени между двумя последовательными измерениями может быть любой;
В ходе разработки одного очень интересного устройства (эх, лишь бы силенок хватило) я решил, что будет неплохо, если устройство это будет говорящим. Как нельзя кстати здесь пригодилось наличие в целевом микроконтроллере, ESP32 компании Espressif Systems, двухканального 8-битного ЦАПа.
В этом туториале (если его можно так назвать) я покажу, как можно быстро и довольно просто организовать проигрывание аудиофайла силами микроконтроллера ESP32.
Читать полностью »
Предположим, у нас есть несколько мониторов. И нам захотелось использовать эти мониторы в качестве гирлянды. Например, заставить их моргать одновременно. Или, может быть, синхронно менять цвет согласно какому-то умному алгоритму. И что, если сделать это в браузере – ведь тогда можно будет подключить к этому и смартфоны, и планшеты. Всё что есть под рукой.

И, раз уж мы используем браузер, можно добавить ещё и звуковое оформление. Ведь если достаточно точно синхронизировать устройства по времени, то можно воспроизводить звуки на каждом так, будто звучит одна многоканальная система.

Мигание светодиода в Ардуино, что может быть проще и бесполезнее. На самом деле практическую пользу от этой простой функции можно найти.
Бывает при программирование какого-нибудь устройства не хватает портов ввода-вывода микроконтроллера. Или из экономических соображений, а может нехватки места в корпусе, не хочется устанавливать дисплей, а как то сигнализировать о режимах работы устройства очень хотелось бы. Часто достаточно сигнализировать о этих режимах горением или миганием светодиода. А если режимов много?
Читать полностью »
… отчет формировался долго. Песочные часы и синяя полоска клонили в сон. Вначале он хотел обезьянку, которая лезет по лестнице, потом градусник, но в итоге остался таймер и счетчик. Глупая улыбка и добрый, сочувствующий, взгляд делают чудеса.
В процессе разработки форм для отчетности, пользователь захотел видеть процесс загрузки данных из базы. Он хотел, чтобы после нажатия кнопки включался секундомер, а по мере получения строк, их количество отображалось на форме.Реализовать это надо было в рамках существующего проекта на ASP.NET.
Читать полностью »
Пост про эрланг, но применим и ко всем другим языкам.
Пускай мы хотим раз в секунду что-то сделать, например проверить наличие файлика по HTTP урлу. Процесс для этого мы стартовали, надо что бы он что-то делал достаточно регулярно.
В erlang есть три интересующих нас функции: timer:send_interval, timer:send_after и erlang:send_after.
Сначала объясню, почему нельзя пользоваться send_interval.