peppe855 Inserito: 4 agosto 2016 Segnala Inserito: 4 agosto 2016 Utilizzando un dspic30f6010a e la sua periferica QEI ed un encoder incrementale 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? Grazie in anticipo a chiunque voglia darmi una mano saluti.
Livio Orsini Inserita: 4 agosto 2016 Segnala Inserita: 4 agosto 2016 Per avere il x4 devi far entrare entrami i canali A e B, altrimenti non puoi moltiplicare per 4, perchè un singolo impulso ha solo 2 fronti. La periferica, mancandogli uno dei 2 canali, si trova un poco "confusa" e cerca di supplire in altro modo dividendo per 2 gli impulsi che gli arrivano da un solo canale in odo da ricreare i 4 fronti.
peppe855 Inserita: 4 agosto 2016 Autore Segnala Inserita: 4 agosto 2016 Salve Livio, in realtà ho fatto entrare sia il canale A che il canale B rispettivamente in QEA A e QEA B, cioè a sto punto o l'encoder non è da 64 cpr (e non penso proprio) oppure non so'
peppe855 Inserita: 4 agosto 2016 Autore Segnala Inserita: 4 agosto 2016 Da manuale dovrebbe essere QEIM posto ad 111 a farmi lavorare in modalita' 4x : TRISBbits.TRISB4=1; TRISBbits.TRISB5=1; ADPCFGbits.PCFG5=1; ADPCFGbits.PCFG4=1; TRISAbits.TRISA9=0; TRISAbits.TRISA10=0; TRISAbits.TRISA14=0; TRISAbits.TRISA15=0; inizqei (); MAXCNT=255; PORTAbits.RA9 = 0; QEICONbits.QEISIDL=0; QEICONbits.QEIM=7; QEICONbits.SWPAB=0; QEICONbits.PCDOUT=0; QEICONbits.POSRES=0; DFLTCONbits.CEID=0; DFLTCONbits.QEOUT=1; DFLTCONbits.QECK=0; POSCNT = 0;
peppe855 Inserita: 4 agosto 2016 Autore Segnala Inserita: 4 agosto 2016 Livio (le do' del tu se posso), ho preso il tester e un solo canale ed ho fatto la seguente rilevazione: -ho ruotato l'albero di mezzo giro con rotazioni il piu' possibile piccole ed ho contato 16 livelli cioè 8 (+VDC) e 8 (0 VDC) che chiaramente moltiplicati per due mi danno 32 sali e scendi in totale, quindi dato che per definizione CPR sono solo i fronti di salita (o discesa) posso dedurre che il mio encoder ha 32/2=16 cpr e quindi la QEI fa' il suo dovere in quanto poi 16*4=64?? Cosa ne pensa/i?
Livio Orsini Inserita: 4 agosto 2016 Segnala Inserita: 4 agosto 2016 Quote Livio (le do' del tu se posso) No, devi! Sul forum ci consideriamo tutti amici e colleghi, quindi il tu è un obbligo. Se l'encoder genera solo 16 ipr (impulsi per rivoluzione) per canale, allora tutto è corretto perchè sono 64 fronti per rivoluzione su 2 canali.
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora