Página 1 de 1

Problemas com canal ADC do 18F4331

MensagemEnviado: 03 Jun 2010 20:29
por Meca
olá pessoal, estou voltando a brincar com pic e tentando me virar com C18, o q acontece é o seguinte,preciso utilizar apenas um canal do conversor AD do 18F4331, até a sim problemas, consegui utilizar ele normalmente com a configuração do CANAL AN6 (PORTE - RE0). o problema surge quando tento utilizar apenas o CANAL AN8 (PORTE - RE2). O programa e esse aqui:

#include <p18f4331.h>
#include <adc.h>
#include <delays.h>

#pragma config OSC = IRCIO
#pragma config WDTEN = OFF
#pragma config PWRTEN = OFF
#pragma config BOREN = OFF
#pragma config LVP = OFF

void main (void) {

TRISE = 0x04; // Config. RE2 como entrada
TRISD = 0x00; // Config. PORTD como saída
OpenADC(ADC_CONV_SINGLE_SHOT &
ADC_MODE_SINGLE_CH & // Opção de utilizar apenas um CANAL AD.
ADC_CONV_SEQ_STNM1 & // Modo de conversão do CANAL AN0, AN4 e AN8.
INT_EACH_WR_BUF &
ADC_INT_OFF, // Desliga Interrupção
ADC_REF_VDD_VSS & // Referência do valor do AD de 0 a 5V
ADC_FIFO_DIS,
ADC_RIGHT_JUST & // Valor convertido justificado a Direita (ADRESH)
ADC_20_TAD &
ADC_FOSC_RC);

ADC_CH_GRA_AN8(); // Habilita o CANAL AN8 (RE2)

Delay10TCYx(5); // Aguarda 50 clicos de Maquina
while(1) {
ConvertADC(); // Inicia conversão
while(BusyADC()); // Aguarda termino da conversão
PORTD = ADRESH; // Coloca o Valor convertido no PORTD
}
}

Quando simulo esse programa no PROTEUS o mesmo informa que o PORTA <2> não esta configurado com entrada analógia.
Minha duvida seria a seguinte, será q não é possivel utilizar apenas esse CANAL (AN8 - RE2), Eu estou querendo usar esse conversor por o PORTA inteiro estou utilizando com saída digital.
Ah, já olhei no datasheet do mesmo e realmente não consegui ver algum opção para a solução desse problema.

Desde já agradeço a atenção de todos!

MensagemEnviado: 04 Jun 2010 08:05
por KrafT
Não tem que mecher no registrador ANSEL1? Pág 251 do datsheet.

MensagemEnviado: 04 Jun 2010 13:29
por Meca
Blz Kraft, primeiramente muito obrigado pela atenção, então quanto ao ANSEL1, quando é utilizado a função ADC_CH_GRA_AN8(); ele já configura o ANSEL1 com o valor 0x01 indicando que é uma entrada analógica, apenas esse CANAL apresenta esse problema, vou continuar tentando aqui, muito obrigado Kraft.