Salve, sto lavorando ad un controllore pid di un motore dc con arduino, nello stesso progetto devo includere la risposta al gradino del motore. Il mio dubbio è che nel momento in cui avvio la risposta al gradino, il conteggio dell'encoder, ovviamente, si fermerà ad un certo angolo e a me interesserebbe resettarlo, cioè impostarlo nuovamente a zero. Questo è il codice relativo all'encoder
void InitEncoder(){
// activate peripheral functions for quad pins
REG_PIOB_PDR = mask_quad_A; // activate peripheral function (disables all PIO functionality)
REG_PIOB_ABSR |= mask_quad_A; // choose peripheral option B
REG_PIOB_PDR = mask_quad_B; // activate peripheral function (disables all PIO functionality)
REG_PIOB_ABSR |= mask_quad_B; // choose peripheral option B
// activate clock for TC0
REG_PMC_PCER0 = (1<<27);
// select XC0 as clock source and set capture mode
REG_TC0_CMR0 = 5;
// activate quadrature encoder and position measure mode, no filters
REG_TC0_BMR = (1<<9)|(1<<8); //|(1<<12)
// enable the clock (CLKEN=1) and reset the counter (SWTRG=1)
// SWTRG = 1 necessary to start the clock!!
REG_TC0_CCR0 = 5;
}
Codice che non ho scritto io in quanto sto continuando un progettino già avviato.
Mi interessava sapere se c'è qualche istruzione che appunto mi resetti il counter dell'encoder.