Debugger springt in's Nirvana

OP #1359397
Hallo,

Ich bin dabei einen kleinen Zeitgeber zu Programmieren.
Als Basis dient ein Atmega8, der mithilfe von AVR-Studio4 und GCC 
Compiler in C Programmiert werden soll.

Leider klappt das (wie erwartet ;-) nicht auf anhieb...

Wenn ich folgende Codezeilen im Debugger laufen lasse springt er einfach 
ins Nirvana... (der "Step into" Button ist nit mehr anwählbar)
1
 
2
#include <avr/io.h>
3
volatile uint8_t start = 0;
4
int main() {
5
  DDRC &= ~   ((1<<PC0) | (1<<PC1) | (1<<PC2) | (1<<PC3));
6
  while (1) {
7
    if (PINC0 == 1) {
8
      start = 1;
9
    }
10
  }
11
}
Nochmal im Detail:
Ich starte das debuggen. --> Pfeil auf Int main...
Klicke auf Step into --> Pfeil auf DDRC...
Klicke auf Step into --> Pfeil verschwunden, "Step into" Button 
ausgegraut.

Falls jemand eine Idee hat oder eine Anmerkung loswerden will...

Ich bin für jede Hilfe dankbar.

Gruß DaZeller
OP
Danke an Oliver.

mit deinem Punkt a kann ich leider nichts anfangen...

Punkt b stimmt auch nicht so ganz...
aber dank deinem Link habe ich die Stelle nochmal genauer gelesen und 
mein Programm jetzt entspechend umgebaut.
1
int main() {
2
  DDRC &= ~ (1<<PC0);
3
  while (1) {
4
    if (PINC & (1<<PINC0)) {
5
      start = 1;
6
    }
7
  }
8
}

das funktioniert nun.

Wenn ich das so richtig verstanden habe kan ich nur den Kompletten Port 
auslesen und dann mit dem entsprechenden Bit verküpft genau dieses 
auslesen...
Mir kommt das zwar etwas mühsehlig vor, aber ich stehe auch noch 
ziemlich am Anfang.

Danke für eure Hilfe!
Michael Zeller schrieb:

> mit deinem Punkt a kann ich leider nichts anfangen...

PINC0 ist nur ein symbolischer Name für die Zahl 0.
"PINC0 == 1" ist damit exakt identisch zu "0 == 1".

> Wenn ich das so richtig verstanden habe kan ich nur den Kompletten Port
> auslesen und dann mit dem entsprechenden Bit verküpft genau dieses
> auslesen...

Ja.
OP
ein Weiteres Problem:

Auf dem angehängten bild ist mein Debugger zu sehen.

Der Pfel stand zuletzt auf dem roten Brakpoint und ist nach einmaliger 
betätigung von "Step into" auf die zu sehende Position gesprungen.

ich kann mir das nicht erklären.

Auserdem nicht nachfolziehbar ist für mich, warum überhaupt die Position 
des Brakepoint angesprungen wurde, da ja keine 1 an PINC0...

Vorab schon vielen dank für alle Rückmaldungen.
Angehängte Dateien:
Gast
Wie ja schon weiter oben erwähnt wurde, hast du vermutlich mit 
Optimierung kompiliert. Da passen dann Sourcecode und Assemblerprogramm 
nicht mehr 1:1 zusammen, mit eben solchen Effekten. Schalte mal in den 
Projektoptionen die Optimierung aus, dann klappts auch mit dem Debugger.

Oliver

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.