Diferencia entre revisiones de «millis()»
De ArduWiki
(→Ejemplo) |
(→Referencias) |
||
Línea 65: | Línea 65: | ||
== Referencias == | == Referencias == | ||
* [https://www.arduino.cc/reference/es/language/functions/time/millis/ Guia de referencia de Arduino] | * [https://www.arduino.cc/reference/es/language/functions/time/millis/ Guia de referencia de Arduino] | ||
+ | * [https://tomblanch.wordpress.com/2013/07/27/resetting_millis/ Resetting the Arduino millis() count] - Tom Blanchard | ||
[[Category:Funciones]] | [[Category:Funciones]] |
Revisión del 16:22 27 feb 2019
Contenido
Descripción
Devuelve el número de milisegundos desde que la placa Arduino empezó a ejecutar el programa actual. Este número se desbordará (volverá a cero), después de aproximadamente 50 días.
Sintaxis
millis();
Parámetros
Nada.
Retornos
Número de milisegundos desde que el programa se inició. Numero tipo unsigned long.
Comentario
Se puede resetear el temporisador de millis() ?
extern volatile unsigned long timer0_millis;
unsigned long nuevo_valor = 0;
void setup(){
//Algo
}
void loop(){
//Algo
//--------
//Change Millis
setMillis(nuevo_valor);
}
void setMillis(unsigned long nuevo_valor){
uint8_t oldSREG = SREG;
cli();
timer0_millis = nuevo_valor;
SREG = oldSREG;
}
Advertencias
- Tenga en cuenta el tipo de valor que retorno millis() es unsigned long y pueden producirse errores lógicos si hacer operaciones aritméticas con otros tipos de datos más pequeños como: byte o int, incluso los long con signo pueden producir errores de calculo.
- millis() funciona mediante una interrupción (la misma de micros()); por lo tanto, su valor dejará de incrementar durante una rutina de servicio de interrupción (ej.: posterior a attachInterrupt()), o mientras no se llame a interrupts() después de llamar a noInterrupts().
Ejemplo
Parpadeo sin usar delay()
unsigned long hora = 0; //Es muy importante respetar el tipo de dato
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
if (milis() - hora >= 500){
hora = millis(); //Guarda a hora de cada cambio
digitalWrite(13, !digitalRead(13)); //Invierte valor del pin
}
}
Vea también
Referencias
- Guia de referencia de Arduino
- Resetting the Arduino millis() count - Tom Blanchard