- Messaggi: 353
- Ringraziamenti ricevuti 8
TIMER
8 Anni 5 Mesi fa #1
da elpablito
TIMER è stato creato da elpablito
Buon giorno
Giocando negli ultimi tempi con Arduino mi è venuto questo dubbio. Io, di solito, dovendo contare un tempo prefisso nel registro di un timer il numero di impulsi per avere un'unità di tempo ,esempio 1mSec, poi vado a interrupt e conto i miei millisecondi.
In arduino con Pippo=millis() si conoscono i millisecondi trascorsi dall'avvio. Poichè non sono riuscito a capire come calcola questi tempi, mi è sorta questa perplessità; escludendo la soluzione di fare un polling invece dell'interrupt, esiste una qualche altra possibilita di contare dei tempi? Oppure devo ritenere, che sebbene non me lo dica, continui ad andare a interrupt anche arduino.
Si ringrazia anticipatamente
Paolo
Giocando negli ultimi tempi con Arduino mi è venuto questo dubbio. Io, di solito, dovendo contare un tempo prefisso nel registro di un timer il numero di impulsi per avere un'unità di tempo ,esempio 1mSec, poi vado a interrupt e conto i miei millisecondi.
In arduino con Pippo=millis() si conoscono i millisecondi trascorsi dall'avvio. Poichè non sono riuscito a capire come calcola questi tempi, mi è sorta questa perplessità; escludendo la soluzione di fare un polling invece dell'interrupt, esiste una qualche altra possibilita di contare dei tempi? Oppure devo ritenere, che sebbene non me lo dica, continui ad andare a interrupt anche arduino.
Si ringrazia anticipatamente
Paolo
Si prega Accedi o Crea un account a partecipare alla conversazione.
- elpablito
- Autore della discussione
- Platinum Member
Riduci
Di più
8 Anni 5 Mesi fa #2
da Mauro Laurenti
Risposta da Mauro Laurenti al topic TIMER
metti una pausa di 2-3 secondi.
poi vai in while(1).
Se la corrente non varia tra il tuo delay e il while(1) hai un bel 99% di probabilità che il delay è in polling.
Saluti,
Mauro
poi vai in while(1).
Se la corrente non varia tra il tuo delay e il while(1) hai un bel 99% di probabilità che il delay è in polling.
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
8 Anni 5 Mesi fa #3
da elpablito
Risposta da elpablito al topic TIMER
Salve al Mauro e &
Il problema mio è diverso. MI è chiaro cosa si può fare con un polling o un intrrupt anche se non sapevo come scoprirlo a livello hardware. Il signore, lo chiamerò così non sapendo chi è,ha implementato una funzione, estremamente comoda in molti casi, che mi piacerebbe riscrivere per qualche altra bestiolina. In definitiva il signore dice se scrivi pippo = millis() pippo vale il numero di millisecondi dall'avvio, i millisecondi sono contenuti in una variabile che si incrementa in continuazione e dopo (non ho internet per dire esattamente quando) due giorni va a tutti F e rincomincia. Secondo il mio sapere non può fare un polling, infatti dovrebbe fermarsi per vedere quando il bit va alto, quindi non farebbe null'altro; potrebbe andare a interrupt ogni millisecondo, bella rottura, oppure fa un qualche intrigo con i cicli del clock, ha un quarzo esterno noto da 16Mhz. Poichè il giochino è fatto di default (non devo settare nulla), mi chiedevo quale potesse essere il trucco.
Salutoni
Paolo
Il problema mio è diverso. MI è chiaro cosa si può fare con un polling o un intrrupt anche se non sapevo come scoprirlo a livello hardware. Il signore, lo chiamerò così non sapendo chi è,ha implementato una funzione, estremamente comoda in molti casi, che mi piacerebbe riscrivere per qualche altra bestiolina. In definitiva il signore dice se scrivi pippo = millis() pippo vale il numero di millisecondi dall'avvio, i millisecondi sono contenuti in una variabile che si incrementa in continuazione e dopo (non ho internet per dire esattamente quando) due giorni va a tutti F e rincomincia. Secondo il mio sapere non può fare un polling, infatti dovrebbe fermarsi per vedere quando il bit va alto, quindi non farebbe null'altro; potrebbe andare a interrupt ogni millisecondo, bella rottura, oppure fa un qualche intrigo con i cicli del clock, ha un quarzo esterno noto da 16Mhz. Poichè il giochino è fatto di default (non devo settare nulla), mi chiedevo quale potesse essere il trucco.
Salutoni
Paolo
Si prega Accedi o Crea un account a partecipare alla conversazione.
- elpablito
- Autore della discussione
- Platinum Member
Riduci
Di più
- Messaggi: 353
- Ringraziamenti ricevuti 8
8 Anni 4 Mesi fa #4
da Mauro Laurenti
Risposta da Mauro Laurenti al topic TIMER
Salve Paolo,
altra tecnica e' quella semplicemente di avviare un timer.
quindi quando leggi millis() leggi il valore di un timer.
In questo modo non hai bisogno del polling.
Se la funzione ti permette di leggere in millisecondi un valore anche di giorni...molto probabilmente deve usare una funzione d'interrupt e un timer.
Per pochi millisecondi basta invece un timer, senza scomodare le interruzioni.
Saluti,
Mauro
altra tecnica e' quella semplicemente di avviare un timer.
quindi quando leggi millis() leggi il valore di un timer.
In questo modo non hai bisogno del polling.
Se la funzione ti permette di leggere in millisecondi un valore anche di giorni...molto probabilmente deve usare una funzione d'interrupt e un timer.
Per pochi millisecondi basta invece un timer, senza scomodare le interruzioni.
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.