Y aquí se empieza a adivinar el problema:
Antes del diodo (directo pin6)
MCLR seleccionado en “prueba de hard”................... 2,59V (led encendido ¿?)
MCLR NO seleccionado en “prueba de hard”............. 2,70V (led encendido)
Después del diodo de pin6
MCLR seleccionado en “prueba de hard”................... 1,98V (led encendido ¿?)
MCLR NO seleccionado en “prueba de hard”............. 2,12V (led encendido)
Ahora, probado SIN invertir MCLR, las mediciones se normalizan... (obviamente no serviría para programar, es solo para medir), y el led enciende y apaga en forma correcta – por supuesto de manera invertida a lo acostumbrado- cuando se selecciona MCLR en “prueba de hard”:
Antes del diodo (directo pin5)
MCLR seleccionado en “prueba de hard”................... 2,59V (led encendido)
MCLR NO seleccionado en “prueba de hard”............. 0,04V (led apagado)
Después del diodo
MCLR seleccionado en “prueba de hard”................... 1,98V (led encendido)
MCLR NO seleccionado en “prueba de hard”............. 0,13V (led apagado)
Antes del diodo (directo pin6)
MCLR seleccionado en “prueba de hard”................... 0,04V ¿? (led encendido)
MCLR NO seleccionado en “prueba de hard”............. 0,04V (led apagado)
Después del diodo de pin6
MCLR seleccionado en “prueba de hard”................... 1,98V (led encendido)
MCLR NO seleccionado en “prueba de hard”............. 0,13V (led apagado)
Bien... es entendible que el nivel en el pin 6 sea bajo, ya que éste solo se coloca a nivel alto para la programación de algunos dispositivos... por ejemplo el 16F877. (cuando MCLR está invertido).
Bueno, el problema está en que cuando le pedimos a ICProg en “Tipos de hardware” que invierta MCLR, éste coloca en estado alto los pines 5,6,y 7... pero que pasa cuando activamos MCLR desde “prueba de Hard”???, pues solo coloca a nivel bajo el pin 5 (para el 16F84, pero para el 16F877 solo lo hace con el pin 6).
Ahora se entiende lo que sucede, como los diodos unen las dos líneas, aunque una esté baja, la salida de los diodos siempre estará alta, por lo tanto el transistor pasará a conducir en todo momento, en cambio si MCLR no está invertido (solo para la prueba) parece que funcionara bien con cualquier dispositivo.
La solución sería invertir electrónicamente y no desde ICProg... pero, sigue causándome dudas que a ti no te haya traído problemas.
Pueden ser dos cosas... o tu puerto trabaja de otra manera ¿? ... cosa que dudo, o que el ICProg que tu tienes no invierta todas las líneas (pin 5,6, y 7) a la vez, como sucede con el mío.
Para probar en que estado se encuentra cada línea del DB25 utilicé el programa Parmon, un monitor de puerto paralelo que grafica esto.
Por si no lo tienes, te lo envío adjunto...
Bueno, espero que te sirva de guía para que juntos resolvamos el problema...
Un abrazo,
Marcelo