TODOPIC

Microcontroladores PIC => Programadores => Mensaje iniciado por: Marttyn en 04 de Septiembre de 2008, 16:25:08

Título: Boton "programar" en el hardware? CONSEGUIDO
Publicado por: Marttyn en 04 de Septiembre de 2008, 16:25:08
Hola!
Tengo una duda... estuve buscando en el foro pero los resultados eran de lo mas diversos, pero nada de lo que yo buscaba...
mi duda es la siguiente: Hay algun programador que tenga un boton fisico que al apretarlo programe el micro que este puesto y el programa que el soft tenga cargado?
Explico... el winpic tiene una opcion muy practica, cuando cargas un .HEX y le das a programar el programa antes de programar actualiza el .HEX con la compilacion mas reciente... tambien tiene otra opcion genial, que es que al estar minimizado pone un icono en el "Tray" (al lado de la hora de windows), y si haces clic sobre el icono, da la orden de programar con el .HEX que esta cargado.
Estas dos opciones juntas estan geniales, porque puedo estar en CCS, compilar un programita, darle al boton del tray y el micro se programa directamente.... pruebo y veo que el programa tiene un fallo, corrijo, vuelvo a compilar y con un boton vuelve a programarse el micro... todo sin tener que andar llendo y viniendo al winpic.
yo por ahora tengo la desventaja de no programar con ICSP (lo tengo, pero aun no lo uso) y tengo que poner y quitar el pic de mi programador cada vez... SERIA MUY PRACTICO colocar el pic en el programador, apretar un boton DEL PROGRAMADOR y que el micro se grabara... existe alguna manera de hacer algo asi?
se que es una tonteria, y soy un poco vago... pero cuando programas un mismo micro 0xFFn veces, intentas de que sea lo mas automatico posible...  :mrgreen:
Gracias y salu2!

Edito: Consegui ponerle el boton a mi programador!  :-/
Al que le interese ver el resultado puede pasar por ESTE TOPIC (http://www.todopic.com.ar/foros/index.php?topic=23009.40)
Gracias a todos!
Título: Re: Boton "programar" en el hardware?
Publicado por: navaismo en 04 de Septiembre de 2008, 16:52:26
Un bootlader no te gustaria mas?
Título: Re: Boton "programar" en el hardware?
Publicado por: Marttyn en 04 de Septiembre de 2008, 17:20:14
he tenido que investigar un poco para entender tu respuesta :oops:
no sabia bien lo que era el bootloader  :mrgreen:
lei un poco por encima y la verdad no me convece, crei leer que solo algunos pics de la familia PIC16 y los de la 18 son los que soportan autoescritura de la flash... y yo suelo trabajar con 12F, y algunos 16F
veo que tendra sus ventajas el bootloader, pero por ahora no quiero meterme en mas embolaos, con un boton en mi programador seria feliz  :mrgreen:
gracias navaismo!
Título: Re: Boton "programar" en el hardware?
Publicado por: Gonzalo_BlackHawk en 05 de Septiembre de 2008, 17:45:47
Hola Marttyn. Mira, lo que yo hago es incluir en todas mis placas (inclusive las finales, uno nunca sabe cuando se necesita depurar o actualizar algo) un circuito permanente que sirve tanto para programar el PIC como para permitir la transmisión UART. Para comunicarme con la PC tengo un conector DB-9 para puerto serie que coloco en la placa y que durante el funcionamiento normal de la máquina no va conectado a ningun lado. Es decir, de esta forma el micro puede funcionar tranquilamente pero si necesito cambiarle algo al programa, conecto un interlock serie de mi puerto de la PC al de la placa y con solo dar "Programar" en el WinPic (o con el programa que quieras) el micro detiene su programa, se pasa a modo programacion, se programa y cuando termina arranca de nuevo, sin tocar la placa mas que para meter o sacar la ficha del DB-9.
Si quiero depurar algo tan solo programo el micro para habilitar el puerto UART y luego a traves del mismo interlock mientras el circuito funciona normalmente me pasa los datos. Es simple y aunque el circuito que te digo ocupa lugar en la placa ( maximo 5 x 5 cm en modo Thru-hole y ruteandolo realmente mal, lo que mas ocupa es el la ficha) te salva de llevarte el programador y de sacar el micro cada vez que hay que hacerle algo.

Si realmente es eso lo que estas buscando te puedo subir el circuito, no lo tengo aqui, pero lo puedo extraer de alguno de mis circuitos y te lo paso.

El circuito como el que te digo funciona para toda la linea 12F y 16F, para los 18F no funciona porque se necesita una linea adicional para realizar el reset preprogramacion al PIC, pero tambien he modificado ese circuito para poder lograr dicho control, no es nada mas que una linea mas de comunicación por el puerto y un par de transistores y resistencias. Si solo vas a utilizar el 12F y 16F te adjunto el circuito mas simple.

Saludos desde Argentina.
Título: Re: Boton "programar" en el hardware?
Publicado por: Nocturno en 06 de Septiembre de 2008, 00:22:52
No entiendo bien lo que dices Gonzalo, ¿no es como meter el conector ICSP dentro de un DB9?
Título: Re: Boton "programar" en el hardware?
Publicado por: Marttyn en 06 de Septiembre de 2008, 00:30:24
yo entendi como nocturno, un ICSP...
lo que me gustaria es un boton en mi programador que haga la misma funcion que si apretase el icono del tray del winpic...
aunque me da que no se va a poder hacer  :?
Título: Re: Boton "programar" en el hardware?
Publicado por: Nocturno en 06 de Septiembre de 2008, 00:43:51
Desde luego no creo que haya ninguna manera de hacerlo sin que Sisco modifique el firmware del GTPUSB PLUS y del Winpic800.
Título: Re: Boton "programar" en el hardware?
Publicado por: Marttyn en 06 de Septiembre de 2008, 00:53:57
al gtpusb+ no creo que haya que hacerle ninguna modificacion... solo al soft, que este "pendiente" de un pin del puerto paralelo (en mi caso). pero si esto no esta hecho a estas alturas, y nadie pidio algo asi antes sera porque o no es practico o a nadie le interesa...
tendre que buscar algun soft programador que sea open source y modificarlo...
nocturno! recien llegas de marcha? que haces a estas horas por aqui?  :mrgreen: yo si, recien llego de marcha  :D
salu2!
Título: Re: Boton "programar" en el hardware?
Publicado por: Nocturno en 06 de Septiembre de 2008, 01:47:22
En ese caso te podrías hacer un programa para Windows que estuviera siempre chequeando tu pin del puerto paralelo y luego tomase el control de Winpic800 para programar (es suficiente con hacer un sendkeys (ctrl+P) para que programe).

Marttyn, soy nocturno de madrugar, no de trasnochar  :D
Título: Re: Boton "programar" en el hardware?
Publicado por: Marttyn en 06 de Septiembre de 2008, 01:57:07
ufff... que tiempos aquellos en los que programaba en VB... recuerdo que habia alguna opcion de enviar comandos de un programa a otro... tendre que investigar, pero la verdad me parece una idea muy buena  :-/
ya comentare que queda de todo esto... ojala surja algo util y practico!
por cierto... yo soy nocturno de trasnochar... me paso horas y horas leyendo posts.... y estas ultimas semanas que el foro no esta funcionando bien hay noches que no se que hacer  :g)
salu2!!!
Título: Re: Boton "programar" en el hardware?
Publicado por: Gonzalo_BlackHawk en 06 de Septiembre de 2008, 10:38:52
No entiendo bien lo que dices Gonzalo, ¿no es como meter el conector ICSP dentro de un DB9?

