AVR

Справочник по командам ассемблера 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-ами, что выглядит несколько сложно (особенно, будучи написанным на ассмеблере). Хотя, реализация может быть проще.

Графическая оболочка для avrdude под MacOS

avrfuses

Программа avrdude поддерживает все актуальные программаторы микроконтроллеров AVR и является кроссплатформенной (Linux, Windows, MacOS). Это консольная утилита и её удобно вызывать из shell/bat-скриптов. Единожды написав такой файлик и положив его в директорию с проектом, получаем возможность быстро прошить и проверить фьюзы, flash и eeprom микроконтроллера. Проблема только в том, чтобы написать этот скрипт. И тут основную головную боль вызывают fuse-биты, т.к. надо правильно сформировать их значения нигде не ошибившись. Иначе, устройство, в лучшем случае, может не заработать совсем или работать неправильно. Ну а в худшем случае можно "окипрпичить" микроконтроллер.

Для avrdue написано много разных графических оболочек под Windows, но среди всего этого многообразия не так просто найти удобный и не сильно глючный софт. Основное требование к оболочке - возможность работать с fuse-битами не как с числами или набором непонятных чекбоксов, а в нормальном человекочитаемом формате. Под MacOS вариантов оболочек совсем не много, но, к счастью, есть open-source проект AVRFuses и с фьюзами там всё относительно неплохо. Плюс открытый исходный код даёт возможность неограниченно затачивать этот инструмент под себя.

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

Тестер микросхем

Тестер микросхем

Описание тестера микросхем последней версии.

Устройство предназначено для тестирования логических микросхем, операционных усилителей, оптопар, и некоторых других элементов. Из логических микросхем поддерживаются отечественные (серии 155, 555, 1531, 1533, 176, 561, 1561, 1564, 580, 589 и др.) и импортные (74ххх, 40ххx, 45xxx) ИМС ТТЛ и КМОП. Так же тестер умеет проверять микросхемы DRAM, SRAM, умеет считывать EPROM и показывать, есть ли в них записанные данные. Кроме того, девайс можно использовать при отладке различных цифровых устройств как интерфейс с 40 каналами ввода-вывода управляемыми по USB ( через адаптер usb-uart).

Тестер можно подключить к компьютеру посредством адаптера usb-to-uart. Программное обеспечение позволяет разрабатывать, компилировать и отлаживать тесты, считывать содержимое ПЗУ, запускать тестирование микросхем с отображеием результатов (тестер может работать без дисплейного модуля). Также из ПО можно обновлять прошивку тестера без программатора.

Программное обеспечение написано на Java и является кроссплатформенным (Windows, Linux, MacOS X).

Цветной дисплейный модуль 128x128

Дисплейный модуль 128x128

Данный проект является результатом эволюции дисплейного модуля на LCD Nokia 5110 и МК ATMega8. Вместо монохромного дисплея 5110 используется цветной экран с диагональю 1.44", разрешением 128х128 и возможностью отображать до 64K цветов, а в качестве управляющего микроконтроллера - ATMega328.

Адаптер для подключения PS/2 мыши к COM порту

 ps/2 to serial

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

trolCommander v0.9.8

trolCommander 0.9.8

Вышла новая сборка trolCommander-а. В неё вошли множество улучшений текстового редактора, работы с архивами, утилитами MacOS X и прочее.

Дисплейный модуль на ATMega8/168/328

Модуль дисплея atmega8

При разработке микроконтроллерных поделок практически всегда возникает потребность реализации пользовательского ввода и вывода. Часто функции ввода информации берёт на себя клавиатура (реже - энкодер), а для отображения состояния устройства используются либо светодиоды, либо светодиодные семисегментные индикаторы, либо ЖК-дисплеи (текстовые вроде 16х2 или графические). Последний вариант часто выигрывает по соотношению цена/возможности если использовать недорогой экран от телефонов Nokia 5110. Разрешающая способность экрана 84х48 позволяет выводить до 5 строк текста длиной до 16 символов. Естественно, помимо текста можно выводить и графику. С таким экраном обычно можно реализовать горазо более удобный пользовательский интерфейс, по сравнению с экранами 16х2, и тем более, по сравнению с семисегментными индикаторами.

Тестер микросхем 2.0 на ATMega128

IC Tester ATMega128

Проект является продолжением тестера микросхем на ATMega32. Использование микроконтроллера ATMega128 позволило существенно расширить возможности прибора. Работа с дисплеем и клавиатурой была реализована на дополнительном микроконтроллере ATMega8.

Страницы

Подписка на AVR