mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP probleme mit watch-Funktion


Autor: Sascha Füller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe probleme mit einigen Variablen im watch fenster.
Das folgende einfache Codebeispiel soll das etwas verdeutlichen:

#include <dspic.h>

void main()
{
  int i;
  TRISD=0x0000;
  for(i=0; i<16 ;i++)
  {
        LATD = i;
  }
}

Ich habe einen breakpoint innerhalb der For-Schleife gesetzt. Man
sollte erwarten, dass die Variable "i" bei jeder unterbrechung um 1
erhöht wird, bis sie die Zahl 15 erreicht hat.
Leider zeigt das Watch-fenster immer den inhalt 0x0000 für "i" an.
Trotzdem wird jeweils der korrekte wert in das LATD-Register
geschrieben. Ich habe das Programm sowohl im Simulator, als auch auf
einem dsPIC30F5013 über den ICD2 laufen lassen. in beiden Fällen taucht
das gleiche Problem auf.

Hat jemand eine Idee, was ich falsch gemacht haben könnte?

Ich verwende Mplab v7.41 mit dem Hi-Tech dsPICC 9.50 Compiler auf dem
Betriebssystem Windows 2000.

Bin für jeden Tip dankbar

Sascha

Autor: Sascha Füller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe mittlerweile in anderen Foren Antwort bekommen.

Das Problem liegt darin, dass der Hi-Tech Compiler den Wert nach dem
Inkrementieren in einem Arbeitsregister hält. deshalb ist der Wert an
der Speicherstelle im RAM unverändert.Das ist zwar effektiv, aber zum
debuggen mit Mplab nicht zu gebrauchen.

Um das Problem zu umgehen und trotzdem debuggen zu können, kann man die
Variable global außerhalb der 'main' Routine oder local als 'static'
deklarieren. In beiden Fällen wird der Compiler gezwungen die Variable
nach der Inkrementierung im RAM abzulegen.

Autor: Gerd Schuler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hardware-Entwickler gesucht Assembler  C  DSP

Informieren Sie sich auf unserer Homepage:
www.personalmarketing-schuler.de

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.