Pasar a ARM desde AVR de 8 bits: ¿cómo dar el primer paso?

He escrito código para AVR durante varios años y parece que mis necesidades exigen un procesador más potente. Dado que Atmel Studio es el IDE que ya estoy usando y mi depurador también funciona con MCU ARM, elegir un dispositivo Atmel parecía una obviedad. Los problemas comenzaron cuando traté de comenzar y escribir código. Los AVR tienen una cantidad interminable de tutoriales en foros como avrfreaks.net, pero los MCU ARM de Atmel no. Para empeorar las cosas, Atmel ofrece, casi exclusivamente, código que está escrito con su marco de software ASF, lo que significa que si quiero usarlo, tengo que adoptar un enfoque de nivel bastante alto que no me gusta en la codificación, ya que soy no del todo consciente de lo que sucede debajo del capó.

Mi pregunta es: si alguien pasó por un camino similar, ¿cuál fue el lugar correcto para comenzar y aprender a usar estas MCU M3 sin ASF?

Cuando usaba un Atmel o PIC, nunca usaba las bibliotecas de funciones proporcionadas por el proveedor. Sin embargo, con un ARM, la mayoría de las personas usan las bibliotecas. No sé acerca de ASF, pero si es compatible con CMSIS, entonces el código se transfiere mucho más fácilmente a otros controladores ARM. Además, otros desarrolladores de ARM reconocerán el estilo de codificación... Empecé a usar el controlador de la serie STM32F y nunca miré hacia atrás. ST proporciona su "Biblioteca de periféricos estándar", que es compatible con CMSIS.
Gasta mucho más código instalando, habilitando y configurando periféricos y sus relojes, pero una vez que lo hace, son fáciles de usar.
@bitsmack Intenté aprender a usar Atmel ARM como mi primera plataforma de 32 bits y me sentí abrumado. Luego me topé con stm32 y en tu palabra nunca miré hacia atrás. Incluso las hojas de datos me parecen más fáciles de entender. No soy fanático de su IDE de banco de trabajo del sistema, pero me gusta Keil.

Respuestas (1)

Nadie lo obliga a usar una biblioteca periférica (ASF), es muy posible que codifique directamente alternando bits de forma muy similar a los AVR. El ASF probablemente incluye un archivo que contiene todas las definiciones de los registros para que pueda codificar manualmente si lo desea.

También descubrí que la biblioteca de periféricos (sin embargo, para STM32) no era fácil de usar cuando comencé, pero una vez que comprende cómo funciona, ya no necesita preocuparse por las idiosincrasias de bajo nivel de su dispositivo, por lo que su código es más portátil y más rápido de desarrollar. Debo admitir que prefiero codificar directamente con registros, pero hay una razón por la que ARM proporciona una especie de estándar (CMSIS) para bibliotecas periféricas y es fácil de usar: una vez que conoce un ARM, conoce la mayoría de ellos, porque la biblioteca periférica envuelve la mayoría de las diferencias detrás de una capa de abstracción. Es mejor que tome una curva de aprendizaje no tan pronunciada con la biblioteca de periféricos provista para su chip (hay toneladas de ejemplos en Internet que usan bibliotecas de periféricos) que usando la configuración de registro, porque terminará con muy pocos ejemplos en el Internet.

Comience con un proyecto pequeño y luego intente usar periféricos usando la biblioteca. Si realmente no quiere usarlo, entonces probablemente estará solo, pero aun así, puede buscar en el ASF para ver cómo implementaron las cosas y reinventar la rueda si lo desea. Tu llamada.

Nadie me está obligando a usar ASF, eso es cierto en el sentido de que nadie me pone una pistola en la cabeza, pero parece ser el material de lectura exclusivo que puedo obtener de Atmel. Entiendo las necesidades de simplificar el proceso de codificación debido a la mayor complejidad de los dispositivos, sin embargo, la falta de información sobre lo que sucede tiene sus inconvenientes. Por ejemplo, traté de usar el ADC, seguí la aplicación. note y al final no pasa nada (el código se compila/no se actualiza la variable). No sé por qué y sintiéndome impotente.
@ user34920 ¿activaste el reloj del adc? Mi error más común es no acordarme de cronometrar los periféricos.
@ScottSeidman: ¿usando sysclk_enable_peripheral_clock ()? No sé cómo encontrar la lista de parámetros. ¿También es necesario habilitar el ADC a través del PMC?
Sí. No conozco a su familia, pero se debe habilitar el reloj correcto en el autobús correcto. No sé cómo habilitar el adc en el pmc, pero según mi experiencia limitada con stm32, probablemente.
Comience con un ejemplo de trabajo y juegue con eso.
@ user34920 Creo que entendió bien mi punto: nadie lo está amenazando con usar ASF, pero tendrá dificultades para encontrar un ejemplo que no sea ASF. Depende de ti decidir si prefieres el dolor de tener que entender cómo usar el periférico directamente usando registros completamente solo o tener que usar el ASF y no entender el funcionamiento interno con la misma intuición. De cualquier manera, hay una curva de aprendizaje empinada. En tal situación, la mayoría de las personas consideran usar el método preferido en lugar de lo que les gustaría hacer...
@user34920 Yo estaba en el mismo barco que usted, incluso queriendo usar solo Atmel Smart MCus, pero ahora casi siempre uso Stm32 porque odiaba Todo el material de aprendizaje para Atmel relacionado con ASF. Echa un vistazo a un curso en udemy llamado masterización de microcontroladores con desarrollo de controladores incorporados, básicamente te enseña cómo escribir tus propios controladores para gipo, i2c, etc. en stm32 de 32 bits usando solo los registros. Y una vez que comprenda que puede escribir código para cualquier familia, cualquier proveedor porque todo es lo mismo básico. sin mencionar que una placa stm32 cuesta 2 dólares por 72Mhz y el programador cuesta 5 dólares.
@user34920 También me encanta el estudio Atmel y todavía lo uso para cosas de AVR, pero Stm32 también es excelente, no se quede atascado en un IDE o en un proveedor, como fanboy, sea un ingeniero que pueda usar todas y cada una de las herramientas en su desecho. En todo caso, solo use el curso de udemy como un trampolín para aprender Atmel ARM, son solo 10 dólares... (no es mi curso ni nada), pero siempre lo recomiendo porque aprendí más de ese curso que cualquier tutorial mediocre en línea. No hay nada como un conjunto de videos bien estructurados y ordenados para aprender. Si tienes alguna pregunta, mándame un mssg. Amaya.6987 en gmail