Hallo liebe Community,
ich experimentiere gerade etwas mit Interrupts und bin gerade dabei, die
onboard-LEDs mittels Timer zu toggeln. Leider klappt das nicht und es
bleibt die ganze Zeit die grüne LED2 an. Ausgewählt wurde SMCLK, der
nötige Quarz ist auch montiert.
Hier der Code:
1 | #include <msp430g2553.h>
|
2 | #include <intrinsics.h>
|
3 |
|
4 | #define LED1 BIT0
|
5 | #define LED2 BIT6
|
6 |
|
7 | void main(void) {
|
8 |
|
9 | WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
|
10 |
|
11 | P1DIR |= LED1 | LED2;
|
12 | P1OUT = ~LED1 ; // Set the green LED off
|
13 |
|
14 | TA1CCR0 = 32767;
|
15 | TA1CCTL0 = CCIE;
|
16 | TA1CTL = MC_1|TASSEL_2|TACLR;
|
17 |
|
18 | __enable_interrupt();
|
19 | for(;;) {}
|
20 |
|
21 | }
|
22 |
|
23 | #pragma vector = TIMER0_A1_VECTOR
|
24 | __interrupt void TIMER0_A1_ISR( void )
|
25 | {
|
26 | P2OUT ^= LED1 | LED2; // Toggle LED
|
27 | }
|
Ein Interrupt über den Button (PORT1_VECTOR) funktioniert hingegen.
Wahrscheinlich habe ich irgendeinen leichtsinnigen Fehler gemacht,
verzeiht mir das bitte, ich habe kaum Erfahrung mit dem Mikrocontroller.
Gruß
L.K.