Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: ivan_fd 
Форум Picbasic.ru » Программирование МК » PicBasicPro » Проблема с аналоговыми портами PIC16F876
Проблема с аналоговыми портами PIC16F876
Mixlich Дата: Пт, 05.12.2008, 20:02  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Новенький
Сообщений: 14
Репутация: 0   ±
Замечания:   ±
На сайте с 30.11.2008

Статус: Offline

Подскажите, как правильно по очереди считывать с трех каналов АЦП.
Заранее спасибо!
ЯНДЕКС Дата: 05.12.2008
evgenb Дата: Сб, 06.12.2008, 13:36  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 92
Репутация: 3   ±
Замечания:   ±
На сайте с 14.09.2007

Статус: Offline

Пример чтения с 3-х портов
Результат помещаете в переменные и дальше работаете над ними.

' ---------------------[подключаемые файлы АЦП]----------------------------------
'
' Задание параметров для команды ADCIN
Define ADC_BITS 10 ' Задать число разрядов в результате
Define ADC_CLOCK 3 ' Выбрать источник тактового сигнала (3 = RC)
Define ADC_SAMPLEUS 50 ' Задать время преобразования в микросекундах
'
'Назначение переменных
'
advv1 VAR Word ' Создать переменную ACD
advv2 VAR Word ' Создать переменную ACD
advv3 VAR Word ' Создать переменную ACD
'
'---------------Настройки порта A -------------------
TRISA = %11111111 ' Сделать все выводы порта PORTA входами
ADCON1 = %10000000 ' Сделать выводы порта PORTA аналоговыми входами 1= Сдвиг в право 10 разр.АЦП
'
'
ADCIN 0, advv1 ' Преобразовать напряжение в канале A0 и поместить результат в advv1
'
ADCIN 1 advv2 ' Преобразовать напряжение в канале A1 и поместить результат в advv2
'
ADCIN 2, advv3 ' Преобразовать напряжение в канале A2 и поместить результат в advv3
'

Сообщение отредактировал evgenb - Сб, 06.12.2008, 13:50
Mixlich Дата: Сб, 06.12.2008, 20:29  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Новенький
Сообщений: 14
Репутация: 0   ±
Замечания:   ±
На сайте с 30.11.2008

Статус: Offline

0 канал работает правильно, а 1 выводит ахинею
вот кусок программы:
TRISA=255
ADCON1=0
LCDOUT $FE,1
PAUSE 500

LOOP:

ADCIN 0, Res
pause 50
ADCIN 1, Ress
ADMIN Дата: Вс, 07.12.2008, 08:34  |                                                                                                                Сообщение # 4
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1110
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

а почему ADCON1 = 0?
evgenb Дата: Вс, 07.12.2008, 18:03  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 92
Репутация: 3   ±
Замечания:   ±
На сайте с 14.09.2007

Статус: Offline

Mixlich
Пример проекта, моделирован в Proteus 7_4_SP3
Измеряет значение 2-х аналоговых портов и термодатчика DS 1820
четвертый клик по кнопке гашение индикатора и далее по кругу.

http://slil.ru/26409669

Mixlich Дата: Вс, 07.12.2008, 19:46  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Новенький
Сообщений: 14
Репутация: 0   ±
Замечания:   ±
На сайте с 30.11.2008

Статус: Offline

Уже разобрался, немного изменил алгоритм.
Спасибо всем кто отозвался!
вот кусок программы, может кому нибудь пригодится.

**
TRISA = %11111111
ADCON1 = %00000010
PAUSE 500
main :
ADCIN 1, Res
Volts1 = Res*CONV1
Volts2 = Res*Conv2
Volts2 = Volts2/100
Volts1 = Volts1+Volts2
Lcdout $FE,1,"V=",Dec4 Volts1

ADCIN 0, Ress
Volts01 = Ress*CONV1
Volts02 = Ress*Conv2
Volts02 = Volts02/100
Volts01 = Volts01+Volts02
Lcdout $FE,$C0,"V=",Dec4 Volts01

ADMIN Дата: Пн, 08.12.2008, 03:52  |                                                                                                                Сообщение # 7
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1110
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

А можно же две одинаковые подпрограммы переделать в одну, и обращаться к ним по очереди, меняя канал измерения
Форум Picbasic.ru » Программирование МК » PicBasicPro » Проблема с аналоговыми портами PIC16F876
Страница 1 из 11
Поиск: