Come sappiamo, il modulo CCP di un picmicro è in grado di generare un treno continuo di impulsi a modulazione di ampiezza del quale, in ogni momento, possiamo cambiare il duty cicle.
Mettendo da parte tecnicismi, per i quali si rimanda ai vari datasheets, vediamo come.
|
Per il nostro esempio utilizzeremo un comunissimo pic 16F877 o, meglio, un piu' recente 16F887, piu' moderno e con un maggior numero di moduli. Possiamo notare che il picmicro dispone di una coppia di moduli CCP disposti sui pin 16 e 17, piedini dai quali potra' essere prelevato il segnale pwm. L'utilizzo di linguaggi per la programmazione di picmicro evoluti, quali il Mikroc od il Mikrobasic, semplifichera' notevolmente le cose consentendo di predisporre i moduli in maniera molto semplice e rapida: TRISC = 0x00 ' portc come output) |
Il risultato sara' che otterremo sui pin 16 e 17 una coppia di segnali a modulazione di ampiezza di uguale frequenza (70khz) e diverso duty cicle:
![]() |
In ogni momento, durante la fase di programmazione, sara' possibile cambiare il valore del duty cicle oppure potremo fermare tale attivita' con un semplicissimo comando (mikrobasic): PWM1_stop() L'implementazione di un segnale pwm puo' essere considerata una attivita' molto semplice; basta semplicemente scrivere qualche riga di codice ed il modulo lavorera' perfettamente. Utilizzando invece il Mikroc il codice da scrivere e' quasi equivalente: void main() { ed eventualmente stoppare il segnale con un: Pwm1_stop(); quando si desidera fermarlo. |
L'uso di linguaggi ad alto livello semplifica considerevolmente il lavoro di programmazione da farsi per ottenere tali risultati. Utilizzando linguaggi a basso livello (o compilatori che non dispongono di librerie gia' predisposte), infatti, l'utente dovra' redigere a mano le istruzioni dei settaggi degli specifici registri per ottenere l'attivazione del pwm, la frequenza di lavoro ed il duty cicle desiderato.
Infatti, in questo caso, si dovra':
- scegliere la frequenza settando il registro PR2
- settare il modulo per agire come PWM (T2CON)
- abilitare il timer del microcontrollore ed il valore di prescaler (CCP1CON)
- settare il valore del duty cicle (CCPR1L)
Un'altra caratteristica interessante di alcuni microcontrollori (valida pero' solo per il modulo CCP1) è la presenza di un modulo PWM avanzato. Talvolta il segnale pwm di un picmicro è utilizzato per pilotare direttamente ponti ad H per il controllo di motori dc o passo-passo. Settando il registro PWMCON1 in maniera appropriata, il segnale pwm viene generato con un leggero ritardo rispetto all'altro. Lo spegnimento di entrambi i rami del ponte ad H consente di prevenire flussi di corrente contemporanei e quindi di evitare corto-circuiti.