el siguiente es el enlace la fuente consultada.
http://wiki.pinguino.cc/index.php/Millis
Explicación
millis - retorna el tiempo trancurrido desde que inicia el programa.
Cuando el programa comienza el timer interno TMR0 es inicializado en 0. TMR0 es un registro de 16 bits que se incrementa en uno cada milisegundo. Al ser de 16 bits llega a overflow despues de incrementarse cada milisegundo hasta 65536 lo que corresponde a 65.536 segundos. Como funcion millis() retorna el valor actual de TMR0.
Declaración
El valor que retorna es de tipo long (32bits). reinicia a 0 al llegar a 65536
millis();
Instrucción para reiniciar la cuenta de la funcion_millis = 0;Ejemplo
void setup(){
pinMode(0,OUTPUT);
digitalWrite(0,LOW);
}
void loop(){
if (millis()>1000) {
digitalWrite(0,HIGH); // enciende el led por un segundo
}
if (millis()>2000){
_millis=0; // reinicia el contador despues de dos segundos
digitalWrite(0,LOW); // Apaga el led
}
}
Hola, como el valor que devuelve es de 32 bits, si el registro es de 16 bits. Errata o estoy muy perdido?
ResponderEliminarGraicas
Si tienes razón, el valor que devuelve no es de 32 bits, es de 16. En el en la fuente original donde tomo la información así se encuentra consignado. Pero el tipo de dato apropiado es unsigned int (u16). como se ve en este enlace
ResponderEliminarhttp://wiki.pinguino.cc/index.php/Data_types
Ya mire el archivo que contiene la función en el código aparece como tipo long (32 bits). Aunque el registro efectivamente es de 16 bits el tipo utilizado para retornar es de 32 bits.
ResponderEliminar