Pull to refresh

Энтузиаст запустил Linux на Arduino Uno

Reading time 3 min
Views 17K


Энтузиаст запустил ядро Linux на плате Arduino Uno. Чтобы адаптировать полновесный Linux 6.1 к чипу ATmega328p, он портировал эмулятор RISC-V на эту платформу. Установлен новый антирекорд: более 15 часов для загрузки.
Читать дальше →
Total votes 39: ↑39 and ↓0 +39
Comments 27

Отладка и программирование микроконтроллеров stm32f303, atmega328 через любой интерфейс, как через jtag

Reading time 4 min
Views 12K
Данная статья посвящена моему первому open source проекту “repl”(ссылка на репозиторий внизу). Идея данного проекта заключается в том, чтоб позволить программисту микроконтроллеров отлаживать программу в микроконтроллере через любой его интерфейс, при этом чтобы отладка не сильно отличалась от отладки через jtag интерфейс. Была возможность остановки программы, установки точек останова, просмотра регистров, памяти, по инструкционной отладки программы.

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

Первая идея для реализации по инструкционной отладки, была сократить время между прерываниями таймера ровно настолько чтоб могла исполниться только 1 инструкция. Данный вариант показал свою идеальную работу на микроконтроллере Atmega328p, дело в том, что минимальное время между прерываниями для Atmega составляет 1 такт процессора, любая инструкция независимо от количества тактов нужного для ее выполнения всегда завершиться если ее выполнение началось.
Total votes 19: ↑15 and ↓4 +11
Comments 19

Эмулятор RFID

Reading time 14 min
Views 66K

Эмулятор карт EM Marine



Наверняка каждому из нас, кто хоть раз бывал в обычных офисах, было интересно, как же функционируют эти бесконтактные пропуска. В данной статье мы разберёмся с принципом работы бесконтактных карт и сделаем эмулятор буквально из трёх радиодеталей.
Читать дальше →
Total votes 172: ↑168 and ↓4 +164
Comments 91

Низкоуровневое программирование микроконтроллеров tinyAVR 0-series

Reading time 7 min
Views 19K


Вы — 8-битный или 32-битный программист? Мы, в компании OMZLO, сосредоточили основные усилия на новых 32-битных ARM Cortex-чипах (STM32 и SAMD), которые, в сравнении с более старыми 8-битными микроконтроллерами (Micro Controller Unit, MCU) обычно предлагают больше RAM, более высокую производительность, поддержку большего количества периферийных устройств. И всё это — за ту же, или за более низкую цену. Но 8-битные MCU ещё не утратили своей актуальности. В частности, компания Microchip выпустила новую серию чипов, «tinyAVR 0-series», которые, в сравнении с AVR-чипами, выпущенными ранее, дают возможность работать с более современной периферией. Новые чипы, при этом, отличаются весьма привлекательной ценой. Возникает такое ощущение, что эти чипы отлично подойдут для разработки простых устройств, которым не нужны те возможности, что предлагают более новые 32-битные MCU. 8-битные микроконтроллеры, кроме того, значительно легче программировать, что приводит к увеличению скорости разработки программной части устройств, создаваемых на их основе.

Благодаря успеху Arduino UNO в интернете можно найти множество руководств, разъясняющих особенности программирования 8-битных микроконтроллеров ATmega328 и их собратьев вроде ATtiny85. Речь идёт о прямом доступе к регистрам без использования языка программирования, используемого для Arduino, и без применения IDE, созданных производителями чипов, вроде Atmel Studio. Чтобы в этом убедиться — просто поищите в Google по словам «atmega328 blinky». Для программирования микроконтроллеров вам понадобится лишь C-компилятор для AVR, текстовой редактор, avrdude и AVR-программатор. На некоторых ресурсах даже можно найти руководства, посвящённые тому, как, пользуясь универсальными макетными платами, «завести» ATmega328. Правда, если говорить о более новых чипах tinyAVR 0-series, по ним найти информацию такого рода непросто.
Читать дальше →
Total votes 64: ↑60 and ↓4 +56
Comments 23

Excel как транслятор в ассемблер AVR

Reading time 6 min
Views 9.1K

Предпосылки


