Hola, soy nuevo en el foro, para ser más preciso éste es mi primer mensaje
Estoy empezando con arduino, pero tengo amplia experiencia en C18,
Bueno, voy al grano.
Resulta que estoy desarrollando un código y tengo que echar mano de la función millis(); y no sé en que librería puede estar ni donde buscar y me gustaría saber cual es el código de esa función, he buscado por la red y lo que encuentro son ejemplos pero no veo realmente que es lo que hace esta función.
Para mi que utiliza un timer como el timer0 y la función lo que hace es leer los registros del timer.
Thulsa_Doom:
Hola, soy nuevo en el foro, para ser más preciso éste es mi primer mensaje
Estoy empezando con arduino, pero tengo amplia experiencia en C18,
Bueno, voy al grano.
Resulta que estoy desarrollando un código y tengo que echar mano de la función millis(); y no sé en que librería puede estar ni donde buscar y me gustaría saber cual es el código de esa función, he buscado por la red y lo que encuentro son ejemplos pero no veo realmente que es lo que hace esta función.
Para mi que utiliza un timer como el timer0 y la función lo que hace es leer los registros del timer.
No entiendo para que quieres saberlo, es una función que te da el tiempo en mseg del arduino, contado desde que le das power, se mide en unsigned long de modo que tienes toda esa extensión de la variable hasta tener un overflow.
Si buscas en tu directorio C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino encontrarás un archivo llamado wiring.c y dentro está el código para millis()
unsigned long millis()
{
unsigned long m;
uint8_t oldSREG = SREG;
// disable interrupts while we read timer0_millis or we might get an
// inconsistent value (e.g. in the middle of a write to timer0_millis)
cli();
m = timer0_millis;
SREG = oldSREG;
return m;
}
Obvio que falta postear aqui algunas definiciones de variables, includes, etc.
Hola.
Me sale aviso de que te han respondido mientras escribía mi post, pero ya que está redactado lo envío.
La función millis y micros, básicamente consta de una rutina de interrupción que incrementa en cada desbordamiento del TC0 (previamente configurado) unas variables que contienen el número de overflows,millis y fracciones. Para millis se devuelve directamente la variable; para micros se realiza además la lectura del TC0, para incluirlo en el cálculo correspondiente.
Si quieres ver el código, lo tienes en /hardware/arduino/avr/cores/arduino/wiring.c
Gracias de nuevo, siempre que cambio de compilador me vuelvo un poco loco, hay cosas que no entiendo muy bien de este, como lo de class, public y private, tiene cosas iguales que el C18 pero tiene otras distintas, por ejemplo en C18 la rutina millis() se llama de otra manera, está en la librería Tick.c y se implementa de otra forma pero el resultado es el mismo.
poco a poco lo iré comprendiendo.
Claro es solo cambiar de chip.
Yo tengo el mismo drama intentando entender Raspberry y BeagleBone Black en su ambiente tan RARO de capas (layers). No me puedo adaptar aún.
PIC y Arduino tienen muchas cosas comunes. Pero los ARM lucen tan raros!!