Go Down

Topic: PWM VELOCE (Read 5 times) previous topic - next topic

leo72

Facciamo il punto delle "certezze":
1) hai un PCB già fatto per cui non puoi modificare le piste
2) hai necessità di un PWM sul pin 2 diverso da quello che il timer 3 ti genera

Allora ho una buona notizia per te  ;)
Un pin genera un segnale PWM corrispondente alle impostazioni del timer solo se lo agganci al timer stesso. Se lo lasci sganciato, è un pin normale e lo puoi usare per generare un segnale PWM usando la tecnica bit-banging via SW che ti ho illustrato io.
Quindi, se tu piloti il pin 2 via SW senza agganciare il pin al timer usando l'analogWrite, puoi generare sul pin 2 un segnale PWM con una frequenza differente (solo minore, ovviamente) rispetto a quella generata sugli altri 2 pin agganciati al timer  ;)
Che ne dici?  :D

?R

un'altra certezza è che i pwm sui pin 3,4,5 e 6 devono avere la stessa frequenza e di duty cycle indipendenti fra loro...
poi ci sarebbe che siccome il pwm del pin 2 può essere di frequenza molto più alta mi piacerebbe sfruttare questa cosa, però per le frequenze precise prima devo fare dei test per vedere a che frequenze taglia
nei prossimi giorni faccio dei test, poi ci risentiamo, intanto grazie mille ;)
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

leo72

Scrivi e vediamo se si tira fuori qualcosa.

?R

allora sul pin 2 posso arrivare tranquillamente a 20KHz di frequenza con duty cycle variabile, mentre sui pin 3,4,5 e 6 avrei bisognpo di una frequenza molto bassa, sui 200Hz...
per i pin con il pwm "lento" si possono usare gli altri timer che non sono direttamente collegati ai pin indicati per fare questi pwm andando a modificare l'ISR come proponevi di fare con il timer 0?
per il pwm "veloce" invece mi basta andare a mettere le mani sui registri come mi avevi già spiegato
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

leo72

Nonostante siano in sequenza, i pin 2,3,4,5,6 sono agganciati a diversi timer:
timer 3: pin 2, 3, 5
timer 0: pin 4
timer 4: pin 6

Il timer 3 lo possiamo perciò impostare come vogliamo, e possiamo avere sul pin 2 i tuoi 20 kHz con duty cicle variabile.
Sui pin 3 e 5 potremmo usare la tecnica del bit-banging sul timer 3, dividendo la frequenza del timer di un fattore 100 per avere proprio 200 Hz. Avresti però lo stesso duty cicle, se non è un problema.

Il timer 0 non lo possiamo modificare altrimenti si alterano le funzioni temporali per cui il pin 4 lo dobbiamo pilotare col bit-banging, magari agganciandolo al timer 4, che pilota il pin 6.

Che ne dici?

Go Up