Hallo, CCSV6 Free license und full license -> Launchpad MSP430G2553 Hat jemand einen Tipp, warum DELAY_USEK(200); "wegcompiliert" wird? VG Walter #include <msp430.h> void clocksInit(void); void DELAY_USEK(unsigned int); // /* * main.c */ int main(void) { WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer clocksInit(); P1DIR |= BIT0 ; // Set P1.0 to output direction for(;;) { P1OUT |= BIT0 ; // Set P1.0 to output direction DELAY_USEK(200); // !!!!!!!!!! ist im disasm. nicht vorhanden und wird auch nicht ausgeführt. P1OUT &= ~BIT0; DELAY_USEK(200); // !!!!!!!!!! breakpoint nicht möglich }; return 0; } void DELAY_USEK(unsigned int ui_lok) { while(ui_lok) { ui_lok--; } } void clocksInit(void) { BCSCTL1 = CALBC1_16MHZ; // Set DCO ~ 16 Mhz DCOCTL = CALDCO_16MHZ; BCSCTL1 |= DIVA_1; // ACLK/(0:1,1:2,2:4,3:8) BCSCTL3 |= LFXT1S_2; // LFXT1 = VLO } // ENDE code
Diese Funktion hat aus Sicht der Sprachdefinition keinerlei Auswirkung und kann daher ohne Verletzung des C Standards wegoptimiert werden. Mindestlaufzeit ist keine vom Standard geforderte Eigenschaft.
volatile lautet das Zauberwort: volatile unsigned int ui_lok , sonst Optimiert der Compiler die ganze Funktion weg,da ui_lok im Programm nicht mehr verwendet wird.
Thomas L. schrieb: > da ui_lok im Programm nicht mehr verwendet wird. Und selbst dann würde die Funktion u.U. durch die Konstante 0 ersetzt. Compiler und Programmierer sind wie Mann und Frau. Den Anspruch der Frau, nicht das zu tun was sie sagt, sondern das was sie meint, kann Mann mangels Sensorik oft nicht erfüllen.
Thomas Lembke, flups Nochmals danke. Der Compiler für den TMS320F28069 hat nicht dieses Verhalten. VG Walter
Walter L. schrieb: > Der Compiler für den TMS320F28069 hat nicht dieses Verhalten. Das Verhalten eines bestimmten Compilers ist kein Massstab für andere Compiler. Kein Compiler ist verpflichtet, diese Optimierung durchzuführen. Er darf, er muss nicht.
Walter L. schrieb: > Der Compiler für den TMS320F28069 hat nicht dieses Verhalten. Nur solange der Optimizer aus ist. Praktisch alle C-Optimizer sollten den leeren Schleifenblock ersatzlos entfernen.
Compiler speziell für für DSP/Microcontroller werden diese Optimierung evtl nicht durchführen.
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.