ImagenImagenImagenImagen
Hazte Socio (El Foro siempre Gratis)
Paga con Tarjetas+ Info www.arde.cc/socios

con que micro aprender?

Postea todo lo relacionado con el mundo de los microcontroladores aquí

Moderador: Junta Directiva

pou
Principiante
Principiante
Mensajes: 23
Registrado: Mié Sep 28, 2011 8:39 pm
Nombre: pou

con que micro aprender?

Mensaje por pou » Mié Sep 28, 2011 8:46 pm

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 ... c&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!!



akita
Mensajes: 2
Registrado: Jue Sep 29, 2011 1:25 am

Re: con que micro aprender?

Mensaje por akita » Jue Sep 29, 2011 1:58 am

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).

Avatar de Usuario
beamspot
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 1132
Registrado: Jue Oct 11, 2007 8:56 pm
Nombre: Guillem

Re: con que micro aprender?

Mensaje por beamspot » Jue Sep 29, 2011 9:58 am

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.
Beamspot.

dragonet80
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 1323
Registrado: Mié Oct 03, 2007 12:15 am
Ubicación: Ibiza

Re: con que micro aprender?

Mensaje por dragonet80 » Jue Sep 29, 2011 1:10 pm

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/ardu ... inos/#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.

Avatar de Usuario
beamspot
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 1132
Registrado: Jue Oct 11, 2007 8:56 pm
Nombre: Guillem

Re: con que micro aprender?

Mensaje por beamspot » Jue Sep 29, 2011 2:44 pm

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).
Beamspot.

FJ_Sanchez
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 1082
Registrado: Mié Jun 07, 2006 11:09 pm
Nombre: Francisco Javier Sánchez
Ubicación: Vejer de la Frontera
Contactar:

Re: con que micro aprender?

Mensaje por FJ_Sanchez » Jue Sep 29, 2011 3:12 pm

beamspot escribió: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).
Acabas de matar a VxWorks... :mrgreen:
_ _ _ _ _ _ _ _ _ _

Hack your mind \\ F.J. Sánchez

Okupa tu mente. \\ _ _ _ _ _ _ _ _ _ _ _ _

Ranganok
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 3874
Registrado: Lun Nov 07, 2005 3:10 pm
Ubicación: Barbaros del Valle
Contactar:

Re: con que micro aprender?

Mensaje por Ranganok » Jue Sep 29, 2011 5:07 pm

FJ_Sanchez escribió:Acabas de matar a VxWorks... :mrgreen:
Hoy en día te sale más a cuenta hacerlo con una FPGA que con un PC con VxWorks.

Volviendo al tema principal puedes empezar desde bajo nivel o desde alto nivel. Si empiezas desde bajo nivel te recomendaría:

1.- Electrónica analógica y electrónica digital básica.
3.- ASM (elige marca)
4.- C
5.- C++
6.- JAVA / C#

Si empiezas desde alto nivel es al revés.

S2

Ranganok Schahzaman
skiras.blogspot.com

"En igualdad de condiciones la explicación más sencilla es la cierta"

pou
Principiante
Principiante
Mensajes: 23
Registrado: Mié Sep 28, 2011 8:39 pm
Nombre: pou

Re: con que micro aprender?

Mensaje por pou » Jue Sep 29, 2011 7:19 pm

Muchas gracias a todos, me han servido de mucho los comentarios.

Bueno lo de el ASM con los Pic 16F ya hice, asi que un paso menos jejej

Tambien esta bien eso que habeis dicho de aprender bien un micro de 8 bits sencillo para
usar en los proyectos mas sencillos.
el arduino no me gusta porque es como lento el codigo no?

beamspot, el link lo lei hasta la mitad y como era del 2011, pues pense mal, gracias por el aviso
mira si me gusta saber como funcionan las cosas que empezé a hacer un miniCnc, y acabe queriendo
hacer el servocontrol de un motor jaj. Y claro ahora toca esto, asi que si que me hace falta tiempo real de ese

creo que mirare un poco el ASM de AVR (que perezaa!!) y luego un libro de C para ATmega16 y de mientras ojeando el Xmega. Otra cosa, los micros usan C y no C++, no? que no se la diferencia entre ellos pero bueno...

bueno 1 saludo

Avatar de Usuario
beamspot
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 1132
Registrado: Jue Oct 11, 2007 8:56 pm
Nombre: Guillem

Re: con que micro aprender?

Mensaje por beamspot » Vie Sep 30, 2011 10:32 am

Yo tampoco tengo muy claro exactamente, a nivel de ensamblador, la diferencia entre C y C++. Sí que entiendo los conceptos de POO, y hay programadores de micros que defienden en guerra santa tanto uno como el otro. Incluso también el ASM.

Pero una cosa sí está clara: existe el C++ 'adaptado' a uC, el llamado Embedded C++. En un principio, un buen uso del msimo (eso implica conocer bien el resultado de la compilación), no dispara el uso de RAM respecto de hacer lo mismo con C, aunque queda más elevado de todas todas, y también suele ser un poco más lento al usar los punteros con asiduidad, y por tanto tener que mover de memoria a/desde registros para acceder a más memoria o datos.

La contrapartida, aka, reusabilidad y escalabilidad del código, hace que tenga muchos adeptos, especialmente si se usan micros sobrados de RAM, potencia de cálculo, y registros. Usease, ARM's. Esto, junto con los RTOSes hace que éstos últimos esten tan de moda (bueno, el bajo precio y la relación potencia/precio tambien dicen mucho).

Por cierto, cualquier procesador que use memoria virtual y caché tiene 'dificultades' para ser tiempo real, por mucho VxWorks que se utilice. FPGA es, cada vez más, el camino al RTOS real (y el más bestia).
Beamspot.

Ranganok
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 3874
Registrado: Lun Nov 07, 2005 3:10 pm
Ubicación: Barbaros del Valle
Contactar:

Re: con que micro aprender?

Mensaje por Ranganok » Vie Sep 30, 2011 12:47 pm

Si el compidador fuese bueno la diferencia entre C y C++ en el ensamblado sería mínima (por no decir 0). Ahora bien a la hora de programar la diferencia es brutal:

- C es lenguaje estructurado
- C++ es lenguaje orientado a objetos

Esto implica muchísimas cosas (que no explicaré aquí: te recomiendo que busques en la web "Aprenda C++ como si estuviera en primero" y "Aprenda ANSI C como si estuviera en primero"), pero sobretodo implica un cambio de mentalidad a la hora de programar... NUNCA, y digo NUNCA, se te ocurra programar en C++ como si estuvieras en C con objetos, so pena de que algún alma caritativa te clave un gancho en los tendones de los tobillos y te cuelge boca abajo hasta que te desangres (se nota que lo estoy sufriendo, no?...)... es más, no aprendas a programar en C++ hasta que no domines la programación en JAVA o en C#.

S2

Ranganok Schahzaman
skiras.blogspot.com

"En igualdad de condiciones la explicación más sencilla es la cierta"

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado