Search
Write a publication
Pull to refresh
5
0.2
Юрай Нескажу @juray

Технарь широкого профиля

Send message

Трактат о Pinе. Мысли о настройке и работе с пинами на С++ для микроконтроллеров (на примере CortexM)

Reading time15 min
Views9K

Последнее время я сильно увлекся вопросом надежности софта для микроконтроллеров, 0xd34df00d посоветовал мне сильнодействующие препараты, но к сожалению руки пока не дошли до изучения Haskell и Ivory для микроконтроллеров, да и вообще до совершенно новых подходов к разработке ПО отличных от ООП. Я лишь начал очень медленно вкуривать функциональное программирование и формальные методы.


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


Продолжу развивать тему о встроенном софте для небольших микроконтроллеров в устройствах для safety critical систем.


На этот раз попробую предложить способ работы с конкретными ножками микроконтроллера, используя обертку над регистрами, которую я описал в прошлой статье Безопасный доступ к полям регистров на С++ без ущерба эффективности (на примере CortexM)


Чтобы было общее представление того о чем я хочу рассказать, приведу небольшой кусок кода:


using Led1Pin = Pin<Port<GPIOA>, 5U, PinWriteableConfigurable> ;
using Led2Pin = Pin<Port<GPIOC>, 5U, PinWriteableConfigurable> ;
using Led3Pin = Pin<Port<GPIOC>, 8U, PinWriteable> ;
using Led4Pin = Pin<Port<GPIOC>, 9U, PinWriteable> ;
using ButtonPin = Pin<Port<GPIOC>, 10U, PinReadable> ;

//Этот вызов развернется в  2 строчки
// GPIOA::BSRR::Set(32) ; // reinterpret_cast<volataile uint32_t *>(0x40020018) = 32U 
// GPIOС::BSRR::Set(800) ; // reinterpret_cast<volataile uint32_t *>(0x40020818) = 800U 
 PinsPack<Led1Pin, Led2Pin, Led3Pin, Led4Pin>::Set() ; 

//Ошибка компиляции, вывод к которому подключена кнопка настроен только на вход
ButtonPin::Set() 

auto res = ButtonPin::Get() ; 
Читать дальше →

Android для радиоинженера (часть вторая)

Reading time5 min
Views10K
В первой части я немного рассказал о приложении RF & Microwave Toolbox. Во второй части расскажу о не менее интересном приложении, которое позволяет проектировать СВЧ устройства (преимущественно, планарные) на смартфоне/планшете под управлением ОС Android. Если вам интересно, то добро пожаловать под кат…



Время первых. История, как мы внедряли Scratch как язык программирования роботов

Reading time3 min
Views5.1K
Смотря на текущее разнообразие образовательной робототехники радуешься, что детям доступно огромное количество конструкторов, готовых изделий и что планка «входа» в основы программирования опустилась достаточно низко (вплоть до детского сада). Массово идет тенденция приобщения сначала к модульно-блочному программированию с переходом затем на более продвинутые языки. Но такая ситуация была не всегда.



2009-2010 года. Россия начала массово знакомиться с Arduino и Scratch. Доступная электроника и программирование начинают завоевывать умы как энтузиастов, так и преподавателей и идея все это соединить уже вовсю витала (а частично была реализована) в мировом инфопространстве.
Читать дальше →

Неубиваемый, ручной, самодельный фонарик

Reading time4 min
Views51K

Предисловие


Увлекся я ночными играми, а именно Encounter. Она объединяет много жанров(видов), но самые распространенные в нашем городе были точки и схватки. А это значило, что часто приходилось находиться в темное время суток в самых различных местах (от сточных труб и подвалов до заброшенных заводов и цехов). Часто приходилось быть на высоте или по колено в воде.



И было крайне досадно в самый ответственный момент лишиться одного из самых важных вещей в игре, лишиться того лучика света, который помогал тебе во тьме ночной искать заветные коды и метки. Я говорю о фонарике. За то время, что я играю, из жизни ушел не один светящийся друг, по самым разным причинам (made is China что Вы хотели): разбивались при падении, топились, на морозе не выдерживал пластик и т.д. А был случай, что фонарик умер из-за того, что я не правильно его заряжал (спасибо производителю, который написал к фонарику не правильную инструкцию). Плюс девайсы за 300-400 рублей, не отличались высокими показателями, что тоже не радовало: светили не более 200 Lm и холодным, отдающим синевой, светом. Разоряться на бренды было не охота, да и покупать китайские аналоги из-за границы, тоже не хотелось (знаю я нашу Почту России, сталкивался). В общем загорелся я желанием сделать себе товарища с CREE самому. И тут понеслось!
Читать дальше →

Гигатрон — самодельный микрокомпьютер без процессора

Reading time3 min
Views49K


Микрокомпьютер Gigatron — это минималистичный 8-битный ретро-компьютер построенный по необычному дизайну: в нём нет никаких сложных логических интегральных схем, нет даже микропроцессора! Его CPU построен на классических логических элементах серии 7400, также известных как микросхемы на ТТЛ-логике. По сути все элементы компьютера разом и есть процессор. Эти простые чипы не только формируют CPU, но ещё и выполняют все задачи, которые обычно требуют дополнительной периферии. Несмотря на простую и компактную конструкцию, Gigatron работает как 8-битный одноплатный микрокомпьютер, на котором можно играть в видеоигры.

