Autor Tema: problema util/delay.h  (Leído 5069 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado jmvc_sc

  • PIC10
  • *
  • Mensajes: 12
problema util/delay.h
« en: 18 de Marzo de 2013, 17:59:04 »
Buen día, al utilizar la librería include<util/delay.h> a #define F_CPU 16000000 llamo a la funcion _delay_ms(500) para un retardo de 500ms pero resulta que no me hace un retardo de 500ms sino de mucho menos que eso, estuve buscando por el foro y dicen que puedo hacer un maximo de 262ms con F_CPU 1000000, mi pregunta es al utilizar una frecuencia de 16MHZ tendria que modificar la libreria delay, y si es asi donde tendria que hacer el cambio, vi una formula que dice max_ms=262ms/F_CPU entonces podria hacer un maximo 16ms, entonces hago lo siguiente _delay_ms(10) y hago un bucle para que lo haga 50 veces y tampoco me cuenta los 500 ms.
Citar
#include <util/delay.h>
#define F_CPU 16000000      // cristal de 16MHZ

void delay_ms(unsigned int t)

int main(void)
{
   DDRB=0XFF;   // configuro puertoB como salidas
    while(1)
    {
      PORTB=0;      //pongo a cero el puertoB
      _delay_ms(500);// retardo de 500ms
      PORTB=0XFF;      //pongo a uno el puertoB
      _delay_ms(500);   //retardo de 500ms
    }
}
//la funcion _delay_ms(500) no me cuenta los 500ms sino mucho menos
//tendra que ver que no utilizo cristal de 1Mhz que para eso esta diseñado libreria delay.h

Muchas gracias
« Última modificación: 19 de Marzo de 2013, 01:54:55 por jmvc_sc »

Desconectado jmvc_sc

  • PIC10
  • *
  • Mensajes: 12
Re: problema util/delay.h
« Respuesta #1 en: 27 de Marzo de 2013, 21:10:25 »
Buen día ya pude solucionar el problema, solo tenia que declarar antes la frecuencia y luego la libreria delay.
Citar
#define F_CPU 16000000      // cristal de 16MHZ
#include <util/delay.h>


void delay_ms(unsigned int t)

int main(void)
{
   DDRB=0XFF;   // configuro puertoB como salidas
    while(1)
    {
      PORTB=0;      //pongo a cero el puertoB
      _delay_ms(500);// retardo de 500ms
      PORTB=0XFF;      //pongo a uno el puertoB
      _delay_ms(500);   //retardo de 500ms
    }
}

Espero les sirva.

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: problema util/delay.h
« Respuesta #2 en: 28 de Marzo de 2013, 01:33:51 »
Pues me alegro muchos que lo halla solucionado, soy algo novato en programacion en C, y lo primero que aprendi es Selecionar el Cristal con la frecuencia que va a trabajar, segun he leido en algun Tutorial.
a ver si presenta por aqui mas tus avance..

Saludos