Chi si ricorda qual'è la frequenza del segnale PWM?
Io ricordo 490Hz, ma su quale pin su tutti o c'è un PWM a circa 900Hz.
Ne ho bisogno per generare un impulso da basso ad alto di circa 10us, allora con PWM di 490 ho che:
p = 1/490 = 0,002040816 secondi, circa 2ms diviso 255 = 0,000008003
circa 8us con analogWrite(pin, 1) poi resta basso per tutto il resto del tempo cioè 2ms - 8us e ho tutto il tempo per fare digitalWrite(pin, LOW).
Timer0
Usato da millis() e delay() e per il PWM sui pin 5 e 6
fast hardware pwm
(default 976.5625 Hz)
Pin 5 è anche usato per il “pulse counting”
Pin 8 è usato per il “input capture”
Timer1
Usato dalla libreria Servo e per il PWM sui pin 9 e 10. Libreria e PWM mutuamente esclusivi.
8-bit phase correct pwm mode
(default 488.28125 Hz)
Timer2
Usato per il PWM sui pin 3 e 11
8-bit phase correct pwm mode
(default 488.28125 Hz)
Ok, vi ho letti tutti. Sembra funzionare, il sembra è dovuto al fatto che la mia vista non è buona specie quando messa alla prova da GTKwave che trovo scomodissimo da usare (sono io che non lo so usare) e mi devo calcolare a mano il tempo.
Che software usate per analizzare il .vcd fornito da wokwi?
Ho provato anche l'estensione di VSCODE ma anche lui non va bene.
Se non ho sbagliato i calcoli, attualmente ho un loop che gira alla velocità di 4us e ad intervalli regolari passa a 10us perché stampo.
In pratica ogni 50ms viene emesso un trigger al sensore sr-04, viene sollevato l'interrupt sul pin echo, la funzione agganciata sgancia il pin dal PWM con pinMode e poi digitalWrite ma basterebbe sganciarlo poiché è già LOW. L'interrupt su echo è CHANGE quindi vengono prese due letture di micros.