Ряд статей (раз, два, три) навел на мысли о том, что Excel можно использовать как транслятор в ассемблерный код AVR.
Читать дальше →
Total votes 38: ↑38 and ↓0 +38
Comments 21

Портирование ModBus Slave RTU/ASCII на IAR AVR v3

Reading time 6 min
Views 4.9K


Я уже десять лет не писал под AVR… А вдруг разучился?! Для проверки я решил портировать библиотеку ModBus Slave RTU/ASCII без смс и регистрации на платформу IAR AVR, а также, по просьбам читателей, показать демку подключения к панели оператора Weintek.
Читать дальше →
Total votes 11: ↑10 and ↓1 +9
Comments 8

Кому в микроконтроллере жить хорошо?

Reading time 3 min
Views 8.2K

В каком году — рассчитывай, в какой земле — угадывай, задачился вопросами. Насколько ARM быстрее AVR? Какая разновидность протокола Modbus более «быстрая»? ASCII или RTU?
Читать дальше →
Total votes 25: ↑22 and ↓3 +19
Comments 19

Power-line communication. Часть 2 — Основные блоки устройства

Reading time 12 min
Views 8.2K

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

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

Читать далее
Total votes 10: ↑8 and ↓2 +6
Comments 26

Общаемся с дисплеем SSD1306 по i2c

Reading time 4 min
Views 15K

Все любители электронных самоделок когда-нибудь приходят к желанию отобразить работу своей поделки на экране в виде текста или графики. Самый бюджетный способ сделать это — обратиться к алфавитно-цифровому дисплею типа LCD1602 или LCD2004, общение с которыми происходит либо по параллельному интерфейсу, либо через переходник-конвертор в I2C. Второй способ — использовать графический дисплей, их множество, например SSD1306 с размером матрицы 128x64 пикселя.

Читать далее
Total votes 11: ↑10 and ↓1 +9
Comments 18

TinyPhoto: встраиваемая графика и экономичные вычисления

Reading time 7 min
Views 8.7K

TinyPhoto – это миниатюрный электронный фотоальбом с встраиваемой графикой, собранный с использованием микроконтроллера ATiny85 и OLED-дисплея 128х64px. Такой дуэт может обеспечить не менее 20 часов непрерывного показа изображений от «таблетки» на 3В и 225мАч.
Total votes 39: ↑37 and ↓2 +35
Comments 10

Проектирование измерителя частоты до 100МГц

Reading time 9 min
Views 14K

Этот проект посвящен созданию простого частотомера, способного измерять частоту до 100МГц с точностью 0.002%. За основу я взял ATtiny414, задействовав при этом его таймер/счетчик TCD0 и систему событий.
Читать дальше →
Total votes 46: ↑44 and ↓2 +42
Comments 28

Универсальные платы для умного дома на базе микроконтроллера ATmega128 (ATmega2561)

Reading time 3 min
Views 18K

Недавно я написал первый пост о том, как начал переделывать обычные светодиодные светильники в диммируемые. Многим не понравилось что свой диммер я делаю на базе микроконтроллера ATmega128. Поэтому хочу объяснить, почему используется именно этот микроконтроллер, и почему в наше время разрабатывая что-то ДЛЯ СЕБЯ, не стоит стремиться всё делать на самом слабеньком микроконтроллере способном протянуть только лишь функционал разрабатываемого вами устройства.

Читать далее
Total votes 15: ↑11 and ↓4 +7
Comments 115

Как подключить содержимое любых файлов для использования в коде C / C++

Reading time 5 min
Views 23K

Задача состояла в подключении файлов: HTML, JS, CSS; без специальной подготовки. Так же неудобно подключать бинарные файлы (например картинки) конвертируя их в HEX. Так как не хотелось конвертировать в HEX или разделять на строки, искал способ подключения файла в адресное пространство программы.

Читать дальше →
Total votes 84: ↑83 and ↓1 +82
Comments 33

Ненормативная схемотехника: ATmega8 – кто сказал, что выше головы не прыгнешь?

Reading time 14 min
Views 25K
Вот уж несколько лет, как я увлёкся микроконтроллерами, а именно семейством AVR. Ещё на этапе освоения Ардуино (в этот момент часть аудитории поплевались и ушли читать другие статьи) я пытался выдавить из неё больше, чем задумано. Меня всегда больше интересовали нестандартные решения обычных задач. Сейчас я знаю об AVR намного больше, чем ещё пару лет назад, и всё больше убеждаюсь, что знаю очень мало.



