Software-Reset Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte
Autor |
|
|
|
BID = 430750
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
|
Moin,
Habe hier grade einen Bootloader in Assembler, den ich vor langer Zeit schrieb, komplettiert, indem ich das Gegenstück auf dem Rechner geschrieben habe.
Nun ist der so gemacht, dass er möglichst klein ist - er belegt etwas weniger als 256 Bytes - das sind beim ATmega16 bspw. 2 Pages / Seiten.
Mein "Problem" ist jetzt, dass der Bootloader nur die wichtigsten Sachen macht:
er knippst die Interrupts aus während des Schreibvorgangs, er initialisiert den Stack neu, er hat eine eigene Routine zum Senden und Empfangen der Daten über RS232. Er führt auch eine Verifizierung des Programmkodes durch, sodass sofort gemeckert wird, wenn ein Fehler auftrat.
Das ist alles schön und gut, aber hat jemand 'ne Ahnung, wie ich nach dem Updatevorgang einen Reset machen kann?
Bisher mache ich das so, dass der Bootloader nach erfolgreichem Schreiben einfach den Reset-Vektor in den Programmzähler lädt (r31:30) und per ijmp da hinhüpft. Zurückkehren muss er ja nicht. Damit ist aber kein richtiger Reset durchgeführt worden. Ich will aber, dass der ganze Chip neustartet.
Ich hatte mir überlegt, einfach einen Pin mit dem Reset-Pin und einem Zeitglied von ein paar ms zu verbinden, und dann softwaremäßig den Reset-Pin kurz auf 0 ziehe. Aber irgendwie ist das nicht so toll.
Gibt es eine andere Möglichkeit, einen "Richtigen" Hardwarereset per Software auszulösen?
Edit: Das dient in erster Linie nur dazu, um alle Register wieder mit den default-Werten zu initialisieren. Ich könnte zwar einmal alle Register durchlaufen und neu initialisieren, aber dann wird das zu stark chipabhängig.
Beisielsweise sollten alle Timer u.ä. geleert und abgeschaltet sein, wenn der neustartet, sonst können unerwartete Dinge auftreten (zwei unterschiedliche Programme ohne Hardwarereset nacheinander gebrannt -> unberechenbarer Programmablauf...)
_________________
[ Diese Nachricht wurde geändert von: DonComi am 19 Mai 2007 17:57 ] |
|
BID = 430751
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
|
OK - Habe dann nochmals ins Datenblatt geschaut (... ich mecker Leute ja schließlich auch an, dies zu tun ) und habe rausgefunden, dass zumindest der 16er nur 5 Reset-Quellen hat.
Mit bleiben im Prinzip 2 übrig: entweder den Reset-Pin, wie oben vorgeschlagen (zusätzliche Hardware nötig -> nicht gut) oder ich nehme den Watchdog: wenn ich den nicht zurücksetze, startet er die CPU neu -> das wollte ich .
So, irgendwie war das unnötig, den Thread zu erstellen - Sry....
_________________
|
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 19 Beiträge im Durchschnitt pro Tag heute wurden bisher 3 Beiträge verfasst © x sparkkelsputz Besucher : 182421526 Heute : 565 Gestern : 5459 Online : 302 29.11.2024 5:54 3 Besucher in den letzten 60 Sekunden alle 20.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0473070144653
|