Как стать автором
Обновить
-8
0

Пользователь

Отправить сообщение

Очередная статья: STM32 для начинающих

Время на прочтение10 мин
Количество просмотров23K
Всех приветствую!

Это моя первая статья на Хабре, поэтому прошу не кидаться тяжелыми предметами. Заранее спасибо.

Начнем с предыстории. Когда-то мне пришлось перейти на микроконтроллеры ARM фирмы ST. Это было связано с тем, что PIC и AVR уже не хватало и хотелось новых приключений. Из доступного в хлебобулочных магазинах и большого количества статей о «быстром старте» выбор пал именно на STM32F100.

Я привык работать в IAR. Да, есть другие IDE, но мне хватает возможности IAR: относительно удобный редактор, не плохой отладчик и достаточно удобно работать с регистрами во время отладки.

Когда я попытался сделать первый проект меня ждало разочарование — CMSIS! Кому как, но для меня это было (и остается) ужасом: много буков, длинные и для меня не понятные структуры. Вникать во все это было не интересно. Попытался скомпилировать пару примеров и понял — это не наш метод.
Читать дальше →
Всего голосов 22: ↑15 и ↓7+15
Комментарии49

Продолжение очередной статьи: STM32 для начинающих. Интерфейсы

Время на прочтение2 мин
Количество просмотров6.8K
Предыдущая публикация: «Очередная статья — STM32 для начинающих»

И как этим пользоваться?


В предыдущей статье создали класс для работы с портами ввода-вывода, проверили. И что дальше? Зачем это все запихивать в класс?

Возьмем для примера простенький опрос кнопок:


Для этой схемы в простейшем случае опрос будет выглядеть так:

int GetKey()
{
  volatile uint32_t* addr = reinterpret_cast<uint32_t*>(GPIOA_IDR);
  uint32_t ret_val = *addr;
  return ret_val & 0x0F;
}
Читать дальше →
Всего голосов 11: ↑8 и ↓3+11
Комментарии13

Исправление кратных ошибок при кодировании сообщений

Время на прочтение6 мин
Количество просмотров3.4K


В информационных системах обмен сообщениями в сетях связи или вычислительных сопровождается возмущающими воздействиями среды или нарушителя, что приводит к появлению искажений сигналов и к ошибкам в символах при цифровой передаче. Борьбу с этим явлением ведут, используя корректирующие коды. Ранее я описывал код Хемминга, и показал как исправляется одиночная ошибка в кодовом слове. Естественно возник вопрос и о ситуациях с большим количеством ошибок. Сегодня рассмотрим случай двух ошибок в кодовом слове (кратную ошибку). С одной стороны, все в теории более менее просто и понятно, но с другой — совершенно не очевидно. Изложение материала выполнено на основе работ Э. Берлекемпа.
Читать дальше →
Всего голосов 4: ↑4 и ↓0+4
Комментарии2

std::atomic. Модель памяти C++ в примерах

Время на прочтение11 мин
Количество просмотров113K

Для написания эффективных и корректных многопоточных приложений очень важно знать какие существуют механизмы синхронизации памяти между потоками исполнения, какие гарантии предоставляют элементы многопоточного программирования, такие как мьютекс, join потока и другие. Особенно это касается модели памяти C++, которая была создана сложной таковой, чтобы обеспечивать оптимальный многопоточный код под множество архитектур процессоров. Кстати, язык программирования Rust, будучи построенным на LLVM, использует модель памяти такую же, как в C++. Поэтому материал в этой статье будет полезен программистам на обоих языках. Но все примеры будут на языке C++. Я буду рассказывать про std::atomic, std::memory_order и на каких трех слонах стоят атомики.

Читать далее
Всего голосов 52: ↑52 и ↓0+52
Комментарии39

Акселерометр в системе ПИД-регулирования круиз-контроля автомобиля

Время на прочтение5 мин
Количество просмотров6.2K
Я эксплуатирую в общем-то довольно современный, напичканный электроникой американский автомобиль. Из того, что управляет движением, в нем есть электронная система стабилизации, ПБС с эмуляцией блокировки дифференциала, естественно АБС, и конечно же, круиз-контроль. Последний еще не адаптивный (то есть без функции поддержания дистанции до впереди идущего авто). В машине — электронная педаль газа (это принципиальный момент для данной статьи — позже объясню, почему).

