Как получить значение int из АЦП (PIC16F877A)? - PullRequest
0 голосов
/ 24 июня 2019

Я сделал файл конфигурации относительно регистров:

void ADC_Init()
{
ADCON1bits.ADCS2 = 0;
ADCON0bits.ADCS1 = 1;
ADCON0bits.ADCS0 = 0;
//selection of a channel
ADCON0bits.CHS0=0;
ADCON0bits.CHS1=0;
ADCON0bits.CHS2=0;
//result format selection
ADCON1bits.ADFM=0; //right justify
//port configuration
ADCON1bits.PCFG0=0;
ADCON1bits.PCFG1=0;
ADCON1bits.PCFG2=0;
ADCON1bits.PCFG3=0;
//set status sit
ADCON0bits.GO_DONE=1;
//switch on ADC
ADCON0bits.ADON=1;
}

Теперь, как мне получить показание int, поступающее со входа?

1 Ответ

1 голос
/ 24 июня 2019

Подождите, пока АЦП будет готов, а затем прочитайте результат.

while (ADCONbits.GO_DONE);     //wait until conversion is ready
result = (((uint16_t)(ADRESH) << 8)) | ADRESL;

Но лучшее, что вы можете сделать, это написать функцию, например int_16_t readADC(int16_t channel) где вы:
- выберите канал
- запустить АЦП
- дождаться его готовности
- затем вернуть результат.

...