С чего начинает среднестатистический начинающий электронщик? Правильно, с часов! Как только научился пользоваться голыми контроллерами, а не платами Ардуино, захотел сделать часы на Атмеге, голой Атмеге без кучи ключей и буферных микросхем. И обязательно со статической индикацией, а не с динамической (ну не люблю я её). Собственно, статическая индикация программно гораздо проще, а ведь мы простых путей не ищем. Но зато возникают другие проблемы, которые несколько раз меня останавливали в самом начале пути. Понятно, что если взять Атмегу пожирней, задействовать в ней половину ножек и полпроцента памяти, задача упрощается донельзя, собственно, такие настольные часы на ATmega128 работают у меня на столе пару лет.



Но это не наш метод. Я с самого начала хотел именно ATmega8, как самую доступную и самую дешёвую (в том числе в дип-корпусе). Всё то же самое можно и на ATmega48, но её попробуй ещё найди, разве что у Вас в ящике стола валяется их много с незапамятных времён.
Читать дальше →
Total votes 30: ↑27 and ↓3 +24
Comments 54

Проигрыватель мелодий из игры Monkey Island

Reading time 18 min
Views 4.5K

Приключение начинается...

Кратко:

  • Я модифицировал DOSBox для извлечения пар значений частоты/задержки мелодий PC-спикера из игры «Остров обезьян».
  • Затем с помощью алгоритма Хаффмана я втиснул всю эту музыку в ATiny85 (512 байтов ОЗУ, 8Кб флэш).
  • После этого собрал небольшую плату с динамиком для ее воспроизведения…
  • … в качестве подарка моим племянникам и племянницам, с которыми встречусь в ближайшем будущем спустя год изоляции из-за пандемии.

Все верно – их дядя откровенный ботан, позаботившийся о том, чтобы детство племяшей не прошло без знакомства с Гайбрашем Трипвудом:)
Читать дальше →
Total votes 38: ↑37 and ↓1 +36
Comments 13

Банальная проблема незапуска AVR, решение которой глубоко под землей

Reading time 2 min
Views 12K

Представим: купили вы новый камень для своего проекта, а он - зараза - не шьется! Все собрано правильно, программатор правильный - всё равно ошибка. Знакомо? Мне да.

Вам тоже?
Total votes 8: ↑7 and ↓1 +6
Comments 27

Настройка VSCode для программирования AVR в Linux

Reading time 9 min
Views 9.4K

Всем, кто занимается электроникой, так или иначе знакомы контроллеры AVR. Начинающим они знакомы, по большей части, за счёт экосистемы Arduino. В данной статье я попытаюсь рассказать начинающим программистам, как можно в Linux просто настроить VSCode для работы с контроллерари AVR и получить удобную навигацию по коду, приятную подсветку синтаксиса и прочие рабости, которые даёт VSCode. Это даст желающим возможность перейти от экосистемы Arduino к прямой работе с процессорами.

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

8 ферзей на AVR-ассемблере

Reading time 4 min
Views 7.8K

Фанатам ассемблера посвящается.

Всем привет! Решил подключить матрицу светодиодов 8х8 и вывести на неё решение задачи о 8 ферзях. [Описание см. на Википедии]

Процессор

В качестве процессора я выбрал компактный и шустрый процессор attiny85. Программа будет написана на ассемблере. С небольшими настройками программа должна работать на любом другом процессоре AVR: attiny и atmega.

Дисплей

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

Читать далее
Total votes 18: ↑15 and ↓3 +12
Comments 5

Как разработать микросхему, от идеи до результата. Часть 1. Теория

Reading time 19 min
Views 24K
Пока наши соседи по цеху спорят о конкурентоспособности Эльбруса, я продолжаю идти к своей заветной цели — склепать свой собственный Отечественный Процессор (TM). Ранее я рассказывал про программу, финансируемую Google, которая позволяет энтузиастам бесплатно получить прототип их разработок в кремнии. Если вы хотите увидеть всю подноготную процесса производства современных чипов, то этот туториал точно для вас!

Читать дальше →
Total votes 113: ↑112 and ↓1 +111
Comments 62