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

 
 
> Не могу победить Tearing effect что я делаю не так.
murmur
сообщение Dec 12 2016, 12:39
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 425
Регистрация: 30-04-11
Пользователь №: 64 708



Коллеги, выполняю заливку разными цветами на SSD1963 c помощью STM32F4Discovery.

Контроллер SSD1963 обновляет дисплей за 12 мсек.
Дискавери заливает картинку за 22 мсек.
То есть вроде бы 22 мсек меньше чем 12мсек*2 и борьба с фликером возможна.

Что я делаю - отлавливаю TE сигнал, после его спада жду 500 мксек и вывожу картинку.
Осциллограмму прилагаю - синий график - это импульсы TE, идущие из SSD1963, красные импульсы - по фронту - начало заливки, по спаду - окончание заливки.


Код вот, если что
Код
while(1)
{    
    

    while(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_13)==0) {}
    while(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_13)==1) {}
    delay_us(500);
           GPIO_SetBits(GPIOD, GPIO_Pin_12);
             SSD1963_FillScr(GUI_RED);
         GPIO_ResetBits(GPIOD, GPIO_Pin_12);
    delay_ms(50);

  while(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_13)==0) {}
    while(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_13)==1) {}
    delay_us(500);
        GPIO_SetBits(GPIOD, GPIO_Pin_12);
        SSD1963_FillScr(GUI_GREEN);
       GPIO_ResetBits(GPIOD, GPIO_Pin_12);
    delay_ms(50);
    
    while(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_13)==0) {}
    while(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_13)==1) {}
      delay_us(500);
        GPIO_SetBits(GPIOD, GPIO_Pin_12);
        SSD1963_FillScr(GUI_BLUE);
    GPIO_ResetBits(GPIOD, GPIO_Pin_12);
    delay_ms(50);
}



Мерцание есть. Визуально - две косые линии на весь экран.

Что делать и кто виноват?

Сообщение отредактировал murmur - Dec 12 2016, 12:40
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
murmur
сообщение Dec 12 2016, 14:56
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 425
Регистрация: 30-04-11
Пользователь №: 64 708



Хм... наверное все.таки в направлении заполнения проблема. У меня чужой код и как.то сразу насторожило, что заполняется вертикальными линиями справа налево. Вернусь домой проверю.
Не знаю, почему вы решили, что у меня заполнение шесть кадров. По осциллограмме же видно, что два кадра. Частота обновления примернл 80 герц, исходя опять таки из частоты сигнала ТЕ на осциллограмме
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 12 2016, 15:59
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(murmur @ Dec 12 2016, 17:56) *
Хм... наверное все.таки в направлении заполнения проблема. У меня чужой код и как.то сразу насторожило, что заполняется вертикальными линиями справа налево. Вернусь домой проверю.
Не знаю, почему вы решили, что у меня заполнение шесть кадров. По осциллограмме же видно, что два кадра. Частота обновления примернл 80 герц, исходя опять таки из частоты сигнала ТЕ на осциллограмме

В приведённом Вами коде видно, что Вы 3 раза синхронизируетесь с сигналом TE и каждый раз выводите один из цветов RGB. Как я понял - это и есть вывод всего кадра, видимо каждая цветовая компонента выводится отдельно.
Документации на экран я не смотрел, исходников Ваших не видел, и Вы когда написали про 22 мс и привели этот кусок не указали - откуда и до куда 22 мс (где Вы устаналиваете в 1 красный сигнал, а где - в 0?) и где весь кадр? Гадать на кофейной гуще не умею, сорри.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 8th August 2025 - 23:08
Рейтинг@Mail.ru


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