Hi, als interessierter Neuling versuch ich mich gerade in der µC Programmierung :) Meine erste Aufgabe zum herantasten an die Materie besteht darin, eine LED auf dem Developer Board MSP430 mit 1 Hz blinken zu lassen. Die Frage ist, welchen der 3 Timer sollte ich nehmen und wie binde ich sie in den C-Code ein? Persönlich wäre ich für den Basic Timer 1. Der läuft doch standardmäßig mit 32768 Hz. Allerdings wurden in diversen Beispielen und ähnlichen Fragen im Forum meist der Timer A oder Timer B verwendet. Hier mal mein Code wie ich es bisher gelöst habe. Die LED blinkt 3 mal. Die Frequenz wurde mit einem Delay gelöst. //------------------------------------------------------------------- #include <msp430xg46x.h> void main (void) { volatile unsigned int i; volatile unsigned int j=0; WDTCTL = WDTPW + WDTHOLD; P5DIR |= 0x02; while (j<6) { j++; P5OUT ^= 0x02; for (i=50000;i>0;i--); } } //-------------------------------------------------------------------
Nach ein wenig Recherche bin ich auf einen Ansatz gestoßen und hab mich für den TimerB entschieden, welchen ich als Source die SMLCK zuweise. Warum muss man Interrupts eigentlich Enablen? > //------------------------------------------------------------------- > #include <msp430xg46x.h> > > void main (void) > { > volatile unsigned int i; > volatile unsigned int j=0; > > WDTCTL = WDTPW + WDTHOLD; TBCTL = TBSSEL_2 + MC_2 + TBCLR + TBIE; > P5DIR |= 0x02; > while (1) > { > } > } #pragma vector=TIMERB1_VECTOR __interrupt void TIMERB1_ISR(void) { P5OUT ^= 0x02; } > //------------------------------------------------------------------- Und wie ihr seht hab ich auch gleich die Interruptroutine mit eingefügt, die dann die Zustände der LED hin und her schaltet. Allerdings bleibt die Frage, wie ich den Takt langsamer mache, damit ich das blinken auch sehe. Und wie realisiere ich es, dass die Diode dauerhaft, bzw. nur 3 mal blinkt? Meine Anweisung dazu stand vorher in der while-Schleife. Eigentlich müssten ja nun die Interrupts des Timers gezählt werden.
> Warum muss man Interrupts eigentlich Enablen?
Erkenntnis: Damit Interrupts auch wahrgenommen werden, sonst werden sie
ignoriert.
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.