Таймер не работает
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Таймер не работает
[uquote="TEPEM",url="/forum/viewtopic.php?p=3756934#p3756934"]Чуток резвее заработало.[/uquote]А если ещё послушаешь что Reflector говорит, то на 100 FPS выйдешь. 
- Реклама
- TEPEM
- Нашел транзистор. Понюхал.
- Сообщения: 153
- Зарегистрирован: Чт дек 05, 2019 16:28:11
- Откуда: Самара
Re: Таймер не работает
Я тоже так думаю, но не понимаю что он имеет в виду, вернее понимаю но не связанно с кодом. Много элементов я делаю там потому что без них не работает, а не потому что я знаю что это к сожалению.
Вот есть заливка
Вот начинается все с курсора (в примере SetPixel), зафига мы по два раза передаем х и два раза у, что за пустые строки идут с ними parameter1[2] = 0x00; parameter1[0] = 0x00;, остальное вроде интуитивно понятно. Я пытался подставлять вместо нулей цифры но ни чего хорошего не выхоило, метод тыка не удался
Вот есть заливка
Код: Выделить всё
void beluidisplei(uint16_t RGBCode)
{
uint8_t parameter1[4],counter,counter1 ;
parameter1[0] = 0x00;
parameter1[1] = 0x00;//Передаем Х
parameter1[2] = 0x00;
parameter1[3] = 0xEF;//Передаем Х
WriteReg(0x2A, parameter1, 4);
parameter1[2] = 0x00;
parameter1[0] = 0x00;
for(counter1 = 0; counter1 <240; counter1++)
{
parameter1[1] = 0x00 + counter1;// Передаем У
parameter1[3] = 0xEF + counter1;// Передаем У
WriteReg(0x2B, parameter1, 4);
WriteReg(0x2C, (uint8_t*)NULL, 0);
for(counter = 0; counter <240; counter++)
{FMC_BANK1->RAM = RGBCode;}
}
}- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Таймер не работает
Reflector имел в виду, что если один раз задать параметры окна вывода, то потом можно просто вывести подряд все пиксели без всяких параметров. Подробнее только даташит на индикатор расскажет, мне, если честно, лень его читать - там 300+ страниц ненужной мне информации. Как-то так
Код: Выделить всё
for(counter = 0; counter <240*240; counter++) { FMC_BANK1->RAM = RGBCode; }
Последний раз редактировалось VladislavS Пн дек 16, 2019 17:29:14, всего редактировалось 2 раза.
- TEPEM
- Нашел транзистор. Понюхал.
- Сообщения: 153
- Зарегистрирован: Чт дек 05, 2019 16:28:11
- Откуда: Самара
Re: Таймер не работает
Вы можете сказать что с моим массивом лисьем не так было?
Добавлено after 6 minutes 12 seconds:
Да как заделать туда массив я представляю, тут в другом беда, вот так передавать точки только цветом, можно только в строку. Даже в примере это делается только в функции VLIne, HLine уже строиться через DrawPixel а тот так же через курсор и тд. Вот тут засада.
Эти то уж знали как дисплей насиловать
Добавлено after 6 minutes 12 seconds:
Да как заделать туда массив я представляю, тут в другом беда, вот так передавать точки только цветом, можно только в строку. Даже в примере это делается только в функции VLIne, HLine уже строиться через DrawPixel а тот так же через курсор и тд. Вот тут засада.
Эти то уж знали как дисплей насиловать
Код: Выделить всё
void ST7789H2_DrawHLine(uint16_t RGBCode, uint16_t Xpos, uint16_t Ypos, uint16_t Length)
{
uint16_t counter = 0;
/* Set Cursor */
ST7789H2_SetCursor(Xpos, Ypos);
/* Prepare to write to LCD RAM */
ST7789H2_WriteReg(ST7789H2_WRITE_RAM, (uint8_t*)NULL, 0); /* RAM write data command */
/* Sent a complete line */
for(counter = 0; counter < Length; counter++)
{
LCD_IO_WriteData(RGBCode);
}
}
/**
* @brief Draw vertical line.
* @param RGBCode: Specifies the RGB color
* @param Xpos: specifies the X position.
* @param Ypos: specifies the Y position.
* @param Length: specifies the Line length.
* @retval None
*/
void ST7789H2_DrawVLine(uint16_t RGBCode, uint16_t Xpos, uint16_t Ypos, uint16_t Length)
{
uint16_t counter = 0;
/* Set Cursor */
ST7789H2_SetCursor(Xpos, Ypos);
/* Prepare to write to LCD RAM */
ST7789H2_WriteReg(ST7789H2_WRITE_RAM, (uint8_t*)NULL, 0); /* RAM write data command */
/* Fill a complete vertical line */
for(counter = 0; counter < Length; counter++)
{
ST7789H2_WritePixel(Xpos, Ypos + counter, RGBCode);
}
}
Последний раз редактировалось TEPEM Пн дек 16, 2019 17:33:57, всего редактировалось 1 раз.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Таймер не работает
Это я ещё молчу про то что если данные не надо на лету преобразовывать, а просто переложить из Flash в идикатор, то можно натравить на это дело DMA.
[uquote="TEPEM",url="/forum/viewtopic.php?p=3756965#p3756965"]Вы можете сказать что с моим массивом лисьем не так было?[/uquote]Я его не видел. Как я могу сказать что с ним не так было? Свой я святой водой окропил тупо сделал программой, ссылку на которую чуть выше давал.
[uquote="TEPEM",url="/forum/viewtopic.php?p=3756965#p3756965"]Даже в примере это делается только в функции VLIne, HLine уже строиться через DrawPixel а тот так же через курсор и тд. Вот тут засада.[/uquote]Читать даташит. Эмбеддерский опыт подсказывает, что не может индикатор не иметь режима автоинкремента позиции вывода.
[uquote="TEPEM",url="/forum/viewtopic.php?p=3756965#p3756965"]Вы можете сказать что с моим массивом лисьем не так было?[/uquote]Я его не видел. Как я могу сказать что с ним не так было? Свой я святой водой окропил тупо сделал программой, ссылку на которую чуть выше давал.
[uquote="TEPEM",url="/forum/viewtopic.php?p=3756965#p3756965"]Даже в примере это делается только в функции VLIne, HLine уже строиться через DrawPixel а тот так же через курсор и тд. Вот тут засада.[/uquote]Читать даташит. Эмбеддерский опыт подсказывает, что не может индикатор не иметь режима автоинкремента позиции вывода.
- Реклама
- TEPEM
- Нашел транзистор. Понюхал.
- Сообщения: 153
- Зарегистрирован: Чт дек 05, 2019 16:28:11
- Откуда: Самара
Re: Таймер не работает
Флеша не хватит на полноценный буфер экрана, только на заливку одним цветом(
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Таймер не работает
[uquote="TEPEM",url="/forum/viewtopic.php?p=3756965#p3756965"]Эти то уж знали как дисплей насиловать[/uquote]Только не обижайся. На какой странице темы ты выложил свой код и сказал что "всё работает, кому надо можете забирать"?
И про "насиловать" ты прямо в точку
И про "насиловать" ты прямо в точку
- TEPEM
- Нашел транзистор. Понюхал.
- Сообщения: 153
- Зарегистрирован: Чт дек 05, 2019 16:28:11
- Откуда: Самара
Re: Таймер не работает
У меня была цель чтобы без библиотек на экране хоть что то появилось)
Добавлено after 4 minutes 34 seconds:
Вот учусь читать даташит на контроллеры дисплея, вроде все понятно кроме...
0х2А передаем, это адрес столбца ок, а чуть ниже что за страшилки указаны (я их обвел красным)

