fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

libreria delay.h
 
Avisos
Vaciar todo

libreria delay.h

3 Respuestas
2 Usuarios
0 Reactions
2,200 Visitas
goofyahead
Respuestas: 35
Topic starter
(@goofyahead)
Eminent Member
Registrado: hace 18 años

Hola busco ayuda con la biblioteca delay.h, esta define ticks de 10 ms y me gustaria poder conseguir ticks de 1 ms o menos, y para eso hay que cambiar un define, que establece un contador, pero no se porque ese valor genera ticks de 10 ms.
#define TICKS10 0x3D // Valor con el que inicializar contador para
// conseguir TICKs de 10ms
/************************************/
/* Configurar el temporizador 0 */
/*********************************/
void timer0_configurar()
{
//-- Usarlo en modo temporizador, prescaler = 256
OPTION_REG=0x87;
}

/*********************************************/
/* Hacer una pausa en unidades de 10ms */
/* ENTRADA: */
/* -pausa: Valor de la pausa en decenas de ms */
/************************************************/
void delay0(unsigned char pausa)
{

//-- Esperar hasta que trancurran pausa ticks de reloj
while(pausa>0) {
TMR0=TICKS10; // Inicializar contador
T0IF=0; // Quitar flag overflow
//-- Esperar hasta que bit T0IF se ponga a '1'. Esto
//-- indica que han transcurrido 10ms
while (!T0IF);

//-- Ha transcurrido un tick
pausa--;
}
}

Muchas gracias de antemano.
Goofyahead 🙂

Responder
2 respuestas
garrocha
Respuestas: 1110
(@garrocha)
Ardero
Registrado: hace 19 años

inicializa el timer con el valor 0x3D (61 en decimal), de ahí a que llegue a 255 (si el timer es de 8 bits) pues se supone que habran pasado 10mS (esto depende de la frecuencia del reloj que tengas puesta), bueno, siguiendo una regla de tres, si (255-61)=194 (es el recorrido que hace el timer desde 61 hasta 255 que es cuando desborda)-> 194=10mS entonces supongo que 19.4 seria el recorrido de 1mS, convertido a entero seria 19 (con un error bastante gordo que tendrias que ajustar cada 5 mS restar uno).
Si revertimos la cuenta 255-19=236 -> 0xEC (notación hexadecimal) seria el valor con el que cargar esa constante.

Responder
goofyahead
Respuestas: 35
Topic starter
(@goofyahead)
Eminent Member
Registrado: hace 18 años

wow, gracias, no sabia que era un contador que desbordaba, asi que el contador llega hasta 255 porque tiene 8 bits, y lo que establezco es donde empieza a contar, comprendo que por cada unidad del contador es un ciclo de mi reloj, para hallar la cantidad exacta de tiempo, no?

Muchas gracias 🙂 da gusto estar haciendo algo y que te contesten el finde!!

😀

Saludos Gof
Nos vemos en valencia 🙂

Responder
Compartir: