En realidad, avr-gcc también está bajo las coberturas de Arduino ... solo tienes que usar la sintaxis de C ++ si estás usando sus bibliotecas o escribiendo las tuyas. De lo contrario, la única restricción es que está 'forzado' a usar el patrón equivalente a:
int main(int argc, char *argv[]){
setup();
for(;;){
loop();
}
return 0;
}
que es un patrón que se adapta a una gran sección transversal (posiblemente la totalidad) del diseño integrado. Solo implementas setup () y loop ().
Tampoco es una elección entre Arduino y un microcontrolador. En principio, podría sacar el ATMega328P del contexto de la placa Arduino, programado con un boceto, y trasplantarlo a una solución más integrada.
Supongo que no estoy de acuerdo con el sentimiento de algunas de las otras respuestas que sugieren que Arduino es solo una plataforma "de juguete". En mi opinión es viable para un desarrollo más "serio". Simplemente reduce la barrera de entrada al mundo incrustado. La capacidad de programarlo sin un programador separado (por ejemplo, AVRISP mkII, STK500, etc.) es algo importante a este respecto.
Realmente no creo que exija un compromiso significativo de los usuarios más avanzados.