- 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)
- Прикольненько... Тема про АВР(вернее, ВинАВР-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, полностью)
- китайцы что то изобретают - ch32v006/ch32v007/ch32m007 : Streamlined Timer. непонятое... но интересное klen(218 знак., 18.05.2024 16:48, ARM, ссылка, картинка, полностью)
- Спешу поделиться с коллегами по пескам. AT32F435. Работает связка
TMR5->start->TMR20CH1->ADC1->DMA. В прерывании
по DMA останавливаем TMR20. Проблема состояла в том, что работало
только один раз. Потом транзакции прекращались и в прерывание по
DMA код не влетал. Проблема разрешилась выключением/включением бита
ADC1->ctrl2_bit.ocdmaen перед запуском очередной сессии DMA.
Напомню, что этот бит переключает целевой флаг периферии (в данном
случае АЦП) на my504(192 знак., 12.12.2024 15:28, ARM, полностью)
- Вопрос по плагину egit для CubeIDE и git for windows. Если я
сконфигурю репозиторий для проекта stm32 при помощи git for windows
и начну с ним работать, то потом egit плагин для Cube с ним будет
корректно работать? (Пытался начать с egit сразу, но понял, что без
основ command line нихрена не понимаю логику работы) - Mty1(13.12.2024 01:53, ARM, полностью)
- Единый разъем Jtag для Stm32f4 и Altera ПЛИС MaxV - чтобы грузить
прошивку и отлаживать Stm32 - такое возможно? - Mty1(09.12.2024 13:25, ARM, полностью)