MSP430 Probleme mit ACLK und Uhrenquarz

Dec 29, 2010 7 Replies

Ich habe bei dem LaunchPad mal den Uhrenquarz eingelötet und funktioniert soweit scheinbar auch, ich kann auch auf P1.0 den Takt wieder rausgeben und messe dort auch 32768 Hz, aber wenn ich es als Quelle für Timer A verwende, mit Vorteiler 8 im BCSCTL1 und nochmal ein Teiler 8 im TACTL Register, und den Timer im Compare-Modus laufen lasse, mit 256 als Endwert, dann sollte doch der Interrupt dann mit 32768/8/8/256 = 2 Hz aufgerufen werden, oder? Er wird aber nur mit 1 Hz aufgerufen. Wo liegt mein Denkfehler?



Gibt es übrigens irgendwo ein Diagramm für den Clock-Tree für die MSP430-Chips, wie man es von anderen Herstellern kennt?



Hier der Source Code:



#include #include "msp430x20x2.h"



#define RED_LED BIT0 #define GREEN_LED BIT6 #define LED_DIR P1DIR #define LED_OUT P1OUT



#define BUTTON BIT3 #define BUTTON_OUT P1OUT #define BUTTON_DIR P1DIR #define BUTTON_IN P1IN #define BUTTON_REN P1REN



// Timer A0 interrupt service routine #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) { static uint8_t on = 0; if (on) { LED_OUT &= ~GREEN_LED; } else { LED_OUT |= GREEN_LED; } on = !on; TACCTL0 &= ~CCIFG; }



int main(void) { // Watchdog ausschalten WDTCTL = WDTPW + WDTHOLD;



// LED Pins auf Ausgang setzen LED_DIR |= RED_LED | GREEN_LED; // ACLK auf die rote LED ausgeben P1SEL |= RED_LED; // Button-Eingang konfigurieren BUTTON_DIR &= ~BUTTON; BUTTON_REN |= BUTTON;



// rote LED an LED_OUT |= RED_LED;



// den Low Frequency Mode für den externen Quarzeingang setzen BCSCTL1 &= ~XTS; // durch 8 teilen BCSCTL1 |= DIVA_3; // 32768 Hz Modus einstellen BCSCTL3 &= ~(LFXT1S0 | LFXT1S1); // 12.5 pF einstellen BCSCTL3 |= XCAP0 | XCAP1;



// zunächst ggf. aktiven Capture/Compare Interrupt für Timer ausschalten TACCTL0 = 0;



// Timer im "Up" Modus laufen lassen, mit ACLK getaktet TACTL = TASSEL_1 | MC_3 | ID_3; // Timer stoppen // (siehe Kapitel 12.2.2 vom MSP430x2xx Family User's Guide) TACCR0 = 0; // neuen Grenzwert festlegen. Der Timer läuft jetzt wieder von 0 los TACCR0 = 256;



// Capture/Compare Interrupt einschalten TACCTL0 = CCIE;



// Low Power Mode 0 aktivieren und Interrupts aktivieren // Die CPU hält hiernach an und läuft nur noch im Interrupt __bis_SR_register(LPM0_bits | GIE); // wird nicht erreicht return 0; }


Frank Buss, http://www.frank-buss.de piano and more: http://www.youtube.com/user/frankbuss

Frank Buss schrieb:

MC_3 ist der Up/down-Modus.

Christian

Christian Zietz - CHZ-Soft - czietz (at) gmx.net WWW: http://www.chzsoft.de/ PGP/GnuPG-Key-ID: 0x6DA025CA

Danke, das war es! Hatte ich bei meinen Versuchen wohl mal mit ID_3 verwechselt. Gute Idee von dem Headerdatei-Autor, da nur ja keine aussagekräftigen Namen verwendet zu haben :-)

Frank Buss, http://www.frank-buss.de piano and more: http://www.youtube.com/user/frankbuss

Also sowas ähnliches suche ich für den MSP430G2231:

formatting link

Zugegeben, wird bei den kleineren MSP430 Chips etwas einfacher ausfallen, aber es gibt ja zumindest schonmal beim Timer mehrere anwählbare Clocks, die jeweils ihre eigenen Vorteiler haben können und dann die Teiler der Timer noch.

Frank Buss, http://www.frank-buss.de piano and more: http://www.youtube.com/user/frankbuss

Frank Buss schrieb:

Du kannst es Dir gedanklich aus dem "Timer_A Block Diagram" und dem "Basic Clock Module+ Block Diagram" zusammensetzen.

Beides zu finden in der "MSP430x2xx Family User?s Guide" (slau144e.pdf).

Christian

Christian Zietz - CHZ-Soft - czietz (at) gmx.net WWW: http://www.chzsoft.de/ PGP/GnuPG-Key-ID: 0x6DA025CA

hm - ich hab in der Family-Giude immer alles recht sinnvoll beschrieben gefunden, im SLAU056J.pdf (MSP430 Family Users Guide Jan.

2010) sind in den jeweiligen Einleitungen zu den Kapiteln die Blockdiagramme eingezeichnet....

Grüße

- Michael Wieser

Falls es das bei TI tatsaechlich nicht gibt (ich habe es da bisher nur haeppchenweise gesehen), dann kannst Du es denen ja mal vorschlagen. Vielleicht setzen sie dann einen Praktikanten ran, der dabei auch noch was lernt.

Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

Ja, das kann man machen. Ich hätte es aber gerne alles komplett im Überblick. Habe mal im MSP430 Forum eine Anfrage gestellt, vielleicht gibt es das ja schon.

Frank Buss, http://www.frank-buss.de piano and more: http://www.youtube.com/user/frankbuss

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required