Regarding my previous post on the interrupt crashing the FreeRTOS tasks, I went and research on the method used for enabling and disabling interrupts on AEMB through software. There are two simple functions used to do the job, which are
portDISABLE_INTERRUPTS() and portENABLE_INTERRUPTS(). These two functions will disable and enable the interrupts. These are implemented in the task itself.

void vTestTask1(void *pvParameters) {
while (1) {
portDISABLE_INTERRUPTS();
iprintf("task 1");
portENABLE_INTERRUPTS();
}
}

and

void vTestTask1(void *pvParameters) {
while (1) {
portDISABLE_INTERRUPTS();
puts("task 1");
portENABLE_INTERRUPTS();
}
}

L8

L9

The task seems to be working but the puts() function seems to take longer ticks during each cycle. The interrupt enabling and disabling could be working on both threads. This will need to be verify. Also, more experiments need to be done to see if they are working on one thread only or both threads. More tasks will be required.


0 Comments

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.