MSP430 G2553 Timer A1 Interrupt geht nicht

#3945453
Lesenswert?

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.
#3949304
Lesenswert?

Danke für die Antwort natürlich. Das war es.
Da ich gerade mit dem Buch Microcontroller Basics von John Davies 
arbeite, hätte ich noch eine andere Frage:
In dem Kapitel über Interrupts ist auch eine Aufgabe mit einem 
Piezo-Lautsprecher enthalten. Der G2553 besitzt onboard keinen, würde 
stattdessen ein Speaker vom PC-Mainboard funktionieren? Wie ist denn da 
die Spannung?
#3975475
Lesenswert?

Mal eine Frage, die relativ blöde klingt wahrscheinlich. Wenn ich einen 
DIP-Schalter als Eingang nehme, und dann aufgrund der Eingabe ein 
Interrupt ausgelöst und dadurch eine bestimmte Aktion durchgeführt wird, 
z.B. Board-Led leuchtet, wie hoch muss ich dann den Widerstand zwischen 
Vcc (3,3V) Dip-Schalter und dem Inputpin wählen?
Hab wie gesagt kaum Erfahrung in dem Bereich, also Sorry.
Persönliche Seite #3975497
Lesenswert?

Lukas K. schrieb:
> Wenn ich einen DIP-Schalter als Eingang nehme, und dann aufgrund der
> Eingabe ein Interrupt ausgelöst und dadurch eine bestimmte Aktion
> durchgeführt wird

Das wird nicht nur einmal geschehen -- Prellen. Schalter/Taster etc. 
gehören nicht an Leitungen, die Interrupts auslösen.

Als Pullup-Widerstand kannst Du ein paar Kiloohm verwenden, 
beispielsweise 4k7.
Gast #3975668
Lesenswert?

Nach dem ersten Code nutzt du das Launchpad "G" Value Line. Du bekommst 
den Schaltplan dafür und kannst sehen, wie TI das mit dem Taster gemacht 
hat.

Ein Taster per Interrupt macht schon Sinn. Man kann damit den MSP aus 
dem Schlaf wecken. ;-)

Entprellen geht einfach. Der Port Interrupt wird einfach für eine kurze 
Zeit gesperrt.

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