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

 
 
> Вопрос по контроллеру прерывания STM32F103
misyachniy
сообщение Feb 5 2015, 16:42
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Предисловие:
Микроконтроллер с помощью прерывания таймера и АЦП оцифровывает сигнал, вычисляет его амплитуду и фазу.
Для проверки алгоритма и статистической обработки введена функция съема данных в компьютер.
Съем данных через USB, переделан из примера USB CDC.

Суть вопроса:
При частоте сигнала около 6,5 кГц, обычно работает.
Если поднять частоту в 3 раза, соответственно и объем данных в три раза, то сбои становятся заметны.
Сбои проявляются в скачках фазы при обмене по USB.

Понятно что конфликт в прерываниях.

Поиск решения:
Почитал документацию на микроконтроллер.
Контроллер прерывания поддерживает вложенные прерывания с приоритетами, решения очевидно и стандартно.
Назначил прерываниям от USB более низкий приоритет(прописал большее число в регистр) - не помогло.

Нашел "особенность"
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
Как я понял, разрешается манипуляция приоритету по всему диапазону от 0 до 15
http://caxapa.ru/527021.html

Предположил, что виноваты критические секции встречающиеся в USB
Код
ENTR_CRT_SECTION();
EXT_CRT_SECTION();

Отключать их в примерах от производителя не хочется.

теперь сижу и думаю - как организовать съем данных с АЦП, чтобы USB не мешал?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:55
Рейтинг@Mail.ru


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