Hallo zusammen. Ich habe eine Anwendung mit einem AT90S..., in der die Schaltung über einen Spannungsregler MAX604 (3,3V) versorgt wird. Zur Programmierung dieses MCs benutze ich die ISP-Schnittstelle, bei der bekanntlich der MC von aussen (vom Programmiergerät) versorgt wird. Selbst wenn die Programmierung zu Ende ist, ist der MC immer noch von aussen versorgt. Viele Programmer resetten den MC, sobald sie mit der Programmierung fertig sind, so dass der MC hochfährt und sein Programm ausführt. Genau das soll vermieden werden. Ich möchte, dass nach der Programmierung das Programm nicht ausgeführt wird. Erst wenn die Schaltung von der eigenen Spannung versorgt wird soll das Programm ablaufen. Ich habe an folgende Lösungen gedacht: 1) Es müsste doch Programmer geben, die über RESET dafür sorgen, dass der MC nach der Programmierung nicht hochfährt. (Sie halten den RESET-Eingang des zu programmierenden MCs auf LOW, bis sie abgeschaltet werden. 2) Der MC misst die Betriebsspannung (z.B. vor dem MAX 604, sie beträgt ca 6V) und die ist nicht vorhanden, wenn der MC über das Programmiergerät programmiert wird. Da sitzt nämlich eine Schottky-Diode, die den Spannungsregler vor der Spannung des Programmers schützt. Meine Frage ist: gibt es solche Programmer wie unter 1) beschrieben? zu 2): Der MC hat keinen AD-Wandler und die Comparator-Eingänge sind belegt, so dass die Messung der Betriebsspannung via Comparator nicht möglich ist. Ich habe überlegt, die Betriebsspannung (ca 6V vor dem MAX 604) über einen Vorwiderstand und Z-Diode auf 3,3V zu reduzieren und an einen Eingang des MC anzulegen. Das erste was der MC dann nach einem Reset macht, ist den Eingang abzufragen. Ist der Eingang auf Low, heisst es, dass der MC vom Programmer versorgt wird. Ist er auf H-Pegel, heisst es, dass der MC von der eigenen Spannungsversorgung versorgt wird und das Programm ausgeführt werden kann. Ich bitte um eure Meinungen und Vorschläge. Vielen dank im voraus.
Ich weiß zwar nicht wozu das gut sein soll. Ich will jedensfalls immer, daß das Program sofort debuggt werden kann, wenn der Programmer fertig ist. Du kannst ja in Deine Anwendung eine Routine schreiben, die irgendein Byte im EEPROM liest und wenn dieses 0xFF ist, dann was anderes reinschreibt und danach in Sleep geht. Damit startet Deine Anwendung immer erst nach dem 2. Reset nach dem Programmieren. Peter
du könntest an den Reset Pin vom ISP Programmer einen schalter drann machen und nur einschalten wenn du den AVR Löschen willst und wenn du Programmierst schaltest du den Reset Pin einfach aus. Mfg. Merle
Danke erstmal für die raschen Atworten. @Peter Das geht nicht, weil der MC sehr oft umprogrammiert wird. Im Programm ist eine Zeitsequenz, die der Benutzer über ISP ändern kann. Der Quellcode wird an der Stelle angepasst und es wird eine HEX-Datei erzeugt, die die neue Zeitsequenz enthält. Dann wird der MC über ISP umprogrammiert. Ausserdem soll die Schaltung während der Testphase mehrmals in Betrieb genommen werden und jedes mal soll das Programm normal ablaufen. @Merle Ich möchte keine Änderung an dem Programmer vornehmen, weil die Schaltung mit unterschiedlichen Programmern programmierbar sein soll.
all das klappt doch mit Peters Lösung, nur nach dem Neuprogrammieren (da wird auch automatisch der EEPROM gelöscht) startet der MC nicht, sonst schon. Wo ist das Problem?
Finde ich keine schlechte Idee mit dem EEPROM. Ich habe allerdings Bedenken, wenn der User aus Versehen oder auch mit Absicht das Programmiergerät aus und wieder einschaltet. Dies habe ich bereits getestet. Um sicher zu sein, dass der MC von der eigenen Spannung versorgt wird, werde ich doch die Versorgungsspannung von 6V über Vorwiderstand und Z-Diode auf 3,3V reduzieren und an einen Eingangspin des MCs anlegen. Danke nochmal für die Vorschläge.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.