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.