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 }
Kese schrieb: > P4DIR |= 0x01; // P1.4 output > P4SEL |= 0x01; // P1.4 option select Das ist Port 4.1 und nicht Port 4.4.
Oh, tut mir Leid, das war nur ein Flüchtigkeitsfehler. Mit P4DIR |= 0x10 und P4SEL |= 0x10 erhalte ich aber leider auch kein Signal am entsprechenden Pin.
Noch ein Flüchtigkeitsfehler: P1.1 ist Timer_A3.TA0 P4.4 ist Timer_B7.TB4 Du setzt TB0CCTL0 und TBCCR0 statt TBCCTL4 und TBCCR4.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.