Гигатрон — хобби-проект Уолтера Белгера, хакера, специалиста по информационной безопасности и ныне директора по информационной безопасности компании Philips. В этот понедельник 9 сентября Уолтер приезжает в наш Хакспейс, где будет рассказывать об устройстве Гигатрона, истории создания проекта и покажет его живьем.

Под катом подробнее про Гигатрон и анонс встречи с создателем в Москве.

Темная сторона Google Chrome

Reading time8 min
Views66K


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


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

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

Душевный Mikrotik против бездушного РКН и такого же провайдера

Reading time3 min
Views88K
Статья описывает способ получения доступа к ресурсам ошибочно попавшим под раздачу плюшек Роскомнадзором (далее РКН). Именно ошибочно попавшим. Мы законопослушные граждане и не ходим туда куда нам запрещают наши госорганы. Так что если вдруг вы решите воспользоваться способом для того что бы пойти на какие то “законно” заблокированные ресурсы, суровый меч правосудия возможно взметнется над вашей головой и я в этом не виноват, поскольку вот прямо сейчас я вас предупредил!
Читать дальше →

Спорт для программиста второй свежести

Reading time14 min
Views25K
Около 30 лет назад я написал свою первую программу. Примерно тогда же впервые взял в руки штангу. Около 30 дней назад были приобретены PlayStation и PS VR.



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

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

Почему вместо четырёхдневной рабочей недели лучше подумать о шестичасовом рабочем дне

Reading time8 min
Views31K
Разговор о сокращении продолжительности рабочей недели очень своевременный, но в нынешней форме — совершенно бессмысленный в силу своей хаотичности, потому что люди бросились обсуждать высочайшую инициативу Дмитрия Медведева о возможном введении четырёхдневной рабочей недели, не определившись с базовыми вещами: приоритетами и целями. Ну и разобравшись по пути с некоторыми мифами и заблуждениями.

Фактически, в России сорокачасовой рабочей недели уже давно нет — чтобы в этом убедиться, достаточно посчитать, сколько на самом деле у нас рабочих дней. В невисокосном году 52 недели + 1 день. При пятидневке это должно означать 260 или 261 рабочий день. Но из-за дополнительных праздничных выходных в 2019 году в России будет всего 247 рабочих дней. За вычетом также 28 календарных дней (то есть, четырёх недель или двадцати рабочих дней) отпуска остаётся 227 рабочих дней в течение 48 недель — то есть, средняя рабочая неделя в России уже не пятидневная, а 4,73-дневная — или 38-часовая вместо 40-часовой.

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

image

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

Reading time3 min
Views133K
Хабр, привет!

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

Приступим!

Учить лексику


Плагины, мобильные приложения и сайты, которые помогут перевести и запомнить незнакомые термины с русского на английский и обратно.

ЛеоПереводчик

С этим плагином удобно переписываться с коллегами. Он автоматически переводит непонятные слова и выражения. Незаменимый инструмент, когда нет времени на доскональные переводы и нужен срочный ответ.
Читать дальше →

Building a Bare-Metal Application on Intel Cyclone V for Absolute Beginners

Reading time7 min
Views9.5K
Setting up Linux on the development board like SocKit with a double-core ARM Cortex A9 is not rocket science. A manufacturer of the board supports the ready-to-use image, appropriate for installing on SD card or another media. But what if you are craving to touch bare metal, approaching a neck-breaking speed of code not restrained by an OS core? Well, it is possible, but not so easy and obvious. In this short essay, I'll give you step-by-step instruction, how to build and run you first bare-metal application on Cyclone V SoC, that uses ARM Cortex A9 core of the HPS subsystem of the SoC.

You need to have the development board with Intel (Altera) Cyclone V SoC. I used SoCKit board:


Ready? Let's go!

Библиотека Symbols GOST для DipTrace

Reading time2 min
Views18K
Ниже на скрине представлена часть символов библиотеки. В общей сложности библиотека содержит около трехсот УГО выполненных по стандартам ГОСТ (ЕСКД).



Библиотека разрабатывается и поддерживается мной. Все предложения, пожелания по добавлению символов (УГО) или компонентов, а также разработке посадочных мест, прошу оставлять тут в комментариях.
Читать дальше →

Контактная сварка для аккумуляторов 18650

Reading time5 min
Views99K
Небольшая статья про самостоятельное изготовление аппарата для контактной сварки аккумуляторов (18650 и аналогичных). С помощью подобного устройства можно в домашних условиях и из подручных материалов сваривать и ремонтировать аккумуляторные батареи и сборки. Дешево, сердито и доступно каждому.


Ферроэлектрическая (сегнетоэлектрическая) память и электронные чернила — идеальное сочетание для батарейного питания

