if (xTaskCreate((TaskFunction_t)xyzIntTask, "xyzTask", HEAP_STACK_256, NULL,3, &xyzIntTaskHandle) != pdPASS) {
assert_param(0);
}
THE ONLY LINE where the task is notify is interrupt callback with this trace :
case XYZ_INT2_PIN:
SEGGER_RTT_WriteString(0, "INT XYZ");
vTaskNotifyGiveFromISR(xyzIntTaskHandle, NULL);
break;
What I am Certainly sure is no hardware interrupt are gnerated and that the debug line INT XYZ never appears.
On repeated time arround 4300000 millisecs (4300 secs) I got Get Task
Notified message so it means Task notify Take is notified, BUT there is NO Interrupt to do this and I have no message from IRQ call back routine.
MY Question : Is there any way to be notified in task without the vtasknotify called ?
Strange unexpected TaskNotifygive
Dear all,
I have a simple task like this :
void xyzIntTask(void const* argument)
{
for (;;) {
ulTaskNotifyTake(pdTRUE, pdMSTOTICKS(portMAX_DELAY));
/**** some processing ****/
printf(“Get Task Notified “);
}
}
this task was created like this :
Strange unexpected TaskNotifygive
For Block indefinitely I think you want
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
My guess is the macro conversion produces a value that isn’t indefinite and it eventually drops out.
Strange unexpected TaskNotifygive
Hi Leon
Thanks very much you was right the Macro return 4294966 not investigated why yet
Strange unexpected TaskNotifygive
To effect an indefinite delay INCLUDEvTaskSuspend must be set to 1 in
FreeRTOSConfig.h, and the block time (as per previous post) must be set
to portMAXDELAY – not pdMSTOTICKS( portMAX_DELAY ).