Wie kann ich einen 130 Khz Takt mit dem MSP430 erzeugen?

Gast #674745
Lesenswert?
• ▲
▼
Hallo,

ich möchte mit meinem MSP430F1232 einen Takt mit ca 130 kHz generieren. 
Ist das möglich? Und wie geh ich's am besten an?
Mir ist klar, dass das über Timer realisiert werden muss, nur leider 
steige ich gerade nicht richtig dahinter und bräuchte einen Denkanstoß.

Gruß
Klaus
#674774
Lesenswert?
• ▲
▼
Am einfachsten geht das mit dem Timer und den Output Units. Schau dir 
mal den User Guide zu dem MSP an, da findest du unter Timer jede Menge 
Infos. Wenn du die Register passend setzt, dann kannst du bei einem 
bestimmten Zählerstand den Ausgabe-Pin setzen und bei einem anderen 
Zählerstand bzw. Timer-Überlauf wieder rücksetzen lassen.

Es gibt da auch ein schönes Beispiel von TI:
1
//******************************************************************************
2
//  MSP-FET430X120 Demo - Timer_A, Toggle P1.1/TA0, Up Mode, 32kHz ACLK
3
//
4
//  Description: Toggle P1.1 using hardware TA0 output. Timer_A is configured
5
//  for up mode with CCR0 defining period, TA0 also output on P1.1. In this
6
//  example, CCR0 is loaded with 10-1 and TA0 will toggle P1.1 at TACLK/10.
7
//  Thus the output frequency on P1.1 will be the TACLK/20.  No CPU or software
8
//  resources required. Normal operating mode is LPM3.
9
//  ACLK = TACLK = 32kHz, MCLK = default DCO ~800kHz
10
//  As coded with TACLK = ACLK, P1.1 output frequency = 32768/20 = 1.6384kHz
11
//  //* External watch crystal installed on XIN XOUT is required for ACLK *//
12
//
13
//           MSP430F123(2)
14
//         -----------------
15
//     /|\|              XIN|-
16
//      | |                 | 32kHz
17
//      --|RST          XOUT|-
18
//        |                 |
19
//        |         P1.1/TA0|--> ACLK/20
20
//
21
//  M. Buccini
22
//  Texas Instruments Inc.
23
//  Feb 2005
24
//  Built with IAR Embedded Workbench Version: 3.21A
25
//******************************************************************************
26

27
#include  <msp430x12x2.h>
28

29
void main(void)
30
{
31
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
32
  P1DIR |= 0x02;                            // P1.1 output
33
  P1SEL |= 0x02;                            // P1.1 option select
34
  CCTL0 = OUTMOD_4;                         // CCR0 toggle mode
35
  CCR0 = 10-1;
36
  TACTL = TASSEL_1 + MC_1;                  // ACLK, upmode
37

38
  _BIS_SR(LPM3_bits);                       // Enter LPM3 w/interrupt
39
}

Das müsstest du halt an deine Frequenz und Taktquelle anpassen. Wenn die 
Ausgangsfrequenz halbwegs genau sein soll, müsstest du einen passenden 
Quarz dran bauen.

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.