Forum: Mikrocontroller und Digitale Elektronik PIC18 Bootloader


von Danish B. (danishbelal)


Angehängte Dateien:

Lesenswert?

Hallo,

ich möchte auf einem PIC18F46j50 einen Bootloader umsetzen.

Dabei ist folgende Frage aufgetaucht.

Der PIC verfügt über zwei Interruptvektoren. Den High-Priority bei 0x08 
und den Low Priority bei 0x18. In der Dis-Assembly sieht man, dass der 
Compiler die ISR bei 0x08 beginnt und damit über 0x18 hinaus schreibt.

Würde die CPU also einen Low-Prio Interrupt auslösen, dann würde sie in 
der Mitte der ISR starten. Das ganze ist in meinem Fall kein Problem, da 
ich im 'Mid range compatibility mode' arbeite. Es werden also ohnehin 
alle Interrupts auf 0x08 abgebildet.
Aber die Einstellung des Modus erfolgt zur Laufzeit; wieso macht der 
Kompiler das so?

(Ich würde einfach bei 0x18 anfangen und bei 0x08 einen Sprung zu 0x18 
setzen).

von Ingo S. (schicki)


Lesenswert?

Hallo,

ich habe den Bootloader für die PIC18F46K80, PIC18F97J60, PIC16F877A und 
den PIC18F452 mit dem AN1310 von Microchip umgesetzt. Schick mir bitte 
ne Mail, dann kann ich Dir die Daten (Projekt, PC-Software usw.) bei 
Bedarf senden. (info@schwabenplan.com).

Weitere Infos auch unter:
https://pic-projekte.de/blog/bootloader-fur-pic16-und-pic18/

Viele Grüße
Ingo

von Volker S. (vloki)


Lesenswert?

Danish B. schrieb:
> Aber die Einstellung des Modus erfolgt zur Laufzeit; wieso macht der
> Kompiler das so?

1. Welcher Kompiler?
2. Was genau haben die IRs mit dem Bootloader zu tun?
3. Wenn keine Routine für Low-Priority IRs da ist, warum sollte der 
Compiler den Vektor berücksichtigen?
4. Hast du schon mal den von Ingo angesprochenen BL AN1310 oder einen 
anderen angeschaut?
<edit>
5. Welche Schnittstelle benutzt der Bootloader? (USART, USB...)

: Bearbeitet durch User
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.