No Manolo, a mi entender no, porque no hay que conectar ningun programador al DB9, solo el cable del puerto serie. El programador esta dentro de la placa, y si, ocupa espacio pero te olvidas de llevar el GTP a todos lados, con un interlock DB9 basta y sobra. Es ICSP, si si, pero el programador esta embebido en la placa, no es nada revolucionario, los PLC's tambien lo tienen.
Ahora entiendo que es lo que tu quieres hacer, pero no le veo utilidad, para que quieres tener que tocar un pulsador en la placa, cuando se lo puede hacer en la computadora. Cuanto menos se toque en la placa mejor para mi :mrgreen:. De todas formas si lo que quieres es detectar un pulsador y mandarle una orden al WinPIC, basta con hacer un programa en VB que monitoree el pin del puerto paralelo y ejecute un shell o un shellExecute para activar el winpic. Como manejar las opciones de programación?, muy simple, a través de los parámetros que Winpic ofrece.

Saludos y ya nos contarás como te fue.
Título: Re: Boton "programar" en el hardware?
Publicado por: Javicho en 06 de Septiembre de 2008, 11:20:32
Pero no se supone que luego de colocar el pic en el grabador debes hacer click en "Actualizar Hex" antes de grabar? entonces practicamente no te cuesta nada en mover el mouse un milimetro y hacer click en "Programar" o te pesa la mano? jaja, mas bien el pulsador en la placa te va a hacer trabajar mas (modificar la placa, hacer el programa en vb, enlazarlo, tiempo, etc etc).

Mejor es usar el ICSP, no tienes que sacar el pic de la placa para nada.

Javicho.
Título: Re: Boton "programar" en el hardware?
Publicado por: Nocturno en 06 de Septiembre de 2008, 11:58:22
Pues ya que te ofreces me gustaría ver ese esquema, Gonzalo.
Título: Re: Boton "programar" en el hardware?
Publicado por: Gonzalo_BlackHawk en 06 de Septiembre de 2008, 13:00:10
Javicho, no es necesario actualizar el hex, es posible programar un PIC utilizando WinPic800 (o cualquier programador decente) mediante comandos, en tal caso ni siquiera es necesario abrir el programa manualmente.

