Forum: Mikrocontroller und Digitale Elektronik AVR Bootloader im Programm starten


von Samuel (Gast)


Lesenswert?

Hallo zusammen,
Ich habe eine selbstgebaute Mikroncontrollerplatine mit einem 
ATmega32U2, der von Werk aus einen USB-Bootloader besitzt. Über diesen 
Programmiere ich den Controller und da ich damals auf einen Reset Taster 
verzichtet hat, muss dieser über die Software aktiviert werden. Dazu 
verwende ich folgende Routine:

  USB_Disable();

  Delay_MS(2000);

  cli();

  PORTB = 0x00;

  Delay_MS(2000);

  _asm_ ("jmp 0x7000;");


Das funktioniert in 20% der Fälle und in den restlichen hängt der uC 
sich irgend wo auf und macht nichts, bis ich einen Hardware Reset 
durchführe. Es ist schon eine Weile her, dass ich dies programmiert habe 
und ich konnte auch nicht mehr herausfinden woher ich die Adresse 0x7000 
habe, jedoch gehe ich davon aus das, das der Anfang vom Bootloader ist.

Hat jemand eine Idee das ganze zuverlässiger zu gestalten?

von holger (Gast)


Lesenswert?

>Hat jemand eine Idee das ganze zuverlässiger zu gestalten?

Watchdog aktivieren und nicht triggern löst einen Reset aus.

von Samuel (Gast)


Lesenswert?

Das ist richtig, jedoch startet er doch wieder das Programm und nicht 
den Bootloader, wenn der Reset vom Watchdog gekommen ist.

von S. Landolt (Gast)


Lesenswert?

> ...Adresse 0x7000..., das der Anfang vom Bootloader ist

Byte oder Wort? Im Datenblatt finde ich nur 0x3800 (neben 0x3C00, 0x3E00 
und 0x3F00) unter "Boot Size Configuration(1)(Word Addresses)".
  Auch könnte es vielleicht sein, dass der Programmierer sich auf die 
Defaultwerte der SFRs nach einem Reset verlassen hat, was ja später 
nicht mehr gegeben ist.

von Samuel (Gast)


Lesenswert?

Das wars, mit 0x3800 funktioniert es ohne Probleme.
Keine Ahnung wie ich damals auf 0x7000 gekommen bin.

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.