MSP430 und Timer_A

Gast #584751
Lesenswert?
• ▲
▼
Hallo an Alle,

da ich ziemlich neu im Gebiet der Mikrocontroller bin, wollte ich mit 
einfachem Beispiel starten: Ich wollte einen Timer, der immer nach einem 
bestimmten Zeitintervall einen Interrupt auslöst, programmieren. Hierzu 
wollte ich den auf dem MSP430 vorhandenen Timer_A0 benutzen. Als Clock 
für den Timer sollte der ACLK mit 32,768kHz dienen. Soweit mein 
Vorhaben. Mein Problem besteht nun darin, dass mein Quellcode/Timer im 
Debug-Modus (Simulation) leider keinen Interrupt auslöst und somit auch 
nicht die entsprechende Interrupt Service Routine aufruft. Auch wenn ich 
im Debug-Modus einen Timer per Debug auslöse, reagiert der Code nicht 
darauf :( Nachfolgend mein Code:

#include "msp430x12x2.h"

void main(void)
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;

  // Basic clock
  BCSCTL1 = XT2OFF;
  BCSCTL2 = SELM0 + SELM1 + SELS;

  // TimerA
  TACTL = TASSEL0 + TAIE;
  TACCTL0 = OUTMOD_4 + CCIE;
  CCR0 = 0x0F00;
  TACTL |= MC1;

  __enable_interrupt();

  for (;;)
  {
    //__low_power_mode_0();
    //__no_operation();
  }
}

#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A0(void)
{
  CCR0 += 0x0F00;
}


Für Hilfe wäre ich dankbar!
Grüße, Jürgen
#585017
Lesenswert?
• ▲
▼
Moment....

TASSEL_1 != TASSEL1

Die mit _ sind gleich die passend zurecht geschobenen, die ohne die 
reinen Bits, somit ist in diesem Fall TASSEL_1 das gleiche wie TASSEL1. 
Also beides ACLK.

Auszug aus dem Header-File:
1
#define TASSEL2             0x0400  /* unused */        /* to distinguish from UART SSELx */
2
#define TASSEL1             0x0200  /* Timer A clock source select 1 */
3
#define TASSEL0             0x0100  /* Timer A clock source select 0 */
4
#define ID1                 0x0080  /* Timer A clock input divider 1 */
5
#define ID0                 0x0040  /* Timer A clock input divider 0 */
6
#define MC1                 0x0020  /* Timer A mode control 1 */
7
#define MC0                 0x0010  /* Timer A mode control 0 */
8
#define TACLR               0x0004  /* Timer A counter clear */
9
#define TAIE                0x0002  /* Timer A counter interrupt enable */
10
#define TAIFG               0x0001  /* Timer A counter interrupt flag */
11

12
#define MC_0                (0<<4)  /* Timer A mode control: 0 - Stop */
13
#define MC_1                (1<<4)  /* Timer A mode control: 1 - Up to CCR0 */
14
#define MC_2                (2<<4)  /* Timer A mode control: 2 - Continous up */
15
#define MC_3                (3<<4)  /* Timer A mode control: 3 - Up/Down */
16
#define ID_0                (0<<6)  /* Timer A input divider: 0 - /1 */
17
#define ID_1                (1<<6)  /* Timer A input divider: 1 - /2 */
18
#define ID_2                (2<<6)  /* Timer A input divider: 2 - /4 */
19
#define ID_3                (3<<6)  /* Timer A input divider: 3 - /8 */
20
#define TASSEL_0            (0<<8)  /* Timer A clock source select: 0 - TACLK */
21
#define TASSEL_1            (1<<8)  /* Timer A clock source select: 1 - ACLK  */
22
#define TASSEL_2            (2<<8)  /* Timer A clock source select: 2 - SMCLK */
23
#define TASSEL_3            (3<<8)  /* Timer A clock source select: 3 - INCLK */
Gast #586818
Lesenswert?
• ▲
▼
Hallo Forum,

wer kann mir helfen? Ich muss mit einem MSF430F1232 einen Frequenzzähler 
bauen und dort den Capture-Eingang verwenden. Die Frequenz soll in einem 
100ms Zeitfenster gezählt werden - aber über Capture. Die maximale 
Eingangsfrequenz ist ca. 130kHz, die Auflösung soll aber 1Hz betragen.

Wer kann mir weiterhelfen?

Danke im Voraus,
Susi.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.