MSP430: Interrupt von PIN Port 1

Gast #76499
Lesenswert?
• ▲
▼
Hallo zusammen!
Obwohl ich vor einiger Zeit gesehen habe, daß es schon diskutiert
wurde: Wie krieg ich das hin, daß mein MSP einen Interrupt auslöst und
dann ins Programm zurückspringt, wenn ich eine Flanke auf Port 1 habe.
Genauer gesagt auf einem PIN auf Port 1?

der Plan ist so:
* programmschleife unterbricht,
* setzt Interruptfunktion setzt variable
* programm wird fortgesetzt und reagiert später auf den Interrupt durch
eine aufzuckende LED


bool bPort1Int;     /* Description : wird von Port 1 gesetzt */

wakeup interrupt (PORT1_VECTOR) INT_P1(void) {
    //acknowledge interrupts (caution! clr is not appropriate when
multiple irqs are enabled)
    bPort1Int = 1;
    DINT();
  }

int main(void)
{
  P1DIR=0xFF;           //port 1 = output
  P1OUT=0x00;           //set bit 0 in port 1

  P1DIR=0;              //port 1 = input
  P1IES  = 0xFF;               // Interrupt Edge Select (+Slope=1)
  P1IE   = 0xFF;        // Interrupt Enable (Yes=1)

  P2DIR=0xFF;           //port 2 = output
  P2OUT=0x00;

  bPort1Int=0,

  EINT();

  for(;;) {             //infinite loop

    P2OUT+=1;
    delay(0x4fff);

    P2OUT+=1;
    delay(0x4fff);

  if (bPort1Int==1){
    P2OUT=0;
    bPort1Int=0;
    EINT();
  }
  delay(0x4fff);

    P2OUT+=1;
    delay(0x4fff);

    P2OUT+=1;
    delay(0x4fff);

    P2OUT+=1;
    delay(0x4fff);

    P2OUT+=1;
    delay(0x4fff);

    P2OUT+=1;
    delay(0x4fff);

  }

}

Danke
Benni
Gast #76501
Lesenswert?
• ▲
▼
Ich habe mspgcc runtergeladen. Insigth und proxy tun ihre arbeit - wenn
auch nicht sehr zuverlässig: Ich lösche immer noch manuell den gesamten
speicher vor einer neuprogrammierung. Das passt mir nicht. Die
Quelltextanzeige im Insight funxt auch nicht wirklich. Vielelciht liegt
das aber eindfach an WinXP.
Will demnächst mal auf Linux testen.
CIAO Benni
Gast #76502
Lesenswert?
• ▲
▼
Das manuelle Löschen des gesamten Speichers macht doch sinn...
Wenn Du die Info-Memory (FSEG_A und FSEG_B) nicht löschen möchtest,
aber ein "monitor erase all" in der Insight-Config einträgst, gibts
da ein Problem ;-)
Sourcecode alignement funktioniert bei mir wunderbar (Win2K),
allerdings verabschiedet sich mein Insight schon mal beim auslesen des
Stacks oder hin und wieder auch mal ziemlich wild bei irgend einer
trivialen Operation, wie beispielsweise das Konsolenfenster des GDBs
öffnen...

Deine Frage zum Interrupt an Port 1 ist ja schon geklärt, oder?

Gruß,
Patrick...
Gast #76503
Lesenswert?
• ▲
▼
von Benni in einem anderen Thread geschrieben:
***
Hallo M@is!
Danke! Hab den fehler diese "Nacht" noch gefunden. Deine antwort hat
meinen fund aber auch noch bestätigt: Ich habe das Interrupt-Flag
nicht
zurückgesetzt.
Die Eingänge habe ich einfach alle parallel geschaltet - dann liegen
sie definiert (und das eh schon über einen pull down).
Habe in einem sehr kelein Prog reaktionszeiten von rund 200-300 ns bei
8 MHz Quarz - finde ich etwas viel! Hast du erhfahrungen?
Benni
***
ANTWORT:
sieht bei mir nicht besser aus, mit den Zeiten liegst Du schon gut,
leider :-(
Gruß m@is
Gast #76504
Lesenswert?
• ▲
▼
Hab mich um eine paar 10er-potenzen vertan: es sind gerade 350µs. Das
finde ich etwas viel: Der Prozessor macht alle 125ns einen schritt -
dann brauchte er ja mehr als tausend schritte um den interrupt
durchzureichen?!?!
Gast #76505
Lesenswert?
• ▲
▼
JuHuuuu!
Gerae habe ich mal direkt in der Interrupt-Routine die ausgabe
gestartet. Da komme ich den Werten die ich brauche schon näher: 2,5µs
reaktionszeit. Das ist nicht schlecht!
Benni

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.