Всем, кто хочет знать, чем не угодил круиз-контроль, и что предлагается улучшить — welcome под кат.
Читать дальше →
Всего голосов 6: ↑4 и ↓2+5
Комментарии70

Ethercat для начинающих

Время на прочтение12 мин
Количество просмотров43K

Некоторое время назад у нас появился объект, где в техническом задании стояло требование: «Протокол Ethercat». В процессе поиска информации я полез на хабр и с удивлением обнаружил, что там разбора этого протокола нет. Да и вообще информация о нем довольно фрагментирована (забегая вперед — я просто не там искал). Проект мы сделали, а эта статья — для «более молодого меня», попытка сэкономить время кому-нибудь еще, кто собирается использовать или просто интересуется этим протоколом.


Единственный нюанс — я опишу довольно низкий уровень работы протокола (Data Layer в терминологии EtherCAT). Потому что именно он нам понадобился и им мы ограничились. Неописанными (пока?) останутся Application Layer протоколы типа CanOPEN-over-EtherCAT (CoE).


Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии32

Совершенный цикл for

Время на прочтение6 мин
Количество просмотров53K

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


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


for (int i=0; i<size; i++) {
    [...]
}

Хотя почему не могу, очень даже могу:


find . \( -name \*.h -o -name \*.cpp \) -exec grep -H "for (" {} \; | wc -l
43641

Наш текущий проект содержит 43 тысячи циклов. Проект пилю не я один, но команда маленькая и проект у меня не первый (и, надеюсь, не последний), так что в качестве грубой оценки пойдёт. А насколько такая запись цикла for хороша? Ведь на самом деле, важно даже не то количество раз, когда я цикл написал, а то количество раз, когда я цикл прочитал (см. отладка и code review). А тут речь очевидно идёт уже о миллионах.


На КПДВ узел под названием «совершенная петля» (perfection loop).


image


Так каков он, совершенный цикл?

Читать дальше →
Всего голосов 67: ↑65 и ↓2+88
Комментарии172

Светодиод, таймер и прерывания на RISC-V с нуля (на примере GD32VF103 и IAR C++)

Время на прочтение41 мин
Количество просмотров26K


Сегодня речь пойдет о модном — о RISС-V микроконтроллере. Я давно хотел познакомиться с этим ядром и ждал когда появится что-то похожее на STM32 и вот дождался, встречайте — китайский GigaDevice — GD32V.


Инфраструктура для этого микроконтроллера не такая обширная как для STM32, но есть все необходимое для того, чтобы начать с ним работать. Благо отладочные платы можно заказать на аликекспресс, например, вот тут: Longan Nano GD32VF103CBT6 RISC-V MCU


Китайцы продвигают для этого микроконтроллера среду разработку Platform IO, которую можно поставить как расширение под Visual Studio Code. Но мы не будем её использовать, это ведь не по инженерным понятиям, мы же инженеры и хотим разобраться во всем сами. Поэтому давайте попробуем запустить плату на IAR, написав все с нуля.


Кстати, IAR раздает отладочный комплект (отладочная плата + отладчик I-Jet + 30 Дней полная лицензия) IAR RISC-V GD32V Evaluation kit. Вот тут можно оставить заявку Request for Development Tools. Не уверен, что они посылают комплект всем желающим, но мы получили в течение 5 дней. Спасибо им за это!


Ну что же, кто заинтересовался, добро пожаловать под кат

Читать дальше →
Всего голосов 49: ↑49 и ↓0+49
Комментарии31

Дуализм частица-волна: наглядно

Время на прочтение4 мин
Количество просмотров27K

«Если вам кажется, что вы понимаете квантовую теорию… то вы не понимаете квантовую теорию.» — Фейнман Р., лекции «Характер физических законов» (1964), гл. 6.


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

Всего голосов 13: ↑12 и ↓1+14
Комментарии86

Power-line communication. Часть 1 — Основы передачи данных по линиям электропередач

Время на прочтение9 мин
Количество просмотров34K
Не так давно передо мной встала нетривиальная задачка — собрать устройство, которое могло бы по линиям электропередач (0,4 кВ), в сетях обычных бытовых потребителей, передавать некоторую информацию, а точнее — показания электросчетчиков.



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

