Forum: Mikrocontroller und Digitale Elektronik Erklärung zu Debug


von Siegfried S. (dieleena)


Lesenswert?

Hallo,
MPLAP 7.60; C18 Comiler;
Habe eine bescheidene Frage zu Debug.

#pragma config DEBUG = ON

#define DEBUG


void delay_ms( unsigned char ms )
{
int n = 0;
#ifdef DEBUG
//  Timer 3;  1 ms; CLK:4, :8, 1000 = 625;
i = (((CLK/4) /8) /1000);        // Befehl 1
#else
i = (((CLK/4) /8) /10000);       // Befehl 2
#endif
}

Wenn ich am PC das Programm für den PIC erstelle, überprüfe ich es auch 
mit dem Debugger.
In diesem Modus werden immer die Zeilen nach " #else " abgearbeitet.
Was ist, wenn das Programm direkt im PIC läuft, werden dann die Zeilen 
nach " #indef DEBUG " abgearbeitet?
Hintergrund meiner Frage. Der Timer soll beim debuggen übersprungen aus 
Zeitgründen werden.

Gruß Siegfried

von Roland P. (pram)


Lesenswert?

Das was du meinst hat in erster linie nichts mit Debug zu tun, sondern 
mit Compilerdirektiven. Kkeines Bsp:
1
#define IRGENDWAS
2
3
#ifdef IRGENDWAS
4
i = 1
5
#else
6
i = 2
7
#endif
i ist in dem Fall 1
1
#ifdef IRGENDWAS
2
i = 1
3
#else
4
i = 2
5
#endif
i ist in dem Fall 2 (da das #define IRGENDWAS fehlt)

Also über #define #ifdef ... kann man so verschiedene Programmcodes zur 
Compilezeit "einblenden"
Das Programm MUSS bei einer Änderung neu übersetzt werden.

(Manche Entwicklungsumgebungen setzen u.U. automatisch ein DEBUG-Flag 
wenn man den Debugger startet)

Gruß
Roland

von Siegfried S. (dieleena)


Lesenswert?

Hallo,
Habe das Beispiel eingesetzt. Will aber nicht wie ich.
Ich arbeite mit MPLAP 7.60; C18 Comiler; ICD2 von Andreas.

Ist es richtig, wenn das Programm im DEBUG - RUN - Modus (angeschlossen 
an den ICD2) betrieben wird, das die " #define #ifdef ... " ignoriert 
werden werden ? Erst wenn ich den PIC ohne Debugger Infos gebrannt ist 
die Befehle hinter " #indef " bearbeitet.

Gruß Siegfried

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.