Ir ao conteúdo
  • Cadastre-se

ADC ds33FJ16GS402


Ygon

Posts recomendados

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
 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...