Velocidad de reloj lenta con el microcontrolador AVR Atmega328P en el tablero de pruebas

0

Tengo una pequeña placa de pruebas con un microcontrolador Atmega328p 28 pin con un cristal de 16 MHz y dos capacitores de 20 pF (similar a esta demostración: enlace ).

La diferencia con esa demostración es que estoy usando un programador ISCP de USBasp para programar el chip en lugar de un Arduino, y pude programar con éxito el infame programa "blink" en mi MCU y no podría estar más contento.

Sin embargo, en lugar de demorar durante 1000 ms (1 segundo), tuve que cambiar el parámetro de mi función de espera a "20 ms" para lograr un tiempo de encendido / apagado de 1 segundo real.

¿Hay algo que estoy perdiendo aquí? ¿Necesito agregar algo a mi circuito o tal vez cambiar los valores del condensador para fijar la velocidad del reloj? Gracias.

    
pregunta C. Dunn

1 respuesta

2

Las funciones de retardo calculan los ciclos de reloj mirando la macro F_CPU . Debe establecer el #define F_CPU 16000000UL para que coincida con la velocidad real de la CPU.

La velocidad real de la CPU se establece al programar los fusibles correctamente. Creo que olvidaste ese paso.

    
respondido por el Janka

Lea otras preguntas en las etiquetas