Обновить
1
Евгений@EvgenySbl

Программист встраиваемых систем

18
Подписчики
Отправить сообщение

Продляем срок службы светодиодных ламп. Теория

Время на прочтение3 мин
Охват и читатели9.3K

Добрый день, уважаемые коллеги!

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

Итак. Имеем пару лампочек, которые перегорели. Посмотрим на них изнутри, и попробуем установить причину подобного эффекта. Для начала вскроем лампочку.

Читать далее

Метод синтеза синусоидальных колебаний, с применением цифрового колебательного контура

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели3.7K

Добрый вечер, уважаемые коллеги. Статья будет короткой и возможно натолкнет кого-то на реализацию. У меня получилось.

Недавно разрабатывал код, который рассчитывает значения sin(x), cos(x) и квадратного корня из x, на arm. По сути это была апроксимация рядом Тейлора. Но код написан на Assembler и выполнялся относительно быстро. Изначально предполагалось использовать его для своего станка. Немого позже задался вопросом одновременной генерации sin(x) и cos(x) как сигналов для свертки с исходным. Некоторые предлагали cordic, но я пошел другим путем.

Изначально, моделировал систему дифференциальных уравнений, использующих два умножения и разности для получения sin(x) / cos(x) на каждый, временной отсчет. Фактически, это отклик диффкренциального уравнения на дельта-функцию (единичный импульс) который запускает колебательный процесс. "Синусойды" получились не ортогональными при небольшом количестве отсчетов на период из-за неточности вычисления сдвига фазы. Однако, при использовании длительных последовательностей данный метод может заменить классические методы генерации sin(x)/cos(x) поскольку конечные разности становятся небольшими.

Кроме того на вход дифференциального уравнения можно подать сигнал, который будет раскачивать его как реальный контур. Например, у Вас возникнет желание свернуть сигнал с длинноволновыми последовательностями. В этом случае, можно, просчитывать каждый отсчет sin(x)/cos(x), а можно просто подать входной сигнал с АЦП на вход такого дифференциального уравнения и получить "синхронный интегратор", настроенный на определенную частоту.

Читать далее

Синус, косинус, квадратный корень FixedPoint

Время на прочтение3 мин
Охват и читатели5.1K

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

Имеется фрезерный станок ЧПУ. Было принято решение, переделать его систему управления, используя ядро Cortex M3. В общем и целом, существуют программные пакеты, позволяющие сделать это. Например GRBL. Однако, у меня своя специфика. Для реализации ПО, потребовались математические операции sin(x), cos(x), sqrt(x). И я задумался над их реализацией в формате фиксированной точки.

Читать далее

От логического элемента до телефона. Введение

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели3.5K

