-
Постов
6 247 -
Зарегистрирован
-
Посещение
-
Победитель дней
18
Arlleex стал победителем дня 17 августа
Arlleex имел наиболее популярный контент!
Репутация
178 Очень хорошийИнформация о Arlleex
-
Звание
Гуру
Контакты
-
ICQ
Array
Посетители профиля
-
Было бы здорово, если бы я развел все критичные куски - хайспиды и питание, а всю остальную переложить нп автотрейс, но работает он всегда и везде криво и результат мне всегда не нравится.
-
Dmamux stm32g030
Arlleex ответил ozforester тема в STM
А. Ок. Я так понял, у Вас что-то около мною не любимого Modbus RTU. Ну, у меня приемные и передающие буферы FIFO (кольцевые) обычно не шибко большие, т.к. период их опустошения задачей-процессом чтения довольно маленький, а вот сам буфер, из которого парсятся сообщения, может быть и несколько кБайт - это норма🙂 -
Dmamux stm32g030
Arlleex ответил ozforester тема в STM
Понятно. Стараюсь никогда так не делать и заранее разносить все еще до этапа схематика и выпуска платы. -
Dmamux stm32g030
Arlleex ответил ozforester тема в STM
Ды это то все понятно. Я про общий концепт. Зачем в принципе дергать включение/выключение/перенастройку DMA-стрима на прием UART? Любой DMA умеет кольцевой режим - не проблема организовать однократную настройку при старте ПО и выгрeбать данные из очереди, в которую подпихивает DMA. -
Dmamux stm32g030
Arlleex ответил ozforester тема в STM
Понял🙂Но не понял, зачем перенастраивать? Один раз включил - и разгребаешь поток потом. Или у Вас какой-то там хитрый протокол? Но все равно странно. -
Dmamux stm32g030
Arlleex ответил ozforester тема в STM
Я сейчас на память не вспомню точно, но вроде после выключения DMA-потока нужно дождаться, пока он выключится. Хотя, возможно, это требуется только при принудительном выключении работающего потока, который еще и FIFO использует... P.S. Кстати. А зачем включать/выключать DMA-поток на прием UART? -
Как это работает?
Arlleex ответил Worldmaster тема в Цифровые схемы, высокоскоростные ЦС
Поверьте, если кто-то с этим столкнется, это просто снесут и заново напишут) -
Как это работает?
Arlleex ответил Worldmaster тема в Цифровые схемы, высокоскоростные ЦС
Ды хоспаде, не используйте и все. Да, малина может отсеивать, я же не знаю что там за ПО. -
Как это работает?
Arlleex ответил Worldmaster тема в Цифровые схемы, высокоскоростные ЦС
Прям на разъеме пины подписаны, SCL/SDA. Делается такое с целью подконтрольного выпуска серии камерных модулей. Прописали туда серийник, запаролили, а с хоста отсеиваете потом чужих. -
А как в свиче не может быть self filtering? Почти в каждом первом он в наличии.
-
Опрос по системам хранения данных
Arlleex ответил Segment тема в Программирование
Нет универсального способа. Под каждую задачу заимствуется велосипед прошлого опыта или делается новый. При определенных требованиях берется готовая файловая система. В текущем проекте все настройки храню в одном из секторов внутренней флешки МК. -
Плавный переход C -> C++ под МК
Arlleex ответил Arlleex тема в Программирование
Про какую обратную совместимость вы говорите? Еще раз - попробуйте struct A { int a, b, c, d; }; int main() { A a = { .a = 10, .b = 20, .c = 30, .d = 40 }; } в C++20 - ок, работает. Тащим кучу легаси кода на C++11 компилятор и получаем ошибки компиляции. Вот она обратная недосовместимость. Обратная совместимость в плюсах - это всегда минное поле - вроде ходишь по знакомым местам, а прилететь может с любой стороны. -
Плавный переход C -> C++ под МК
Arlleex ответил Arlleex тема в Программирование
Это одно... Но C++ "развиваются" так, что нет уверенности, что код не то что будет выглядеть современным, а вообще компилироваться в ближайшем будущем при переходе на свежую версию. Посмотрите, например, чего они с назначенной инициализацией делали - изначально она была, начиная с 11 версии - она выпилена, в 20 снова стала доступна. Ну и зачем оно такое? -
Плавный переход C -> C++ под МК
Arlleex ответил Arlleex тема в Программирование
Какая разница, обложить функцию InitGPIO() плюсовыми фишками всяких там шаблонных штук, которые при смене МК придется переписать, или переписать сам InitGPIO() напрямую? В текущем проекте мне было совершенно некогда заниматься созерцанием, поэтому я воспользовался своими отлаженными макросами для модификации битовых полей в регистрах UPD_BIT(GPIOA->PUPDR, RST(GPIO_PUPDR_PUPD12_Msk | GPIO_PUPDR_PUPD11_Msk), SET(0x1 * (GPIO_PUPDR_PUPD12_0 | GPIO_PUPDR_PUPD11_0)), INV(0)); UPD_BIT(GPIOA->AFR[1], RST(GPIO_AFRH_AFSEL12_Msk | GPIO_AFRH_AFSEL11_Msk), SET(0x9 * (GPIO_AFRH_AFSEL12_0 | GPIO_AFRH_AFSEL11_0)), INV(0)); UPD_BIT(GPIOA->MODER, RST(GPIO_MODER_MODER12_Msk | GPIO_MODER_MODER11_Msk), SET(0x2 * (GPIO_MODER_MODER12_0 | GPIO_MODER_MODER11_0)), INV(0)); UPD_BIT(GPIOA->OTYPER, RST(GPIO_OTYPER_OT12_Msk), SET(0), INV(0)); UPD_BIT(GPIOA->OSPEEDR, RST(GPIO_OSPEEDR_OSPEED12_Msk), SET(0x2 * GPIO_OSPEEDR_OSPEED12_0), INV(0)); Читаемо? Ну, мне понятно - хотя и тут можно все эти чиселки и гвоздеприбитые определения вытащить в один хедер, где определить пины в виде #define CAN_RX A, 10 и т.д. Не охота. -
Плавный переход C -> C++ под МК
Arlleex ответил Arlleex тема в Программирование
Ну а зачем пытаться вникать в трехэтажную наскальную живопись плюсов, которая работает в C++17, но не работает в 11, но частично работает в 20, а в следующих версиях вовсе сделали улучшение и теперь все предыдущие способы расцениваются гурами как говнокод?