configTICK_RATE_HZ in ATmega16

Hello :-) My name is Jorge Pinto from Portugal. I have FreeRTOS working and I am happy, because I started about 8 months ago looking for a RTOS with just FreeSoftware, and realy like GCC-AVR and FreeRTOS :-) Well, the problem, I have one test code that flash a LED every some time, but, I would like to change the configTICK_RATE_HZ for a lower value, however, If I change it, It does not have result :-( My config: #define configCPU_CLOCK_HZ            ( ( unsigned portLONG ) 8000000 ) #define configTICK_RATE_HZ            ( ( portTickType ) 20 ) // 20 instead of original 1000!! The task the flash the LED: /*———————————————————–*/ /* # # Task que vai ligar ou desligar o LED. # */ static void vFlashLED( void *pvParameters ) { /* The parameters are not used. */ ( void ) pvParameters; portTickType xLastWakeTime; const portTickType xFreq_ligado = 2000; // 2 segundos const portTickType xFreq_desligado = 1000; // 1 segundo     /* Cycle for ever. */     for( ;; )         {         // Ligar LED         PortCLatch = PORTC;         PORTC = (PortCLatch | (1 << 0));         // Initialise the xLastWakeTime variable with the current time.         xLastWakeTime = xTaskGetTickCount();         vTaskDelayUntil( &xLastWakeTime, xFreq_ligado );         // Desligar LED         PortCLatch = PORTC;         PORTC = (PortCLatch & (0 << 0));         // Initialise the xLastWakeTime variable with the current time.         xLastWakeTime = xTaskGetTickCount();         vTaskDelayUntil( &xLastWakeTime, xFreq_desligado );         } } If I change xFreq_ligado and xFreq_desligado, the flash time alters, but not If I change configTICK_RATE_HZ :-( -– Another question, I have this macro: #define #define FlashLED (0); (0); and If a do: PORTC = (PortCLatch & (0 << (FlashLED) )); I get an error?? Why?? – I am doing this instead: PORTC = (PortCLatch & (0 << 0)); Thanks in advance. Jorge Pinto http://www.Casainho.net

configTICK_RATE_HZ in ATmega16

Take a look at the function prvSetupTimerInterrupt() in port.c for the GCC/AVR port.  It might be that the compare match value written to the timer peripheral is overflowing because you are dividing the clock frequency by such a low number (20 instead of 1000).  If this is the case then you might need to adjust the timer prescale, or do something similar. Regards.

configTICK_RATE_HZ in ATmega16

I figured it out :-) After trying change same values on the prvSetupTimerInterrupt(), I did discover the real problem :-) LOL I work on Linux and I was on this directory: "/media/data/05_assembly/ATMEL/FreeRTOS/Demo/AVR_ATMega323_WinAVR" and I also had this one "/media/data/05_assembly/ATMEL/FreeRTOS/Demo/AVR_ATMega323_WinAVR-copy". I don’t know why, but looks like the system was using the "FreeRTOSConfig.h" from directory "AVR_ATMega323_WinAVR-copy" instead of that where I was working "AVR_ATMega323_WinAVR"!! Now all works ok after delete "AVR_ATMega323_WinAVR-copy" ;-) :-) Thank you and please continue with this great work – FreeRTOS. I am using and have good experiences so I recommend to all my friends :-)

configTICK_RATE_HZ in ATmega16

Oh men, I was wrong ;-) :-) I must do "make clean" after change "FreeRTOSConfig.h" file!! If I don’t do "make clean", changes in "FreeRTOSConfig.h" file don’t have effect. -– http://www.Casainho.net