TODOPIC
Microcontroladores PIC => Programadores => Mensaje iniciado por: Marttyn en 09 de Septiembre de 2008, 00:39:23
-
Me gustaria compartir con ustedes mis conocimientos sobre programadores.
Prologo (No es necesario leerlo :-))
Mis inicios en la electronica se remontan al rededor de 1990. Yo con 6 años ya me dedicaba a romper todo aparato electronico que caia en mis manos desmenuzandolo pieza por pieza. Años mas tarde mi aficion empezaba a ser menos apocaliptica, desarmaba todos los aparatos electronicos, y si podia los volvia a armar :mrgreen: Desde una linterna hasta mi Super Nintendo. Gracias a dios mi Snes sigue viva! Cuando consegui volver a armar con exito las cosas que habia desarmado me interese en aprovechar las cosas que no consegui volver a armar, utilizandolas en "algo". Ese "algo" fue mi primer gran proyecto. Un robot a radio control! Montado sobre la estructura de mi Typhon II Hovercraft R/C de Tyco.
(http://i3.iofferphoto.com/img/wantad/462/646/Typhon_II___1.JPG)
Por supuesto desarme el juguete mil y una vez... hasta que no volvio a funcionar.
Desde entonces hasta el dia de hoy he montado (y desmontado) muchas cosas, y cada vez mas complejas. Pero me tope con un proyecto en el que me di cuenta que mi electronica basica no era suficiente. Asi que hace 2 años me inscribi en una formacion profesional de electronica. A los pocos meses de inscribirme descubri este foro... Y me di cuenta que aqui encontraria toda la informacion necesaria, pero sobre todo gente con la que colaborar y compartir ideas. Es por eso que deje de estudiar (y porque las clases eran por la mañana :ni)).
Cuando descubri los PICs me dio un poco de panico, el potencial que estos ofrecen es mucho mayor a la complejidad y conocimientos necesarios para poder utilizarlos. Pero poco a poco fui dandome cuenta que con un poco de ganas puedes hacer de todo con estos bichitos. Lo primero que tuve que hacer para empezar a jugar ellos fue un programador. Encontre el Pablin II que parecia sencillo y lo construi. Por supuesto que por muy sencillo que fuera no entendia el porque de cada componente. Logico, si aun no entendia que era y como funcionaba un PIC. La verdad tuve muchos problemas con mi programador. Vi demasiadas veces el error de verificacion 0x00 :5] Esto me ha hecho buscar soluciones y hacer un programador nuevo aprendiendo de mis errores, y agregando mejoras. Ya voy por el 4º programador que armo, implementando en cada uno mejoras sobre el anterior.
Todo este camino ha hecho que sepa muchas cosas que me hubiera gustado saber desde el principio. Un programador QUE FUNCIONE es la base de un aficionado a los PICs. Por eso me gustaria compartir estas experiencias con el foro del que aprendi CASI TODO LO QUE SE.
Que es un programador?
Un programador es una herramienta fundamental en la vida de un aficionado o profesional de los microcontroladores. Pero que es un programador?
Un programador se encarga de guardar un programa dentro de un microcontrolador. Para este proceso necesitamos el programa compilado en un archivo HEX que especifica la informacion bit a bit que se almacenara en la memoria del microcontrolador. El programa se puede realizar en multitud de lenguajes (C, ASM, Basic, etc..) pero luego hay que compilar este programa, es decir "traducirlo" a HEX, que es el lenguaje que habla nuestro programador y el microcontrolador.
Para programar se necesita un software y un hardware. El hardware es el que grabara fisicamente el microcontrolador, y el software es el intermediario entre nuestra PC y el hardware.
Modos de grabacion
Los microcontroladores puen ser programados de 2 maneras:
- En un zocalo: Lo mas habitual es que nuestro programador tenga un zocalo donde insertar el microcontrolador y sea alli donde se programa.
- En el propio circuito de destino: Por muchos motivos es interesante poder programar el microcontrolador en el propio circuito donde luego hara su funcion. Esta manera de programacion se llama ICSP (In Circuit Serial Programing, o programacion serial en el circuito 8)) y basicamente es la extension de las "señales de programacion" desde el hard hasta el circuito definitivo del PIC.
Señales de programacion
Un microcontrolador de la marca Microchip (PIC) necesita 5 señales para el proceso de grabacion. Esas señales salen del programador y llegan a las patitas de nuestro PIC. Las señales son las siguientes:
- Vss: Tambien conocido como Gnd es la alimentacion negativa. Los demas voltajes seran con respecto a el.
- Vdd: Es el archienemigo de Vss, si se juntan saltan chispas :P. Es el terminal positivo. La mayoria de las veces seran 5v, pero hay PICs que necesitan 3.3v. Estos incluyen la letra J o K en el modelo. No preocuparse por esto, probablemente no te toparas con estos individuos. No confundir "Low Voltage Programing" con los PICs que funcionan a 3.3v! (Si no sabes lo que significa esto, olvidalo)
- Vpp: Voltaje de programacion. Es el voltaje necesario para que el PIC entre en modo programaion y el programador pueda escribir el HEX. Coincide siempre con el pin MCLR del PIC. Para no confundirte, si Vpp vale sobre 13v esta bien. Dependiendo el PIC el margen es mayor o menor, pero nunca superior a 14v!. AQUI (http://members.aon.at/electronics/pic/picpgm/devices/index.html) hay una tabla con los valores de Vpp admitidos por algunos PICs.
- PGC: Linea de reloj para la cominicacion serial. En algunos PICs aparece como "ICSPCLK". Por esta linea el programador transmite una señal de onda cuadrada entre Vss y Vdd marcando el pulso para la linea de datos.
- PGD: Linea de datos para la comunicacion serial. En algunos PICs aparece como "ICSPDATA". Por aqui el programador envia los datos a programar. Cada bit se transfiere en un flanco de bajada de PGC, es decir, en la transicion de Vdd a Vss.
Una vez sabido esto, es muy facil saber si un hard programador es compatible con el PIC que queremos programar. Primero si tiene ICSP es compatible por coj**es. Y sino, tendra uno o mas zocalos para colocar el PIC, hay que ver si alguno de los zocalos tiene una distribucion de los pines de programacion que coincida con nuestro PIC. Bien visto, cualquier PIC es compatible con cualquier programador, ya que si no tenemos el zocalo donde coincidan los pines de programacion de nuestro PIC, siempre podemos sacar 5 cablecitos desde el programador hasta un protoboard y programarlo alli... un ICSP casero :D
Señales de control
Las mencionadas anteriormente son las 5 señales que necesita un programador y son las que se transmitiran al PIC. Para que el hard programe necesita la informacion proveniente de la PC, por eso nuestro hard programador puede ser por:
- Puerto serie
- Puerto paralelo (El que tratare mas a fondo)
- USB
Para el puerto paralelo (LPT) las lineas de control que tienen que venir desde el PC al hard son:
- Ground: Negativo.
- Vpp1: Señal de Vpp.
- Clock: Señal de clock.
- Data: Señal de datos.
Tambien hay una linea de control que es Data In, que va del hard al PC.
Como veis hay dos cosas curiosas aqui. Primero, las señales de control son las mismas que las de programacion. Esto es porque la informacion que reciba nuestro hard desde el PC, sera la misma que luego el hard enviara al PIC. ¿Y para que sirve el hard si la informacion la puede enviar el PC directamente? El hard lo que hace es acondicionar las señales que llegan y adaptarlas. El puerto LPT trabaja con señales TTL de 0v y 5v en la teoria. En la practica los voltajes TTL (http://es.wikipedia.org/wiki/Tecnolog%C3%ADa_TTL) comprenden de 0.2v y 0.8v para un CERO logico, y de 2.4v y Vcc para un UNO logico. Estos voltajes no se adaptan a lo que necesita nuestro PIC. Por eso nuestro hard se encargara de "convertir" un CERO logico a 0v, y un UNO a 5v.
Tambien ocurre que nuestro puerto paralelo no nos provee de voltaje suficiente para que el PIC entre en estado de programacion (13v), por eso el hard tambien se encargara de "convertir" una señal de Vpp de control, en 13v para la programacion.
La segunda cosa curiosa es que necesiamos solo 4 lineas de control, pero son 5 las de programacion.
Esto es asi porque no hace falta (aunque se puede) controlar Vdd. Es por eso que nuestro hard puede tener un regulador 7805 dando 5v constantemente a Vdd.
Aun habiendo 4 lineas fundamentales, existen otras que añaden funcionalidades extra. Pueden ser:
- Data In: Esta la utiliza el software de programacion para comprobar si el hardware esta funcionando correctamente. Cada bit que envia el soft al hard, luego el hard la devuelve por la linea de Data In. El soft combrueba que lo que se envio y lo que se recibio es lo mismo, y si no lo es hay algun problema en algun sitio. Creo que tambien se utiliza para leer la programacion del PIC y seguro para algo mas que no se :oops
- Vdd: Como dijimos antes no hace falta controlar Vdd desde el PC, pero hacerlo nos trae algunas ventajas (AQUI (http://www.todopic.com.ar/foros/index.php?topic=18254.msg170817#msg170817) se puede ver una).
- Vpp2: Cumple la misma funcion que Vpp y solo se utiliza para la programacion en un zocalo. Debido a que cada familia de PICs (incluso dentro de la misma familia de PICs) tiene una distribucion diferente de los pines, seria imposible realizar un zocalo que se acomodara a todos ellos. Por eso alguna gente muy inteligente diseño zocalos que proveen el Vpp en un pin o en otro dependiendo que PIC sea, y asi utilizar un mismo zocalo para todos. Hay casos incluso de Vpp3 que cumplen la misma funcion.
- MCLR ICSP: Cuando programamos por ICSP nos puede interesar que una vez acabada la programacion, nuestro PIC se ponga a andar automaticamente. Esta linea se encarga de enviar un RESET al pin MCLR del PIC para que, concluida la programacion, comience a correr el programa recien grabado.
El puerto paralelo o LPT
Bien! Ya sabemos cuales son las señales que se necesitan para grabar un PIC, y cuales son las señales con las que podemos controlar nuestro hard. Ahora veamos como funciona el puerto paralelo. AQUI (http://cfievalladolid2.net/tecno/cyr_01/control/puerto_paralelo.htm) y AQUI (http://es.wikipedia.org/wiki/Puerto_paralelo) encontrareis todo lo que necesitais saber y mas sobre este puerto, pero a modo de resumen esto es lo que hay que saber:
El puerto paralelo es un puerto fisico de nuestro ordenador, y puede haber hasta 3: LPT1, LPT2 y LPT3 con direcciones base 0x378, 0x278 y 0x3BC respectivamente.
Cada uno de estos puerto cuenta con 3 "subpuertos" por decirlo de alguna manera. Estos 3 subpuertos se acceden independientemente el uno del otro teniendo su propia direccion, y es:
Bits de datos: Son los 8 bits de la direccion base. Se utilizan como SALIDA.
Bits de estado: Son los 5 mas significativos de la direccion base +1. Se utilizan como ENTRADA.
Bits de control: Son los 4 bits menos significativos de la direccion base +2. Son SALIDAS, pero pueden usarse tambien como entradas si se sabe como. (estos no los usaremos en el programador)
En esta imagen se puede ver la asignacion de pines y sus 3 tipos. Tambien se aprecia que hay pines "invertidos". En los bits de estado significa que cuando ese pin invertido este a "1", el PC leera un "0" y viceversa. Para los bits de control, significa que si enviamos un "1" a ese bit, saldra un "0" por el pin del puerto y viceversa :)
(http://www.doc.ic.ac.uk/~ih/doc/par/pinout.gif)
Si quereis jugar un poco con el puerto LPT podeis bajaros un programita que hice, y que sirve para controlar y monitorizar el puerto LPT. El programita se encuentra AQUI (http://www.todopic.com.ar/foros/index.php?topic=23062.0) y es este:
(http://i299.photobucket.com/albums/mm317/Marttyn/Electronica/LPT.jpg)
Suponiendo que queremos hacer un programador "con todas las de la ley" le pondremos 8 lineas de control: GND, Vdd, Vpp1, Vpp2, Data, Data In y Clock y ICSP MCLR, siendo imprescindibles las subrayadas.
Ahora debemos asignarle un pin del puerto a cada una.
- GND no tiene opcion, se conectara al GND del propio puerto.
- Vdd, Vpp1, Vpp2, ICSP MCLR, Data y Clock son SALIDAS, y se deben asignar dentro de los bits de datos
- Data In es una ENTRADA y se asignara a un bit de ESTADO
Por defecto la configuracion de los pines es la siguiente:
PIN SEÑAL
2 Data
3 Clock
4 Vdd
5 Vpp1
6 Vpp2
7 ICSP MCLR
10 Data In
Si nuestro soft permite configurar los bits para las señales de control podremos diseñar nuestro hard a nuestro antojo. Un ejemplo practico seria la configuracion del WinPic800 (http://www.winpic800.com)
(http://i299.photobucket.com/albums/mm317/Marttyn/Electronica/winpic.jpg)
- 1- Direccion base del puerto.
- 2- "Bit" nos permite asignas cada linea de control a un bit que queramos.
- 3- "Addr" nos permite seleccionar el registro que vamos a usar. Recordar: Datos = +0, Estado = +1, Control = +2
No es tan dificil una vez que sabemos como, verdad?
Tambien es bueno saber que la corriente maxima de salida de este puerto es de 2.6mA, y la corriente maxima de entrada es de 24mA. Con lo cual todo lo que supere estos valores hara PLOF a nuestro puerto.
Diseñar el Hardware
Como dijimos antes, nuestro hardware se encargara de acondicionar las señales que nos lleguen por el puerto paralelo y las transmitira fidedignamente al PIC.
GND se conectara directamente con el GND de nuestro circuito, asi como con el Vss del PIC.
El resto de señales de entrada deben "pasar por algun lado" para convertirse en niveles validos. Hay MUCHAS maneras de conseguir esto, dos son las mas utilizadas:
Un integrado: hay muchos para elegir, entre ellos el 74LS04 (Inversor), 74LS07 (Buffer o seguidor, colector abierto), ULN2003 (Darlington, permiten hasta 500mA de salida!). Si vamos a utilizar un integrado de la familia 74xx (http://es.wikipedia.org/wiki/Serie_7400), la mejor opcion seran los que tengan intercalada las letras "LS". Esto es porque son de la gama schottky de bajo consumo, esto nos garantiza una velocidad muy alta de transicion en la señal. Supongo que deberian funcionar bien tambien los "AS", "ALS" y "F", ya que en principio son mas rapidos que los "LS". Descartar por completo los "L", "H" y los "S", son lentos y obsoletos.
Transistores: hay miles de transistores diferentes, y muchisimas configuraciones posibles. Transistores NPN de uso habitual suelen ser: BC547 (100ma), 2N3904 (200mA) y BC337 (800mA). Y PNP, sus complementarios: BC557 (100mA), 2N3906 (200mA) y BC327 (800mA). Segun las necesidades usaras unos u otros.
Acondicionar Data y Clockes tarea sencilla. Simplemente haciendo pasar la señal por un integrado conseguiremos que se adapte a los valores que necesitamos, teniendo en cuenta que si utilizamos un inversor deberemos configurar nuestro soft para que envie la señal invertida, asi a la salida del inversor, la señal esta nuevamente "del derecho". Tambien podemos acondicionar Data y Clock con un transistor y un par de resistencias por cada uno.
Data In es probablente la mas facil de todas de acondicionar. Dado que es una linea de entrada, y por ella tiene que volver el dato que vino por Data, bastara con conectar Data In a la salida acondicionada de Data.
Acondicionar Vdd puede ser casi tan sencillo como Data y Clock. Un transistor y otro par de resistencias bastaran. Pero si pensamos en usar ICSP para programar, y queremos que esos mismos 5v sean los que den corriente al circuito, entonces necesitaremos un diseño mas cauteloso, mirando que nuestro circuito no demande mas corriente que la que el transistor pueda entregar.
La opcion mas facil y sin complicaciones seria no usar linea de control para Vdd, y simplemente podemos usar una fuente de alimentacion de 5v o si es mayor usar un regulador de tension como el 7805 para obtener los 5v. Estaran permanentemente encendidos y conectados al pin de Vdd. No hay mayor problema por esto.
Vpp1 y opcionalmente Vpp2 requieren algo mas de trabajo. Recordad que necesitaremos 13v para poder programar efectivamente. De donde sacamos 13v? Partimos de la base que un programador por puerto paralelo NO PUEDE darnos corriente suficiente para trabajar correctamente, por lo que se hace imprescindible la utilizacion de una fuente externa. Estas son las opciones:
Opcion 1: La mas facil, pero menos habitual, conseguir una fuente de alimentacion regulada que nos entregue entre 12.5v y 13.5v.
Opcion 2: nuestra fuente es de entre 15v y 30v, entonces podemos utilizar un regulador 7812 con 2 diodos entre Gnd del cricuito y Gnd del regulador, esto hara que haya una caida de 1.2v (0.6v en cada diodo) y en vez de entregar 12v como es habitual, nos entregara 13.2v, perfectos para Vpp.
Opcion 3: definitivamente la mas complicada, pero la mas recurrida cuando no hay de donde sacar suficiente voltaje (por ejemplo USB). Un STEP-UP, es decir, un elevador de tension. A partir de un voltaje conseguimos un voltaje superior. Pueden ser con voltaje de salida fija o voltaje de salida ajustable. El 34063AP es un integrado que hace exactamente esa funcion.
Opcion 4: Usar una fuente de 12v sera la opcion elegida por MUCHOS. Por suerte gran parte de los PICs les alcanzaran 12v para poder programarse efectivamente. Pero hay que tener cuidado, un LED mal colocado en la linea de Vpp puede hacer que nos caiga el voltaje (por la misma caida de tension del LED) y no sea suficiente para programar. Luego vienen los problemas de verificacion 0x00. Cosa muy habitual en los programadores tipo Pablin.
ICSP MCLR es una linea de control algo desconocida por mi de momento. Lo que tiene que conseguir es hacer un reset al PIC, es decir una bajada y luego una subida de tension en MCLR. Hay circuitos por ahi que utilizan esta funcion. Por ejemplo el GTP Remake (http://www.todopic.com.ar/foros/index.php?topic=14517.0). Si os interesa incluir esta funcion investigad un poco. Solo se usa cuando programamos por ICSP. Esta linea de control es totalmente prescindible para los que recien estan empezando.
Aqui dejo algunas de las configuraciones mas utilizadas para comandar Vpp y Vdd
(http://i299.photobucket.com/albums/mm317/Marttyn/Electronica/Transistores.jpg)
La señal del puerto paralelo entra por la base del transistor.
En el transistor NPN, cuando la señal enviada por el puerto sea un "1" pondra en saturacion el transistor y conducira, haciendo que la salida sea "0". Si la señal en la base es de "0", el transistor no conduce y la señal de salida es "1".
En el transistor PNP ocurre exactamente lo contrario, mientras haya un "0" en la base, el transistor estara en saturacion poniendo la salida en "1". Cuando la señal es un "1" el transistor entra en corto y la salida sera "0".
Una tabla de verdad para ambos transistores seria:
Entrada Salida
0 1
1 0
(http://i299.photobucket.com/albums/mm317/Marttyn/Electronica/Integrado.jpg)
En este esquema se utilizan como ejemplo un integrado 74LS07 (buffer) y un 74LS04 (inversor).
En el caso del buffer y el NPN, la señal a la entrada sera igual que la salida del buffer (a la salida hay que poner un pull up, porque es open collector), por lo que si la señal enviada por el puerto es un "0", a la salida del buffer tambien lo sera, como tambien en la base del transistor, dejandolo en corto, por lo que la salida esta a "1". En el caso de un "1" proveniente del puerto ocurre lo contrario.
Tabla de verdad:
Entrada Salida Buffer Salida
0 0 1
1 1 0
Con el inversor y el PNP ocurre diferente. La señal a la salida del inversor sera la opuesta a la que haya a la entrada. Por lo que si viene un "1" por el puerto, a la salida del inversor tendremos un "0" que activara el transistor poniendo la salida a "1". La señal contraria dara lugar al caso opuesto.
Tabla de verdad:
Entrada Salida Buffer Salida
0 1 0
1 0 1
Cuando veamos en nuestra tabla de verdad que la salida es opuesta a la entrada deberemos configurar nuestro soft para que invierta la señal que se envia, sino cuando este dando una orden de poner a "1" la linea, estaria haciendo lo contrario.
Como veis no puse valores a las resistencias. Estas dependeran del tipo de transistor que utiliceis y de la intensidad que querramos que circule por el transistor. Podeis encontrar informacion de como calcular las resistencias de los transistores AQUI (http://picmania.garcia-cuervo.com/Electronica_Basica.php#TRANS1Q1) Recordar que en la base del transistor no podemos poner nunca mas intensidad que la que nos puede entregar el puerto paralelo o el circuito integrado (mirar el datasheet del integrado).
Y hasta aqui llegan mis conocimientos. Espero haber sentado unas minimas bases para que cualquiera que quiera hacerse su propio programador pueda hacerlo sin DEMASIADOS problemas :mrgreen:
Al que le interese puede encontrar mi programador actual AQUI (http://www.todopic.com.ar/foros/index.php?topic=21912.0). En un par de dias subire el esquema.
Si necesitais esquemas para entender mejor y construir un programador dejo aqui unos links:
Por puerto paralelo:
Programador LPT (http://pjmicrocontroladores.wordpress.com/2006/11/20/documento-programador-por-puerto-paralelo-para-pic/)
Pablin 1 (http://www.pablin.com.ar/electron/circuito/mc/ppp/index.htm)
Pablin 2 (http://www.pablin.com.ar/electron/circuito/mc/ppp2/index.htm) (mi primer programador)
Programador Marco (http://personales.ya.com/cepalacios/ProgramadorMarco.htm) (mi segundo programador)
GTP - Remake+ (http://www.todopic.com.ar/foros/index.php?topic=14517.0)
Por puerto serie:
Pipo2 (http://213.97.130.124/progs/pipo2/pipo2.htm)
Simple PIC programmer (http://www.geocities.com/leon_heller/pic.html)
Pablin por puerto serie (http://www.pablin.com.ar/electron/circuito/mc/com84/index.htm)
Por USB:
Eclipse (http://eclip-se.es.tl/Eclipse.htm?PHPSESSID=e144844ee246a99f7881b78bc8fc381b)
Salu2!
PS: llevo desde las 9 de la noche escribiendo, y ahora son casi las 6 de la mañana! :z) eso si, hice un descansito para cenar, y otro para ir al baño... :mrgreen:
EDITO: estos dias hice alguna que otra pequeña modificacion sobre el texto, pero hoy agregue unos esquemitas de ejemplo para la creacion del hardware. (12/9/08)
EDITO2: agregue un link a un programita que monitoriza el LPT y que puede ser util (13/9/08)
-
Impresionante explicacion Marttyn, felicidades excelente articulo que haz escrito :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/
-
Ya descanza un poc la vista hombre! :D
Que se nota le has leido mucho!
Felicitaciones Marttyn.
Mediante tu post de alguna manera transmites el animo que llevas en este proyecto!
Saludos!
Atentamente
Akenafab
-
Gracias chicos!
Me ha llevado tiempo escribir el articulo, pero tenia ganas de compartir lo que sabia.
Como veis un programador es algo que, aunque me haya llevado mucho tiempo, logre entender. No como la mujeres... Por mucho que las estudie no las entendere... ¿Sera que no estan hechas de unos y ceros? :mrgreen:
-
:D :D :D :D :D
Te digo algo, las mujeres no saben ni lo que ellas quieren, mucho menos pueden entenderse, pero que hariamos sin ellas??
Saludos a todas las mujeres, especialmente a las que nos dieron la vida, un beso grande a mi vieja, y a mi hermosa novia, (que ha cada rato me peleo, esta celosa de los PICS, jajajaja) que por que le dedico mas tiempo a mis bichitos que a ella, a alguien le ha pasado?? bueno, creo que esto es para un offtopic, saludos
-
muy buen articulo Marttyn
gracias por el aporte :-/ :-/
-
Esta es la esencia del foro compartir lo que hemos aprendido para que los que vienen de tras les sea mas fácil es mi deseo que este maravilloso foro siga creciendo y con el tiempo logremos niveles técnicos muy altos. :-/ :-/
Gracias por compartir :g)
-
Muy bueno... si señor, con esas horas de esfuerzo has ahorrado posiblemente miles de horas de esfuerzo de otra gente que posiblemente algun dia hagan lo mismo...
Pero yo tengo una pregunta: en el caso del puerto paralelo, las salidas deberían ser directamente compatibles con las entradas de datos y clock del pic...no?
Saludos a todos.
-
Gracias por este excelente artículo Marttyn. Muy completa la información que sirve para complementar lo que uno sabe; muchas gracias nuevamente :-) :-)
-
Pero yo tengo una pregunta: en el caso del puerto paralelo, las salidas deberían ser directamente compatibles con las entradas de datos y clock del pic...no?
Saludos a todos.
en realidad si, deberian ser compatibles. pero en la practica mi ordenador actual entrega 4.1v como un "1". Mi antiguo ordenador era incluso peor, 3.2v como señal alta. recuerda que lo niveles TTL admiten un "1" a partir de 2.4v. por eso no esta de mas tomar alguna precaucion a la entrada para "normalizar" todos los voltajes.
Hay gente que por no complicarse ha hecho programadores de 5 o 6 componentes basicos... pero seguro daran muchos mas problemas que uno SOLO UN POCO mas complejo.
-
Si... he estado mirando y al menos en el caso del 16f627A/628A/648A las entradas Datat y Clock durante la programación se comportan como schmitt trigger y nececitan 0.8Vdd para alta y 0.2Vdd para baja, la primera vez que lo lei entendí 0.8Volt y 0.2Volt, lo cual me extrañó... y puede que por ahí venga el fallo que tenía ya que el 74ls244 entrega una salida un poco más alta que el 245 y además lo alimento ANTES de la resistencia que alimenta Vdd y en la otra versión no estoy seguro pero es posible que lo alimentara con la misma tesion Vdd, despues de la resistencia...
De todas formas puestos a darle vueltas al tema.... si la tension de entrada minima es relativa a Vdd 0.8 veces, entonces si bajo Vdd podría usar una entrada tambien más baja... el problema sería que para el borrado "bulk erase" <-- esto que es?... son necesarios 4.5v , pero para programar solo hacen falta 2v... en teoria se podria programar con Vdd por ejemplo 3v directamente de las salidas del puerto paralelo... no?
-
supongo que si puedes programar a 3v, exceptuando por el Vpp... pero si te digo la verdad, mis conocimientos no son tan amplios como puede parecer, tal vez puedas hacer un articulo que profundice sobre este tema, puede ser interesante!
como se ve, lo que explico yo es mas o menos basico. lo que tiene de bueno es que esta todo juntito para el que no sepa demasiado no tenga que matarse a buscar (como hice yo) :mrgreen:
salu2!
-
Excelente artículo, Marttyn. Gracias por ahorrarnos tanto trabajo
-
Hola:
Estupenda información compañero, muchas gracias por la información y el tiempo que te has tomado en redactarlo. :-/
-
hola amigo
Me parece un buen escrito te lo has currado,
esta muy bien, buena la informacion.
un saludo.
pd: otra cosilla revisa lo del data y el clock creo que repietes clcock tambien hay alguna otra cosa delante de eso que creo estan intercambiadas las letras y falta algun acento, pero quitando estas pequeñas cosas esta muy bien, es un articulo recomendable.
-
Hola pajaro!
Estos ultimos dias me lei el articulo unas cuantas veces para corregirlo y mejorarlo, pero ahora no encuentro lo que me cuentas... si me dices exactamente donde lo corrijo al momento que ahora estoy delante del ordenador.
El tema de los acentos... :oops: Siempre me como los acentos... los se poner, pero la verdad no estoy acostumbrado, y menos en el PC. Si el articulo tuviese todos los acentos que le corresponde habria tardado alguna horita mas... Halgo vueno a mi fabor es ke escazas bezes tengo faltas hortograficas :D
-
hola amigo
existe un truco, puedes pasarlos por el work, o un editor de texto con corrector ortografico y luego lo pegas aqui.
si este foro tubiera corrector ortografico seria diferente.
diseñar hard tercer parrafo.
un saludo
-
gracias pajaro! ya corregi lo de "clock"... se me habia chispoteado.
los acentos los dejare para otro post... pero si encuentras/encuentran mas errores avisadme.
salu2
-
Bueno Marttyn, yo no se gran cosa, pero como no me funcionaba ninguno de los programadores que hacía (el 4º funciono) me leí todo lo que había por ahí... entre otras cosas aparte del datasheet hay pdf de información de todo el proceso de programación del pic, timing, voltajes y mil cosas más, en la página de Microchip se pueden encontrar.
Luego hay varios problemas con algunos pics concretos, yo conozco un poco los 16F627A/628A/648A, pero creo que se puede aplicar a otros pics con las mismas características... por ejemplo los que tienen reloj interno: si la primera vez que lo programas activas el reloj interno y desactivas el reset externo mclr, entonces no podrás programarlo más con cualquier programador, porque si le das Vdd y no tiene ninguna señal reset se pone a ejecutar el codigo que hay en memoria... en realidad este pic y supongo que todos los que tengan reloj interno y se pueda desactivar mclr, para entrar en modo programación hay que subir primero Vpp y al menos 5 uS despues Vdd y 5 uS despues clock y data, pero el software que yo he probado no lo hace así... sube los dos a la vez o sube primero Vdd y si el programador no permite el control de Vdd y esta sienpre con +5v conectados pues entonces no hay manera, yo por siacaso siempre le dejo el reset externo... :)
Otra cosa es el LVP... programación a bajo voltaje... en estos pics esta opción se activa dando +5v a RB4 (patilla 10), si no se va a usar hay que poner esta patilla a masa, mejor a traves de una resistencia menor de 10k. Esta es una opción que no he probado y no he leido nada de nadie que lo haya provado, pero sería bueno quitarse de encima los 12v.... no?
Por eso hay programadores que funcionan bien con unos pics y no funcinan con otros... por ejemplo el "Pablin" que tiene siempre +5v a Vpp no serviria para estos pics ... en cuanto se programara se pondria a ejecutar el codigo (si se usa el reloj interno), pero si le añades otro transistor controlando Vdd pues todo bien...
-
hola Marttyn
tengo este programador, es por puerto paralelo con fuente externa,
http://www.info-ab.uclm.es/labelec/solar/grabacion/marco6.htm
que programador le seleccionarias tu con el Winpic800 y que configuracion le pondrias.
en el link, es el primero
un saludo
-
hola Marttyn
tengo este programador, es por puerto paraleo con fuente externa,
http://www.info-ab.uclm.es/labelec/solar/grabacion/marco6.htm
que programador le seleccionarias tu con el Winpic800 y que configuracion le pondrias.
en el link, es el primero
un saludo
hola pajaro! en el post hay suficiente informacion como para que puedas "descifrar" la configuracion necesaria tu mismo... si te fijas usan casi lo mismo que explico... un buffer y un transistor PNP para la señal.
pero bueno, a simple vista te diria que tienes que configurarlo de la siguiente manera:
Data: bit 0
Data in: bit 10, addr +1
Clock: bit 1
Vdd: bit 2, INV
Vpp1: bit 3, INV
Vpp2: bit 4, INV
ICSP MCLR: bit 5
pruebas asi a ver que tal te va. por cierto, el ICSP MCLR, como dije antes, no se muy bien como funciona. asi que si la configuracion no te va asi prueba invertir. sino siempre puedes no utilizarla destildandola arriba a la derecha, ya que no es fundamental.
ten cuidado con el circuito. por lo que vi creo que CI2 y CI3 estan invertidos. por lo que dice en la pagina, CI2 deberia ser un 7812, y CI3 un 7805, pero creo que es justo al reves. sino el regulador de 5v estaria alimentando al regulador de 12v y no funcionaria.
salu2
-
[...] hay varios problemas con algunos pics concretos [...] los que tienen reloj interno: si la primera vez que lo programas activas el reloj interno y desactivas el reset externo mclr, entonces no podrás programarlo más con cualquier programador, porque si le das Vdd y no tiene ninguna señal reset se pone a ejecutar el codigo que hay en memoria... en realidad este pic y supongo que todos los que tengan reloj interno y se pueda desactivar mclr, para entrar en modo programación hay que subir primero Vpp y al menos 5 uS despues Vdd y 5 uS despues clock y data [...].
Por eso hay programadores que funcionan bien con unos pics y no funcinan con otros... por ejemplo el "Pablin" que tiene siempre +5v a Vpp no serviria para estos pics ... en cuanto se programara se pondria a ejecutar el codigo (si se usa el reloj interno), pero si le añades otro transistor controlando Vdd pues todo bien...
Mi pablin tenia ese problema, y me hizo pasar muchos dolores de cabeza con pics como el 16F88 y el 16F648. Por suerte, como comento en el post principal encontre la respuesta AQUI (http://www.todopic.com.ar/foros/index.php?topic=18254.msg170817#msg170817)
veo que te has leido unos cuantos datasheets y application notes! tel vez debas instruirnos en como funciona el proceso de programacion de un pic, ya que yo solo abarco lo que es el hardware, pero estoy a cero en lo que es la programacion en si... seria muy interesante aprender como funciona todo ese proceso!
Otra cosa es el LVP... programación a bajo voltaje... en estos pics esta opción se activa dando +5v a RB4 (patilla 10), si no se va a usar hay que poner esta patilla a masa, mejor a traves de una resistencia menor de 10k. Esta es una opción que no he probado y no he leido nada de nadie que lo haya provado, pero sería bueno quitarse de encima los 12v.... no?
si, el tema de los 13v para programacio es jodido, sobre todo para mucha gente que empieza, porque no sabe de donde sacarlos. nunca me aventure con el LVP, y si nadie lo ha hecho supongo que sera porque da mas problemas que ventajas... aunque si descubres como usarlo satisfactoriamente seguro te convertiras en un heroe! :D
salu2
-
Pues si seria interesante que alguien pudiera explicarnos la señal ICSP MCLR y sobre todo como se implementa en el circuito alguna ves intente hacer pruebas y lo único que conseguí fue quemar el programador junto con una salida del puerto paralelo :(
-
si, el tema de los 13v para programacio es jodido, sobre todo para mucha gente que empieza, porque no sabe de donde sacarlos. nunca me aventure con el LVP, y si nadie lo ha hecho supongo que sera porque da mas problemas que ventajas... aunque si descubres como usarlo satisfactoriamente seguro te convertiras en un heroe!
El LVP no tiene nada de sofisticado ni de dificil en su utilización, es particularmente util en equipos donde es imposible conseguir voltajes superiores a 6V, por ejemplo un equipo alimentado a bateria, no es práctico colocar varias baterias en serie para elevar el voltaje tan solo para programar o depurar.
El problema del LVP en sí no radica en su dificultad de uso, sino en que si lo habilitamos, debemos prescindir del pin RB5 y por tanto de la posibilidad de utilizar el byte completo del puerto B, que tiene muchas funciones útiles.
El unico cuidado a tener en el LVP es filtrar adecuadamente este pin mientras no estemos programando.
Saludos.
-
Bueno... el proceso de programación puede cambiar de un modelo de pic a otro, pero supongo que estarán bastante unificados, yo solo he mirado para el del pic que estoy usando, en todo caso lo que hay que tener en cuenta a la hora de hacerse un programador es la secuencia de entrada en modo programación y los voltajes, en el caso del 16F627/628/6248 +A, que tienen LVP el proceso seria este:
*Para entrar en programacion alto voltaje (HVP):
1- Bajar PGM (a 0v) .........(yo lo tengo siempre a masa y palante, porque no uso lvp)
2- Subir mclr ( a Vpp)
3- Subir Vdd
*Para entrar en programacion bajo voltaje(LVP):
1- Subir Vdd
2- Subir PGM ( a Vdd)
3- Subir mclr (a Vdd)
*Voltajes mínimos/máximos
Vdd: 4.5v > < 5.5v ... esto es para no tener ningun problema con el borrado (bulk erase), pero se puedeprogramar desde 2v
Vpp: 10v > < 13.5v
Clock,Data (entradas tipo schmitt-trigger):
- 0 lógico < 0.2Vdd ... si Vdd=5v entonces <1v
- 1 lógico > 0.8Vdd ... si Vdd=5v entonces >4v
Pensando en Lvp se pierde una patilla para usarla como entrada, pero... no se podría usar esa patilla como salida?...
-
El LVP no tiene nada de sofisticado ni de dificil en su utilización, es particularmente util en equipos donde es imposible conseguir voltajes superiores a 6V, por ejemplo un equipo alimentado a bateria, no es práctico colocar varias baterias en serie para elevar el voltaje tan solo para programar o depurar.
El problema del LVP en sí no radica en su dificultad de uso, sino en que si lo habilitamos, debemos prescindir del pin RB5 y por tanto de la posibilidad de utilizar el byte completo del puerto B, que tiene muchas funciones útiles.
El unico cuidado a tener en el LVP es filtrar adecuadamente este pin mientras no estemos programando.
Saludos.
por lo visto no es ni complicado, ni extraño el LVP... mejor!
Pensando en Lvp se pierde una patilla para usarla como entrada, pero... no se podría usar esa patilla como salida?...
yo pense lo mismo que tu... se podra usar el pin como salida?
arcachofo, gracias por compartir como se entra un pic al modo programacion
salu2
-
Cita de: arcachofo en Hoy a las 10:14:13 pm
Pensando en Lvp se pierde una patilla para usarla como entrada, pero... no se podría usar esa patilla como salida?...
yo pense lo mismo que tu... se podra usar el pin como salida?
No, es ilógico, si lo utilizas como salida, como vas a colocar la señal de Vpp para que el PIC entre en el modo programación????. Si configuramos el fuse LVP, el pin RB4 cesa su funcion como GPIO y solo sirve como entrada de programación. Además tanto las interrupcion int_rb como la pull-up se desactivan para el pin en cuestión.
Saludos.
-
Si configuramos el fuse LVP, el pin RB4 cesa su funcion como GPIO y solo sirve como entrada de programación. Además tanto las interrupcion int_rb como la pull-up se desactivan para el pin en cuestión.
cuanta razon! :D
igualmente no creo que use mucho el LVP... mi programador actual no tiene tal funcion, y el ICD2 clone dudo que la tenga.
salu2
-
Aquí tenéis un ejemplo de programador que explota la característica LVP del 18F2550: ART2003 (http://www.todopic.com.ar/foros/index.php?topic=1720.msg14172#msg14172)
-
Si... es lógico, pero en el datasheet dice que cuando lvp está activado las interruciones y las resistencias pull-up quedan desactivadas en ese pin, pero no dice nada más... aunque como bien dice Gonzalo lo logico es que sea una cosa o la otra.. no las dos a la vez..
Pues lvp era mas facil de lo que me pensaba... acabo de grabar un 16F627A solo con 5v.. y es una tonteria, simplemente conecté la alimentacion de mclr a 5v en vez de a 12v y como el pin RB4 (PGM) lo tengo conectado a masa con una resistencia, lo conecte directamente a +5v sin ninguna linea de control ni nada, y ya está programador lvp construido..jejeje... le doy a programar esperando a ver que fallo me daba... y resulta que... programación exitosa!!!
El siguiente paso es lo que dice art 2003 de sacar la alimentacion del propio lpt.
Pero perder una I/O.... valdrá la pena?...
EDITO:
Borrado por si acaso...
VUELO A EDITAR:
Pues la patilla PGM no funciona como salida... habia hecho una prueba, pero me equivoque de cable y el led se encenció... así que pensé que funcionaba como salida incluso con LVP ON, pero no era el led conectado a RB4... jeje... vaya metida de pata, así que borro lo de antes no vaya a ser que alguien me haga caso...
-
Si... es lógico, pero en el datasheet dice que cuando lvp está activado las interruciones y las resistencias pull-up quedan desactivadas en ese pin, pero no dice nada más... aunque como bien dice Gonzalo lo logico es que sea una cosa o la otra.. no las dos a la vez..
Arcachofo, si lo dice en el DS y bien clarito, cito, Apartado 14.12 "Low-Voltage Programming", Pagina 112, del datasheet del 16F627/628A/648A:
"The LVP bit is normally erased to ‘1’ which enables the low-voltage programming. In this mode, the RB4/PGM pin is dedicated to the programming function and ceases to be a general purpose I/O pin.
Traducido al español:
El bit LVP es normalmente colocado en 1 lo que habilita la programación a bajo voltaje. En este modo, el pin RB4/PGM esta dedicado a la función de programación y deja de ser un pin de entrada o salida de propósito general.
Inclusive unas líneas más abajo, hay una nota en un recuadro sombreado que dice:
Note 1: While in this mode, the RB4 pin can no longer be used as a general purpose I/O pin.
En Español:
Nota 1: En este modo, el pin RB4 no puede ser utilizado como un pin de entrada o salida de propósito general.
Lo colocaron dos veces, como mínimo, creo que trataban de enfatizar algo importante :D :D :D
Saludos.
-
Pues si seria interesante que alguien pudiera explicarnos la señal ICSP MCLR y sobre todo como se implementa en el circuito alguna ves intente hacer pruebas y lo único que conseguí fue quemar el programador junto con una salida del puerto paralelo :(
De verdad nadie tiene idea como se utiliza esta señal :? :? :? :?
-
Gonzalo: pues si que es verdad... mira que lo busqué.. pero solo encontre las referencias que hace en la descripcion de los fuses y en la del puerto B... así que me dió por probar, la patilla mclr se puede usar como I/O y para entrar en modo programación, claro que el caso es distinto.
El problema de un programador LVP aparte de perder una patilla es que muchos pics no tienen esta capacidad, osea que solo vale para algunos pics.
Sandra: no se a que te refieres con la señal ICSP MCLR.. podrias contarnos qué es lo que hace?.... lo poco que yo sé es que ICSP simplemente es que programas el pic directamente en el circuito, en vez de sacarlo y ponerlo en el zócalo del programador; entonces el circuito tiene que estar pensado para esto, aislando las lineas que se usan en la programacón, por ejenplo con resistencias adecuadas, aunque seguro que se puede hacer se varias formas...
Supongamos que tienes un circuito con la opción reset externo (mclr) activada y tienes conectado mclr a +5v sin resistencia... si el programador manda un reset a esa patilla pues habrá un cortocircuito, porque estas conectando directamenta +5v con 0v pero si pones una resistencia entre mclr y +5v de manera que "separe" la señal que manda el programador de cualquier fuente de corriente en el cicuito, pues no debería haber problema: Supongo que la señal de la que hablas no es más que un reset por si el pic esta funcionando... por ejemplo el programador que estoy usando ahora no necesitaría otra linea para eso, ya que cuando no tiene Vpp alta está a masa, otros programadores (los que usan transistores PNP por ejemplo) no conectan mclr a masa, sino que queda en colector abierto, entonces necesitan otra linea para hacer ese reset.... supongo que por ahí irá la cosa.... no?
-
hola amigos
amigos marttyn, sandra..y demas amigos miren el link.
si alguien quiere saber algo del ICSP puede mirar este link (http://www.todopic.com.ar/foros/index.php?topic=22980.0)
aqui puse un resumen sobre ICSP y algunos link de este foro y de otros foros.
si alguien cree que falta algo o debe de cambiarse algo no dude en decirlo
un saludo.
-
En el programador win pic 800 hay una casilla con la opción mclr icsp que según su autor decía cuando participaba en el foro que la implemento porque había unos pic de la serie 18xxx que tras la programación requerían un reset adicional por que de lo contrario el pic marcaba error de programación.
Pero como la información al respecto ya no esta en el foro siempre me quedo la duda de cómo implementarlo en el circuito ya que vpp y mclr icsp van sobre el mismo pin que
Que es mclr.
-
Creo que esto es lo que estoy buscando aunque no lo entiendo bien si alguien pudiera explicar el circuito.
Creo que lo único que habría que hacer es cambiar el botón del reset manual por un transistor para conectar la base del mismo a una salida del puerto paralelo pin 5 O incluso dejarlo así para tener la opción de hacer un reset manual
(http://www.best-microcontroller-projects.com/image-files/example_icsp_connection.png)
-
Pues si seria interesante que alguien pudiera explicarnos la señal ICSP MCLR y sobre todo como se implementa en el circuito alguna ves intente hacer pruebas y lo único que conseguí fue quemar el programador junto con una salida del puerto paralelo :(
De que programador? Que es lo que quieres hacer? Sólo programarlo via ICSP y ya está? Especifica un poco más y los compañeros te podrán guiar un poco mejor.
En el programador win pic 800 hay una casilla con la opción mclr icsp que según su autor decía cuando participaba en el foro que la implemento porque había unos pic de la serie 18xxx que tras la programación requerían un reset adicional por que de lo contrario el pic marcaba error de programación.
El autor sigue participando en el foro.
Pero como la información al respecto ya no esta en el foro siempre me quedo la duda de cómo implementarlo en el circuito ya que vpp y mclr icsp van sobre el mismo pin que
Que es mclr.
Esa información si que está en el foro y además la puedes ver en su página personal.
El último post que pones no lo entiendo muy bien porque no se que es exáctamente lo que buscas. Si te esplicas un poco estoy seguro que obtendrás muchas respuestas.
Un saludo desde Alicante.
-
hola marttyn
configure el winpic800 como en la foto.
y me dio unos errores.
No me reconoce el dispositivo, no se si sera el pic o es que esta mal configurado el soft.
Pero me da como valido la prueba de hardware.
En el próximo post pongo el error.
Un saludo
-
hola continua ..
mira el error que me da..aparece en la foto pase el circuito a proteus, parece que funciona
sabrias decirme que puede ser
un saludo
-
Sandra, a mi entender y no lo tomes a mal, el circuito que posteaste no es correcto.
Aunque el mismo funciona bien durante la programación, el diodo D2 no permite una buena estabilidad del pin MCLR durante la operación normal del circuito, debido a que no puede filtrarse ningun tipo de ruido a masa en la configuración de la figura.
Además considero que el capacitor de 10 uF es innecesario, la corriente que drena normalmente el pin es minima, yo preferiria colocar algun capacitor de bajo valor, entre 100 nF y 1 nF dependiendo del ambiente, en reemplazo del mismo, que es un filtro más efectivo que el capacitor electrolítico de capacidad mayor.
El diodo D2 deberia ser removido, colocandolo en la rama de la resistencia pull-up. Además faltaria colocar una resistencia en el lugar del diodo, que limita la corriente que el capacitor puede introducir en el pin durante algun evento anomalo, ya sea ESD o OES. Además, la resistencia evita que se produzca el latch-up del PIC cuando tratamos de puentear MCLR a masa, en general con un pulsador (Microchip recomienda no puentear directamente MCLR a VSS porque se pueden inducir corrientes tan altas como 80 mA a traves del pin durante el evento). El valor de esta resistencia debe ser mayor a 1K segun el fabricante.
Esta es tan solo mi opinión personal en bases a mi experiencia y las recomendaciones de Microchip, cualquier opinión será bienvenida. El circuito que generalmente yo utilizo es el siguiente:
(http://s2.subirimagenes.com/otros/1115616mclr.jpg)
Tal como haz comentado Sandra, la serie PIC18 requiere de un reset, pero previo al comienzo de la programación antes de colocar la señal de Vpp, no conozco los detalles y tampoco desconozco si se requiere un reset postprogramacion, pero por experiencia propia puedo decir que al programar los 18F necesitamos una señal extra del ICSP para reiniciar el PIC automaticamente durante el proceso de programación. Tal vez alguien mas interiorizado con el protocolo pueda contarnos como funciona.
Saludos desde Argentina.
-
hola marttyn
configure el winpic800 como en la foto.
y me dio unos errores.
No me reconoce el dispositivo, no se si sera el pic o es que esta mal configurado el soft.
Pero me da como valido la prueba de hardware.
En el próximo post pongo el error.
Un saludo
pajaro, si no te funciona pueden ser 3 cosas:
-el pic (este lo dejamos para el final)
-el soft
-el hard
sigue estos pasos, comprueba que este bien configurado el soft. Esto no quiere decir que copies la configuracion que yo te di sino que mires detenidamente a tu hard y "descubras" como esta configurada cada linea. escribi un post muy extenso (tan extenso que los moderadores tuvieron que ampliar la longitud maxima de los post para que cupiera mi explicacion!) para que la gente ENTIENDA como funciona un programador. creo que tienes suficiente informacion alli como para averiguar por ti mismo cual es la config.
bueno... una vez chequeada la configuracion del soft, y corroborada que esta bien, pasas al hard... mira que las soldaduras esten bien, no hagan falso contacto, si lo hiciste en una plaquita de prototipos mira que no se toquen las soldaduras (a veces pasa). recuerda tambien lo que te dije de los reguladores de tension 7812 y 7805... me parece que estan mal colocados en el circuito!
vi ves que esta todo aparentemente bien en el hard comprueba los voltajes.
y si aun sigue sin funcionar.... puede que sea el pic...
mas no sabria decirte, espero que haya suerte!
salu2
-
hola amigos
Gracias por contestar, lo primero que hice fue verificar la fuente del programador, medí haber si los reguladores funcionaban, perfecto el 7085 daba 5.01 y el de 7812 daba 13.39v funcionaban les llega tensión. Después verifique los 220v y los del trasformador son correctos.
Lo siguiente que hice fue verificar a que correspondían el encendido de los diodos led, así fue que empecé a mirar la pcb y sacarme el esquema eléctrico, para pasarlo a Isis, y así lo hice.
Después empecé a intentar comprender el funcionamiento del circuito, donde estaba el clock, el data, como se encendía un led como se apagaba.
El led de arriba del todo el verdes es el de la fuente, se enciende si hay tensión en la fuente.
Ahora no si estarán bien montados los transistores BC557.
El soft. no se que programador elegir de la lista, no se como se llama el mío, así que opte por el polivalente.
Con respecto al circuito de la pcb creo que los pines 2,3,4,5,6,7 tiene inversores y el pin 10 un transistor. Cuando cambio el estado de algunos pines el led amarillo y naranja se apaga o se enciende, como cuando reprogramas el chip. Pordefecto los tengo comoen el pos de las fotos.
O están mal colocados los transistores o el pic con el que empecé haciendo las pruebas esta roto, hay forma de saber si un pic esta roto?
Me da el error que no me reconoce el pic, es un pic16F84A.
Alguien sabe decirme.
-
Sandra, a mi entender y no lo tomes a mal, el circuito que posteaste no es correcto.
Aunque el mismo funciona bien durante la programación, el diodo D2 no permite una buena estabilidad del pin MCLR durante la operación normal del circuito, debido a que no puede filtrarse ningun tipo de ruido a masa en la configuración de la figura.
Además considero que el capacitor de 10 uF es innecesario, la corriente que drena normalmente el pin es minima, yo preferiria colocar algun capacitor de bajo valor, entre 100 nF y 1 nF dependiendo del ambiente, en reemplazo del mismo, que es un filtro más efectivo que el capacitor electrolítico de capacidad mayor.
El diodo D2 deberia ser removido, colocandolo en la rama de la resistencia pull-up. Además faltaria colocar una resistencia en el lugar del diodo, que limita la corriente que el capacitor puede introducir en el pin durante algun evento anomalo, ya sea ESD o OES. Además, la resistencia evita que se produzca el latch-up del PIC cuando tratamos de puentear MCLR a masa, en general con un pulsador (Microchip recomienda no puentear directamente MCLR a VSS porque se pueden inducir corrientes tan altas como 80 mA a traves del pin durante el evento). El valor de esta resistencia debe ser mayor a 1K segun el fabricante.
Esta es tan solo mi opinión personal en bases a mi experiencia y las recomendaciones de Microchip, cualquier opinión será bienvenida. El circuito que generalmente yo utilizo es el siguiente:
(http://s2.subirimagenes.com/otros/1115616mclr.jpg)
Tal como haz comentado Sandra, la serie PIC18 requiere de un reset, pero previo al comienzo de la programación antes de colocar la señal de Vpp, no conozco los detalles y tampoco desconozco si se requiere un reset postprogramacion, pero por experiencia propia puedo decir que al programar los 18F necesitamos una señal extra del ICSP para reiniciar el PIC automaticamente durante el proceso de programación. Tal vez alguien mas interiorizado con el protocolo pueda contarnos como funciona.
Saludos desde Argentina.
Exacto esto mismo es lo que estaba buscando te agradezco mucho :-/ :-/ :-/
-
Hola amigos
winpic800 no me reconoce el dispositivo, pero lo lee ¿como es eso?
en la sección del programador le pongo el polivalente y le doy a detectar hardware y me tira error.
Si le pongo el pablin y le doy a test de hardware me dice O.K..
--------------------------------------------------
si no me detecta el pic, me dice que dispositivo desconocido, por que puede ser?
en que se basa el programador para detectarme el Dispositivo?
en próximas versiones de esto software, se podría incluir un útil que detecte que nuestro pic murió,
a lo mejor la tiene pero yo no doy con esa opción.
------------------------------------------------------
Algún forero conoce un manual detallado, detallado de verdad, sobre el winpic800 o algún link que me conduzca a ello.
----------------------------------------
actualmentelo tengocomo Pablin, de dice que hardwareO.K.
pero no me reconoce el dispositivoa programar
Cuando le doy a programar me dice:
error 0x00000000 escrito en 0x118A yleido en 0x3FFF
esto que significa, se que 0x00000000 tiene un significado por el
foro la gente pregunta mucho sobre esto pero aun no encontre solución
-------------------------------------
He estado leyendo por el foro post sobre el tema encontré un hilo del amigo nocturno , creí entender que cuando pones en modo test y mides tensiones en clock, vdd, data debía dar 5v y el Vpp 13v, alguien me puede corroborar esto.Las tensionesen Icsp beden de ser las mksmas que en el PIC.
--------------------------------------------------
También leí que en algunos programadores hay que tener mucho cuidado con los led de indicación ya que nos pueden robar tensión y evitar que las tensiones de 5v y 13v no sean las correctas. Podría ser este mi caso, pero no estoy seguro, yo le cambie los led por hilos pero es lo mismo.
-------------------------------------------------
Algún consejillo de alguien que tuvo en su momento este apuro.
Creo que estoy dando palos de ciego.
Un saludo
-
Que tal pajaro...
La configuración que vienen por defecto en "polivalente" en configuracion/harware (winpic800) va bien para ese programador... de hecho se supone que ese es exactamente el tuyo... no?, la configuración pablin no te vale porque no maneja Vdd
Si no te funciona entra en configuracion/harware (winpic800).. y vas activando cada linea (test) y mides la tensión en el mismo conector ICSP.... pero creo que esto ya te lo han dicho... no? ... si no haces esto seguirás dando palos de ciego...
--------------------------------------------------
También leí que en algunos programadores hay que tener mucho cuidado con los led de indicación ya que nos pueden robar tensión y evitar que las tensiones de 5v y 13v no sean las correctas. Podría ser este mi caso, pero no estoy seguro, yo le cambie los led por hilos pero es lo mismo.
-------------------------------------------------
NO puedes cambiar los led por hilos... en todo caso quitarlos
Por cierto.... con que estas alimentado el programador???
-
hola amigo Arcachofo
La verdad un poco mosca, mi programador es este:
http://www.info-ab.uclm.es/labelec/solar/grabacion/marco6.htm
en pagina 1 de este hilo por el final también lo puse.
en la pagina 2 del hilo hice hasta un esquema en proteus del programador.
uso un trasformador de 220 a 12 v 12, si medimos en los después de los diodos y masa hay unos 19 voltios, después mido lo del 7805 y da 5.01 y en el 7812 con los dos diodos mido y da 13.37, los estabilizadores en el esquema están invertidos el de arriba es el 7805, pero en el esquema de proteus están bien, y en mi placa también.
La cosa es que cuando hago eso del test se iluminan los led y si mido en el ICSP me da: 0.03v el clock, data, y el gnd, el Vdd mide 4.95v y Vpp me da 13.31v
en los clock de pines da lo mismo que en el ICSP,
Tengo dos preguntas ¿que configuración le pongo al winpic? si es polivalente ¿como lo hago ?con el esquema del proteus encontré que hay de los 7, 6 van con inversor 74LS07 es decir el pin:2,3,4,5,6,7 y el 10 libre que es el que lleva el transistor.
con pablin me dice O.K. pero no me detecta el pic bueno ni con esa configuración ni con ninguna,
No se esto no pude ser tan difícil, pero de momento ahí estoy con la configuración pablin. y me da eso del error 0x00000000 cuando lo grabo cualquier otra cosa no se queja pero no reconoce el dispositivo.
un saludo amigo.
si sabes por donde van los tiros me avisas.
-
No te acabo de enterder... en winpic800, menú configuración-harware... eliges polivalente... a la derecha te salen todas las lineas con sus correspondientes pines del puerto paralelo y todo eso... si no te sale, abajo a la izda de la ventana hay varios iconos... le das al último de la derecha... te salen todas las lineas que usa el programador... , arriba a la derecha tienes una casilla para desbloquear la configuracion si quieres cambiarla o hacer "test"....
En cada linea, a la derecha tienes una casilla en la columna "test", entonces cuando activas esa casilla tienes que tener voltajes en los correspondientes pines del pic o del icsp, y los led se tienen que encender, cuando le das a la linea data se tiene que "encender" la casilla de "data in"; en las lineas clock y data tiene que haber más de 4v, en Vdd 5v y en Vpp unos 13v, estos voltajes que te digo es cuando activas "test" en esa linea.... cuando desactivas "test" la tensión tiene que ser 0v (mas o menos) y se tienen que apagar los led.
La configuración que viene por defecto para el programador "polivalente" debería servirte, si no la has cambiado, claro.
-
Hola pajaro! veo que estas teniendo problemillas con el programador....
como te comente yo hace algunos dias la configuracion es esta:
a simple vista te diria que tienes que configurarlo de la siguiente manera:
Data: bit 0
Data in: bit 10, addr +1
Clock: bit 1
Vdd: bit 2, INV
Vpp1: bit 3, INV
Vpp2: bit 4, INV
ICSP MCLR: bit 5
y como te comenta arcachofo, la configuracion del polivalente deberia valerte:
(http://i299.photobucket.com/albums/mm317/Marttyn/Electronica/polivalente.jpg)
si sigues teniendo problemas planteate el error del pic o del hardware.
Algún forero conoce un manual detallado, detallado de verdad, sobre el winpic800 o algún link que me conduzca a ello.
creo que aqui podras encontrar informacion para entender como configurar el winpic. mas manual que esto no creo que necesites, ya que el resto solo es programar.
El puerto LPT cuenta con 3 "subpuertos" por decirlo de alguna manera. Estos 3 subpuertos se acceden independientemente el uno del otro teniendo su propia direccion, y es:
Bits de datos: Son los 8 bits de la direccion base. Se utilizan como SALIDA.
Bits de estado: Son los 5 mas significativos de la direccion base +1. Se utilizan como ENTRADA.
Bits de control: Son los 4 bits menos significativos de la direccion base +2. Son SALIDAS [...] (estos no los usaremos en el programador)
En esta imagen se puede ver la asignacion de pines y sus 3 tipos. Tambien se aprecia que hay pines "invertidos". [...]
(http://www.doc.ic.ac.uk/~ih/doc/par/pinout.gif)
[...]
Ahora debemos asignarle un pin del puerto a cada una de las señales de control.
- GND no tiene opcion, se conectara al GND del propio puerto.
- Vdd, Vpp1, Vpp2, ICSP MCLR, Data y Clock son SALIDAS, y se deben asignar dentro de los bits de datos
- Data In es una ENTRADA y se asignara a un bit de ESTADO
Por defecto la configuracion de los pines es la siguiente:
PIN SEÑAL
2 Data
3 Clock
4 Vdd
5 Vpp1
6 Vpp2
7 ICSP MCLR
10 Data In
Si nuestro soft permite configurar los bits para las señales de control podremos diseñar nuestro hard a nuestro antojo. Un ejemplo practico seria la configuracion del WinPic800 (http://www.winpic800.com)
(http://i299.photobucket.com/albums/mm317/Marttyn/Electronica/winpic.jpg)
- 1- Direccion base del puerto.
- 2- "Bit" nos permite asignar cada linea de control a un bit que queramos.
- 3- "Addr" nos permite seleccionar el registro que vamos a usar. Recordar: Datos = +0, Estado = +1, Control = +2
No es tan dificil una vez que sabemos como, verdad?
salu2
-
Hola amigos
Amigo Arcachofo y Marttyn puse vuestra configuración como venia por defecto el programador polivalente y ya me valida el hard,
Al hacer el test ahora si que consigo en data y clock 5v, en vpp sigo con los 13.39, en GND 0v, en Vdd 4.95v no llega a los 5.
Pero me sigue saliendo que dispositivo desconocido.
y cuando graba el mensaje sigue siendo el del error en dirección 0x00000000, escrito 0x118A ,Leído 0x3FFF
yo le meto el código de abajo .hex es un programita sencillo enciende y apaga luces del puerto, con pic16F84A con cristal de 4mhz. Este fue hecho con PSI.
¿esto que significa?
De todas formas cuando lee el pic que no se si lo lee, dice dispositivo desconocido :
3FFF 3000 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF..(3FFF se repite …)
Por un post leí que esto es lo que se lee cuando el pic vine de fabrica además en configuración viene con
RC y WDG activos como de fábrica.
Un saludo
-
que te detecte el hard en realidad no es señal de nada... el winpic envia algunos datos por "DATA" y si los recibe por "DATA IN" da como correcto al programador... con esto sabes que la linea de data y data in funcionan... pero tal vez estes teniendo otro problema en otro sitio... descartaste que fuera culpa de un pic quemado? sino casi seguro es del hard... muchas veces ocurre que el Vpp no es suficiente para programar, pero si para leer... aunque tu leas 13.39v, pero ese voltaje es SIN carga... tal vez cuando sometes ese voltaje a la carga de programacion, el voltaje baja
si pones TEST en Vpp1, Vpp2, MCLR y Vdd se encienden y apagan las luces correspondientes? (Vpp 1 y 2, mas MCLR deberian encender y apagar el mismo led con tu programador)
seguramente lo que te voy a decir no te solucione nada... pero a mi usar un buffer y luego un transistor PNP no me funciono para enviar correctamente el vpp al micro... aunque hay programadores que si que lo usan, a mi no me funcionaba de ninguna manera...
sino siempre te queda empezar de cero y hacer otro programdor que sepas que funcione... la verdad empezaste con uno que ya tenia los reguladores 78xx mal colocados... y eso no es buena señal :?
-
hola Marttyn
si el problema es el Vpp siempre puedo quitar los diodos del 7812 y ponerle las resistencias para hace un divisor de tensión con el conseguiría 13.56v mas que 13.35.
El led mas de abajo se enciende y apaga con Vpp, Vpp2 y MCLR, eso va bien.
Pero si el problema es el transistor es mas jodio.
Una pregunta ¿ todos los inversores deben de estar apuntando hacia el programador? en un link que me lei creo recordar que había uno mirando en sentido contrario.
En el link del LPT1
Me lo puedes confirmar.
-
los de tu 74ls07 no son inversores, sino buffers. si, deben "apuntar" todos hacia el programador, exepto uno (el de data in) que va hacia el PC.
no se si usar un divisor de tension en vez de los diodos solucionara algo... lo que puede ocurrir tambien es que estes utilizando un transformador a 12v, y para que tu regulador funcione necesitas un par de voltios por encima del voltaje del regulador. tambien te puedo decir que tengo unos cuantos transformadores y en vacio dan un voltaje, y al conectarlos bajan hasta en un 30%! en concreto tengo uno de 15 que iba a usar para hacer mi programador, pero luego lo conecte al programador y bajo a 11v :?
busca otra manera de alimentar el circuito que no sea con el transformador actual que tienes...
puedes ponerle 10 pilas AA en serie que te darian 15v, suficiente para que el regulador funcione bien...
no se que mas decirte
-
hola Marttyn
Mañana reviso el integrado pero creo que tan todos mirando hacia dentro.
Mañana es hoy.
Hola he mirado el pcb y hay inversores en las 6 patitas, en la 2,3,4,5, 6,7 y en la 10 transistor,
podría ser que uno de los inversores estuviera mal puesto.
Si confirmado están los 6 mirando hacia dentro.
Cual tendría que cambiar y poner hacia el LPT1, ¿en que pin esta?
Un saludo.
-
Bueno... yo lo primero que haría es probar con otro pic, antes de empezar a cambiar cosas del programador me aseguraría de que no es problema del pic.
El error que te dá: "error en dirección 0x00000000, escrito 0x118A ,Leído 0x3FFF" es cuando va a verificar lo que supuestamente se ha escrito y te lo dá en la primera posición de memoria: la ...0000, dice que escribió 0x118A y al verificar leyó 0x3FFF que es lo que hay en memoria antes de escribir nada (lo que "viene de fábrica"), osea que no ha escrito nada.
Si no te reconoce el pic es que no se puede comunicar con él; para reconocer el modelo de pic, lee una posicion de memoria donde hay un número que corresponde a un modelo determinado, si no consigue hacer esto dificilmente podrá hacer algo más.
Mi programador va con bufers y transistores y no hay problema, aunque puede depender de muchas cosas...
Tu programador no tiene bufer para Data in, lo maneja con un transistor, cuando haces el "test" en winpic800 si enciendes la linea "Data" se tiene que encender sola la linea "Data in", fijate en eso para saber si esta linea va bien.
Si los led de Vpp y Vdd se encienden, en principio los transistores estan bien.
Para saber si la alimentación es suficiente puedes poner una resistencia de 1k entre Vdd y masa (no entre +5v y masa) y en "test" enciendes Vdd , mide ahora la tensión Vdd y observa si hay alguna caida de voltaje; una resistencia de 1k a 5v consume 5 mA, no creo que el pic consuma más que eso durante la programación; esto hazlo sin ningún pic en el zócalo.
-
Hola Arcachofo
en la pcb hay 3 led uno esta siempre encendido, es el da la salida de la fuente más concretamente la salida del 7805, los otros dos led, el del medio se enciende cuando en el test le marcas Vdd, y el tercero se enciende cuando en el test le marcas Vpp, o VPP2, o MCLR, o los tres.
Para las otras líneas no hay led. Yo creo que si en el test le pongo a esas líneas, debería marcarme 5 voltios ¿verdad?
Lo voy a probar midiendo en el conector ICSP
Enumerare los valores entre paréntesis así (Vdd, Vpp, Clock, Data, GND)
Prueba 1:
En el test no enciendo nada, solo esta el led de la fuente y mido en ISCP los 5 pines (0.01, 0.00, 0.06, 0.06, 0.00).
Prueba 2:
En test on= Vdd se enciende el led del medio y mido en ICSP (4.96, 0.00, 0.06, 0.06, 0.00).
Prueba 3:
En test on= Vpp se enciende el led inferior y mido en ICSP (0.01, 13.29, 0.06, 0.06, 0.00)
Prueba 4:
En test on= Vpp2 se enciende el led inferior y mido en ICSP (0.01, 13.29, 0.06, 0.06, 0.00)
Prueba 5:
En test on= MCLR se enciende el led inferior y mido en ICSP (0.01, 13.29, 0.06, 0.06, 0.00)
Prueba 6:
En test on= Data no se enciende led, no hay mido ICSP (1.65, 0.00, 0.06, 0.06, 0.00)
Prueba 7:
En test on= Clock no se enciende led, no hay mido ICSP (1.65, 0.00, 2.31, 0.06, 0.00)
Prueba 8:
En test on = clock y Data no led encendidos, mido ICSP (1.74, 0.00, 2.40, 2.40, 0.00)
Prueba 9:
En test on=Vpp,Vpp2,MCLR led inferior en on, mido ICSP (0.01, 13.30, 0.06, 0.06, 0.00)
Prueba 10:
En test on=Vdd,Vpp los tres led on, mido ICSP (4.96, 13.30, 0.06, 0.06, 0.00)
Pueba 11:
En test on= Vdd, clock, data led del medio on , mido ICSP (4.96, 0.01, 5.01, 5.01, 0.00)
Prueba 12:
En test on=Vpp, clocl,data led inferior on, mido ICSP (0.00, 13.30, 5.01, 5.01, 0.00)
Prueba 13:
En test on=Vpp2, clocl,data led inferior on, mido ICSP (0.00, 13.30, 5.01, 5.01, 0.00)
Prueba 14:
En test on=MCLR, clocl,data led inferior on, mido ICSP (0.00, 13.30, 5.01, 5.01, 0.00)
Prueba 15:
En test on = las 6 lineas (sin data in),tres led on, mido ICSP (4.96, 13.30, 5.01, 5.01, 0.00)
Prueba 16:
En test on = las 5 lineas (sin data iny data),tres led on, mido ICSP (4.96, 13.30, 5.01, 0.06, 0.00)
Prueba 17:
En test on = las 5 lineas (sin data iny clock),tres led on, mido ICSP (4.96, 13.30, 0.06, 5.01, 0.00)
todo esto se hizo con el pic puesto y midiendo en ICSP.
Sigo pensando en lo de la comunicacion, en el programador los 6 inversores miran hacia dentro y ninguno lo hace hacia el LPT1
podria ser esta la causa.
un saludo
-
seguramente lo que te voy a decir no te solucione nada... pero a mi usar un buffer y luego un transistor PNP no me funciono para enviar correctamente el vpp al micro... aunque hay programadores que si que lo usan, a mi no me funcionaba de ninguna manera...
hola exacto tengo ahora ese problema en vpp en el test me marca 13.5 volts pero al momento de programar el voltaje se tira muy por de bajo de ese valor como mencionas del buffer al transistor tampoco me da buena espina.
Como fue que resolviste el problema. Que otra forma existe para enviarle al pic los 13.5 volts
saludos
-
pajaro, disculpa con lo que te dije antes, pero no es cierto. en el caso de tu programador, ningun buffer "mira hacia" el pc. ya que tu linea de data in se controla con un transistor.
no se si habras observado, pero cuando enciendes las lineas de data y clock no dan el voltaje adecuado. esto podria deberse a que el regulador 7805 necesita un consumo minimo para entregar 5v a su salida. si esta lineas no consumen nada, a la salida del 7805 el voltaje puede no ser el esperado, en cambio cuando activas data, clock y Vdd, puedes ver que estar lineas si dan el voltaje adecuado, y puede ser porque el led esta consumiendo algo, y hace que el regulador entregue los 5v.... son solo teorias mias :D
empieza por desactivar la opcion "Usar MCLR" en la configuracion del programador. Como nos han instruido, esto solo servira para algunos micros de la familia pic18. si lo desactivamos podemos ir descartando cosas.
sandra, yo el problema lo resolvi usando un inversor (solo por evitar el pull up) y dos transistores.
5v -- led -- R 390ohm -- colector bc547
salida del inversor -- R 4k7 -- base bc547
emisor bc547 -- GND
13v -- emisor bc557
colector bc547 -- R 4k7 -- base bc557
colector bc557 -- R 10k -- GND
colector bc557 -- salida de Vpp
me acabo de inventar una anotacion que no se si te servira para entender como es el esquema... si no lo entiendes avisa, pero la verdad me llevo muy mal con el eagle y si puedo evitar hacer el esquema mejor :mrgreen:
-
hola amigo
Mire en este link
http://pjmicrocontroladores.wordpress.com/2006/11/20/documento-programador-por-puerto-paralelo-para-pic/
En este link el data tiene inversor pero mira hacia el puerto en el mío mira hacia dentro de la placa.
Será por eso que no puede comunicarse con el pic.
El 7812 parte de 15,70v y el 7805 saca 5.01 los estabiliza a partir de los 13.30 que saca el 7812.
Si sacase 5.5 seria igual o le pasaría algo al pic o al puerto o al ICSP.
Un saludo
-
pajaro, disculpa con lo que te dije antes, pero no es cierto. en el caso de tu programador, ningun buffer "mira hacia" el pc. ya que tu linea de data in se controla con un transistor.
no se si habras observado, pero cuando enciendes las lineas de data y clock no dan el voltaje adecuado. esto podria deberse a que el regulador 7805 necesita un consumo minimo para entregar 5v a su salida. si esta lineas no consumen nada, a la salida del 7805 el voltaje puede no ser el esperado, en cambio cuando activas data, clock y Vdd, puedes ver que estar lineas si dan el voltaje adecuado, y puede ser porque el led esta consumiendo algo, y hace que el regulador entregue los 5v.... son solo teorias mias :D
empieza por desactivar la opcion "Usar MCLR" en la configuracion del programador. Como nos han instruido, esto solo servira para algunos micros de la familia pic18. si lo desactivamos podemos ir descartando cosas.
sandra, yo el problema lo resolvi usando un inversor (solo por evitar el pull up) y dos transistores.
5v -- led -- R 390ohm -- colector bc547
salida del inversor -- R 4k7 -- base bc547
emisor bc547 -- GND
13v -- emisor bc557
colector bc547 -- R 4k7 -- base bc557
colector bc557 -- R 10k -- GND
colector bc557 -- salida de Vpp
me acabo de inventar una anotacion que no se si te servira para entender como es el esquema... si no lo entiendes avisa, pero la verdad me llevo muy mal con el eagle y si puedo evitar hacer el esquema mejor :mrgreen:
Hermano discúlpame pero efectivamente no te entendí :lol: :lol: el esquemita me vendría muy bien no es necesario en agle faltaba mas, con unos trazos con el paint me doy por bien servida :-/ :-/ :-/
saludos
-
Hola a todos..
Pajaro:
Las pruebas que hiciste dan resultados extraños:
Marttyn... tu explicación me convenció en un principio,... pero pensando un poco: el led conectado al 7805 está siempre encendido.. y sobre todo: el bufer tambien está conectado al 7805, consumiendo posiblemente bastantes mA (el datasheet habla de más de 20 mA) y... con Vdd off y Vpp on tambien tiene voltajes correctos en clock y data... no crees?
De todas formas Clock y Data solo estan activas cuando Vdd y Vpp estan altas, osea en modo programación...
Lo que no acabo de tener claro es si el "Data in" se te enciende cuando activas el Data....
-
hola amigo
Mire en este link
http://pjmicrocontroladores.wordpress.com/2006/11/20/documento-programador-por-puerto-paralelo-para-pic/
En este link el data tiene inversor pero mira hacia el puerto en el mío mira hacia dentro de la placa.
Será por eso que no puede comunicarse con el pic.
amigo, como te dije antes:
los de tu 74ls07 no son inversores, sino buffers. si, deben "apuntar" todos hacia el programador, exepto uno (el de data in) que va hacia el PC.
el programado que señalas tu tiene exactamente lo que digo yo, un inversonr apuntando hacia el pc, que es el de DATA IN.
pajaro, disculpa con lo que te dije antes, pero no es cierto. en el caso de tu programador, ningun buffer "mira hacia" el pc. ya que tu linea de data in se controla con un transistor.
en resumen, todos los buffers deben mirar al programador. no tienes ninguno que mire hacia el pc porque ese trabajo lo hace un transistor.
pero te voy a dar la solucion definitiva.
CAMBIA LA FUENTE. creeme, sera tu solucion.
yo ayer estaba construyendo mi programador y estaba teniendo el problema que te ocurria a ti, que no me reconocia los dispositivos. habia optado por usar un step-up 34063. como el del GTP-REMAKE. a la salida del regulador tenia unos 13.5v, pero a la hora de la verdad, no me reconocia el pic. probe quitar el step-up y substituirlo por 12v de mi fuente regulable de alimentacion (12v de una fuente de PC, sin usar un 7812) y SANTO REMEDIO! prueba lo que te dije, puedes usar una bateria de 12v, pilas en serie, una fuente, pero evita un transformador! nunca me dieron resultados fiables, y excepto para algun caso en concreto, seguire sin confiar en ellos.
arcachofo, el led de Vdd no esta encendido todo el tiempo. solo se enciende cuando hay tension de Vdd, y consume unos 9.09mA. el buffer creo que habla de mA maximos, pero se debe referir al consumo maximo admitido por todas las compuertas consumiendo al maximo al mismo tiempo. sino hay consumo en las compuertas, el consumo sera minimo... Igualmente habria que hacer numeros, puede que el regulador 7805 este funcionando bien y alcance el consumo minimo, pero aun asi, el problema estoy casi seguro que radica en que hay algo mal alimentado. puede que el transformador, cuando tiene consumo baje su voltaje. si el voltaje no alcanca el minimo en la entrada del 7812, a la salida del regulador habra un voltaje aproximadamente igual al de la entrada. este voltaje probablemente haria funcionar bien el 7805, pero Vpp no seria adecuado...
lo que decia antes.... prueba alimentar el circuito con 12v regulados y no con un transformador
salu2
-
Hermano discúlpame pero efectivamente no te entendí :lol: :lol: el esquemita me vendría muy bien no es necesario en agle faltaba mas, con unos trazos con el paint me doy por bien servida :-/ :-/ :-/
saludos
sandra, no me olvide de ti! :g)
ya puestos a hacerlo, mejor hacerlo bien... acabo de terminar POR FIN mi programador... hice MIL pruebas para ver que me resultaba mejor y ya di con la "solucion" :mrgreen:
hay otro post donde prometi colgar el esquema de mi programador. intentare acabar mañana con el esquema, lo subo y te aviso para que veas cual es la configuracion que uso yo y me funciona.
salu2!
-
Marttyn... me refería al led que esta conectado directamente al 7805, osea el que marca si hay tensión en el circuito; pero de todas formas tienes toda la razón... si falla la alimentación empezará a fallar en el 7812.
-
tienes razon santiago, hay un led que indica que el circuito esta encendido...
mi programador consume 18mA en reposo y funciona sin problemas.... estoy convencido que el problema radica en el transformador... si se substituyera el transformador y el 7812 por una fuente regulada de 12v creo que quedaria resuelto.
a ver que nos cuenta pajaro
-
Hola amigos
Voy a llevar a la práctica lo de la fuente, el transformador es este
http://www.hipertronica.es/crovisa-m-137.html?osCsid=c9b5c56edbe57e986823a35a7972a6f6
Me da unos 32 v el trasformador es de entrada 230v 50/60Hz la salida es de 12v 0v 12v 2.8va
Si mido entre punta y punta del secundario me da 32v, si lo hago de masa a punta del secundario me da 16v medidos alternos, después hay dos diodos de estos negros IN4007 me rectifican a continua quedándome unos 15,5v.
Pues bien voy acoger la fuente del programador del link de Marttyn
http://pjmicrocontroladores.wordpress.com/2006/11/20/documento-programador-por-puerto-paralelo-para-pic/
La del divisor de tensión con 4700 y 220 de forma que el 7812 le voy a sacar los 13.5.
a la fuente de mi programador, le voy a quitar los dos diodos storky y se los cambiare con las resistencias. Lo malo es que no tengo condensadores de 47uf solo de 50uF
y probare haber si funciona.
Si aun así no funciona le subiré el Voltaje al 7805 también, el voltaje en vez de 5.01v le subiré a 5.5v haber como me rula.
Que os parece la idea.
Voy a probarlo.
Un saludo
-
pajaro, substituir los dos diodos por un divisor de tension es lo mismo... para lo unico que sirve el divisor de tension en la masa del regulador es para tener una referencia mas alta.
lo que te dije antes, y creo que es el problema es el transformador. QUITA el transformador y el regulador 7812 y cambialo por una bateria de 12v, 8 pilas de 1.5v en serie, 12v de la fuente de tu PC u otra cosa...
quitar los diodos y poner el divisor de tension no hara ningun cambio.
salu2
-
me olvidaba, no le subas el voltaje al 7805. los 5v que entrega este regulador son suficientes, y el problema no esta ahi. por lo del condensador de 47uF, es solo para estabilizar el voltaje, con lo que si pones uno de 50uF funcionara igual.
-
hola exacto tengo ahora ese problema en vpp en el test me marca 13.5 volts pero al momento de programar el voltaje se tira muy por de bajo de ese valor como mencionas del buffer al transistor tampoco me da buena espina.
Como fue que resolviste el problema. Que otra forma existe para enviarle al pic los 13.5 volts
saludos
sandra, no me habia olvidado de ti.
El "metodo" que uso yo para enviar la señal de Vpp es asi:
(http://i299.photobucket.com/albums/mm317/Marttyn/Electronica/control.jpg)
puedes mirar como queda el diseño del programador entero en ESTE TOPIC (http://www.todopic.com.ar/foros/index.php?topic=21912.0)
espero que te sea de ayuda. Salu2
-
Hola te agradezco por su puesto que me va a ser de mucha utilidad espero resolver por fin la caída de vpp .
El esquema completo no lo e podido abrir por que no tengo el agle pero la parte con que controlas vpp me a resuelto muchas dudas :-/ :-/ :-/ :-/
Un abraso
-
El esquema completo no lo e podido abrir por que no tengo el agle pero la parte con que controlas vpp me a resuelto muchas dudas :-/ :-/ :-/ :-/
.
Si no recuerdo mal, adjunte el esquema en formato eagle y en formato PDF. Deberias poder ver el esquema completo en PDF.
Salu2!
-
pajaro, substituir los dos diodos por un divisor de tension es lo mismo... para lo unico que sirve el divisor de tension en la masa del regulador es para tener una referencia mas alta.
lo que te dije antes, y creo que es el problema es el transformador. QUITA el transformador y el regulador 7812 y cambialo por una bateria de 12v, 8 pilas de 1.5v en serie, 12v de la fuente de tu PC u otra cosa...
quitar los diodos y poner el divisor de tension no hara ningun cambio.
salu2
Hola amigo
El problema podría ser que no llega tensión continua al estabilizador o el rectificado no lo hace bien, o le llega algo de oscilación, lo simule con el proteus y esta perfecto, 220 AC-> trasformador->16v AC desde cero, después de los diodos ,desde un diodo a masa 15 .80 voltios para estabilizar con el 7812 necesita la tensión de salida mas 3 voltios, es decir si queremos que nos saque 12v necesitamos que nos entren 15v, pero nos entran 30 no seria problema.
Si analizo la PCB el dibujo del fotolito tiene la pinta de tener un trasformador de 2 entradas y cuatro salidas, es decir en entrada la fase y el neutro, pero en salida hay cuatro tomas es decir es doble en la PCB del fotolito sacaría dos bobinas de 12 yo le puse un trasformador de 3 salidas, una salida de 12v otra de masa común y otra de 12v por lo tanto en el esquema hay un diodo por bobina por lo tanto solo rectifica media onda.
Pero analizando la parte del trasformador, los diodos y el regulador, nos damos cuenta que para 12v necesitamos 15v, pero nosotros trabajaremos con 13.5 es decir necesitamos 16.5 , nuestro trasformador nos saca 12v y 12v tendremos que sumarlas es decir tendremos 24v rectificados, el condensador es de 22uf 25v .
Podría ser, que no le llegase la suma de tensiones y por ello no funcionase, midiendo con el polímetro desde masa a la salida de uno de los bornes del trasformador da 16v pero en ningún caso las suma las tensiones, además los diodos se encuentran en paralelo, por lo tanto tensiones en paralelo sale la mitad.
Creo que estoy en lo cierto.
Un saludo.
-
El esquema completo no lo e podido abrir por que no tengo el agle pero la parte con que controlas vpp me a resuelto muchas dudas :-/ :-/ :-/ :-/
.
Si no recuerdo mal, adjunte el esquema en formato eagle y en formato PDF. Deberias poder ver el esquema completo en PDF.
Salu2!
Si tienes razón como lo abrí en el escritorio se me perdió el pdf
Te agradezco a muchos nos va hacer de mucha ayuda :-/ :-/
-
Que tal pájaro?...
Efectivamente, según el pcb el transformador tiene dos salidas rectificadas a media onda cada una,lo que equivaldría a una salida rectificada a onda completa, suponiendo que las salidas del transformador estan a contrafase, que es lo lógico; la estabilización la hacen los reguladores de voltaje, pero si en algún momento no les llega tensión suficiente pues la regulación va a estar mal...
Y la verdad es que el filtrado es muy escaso, solo un condensador antes de los reguladores de voltaje, que debería ser de al menos 1000 uf y los condensadores despues del regulador al menos 220 uf, aunque si quieres estar seguro podrías ponerle valores mayores y no le vendría nada mal unos condensadores de 0.1 uf; por ejemplo la fuente que estoy usando, aunque es de un tipo distinto, tiene unos 6 condensadores de 1000 uf, otros 6 de 100 uf, un par de inductores y varios condensadores de 0.1 uf y 100 pf.
Otra cosa que quizá pueda influir es que el transformador esté tan cerca del circuito,... nosé... quizá te convenga hacerte una fuente independiente y mejor filtrada y que además te pueda servir para otros usos.
-
Hola Amigos
La pelea entre el programador y yo la gano temporalmente el programador, hasta que tenga tiempo lo dejo de vacaciones en el cajon, de momento le hare caso al amigo Xocas y me ahorrare unas pelillas para comprarme el gtp-usb+.
Pero me quedo con la espinita clavada de que es lo que le pasa ha ese endiablado programador.
un saludo.
-
Hola Amigos
La pelea entre el programador y yo la gano temporalmente el programador, hasta que tenga tiempo lo dejo de vacaciones en el cajon, de momento le hare caso al amigo Xocas y me ahorrare unas pelillas para comprarme el gtp-usb+.
Pero me quedo con la espinita clavada de que es lo que le pasa ha ese endiablado programador.
un saludo.
antes de darte por vencido deberias probar de hacer lo que te dije. evita el transformador y el 7812 y por en su lugar 9 pilas AA en serie (13,5v). en su defecto puedes probar con los 12 de una fuente de ordenador (que es lo que uso yo) o algo que te garantice que el voltaje es el correcto.
a mi tambien me queda "la espinita clavada de que es lo que le pasa a ese endiablado programador"! :mrgreen:
-
hola Marttyn
Quite el trasformador y le puse dos pilas de 9v, de segunda mano, entre las dos dan 16.89v medidos por separado y en serie.
las conecto en uno de los 12v donde tendria la salida el trafo y el otro a la masa, y cuando mido me marca 10v por el camino me pierde mas de 6 voltios. Que cosa mas rara.
Terminare por enchufarle a la salida de los diodos de rectificado los 16.89 voltios.
Haber lo que pasa.
¿Tendra que ver con ello que no me reconozca los dispositivos que le pongo?
mañana sigo...
-
hola Marttyn
Quite el trasformador y le puse dos pilas de 9v, de segunda mano, entre las dos dan 16.89v medidos por separado y en serie.
las conecto en uno de los 12v donde tendria la salida el trafo y el otro a la masa, y cuando mido me marca 10v por el camino me pierde mas de 6 voltios. Que cosa mas rara.
eso puede deberse a la carga de las pilas de 9v. date cuenta que si son de 9v deberian tener al menos 9v si estan cargadas lo suficiente. pero si entre las 2 te dan sobre 17v, eso quiere decir que de media tienen 8.5v cada una... incluso una puede estar bastante cargada y la otra muy poco...
yo tengo un transformador de 15v, que si le conecto un 7812, a la salida hay tambien 10v... tampoco se porque...
-
hola amigo marttyn
Probé a ponerle el polímetros las pinzas entre masa y la entrada del 7812,
y baja la tensión, cuando programa, cuando lee y cuando verifica el winpic800.
he estado leyendo por ahí posiblemente sea que el condensador no sea suficiente
El mío es un condensador electrolítico de 1000u y el trasformador es de2.8VA, 12 0 12
voy a probar a ponerle 2200uf
haber como se porta
Un saludo
-
Hola de nuevo...
Me conseguí un PIC16F876A ya que necesito ADC, el caso es que en el programador paralelo que uso que funcionaba perfectamente con 16F628A pues no me lo reconoce, sabeis si el 876A tiene alguna diferencia... alguna experiencia co él?....
Me gustaría saber si es algo de este pic en concreto antes de ponerme a hacer otro programador, aunque ya le tengo echado el ojo al programador paralelo de Marttyn.
-
Santi, no tengo experiencia con el 16F876A, pero bastara con que mires el datasheet de dicho PIC y compruebes si las señales Vdd, Vss, Vpp, Data (PGD) y Clock (PGC) del programador coinciden con dichos pines en el PIC.
En teoria no deberia ser mas complicado que eso... en la practica SIEMPRE es mas complicado que eso :D
Suerte!
-
Pues si... me he mirado los pines y he hecho un zocalo "adaptador" un poco chapucero, pero tengo las señales en su pin correspondiente.
Una cosa que veo es que este pic tiene dos Vss, supongo que con darle masa a uno de ellos es suficiente.. no?
otra cosa es que veo en el esquema de tu programador paralelo varios pines conectados a masa.... esto es necesario o como va el tema?
Ya me veo haciéndome otro programador...
-
el esquema del zocalo zif esta copiado tal cual del diseño de sispic y su GTP-USB PLUS.
hay varios pines a GND porque depende que tipo de PIC conectes lo pondras en una posicion u otra, y necesitaras el GND en unos pines u en otros... todos los pines se repiten en el esquema del zif. Pero tu PIC solo necesita las señales en los pines que diga el datasheet. creo que si pone 2 Vss hay que conectar las 2.
Si tu programador funciona no es necesario que hagas otro... como mucho puedes hacerle un ICSP, es decir, ponerle un conector de 5 pines de donde puedes quitar las señales de programacion y extenderlas hasta una protoboard y asi poder programar los micros que no se adapten al zocalo que tienes.
salu2
-
Pues sí... voy a ponerle un conetor ICSP al programador que siempre viene bien.
He probado de todo: aumentarle Vpp de 12 a 13.2v, aumentar Clock y Data hasta 4.2v porque estaban muy justas, programar en LVP, cambiar de fuente, ponerle incienso, velas y música para que se relaje, Vss a los dos pines... y nada, no hay manera de que el pic responda... a ver como resuelvo el misterio.
Es posible que este pic tenga necesite más potencia de alimentación?
El caso es que tampoco encuentro datashhet de "programing specs" para este pic...
Pues nada... gracias por la información.
Saludos.
-
Hola
Pues primero como tú le llamas potencia de programación.
El termino correcto es vpp (voltaje de programación) este valor según los que saben y mis propias experiencias debe ser de 13.5 vcc sin pasar este valor porque después de los 14vcc te fríes el pic.
Segundo el fuce lvp es para programar por bajo voltaje (5vcc) además que dicho voltaje se conecta a un pin distinto del de mclr vpp. Así que si estas programando con alto voltaje este fuce lo debes desactivar.
Tercero debes respetar la alimentación que te marca la data el que te marque algunos pines dobles por ejemplo masa no significa que puedas conectar solamente uno ya que internamente estos pines no están conectados entre si mas bien alimentan partes diferentes del cto. Interno del pic . y al no conectarla el pic funcionara mal.
Un saludo
-
Sandra: gracias por la información.
Me refería a potencia de alimentación, no de programación, aunque debería haber dicho corriente de alimentación, pero ya que el voltaje de alimentación Vdd se mantiene constante, un aumento de potencia se refiere a un aumento de corriente.
Sí, para usar LVP hay que configurar el fuse correspondiente y dar la señal a la patilla correspondiente (PGM), con el 16F628A me funciona perfectamente, por eso lo intenté con el 16F876A, pero nada...
Por cierto, el pic viene con LVP activado, pero si se graba con el fuse LVP a off para volver a usar LVP hay que activarlo grabandolo con 13v, entonces ya se puede usar LVP.
En un principio había supuesto que cualquier Vss conecta a masa del pic... de todas formas ya he probado dándole masa a los dos Vss y tampoco consigo nada.
Tambien le he puesto un conector ICSP al programador conectado a un protoboard donde coloco los pics y así no consigo conectar ni con el 16F628A...
A ver si doy con el problema...
-
Tambien le he puesto un conector ICSP al programador conectado a un protoboard donde coloco los pics y así no consigo conectar ni con el 16F628A...
Para que te funcione el ICSP el cable hasta el protoboard tiene que ser realmente corto, hay quien dice que 15cm esta bien... pero a veces eso es demasido.
Salu2
-
Seguramente sea ese el problema, uso un cable de unos 15cm, además quizá sería conveniente que data y clock no fueran por cables consecutivos,... nosé realmente cual es el problema con la longitud del cable, ya que la caida es tan poca distancia es casi nula, supongo que más bien son interferencias entre las dos lineas, ya que uso cable apantallado y eso descarta las interferencias externas, voy a probar separando los cables por dos lineas apantalladas separadas a ver que pasa.
Por otro lado estoy dándole vueltas a hacerme otro programador.... y me está rondando la idea de usar un pic como bufer y para generar Vpp con una "bomba de carga", algo parecido al GTP-USB pero para puerto paralelo, aunque alimentado por USB... que piensas al respecto?
-
Pues bien si tienes alimentado correctamente el pic el test te da estos valores
Vpp 13.5
Data 4.5 o mas
Clock 4.5 o mas
Si estas alimentando tu pic con una fuente diferente a la de tu programador y tienes conectadas las masas de las mismas.
Ton avísame para prenderle una veladora. :mrgreen: :D :D :D :D
-
Lo consegui!!!.... gracias por el interés....
Sandra prende un velón pero de los gordos :D :D :D :D... más que nada a ver si cambio y soy un poco más cuidadoso...
Pues con ICSP si mando las señales data y clock por cables apantallados separados va bién, sinó alguna vez recibe algo, pero con errores. Ahora funciona bien con los dos pics, se vé que el zocalo "adaptador" que habia hecho en un principio no le gustaba a los duendes del programador... :-) , pero bueno... al final sirvió para algo, ahora mi programador tiene conector ICSP..
Pensando en el supuesto programador que mencioné antes... me dá la sensación de que el tiempo de respuesta de un pic es demasiado lento para usarlo como bufer directo.. no?, de todas formas quizá haga un par de pruebas y así aprendo algo...
-
dudo que un pic tenga tiempo de respuesta lento...
piensa que el GTP USB plus usa un pic, el ICD2 usa un pic....
ademas piensa, si hay un retardo, pero siempre es el mismo, el pic no se entera que hubo retardos, simplemente el pic se programa con retardo (de microsegundos) :mrgreen:
-
Pues al final me decidí a montar un zócalo de 28 p soldado y con un conector para el ICSP todo bien hechito, pensando en hacer pruebas con distintos cables y resulta que ahora funciona perfectamente con un cable plano de esos, de 20 cm sin apantallar ni nada... se vé que a los duendecillos les gustan las cosas bien hechas y ordenadas.... cualquier día de estos aprendo...
De cualquier forma creo que voy a empezar a plantearme los circuitos con ICSP, porque como soy novatillo y tengo que hacer muuuuchas pruebas con los programas, al final acabo harto de quitar y poner pics, además de que acaban fastidiándose las patillas con tanto trajín.
Es cierto lo que dices, si el retardo es el mismo en todas las lineas todo debería ir bien, y estaba confundiendo el tiempo de respuesta, osea el tiempo que tarda en pasar de 0 a 1 (algunos ns), con el tiempo que tarda en leer una entrada y escribir a una salida, que este sí es mucho mayor (algunos us); de todas formas solo estoy divagando con esto, por ahora seguiré con este programador hasta que me dé el próximo fallo.
-
Pues yo por cada 10 fallos que me da el programador, armo uno nuevo... :D
La poca experiencia que tengo con programadores es porque estos me daban errores y me cansaba, me ponia a investigar y armaba otro desde cero...
Dendro de poco seras un experto en programadores :mrgreen:
-
Lo consegui!!!.... gracias por el interés....
Sandra prende un velón pero de los gordos :D :D :D :D... más que nada a ver si cambio y soy un poco más cuidadoso...
Pues bueno que bien que por fin te funcione el programador :-/ y con eso de la veladora de las gordotas para la distracción no te preocupes que siempre tengo una encendida para mí :mrgreen: así que la puedo compartir. :D :D :D
Ahora con respecto a utilizar un pic como bufer tan solo como eso lo veo innecesario y en consto excesivo cuando hay integrados específicos para esa tarea.
Ahora que tratándose de un desarrollo completo como los programadores ya mencionados que únicamente cargan el .hex y realizan toda la faena de modo autónomo pues bueno esas ya son palabras mayores.
Con respecto a utilizar la alimentación del puerto usb para alimentar el programador lo miro poco práctico y además riesgoso cualquier corto y te chutas en el menor de los casos el puerto usb.
Si lo que deseas es que tu programador sea independiente en cuanto a su alimentación recuerdo alguna ves haber visto programadores paralelos que se alimentaban a trabes de una batería de 9v es una modificación un poco mas costosa porque requiere dos convertidores DC DC uno para obtener los 5 vcc y otro para los 13.5 anque es probable que existan otros métodos para obtener estos voltajes a través de la pila de 9v es el mas recomendable para obtener la mayor eficiencia de la batería.
Un saludo :g)
-
Ahora que tratándose de un desarrollo completo como los programadores ya mencionados que únicamente cargan el .hex y realizan toda la faena de modo autónomo pues bueno esas ya son palabras mayores.
Si claro... eso son palabras más que mayores para mí... por lo pronto ese pic debería vérselas con el protocolo USB para la transmisión de datos... eso ni me lo imagino...
La idea era usar un pic no solo como bufer, sino además para generar 10v o 11v para Vpp, también para suministrar Vdd a traves de una de sus patillas (Vdd=4.5v es suficiente) y para gestionar LVP o HVP controlado por un conmutador por ejemplo, entonces el programador solo sería un pic de 18 pines barato y algún condensador y diodo para la bomba de carga, pero sin transistores ni reguladores de tensión, con lo que seria un hardware más sencillo y más barato,... si fuera posible hacerlo.. claro
Con respecto a utilizar la alimentación del puerto usb para alimentar el programador lo miro poco práctico y además riesgoso cualquier corto y te chutas en el menor de los casos el puerto usb.
Eso si que es verdad.... pero quizás con una resistencia limitadora de muy pocos ohm se pueda proteger,... nosé... no conozco las características del puerto USB, ya te digo que por ahora solo estoy divagando con esto.
-
Pues poco me ha durado la alegría... el caso es que programa todo bien, menos User IDs... no sé porqué.
Es esto importante?... a mi me dá que no, pero me extraña mucho el tema.
-
Marttyn: estoy leyendo tus experiencias con los programadores. Quisiera hacerte una pregunta, ¿tú programador actual me sirve para un PIC18F4520? Es decir, ¿has programado ese tipo de micros? Aparte, te doy mis más sinceros agradecimientos, chao. :-/
-
Hola amigo! Bienvenido al foro!
La verdad no probe programar ese pic en concreto, pero como digo al principio:
Señales de programacion
Un microcontrolador de la marca Microchip (PIC) necesita 5 señales para el proceso de grabacion. Esas señales salen del programador y llegan a las patitas de nuestro PIC. Las señales son las siguientes:
* Vss: Tambien conocido como Gnd es la alimentacion negativa. Los demas voltajes seran con respecto a el.
* Vdd: Es el archienemigo de Vss, si se juntan saltan chispas Razz. Es el terminal positivo. La mayoria de las veces seran 5v, pero hay PICs que necesitan 3.3v. Estos incluyen la letra J o K en el modelo. No preocuparse por esto, probablemente no te toparas con estos individuos. No confundir "Low Voltage Programing" con los PICs que funcionan a 3.3v! (Si no sabes lo que significa esto, olvidalo)
* Vpp: Voltaje de programacion. Es el voltaje necesario para que el PIC entre en modo programaion y el programador pueda escribir el HEX. Coincide siempre con el pin MCLR del PIC. Para no confundirte, si Vpp vale sobre 13v esta bien. Dependiendo el PIC el margen es mayor o menor, pero nunca superior a 14v!. AQUI hay una tabla con los valores de Vpp admitidos por algunos PICs.
* PGC: Linea de reloj para la cominicacion serial. En algunos PICs aparece como "ICSPCLK". Por esta linea el programador transmite una señal de onda cuadrada entre Vss y Vdd marcando el pulso para la linea de datos.
* PGD: Linea de datos para la comunicacion serial. En algunos PICs aparece como "ICSPDATA". Por aqui el programador envia los datos a programar. Cada bit se transfiere en un flanco de bajada de PGC, es decir, en la transicion de Vdd a Vss.
Una vez sabido esto, es muy facil saber si un hard programador es compatible con el PIC que queremos programar. Primero si tiene ICSP es compatible por coj**es. Y sino, tendra uno o mas zocalos para colocar el PIC, hay que ver si alguno de los zocalos tiene una distribucion de los pines de programacion que coincida con nuestro PIC. Bien visto, cualquier PIC es compatible con cualquier programador, ya que si no tenemos el zocalo donde coincidan los pines de programacion de nuestro PIC, siempre podemos sacar 5 cablecitos desde el programador hasta un protoboard y programarlo alli... un ICSP casero lol
en resumen, cualquier programador deberia servir para cualquier micro siempre y cuando las señales del zocalo de programacion coincida con la distribucion de pines de nuestro micro.
No quiero tirar por tierra mi programador, pero por el foro hay muchos otros programadores mas utiles que este... sobre todo los que son USB.
Aunque admito que este puede ser mas simple de hacer, y aprenderas muchas cosas en el intento :mrgreen:
-
Muchas gracias Marttyn; estaba tan concentrado en tus otros temas que no me había fijado que me habías respondido, muchísimas gracias. He estado leyendo y me he dado cuenta de que en principio todos los PIC utilizan las mismas señales de programación. Quería hacerte una pregunta: veo muchos Vdd, Vss, DATA, Clock y Vpps, pero según entiendo, cuando uno conecta un micro de 8, 18, 28 o 40 pines, el WinPIC se da cuenta de que microcontrolador le conecté y habilita únicamente las líneas apropiadas. Marttyn, ¿es correcta mi apreciación o me equivoco? pues la verdad no entiendo muy bien como decirle al WinPIC que le estoy conectando un micro de 8, 18, 28 o 40 pines. Dios te bendiga, muchas gracias, que te siga yendo muy bien. :-/
-
Amigo, no hace falta que dios me bendiga por echarte una mano! Seguramente habra a quien le haga mas falta :P
El tema de las lineas de programacion es asi, cualquier micro de la empresa microchip necesita Vpp, Vss, Vdd, Clk y Dat para ser programado. Segun nuestro pic tenga mas o menos pines, la posicion de los pines de programacion en el chip sera una u otra. Se podria decir que todos los pics con el mismo numero de pines tiene ubicado los pines de programacion en el mismo sitio, por ejemplo, los pics de la familia 12F de 8 pines tiene Vdd en el pin 1, y Vss en el pin 8. Nota1
Podriamos tener varios zocalos, uno de 8, otro de 18, otro de 28 y otro de 40 pines. Esto nos garantiza que poniendo el pic en el zocalo correspondiete, las lineas de programacion estaran ubicadas correctamente. Asi es como esta diseñado el pablin 2 (http://www.pablin.com.ar/electron/circuito/mc/ppp2/index.htm)
El problema de los zocalos normales es lo molesto de ponerlos y quitarlos, ya que podemos romper las patitas. para eso existen los zocalos ZIF (zero insertion force, fuerza de insercion nula). Para no tener varios zocalos zif, que ademas de ocupar espacio son caros, a alguien se le ocurrio diseñar una distribucion de las lineas de programacion para poder colocar en un mismo zocalo de 40 pines cualquier pic, sea cual sea el numero de pines que tenga. Asi, colocando el pic en una posicion u otra dentro del zocalo las lineas de programacion que hacen contacto con sus patas es la correcta. Nota2
Por desgracia no es posible hacer que quepan en un mismo zocalo TODOS los pics, por eso inventaron Vpp1 y Vpp2 que es lo mismo que Vpp, solo que aplicado en pies diferentes, asi cuando en winpic seleccionas un pic de 8 o 18 pines, la señal de Vpp se enviara por el pin 5 del LPT hacia el programador, mientras que si seleccionas un pic de 28 o 40 pines este enviara la señal de programacion por el pin 6 del LPT (leete esta parte nuevamente en el primer post) y eso hace que nuestro zocalo tenga 2 Vpp. Esto es porque Vpp es el unico voltaje "peligroso", ya que al ser de unos 13v, si se aplica en el pin incorrecto puede dañar nuestro pic. Mientras que las demas señalas de programacion no son mas que 0v o 5v, por lo que si se aplican en pines no destinados a la programacion, realmente no ocurrira nada. Asi, al colocar un pic en uno de estos zocalos, tendra Vss, Vdd, Clk, Dat y Vpp donde corresponde, y ademas seguramente tenga Vss, Vdd, Clk o Dat aplicado en algun otro pin, aunque no le corresponda, pero NUNCA tendra Vpp en un pin que no le corresponda.
Nota1: hay pic que no son como el resto, y por mas que tengan 8, 18, 28 o 40 pines, puede que la distribucion de las lineas de programacion sea diferente a la gran mayoria. si es la primera vez que trabajamos con algun pic, lo ideal seria mirar su datasheet para ver si coincide con nuestro programador.
Nota2: Para saber cual es la posicion dentro del zocalo zif primero seleccionar el pic que vamos a programar en el winpic, y luego darle al boton que tiene forma de chip en un zocalo, que esta justo debajo del boton "programar". Esto nos dira como colocar el micro en el zocalo
Bueno, espero haber aclarado mas que enredado.... tengo el don de no saber explicarme :D
Salu2
-
Estimado Marttyn. Eso que me acabas de explicar no es más que la comprobación de algo que ya sabía, simplemente necesitaba que tú, el autor de tan expectacular programador me diera su visto bueno, lo cual acabas de hacer al darme una explicación que coincide con lo que tenía en mente. En conclusión, eso significa que tienes el don de SI SABER EXPLICARTE y si, me has aclarado y de ninguna forma me has enredado. De todas formas, volveré a repasar tus preciados aportes "Construir y entender un programador" y "Tengo programador nuevo! (ZIF, 2 Vpp, Vdd, ICSP...)". Muchas gracias, espero que el próximo mensaje que te escriba incluya una foto con mi programador. Salu2 :-/
-
Pues esperara por las fotos, animo! :mrgreen:
-
Sandra, a mi entender y no lo tomes a mal, el circuito que posteaste no es correcto.
Aunque el mismo funciona bien durante la programación, el diodo D2 no permite una buena estabilidad del pin MCLR durante la operación normal del circuito, debido a que no puede filtrarse ningun tipo de ruido a masa en la configuración de la figura.
Además considero que el capacitor de 10 uF es innecesario, la corriente que drena normalmente el pin es minima, yo preferiria colocar algun capacitor de bajo valor, entre 100 nF y 1 nF dependiendo del ambiente, en reemplazo del mismo, que es un filtro más efectivo que el capacitor electrolítico de capacidad mayor.
El diodo D2 deberia ser removido, colocandolo en la rama de la resistencia pull-up. Además faltaria colocar una resistencia en el lugar del diodo, que limita la corriente que el capacitor puede introducir en el pin durante algun evento anomalo, ya sea ESD o OES. Además, la resistencia evita que se produzca el latch-up del PIC cuando tratamos de puentear MCLR a masa, en general con un pulsador (Microchip recomienda no puentear directamente MCLR a VSS porque se pueden inducir corrientes tan altas como 80 mA a traves del pin durante el evento). El valor de esta resistencia debe ser mayor a 1K segun el fabricante.
Esta es tan solo mi opinión personal en bases a mi experiencia y las recomendaciones de Microchip, cualquier opinión será bienvenida. El circuito que generalmente yo utilizo es el siguiente:
(http://s2.subirimagenes.com/otros/1115616mclr.jpg)
Tal como haz comentado Sandra, la serie PIC18 requiere de un reset, pero previo al comienzo de la programación antes de colocar la señal de Vpp, no conozco los detalles y tampoco desconozco si se requiere un reset postprogramacion, pero por experiencia propia puedo decir que al programar los 18F necesitamos una señal extra del ICSP para reiniciar el PIC automaticamente durante el proceso de programación. Tal vez alguien mas interiorizado con el protocolo pueda contarnos como funciona.
Saludos desde Argentina.
Hola amigo Marttyn. Recuerdas que te dije que volvería a leer tus aportes "Construir y entender un programador" y "Tengo programador nuevo! (ZIF, 2 Vpp, Vdd, ICSP...)". Pues ya lo hice y aprendí aún más. Te cuento que estoy investigando todos estos temas para poder encender un bombillo que este en otra casa distinta a la mia, a través de Internet, utilizando PIC de la familia 18 y ENC28J60. Ya realicé tu esquema en el Proteus que es el software con el que me gusta trabajar y como ya te dije volví a leer los foros. Me preocupa mucho lo que le respondió Gonzalo a Sandra en este post. Según entiendo, si deseo programar mi micro 18F452 o 18F4550 empleando tu programador debo hacer lo siguiente: 1) debo añadirle ese circuito de reset a tu Programador Zif, 2) debo programar mi micro y 3) debo oprimir el pulsador reset al finalizar el proceso de grabación. La verdad es que si o si necesito programar micros de la serie 18 y para serte sincero me gusto mucho tu programador. Te agradecería mucho tus aclaraciones y tu colaboración, de antemano gracias.
-
Holas amigos del foro.
Me siento un poco apenado por haber dirigido mi último post únicamente a Marttyn ya que soy conciente de los grandes aportes de los demás integrantes como Sandra, pajaro, arcachofo, Marttyn y gonzalo, entre otros. Les estoy muy agradecido a todos ustedes.
Mi duda es la siguiente: necesito programar microcontroladores de la familia 18F, más exactamente los 18F452, 18F4520 y 18F4550; ya tengo listo el diseño del programador ZIF de Marttyn y estoy dispuesto a quemarlo en el ácido, pero no estoy seguro de si necesito añadirle al programador de Marttyn el circuito de reset que va al pin mclr propuesto por Gonzalo_BlackHawk. Aclaro que por el momento no necesito de ninguna manera programar In Circuit, es decir, ICSP.
A todos los integrantes de este foro, muchísimas gracias, bye :-/
-
La verdad no tengo idea de si puedes programar pics de la familia 18... suponia que si... pero los que saben diran.
Quizas seria mejor que busques por el foro si hay algun post sobre esto, y sino crees uno, porque aqui tal vez no obtengas demasiadas respuestas...
Salu2