brisco82 wrote on Thursday, June 07, 2012:
Hi!
I’m a newbie with FreeRTOS and I can’t make it work properly. I’m just trying to make an LED toggle every 200ms, but the Task “Task1” is executed only once. When I set a breakpoint within the infinite while loop, it is never reached again after the first time.
I have read a few topics on vTaskDelay problems, and therefore checked the tick interrupt. xTickCount in vTaskIncrementTick is incremented properly.
I’m using an UC3L064 on the UC3L0_xPlained board.
Thanks for any help!
Cheers, Tom
===========================
Here’s my code:
int main (void)
{
board_init();
sysclk_init();
// USART setup here ....
// create task
xTaskCreate( vTask1, /* Pointer to the function that implements the task. */
"Task 1", /* Text name for the task. This is to facilitate debugging only. */
240, /* Stack depth in words. */
NULL, /* We are not using the task parameter. */
1, /* This task will run at priority 1. */
NULL ); /* We are not using the task handle. */
/*
* Register the USART interrupt handler to the interrupt controller.
* usart_int_handler is the interrupt handler to register.
* EXAMPLE_USART_IRQ is the IRQ of the interrupt handler to register.
* AVR32_INTC_INT0 is the interrupt priority level to assign to the
* group of this IRQ.
*/
// Disable all interrupts.
Disable_global_interrupt();
// Initialize interrupt vectors.
INTC_init_interrupts();
INTC_register_interrupt(&usart_int_handler, AVR32_USART2_IRQ,
AVR32_INTC_INT0);
// Enable USART Rx interrupt.
USART->ier = AVR32_USART_IER_RXRDY_MASK;
// Enable all interrupts.
Enable_global_interrupt();
/* Start the scheduler so our tasks start executing. */
vTaskStartScheduler();
while(1){
}
} // main
void vTask1( void *pvParameters )
{
int rxData;
//volatile portTickType task1Tick;
/* As per most tasks, this task is implemented in an infinite loop. */
while(1)
{
//usart_write_line(USART, "Task1 executed!");
gpio_tgl_gpio_pin(LED_RED_PWMA);
vTaskDelay((portTickType)200 / portTICK_RATE_MS);
}
}