C

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

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

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

Adapter to connect a PS/2 mouse to a serial port

 ps/2 to serial

If you still have an old computer, the problem is to connect to it modern mouse may be familiar to you. Old mechanical mouse, sooner or later come into disrepair - cable wear, buttons do not work, etc. In general, modern laser mouse is usually much nicer than the devices of the last century

Because the serial mouses are no longer produced, then the for PC without a PS/2 port is still two options: adapt the PS/2 or USB mouse. With PS/2 mouse everything is much easier - this protocol can be implemented in almost any microcontroller, such as ATMega8.

The adapter is built on ATMega8 microcontroller and uses MAX232 to match the TTL signal levels with a serial port levels. The microcontroller receives data from the PS/2 mouse and transmits them via the UART.

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

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

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

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

 ps/2 to serial

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

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

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

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

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

Atmel Studio and avr builder

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

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

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

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

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

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

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

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

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

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

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

AVR

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

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

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

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

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

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

Страницы

Подписка на C