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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.