AVR

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

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

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

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

IC Tester ATMega128

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

Tape player and recorder for Sinclair ZX Spectrum on Atmega128

ZX tape simulator for zx spectrum

ZX Spectrum - a computer designed over 30 years ago with a 3.5 MHz processor and only 48 KB of RAM. For him, it developed a huge number of software and games. Moreover, new game releases are constantly in our days.

Previously, the program is loaded from the tape. And the loading is not always succeeds, sometimes the game had to try several times to load often getting message "R Tape loading error".

Alternatively audiotapes today suggests a memory card that stores the program files in the formats TAP, WAV and TZX. And as an alternative to tape recorder - microcontroller device that can play and store these files.

В поисках альтернативы Atmel Studio

Atmel Studio and avr builder

Недавно вышла новая Atmel Studio версии 7.0. Как и все предыдущие IDE от Atmel, она не лишена ряда существенных недостатков, основной из которых - отсутствие кроссплатформенности.

Для сборки проекта студия использует утилиту make и генерит makefile. В принципе, makefile можно писать руками, но это не совсем удобно и очень громоздко. Попытки использования разных известные аналогов make (cmake, scons и прочее) желаемого результата также не дали. Хотелось своего велосипеда - чего-то предельно простого, гибкого и удобного. В качестве основы был выбран Python, т.к. его легко использовать не только в качестве языка для написания системы сборки, но и в качестве удобного языка для написания сценариев компиляции.

Магнитофон для компьютеров ZX Spectrum

Магнитофон для zx spectrum на atmega

ZX Spectrum - компьютер, созданный более 30 лет назад с 3.5 МГц процессором и всего лишь 48 Кб ОЗУ, под который написано огромное количество игр (да и прикладного софта тоже), в которые интересно играть даже сегодня. При том, что эти игры часто представляют собой мегашедевры с точки зрения программирования и оптимизации кода, их разработчики умудрялись вмещать огромные игровые миры в эти скромные 48 Кб.

Программы в те времена загружались с магнитофонной ленты. Причем, в отличии от самого Spectrum-а, магнитофоны и процесс загрузки с них вызывают гораздо меньше теплых воспоминаний - загрузка не всегда заканчивалась успешно, иногда игрушку приходилось грузить по несколько раз получая ошибку "R Tape loading error" регулируя положение головки магнитофона, прочищая ее поверхность одеколоном, либо, если совсем не повезло, вытаскивать из магнитофона "зажеванную" им кассету при этом с трудом сдерживая желание сильно стукнуть виновника апстену :)

Светодиодная УФ-лампа для изготовления печатных плат

Светодиодная ультрафиолетовая лампа с таймером

Решил соорудить себе светодиодныю лампу для экспонирования фоторезиста и паяльной маски. Для чего на алиэкспрессе были закуплены в количестве 500 штук 5мм-светодиоды на 2000 милликандел с длиной волны около 400нм. Питать их решил от блока питания с напряжением 12В. Т.к. на одном светодиоде падает напряжение около 3.5В, то соединять их надо в цепочки по 3 штуки и для тока через светодиод около 20мА сопротивление токоограничивающего резистора будет 68 Ом.

Светодиодную матрицу решил делать размерами 18 х 26 светодиодов с шагом между ними в 1 см. Матрица собрана на двух одиноковых печатных платах (18 х 13 светодиодов в каждой).

Корпус для лампы фабричный, алюминиевый. Был куплен в "Ашане" занедорого, там он более известен под кодовым названием "противень для выпекания пирогов" :).

Адаптер для программирования ATMega128

ISP адаптер для atmega128

При написании и отладке прошивки устройств на микроконтроллерах приходится часто выполнять перепрограммирование МК и периодически подключаться к нему через UART-интерфейс чтобы смотреть логи (по крайней мере, лично я предпочитаю отладку через UART-терминал). Особенностями МК ATMega128 является то, что 1) для внутрисхемного программирования он использует выводы, отличные от выводов SPI-интерфейса и
2) данный МК имеет на борту два UART-а, причем, выводы одного из них совпадают с выводами ISP-интерфейса.

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

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

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

Потребность в данном устройстве возникла у меня при сборке ретрокомпьютера Pentagon-128, когда компьютер, выполненный целиком на микросхемах мелкой логики (коих на плате пентагона порядка сотни корпусов) отказался работать после включения. После увлекательного поиска неисправности было обнаружено пять убитых микросхем. Что и побудило сделать тестер. Аппаратная часть разрабатывалась со следующими акцентами:

Совместное использование ассемблера и Си для AVR

AVR

При программировании вещей, критичных к быстродействию и размеру кода хорошо использовать ассемблер. При этом обычно не обязательно писать на нем весь код, достаточно реализовать наиболее “чувствительные” подпрограммы. Компилятор GCC и среда Atmel Studio позволяют использовать в проекте ассемблер и С одновременно. При этом возникает вопрос организации взаимодействия между подпрограммами на разных языках: вызова методов с передачей им параметров и доступа к переменным.

Лампа настроения: продолжение

лампа настроения avr attiny13

Спустя почти два года после публикации первого варианта лампы настроения было собрано несколько экземпляров, сделаны выводы и произведены некоторые улучшения.

После обкатки на разных устройствах прошивка была обновлена:

  • Изменен алгоритм генерации цветов - теперь цвета более насыщенные
  • Исправлена проблема с резким переключением между цветами. Баг связан с тем, что раньше значение следующего цвета вычислялось непосредственно в процедуре прерывания и эта операция занимала слишком много времени. Теперь вычисление вынесено в главный цикл
  • Добавлена возможность использовать свой генератор псевдо-случайных чисел вместо stdlib-овского. Этим можно немного уменьшить размер прошивки в ущерб качеству случайности генеримых цветов (что, вообщем-то, не особо сказывается на работе лампы).
  • Прошивка теперь компилируется под AVR Studio 6

Страницы

Подписка на AVR