mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430FG4618 Taktfrequenz mit Registern - Wie funktionierts?


Autor: Stefan M. (stefan_m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich sollte eine LED mit 1 Hz blinken lassen. Das habe ich wie folgt 
gelöst:

#include <msp430xg46x.h>

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;  // Stop WDT
  P5DIR |= 0x02;             // P5.1 output (Port5 PIN 1)
  CCTL0 = CCIE;     // CaptureControl0=CCR0InterruptEnabled
  CCR0 = 32769;     // Endwert wird ins CapputreCompareRegister=163 
gesetzt
                    //#define CCR0  TACCR0  /* Timer A Capture/Compare 0 
*/
  TACTL = TASSEL_1 + MC_2 + ID_0;       // ACLK, contmode,Vorteiler 0
  TACTL |= MC_2;                        // TimerA Start
  _BIS_SR(LPM3_bits + GIE);             // Enter LowPowerMode3 w/ 
interrupt
}

// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
  P5OUT ^= 0x02;                        // Toggle P5.1
  CCR0 += 32769;                        // Add Offset to CCR0
}

Die Timersource ist ACLK (32769 HZ), gestartet im ContiniousMode. Dieser 
zählt jeweils von 0 bis 65535, dann kommt der Overflow. Da ich das CCR0 
auf 32769 gesetzt habe, zählt der Timer nun von 32769 bis 65535 bis zum 
Overflow. Der er 32769 Zählschritte pro Sekunde schafft, erhält man jede 
Sekunde einen Overflow.

Nun die Frage: Wenn ich nun 100Hz haben will, muss ich das CCR0 auf 327 
setzen. Praktisch klappt das dann auch, aber theoretisch passt dann 
meine Erklärung nicht mehr. Denn wenn der Timer von 327 zu 65535 zählt, 
dann würde er länger und nicht weniger Zeit benötigen.

Folglich ist der Wert im CCR0 der Endwert, bis zu dem gezählt wird, 
richtig? Nur dann muss der Zähler irgendwo Null gesetzt werden. Oder 
passiert das automatisch beim Overflow? hm, jetzt klingt es wieder 
logisch gg

Also ist der Wert im CCR0 nun der Endwert, bis zu dem gezählt wird?

Grüße,

Stefan.

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.