TODOPIC
Otros Microcontroladores / Dispositivos programables => Microcontroladores 8 bits => Mensaje iniciado por: jmvc_sc 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.
#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
-
Buen día ya pude solucionar el problema, solo tenia que declarar antes la frecuencia y luego la libreria delay.
#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.
-
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