Pagina 1 di 1

Posizione e velocita' con dspic30f e QEI

MessaggioInviato: 2 ago 2016, 20:01
da peppe855
Buona sera, come da titolo sto cercando di capire come effettuare il calcolo di posizione e velocità attraverso il dspic30f6010a per farlo ho studiato il manuale della periferica QEI e anche questa application della microchip :
http://ww1.microchip.com/downloads/en/d ... 93002A.pdf
ora settando in maniera tale da lavorare in modalità 4x con il reset tramite il Maxcnt quello che non riesco a capire leggendo le pagine del link di cui sopra è :
1) perché il numero contenuto nel registro contatore POSCNT(che arriva massimo a 1999) debba essere riscalato per portarlo da 0 a 32767?
2) Inoltre perché nel codice c dell'esempio 2 a pag.7 mette la linea di codice:

if (POSCNTcopy < 0) ??
cioè POSCNT si muove sempre e solo da 0 a MAXCNT e da MAXCNT a 0 quindi a cosa serve quell' if??

Sto' impazzendo non riesco a darmi una spiegazione logica....sarà il caldo O_/

Re: Posizione e velocita' con dspic30f e QEI

MessaggioInviato: 3 ago 2016, 22:39
da peppe855
Ho fatto la seguente prova (dopo aver settato la periferica QEI in modalita' di conteggio 4x e con reset quando il POSCNT incontra il MAXCNT) e cioè:

- ho un encoder con 64 cpr (che immagino siano il numero di tacche o anche il numero di fronti di salita e basta di un solo canale giusto?);
- lavorando in modalità 4x ho settato il registro MAXCNT=(64X4)-1=255;
-a questo punto ho impostato un semplice if:

if (POSCNT == 255) {

PORTAbits.RA9 = 1;

}
else {

PORTAbits.RA9 = 0;
}

- adesso ho posto in rotazione il motore e mi sarei aspettato che il led si accendesse dopo un giro dell'albero motore, invece il led si accende dopo ben 4 giri di albero, con il sospetto che la periferica non lavorasse in modalità x4 ho provato a settarla in modalità x2, ottenendo come risultato che il led si accende dopo 8 giri di albero!
Ma come mai?