Дальнейший материал — это выжимка из профессионального опыта в том виде, в котором я бы хотел это рассказать самому себе из прошлого. Многие факты сильно упрощены для лучшей читаемости.
Читать дальше →
Всего голосов 38: ↑37 и ↓1+46
Комментарии50

Руководство Google по стилю в C++. Часть 2

Время на прочтение7 мин
Количество просмотров34K
Часть 1. Вступление
Часть 2. Заголовочные файлы
Часть 3. Область видимости



Все мы при написании кода пользуемся правилами оформления кода. Иногда изобретаются свои правила, в других случаях используются готовые стайлгайды. Хотя все C++ программисты читают на английском легче, чем на родном, приятнее иметь руководство на последнем.
Эта статья является переводом части руководства Google по стилю в C++ на русский язык.
Исходная статья (fork на github), обновляемый перевод.
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии21

Операционные усилители: 10 схем на (почти) все случаи жизни

Время на прочтение15 мин
Количество просмотров469K
Всем привет!

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


Читать дальше →
Всего голосов 102: ↑100 и ↓2+135
Комментарии54

Настройка ПИД-регуляторов: так ли страшен черт, как его малюют? Часть 3. Response Optimizer

Время на прочтение4 мин
Количество просмотров3.9K


В данной статье рассмотрим процесс настройки регулятора нелинейной модели электропривода с помощью инструмента Response Optimizer.

Читать дальше →
Всего голосов 4: ↑3 и ↓1+5
Комментарии1

SamsPcbCalc, часть 1: Волновое сопротивление микрополосковой линии, Гарольд Уилер и Эрик Богатин

Время на прочтение6 мин
Количество просмотров9.4K
Сейчас занимаюсь разработкой калькулятора для печатных плат и изучаю расчетные модели, которые стоят за табличными формулами. Добрался до волнового сопротивления микрополосковой линии и решил рассказать про модель Гарольда Уилера и то, как его Эрик Богатин недооценил, а оказалось, что у меня тут публикаций на тему волнового сопротивления вообще не было, поэтому сначала немного теории, а потом к восстановлению справедливости.
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии11

Издатель/подписчик для распределённых отказоустойчивых бортовых систем реального времени в 1500 строк кода

Время на прочтение31 мин
Количество просмотров16K

Сап, котятки.


Я пришёл рассказать о проекте UAVCAN — новом сетевом стандарте для организации взаимодействия узлов и компонентов современных транспортных средств с высоким уровнем автономности/автоматизации. Название является акронимом от Uncomplicated Application-level Vehicular Computing And Networking (несложные бортовые сети и коммуникации уровня приложения).


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



Конъюнктура


Первый блин проекта был заложен в 2014-м. С самого начала это был эксперимент в минимализме: возможно ли в разработке сложных распределённых бортовых систем опираться на мощные абстракции, избегая при этом роста сложности реализации и связанных с ним трудностей валидации и верификации.


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

Ну и что?
Всего голосов 21: ↑21 и ↓0+21
Комментарии17

Где прячется Российская электроника

Время на прочтение2 мин
Количество просмотров69K
Каждый раз, когда я пишу о российской электронике, в комментариях появляется множество людей, совершенно уверенных, что российской электроники не существует, и всё, что могут делать отечественные компании — это приклеивать наклейки «Сделано в России» на китайские устройства.

Читать дальше →
Всего голосов 118: ↑105 и ↓13+129
Комментарии235

Что такое тензорные ядра: вычисления со смешанной точностью

Время на прочтение10 мин
Количество просмотров67K
image

В течение последних трёх лет Nvidia создавала графические чипы, в которых помимо обычных ядер, используемых для шейдеров, устанавливались дополнительные. Эти ядра, называемые тензорными, уже есть в тысячах настольных PC, ноутбуков, рабочих станций и дата-центров по всему миру. Но что же они делают и для чего применяются? Нужны ли они вообще в графических картах?

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

Краткий урок математики


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

Иногда эти числа необходимо группировать, потому что они обладают определённым значением друг для друга. Например, когда чип обрабатывает данные для рендеринга графики, он может иметь дело с отдельными целочисленными значениями (допустим, +2 или +115) в качестве коэффициента масштабирования или с группой чисел с плавающей точкой (+0.1, -0.5, +0.6) в качестве координат точки в 3D-пространстве. Во втором случае для позиции точки требуются все три элемента данных.

