Таймер не работает

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
TEPEM
Нашел транзистор. Понюхал.
Сообщения: 153
Зарегистрирован: Чт дек 05, 2019 16:28:11
Откуда: Самара

Re: Таймер не работает

Сообщение TEPEM »

Да и уж пока Вы не спите, вывожу буквы функцией,(int х, int у, char 'текст', char RGB ), в char же только один символ влезет, значит надо безразмерный массив? А потом из чар доставать буквы их номером из таблицы, верно?
Вот спасибо! Сейчас ознакомлюсь

Добавлено after 5 minutes 48 seconds:
Получается пересылая 24 бита я как бы пересылал 18 бит, а 16 так и были 16, правильно?
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Таймер не работает

Сообщение VladislavS »

[uquote="TEPEM",url="/forum/viewtopic.php?p=3756850#p3756850"]в char же только один символ влезет, значит надо безразмерный массив?[/uquote]Есть такая вещь - строка. В K&R наверняка про это пишут...

Добавлено after 2 minutes 3 seconds:
[uquote="TEPEM",url="/forum/viewtopic.php?p=3756850#p3756850"]Получается пересылая 24 бита я как бы пересылал 18 бит, а 16 так и были 16, правильно?[/uquote]Я не знаю, проекта не видел. Тот код что ты случайно засветил конвертирует 24 бита в RGB565 и передаёт как 16 бит. Что будет, если на вход этого алгоритма подать 16 бит - ХЗ.

Блин, вечер перестаёт быть томным. Приходится объяснять автору кода что же он там напрограммировал :)
Реклама
Аватара пользователя
TEPEM
Нашел транзистор. Понюхал.
Сообщения: 153
Зарегистрирован: Чт дек 05, 2019 16:28:11
Откуда: Самара

Re: Таймер не работает

Сообщение TEPEM »

Я попытался переделать код, чтобы получить 18 бит, но цвета поплыли(
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Таймер не работает

Сообщение Reflector »

[uquote="TEPEM",url="/forum/viewtopic.php?p=3756850#p3756850"]Получается пересылая 24 бита я как бы пересылал 18 бит, а 16 так и были 16, правильно?[/uquote]
Чтобы переслать 18 бит или дисплей должен быть подключен по 18-ти битному интерфейсу, а это не так, или нужно отправлять для каждого пикселя данные два(или три) раза, например, по 9 бит, естественно еще и переделав инит дисплея, чего у тебя тоже нет. Следовательно у тебя в обоих случаях 16 бит, но в одном случае данные преобразованы неправильно.
Последний раз редактировалось Reflector Пн дек 16, 2019 15:10:15, всего редактировалось 1 раз.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
TEPEM
Нашел транзистор. Понюхал.
Сообщения: 153
Зарегистрирован: Чт дек 05, 2019 16:28:11
Откуда: Самара

Re: Таймер не работает

Сообщение TEPEM »

Я понял, спасибо) Очень много ресурсов сжирает простецкая анимация, надо конвертировать файл сразу в 565, пойду займусь этим
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Таймер не работает

Сообщение VladislavS »

[uquote="TEPEM",url="/forum/viewtopic.php?p=3756790#p3756790"]только с прогой могут быть проблемы[/uquote]Всё украдено до нас. http://www.cyberforum.ru/beta-testing/thread2114715.html
Реклама
Аватара пользователя
TEPEM
Нашел транзистор. Понюхал.
Сообщения: 153
Зарегистрирован: Чт дек 05, 2019 16:28:11
Откуда: Самара

Re: Таймер не работает

Сообщение TEPEM »

Вот конвертировал прогой в RGB565 сразу и вот в сравнении две фотки.
СпойлерИзображение
Добавлено after 4 minutes 33 seconds:
Кстати скорость обработки внешних процессов не изменилась у него. Там сердечки по очереди появляются, причем я не отрисовываю заново всю сцену, сделал функцию, ей передается координаты по которым она рисует мелкий полигон по размерам сердечка и высчитывает какие адреса цветов должны быть в этом месте, пол дня убил на нее)
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Таймер не работает

Сообщение VladislavS »

Покажи алгоритмы которыми ты выводишь RGB888 и RGB565.
Аватара пользователя
TEPEM
Нашел транзистор. Понюхал.
Сообщения: 153
Зарегистрирован: Чт дек 05, 2019 16:28:11
Откуда: Самара

