AVR-Studio Debugging hängt sich auf

Gast #1516815
Hallo zusammen.

Ich habe ein kleines Problem mit einem 3er-Lauflicht über 24 Ports.

Ich hab mich mal mit Switch-Case versucht, ich weiß sieht nicht sehr 
übersichtlich aus. Sollte ich vieleicht mal als AusgabeArray machen.

Aber jetzt zu meinem Problem:
1
#include <avr/io.h>
2

3

4
int main(){
5

6
DDRA=0xFF;
7
DDRB=0xFF;
8
DDRC=0xFF;
9

10
while(1){
11

12
   int state=0, a=7, b=0, c=0;
13

14
   while(state<26){
15

16

17
    switch (state){
18
  
19
      case 1 :
20
      case 2 :
21
      case 3 :
22
      case 4 :
23
      case 5 :          //Reines Verschieben auf PORTA
24
        a = a << 1;
25
        state++;
26
        PORTA=a;
27
        break;
28

29
      case 6 :          //Startup auf PORTB + Verschieben auf PORTA
30
        a = a << 1;
31
        b = 1;
32
        state++;
33
        PORTA=a;
34
        PORTB=b;
35
        break;
36

37
      case 7 :
38
        a = a << 1;    
39
        b = 3;
40
        state++;
41
        PORTA=a;
42
        PORTB=b;
43
        break;
44
  
45
      case 8 :
46
        a = a << 1;    
47
        b = 7;
48
        state++;
49
        PORTA=a;
50
        PORTB=b;
51
        break;
52
  
53
      case 9 :
54
      case 10 :
55
      case 11 :
56
      case 12 :
57
      case 13 :          //Reines Verschieben auf PORTB
58
        b = b << 1;
59
        state++;
60
        PORTB=b;
61
        break;
62

63
      case 14 :          //Startup auf PORTC + Verschieben auf PORTB
64
        b = b << 1;
65
        c = 1;
66
        state++;
67
        PORTB=b;
68
        PORTC=c;
69
        break;
70

71
      case 15 :
72
        b = b << 1;    
73
        c = 3;
74
        state++;
75
        PORTB=b;
76
        PORTC=c;
77
        break;
78
  
79
      case 16 :
80
        b = b << 1;    
81
        c = 7;
82
        state++;
83
        PORTB=b;
84
        PORTC=c;
85
        break;
86
  
87
      case 17 :
88
      case 18 :
89
      case 19 :
90
      case 20 :
91
      case 21 :          //Reines Verschieben auf PORTB
92
        c = c << 1;
93
        state++;
94
        PORTC=c;
95
        break;
96

97
      case 22 :          //Startup auf PORTA + Verschieben auf PORTC
98
        a = 1;
99
        c = c << 1;
100
        state++;
101
        PORTA=a;
102
        PORTC=c;
103
        break;
104

105
      case 23 :    
106
        a = 3;
107
        c = c << 1;
108
        state++;
109
        PORTA=a;
110
        PORTC=c;
111
        break;
112
  
113
      case 24 :    
114
        a = 7;
115
        c = c << 1;
116
        state++;
117
        PORTA=a;
118
        PORTC=c;
119
        break;
120

121
      default: break;
122
    }
123
  }
124
}
125
}

Wenn ich das File auf dem Simulator laufen lasse, hängt sich das 
AVR-Studio jedes mal bei

DDRC=0xFF;

auf (CPU auslastung 100% und ich muss das Debugging neu starten).

Es liegt nicht an dem DDRC sonder an dem, was danach kommt. Aber ich 
kann keinen Fehler entdecken.

Bin für jeden Tipp Dankbar !!

Gruß




Ich habe einen Atmega32 und

AVR Studio    4.13.571  Service Pack 2
GUI Version    4, 13, 0, 569
AVR Simulator    1, 0, 2, 0
ATmega32    229

Operating System
Major      5
Minor      1
PlatformID    2
Build      2600
Service Pack 2

Plugins:

AvrPluginAvrAsmObject  1, 0, 0, 46
AvrPluginavrgccplugin  1, 0, 0, 9
Stk500Dll      1, 0, 1, 10
#1516976
Ich bin jetzt nicht alles durchgegangen.  Aber Du startest im state 0. 
Dafür gibt es keine Bedingung (case).  Deshalb wird sich nichts tun; Du 
bleibst für ewig in diesem State hängen.  Ähnliches würde gelten, wenn 
Du alle states durch hast (aber bis dahin kommst Du gar nicht).
Gast #1518582
Also ich war bis jetzt der Ansicht, genau dafür gibt es
1
default: break;
ich muss doch nicht jeden möglichen Case extra auflisten.
Und das ändert nichts an meinem Problem, dass das Debugging nicht läuft.

Gruß
Gast #1518640
oh shit natürlich!!
Hat mich nur verwirrt, dass der Debugger sich dann selber in Art 
Endlos-Schleife setzt, obwohl ich stepbystep durch den Code gehen 
wollte. Aber selbst dass wird jetzt verständlich.

Danke für die Hilfe XD

Gruß

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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.