Forum: Mikrocontroller und Digitale Elektronik Interrupts bei HCS12 mit CodeWarrior initialisieren


von giny (Gast)


Lesenswert?

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

von Der inoffizielle WM-Rahul (Gast)


Lesenswert?

#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?)

von ABu (Gast)


Lesenswert?

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

von giny (Gast)


Lesenswert?

@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
Noch kein Account? Hier anmelden.