- Кто-нибудь работал с микроконтроллерами 1921ВК035? Наблюдаем
некоторые нехорошие чудеса с PLL в этих МК - AlexG(17.01.2025 12:07, ARM, полностью)
- Keil MDK6. Кто-нибудь пробовал? Как впечатления? il-2(157 знак., 17.01.2025 14:27, ARM, ссылка, полностью)
- Друзья, есть микроконтроллер MG32F02. Жуткая экзотика. Из Кейла
отлаживать чем-то кроме MLink получится? - vesago(14.01.2025 09:30, ARM, полностью)
- Я вот думаю - в stm32f4 присвоение и считывание переменной uint8_t
в разных задачах можно не закрывать критической секцией? Это
атомаркая операция? Речь про FreeRTOS Mty1(101 знак., 05.01.2025 23:09 - 06.01.2025 02:38, ARM, полностью)
- ch32vxx: починил поддержку FreeRTOS в openocd для wch-riscv klen(1090 знак., 26.12.2024 15:11, ARM, ссылка, картинка, полностью)
- У ST есть система GUI TouchGFX. Я же правильно понимаю, что
заполучить исходники ее ядра шансов нет и разумнее просто не
тратить время и сразу взять что-то более открытое и не привязанное
намертво к одному производителю МК? - AlexG(08.01.2025 08:58, ARM)
- Поднятие приоритета текущего выполнения в RISC-V вместо BASEPRI у
ARM. Nikolay_Po(1187 знак., 05.01.2025 20:21, ARM, ссылка, полностью)
- Очень странный вопрос. Можно для STM32 (да и вообще в любом МК)
сделать для UARTа так, чтобы при передаче у него было 2 стоповых, а
на приеме он мог принимать посылку с 1 стоповым битом? Такие
извраты у меня от того, что большой парк у меня колонок и там самые
разные чудеса. :-) - Лaгyнoв(30.12.2024 05:59, ARM, полностью)
- А, что: в Вашем МК только один UART? При двух задача решается
легко: один - на приëм, другой - на передачу! - Пaлыч(31.12.2024 20:24)
- Это не извраты, а нормальное поведение UART. И именно так оно
реализовано в STM32 - il-2(31.12.2024 11:34)
- У меня с EWARM-8509 другой интересный прикол. Одна и та же версия
(с одной флешки) стоит на работе и дома. Дома, при отладке своей
программы, я открываю окошко регистров и пытаюсь посмотреть работу
ADC, GPIOA ... а их нет! А вот счетчики, USART, I2C... есть!
Приблизительно половина переферии как регистры не видны. Если
смотреть в окне памяти, то видно биты и байты изменяются как надо.
Но, конечно в окне регистры, где видны имена байтов и битов конечно
удобнее работать. Я Sl(78 знак., 30.12.2024 16:52)
- Если память позволяет, то подготовить буфер с состояниями TxD на 2
стопа и пулять их в порт через ДМА. На приём, обычным УАРТом с 1
стопом. - mse homjak(30.12.2024 13:19)
- режим переключать или 2 UARTa использовать. есть старая проблемка в
блоках UARTов - "укороченный стоп-бит" и практически тименно так и
лечится. даже где-то в Modbus over Serial рекомендуют, не вникая в
подробности. Vit(1 знак., 30.12.2024 12:46, ссылка)
- ха-ха... В древности, когда у меня не было в МК аппаратного UART и
был софтовый, я ж так и делал. :-) Сейчас порылся и нашел. При
передаче у меня было 2 стоповых, а на приеме 1 и я сразу переходил
к ожиданию старта след. байта. - Лaгyнoв(30.12.2024 11:50)
- Стоповые биты нужны для того, чтобы приёмное устройство
гарантированно успело обработать принятый байт. Если передаются не
очень много данных, и не используется dma, можно их передавать
пореже. Например по таймеру, чтобы в конце было не менее двух
стоповых бит. А настраивать с одним стоповым битом - Andrey190(30.12.2024 08:05)
- Это не очень-то и изврат. Такое встрачается и называется 1,5
стоповых. Я делал когда-то, но не на STM. Если обмен
полудуплексный, то можно просто менять настройки USARTа туда сюда. - AlexG(30.12.2024 07:22)
- я всё голову ломал - что и зачем 1,5 стоповых. :-) У меня в
8-битнике было 1 или 2. - Лaгyнoв(30.12.2024 08:15)
- По стандарту 1.5 стоповых бита применимо только к 5-битным байтам.
Для 7,8,9-битных - только 1 и 2 стопа. Не знаю про специфику G0, но
обычно количество стоповых бит влияет только на передачу, на приём
пофигу. - LightElf(31.12.2024 14:46)
- При несовпадении количества stop-bit на приеме формируется framing error, но данные при этом принимаются. reZident(1 знак., 31.12.2024 15:32, картинка)
- На следующей же странице оного RM0454 (гляжу в ревизию 5) доходчиво
сказано: LightElf(1 знак., 02.01.2025 01:04, картинка)
- это я тоже увидал. Ошибки FE не будет. Но почему не пишут о
достоверности данных, когда пойдет старт следующего байта в момент
второго стопового? Вот ведь в чем засада. Сейчас нет под рукой 070,
но точно помню, что была сдвижка на 1 бит. Через неделю смогу
проверить - Лaгyнoв(02.01.2025 06:56)
- Да не должна сдвижка происходить. Приём байта синхронизируется от
стартового бита, потом забираются биты данных, потом ожидается один
стоповый. Сколько длится "1" между первым стоповым и последующим
стартовым "0" - влиять ни на что не должно. У вас или помеха
какая-то пролетает, или скорости UART разбегаются сильно. Может
подтяжку входа RX к "1" забыли поставить/включить? - LightElf(02.01.2025 14:24)
- Дык он хочет находится в режиме с двумя сторонами - чтобы при
передаче два стоповых было. - Nikolay_Po(02.01.2025 14:27)
- Два стоповых нужны если скорость высокая, а приёмник без fifo или
совсем софтверный и наступает overflow. ТС не там проблему ищет. - LightElf(02.01.2025 15:04)
- ТС не глупее нас. Всё он там ищет. У него окружение такое, что есть
устройства (которые не будут обновляться), которым нужно два стопа,
чтобы корректно принимать. И, в то же время, есть устройства,
которые ведут передачу без второго, лишь с одним стоп-битом. И если
я правильно понял ТС, в таком случае, когда UART настроен на два
стопа, а поток идёт с одним стопом, есть проблемы с приёмом. Пока
не разобрались до конца в каком случае происходит сбой, но приём
идёт с ошибками. - Nikolay_Po(02.01.2025 16:01)
- То есть, ошибки при приёме прошедшего кадра не будет, но вот приём
первого байта следующего кадра может быть нарушен, если возврат на
уровень mark произошел не в пределах второго стоп-бита? - Nikolay_Po(02.01.2025 14:18)
- Я не знаю, как в STM, но другие контроллеры отродясь при приёме
стопы не считали. Приёмнику стоп нужен только чтобы старт
обнаружить... - Idler(30.12.2024 06:19)
- Прикольненько... Тема про АВР(вернее, ВинАВР-10), но там, походу,
норота меньше. Тема-то про "С". mse homjak(3383 знак., 25.12.2024 22:36, ARM, полностью)
- Эта оптимизация называется "loop-invariant code motion". В IAR ее
можно отдельно отключить, насколько я помню. Но это неправильный
путь. Правильно - объявлять твою primaryB как volatile il-2(1 знак., 26.12.2024 05:25, ссылка)
- Странный вопрос. То, что меняется вне контекста, вне страницы
исходного кода, обязано быть выкинуто компилятором, так как,
варианты: а) не меняется в пределах обозримого контекста; б) не
приводит к побочным эффектам. Nikolay_Po(847 знак., 25.12.2024 23:34)
- ХЗ, конешно, но, каг-то неубедительно. mse homjak(298 знак., 26.12.2024 10:36)
- Я как-то озаботился, пару раз посидел и глубоко подумал. И всё
понял. У меня никаких разногласий с компиляторами насчёт volatile
нет. Код большого конечного автомата, что я правил, на 6000 строк
(ну, так было удобно его автору), содержит всего штук 5 таких
переменных - когда обращается напрямую к данным, обновляемым в
прерываниях. Nikolay_Po(2612 знак., 26.12.2024 14:20)
- Недавно подымал тему с CH32V303. У которого внешняя шина глючит на
нечотные полуслова. Разрешилось только так, пришлось ваять функцыю
на чтение памяти: mse homjak(300 знак., 31.12.2024 17:18)
- Не... это понятно. Непонятно, почему нет какой-нить директивы, типа
#if-#endif только "#выкл-#вкл" оптимизаццыю. - mse homjak(26.12.2024 16:48)
- Зачем вкл/выкл? Вы просто напишите корректный код, а не с
"undefined behavior", как в случае данных, меняемых вне контекста.
А так - да, когда у школьника код глючит, так он оптимизацию
выключает - говорит, помогает. - Nikolay_Po(26.12.2024 17:23)
- А если у меня данные меняются вне контекста? - mse homjak(26.12.2024 17:45)
- Ну просто же. В том файле где меняются вне контекста - volatile, в
остальных без оного. Например при неприоритетной системе
прерываний, в файле прерывания определяем без volatile, в остальных файлах с volatile. А еще лучше использовать гетер, и волатильную
переменную не светить по всему проекту. Например так IBAH(439 знак., 26.12.2024 19:18)
- Ещё лучше исползовать локальную копию volatile там, где код в
прерывании либо прерывания временно запрещены. - vpv.vpv(27.12.2024 06:55)
- Ну, скажэм так, зачем нужна переменная в прерывании, для передачи
данных из внешнего порта, если её нельзя пользовать в проекте? Т.е.
только волатильность. mse homjak(417 знак., 26.12.2024 19:55)
- В общем, вредный совет насчёт там волатильная, а сям - нет.
Когда-то так и делал. Нюанс в том, что запись тоже оптимизируется.
Поэтому если в контексте, допустим, прерывания, запись в
неволатильную память на этот контекст не влияет, она может быть
упразднена. Nikolay_Po(290 знак., 26.12.2024 19:39)
- Значит, обращайтесь к ним с модификатором volatile. Если есть
уверенность, что на конкретном участке выполнения, значение
меняться не будет, то, чтобы не блокировать оптимизацию,
используйте временную не-волатильную переменную или просто
приведение типа к не-волатильному. - Nikolay_Po(26.12.2024 19:06)
- Как это нет? Вы плохо искали, наверное. - SciFi(26.12.2024 16:51)
- Немного расширю первый пункт. Хорошо спроектированная программа не
нуждается в volatile. - IBAH(26.12.2024 14:49)
- Чтобы не заморачиваться с volatile, можно просто отключить
оптимизацию. И проблеме конец. Включить оптимизацию, это как
заточить нож. Острый режет хорошо и быстро, но им можно по
неопытности порезать палец. Тупой режет долго и плохо, зато все
пальцы целые. )) - vpv.vpv(26.12.2024 10:54)
- Помогите идеей - как детектить наличие-пропадание меандра 80Гц в
течении 0.3 секунды на ноге проца (stm32f4)? Есть FreeRTOS с тиком
1ms и прерывания на ноге. Точность +-10гц подойдет. В голову
приходит кольцевой буфер с замерами и скользящее окно. Как то все
не то. - Mty1(30.12.2024 00:22, ARM, полностью)
- Пропадание меандра - это 0? Или 1? Или отсутствие смены? - max(31.12.2024 00:38)
- А что ответы с использованием AI теперича под запретом? Я смотрю
ответы Бомжа удалили. Хорошо успел скопировать в ворд самый
интересный. AI технология нового технологического уклада - на
Сахаре под запретом? - Mty1(31.12.2024 00:35)
- Отставить. Таймера нет. Ок, прерывание EXTI обнуляет счётчик.
Прерывание системного таймера счётчик увеличивает. Если счётчик
превысил 300 - алярм. LightElf(346 знак., 30.12.2024 16:21)
- Одноточечное Фурье. Причем по меандру. Практически так.
Заготавливаешь табличку IBAH(573 знак., 30.12.2024 15:37)
- Просто же. В прерывании обнуляешь инкрементальный счетчик, что в
ртос, что в систике, если он достиг критического потолка - твоих
300 мс. имеешь событие и ветвление. - bnb62(30.12.2024 13:26)
- Не нужен кольцевой буфер. Достаточно скользящей средней суммы.
Через каждые 1 мс если вход = 1, то прибавляем 1 к сумме до
достижения ей какого-то определенного верхнего уровня (скажем
количество тиков за 1,5-2-3 периода), если на входе 0, то уменьшаем
на 1 вплоть до нуля. И делаем сравнение с пороговыми уровнями. Если
выше верхнего порога, то значит меандр превратился в устойчивое
состояние 1. Если ниже нижнего уровня, то значит "застрял" в
устойчивом состоянии 0. reZident(186 знак., 30.12.2024 12:53)
- С использованием аппаратного таймера измерять ширину импульса. - Cкpипaч(30.12.2024 10:31)
- Звук! - Kpoк(30.12.2024 08:35)
- Ну вот как я определяю пропадание 50 Гц на ноге stm32 с тиком 1
мсек. Есть признак "1" и "0" на выводе. Они должны чередоваться .
Каждые 10 мсек. Если "1" или "0" зависли на время бОльшее чем 1
период (у меня 30 мсек) - пропал меандр. Это я делаю в прерывании
systick. - Лaгyнoв(30.12.2024 07:13)
- древний стандартный селектор импульсов - "оцифровываешь сигнал со
сдвигом 90 градусов - то есть квадратурно" что эквивалентно
цифровому гетеродинирования в ноль. если частота априрно изветгна =
80Гц то и фильровать ничего не нало - есть сигнал хотя бы на одном
из выходов - значит есть пилот тон. нет - то значит тишина.
Преплетать FreeRTOS не нужно - тамером сделать 80Гц и от него через
DMA грабить вход. разве не хорошо так будет? - klen(30.12.2024 00:29)
- не могу решить задачку для двоечников - stm32/ch32:таймеры -
сгенерить импульсы с выровненными фронтами по старту таймера в
режиме однократного импулса(one-pulse mode). что бы не делел -
выровнены спадом по заду периода. направление счета менял - почему
то ничего не меняется. на интервале когда счетчик не активен -
выходы должны быть в нуле. klen(1 знак., 22.12.2024 15:54, ARM, картинка, полностью)
- У WCH заявились мелкокристаллки для всяческих моторчиков. Серия
CH32M. LightElf(2 знак., 17.12.2024 18:07, ARM, ссылка, ссылка, полностью)
- Сегодня дописал дотестил. ch32v307 можно распердолить на 240МГц,
делители ahb, apb1, apb2 равны 1. Использую eth, i2c 1.8MHz, uart 1
мегабит, rng, crc, таймеры .... но есть нюанс - во флеш лучше нe
обращатся, упадет в трап. - klen(20.12.2024 02:45, ARM, полностью)
- Artery AT32F407, АЦП. Всё время получаю значение 0. Настроил всё
верно, проверял раз сто уже. И тактирование, и порты, и настройку
самого измерения. В чём может быть проблема ещё, никто с таким не
сталкивался? FDA(1448 знак., 14.12.2024 00:32, ARM, полностью)
- "Сводный системный топик" :-) по китайской микрухе CH579. Предлагаю
сюда добавлять кто чего нарыл. Для начала гугл-перевод даташита
(побит на две части). LightElf(23.05.2021 22:39 - 23:19, ARM, ссылка, ссылка, полностью)
- Резюмируя, стоит закладываться ? интересует по сути только BLE - Aleksey_75(13.12.2024 17:00)
- Столкнулся со странной ситуацией, честно говоря идей нету. Ничего
подобного никогда не видел. Приволокли кучку сдохших плат на
CH579M, платы изрядно поработали и сдохли во время обновления
фирмвари (не шьются). При глубоком исследовании нескольких образцов
обнаружил, что у всех одна проблема: у страницы флеша по адресу
0x8400 не пишется первая половина. То есть сектор (512байт)
0x8400...0x85FF стирается, но область 0x8400..0x84FF после этого не
пишется, остается в FF. LightElf(360 знак., 12.02.2024 21:14)
- Внезапно обнаружил, что англоязычный даташит на сайте WCH для
сабжевой микрухи не содержит описания некоторых регистров Ethernet
(таблица хэшей и фильтр приема пакетов). Выше есть перевод
китайского даташита, в котором эти регистры описаны. Фильтрация по
хэшу у меня, вроде как, работает вот таким макаром (на базе
китайского разъяснения): LightElf(881 знак., 29.12.2023 16:33)
- Огреб странное, хозяйке на заметку. В процессе экспериментов с SPI0
в DMA где-то нахеровертил. И чипец ушел в нирвану совсем, даже по
SWD не откликается. Предполагаю, что DMA непрерывно лупит и шину на
100% занимает. Еле-еле разлочил за счет того, что в ините есть цикл
ожидания готовности кварца. Замкнул кварц пинцетом и стер флешу по
SWD. - LightElf(19.04.2023 14:43)
- Результаты поиска Kpoк(1 знак., 27.01.2023 23:21, картинка)
- 5 дней назад обновился GitHub. Выложили исходники ethernet драйвера
и документацию на английском. Причем и комменты в исходниках
драйвера тоже на Ём, как и примеры, касающиеся сетевых дел... Гyдвин(1 знак., 27.01.2023 19:45, ссылка)
- Интересная статья про CH579 и его Ethernet на Хабре AlexG(1 знак., 14.01.2023 06:57, ссылка)
- Платан > Гyдвин(1 знак., 08.12.2022 22:34, ссылка)
- Наткнулся на пример реализации пользовательского загрузчика с
перенаправлением векторов у китайцев. Без танцев с
бубнами с корявой поддержкой этого дела в чипе. Такой подход мне нравится
гораздо больше. Ну и сохраняется встроенный bootloader для штатной
прошивки через usb/uart если что. Пример проверил - работает.
Прикрепил... Гyдвин(1 знак., 01.12.2022 04:19, ссылка)
- UPD. Исправил размер массива - слишком большой создавался. Если
интересно - я разобрался со штатным механизмом, вполне нормально
работает. LightElf(2067 знак., 01.12.2022 12:57 - 08.12.2022 22:33)
- Спасибо - RED_DRAGON(01.12.2022 20:56)
- Для пересброса, смотрю, нужно довольно длительное время. Похоже я
вчера как раз с этим и прокололся. Нетерпеливый ;) Метод с
пробросом векторов срабатывает мгновенно. - Гyдвин(01.12.2022 20:23)
- У меня осень была загруженная основной работой. Сейчас полегчало, и
пришел очередной позыв ;) Гyдвин(779 знак., 01.12.2022 15:19)
- Я заливаю свой бут через SWD и первое, что мой бут делает -
отключает нах китайского загрузчика и доступ по SWD. LightElf(713 знак., 01.12.2022 16:04)
- Планирую 579F в массовых девайсах. Надо передать "оживление" в
шаловливые ручки наших паяльшиков. Гyдвин(952 знак., 01.12.2022 19:56, ссылка)
- Млтятььь, забыл еще главное. Мелочь - метки и брелоки. Да еще на
новых принципах. И несколько девайсов, работающих в полях, тоже :(
Вся это байда взаимодействовало между собой, включая то, что
упомянул в предыдущем посте... MSP430, LPC1768, меги328,
СС1101,ENC28, MCP2030, LCD и пр. шалабушки, Гyдвин(370 знак., 02.12.2022 05:25)
- А, блин. У 579F же нету SWD, тогда понятно. - LightElf(01.12.2022 20:16)
- Придется опять юзать Gainta и китайские теперь LCD/OLED....
Наклейка для них обходилась в цену, равную себестоимости всего
остального :) Гyдвин(1 знак., 01.12.2022 20:07, картинка)
- У меня такой вопрос: У тебя похоже железки у же приличное время
эксплуатируются. Как у них со стабильностью работы ethernet? Гyдвин(131 знак., 01.12.2022 14:58)
- Мелкомягкий антивирь ругаеццо на троян в архиве. - LightElf(01.12.2022 13:00)
- Не встречал ли кто отладочной платы, типа arduino, на CH579M, по
проще чем по ссылке? Tech_(1 знак., 19.07.2022 15:53, ссылка)
- Господа пользователи CH57x. Библиотека BLE у производителя только в
кейловском формате LIB существует? есть ли вариант либы для
пользования с gcc? или опробованный с этим камнем опенсорс ble стек
в исходниках? - RED_DRAGON(15.06.2022 21:23)Гyдвин
- Меж тем, чипы в товарных количествах начали появляться на LCSC. "F"
стабильно присутствует 1.5 мес., "M" появился вчера после долгого
отсутствия. Соответсвенно, и наши барыги обещают привезти... Гyдвин(1 знак., 10.05.2022 16:13, ссылка)
- LightElf, какая версия штатного загрузчика в ваших чипах? На моих
китайских платках - 2.7. Сегодня довелось перепаивать контроллер
BLDC (друг приволок). Заодно, наконец, решил набить руку по пайке
CH579M. Все прекрасно сдувается и паяется феном. Сдул, запаял чип
из новой партии. Но, сцуко, в новой партии (заказывали сотню штук)
версия загрузчика 2.8. Если загрузить прошивку их утилиткой по usb,
следующий раз эта утилитка чип уже не видит - загрузчик не
стартует, сколько не Гyдвин(1290 знак., 16.08.2021 17:49)
- Еррата на нее есть на английском? Не нашел типовой схемы включения.
0.35 не 0.5 поставить. - vasily777(04.06.2021 12:46)
- Прислали десяток чипов CH579M c работы. Намереваюсь сдуть со своей
платки и попробовать паять. Но пока не пришла еще пара заказанных у
китайцев платок, чОта очкую - шибко мелкое :) - Гyдвин(03.06.2021 11:53)
- Ну вот как то так... Программатор для заливки загрузчика в платки
при производстве. , чтобы "бибизьянки" чО-нить не намухали :) Гyдвин(958 знак., 03.06.2021 11:43, ссылка)
- Сделал первый подход к аппаратному AES. Пока понял только как
шифровать/расшифровывать в режиме ECB с 128-битным ключем. Более
хитрые варианты (в частности CCM) не особо пока ясны. Вот примерно
что делает кетайская либа при шифровании. LightElf(518 знак., 02.06.2021 19:09)
- Проц среди прочей периферии имеет некий LED Controller. Шо это
такое и куда его применить - понять не удается никак. Если кто
поделится мнением - буду признателен. - LightElf(01.06.2021 20:15)
- Простейший драйвер Ethernet, просто иллюстрация отправки и приема
пакетов LightElf(24.05.2021 18:09, ссылка)
- просто добавляйте к сообщениям тег "CH579" и получите спец. конфу - General(24.05.2021 17:48, ссылка)
- Пины девайса не имеют режима "открытый коллектор/открытый сток".
Аппаратного I2C тоже нет. Следует поиметь в виду. - LightElf(24.05.2021 15:18)
- Поддержка чипа в IAR. FlashLoader, регистры, файлы линкера. Просто
развернуть поверх установленного IAR в соответствующие папки. После
перезапуска IDE камень появится в списке. LightElf(23.05.2021 23:20, ссылка)
- У Cortex-M0 отсутствует регистр VTOR, т.е. перенести вектора
прерываний нельзя. Что несколько неприятно для реализации
бутлодера. LightElf(289 знак., 23.05.2021 23:18)
- Мой топик в конфе ESP8266. - Гyдвин(23.05.2021 23:15, ссылка)
- BLE, NET. Гyдвин(23.05.2021 23:11, ссылка, ссылка)