Paquete de programación Linux/Mac AVR?

He estado programando y usando Arduinos desde hace bastante tiempo. Sin embargo, estoy listo para pasar a usar chips AVR directos sin el cargador de arranque arduino. Mi pregunta es ¿cuáles son los recursos para hacer esto?

Quiero usar linux / mac, así que winavr está fuera de escena al igual que avrstudio. Si no existe tal cosa como lo que busco, me conformaré con una máquina virtual de Windows. Pero hasta que lo sepa con certeza. Lo que quiero es algún tipo de IDE que use avr-gcc.

Como beneficio adicional a esta pregunta, ¿alguien tiene buenos recursos para aprender C para avr? Específicamente, ¿cómo configurar Makefiles, etc. para los diferentes chips?

Respuestas (10)

Estoy de acuerdo con zklapow pero revisa también la sección de proyectos en AVR Freaks. Así es como aprendí en el día antes de arduinos. Además, es casi seguro que tendrá que leer la hoja de datos de su chip para hacer algo útil. No hay funciones agradables que, por ejemplo, lean un pin analógico porque hay tantos parámetros que el entorno arduino te oculta. Dejame darte un ejemplo:

 int ledPin =  13;    // LED connected to digital pin 13
 // The setup() method runs once, when the sketch starts
 void setup()   {                
   // initialize the digital pin as an output:
   pinMode(ledPin, OUTPUT);     
 }
 // the loop() method runs over and over again,
 // as long as the Arduino has power
 void loop()                     
 {
   digitalWrite(ledPin, HIGH);   // set the LED on
   delay(1000);                  // wait for a second
   digitalWrite(ledPin, LOW);    // set the LED off
   delay(1000);                  // wait for a second
 }

es más o menos similar a la siguiente C (no probado):

int main(void) {
    // I just randomly picked pin 6 on PORTB, this may not be the same on an arduino
    DDRB = (1<<6); // set pin to output in data direction register
    int i; // have to do this outside the for loop because of C standard

    while(1) {
        PORTB |= (1<<6); // send pin 6 high and leave other pins in their current state
        for (i=0; i<10000; i++); // delay

        PORTB &= ~(1<<6); // send pin 6 low
        for (i=0; i<10000; i++); // delay
    }
}

Claro, hay funciones de retardo en algunas bibliotecas y puede haber funciones de salida en otras, pero acostúmbrate a escribir código como este. La única forma en que puede saber qué significan todas estas cosas de PORTB y DDRB es leer la hoja de datos. Lamento hablar mucho sobre esto, pero no hay suficientes personas que se den cuenta de que la hoja de datos es una mina de oro para obtener información.

Haría una corrección a su código, cuando configura DDRB debe usar DDRB |=(1<<6) para no afectar otros bits.
También hay una función delay_ms() disponible. Pero, en general, en programas más complejos, por lo general, no desea tener retrasos en la codificación de su aplicación.

También debe consultar Eclipse para C/C++ y el complemento AVR-Eclipse. Funciona perfectamente para mí, especialmente con crosspack. Lo uso desde hace un año y me gusta mucho.

Obtenga el complemento avr-eclipse, se integra muy bien con avrdude y avr-gcc para que termine con un buen IDE además de un buen compilador gratuito.
la configuración del microcontrolador Eclipse también será una buena puerta de entrada para usar microcontroladores ARM. Una alternativa mucho mejor que obtener un IDE solo para AVR.

También uso CrossPack de ObDev . Es un gran conjunto de todas las herramientas necesarias para escribir código AVR-GCC C. Son las mismas herramientas presentes en una instalación estándar de Arduino, por lo que a veces he usado las entrañas del sistema de compilación de Arduino para escribir código AVR-GCC sin formato.

Normalmente, cuando escribo código C, el "IDE" que uso es un editor de texto, comandos de línea de comandos y Makefiles. Soy más eficiente de esa manera. Tengo una ventana abierta que es el editor de texto (emacs), otra ventana que es de compilación y una tercera o cuarta que está haciendo un monitor serial o similar. Pero todo eso se puede hacer en una sola ventana de línea de comandos, en cuyo caso los comandos se parecen a:

% emacs foo.c [editar archivo]
% hacer [código de compilación]
% hacer flash [subir al chip]
% pantalla /dev/tty.usbserial 9600 [hablar con el chip]
... y luego repita según sea necesario...

Además, es posible que desee consultar SmileyMicros.com . Escribió un libro muy bueno sobre la introducción a la programación AVR GCC basada en la placa AVR Butterfly, antes de Arduino, y desde entonces ha estado actualizando sus ejemplos para incorporar Arduino. Es una buena comparación ver cómo se realiza la programación AVR C en un chip más complejo que el de Arduino.

Si instala crosspack , puede usar Xcode de Apple para Mac, que es un gran IDE. Si desea aprender c para AVR, consulte el foro de tutoriales en AVR Freaks . También en cuanto a Linux, echa un vistazo a esta pregunta .

Como has estado usando Arduino, todo lo que necesitas ya está instalado. Compilo bocetos de Arduino desde la línea de comandos usando un Makefile. También compilo código sin el gestor de arranque de Arduino.

El Makefile que utilizo para compilar el cargador de arranque Arduino para mis placas está en http://wiblocks.luciani.org/docs/app-notes/bootloader.html Puede modificarlo para compilar su programa en lugar del archivo ATmegaBOOT_xx8.c.

Mi Makefile está modificado del archivo que encontré en este sitio: http://mjo.tc/atelier/2009/02/arduino-cli.html

