Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Генератор ТВ синхроимпульсов
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
ffilin
Программа для формирования синхроимпульсов строчных и кадровых.

Устройство предназначено для создания сетки синхроимпульсов совпадающих с эфирными.
строчечные импульсы подстраиваются с помощью управляемого задающего генератора.
Кадровые путём деления строчечных. с пропуском или добавлением ещё одного строчечного импульса.
Входная частота получается из 16 МГц делением на 4-е. т.е. ATtiny13 тактируется 4 МГц.

Данный контроллер входит в состав Вывод "бегущей строки" посредством помехи

https://www.youtube.com/watch?v=9d4xFLEtIzE

Аналогичная тема на другом ресурсе





Исходник на BASCOM

CODE
'программа Генерируеит вертикальную 50+-0,5 гц горцзонтальную 15625 гц

$regfile = "ATtiny13.DAT" ' тип процессора
'$crystal = 12000000 ' частота кварца
'$baud = 115200 ' скорость связи

'-------------------------------------------------------------------------------
' соответствие электрических цепей выводам портов
'-------------------------------------------------------------------------------

'-------------------------------------------------------------------------------
' константы
'-------------------------------------------------------------------------------
'Const T1 = 7 ' период
Const T2 = 48 ' минимальный период



'-------------------------------------------------------------------------------
' переменные
'----------------------------------------------------------------------
Dim T_1 As Byte ' период
Dim T_2 As Byte ' период 'max U'
Dim T_3 As Byte ' период стабилизации
Dim T_4 As Byte
'Dim M As Bit ' режим
Dim N As Byte ' kadr
'Dim Tmpi As Byte '
'Dim Tmpu As Byte '
'Dim Hsync As Byte
Dim Vsync As Byte '
'Dim Adc02 As Word '
'Dim U_hsync As Byte 'горцзонтальную
Dim U As Byte 'вертикальную



'============================================================================
===
' начало программы
'-------------------------------------------------------------------------------
' вектор прерывания по сбросу (начало программы)
Startmodule:


Resetwd: ' сброс по сторожевому таймеру
' resetFlag = MCUCSR
' MCUCSR.WDRF = 0

Configmodule:

Init:

'внутреннее сопротивление
'0 - 100кОм(в микроконтроллер)
'1- низкое (измикроконтроллера)
'подтягивание
'1 - к плюсу
'0 - на нуле

Ddrb = &B00000011 '1 где шим
Portb = &B00000000


Tccr0a = &B11000011
'Tccr0b = &B01001001 'f0 коэффициент деления 1
Tccr0b = &B10000001 'f0 коэффициент деления 1

'Ocr0a = 16 ' Ocr0a - период в режиме 3 fast PWM
'Ocr0b = 16 ' Ocr0b - длительность в режиме 3 fast PWM


'Admux = 0
Adcsra = &B10000101 ' включение АЦП

'T = Tmax ' мин частота
'Set N ' увеличене частоты
'Reset Portb.0 ' режим поджига
'Reset R

'Uold = 0
'Tw = Twmin
'Told = 0


On Timer0 Timer0_int
'Повесить подпрограмму на прерывание.
Config Watchdog = 2048


Start Watchdog
Enable Interrupts
' разрешить работу прерываний
Enable Timer0
Ocr0a = T2
N = 0

Main:

Admux = &B00100010 ' REF=Vcc, ADC=2 (напряжение)

Set Adcsra.adsc ' запуск измерения
While Adcsra.adsc = 1 ' ожидание конца измерения
Delay
Wend
U = Adch

Shift U , Right , 5
T_3 = 102 + U '+4 ADC
T_4 = 7 + T_3

Shift U , Right , 1
T_1 = 48 + U '+2 ADC
T_2 = 7 + T_1

Reset Watchdog
'If R = 1 Then Reset Watchdog

'If Vsync > 56 And N = 1 Then Reset R

Goto Main

Timer0_int:
Disable Interrupts
Incr Vsync

If Vsync = 255 Then Incr N

If N = 1 Then
If Vsync = T_1 Then Reset Portb.1
If Vsync = T_2 Then
Set Portb.1
' Vsync = 0
End If
End If

If N = 2 Then
If Vsync = T_3 Then Reset Portb.1
If Vsync = T_4 Then
Set Portb.1
Vsync = 0
N = 0
End If
End If


Enable Interrupts
Return
Aldec
www.betatvcom.dn.ua/CDS.shtml
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.