Это не инкриментация строки ? Tearing effect
line on
Добавлено after 4 minutes 34 seconds:
Вот учусь читать даташит на контроллеры дисплея, вроде все понятно кроме...
0х2А передаем, это адрес столбца ок, а чуть ниже что за страшилки указаны (я их обвел красным)

Это не инкриментация строки ? Tearing effect
line on
Re: Таймер не работает
[uquote="TEPEM",url="/forum/viewtopic.php?p=3756981#p3756981"]Это не инкриментация строки ?[/uquote]
Вот инкрементация адреса:
Меняешь направления как хочешь, хотя для рисования линий направление совершенно не важно, даже если в какой-то либе не смогли придумать ничего лучше рисования вертикальных линий по точкам.
Вот инкрементация адреса:
Спойлер

- TEPEM
- Нашел транзистор. Понюхал.
- Сообщения: 153
- Зарегистрирован: Чт дек 05, 2019 16:28:11
- Откуда: Самара
Re: Таймер не работает
Это варианты ориентации экрана( я их использую
Подскажите пожалуйста, если я засуну массив с картинкой в внешнюю флешку, по quardSPI, а потом буду от туда его читать, это заметно затормозит отрисовку? И как можно посмотреть сколько реально весит моя программа?
Добавлено after 43 minutes 26 seconds:
Ура! я разгрузил обратно камень! Анимацию из основного цикла в таймер убрал и все)
Добавлено after 22 minutes 34 seconds:
Очень интересную особенность заметил, вот перерисоввываю я какой то полигон, долго и часто, и в какой то момент бульк, пробегает по нему волна и опять все нормально идет, от чего такое происходит не знаете?
Добавлено after 11 minutes 57 seconds:
Думал полигон под циферками уменьшить чтобы такого не было, убрал его, добавил переменную со старым числом, тоесть вывожу старое значение переменной белым цветом, потом новую черным. Один фиг в какой то момент волна пробегает и не реже чем с полигоном.
Добавлено after 2 minutes 11 seconds:
Думается мне надо буфер использовать чтобы такого не было, но где на него взять памяти не понятно.
Подскажите пожалуйста, если я засуну массив с картинкой в внешнюю флешку, по quardSPI, а потом буду от туда его читать, это заметно затормозит отрисовку? И как можно посмотреть сколько реально весит моя программа?
Добавлено after 43 minutes 26 seconds:
Ура! я разгрузил обратно камень! Анимацию из основного цикла в таймер убрал и все)
Добавлено after 22 minutes 34 seconds:
Очень интересную особенность заметил, вот перерисоввываю я какой то полигон, долго и часто, и в какой то момент бульк, пробегает по нему волна и опять все нормально идет, от чего такое происходит не знаете?
Добавлено after 11 minutes 57 seconds:
Думал полигон под циферками уменьшить чтобы такого не было, убрал его, добавил переменную со старым числом, тоесть вывожу старое значение переменной белым цветом, потом новую черным. Один фиг в какой то момент волна пробегает и не реже чем с полигоном.
Добавлено after 2 minutes 11 seconds:
Думается мне надо буфер использовать чтобы такого не было, но где на него взять памяти не понятно.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Таймер не работает
В настройках линкера включить генерацию .map-файла. В нём в конце сводная информация по размеру прошивки.И как можно посмотреть сколько реально весит моя программа?
У тебя 256к RAM на борту. При желании даже два буфера можно уместить.но где на него взять памяти не понятно.
Наивный чукотский юношаУра! я разгрузил обратно камень! Анимацию из основного цикла в таймер убрал и все
- TEPEM
- Нашел транзистор. Понюхал.
- Сообщения: 153
- Зарегистрирован: Чт дек 05, 2019 16:28:11
- Откуда: Самара
Re: Таймер не работает
Тогда попробую ночью сделать буфер кадра.
А пока Вы не спите, попробую с Вашего позволения разобраться с КватроСпи, я почитал про него, вроде интересная штука.
Полтора часа переводил регистры, их очень много, положу в виде пдф.
Вот так у меня вывешена память
Сейчас буду излагать свои мысли по регистрам, поправляйте пожалуйста
Добавлено after 13 minutes 37 seconds:
Первым идет по рефу - QUADSPI_CR
Я так понимаю, там какие то свои часы, которые не надо тактировать и прочие, только задать вот этими регистрами режим работы.
Тут вообще черт ногу сломит, может не все регистры надо использовать, а только какую то маленькую группу?
А пока Вы не спите, попробую с Вашего позволения разобраться с КватроСпи, я почитал про него, вроде интересная штука.
Полтора часа переводил регистры, их очень много, положу в виде пдф.
Вот так у меня вывешена память
Спойлер

