Страница 1 из 1

STM32F1xx: АЦП и ложные срабатывания TIM15 CC1

Добавлено: Вс дек 23, 2012 00:31:28
РадиоЛоматель
Доброе время суток!
Столкнулся с такой проблемой: Имеется отладочная плата STM32-DISCOVERY с установленным STM32F100RB. Задача состоит в постоянном чтении АЦП и одновременном измерении периода/фазы сигнала с помощью модуля захвата сравнения таймера. Реализовать их в отдельности не составило большого труда. Но проблемы начались после соеденения.
Значит так: На вход TIM15 CC1 подается прямоугольник с частотой 50Гц, имеется прерывание по захвату на фронте, в нем считываю значение, вычитаю предыдущее, получаю так период, принимаю нужное решение. Все работает до тех пор, пока на вход АЦП IN14 не подаю "выпрямленную" синусоиду. (На один период приходится два горба от нуля до 2,2 вольта. Опорное напряжение - 3 вольта. Выбросов и осцилляций сигнал не имеет). Измеренный модулем захвата период тут же уменьшается в два раза. Стоит отсоединить входной сигнал - все возвращается в норму. Сигналы своей формы и тем более частоты не меняют в зависимости от состояния подключений.
Если програмно выключить модуль АЦП, но подавать на вход сигнал - так же все работает нормально. Другой таймер, другие выводы я уже попробовал. Вывод захвата притянут к 3,3 вольта резистором на 1кОм, замыкается на землю через транзистор. На АЦП сигнал приходит с ОУ. Оба сигнала синфазны. Фронт приходится на возрастающее пересечение нуля синусоидой.
Уж не знаю что и поделать. Может кто сталкивался с таким?

Re: STM32F1xx: АЦП и ложные срабатывания TIM15 CC1

Добавлено: Вс дек 23, 2012 00:47:34
DrGandalf
А можно немного подробнее, как вы период так получаете? Не понял это. Что измеряет ваш модуль захвата, когда АЦП программно отключен?

Или вы утверждаете, что выпрямленная синусоида должна иметь тот же период, что и ее исходный сигнал?

Re: STM32F1xx: АЦП и ложные срабатывания TIM15 CC1

Добавлено: Вс дек 23, 2012 01:28:28
РадиоЛоматель
Ладно, я хотел избежать рисования картинок, но прийдется это делать.
Изображение

Тут красная линия - входной сигнал 50 Гц.
Зеленая пунктирная линия - Сигнал после "выпрямителя". Подается на вход АЦП.
Синяя точечная линия - сигнал после компаратора, который подается на вход модуля захвата.
Из модуля захвата по прерыванию берем текущее значение таймера, вычитаем из него предыдущее значение (конечно же, с учетом переполнения таймера) и получаем период в попугаях. (В системных тактах в моем случае, так настроен источник тактирования для таймера).
Проблема заключается в том, что при выключенном АЦП и подключенном сигнале или отсоединенном входном сигнале и включенном АЦП получаем правильное значение периода. При включенном АЦП и подключенном сигнале - многие события захвата происходят раньше в два раза, чем получаем истинное событие.
Захват на возрастающий фронт настроен. Это точно.

Re: STM32F1xx: АЦП и ложные срабатывания TIM15 CC1

Добавлено: Вс дек 23, 2012 01:56:06
РадиоЛоматель
Все. Проблема решена.
Последовательно входу АЦП необходимо добавить резистор на 50кОм. Странно это все.

Re: STM32F1xx: АЦП и ложные срабатывания TIM15 CC1

Добавлено: Вс дек 23, 2012 09:35:45
_AHTOXA_
А вы в обработчике прерывания проверяете источник?
Ну, типа

Код: Выделить всё

    if (TIM15->SR & TIM_SR_CC1IF)
    {
        TIM15->SR = ~TIM_SR_CC1IF;
        ...
    }
?

Re: STM32F1xx: АЦП и ложные срабатывания TIM15 CC1

Добавлено: Вс дек 23, 2012 13:43:08
РадиоЛоматель
_AHTOXA_ писал(а):А вы в обработчике прерывания проверяете источник?
Конечно же я проверяю источник. И флажок сбрасываю. И проверяю переполнение. Программа сейчас сведена до абсурдно простой. Куски инициализации взяты из примеров, тактирование модулей и портов включено, одно прерывание и запущенное АЦП по сравнению таймера.
После установки резистора напряжение на входе АЦП стало "не доставать " до земли на целый вольт. Вход точно переведен программно в состояние Analog_IN.

Re: STM32F1xx: АЦП и ложные срабатывания TIM15 CC1

Добавлено: Пн дек 24, 2012 11:12:15
Galizin
Можно предположить отсутвие соединения аналоговой и цифровой земель.

Re: STM32F1xx: АЦП и ложные срабатывания TIM15 CC1

Добавлено: Пн дек 24, 2012 18:51:40
РадиоЛоматель
Galizin писал(а):Можно предположить отсутвие соединения аналоговой и цифровой земель.
Спасибо человеку, коорый не полез в мою программу копаться. Проблема с землей тоже имела место быть, но после устранения странный эффект не исчез.
Но вторая проблема оказалась в возбуждении операционного усилителя. При чем он сразу начинал работать нормально, если к его выходу подключить осциллограф. А контролировать состояние выходного сигнала на процессоре в это время мне было нечем. Осциллограф то одноканальный. Дело решилось небольшим конденсатором (200 пф) на выходе ОУ.