Saludos a todos,
tengo un par de 16F689 comunicandose con un IC externo mediante sus EUSARTs, y todo funciona perfectamente.
Recientemente, sin embargo, he observado que el IC externo tiene un V_oh = 2,9 volts.
Los pic se alimentan a Vdd = 3,75v. Dado que sus RX son schmitt-trigger, segun datasheet tiene un V_ih_min =
0,8*Vdd , en este caso 0,8*3,75 = 3,0 volts.
Como veis está ligeramente por encima de lo que me da el IC, que son 2,9. A pesar de todo funciona
perfectamente, no quería dejarlo tan "al limite", así que decidí hacerle una interfaz con transistores a la
RX.
Es la primera vez que hago algo de esto, y no tengo ni puta idea, así que cogiendo papel y lápiz se me
ocurrió esto (ver JPG adjunto )
La idea con esotos dos transistores en cascada es que cuando el IC ponga un "1" (2,9 volts), pic_RX vea 3,75 volts. Y cuando el IC ponga un "0",
pic_RX debería ver como mucho V_ce2_sat = 0,25 volts, que entra perfectamente dentro de lo que el pic
considera un "0" lógico. Creo que esto se llama un seguidor emisivo ?
Pues bien, tema curioso: funciona , pero da fallos. Confunde algunos bits ("0"'s por "1"'s y viceversa).
Según los logs que tengo, tiene una tasa de aciertos en torno al 85%.
Esto es de todo punto inaceptable, claro... ya que a través de ese link mando 8 Kwords para un ICSP que debe
reprogramar un pic, así que UN sólo fallo en un byte daría al traste con todo.
Como os comentaba, conectando directamente IC_tx con PIC_rx , todo funciona perfectamente. 100% de tasa de
aciertos durante muchos bucles consecutivos.
Seguramente el problema está en ese diseño tan simplón de los dos transistores... alguien sabe dónde está lo
que he hecho mal ?
gracias !
NOTA: el directorio de uploads del foro está lleno, no me deja subir el JPG. Por favor, algun moderador podría despejarlo para que complete el mensaje ?