Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: ivan_fd  
Форум Picbasic.ru » Программирование МК » PicBasicPro » Внутренний ЦАП в PIC.
Внутренний ЦАП в PIC.
iso10 Дата: Вс, 11.12.2016, 22:09  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 19
Репутация: 0   ±
Замечания:   ±
На сайте с 16.07.2012

Статус: Offline

Имеется PIC12F1822 никак не разберусь с ЦАП. Если кто работал с встроенным цап в других пиках, подскажите "что, да как". Как прописать регистры и какие команды в Picbasic на выход ЦАП (в случае с 12f1822 это порт RA0). Даташит читал.
ЯНДЕКС Дата: 11.12.2016
MiXaS Дата: Пн, 12.12.2016, 16:24  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 550
Репутация: 27   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Цитата iso10 ()
Имеется PIC12F1822 никак не разберусь с ЦАП. Если кто работал с встроенным цап в других пиках, подскажите "что, да как". Как прописать регистры и какие команды в Picbasic на выход ЦАП (в случае с 12f1822 это порт RA0). Даташит читал
Трудно разобраться с тем, чего нет. У PIC12F1822 нет ЦАП. Есть АЦП. Если вы говорите про АЦП, то и выхода у него нет. Есть только входы. В пиках ЦАПы идут в более продвинутых камнях.
ADMIN Дата: Пн, 12.12.2016, 18:07  |                                                                                                                Сообщение # 3
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Михаил, мне кажется, вы заблуждаетесь. Даташит на данный мк утверждает, что ЦАП в нем есть и содержит информацию о регистрах настройки работы ЦАП на 155 странице.

Добавлено:
Поскольку такого PIC у меня нет, пробовал такую программку в Протеусе:
Проект, правда, в Протоне, но суть ясна, думаю
Код
Device = 12F1822

Config1 FOSC_INTOSC, WDTE_OFF, PWRTE_ON, MCLRE_OFF, CP_OFF, CPD_OFF, BOREN_OFF, CLKOUTEN_OFF, IESO_OFF, FCMEN_OFF
Config2 WRT_OFF, PLLEN_ON, STVREN_ON, LVP_ON

Dim Dir As Bit
TRISA.0 = 0  'Порт А.0 - на выход
           
DACCON0= %11100000;  // DAC enable, VDD as reference  
While 1=1
If Dir = 0 Then
   DACCON1 = DACCON1 + 1  'Переключаем матрицу R2R вверх
   If DACCON1 > 31 Then
      Dir = 1
   EndIf
Else
   DACCON1 = DACCON1 - 1 'и вниз. Типа пилы должно получиться по задумке
   If DACCON1  = 0 Then
      Dir = 0
   EndIf
EndIf
DelayMS 10      
Wend


Ничего не вышло. Может, дело в протеусе.
Вот ссылка - по ней более или менее ясно, что надо настроить.
ADMIN Дата: Вт, 13.12.2016, 09:15  |                                                                                                                Сообщение # 4
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Нашел ошибку с помощью рабочего кода Си-компилятора. Почему, пока не знаю, но нужно порт RA.0 настраивать на ввод.
То есть TRISA.0=1 должно быть.
Тогда все работает. Вот подтверждение:
Прикрепления: 6597010.png (236.6 Kb)
iso10 Дата: Вт, 13.12.2016, 10:07  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 19
Репутация: 0   ±
Замечания:   ±
На сайте с 16.07.2012

Статус: Offline

По даташиту стр.147, настройка ADCON0:

bit 7 Unimplemented: Read as ‘0’
bit 6-2 CHS<4:0>: Analog Channel Select bits
00000 = AN0
00001 = AN1
00010 = AN2
00011 = AN3
00100 = AN4(1)
00101 = AN5(1)
00110 = AN6(1)
00111 = AN7(1)
01001 = Reserved. No channel connected.



11100 = Reserved. No channel connected.
11101 = Temperature Indicator(4)
11110 = DAC output(2)
11111 =FVR (Fixed Voltage Reference) Buffer 1 Output(3)
bit 1 GO/DONE: A/D Conversion Status bit
1 = A/D conversion cycle in progress. Setting this bit starts an A/D conversion cycle.
This bit is automatically cleared by hardware when the A/D conversion has completed.
0 = A/D conversion completed/not in progress
bit 0 ADON: ADC Enable bit
1 = ADC is enabled
0 = ADC is disabled and consumes no operating current

То есть, как я понял, в настройках АЦП надо указывать либо АЦП (номер порта), либо ЦАП (11110 = DAC output). И видимо придется каждый раз переключать, т.к. АЦП у меня тоже задействован.

Сообщение отредактировал iso10 - Вт, 13.12.2016, 10:07
ADMIN Дата: Вт, 13.12.2016, 12:45  |                                                                                                                Сообщение # 6
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Ну если используется канал ацп на этом же порту, то да, нужно будет переключаться
iso10 Дата: Вт, 13.12.2016, 14:08  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 19
Репутация: 0   ±
Замечания:   ±
На сайте с 16.07.2012

Статус: Offline

Цитата ADMIN ()
Ну если используется канал ацп на этом же порту, то да, нужно будет переключаться
Нет, под АЦП задействован другой порт RA1. Но как задавать конфигурацию регистра ADCON0?
То есть придется каждый раз "переключать" ADCON0 = %01111001 (ЦАП RA0) на ADCON0 = %00000101 (АЦП RA0).
ADMIN Дата: Вт, 13.12.2016, 16:47  |                                                                                                                Сообщение # 8
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

В 12F1822 этого не надо делать, так как биты с 4 по 7 работают только в 12F1823. Об этом сказано в даташите на 142 странице
iso10 Дата: Вт, 13.12.2016, 18:14  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 19
Репутация: 0   ±
Замечания:   ±
На сайте с 16.07.2012

Статус: Offline

00100 = AN4(1)
00101 = AN5(1)
00110 = AN6(1)
00111 = AN7(1)
1: PIC16(L)F1823 only. For PIC12(L)F1822 it is “Reserved. No channel connected”.

Вы это имеете ввиду? У меня на 142 стр. информации о выборе АЦП и ЦАП нет.
ADMIN Дата: Ср, 14.12.2016, 02:47  |                                                                                                                Сообщение # 10
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Нет, вот картинка:
Вообще, при симуляции в протеусе ADCON0 показывает по нулям. Экспериментируйте!
Прикрепления: 9712686.png (47.3 Kb)
iso10 Дата: Сб, 17.12.2016, 11:56  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 19
Репутация: 0   ±
Замечания:   ±
На сайте с 16.07.2012

Статус: Offline

Цитата ADMIN ()
В 12F1822 этого не надо делать, так как биты с 4 по 7 работают только в 12F1823. Об этом сказано в даташите на 142 странице
Это биты выбора канала (порта) и в 12F1822 они тоже работают, просто нет столько портов.
Какая команда в Picbasic на вывод заданного напряжения на выход встроенного ЦАП?
ЯНДЕКС Дата: 17.12.2016
ADMIN Дата: Сб, 17.12.2016, 21:00  |                                                                                                                Сообщение # 12
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Цитата iso10 ()
Это биты выбора канала (порта) и в 12F1822 они тоже работают, просто нет столько портов.

Да. Это очевидно.
Спец команды нет. Если внимательно посмотреть на приведенный мной код и прочесть комментарии, то можно понять, что вывод напряжения в порт производится простой записью числа от 0 до 32 в регистр DACCON1.
Форум Picbasic.ru » Программирование МК » PicBasicPro » Внутренний ЦАП в PIC.
  • Страница 1 из 1
  • 1
Поиск: