Ich hab von der Seite http://www.microsyl.com/megaload/megaload.html den dort angebotenen Bootloader runtergeladen und meinen Mega16 erfolgreich damit geflasht. Das Problem ist nun das bei einem Reset des MCs ca 15 Sekunden vergehen bis der MC Starklar ist. (Ich hab den MC per RS232 am PC angeschlossen und beim Programmstart wird eine Meldung ausgegeben.Daher weiß ich das mit den 15 Sekunden.) Darum die Frage ob das normal ist oder nicht ?
Nun, irgendwie mußt der Bootloader ja eine Chance bekommen, daß man ihn nach dem Reset ansprechen kann, um den Flash neu zu schreiben. Entweder löst man das mit einer Verzögerung, innerhalb derer die serielle Schnittstelle dann abgefragt wird, ob jetzt jemand den Bootloader angeworfen haben möchte (wobei 15 Sekunden exzessiv erscheint, andere benutzen hier ein bis zwei Sekunden), oder man springt den Bootloader auf andere Weise aus dem Programm heraus an, so daß er normalerweise transparent bleibt und keine Zeit warten muß. Letzteres wird beispielsweise beim AVR JTAG ICE gemacht: es gibt einen Befehl für das JTAG ICE, mit dem der Bootloader explizit aktiviert wird, danach kann man einen Firmwareupdate durchführen. Dritte Variante wäre eine hardwaremäßige Aktivierung z. B. mittels Jumper. Die braucht ein Portpin, damit der Bootloader den Jumper abfragen kann. Wichtig bei der Variante mit Wartezeit ist natürlich, daß sie nur bei externem oder Power-On-Reset warten sollte, bei einem Watchdog-Reset sollte sie wohl sofort in die eigentliche Applikation springen.
Hallo, die Verzögerung ist normal. Sie kommt von der automatischen Erkennung der Baudrate. Die Windowssoftware wartet darauf, das ein bestimmtes Byte vom Bootloader kommt. Zu diesem Zweck sendet der Bootloader dieses Byte mit allen möglichen Baudraten (UBRR0L-Register), irgendwann hat er dann die richtige Einstellung gefunden. Das kann dann halt schonmal ein paar Sekunden dauern. Gruß Thorsten
Ja, der Megaload geht da sehr einfach vor. Er sendet einfach mit 256 verschiedenen Baudraten und das dauert eben. Wenn Du das nicht willst, dann nimm doch meine Routine. Die ist etwas komplizierter, weil sie, sobald der PC was sendet, die Baudrate mit dem Timer echt ausmißt und dann die UART sofort auf die richtige Baudrate setzt. Deshalb reichen ihr auch nur 0,2s Startverzögerung aus, was bei kaum einer Anwendung stören wird. Peter
Hallo Peter, wo gibts denn deine Routine? Gibts da auch ne gute Dokumentation zu? suche etwas wo ich den MC Teil übernehmen kann und die PC Software selbst schreibe. Danke schonmal.
@ Peter Dannegger Wenn ich deinen Bootloader flashe, kann ich dann weiterhin den Megaload benutzen oder brauche ich einen andere Windowssoftware ?
@Peter F. "weiterhin den Megaload benutzen" nein, meiner hat ein anderes Protokoll. Ich nenne es A5-Protokoll, weil das Byte 0xA5 beim Programmieren eine Sonderfunktion hat. Die restlichen Kommados sind textuelle Kommandos, d.h. mit 0x0A oder/und mit 0x0D abgeschlossen. Aber der C-code ist ja mit dabei. Nur habe ich von Windows keinerlei Ahnung und habe es mit BC4.0 als DOS-Anwendung übersetzt. Vielleicht kann ein Windowser es ja mal nach W-XP konvertieren. Da soll man ja auch noch Kommandozeilen auswerten können. D.h. man muß dem Benutzer nicht immer jedesmal komplette Weltumsegelungen mit der Maus zumuten. Es müssen ja nur die inportb() und outportb() durch entsprechende Aufrufe des Windows API ersetzt werden. Peter
Schade, wäre auch zu schön gewesen. Von C hab ich leider absolut keine Ahnung. Das Ganze ist daher ein paar Stufen zu hoch für mich. Dann werde ich wohl mit der Verzögerung leben müssen. Ist ja nicht sooo schlimm :)
Man könnte den Megaload-Bootloader so anpassen, daß er als erstes überprüft, ob ein bestimmter Portpin z. B. High ist. Wenn nicht, wird sofort das Anwenderprogramm gestartet. Du müßtest dann halt ein Jumper o. ä. setzen. Thorsten
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.