mikrocontroller.net

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


Autor: Hilel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Merle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hilel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Hilel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.