mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 Flanke erkennen


Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: KoF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://focus.ti.com/mcu/docs/mcuprodcodeexamples.t...
Hier bekommst du alles, was du brauchst!!! Super Beispiele und auch für
Anfänger verständlcih und "Kopierbar"

mfg
KoF

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja die Teile hab ich schon.... verstehe aber immernoch nicht, wie ich
den Timer über den externen Interrupt von Pin 2.0 triggere...

Autor: arc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zwei Ideen:
Der Flankenwechsel kann einen Port-Edge-Interrupt erzeugen, in dem dann
der Timer gestartet wird und beim nächsten Wechsel wieder gestoppt
wird.

Bei einer etwas anderen Pinbelegung hätte man das über die
Capture-Funktion des Timers erledigen können. (User Guide Chapter 11
Capture Mode)

MSP430x1xx User Guide
http://focus.ti.com/lit/ug/slau049f/slau049f.pdf

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...
  P2IE |= 0x01;                         // P2.0 interrupt enabled
  P2IES |= 0x01;                        // P2.0 Hi/lo edge
  P2IFG &= ~0x01;                       // P2.0 IFG cleared


#pragma vector=PORT2_VECTOR
__interrupt void Port_2(void)
{
  // -> Timer noch ein und ausschalten <-
  P2IFG &= ~0x01;                       // P2.0 IFG clearedf
}

Autor: arc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt fehlt nur noch
// continuous up (bis 0xffff) passenden Vorteiler einsetzen
TACTL = TASSELx | IDx | MC2 | TACLR;
// beim nächsten Portinterrupt TAR auslesen

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
}

Autor: arc (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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;
}

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für deine Hilfe!

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.