PWM VELOCE

?R:
nella prova pratica però ho dei dubbi, premetto che ho sistemato i codice perchè io ho solo un arduino mega

Scusa, ma hai finito i pin PWM Per caso?
Perché altrimenti non capisco per quale motivo vuoi alterare il timer 0.
Lo sai, vero, che a parte il timer 0 gli altri timer sono impostati per avere una frequenza di ~488 Hz e che solo il timer 0 è impostato per avere ~976 Hz? Se il tuo problema era avere un PWM a bassa frequenza, allora è un "non problema". :wink:

e il pin 7 della porta D è il pin 38, comunque la frequenza è giusta, circa 476Hz, ho provato col mio oscilloscopio...

Non avevi specificato della Mega, per cui ho preso per buono il fatto di una Arduino Uno/2009. Comunque il tutto è facilmente adattabile, basta modificare il bit ed il registro della porta.

ma c'è una cosa che non capisco: quando metto com input resta comunqe acceso un po' il led... :roll_eyes:

Mettendo il pin in input, nel momento in cui viene scritto il segnale HIGH si accende la pull-up interna, che viene spenta quando il segnale viene messo su LOW.
Come ti avevo spiegato, per ridurre al minimo l'impatto sui calcoli del tempo, ho messo una routine più semplice possibile.
Volendo si può rivedere il codice affinché stacchi proprio il segnale dal pin quando lo metti in input. Però si torna a quanto ti ho chiesto prima, e cioè: ma hai finito i pin PWM?

ma così non posso variare il pwm, no?

Col codice che ti ho dato no. E' minimale che di più non si può. Fa solo ON/OFF con frequenza dimezzata rispetto a quella impostata dal timer, tutto qui.
Per alterare il PWM devi alterare le impostazioni del timer, e si torna al discorso che ti facevo nel precedente post.