interrupt vector

OP #3012384
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
Gast #3013274
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] 
*/
OP #3013500
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren