Forum: Digitale Signalverarbeitung / DSP / Machine Learning interrupt vector


von Daniel D. (misterschpock)


Lesenswert?

Hallo,


ich hab folgendes Problem

Ich hab den Timer_A initialisiert, 32KHz Quarz, , interrupt enabled 
(TAIE) und will den interrupt wie folgt abfangen


1
#pragma vector=TIMER_A0_VECTOR
2
interrupt void Timer_A (void)
3
{
4
5
   // led umschalten
6
}

Ich hab schon alles probiert, andere headerdatei eingebunden 
(msp430g2553.h statt msp430.h) , TimerA0_vector statt TimerA0_a0_vector 
geschrieben - aber er gibt mir immer Syntaxfehler zurück.

Wie funktioniert das mit dem interrupt abfangen?
Nutze den MSP430G2553 von TI mit dem TI CCS5.3, Windows 7.

Viele Grüße,
Stefan

von header ist lesbar (Gast)


Lesenswert?

Das Ding hat mehr als einen Timer. Wie ist die Deklaration im Header?

bei IAR sieht es so aus:
/************************************************************
* Interrupt Vectors (offset from 0xFFE0)
************************************************************/

#define PORT1_VECTOR        (2 * 2u)  /* 0xFFE4 Port 1 */
#define PORT2_VECTOR        (3 * 2u)  /* 0xFFE6 Port 2 */
#define ADC10_VECTOR        (5 * 2u)  /* 0xFFEA ADC10 */
#define USCIAB0TX_VECTOR    (6 * 2u)  /* 0xFFEC USCI A0/B0 Transmit */
#define USCIAB0RX_VECTOR    (7 * 2u)  /* 0xFFEE USCI A0/B0 Receive */
#define TIMER0_A1_VECTOR    (8 * 2u)  /* 0xFFF0 Timer0)A CC1, TA0 */
#define TIMER0_A0_VECTOR    (9 * 2u)  /* 0xFFF2 Timer0_A CC0 */
#define WDT_VECTOR          (10 * 2u) /* 0xFFF4 Watchdog Timer */
#define COMPARATORA_VECTOR  (11 * 2u) /* 0xFFF6 Comparator A */
#define TIMER1_A1_VECTOR    (12 * 2u) /* 0xFFF8 Timer1_A CC1-4, TA1 */
#define TIMER1_A0_VECTOR    (13 * 2u) /* 0xFFFA Timer1_A CC0 */
#define NMI_VECTOR          (14 * 2u) /* 0xFFFC Non-maskable */
#define RESET_VECTOR        (15 * 2u) /* 0xFFFE Reset [Highest Priority] 
*/

von Daniel D. (misterschpock)


Lesenswert?

Danke für den Tipp,

habe es gefunden!

1
 #pragma vector = TIMER0_A0_VECTOR
 muss es lauten.
Allerdings verstehe ich nicht, wofür eine der zwei Zahlen steht. Eine 
steht für die Nummer des Timers, aber die andere?

jetzt bekomme ich aber folgenden Fehler:
1
 this pragma must immediately precede a declaration

mein Code
1
 
2
#pragma vector = TIMER0_A0_VECTOR
3
__interrupt void Timer_A0_ISR(void)
4
{
5
6
  P1OUT ^=0x01;
7
  AKTUELL++;
8
  if(AKTUELL>3141)
9
    {AKTUELL=0;}
10
11
  TACCR1=MAXZEIT-liste[AKTUELL];
12
  if(hilfsliste[AKTUELL]==300)
13
    TACCR1=1;
14
}

(konnte den Code noch nicht debuggen, weil er direkt in Zeile 1 einen 
Fehler macht. prinzipiell soll eigentlich nur TACCR1 (die LED "AN"-Zeit) 
aus der Liste gelesen werden. der Rest ist vorerst ein workaround (das 
mit den If-Bedingungen)



Hoffe ihr könnt mir bei dem Fehler helfen :-)

VG
Stefan

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.