Attiny10 con RSTDISBL y USBAsp

Tengo un proyecto que requiere todos los pines GPIO de attiny10, así que tengo que programar el fusible RSTDISBL. Pero el único programador que tengo es USBasp de bajo voltaje (con el último firmware compatible con la interfaz TPI).

La hoja de datos ofrece la forma de reprogramar attiny10 aplicando +12 V a RST cuando se programan RSTDISBL:

15.3.1. Enabling
The following sequence enables the Tiny Programming Interface:
• Apply 5V between VCC and GND
• Depending on the method of reset to be used:
– Either: wait tTOUT (see System and Reset Characteristics) and then set the RESET pin low.
This will reset the device and enable the TPI physical layer. The RESET pin must then be
kept low for the entire programming session
– Or: if the RSTDISBL configuration bit has been programmed, apply 12V to the RESET pin.
The RESET pin must be kept at 12V for the entire programming session

El programador USBAsp no admite la operación de 12 V, pero supongo que podría usar una inversión simple (porque en la operación normal baja la lógica durante la programación y necesito subirla a + 12 V) ¿cambio de nivel para esto?

circuito

¿Debería funcionar un circuito como este? RST_OUT son pines RST de USBasup mientras que RST_IN son pines RESET de ATtiny10.

Otra pregunta aquí es sobre el terreno común. +5V provienen de Vusb a través de USBasp y +12V provienen de algún otro tipo de PSU. ¿Es aceptable combinar terrenos aquí? ¿O es mejor obtener +12V de la fuente de alimentación de la PC (igual de donde proviene Vusb)?

Los MOSFET no son BJT. No necesita R3 y probablemente no necesite R2. ¿Estás programando en circuito? ¿O será un programador externo?
La polarización de puerta no debería ser necesaria. Esta idea podría funcionar, si el tiempo de RST_OUT coincide con el tiempo necesario de RST_IN. Compruebe las señales con un osciloscopio de antemano.
@TomCarpenter, se supone que R3 limita el exceso de corriente durante la carga del condensador MOSFET. ¿No es bueno tener uno? Y R2 está aquí para abrir M1 mientras el programador mantiene RST_OUT en estado Hi-Z (no estoy seguro aquí, pero lo más probable es que lo haga cuando no se esté programando). MCU se programará externamente.
Su puerta tiene solo 110pF y es un MOSFET de nivel lógico pequeño. No tiene sentido poner una resistencia de límite de corriente ya que la corriente no será más alta que en comparación con una entrada CMOS estándar. Además, por lo general, una resistencia de límite de corriente para un MOSFET sería inferior a 10 ohmios. De ahí el comentario sobre no ser un BJT. Además de eso, su combinación actual de 10k-1k le daría un mínimo lógico de> 0.5V en la puerta que apenas la apagaría.

Respuestas (1)

Dado que está utilizando esto como un circuito de programación externo (en lugar de estar en línea con su circuito existente), no veo ninguna razón por la que no debería funcionar si realiza los siguientes cambios:

  • Elimine R3: no lo está ayudando y es posible que el MOSFET nunca se apague; esto se debe a que R2 / R3 forman un divisor potencial que proporciona> 0.5 V en la puerta cuando está bajo, lo que puede no ser suficiente RST_OUTmargen para cambiar por completo de un MOSFET de 0.7V Vgs(th). La limitación de corriente no es necesaria para un MOSFET diminuto como este.

  • Asegúrese de que la GND del suministro de 12 V sea común con la GND del programador. De lo contrario, no funcionará correctamente. No hay peligro haciendo un terreno común como este (*).

Asegúrese de que R1 tenga una capacidad nominal de 0,25 W (o superior). Se disipará alrededor de 0,15 W cuando no se esté programando.


(*) Suponiendo que esté utilizando una fuente de alimentación sensible.