PIC lento?????

7 Anni 6 Mesi fa #1 da CACCIA
PIC lento????? è stato creato da CACCIA
Buongiorno a tutti,
scusate il post magari banale per voi, io che sono neofita sto cercando di imparare...
Sto utilizzando un PIC18F per il controllo di una elettrovalvola proporzionale un motore con encoder e 5 elettrovalvole standard.
Ora sto utilizzando per modulazione PWM il timer2 mentre per il controllo del tempo di ciclo il timer 1 che genera un interrupt quando è passato esattamente un secondo.
Per quanto riguarda la regolazione dell'elettrovalvola proporzionale ho utilizzato un algoritmo PID. Ora il tutto sembra funzionare ma è un po' lento!
Ho paura che usare troppi timer con interrupt generi questa lentezza! Che ne dite?
Grazie per l'attanzione e buona serata.
Saluti
Massimiliano

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

  • CACCIA
  • Visitatori
  • Visitatori
7 Anni 6 Mesi fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic PIC lento?????
Salve Caccia,

il modulo PWM una volta impostato con il timer 2 è come se non esista, lavora in maniera indipendente dalla CPU, a meno che tu non abbia impostato qualche interrupt sul timer 2.

Per il timer 1 se metti interrupt troppo rapidi puoi influenzare il calcolo richiesto per l'implementazione del PID.
Il PID può essere complesso e richiedere risorse CPU (tempo) se fai uso di variabili floating point.

Probabilmente ti può tornare utile impostare la frequenza della CPU al massimo e quella del Timer 1 al minimo al fine di avere un numero ridotto di interruzioni.

Saluti,

Mauro
Ringraziano per il messaggio: CACCIA

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

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
7 Anni 6 Mesi fa #3 da CACCIA
Risposta da CACCIA al topic PIC lento?????
Buongiorno Mauro,
grazie per la risposta, come sempre molto disponibile.

In effetti per l'elaborazione dei PID uso delle variabili Float e successivamente utilizzo il casting per passare da float ad integer (per ciclo PWM).

Uso l'oscillatore interno a 16MHz ed il timer 1 mi genera un interrupt ogni secondo preciso per avere un riferimento per un conto alla rovescia!

Senza la routine di interrupt funziona tutto molto fluidamente, ecco che se la inserisco arrivano i problemi di "lentezza".

Ho pensato di non utilizzare l'interrupt per il conteggio dei secondi decrementando una variabile impostata inizialmente come numero di cicli per ottenere un secondo.... Non mi piace tantissimo però...
Che ne pensate?
Grazie ancora e buona giornata.
Saluti.
Massimiliano

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

  • CACCIA
  • Visitatori
  • Visitatori
7 Anni 6 Mesi fa #4 da Mauro Laurenti
Risposta da Mauro Laurenti al topic PIC lento?????
Se senza interruzioni funziona potresti considerare di generare il tempo di un secondo per mezzo del timer 1 e il cristallo da 32KHz esterno. In questo modo hai due sole interruzioni per secondo.
Con un cristallo da 16MHz hai molte interruzioni che possono essere causa di ritardi.
Non sono certo di quello che implementi nell'ISR, ma cerca di snellire il tutto.

Saluti,

Mauro

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

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
7 Anni 6 Mesi fa #5 da Pascolo
Risposta da Pascolo al topic PIC lento?????
I calcoli del PID li fai in interrupt?
Per velocizzare i calcoli potresti aumentare la frequenza del clock.

Saluti
Ivan

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

  • Pascolo
  • Junior Member
  • Junior Member
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login