|
673 / 45 / 16
Регистрация: 23.10.2015
Сообщений: 93
|
||||||
1886ВЕ61У1 использование АЦП23.12.2015, 16:42. Показов 3802. Ответов 23
Метки нет (Все метки)
Здравствуйте,
Используется указанный в заголовке контроллер. Необходимо получит на вход АЦП контроллера преобразованное в цифровой сигнал напряжение и отправить по RS485 на компьютер. Значение напряжения получаю с помощью регистра ADRESH. Далее его присваиваю переменной unsigned char TMP и отправляю с помощью регистра TXREG1. И жду установки флага отправки. PA2, PA3 настроены на выход. АЦП настроено так, что все, кроме 7 бита порта C настроены на вход. Вообщем, передача данных настроена вроде правильно и работает, если отправляет числа (15,14,13 и т.д.). Проблема заключается в том, что при отправки значение напряжения TMP на компьютере получаю число 63(или $). Код работы с АЦП:
А иногда вообще получаю отрицательные числа, хотя отправляю unsigned char
0
|
||||||
| 23.12.2015, 16:42 | |
|
Ответы с готовыми решениями:
23
Использование АЦП в STM32f103 Использование нескольких каналов АЦП Использование несколькх АЦП ATtiny13 |
|
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,696
|
|
| 23.12.2015, 18:10 | |
|
Скорость передачи до компьютера какая?
Частота кварцевого стабилизатора какая? Можно использовать передачу по USORT в 1886ВЕ61У1 через прерывание? Где вы на 1886ВЕ61У1 нашли документацию?
0
|
|
|
673 / 45 / 16
Регистрация: 23.10.2015
Сообщений: 93
|
|
| 23.12.2015, 18:37 [ТС] | |
|
Скорость 9600
Кварц 24мгц Документация в гугле 1886ве6 она для всей серии похожа. Прерывания от параллельного можно
0
|
|
|
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,696
|
||
| 23.12.2015, 18:56 | ||
|
А какое у вас значение регистра SPBRG?
0
|
||
|
673 / 45 / 16
Регистрация: 23.10.2015
Сообщений: 93
|
|
| 23.12.2015, 20:28 [ТС] | |
|
299. Да с передачей вроде нет проблем. Обычные числа передаются нормально. Проблема с ацп я думаю
0
|
|
|
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,696
|
|
| 23.12.2015, 20:54 | |
|
Максимальное значение которое может содержать регистр SPBRG это число 255, а у вас 299?
Допустим компилятор откомпилировал код со значением SPBRG=299 но принял 8 бит значения из числа 299 это будет 43 24 000 000Гц/(32*(43+1))=17045,45454545455 бит/с Для АЦП скольки разрядный регистр ADRES? Если данные АЦП записываются в два 8 битных регистра ADRESH:ADRESL значит ADRES 16 битный и по коду вы его передаёте в переменную tmp1 а потом пытаетесь передать это значение в 8 битный регистр TXREG1.
1
|
|
|
673 / 45 / 16
Регистрация: 23.10.2015
Сообщений: 93
|
|
| 24.12.2015, 08:47 [ТС] | |
|
по поводу скорости я че-то сам не понял почему 299) сейчас исправлю. А для приема данных использую лишь старшие разряды регистра ацп - 8 бит, ну тут тоже вижу ошибку. Сейчас все исправлю и сообщу о результате спасибо.
0
|
|
|
673 / 45 / 16
Регистрация: 23.10.2015
Сообщений: 93
|
|
| 24.12.2015, 09:07 [ТС] | |
|
так, теперь для передачи полученного значения напряжения использую переменные uns8, получаю значение из ацп в рег ADRESH. В рег SPBRG1 передаю 77.
Вот у меня написана программка под Win, которая должна принимать по rs485 данные и записывать их в датагрид. Эта программка работает след. образом. Приходит первое сообщение с данными, в котором указан номер строки датагрида и как я понимаю программа понимает это сообщение. А следующее за ним сообщение программа должна воспринимать как значение напряжения, которое нужно записать. Но приходят неведомые числа. И я думаю, что у меня проблемы с рег ADRESH, содержимое которого я пытаюсь отправить в эту программу. Просмотрев приходящие данные, используя сторонние терминалы, я увидел, что приходят отрицательные значения, которые моя программка просто не воспринимает. Вопрос откуда там приходят отрицательные значения, если даже к каналу, с которого должно считываться напряжение ничего еще не подключено. Я думал в таком случае в ADRESH должен быть 0. А приходят неведомые отрицательные числа.
0
|
|
|
673 / 45 / 16
Регистрация: 23.10.2015
Сообщений: 93
|
||||||
| 24.12.2015, 11:56 [ТС] | ||||||
|
Возник вопрос по поводу бита ADFM регистра ADCON1. Выравнивание регистра ADRES. Что это и где тогда будет результат.
Добавлено через 2 часа 12 минут Вообщем, у меня походу непонятки с АЦП. Объясните пожалуйста. Вот, как делаю я
0
|
||||||
|
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,696
|
|
| 24.12.2015, 17:27 | |
|
Это вам для дальнейшего можно сразу передавать TXREG1 = ADRESL. Не обязательно через переменную.
Аналоговые порты АЦП микроконтроллера очень чувствительные к внешним источникам помех и если не подтянуть входы АЦП через скажем 1 кОм-ные резисторы к минусу то у вас постоянно будут сыпаться из ADRESL различные данные произвольной формы.
1
|
|
|
673 / 45 / 16
Регистрация: 23.10.2015
Сообщений: 93
|
|
| 25.12.2015, 15:34 [ТС] | |
|
Еще один вопрос. Я сделать так, чтоб данные с ацп получались в регистре ADRESH - в старших битах регистра ADRES. Я хотел бы спросить в каком формате будет число, которое я получу.. целое или с запятой, если с запятой, то в как отбросить то, что после нее.
Добавлено через 6 часов 15 минут Новый вопрос) Разрядность ацп 12. Диапазон входных напряжение от 0 до 5 вольт. Почему ацп не воспринимает напряжение 0.3 ? а точнее в программе я просто получаю 0. Добавлено через 15 минут И еще один. в ацп приходит допустим напряжение 0.6В . Как это число будет записано в регистр ADRES, если я установил левое выравнивание. Можно ли умножить значение этого регистра на 100 допустим... и взять целую часть? Просто изначально напряжение больше, но перед входами в ацп стоят делители напряжения. Это сделано ввиду того, что контроллер не может принят напряжение 60 или 30. Только от 0 до 5В. И мне нужно получить изначальное значение.
0
|
|
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||
| 25.12.2015, 15:36 | ||
|
Иначе на вопрос почему остается ответить: "потому что".
1
|
||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
||
| 25.12.2015, 19:42 | ||
Сообщение было отмечено IngProj как решение
Решение![]() откуда взялось сто? если немного почитать про теорию АЦП то будет ясно что есть частота дискретизации(сейчас нас не интересует) шаг дискретизации, это опорное напряжение деленное на разрядность например опорное напряжение 5 вольт, разрядность 8 бит итого 5/28=5/256=0,01953125 каждый отсчет равен 0,01953125 вольт
1
|
||
|
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,696
|
|
| 25.12.2015, 20:38 | |
|
И всё это передавать на скорости 9615 на компьютер который принимает на скорости 9600. Будут проскакивать ошибки и новые вопросы.
IngProj, изучайте передача/приём данных USORT через прерывание.
1
|
|
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||
| 26.12.2015, 00:00 | ||
|
1
|
||
|
673 / 45 / 16
Регистрация: 23.10.2015
Сообщений: 93
|
|
| 28.12.2015, 09:21 [ТС] | |
|
Я во многом разобрался. Полученное значение из ацп умножаю на квант. Как раз получаю необходимые мне значения. Но почему-то 0.3 ацп все равно воспринимает как 0, хотя квант намного меньше. Время ещё есть подумаю) спасибо за советы и ответы)
Добавлено через 8 часов 38 минут Даже точнее до 0.7В АЦП не воспринимает. Напряжение подаю тупо напрямую во вход АЦП контроллера. Более 0.7 приходят значения.
0
|
|
|
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,696
|
|
| 28.12.2015, 21:55 | |
|
Хоть бы схему приложили как вы там на вход АЦП напряжение подаёте?
0
|
|
|
673 / 45 / 16
Регистрация: 23.10.2015
Сообщений: 93
|
|
| 11.01.2016, 08:52 [ТС] | |
|
Снимаем напряжение U
0
|
|
|
673 / 45 / 16
Регистрация: 23.10.2015
Сообщений: 93
|
|
| 11.01.2016, 08:55 [ТС] | |
|
еще диод стоит перед входом АЦП забыл нарисовать в сторону входа
Добавлено через 1 минуту Да и эта схема не важна. я напрямую в МК пробовал подавать напряжения от 0 до 5. И до 0.7 МК думает, что приходит 0.
0
|
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
||
| 11.01.2016, 09:04 | ||
![]() посему перечитай еще раз описание на МС, может там описан диапазон
1
|
||
| 11.01.2016, 09:04 | |
|
Помогаю со студенческими работами здесь
20
AVR АЦП использование нескольких каналов АЦП и oversampling: использование синуса в качестве шума
Использование USB снижает количество отсчётов АЦП Расширение АЦП микроконтроллера и подключение к АЦП датчиков Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|