Forum: Mikrocontroller und Digitale Elektronik Fehlermeldung Original und gelesene Daten haben unterschiedliche Längen


von Maddin265 (Gast)


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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Maddin265 schrieb:
> Im Programm
Im welchem denn?
Häng es doch einfach hier an, dann wissen wir, wovon du redest...

von Maddin265 (Gast)


Angehängte Dateien:

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
    }

: Bearbeitet durch User
von Martin W. (maddin265)


Lesenswert?

Thread kann gelöscht werden.

von npn (Gast)


Lesenswert?

Martin W. schrieb:
> Thread kann gelöscht werden.

Und warum?

Falls du den Fehler gefunden hast, wäre es nett, wenn du das auch hier 
mitteilst, woran es lag. Dann kann evtl. auch jemand anderes was lernen.

von Peter II (Gast)


Lesenswert?

Maddin265 schrieb:
> benutze: mySmartUSB Light an com3 mit ATtiny2313
> schreibe Flash: 2110 Bytes

ATtiny2313
2K Bytes of In-System Self Programmable Flash

schreibe Flash: 2110 Bytes


damit sollte es wohl klar sein.

von Martin W. (maddin265)


Lesenswert?

npn schrieb:
> Und warum?

Ich hatte einen neuen Thread aufgemacht. Ich habe direkt mein Problem 
mit Quelltext beschrieben.
Da niemand mehr geantwortet hatte wollte ich noch einmal alles 
Übersichtlich machen.

Also muss mein Programm kleiner wie 2k Bytes sein?

Danke..

von holger (Gast)


Lesenswert?

>Also muss mein Programm kleiner wie 2k Bytes sein?

Nö, du kannst alternativ auch einen größeren AVR nehmen;)

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.