Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 03.04.2020, 14:17   #1
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 43
Сообщений: 366
Вес репутации: 98/0
Руслан will become famous soon enough
По умолчанию АЦП не обрабатывает больше 2,49В

Всем привет!
Проц PIC18F4520
при работе с АЦП больше чем 2,49В не оцифровывает.

Т.е. пока подаю на вход АЦП до 2,49 В показывает норм,
а когда подаю больше, например 2,66 В то останавливается на 2,49В и больше не показывает.

В схеме ничего не нога АЦП не висит.
В даташите не нашел подобных ограничений - может плохо смотрел?

Вот так инициализирую работу с АЦП:

Код:
       //InitAD();
    PORTA = 0;                
    LATA = 0;
 
     ADCON1 = 0b01001110;//AN0-аналоговый, остальные все цифровые 
    TRISA  = 0b00000001;//RA0/AN0 - вход, остальные все выходы 
    ADCON0 = 0b10000001;
    ADIF = 0;                         
                                      
    ADIE = 0;//Disables the A/D converter interrupt
Заранее благодарю!
Руслан вне форума   Ответить с цитированием
Старый 03.04.2020, 14:55   #2
HJV
Senior Member
 
Регистрация: 25.02.2007
Адрес: Чита
Возраст: 39
Сообщений: 528
Вес репутации: 1108/65
HJV has much to be proud ofHJV has much to be proud ofHJV has much to be proud ofHJV has much to be proud ofHJV has much to be proud ofHJV has much to be proud ofHJV has much to be proud ofHJV has much to be proud ofHJV has much to be proud of
Отправить сообщение для HJV с помощью ICQ
По умолчанию Re: АЦП не обрабатывает больше 2,49В

С опорой косяк.
HJV на форуме   Ответить с цитированием
Старый 03.04.2020, 15:53   #3
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 43
Сообщений: 366
Вес репутации: 98/0
Руслан will become famous soon enough
По умолчанию Re: АЦП не обрабатывает больше 2,49В

Цитата:
Сообщение от HJV Посмотреть сообщение
С опорой косяк.
согласно даташита опора берется от питания и оно у меня 5 В - проверял

стр 226 даташита:
VCFG1:
Voltage Reference Configuration bit (VREF- source)

1
= VREF- (AN2)

0
= VSS

bit 4
VCFG0: Voltage Reference Configuration bit (VREF+ source)

1
= VREF+ (AN3)

0 = VDD

у меня вроде верно:
Код:
ADCON1 = 0b01001110;
Руслан вне форума   Ответить с цитированием
Старый 03.04.2020, 16:38   #4
DmitrijVDN
Senior Member
 
Регистрация: 09.04.2010
Сообщений: 857
Вес репутации: 1630/62
DmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant future
По умолчанию Re: АЦП не обрабатывает больше 2,49В

Цитата:
Сообщение от HJV Посмотреть сообщение
С опорой косяк.
или с переводом попугаев в вольты.
DmitrijVDN вне форума   Ответить с цитированием
Старый 03.04.2020, 20:26   #5
Guaho
Senior Member
 
Аватар для Guaho
 
Регистрация: 28.06.2013
Возраст: 48
Сообщений: 766
Вес репутации: 1674/49
Guaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant future
По умолчанию Re: АЦП не обрабатывает больше 2,49В

Проверьте настройки компараторов, стр. 234 даташита. И посмотрите, не висит ли ещё чего из периферии на тех пинах, что используете. Хорошим тоном было бы пройтись по всему даташиту и поотключать всё, что Вам не нужно, заодно и возможные конфликты устраните.
Guaho вне форума   Ответить с цитированием
Старый 04.04.2020, 06:29   #6
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,489
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: АЦП не обрабатывает больше 2,49В

налицо -половина напряжения

как вариант
ADCON2
Цитата:
bit 7 ADFM: A/D Result Format Select bit
1 = Right justified
0 = Left justified
ежели там 0, то данные сдвинуться к левому краю...
т.е. максимальное значение будет 0xFFC0
а ежели в программе при сьёме используются signed переменные, то старший бит- это знак....

в итоге- в программе (-2,5)-(+2,5)

сложно понять... куска кода по сьёму- обработке нет.
SergP01 вне форума   Ответить с цитированием
Старый 04.04.2020, 09:59   #7
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 43
Сообщений: 366
Вес репутации: 98/0
Руслан will become famous soon enough
По умолчанию Re: АЦП не обрабатывает больше 2,49В

Цитата:
Сообщение от SergP01 Посмотреть сообщение
налицо -половина напряжения

как вариант
ADCON2


ежели там 0, то данные сдвинуться к левому краю...
т.е. максимальное значение будет 0xFFC0
а ежели в программе при сьёме используются signed переменные, то старший бит- это знак....

в итоге- в программе (-2,5)-(+2,5)
Увидел у себя в инициализации закомменченный код:
Код:
//уже ADFM = 0 выше                 //bcf    ADCON1, ADFM    ;Result justification
это писалось для PIC18F452 и переносилось в PIC18F4520. Т.е. в старой версии пика регистр ADFM был в ADCON1, а теперь его перенесли в ADCON2. Т.е. когда микрочип выпускает новый проц переносимость кода их не волнует...

Цитата:
Сообщение от SergP01 Посмотреть сообщение
сложно понять... куска кода по сьёму- обработке нет.
прикладываю код ниже
Код:
    
//инициализация 
 //InitAD();
    PORTA = 0;                
    LATA = 0;
 
     ADCON1 = 0b01001110;//AN0-аналоговый, остальные все цифровые 
    TRISA  = 0b00000001;//RA0/AN0 - вход, остальные все выходы 
    ADCON0 = 0b10000001;
    ADIF = 0;                         
                                      
    ADIE = 0;//Disables the A/D converter interrupt
 
