Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

Организация поочередного управления каналов АЦП в MPlabe

Пн май 15, 2017 14:01:47

Здравствуйте! Нужно запрограммировать поочередное снятие показания АЦП по каналам, сначала с AN1 Затем с AN4 для сравнения, как это сделать в MPlabe? Спасибо!

Re: Организация поочередного управления каналов АЦП в MPlabe

Пн май 15, 2017 15:03:35

Схема где?
На каком языке пишемс? (асм, СИ?)
:tea:

Re: Организация поочередного управления каналов АЦП в MPlabe

Пн май 15, 2017 15:46:55

Схема где?
На каком языке пишемс? (асм, СИ?)
:tea:

На асм) Схема в протеусе, показания с потенциомметра - 1АЦП, показания с термопары 2 АЦП
Вложения
Безымянный.png
(85.46 KiB) Скачиваний: 574

Re: Организация поочередного управления каналов АЦП в MPlabe

Вт май 16, 2017 15:03:12

А при чем тут ПК?
Пишем программку для той схемки под выбранный ПИК...
Или даем объяву "сделайте за меня курсач" в разделе viewforum.php?f=53
:roll:

Re: Организация поочередного управления каналов АЦП в MPlabe

Вт май 16, 2017 19:10:12

Могу заняться.

Re: Организация поочередного управления каналов АЦП в MPlabe

Вт май 16, 2017 19:31:17

vadim37rus, а какие-нибудь наработки уже есть ? Или только схема ?

Re: Организация поочередного управления каналов АЦП в MPlabe

Ср май 17, 2017 15:19:12

vadim37rus, а какие-нибудь наработки уже есть ? Или только схема ?

В Mplabe есть.

Добавлено after 12 minutes 24 seconds:
А при чем тут ПК?
Пишем программку для той схемки под выбранный ПИК...
Или даем объяву "сделайте за меня курсач" в разделе viewforum.php?f=53
:roll:

Мне чутка осталось) только каналы эти организовать на asm в Mplabe все остальное уже прописал, и на дисплей выводит, вторую часть программы где с термопары снимается - тоже, но из-за того что не знаю как задать каналы не могу организовать сравнение, потому что модуль АЦП забивается первыми измерениями, а мне надо поочередно по каналам. Как организую каналы преобразую АЦП и запишу в отдельные ячейки памяти, а там уже и сравнивать можно.

Re: Организация поочередного управления каналов АЦП в MPlabe

Ср май 17, 2017 15:55:32

Изображение

Что в этом регистре вызвало Ваши вопросы?
Есть сомнения относительно того, что Вы остальное написали сами.
Ничего проще переключения мультиплексора АЦП нет.

Re: Организация поочередного управления каналов АЦП в MPlabe

Ср май 17, 2017 17:20:32

Изображение

Что в этом регистре вызвало Ваши вопросы?
Есть сомнения относительно того, что Вы остальное написали сами.
Ничего проще переключения мультиплексора АЦП нет.



Так я запущу только один канал и буду снимать показания только по этому каналу, а потом мне же надо переключится на другой канал.

Вот я снимаю показания с 1 канала, затем надо переключится на 4.

movlw B'10000101';настройка АЦП
; |||||||| ;<АЦП выключен>
; |||||||*-- ADON включение АЦП 0 - отключен, 1-включен
; ||||||*--- GO/DONE 0-данные готовы 1-преобразование
; |||||*-- CHS0 \
; ||||*--- CHS1 / выбор аналогового канала
; |||*-- CHS2 /
; ||*--- не используется
; |*-- VCGF опора 0 - Vdd 1 - вывод Vref
; *--- ADFM выравнивание результата 0-левое 1 правое
movwf ADCON0

Re: Организация поочередного управления каналов АЦП в MPlabe

Ср май 17, 2017 18:09:50

Битами CHS0...CHS2 выбирается канал. Изменяйте их, когда хотите его переключить, и всё...
Не понятно в чём проблема :dont_know:

Re: Организация поочередного управления каналов АЦП в MPlabe

Ср май 17, 2017 18:27:12

Не понятно в чём вопрос.
1. Загружаем в ADCON0 число с требуемым каналом ADC (к примеру, movlw B'10000101').
2. Ждём (время TACQ) /читать раздел "A/D Acquisition Requirements"/.
3. Поднимаем бит ADCON0,GO
4. Когда ADCON0,GO станет "0" (или получено прерывание из ADC) считываем значение с ADC и сохраняем в соответствующий регистр.
5. Возвращаемся к пункту 1.
-----
P.S.
Если непонятен пункт "1" - один из вариантов решения:
Делаем таблицу значений для загрузки в ADCON0.
Организовываем некий счётчик, который считает от "0" до требуемого "числа вариантов переключения входов".
По числу из этого счётчика читаем строку из таблицы и загружаем в ADCON0.

Re: Организация поочередного управления каналов АЦП в MPlabe

Ср май 17, 2017 20:49:08

Не понятно в чём вопрос.
1. Загружаем в ADCON0 число с требуемым каналом ADC (к примеру, movlw B'10000101').
2. Ждём (время TACQ) /читать раздел "A/D Acquisition Requirements"/.
3. Поднимаем бит ADCON0,GO
4. Когда ADCON0,GO станет "0" (или получено прерывание из ADC) считываем значение с ADC и сохраняем в соответствующий регистр.
5. Возвращаемся к пункту 1.
-----
P.S.
Если непонятен пункт "1" - один из вариантов решения:
Делаем таблицу значений для загрузки в ADCON0.
Организовываем некий счётчик, который считает от "0" до требуемого "числа вариантов переключения входов".
По числу из этого счётчика читаем строку из таблицы и загружаем в ADCON0.


Большое Спасибо!)
Ответить