MSP430 Probleme mit ACLK und Uhrenquarz

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
Reply to
Frank Buss
Loading thread data ...

Frank Buss schrieb:

MC_3 ist der Up/down-Modus.

Christian

--
Christian Zietz  -  CHZ-Soft  -  czietz (at) gmx.net
WWW: http://www.chzsoft.de/
 Click to see the full signature
Reply to
Christian Zietz

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
Reply to
Frank Buss

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
Reply to
Frank Buss

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/
 Click to see the full signature
Reply to
Christian Zietz

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

Reply to
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/
 Click to see the full signature
Reply to
Joerg

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
Reply to
Frank Buss

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.