TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: churrinfunflais en 15 de Enero de 2013, 13:20:06

Título: DelayMS [C18]
Publicado por: churrinfunflais en 15 de Enero de 2013, 13:20:06
Hola amigos...

Eh estado buscando la manera de hacer retardos en mili-segundos en las librerías de C18 de Microchip y no encuentro nada, por lo que agregue a la librería de Delays.h de C18 una función en la que realice retardos en ms y no en TCY´s para no estar realizando los cálculos de cada retardo a mano.

Aqui se las dejo ,,, y espero sus comentarios,, espero no hacer malas practicas de programación...

Código: [Seleccionar]
/* Function:    void DelayMS(int mSeconds, int  xFOSC)
 * Description: Delay miliseconds
 *              Passing 0 (zero) results in a delay of 0 ms.
 *              The full range of [0,255] is supported TYC.
 *              The delay range begins in 1ms
 * Inputs:      int mSeconds - miliseconds desired for the delay
 *              int xFOSC - MHz of the external Oscilator
 * Outputs:     None
 */
void DelayMS(int mSeconds, int  xFOSC){
    char msTCY = (1/(1/4*xFOSC))/1000;
    int dVal = mSeconds / msTCY;

    if(dVal > 0 && dVal <= 255){
        Delay1KTCYx(dVal);
    }else if (dVal > 255){
        Delay1KTCYx(255);
        dVal = dVal - 255;
    }
}
Título: Re:DelayMS [C18]
Publicado por: Thulsa Doom en 27 de Marzo de 2025, 11:47:58
Hola, se qué llego tarde ya pero tengo una duda sobre esta función, en la descripción de la función mencionas que xFOSC es la frecuencia del cristal externo, ¿no debería de ser la frecuencia del núcleo interno del PIC despues de configurar los fuses? lo digo por que una cosa es el cristal externo que puede ir a 4MHz por ejemplo y luego activando los fuses de según que PIC lo podemos subir a 16MHz, por ejemplo el PIC18F4620 si le pones un cristal de 4MHZ lo puedes subir internamente a 16MHz