Схема генератора телевизионных сигналов на микроконтроллере. Генератор видеосигнала на микроконтроллере измерения. Алгоритм работы устройства

Таймер формирует временные интервалы заданной длительности, Счетчик 1 считает эти импульсы, и при необходимости меняет временные интервалы, генерируемые таймером. Счетчик 2 отсчитывает нужное количество импульсов и, досчитав да заданного значения, останавливает таймер.

Алгоритм работы устройства

Таймер Т1 формирует временные интервалы заданной длительности, по окончанию интервала он формирует прерывание, в котором его значения обновляется. Таким образом, можно сформировать любую последовательность импульсов с любыми параметрами (период, длительность, скважность).

Подпрограмма прерывания начинается с проверки – не последний ли это импульс, если последний,таймер останавливается. Если не последний, производится проверка, это имульс или пауза между импульсми (длительность импульса - 2500 мкс, длительность паузы - 7500 мкс), таким образом, поочередно формируются временные интервалы импульса и паузы.

Описание режима CTC

Режим сброса таймера при совпадении (СТС)


Рис. 1. Блок-схема T0

В режиме СТС (WGM01, WGM00 = 0b10) регистр OCR0 используется для задания разрешающей способности счетчика. Если задан режим CTC и значение счетчика (TCNT0) совпадает со значением регистра OCR0, то счетчик обнуляется (TCNT0=0). Таким образом, OCR0А задает вершину счета счетчика, а, следовательно, и его разрешающую способность. В данном режиме обеспечивается более широкий диапазон регулировки частоты генерируемых прямоугольных импульсов.

В режиме сброса таймера при совпадении (WGMn3-0 = 0b0100 или 0b1100) пределы счета таймера задаются регистром OCR0A. В режиме СТС происходит сброс счетчика (TCNT0), если его значение совпадает со значением регистра OCR0A. В данном режиме обеспечивается возможность регулировки частоты генерируемых прямоугольных импульсов. Временная диаграмма работы таймера врежиме СТС показана на рисунке 1. Счетчик (TCNTn) инкрементирует свое состояние до тех пор, пока не возникнет совпадение со значением OCR0A , а затем счетчик (TCNT0) сбрасывается.


Рис. 2 Временные диаграммы режима СТС

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

Для генерации сигнала в режиме CTC выход OC0A может использоваться для изменения логического уровня при каждом совпадении, для чего необходимо задать режим переключения (COM0A1, COMA0 = 0b01). Значение OC0A будет присутствовать на выводе порта, только если для данного вывода задано выходное направление. Максимальная частота генерируемого сигнала равна fOC0 = fclk_I/O/2, если OCRnA = 0x0000. Для других значений OCRn частоту генерируемого сигнала можно определить по формуле:

где переменная N задает коэффициент предделителя (1, 8, 32, 64, 128, 256 или 1024).

Программа

Include"m16def.inc"

rjmp RESET ; ResetHandler

reti; IRQ0 Handler

reti;;rjmp EXT_INT1 ;IRQ1 Handler

reti;reti;jmp ;TIM2_COMP; Timer2 Compare Handler

reti;;reti;jmp ;TIM2_OVF; Timer2 Overflow Handler

reti; ;reti;jmp;TIM1_CAPT ; Timer1 Capture Handler

jmp TIM1_COMPA ; Timer1CompareA Handler

reti;reti;jmp;TIM1_COMPB ; Timer1 CompareB Handler

reti;reti;jmp ;TIM1_OVF; Timer1 Overflow Handler

reti;;reti;jmp ;TIM0_OVF; Timer0 Overflow Handler

reti;;reti;jmp ;SPI_STC; SPI Transfer Complete Handler

reti;;reti;jmp;USART_RXC ; USART RX Complete Handler

reti;;reti;jmp;USART_UDRE ; UDR Empty Handler

reti;reti;jmp ;USART_TXC; USART TX Complete Handler

reti;reti;jmp ;ADC ; ADCConversion Complete Handler

reti;reti;jmp ;EE_RDY ;EEPROM Ready Handler

reti;reti;jmp ;ANA_COMP; Analog Comparator Handler

reti;reti;jmp ;TWSI ;Two-wire Serial Interface Handler

reti;reti;jmp ;EXT_INT2; IRQ2 Handler

reti; Timer0 CompareHandler

reti;reti;jmp SPM_RDY ;Store Program Memory Ready Handler

ldi r16,high(2500)

ldi r16,low(2500)

ldir16,(1<

ldir16,(1<

ldir16,(1<

ldi r16,high(RAMEND)

ldi r16,low(RAMEND)

out SPL,r16 ;èíèöèàëèçàöèÿ ñòåêà

sei ;ðàçðåøåíèå ïðåðûâàíèé

main: ;îñíîâíîé öèêë

ldi r16,high(2500)

ldi r16,low(2500)

ldi r16,high(7500)

ldi r16,low(7500)

После запуска микроконтроллера происходит процедура инициализации (RESET), в этой подпрограмме последовательно:

Настраиваются порты ввода-вывода (порт D настраивается на вывод)

Настраивается работа таймера Т1:

Загружаетсячисло (2500) в регистр сравнения

Вывод OC1A настраивается на «переворачивание» уровня при совпадениисчетного регистра и регистра сравнения (OCR1A)

Задается режим работы (сброс по совпадению) и источник тактового сигнала (без предделителя, от системного тактового сигнала)

Разрешается работа прерывания по совпадению Т1

Инициализируется стек (настраивается вершина стека)

Разрешаются прерывания.

На этом инициализация контроллера завершена. Далее счетчик команд «уходит» в основной цикл.

При возникновении прерывания, запускается подпрограмма обработки прерывания TIM1_COMPA, она начинается с увеличения количества прерываний (задана последовательность из восьми импульсов, а это 16 «переворачиваний уровня»), число прерывания сравнивается с 16, и, если равно, запускается подпрограмма out_pulse. В ней останавливается таймер (обнулением управляющих регистров микроконтроллера). Если же число прерываний меньше 16, программа продолжается далее. Производится проверка флага breq pulse, и, если он установлен, запускается подпрограмма pulse, в которой обновляется регистр сравнения (загружается число 7500), и флаг сбрасывается. Таким образом, по наличию флага, поочередно загружаются числа 2500 и 7500, и на выводе OC1A формируется последовательность со скважностью 4 (по заданию).


Результаты моделирования схемы в программе PROTEUS

И
Оказывается для генерации видеосигнала достаточно всего одной микросхемы и двух резисторов. То есть можно сделать буквально карманный генератор видеосигнала размером с брелок. Такой прибор пригодится телемастеру. Его можно использовать при сведении кинескопа, регулировке чистоты цвета и линейности.

Работа генератора и его характеристики.
Генератор подключается к видеовходу телевизора, обычно это разъем типа "тюльпан" или .
Прибор генерирует шесть полей:
- текстовое поле из 17 строк;
- сетка 8x6;
- сетка 12x9;
- мелкое шахматное поле 8x6;
- крупное шахматное поле 2x2;
- белое поле.

Текстовое поле. Сетка 8x6. Сетка 12x9.
Шахматное поле 8x6. Шахматное поле 2x2. Белое поле.
Переключение между полями осуществляется кратковременным (длительностью менее 1с.) нажатием кнопки S2. Удержание этой кнопки в нажатом состоянии более длительное время (дольше 1 с.) приводит к выключению генератора (микроконтроллер переходит в состояние "SLEEP"). Включение генератора производится нажатием кнопки S1. О состоянии прибора (включен / выключен) сигнализирует светодиод.
Технические характеристики прибора:
- тактовая частота - 12 МГц;
- напряжение питания 3 - 5 В;
- ток потрребления в рабочем режиме:
. - при напряжении питания 3В - около 5мА;
. - при напряжении питания 5В - около 12мА;
- частота кадров - 50 Гц;
- число строк в кадре - 625.

Для формирования видеосигнала используется нулевой бит PORTA и целиком весь PORTB. (Этот порт работает в сдвиговом режиме. Несмотря на то, что сигнал снимается только с его нулевого бита, программа использует его весь. Поэтому все биты PORTB настроены как выходы.) Первый бит PORTA используется для индикации состояния генератора. Когда прибор включен, - светодиод горит. Когда прибор выключен, - светодиод погашен. Третий бит PORTA используется для переключения режимов работы генератора и его выключения. Кратковременное нажатие кнопки S2 позволяет перейти от одного поля генератора к другому. При удержании этой кнопки в нажатом состоянии дольше 1 с. прибор выключается (микроконтроллер переходит в состояние "SLEEP"). Чтобы включить генератор необходимо выполнить сброс. Это осуществляется нажатием кнопки S1. Напряжение питания прибора можно выбрать в пределах 3 - 5 В. При этом соответственно должны быть подобраны номиналы резисторов.
3В...– R5=456Ом и R6=228Ом
3,5В – R5=571Ом и R6=285Ом
4В...– R5=684Ом и R6=342Ом
4,5В – R5=802Ом и R6=401Ом
5В...- R5=900Ом и R6=450Ом
Здесь указаны расчетные значения. Реально можно ставить резисторы из стандартного ряда, например для 5В - 910Ом и 470Ом, а для 3В - 470Ом и 240Ом.
Напряжение питания генератора может быть и меньше 3В. Для каждого конкретного PICа минимум следует определять эксперементально. У меня, например, 20МГц-й PIC выпуска 2001 года работал и при 2,3 В.

Прграмма.
Программа формирует 6 полей. Каждое поле состоит из 301 строки (300 информационных строк + одна черная). Вообще расчетное число – 305 (625 строк растра - 15 строк кадровой синхронизации = 610. Информация в кадре выводится через строку (подробнее об этом смотри здесь), поэтому 610 / 2 = 305). Но при таком числе строк размер растра по вертикали получается немного больше того, что формирует видеосигнал, передаваемый телецентром.
Первая строка в каждом поле черная. В это время опрашивается состояние кнопки S2, вычисляется время удержания ее в нажатом состоянии и определяется необходимость перехода от одного поля к другому.
В графических полях есть небольшие искажения вертикальных линий. Это связано с тем, что длина некоторых строк на пару тактов больше остальных из за необходимости установления счетчиков циклов. Вцелом подпрограммы, формирующие графические поля, очень просты, поэтому нет необходимости их коментировать.
Подробнее разберем ту часть программы, которая формирует текстовое поле. Это наиболее сложный участок программы, занимает большую ее часть, использует максимум ресурсов микроконтроллера (вся память данных и значительная часть ОЗУ). Здесь используются фрагменты кода, взятые из игры Pong , которую написал Rickard Gunee.
Текстовое поле состоит из 17 строк, каждая из которых может состоять не более, чем из восьми символов. Символы отображаются через строку, то есть одна строка текста занимает 17 строк растра. (Такое отображение связано с ограниченными возможностями PIC .) Информация о графике символов хранится в памяти программ в разделе таблица. Например букве "Т" соответствует такой фрагмент кода: ;Т Смещение 0x88
retlw 0x7F ;.ШШШШШШШ retlw 0x49 ;.Ш..Ш..Ш retlw 0x49 ;.Ш..Ш..Ш retlw 0x08 ;....Ш... retlw 0x08 ;....Ш... retlw 0x08 ;....Ш... retlw 0x08 ;....Ш... retlw 0x3E ;..ШШШШШ.

Информация о тексте строк хранится в памяти данных (64 слова = 8 строк по 8 символов). Например в строке 08h (адресами от 08h до 0Fh) записано следующее:.20.60.48.50.90.58.20 20. Каждое значение - это координата (смещение от начала) символа в таблице. Значение.20. соответствует пробелу, .60. - буква "В", .48. - буква "И", и так далее. А все вместе образует "_ВИДЕО__".
Разберем на примере, как выводится текст. Согласно программе, в 12-й текстовой строке экрана необходимо вывести информацию, на которую ссылается строка памяти данных 28h (A0 B8 68 C8 D8 70 E0 D0). Таким образом, в следующих 17 строках растра должен быть выведен текст: " p i c 1 6 f 8 4 ". Это происходит следующим образом. В первой из 17 строк выводится только черный уровень. В эти 64 мкс, пока на экране отображается черная строка, в регистры ОЗУ переписываются "верхние значения" символов: 00h.от "p", 08h от "i", 00h от "c" 18h от "1" и так далее. Во время следующей строки эти данные последовательно передаются в PORTB, то есть на видеовыход. Третья строка снова черная. За время ее выполнения, в буфер переписываются "вторые сверху" значения символов: 00h.от "p", 00h от "i", 00h от "c" 1Ch от "1"… В четвертой строке эти данные выводятся на экран. И так далее, пока вся строка не будет отображена.
Подпрограмма кадровой синхронизации целиком взята из игры Pong, которую написал Rickard Gunee . Эта подпрограмма короткая, но довольно запутанная. Если объяснять, как она работает то, получится еще длиннее и запутаннее. Лучше всего положить рядом текст подпрограммы и рисунок осциллограммы кадровых синхроимпульсов, и не торопясь разобрать каждую строку кода. Скажу только, что подпрограмма начинает выполняться не с верхней строчки, а из середины (:-)), от метки "vertsync".

Разгон PIC16F84.
Как видно из схемы в этом проекте микроконтроллер работает на частоте 12МГц. На сегодняшний день выпускаются три версии PIC16F84: на 4МГц, на 10МГц и на 20МГц. (на 1.1.2002 соотношение цен приблизительно такое: $3.5, $5.3 и $6.3) В своем проекте Pong Rickard Gunee утверждает, что использовал 4МГц-е PIC16F84 и они часами работали на частоте 12МГц без проблем. Я попробовал, и действительно 4МГц-й PIC нормально работает на частоте, которая в три раза (!!!) превышает его допустимую частоту (правда я не стал испытывать судьбу и включал генератор лишь на несколько минут). При этом у 4МГц-го PICа потребляемый ток был на 10 .. 20 % больше, чем у 20МГц-го (отсюда, видимо и ограничение по частоте). Думаю, что 10МГц-й микроконтроллер можно разгонять до 12МГц без риска, но в коммерческих проектах этого, конечно же, делать не стоит.

Изготовление.
Скачать архив проекта (схема + ".asm" файл + ."hex" файл = 11,7 КБайт) можно . Не забудьте записать информацию о текстовом поле в память данных. О том, как это сделать, сказано в ".asm" файле.

Принципиальная схема и фото несложного пробника (генератора испытательного сигнала), предназначенного для проверки и настройки телевизоров.

Пробник-генератор ТВ сигнала собран на основе микроконтроллере серии pic12f629, и по совокупности габаритов, потребления тока, стоимости изготовления прибора и функционалу для телемастера, просто незаменим. Напряжение питания 3 вольта, т.е. две пальчиковые батарейки. Ток потебления в режиме генерации 11 миллиампер, в режиме сна - всего 3 микроампера.

Принципиальная схема ТВ генератора сигнала

Рисунок печатной платы


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


К статье прилогается архив, в котором есть схема, плата пробника, две прошивки. На видео видно, что у меня на телевизоре картинка слегка не линейна - это потому, что телевизору 12 лет, а может что-то в видеовходе не то. Приветствую всех!
Уважаемые посетители сайта, хочу предложить Вам схему и печатную плату ГТИС (генератора телевизионных испытательных сигналов),который я сделал год назад по просьбе товарища.Была поставлена задача разработать печатную плату,которая должна
вмещаться в корпус "Ranitsa RP-201".(часы - радиоприемник).Т.к. я в свое
время уже собирал универсальный генератор испытательных телевизионных сигналов (версия 2.0 "Радиолюбитель" 1999г. №5 стр.5. Авторы:Chirkov & Larionov)
решил за базовый вариант использовать схему версии 3 (м/c CXA1645M-кодер PAL,
TDA8505 - кодер SECAM)
В качестве генератора - формирователя синхросигнала и сигналов испытательных изображений решил попробовать два варианта:
1.генератор тестовых сигналов -автор: Marcelo Maggi


2.малогабаритный генератор телевизионных сигналов.Автор: Александр Мусатов
(выбор необходимого испытательного сигнала осуществляется двумя клавишами)

Проверил на макетке оба варианта,остановился на втором.
Благодаря разработкам Ю.Чиркова,В.Ларионова,А.Мусатова и появился предлагаемый
генератор.Большое спасибо за их труд!
Файл печатной платы в формате Sprint Layout 3.0 и принципиальные схемы
в формате SPlan .
Самой лучшей программой для мелкосерийного "радиолюбительского" производства
печатных плат является русифицированная Sprint Layout 3.0.Нравится мне эта
программа за возможность разводки по рисунку.Сосканированные рисунки плат из
журналов и другой литературы могут быть использованы для восстановления дорожек
платы или переразводки элементов. Для этого необходимо сканировать изображение
(или использовать любой графический файл,переведя в файл *.BMP),оно будет
показано как фоновое на плате.
Программа SPlan 5.0 представляет из себя редактор принципиальных схем, она
поддерживает макросы, как встроеные,так и пользователя.Скачать программы можно
с сайта--
И если даже, вы уже работали с этими программами, рекомендуется прочитать
все разделы руссифицированых файлов помощи до конца, не исключено что вы найдете
неизвестные ранее возможности программ.С этого сайта можно скачать Sprint Layout
4.0 (русская версия)

Используя программу Sprint Layout 3.0,Вы можете изменять мой вариант разводки
печатных плат.(например,у Вас другой силовой трасформатор,диодный мостик,
корпус)
Схема и печатная плата пока так сказать для затравки.(изменен каскад на
тр-ах V5 и V6).В последующем будут выложены файлы (и доработка)
1.Генератор полного цветового телевизионного сигнала на двух микросхемах
Статья из ж. " РЭТ " №5 2003 г. автор:М.Медведев (формат DJVU)
2.Video pattern generator -автор: Marcelo Maggi
3.Зарубежные интегральные видеокодеры
Статья из ж. " Радиоаматор " №1-3 2002 г.автор:С.М.Рюмик (формат DJVU)
4.Даташиты на м/c TDA8505,CXA1645M в формате DJVU (я преобразовал из PDF -
меньше во много раз занимают места).

Генератор предназначен для оценки качества работы и настройки цветных и черно-белых телевизоров. Конечно, в LCD телевизорах настраивать чистоту цвета и сводить лучи нет необходимости, но иногда может потребоваться просто проверить работоспособность телевизора. Предлагаемый генератор ТВ сигналов вырабатывает полный телевизионный сигнал системы SECAM (а с дополнительным кодером – также и PAL), в котором взаимное расположение синхронизирующих и гасящих импульсов строк и полей, уравнивающих импульсов, составляющих сигнала цветовой синхронизации максимально приближены к требованиям стандарта.

В отличие от большинства любительских конструкций TEST TV, генератор формирует чересстрочный растр с числом строк 625. Частота кадров равна точно 50 Гц. Прибор обеспечивает цветовую синхронизацию как по полям, так и по строкам, что позволяет настраивать модули цветности любых модификаций.

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

Схема основной платы генератора ТВ сигналов показана на рисунке. Каждая строка телевизионного растра подразделяется на 64 знакоместа, в любом из которых может быть сформирован уровень синхроимпульса, уровень черного, 8 градаций яркости белого или белая точка. На яркостный сигнал может быть наложена цветовая поднесущая частотой 3900, 4250, 4406 или 4756 кГц. Для отображения одной строки необходимо 64 байта в ПЗУ DD5 типа К573РФ5, К573РФ2 или 2716, которые выбираются шестью младшими разрядами адреса. В DD6 К573РФ4, 2764 или 27128 записывается информация о том, какая именно строка формируется в данный момент. Это определяется разрядами 0...4. Если запрограммирован разряд 5, в соответствующее знакоместо вводятся линии четкости. Разряд 7 используется для ограничения коэффициента пересчета DD1...DD4 до 625. Каждый телевизионный кадр занимает 1 кбайт.

В авторском варианте генератор телевизионных сигналов может формировать следующие тестовые сигналы:
- Cетчатое поле 24x18 – состоит из изображения вертикальных и горизонтальных белых линий, образующих квадраты;
- Шахматное поле – состоит из белых и черных клеток;
- Шахматное поле с линиями четкости – в белые клетки вводятся вертикальные линии четкости;
- Градации яркости – восемь вертикальных полос со ступенчатым убыванием яркости от белого к черному;
- Красное поле;
- Зеленое поле;
- Синее поле;
- Белое поле;
- Белое поле с линиями четкости;
- Горизонтальные цветные полосы – красная, зеленая, синяя, бирюзовая;
- Универсальная испытательная таблица, включает элементы всех вышеперечисленных изображений, позволяет комплексно оценить качество настройки телевизора.

Желающие могут создать свое собственное изображение. Как это сделать читайте в подробном описании. Там же описана конструкция и методика наладки этого генератора ТВ сигналов.