2011-05-09 10 views
24

Tengo experiencia en la programación de sistemas integrados (TI MSP430, Atmel ATxmega). ¿Cómo es la programación de un Arduino diferente a esos? ¿Qué conocimiento sobre C puedo tomar para programar el Arduino?¿Cómo es la programación de un Arduino diferente al estándar C?

+0

Se ha eliminado la etiqueta C++, ya que es pura C. – Xeo

+3

Lo siento, estaba confundido porque aquí en este ejemplo http://www.arduino.cc/en/Hacking/LibraryTutorial utilizan C++ – Nathan

+1

No entiendo por qué la etiqueta C++ ha sido eliminada. Las bibliotecas de Arduino son generalmente clases de C++. (Doh! Dos años de edad comentarios :-P) –

Respuesta

34

Si bien no conozco el ATXMega, los chips AVR de 8 bits como el ATmega328 utilizado en los nuevos Arduinos utilizan el compilador AVR-GCC. Esto permite compilar C e incluso C++ en un chip AVR. Un nivel por encima del AVR-GCC es el AVR Libc, una biblioteca C que hace que la programación para el AVR sea una tarea de nivel superior (ya no tiene que referirse a los registros directamente, etc.).

El Arduino IDE utiliza AVR-GCC y AVR libc library en el back-end. Además, el Arduino IDE hace other libraries available, como una buena interfaz serial.

Finalmente, el Arduino viene con un gestor de arranque grabado en el chip AVR. El gestor de arranque simplemente hace posible programar el AVR usando una conexión en serie (desde USB) en lugar de un Programador In-Sytem o una Junta de Desarrollo.

Suficiente historia de fondo, para responder a su pregunta: El Arduino se puede programar en C e incluso en C++. Las bibliotecas disponibles están escritas en C y todo se compilará utilizando AVR-GCC. El Arduino IDE ni siquiera es necesario.

Editar

Parece que hay una buena cantidad de interés en este tema. Escribí una publicación de blog para tratar de dar more in-depth details on the AVR, Arduino, and AVR-GCC.

+1

están escritas en C y MAYORMENTE en C++ –

+0

El repositorio del proyecto Eclipse ha sido eliminado. – oldmud0

+0

@ oldmud0 gracias, debo haber eliminado el repositorio de GitHub en algún momento. Eliminé la referencia al proyecto Eclipse de la respuesta. – baalexander

4

Arduino es C, excepto que esta se inserta en cada programa:

void main() { 
    setup(); 
    for(;;) { 
    loop(); 
    } 
} 
+7

'void' main?;-) –

+3

Arduino es más que C, es [(un subconjunto de) C++] (http://en.wikipedia.org/wiki/Processing_%28programming_language%29#Wiring.2C_Arduino.2C_and_Fritzing). –

+2

También existen algunas otras excepciones cuando se usa el Arduino IDE. Por ejemplo, hay problemas al utilizar estructuras en llamadas a funciones o devoluciones a menos que defina la estructura en un archivo .h separado. Como se dice en http://playground.arduino.cc/Code/Struct: la solución alternativa Arduino/hack es tener todas las funciones que requieren estructuras de datos personalizadas para colocarse en un archivo .h adicional. Simplemente cree una nueva pestaña en el IDE y asígnele un nombre.h, luego #include "name.h" – ViennaMike

4

Puede tomar más o menos todos sus conocimientos con C y sistemas embebidos y que será más que bien. No es difícil de usar en absoluto. Marque la página Arduino Reference y estará escribiendo cosas en poco tiempo.

4

Arduino tiene forma de C y es extremadamente fácil de recoger. Se han abstraído de hacer cosas como leer y escribir en registros periféricos para realizar tareas básicas.

Una ojeada a un código de ejemplo y a la referencia de Arduino, estará listo y funcionando en muy poco tiempo si realmente ha hecho C real en cualquier otra plataforma.

9

Puede tomar su conocimiento de C existente cuando usa Arduino.

El propósito era permitir a los artistas/no programadores comenzar fácilmente con la programación de hardware y retoques, por lo que el 'idioma Arduino' es simplemente un envoltorio para simplificar el desarrollo.

Debería ser mucho más fácil para usted, como programador de C usar Arduino. El documentation no es muy largo, el wiki es bueno y las personas en el forum son entusiastas y serviciales.

Cuestiones relacionadas