Ein "Sorry" hier für die beiden handgezeichneten Schaltungen, aber das ging so einfach schneller und zum Darstellen, reicht das glaube ich ausreichend.
Mein Problem / Anliegen (oder wie man das bezeichnen mag) hängt eigentlich mit einem anderen Thread den ich in Projekte und Code erstellt habe und bezieht sich auf einen Bootloader mit CH32V003.
Da aber die Fragestellung grundsätzlicher Natur ist und das auch andere Mikrocontroller betreffen kann (mein Problem hatte ich auch schon mit einem ATtiny serie0), jetzt hier einmal die Frage grundsätzlich.
Ich habe folgendes Szenario: Weil ein Reset über einen Reseteingang des Controllers nicht funktioniert, dieser startet nur die User-Software neu, springt aber hier bei nicht in den Bootsektor, kann ein Aktivieren des Bootsektors nur durch ab- und wieder anschalten der Betriebsspannung erfolgen.
Hierbei stellt sich das Problem, dass bei abgeschalteter Betriebsspannung der Mikrocontroller an den Pins Rx und Tx an eine USB2UART-Bridge angeschlossen ist. Da das letzte gesendete Bit auf einer seriellen Schnittstelle ein Stopbit ist, bleibt der Logikpegel von seitens der Bridge auf 1.
Schaltet man nun die Versorgungsspannung des Controllers ab, so können unterschiedlich USB2UART-Bridges (ich habe CH340, FTDI, PL2303 getestet) unterschiedliche Ströme liefern. Ein Strom in den Rx Anschluss des Controllers kann bei ungeschickten Bedingungen dazu führen, dass dieses dem Controller als Betriebsspannung reicht und er von daher nicht in den Boot-Sektor springt.
Zu diesem Zweck habe ich meine "PowerOn" Schaltung in Schaltung 1 (Impuls auf RTS sorgt dafür, dass die Versorgungsspannung des Controllers kurzfristig abgeschaltet wird) dahingehend erweitert, dass der Rx Anschluss des Controllers über einen Widerstand R4 auf logisch 1 gesetzt wird, der aber an der Betriebsspannung des Controllers hängt. Somit wird bei einer seriellen Übertragung die logische 1 über diesen PullUp-Widerstand geliefert. Wird eine 0 gesendet, so ist dieser Pegel der Diode D1 wegen auf ca. 0,7V. Die Datenübertragung funktioniert fehlerlos, bei abgeschalteter Betriebsspannung liegen als Betriebsspannung dann eben diese ca. 0,7V an, was dem Controller nicht als Versorgungsspannung reicht.
In Schaltung 2 habe ich einen kleinen Controller verwendet, der den Impuls von RTS aufnimmt und entsprechend die Transistoren T1 und T2 schaltet. Wird hier die Betriebsspannung abgeschaltet, sperrt nicht nur T1, sondern T2 schließt auch die Rückwärts über den Rx Anschluss entstehende Spannung kurz. Hier bleibt dann nur noch eine Versorgungspannung von ca. 0,2V am Controller stehen (als "Reset-Controller hatte ich zum Experimentieren PFS-154 und ATtiny13 verwendet).
So, eigentlich (aber nur eigentlich) gefällt mir Schaltung 1 besser, weil sie deutlich weniger Bauteile verwendet und auch weniger Platz auf einer Platine, die ich jetzt doch routen mag benötigt. Allerdings hat sie einen großen Haken (der mir nicht schmeckt): Der Controller hat natürlich noch weitere GPIO Pins. Hier kann es dann durchaus sein, dass am Controller eine Schaltung hängt, die ebenfalls den Controller rückwärts speisen könnte und dann kann es hier wieder sein, dass der Controller von einem GPIO seine Betriebsspannung erhält.
In Schaltung 2 besteht dieses Problem nicht, da dort der NPN-Transistor die Betriebsspannung grundsätzlich kurzschließt.
Was schmeckt mir daran nicht:
Zum einen der Platzbedarf, den ein zusätzlicher SOIC-8 Baustein benötigt (plus Hühnerfutter), sowie die Frage, welchen Controller ich dafür verwenden soll. Wäre das nur für mich alleine, würde ich in Schaltung 2 den PFS-154 wählen, weil er billig ist. Ein ATtiny13 kostet mittlerweile schon mehr als einen Euro, einen ATtiny der serie 0 werde ich morgen ausprobieren. Das es für eine derart kleine Aufgabe des An- und Ausschalten einer Spannung eines Controllers bedarf, der dann ca. 4 bis 5 mal soviel kostet wie der eigentliche Zielprozessor finde ich dann dämlich (s irgendwie habe ich mir in den Kopf gesetzt, dass das ganze auf einer Platine inkl. der Platine nicht mehr als 1,50€ kosten soll ... als Herausforderung eben. Das ganze wäre dann eine Art "Arduino 32nano für Arme")
Da das ganze auch als Nachbauanleitung (irgendwann) herhalten soll werde ich hier mit dem PFS-154 nicht so recht warm, weil ich annehme, dass nicht wirklich viele eine Möglichkeit haben, einen PFS-154 zu flashen (gleiches nehme ich allerdings auch für einen ATtiny serie 0 an, der in diesen Bastler / Maker - Kreisen irgendwie scheinbar noch nicht in dem Umfang wie die klassischen AVR's angekommen ist).
So, und weil viele Augen mehr sehen als 2 hier dann (endlich) die Frage: Wie würdet ihr das lösen, gibt es eine kurze knackige Schaltung (mit Transistoren) die das löst? Vielleicht seh ich vor lauter Bäumen die Lösung nicht !



