Поздравляем 2nd с днём рождения!
- Кароч, RISCоводы ВЦШные, никто не пробовал ставить меморьный
протект на микросхему? Такое впечатление, что при постановке
протекцыи, он её стирает. - mse homjak(09.05.2025 21:48, ARM, полностью)
- Друзья, а ни у кого нет файла таблицы для генерации "ТЮ-ЛЮ-ЛЮКАНИЯ"
под цап для стм 32f103? Balda(128 знак., 31.03.2025 13:25, ARM, полностью)
- Для таких целей можно взять любой кусок "тюлюлюканья", сохранить
его (хоть sox'ом, хоть в audacity) в 8-битном виде, скажем, на
частоте дискретизации в 8кГц, а потом новомодной директивой #embed
воткнуть его в итоговый бинарь как массив uint8_t. Ну и в цикле DMA
гнать в ЦАП или ШИМ (смотря насколько дохренаножный МК). - Eddy_Em(31.03.2025 20:41)
- а чем можно конвертнуть bin в текст СИ? - Balda(05.05.2025 14:18)
- Было сделано чиста для сэбэ IBAH(1 знак., 05.05.2025 20:26, ссылка)
- Рекомендую программу, вдобавок бесплатную Бoмж(2 знак., 05.05.2025 15:05, ссылка, картинка)
- Раз - по ссылке. Два, три и четыре - приложено. Заменить префиксы в
выхлопах три и четыре, думаю, - будет не сложно, а очень несложно. Toчкa oпopы(2 знак., 05.05.2025 14:47, ссылка, ссылка)
- Это физически невозможно. Разве что пройтись дизассемблером, а
потом долго и мучительно самому писать. Смысла - нет никакого! Куда
быстрей с нуля самому написать что угодно. - Eddy_Em(05.05.2025 14:20)
- А реально эту директиву #embed препроцессора с кейлом заставить
работать? Как я понял это релиз Декабрь 24 года.. - Balda(04.04.2025 20:12)
- Какой то простой язычок был для озвучивания нот компом, то ли миди,
то ли забыл. - Visitor(31.03.2025 19:53)
- А такое влезет? Не тюлюлюканье, но может понравится. alexem(1 знак., 31.03.2025 19:30, ссылка)
- вот )) POV(4 знак., 31.03.2025 13:28, картинка, картинка)
- А объясните глюк с GD32F103, внешний кварц. Тыкаю по плате осцилом,
отлаживаю аналоговую часть. Може чего и коротнул... Херак! МК
перестает работать! Диодиком не мигает! Наверно сваливается в
ХардФалаут. После сброса питания все ОК. С СТэМом такого не разу не
было. Неужели генерация срывается? Два раза словил такой глюк,
начинаю беспокоится. - IBAH(06.05.2025 13:40, ARM, полностью)
- Новый ESP32-C5 jlm(1 знак., 03.05.2025 16:58, ARM, ссылка, полностью)
- Я смотрю, народ зажрался. Камень на 240 МГц и 384к СРАМ не вызывает
ровно никакой реакции - Kpoк(05.05.2025 10:41)
- А какую реакцию этот кусок говна может вызвать, если его невозможно
запрограммировать baremetal? - Eddy_Em(05.05.2025 14:21)
- Есть по проще HC32F460JETA;KETA (lqfp-48;64, Cortex-M4F, 200MHz,
512K Flash (+cache), 192K SRAM) Zikon(65 знак., 05.05.2025 14:06)
- Есть ещё RP2350 (dual core (CM33 or RV) 150MHz, 520Mb SRAM) - Zikon(05.05.2025 13:22)
- Как-то, так || Есть ещё SG2002 который в LicheeRV Nano (1ГГц+700МГц
256Мб DDR3) + Linux || по цене не так и дорого - Zikon(05.05.2025 13:10)
- почти такой МК (400МГц/1Mбайт СРАМ ) - STM32H743VIT6 в Промэлектро
600 руб. - Лaгyнoв(05.05.2025 12:20)
- Начали сравнивать байты и мегагерцы, jlm(155 знак., 05.05.2025 11:01)
- Вообще ниочом... ))) Я тут зарядил AT32F435 (288МГц) для HF RFID
ридера и внезапно обнаружил, что под два квадратурных массива
входящего потока с двух АЦП нужно 80000 32-битных структур. А всего
с учетом остального 362KB. Итого в остатке получается всего 20KB,
если требуется zero-wait. А он требуется. - my504(05.05.2025 10:50)
- Да сколько тех ресурсов там останется если sdk фирмовую накатить? А
если просто как МК, без сети, на одном ядре, то артери чем хуже?
Тот же 407VGT7 - POV(05.05.2025 10:48)
- это же не пик :-/ - SciFi(05.05.2025 10:45)
- Коллеги, как лучше сделать - HAL_UART_Receive_IT() поставить до
отправки в очередь или после? UART Rx ISR Mty1(292 знак., 02.05.2025 00:10, ARM, полностью)
- Обращаюсь к отряду телепатов быстрого реагирования :) Может идею
подкинете. Есть устройство с GD32F303. Я из примеров китайских взял
загрузчик HID USB, слегка подправил и использую. Тут понадобилось
грузить фирмварю из микрухи w25q. Добавил в китайский пример эту
тему. Вроде работает. Но при переходе из бута в основную прошивку
падает в хардфаулт. Ума не приложу с чего бы. Решил костыльно -
было без оптимизации, добавил слегка - перестало падать. Но
тревожно - хочется vesago(989 знак., 28.04.2025 14:38, ARM, полностью)
- Опытного эмбеддера не проведёшь! CH32V203, эта сука потребовала
барьера между сбросом модуля CRC подачей данных: Nikolay_Po(2271 знак., 01.05.2025 14:08, ARM, картинка, картинка, полностью)
- CH32V203. Сбой сигнала передачи SPI (при работе с DMA). Nikolay_Po(482 знак., 28.04.2025 01:24, ARM, картинка, полностью)
- Решилось так: сбросил тактовую HCLK (и процессора) с 110.592МГц
(была выбрана для UART и прямой работы с флеш) до 77.4144МГц. Зато
получил тактовую модуля SPI 19.3536МГц и идеальное удержание
последнего бита в 52нс - один такт этой тактовой. Заодно повысил
скорость SPI на целых 40%, до этого она не попадала в ограничения с
делителями шин 2^N. Увеличение скорости SPI, вобщем, штука
позитивная для проекта. Позволит реализовать дополнительный опрос
и, тем самым, сократить время Nikolay_Po(28 знак., 29.04.2025 12:33)
- В общем, это именно косяк модуля SPI. Сделал передачу на
прерываниях. И вот что (сиреневым к нулю - время нахождения в
прерывании TXE - буфер передачи пуст): Nikolay_Po(394 знак., 28.04.2025 17:25, картинка, картинка)
- Бедный, бедный SPI на СТМ-подобных контроллерах. Как можно было
сделать такое уродство, ХЗ... - mse homjak(28.04.2025 14:19)
- А если фазу инвертировать - выдавать новый бит по спаду, а
защёлкивать его (клок) по положительному фронту? Картина изменится?
Может, в связке с DMA проблема (попробовать выдачу 0х55 в цикле, из
регистра, просто по опросу)? А то попахивает жирной эратой. :( - vpv.vpv(28.04.2025 09:28)
- Ну да, похоже на косяк в конце байта. Возможно, что на более
высоком разрешении по времени там видна задержка на 1 такт МК(или
такт для модуля SPI) - т.е. десятки наносекунд. Если так, то в
принципе можно смириться, надо только смотреть в даташитах на
периферию, чтобы Data hold time была не более. Что у тебя там
подцеплено на SPI? Работает? - il-2(28.04.2025 06:26)
- Шансов для устройства, тактируемого по второму перепаду, мало.
Данные изменяются на 9нс
раньше после того, как происходит нештатный, преждевременный тактовый
перепад. Вместо требуемых в моём случае 50нс, удержание данных
сохраняется лишь 9нс. Это нехорошо. Nikolay_Po(127 знак., 28.04.2025 11:56, картинка)
- Ты ниже написал - что тактовая МК 110МГц - т.е. период как раз 9нс.
Можно попробовать посмотреть - изменится ли эта задержка от смены
тактовой МК. Посмотреть - от какой частоты зависит - от AHB или
APB. Если от APB - то можно в принципе снизить ее до 20-30МГц и
таким образом сделать эту задержку более "приличной" - 30-50нс. Так
глядишь - и победить это горе через задний проход :-) - il-2(28.04.2025 18:13)
- Хмм... Спасибо! Гениально! Я сам не догадался. Сейчас проработаю
этот вариант. У меня на этой же шине уже разведённый UART работает.
Но я предусмотрительно сделал тактовую и кварц кратным UART. Должно
сложиться. Мне нужно удержание данных 50нс. Это значит, что
тактовую нужно понизить не выше чем до 1/50нс=20МГц. Системная
частота у меня сейчас 110.592МГц. Значит, нужен делитель не менее
5.5296
МГц. В наличии делители 2, 4, 8 и 16. Беру 8. Nikolay_Po(476 знак., 28.04.2025 22:31)
- Сработало! После изменения делителя PPRE2 в регистре CFGR0 модуля
тактирования RCC, частота второй периферийной шины (PB2) поделилась
на 8, стала 13.824МГц. USART-делители пересчитались автоматически,
связь по RS-485 с устройством не нарушилась. Кадровый таймер
интерфейса связи не пострадал - оказался на первой периферийной
шине (впрочем, и он пересчитывается автоматически - стоит лишь
делитель верно задать). Nikolay_Po(435 знак., 28.04.2025 22:46, картинка, картинка)
- Погонял малость. По устранял ошибки. Типа, в режиме только
передачи, когда входящие с SPI не нужны, не включал DMA на приём. А
в SPI ошибка OVR и её выявлял обработчик состояния SPI. Так же
нужно было не забыть добавить очистку лишнего байта в буфере приёма
и сброса ошибки последовательным чтением сначала регистра данных,
потом статуса. Nikolay_Po(522 знак., 29.04.2025 01:37)
- Если переходить на программный, тогда зачем ДМА? В обычном режиме
оно работает нормально. Ну как, "нормально"... Работает. А я, в
ряде случаев, делаю программный интерфейс для РС232, СПИ, через
ДМА, чтобы не отвлекаться, в процэссе передачи. Формирую в ОЗУ
последовательность установок-сбросов бит порта и травлю на него
ДМА. Много ОЗУ идёт в расход, но щас этого ОЗУ, как у дурака
фантиков. Скорости можно добиться высокой. - mse homjak(28.04.2025 23:17)
- Периферия у меня старый АЦП, у него 50нс требуется удерживать
данные с момента перехода сигнала тактирования. - Nikolay_Po(28.04.2025 09:34)
- Я так думаю, что задержки SPI должны быть равны половине периода
клока. Для этого частота SPI и выбирается (1/2, 1/8, ... 1/64...).
Тут что-то другое. - vpv.vpv(28.04.2025 09:34)
- Ребята, кто знает, есть ли в GCC для RISC-V возможность задать свой
пре-пролог для прерывания? Такое было возможно делать доработанном
GCC от Microchip для их контроллеров. Указывалось в виде параметра
спецификатора. И параметре - ассемблерная инструкция-другая.
Остальной, штатный, пролог компилятор вставлял после моего
пре-пролога. Nikolay_Po(479 знак., 23.04.2025 22:38, ARM, полностью)
- А этот GCC при влёте в прерывание сохраняет весь набор регистров,
или только используемые (изменяемые) в данном прерывании? Я про
программный режим в CH32V, разумеется, не про аппаратный. - vpv.vpv(24.04.2025 11:51)
- Я мечтаю, что сохраняет только используемые. Вроде, при обсуждении
аппаратного механизма, проскакивало, что для маленьких
обработчиков, где затрагивается мало регистров, программное
сохранение контекста может выиграть, но только если делать пролог и
эпилог вручную. Компилятор не оптимизирует количество сохраняемых
регистров. - Nikolay_Po(24.04.2025 11:53)
- Что ж, неважнецкий какой-то компилятор, значит. )) IAR AVR чётко
сохраняет только те, которые меняются. Но! Стоит внутри П/П сделать
ещё один вызов - всё. IAR сохраняет все регистры. Хотя вызов (я
делал косвенные, т.е. через указатели) очень простой. Вот там я
применял "__raw", т.е. указание IAR'у не сохранять ничего. Я сам
сохранял что нужно (особенно эффективна пересылка пары регистров в
другую пару за 1 такт), отчего реакция и отработка П/П
увеличивалась в разы. - vpv.vpv(25.04.2025 07:45)
- Мечта сбылась. Утверждается, что LLVM умеет IPRA. Но если
посмотреть на цифры, то реальная "польза" весьма скромная. Когда в
дизассемблере видишь сохранение кучи регистров, это немного
расстраивает, конечно. SciFi(1 знак., 24.04.2025 12:01, ссылка)
- Вот пример, как надо: __attribute__((naked)) void my_handler_hpe(){
asm("call my_handler; mret"); } - SciFi(24.04.2025 08:13)
- А зачем? Пишешь свою функцию пре-пролог, ее указываешь в таблице
векторов прерывания. А уже из нее делаешь вызов "настоящей"
функции-обработчика прерывания. Только вызов надо делать через JMP - il-2(24.04.2025 05:15)
- Вопрос к опытным пользователям КУБа, там есть возможность включить
оптимизацию -flto? Внутри КУБа вроде бы GCC только не понятно какой
версии, и как управлять оптимизацией сходу не понятно. Хочется без
особых переделок программы, использующей HAL, увеличить
быстродействие, т.е. уменьшить время реакции на прерывание. Сейчас
от прерывания до обработчика проходится несколько слоев функций
HALа, которые должны бы выкинуться при LTO. - AlexBi(22.04.2025 19:22, ARM, полностью)
- Заклинаю: с LTO, повключай все предупреждения компилятора, может
быть, кроме "экстра". И устрани их прежде, чем тестировать работу
кода. LTO - штука весьма жестокая к ошибкам. А предупреждения -
важные подсказки. - Nikolay_Po(23.04.2025 11:03)
- Я кубом не пользуюсь, но уверен, что можно. Найдите место, где
выбирается оптимизация. Где-то рядом будет поле "дополнительные
ключи оптимизации" или "дополнительные параметры". Туда впишите
-flto=auto. - Nikolay_Po(22.04.2025 23:53)
- Я такого места не нашел AlexBi(2 знак., 23.04.2025 05:09, картинка, картинка)
- И проверь, чтобы компилятор был GCC 14.2.Rel1 - с сайта АРМ можно
скачать. Рабоатает. Nikolay_Po(1 знак., 23.04.2025 10:48, ссылка)
- Самая свежая версия вовсе не требуется. - SciFi(23.04.2025 10:49)
- Включение LTO в одном ряду со сменой компилятора. Если уже
включать, то на свежей версии. Ещё: раз уж борешься за скорость,
просто проверь с другой версией компилятора. У меня 14й дал больший
размер кода, чем 12й и 13й. А значит - размотал циклы поглубже.
Может, и скорость вырастет. Стоит, как минимум, попробовать и
сравнить. Nikolay_Po(124 знак., 23.04.2025 11:15)
- А как же: "Регулярное обновление базового ПО это не про исправление
ошибок. Это про исключение необходимости, в критической ситуации,
прыгать через три поколения и отлавливать все глюки этого прыжка в
один (самый неподходящий) момент." (с) Скрипач. Nikolay_Po(1 знак., 23.04.2025 11:00, ссылка)
- Ну так плюсик зелёный нажми, над большим полем Other flags. В
Miscellaneous. - Nikolay_Po(23.04.2025 10:46)
- Разве HAL подключается в виде исходников? Скорее всего, объектный
код, то есть не ждите от него никакого LTO. - SciFi(22.04.2025 20:30)
- Хабарка. "RISC-V: векторное расширение и алгоритм Витерби" Toчкa oпopы(1 знак., 21.04.2025 22:04, ARM, ссылка)
- Почему результат АЦП у STM32F030 может быть всегда ноль, при этом
фактически на входе практически напряжение питания? Тактирование
есть, флаги завершения преобразования выставляются/сбрасываются,
канал выбран правильный, пробовал выбрать несколько каналов, все
дают ноль, хотя на входе что-то есть. Программа сделана в КУБе,
надеялся так быстрее запустить, а оно не хочет измерять АЦП, выдает
всегда ноль, и не понятно что ему не нравится. - AlexBi(18.04.2025 18:13, ARM, полностью)
- Да может тупо проц неисправен (см. п. 1 по ссылке) POV(1 знак., 19.04.2025 13:20, ссылка)
- Действительно, оказалось, что проц неисправен. Сегодня утром еще
помучился, пробовал и так и этак, потом заменил м/с и все
заработало. Не думал что такое возможно. Есть подозрение, что пока
включал плату мог подать повышенное напряжение на процессор. В
итоге, процессор работал, на выводах сигналы формировались, все
флаги у АЦП устанавливались и сбрасывались, но результатом
измерения был ноль. - AlexBi(21.04.2025 15:01)
- Ну мы же все понимаем, какой из вариантов на 99% верный: "проц
сломан"/"компилятор глючный"/"звёзды не так сошлись"/"ымбедер
накосячил". - SciFi(19.04.2025 13:24)
- Нужно расписать преобразование по этапам, и по ним же пошагово
проверять. "ДМА не влияет, в самом регистре результата АЦП ноль" - точно так ? DMA может не запуститься, читать откуда попало и
писать куда попало...
простыню Чек-лист в студию ! - De_user(19.04.2025 13:17)
- На AVDD подано питание? - my504(18.04.2025 21:56)
- Чтобы было = 0 нужно или запуск запретить, или REF отключить - De_user(18.04.2025 20:11)
- [мои очередные высказывания о калокубе] Если делать по даташиту,
все ОК. А вообще, по умолчанию все ноги сконфигурированы как
аналоговый вход. И если на входе 0, то либо неправильно АЦП
настроен, либо DMA (если, конечно, оно используется для получения
данных). - Eddy_Em(18.04.2025 20:10)
- А порты установлены как analogInput? - mse homjak(18.04.2025 18:23)
- Нога МК сконфигурирована в Analog Mode? - il-2(18.04.2025 18:23)
- Вопрос по атомарной записи - чтению в Stm32 f4. Использую uint8_t
uint16_t для передачи флагов между задачами и передачи данных из
ISR, не парясь, т.к. видел в каком то документе по ARM что 8bit
16bit и 32bit запись чтение в ARM атомарные. И тут Deepseek
сообщает мне, что мол нельзя так делать, т.к. если uint16_t не
выровнена по четной границе, запись может быть не атомарной. Правда
или бред? И надо мол использовать #include <stdatomic.h> Mty1(173 знак., 19.04.2025 20:30, ARM, полностью)
- Поднятие приоритета текущего выполнения в RISC-V вместо BASEPRI у
ARM. Nikolay_Po(1187 знак., 05.01.2025 20:21, ARM, ссылка, полностью)
- Олды, подскажите как настроить кейл так чтобы он при прошивке не
стирал последнюю страницу памяти, там хранятся калибровочные
данные. stm32f030 - danuna(09.04.2025 10:49, ARM, полностью)