Es una pregunta amplia. No creo que la pregunta anterior tuviera por objeto implicar que un Arduino no es una plataforma de desarrollo "real" o "profesional". Tiene su nicho. Cada microcontrolador tiene su nicho: debe elegir uno que lo ayude a hacer lo que está tratando de hacer. ¿Eso suena vago? Sí. Porque todo depende de lo que estés tratando de hacer.
Entonces hagamos una copia de seguridad: ¿qué es el Arduino en comparación con todo lo demás? Lo dividiré en hardware y software.
En cuanto al hardware, Arduino es una placa de desarrollo . Hay muchas placas de desarrollo por ahí, toneladas de ellas. Cada uno de ellos está construido alrededor de uno o varios microcontroladores. En cierta medida, están pensados para ser genéricos en su función: debe ser capaz de usarlos para desarrollar para casi cualquier aplicación. Pero también pueden tener un enfoque (puede que veas tableros de desarrollo con controladores HDMI y Ethernet) que obviamente están destinados a ayudar a las personas a desarrollar aplicaciones para redes o aplicaciones visuales. El Arduino es una placa de desarrollo sólida, pero tiene muy pocas características claras. El enfoque detrás de Arduino es un arenero abierto, por eso hay tantos escudos disponibles.
Por lo tanto, las placas de desarrollo se construyen alrededor de microcontroladores. El Arduino está construido alrededor del AVR ATMega328. Este es un microcontrolador específico hecho por Atmel. Es uno de los microcontroladores de 8 bits de Atmel. Está dirigido a aplicaciones integradas de propósito general que no requieren una gran cantidad de timbres o silbidos o mucha E / S (está bastante limitado en el número de pines que tiene). Para poner esto en perspectiva, Atmel también ofrece ofertas basadas en ARM de 32 bits: este es un tipo de microcontrolador que puede encontrar en un enrutador que ejecuta Linux. Por supuesto, hay muchos fabricantes de microcontroladores diferentes, todos ellos ofrecen microcontroladores diferentes enfocados en ciertas aplicaciones: automotriz, redes, DSP, etc.
Ahora está la pregunta del software: ¿qué significa escribir un programa AVR? Bueno, todo lo que escribes para un Arduino es un programa AVR, es difícil decirlo. Arduino viene con un marco que básicamente le oculta gran parte de la complejidad de la programación del microcontrolador. Por lo general, escribir cualquier código de microcontrolador (incluidos los programas AVR) implica jugar mucho con bits en los registros, realizar un seguimiento de la sincronización, etc. Es de muy bajo nivel y hay mucho de qué realizar un seguimiento.
En un sentido más amplio, los microcontroladores suelen estar programados en una variante de C. Digo una variante porque cada microcontrolador necesita un compilador de C especial con sus propias reglas. Por lo tanto, cada chip diferente tiene su propia variante de C. No hay diferencias terribles entre cada uno de ellos, pero puedes saltarte las diferencias si no tienes cuidado.
¿Cómo se programan? Hay muchas maneras, pero en general hoy en día los chips tienden a programarse por sí mismos. No es una broma: la mayoría de los programadores simplemente implementan un tipo especial de comunicación en serie que les permite ser programados por uno de varios dispositivos. Esto se llama programación en el sistema. Usted programa microcontroladores con una variedad de dispositivos: pueden ser dongles USB de $ 5, dispositivos de puerto paralelo o adaptadores JTAG de $ 1200. Normalmente necesita un programador específico para una línea específica de chips. Es decir, puede comprar un JTAG que programará la mayoría de los chips ARM, y puede encontrar programadores que programarán la mayoría de los chips AVR, si no todos.
Entonces, programar su propio microcontrolador básicamente significa que usted 1) Seleccione un microcontrolador que quiera usar, 2) encuentre una buena placa de desarrollo para él, 3) encuentre algún tipo de programador, ya sea un programador del sistema, o JTAG o algo así de lo contrario, 4) descubra qué compilador necesita, qué editor de código debe usar, etc. (Arduino, por supuesto, proporciona todo esto, por lo que es fácil). Luego, lees la hoja de datos del chip y averiguas por dónde empezar.