реклама на сайте
подробности

 
 
> Запуск процесса на одном уровне прерывания, из разных уровней прерываний
Hexel
сообщение Jun 8 2018, 19:01
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 13-03-12
Из: Украина
Пользователь №: 70 785



Добрый день!

Ув. коллеги, подскажите пожалуста, как вызывая подпрограмму из разных уровней прерываний, обеспечить ее завершение таким образом, чтобы она не была прервана из более высокого приоритета? Речь идет об диспетчере событий (собственная терминология =), который фильтрует события из разных модулей и сохраняет отчет в EEPROM. Разрыв в неподходящий момент непременно приведет к порчи лога, и заметить это будет сложно.
Например, чтобы при вызове такая процедура работала на самом высоком уровне. Я полистал документацию по АРМ, но даже не знаю, где копать. Отключать прерывания нахрен до завершения - топорно, но должно работать) По-моему, еще такой функционал реализует RTOS, но опять же я в этом новичок. Какие есть варианты?

Проц STM32F334


--------------------
нет повести печальнее на свете, чем повесть о запавшем ресете
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Forger
сообщение Jun 15 2018, 12:34
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Hexel @ Jun 8 2018, 22:01) *
Отключать прерывания нахрен до завершения - топорно, но должно работать)

В STM запись в EEPROM и так приостанавливает работу выполнение кода на аппаратном уровне. Так что критические секции будут бесполезны.
Цитата
When the code is executing from the Flash program memory, the instruction must be read
from it, this is not possible during a write operation on any memory block of the same bank.
In such case the program execution stalls during the EEPROM data write.
Stalling happens at the Busmatrix interconnection and blocks the data recipient until the
data is available.
The stall does not disrupt the sequence of operation. What happens is that the CPU core
keeps waiting for the instruction fetch. Also, the stall only affects the CPU core. Processes
independent from the core, such as DMA or peripherals may continue to work as long as
they avoid accessing the NVM bank.


Подробности как решить вашу задачу см. тут: AN4808.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 06:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01372 секунд с 7
ELECTRONIX ©2004-2016