Mientras respondía esta misma pregunta (justo ayer;) en Twitter, encontré un archivo MAKE en dorbotpdx. Ver http://dorkbotpdx.org/blog/ax/arduino_0017_makefile

También hay un script de shell bien documentado en http://arkku.com/misc/arduino_make.sh

Probablemente usaría un Makefile en lugar de un script de shell. El compañero que hizo este guión ha hecho un excelente trabajo comentando el flujo. Es trabajo una mirada solo para entender el flujo.

No pude hacer que arduino_make.sh funcionara con OSX 10.6 porque 'awk -v' no funciona como se esperaba en OSX y lo usa en todas partes.
Su pregunta no era sobre Arduino, sino sobre el uso de avr-gcc y avrdude en Linux.

Encontré CodeLite (www.codelite.org) IDE agradable y con todas las funciones; aún así, para programar microchips AVR necesitas crear tu propio Makefile.

Puede probar BeRTOS Wizard , que creará un proyecto BeRTOS y Makefiles relacionados, que luego puede usar con CodeLite. Para mostrar su objetivo, simplemente use "hacer flash" y listo. Trabajamos en Linux a diario, si tiene más preguntas, publíquelas en la lista de correo. Descargo de responsabilidad: soy un desarrollador de BeRTOS.

Saludos, Luca

Dejando de lado el descargo de responsabilidad, CodeLite es una gran herramienta. No tiene que usar 'hacer flash' si configura CodeLite para que funcione con su sistema de compilación. Code::Blocks tiene un potencial similar.

Si tiene Macports instalado, simplemente puede ejecutar:

$ sudo port install avr-binutils avr-gcc avr-libc avrdude 

y usted debe estar listo para ir.

Si le pide a su sistema de paquetes que instale avr-libc, eso debería darle todo lo que necesita. Uso emacs como mi IDE, porque, bueno, vea el nombre de usuario.

Si desea un archivo MAKE de plantilla, eche un vistazo a uno de mis proyectos en github, por ejemplo, https://github.com/unixbigot/pir-lite

En ese repositorio, avr-tmpl.mk es una biblioteca de archivos MAKE lista para usar (no escrita por mí). Lo incluyes desde tu makefile principal y solo tienes que definir qué chip tienes, la velocidad del reloj y tus archivos. Tengo una copia y la incluyo en todos los archivos MAKE de mi proyecto.

"hacer programa" llamará avrdude para descargar el código. El archivo MAKE también imprime el tamaño del código al final, para que sepa cuánto espacio le queda.

Programé mi 'viejo' Duemanilove' como ISP con la ayuda de este artículo: http://arduino.cc/en/Tutorial/ArduinoISP Funciona igual de bien con el de ATtiny: http://hlt.media.mit.edu/? p=1229

Eso sí, al usar Arduino IDE 0022, debe actualizar el boceto ArduinoISP a una versión más reciente, debido a la prevención de spam, moví ese enlace a los comentarios a continuación.

Hice la programación en un editor de texto (vi) y compilé usando avr-gcc como se describe en el artículo de mit.edu que vinculé.

La prevención de spam me hizo mencionar el enlace al reciente ArduinoISP de los comentarios: code.google.com/p/mega-isp/downloads/…

Hola amigo, todavía puedes usar avrstudio en ubuntu. Pensando como puedes hacer eso.....

La respuesta es simplemente instalar la aplicación Wine y ejecutar esos softwares de Windows con Wine.

Avr studio, proteus... incluso se pueden ejecutar juegos de windows en ubuntu con wine.

Ni siquiera tienes que meterte con los makefiles, bla, bla (simplemente instálalo con Wine y comienza).

Hay muchos sitios para comenzar con avr MCU como extremeelectronics, tutoriales de AVR, etc. Simplemente realice una búsqueda en Google.

Diré en detalle cómo instalar avrstudio 4 en Wine, ya que avrstudio 5 y 6 no funcionan con él, pero puede usar Virtual Box en Linux para ejecutar incluso avr Stud 5 y 6 con Windows en Virtual Box.

  1. Abra el centro de software de Ubuntu y escriba vino en la búsqueda y luego instálelo.

  2. Luego obtenga la configuración para avrstudio4 y también necesita instalar win avr

    prueba estos enlaces para

una. avr studio 4 http://mycomsats.com/blogs/download-atmel-avr-studio-4-free/

b. ganar avr http://sourceforge.net/projects/winavr/files/WinAVR/20100110/WinAVR-20100110-install.exe/download?use_mirror=kaz&r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fwinavr%2Ffiles% 2F&use_mirror=kaz

3. Abra la carpeta donde se encuentra la configuración de AS (avr studio 4) y luego haga clic derecho y luego ábrala con "windows wine program loader" o "a wine application".

4. Luego, debe hacer clic en los siguientes botones como lo haría en Windows.

5. Luego, vuelva a instalar win avr de manera similar con wine (vaya a la configuración de win avr ....).

6.Descargue el indicador de menú clásico del centro de software de ubuntu. Lo sabrás en solo cinco minutos.

7.Desde el menú clásico -> vino -> Programas -> herramientas avr

el sexto paso es un paso adicional para que no tenga que meterse con la opción ejecutable avrstudio4 en la carpeta de vinos.

Esta respuesta sería más útil si contuviera detalles/enlaces sobre cómo ejecutarla en Wine. El último Atmel Studio se basa en Microsoft Visual Studio, que creo que no funciona bien con Wine, pero podría estar equivocado.
He editado la respuesta @PeterJ