MSP430 Interrupt Handling mit mspgcc

OP #1382919
Lesenswert?
• ▲
▼
Moin,

ich benutze den MSP430 FG4619, und möchte einen Tastendruck per 
Interrupt abfangen.
Alles ist soweit initialisert, mit Port1 funktioniert das auch, nur die 
Taster an Port 2 bringen nicht das gewünschte Ergebnis.
Eine Vermutung ist jetzt:
Die Funktion selbst wird in den Speicherbereich der Adresse Port2_vector 
geschrieben, und der Speicher reicht dort nicht. (Beim Interrupt fuer 
Port2 steht mehr Code)
Oder ist der mspgcc schlau genug, und packt die Funktion woanders hin?
Dann müsste ich den Fehler woanders suchen.

Vom Interrupt scheint er auch ncihr zurückzuspringen.

Dass mspgcc handbuch sagt: "push pc,sr on stack...Fetch the interrupt 
vector into the PC" - was sagt mir das jetzt?
OP #1382981
Lesenswert?
• ▲
▼
In der Init:
1
  // Taster Interrupts
2
  P1IE |= 0x20;  // Pin 1.5
3
  P2IE |= 0xBF;  // alle Pins
4

5
  // Edge selection; falling edge
6
  P1IES |= 0x20;
7
  P2IES |= 0xBF;

Interrupt Funktionen
1
interrupt (PORT1_VECTOR) pin1interrupt(void)
2
{
3
  P1IFG = 0;
4
  showNumber('a');
5
  wait(65535);
6
  wait(65535);
7
  wait(65535);
8
  showNumber('o');
9
  wait(65535);
10
  wait(65535);
11
  wait(65535);
12
  if(P1IFG && 0x20)
13
    decrOff2();
14
  P1IFG = 0;
15
}
16

17
interrupt (PORT2_VECTOR) pin2interrupt(void)
18
{
19
  P2IFG = 0;
20
  showNumber('b');
21
  wait(65535);
22
  wait(65535);
23
  wait(65535);
24
  showNumber('o');
25
  wait(65535);
26
  wait(65535);
27
  wait(65535);
28
  if(P2IFG && 0x80)
29
    incrOff2();
30
  if(P2IFG && 0x40)
31
    incrOff2();
32
  P2IFG = 0;
33
}

Es geht aber eigtl. um den compiler mspgcc...
OP #1383040
Lesenswert?
• ▲
▼
Die vielen waits sind für das debuggen gedacht, ebenso wie die Funktion 
showNumbers, welche eine Zahl auf 7-Segment anzeigen darstellt.

Es funktioniert witzigerweise, wenn ich die Frequenz des Controllers 
"runterdrehe". Vermutlich sind also die wait Aufrufe (?) daran schuld.

Ist sehr schlecht zu debuggen.
Ja, signal.h ist inkludiert.

Danke für die Hilfe Christian und Rufus.
Ich denke, ich komme jetzt klar.

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.