Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller soll nach ISP-Programmierung nicht hochfahre


von Hilel (Gast)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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

von Merle (Gast)


Lesenswert?

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

von Hilel (Gast)


Lesenswert?

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.

von crazy horse (Gast)


Lesenswert?

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?

von Hilel (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.