Fehlermeldung Original und gelesene Daten haben unterschiedliche Längen

Gast #3973518
Lesenswert?

Hallo zusammen,

ich bin im Moment meine ersten Schritte in der Microcontroller Welt am 
machen und habe mir dazu von MY Avr, den MySmartUSB mit Software My 
Workpad Plus gekauft.

Im Programm, lasse ich 4 Led´s nacheinander auf leuchten und bei der 4. 
Led ändert sich immer die Geschwindikeit eines Motors über PWM.

Das Programm funktioniert einwandfrei, bis zu dem Zeitpunkt, an dem ich 
eine GOTO Anweisung einbringe, um einen gewissen Teil des Proramms zu 
überspringen.

Wenn ich diese Anweisung mit reinschreibe, bekomme ich immer die 
Fehlermeldung: "Original- und gelesene Daten haben unterschiedliche 
Längen. "

Kann mir jemand erklären was es mit der Fehlermeldung auf sich hat? Ich 
finde leider in diversen Foren nichts dazu.

Ich arbeite mit einem Attiny 2313.

Danke.
Gast #3973954
Lesenswert?

Hi, Entschuldigung ich war bis gerade auf der Arbeit.

Ich habe die Datei in .cc angehängt und hoffe das es ok ist, wenn ich 
den Text so reinkopiere?
Also nochmal, ich bin wirklich ganz am Anfang und habe mich ins Thema 
nur etwas reingelesen, deshalb verzeit mir bitte wenn das Programm zu 
unübersichtlich oder falsch ist. Danke schon einmal.

Also in diesem Programm welches ich unten reingeschrieben habe, kommt 
die Meldung:

compilieren ... linken ... vorbereiten ...
brennen ...
benutze: mySmartUSB Light an com3 mit ATtiny2313
schreibe Flash: 2110 Bytes
schreibe EEPROM: 1 Bytes
»baud=51200
Dauer: 4.75 s  Original- und gelesene Daten haben unterschiedliche 
Längen.

Lasse ich den Teil unter "Led´s start gegen Uhrzeigersinn" weg, klappt 
alles wunderbar.
1
#define   F_CPU 3686400  
2
#include  <avr\io.h>  
3
#include <stdlib.h>
4

5
unsigned int static a=0;
6
unsigned char b=0; //Anzahl Schleifen
7
unsigned int c=1500; //Schleifendurchläufe
8
unsigned char speed=20;
9
unsigned char Dummy=0;
10
unsigned char x;
11
uint8_t pwm_phase=0;
12
uint8_t pwm_soll;
13
unsigned int start;
14

15
#define gruen PORTA |= (1 << PA0);
16
#define rot PORTA |= (1 << PA1);
17
#define blau PORTD |= (1 << PD2);
18
#define gelb PORTD |= (1 << PD3);
19
#define alle_aus PORTA &= ~(1 << PA0),PORTA &= ~(1 << PA1),PORTD &= ~(1 << PD2),PORTD &= ~(1 << PD3)
20
#define gruen_aus PORTA &= ~(1 << PA0);
21
#define rot_aus PORTA &= ~(1 << PA1);
22
#define blau_aus PORTD &= ~(1 << PD2);
23
#define gelb_aus PORTD &= ~(1 << PD3);
24

25
int rand(void); 
26
void srand(unsigned int __seed);
27
main (void)
28
{
29
// Ausgänge definieren
30
  DDRA |= ((1 << PA1) | (1 << PA0));
31
  DDRD |= ((1 << PD2) | (1 << PD3) | (1 << PD5));     
32

33
  ///////////////////////////////////////////
34
  // Start LED´s
35
  ///////////////////////////////////////////
36

37
  for (start=0; start<20000; start++) 
38
  {
39

40
    if (start==c)
41
      gruen
42

43
    if (start==(c+c+c))  
44
      rot
45

46
    if (start==(c+c+c+c+c))  
47
      blau
48

49
    if (start==(c+c+c+c+c+c+c))  
50
      gelb
51

52
    if (start==(c+c+c+c+c+c+c+c+c))
53
      {
54
      alle_aus;
55
      }
56
  }
57

58
  ///////////////////////////////////////////
59
  // Dauerschleife Hauptprogramm
60
  ///////////////////////////////////////////
61

62
  while (1)
63
for (a=0; a<20000; a++)
64
{
65
if (b<10) {
66
    
67
      ///////////////////////////////////////////
68
      // Led´s start Uhrzeigersinn
69
      ///////////////////////////////////////////
70
      
71
        if (a==c)
72
        {
73
          rot
74
          gruen_aus
75
          }
76

77
        if (a==(c+c))
78
        {
79
          blau
80
          rot_aus
81
        }
82

83
        if (a==(c+c+c))
84
        {
85
          gelb
86
          blau_aus
87
        }
88
        
89
        if (a==(c+c+c+c))
90
        {
91
          gruen
92
          gelb_aus
93
          x++;
94
          b++;
95
          a=0;
96
        }
97
        }
98

99
      ///////////////////////////////////////////
100
      // LED´s gegen den Uhrzeigersinn
101
                 ////////////////////////////////////////////
102
if (b>9) {
103
    
104
      ///////////////////////////////////////////
105
      // Led´s start gegen Uhrzeigersinn
106
      ///////////////////////////////////////////
107
      
108
        if (a==c)
109
        {
110
          gruen
111
          rot_aus
112
          }
113

114
        
115

116
        if (a==(c+c))
117
        {
118
          gelb
119
          gruen_aus
120
        }
121

122
        if (a==(c+c+c))
123
        {
124
          blau
125
          gelb_aus
126
        }
127
        
128
        if (a==(c+c+c+c))
129
        {
130
          rot
131
          blau_aus
132
          x++;
133
          b++;
134
          a=0;
135
        }
136
        }
137
      ///////////////////////////////////////////
138
      //Rücksetzten Schleife links/rechts
139
      ///////////////////////////////////////////
140
if (b==20)
141
b=0;
142
      ///////////////////////////////////////////
143
      //Geschwindigkeit für PWM initialisieren
144
      ///////////////////////////////////////////
145
      if (x==1)
146
      {
147
        Dummy= rand()%6;
148
        x=0;
149
      }
150

151
      if (Dummy==1)
152
        speed=25;
153

154
      if (Dummy==2)
155
        speed=20;
156

157
      if (Dummy==3)
158
        speed=30;
159

160
      if (Dummy==4)
161
        speed=22;
162

163
      if (Dummy==5)
164
        speed=21;
165

166
      if (Dummy==6)
167
        speed=24;  
168

169
      ///////////////////////////////////////////
170
      // PWM
171
      ///////////////////////////////////////////
172

173
      uint8_t pwm_soll = speed;
174
      if( pwm_soll == pwm_phase )
175

176
      {
177
        PORTD |= (1<<PD5); // active low LED aus
178
      }
179
      pwm_phase++;
180
      if( pwm_phase == 30 )
181
      {
182
        pwm_phase = 0;
183
        PORTD &= ~(1<<PD5); // active low LED an
184
      }
185
    }
186
    }
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