Hey,
ich programmiere mit Code Composer Studio v5, einen MSP430F6638. Ich
will mit einem Timer einen Interrupt auslösen und in der ISR eine
Messung vornehmen. Das Problem ist das eine Initialisierung die ich für
die Messung benötige verhindert dass der Interrupt ausglöst wird. Wenn
ich diese auskommentiere funktioniert es einwandfrei:
Die Initialiserung
1 | void I2C_init(unsigned char Slave, unsigned char Prescale) {
|
2 | P8SEL |= SCL+SDA; // Assign I2C pins to USCI_B1
|
3 | P8DIR |= SCL+SDA;
|
4 | UCB1CTL1 |= UCSWRST; // Enable SW reset
|
5 | UCB1CTL0 = UCMST + UCMODE_3 + UCSYNC; // I2C Master, synchronous mode
|
6 | UCB1CTL1 |= UCSSEL_2; // Use SMCLK, keep SW reset
|
7 | UCB1BR0 = Prescale; // fSCL = SMCLK/10 = 100kHz (only if SMCLK=1MHz, DCO as Source)
|
8 | UCB1BR1 = 0;
|
9 | UCB1CTL0 &= ~UCSLA10; // Set slave address 7 bits
|
10 | UCB1I2CSA = Slave; // Set slave address
|
11 | UCB1CTL1 &= ~UCSWRST; // Clear SW reset, resume operation
|
12 | UCB1IE |= 0x3FFF; // Enable RX + TX + all other interrupt
|
13 | UCB1IFG = UCTXIFG;
|
14 | }
|
Der Timerinterrupt:
1 | TA1CCTL0 = CCIE; // CCR0 interrupt enabled
|
2 | TA1CCR0 = 50000;
|
3 | TA1CTL = TASSEL_2 + MC_1 + TACLR; // SMCLK, upmode, clear TAR
|
4 |
|
5 | __bis_SR_register(LPM0_bits + GIE); // Enter LPM0, enable interrupts
|
6 |
|
7 | // Timer1 A0 interrupt service routine
|
8 | #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
9 | #pragma vector=TIMER1_A0_VECTOR
|
10 | __interrupt void TIMER1_A0_ISR(void)
|
11 | #elif defined(__GNUC__)
|
12 | void __attribute__ ((interrupt(TIMER1_A0_VECTOR))) TIMER1_A0_ISR (void)
|
13 | #else
|
14 | #error Compiler not supported!
|
15 | #endif
|
16 | {
|
17 | P1OUT ^= 0x01;
|
18 | }
|
liegt das vllt irgenwie daran dass beide auf den SMCLK zugreifen
wollen_??