Тензор — это математический объект, описывающий соотношения между другими математическими объектами, связанными друг с другом. Обычно они отображаются в виде массива чисел, размерность которого показана ниже.
Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Комментарии26

Как начать путь к работе по проектированию электроники FPGA космического корабля Blue Origin

Время на прочтение6 мин
Количество просмотров10K


Вы хотите узнать, как получить работу по проектированию электроники космического корабля? Мне надавно пришло предложение поинтервьироваться на позицию FPGA designer для Blue Origin (см. выше). Лично мне такая позиция не нужна (у меня уже есть позиция ASIC designer-а в другой компании), но я отметил, что технические требования к претендентам в Blue Origin точно совпадают с содержанием семинара для школьников и младших студентов, который пройдет 15-17 сентября на выставке ChipEXPO в Сколково, с поддержкой от РОСНАНО. Хотя разумеется на семинаре мы коснемся технологий Verilog и FPGA только на самом начальном уровне: базовые концепции и простые, но уже интересные, примеры. Чтобы устроится после этого в Blue Origin, вам все-же потребуется несколько лет учебы и работы.

Из-за короновируса семинар будет удаленный, поэтому принять участие смогут не только школьники и студенты Москвы, но и всей России, Украины, Казахстана, Калифорнии и других стран и регионов. Физически проводить лекции и удаленно помогать участникам будут преподаватели и инженеры МИЭТ, ВШЭ МИЭМ, МФТИ, Черниговского Политеха, Самарского университета, IVA Technologies и fpga-systems.ru.

Для участия сначала, еще до семинара, нужно пройти три части теоретического курса от РОСНАНО, под общим названием «Как работают создатели умных наночипов»: «От транзистора до микросхемы», «Логическая сторона цифровой схемотехники», «Физическая сторона цифровой схемотехники». Этот курс необходим, чтобы вы понимали, что вы делаете, по время практического семинара. По получению сертификата окончания теоретического онлайн-курса, вы можете зайти в офис РОСНАНО в Москве и получить бесплатную плату для практического семинара (если они останутся, преимущество имеют школьники). С этой платой вы можете работать дома, до, во время и после семинара в Сколково.

Как получить плату, подготовится к семинару и что на нем будет:
Всего голосов 28: ↑24 и ↓4+28
Комментарии22

Как люди теряют энергию, которую сами же и создают. Пример Норильска

Время на прочтение4 мин
Количество просмотров20K


Был обычный жаркий летний день. Таких много бывает, когда ты работаешь, и почему-то крайне мало, когда у тебя выходной. Карантин в Научно-исследовательском институте Тепла и Холода (НИИТиХо) впал в Z состояние. Основной инженерский состав уже давно работал на местах, только ITшники, по большей части, работали удаленно. Инженер Самсонов вяло ковырял отвёрткой в какой-то древней печатной плате, пытаясь её то ли оживить, то ли окончательно угробить. Обед закончился час назад, а до конца рабочего дня было еще бесконечно долго.

Вдруг мимо него пробежала группа встревоженных лаборанток и, возмущенно восклицая, исчезла за углом коридора. Сонное настроение вмиг слетело с товарища Самсонова. Он бодро покрутил головой по сторонам и заметил таких же просыпающихся, как грибы после грибного дождя, инженеров. По помещению потекли тихие вопросительные разговоры. Никто не знал, что происходит.
Читать дальше →
Всего голосов 37: ↑23 и ↓14+20
Комментарии21

Хайвей для процессоров — видео с завода Intel

Время на прочтение1 мин
Количество просмотров5.1K


В качестве пятничного поста предлагаем вашему вниманию короткий видеоклип, снятый на заводе Intel в Хиллсборо, штат Орегон. На видео показана автоматическая линия доставки материалов (automated material-handling system, AMHS), перемещающая по территории фабрики главный производственный объект — кремниевые подложки, заготовки для будущих чипов Intel. Под катом — завораживающее футуристичное видео, а также цифры и факты, описывающие систему доставки.
Всего голосов 15: ↑15 и ↓0+15
Комментарии1

Информация

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