Similitud entre Atmega162 y Arduino

Voy a tomar un curso de sistemas integrados donde usaremos el Atmega162 y quiero comenzar a aprender las cosas antes de que comience el curso. Ahora mi pregunta es, considerando que hay muchos buenos recursos para Arduino y recursos relativamente escasos. para el Atmega162, y que el Arduino es mucho menos intimidante que el Atmega162, ¿sería beneficioso si solo aprendiera el Arduino y luego usara algo de ese conocimiento en el 162?, o ¿los dos microcontroladores tienen diferencias significativas que harían usando esta estrategia ineficiente? Además, ya tengo acceso a un Arduino Uno, pero probablemente no tendré acceso a un Atmega162 real hasta que comience el curso.

Si pretendes aprender a programar MCU profesionalmente te aconsejo que no te conformes con una placa con código de abstracción como arduino, y con un poco de estudio, notarás que hay mucho código de muestra en otras arquitecturas como: Z8, RS08, STM7, PSoC1 , etc pueden servirte para aprender a programar tu AVR8. Sin embargo, si usa un código de forma rápida, no podrá obtener utilidad al pasar de una arquitectura a otra.
Punto válido para ingenieros profesionales, pero si es un trampolín útil para usted (muchos de nosotros aprendemos de manera diferente), entonces hágalo.
Ciertamente, es posible omitir el IDE de Arduino y programar la placa Arduino directamente en Ada o C, si lo prefiere.
@Brian Drummond ¿Tiene algún recurso que mencione cómo ingresar a la programación de Ada en AVR?
Uso el proyecto AVR-Ada de Sourceforge, [ sourceforge.net/projects/avr-ada/] . Estoy trabajando en algo similar para el MSP430. Comenzar no es trivial; Actualmente, primero debe compilar el compilador (hay un script que debería hacerlo). La página Wiki del proyecto tiene algunos buenos ejemplos. Para una edición GPL de un lanzamiento comercial de Gnat, también hay [ libre.adacore.com/download/] donde puede seleccionar "avr-elf-windows" en el paso "Seleccione su plataforma".

Respuestas (3)

El Arduino Uno tiene un Atmel ATmega328 listo para usar, pero puede ser reemplazado por un 168 y un par más si la memoria no me falla. La moraleja de la historia es que todas las placas Arduino usan microcontroladores Atmel. La arquitectura de la línea AVR es casi idéntica de chip a chip, hasta el contenido del registro en algunos casos. Lo que hace que Arduino sea fácil para los aficionados y novatos es el software.

Vas a aprender a programar micros como un profesional de tu clase. En la industria, ese pseudocódigo de Arduino es inútil. No me molestaría con Arduino a menos que tenga algún proyecto de pasatiempo en el que necesite un micro y no quiera pensar mucho en eso.

