Pull to refresh
33
0

никто

Send message

И снова про VGA

Level of difficulty Medium
Reading time 9 min
Views 23K

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

Читать далее
Total votes 134: ↑133 and ↓1 +132
Comments 39

Простой испытатель ферритов

Reading time 7 min
Views 17K

Реалии нашей жизни поменялись. Если раньше мы шли в магазин и покупали нужное ферритовое кольцо для трансформатора, то теперь порой приходится довольствоваться тем, что удалось найти. В ящике стола, в лампочке-экономке из ближайшей мусорки, у китайцев на Алиэкспрессе... Зачастую без маркировки, тип которого известен лишь приблизительно. И вопросы, вопросы... Действительно ли из Китая выслали то, что просили? Подойдет ли для двухтактного трансформатора это зеленое кольцо? А что будет, если намотать трансформатор на феррите с мю 10000? Каким выбрать число витков на вольт, когда формула из статьи в журнале "Радио" дает 0,4 витка на вольт, а популярная программа -- 1,2 витка?

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

Читать далее
Total votes 102: ↑102 and ↓0 +102
Comments 33

A fistful of relays. Часть 4. Система команд или что можно уместить в 8 машинных инструкций?

Reading time 4 min
Views 7.7K

Наконец-то можно запустить в моём компьютере на электромагнитных реле программу длиннее одной инструкции. Сейчас в нём есть ПЗУ на 8 команд, процессор с АЛУ и 8 восьмибитных регистров (один из которых PC).

Всего процессор поддерживает 5 групп инструкций: Арифметико-логические операции (ALU), Загрузка числа в регистр (MOVI), пересылка между регистрами (MOV), Остановка работы (HALT), Работа с памятью (LDST). Но есть нюансы…
Total votes 31: ↑31 and ↓0 +31
Comments 12

Что нужно знать про арифметику с плавающей запятой

Reading time 14 min
Views 931K


В далекие времена, для IT-индустрии это 70-е годы прошлого века, ученые-математики (так раньше назывались программисты) сражались как Дон-Кихоты в неравном бою с компьютерами, которые тогда были размером с маленькие ветряные мельницы. Задачи ставились серьезные: поиск вражеских подлодок в океане по снимкам с орбиты, расчет баллистики ракет дальнего действия, и прочее. Для их решения компьютер должен оперировать действительными числами, которых, как известно, континуум, тогда как память конечна. Поэтому приходится отображать этот континуум на конечное множество нулей и единиц. В поисках компромисса между скоростью, размером и точностью представления ученые предложили числа с плавающей запятой (или плавающей точкой, если по-буржуйски).

Арифметика с плавающей запятой почему-то считается экзотической областью компьютерных наук, учитывая, что соответствующие типы данных присутствуют в каждом языке программирования. Я сам, если честно, никогда не придавал особого значения компьютерной арифметике, пока решая одну и ту же задачу на CPU и GPU получил разный результат. Оказалось, что в потайных углах этой области скрываются очень любопытные и странные явления: некоммутативность и неассоциативность арифметических операций, ноль со знаком, разность неравных чисел дает ноль, и прочее. Корни этого айсберга уходят глубоко в математику, а я под катом постараюсь обрисовать лишь то, что лежит на поверхности.
Читать дальше →
Total votes 245: ↑242 and ↓3 +239
Comments 75

Создаем свой собственный язык программирования с использованием LLVM. Часть 1: Лексический и синтаксический анализ

Reading time 36 min
Views 22K

Это первая статья из цикла о том, как создать свой собственный ООП язык программирования с использованием LLVM.

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

Читать далее
Total votes 52: ↑50 and ↓2 +48
Comments 16

Что убивает кальциевые аккумуляторы, и убивает ли?

Reading time 11 min
Views 81K

В Сети полно негативных отзывов на кальциевые аккумуляторы, которые служат недолго, не заряжаются, не держат заряд, замерзает электролит. Популярны мифы о том, что они боятся «кипячения» при 16 и более вольтах, а ещё боятся разрядов, стремительно теряя ёмкость с каждым из них, будто бы, вследствие формирования слоя гипса — нерастворимого сульфата кальция, и вообще, стартерный аккумулятор, в отличие от тягового, для разряда не предназначен, разве только секунду покрутить стартер. Что, если взять реальный аккумулятор и проверить?

Будут видео и опыты с показаниями приборов. Попутно выясним, что такое мнимый или поверхностный заряд. И возможно, мы уже не раз сдавали в утиль хороший исправный аккумулятор. Что же с ним можно было сделать?
Total votes 62: ↑58 and ↓4 +54
Comments 29

Блок управления предпусковым подогревателем Webasto (Arduino + Webasto = Ardubasto)

