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