MSP-GCC und Zeitschleifen

Gast #24607
Lesenswert?

Hallo,

habe mit folgendem Codefragment ein Problem:

for(j=0;j<6000;j++) _asm_ __volatile__("; loop");

Also eine Schleife um ein wenig Zeit zu schinden. Habe mich auch an die 
Dokumentation gehalten mit __asm.... Allerdings funktoniert die Schleife 
nicht. Es läuft zu schnell. Als Referenz nutze ich den IAR Compiler (4kB 
Version). Dort funktionierts. Irgendwelche Ideen?

Thomas Fuchs
Gast #24609
Lesenswert?

Wie stelle ich die Optimierungsstufe den ein?
Bei der Anleitung zum MSPGCC habe ich keine möglichkeit gefunden.

Der Assemblercode ist wie folgt:
  for(j=0;j<18000;j++) _asm_ __volatile__("; loop");
   c13e:  0f 43         clr  r15       ;
   c140:  3f 50 19 00   add  #25,  r15  ;#0x0019
   c144:  3f 90 50 46   cmp  #18000,  r15  ;#0x4650
   c148:  fb 2b         jnc  $-8          ;abs 0xc140

Der Code sieht eigentlich OK aus. Der richtige Wert wird geladen (Hex 
Zahl). Ich habe allerdings keine Ahnung wieso zum r15 eine 0x19 addiert 
wird. Wird aber auch keinen grossen Unterschied für meine 
Zeitverzögerung machen.

Müsste mal den Assemblercode vom IAR nehmen und vergleichen. Habe dazu 
aber noch keine Zeit gefunden.

Thomas

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren