реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> PAL на mega88
maloii
сообщение Dec 29 2008, 18:16
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 29-02-08
Пользователь №: 35 472



Помогите разобраться, что то я совсем запутался в этих сигналах. Хочу для теста сперва вывести вертикальную линию, но толи лыжи не едут толи я тупой. Линию видно но она бегает по горизонтали и немного уходит в верх
Код
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>  
#include <avr/sleep.h>

#define lineTime 1280
int LineCount;

ISR (TIMER1_COMPA_vect) {
    LineCount++;  
  
    if (LineCount==312){
        LineCount = 0;

    }      

    if(LineCount > 305 && LineCount < 309){
        PORTD = 0b01000000;;
        _delay_us(8);
        PORTD = 0b00000000;
    }else{
        PORTD = 0b00000000;
        _delay_us(4);
        PORTD = 0b01000000;
        _delay_us(8);
        PORTD = 0b10000000;

    }
    


    if(LineCount > 100 && LineCount < 150){
        _delay_us(13);

        PORTD = 0b10000000;
        _delay_us(25);
        
    }
    PORTD = 0b01000000;

}
int main(){

      OCR1A = lineTime;     //One PAL line
  
      TCCR1B = (1<<WGM12)|(1<<CS10);     //full speed; clear-on-match
      TCCR1A = 0x00;    //turn off pwm and oc lines
      TIMSK1 = 1<<OCIE1A;        //enable interrupt T1 cmp A
      DDRD=0xC0;        //video out

    PORTD = 0b01000000;

    LineCount = 0;


      sei();
      set_sleep_mode(SLEEP_MODE_IDLE);
      sleep_enable();

    while(1){
        sleep_cpu();
    }

}


От PORTD7 вывел 330 Ом, от PORTD6 1кОм, от них на землю увел 75Ом и место сединения всех 3 резисторов вывел на сигнал PAL.

Чего я не того наворотил? 07.gif Подозреваю что что то с сигналами синхроимпульсов намутил.
Go to the top of the page
 
+Quote Post
VDG
сообщение Dec 29 2008, 18:57
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 845
Регистрация: 10-02-06
Пользователь №: 14 193



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


--------------------
Go to the top of the page
 
+Quote Post
maloii
сообщение Dec 29 2008, 19:21
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 29-02-08
Пользователь №: 35 472



Цитата(VDG @ Dec 29 2008, 21:57) *
тайминг нарушен. выверять нужно до такта, а Вы Си используете smile.gif

А тайминг чего конкретно, я в принципе по аналогии этого способа делаю http://courses.cit.cornell.edu/ee476/video/ , там на си, а вот отрисовку на асме, но мне сперва бы просто полоску нарисовать, а потом буду уже биты считать :-)
Go to the top of the page
 
+Quote Post
Александр Куличо...
сообщение Dec 29 2008, 23:05
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



Цитата(maloii @ Dec 29 2008, 21:21) *
А тайминг чего конкретно, я в принципе по аналогии этого способа делаю http://courses.cit.cornell.edu/ee476/video/ , там на си, а вот отрисовку на асме, но мне сперва бы просто полоску нарисовать, а потом буду уже биты считать :-)


Считать лучше такты smile.gif

Когда-то тоже пробовал выводить видео на ТВ. Скажу одно: выверять нужно не только время от синхроимпульса до конкретной точки изображения, но и время *между* импульсами. Особенно это касается строчного синхроимпульса как более высокочастотного. Разница в 1-2 такта микроконтроллера(16МГц) между ССИ делает из прямой вертикальной линии кривую
Go to the top of the page
 
+Quote Post
Maik-vs
сообщение Dec 31 2008, 08:49
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101



Цитата(Александр Куличок @ Dec 30 2008, 02:05) *
Считать лучше такты smile.gif

Когда-то тоже пробовал выводить видео на ТВ. Скажу одно: выверять нужно не только время от синхроимпульса до конкретной точки изображения, но и время *между* импульсами. Особенно это касается строчного синхроимпульса как более высокочастотного. Разница в 1-2 такта микроконтроллера(16МГц) между ССИ делает из прямой вертикальной линии кривую

+100
И учитывать джиттер прерывания по таймеру от вызова во время одно- и двухцикловых командах. smile.gif Разница в 50нс (20 МГц тактовая) заметна на экране как неровный край буквы. И он мерзко дрожит.
Go to the top of the page
 
+Quote Post
UserM
сообщение Dec 31 2008, 09:45
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 26-02-05
Пользователь №: 2 909



Цитата(Maik-vs @ Dec 31 2008, 10:49) *
И учитывать джиттер прерывания по таймеру от вызова во время одно- и двухцикловых командах. smile.gif


Чтоб этого не происходило прерывание должно всегда "выдёргивать" контроллер из sleep. Т.е. до окончания строки нужно чтоб контроллер уходил спать.

Приведённом коде синхронизация формируется достаточно халявно , т.е. без формированиия уравнивающих импульсов, без учета чередования полей, да и строк должно быть 625 а не два раза по 313. Лучше всего процесс генерации сигнала описан здесь: http://www.rickard.gunee.com/projects/video/pic/howto.php

Удачи.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 14:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01401 секунд с 7
ELECTRONIX ©2004-2016