Reading time 2 min
Views 39K
Установили мне на авто пред пусковой подогреватель Webasto. После установки выяснилось, что управление им осуществляется не дискретным сигналом (как на предыдущем моем авто), а только по цифровой шине W-bus. Шина W-bus по электрическим параметрам является аналогом шины K-line и для нее есть интегральный конвертер K-line – RS232TTL — это микросхема L9637D. На этой микросхеме, на основе Arduino и решено было сделать управление подогревателем. Задача осложнялась тем, что Arduino поддерживает только протокол передачи по последовательному порту без контроля четности, а протокол W-bus работает с настройками порта 2400/8-E-1. Для обхода этого были сняты осциллограммы команды запуска Webasto и команды к Webasto реализованы тайминговыми задержками.
Читать дальше →
Total votes 11: ↑8 and ↓3 +5
Comments 8

Библиотека генератора ассемблерного кода для микроконтроллеров AVR. Часть 2

Reading time 8 min
Views 5.7K

← Часть 1. Первое знакомство


Часть 3. Косвенная адресация и управление потоком исполнения →


Библиотека генератора ассемблерного кода для микроконтроллеров AVR


Часть 2. Начало работы


Как и планировалось, в этой части рассмотрим более подробно особенности программирования с использованием библиотеки NanoRTOS. Те, кто начал чтение с этого поста, могут ознакомиться с общим описанием и возможностями библиотеки в предыдущей статье. В силу ограниченности планируемого объема публикации предполагается, что уважаемый читатель хотя бы в минимальном объеме знаком с программированием на C#, а так же имеет представление об архитектуре и программировании на языке ассемблер для контроллеров AVR серии Mega.

Читать дальше →
Total votes 19: ↑17 and ↓2 +15
Comments 5

Ввод данных в STM32F4xx с параллельного АЦП через DCMI

Reading time 8 min
Views 14K

Известно, что семейство микроконтроллеров STM32F4xx, имея на борту достаточно производительные ядра, вполне подходящие для «не мясорубочных» задач ЦОС не имеют полноценного интерфейса ввода данных с простейшей параллельной шины в режиме «pipe-line» (clk-data). «Покурив» «dm00037051.pdf», нашел не специфичный, но на первый взгляд подходящий вариант – интерфейс DCMI (Digital camera interface).

Конечно, использование для нагруженной классической ЦОС (КИХ, БИХ, FFT) микроконтроллеров STM32, не совсем является оптимальным вариантом, но если вдруг так легли карты и все-таки возможностей данного микроконтроллера вполне достаточно, плюс нужно достаточное количество низкоскоростных интерфейсов. Об этом под катом.



Читать дальше
Total votes 17: ↑17 and ↓0 +17
Comments 4

Специалист-экспресс

Reading time 10 min
Views 133K
Вы помните свой первый компьютер? Я помню. Это был ZX совместимый ПК Спектр. Это было в 89 году. Не знаю точно, купил тогда его отец или поменял на что-то, но в доме появился ПК, и все началось. Именно на нем я написал свои первые программы и освоил Бейсик. Потом, когда я был в 7-9 классах, были еще ПК-01 Львов и Вектор 06Ц.
Читать дальше →
Total votes 136: ↑133 and ↓3 +130
Comments 92

Программатор для EPROM на Arduino

Reading time 3 min
Views 36K

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

Читать дальше →
Total votes 46: ↑43 and ↓3 +40
Comments 5

Отладка микроконтроллеров ARM Cortex-M по UART Часть 2

Reading time 6 min
Views 6.9K
В прошлой статье я рассказывал про прерывание DebugMon и регистры с ним связанные.

В этой статье будем писать реализацию отладчика по UART.
Читать дальше →
Total votes 17: ↑16 and ↓1 +15
Comments 24

Отладка микроконтроллеров ARM Cortex-M по UART

Reading time 2 min
Views 14K
В данной статье я расскажу вам как можно использовать регистры отладки и breakpoint'ов в микроконтроллерах, построенных на ядрах ARM Cortex-M
Читать дальше →
Total votes 34: ↑33 and ↓1 +32
Comments 17

Разбираемся в особенностях графической подсистемы микроконтроллеров

Reading time 14 min
Views 14K
Привет!

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

Читать дальше →
Total votes 36: ↑34 and ↓2 +32
Comments 46

Как сделать context switch на STM32

Reading time 11 min
Views 24K
Добрый день!

Потоки… Переключение контекстов… Базовая сущность ОС. И конечно, при разработке библиотек и приложений мы всегда полагаемся на то, что реализация потоков безошибочна. Поэтому было неожиданно найти грубую ошибку в переключении потоков для STM32 на ОСРВ Embox, когда уже продолжительное время работали и сеть, и файловая система и многие сторонние библиотеки. И мы даже успели похвастаться о своих достижениях на Хабре.

Я бы хотел рассказать про то, как мы делали переключение потоков для Cortex-M, и тестировали на STM32. Кроме того, постараюсь рассказать о том как это сделано в других ОС — NuttX и FreeRTOS.
Читать дальше →
Total votes 27: ↑27 and ↓0 +27
Comments 22

Игровая консоль stm32

Reading time 6 min
Views 16K
Немного шутеров для stm32; как, зачем, что получилось.



Предисловие


