I timer interni di Arduino -
HTML-код
- Опубликовано: 8 июл 2024
- In questo video affronto il tema dei timer interni di Arduino, che possono essere collegati a un'interrupt che risveglia una funzione definita dall'utente o setta un flag. I timer sono utili per svolgere periodicamente delle operazioni di controllo o verifica e agiscono in una modalità simile a un background.
Sorgenti, schemi e slide:
github.com/zmaker/arduino_coo...
Indice dei video:
www.zeppelinmaker.it/arduino100/
Puoi scaricare gratuitamente i miei libri:
"Il manuale di Arduino - gumroad.com/l/arduino
"Il cookbook di Arduino": gumroad.com/l/arduinocookbook
Altre informazioni e libri sul mio sito: www.zeppelinmaker.it
I sorgenti su github:
github.com/zmaker/arduino_coo...
questa è una signora lezione......sono incazzato nero con le scuole superiori di questi ultimi anni.......dove al massimo insegnano ad usare arduino ma senza neanche troppa insistenza......mio nipote dopo 5 anni non sa nemmeno cosa è un micropic e sono io che solo grazie a persone come te che ho imparato qualcosa....devo spiegargli le cose...bravissimo
Grazie a te. Le scuole sono in grosse difficoltà, non solo economiche. Sono pochi i professori che sanno guardare oltre "al programma". A mio figlio insegnano "coding"... dovresti vedere come! Una pena. La scuola sta cercando di inseguire un mondo che è troppo veloce per lei... il problema è che è difficile anche aiutarli. Ho provato ad offrire gratuitamente delle giornate con la stampante 3D e non mi hanno neppure risposto.
Sei un grande! Hai la capacità di spiegare cose difficilissime in maniera elementare. Complimenti
Grazie, adesso vado a vedermi i diversi modi operativi, mi ricorda i corsi di microcontrollori e l'arduino prende tutta una nuova dimensione!
Molto interessante ...Programmazione avanzata, mi piace! :-)
ehh il mio pubblico diventa sempre più esigente! ;-)
Grazie
Grande Paolo, argomento molto interessante, insegnaci a programmare in assembly.
fidati e difficile ma una volta imparate le basi inizia ad essere piu facile
Non potresti ma devi approfondire :)
Grande video Paolo.
ho qualche altro approfondimento... tipo i watchdog... arrivano!
Grazie per i tuoi video e per il tuo metodo di insegnamento , come posso fare a fare dei blink su porte es pinMode(12, OUTPUT);
pinMode(13, OUTPUT); in sincronia con un buzzer di modo che si accendano e si spengono allo stesso tempo ? ho scritto tutto a 1000 ms ma non va
Ciao Paolo, quindi se ho capito bene posso settare il prescaler ad esempio 1/1 per velocizzare l'esecuzionianche di tutti i miei progetti in generale? grazie
Ciao. No, non è proprio così. I timer sono indipendenti dall'esecuzione del codice. Per sveltire le cose dovresti sostituire il quarzo. Il max valore utilizzabile è di 20 Mhz. Vanno poi impostati anche i fuses del micro (www.engbedded.com/fusecalc/)
Ciao e grazie della lezione specifica sui timer. Una cosa mi preme capire e cioè se uno o piu di uno dei timer si possono azzerare a mia discrezione tramite lo sketch da un evento ben preciso.
Credo di si ma devo andare a verificare. Credo si possa impostare il valore a piacere. So che si può fare anche per modificare il numero di millis rilevato da arduino...
Ciao Paolo, molto interessante questo video, avevo anche letto qualcosa sul tuo libro, non mi è chiaro solo il &2, modulo 2, c’entra qualcosa coi puntatori ?
Ciao grazie e complimenti !
Ciao. No, il tick%2 calcola il modulo 2 di tick, dividendo tick per 2. Il resto (il modulo 2) varrà sempre e solo 0 o 1. = se pari e 1 se dispari e quindi si usa questo metodo per fare il cambio di stato.
Ah ok..... capito scusami mi ero perso un passaggio
Grazie mille
Posso far partire il timer quando serve a me tipo dopo aver schiacciato un pulsante e dopo aver fatto qualcosa per n-tempo interrompere il timer? va settato per forza nel void setup{ }?
grazie
Ciao, si chiama timer, ma in realtà continua a scattare... è più un clock. Per fare come dici tu servono un po' di variabili di stato e forse questo non è il sistema più adatto
@@zeppelinmaker Per "spegnere" il timer si potrebbe impostare il prescaler su 0
Ciao innanzitutto complimenti per la lezione. Non ho compreso ha cosa serve l istruzione TCNT1=0
Secondo lei sarebbe necessario usare questi timer per creare un orologio per gli scacchi oppure è sufficiente sfruttare la funzione millis()?
dovresti misurare il tempo... basta usare millis().
un piccolo dubbio, magari ho un po' di confusione e mi piacerebbe un chiarimento:i timer, dipendendo direttamente dal clock imposto dal quarzo , presumo che blocchino tutte le operazioni finché non si verifica l'evento che azzera il counter e questo potrebbe spiegare perché ad esempio la funzione delay blocca il loop e non vengono eseguite altre operazioni finché non termina il conteggio, ma allora come fa ad esempio la funzione millis() ad evitare questo blocco?
I timer e il watchdog (ne parlo in un prox video) girano in modo indipendente dal codice. Delay() è bloccante per come è stata implementata. La trovi nel file \hardware\arduino\avr\cores\arduino\wiring.c del "core" di arduino e se vai a vedere realizza la "pausa" con un ciclo while... ecco perché blocca tutto!
@@zeppelinmaker grazie per il chiarimento, aspetto il prossimo video, darò un'occhiata al file appena mi sarà possibile
Ciao! Grazie del video Paolo, davvero chiaro! Cerco di riassumere per vedere se ho capito però, perché non mi torna una cosa. Il clock "originale" viaggia a 16 Mhz, cioè cambia stato 16 milioni di volte al secondo. Grazie al prescaler, la variabile 'tick' aumenta di 1 ogni 256 cambi di clock, vale a dire 16000000/256 = 62500 volte al secondo. Il led si accende/spegne ad ogni aumento del tick... quindi dovrebbe farlo 62500 volte al secondo! Però dalla schermata del Serial alla fine non è così... dove sbaglio? Grazie mille a chiunque voglia rispondere! :-)
Ciao Mikael, il timer 1 usato da Paolo è a 16 bit, quindi va in overflow ogni 2^16 = 65536 incrementi di "tick". Per questo vedi il cambio di stato dopo poco più di un secondo (che corrisponde, come hai detto tu, a 62500 incrementi di "tick"). Da neofita di Arduino, aveva stupito anche me:)
@@jimiandrix9748 grazie!
Sì pliz approfondisci! Quale sarebbe il link per saperne di più, che questo argomento mi interessa particolarmente!
Il link è questo: sites.google.com/site/qeewiki/books/avr-guide/timers-on-the-atmega328
@@zeppelinmaker Grazie mille!!
Ciao mi aiuteresti a creare uno sketch che abbia la funzione di un timer azionato da un pulsante che parte un relè che rimanga acceso 15 poi stacca apre un altro relè che rimanga acceso 5 minuti è poi termina il ciclo che xó abbia un pulsante di reser che si può stoppare quando si vuole grazie mille
Ciao. Ti consiglio di cercare nella playlist i video che parlano delle macchine a stati...
Grazie mille se mi aiuteresti a scriverlo mi faresti un grande favore 🙏
@@giuseppesaffioti3651 in fondo alla homepage di zeppelinmaker.it trovi le modalità