МК работает от внешнего кварца 20MHz с делителем 2, CLKPR=1; либо от кварца 10MHz без делителя CLKPR=0; Здесь будет рассматриваться вывод изображения при 640x480 60Hz. Принцип работы монитора схож с телевизором, описано в статье http://my-avr.at.ua/publ/1-1-0-25 Только строки выводятся не черезстрочно, а построчно. И сигналы синхронизации разделены: VSYNC - вертикальная синхронизация ~60Гц, при которой луч возвращается в y=0 HSYNC - горизонтальная синхронизация ~31.5КГц, при которой луч возвращается в x=0 Уровень свечения точки устанавливается тремя лучами: R - красный, (0-0.7 вольт) G - зеленый, (0-0.7 вольт) B - синий, (0-0.7 вольт) И частота одной точки ~25.2МГц, в данной статье не будет рассматриваться вывод одной точки, тк МК на способен работать выше 20МГц. При выводе изображения существуют не видимые строки и столбцы, они нужны для задержки для и после синхронизации, возврат луча и тд. от сюда и получается: линии: 480 Ative video + 2 VSYNC + 12 Front porch + 31 Back porch = 525 линий строки: 640 Ative video + 96 HSYNC + 16 Front porch + 48 Back porch = 800 строк частоты: VSYNC = 60Hz HSYNC = 525 * 60 = 31.5KHz PIXEL = 800 * 525 * 60 = 25.2MHz Можно посмотреть здесь http://web.mit.edu/6.111/www/s2004/NEWKIT/vga.shtml Диаграмма VSYNC и HSYNC: Цвет будем выдавать не попиксельно, а линиями, восемь линий на строку. т.е. нам надо выдать уровни на RGB в промежуток 640 строк Пример восьми цветных полос: Градиент от черного к белому из четырех полос: Для установки уровней RGB использовался двух битный ЦАП на двух резисторах. На каждом цвете в мониторе стоит резистор на массу 75Ом. Распиновка VGA: Нужные провода: 1. - R 2. - G 3. - B 6. - GND 7. - GND 8. - GND 10. - GND 13. - HSYNC 14. - VSYNC Схема: Видео теста: monitor.3gp В CVAVR необходимо поставить: C Compiler\Code Generation\Optimize for - SPEED Исходник: Доступно только для пользователей
|