Nocturno, aqui te dejo los dos esquemas que yo utilizo, bien para cuando además quiero que la placa tenga UART para depuración y o no. El programador on-board de las imagenes funcionan con la linea 16F (los de la linea 12F y 18F requieren un reset antes de ser programados, es cuestión de agregar una linea más de control, si encuentro el circuito lo subo). Funciona bien ya sea en una notebook o en una computadora de escritorio. Las tensiones de alimentación salen de la mismisima fuente de alimentación del circuito que tengamos, lo +15V utilizados para obtener la Vpp en general salen de la etapa de filtrado anterior a la etapa de regulación por lo que no agrego ningun componente al circuito para obtener esa tensión. Con respecto al pin de MCLR, salvo que necesites controlarlo para alguna tarea en especial, no es necesario agregarle ningun componente, ya dispone de los filtros y las resistencias para el pull-up para el funcionamiento normal.

En mi caso este circuito es bastante útil porque como te digo, para mi es un alivio no tener que llevar el GTP o el programador que sea a todos lados. Por otra parte, el circuito ocupa lugar dentro de la placa, pero en mi caso la miniaturizacion no es un problema, porque las placas en general van colocadas en máquinas de dimensiones considerables y que una placa tenga 20 mm más de longitud no es de vital importancia. Además, de esta forma evito que los empleados que salen a actualizar los programas o hacen correciones anden toqueteando los circuito electrónicos o abran los tableros (Teniendo que romper los precintos de garantía), solo enchufan el cable, presionan programar y listo.

En circuitos donde la integración y el tamaño sea lo más importante, yo definitivamente no los colocaría.

Con UART:
(http://s2.subirimagenes.com/otros/1055674programador-icspuart.jpg)

Sin UART:
(http://s2.subirimagenes.com/otros/1055683programador-icsp.jpg)

Acepto opiniones y consejos!  :) la verdad es que nunca me puse a ver si se podia optimizar un poco.

Saludos.
Título: Re: Boton "programar" en el hardware?
Publicado por: Marttyn en 06 de Septiembre de 2008, 18:25:36
que curioso lo que propones: integrar un programador a cada placa que haces... sin duda a nivel profesional es bastante practico... pero para alguien que se dedica a la electronica por hobby, no lo es tanto. para la mayoria de las cosas no, pero seguro habra algun diseño que pueda aplicar esta idea. sin duda lo hare, parece comodo.
por lo del boton, cada uno tiene sus manias y sus vicios.... el mio es ser VAGO  :mrgreen:
fuera de broma, use o no use el ICSP me parece muy comodo tener el boton de programar en el mismo hard por la forma que tengo de trabajar yo... habra a quien no le valga de nada, pero sin duda a mi me va a hacer feliz  :-)
Título: Re: Boton "programar" en el hardware?
Publicado por: Leon Pic en 06 de Septiembre de 2008, 21:55:46
Una pregunta Gonzalo, ¿Cómo haces para aislar los 2 pines de programación (RB6 y RB7), o con las resistencias R15 , R16 y el D11 basta y sobra?
Título: Re: Boton "programar" en el hardware?
Publicado por: Gonzalo_BlackHawk en 06 de Septiembre de 2008, 23:05:59
Leon, el pin RB6 del clock no necesita ningun componente adicional, puedes utilizarlo como I/O si no se esta programando.

En el caso del pin RB7 hay que tener más consideraciones si vas a utilizarlo como esta ahi porque Q5 puede hacer cortocircuito si RB7 esta en 1.  En tal caso, yo coloco una resistencia entre la señal digital que venga de nuestro circuito y el pin si este esta configurado como entrada. Por otro lado si el pin esta configurado como salida la cosa cambia, habra que colocar una resistencia en serie entre el pin y el nodo R16, Q5, DIN. Perdón por no haber colocado eso en el circuito, sin lugar a duda cuando lo extraje de unos de los esquematicos olvide semejante detalle.

0x01 Saludo.
Título: Re: Boton "programar" en el hardware?
Publicado por: Nocturno en 07 de Septiembre de 2008, 01:29:14
Resulta interesante tu solución Gonzalo, sobre todo para los PIC que no admitan bootloader.
Título: Re: Boton "programar" en el hardware?
Publicado por: Leon Pic en 07 de Septiembre de 2008, 13:32:39
Leon, el pin RB6 del clock no necesita ningun componente adicional, puedes utilizarlo como I/O si no se esta programando.

