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.
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.
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.ccprintf
. en un nuevo tablero dentro del estudio Atmel.DigitalRead
y DigitalWrite
otras funciones son completamente opcionales .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
RTOSkit
Josué Nozzi
usuario_1818839
AndrejaKo
usuario_1818839