Reading time7 min
Views16K
Когда Texas Instruments оснастил свою знаменитую низким энергопотреблением серию MSP430 ферроэлектрической памятью, работать с ней стало еще легче и приятней, ведь такая память совмещает преимущества флэша и оперативной памяти. А новые лончпады с сегментным индикатором — просто готовая платформа для какой нибудь домашней автоматизации. А что если нужен графический дисплей? Тут на помощь приходят электронные чернила, ведь они потребляют энергию только при обновлении и способны годами радовать красивой контрастной картинкой, питаясь от одного комплекта батарей. Если вам интересен опыт программирования подобного устройства — добро пожаловать под кат. Я расскажу о том, что такое ферроэлектрическая память, и зачем она нужна, как добиться максимально низкого энергопотребления и получить красивую картинку на электронной бумаге и при этом воспользоваться на техасе кодом, написанным под ардуино.


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

Измерим гармонию — анализатор звукового спектра на STM32L4 Discovery

Reading time7 min
Views17K
В предыдущей публикации мы подключали дешевый китайский LCD экран к плате STM32L4 Discovery. Теперь мы попробуем реализовать на этой комбинации что-то выходящее за рамки традиционного моргания светодиодом, а именно анализатор звукового спектра, который использует имеющийся на плате микрофон. Заодно я расскажу, как пользоваться операционной системой FreeRTOS, и зачем она нужна, а также почему в нотной октаве 12 нот, и чем 53 ноты лучше, чем 12.



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

Использование mbed кода в собственном проекте на STM32 — опыт разгона китайского LCD

Reading time6 min
Views14K
Иногда чужой код очень помогает в деле подключения к микроконтроллеру периферийного железа. К сожалению, адаптировать чужой код к своему проекту бывает сложнее, чем переписать его самому, особенно если речь идет о мега фреймворках вроде arduino или mbed. Желая подключить китайский LCD на базе ILI9341 к плате STM32L476G DISCOVERY, автор задался целью воспользоваться в демо-проекте от ST драйвером, написанным для mbed, не изменив ни строчки в его коде. В результате удалось заодно разогнать экран до невиданных скоростей обновления в 27 fps.



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

Надежное хранение и обновление данных во флэш памяти микроконтроллеров STM32 и MSP430

Reading time8 min
Views28K
Часто возникает задача сохранить изменяемые данные, например конфигурацию, во флэш памяти микроконтроллера. Решение кажется простым, однако обеспечить надежность обновления данных при условии, что питание может отключиться в любой момент, оказывается весьма нетривиально, и даже использование контрольных сумм не решает проблему полностью. Из этой статьи вы узнаете
  • как устроена флэш память
  • к каким проблемам приводит выключение питания в момент записи или стирания
  • как эти проблемы решаются

Для желающих применить на практике — работающий код под STM32F4
Читать дальше →

Доработка USB-стека в микроконтроллерах STM32 и TivaC

Reading time5 min
Views31K
Наличие USB порта в современных микроконтроллерах открывает широкие возможности для самостоятельного изготовления разнообразных управляемых с компьютера устройств. На практике, однако, выясняется, что поставляемые производителем библиотеки для работы с USB нуждаются в доработке. Если вам интересен опыт подобной доработки для двух популярных семейств МК — добро пожаловать под кат.
Читать дальше →

Осваиваем CC430 — микроконтроллеры с радиомодулем: фотофиниш своими руками

Reading time4 min
Views25K
Серия микроконтроллеров Texas Instruments CC430 — это MSP430 со встроенным радио модулем. В отечественных интернет-магазинах можно купить модули TE-CC430F51-433, содержащие на крошечной плате такой микроконтроллер с кварцем и кучкой других полезных деталей, по вполне демократичной цене. В этой статье я расскажу о построении на базе таких модулей фотофиниша — устройства весьма полезного для любителей спортивных состязаний. На нем естественно потенциальная сфера применения не ограничивается. Наличие 12 битного АЦП, аппаратного умножителя и другой периферии открывает широкий простор для применений, требующих передачи данных на расстояние до нескольких сотен метров.
Читать дальше →

Микро БД для конфигурации на микроконтроллере

Reading time6 min
Views20K
Многие разработчики программ для микроконтроллеров сталкивались с проблемой хранения конфигурационных данных. Это могут быть калибровочные коэффициенты измерительного алгоритма или просто последний выбранный пользователем пункт меню. Для микроконтроллера, имеющего возможность записывать в собственную flash-память, решение кажется простым — стираем сегмент и пишем туда все, что нужно. Однако, если необходимо еще и обеспечить отказоустойчивость по отношению к выключению питания в произвольный момент, задача становится нетривиальной, — по сути необходимо реализовать маленькую базу данных с механизмом обеспечения атомарности операций записи и восстановлением после сбоев. Решение этой задачи для микроконтроллеров семейства MSP430 — под катом. По количеству используемых ресурсов оно подходит даже для самых младших членов этого семейства — с размером RAM от 256 байт и falsh-памяти от 8Kb. В качестве бонуса — интерфейс командной строки (через UART) для чтения и записи конфигурации.
Читать дальше →

Information

Rating
4,457-th
Location
Ростов-на-Дону, Ростовская обл., Россия
Date of birth
Registered
Activity