| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Странное поведение АЦП |
| Автор: baldman88 16.1.2015, 12:31 |
| Доброго всем времени суток. Нужно оцифровывать напряжение с аналогового датчика и передавать данные в ПК для дальнейшей обработки. Есть плата (даже три) на STM32. АЦП, вроде, настроил -- в прерывании UART запускается однократное преобразование. Данные по UART запрашиваются каждые 50 мс. Решил проверить. Датчика самого нет, так как этой частью образовательного проектика занимается одногрупник, поэтому решил проверить с помощью переменного резистора. Подключил. Запускаю ... Кручу движок резистора ... АЦП начинает менять данные только секунд так через 10-15. Перестаю крутить -- тоже самое, данные меняются еще секунд 10-15. Думал, может с UART чего не так, так нет, с ним все в порядке: в его прерывании вызываю функцию-заглушку, в которой инкрементируется статическая переменная, вместо запуска АЦП, и получаю то что и должно быть (такая себе пила). Попробовал другую плату -- опять та же ерунда. Возникает ощущение, что где-то есть довольно большая паразитная емкость, которая сначала долго заряжается, а потом долго разряжается. Вопрос где? Провода по дороге к переменному резистору? Сам переменный резистор? Заранее благодарен любому совету. |
| Автор: Romikgy 16.1.2015, 16:03 |
| я думаю что ошибка в коде ..... особенно после |
| Автор: baldman88 16.1.2015, 17:03 | ||
АЦП в STM32 может работать как в непрерывном режиме, так и запускаться однократно по требованию. Исследуемый процесс изменяется довольно медленно, поэтому и решил не гонять АЦП постоянно. Пробовал и в непрерывном -- результат тот же самый. Попозже выложу код, так как сейчас нет возможности сделать это. |
| Автор: tzirechnoy 16.1.2015, 17:47 |
| Притом, скорее всего, в коде приложэния на компьютэре. Поскольку Вы, наверное, вместо того, чтобы воспользоваться для начала каким-нибудь известным терминалом -- написали своё не Delphi, и теперь удивляетесь, почему оно неработает. |
| Автор: baldman88 16.1.2015, 21:58 | ||
Зря Вы так. Да, приложение самописное, на Qt, но написано и отлажено больше года назад, и за это время с ним проблем не возникало. |
| Автор: tzirechnoy 17.1.2015, 17:21 | ||
Что -- зря? Оскорбил писателя на Qt предположэнием, что он пишэт на Delphi? Ничего, походишь оскорблённым, не переломишься. |
| Автор: baldman88 18.1.2015, 11:08 | ||||
А вот хамство не есть хорошо. Ну да ладно, дело Ваше, ведь хамить легче, чем давать дельные советы. А ошибка оказалась банальной. Сброс флага прерывания на прием в обработчике UART стоял не в том месте. |