/////////////////////////////////////////////
//функция чтения АЦП
unsigned int AD()
{    
   unsigned int us_Result;    
 //***************************************************************
 //**
 union uFilter
 {
  unsigned int us_CONKATEN;
  struct //если без структуры, то запись будет в одни разряды(мл. или ст.)  
  {
   unsigned char uc_ML;
   unsigned char uc_ST;
  }m_stcharUnion;
  struct 
  {
   unsigned int
    bit0 : 1,
    bit1 : 1,
    bit2 : 1,
    bit3 : 1,
    bit4 : 1,
    bit5 : 1,
    bit6 : 1,
    bit7 : 1,
    bit8 : 1,
    bit9 : 1,
    bit10 : 1,
    bit11 : 1,
    bit12 : 1,
    bit13 : 1,
    bit14 : 1,
    bit15 : 1;
  }m_stBitUnion;
 }m_uFilter;
 union uFilter_AA
 {
  unsigned int us_CONKATEN;
  struct //если без структуры, то запись будет в одни разряды(мл. или ст.)  
  {
   unsigned char uc_ML;
   unsigned char uc_ST;
  }m_stcharUnion;
  struct 
  {
   unsigned int
    bit0 : 1,
    bit1 : 1,
    bit2 : 1,
    bit3 : 1,
    bit4 : 1,
    bit5 : 1,
    bit6 : 1,
    bit7 : 1,
    bit8 : 1,
    bit9 : 1,
    bit10 : 1,
    bit11 : 1,
    bit12 : 1,
    bit13 : 1,
    bit14 : 1,
    bit15 : 1;
  }m_stBitUnion;
 }m_uFilter_AA;
 //***
 //***************************************************************
 CHS0 = 0;  //bcf ADCON0, CHS0
 CHS1 = 0;  //bcf ADCON0, CHS1
 CHS2 = 0;  //bcf ADCON0, CHS2 ;Select channel RA0/AN0
 GODONE = 1; // ;Start Conversion
     
 while(GODONE==1) /* set when register is not empty */
  continue; 
 
//*************************************************************************
//** Конвертирование(Convert) со смещением битов
 m_uFilter_AA.m_stcharUnion.uc_ML = 0;//обнуление предыд. значения
 m_uFilter_AA.m_stcharUnion.uc_ST = 0;//обнуление предыд. значения
 m_uFilter_AA.m_stcharUnion.uc_ML = ADRESL;//uc_byteML;
 m_uFilter_AA.m_stcharUnion.uc_ST = ADRESH;//uc_byteST;
 //-------------------------------------------------
 //**сдвинуть биты
   m_uFilter.m_stBitUnion.bit0 = m_uFilter_AA.m_stBitUnion.bit6;
   m_uFilter.m_stBitUnion.bit1 = m_uFilter_AA.m_stBitUnion.bit7;
   m_uFilter.m_stBitUnion.bit2 = m_uFilter_AA.m_stBitUnion.bit8;
   m_uFilter.m_stBitUnion.bit3 = m_uFilter_AA.m_stBitUnion.bit9;
   m_uFilter.m_stBitUnion.bit4 = m_uFilter_AA.m_stBitUnion.bit10;
   m_uFilter.m_stBitUnion.bit5 = m_uFilter_AA.m_stBitUnion.bit11;
   m_uFilter.m_stBitUnion.bit6 = m_uFilter_AA.m_stBitUnion.bit12;
   m_uFilter.m_stBitUnion.bit7 = m_uFilter_AA.m_stBitUnion.bit13;
   m_uFilter.m_stBitUnion.bit8 = m_uFilter_AA.m_stBitUnion.bit14;
   m_uFilter.m_stBitUnion.bit9 = m_uFilter_AA.m_stBitUnion.bit15;
   m_uFilter.m_stBitUnion.bit10 = 0;
   m_uFilter.m_stBitUnion.bit11 = 0;
   m_uFilter.m_stBitUnion.bit12 = 0;
   m_uFilter.m_stBitUnion.bit13 = 0;
   m_uFilter.m_stBitUnion.bit14 = 0;
   m_uFilter.m_stBitUnion.bit15 = 0;
 
 //*** END сдвинуть биты
 //-------------------------------------------------
 
//*** END Конвертирование(Convert) со смещением битов
//*************************************************************************

return m_uFilter.us_CONKATEN; 
 
}
/////////////////////////////////////////////////////
// использование функции чтения АЦП
double dRes_AD;
//2 прочитать АЦП
us_Result = AD();
dRes_AD = us_Result * 0.004888;
//dRes_AD = 2.8; // результат получаю в таком виде
Руслан вне форума   Ответить с цитированием
Старый 04.04.2020, 11:02   #8
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,489
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: АЦП не обрабатывает больше 2,49В

жесть!!!

а типа

ADFM = 1;

uint res= ADRESH;
res=(res<<8)|ADRESL;
double dRes_AD= res*0.004888;

честно говоря- я не понял в чём смысл многоэтажных структур?

ИМХО- 4 строчки заменяют весь ваш многоэтажный код

если
ADFM =0;
uint res= ADRESH;
res=(res<<8)|ADRESL;
res=res>>6;
double dRes_AD= res*0.004888;

Последний раз редактировалось SergP01; 04.04.2020 в 11:21.
SergP01 вне форума   Ответить с цитированием
Старый 04.04.2020, 11:16   #9
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 43
Сообщений: 366
Вес репутации: 98/0
Руслан will become famous soon enough
По умолчанию Re: АЦП не обрабатывает больше 2,49В

Цитата:
Сообщение от SergP01 Посмотреть сообщение
жесть!!!

а типа

ADFM = 1;

uint res= ADRESH;
res=(res<<8)|ADRESL;
double dRes_AD= res*0.004888;

честно говоря- я не понял в чём смысл многоэтажных структур?

