IDE: Metrowerks CodeWarrior 5.5.1272
Prozessor: MC9S12DG128 (HCS12 Motorola)
Programmiersprache: C
Das Problem:
Ich will die Interrupts von einem MC9S12DG128 nutzen, bekomme aber die
Interrupt nicht initialisiert.
Hab gemacht wie es in der Hilfe beschrieben ist:
Im main.c file hab ich dies als meine Interrupt Funktion eingefügt:
#pragma TRAP_PROC
void myISR(void)
{
//ISR code
};
Im Linker File hab ich dies als letztes angefügt:
VECTOR ADDRESS 0x0000FFDE myISR
// Das sollte eigentlich der Timer Overflow Interrupt sein
Der Fehler:
"L1108: Initializing of Vector myISR failed because of over- or
underflow of vector value"
Was mach ich falsch ??? Ich bekomms einfach nicht hin vielleicht wisst
ihr mir Rat am besten mit Beispielcode.
Vielen Dank.... giny
#pragma TRAP_PROC
void myISR(void)
{
//ISR code
};
So wie ich #pragma vom IAR kenne, gibt man dahinter den
Interrupt-Vector-Namen an...
Das letzte ; kannst du dir auch sparen...
Beispielcode sollte sich beim Compiler finden lassen (Online-Hilfe?
Handbuch?)
So gehts:
<c>
#pragma CODE_SEG NON_BANKED
void interrupt 16 TimerOverflow(void){
#pragma CODE_SEG DEFAULT
PTP_PTP7 =! PTP_PTP7; // LED toggeln
TFLG2_TOF=1; // Interruptflag löschen
};
</c>
Die Geschichte mit
<c>
VECTOR ADDRESS 0x0000FFDE myISR
</c>
brauchst du dann auch nicht
@ABu Danke, funktioiniert wunderbar so. Vielen Dank :-) Gruß giny
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.