Добрый день!
Помогите пожалуйста разобраться вот в каком вопросе. Программирую STM32F303VC через Atollic Studio с использованием "стандартных" библиотек.
Принцип работы устройства предполагает формирование прямоугольных импульсов тока заданной длительности (1 - 2 мс), затем пауза около 5 мс и повторение импульса.
В программе реализуется это так - таймер отсчитывет интервалы времени и при переполнении "включает заданную ножку контроллера" (ток начинает протекать через нагрузку); аналоговый watchdog следит за величиной тока. Получается все как нужно.
Вся проблема заключается в формировании заднего фронта тока и конфликте прерываний (если я это правильно понимаю). Например, analog watchdog "говорит", что ток находится в заданном диапазоне и на выходе остается логическая единица. Но в этот момент времени запускается прерывание от таймера (более приоритетное и ставит прерывание аналогового watchdoga в очередь) и отключает watchdog. Но "единичка" записанная на соответствующий выход продолжает висеть.
Подскажите пожалуйста, как вывести прерывание watchdoga из "очереди", чтобы контроллер к нему не возвращался после обработки более приоритетного прерывания. ADC_ClearITPendingBit (ADC1, ADC_IT_AWD1) не помогает и контроллер все равно возвращается к обработке прерывания.
|