Merkwürdiges Verhalten bei bestimmten Programmzeilen und avrdude.

Gast #4287426
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
#4288436
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.
Persönliche Seite #4288890
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 :-)

Antwort schreiben

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