He leído declaraciones similares hechas por profesionales. Supongo que es similar a admitir el uso de RealBasic en presencia de ingenieros de software establecidos. :-) Estoy feliz de salir de mi zona de confort y admitir una maravillosa ignorancia (y micros quemados), pero creo que, como RealBasic y otras plataformas de ruedas de entrenamiento, es un gran trampolín para quienes no tienen educación formal.
Añadido: Dirígete a eBay y cómprate un pequeño lote de chips ATMEGA328 a bajo precio (el envío desde China lleva un tiempo, pero no he visto mejores precios en ningún otro lugar). De esa manera, si quema el cerebro de su Arduino, puede actualizar el cargador de arranque en un nuevo chip y colocarlo en su tablero en unos minutos. Todavía no he quemado un chip, pero estoy seguro de que tarde o temprano lo haré.
@RTOSkit Tengamos en cuenta la perspectiva. No todos compartimos necesariamente los mismos objetivos. Para mis propósitos (ya que soy principalmente un ingeniero de software que descubrió que le encanta jugar con la electrónica), Arduino es el trampolín PERFECTO para comenzar un proyecto por primera vez. Hay perspectiva ("su plataforma es de nivel de entrada") y luego está elitismo ("está perdiendo el tiempo porque no está lo suficientemente cerca del metal básico"). Me ha impresionado lo amable que suele ser esta comunidad con los aficionados. Más de eso, por favor.
Entonces, ¿es posible programar el Atmega328 en el Uno sin usar el IDE de Arduino? Además de avrfreaks, ¿hay algún otro sitio que tenga recursos que puedan ayudarme?
Apenas estoy comenzando, pero creo que la GUI (torpe en OS X) solo llama a la línea de comandos (creo avrdude). Los archivos .ino que produce son texto sin formato. Estoy seguro de que podría editarlo con vim y ejecutar avrdude manualmente. Una vez que haya finalizado su firmware, puede actualizar el chip con ese código por sí solo, sin el cargador de arranque Arduino (para evitar el retraso en el inicio y el uso de memoria). Nuevamente, recién estoy comenzando con la plataforma, pero esto es lo que he leído de arduino.cc
Curiosamente, los chips ATMEGA cuestan el doble cuando se precargan con el cargador de arranque Arduino. No soy un tonto, así que compré algunos espacios en blanco (en caso de que dañe algo) y tengo el tutorial arduino.cc para convertir la placa en un programador temporal. Alternativamente, puede hacerlo con el programador de Amtel por ~$35.
@JoshuaNozzi Entiendo tu posición, pero creo que el usuario muestra su intención de aprender a programar MCU. Usa atajos para aprender algo bien, no es la forma correcta de empezar, no importa si algo es simple o complejo, y seguramente si alguien es bueno programando hardware, ya sea que use una placa arduino o una placa xmos. Siento que le aconsejen que no pierda el tiempo y centre su estudio en algo más reutilizable. PD. Creo que nadie de esta comunidad aquí ha respondido tan poco amable.
Excepto que así es exactamente como pasé de novato a ingeniero de software senior sin educación: me sumergí en un punto de entrada fácil y profundicé en las cosas de nivel inferior a medida que avanzaba. No veo nada de malo en aumentar su conocimiento con una plataforma de nivel de entrada bastante popular. Aprender algo nuevo nunca es una pérdida de tiempo, sin importar cuál sea tu objetivo final.
@JoshuaNozzi Creo que necesita ver qué sucede debajo del capó de su Arduino para comprender por qué los profesionales tienen esta opinión. El firmware de Arduino limita severamente el micro. Esas prácticas funciones como digital_read y cualquier otra que haya son exactamente eso, funciones. El usuario está limitado por el firmware. Trabajé con un grupo tratando de construir un robot y el tipo micro usó la placa con el 2560. No tuvimos nada más que problemas de tiempo y terminamos borrando el cargador de arranque y programándolo con nuestro propio software, y comenzó a funcionar casi al 100% de inmediato.
La razón por la que estoy en contra de Arduino como plataforma de aprendizaje es el simple hecho de que la ignorancia de temas cruciales como el enmascaramiento de bits y los registros de control es aceptable y casi recomendable. El usuario ni siquiera tiene que configurar los puertos y simplemente funciona. Estas son cosas que todo desarrollador de sistemas integrados debe aprender, ya sea que esté desarrollando AVR, PIC, ARM o cualquier tipo de DSP.
@MattYoung - ¿De qué estás hablando? Puede hacer enmascaramiento de bits, registros de control de giro, jugar con los periféricos integrados y más con un arduino.
Personalmente, he diseñado una serie de proyectos en el trabajo que usan varios MCU AVR, y todavía me gusta el arduino para pequeños proyectos de pasatiempos solo porque te permite ignorar muchas de las cosas desagradables que se necesitan para, por ejemplo, trabajar printf. en un nuevo tablero dentro del estudio Atmel.
Realmente, puede usar un arduino solo para el cargador de arranque y la facilidad de programación, y no tiene que usar ningún otro componente del sistema. Cosas como el DigitalReady DigitalWriteotras funciones son completamente opcionales .
Además, no hay "Arduino Firmware". Está el cargador de arranque Arduino, que es solo un cargador de arranque, y está la cadena de herramientas arduino, que ciertamente hace algunas cosas desagradables, pero no es necesario usar la cadena de herramientas arduino con el cargador de arranque arduino. AVRdude admite la escritura en arduinos, por lo que podría usar gcc simple y simple con un arduino de esa manera.
@MattYoung: si alguien tuvo problemas de tiempo con un Arduino Mega, significa que probablemente se olvidó de desactivar la interrupción que la cadena de herramientas de Arduino habilita de manera predeterminada. Puede desactivar fácilmente todas las cosas predeterminadas de arduino .
@FakeName: eso no es del todo exacto. Arduino no es realmente una cadena de herramientas (utiliza gcc y avrdude), sino que es una colección de bibliotecas que normalmente se convierten en componentes principales del firmware final, un cargador de arranque, algunos scripts para controlar la cadena de herramientas, un IDE y un montón de documentación. ejemplos/apoyo.
@ChrisStratton - Punto tomado. Tiendo a pensar en todo el software en el extremo de la computadora que toma archivos C y genera archivos/programas hexadecimales en un dispositivo como la "cadena de herramientas".

Si desea hacer algo que se aproxime más a la clase, puede instalar el software Arduino para probar la placa, luego aprenda a usar avr-gcc y avrdude para compilar y cargar proyectos completos en los que escribe todo el código, en lugar de que usar las funciones de la biblioteca Arduino.

La diferencia entre los dos chips tendrá una relevancia bastante limitada, aunque podría ser educativo comparar las hojas de datos y hacer una lista de las diferencias que encuentre.

Sin embargo, existe una probabilidad bastante alta de que su curso no use avr-gcc, sino algún otro compilador y probablemente alguna otra herramienta de programación. Además, probablemente habrá un estilo de codificación diferente y tal vez algunas macros para registros de chips diferentes a lo que establezca en su ganancia. Por lo tanto, es probable que aún termine con alguna transición, pero de un tipo que es útil contemplar, ya que aprender a traducir entre esos problemas ambientales le dará más flexibilidad en el futuro. Por ejemplo, es posible que desee aprovechar el código de nota de la aplicación que asume un compilador diferente al que termina usando en un proyecto. O podría estar trabajando en un proyecto durante algún tiempo, decidir que varias limitaciones de la cadena de herramientas que ha estado usando ya no son tolerables y desea mover el proyecto a otro diferente.

Una respuesta un poco tardía, pero puede ser de interés para alguien más que se encuentre con esto. Si bien es cierto que actualmente, Arduino es un lenguaje de alto nivel para ser realmente útil profesionalmente, aunque ciertamente hay productos de compañías más pequeñas que llegan al mercado hoy en día con algunas partes basadas en Arduino. Sin embargo, creo que esto puede cambiar:

Me siento más cómodo con la ingeniería de software que con el diseño integrado y de electrónica, con unos 20 años de experiencia profesional en el primero. Empecé a aprender a programar en mi C64, pero pronto entré en C y más tarde también en C++, ya que en ese entonces los lenguajes estándar en los que realmente tenías que dominar. 1995 Java apareció y yo era uno de los primeros en adaptar. Sin embargo, la mayoría de las personas eran bastante escépticas, un lenguaje administrado con Garbage Collection y ese alto nivel de abstracción seguramente no era más que una herramienta de enseñanza o algo en lo que podías construir una interfaz de usuario simple o algo así, para aplicaciones reales todavía necesitabas C++. Bueno, hoy en día, Java y C# (que se encuentra en gran medida en el mismo nivel de abstracción) son fácilmente los lenguajes más dominantes, especialmente cuando se trata de aplicaciones empresariales. Sí, todavía hay lugares donde se usa C++,

¿Por qué es esto? Bueno, los avances tecnológicos suceden rápidamente en este campo y se pueden usar básicamente para cuatro cosas: abaratar el hardware, hacerlo más pequeño, hacerlo más rápido o permitirle realizar tareas antes que no son posibles. En las computadoras, tanto las PC como los servidores, el tamaño más pequeño no es realmente un problema, el factor limitante para hacer una computadora portátil más pequeña son las baterías y el hecho de que no se puede tener una pantalla pequeña. Nuevas tareas, bueno, en realidad no hay demanda para eso a menos que sea algo espectacular. Así que el hardware se volvió más rápido y más barato. Al mismo tiempo, la demanda de programadores aumenta constantemente, lo que significa que se vuelven cada vez más caros, lo que lleva al hecho simple en el desarrollo de software de computadora hoy en día: las horas del programador son más caras que los ciclos de RAM y CPU, por lo tanto, ¿quieres?

Ahora, para las cosas integradas, las cosas son ligeramente, pero no muy diferentes, principalmente en dos factores: el tamaño seguía siendo un problema, y ​​todavía lo es en algunas aplicaciones, y los sistemas integrados a menudo son parte de los dispositivos y, por lo tanto, no se pueden actualizar o cambiar fácilmente, no se pueden aprovechar. de otras unidades en una red para descargar trabajo, etc. Lo que son cuando se construyen es lo que permanecerán y tienen que ser autosuficientes. Esta última parte está cambiando a medida que las diferentes pilas de comunicación están más disponibles para los sistemas integrados. Sin embargo, estas diferencias no son fundamentales, solo hacen que el mismo desarrollo sea más tardío y no tan rápido como en los programas informáticos. Estamos llegando a un punto en el que puede obtener la potencia informática de una PC para juegos promedio hace 10 años por 8 dólares al tamaño de una tarjeta de crédito, incluidos los periféricos de conexión e incluso Wi-Fi; es probable que dentro de poco tiempo lleguemos a un punto en el que suceda lo mismo para el software integrado que para el software informático: las horas de ingeniería son más caras que el hardware, lo que significa que generará más y más sentido utilizar niveles más altos de abstracción. Dada la opción de hacer un chip Atmel dos veces más rápido o dos veces más pequeño al mismo costo hoy, en la mayoría de los casos tendría más sentido hacerlo más rápido y gastar ese rendimiento en facilitar la vida del programador.

No, no estoy diciendo que Arduino sea el futuro del desarrollo integrado, creo que tiene numerosos defectos que lo descalificarán de eso. Sin embargo, creo que muy pronto se manifestará un lenguaje de más alto nivel y será un gran cambio para la industria.

Salud