Добавлено after 13 minutes 37 seconds:
Первым идет по рефу - QUADSPI_CR
Я так понимаю, там какие то свои часы, которые не надо тактировать и прочие, только задать вот этими регистрами режим работы.
Тут вообще черт ногу сломит, может не все регистры надо использовать, а только какую то маленькую группу?
- Вложения
-
- Регистры QSPI.pdf
- В корявом переводе, хоть я и поправлял переводчик, но без фанатизма
- (1.41 МБ) 288 скачиваний
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Таймер не работает
Я QSPI никогда не пользовался. Может кто другой подскажет.
- TEPEM
- Нашел транзистор. Понюхал.
- Сообщения: 153
- Зарегистрирован: Чт дек 05, 2019 16:28:11
- Откуда: Самара
Re: Таймер не работает
Тогда попробую разграбить пример от куба
Добавлено after 14 minutes 48 seconds:
Буду все по порядку. Вот тут я включаю альтернативные функции, но в QSPI некоторые выводы работают на вывод и на ввод, я в этом случае не указываю направление, только то что там висит QSPI ?
Добавлено after 14 minutes 48 seconds:
Буду все по порядку. Вот тут я включаю альтернативные функции, но в QSPI некоторые выводы работают на вывод и на ввод, я в этом случае не указываю направление, только то что там висит QSPI ?
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Таймер не работает
В режиме альтернативной функции направлением ноги управляет периферийный модуль, функция которого выбрана.
- TEPEM
- Нашел транзистор. Понюхал.
- Сообщения: 153
- Зарегистрирован: Чт дек 05, 2019 16:28:11
- Откуда: Самара
Re: Таймер не работает
Вот спасибо! А скорость тоже можно не указывать?
И я так включал АФ - GPIOD->AFR[0] = 0xC0CC00CC;
Правильно наверное GPIOD->AFR[0] |= 0xC0CC00CC; или не тут?
И я так включал АФ - GPIOD->AFR[0] = 0xC0CC00CC;
Правильно наверное GPIOD->AFR[0] |= 0xC0CC00CC; или не тут?
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Таймер не работает
Скорость указывать нужно. А между операторами "=" и "|=" кроме эстетической вообще никакой разницы нет?
- TEPEM
- Нашел транзистор. Понюхал.
- Сообщения: 153
- Зарегистрирован: Чт дек 05, 2019 16:28:11
- Откуда: Самара
Re: Таймер не работает
= Вроде перезапишет остальные биты если они до этого были?
У меня на джостике пины не заданны не как, только протактированны, но опрашиваются исправно, я так понимаю как вход их в таком случае не обязательно задавать?
У меня на джостике пины не заданны не как, только протактированны, но опрашиваются исправно, я так понимаю как вход их в таком случае не обязательно задавать?
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Таймер не работает
Смотри начальное состояние ног при включении питания. Оно же какое-то из разрешённых.
- TEPEM
- Нашел транзистор. Понюхал.
- Сообщения: 153
- Зарегистрирован: Чт дек 05, 2019 16:28:11
- Откуда: Самара
Re: Таймер не работает
Владислав! Я долго избегал этого, но сейчас, когда мне надо разобраться с регистрами qspi & dma, боюсь это просто необходимо, скажите пожалуйста, где вы берете волшебные слова, которыми подменяете волшебные цифры для наглядности? Вот вы писали например RCC->CR = _VAL2FLD(RCC_CR_HSITRIM,16) | RCC_CR_HSION | RCC_CR_HSEON | RCC_CR_PLLON; //Включаем PLL


