\section{Module ADC}

      Auteur: Santiago Gonzalez

      Courrier: santigoro en gmail.com

      Comprendre la conversion Analogique-Numérique : ici

      (\url{http://es.wikipedia.org/wiki/Conversion_analogica-digital})

Voici les fonctions pour travailler avec le module ADC 10 bits interne des PIC16F87X.

\subsection{adc\_init}
Initialise le module ADC avec la configuration établie dans les paramètres d'entrée; fréquence d'oscillateur et configuration d'entrée. Le module ADC restera configuré et prêt à l'usage, mais il sera activé jusqu'à ce qu'on ouvre un canal pour éviter une consommation non nécessaire de courant.

\textit{void adc\_init(unsigned char set\_fosc, unsigned char set\_channel);}

set\_fosc Establit la frequence de adc.

Les options possibles sont:

FRÉQUENCE DE L'OSCILLATEUR ADC: 

FOSC\_DIV\_2  Fréquence de l'oscillateur du PIC / 2 \\
FOSC\_DIV\_4 \\
FOSC\_DIV\_8 \\
FOSC\_DIV\_16 \\
FOSC\_DIV\_32 \\
FOSC\_DIV\_64 \\
FOSC\_RC     Oscillateur interne du module ADC \\

set\_channel Définit quels broches (pins) on utilisera comme entrées analogiques ou comme Vref externe. 
Quand on définit seulement une broche (pin) comme tension de référence, ce sera Vref, référence positive  et elle sera en RA3, quand on définit 2 entrées comme Vref la positive sera RA3 et la négative RA2.

Les options possibles sont :

CONFIGURATION DES ENTRÉES ET Vref(PCFG en ADCON1) 
A8\_R0 // 8 entrées analogiques y 0 comme Vref (Vref+ = Vdd , Vref- = Ground) \\
A7\_R1 // 7 entrées analogiques y Vref+ en AN3 \\
A5\_R0 \\
A4\_R1 \\
A3\_R0 \\
A2\_R1 \\
A0\_R0 \\
A6\_R2 // 6 entradas analogiques, Vref+ en AN3 et Vref- en AN2 \\
A6\_R0 \\
A5\_R1 \\
A4\_R2 \\
A3\_R2 \\
A2\_R2 \\
A1\_R0 \\
A1\_R2 \\
Consulter le Datasheet du pic utilisé pour voir les canaux disponibles, on ne doit pas initialiser les canaux non implantés dans le modèle du pic à utiliser, par exemple, le pic16f876a n'a que 5 canaux ADC, ne jamais utiliser A6\_R0 dans ce pic.

\subsection{adc\_set\_channel}
Établit la configuration des broches d'entrée ADC et Vref

void adc\_set\_channel(unsigned char set\_c29:hannel);

set\_channel Définit quels broches (pins) on utilisera comme entrées analogiques ou comme Vref externe. 

Quand on définit seulement une broche (pin) comme tension de référence, ce sera Vref, référence positive  et sera en RA3, quand on définit 2 entrées comme Vref la positive sera RA3 et la négative RA2.

Les options possibles sont les mêmes que dans adc\_init: A2\_R1 , etc.

\subsection{adc\_open}
Ouvre le canal sélectionné et active le module ADC

void adc\_open(unsigned char channel);

channel établit le canal ADC a lire

Les options possibles sont: \\
CHANNEL\_0 \\
CHANNEL\_1 \\
CHANNEL\_2 \\
CHANNEL\_3 \\
CHANNEL\_4 \\
CHANNEL\_5 \\
CHANNEL\_6 \\
CHANNEL\_7 \\

\subsection{adc\_read}
Lit un canal préalablement ouvert

unsigned int adc\_read(void);

\subsection{adc\_close}
Ferme le module ADC.

void adc\_close(void);

La configuration reste comme on l'a initialisé la dernière fois, on peut réactiver le module ADC
au moyen de adc\_open(channel), sans exécuter adc\_init()

\subsection{Exemple de Module ADC}

pour compiler tu as besoin des commandes suivantes
Exemple de compilation : ./compila.sh ej29:\_adc\_87Xa.c 16f877a

ej\_adc\_87Xa.c
\verbatiminput{source/ej_adc_87Xa.c}