Programar el micro a través del ICSP y tipos de programadores.

Hola a todos.

Hoy me he levantado con una duda filosófica y me gustaría una ayudita para resolverla. Actualmente mi metodología de trabajo consiste en preparar el proyecto a base de un arduino uno, compruebo que los perifericos que voy a conectar hacen lo que yo quiero, hago el circuito del diseño final en proteus, lo plasmo con el método del bolí en una placa (algún día conseguiré una plancha) y por último escribo el programa final que grabo en el chip atmega328. Para esto último, me fabrique un programador paralelo llamado Steve Bolt's que soporta el avrdude, pero solo conseguir programar un chip en condiciones. Así que decidí por lo normal, convertí un arduino uno en un programador ISP.

Lo malo de este método es que cada vez que quiero modificar el programa, tengo que quitar el micro, programarlo, volverlo a poner y si no funciona empezar de nuevo el proceso.

Así que he estado mirando el hecho de instalar mi propio circuito ICSP en las placas. En teoria es fácil, solo hay que poner el conector ICSP con los pines adecuados a VCC, GND, RESET, MISO, MOSI y SCK. La duda me viene es con la alimentación VCC, ya que si bien es cierto que el programador alimenta al dispositivo, no es necesario ya que mi placas tienen su propia fuente de alimentacion de 5 voltios. Es decir, que VCC la podria obviar ¿no?, y si usar el resto. También veo que si pongo salidas utiles en los pines SCK, MOSI y MISO, cuando lo programe estas actuaran (por ejemplo, un relé, conectado a MISO, si le meto un 1, activará el relé). Aunque esto último no me preocupa, ya que se supone que lo tendré programado cuando haga la instalación final.

La otra duda que me surge es la del programador. Yo tuve malas experiencias con el programador de Steve Bolt's aunque sigo sin saber por qué. Ya sé que hay bastantes programadores caseros, y me gustaria saber cual es el que os gusta o con el que mejor habeis trabajado. Preferiblemente los caseros, en teoria los comerciales deberían funcionar todos.

Un gracias a todos de antemano.

El USBasp de Thomas Fischl funciona muy bien

http://www.fischl.de/usbasp/

Yo uso un USBisp comercial (que son muy baratos), con el firmware del USBasp.

Visto :slight_smile:

Defectos:

  • Necesita drivers: dolor de cabeza seguro.
  • Tienes que programar el atmega8… necesitas un programador…

Ventaja:

  • Es facil de hacer y entender y parece barato.

Vale, se puede comprar. Pero no sé porque, pero me gusta la filosofia hazlo tu mismo.

Adjunto el programador que me fabrique

La verdad, sale más barato comprarlo hecho, que hacerlo, pero si aun así, quieres hacerlo, puedo decirte que los drivers no son un problema. Funcionan perfectamente en windows 7, 8, 8.1 y 10.

Programar el atmega, tampoco es un problema. Yo programé el mío con "Arduino as ISP".

https://www.arduino.cc/en/pmwiki.php?n=Tutorial/ArduinoISP

Examinando el esquema del USBAsp veo 3 jumper: JP1, selfprograming, supongo que para autoprogramarse; JP2, slowclock, creo que es para programar micros cuya frecuencia de trabajo es baja; y por último JP3, VccTarget, que conecta o no la alimentación del circuito. Eso quiere decir lo que yo pensaba, si el chip que queremos programar tiene su propia alimentacion quitas el jumper y ya esta, ¿me equivoco?

El jp2, lo desconozco, el mio solo tiene el 1, que lo usé en su día, para grabar el firmware de Fischl. El 3, es para dar o no alimentación. Cuando yo programo algo por ICSP, no le doy alimentación al arduino, si no que dejo que lo alimente el USBasp.