Software-Reset

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 29 11 2024  05:54:48      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte

Autor
Software-Reset

    







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....




_________________


Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


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