ИМХО- 4 строчки заменяют весь ваш многоэтажный код
честно говоря - я уже и сам не помню зачем такое городил. Тогда я перегонял данные через USART в комп для сохранения в БД. Сейчас просто достал старый код и использую. Возможно, надо пересмотреть.

Попробовал только что
ADFM = 1;
в результате выдает не 2.49, а 3 т.е. так вообще все поломалось
Значит по-умолчанию ADFM = 0. Подозреваю что причина не здесь...

Последний раз редактировалось Руслан; 04.04.2020 в 11:35.
Руслан вне форума   Ответить с цитированием
Старый 04.04.2020, 11:25   #10
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,489
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: АЦП не обрабатывает больше 2,49В

Цитата:
Сообщение от Руслан Посмотреть сообщение
честно говоря - я уже и сам не помню зачем такое городил. Тогда я перегонял данные через USART в комп для сохранения в БД. Сейчас просто достал старый код и использую. Возможно, надо пересмотреть.
чего там смотреть.... в вашем коде... сдвигается результат на 6 вправо....
т.е.
вместо того , чтобы прописать
ADFM =1;

вы использовали
ADFM =0;

тогда код такой

uint res= ADRESH;
res=(res<<8)|ADRESL;
res=res>>6;
double dRes_AD= res*0.004888;
SergP01 вне форума   Ответить с цитированием
Старый 04.04.2020, 11:50   #11
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 43
Сообщений: 366
Вес репутации: 98/0
Руслан will become famous soon enough
По умолчанию Re: АЦП не обрабатывает больше 2,49В

Цитата:
Сообщение от SergP01 Посмотреть сообщение
чего там смотреть.... в вашем коде... сдвигается результат на 6 вправо....
т.е.
вместо того , чтобы прописать
ADFM =1;

вы использовали
ADFM =0;

тогда код такой

uint res= ADRESH;
res=(res<<8)|ADRESL;
res=res>>6;
double dRes_AD= res*0.004888;
я только что пробовал ADFM =1;
выдает 3 вместо 2,49

а когда ADFM =0; то выдает 2,49
Руслан вне форума   Ответить с цитированием
Старый 04.04.2020, 11:58   #12
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,489
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: АЦП не обрабатывает больше 2,49В

Цитата:
Сообщение от Руслан Посмотреть сообщение
я только что пробовал ADFM =1;
выдает 3 вместо 2,49

а когда ADFM =0; то выдает 2,49
дык.... вы со своим ужасным "сдвигом" пробовали?
SergP01 вне форума   Ответить с цитированием
Старый 04.04.2020, 12:00   #13
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 43
Сообщений: 366
Вес репутации: 98/0
Руслан will become famous soon enough
По умолчанию Re: АЦП не обрабатывает больше 2,49В

Цитата:
Сообщение от SergP01 Посмотреть сообщение
дык.... вы со своим ужасным "сдвигом" пробовали?
да.
Руслан вне форума   Ответить с цитированием
Старый 04.04.2020, 12:03   #14
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,489
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: АЦП не обрабатывает больше 2,49В

Цитата:
Сообщение от Руслан Посмотреть сообщение
да.
я вам готовый код дал.... весь ваш ужас выкиньте и замените на 4 строчки
SergP01 вне форума   Ответить с цитированием
Старый 04.04.2020, 12:09   #15
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 43
Сообщений: 366
Вес репутации: 98/0
Руслан will become famous soon enough
По умолчанию Re: АЦП не обрабатывает больше 2,49В

Цитата:
Сообщение от SergP01 Посмотреть сообщение
я вам готовый код дал.... весь ваш ужас выкиньте и замените на 4 строчки
сейчас попробую...
Руслан вне форума   Ответить с цитированием
Старый 04.04.2020, 12:12   #16
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,489
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: АЦП не обрабатывает больше 2,49В

вот ваша функция AD

