Ir ao conteúdo
  • Cadastre-se
Ygon

ADC ds33FJ16GS402

Recommended Posts

Olá pessoal.

Sou novo neste microcontrolador de 16bits. 

Estou programando pelo Mplab 8.53 com o plugin C30.

Com a tensão de entrada de 1,5V no pino An1 usar o adc e acionar o pino digital de saída, o RB15.

Mas não estou conseguindo. Alguém por favor pode me ajudar? 

Aqui está meu código:

Obs: Tem muitas linhas que deixei como comentário.



#include<p33FJ16GS402.h> //Biblioteca para o Pic a ser trabalhado.


//Variáveis globais para o adc:

float volts; 

void initAdc1(void) 
{
while(1)
//{
//Registros I/O
TRISAbits.TRISA1=1; //Registro, pino A1 no modo entrada.
TRISBbits.TRISB15=0; //Registro, pino RB15 no modo saída. 
ADPCFGbits.PCFG1=0; //configurar RA1/AN1 pino 3 como porta analógica.

//Configurações ADC

ADCONbits.SLOWCLK = 1; /* Ativar o clock divisor lento. 1 = ADC é cronometrado pelo auxiliar PLL (ACLK) */
ADCONbits.FORM=0; // Formato de saída de dados: 0 inteiro.
ADCONbits.EIE = 0; /* Disable Early Interrupt */
ADCONbits.ORDER = 0; /* Ordem de conversão de bit. 0 = é convertido os numerados em primeiro lugar, 
seguido por conversão de entrada com número ímpar*/

ADCONbits.SEQSAMP = 0; /* Amostra sequencial de ativação de bit. 0 = Amostra partilhados e (S & H) circuito é amostrado no início da segunda conversão se
ORDEM = 0. Se ORDEM = 1, então o partilhada S & H é amostrado no início da primeira conversão. */

ADCONbits.ADCS=5; //Seleção do Clock conversor de bit. 5(101b)FADC/6

ADCONbits.ADON=1; // ADON Modo de operação dos bits. 1 = Módulo de conversor A / D está operando.
ADSTAT = 0; /* Status do registro A/D. 0 = bit é cancelado. */

//IFS6bits.ADCP1IF = 0; /*INTERROMPER FLAG de Registro de Status. 0 = Pedido de interrupção não ocorreu */
//IEC6bits.ADCP1IE = 1; //Habilitação do registro de interrupção. 1 = Pedido de interrupção está habilitado.

//ADCON3 = 7938; // Tempo de amostra = 31Tad.Obs : não tem este registro neste modelo.
//ADCHS = 1; //Canal Obs : não tem este registro neste modelo.
//ADCONbits.SSRC=1; ; // contador termina amostragem e começa a converter. Obs no datasheet. OBS.:Não tem neste modelo.

/*IPC3bits.ADIP = 0x01; // Set Common ADC Interrupt Priority Level (Level 1)
IFS0bits.ADIF = 0; // Clear ADC Pair 0 Interrupt Flag
IEC0bits.ADIE = 1; // Enable ADC Pair 0 Interrupt*/


//ADSTATbits.P0RDY = 0; /* Clear ADC pair ready bit */
//IFS6bits.ADCP0IF = 0; /* Clear ADC Interrupt Flag */

/*ADSTATbits.P0RDY: Dados de conversão para o par 0 bit Pronto 
Bit é definido quando os dados estão prontos em tampão, limpo quando um '0' é escrito para este bit.*/



//volts = (volts *(3,3/1023));
timer_100us(2);
ADCBUF1 = volts; // obter a medição de tensão.



if (volts>=465) // 465/1023 = 0,45 (fração do fornecimento de energia 3.3volt do PIC)
{ // 0,45 * 3.3volts = 1.5volts (realmente lêem no pino ADC)

LATBbits.LATB15 = 1;
}

else

LATBbits.LATB15 = 0;
}//Fim do while 

}//Fim adc
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×