Forum: Compiler & IDEs Merkwürdiges Verhalten bei bestimmten Programmzeilen und avrdude.


von designer-ag (Gast)


Lesenswert?

Board: Arduino Mega 2560 R.3
Software Arduino 1.6.5 (avrdude)


Zeilen innerhalb der loop() sind das Problem:
1
   if(reffekt>"") {     //echtzeit-effekte
2
    if ((millis()-milli2>39)) {
3
      realtimeeffect();
4
      milli2=millis();
5
    }
6
   }

deklaration der Variablen:
1
volatile long milli2;
2
String reffekt="";

Inhalt der Funktion realtimeeffect():
1
void realtimeeffect() {
2
  flash();
3
}


Nach dem kompilieren mit den Zeilen:
Der Sketch verwendet 24.614 Bytes (9%) des Programmspeicherplatzes. Das 
Maximum sind 253.952 Bytes.
Globale Variablen verwenden 2.624 Bytes (32%) des dynamischen Speichers, 
5.568 Bytes für lokale Variablen verbleiben. Das Maximum sind 8.192 
Bytes

kommentiere ich die Zeilen mit /* ... */ aus und kompiliere:
Der Sketch verwendet 24.514 Bytes (9%) des Programmspeicherplatzes. Das 
Maximum sind 253.952 Bytes.
Globale Variablen verwenden 2.512 Bytes (32%) des dynamischen Speichers, 
5.568 Bytes für lokale Variablen verbleiben. Das Maximum sind 8.192 
Bytes

Die Fehlerbeschreibung:
sind diese Zeilen auskommentiert (/* ... */) wird das Board einwandfrei 
beschrieben.

sind diese Zeilen nicht auskommentiert wird das Board nicht beschrieben!
Fehlermeldungen von avrdude:
Timeout!

Ich habe viele Versuche unternommen, mit und ohne diese Zeilen,
USB-Treiber deinstalliert, installiert,
Bootloader neu geladen (manchmal kamen auch dabei Fehler)

wie kann es sein???

UPDATE:
Da ich die Fehlermeldungen von avrdude hier reinkopieren wollte, hab ich 
das Programm nochmals, mit den Zeilen, kompiliert und geladen,
jetzt ohne Fehler!!! habe nichts geändert.

hat jemand eine Idee was das sein kann?

Andre

von Karl H. (kbuchegg)


Lesenswert?

Zufall

Das Uebertragen des Programms mit avrdude hat nicht das Geringste damit 
zu tun, was uebertragen wird. Du kannst den grössten Unsinn 
programmieren, solange du ein Hex-File als Ergebniss hast, wird avrdude 
es in den AVR brennen

von Simon K. (simon) Benutzerseite


Lesenswert?

if(reffekt>"") {     //echtzeit-effekte

Ob das tut, was du glaubst, dass es tut? ...

von Karl H. (kbuchegg)


Lesenswert?

Simon K. schrieb:
> if(reffekt>"") {     //echtzeit-effekte
>
> Ob das tut, was du glaubst, dass es tut? ...
1
  String reffekt="";

ich weiss jetzt nicht, welche Operatoren von der String Klasse überladen 
werden, aber die Chancen stehen nicht schlecht, dass die Ersteller 
dieser Klasse mitgedacht haben und einen entsprechenden Operator 
definiert haben. Warum auch nicht, ist ja nicht weiter schwer oder 
aufwändig.

von Simon K. (simon) Benutzerseite


Lesenswert?

Karl H. schrieb:
> Simon K. schrieb:
>> if(reffekt>"") {     //echtzeit-effekte
>>
>> Ob das tut, was du glaubst, dass es tut? ...
>   String reffekt="";
>
> ich weiss jetzt nicht, welche Operatoren von der String Klasse überladen
> werden, aber die Chancen stehen nicht schlecht, dass die Ersteller
> dieser Klasse mitgedacht haben und einen entsprechenden Operator
> definiert haben. Warum auch nicht, ist ja nicht weiter schwer oder
> aufwändig.

Oh, gar nicht gesehen. Danke :-)

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.