Re: Таймер не работает

Сообщение TEPEM »

888 я вообще не вывожу, я так по быстрому попробовал, но не выходит, выше вон подсказали почему.
У меня массив в 24 бита содержит группы по три адреса

const unsigned short picture1[] =
{
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF и т.д.

Рисую так

Код: Выделить всё

void WP(uint16_t Xpos, uint16_t Ypos)
{
  uint8_t parameter1[4], counter1, r, g, b, r8,g8,b8, i1;
  int ih, i;
  uint32_t RGBCode;
          parameter1[0] = 0x00;     
          parameter1[1] = 0x00+Xpos;
          parameter1[2] = 0x00;
          parameter1[3] = 0xEF+Xpos;
          WriteReg(0x2A, parameter1, 4);
          parameter1[2] = 0x00;
          parameter1[0] = 0x00;
       
          
    i=57600; ih=0;
   for(counter1 = 0; counter1 <240; counter1++)    
   {             
          parameter1[1] = 0x00 + counter1+Ypos;// +y 
          parameter1[3] = 0xEF + counter1+Ypos;// +y
          WriteReg(0x2B, parameter1, 4);
          
          WriteReg(0x2C, (uint8_t*)NULL, 0);   
          
          for(i1 = 0; i1 <240; i1++)
          {
            if (i>0)ih = i*3;else ih=3;//i*3; 
            r8 =  picture1[ih-1]; g8 = picture1[ih-2]; b8 = picture1[ih];      
            r = ((r8 & 0xF8) >> 3);
            g = ((g8 & 0xFC) >> 2); 
            b = ((b8 & 0xF8) >> 3); 
            RGBCode = ((uint32_t)(r) << 11) + ((uint32_t)(g) << 5) + ((uint32_t)(b) << 0);
            i--;
            FMC_BANK1->RAM = RGBCode; 
             
          } 
         
   }      
   poligon (0, 0, 45, 15, 0xFFFF);//demo of
}
А в 565 файл сразу дает адрес на цвет

const unsigned short picture[] =
{
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF и т.д.

и рисую так же только без умножения адреса и конвертации.

Код: Выделить всё

void WP(uint16_t Xpos, uint16_t Ypos)
{
  uint8_t parameter1[4], counter1, r, g, b, r8,g8,b8, i1;
  int ih, i;
  uint32_t RGBCode;
          parameter1[0] = 0x00;     
          parameter1[1] = 0x00+Xpos;
          parameter1[2] = 0x00;
          parameter1[3] = 0xEF+Xpos;
          WriteReg(0x2A, parameter1, 4);
          parameter1[2] = 0x00;
          parameter1[0] = 0x00;
       
          
    i=57600; ih=0;
   for(counter1 = 0; counter1 <240; counter1++)    
   {             
          parameter1[1] = 0x00 + counter1+Ypos;// +y 
          parameter1[3] = 0xEF + counter1+Ypos;// +y
          WriteReg(0x2B, parameter1, 4);
          
          WriteReg(0x2C, (uint8_t*)NULL, 0);   
          
          for(i1 = 0; i1 <240; i1++)
          {

            i--;
            FMC_BANK1->RAM = picture[i]; 
             
          } 
         
   }      
   poligon (0, 0, 45, 15, 0xFFFF);//demo of
}
Полигон в конце закрывает надпись "демо" заботливо подставленную программой

Добавлено after 3 minutes 18 seconds:
У меня джостик позволяет инкрименировать/дикриминировать переменную и выводить ее на экран, чтобы можно было что то подрегулировать в процессе. Вот до анимации оно быстро работало, а теперь инкриминант занимает пару секунд

А вот сама анимашка
Спойлерvoid kysbWP(uint16_t xn, uint16_t yn, uint16_t xk, uint16_t yk)
{
uint8_t parameter1[4], counter1, r, g, b, r8,g8,b8, i1, xr, yr;
xr = xk - xn;
yr = yk - yn;
int ih, i;
uint16_t RGBCode;
parameter1[0] = 0x00;
parameter1[1] = 0x00 + xn;//+Xpos
parameter1[2] = 0x00;
parameter1[3] = 0xEF + xn;//+Xpos
WriteReg(0x2A, parameter1, 4);
parameter1[2] = 0x00;
parameter1[0] = 0x00;


ih=0;
for(counter1 = 0; counter1 <yr; counter1++)
{
parameter1[1] = 0x00 + counter1 + yn;// +y +Ypos
parameter1[3] = 0xEF + counter1 + yn;// +y+Ypos
WriteReg(0x2B, parameter1, 4);

WriteReg(0x2C, (uint8_t*)NULL, 0);
i = ((239 - (yn + counter1)) * 240 )+ (240 - xn);//номер точки i=57600;

for(i1 = 0; i1 < xr; i1++)
{

if (i>0)ih = i*3;else ih=3;//i*3;
r8 = picture1[ih-1]; g8 = picture1[ih-2]; b8 = picture1[ih];
r = ((r8 & 0xF8) >> 3);
g = ((g8 & 0xFC) >> 2);
b = ((b8 & 0xF8) >> 3);
RGBCode = ((uint16_t)(r) << 11) + ((uint16_t)(g) << 5) + ((uint16_t)(b) << 0);
i--;
FMC_BANK1->RAM = RGBCode;

}

}
}
Спойлерwhile (1)
{
if((GPIOF->IDR & 32768)==32768) // джостик up
{ i++; poligon (167, 219, 239, 239, 0xFFFF); Ciferki(165, 220, i, 0x0000); delay(10); } //xn, yn, xk, yk, rgb

if((GPIOA->IDR & 1)==1) //нажатие джостик
{ WP(0, 0); delay(1500);}

if((GPIOF->IDR & 16384)==16384) //down джостик
{ i--; poligon (167, 219, 239, 239, 0xFFFF); Ciferki(165, 220, i, 0x0000); delay(10); }



kysbWP(172, 118, 198, 150);
delay(2000);
poligon (172, 118, 198, 150, 0xFFFF); //niz serd
kysbWP(180, 153, 211, 189);
delay(3000);
poligon (180, 153, 211, 189, 0xFFFF); //verh serd
kysbWP(220, 153, 239, 175);
delay(2000);
poligon (220, 153, 239, 175, 0xFFFF); //lev serd
// Bykovko(50, 50, 29, 0xF00F);


}
Последний раз редактировалось TEPEM Пн дек 16, 2019 15:52:39, всего редактировалось 1 раз.
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Таймер не работает

Сообщение Reflector »

Пока еще много лишнего, функция отрисовки должна выглядеть так:

Код: Выделить всё

void drawBitmap(const uint16_t* arr, uint32_t x, uint32_t y, uint32_t width, uint32_t height)
{
    setWindow(x, y, width, height);

    for (uint32_t i = 0; i < width * height; i++)
        FMC_BANK1->RAM = *arr++;
}
Если все правильно настроено, то не нужно в конце каждой строки задавать координаты для следующей.

ps. Скинь гифку, попробую с ней поиграться...
Аватара пользователя
TEPEM
Нашел транзистор. Понюхал.
Сообщения: 153
Зарегистрирован: Чт дек 05, 2019 16:28:11
Откуда: Самара

Re: Таймер не работает

Сообщение TEPEM »

https://yadi.sk/i/X5MkhQGYO_BtuA гиф и жпег режут качество
https://yadi.sk/i/OxLZ0Jrl9u9p6g размер 240х240 как у меня, что характерно в виде файла С она весит как 600х600 бмп
Там такое дело, чтобы вывести точку, надо сначала установить курсор а это 2 WriteReg как минимум. потом еще один, сказать что это будет точка, а только потом цвет и все.

С Линиями проще но только по оси х, там один курсор + wreg выбора линии и потом до конца строки только цвет кидаешь.
Последний раз редактировалось TEPEM Пн дек 16, 2019 15:56:23, всего редактировалось 1 раз.
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Таймер не работает

Сообщение Reflector »

[uquote="TEPEM",url="/forum/viewtopic.php?p=3756889#p3756889"]https://yadi.sk/i/X5MkhQGYO_BtuA гиф и жпег режут качество[/uquote]
Только это не анимация, а статичная картинка 600x600. По крайней мере понятно откуда взялся 1 МБ :)

Добавлено after 4 minutes 31 second:
[uquote="TEPEM",url="/forum/viewtopic.php?p=3756889#p3756889"]Там такое дело, чтобы вывести точку, надо сначала установить курсор а это 2 WriteReg как минимум. потом еще один, сказать что это будет точка, а только потом цвет и все.[/uquote]
Да, так придется делать когда нужно нарисовать одиночную точку, но насколько часто в этом есть необходимость? Очень редко, обычно вся работа идет с прямоугольными областями.
С Линиями проще но только по оси х, там один курсор + wreg выбора линии и потом до конца строки только цвет кидаешь.
Без разницы какая ось, если задать окно шириной 1 пиксель, то можно нарисовать вертикальную линию точно так же, как и горизонтальную.
Аватара пользователя
TEPEM
Нашел транзистор. Понюхал.
Сообщения: 153
Зарегистрирован: Чт дек 05, 2019 16:28:11
Откуда: Самара

Re: Таймер не работает

Сообщение TEPEM »

Не, анимация у меня уже работает на камне, метр взялся не от туда, совпадение
А где про команды почитать? Я бездумно передаю, отталкиваясь от точки и линии, их подглядел в примере
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Таймер не работает

Сообщение VladislavS »

[uquote="TEPEM",url="/forum/viewtopic.php?p=3756893#p3756893"]А где про команды почитать?[/uquote]Даташит на индикатор, не?

Попробуй вот этот массив на весь экран просто как 240x240 RGB565 без преобразований 16-битными словами вывести. Не должно быть разницы с оригиналом.
Вложения
lis.zip
(31.66 КБ) 283 скачивания
Последний раз редактировалось VladislavS Пн дек 16, 2019 16:10:28, всего редактировалось 1 раз.
Аватара пользователя
TEPEM
Нашел транзистор. Понюхал.
Сообщения: 153
Зарегистрирован: Чт дек 05, 2019 16:28:11
Откуда: Самара

Re: Таймер не работает

Сообщение TEPEM »

Отсутствие сна сказывается, пардон(
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Таймер не работает

Сообщение Reflector »

[uquote="TEPEM",url="/forum/viewtopic.php?p=3756893#p3756893"]А где про команды почитать? Я бездумно передаю, отталкиваясь от точки и линии, их подглядел в примере[/uquote]
Какие команды? У тебя все необходимое уже есть, единственное я не уверен, что при текущих настройках в конце строки автоматически выполнится переход на строку ниже, а не выше. А в остальном все элементарно, задал окно и заполнил данными, если окно высотой или шириной 1 пиксель, то получится линия, хотя формально это тот же прямоугольник...
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Таймер не работает

Сообщение VladislavS »

Между нами девочками, вот эти две строки делают одно и то же (r и r8 определены как uint8_t )

Код: Выделить всё

r = ((r8 & 0xF8) >> 3);
r = r8 >> 3;
Аватара пользователя
TEPEM
Нашел транзистор. Понюхал.
Сообщения: 153
Зарегистрирован: Чт дек 05, 2019 16:28:11
Откуда: Самара

Re: Таймер не работает

Сообщение TEPEM »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3756901#p3756901"]Попробуй вот этот массив на весь экран просто как 240x240 RGB565 без преобразований 16-битными словами вывести. Не должно быть разницы с оригиналом.[/uquote]

Да! Но есть интрига! Какого??? Ведь это тоже самое что и я загружал как минимум 2 раза

[uquote="VladislavS",url="/forum/viewtopic.php?p=3756916#p3756916"]Между нами девочками, вот эти две строки делают одно и то же (r и r8 определены как uint8_t )

Код: Выделить всё

r = ((r8 & 0xF8) >> 3);
r = r8 >> 3;
[/uquote]

А тут еще оператор "и", он что то выбивает наверное?
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Таймер не работает

Сообщение VladislavS »

Выбивала моя бабушка узоры на белье. Те биты, которые обнуляются наложением маски, ты тут же сдвигая выкидываешь. Зачем, спрашивается, их было обнулять?
Аватара пользователя
TEPEM
Нашел транзистор. Понюхал.
Сообщения: 153
Зарегистрирован: Чт дек 05, 2019 16:28:11
Откуда: Самара

Re: Таймер не работает

Сообщение TEPEM »

Чуток резвее заработало. У меня джостик просто в цикле основном опрашивается, я его если на внешние прерывания посажу, по нажатию лагать будет построение картинки да?

Этот код я честно позаимствовал из примера, там есть проблемы с конвертацией РГБ, поэтому не стал свое городить. Вот с маской интересная штука, возьму на вооружение

Т.е. там написано, что все биты не совпадающие с битами маски обнуляться правильно?
Ответить

Вернуться в «ARM»