MSP430 ISR - kehrt nicht richtig zurück

OP #843369
Lesenswert?
• ▲
▼
Hi
hab folgendes Problem.
Hab einen MSP430F169 bei welchem ich USART0 im UART modus initialisire 
und ihn dann in den LMP3 schicke. Nun habe ich eine rx_isr realisirt die 
ein einfaches Echo macht. Wenn ich nun beim Debuggen per Step 
durchlaufen lasse, funktioniert es einmalig. Leider kehrt der MSP nach 
dem ersten durchlaufen der ISR nicht mehr zurück sondern läuft ins 
Nirwana. Ich weiß jetzt nicht mehr weiter kann mir vielleicht jemand 
einen Hinweis geben woran es liegen könnte.
Danke im vorraus
Sleeping IQ

PS: Code kann ich gerade nicht posten. Habe aber die selbe ISR bei einem 
MSP430F1611 schon erfolgreich verwendet
OP #844497
Lesenswert?
• ▲
▼
Hi so habe jetzt den Code!
hab noch ein Bild angehängt dort erscheint nach aufruf der ISR noch ein 
thread mit dem Namen _reset_vector() ich versteh aber nicht wirklich wo 
der eigentlich auf einmal herkommt.


#include "msp430x16x.h"

__interrupt void uart_rx(void);
void empty(void);
void null(void);


void main (void)
{
  WDTCTL = WDTPW + WDTHOLD;

  P3DIR |= 0x80; // P3.7 wird output

  P3SEL = 0x30;
  TXBUF0 = 0x00;
  ME1 |= UTXE0 + URXE0;
  UCTL0 |= CHAR;
  UTCTL0 |= SSEL0;  //Clock ACLK!
  UBR00 = 0x03;
  UBR10 = 0x00;
  UMCTL0 = 0x4A;
  UCTL0 &= ~SWRST;
  IE1 |= URXIE0 + UTXIE0;
  IFG1 &= ~UTXIFG0;

  P3OUT |= 0x80; // P3.7 auf high /empfangsbereit
  //empty();
  _BIS_SR(LPM3_bits + GIE);


}

USART0RX_ISR(uart_rx)
__interrupt void uart_rx(void)
{
  P3OUT &= 0x3F; // P3.7 auf low /nicht empfangsbereit ( könnte auch &= 
~0x80
  //while (!(0x40==(P3IN&0x40))); // warten das Gegenstelle 
empfangsbereit ist.
  while (!(UTXIFG0));
  TXBUF0 = RXBUF0;
  P3OUT |= 0x80; // P3.7 auf high /empfangsbereit
}

void empty(void)
{
}
Angehängte Dateien:
OP #844967
Lesenswert?
• ▲
▼
Hi
hab jetzt das Tx Interrupt Bit disabled. Leider besteht das Problem 
immer noch. Ich befürchte das das Problem schon beim starten der RxISR 
entsteht. Wenn man auf dem Bild schaut welches ich im Post vorher 
angehängt habe sieht man das dieser ominöse "_reset_vector()" schon beim 
starten der RxISR erscheint. Leider habe ich nicht wirklich eine Ahnung 
was dieser macht und vorallem wo er herkommt. Bin inzwischen ziemlich 
frustriert.
OP #845437
Lesenswert?
• ▲
▼
Hi
Problem gelöst!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Die Ursache war ein falsches Link-File.
Dies kam daher das ich das alte Projekt verwendet habe welches für den 
1611 war. Man kann zwar in den Projekt Einstellungen den µC Typ 
verstellen aber es wird nicht das Link-File geändert in welchem die 
Speicherbereiche stehen somit hat mein Stackpointer an eine Stelle 
gezeigt in welche er nicht schreiben darf.
Ziemlich blöder Fehler aber aus sowas lernt man.
Danke dir Christian für deine Hilfe.

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.