Forum: Mikrocontroller und Digitale Elektronik MSP-GCC und Zeitschleifen


von Thomas Fuchs (Gast)


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

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

1) Welche Optimierungsstufe?

2) Wie sieht der erzeugte Assemblercode aus?

von Thomas Fuchs (Gast)


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

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.