Простой VGA/Видео адаптер (ATmega8, C)
Предыстория проекта.
Несколько месяцев назад, задавшись целью подключить VGA-монитор для вывода текстовых данных с микроконтроллерной системы сбора информации - я с удивлением обнаружил, что ничего сколько-нибудь "внятного" и доступного для повторения “на коленке” по этой теме в Интернете отсутствует.
Конечно, существуют промышленные платы стандарта PC-104, можно кое-что “нарыть” и на www.opencores.org для реализации на FPGA, есть графические контроллеры Fujitsu, кто-то здесь недавно на местной конференции предлагал за 5000$ проект на ACEX’е J, но надо признать - все это страшно далеко от народа.
Хотелось что-то гораздо более “дешевое и сердитое”. Предварительные прикидки показывали, что из наиболее распространенных и достаточно быстродействующих микроконтроллеров подходит продукция фирмы ATMEL. 8-ми битное RISC ядро AVR обеспечивает пиковую производительность порядка 16 MIPS на тактовой частоте 16MHz. Плюс на подходе более скоростные семейства ATmega48,88,168 поддерживающие официальную тактовую частоту 20MHz.При этом скорость вывода данных через стандартный порт ввода-вывода при FOSC = 16MHz командами вывода в порт (out portx..) 8 MIPS. К тому же я уже имел достаточный опыт разработки устройств на микроконтроллерах AVR. И я засучил рукава..
Результат своей работы я представляю на ВАШ суд.
Поставленная техническая задача:
Цель которую я поставил для себя, достаточно проста на первый взгляд:
Ограничившись одним корпусом распространенного MCU типа Mega8,16,8535 и т.д., и минимумом внешних элементов сконструировать символьный дисплей-адаптер с разрешением > 15x15 символов, который бы выводил информацию на VGA монитор при стандартных частотах VGA сигнала. Информацию символьный адаптер должен получать через стандартный USART порт микроконтроллера. Частота используемого микроконтроллера стандартная -16MHz.
Данная задача на данный момент успешно решена.
Более того - проект несколько расширен и дополнен введением формирования обычного видео ч.б. (PAL/SECAM) сигнала. Т.е. в зависимости от положения джампера тип формируемого видео сигнала VGA либо Composite Video.
Фотографии и схема адаптера:
Ниже приводится принципиальная схема простого VGA/Video адаптера:
Так все это выглядит в железе, собранном на “коленке” за один час, результат на экране монитора и на экране теллевизора.
Технические характеристики проекта:
Технические характеристики VGA-адаптера:
- Количество символов: 20 строк по 20 символов
- Разрешение матрицы знакогенератора: 8x12 точек
- Кодовая таблица знакогенератора: WIN 1251
- Формируемый сигнал: VGA
- Разрешение: 640x480
- Частота кадровой синхронизации: 60Hz
- Скорость обмена UART 19200 bps
Технические характеристики Video-адаптера:
- Количество символов: 20 строк по 38 символов
- Разрешение матрицы знакогенератора: 8x12 точек
- Кодовая таблица знакогенератора: WIN 1251
- Формируемый сигнал: Composite Video(PAL/SECAM)
- Разрешение: 625 строк (чересстрочная)
- Частота кадровой синхронизации: 50Hz
- Скорость обмена UART 19200 bps
Тип используемого микроконтроллера: Mega8, Mega16, , Mega32, Mega8535 и т.д.
Тактовая частота микроконтроллера стандартная - 16Mhz
Примечание:
1. Для того чтобы избежать искажения изображения при приеме данных через UART, для VGA рекомендуется производить обмен данными с адаптером в течении приблизительно 300-600 мкс после сигнала вертикальной синхронизации VSYNC (во время обратного хода луча по кадру).
2. Объема RAM памяти Mega8535 (512 байт) не достаточно для формирования Видео сигнала с разрешением 38x20 символов.
Алгоритм работы программы:
Пояснения по работе программы:
Алгоритм рендеринга изображения достаточно традиционен, главное ноу-хау проекта в использовании для побитного вывода изображения – сдвигового регистра SPI SPDR через бит MOSI. При этом образуется двухступенчатый конвейер рендеринга:
В то время, как последующий байт для рендеринга выбирается из памяти, предыдущий байт выводится через сдвиговый регистр SPI SPDR MOSI.
Заключение:
Поскольку данный проект написан на С (WinAVR GCC), он легко масштабируем для увеличения разрешения и частот регенерации дисплея. Так, на микроконтроллерах Mega48,88,168 поддерживающих официальную тактовую частоту 20MHz возможно получение разрешения 20 строк по 25-30 символов при абсолютно той же схемотехнике (возможности оверклокинга автор намеренно не рассматривает). Применения проекта не ограничиваются одним лишь терминальным вариантом (смотрите примеры в папке examples) – не смотря на серьезную загруженность процессора регенерацией дисплея оставшейся мощности вполне достаточно для организации обработки например нескольких цифровых и аналоговых сигналов и реакции на них, а также выдаче результатов их измерений на дисплей в real-time (охранные системы, АСУТП, КИПиА и т.д.). Автор располагает улучшенными вариантами подобных систем с разрешением символьного дисплея 40x24 символов в режиме VGA, работающими в коммерческих изделиях
Исходные тексты проекта, примеры применения (34 Кб). Загрузок: 716
Данный материал в формате PDF (241 Кб). Загрузок: 554
Автор статьи: Ибрагимов Максим Рафикович г. Тольятти
Просмотров: 10354
Splan 7.0.0.9 Rus + Portable + Viewer Fiinal
26.04.2014
sPlan – удобный инструмент для черчения электронных схем. Имеет простой и интуитивно понятный интерфейс. В программе заложены... подробнее...
Очень удобная программа для чтения pdf Foxit Reader
26.04.2014
Foxit Reader - Компактная и шустрая программа для чтения PDF файлов. Может служить альтернативой для популярного просмотрщика PDF - Adobe Reader.... подробнее...
Proteus 7.7 SP2 + Crack v1.0.2 + RUS
22.04.2014
Proteus VSM - программа-симулятор микроконтроллерных устройств. Поддерживает МК: PIC, 8051, AVR, HC11, ARM7/LPC2000 и другие распространенные процессоры.... подробнее...
Новое становление сайта Eldigi.ru
01.04.2014
Проект Eldigi.ru который долгое время находился в застывшем состоянии снова принимается за работу с новымы силами, с новыми статьями и с... подробнее...
Proteus 7.7 SP2 + Crack v1.0.2 + RUS
22.04.2014
Proteus VSM - программа-симулятор микроконтроллерных устройств. Поддерживает МК: PIC, 8051, AVR, HC11, ARM7/LPC2000 и другие распространенные процессоры....
подробнее...
Splan 7.0.0.9 Rus + Portable + Viewer Fiinal
26.04.2014
sPlan – удобный инструмент для черчения электронных схем. Имеет простой и интуитивно понятный интерфейс. В программе заложены...
подробнее...
Цифровая паяльная станция своими руками (ATmega8, C)
27.05.2012
Состав: ATmega8, LM358, IRFZ44, 7805, мост, 13 резисторов, один потенциометр, 2 электролита, 4 конденсатора, трехразрядный светодиодный семисегментный...
подробнее...
Тахометр на AVR микроконтроллере (ATtiny2313, C)
13.01.2010
Данное устройство представляет собой неплохой тахометр, предел его измерений
составляет 100 - 9990 об/мин. Точность измерения - ± 3 об/мин....
подробнее...
Mega-Генератор (ATmega16, C)
09.08.2008
Попросили меня как-то на работе (автосервис) организовать генератор для проверки различных электроклапанов, инжекторов, катушек... подробнее...
Зарядное устройство на PIC микроконтроллере (PIC12F675)
24.01.2008
Данное зарядное устройство (ЗУ) автоматизирует процесс зарядки аккумуляторов. Если аккумулятор не разряжен до напряжения 1 В, оно... подробнее...
Термостат (AT90S2313, C)
15.02.2008
Прибор был создан по просьбе одного знакомого для контроля температуры в комнате - включения отопителя / вентилятора при достижении... подробнее...
Блок питания 3-20В, 0.1-10А (ATmega8, C)
12.01.2010
Без чего не может обойтись не один радиолюбитель? Правильно - без ХОРОШЕГО блока питания, а ещё лучше ХОРОШЕГО ДВУХКАНАЛЬНОГО блока... подробнее...