Arduino due, molte iterazione for e blocco lettura encoder rotativo

Ciao a tutti
Mi sono perso...... di nuovo.
Ho un codice che ha molti for e while nelle subroutine richiamate nella main routine.
Tra queste anche una che legge la posizione di un encoder rotativo che switcha tra le varie subroutine
Succede che se io muovo l encoder rotativo durante l esecuzione di un ciclo for o while, non mi memorizza la nuova posizione e quindi rimane nella stessa soubrutine.
Ho cercato info sugli attachinterrupt di arduino due vma dire che ci ho capito una cazzuola e' dire tanto.
Avete qualche link da suggerirmi per togliermi dal fermo immagine mentale che ho?

Devi sostituire i for e while...

Ok..... ma con cosa per esempio?

Che difficoltà hai avuto di preciso ad usare gli interrupts? Mi sembra l'unico modo ragionevole se hai del codice "impegnativo", oppure fai una routine di lettura encoder e richiamala per ogni iterazione di for, while, etc.

Ciao, Ale.

Ciao, guarda... diciamo che leggendo diverse librerie.... proprio non ho capito nemmeno se dovevo leggere da destra a sinistra o viceversa. :roll_eyes: :face_with_spiral_eyes:
Parlo di arduino due.
Ma se richiamo la subroutine dell encoder, nella subroutine dove ci sono i for /while, cosa mi cambia?
Non deve finire prima l'iterazione per procedere con il flusso? Intendo dire non rimane ugualmente bloccata la lettura encoder?
Grazie per le idee.

Quali librerie? Perchè ti servono delle librerie? attachInterrupt() funziona sulla due come su tutte le altre schede supportate, e puoi usare i pin che vuoi.

Non saprei, non hai postato il codice...

Facciamo un esempio:

void miaFuncPesante()
{
  for(uint32_t a=0;a<100000;a++)
  {
     leggiEncoder();
     //fai anche altro
   }
  while(1)
   {
     leggiEncoder();
     // e magari metti un break...
    }
}

Per ogni iterazione del loop (sia for che while) avrai una lettura dell'encoder. E' sufficente? Non lo so, dipende quante altre operazioni fai.

Ciao, Ale.

Grazie ale, ma durante l iterazione for la chiamata della subroutine lettura encoder non viene letta.... credo..... quindi fino alla fine incremento del for, il resto non è flussato. Cioè... se muovo l encoder nel conteggio da 0 a 1000.... ciao lettura. È giusto cosa dico?

Comunque ci provo, almeno ogni for/while, leggo l encoder. Capito..... grazie ancora.