Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola soy nuevo por aqui asi que un saludo a todos.
Bueno el caso es que empezé a aprender C con los ATmega pero de la misma me meti con los Xmega por que tenian buenisima pinta y dicen que te acercan mas a los micros ARM (algun dia muy lejano..jajaj)
Pues despues de un tiempo veo este link " http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=103269 " en el que ponen a parir al Xmega.
Asi que queria saber si mejor aprendo con los ATmega y ya algun dia pasar a los ARM, o este es un salto demasiado grande? no se como hacer para no dar muchas vueltas hasta llegar a los ARM..
En fin, que bajon!!
Si nunca has utilizado un microcontrolador y quieres empezar con uno tienes varias opciones, si quieres un microcontrolador simple para poder usar en proyectos de electrónica lo mejor es uno de 8 bits, y hay dos opciones, comenzar con ensamblador o si quieres comenzar con C.
Si quieres comenzar con ensamblador probablemente la mejor opción sea irse a un micro de 8 bits de Microchip, cualquiera de la familia 16F o 12F, tienen muy pocas instrucciones de ensamblador y van completos de periféricos para realizar diversos proyectos. Ensamblador te dará una idea general de cómo funciona un microcontrolador, y te servirá más adelante cuando estés programando en C y tengas que mirar al código que genera el compilador para ver lo que el micro está haciendo, o tengas que programar una parte en ensamblador.
El único objetivo de aprender ensamblador del 16F es didáctico, ya que es muy simple, pero con este micro poco vas a poder hacer ya que al final vas a acabar programando en C, los micros de 8 bits de Microchip son mucho peores que los de otros fabricantes, además de que la familia del 16F no está pensada para ser programada en C. El IDE y el ensamblador son gratuitos pero no tienes un compilador libre de uso general, los que se suelen usar son de pago, aunque no es problema ya que sólo hay que buscarlos.
Si por el contrario prefieres empezar en C la mejor opción es un ATmega de 8 bits, si comparas los micros de 8 bits de Atmel con los de Microchip a nivel de hardware/arquitectura ganan de lejos los primeros, tienes bastantes donde elegir y todo el software es gatuito, como compilador tienes el avr-gcc/WinAVR que funciona de maravilla.
Una tercera alternativa a las dos anteriores es la Launchpad de TI, son micros de 16 bits muy sencillos, muy limitados pero ideales para proyectos simples, y con la ventaja de que tienes un kit de iniciación en el que por unos 4 euros más o menos te dan todo lo necesario para trabajar con un microcontrolador, por lo que el dinero que necesitas para empezar es mucho menor que con los anteriores que tienes que comprar un programador, la placa de la launchpad ya trae ese programador.
Los compiladores de la Launchpad son de pago, pero tienes versiones gratuitas con una limitación de memoria máxima de programa que se encuentra por encima de la memoria máxima de los micros, lo que significa que puedes usar los micros que te vienen al 100% sin ninguna restricción.
La principal razón de usar la Launchpad frente a las otras dos opciones es que también con la placa que te dan tienes un emulador, lo que te permite hacer debug de los programas corriendo en el microcontrolador y ver lo que está pasando en el pc, para hacer ésto con los anteriores tienes que comprar hardware adiccional, aunque el propio programador de los pics creo recordar que te permite hacer una especie de debug a costa de meter código en la flash.
Mi recomendación es que si quieres empezar/aprender con ensamblador un pic16F, si quieres programar en C y tener un microcontrolador que luego puedas usar en muchos de tus proyectos (aunque luego pasea a ARM) un AVR, y si quieres obtener lo máximo al mínimo coste una Launchpad, los micros son muy limitados pero se pueden usar en muchos proyectos aunque se quedarán muy cortos para otros tantos.
Si el dinero no es problema yo empezaría con AVR + JTAG (sobre los 300 el bueno aunque tienes una versión muy barata sobre los 50 euros).
Una vez que hayas usado un microcontrolador de los anteriores, para que veas más o menos de que va la cosa y te sirva para coger los conceptos básicos, pues te pasas a los ARM, una de las placas de iniciación de los cortex-m3 de cualquiera de los fabricantes es lo más acertado, son baratas y por lo general también te lo suelen dar todo para empezar, aún así el salto de uno a otro es grande, por lo que tendrás mucho que leer.
También puedes empezar directamente con ARM, tendrás que leer mucho, pero empezar con un micro de 8 bits es muy sencillo, lleva poco tiempo, y te permite aprender los conceptos básicos, por lo que mi consejo es que primero empieces por 8 bits o launchpad antes que ir a 32.
Para empezar desde cero yo haría, pic16F/12F + asm para ver ensamblador y te quedas con un micro para proyectos muy sencillos a programar en asm. Luego pasaria a 8 bits de Atmel + C y te quedas con un micro de 8 bits con el que vas a poder hacer cantidad de proyectos, y de ahí pasaría a micros mayores como los ARM (este va a ser el paso más difícil de todos los anteriores, también depende de lo que sepas).
Mi recomendación si quieres aprender de verdad y en profundidad es la siguiente:
1º ASM con PIC 16F
2º ASM con ATmega16
3º C con ATmega16
4º C con Xmega128A1 (por cierto, tengo uno y estoy muy contento, así que voy a revisar lo que ponen en ese link)
5º C con STM32F102 (ARM), que tiengo una de desarrollo sencilla por menos de 30€.
Más recomendaciones: para AVR, usar un AVRDragon de los nuevos como JTAG. Para los ARM, un JTAG de Olimex, aunque puedes programarlos y depurarlos sin nada (todos llevan booloader por puerto serie de fábrica).
Creo que los dos primeros puntos son clave para que aprendas las diferencias entre arquitecturas RISC (los PIC NO LO SON) y CISC, que en realidad se deberían llamar load/store y no-load/store. Con estas diferencias, uno se da cuenta que la arquitectura interna del micro es fundamental y que puede (debe!) condicionar luego la programación en C, además de explicar porqué el mismo programa en C da tantas diferencias entre dos micros.
Como no especifica mucho no sabemos que nivel de profundización quiere, ni si le interesa meterse en berenjenales de arquitecturas.
Pou, si solo quieres aprender a nivel de hobby mi recomendación sería única:
1º ARDUINO
Y si algún día quieres pasarte a ARM, puedes hacerlo sin salir de Arduino:
http://blog.bricogeek.com/noticias/arduino/nuevos-arduinos/#more " onclick="window.open(this.href);return false;
Si no quieres depender del hardware Arduino hay muchas opciones, pero ahí discrepo de beamspot, no aconsejo los desfasados 16F para iniciarse, mucho menos en ASM, a no ser que la única finalidad sea aprender la arquitectura de los 16F.
Ahora bien, de un compilador C a otro, dentro de la misma arquitectura también puede haber bastantes diferencias. No es lo mismo el C18 de microchip que un mikroC.
En mi opinión, usar un ARM con el entorno Arduino es como usar un Jumbo para ir a comprar azúcar al súper de la esquina. Además, mi recomendación decía explícitamente para profundizar. Si ésta no es la intención, entonces hay que atenerse a otras medidas.
Por cierto, el thread de AVRFreaks que has puesto, no sé si lo has leído, pero las quejas hacia los Xmega que hay actualmente ya no son válidas. Como yo sí me lo he leído todo (de hecho, mi careto aparece en algunos posts de la última página) y estoy al tanto de algunos de los problemas (en mi anterior trabajo se ha hecho un producto con Xmega, que empezó con las primeras versiones, así que han sufrido buena parte del problema en sus carnes). Pero en los micros que hay ahora en el mercado, todo va fino (lo sé por experiencia ya), y son muy interesantes. Mezclan periféricos y conceptos muy ARM con una CPU de 8 bits que es lo más potente en este sector. Cubren muy bien el paso intermedio entre micros de 8 bits y los ARM, entrando de lleno en la guerra con los Cortex M0 (que en el fondo son los que van a acabar llevándose el gato al agua).
Para terminar, una advertencia: a mí me gusta mucho saber cómo funcionan las cosas, y eso implica aprenderme la arquitectura del micro. Si no te interesa meterte en HW, entonces mi sincera recomendación, es meterse en C# y usar un PC, o una Beagleboard o lo que sea, pero dejar al microcontrolador lo que es del microcontrolador (es decir, tiempo real), y al PC lo que es el PC (es decir, flexibilidad de programación, facilidad de depuración, poténcia de cálculo, y nada de tiempo real).