Код:
unsigned int AD()
{   
 ADFM =1;
 CHS0 = 0;  //bcf ADCON0, CHS0 // тут нужный канал надо выбрать
 CHS1 = 0;  //bcf ADCON0, CHS1
 CHS2 = 0;  //bcf ADCON0, CHS2 ;Select channel RA0/AN0
 CHS3 = 0;  //bcf ADCON0, CHS2 ;Select channel RA0/AN0
ADON=1;
 GODONE = 1; // ;Start Conversion
     
 while(GODONE==1) /* set when register is not empty */
  continue; 
 
unsigned int res= ADRESH;
res=(res<<8)|ADRESL;
//res=res>>6; // если ADFM =0;

return(res);
}

Последний раз редактировалось SergP01; 04.04.2020 в 12:30.
SergP01 вне форума   Ответить с цитированием
Старый 04.04.2020, 12:31   #17
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 43
Сообщений: 366
Вес репутации: 98/0
Руслан will become famous soon enough
По умолчанию Re: АЦП не обрабатывает больше 2,49В

сделал так (добавил GODONE = 1; и т.д.)
Код:
unsigned int AD()
{    
 unsigned int res;

 CHS0 = 0;  //bcf ADCON0, CHS0
 CHS1 = 0;  //bcf ADCON0, CHS1
 CHS2 = 0;  //bcf ADCON0, CHS2 ;Select channel RA0/AN0
 GODONE = 1; //bsf ADCON0, 2 ;Start Conversion
     //btfsc ADCON0, 2
     //goto $-1
 while(GODONE==1) /* set when register is not empty */
  continue; //пока RCIF == 0 цикл вращается
 
 res= ADRESH;
 res=(res<<8)|ADRESL;
 //res=res>>6; // если ADFM =0;
 
 return(res);
}
выдает 2,49 хотя на входе 2,69 меряю вольтметром
ADFM = 1; сейчас указал при инициализации
Руслан вне форума   Ответить с цитированием
Старый 04.04.2020, 12:32   #18
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,489
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: АЦП не обрабатывает больше 2,49В

если ацп один и не будет меняться, то

ADFM =1;
CHS0 = 0; //bcf ADCON0, CHS0 // тут нужный канал надо выбрать
CHS1 = 0; //bcf ADCON0, CHS1
CHS2 = 0; //bcf ADCON0, CHS2 ;Select channel RA0/AN0
CHS3 = 0; //bcf ADCON0, CHS2 ;Select channel RA0/AN0

это в инит можно прописать, а из функции выкинуть
SergP01 вне форума   Ответить с цитированием
Старый 04.04.2020, 12:48   #19
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,489
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: АЦП не обрабатывает больше 2,49В

Цитата:
Сообщение от Руслан Посмотреть сообщение
сделал так (добавил GODONE = 1; и т.д.)
выдает 2,49 хотя на входе 2,69 меряю вольтметром
ADFM = 1; сейчас указал при инициализации
а где вы эти 2.49 смотрите?

надеюсь у источника сигнала сопротивление выходное больше 2,5ком ?
SergP01 вне форума   Ответить с цитированием
Старый 04.04.2020, 13:21   #20
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 43
Сообщений: 366
Вес репутации: 98/0
Руслан will become famous soon enough
По умолчанию Re: АЦП не обрабатывает больше 2,49В

Цитата:
Сообщение от SergP01 Посмотреть сообщение
а где вы эти 2.49 смотрите?

надеюсь у источника сигнала сопротивление выходное больше 2,5ком ?
смотрю на выходе усилителя (ТДС метр - меряет сопротивление воды).
Переключил в режим омметра - вижу 7 МОм при 2,6В на выходе

мне кажется что-то где -то включено не то для этого проца - микрочип наменял же, где-то недопрописал я в настройках...а рыть все подряд...

Последний раз редактировалось Руслан; 04.04.2020 в 13:33.
Руслан вне форума   Ответить с цитированием
Старый 04.04.2020, 14:06   #21
DmitrijVDN
Senior Member
 
