| TIPS e TRICKS del modulo CCP - 2 | |||
|
|
|||
|
Misura del periodo di un'onda quadra Un primo esempio dell'utilizzo del modulo CCP e' la misura del periodo T di un onda quadra applicata al pin CCP (RB3). Il principio di base e' il conteggio di cicli macchina che avvengono tra due eventi dell'onda quadra di cui si vuole misurare il periodo: per esempio i fronti di salita che si manifestano agli istanti t1 e t2 come mostrato in figura 2
FIGURE 2: periodo di un'onda quadra. Il conteggio si effettua tramite il TIMER1 ( a 16 bit). Quando si verifica l'evento "fronte di salita" automaticamente il contenuto del timer 1 e' caricato nei registri CCPR1L e CCPR1H generando anche un interrupt. E' possibile risalire al numero di cicli macchina che intercorrono trai due eventi in t1 e t2 operando una sottrazione tra il valore attuale dei registi caricati con l' evento occorso in t2 e il valore salvato e risalente all'evento precedente verificatosi in t1. Successivamente bisogna azzerare il flag relativo all'interrupt del modulo CCP per permettere un nuovo ciclo. Se N e' il numero dei cicli macchina allora il periodo T dell'onda e': T = N * Tosc con Tosc=4 / Fosc Fosc = frequenza del oscillatore del microcontrollore I passi da seguire per implementare tale misura sono::
Misura mediata del Periodo di un onda quadra Il metodo ora proposto differisce dal primo solo per il fatto che l'evento che scatena la cattura non e' il singolo fronte di salita ma il il sedicesimo fronte: ogni16 fronti di salita del segnale di ingresso si ha una " cattura". I vantaggi di tale metodo sono: Immunità ai disturbi data dalla media e minore frammentazione del flusso del programma dovuti alle interruzioni provenienti dal modulo CCP
FIGURA 3: Misura mediata del periodo Per tale misura bisogna: 1. configurare i bit CCPxM3:CCPxM0 (CCPxCON<3:0>) per catturare ogni 16 fronti di salita del segnale 2. configurare Timer1 prescaler cosi che Timer1 lavorerà per periodi di 16 TMAX(1) senza overflow. 3. abilitare l'interrupt CCP (CCPxIE bit di PIE1). 4. quando si verifica l'interrupt:
Il periodo del segnale in ingresso e' dato da: e' T= Tosc * N / 16 Nota 1: TMAX e' il periodo massimo del segnale in ingresso |
|
||
|
|
|||