Laufzeitunterschied in verschiedenen IDEs

OP (Firma: INX) #5203728
Lesenswert?
• ▲
▼
Hallo geschätzte Forengemeinde!
Das hier ist mein erster Beitrag, allerdings lese ich schon etwas 
heimlich mit und mir konnte so schon sehr gut weiter geholfen werden. 
Nun zu meiner Frage:
Ich habe ein einfaches Programm in zwei verschiedenen IDEs laufen und es 
läuft unterschiedlich schnell dabei ab (abhängig von der IDE).
Ich konnte nicht herausfinden woran das liegt und deswegen habe ich mich 
hier nun auch mal zu Wort gemeldet.

Ich benutze einen XMC1100 auf einem XMC2Go-Board.
IDE1: DAVE 4.3.2
IDE2: µVision V5.24.2.0

Das Programm macht nichts anders als blinken auf Pin 1.1 (wenn es hier 
blinkt läuft das Programm). Pin 0.5 "blinkt" auch und hat eine 
Verbindung zu Pin 0.6 der als Eingang konfiguriert ist. Wenn nun dort 
ein Signal ankommt soll wiederum Led1 (Pin 1.0) blinken. Das Ding macht 
was es soll, aber kann mir den Geschwindigkeitsunterschied (des 
Blinkintervalls) in den unterschiedlichen IDEs nicht erklären.

Testprogramm auf dem Chip:
1
#include <XMC1100.h>
2

3
void sleep()
4
{
5
 int temp1 = 0;
6
 while(temp1 < 500000) temp1++;
7
}
8

9

10
int main()
11
{
12
  //LEDS
13
  PORT1->IOCR0 |= (16UL<<3);
14
  PORT1->IOCR0 |= (16UL<<11);
15

16
  PORT0->IOCR4 |= (0x10<<11); //Pin 0.5 als Output
17
  PORT0->IOCR4 |= (0x00<<19); //Pin 0.6 als Input
18
  
19
  while(1)
20
  {
21
  PORT1->OUT ^= 0x02UL; //rechte LED: Programm laeuft!
22
  sleep();
23

24
  //PORT1->OUT |= 0x01UL;
25

26
  PORT0->OUT ^= (1<<5); //Pin 0.5 "blinkt" aehnlich der rechten LED
27

28
  if(PORT0->IN & (1<<6))
29
  {
30
    PORT1->OUT |= 0x01UL; //linke LED: Bruecke funktioniert
31
  }
32
  else
33
  {
34
    PORT1->OUT &= ~(0x01UL);
35
  }
36
  
37
}
38
return 0;
39
}

Gruß marmus
Gast #5203852
Lesenswert?
• ▲
▼
Deine Sleep-Funktion benutzt als Hochzählvariable eine lokale. Das darf 
der Compiler wegoptimieren, weil es funktional keinen Unterschied macht.

Deklarier Dein temp1 mal als globale Variable und dann mit volatile.

Guck außerdem, ob die IDE auch noch anhand der Einstellungen 
irgendwelchen Code vor main() generiert - manche IDEs tun das nämlich. 
Da könnten z.B. Sachen wie eventuelle Caches und so eingestellt werden.

Antwort schreiben

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