Gast
#3558366
Hallo,
ich hänge leider an einem Problem und komme nicht so recht weiter:
Wir wollen an einem MSP4302619 ein konstantes Rechtecksignal mit 1 MHz
ausgeben. Für Timer A und Port 1.1 klappt das auch mit folgendem Code:
#include <msp430x26x.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop Watchdog Timer
if (CALBC1_8MHZ ==0xFF || CALDCO_8MHZ == 0xFF)
{
while(1); // If calibration
constants erased
// do not load, trap CPU!!
}
BCSCTL1 = CALBC1_8MHZ; // Set DCO to 8MHz
DCOCTL = CALDCO_8MHZ;
P1DIR |= 0x02; // P1.1 output
P1SEL |= 0x02; // P1.1 option select
CCTL0 = OUTMOD_4; // CCR0 toggle mode
CCR0 = 4-1; // countclock = 8MHz/2counts => 1count =
up ---- 1 count = low
TACTL = TASSEL_2 + MC_1; // ACLK, upmode
_BIS_SR(LPM0_bits); // Enter LPM3 w/interrupt
}
Da wir den Timer A aber später für etwas anderes verwenden wollen, soll
die Ausgabe am Timer B umgesetzt werden. Dazu haben wir Port 4.4
ausgewählt und den Code folgendermaßen umgewandelt. Leider tut sich dann
überhaupt nix- hat vielleicht jemand eine Idee, woran das liegen könnte?
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop Watchdog Timer
if (CALBC1_8MHZ ==0xFF || CALDCO_8MHZ == 0xFF)
{
while(1); // If calibration
constants erased
// do not load, trap CPU!!
}
BCSCTL1 = CALBC1_8MHZ; // Set DCO to 8MHz
DCOCTL = CALDCO_8MHZ;
P4DIR |= 0x01; // P1.4 output
P4SEL |= 0x01; // P1.4 option select
TB0CCTL0 = OUTMOD_4; // CCR0 toggle mode
TBCCR0=TBCCR0 = 4-1; // countclock = 8MHz/2counts =>
1count = up ---- 1 count = low
TBCTL = TBSSEL_1 + MC_1; // ACLK, upmode
_BIS_SR(LPM0_bits); // Enter LPM3 w/interrupt
}