PWM8ADC- CONVERTITORE A/D  a 8 bit




L'algoritmo di conversione

 Il micro utilizzato non possiede al suo interno un modulo di generazione PWM ne un comparatore. Questo impone la generazione del segnale PWM a livello software. Per la generazione del segnale PWM di periodo T si utilizza la variabili TON che definisce la porzione del periodo T dell’onda quadra in cui questa assume il valore alto. La quantità  T- TON definisce invece la porzione del periodo  in cui deve l'onda quadra assume il valore basso.  In tal modo la variabile  TON  permette di definire il duty cycle dell'onda quadra presente nel pin PWM. La generazione della singola onda quadra avviene mediante un l'accostamento di due cicli. Nel primo ciclo si genera la fase alta dell'onda  ponendo PWM alto per tutto il tempo in cui la variabile TON e' decrementata fino a zero. Nel secondo ciclo si genera la fase bassa ponendo il pin PWM a zero per il tempo in cui la variabile di valore pari a T-TON viene decrementata a zero:
Facendo quindi riferimento alla routine  PWM8ADC.asm in cui e' riportato l'algoritmo  implementato secondo il linguaggio ASM del micro.l'algoritmo di conversione è strutturato nel seguente modo:

1)      Scarica il condensatore mettendo il pin  PWM  a zero

2)      Azzera la variabile TON

3)      Controlla se il pin COMP e’ zero

3.1) if COMP=1 allora metti PWM come input ed esci

3.2) if COMP=0 allora continua

4)      Incrementa TON

5)      Genera N impulsi (N =NPULSE) 

6)      Vai al punto 3

Il file pwm8adc.asm contiene il sorgente della routine che può essere inserita nel programma principale di un eventuale progetto mediante l'istruzione direttiva :

include PWM8ADC.ASM

 Inoltre e' possibile intervenire sul numero di onde che concorrono alla formazione della tensione di confronto Vref.  La variabile che definisce tale numero e’ NPULSE. Maggiore e’ NPULSE migliore sarà la precisione della conversione ma piu’ lenta.