Attiny10 mit RSTDISBL und USBAsp

Ich habe ein Projekt, das alle GPIO-Pins von attiny10 erfordert, also muss ich die RSTDISBL-Sicherung programmieren. Aber der einzige Programmierer, den ich habe, ist USBasp mit niedriger Spannung (mit der neuesten Firmware, die die TPI-Schnittstelle unterstützt).

Das Datenblatt bietet die Möglichkeit, attiny10 neu zu programmieren, indem +12 V an RST angelegt werden, wenn RSTDISBL programmiert sind:

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

Der USBAsp-Programmierer unterstützt keinen 12-V-Betrieb, aber ich nehme an, ich könnte dafür einen einfachen invertierenden Level-Shifter verwenden (weil er im normalen Betrieb während der Programmierung die Logik auf Low zieht und ich ihn auf +12 V hochziehen muss)?

Schaltkreis

Sollte so eine Schaltung funktionieren? RST_OUT sind RST-Pins von USBasup, während RST_IN RESET-Pins von ATtiny10 sind.

Eine weitere Frage betrifft hier die Gemeinsamkeiten. +5 V kommen von Vusb über USBasp und +12 V kommen von einem anderen Netzteil. Ist es akzeptabel, Gründe hier zu kombinieren? Oder ist es besser, +12 V vom PC-Netzteil zu bekommen (woher auch Vusb kommt)?

MOSFETs sind keine BJTs. Sie brauchen R3 nicht und R2 wahrscheinlich auch nicht. Programmierst du In-Circuit? Oder wird dies ein externer Programmierer sein?
Eine Gate-Vorspannung sollte nicht erforderlich sein. Diese Idee könnte funktionieren, wenn das Timing des RST_OUT mit dem benötigten RST_IN-Timing übereinstimmt. Überprüfen Sie die Signale vorher mit einem Oszilloskop.
@TomCarpenter, R3 soll den Überstrom während der Ladung des MOSFET-Kondensators begrenzen. Ist es nicht normalerweise gut, einen zu haben? Und R2 ist hier, um M1 offen zu fahren, während der Programmierer RST_OUT im Hi-Z-Zustand hält (ich bin mir hier nicht sicher, aber höchstwahrscheinlich wird es, wenn keine Programmierung stattfindet). MCU wird extern programmiert.
Ihr Gate hat nur 110 pF und ist ein winziger MOSFET mit Logikpegel. Es macht keinen Sinn, einen Strombegrenzungswiderstand einzusetzen, da der Strom nicht höher sein wird als bei einem Standard-CMOS-Eingang. Außerdem würde ein Strombegrenzungswiderstand für einen MOSFET normalerweise unter 10 Ohm liegen. Daher der Kommentar, kein BJT zu sein. Darüber hinaus würde Ihnen Ihre aktuelle Kombination von 10k-1k ein logisches Low von> 0,5 V am Gate geben, das es kaum ausschalten würde.

Antworten (1)

Da Sie dies als externe Programmierschaltung verwenden (und nicht inline mit Ihrer vorhandenen Schaltung), sehe ich keinen Grund, warum es nicht funktionieren sollte, wenn Sie die folgenden Änderungen vornehmen:

  • Entfernen Sie R3 - es hilft Ihnen nicht und kann durchaus dazu führen, dass sich der MOSFET niemals ausschaltet - dies liegt daran, dass R2 / R3 einen Potentialteiler bilden, der am Gate > 0,5 V liefert, wenn es niedrig ist, was möglicherweise nicht ausreicht, um vollständig zu RST_OUTschalten aus einem MOSFET von 0,7 V Vgs (th). Für einen winzigen MOSFET wie diesen ist keine Strombegrenzung erforderlich.

  • Stellen Sie sicher, dass die GND der 12-V-Versorgung mit der GND des Programmiergeräts gemeinsam ist. Sonst funktioniert es nicht richtig. Es besteht keine Gefahr, eine solche Gemeinsamkeit herzustellen (*).

Stellen Sie sicher, dass R1 für 0,25 W (oder höher) ausgelegt ist. Es verbraucht etwa 0,15 W, wenn es nicht programmiert wird.


(*) Vorausgesetzt, Sie verwenden ein vernünftiges Netzteil.