Autor Tema: Construir y entender un programador  (Leído 46245 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Construir y entender un programador
« 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.

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 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 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 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 y AQUI 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 :)



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 y es este:




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



  • 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, 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. 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



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



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 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. 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
Pablin 1
Pablin 2 (mi primer programador)
Programador Marco (mi segundo programador)
GTP - Remake+

Por puerto serie:
Pipo2
Simple PIC programmer
Pablin por puerto serie

Por USB:
Eclipse

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)
« Última modificación: 12 de Septiembre de 2008, 23:41:17 por Marttyn »
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: Construir y entender un programador
« Respuesta #1 en: 09 de Septiembre de 2008, 01:01:08 »
Impresionante explicacion Marttyn, felicidades  excelente articulo que haz escrito   :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Construir y entender un programador
« Respuesta #2 en: 09 de Septiembre de 2008, 01:04:59 »
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

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Construir y entender un programador
« Respuesta #3 en: 09 de Septiembre de 2008, 01:11:33 »
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:
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: Construir y entender un programador
« Respuesta #4 en: 09 de Septiembre de 2008, 01:28:29 »
 :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
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Construir y entender un programador
« Respuesta #5 en: 09 de Septiembre de 2008, 11:46:45 »
muy buen articulo Marttyn

gracias por el aporte :-/ :-/
.

Desconectado sandra

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 374
Re: Construir y entender un programador
« Respuesta #6 en: 09 de Septiembre de 2008, 13:39:22 »
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)
« Última modificación: 09 de Septiembre de 2008, 13:42:24 por sandra »
El pesimista se queja del viento
El optimista espera que cambie
El realista ajusta las velas

Desconectado arcachofo

  • PIC16
  • ***
  • Mensajes: 126
    • Foro para usuarios Linux.
Re: Construir y entender un programador
« Respuesta #7 en: 10 de Septiembre de 2008, 13:42:10 »
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.

Desconectado Nicoyote

  • PIC10
  • *
  • Mensajes: 15
Re: Construir y entender un programador
« Respuesta #8 en: 10 de Septiembre de 2008, 13:47:06 »
Gracias por este excelente artículo Marttyn. Muy completa la información que sirve para complementar lo que uno sabe; muchas gracias nuevamente  :-) :-)
Saludos desde Santiago de Chile

     Atentamente
                               Nicoyote

"Lo que hagamos en vida...tendrá eco en la eternidad"

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Construir y entender un programador
« Respuesta #9 en: 10 de Septiembre de 2008, 16:19:44 »
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.
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado arcachofo

  • PIC16
  • ***
  • Mensajes: 126
    • Foro para usuarios Linux.
Re: Construir y entender un programador
« Respuesta #10 en: 10 de Septiembre de 2008, 19:36:09 »
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?

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Construir y entender un programador
« Respuesta #11 en: 10 de Septiembre de 2008, 20:34:17 »
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!
« Última modificación: 10 de Septiembre de 2008, 21:27:25 por Marttyn »
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
[*] Re: Construir y entender un programador
« Respuesta #12 en: 11 de Septiembre de 2008, 03:00:39 »
Excelente artículo, Marttyn. Gracias por ahorrarnos tanto trabajo

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Construir y entender un programador
« Respuesta #13 en: 11 de Septiembre de 2008, 17:06:55 »
Hola:

Estupenda información compañero, muchas gracias por la información y el tiempo que te has tomado en redactarlo.  :-/

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: Construir y entender un programador
« Respuesta #14 en: 11 de Septiembre de 2008, 21:52:19 »
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.