Famicom: AV-мод

Famicom AV-мод

Игровая пиставка Famicom содержит в себе ТВ-модулятор и подключается к телевизору через антенный вход. В результате имеем лёгкость подключения к любому телевизору + ужасное качество картинки + отсутствие звука. Решение проблемы - переделка видеовыхода с ТВ на композитный, так называемый AV-мод. В сети можно найти кучу разных вариантов этой простой доработки - видеосигнал снимается непосредственно с 21-го вывода графического процессора (микросхема RP2C02 или 6538) и подаётся через транзисторный ключ на разъём VIDEO-OUT.

Можно, конечно, приколхозить эти несколько деталек навесным монтажом прямо на плату, но это не здорово. К тому же, из Фамикома торчит наружу только одно гнездо типа "тюльпан" - антенный выход. А кроме видео-выхода надо ещё куда-то засунуть и аудио-разъём. Вообщем, решено было вместо родной платы стабилизатора и ТВ-модулятора поставить свою, с точно такими же размерами и всеми нужными доработками.

Справочник по командам ассемблера 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 и с фьюзами там всё относительно неплохо. Плюс открытый исходный код даёт возможность неограниченно затачивать этот инструмент под себя.

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

Доработка УНЧ компьютерных колонок

Доработка УНЧ компьютерных колонок

У различных компьютерных акустических систем среднего ценового сегмента (в частности Microlab PRO2 и Thonet & Vander Dass) был замечен один общий и сильно неприятный недостаток - при включении чего-то в соседнюю розетку в колонках слышится громкие раздражающие щелчки. Что особенно не радует в ночное время. Ручку громкости у компьютерных колонок удобно выкрутить до значения, близкого к максимальному, чтобы в будущем регулировать её в полном диапазоне с компьютера. Что не лучшим образом влияет на громкость тресков. Особенно громко щёлкали колонки при выключении очистителя воздуха для пайки, но и на всяческие мелкие импульсные блокои питания/зарядные устройства, включаемые и выключаемые из соседней (и не только) розетки реакция колонок тоже была неприятной. Обозначенная проблема - следствие тотальной экономии китайцами на всём при проектировании и производстве. Решение проблемы - добавить в схему то, на чём было сэкономлено.

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

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

Следующий простой и очевидный способ улучшить качество питания - увеличить ёмкости "электролитов" хотя бы до 10 000 - 15 000 мкФ. При этом стоит учитывать то, что пусковые токи при зарядке таких емкостей так же увеличатся, и диодный мост должен иметь хороший запас по току, чтобы при включении ему не поплохело. Так же, для лучшей фильтрации, я добавил по дросселю в каждое плечо (получив Т-образный LC-фильтр).

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

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

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

Устройство предназначено для тестирования логических микросхем, операционных усилителей, оптопар, и некоторых других элементов. Из логических микросхем поддерживаются отечественные (серии 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).

Доработка питания 3D-принтера

БП для 3D-принтера

3D-принтеры бывают разные, но электроника подавляющего большинства любительских аппаратов делается на основе связки плат Arduino + RAMPS, либо одной платы MKS Gen. В качестве блока питания обычно служит БП для светодиодных лент. Он служит источником для питания электроники, шаговых двигателей, нагревателя(лей) экструдеров и термостола. И тут возникает ряд проблем, связанных с тем, что импульсные помехи от БП + помехи, создаваемые ШИМ-контроллером нагревателя экструдера прилетают на управляющий микроконтроллер. В результате возможны сбои и перезагрузка программы, появление мусора на экране, а также большие ошибки при измерении температуры экструдера (что может приводить к тому, что управляющая программа не может стабилизировать температуру нагревателя экструдера).

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

Доработка позволила полностью избавится от проблем с питанием - после исправлений температура экструдера стала нормально устанавливаться, исчезли перезагрузки и мусор с экрана.

УФ стиральная машина для ПЗУ

Устройство для стирания УФ ПЗУ

Как известно, очистить ПЗУ с УФ-стиранием можно лампой ДРЛ с разбитой внешней колбой. Лампу надо подключать через дроссель, который можно заменить обычной лампой накаливания той же мощности, что и ДРЛ (или вязанкой из параллельно соединённых ламп). Без дросселя ДРЛ быстро сгорит. С лампами накаливания, как показывает опыт, ДРЛ всё равно сгорит, но гораздо медленнее - на несколько десятков стирок хватит. Колба постепенно чернеет, а сама лампа начинает светить всё хуже и хуже.. А ещё внутренняя колба ДРЛ активно генерирует озон при свечении, а озон имеет свойство убивать всё живое.

Появление мощных ультрафиолетовых светодиодов дало возможность сделать практически "вечную" стиралку для ретро-ПЗУ-шек. Светодиодом с длиной волны 365нм мощностью от 3Вт можно стереть память за ~5-60 минут в зависимости от микросхемы и её ёмкости (да, это не очень быстро, но куда торопиться?).

Мощному светодиоду требуется охлаждение, для чего он был установлен на небольшой радиатор с вентилятором. Питается эта конструкция от 12В БП, светодиод подключен через регулируемый DC/DC-преобразователь с ограничением тока. В завершении конструкция помещается в корпус, распечатанный на 3D-принтере. Корпус состоит из двух частей - блок питания и блок светодиода с кулером.

Корпус тестера микросхем

Корпус тестера микросхем

Тестер микросхем в полной комплектации состоит из трёх плат - сам тестер + дисплей + плата ключей.

Для того, чтобы культурно упаковать их в единое целое, была спроектирована моделька корпуса для печати на 3d-принтере. Корпус рассчитан под модуль цветного дисплея 128x128 и плату тестера v2.3 (у плат более ранних версий отличается раположение одного крепёжного отверстия, но в принципе, корпус можно использовать и с ними). Корпус состоит из двух половинок - верхней и нижней. Половинки достаточно плотно вставляются друг в друга.

К нижней части корпуса крепится плата ключей, она привинчивается винтами к распечатанным стойкам. Стойка высоты 2.5мм имеет углубление под гайку М2. Гайки плотно вставляются вниз стоек, после чего стойки приклеивается к корпусу на свои места.

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

Все детали корпуса (кроме гаек и винтов М2) можно распечатать на 3D-принтере, файлы моделей прилагаются.

Страницы

Подписка на TrolSoft RSS