Dudas sobre Bootloader, sketches y programadores ISP en un micro en stand-alone

Buenas,

llevo un par de días leyendo información pero no termino de aclararme sobre un par de aspectos relacionados con el uso de un micro ATMEGA328P que uso con arduino y quiero poner en una placa propia. Me explico... Hasta ahora desarrollo mi prototipo con una placa de ARDUINO UNO y ahora quiero hacer lo mismo pero en una placa más pequeña que añade algunas resistencias y otros módulos conectados con el micro. Es muy parecido a un Lilypad al que le añado más funcionalidades, porque uso un reloj externo a 8MHz y poco más.

Lo que quiero es poder subir el sketch a esta nueva placa, partiendo de que el micro está en blanco (sin bootloader).

Una opción es grabar el bootloader en primer lugar sobre el micro antes de soldarlo, cosa que me funciona perfectamente con un arduino como ISP que me he hecho. Después, soldaría el micro (ya con bootloader de lilypad dentro) a la placa y añadiría el resto de componentes básicos para que funcione: oscilador con sus 2 condensadores, resustencias... Vamos, sigo el esquema de lilypad. Pretendo acceder vía header de 6 pines (no puedo usar la comunicación por puerto serie) y un programador externo que he comprado (en realidad 2: USBasp y AVRISP MKII), pero en lugar de irme a un entorno tipo AVR Studio quiero seguir usando el IDE de Arduino (aunque sé que hay algún problemilla con los drivers para el MKII y AVRDUDE). Y a partir de ahí, llegan mis dudas.

  1. ¿Se puede programar un bootloader sobre un mircro ATMEGA328 que está en una placa "custom" atacando los pines MISO, SCK, RESET, VCC, MOSI y GND a través del IDE de Arduino usando un programador ISP externo para micros AVR, como por ejemplo el USBasp ó AVRISP MKII? En caso de ser posible, me evitaría el paso previo de grabar el bootloader "desde fuera". Y una vez programado, ¿se podría reprogramar de la misma manera? Realmente la respuesta a esta pregunta sería la misma respuesta a: si cojo un lilypad, ¿puedo reprogramar el bootloader a través de estos 6 pines desde el IDE de Arduino?

  2. Me planteo si esto de tener el bootloader antes de subir el sketch es realmente necesario si tengo la posibilidad de usar un programador externo. Es decir: dado un sketch para arduino, ¿se puede cargar en un ATMEGA328P según el método anterior sin necesidad de que éste tenga ya previamente algún bootloader de arduino? Es decir, ¿es realmente necesario el bootloader en el caso de que no vayamos a usar una placa arduino sino el micro en modo stand-alone el cual se ha programado con el IDE de Arduino y la forma de reprogramarlo va a ser mediante ISP? En el portal de Arduino sí que aparece esta opción (http://arduino.cc/en/Hacking/Programmer), pero no me queda claro si el bootloader debe estar o puede hacerse con el micro en blanco.

Espero haberme explicado y que la respuesta sirva a más dudosos como yo, porque no termino de encontrar una respuesta que me aclare del todo y cada vez me lío más sobre qué es necesario y qué no si lo que quiero es una placa "custom" basada en arudino con un sketch concreto.

Muchas gracias.

Podrias obviar todo y usarlo como ATMEGA, programando con el ATMEL STUDIO, usando la librería AVR que practicamente tiene todo lo que tiene el ARDUINO y programando a traves del ISP.
O puedes cargar el bootloade via ISP y luego el código via ISP.

Aca una guia
http://arduino.cc/en/pmwiki.php?n=Hacking/Programmer
o esta mejor
http://arduino.cc/en/pmwiki.php?n=Tutorial/ArduinoISP

En muchos de mis proyectos, cargo el código por ISP con el IDE de Arduino. Cuando cargas el código por ISP, no es necesario cargar previamente el bootloader, ya que este, solo sirve para poder cargar código a través de puesta serie, y creo que no es tu caso.

Es más, cuando cargas el código por ISP, le estás quitando el bootloader al microcontrolador.

Yo creo que cargar el código directamente por ISP en proyectos finales, es mejor, ya que el arranque es mucho más rápido. Quizá solo medio segundo más rápido, pero es más rápido, ya que al no tener bootloader, el código empieza a ejecutarse inmediatamente.

Yo uso un USBasp, y cargo el código con la opción "Upload using programmer" ("subir usando programador" en español) del menú "file" (menú "archivo en español) y no me da ningún tipo de problema.

Surbite y Carmeloco, muchas gracias. Ya me he aclarado, lo dejo por aquí para futuras consultas de otros que estén como yo, con la misma duda.

He montando un ATMEGA328P en stand alone en una placa propia, basándome en el esquema del Lilypad. A través de los 6 pines del header para ISP, he conseguido tanto subir un bootloader a un micro que ya lo tenía (sí, se puede reprogramar el bootloader) como subir un sketch después. Un problema que tuve fue usar el USBasp con el IDE de arduino. Solución: actualizar el firmware tal y como aparece en http://www.rogerclark.net/?p=702. Pero ojo, el fuente (usbasp.2011-05-28.tar.gz) hay que ponerlo en la misma carpeta donde está el ejecutable del AVRDUDE (en mi caso C:\arduino-1.0.4\hardware\tools\avr\bin). No me funcionaba bien el path hacia otra ruta para indicar el sitio donde estaba el fuente, así que mejor ponerlo en el \bin desde donde ejecutamos el AVRDUDE y listo.

Ahora bien, realmente no hace falta el bootloader. Se puede subir directamente el skecth como bien dice Carmeloco. Por lo que las 2 opciones son válidas.

Por último, para subir skecthes con el programador hay que usar la opción "Upload using programmer" o bien cambiar las variables del fichero de preferencias como se dice en http://arduino.cc/en/pmwiki.php?n=Hacking/Programmer para usar directamente el "Upload".

Muchas gracias!!!!

Hola, yo también e querido programar un microcontrolador atmega 2560 por la comunicación spi pero no lo logro, e intentado varias forma, de arduino mega a el atmega 2560 y no funciona, de programador usbasp a atmega 2560 y tampoco funciona, al contrario borra el bootloader del arduino.
Lo curioso de todo esto esque si puedo quemar el bootloader de arduino a el atmega pero no lo puedo subir el sketch al mismo.
Alguien puede ayudarme con eso?

Crea un nuevo hilo, este no tiene movimientos desde el 23-09-2014, 11:59:56
De paso lee las normas del foro.