MSP430 Flanke erkennen

Gast #347248
Lesenswert?
• ▲
▼
Hallo!

Ich probiere hier grade mit einem DCF 77 Modul rum und möchte erkennen
ob das eingehende Signal eine 1 oder 0 ist.

Setup: MSP430F1121A @ 1 MHZ

P2.0 DCF 77

P1.0 RS
P1.1 R/W
P1.2 E
P1.3 leer
P1.4 D4
P1.5 D5
P1.6 D6
P1.7 D7

Ich hab mir vorgestellt zu prüfen, ob pin 2.0 auf high wechselt und
beidiesem wechsel einen Timer einzuschalten, der eine Zählvariable
hochzählt... wie kann man denn die Timer ein und ausschalten?
bin für jedes bisschen Code-Beispiel dankbar

Gruß

CHRiS
Gast #347252
Lesenswert?
• ▲
▼
ja genau so hab ich es vor...
hab ich vllt grad zu schwmmig formuliert...
mir fehlt jetzt nur noch der C-Code wie ich den Timer an bzw.
ausschalten kann...
Den Interrupt-Kram für den Port habe ich schon in einem Beispiel Source
von TI gefunden...
1
  P2IE |= 0x01;                         // P2.0 interrupt enabled
2
  P2IES |= 0x01;                        // P2.0 Hi/lo edge
3
  P2IFG &= ~0x01;                       // P2.0 IFG cleared
4

5

6
#pragma vector=PORT2_VECTOR
7
__interrupt void Port_2(void)
8
{
9
  // -> Timer noch ein und ausschalten <-
10
  P2IFG &= ~0x01;                       // P2.0 IFG clearedf
11
}
Gast #347254
Lesenswert?
• ▲
▼
also so ganz kapiere ich jetzt nicht was ich hier machen soll und würde
euch bitte mir noch ein paar tipps zu geben...

muss diese zeile: TACTL = TASSELx | IDx | MC2 | TACLR;
jetzt mit in in die ISR um den Timer zu resetten und neu zu starten?

__interrupt void Port_2(void)
{
 int wert = TAR;
 TACTL = TASSEL_2 | ID_2 | MC_2 | TACLR;
 P2IFG &= ~0x01; // P2.0 IFG cleared
}
Gast #347255
Lesenswert?
• ▲
▼
Portinitialisierung wie zuvor +
int cnt;
__interrupt void Port_2(void) {
  // erster int bei high to low
  if (P2IES & 0x01) {
    TACTL = TASSEL_2 | ID_2 | MC_2 | TACLR;
    // nächster int bei low -> high
    P2IES &= ~0x01;
  } else {
    TACTL = 0;
    cnt = TAR;
    // nächster int wieder bei high -> low
    P2IES |= 0x01;
  }
  P2IFG &= ~0x01;
}

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.