www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bauen einer Uhr mit Timer B MSP430F449


Autor: Styx (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Community,

ich will mir eine Uhr bauen die mit Hilfe des Timer B die Sekunden 
zählt.


Meine ISR ist im Anhang

Mein Timer habe ich folgendermaßen initialisiert:

TBCTL = TBSSEL0 | TBCLR;

// Bei Knopfdruck wird die Uhr gestartet
TBCCTL0 = CCIE;                             // CCR0 interrupt enabled
TBCCR0 = (3333); 
TBCTL = TBSSEL_0 + MC_3 + ID_1 + ID_2;    // TACLK, up/down Mode


Die Werte sind beliebig gewählt es geht mir nur darum dass der Interrupt 
generell ausgelöst wird, was er aber leider nicht macht.

Mit Timer A habe ich schon ein Count-Down-Timer geschrieben und der geht 
einwandfrei...

grüße

Autor: IceMurmi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da es dir darum geht generell einen Interrupt auszulösen wäre es doch 
ev. noch Sinnvoll die GIE zu aktivieren (General_Interrupt_Enable) 
ansonsten wird nie ein Interrupt ausgelöst, dazu solltest du in deiner 
Interrupt rutine noch abfragen welches Flag des TimerB 
Interruptregisters den Interrupt ausgelöst hat, denn du möchtest nicht 
auf alle Timer Interrupts reagieren.

Autor: Styx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm Okay,
ich glaub ich habs schlecht erklärt.
Also ich hab ein Programm wo der TImer A als Countdown Timer genutzt 
wird und der Timer B als Sekundenzähler für eine Uhr.
Wenn der Timer B ein Interrupt auslöst soll die Uhr 1s weiter laufen 
(dafür die ISR)

// ISR

// Countdown - Interupt
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
  for (i=0; i!= 10; i++) BUZZER();
  LCD_all();                            
  TACTL = TASSEL_0 + MC_0 + ID_1 + ID_2 + TACLR;
}

// Clock - Interupt
#pragma vector=TIMERB0_VECTOR
__interrupt void Timer_B (void)
{

//Anhang

}


Ist das nicht so dass bei TIMERB0 Interrupt die Clock Routine abgerufen 
wird und bei TIMERA0 der Countdown Ablauf.

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

Bewertung
0 lesenswert
nicht lesenswert
>   for (i=0; i!= 10; i++) BUZZER();
>  LCD_all();

Bist Du Dir wirklich sicher, daß das in eine Interruptroutine gehört?

Autor: Styx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja das soll mir signalisieren ob ich in der Routine bin.
Soll ein Akustische Rückmeldung und eine Visuelle Rückmeldung geben.

Autor: IceMurmi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Styx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Tip,

aber falls du es nicht gesehen hast,
der MSP430F449 hat keine RTC....

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.