AVR

IDE для разработки на AVR (GCC и Rat)

TrolStudio IDE, AVR Rat. C--

Раньше для разработки на Си вообще, и под микроконтроллеры AVR в частности я использовал IDE NetBeans, относительно уникальной фичей которой была поддержка С/С++ и GCC-ассемблера из коробки, с подсветкой синтаксис, возможностью сборки проекта и рефакторинга. Но, увы, после того как Oracle передали NetBeans в Apache, те превратили эту некогда неплохую IDE в унылое говно, выпилив оттуда поддержку С/С++ и заменив её на непонятное нечно, которое как бы есть (в меню создать С/++ проект все ещё можно), но по факту уже много лет как абсолютно неработоспособно.

И снова модернизация блока питания Dazheng PS-305D

Dazheng PS-305D

Спустя 10 лет после публикации первой статьи по доработке лабораторного блока питания Dazheng PS-305D (известного так же как Ya Xun Ps-305d и Yizhan PS-305D, а так же, наверняка, и под другими именами), пришлось снова заняться этим аппаратом. У китайского ЛБП обнаружилась проблема с переменными резисторами, которые начали “шуршать”, от чего выставляемые значения тока и напряжения начали “скакать”. После чего резисторы были заменены на новые, модные, точные и многооборотистые с одной неназываемой

The Rat - компилятор C-- для AVR

The Rat AVR

При написании ассемблерного кода возникает желание иметь более удобный синтаксис, похожий на синтаксис Си, где вместо мнемоник ассемблера можно использовать привычные и более читаемые конструкции. Подобно тому, как это делается в языке C--. Это желание и побудило на создания компилятора подобного языка для AVR, позволяющего писать компактный и шустрый код, и названного Rat.

Текущая версия: 0.2

Точное измерение частоты кварца без измерительных приборов

Точное измерение частоты кварца

Измерить частоту кварца очень просто, для этого достаточно иметь частотомер. Собрать частотомер тоже несложно (например, по этой схеме). Но для этого нужен эталонный кварцевый резонатор с известной [с высокой точностью] частотой. Чем менее точно известна эта частота, тем выше будет погрешность прибора. Тут следует заметить, что в продаже, обычно, встречаются кварцы с достаточно большим отклонением частоты от заявленной. Вообще, после производства партии кварцев они проходят сортировку с разделением на группы по величине отклонения частоты: высокоточные (для серьёзного оборудования), приемлимой точности (для прочих устройств) и все остальные (полубрак, для последующей утилизации на всяких алиэкспрессах занедорого). В итоге, получаем замкнутый круг. Но, к счатью, существует довольно простой (но совсем не быстрый) способ точно измерить частоту, не имея ни эталонного кварца, ни поверенного частотомера. Потребуется лишь компьютер с интернетом и любой микроконтроллер.

Калькулятор скорости UART для AVR

UART baudrate calculator

Калькулятор скорости UART для AVR-микроконтроллеров. По умолчанию отображаются таблицы для основных популярных частот процессора и скоростей обмена. При желании эти параметры можно изменить.

Расширенный ассемблер (C--) для AVR

Никакой язык программирования не сравнится а ассемблером по возможности писать самый компактный и быстрый код. На сегодняшний день, каким бы продвинутым не был компилятор, и какие бы хитрые оптимизации он не творил с кодом, результат всё равно не будет идеален. А иногда он будет совсем сильно не идеален. По крайней мере, это точно свойственно компилятору AVR GCC.

Частотомер-тестер кварцев на atmega8

atmega f-meter