Регистрация: 09.04.2010
Сообщений: 857
Вес репутации: 1630/62
DmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant future
По умолчанию Re: АЦП не обрабатывает больше 2,49В

может для начала частоту преобразования АЦП выставить и время выборки ?
DmitrijVDN вне форума   Ответить с цитированием
Старый 04.04.2020, 14:13   #22
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 43
Сообщений: 366
Вес репутации: 98/0
Руслан will become famous soon enough
По умолчанию Re: АЦП не обрабатывает больше 2,49В

Цитата:
Сообщение от DmitrijVDN Посмотреть сообщение
может для начала частоту преобразования АЦП выставить и время выборки ?
не совсем понимаю где это выставляется... опрашиваю АЦП несколько раз в секунду и при каждом опросе жду окончания преобразования по флагу GODONE.

И почему тогда все норм работает до 2,49В а выше уже частота преобразования и время выборки начинают влиять после 2,49В ?
Руслан вне форума   Ответить с цитированием
Старый 04.04.2020, 14:28   #23
Sanches
Member
 
Регистрация: 11.12.2007
Сообщений: 47
Вес репутации: 124/47
Sanches will become famous soon enoughSanches will become famous soon enough
По умолчанию Re: АЦП не обрабатывает больше 2,49В

Цитата:
Сообщение от Руслан Посмотреть сообщение
смотрю на выходе усилителя (ТДС метр - меряет сопротивление воды).
Переключил в режим омметра - вижу 7 МОм при 2,6В на выходе
Сопротивление источника очень большое.
Нужно паралельно входу подключить 0.1 мкФ конденсатор.
Sanches вне форума   Ответить с цитированием
Старый 04.04.2020, 14:39   #24
DmitrijVDN
Senior Member
 
Регистрация: 09.04.2010
Сообщений: 857
Вес репутации: 1630/62
DmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant future
По умолчанию Re: АЦП не обрабатывает больше 2,49В

в регистре ADCON2 нужно выставить частоту тактирования АЦП в зависимости от тактовой частоты МК биты ADCS2:ADCS0 . период тактирования должен быть в приделах Tad=0,7..25мкс (параметр 130 таблица 26-25 датащита) оптимальный 2..6мкс; там же нужно выставить задержку перед преобразованием ACQT2:ACQT0 или ввести ее принудительно в коде ввиде обычной задержки
также выставить правое выравнивание ADFM=1
Код:
unsigned int read_ADC (unsigned char canal)
{unsigned char i=100;
   canal&=0x07;
   canal<<=2;
   ADCON0&=~(7<<2);
   ADCON0|=canal;
   while(i--) continue; //обязательная задержка после
Код:
                              //смены канала перед запуском преобразованием
   GO_nDONE=1;
  while(GO_nDONE)continue;
  NOP();
  NOP();
  return  (unsigned int)(ADRESH<<8 | ADRESL); 
}


Последний раз редактировалось DmitrijVDN; 04.04.2020 в 14:48.
DmitrijVDN вне форума   Ответить с цитированием
Старый 04.04.2020, 14:44   #25
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 43
Сообщений: 366
Вес репутации: 98/0
Руслан will become famous soon enough
По умолчанию Re: АЦП не обрабатывает больше 2,49В

Цитата:
Сообщение от Sanches Посмотреть сообщение
Сопротивление источника очень большое.
Нужно паралельно входу подключить 0.1 мкФ конденсатор.
сейчас у себя не нашел конденсатор - запаяю и отпишусь. Спасибо
Руслан вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу в 18F4220 прочесть PORTA (0:3), хоть АЦП типа выключен :( Синклер Продукция MICROCHIP 5 01.11.2007 12:07
Не заставить работать АЦП (dsPIC33F...) в режиме «несколько измерений в БУФЕР» Юрий440 Продукция MICROCHIP 9 11.08.2007 14:50


Часовой пояс GMT +3, время: 13:08.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot