INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Setup Loop warum?
11.09.2015, 09:57 (Dieser Beitrag wurde zuletzt bearbeitet: 11.09.2015 10:20 von HaWe.)
Beitrag #17
RE: Setup Loop warum?
probiere mal volatile long !
ich hatte ja auch volatile uint32_t !

läuft bei mir ebenfalls, mit
volatile long
oder
volatile unsigned long
(wer gerne ein paar Stunden warten möchte... Wink )!!

...und sogar ohne setup()

Code:
int main(){
  volatile long  i, b;
  pinMode(13, OUTPUT);
  while(1) {
     b=0;
     digitalWrite(13, HIGH);   // turn the LED on  
     for( i = 0; i < 500000 ; i++){   b++;}             // wait..  
     digitalWrite(13, LOW);    // turn the LED off  
     b=0;
     for( i = 0; i < 500000 ; i++){   b++;}             // wait
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.09.2015, 11:45 (Dieser Beitrag wurde zuletzt bearbeitet: 11.09.2015 11:59 von fraju.)
Beitrag #18
RE: Setup Loop warum?
Habe mal den Progspeicher verglichen!
Code:
void setup() {}

void loop()
//void Start()
{
// volatile long  i, b;
  pinMode(13, OUTPUT);
//  while(1) {
     delay (1000);
     digitalWrite(13, HIGH);   // turn the LED on  
//     for( i = 0; i < 500000 ; i++){   b++;}             // wait..  
  delay (1000);
     digitalWrite(13, LOW);    // turn the LED off  
  //   b=0;
    // for( i = 0; i < 500000 ; i++){   b++;}             // wait
//  }

}

!032 Byte

Code:
int main(){
//  uint32_t  i, b;
  long int  i, b;
  pinMode(13, OUTPUT);
  while(1) {
     b=0;
     digitalWrite(13, HIGH);   // turn the LED on  
     for( i = 0; i < 500000 ; i++){   b++;}             // wait..  
     digitalWrite(13, LOW);    // turn the LED off  
     b=0;
     for( i = 0; i < 500000 ; i++){   b++;}             // wait
  }
}

722 Byte


Hätte nicht gedacht das dass Thema so interessant werden kann!

Nicht jeder Neuling in einem Forum hat keine Ahnung über die Materie!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.09.2015, 13:38 (Dieser Beitrag wurde zuletzt bearbeitet: 11.09.2015 13:48 von HaWe.)
Beitrag #19
RE: Setup Loop warum?
grundsätzlich wundert mich das gar nicht, denn schließlich wird der Arduino Code (mit setup und loop) ja von der Java-VM erst in standard-C++ -Code übersetzt und dann erst kompiliert.

Aber du vergleichst völlig falsche Codes miteinander, denn ohne "volatile" läuft es (wegen der GCC-Codeoptimierung) überhaupt nicht wie es soll, und der erste Code ist durch die Auskommentierungen derart verstümmelt, dass man ihn mit gar nichts mehr vergleichen kann. Wenn schon, dann musst du also die funktionierenden Codes mit identischer Variablenbelegung vergleichen, und das sind diese hier:

Arduino-Sketch C/C++
Code:
void setup(){
     pinMode(13, OUTPUT);
}

void loop(){
  volatile uint32_t  i, b;  // alias volatile unsigned long i, b;

     b=0;
     digitalWrite(13, HIGH);   // turn the LED on  
     for( i = 0; i < 500000 ; i++){   b++;}             // wait..  
     digitalWrite(13, LOW);    // turn the LED off  
     b=0;
     for( i = 0; i < 500000 ; i++){   b++;}             // wait

}


ANSI C/C++
Code:
int main(){
  volatile uint32_t i, b;  // alias volatile unsigned long i, b;
  pinMode(13, OUTPUT);

  while(1) {
     b=0;
     digitalWrite(13, HIGH);   // turn the LED on  
     for( i = 0; i < 500000 ; i++){   b++;}             // wait..  
     digitalWrite(13, LOW);    // turn the LED off  
     b=0;
     for( i = 0; i < 500000 ; i++){   b++;}             // wait
  }
  return 0;  // Exit-Code gehört hier eigentlich auch mit rein
}

Dennoch wird das Ergebnis sicher ähnlich ausfallen, je nach Code-Optimierung durch den GCC Compiler.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste