Funzione di callback vs ISR

  • Elia
  • Offline
  • Junior Member
  • Junior Member
Di più
10 Mesi 3 Settimane fa #1 da Elia
Funzione di callback vs ISR è stato creato da Elia

Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.

Si prega Accedi o Crea un account a partecipare alla conversazione.

Di più
10 Mesi 3 Settimane fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Funzione di callback vs ISR
Salve Elia,

Il tuo problema lo si risolve in generale con un sistema operativo che gira nel microconotrollore. Passi la funzione e la gestisce, in parallelo. Parallelo significa però che il sistema operativo assegna del tempo ad ogni funzione da eseguire(task) che ha nel suo scheduler. La struttura PIC18 non è ottimale per i sistemi operativi.

In ogni modo il tuo problema si risolve semplicemente, facendo uso delle interruzioni di fine trasmissione. Crei un ISR per il controllo di fine trasmissione e svolgi il resto in parallelo.
Crei una funzione che scrive in un buffer e avvia la prima trasmissione, e la funzione ISR permette un cambio di stati (o accesso diretto al buffer).
Se no accedi al buffer, dovresti realizzare una piccola macchina a stati per inviare ogni volta il nuovo carattere.
La macchina a stati si comporta come un semplice sistema operativo che ti permette di eseguire diverse operazioni a seconda del tuo stato.

Quanto detto in due frasi non è facilissimo, ma nel complesso non sono molte righe di codice.

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Elia
  • Offline
  • Junior Member
  • Junior Member
Di più
10 Mesi 2 Settimane fa #3 da Elia
Risposta da Elia al topic Funzione di callback vs ISR
Grazie Mauro della risposta.

Per "interruzione di fine trasmissione" intendi l'interrupt su TX?

Se non chiedo troppo e se ne hai voglia, potresti approfondire anche il concetto della macchina a stati che mi interessa particolarmente. Sarei molto curioso di sapere come risolveresti il problema.

P.S: Io sono un ingegneretto elettronico alle prime armi senza troppa esperienza, fresco di studi ma in realtà totalmente ignorante. Scusami se ti faccio domande banali.

Si prega Accedi o Crea un account a partecipare alla conversazione.

Di più
10 Mesi 4 giorni fa #4 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Funzione di callback vs ISR
Salve Elia,

Per "interruzione di fine trasmissione" intendi l'interrupt su TX?


Si, un'interruzione di fine trasmissione. In questo modo eviti il tempo di attesa che altrimenti perderesti.

Con macchine a stati ho fatto diversi esempi.

Se scarichi gli esempi del testo XC8 Step by Step

www.laurtec.it/categoria-libri/88-libri-...279-xc8-step-by-step

capitolo 16, Progetto Lettura ADC via Terminal,

Implemento una macchina a stati per la scrittura evitando di bloccare le conversioni ADC.

L'esempio non risolve alcuni problemi di accesso asincrono delle variabili, ma mostra come implementare una macchina a stati.

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

Moderatori: Mauro LaurentiPinnaStefAMatteo Garia