mihlit2, Лучше использовать волее дешевый vet6 или в Вашем проекте использовать только ноги 100 пинового (если кто то повторять соберется). AD9226 уж слишком дорогой , даже в Китае. Тогда уж AD9283 или AD9288 (можно зарядить 2 АЦП в интерливе, как у GFX). AD8056 годится только во втором каскаде , для входа у него маленькое входное сопротивление (я пытался). Советую в чип-дипе заказать AD8066 или , лучше, opa2354, у них вроде бы " честные".
mihlit2, Лучше использовать волее дешевый vet6 или в Вашем проекте использовать только ноги 100 пинового (если кто то повторять соберется). AD9226 уж слишком дорогой , даже в Китае. Тогда уж AD9283 или AD9288 (можно зарядить 2 АЦП в интерливе, как у GFX). AD8056 годится только во втором каскаде , для входа у него маленькое входное сопротивление (я пытался). Советую в чип-дипе заказать AD8066 или , лучше, opa2354, у них вроде бы " честные".
А у меня и VET6 есть. Было дело заказал на Али борду с VET6, продавец сроки пропустил, я спор затеял, мне деньги вернули, а через неделю посылка и пришла. Я снова в магазин написал заказал ZET6, только говорю не надо присылать, я вам хочу деньги вернуть. А они мне вторую плату прислали, вот их у меня теперь две. На AD9226 я сына раскрутил, вроде подарок на днюху, так что тоже бесплатно. Я обитаю в Бишкеке, Киргизия. Чип-Дип сюда не посылает заказы (я связывался с ними). A насчет AD8056 спасибо за инфу, только теперь непонятно где детали брать. На форуме настоятельно рекомендуют из Китая ОУ не брать, очень много подделок.
а вывод думаю можно ускорить, если нужно. получалось и за 3мс окно обновлять на железе dso138 (естественно, не считая время заполнения буфера), 2 но: минимум математики и "симметричный" цвет (старший младший байты =), разумеется при fsmc в этом нет нужды.
да "симметричный" цвет здорово спасает , на мурзике так и сделано.
Добавлено after 1 minute 56 seconds: Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект загоняю данные ассемблером в порт и 2 строба записи на CMSIS.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
а вывод думаю можно ускорить, если нужно. получалось и за 3мс окно обновлять на железе dso138 (естественно, не считая время заполнения буфера), 2 но: минимум математики и "симметричный" цвет (старший младший байты =), разумеется при fsmc в этом нет нужды.
Я проект выложил для ознакомления. Ради Бога не подумайте, чтобы типа повыделываться. Сейчас посмотрел ЛА скорость обновления экрана - 2 раза по 19 ms, хотя должно быть 2 раза по 9. Размер буфера 64K 16bit. Буду разбираться
да "симметричный" цвет здорово спасает , на мурзике так и сделано.
Добавлено after 1 minute 56 seconds: Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект загоняю данные ассемблером в порт и 2 строба записи на CMSIS.
Так может без DCMI тогда, а на ассемблере внешнее АЦП опрашивать? Я к тому, что у VET6 нет DCMI. Можно будет вернуться на VET6, я же с него начинал.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
на асму я не сподвигся. в одном моменте принудил компилятор использовать только регистры, а не память. он сам об этом почему-то никак не хотел догадаться.
не могу выложить исходники, это мне надо сначала спросить разрешение у автора тех исходников от которых сам начинал плясать. а в двух словах: минимум математики, минимум цветов, минимум if() а если всю функцию на асму - была б еще быстрей.
Про DCMI речи не было, на ассемблере внешнее АЦП опрашивать нужно только на самых скоростных развертках и интерлив так же , только где это необходимо . Остальное можно переходить на одно АЦП и соответственно DMA-таймер.
на ассемблере внешнее АЦП опрашивать нужно только на самых скоростных развертках
На ассемблере внешнее АЦП опрашивать имеет смысл только на F3, где такой способ действительно быстрее, а для F4 будут те же 4 такта, что и для DMA, только без возможности усыпить мк и таким образом уменьшить помехи.
Там не нужно много ассемблера. вот как я вывожу for (uint16_t j = 1; j < 384; j++) { for (uint16_t i = 1; i < 240; i++) {
uint8_t color = 0; if ((i==24|i==48|i==72|i==96|i==120|i==144|i==168|i==192|i==216) ) {color = 16;}// Grid if ((j==24|j==48|j==72|j==96|j==120|j==144|j==168|j==192|j==216|j==240|j==264|j==288|j==312|j==336|j==360) ) {color = 16;}// Grid
if ((i==120)|(j==192)) {color = 4;} //i==96+32 Centr
if (OSD==1) { if (i == SynU) {color = 54;} if (i == U_0) {color = 231;} } . . . Вывод осцилограммы color = 255; . . __asm { STRB color,[#0x48000415] } WR_STROBE; //импульс на WR ILI9486 WR_STROBE; // #define WR_STROBE {GPIOB->BRR = 0x20; GPIOB->BSRR = 0x20;}
Извини "Вывод осцилограммы" не мой код. Это на F303 120MHz тактовая.
Добавлено after 32 minutes 50 seconds: Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект Щас посмотрел , вывод всего этого аж 200 милисекунд.
Добавлено after 2 minutes 14 seconds: Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект Убрал OSD и Centr стало 170.
Добавлено after 55 seconds: Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект т.е. только сетка и сигнал.
Добавлено after 20 minutes 14 seconds: Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект 40 милисекунд только сигнал, даже без сетки. Так что IF отжирает капитально.
мы оба знаем чей код этот кусок до неузнаваемости изменился у меня, поэтому позволю себе его опубликовать. кстати буду благодарен за конструктивную критику (не ахти из меня прогер) железо, если точнее -dso138mini, легкий разгон -112MGz. осцил. у меня там бонусем - чисто показыватель, поэтому ку первого ОУ изменил, а математику упростил (ниже плинтуса).
Спойлер
Код:
void Draw320x192(uint16_t *buffer, uint16_t PointSync){ LCD_CS0; window(Orient_Book, 25, 215-25, 0, 317-0); SendCMD(ILI9341_GRAM); volatile uint8_t n, o; //, a, b; register int ar __asm("r3"); register int br __asm("r6"); uint8_t z; n=(buffer[PointSync-1]/8-128); // -64 for (uint16_t j = 1; j < 319; j++) { // time o=n; n=((buffer[j+PointSync]>>3)-128); //-64
if ( n >= o ) {ar=o; br=n;} else { ar=n; br=o; }
if (!(j&31)) { for (uint8_t i = 0; i < 191; i++) { ((i<ar)||(i>br))?(z=GRID):(z=WHITE); GPIOB->BSRR = (0x00FF0000 | z); WR_STROBE; WR_STROBE; } } else { for (uint8_t i = 0; i < 191; i++) { (!(i&31))?(z=GRID):(z=BLACK); if(!((i<ar)||(i>br))) {z =WHITE;} GPIOB->BSRR = (0x00FF0000 | z); WR_STROBE; WR_STROBE; } } } // j LCD_CS1;
mihlit2, "у VET6 нет DCMI" куб говорит что есть и даташит тоже.
Добавлено after 3 minutes 10 seconds: Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект a797945, CS можно на ноль посадить и с ним не заморачиваться.
на ваши цифры посмотрел, в своей засомневался мерил так, без пристрастия, просто сам механизм измерения времени выполнения посмотреть. и не повторить пока - тот комп на половину щас разобран.
"CS можно на ноль посадить и с ним не заморачиваться" вполне возможно, только думаю надо проверять на конкретном стекле. в этом dso не ili9341, а какой-то аналог, ладно основные команды совпали
a797945, Спасибо из Вашего кода узнал про Тернарные операции .
Добавлено after 1 minute 36 seconds: Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект Вроде в дсо138 ili9341, я в него часы запихивал.
Добавлено after 13 minutes 44 seconds: Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект mihlit2, Вы профиль полностью заполните.
Добавлено after 43 seconds: Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект a797945, к стати тоже.
Добавлено after 6 minutes 50 seconds: Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект mihlit2, я брал opa2354 на алике партией по 10 шт в мелкх корпусах (с шагом 0,5мм). Оказались все нормальные. Правда сейчас этот магазин закрыт, говорят временно https://aliexpress.ru/item/32490476216. ... ent=815660
Добавлено after 57 minutes 3 seconds: Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект Переделал сетку if (!(i%24)) {color = 16;}// Grid if (!(j%24)) {color = 16;}// Grid Время отрисовки стало 85 мСек
"if (!(i%24)) ..." красиво, а во что это компилируется?
Даже при наличии аппаратного деления скомпилируется в достаточно тяжелую функцию, по крайней мере на gcc. Эффективнее умножать, например, выделим под дробную часть 20 бит, тогда 1/24 у нас будет равна 0x100000 / 24 = ~43691. Умножение на это число и сдвиг на 20 бит равносильно делению на 24.
Код:
lcd::setWindow(0, 0, 383, 239);
for (uint32_t j = 1; j < 240; j++) { for (uint16_t i = 1; i < 384; i++) { uint16_t color = Color::White; if (!(i - (i * 43691 >> 20) * 24) || !(j - (j * 43691 >> 20) * 24)) color = Color::Magenta; lcd::writeColor(color); } }
В таком виде у меня на F303/120MHz время выполнения 23.5 ms, а для двух отдельных проверок со взятием остатка от деления - 40.5 ms. Кстати цвет тут не симметричный, но либа дисплея написана так, что пытается совмещать сброс WR с записью данных если то и другое относится к одном порту, т.е. при отправке двух байт цвета будет всего 4 записи в BSRR, а у вас смотрю 4 записи потребуется только для пары стробов.
кабы были б они на одном порту, может я и ломал голову как совместить да в том dso wr,cs.rs на другом. и максимальную скорость задачей не ставил, если б ставил - перебросил линии и рубился б в асме на максимальное использование регистров и минимальное переходов. как то так.
if (!(i%24)) {color = 16;}// Grid if (!(j%24)) {color = 16;}// Grid 85 mS
if (!(i - (i * 43691 >> 20) * 24) || !(j - (j * 43691 >> 20) * 24)) color = 16; 79ms
Добавлено after 3 minutes 31 second: Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект Если убрать отрисовку ОСД // if (OSD==1) { // if (i == SynU) {color = 54;} // if (i == U_0) {color = 231;} // }
57mS
Добавлено after 2 minutes 6 seconds: Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект Но с ней наглядней видно уровень "0" и уровень синхронизации.
если скорость отрисовки не делать самоцелью, то какая разница 200 или 80 мс. я упрощал потому, что: -украшательства/красивости мне не нужны, -эта же функция у меня используется и на медленных развертках, -и чтоб размер прошивки уложить в 32к (там монитор двухполярной линии данных (у нас кличут arinc)+осцил(как бонус)).
поэтому и : нейтрали (не выделены) всегда в середине сетки, маркер ур.синхронизации крохотный вне сетки.
а финт с регистрами - мне не понравилось, что компилятор создавал переменные в памяти, в чем никакой потребности не было, мозгов написать красиво у меня не нашлось, вот и вкарячил такой костыль.
еще один финт ушами у меня тут: сделал две ветки, одна где проверка на 3 цвета, вторая проверяет только на 2 (белый/зеленый); типа - появилось 318 лишних проверок, но 191х9 проверок уже не будет.
Последний раз редактировалось a797945 Сб сен 12, 2020 13:08:08, всего редактировалось 1 раз.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения