Forum: Mikrocontroller und Digitale Elektronik AT90CAN128: keine Interrupts im Bootloader-Modus?


von Ruediger S. (ruediger)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

seit einer Stunde versuche ich, an einem AT90CAN128 im Bootloader einen
Timer-Overflow-Interrupt auszulösen... und kriegs einfach nicht hin.

Lasse ich meinen Quellcode als Applikation (ohne
Bootloader-spezifischen Code) laufen, dann erhalte ich 1A-Interrupts.
Auch ein Verlegen der Interruptvektoren in die Bootloader-Sektion hat
nix gebracht, langsam geht mir die Ideen aus... Könnt Ihr mir helfen?
Ich habe anbei eine (gekürzte) main.c.

Ich verwende CodeVisionAVR, programmiere via JTAGICE und debugge mit
AVRStudio.

Hoffend,
Rüdiger

von Flow (Gast)


Lesenswert?

Es hat zwar nicht direkt etwas mit Deinem Problem zu tun, aber ich
glaube nicht das es vorteilhaft ist, zur Erzeugung der Zeitbasen
innerhalb des Timerinterrupts fünf Modulo-Operationen durchzuführen.
Ohne zu wissen was der Compiler genau daraus macht vermute ich, dass es
den Timerinterrupt ziemlich in die Länge zieht.

Flow

von Martin Thomas (Gast)


Lesenswert?

Koennte ein Linker-Problem sein. Vielleicht erzeugt der Linker die
Sprunganweisungen bei Adresse 0 statt bei der Addresse des per Fusees
eingestellten Vektoren-Startaddresse. Vielleicht auch ein
"Word/Byte"-Problem. Angaben Datenblatt sind Word-Addressen, die
Einstellung fuer den Codevision-Linker ist mglw. eine Byteaddresse.
Konkreter kann ich leider nicht weiterhelfen, da die Einstellungen
"Toolchainspezifisch" sind. Kenne mich fuer AVR nur mit der
GNU-Toolchain aus.
Hoffe, es bringt dennoch ein wenig weiter
Martin Thomas

von Ruediger S. (ruediger)


Lesenswert?

Danke für die Antworten! Habe auf jeden Fall wieder etwas zu
"beissen".
Rüdiger

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.