nur im debugen funzt es.

Gast #1705154
Lesenswert?
• ▲
▼
Hallo!

Ich beschäftige mich seit geraumer Zeit mit dem MSP430F449. Ich habe mir 
ein Programm in C# geschrieben welches Daten die über COM0 kommen 
anzeigt.

Das Problem ist folgendes: wenn ich im Debug-Modus Zeile für Zeile 
durchgehe arbeitet alles so wie es soll. Lass ich das Programm 
selbstständig arbeiten (ohne Breakpoints und so..) kommt nur Mist am PC 
an. Allerdings ist immer der selbe Mist zu sehen!!

hier der Codeausschitt:

#pragma vector = PORT2_VECTOR
__interrupt void PORT2(void)
{
  for(int i=0;i<2000;i++){} // wenn diese Zeile nich da ist, schickt er 
endlos "0" rüber. keine Ahnung warum...

  int tmp;
  tmp=1;
  sent(tmp);

  if(P2IFG & BIT0){//Interrupt bei PIN 79
    // TODO
    P2IFG &= ~BIT0; // Flag wider aus
  }
  else
  if(P2IFG & BIT1){//Interrupt bei PIN 78
    // TODO
    P2IFG &= ~BIT1; // Flag wider aus
  }
  else
  if(P2IFG & BIT2){//Interrupt bei PIN 77
    P2IE &= ~BIT2;//Interrupt PIN77 aus
    if((~P2IES) & BIT2){//prüfe ob von 0 auf 1 ist
      tmp = 2;
      sent(tmp);
      P2IES |= BIT2; // ändere Flanke
    }else{
      tmp = 3;
      sent(tmp);
      P2IES &= ~BIT2; // ändere Flanke
    }
    P2IFG &= ~BIT2; // Flag aus
    P2IE |= BIT2; // Interrupt PIN 77 an
  }
  else
  if(P2IFG & BIT3){//Interrupt bei PIN 76
    // TODO
    P2IFG &= ~BIT3; // Flag wider aus
  }
  tmp=4;
  sent(tmp);
}

void sent(int x){
  while (!(IFG1 & UTXIFG0));
  TXBUF0 = x;
}


Vielen Dank!

MFG
Gast #1705464
Lesenswert?
• ▲
▼
Danke für die Antwort!

Ja, ich weiss das da keine while schleifen hinkommen. Vielleicht hat das 
auch mit meinem eigentlich Problem zu tun!?!? :-/

Minimalbeispiel? Wie meinst das? ein kleines Programm das überhaupt mal 
was zum PC sendet?? Das hab ich! Funktioniert auch tadellos! Es treten 
nur Fehler auf wenn ich mit diesem Interrupts arbeite...

Was meinst du mit Timing??

gz
Gast #1705482
Lesenswert?
• ▲
▼
Stimmt! Int müsste 16 Bit sein.

Habe jetzt mal auf Char geändert. Hatte aber leider keinerlei 
Auswirkung.

Bei meinem Minimalbeispiel hatte es auch mit Int funktioniert....

Vielleicht noch ne andere Idee??

Besten Dank nochmal!!
Gast #1705499
Lesenswert?
• ▲
▼
>Also beim AVR-GCC sind die Bitnamen keine Masken, sondern die
>Bitposition (0..7).

ich weiss nich was du mir damit sagen möchtest!??! BIT2 ist doch nichts 
anderes als 0000 0100 oder in dezimal ne 4. Oder Hex 0x04.
1
while (!(IFG1 & 1<<UTXIFG0));

das bewirkt bei mit nur das jetzt garnichts mehr gesendet werden kann. 
Ich komm nicht mal in die ISR rein.....
Gast #1705529
Lesenswert?
• ▲
▼
Problem gelöst!

Habe von woanders einmal den Tip bekommen nur nur in LPM1 zu gehen. (Ich 
hatte LPM2). Denn muss ich jetzt wohl nochmal nachschauen wo da genau 
die unterschiede waren!

Ich bedanke aber trotzdem für eure Hilfe!

MfG

der Jens

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.