Velocidad salidas digitales

Hola, quería saber cual es la frecuencia máxima que puedo conseguir en las salidas digitales, usando un arduino con un atmel168 a 8 mhz.

saludos!

nadie me puede hechar una mano?

Hola,

Si no me equivoco....usando PWM y con resolucion de 8 bits => Fclk/255, es decir unos 31 KHz, usando un cristal de 8MHz.

Si haces polling (on,delay,off) puedes conseguir más. Depende del código que emplees....

Saludos

Igor R.

esque escribí un código muy sencillo de ON OFF de una salida digital, y no conseguí mas de unos 200khz, y me resulto extraño, no sabeis alguna forma de conseguir mas velocidad?

Un Saludo y muchas gracias!

que c'odigo?

Lo m'as r'apido es que manipules los puertos directos (no uses digitalWrite de Arduino), y para la rutina de espera uses en orden nop de ensamblador.

Por ejemplo, para la rutina de delay:
#define WAIT_TIME 3000
for (long int i=0;i<WAIT_TIME;i++){
asm volatile ("nop");
}

Manipulaci'on de puertos => Arduino Reference - Arduino Reference

Me refiero, a que la velocidad va relacionado con las instrucciones de tu c'odigo. Por lo que cuanto m'as bajes de nivel, m'as control tendr'as....

:wink:

Si quieres tener la máxima velocidad como dice Igor no te queda más remedio que ir a ensamblador, el Arduino ejecuta una instrucción en cada ciclo de reloj, por lo que podrías alcanzar varios MHz.

este finde semana probare a manipular los puertos en ensamblador, me extrañaba que el digital_write se comiera tantos ciclos, estoy empezando con arduino, pero esto con pic no me habia pasado. gracias por la ayuda, cuando haga la prueba posteare el resultado

un saludo