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
}
Naja, der Timer läuft immer von Null bis 65536 und ich will eigentlich dass er nur bis Endwert=7200 läuft.
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!
Du hast recht, sorry, dass mit dem "s" war ein Tippfehler, aber nur hier im Forum nicht im Code.
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.
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
}
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.