www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 BasicTimer1 / Stabile Uhr-Clock mit 32kHz Uhrenquarz


Autor: Jürgen R. (duke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

habe folgende Initialisierung um einen MSP430 jede 1 ms aus dem LPM3 zu 
holen und eine Uhr zu betreiben.
D.h. alle 1024 Interrupts wird eine Sekunde hinzugezählt.
Zusätzlich wird alle 10 Interrupts ein Sensor abgefragt.

Leider ist die Uhr nicht besonders genau (1 Sekunde pro Std zu schnell).

Ist die Initialisierung falsch?
Gibt es eine Möglichkeit die Uhr genauer zu machen (ausser DCF)?
Stromsparlösung bevorzugt.

  WDTCTL = WDTPW + WDTHOLD;    // Stop watchdog timer
  FLL_CTL0 &= ~XTS_FLL;        // XT1 0 low-frequency
  _BIC_SR(OSCOFF);             // turn on XT1 oscillator

  do                           // wait in loop until crystal is stable
   IFG1 &= ~OFIFG;
  while (IFG1 & OFIFG);

  FLL_CTL1 &= ~FLL_DIV0;       // ACLK = XT1
  FLL_CTL1 &= ~FLL_DIV1;

  IFG1 &= ~OFIFG;              // clear osc. fault int. flag
  FLL_CTL1 &= ~SELM0;          // set DCO as MCLK
  FLL_CTL1 &= ~SELM1;

  BTCTL = BTIP2;     // BT1 interrupt freq. = 1024Hz 
                     // aus ACLK = 32.768kHz
  _EINT();              // Enable interrupts


  _BIS_SR(LPM3_bits + GIE);     // in Low Power Mode 3

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alle 16768 Impulse aufwecken, da hast du zwar nur 1s Auflösung, aber ist 
genauer.

Autor: Jürgen R. (duke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Chris,

meinst Du den BTCTL so verändern, dass nicht mehr
1024 interrupts = 1 Sekunde, sondern
16768 interrupts = 1 Sekunde?

Kannst Du mir ein Beispiel geben?

thx!

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst im BTCLT Register die IP2 und IP1 und DIV auf 1 setzen, dann 
löst der alle 1s den Interrupt aus. Lies mal den User Guide, da gibts 
doch massig Kombinationen, wie man den ACLK da runter teilen kann für 
die Zeitbasis.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.