Эта статья, является первой статьей из курса по созданию телефона на элементной базе, приближенной к той, что используется производителями сотовых телефонов.Вместе с читателями, я пройду по каждому этапу проектирования, прототипирования, отладки, а если повезет, то и подготовки к производству, настоящего сотового телефона.На каждом этапе выполненной работы, я постараюсь объяснить как это было сделано, на таком уровне, чтобы это смог понять толковый студент первого курса технического ВУЗа. Или заинтересованный школьник старших классов. Не пугайтесь того, что в следующих нескольких предложениях, Вы скорее всего ничего не поймете. Их поймут те, кто давно работает в области телекома как разработчики и производители оборудования, но к концу курса, Вы будете знать все о чем я написал ниже.Вы узнаете как работает транзистор, логический элемент, как устроена цифровая схемотехника, вместе в Вами мы спроектируем процессор и не один, Вы узнаете о процессах происходящих в радиотехнических системах и таких понятиях как интерференция или феддинг в канале связи, что такое КСВ, и где применяют «балуны», как устроены рекурсивные цифровые фильтры, зачем нужен алгоритм cordic, что такое децимация и зачем она нужна, узнаем что такое BaseBand и как он связан с прямым цифровым синтезом и причем тут комплексные числа. Узнаем что такое доплеровский сдвиг, познакомимся с элементами теории вероятностей, и узнаем зачем нам знать о распределении релея‑джинса. Мы самостоятельно соберем компилятор, который собирает код всего что выполняется у Вас на компьютере, и сделаем это ни один раз, а потом при помощи такого компилятора произведем сборку операционной системы. Нам предстоит познакомиться со стандартами, за которые отвечает группа 3GPP. Вы узнаете про сложные виды модуляций, и нарезку данных применяемую в сотовых сетях, а так же как она соотноситься со служебными каналами связи. Вы спокойно будете оперировать терминами Paging, Location Area Update, или каналами RRC, LLC, узнаете что такое BCCH/BCH, для чего нужны Measurenment Report‑ы, и при каких условиях производятся измерения в каналах связи. Узнаете что такое Handover. Возможно, доберемся и до PSC, но только в теории, т.к. это уже 3G или 4G. Нам предстоит разработать или заимствовать и проверить, десятки, а может быть сотни тысяч строк кода стека GSM. И, надеюсь, мы вместе дойдем до конца проекта и выпустим ASIC. Но сначала попробуем использовать схему состоящую из CPU, FPGA, и, вероятно AD9361, или чего‑то подобного.

Читать далее

Оптимизированный доступ к GPIO и не только, часть вторая

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели7.2K

Уважаемые жители Habr‑а, В данной статье, речь пойдет о доступе к GPIO, и другим регистрам, используя C++.

Несколько лет назад, я подготовил статью, о том, как можно используя constexpr‑клаcсы, серьезно оптимизировать доступ к GPIO‑порту, таким образом, чтобы команда «PA0.set()» — превращалась в одну‑три ассемблерных инструкции, в зависимости от обстоятельств. Этот класс лишь выглядел обычным, который оптимизировался компилятором. Фактически, это была высокоуровневая оптимизация низкоуровневого кода. Теоретически возможно было перегрузить оператор равенства и писать просто PA0=1 или PA0=0, фактически это вызывало inline инструкцию, позволяющую добавить еще и барьерную инструкцию.

Больше года назад, я потерял доступ к аккаунту Habr, и не мог восстановить его. Однако, спустя некоторое время, эксперименты по оптимальному доступу к полям регистров продолжились. И это привело к использованию нехитрых конструкций, построенных на шаблонах. Сегодня, я расскажу к чему привели эти эксперименты.

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

Читать далее

Оптимизированный доступ к GPIO. Или GPIO как constexpr класс. С++

Время на прочтение4 мин
Охват и читатели7.6K

Добрый день, жители Хабра. Данный пост будет посвящен программированию на C++, и использованию constexpr объектов с целью повышения уровня удобства и одновременно оптимизации кода с точки зрения размера и производительности.

В процессе работы над одним из проектов, задумался: "нельзя ли сделать удобный доступ к GPIO портам на STM32, и при этом сделать его оптимальным по размеру кода и производительности". Что я хотел получить...

Читать далее

Полноценная GDB отладка через USB на плате BluePill (STM32F103С8T)

Время на прочтение5 мин
Охват и читатели17K

В данной статье речь пойдет о программировании и полноценной отладке микроконтроллера STM32F103C8T6 через USB.

Однажды, от коллег поступило предложение о участии в IoT проекте. Система предусматривала однопоточный запуск скриптов. Отладка производилась с помощью логов. И тут мне в голову пришла мысль о полноценной удаленной отладке проектов под микроконтроллеры.

Продолжение следует ...

Информация

В рейтинге
Не участвует
Откуда
Воронеж, Воронежская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Инженер встраиваемых систем, Архитектор программного обеспечения
Ведущий
От 250 000 ₽
C++
Программирование микроконтроллеров
Системное программирование
Прикладная математика
Разработка драйверов
Обратная разработка
Оптимизация кода
Разработка электроники
Схемотехника