Atmega32 К Телевизору...

23-11-2012, 22:43 От: admin Посмотрели: 916
Пытаюсь вывести изображение на телевизор..  вроде что-то проясняется на основе этого http://vg.ucoz.ru/pu...impulsy/5-1-0-9



разобрался как двигать белый косячный прямоугольник ....



хотелось бы функцию , чтобы по х у двигало. но delay_us требует только константу..

там чел в 3 статье что-то говорит про таймер... и пишит на ассемблере.. я далек от него) только C (cvavr)

может кто подскажет  что-нибудь.. Atmega32 К Телевизору...

И вот еще тут размышляет чел.. http://vg.ucoz.ru/forum/8-13-1

именно это мне не понятно

Цитата

текущая логика работы программы:



использую таймер Т1

по совпадению с OCR1A - осуществляется вывод синхроимпульсов горизонтальной и вертикальной синхронизации

по совпадению с OCR1B - осуществляется вывод данных строки видео сигнала.



вывод в строку осуществляется через SPI на частоте 8 мгц

как это по SPI ? и что значит по совпадению..)



#include <mega32.h>
#include <delay.h>

#define ZERO PORTC=0 // 0 уровень синхроимпульса
#define BLACK PORTC=1 // 0.3 уровень черного
#define WHITE PORTC=2 // 0.7-1.0 уровень изображения

#define vcol 286 // количество видимых строк изображения

#define shortsyncZ 3 // длительность короткого синхроимпульса
#define shortsyncB 29 // длительность паузы короткого синхроимпульса

#define longsyncZ 27 // длительность длинного синхроимпульса
#define longsyncB 5 // длительность паузы длинного синхроимпульса

unsigned int i;

// подпрограмма генерирующая 5 коротких синхроимпульсов (импульсы последовательности l,m)
// параметр last_p - длительность последней паузы в пачке
// если last_p=0 - последняя пауза стандартные 27
// если last_p!=0 - последняя пауза 61
void shortsi(unsigned int last_p) {

ZERO; delay_us(shortsyncZ);
BLACK; delay_us(shortsyncB);

ZERO; delay_us(shortsyncZ);
BLACK; delay_us(shortsyncB);

ZERO; delay_us(shortsyncZ);
BLACK; delay_us(shortsyncB);

ZERO; delay_us(shortsyncZ);
BLACK; delay_us(shortsyncB);

ZERO; delay_us(shortsyncZ);
BLACK;
if (last_p==0) delay_us(shortsyncB);
else delay_us(61);
}

// подпрограмма генерирующая 5 длинных синхроимпульсов (импульсы последовательности n)
void longsi(void) {
ZERO; delay_us(longsyncZ);
BLACK; delay_us(longsyncB);

ZERO; delay_us(longsyncZ);
BLACK; delay_us(longsyncB);

ZERO; delay_us(longsyncZ);
BLACK; delay_us(longsyncB);

ZERO; delay_us(longsyncZ);
BLACK; delay_us(longsyncB);

ZERO; delay_us(longsyncZ);
BLACK; delay_us(longsyncB);
}

void main(void)
{
DDRC = 1<<DDC0|1<<DDC1; // настроим порты вывода

while(1) { longsi();
for(i=0;i<100;i++) { // пустые строки
ZERO; delay_us(4);
BLACK; delay_us(59);
}
for(i=100;i<250;i++) {
ZERO; delay_us(4);
BLACK;
delay_us(18);
WHITE;
delay_us(6);
BLACK;
delay_us(35);
}
for(i=250;i<vcol+1;i++) { // пустые строки до 311
ZERO; delay_us(4);
BLACK; delay_us(59);
}
}

Раздел: AVR

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться, либо войти на сайт под своим именем.

Обсудить на форуме


На момент добавления Atmega32 К Телевизору... все ссылки были рабочие.
Все публикации статей, книг и журналов, представлены на этом сайте, исключительно для ознакомления,
авторские права на эти публикации принадлежат авторам статей, книг и издательствам журналов!
Подробно тут | Жалоба

Добавление комментария

Ваше имя:*
E-Mail:*
Текст:
Вопрос:
Решите уравнения x+2x=789
Ответ:*
Введите два слова, показанных на изображении:



Опрос

Ваши предпочтения в TRX


Одинарное преобразование
Двойное преобразование
Прямое преобразование
SDR
Другое
Мне всё равно

Календарь новостей
«    Апрель 2024    »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930