AVR Bootloader im Programm starten

Gast #4892479
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?
Gast #4892553
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren