-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathADC_Inicializar.c
33 lines (28 loc) · 1.2 KB
/
ADC_Inicializar.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <xc.h>
#include <stdint.h>
#include "ADC_Inicializar.h"
void ADC_inicializacion(int Activar_ADC) {
/*32 TOSC para trabajar con el cristal de 20MHZ*/
/*Se activa el conversor según sea necesario*/
if (Activar_ADC == 1) {
ADCON0bits.ADON = 1; /*Activamos el conversor*/
} else {
ADCON0bits.ADON = 0; /*Desactivamos el conversor*/
}
/*Se justifican los datos hacia a la izquierda para tomar los bits más significativos*/
ADCON2bits.ADFM = 0;
/*Los pines son todos analógicos*/
ADCON1bits.PCFG = 0b1110;
ADCON2bits.ACQT = 0b110;
ADCON2bits.ADCS = 0b100;
}
uint16_t Leer_ADC(char Puerto_Analogico) {
uint16_t Valor_De_Retorno_ADC;
ADRESH = 0; /*Limpiamos los registros de la conversión del ADC*/
ADRESL = 0;
ADCON0bits.CHS = Puerto_Analogico; /*Seleccionamos el puerto análogo que se desea leer*/
ADCON0bits.GO = 1; /*Iniciamos la conversión del timer0*/
while (ADCON0bits.GO); /*Hacemo un bucle mientras se da la conversión del ADC*/
Valor_De_Retorno_ADC = ADRESH; /*Retornamos solo los 8 bits más significativos*/
return Valor_De_Retorno_ADC; /*Retornamos el valor de retorno del ADC*/
}