Частотомер - полезный прибор в лаборатории радиолюбителя (особенно, при отсутствии осциллографа). Кроме частотомера лично мне часто недоставало тестера кварцевых резонаторов - слишком много стало приходить брака из Китая. Не раз случалось такое, что собираешь устройство, программируешь микроконтроллер, записываешь фьюзы, чтобы он тактировался от внешнего кварца и всё - после записи фьюзов программатор перестаёт видеть МК. Причина - "битый" кварц, реже - "глючный" микроконтроллер (или заботливо перемаркированый китайцами с добавлением, например, буквы “А" на конце). И таких неисправных кварцев мне попадалось до 5% из партии. Кстати, достаточно известный китайский набор частотомера с тестером кварцев на PIC-микроконтроллере и светодиодном дисплее с Алиэкспресса мне категорически не понравился, т.к. часто вместо частоты показывал то ли погоду в Зимбабве, то ли частоты "неинтересных" гармоник (ну или это мне не повезло).

Справочник по командам ассемблера AVR

avr commands

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

Справочник основан на переводе документации от Atmel. Помимо этого сюда добавлено больше примеров использования команд. В частности, добавлены примеры для ассемблера AVR GCC, т.к. последний имеет ряд особенностей, связанных с линковкой объектного кода.

Справочник будет дополняться по мере появления вопросов.

Чтобы быстро перейти к нужной команде достаточно ввести её имя.

Программатор USBTiny-MkII slim

Программатор USBTiny-MkII slim

USBTiny-MkII slim - компактный и быстрый USB-программатор для микроконтроллеров AVR, совместимый с фирменным программатором AVRISP-MKII от Atmel. Немалая стоимость оригинала поспособствовала появлению его многочисленных клонов, и самым удачным из них, пожалуй, является именно USBTiny-MkII SLIM. Устройство может программировать все 8-разрядные AVR-микроконтроллеры, обладающие возможностью внутрисхемного программирования (поддерживаются интерфейсы ISP, TPI и PDI).

Это быстрый программатор. 128 Кб флеша ATMega128 полностью считываются за 35 секунд (для сравнения, usbasp делает это за 70 секунд), и пишутся чуть медленнее (скорость записи ~15 Кб/сек). Второе важное достоинство устройства в том, что оно без проблем работает не только с avrdude, но и с AtmelStudio, которая видит программатор как родную железку.

Высокая скорость работы обеспечивается использованием микроконтроллеры AT90USB162 с аппаратной поддержкой USB (этот контроллер содержит встроенный bootloader и для его прошивки не нужен программатор). Кроме микроконтроллера на плате программатора имеется двунаправленный преобразователь уровня напряжения GTL2003, LDO-стабилизатор (MCP1825S-3302ED) на 3.3В, джампер для выбора напряжения питания программируемого МК (3.3В/5В) и пара светодиодов-индикаторов режима работы.

Для программатора была спроектирована модель корпуса для печати на 3d-принтере. Корпус состоит из двух половинок, которые склеиваются между собой. Под джамперы, светодиоды и разъёмы программатора (и подписи к ним) сделаны окошки. Также есть ниша для установки 10-пинового ISP-разъема (в дополнении к 6-пиновому ISP на печатной плате).

Работа с энкодером

Работа микроконтроллера с энкодером

Энкодер - штука, внешне похожая на переменный резистор, но, в отличие от последнего, не имеет ограничителей и может вращаться в любую сторону бесконечно. С помощью энкодера очень удобно организовывать всякие экранные меню, вообще, один “нажимабельный” энкодер (т.е., если он умеет работать ещё и как кнопка) идеально подходит для для организации одномерных циклических меню.

Энкодеры бывают двух типов: абсолютные - сразу выдающие код угла поворота и инкрементальные - выдающие импульсы при вращении. Для последних подсчётом импульсов и их преобразованием их в угол поворота должен заниматься микроконтроллер.

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

Хотя информации по программированию энкодеров в сети навалом, как и готовых библиотек для этого, но все они какие-то излишне громозкие (имхо) - опрос состояния, как правило, реализуется в виде конечного автомата в виде блока switch с вложенными if-ами, что выглядит несколько сложно (особенно, будучи написанным на ассмеблере). Хотя, реализация может быть проще.

Страницы

Подписка на AVR