¿Por qué VPP no es 12V con resistencia segura cuando se inserta un microcontrolador en funcionamiento en este circuito?

1

Probé toda la funcionalidad de mi circuito de programador, y muchas cosas funcionan, pero otras no.

Parece que borra todo el contenido de un AT89C4051, pero no programa correctamente el chip. De hecho, parece que no hay nada programado.

Este es el pseudocódigo que uso para el programador:

Clear data (Set address 378h to 0)
Reset counter and enable program mode and wait 100us (Set Control 37Ah to 6)
** At this point, Pin 1=0V which is expected
Raise VPP (Set Control 37Ah to 2)    
** Expected 12V at pin 1 but only got 6.8V. Why? I don't know
Raise Step Reset (Set Control 37Ah to 3)    
Wait until system ready
Add 10mS delay
Lower Step Reset (Set Control 37Ah to 2)    
Wait until system ready
Reset count / lower VPP (Set Control 37Ah to 6)    

Y para cada byte:

Set data (Set Control 378h to data)    
Wait 100uS
Raise Step Reset (Set Control 37Ah to 1)    
Wait until system ready
Wait 2mS    
lower Step Reset (Set Control 37Ah to 0)    
Wait until system ready
Repeat for remaining bytes

Para referencia, "elevar el reinicio del paso" significa que el pin del IC 4017 está configurado en alto y "reiniciar el escalón más bajo" significa que el pin del reinicio está bajo. Una vez que caiga, la habilitación de programación permanecerá baja durante al menos la mitad del tiempo definido por el circuito del temporizador 555, luego se activará, luego de que el reloj esté pulsado, el sistema estará listo.

Casi todo funciona, pero hay

UNA EDICIÓN PRINCIPAL

Cuando le ordené al sistema que aumentara el voltaje de VPP, lo hace, pero de una manera extraña.

El resistor que uso entre 12VDC y RST del micro es de 100K solo porque la hoja de datos de Atmel indica que la corriente máxima de programación es de 250uA . Entonces al usar 100K, estoy usando 12VDC / 100K = 120uA.

Entonces, sin un microcontrolador conectado, la operación es precisa. El contador muestra muy cerca de 12V. Sin embargo, cuando saqué un microcontrolador que funcionaba de un sistema que funcionaba y lo inserté en este circuito y medí el voltaje después de realizar exactamente las mismas operaciones, solo obtengo entre 6 y 7V.

Observé otros circuitos y no he visto a otros usar resistencias de 100 K como dominadas. De hecho, encontré que la resistencia de pull-up es solo 2.7K en el siguiente circuito en: enlace

Mipreguntaes¿porquéseusaríaunaresistenciatanpequeñaparalaprogramacióncuandoelmanualindicaclaramentequeexisteunlímitesuperioralacorrientequesepuedeproporcionarparaVPP?

¿Sesuponequedeboviolaresaespecificaciónparahacerqueelprogramadorfuncione?

Yparareferencia,esteesmicircuito:ylalíneadiagonalenelmedioespartedeunaflecha,nodealambre.

ACTUALIZAR

BusquéenInternetyencontréOTROcircuitoprogramadorqueusaunaresistenciaLOWVPP(1K).

LaURLestáaquí: enlace

La imagen está aquí: enlace

    
pregunta

1 respuesta

4

Si la corriente a través de la resistencia es 120uA, la tensión a través es de 12V, lo que significa que en realidad obtendrá 12V-12V = 0V en el pin. Ese límite superior es un límite sobre lo que dibujará el microcontrolador, no un límite sobre lo que se debe suministrar.

Lo que está sucediendo es que el microcontrolador solo está consumiendo 60uA o menos, pero la resistencia está bajando 60uA * 100K = 6V, por lo que el voltaje de salida es 12V-6V = 6V. Necesita una resistencia de pull-up mucho más pequeña, para que la corriente de programación máxima no afecte mucho el voltaje de salida.

Si usa una resistencia de 2.7K, por ejemplo, a 250uA, el voltaje en el pin será 12- (250uA * 2.7k) = 11.325V, lo cual es aceptable.

editar: en realidad, de acuerdo con la hoja de datos, debe ser de al menos 11.5V. Una resistencia de 2.7K funcionará (casi con seguridad), pero técnicamente debería ser (12-11.5) / 250uA = 2Kohm máximo.

    
respondido por el BeB00

Lea otras preguntas en las etiquetas