oberallgeier
20.12.2009, 22:13
Edit am 15. Jan. 2010. Die einfachste Lösung die mir eingefallen ist, mit einem Widerstand und einer Standard-RS232 (z.B. am PC), steht weiter unten, hier (einfach klicken). (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=476536&sid=5bc3b436d7398b697e852aa655312a81#476536)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Einen Controller beim Einstellen der Fuses auf externen Takt umzustellen ist ein vielgeübter Vorgang in der Anfängerzeit. Und nun? Woher den externen Takt bekommen, der erforderlich ist, um den Controller wieder das richtige Laufen beizubringen? Diese Übung kenne ich aus eigener, leidvoller Erfahrung.
Mögliche Taktquellen sind: eine andere Platine, bei der vom Controller ein entsprechender Takt bereitgestellt werden kann – notfalls durch ein kleines, schnell geschriebenes und geflashtes Programm. Ein Oszilloskop mit einem Kalibrator. Ein USB-Programmer, den man als Taktgeber benutzen kann; aber mit welchem Programmer setzt man dann die Fuses um? Es gibt also viele Möglichkeiten, meist aber eher solche, die gerade dem Anfänger eher unzugänglich sind.
Die Aufgabe lautet also: Baue einen Taktgeber mit einfachsten Mitteln, die den meisten Anfängern verfügbar sind. Der muss einen Takt erzeugen, mit dem ein Controller, der auf externen Takt umgestellt ist, versorgt werden kann.
Die Lösung ist einfach. Lösungskonzept ist die Ausgabe einer langen Reihe von ASCII-U über die RS232-Schnittstelle. Den Spannungspegel der RS232 ist dazu auf ein controllergerechtes Niveau zu bringen. (Nicht zum Lesen gedacht: Wie alle einfachen Lösungen habe ich ne Weile gesucht. Wie geht man das an? Man schreibt alle Möglichkeiten auf, mit denen man einen >>gleichmäßigen<< Takt erzeugen kann. Dann werden die Möglichkeiten ausgesondert, die eher nicht anfängergerecht sind. Danach testen, freuen und Bericht schreiben. Den Bericht am Besten noch mal von einem Fachmann zur Kontrolle durchlesen lassen - Danke Hubert.G - danke auch für die Kontroll-Tests.)
Hintergrund: ASCII-U ist, als 7-Bit-ASCII die Bitfolge 1010101, als 8-Bit-ASCII entsteht daraus 0101 0101. Dies ist eine gleichmäßige, schnelle Folge von Nullen und Einsen. Wenn dies über die serielle Schnittstelle gesendet wird, so erhält man unter Vernachlässigung der Start- und Stopbits einen regelmäßigen Takt. Dies wird hier benutzt. Statt eines U kann natürlich noch ein anderes ASCII-Zeichen verwendet werden - das U hat den Vorteil, dass es im 7-bit-ASCII mit einer "1" beginnt.
Das Rezept
Man benötigt:
o) Einen Controller, eingestellt auf EXTCLK – externe Taktquelle
o) Eine RS232, dazu ein geeignetes Kabel mit den Ausgängen TX und GND
o) Zwei Widerstände, jeweils etwa 1 MΩ (bis 100 kΩ).
Ersatzweise ein Poti entsprechender Größe und Einstellung als Spannungsteiler
o) Eine LED (LED_CON) mit Vorwiderstand 1kΩ
o) Evtl. eine zweite LED (LED_CLK) mit Vorwiderstand 1kΩ
o) Steckbrett oder für einen festen Aufbau eine Lochrasterplatine
o) Eine Datei mit lauter „U“. Erstellt z.B. mit Notepad ohne Zeilenumbruch,
mit 200 Zeilen zu je 1024 Zeichen – alles grosse „U“ – ohne Zwischenräume etc.
>>> Und ohne jeglichen Zeilenvorschub – Absatz und ähnliches.
o) Ein Terminalprogramm, z.B. HyperTerminal
Mit diesen Zutaten wird dieser Kuchen gebacken - ähhh -wird diese Schaltung aufgebaut :
................https://dl.dropbox.com/s/qg3f9crnpt67ght/fuseretter1.jpg?dl=0
................Schaltungsbeispiel mit einem ATtiny85
................andere Controller sinngemäß
Aus Gründen der besseren Übersichtlichkeit wurde hier sowohl die Versorgung des Controllers als auch die Verschaltung mit dem Programmer weggelassen. Anmerkung: es gibt nur eine Leitung zwischen Fuseretter und Controller, GND ist nicht gesondert verbunden.
Der Spannungsteiler wird aufgebaut wie dargestellt. Er hat im Wesentlichen die Funktion sowohl den Controller als auch den PC – bzw. dessen Schnittstellen-Schaltkreis zu schützen.
................https://www.roboternetz.de/community/attachment.php?attachmentid=30553&d=1439655047 (https://www.dropbox.com/s/0n5ozvxv2i3m3x1/fuseretter_1829.jpg?dl=0)
................Der Fuseretter.
................Rechts ist der zweipolige Anschluss eingeblendet, rechts oben ist die Leitung zum Controller.
Arbeitsweise
Die serielle Schnittstelle des Rechners wird an den Stecker der Schaltung gelegt. Der Controller wird mit dem Fuseretter nach Schaltbild verbunden und mit Spannung versorgt. Die vorbereitete Datei mit den vielen „U“ wird gesendet, Einstellung 8n1 – also 8 DataBit, no parity und 1 Stopbit, alles mit z.B. 28,8 kBaud – so hat es bei mir funktioniert. Die Schnittstelle sendet bei der oben genannten Einstellung über ca. 30 sek ein Rechtecksignal. Diese Zeit wird genutzt, um den Controller zurückzustellen. Dabei soll der Programmer auf möglichst langsamen Takt eingestellt werden. Wer ein Oszilloskop besitzt, kann sich das saubere Rechtecksignal ansehen. Evtl. muss die Datenübertragung mehrmals gestartet werden. Ein langsamerer Takt beim Senden der Datei als 28k8 ist nicht zu empfehlen. Bei 19k6 gab es bei mir bereits gelegentlich Probleme. Einen Test an einem USB-RS232-Adapter habe ich nicht durchgeführt.
Wenn TX korrekt angeschlossen ist, leuchtet die LED_CON. Dies ist nicht bei der Leitung RX der Fall – damit ist die Sendeleitung eindeutig identifizierbar. Beim Senden von Daten über die Schnittstelle leuchtet die LED_CLK entsprechend dem Signalpegel – das ist wegen der schnellen Datenfolge mit dem Auge nicht sichtbar; allenfalls leuchtet die LED_CLK etwas weniger hell.
Minimalisten können beide LEDs mit ihren Vorwiderständen weglassen – dann hat man mit zwei Widerständen und wenig Draht einen Fuseretter. Dann hat man aber keine Anzeige für die korrekte Leitung TX und auch nicht für die laufende oder nicht mehr laufende Datenübertragung. Ich sehe es sehr vorteilhaft an, dass beim Anstehen des Taktes (besser gesagt: beim Senden von „irgendetwas“) die LED_CLK leuchtet. Sehenswert ist die äußerst sparsame Schaltung.
................https://dl.dropbox.com/s/nmuey7sygpldst6/fuserttr_min.jpg?dl=0
Eine kommerzielle Anwendung ist ausgeschlossen – dafür fordere ich eine gesonderte Zusage von mir. Nachbau und Anwendung dieses Fuseretters für den Hobbybereich ist frei, sie unterliegt der eigenen Verantwortung des jeweiligen Anwenders. Für die Anwendung und den Einsatz des Fuseretters übernehme ich keinerlei Garantie für die hier beschriebene Funktion. Für eventuelle Schäden an Rechnern, Hardware etc., die eventuell bei der Anwendung des Fuseretters entstehen, kann ich ebenfalls keinerlei Garantie übernehmen. Wer seinen Editor nicht überstrapazieren will, kann sich 200 000 "U"s (ASCII) hier holen (https://dl.dropbox.com/s/wgtn1397igk6ad4/200000grosseU.txt?dl=0) (dann speichern z.B. als irgendwas.txt).
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Einen Controller beim Einstellen der Fuses auf externen Takt umzustellen ist ein vielgeübter Vorgang in der Anfängerzeit. Und nun? Woher den externen Takt bekommen, der erforderlich ist, um den Controller wieder das richtige Laufen beizubringen? Diese Übung kenne ich aus eigener, leidvoller Erfahrung.
Mögliche Taktquellen sind: eine andere Platine, bei der vom Controller ein entsprechender Takt bereitgestellt werden kann – notfalls durch ein kleines, schnell geschriebenes und geflashtes Programm. Ein Oszilloskop mit einem Kalibrator. Ein USB-Programmer, den man als Taktgeber benutzen kann; aber mit welchem Programmer setzt man dann die Fuses um? Es gibt also viele Möglichkeiten, meist aber eher solche, die gerade dem Anfänger eher unzugänglich sind.
Die Aufgabe lautet also: Baue einen Taktgeber mit einfachsten Mitteln, die den meisten Anfängern verfügbar sind. Der muss einen Takt erzeugen, mit dem ein Controller, der auf externen Takt umgestellt ist, versorgt werden kann.
Die Lösung ist einfach. Lösungskonzept ist die Ausgabe einer langen Reihe von ASCII-U über die RS232-Schnittstelle. Den Spannungspegel der RS232 ist dazu auf ein controllergerechtes Niveau zu bringen. (Nicht zum Lesen gedacht: Wie alle einfachen Lösungen habe ich ne Weile gesucht. Wie geht man das an? Man schreibt alle Möglichkeiten auf, mit denen man einen >>gleichmäßigen<< Takt erzeugen kann. Dann werden die Möglichkeiten ausgesondert, die eher nicht anfängergerecht sind. Danach testen, freuen und Bericht schreiben. Den Bericht am Besten noch mal von einem Fachmann zur Kontrolle durchlesen lassen - Danke Hubert.G - danke auch für die Kontroll-Tests.)
Hintergrund: ASCII-U ist, als 7-Bit-ASCII die Bitfolge 1010101, als 8-Bit-ASCII entsteht daraus 0101 0101. Dies ist eine gleichmäßige, schnelle Folge von Nullen und Einsen. Wenn dies über die serielle Schnittstelle gesendet wird, so erhält man unter Vernachlässigung der Start- und Stopbits einen regelmäßigen Takt. Dies wird hier benutzt. Statt eines U kann natürlich noch ein anderes ASCII-Zeichen verwendet werden - das U hat den Vorteil, dass es im 7-bit-ASCII mit einer "1" beginnt.
Das Rezept
Man benötigt:
o) Einen Controller, eingestellt auf EXTCLK – externe Taktquelle
o) Eine RS232, dazu ein geeignetes Kabel mit den Ausgängen TX und GND
o) Zwei Widerstände, jeweils etwa 1 MΩ (bis 100 kΩ).
Ersatzweise ein Poti entsprechender Größe und Einstellung als Spannungsteiler
o) Eine LED (LED_CON) mit Vorwiderstand 1kΩ
o) Evtl. eine zweite LED (LED_CLK) mit Vorwiderstand 1kΩ
o) Steckbrett oder für einen festen Aufbau eine Lochrasterplatine
o) Eine Datei mit lauter „U“. Erstellt z.B. mit Notepad ohne Zeilenumbruch,
mit 200 Zeilen zu je 1024 Zeichen – alles grosse „U“ – ohne Zwischenräume etc.
>>> Und ohne jeglichen Zeilenvorschub – Absatz und ähnliches.
o) Ein Terminalprogramm, z.B. HyperTerminal
Mit diesen Zutaten wird dieser Kuchen gebacken - ähhh -wird diese Schaltung aufgebaut :
................https://dl.dropbox.com/s/qg3f9crnpt67ght/fuseretter1.jpg?dl=0
................Schaltungsbeispiel mit einem ATtiny85
................andere Controller sinngemäß
Aus Gründen der besseren Übersichtlichkeit wurde hier sowohl die Versorgung des Controllers als auch die Verschaltung mit dem Programmer weggelassen. Anmerkung: es gibt nur eine Leitung zwischen Fuseretter und Controller, GND ist nicht gesondert verbunden.
Der Spannungsteiler wird aufgebaut wie dargestellt. Er hat im Wesentlichen die Funktion sowohl den Controller als auch den PC – bzw. dessen Schnittstellen-Schaltkreis zu schützen.
................https://www.roboternetz.de/community/attachment.php?attachmentid=30553&d=1439655047 (https://www.dropbox.com/s/0n5ozvxv2i3m3x1/fuseretter_1829.jpg?dl=0)
................Der Fuseretter.
................Rechts ist der zweipolige Anschluss eingeblendet, rechts oben ist die Leitung zum Controller.
Arbeitsweise
Die serielle Schnittstelle des Rechners wird an den Stecker der Schaltung gelegt. Der Controller wird mit dem Fuseretter nach Schaltbild verbunden und mit Spannung versorgt. Die vorbereitete Datei mit den vielen „U“ wird gesendet, Einstellung 8n1 – also 8 DataBit, no parity und 1 Stopbit, alles mit z.B. 28,8 kBaud – so hat es bei mir funktioniert. Die Schnittstelle sendet bei der oben genannten Einstellung über ca. 30 sek ein Rechtecksignal. Diese Zeit wird genutzt, um den Controller zurückzustellen. Dabei soll der Programmer auf möglichst langsamen Takt eingestellt werden. Wer ein Oszilloskop besitzt, kann sich das saubere Rechtecksignal ansehen. Evtl. muss die Datenübertragung mehrmals gestartet werden. Ein langsamerer Takt beim Senden der Datei als 28k8 ist nicht zu empfehlen. Bei 19k6 gab es bei mir bereits gelegentlich Probleme. Einen Test an einem USB-RS232-Adapter habe ich nicht durchgeführt.
Wenn TX korrekt angeschlossen ist, leuchtet die LED_CON. Dies ist nicht bei der Leitung RX der Fall – damit ist die Sendeleitung eindeutig identifizierbar. Beim Senden von Daten über die Schnittstelle leuchtet die LED_CLK entsprechend dem Signalpegel – das ist wegen der schnellen Datenfolge mit dem Auge nicht sichtbar; allenfalls leuchtet die LED_CLK etwas weniger hell.
Minimalisten können beide LEDs mit ihren Vorwiderständen weglassen – dann hat man mit zwei Widerständen und wenig Draht einen Fuseretter. Dann hat man aber keine Anzeige für die korrekte Leitung TX und auch nicht für die laufende oder nicht mehr laufende Datenübertragung. Ich sehe es sehr vorteilhaft an, dass beim Anstehen des Taktes (besser gesagt: beim Senden von „irgendetwas“) die LED_CLK leuchtet. Sehenswert ist die äußerst sparsame Schaltung.
................https://dl.dropbox.com/s/nmuey7sygpldst6/fuserttr_min.jpg?dl=0
Eine kommerzielle Anwendung ist ausgeschlossen – dafür fordere ich eine gesonderte Zusage von mir. Nachbau und Anwendung dieses Fuseretters für den Hobbybereich ist frei, sie unterliegt der eigenen Verantwortung des jeweiligen Anwenders. Für die Anwendung und den Einsatz des Fuseretters übernehme ich keinerlei Garantie für die hier beschriebene Funktion. Für eventuelle Schäden an Rechnern, Hardware etc., die eventuell bei der Anwendung des Fuseretters entstehen, kann ich ebenfalls keinerlei Garantie übernehmen. Wer seinen Editor nicht überstrapazieren will, kann sich 200 000 "U"s (ASCII) hier holen (https://dl.dropbox.com/s/wgtn1397igk6ad4/200000grosseU.txt?dl=0) (dann speichern z.B. als irgendwas.txt).