Gast
#651452
Hallo zusammen! Bin gerade dabei mich etwas mit freeRTOS auf dem ATMega32 zu beschäftigen. Dazu habe ich einen Task erstellt, der eine LED ständig ein- und ausschalten soll, indem er auf die entsprechende Position im PINx-Register eine 1 schreibt. (Datenblatt: Writing a logic one to PINxn toggles the value of PORTxn, independent on the value of DDRxn.) Der Task sieht dementsprechend so aus: void prvLEDTest(void *pvParameters ) { while(1) { PIND = (1<<5); vTaskDelay(100); } } Das Problem ist, dass der Compiler dieses wegen "Unsinnigkeit" wegoptimiert. PIND ist wie folgt definiert: #define PIND _SFR_IO8(0x10) Dementsprechend kann ich hier soviel, ich weiß auch nicht mit 'volatile' arbeiten... Ich bin euch für jeden Tip und Ratschlag zur Lösung dieses Problems dankbar und hoffe dass ihr mir hier weiterhelfen könnt. Gruß Manu