Una vez que tienes un microcontrolador, el siguiente paso, es programarlo para que haga algo útil.
Para hacer eso, necesitas:
- Un editor/procesador de texto.
- Un compilador/ensamblador.
- Un programador/quemador.
- Un editor de texto, es un programa para escribir, cuya función principal, no es que el texto se vea lindo, si no, ayudarte a escribir. Normalmente colorean las palabras especiales de cada lenguaje para ayudarte a comprender la estructura de tu código de forma visual. Además, muchos vienen con agregados útiles, como expresiones regulares (regex), de las cuales que hablaré en un futuro post.
- Un procesador de texto, es un programa para escribir, cuya función principal, es que el texto se vea lindo, para esto te deja agregar imágenes, tablas, colores, distintos tamaños y tipografías para las letras, etc... Esto no es muy útil para programar, por lo que no lo recomiendo, sin embargo conozco una persona que programa así. Si puede servir, por ejemplo, para documentar tu código.
- Un compilador, es un programa que traduce el código escrito en un lenguaje en particular a código de ensamblador o a un archivo binario/hexadecimal directamente, lo cual es ejecutado directamente por un computador..
- Un ensamblador, es un programa que traduce un tipo de código de muy bajo nivel (que no pienso enseñar por que no me gusta :P) a un archivo binario/hexadecimal.
- Un programador o quemador (como le quieran decir), consta de dos partes, un software pare el computador y un aparato físico que se encargan de traspasar el archivo hexadecimal desde el computador en que lo compilaste, al microcontrolador que lo debe ejecutar.
- Un IDE, una sigla en inglés que significa "Entorno de Desarrollo Integrado" (Integrated Development Environment), es un conjunto de esas cosas, que para nuestros fines, normalmente traen un editor de texto, un compilador, un ensamblador y un programador (software). La idea es que la mayoría de esas cosas queden ocultas para simplificarnos la vida, por lo que muchas veces solo vemos el programa para escribir y un botón que compila, ensambla y traspasa el programa al micro, todo automáticamente.
- Un Bootloader, es un programa especial para el microcontrolador, que hace que no requiera un aparato especial para cargarle tus programas (y en consecuencia, se reduce el costo).
- Arduino: Una plataforma construida a partir de microcontroladores AVR de Atmel, son increíblemente baratos, poderosos, y no solo traen un IDE y un Bootloader, si no que además trae muchas funciones pre-hechas en C++, gracias a lo cual, puedes hacer complejos programas en poco tiempo.
- Picaxe: Otra alternativa, pero ocupando los PICs de Microchip. Personalmente, y con toda la subjetividad que eso implica, no los recomiendo.



Programador
Hola,
Tengo una duda...
Cuando mencionas que existe un bootloader, el cual evita el uso de un programador físico, entonces como hace un bootloader para traspasar la info al microcontrolador ? A través de algún puerto especial ? .
Saludos y muy buena la info!!
Bootloaders
Excelente pregunta :)
Un bootloader es un programa que utiliza los puertos de comunicación serial del microcontrolador para programarse a si mismo, eso significa que lo que necesitas es tan solo un cable serial o usb->serial.
Eso si, hay un pequeño detalle que no mencioné apropósito, ya que hablaré de ello en mi siguiente post.
Lo que pasa es que un bootloader es un programa... así que, de todos modos necesitas un programador para pasarle el bootloader la primera vez :P
Hay 2 soluciones a eso...
-----------------
Cristián Arenas Ulloa
NiñoScript
Ya me quedo más claro ...
Ya me quedo más claro :)
Supongo que la opción de comprar un microcontrolador con un bootloader debe ser más economica, o sino no veo la gracia de eso.
Ahora, si compras un micro con el bootloader incluido, te ahorras plata, pero quedas condicionado con ese micro en especifico. A que me refiero, a que si compras un programador, no solo te servira para un micro, sino que para varios, eso si es que son estandar. Según tu experiencia, (y suponiendo que la idea no es programar un solo microcontrolador sino que varios, para realizar distintos robots, etc), es mejor comprar varios micros con bootloaders incluidos o comprar un programador y varios micros normales ?
Otra cosa, el otro dia encontre un programa llamado gnusim8085 para Linux el cual supuestamente simula el funcionamiento de un microprocesador 8085 (eso es lo que entendi), pero que por lo que vi solo aceptaba programas en ASM. Tal vez una alternativa por lo menos para la parte teorica sería trabajar con algun simulador para microcontroladores, que acepte programas escritos en lenguajes como C++, aunque no se si existen.
Saludos!
Problema de escala.
El problema que planteas es netamente un problema de escala.
Si vas a tener por ejemplo, 2, 3 o hasta 10 microcontroladores, puede que te convenga comprarlos con bootloaders pregrabados.
Pero si quieres producir en masa, o hacer clases, es muy probable que te salga más conveniente comprarte un programador.
Por ejemplo, un AVR, modelo ATMega168 con el bootloader de Arduino, te puede costar 6 dolares, en cambio, un ATMega168 vacío te puede costar 4.9 dolares por unidad, o hasta 3 dolares al por mayor. Y un programador te puede entre unos 12 y 60 dólares.
Uno solo:
$12+$4.9 = $16.9 > $6
Muchos (pero no al por mayor):
$12+11*$4.9 = $65.9 < $66 = 11*$6
Así que para alguien que no necesita muchos, son bastante recomendables los bootloaders, el problema, es que no están disponibles para todos los chips y te estarías perdiendo poder usar por ejemplo los famosos ATtiny13 que por unidad cuestan menos de 2 dolares (imaginate al por mayor)
Ahora, algunos programadores tienen otras gracias especiales, por ejemplo los de 60 dólares que mencioné, son por USB y ocupan una tecnología llamada JTAG, la cual es más rápida para programar los chips que los bootloaders y tiene gracias como poder hacer debugging en el chip sin necesidad de emularlo, si no que en tiempo real, esto significa llegar y pausar el programa en cualquier momento, revisar el valor de todas las variables e incluso hacer un cambio en el programa on-the-fly, lo cual es muy poderoso y yo me quiero comprar uno :P
Acerca de la "otra cosa", almenos para AVR, existen varios simuladores gratuitos, el oficial creo que se llama GNU AVR Simulator, además está Simulavr.
Y lo que dices de que solo soporta código en Assembler, fíjate que muchos compiladores de C (u otros lenguajes...) para microcontroladores, primero traspasan el código a Assembler y luego se lo pasan a un ensamblador, así que probablemente ya tengas el código en assembler de tu programa ;)
(busca archivos *.asm)
PD: creo que me demoraré una semana más para el próximo post, estoy ocupadísimo en la u en este momento. :(
-----------------
Cristián Arenas Ulloa
NiñoScript
simulador
amigo buenas, no se que tan viejo sea el post pero espero me ayuden, tengo un proyecto que me gustaria ejecutar pero no se si existe un simulador para diseñar procesos previo a quemar el microcontrolador, no se por donde buscar, si puede escribame un correo o por aqui mismo me responde gracias y disculpe la molestia