jcxz
Свой-
Постов
13 099 -
Зарегистрирован
-
Посещение
-
Победитель дней
29
jcxz стал победителем дня 28 марта
jcxz имел наиболее популярный контент!
Репутация
172 Очень хорошийИнформация о jcxz
- Сейчас Просмотр темы: Под FreeRTOS не получается вручную изменить указатель стека MSP
-
Звание
Гуру
- День рождения 01.12.1974
Контакты
-
ICQ
Array
Информация
-
Город
Array
-
Считывание кейлом старт прошивки и ее длину
jcxz ответил Метценгерштейн тема в ARM
Что мешает положить её например - в один из неиспользуемых векторов таблицы векторов прерываний? И забыть о проблеме. -
полноценный линукс на "мелких МК" (типа Cortex-M) не возможен по определению. Меньше всяких "блохеров" читайте.
-
Или недобор? max ведь не указано. А значит и 0.5с может не хватить. И почему 0.5с, а не 5с или не 50с? ЗЫ: Вобщем, как уже сказали - решение с задержкой кривое. Сегодня работает, завтра - нет. Но ТСу лень читать документацию, чтобы сделать правильно.
-
Наверняка есть. Но это же документацию читать надо.
-
Всё а не всё. Всё-таки CPU с FIQ/IRQ гораздо шустрее реагируют на прерывания, чем Cortex-M с NVIC.
-
Я вообще-то писал не про время входа в свой ISR, а про случай, когда ваше срочное прерывание возникло в тот момент когда уже только начался вход/выход в другой ISR. И писал это не про ARM-ы с переключением состояний FIQ/IRQ, а про Cortex-M с его NVIC (STM32). Никакой стабильности там быть не может по определению. А будет джиттер в десятки тактов (опять же - Cortex-M).
-
Не верю! Сказки не надо рассказывать. Один вход или выход в ISR занимает уже десятки тактов (это если контекст FPU не сохраняется/восстанавливается; иначе будет ещё печальнее). Точно такие же сказки - максимальное время активации задачи во FreeRTOS == 900нс. По причине (как уже сказали выше) - что сервисы РТОС выполняются как правило при запрещённых прерываниях. ЗЫ: Сказочникам советую почитать описание CPU и посмотреть исходный код сервисов FreeRTOS. Для спуска с небес на землю... Кроме ПЛИС можно взять МК с богатой периферией, и реализовать нужный функционал силами этой периферии.
-
От ESP32 там нужен не WiFi, а BT.
-
и что с того?
-
Ну да Гладко было на бумаге, да забыли про овраги.... Один из моих прошлых заказчиков решил перенести наш проект (ранее реализованный на LPC17) на ESP32. "для удешевления" типа. Нашёл какого-то программиста, взявшегося за работу. И вот.... прошёл почти год. Насколько мне известно - до сих пор ещё результат не получен. Хотя в своё время, на LPC, первая версия девайса у нас заработала уже примерно через месяц. Периферии там немного. Да и в целом вроде девайс не особо сложный. Для обычного микроконтроллера по крайней мере. Хотя у меня с самого начала были большие сомнения насчёт реализуемости на ESP32. PS: И даже если заработает всё-таки, то боюсь заказчик будет неприятно удивлён временем его автономной работы (девайс имеет батарейное питание).
-
STM32 & PID-регулятор
jcxz ответил dimir тема в Программирование
Это не всегда так. А чаще вообще не так. Чаще целевым параметром ПИД-регулирования при управлении мотором, является не скорость, а крутящий момент. Например - в электротранспорте так. Потому что задающим воздействием, которое нужно выполнить ПИД-у, является величина нажатия педали акселератора водителем. Педаль задаёт крутящий момент, а не скорость. Аналогично - с электросамокатами и прочими средствами передвижения. -
Много чего. Например - инитит регистры отладки и включает таймер DWT. Если этот таймер используется в коде, но не проинициализирован, то будут проблемы. Наверное нужно всё-таки проверить просто рестарт, а не вкл. питания? С помощью сигнала RESET и с помощью соответствущего регистра сброса ядра или WDT. Если у вас инит регистров физики реализован криво, то он может не срабатывать из-за того, что физика ещё не закончила power-on reset. А вы уже пытаетесь в неё что-писать. Без контроля готовности. В этом случае после сброса по WDT или через ядро, старт должен быть нормальным, как из под отладчика.
-
Хотя бы в том, что перед передачей управления в main(), необходимо как минимум выполнить си-стартап. Который должен проинициализировать глобальные и статические переменные. Это не считая того, что в запускаемой программе какая-то работа может выполняться до main(). А вы её пропустите.
-
варианты: 1. Не давать включить защиту. 2. Выключить её в соответствующем сервисе ОС (например в сервисе SVC). 3. Сделать все необходимые дела в ISR. Кто мешает вам так сделать? Вроде как всё элементарно.
-
Чтобы "запустить другое приложение", изменить MSP скорей всего будет недостаточно. В идеале нужно предварительно вообще все регистры ядра и периферии перевести в исходное (послесбросовое) состояние. Иначе следующий ваш вопрос будет: "Почему после запуска отладчиком то приложение работает, а после запуска мои загрузчиком - нет?". Мешает то, что оно так не запустится. С большой долей вероятности. Запуститься так оно может только если специально было спроектировано под такой тип запуска. А сделать такое непросто.