En el caso del pin RB7 hay que tener más consideraciones si vas a utilizarlo como esta ahi porque Q5 puede hacer cortocircuito si RB7 esta en 1.  En tal caso, yo coloco una resistencia entre la señal digital que venga de nuestro circuito y el pin si este esta configurado como entrada. Por otro lado si el pin esta configurado como salida la cosa cambia, habra que colocar una resistencia en serie entre el pin y el nodo R16, Q5, DIN. Perdón por no haber colocado eso en el circuito, sin lugar a duda cuando lo extraje de unos de los esquematicos olvide semejante detalle.

0x01 Saludo.
Haber si entendí.

En ambos casos, para RB7, colocas una resistencia en serie. Tenemos dos casos diferentes:

1- RB7 Entrada: Colocamos una resistencia entre la salida del circuito o sensor, digamos un pulsador que nos envíe un 0 lógico y el PIN RB7. Pata del pulsador --- resistencia ---- RB7 De esta manera, una pata de la resistencia quedará en el nodo R16, Q5, Dout

2- RB7 como salida: Colocamos una resistencia entre el circuito a controlar, digamos un LED o transistor y el PIN RB7. Nos quedaría: pata del diodo (o su resistencia poralizadora) --- resistencia --- RB7. De esta manera, una para de la resistencia quedará en el nodo R16, Q5, Dout.

Título: Re: Boton "programar" en el hardware?
Publicado por: Marttyn en 08 de Septiembre de 2008, 01:27:58
Genial!
Estuve un dia entero "refrescando" mis conocimientos olvidados sobre VB y ya consegui monitorizar el puerto paralelo para que si presiono un boton en el hard programador, el soft programador programe. me quedo un programita simpatico, y la verdad me siento realizado por haberlo conseguido:
(http://i299.photobucket.com/albums/mm317/Marttyn/Electronica/VB.jpg)

poquito antes de terminar con el programa, investigando con el WINPIC800, vi que decia algo sobre "parametros"... mme informe un poco y termine dandome cuenta que al propio CCS se le puede especificar cual es nuestro soft programador, y que se pueda programar directamente desde el ccs... es decir, justo al ladito del boton "compilar" ahora hay un boton "programar", que llama al winpic, programa, y vuelve al ccs.
exactamente es ese momento senti una doble sensacion: de alegria porque me parece SUPER practico poder programar directamente desde el ccs sin necesidad NI DE ABRIR el winpic. pero por otro lado el amargo sabor de haber perdido un dia entero (noche y dia) haciendo algo que ahora no me sirve de nada...
bueno, viendole el lado positivo, aprendi MUCHO... sobre todo como acceder y manejar el LPT desde VB, y tambien aumentaron mis conocimientos sobre la construccion de un programador por puerto paralelo.
dicho esto hare 2 cosas... la primera, acabar mi programador y agregarle el DICHOSO boton, aunque no lo use para nada... pero por lo menos no fue todo en vano  :?
segundo, cuando recien empezaba en la electronica me hubiera gustado  saber todo lo que se ahora sobre como construirme mi propio programador. cuando pueda voy a escribir una guia sobre como hacerce un programador, explicando que es cada cosa y como funciona. de esta forma puedo compartir mis exitos y mis fracasos para que otra gente pueda evitar mis errores.

Conclusion? Nuestra curiosidad y afan por redescubir uno mismo cada cosa nos hace aprender y ver la scosas de otra manera. Nos abre nuevas posibilidades, y eso vale exactamente TODO EL TIEMPO, ESFUERZO y DINERO invertido en el camino...
aunque si hubiera sabido que un ICD2 costaba 30€ (envio incluido), NO HABRIA ESPERADO HASTA HOY para comprarlo... me habria ahorrado mucho tiempo, esfuezo y dinero  :mrgreen:
Título: Re: Boton "programar" en el hardware?
Publicado por: Nocturno en 08 de Septiembre de 2008, 01:39:17
¿Y porque no te sirve ya tú programa?
Título: Re: Boton "programar" en el hardware?
Publicado por: Marttyn en 08 de Septiembre de 2008, 01:52:51
no es que no sirva, pero entre que puedo programar directamente desde el CSS sin abrir siquiera el winpic y que me compre el ICD2, poco uso le voy a dar ahora.  :?
por lo que vi, el PICKIT y el ICD2 de microchip, ambos traen un boton "programar" como el que estaba buscando yo. Pense que tenia ideas algo absurdas, pero veo que no lo son tanto  :mrgreen:
Título: Re: Boton "programar" en el hardware? CONSEGUIDO
Publicado por: Marttyn en 24 de Septiembre de 2008, 02:09:34
Consegui ponerle el boton a mi hardware para que haga lo que queria!  :mrgreen:
El resultado puede verse en ESTE TOPIC (http://www.todopic.com.ar/foros/index.php?topic=23009.40)
Gracias por la ayuda!