AVR-GCC: Puertos no declarados al compilar

2

Mi configuración

Estoy ejecutando Ubuntu 12.10, y quiero poder usar gcc y avrdude para compilar y programar mi ATmega328.

Seguí este tutorial de Ladyada: Tutorial de Ladyada AVR

Todo instalado perfectamente, sin errores ni advertencias. No he instalado avrdude todavía, pero eso no viene al caso.

Yo uso el comando:

  

avr-gcc -O0 -c blink_1MHz.c -o main.o

Sin embargo, recibo una advertencia y muchos errores:

warning "device type not defined"

error: 'PORTC' undeclared (first use in this function)

El error anterior se repite para cada puerto y cada registro de dirección de datos utilizado en el código.

blink_1MHz.c es solo un código simple que estoy usando para probar mi configuración. Ha funcionado en mi configuración de Windows a través de AVR Studio 6.

He intentado con Google, pero la única sugerencia real que obtuve fue importar las bibliotecas:

#include <avr/io.h>
#include <stdlib.h>
#include <stdint.h>

Lamentablemente, todavía nada. He estado jugando con esto por un tiempo y simplemente estoy perplejo. Vi sugerencias de que avr-libc no está instalado, pero he instalado avr-libc. Pensaría que si no lo tuviera instalado, vería quejas sobre las bibliotecas que no existen.

Pregunta

¿Podría un individuo iluminado sugerir cuál podría ser la causa de estos errores? Gracias.

EDIT

Amoch señaló que necesitaba revisar avr / io.h; allí verá que necesita definir el procesador con el indicador -mmcu. En mi caso, tengo un ATmega328, por lo que mi comando parecía:

  

avr-gcc -O0 -c blink_1MHz.c -mmcu = atmega328 -o main.o

    
pregunta Nick Williams

1 respuesta

4

No estoy familiarizado con los AVR, pero el compilador le está diciendo que no puede encontrar dónde se define "PORTC", etc. Normalmente, estas definiciones se incluyen a través de un archivo de encabezado, y de su publicación sugeriría que es probable que avr / io.h. Deberá echar un vistazo a este archivo y determinar que es el origen de estas definiciones faltantes. Además, el primer error que se encuentra indica que "el tipo de dispositivo no está definido". Esto significa que este archivo de encabezado requiere una # definición para informarle qué código incluir para el procesador que está utilizando. Normalmente esto se proporcionaría al compilador a través de una opción -D.

Al ver que tienes esto funcionando en Windows en AVR studio, te sugiero que profundices en la configuración del compilador dentro de la GUI o examines la salida de la consola y descubras exactamente qué se pasa al compilador en Windows para que puedas copia las configuraciones en tu compilación personalizada bajo linux.

    
respondido por el Amoch

Lea otras preguntas en las etiquetas