Hallo! Es gibt ACLK MCLK SMCLK VLOCLK DCO und bei dem LPM4 ist sogar der chrystal extra mit aufgeführt Gibt es Standardprozeduren, welchen Takt man für was verwendet?(will zb. ADC und UART nutzen, mit nem timer regelmäßig aufwachen) Woraus entstehen welche Clocks? Das sind so viele, finde mich nicht zurecht. Ich kannte nur intern und extern z.B. bei Atmegas. Danke für: HILFE! im Übrigen handelt es sich um einen msp430x22x4
Im User Guide ist ein großes Bild, welche Takt-Quellen auf welche Taktleitungen gehen. Diese flexible Taktversorgung, die während des betriebes frei geändert werden kann, ist ja der größte Vorteil am MSP430 gegenüber Mitbewerbern. Im Normalfall wird man den MCLK (für die CPU) mit einem vom DCO/FLL erzeugten Takt betreiben. Damit ist sichergestellt, dass für die Ausführung vion Interrupts der Takt innerhalb 1...6µs (je nach MSP) verfügbar ist. Für einen Timer, der das System zyklisch aufwachen soll, benutzt mal am besten einen Uhrenquarz an XT1 und speist damit den ACLK. Der ist nämlich im LPM3 auch noch aktiv. Für UART Kommunikation sollte man schon auch einen Quarz-Takt oder einen von der FLL+ aus dem Quarz abgeleiteten Takt benutzen. Die FLL+ ist in der Lage, ganzzahlige Vielfache des Quarz-Taktes zu erzeigen, da kann man z.B. aus dem Uhrenquarz eine recht stabile hohe Frequenz für die UART erzeugen. Wenn die nicht genau passt, ist beim MSP430 kein Problem, er hat ja den Baudraten-Modulator. Will man meinetwegen noch schnelle PWM oder solche Geschichten machen, die eine genaue Zeitbasis erfordern, kann man ja noch den XT2 anschließen und den Takt als SMCLK (für die Peripherie) nehmen. Die allermeisten Module lassen eine Auswahl aller Takte als Quelle zu, da kann man sich gut austoben. Der ADC funktioniert gut mit seinem eigenen Taktgenerator, nur das Start-Signal sollte man per Timer mit denn CCR-Registern erzeugen. Beim ADC kann man dann das TA oder TB Signal als Start benutzen. Somit ist eine äquidistante Abtastung sichergestellt.
Angenommen, ich will nun den Quarz nutzen. Dieser ist in meiner Schaltung bereits vorhanden. Sind dann noch Einstellungen notwendig oder läuft die CPU dann sofort mit dem Quarztakt? ACLK ist der Quarz, es sei denn ich brech den runter mit DIVAx richtig?
Welchen Quarz? Und wo ist der angeschlossen? Die Standard-Einstellung ist ACLK gespeist aus Uhrenquarz am XT1. MCLK und SMCLK gespeist aus dem DCO, der ohne Initialisierung bei etwa 800kHz läuft.
Der Timer läuft mit DCO-Frequenz, also wenn ich TBSSEL_2 nutze. TBSSEL_1 verweist ja auf ACLK, aber dann wird der getoggelte Pin nur einmal auf HI gesetzt, dann passiert nix mehr! vllt. läuft mein quarz nicht?!? //main und #inc. weggelassen TBCTL = TBSSEL_1 + MC_2 + TBIE; // SMCLK, contmode, interrupt __bis_SR_register(LPM0_bits + GIE); // Enter LPM0 w/ interrupt } // Timer_B3 Interrupt Vector (TBIV) handler #pragma vector=TIMERB1_VECTOR __interrupt void Timer_B(void) { switch (TBIV) // Efficient switch-implementation { case 2: break; // TBCCR1 not used case 4: break; // TBCCR2 not used case 14: P4OUT ^=(1<<2); // overflow break;
Welcher quarz? Also angeschlossen ist der an XIN und XOut, am quarz noch 22pF gegen Masse an jedem Quarzpin. Es ist ein Grundton Standardquarz
Was meinst du mit Grundton Standart schließt man an XT1 (also XIN und XOUT) einen 32 kHz Uhrenquarz an. DAnn läuft auch die Standart einstellung.
Welche Frequenz hat der? Du musst dann erst den HFXTAL Modus einschalten, wenn der mehr als 45kHz hat. Dann wie in den C-Demos beschrieben, das Fault-Flag pollen usw. um zu schauen, ob der Oszillator angelaufen ist.
mit dem hfxtal-modus ist sicher das bit XTS aus BCSCTL1 gemeint?? in den demos habe ich nix übers Fault-Flag gefunden.
stephan schrieb: > mit dem hfxtal-modus ist sicher das bit XTS aus BCSCTL1 gemeint?? > in den demos habe ich nix übers Fault-Flag gefunden. Ich meine den Quelltext:
1 | //******************************************************************************
|
2 | // MSP430F22x4 Demo - Basic Clock, MCLK Sourced from HF XTAL
|
3 | //
|
4 | // Description: Proper selection of an external HF XTAL for MCLK is shown by
|
5 | // first polling the OSC fault until XTAL is stable - only then is MCLK
|
6 | // sourced by LFXT1. MCLK/10 is on P1.1 driven by a software loop taking
|
7 | // exactly 10 CPU cycles.
|
8 | // ACLK = MCLK = LFXT1 = HF XTAL, SMCLK = default DCO ~1.2MHz
|
9 | // //* HF XTAL NOT INSTALLED ON FET *//
|
10 | // //* Min Vcc required varies with MCLK frequency - refer to datasheet *//
|
11 | //
|
12 | // MSP430F22x4
|
13 | // -----------------
|
14 | // /|\| XIN|-
|
15 | // | | | HF XTAL (3 – 16MHz crystal or resonator)
|
16 | // --|RST XOUT|-
|
17 | // | |
|
18 | // | P1.1|-->MCLK/10 = HFXTAL/10
|
19 | // | P2.0|-->ACLK = HFXTAL
|
20 | //
|
21 | // A. Dannenberg
|
22 | // Texas Instruments Inc.
|
23 | // April 2006
|
24 | // Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
|
25 | //******************************************************************************
|
26 | #include "msp430x22x4.h" |
27 | |
28 | volatile unsigned int i; |
29 | |
30 | void main(void) |
31 | {
|
32 | WDTCTL = WDTPW + WDTHOLD; // Stop WDT |
33 | |
34 | P2DIR |= 0x01; // P2.0 = output direction |
35 | P2SEL |= 0x01; // P2.0 = ACLK function |
36 | P1DIR |= 0x02; // P1.1 = output direction |
37 | |
38 | BCSCTL1 |= XTS; // ACLK = LFXT1 = HF XTAL |
39 | BCSCTL3 |= LFXT1S1; // 3 – 16MHz crystal or resonator |
40 | |
41 | do
|
42 | {
|
43 | IFG1 &= ~OFIFG; // Clear OSCFault flag |
44 | for (i = 0xFF; i > 0; i--); // Time for flag to set |
45 | }
|
46 | while (IFG1 & OFIFG); // OSCFault flag still set? |
47 | |
48 | BCSCTL2 |= SELM_3; // MCLK = LFXT1 (safe) |
49 | |
50 | for (;;) // Infinite loop |
51 | {
|
52 | P1OUT |= 0x02; // P1.1 = 1 |
53 | P1OUT &= ~0x02; // P1.1 = 0 |
54 | }
|
55 | }
|
danke für den code! Nur eigenartig: Wenn ich einen 4MHz Quarz nehme, bekomme ich an Pin 2.0 ein 75Hz signal. Ja, Hz nicht kHz oder MHz :(
Womit misst du das? Oszilloskop? Hat das genügend Bandbreite? Sonst gibts Alias-Bilder durch die Verletzung des Abtasttheorems.
abtasttheorem ist mir bekannt, zb. shannon, also dies ist wohl mit 400MHz Oszi voll und ganz erfüllt.......
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.