Frequenza Massima Arduino

Salve ho una scheda Arduino UNO rev 3. Se faccio in modo che un pin digitale emetta un'onda quadra, qual è la frequenza massima che si può raggiungere?

F_CPU sfruttando il pin CLK0, impotando il relativo fuse bit.

digitalWrite impiega 5/6us per ogni cambio di stato, quindi tu ne devi fare 2 e allora siamo già sui 11/12us, il pwm sarà generato da un ciclo che richiede almeno 2clock se infinito, 2clock corrispondono a (1/16000000)*2 = 0.12us.
Quindi irrilevante, ora facciamo 1/0.000012 che fa 83333hz ovvero 83khz.
Se invece usi direttamente la porta impieghi circa 0.5us a impulso che per due fa 1us + i 0.12 fa 1.12 facciamo
1/0.0000015 fa 666666hz ovvero 666khz

penso che se guardi il datasheet puoi usare il pwm hardware che va sicuramente più veloce.

tommasomichelutti:
Salve

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:

Grazie delle risposte, mi sono presentato nella sezione apposita. Riguardo alla mia domanda purtroppo dovrei raggiungere frequenze intorno agli 800 KHz, se non è possibile utilizzerò altri metodi!

Arrivi al massimo a 10 volte quella frequenza con il PWM impostato in modalità CTC.
F_IO=F_CPU/(2N(1+OCRnA))
F_CPU = 16MHz
N = prescaler, puoi lasciarlo ad 1
OCRnA = livello di azzeramento del timer, per frequenze alte tendi a 0

Come vedi 800kHz si raggiungono con sufficiente semplicità.

Uso da poco arduino e non conoscevo questa possibilità quindi mi potete spiegare come posso far emettere ad un pin un'onda quadra intorno agli 800 KHz. Che codice devo scrivere a grandi linee?

Cavoli non è semplice per un novizio trovarsi davanti ai registri di un AVR. Puoi leggere questo.

Grazie :slight_smile: