Hallo Experten, kann mir einer von euch eine schnelle Einweisung geben, wie man einen Interrupt für einen Timer initialisiert ? // Timer A0 interrupt service routine #pragma vector=TIMERA0_VECTOR ?? __interrupt void Timer_A (void) ?? Was bedeuten diese Zeilen ? Interrupt-Vektor-Tabelle erstreckt sich doch von 0xffe0 bis 0xfffe. Wie lege ich dort den Interrupt für TimerA fest? Mfg Daniel
Gast
#801180
Damit der Interrupt angesprungen wird, musst du die globalen interrupts aktivieren (GIE) und natürlich deinem Timer auch sagen das er Interrupts benutzen soll (TAIE). Am besten schaust du dir die Beispiele von TI an.
Gast
#801182
>Was bedeuten diese Zeilen ?1 | |
2 | |
TIMERA0_VECTOR ist eine Defintion des IAR-Compilers und enthält eben
genau die Vektoradresse des Timer-A0 IRQ's
Durch die #pragma-Anweisung wird die darauffolgende Zeile:
__interrupt void Timer_A (void)
mit genau diesem IRQ-Vektor "verbunden" und die darin enthaltenen
Codezeilen, beim Auftreten des entsprechenden Interrupts ausgeführt
>Wie lege ich dort den Interrupt für TimerA fest?
Mit dem von Dir aufgeführten Code Bsp ;-)
Das da oben sind nur Kompiler-Anweisungen, die den Kompiler veranlassen, die Interrupt-Vektoren so einzustellen, dass deine ISR angesprungen wird. Den Interrupt freigeben musst du extra noch, wie Jörg schon schrieb. Immer zuerst die Beispiel-Codes anschauen, es gibt eigentlich für jedes Peripheriemodul ein oder mehrere Beispiele.
Beim Hersteller? Wo denn sonst?
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.