- Messaggi: 59
- Ringraziamenti ricevuti 0
timer variabile
9 Anni 7 Mesi fa #1
da sharky
timer variabile è stato creato da sharky
Ciao a tutti!
ho bisogno di due timer che vadano a intervalli variabili tra 1 milisecondo e 20 secondi.
non so quale sia il modo migliore per affrontare il problema.. io ho valutato due opzioni ma forse cé una terza..
opzione a)
uso due dei timer interni, e mi calcolo i valori da scrivere in base al tempo necessario. il problema più grosso lo vedo nel fatto che per settare i timer da 1ms a 20s devo lavorare anche sul prescaler e non so come gestire questa cosa a livello di programma. cioè come decidere nel software che prescaler utilizzare per determinare poi i valori per i registri del timer.
opzione b)
faccio un unico timer settato a 1ms e uso dei contatori per gestire il passare del tempo. Il problema che vedo qui è che faccio uso anche di una porta seriale che manda dati in continuo. E ho paura che se ogni milisecondo ho un interrupt da parte del timer, aumento di molto la probabilità di errori di trasmissione..
voi che dite? avete un ozione c??
grazie
Ciao
Igor
ho bisogno di due timer che vadano a intervalli variabili tra 1 milisecondo e 20 secondi.
non so quale sia il modo migliore per affrontare il problema.. io ho valutato due opzioni ma forse cé una terza..
opzione a)
uso due dei timer interni, e mi calcolo i valori da scrivere in base al tempo necessario. il problema più grosso lo vedo nel fatto che per settare i timer da 1ms a 20s devo lavorare anche sul prescaler e non so come gestire questa cosa a livello di programma. cioè come decidere nel software che prescaler utilizzare per determinare poi i valori per i registri del timer.
opzione b)
faccio un unico timer settato a 1ms e uso dei contatori per gestire il passare del tempo. Il problema che vedo qui è che faccio uso anche di una porta seriale che manda dati in continuo. E ho paura che se ogni milisecondo ho un interrupt da parte del timer, aumento di molto la probabilità di errori di trasmissione..
voi che dite? avete un ozione c??
grazie
Ciao
Igor
Si prega Accedi o Crea un account a partecipare alla conversazione.
- sharky
- Autore della discussione
- Senior Member
Riduci
Di più
9 Anni 7 Mesi fa - 9 Anni 7 Mesi fa #2
da alfa75
Risposta da alfa75 al topic timer variabile
ciao Sharky
secondo me se devi arrivare a 20s ti conviene utilizzare l'opzione b ,perche arrivare a 20s anche con l'uso del prescaler è quasi impossibile a meno di avere una velocità di clock gia abbastanza bassa di suo
per calcolare facilmente prescaler e tempi dei timer io uso questo software
embedjournal.com/pic-timer-calculator-give-away-1/
saluti
Andrea
secondo me se devi arrivare a 20s ti conviene utilizzare l'opzione b ,perche arrivare a 20s anche con l'uso del prescaler è quasi impossibile a meno di avere una velocità di clock gia abbastanza bassa di suo
per calcolare facilmente prescaler e tempi dei timer io uso questo software
embedjournal.com/pic-timer-calculator-give-away-1/
saluti
Andrea
Ultima Modifica 9 Anni 7 Mesi fa da alfa75.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- alfa75
- Platinum Member
Riduci
Di più
- Messaggi: 527
- Ringraziamenti ricevuti 86
9 Anni 7 Mesi fa #3
da firstcolle
Risposta da firstcolle al topic timer variabile
Arrivare a 20 secondi è impossibile con un unico interrupt...
ti conviene impostare un timer a 16 bit con il pre/post scaler abbastanza alti in modo da avere un interrupt ogni 250ms o 500ms (come sai dipende anche dal clock esterno e dalle possibilità del pic che stai usando)... poi con un contatore conti tutti gli interrupt ricevuti
ti conviene impostare un timer a 16 bit con il pre/post scaler abbastanza alti in modo da avere un interrupt ogni 250ms o 500ms (come sai dipende anche dal clock esterno e dalle possibilità del pic che stai usando)... poi con un contatore conti tutti gli interrupt ricevuti
Si prega Accedi o Crea un account a partecipare alla conversazione.
- firstcolle
- Platinum Member
Riduci
Di più
- Messaggi: 362
- Ringraziamenti ricevuti 39
9 Anni 7 Mesi fa #4
da sharky
Risposta da sharky al topic timer variabile
Con un interrupt ogni 250 ms non riesco a avere timer di un solo ms...
Si prega Accedi o Crea un account a partecipare alla conversazione.
- sharky
- Autore della discussione
- Senior Member
Riduci
Di più
- Messaggi: 59
- Ringraziamenti ricevuti 0
9 Anni 7 Mesi fa #5
da sharky
Risposta da sharky al topic timer variabile
Huhm.... Ho fatto il timer da 1 ms con il contatore.. Funziona bene a parte un piccolo problema al quale non avevo pensato.. Se io devo fare 1000 step a un intervallo di 2.6 ms avró un ritardo di 4 secodi.. Un motore sará indietro..ho paura che se faccio un contatore di 0.1 ms genero troppi interrupt... Come mi conviene fare?
Io sostanzialmente ho la posizione x e y attuale e so che in tot ms devo arrivare alla nuova posizione x e y. I due motori ovviamente devono muoversi assieme ma a velocitá differenti e raggiungere la propria destinazione contemporaneamente... Qualche consiglio?
Io sostanzialmente ho la posizione x e y attuale e so che in tot ms devo arrivare alla nuova posizione x e y. I due motori ovviamente devono muoversi assieme ma a velocitá differenti e raggiungere la propria destinazione contemporaneamente... Qualche consiglio?
Si prega Accedi o Crea un account a partecipare alla conversazione.
- sharky
- Autore della discussione
- Senior Member
Riduci
Di più
- Messaggi: 59
- Ringraziamenti ricevuti 0
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.