- Messaggi: 59
- Ringraziamenti ricevuti 0
scrittura valori nel registro del timer0
9 Anni 7 Mesi fa #6
da sharky
Risposta da sharky al topic scrittura valori nel registro del timer0
Grazie della risposta! Hai ragione per quanto riguarda il +2 invece che -2.. Ma non ho ancora capito perche non devo twnere conto del prescaler in questo calcolo.. Cioè perche il +2 non viene compensato dal prescaler... In sostanza se il mio contatore aumwnta di 1 ogni 256 cicli **dovrebbe** in teoria essere tenuto in conto anche nella compensazione...
Se il mio timer ha un overrun dopo 4 conteggi, con un prescaler di 256 sono 1024 cicli. Se io peró aggiungo 2 al valore che vado a scrivere ottwngo un overrun ogni 518 cicli. (2 + 256*2)..
Non so se mi spiego...
Dove sbaglio?
Grazie
Se il mio timer ha un overrun dopo 4 conteggi, con un prescaler di 256 sono 1024 cicli. Se io peró aggiungo 2 al valore che vado a scrivere ottwngo un overrun ogni 518 cicli. (2 + 256*2)..
Non so se mi spiego...
Dove sbaglio?
Grazie
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 #7
da sharky
Risposta da sharky al topic scrittura valori nel registro del timer0
Ps: non è che voglio avere ragione.. È che soffrwndo di dislessia ho la necessitá di capire bene le cose per memorizzarlw..
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 #8
da alfa75
Risposta da alfa75 al topic scrittura valori nel registro del timer0
ciao Sharky
quando ricarichi il valore del Timer0 nel suo registro lo fai solo nel momento in cui scatta l'interrupt
il prescaler non è altro che un divisore di frequenza che "rallenta" il conteggio
ti metto qui sotto un paio di link dove puoì approfondire il discorso
www.settorezero.com/wordpress/corso-prog...pplicazione-pratica/
www.microcontroller.it/Tutorials/PIC/Per.../Timer0/timer0_3.htm
p.s guardati bene la formula per calcolare il preload del timer è vedrai che il valore del prescaler è indifferente (o quasi visto che la scrittura sul regisro cancella ogni volta anche il valore del prescaler,quindi altri cicli persi)
quando ricarichi il valore del Timer0 nel suo registro lo fai solo nel momento in cui scatta l'interrupt
il prescaler non è altro che un divisore di frequenza che "rallenta" il conteggio
ti metto qui sotto un paio di link dove puoì approfondire il discorso
www.settorezero.com/wordpress/corso-prog...pplicazione-pratica/
www.microcontroller.it/Tutorials/PIC/Per.../Timer0/timer0_3.htm
p.s guardati bene la formula per calcolare il preload del timer è vedrai che il valore del prescaler è indifferente (o quasi visto che la scrittura sul regisro cancella ogni volta anche il valore del prescaler,quindi altri cicli persi)
Si prega Accedi o Crea un account a partecipare alla conversazione.
- alfa75
- Platinum Member
Riduci
Di più
- Messaggi: 527
- Ringraziamenti ricevuti 86
9 Anni 6 Mesi fa #9
da sharky
Risposta da sharky al topic scrittura valori nel registro del timer0
grazie mille, ora me li guardo!
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 6 Mesi fa #10
da Mauro Laurenti
Risposta da Mauro Laurenti al topic scrittura valori nel registro del timer0
Il ragionamento che ho fatto e' valido per prescaler 1 ovvero disattivo.
Nel caso in cui hai il prescaler il +2 vale ancora ma sul totale che non e' piu' il valore scritto sul TMR0 ma TMR0 * prescaler.
Dalla somma devi poi vedere se dividendo per il prescaler che numero esce...
...naturalmente con la virgola e prossimo ad un valore intero per cui i due cicli li puoi trascurare ed accettare l'errore. Piu' e' alto il prescaler e minore e' l'errore %.
Considera che oltre al +2 devi sommare anche il tempo di latenza dell'ISR.
Se il tuo prescaler e' impostato a bassi valori comparabili o uguale al numero di cicli che devi compensare, sommi 1 al valore del TMR0.
Saluti,
Mauro
Nel caso in cui hai il prescaler il +2 vale ancora ma sul totale che non e' piu' il valore scritto sul TMR0 ma TMR0 * prescaler.
Dalla somma devi poi vedere se dividendo per il prescaler che numero esce...
...naturalmente con la virgola e prossimo ad un valore intero per cui i due cicli li puoi trascurare ed accettare l'errore. Piu' e' alto il prescaler e minore e' l'errore %.
Considera che oltre al +2 devi sommare anche il tempo di latenza dell'ISR.
Se il tuo prescaler e' impostato a bassi valori comparabili o uguale al numero di cicli che devi compensare, sommi 1 al valore del TMR0.
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
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.