Gast
#891816
hallo,
bin auf der suche nach jmd der mir beim msp430F149 helfen kann.
habe eigentlich nur vorgehabt den timer_A und die verschiedene modis(up,
cont. ...) auszuprobieren.
das programm sollte insgesamt 2 interrupts auslösen. beim 1. interrupt
wird eine led( an Port6.1) eingeschaltet, beim 2. interrupt
ausgeschaltet. verwendet wird der continuous mode.
dabei wird der erste wert in TACCR0 hinterlegt, der andere in TACCR1.
das problem, das ich habe ist, das der inetrrupt nicht ausgelöst wird.
verwendet wird der compiler ICC7 und der debugger NOICE
vielleicht kann sich ja jmd das ma anschaun..... :)
#include <msp430x14x.h>
#include <msp430def.h>
#pragma interrupt_handler timer_a_isr1: TIMERA0_VECTOR timer_a_isr2:
TIMERA1_VECTOR
void main(void)
{
_STOP_WATCHDOG(); // der Watchdog Timer wird gestoppt
// (enthalten in msp430def.h)
P6SEL = 0x00; //alle Pin an Port6 als STD. I/O
P6DIR = 0xFD; // bis auf 6.1, sind alles Ausgänge
//Timer_A
// TACTL |= TACLR; // TAR Inhalt löschen
timera_init(); // Initialisierung des Timers aufrufen
TACTL = MC_2; // Timer_A starten
//MC_1 --> Up Mode
//MC_2 --> Continuous Mode
//MC_3 --> Up/Down Mode
_BIS_SR(GIE); //GIE = 1, globale Interruptfreigabe
while(1) //es wird auf Interrupts gewartet -- Endlosschleife!!
{
}
} //main
void timera_init()
{
TACTL = TASSEL_2 + ID_3 + TAIE ;
//ID_3 --> Clock/8
//TASSEL_2 --> SMCLK
// TAIE --> Interrutp Freigabe
TACCTL0 = CCIE; //Interrutp Freigabe
TACCTL1 = CCIE;
//TACTL |= TAIE; //freigeben
TACCR0= 800;
TACCR1= 100;
}
void timer_a_isr1() //für TACCR0 zuständig --> LED an!
{
TACCR0+= 800;
P6OUT ^= 0x00; //LED an
}
void timer_a_isr2() //für TACCR1 zuständig --> LED aus!
{
TACCR1+=100;
P6OUT ^= 0x01; //LED aus
}