TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: BACHAB en 14 de Agosto de 2011, 20:21:56

Título: Problema con DelayMs en hi-tech
Publicado por: BACHAB en 14 de Agosto de 2011, 20:21:56
Buenas, tengo un problema con el DelayMs, pues tarda la mitad de lo que deberia tardar.
Es un 16F887 con el oscilador interno a 4Mhz, y básicamente el código que pongo es este:
#include <delay.c> //este incluye a su vez a delay.h
#define    XTAL_FREQ    4MHZ
.
.
.
DelayMs(1000);
//
La unica forma de que ande bien, es que le diga q el PIC esta andando a 8Mhz (q es mentira).
Espero que ya hayan visto algun problema similar.
Saludos.
Título: Re: Problema con DelayMs en hi-tech
Publicado por: Suky en 14 de Agosto de 2011, 20:42:04
Y como has configurado el oscilador interno? Los fuses y el registro OSCCON? Aunque por default es 4MHz  :tongue:
Título: Re: Problema con DelayMs en hi-tech
Publicado por: AngelGris en 15 de Agosto de 2011, 11:01:47
Por lo que veo en el archivo delay.h, el parámetro de la función DelayMs es del tipo unsigned char por lo tanto sólo debería poder tomar valores hasta 255.

¿Qué ocurre si probás de encadenar por ejemplo 4 delay de 250ms cada uno, llegas al valor aproximado de 1s?
Título: Re: Problema con DelayMs en hi-tech
Publicado por: BACHAB en 15 de Agosto de 2011, 22:01:41
1_Si, el default es 4MHz y así lo confirma el OSSCON
2_Uuhhh tenes razon q gil q soy, aunque debería durar un 1/4  de segundo, pero como lo medi "a ojo" debo haberme equivocado.
Pense en hacer eso, pero cuando me disponia a hacerlo note otros problemas y me distraje con eso, voy a hacerlo y tendré q buscar o hacerme una función de delay mas copada.
Muchas gracias por las respuestas!