Будучи поклонником «старой» школы шутеров с одной стороны и embedded-разработчиком с другой, я всегда испытывал интерес, как и почему авторам той эпохи удавалось воплощать новый жанр, требующий совершенно новых подходов на весьма «скромном» железе. И я решил попробовать запустить нечто подобное используя решения на основе современных МК — тут и bare-metal и «скромные» ресурсы и довольно мощный инструмент отладки (stm32, имхо). И так, мой выбор пал на плату разработчика stm32f769i discovery.

Примечания


На текущий момент сборка возможна только из среды Keil MDK (загрузчик, игры) или же с помощью arm-gcc + make (только загрузчик). На данный момент доступны порты для — Quake I (+mods), Doom (+mods), Duke Nukem (+mods), Hexen, Heretic. С учетом всех модификаций, список может быть значительно расширен.

Начнем


В настоящей статье я постараюсь коротко изложить основные идеи и принципы их реализации на пути к созданию игровой консоли в частности для stm32f769i discovery. Так же, я постараюсь избегать развернутых технических подробностей, я скорее преследую цель познакомить читателя с еще одним вариантом использования современных МК. Под «игровой консолью» — я подразумеваю самостоятельное устройство с возможностью запуска «пользовательских» приложений без обновления основного ПО.
Total votes 29: ↑29 and ↓0 +29
Comments 11

Безболезненная прививка объектного мышления

Reading time 13 min
Views 17K

Или как можно проще об основных принципах ООП в Lazarus и FreePascal


Часть I


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


Во всех книгах, посвященных паскалю, delphi и lazarus (я нашел аж целых две о последнем), очень схожая часть, посвященная ООП. По этим книгам можно много узнать о том, насколько круче ООП устаревшего структурного подхода, но так и не получить достаточных навыков применения этого на практике. Конечно, любой программист, использующий визуальные IDE, уже по умолчанию использует ООП, так как все компоненты и структурные элементы визуального приложения представляют собой объекты, однако свои собственные структуры и абстракции перенести в парадигму ООП бывает очень сложно. Чтобы понять всю прелесть и оценить открывающиеся перспективы, я решил сделать небольшое приложение, которое в конечном итоге превратилось в простенький screensaver. Заодно вспомнил о существовании тригонометрии.

Приложение будет рисовать на экране в случайных местах пятьдесят полярных роз с разными характеристиками: размер, цвет, количество лепестков. Потом их же затирать и рисовать новые, и т.д. Используя принципы структурного программирования, можно, конечно, сделать обычный многомерный массив объемом на 50 и в нем сохранять все уникальные характеристики. Однако стоит вспомнить, что паскаль подразумевает строгую типизацию данных, а, следовательно, массив не может состоять их элементов с разными типами. Можно сделать массив из записей (record), но чего уж мелочиться, от записи до класса — один шаг. Вот его мы и сделаем.

Total votes 11: ↑10 and ↓1 +9
Comments 28

Zx spectrum128, CP/M 2.2 и терминал на STM32F407

Reading time 4 min
Views 23K
Нарисовав черно-белый Spectrum48 за $3 на телевизоре и получив вопросы как: «а почему не цветной», «а почему без музыки», «а где НЕИГРУШКИ» — решил поправить и опубликовать менее бюджетную версию, Spectrum128+СP/M, примерно на $25 железа.


Total votes 33: ↑33 and ↓0 +33
Comments 45

Проверка корректности адресов в памяти на Cortex-M0/M3/M4/M7

Reading time 9 min
Views 14K
Привет, Хабр!

По поводу случившегося на днях послабления режима, возмущения в комментариях одного соседнего поста о том, что статьи про микроконтроллеры — сплошь мигание светодиодом, а также безвременной гибели моего стандалон-блога, восстанавливать который мне пока лень, переложу сюда полезный материал об одном прискорбно мало освещаемом прессой трюке в работе с ядрами Cortex-M — проверке произвольных адресов на валидность.


Одна из весьма полезных и при этом почему-то в готовом виде нигде не описанных возможностей на микроконтроллерах Cortex-M (всех) — это возможность проверки корректности адреса в памяти. С её помощью можно определять размеры флэша, ОЗУ и EEPROM, определять наличие на конкретном процессоре конкретной периферии и регистров, прибивать упавшие процессы при сохранении общей работоспособности ОС и т.п.
Читать дальше →
Total votes 72: ↑72 and ↓0 +72
Comments 41

Как составить стратегию тестирования: версия настоящих инженеров

Reading time 10 min
Views 105K
Без стратегии тестирования можно наверняка обойтись, если есть бесконечное количество квалифицированных сотрудников, времени и денег. Словом, возможность пилить один релиз годами. В таких гипотетических идеальных условиях никакая стратегия не нужна, потому что вы можете тестировать ваш продукт всеми существующими способами как угодно долго, применяя техники в любом порядке, на несколько кругов, и рано или поздно каким-то путем вы придете к production ready качеству.

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

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


Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Comments 9

Information

Rating
Does not participate
Location
Чукотский АО, Россия
Date of birth
Registered
Activity