mikrocontroller.net

Forum: Compiler & IDEs MSP430: Interrupt von PIN Port 1


Autor: Benjamin Johann (Gast)
Datum:

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

Autor: m@is (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Benjamin,
gut das Du noch einen eigenen Thread zu Deiner Frage aufgemacht hast.

mit was arbeitest Du gcc- oder IAR-Tools?

Autor: Benjamin Johann (Gast)
Datum:

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

Autor: OldBug (Gast)
Datum:

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

Autor: m@is (Gast)
Datum:

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

Autor: Benjamin Johann (Gast)
Datum:

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

Autor: Benjamin Johann (Gast)
Datum:

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

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.