Debugger springt in's Nirvana

#1359397
Lesenswert?

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
#1359487
Lesenswert?

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!
#1359516
Lesenswert?

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.
#1359540
Lesenswert?

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:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren