Hallo Vielen Dank für eure bisherige Hilfe. Ich habe ein c Programm geschrieben das ein Hauptprogramm und eine Interrupt Service Routine hat, welche über einen Timer Interrupt ausgelöst wird. Diese Programm habe ich einmal mit IAR Enbedded Workbench und einmal mit MSPGCC compilen lassen. 1. Festellung MSPCGG generiert 25% mehr Code. 2. Feststellung beim das Programm das mit IAR compiliert wurde läuft so wie es soll. Das Programm das ich mit MSPGCC compiliert habe läuft auch aber feherhaft. Mir kommt vor, daß es langsamer läuft. an was kann das liegen? Insbesondere diese Routine in der ISR wird feherhaft ausgeführt! interrupt (TIMERA0_VECTOR) Timer_A(void) { . . . if ((schritt>=9)&(schritt<40)) { for (x=0;x<0x1e;x++) { z=P1IN; //K-Spuren ausblenden z&=0x3f; if ((P2IN==BitmusterP2[x])&(z==BitmusterP3[x])) { if (x==0)schritt=10; if ((x>0)&(x<0x0f)&(schritt==10)) { schritt=schritt+x; c=0x0001; c=c<<(schritt-11); fehlern|=c; } if (x==0x0f)schritt=10; if ((x>0x0f)&(schritt==10)) { schritt=schritt+x; c=0x0001; c=c<<(schritt-26); fehlerp|=c; } } } } Warum kann das sein, das diese Routine manchmal richtig arbeitet und manchmal nicht??? Vielen Dank für eure Hilfe MfG Steffen
1. Kompilier mal mit der Option -Os. 2. Keine Ahnung, du müsstest halt erst mal herausfnden was genau falsch läuft oder dir mal den vom Compiler erzeugten Assemblercode anschauen: msp430-gcc bla.c -g -mmcu=msp430x1121 -o bla.elf msp430-objdump -DS bla.elf --source > bla.lst ^^^^^^^
Hallo, zum einen habe ich bei einem größeren Programm (IAR 8kB) auch festgestellt das der MSPGCC wesentlich größeren Code produziert hat, 13 kB für den gleichen Code! Habe versucht den Assembler Code zu vergleichen habe aber nach einer Stunde aufgegeben. Zum anderen musst du bei Interrupt Routinen aufpassen wenn du mit ihr globale Variablen beeinflusst. Diese müssen "volatile" deklariert werden!!! Thomas
Thomas, hast du mit Optimierung (-Os) kompiliert?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.