Programando otro atmega8 ejecutándose en un oscilador RC interno de 1MHZ usando el IDE de Arduino

4

Quiero escribir código para otro atmega8 que se ejecuta en un oscilador RC interno de 1MHz utilizando el IDE de Arduino y sus bibliotecas. Tengo un programador ISP para grabar el código. ¿Cuáles son las cosas que me deberían importar? ¿Cómo puedo compilar el código para 1MHz en lugar de 16MHz?

    
pregunta 0xakhil

2 respuestas

1

Necesitarías agregar una nueva configuración de hardware. Aquí se explica el procedimiento para un ATMega328: enlace pero necesitaría ajustar la configuración de hardware de ejemplo o quizás encuentre una que funcione.

    
respondido por el SetKent
0

Depende específicamente de qué compilador / biblioteca está utilizando para escribir el código AVR, pero en general, siempre que compile el código con las macros preprocesadoras adecuadas #define 'd para la velocidad de la CPU, debería bueno para ir.

Por ejemplo, en la documentación de avr-libc , la funciones de retardo y Las velocidades en baudios de UART dependen de la definición de la macro F_CPU . La forma correcta de establecer la velocidad de la CPU en tal caso es:

#define F_CPU 1000000UL     // 1 MHz, 16MHz is 16000000UL
#include <util/delay.h>     // Delay functions library, delay values based on F_CPU.
#include <util/setbaud.h>   // Automatically sets UART baud rate registers based on F_CPU.

También he notado el uso de #define FOSC para configurar la velocidad de la CPU en algunas arquitecturas / bibliotecas (de la misma manera que anteriormente, por lo que también podría seguir con #define FOSC F_CPU ). Por este motivo, tenga en cuenta que la macro en particular que necesita definir / redefinir puede diferir.

Si está utilizando un entorno de desarrollo integrado, la configuración de la frecuencia de reloj en la configuración de su proyecto puede definir automáticamente las variables anteriores durante el tiempo de compilación. En ese caso, no es necesario realizar ninguna configuración al código, a menos que su código esté utilizando la macro del preprocesador incorrecta (o el valor codificado) para la frecuencia del procesador. Para estar seguro, verificaré qué macro está configurando el IDE y me aseguraré de que su código use los valores correctos.

    
respondido por el Breakthrough

Lea otras preguntas en las etiquetas