Forum: Mikrocontroller und Digitale Elektronik Wie kann ich einen 130 Khz Takt mit dem MSP430 erzeugen?


von Klaus (Gast)


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

von Christian R. (supachris)


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.

von Klaus (Gast)


Lesenswert?

Also, so wie's da steht, ist die maximal mögliche Frequenz 32,768 KHz?
Also müsst ich für 130 KHz einen entsprechenden Quarz verbaun?

von Christian R. (supachris)


Lesenswert?

Richtig. Oder halt den internen DCO benutzen, der geht ja bei den neuen 
Typen bis 16MHz. Wenn du den passend einstellst, und Temperaturdrift 
nicht weiter stört, kannst du den als Taktbasis nutzen.

von Klaus (Gast)


Lesenswert?

Hab jetzt mal das Oszi rangehangen. Der DCO ist nicht gerade sehr genau.

von Christian R. (supachris)


Lesenswert?

Sag ich doch. Steht ja aber auch im Datenblatt und im User Guide.

von Jörg S. (Gast)


Lesenswert?

> Der DCO ist nicht gerade sehr genau.
Externen Oszillatorwiderstand benutzen, dann wird's wesentlich genauer.

von Christian R. (supachris)


Lesenswert?

...aber immer noch weit entfernt von einem Quarz.

von Klaus (Gast)


Lesenswert?

Ich hab vor einen anderen Quarz zu installieren.

von Jörg S. (Gast)


Lesenswert?

> ...aber immer noch weit entfernt von einem Quarz.
Für ein "ca 130 kHz" wird es dicke reichen.

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
Noch kein Account? Hier anmelden.