mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 Timer


Autor: Justus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Ich habe mich ein wenig mit den Timern beim MSP beschäftigt und die 
grundlegende Funktionalität ist schonmal da. Jetzt wollte ich als 
nächstes den Timer nicht bis zum Maximalwert zählen lassen, sondern zum 
im TBCL0 stehenden.
Das kriege ich aber nett hin. Weiß einer wie es geht und teilt sein 
Wissen mit mir?

Gruss




void init_TimerB(long Endswert)
{
  TBCTL = TBSSEL_2 + TBCLR;              // SMCLK, clear TAR
  TBCCTL0 = CCIE;                       // CCR0 interrupt enabled
  TBCCR0 = Endwert;
  TBCTL |= MC1;                         // Start Timer_A in continuous 
mode
  _EINT();                              // interrupt enable
}

Autor: Nico (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst schon ein bißchen genauer werden! Was geht denn nicht?

Autor: Justus ... (justusjonas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, der Timer läuft immer von Null bis 65536 und ich will eigentlich 
dass er nur bis Endwert=7200 läuft.

Autor: Nico (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. Warum übergibst Du der Funktion einen long-Wert? Integer reicht 
völlig aus!
2. Dein Übergabeparameter heißt Endswert und in der Funktion lädst Du 
den Timer mit Endwert! Also ein "s" zuviel!

Autor: Justus ... (justusjonas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast recht, sorry, dass mit dem "s" war ein Tippfehler, aber nur hier 
im Forum nicht im Code.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da steht es doch, von einem kleinen Fehler im Kommentar abgesehen:

  TBCTL |= MC1;        // Start Timer_A in continuous mode

(Du verwendest Timer_B, nicht Timer_A).

Um nur bis zum Wert in TBCL0 zu zählen, musst Du MC0 setzen und MC1 
gelöscht lassen.



Autor: Justus ... (justusjonas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Rufus, hat wunderbar funktioniert.


void init_TimerB(int Endwert)           // Endwert mit 7209 Übergeben
{
  TBCTL = TBSSEL_2 + TBCLR;             // SMCLK, clear TAR
  TBCCTL0 = CCIE;                       // CCR0 interrupt enabled
  TBCCR0 = Endwert;                     // Setzt den Endwert des Timers
  TBCTL |= MC0;                         // Start Timer_B in up mode
  _EINT();                              // interrupt enable
}

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.