We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Dear All,
Kindly answer the following question.
I have a task, and set its event "RegulateRPM" from the Timer0 Interrupt. In the task, i have a switch statement that checks the event flag "RegulateRPM" set and accordingly jumps to the routine. The question is, does the routine under the switch-case get executed continuously (as the task is always an infinite loop) untill i dont clear the event flag or does the routine execute once and then i have to set the event again (i am not clearing the event flag)??
__task void TASK_RegulateRPM(void) { uint16_t rx_event; os_evt_wait_or(CHECK_EVENT_FLAGS, INFINITE_TIME); //Wait for an Event to occur rx_event = os_evt_get(); switch(rx_event) { case TASK_RPM: if (gMotorRPM < (gFinalRPM)) dacvalue += 1; else if (gMotorRPM > gFinalRPM) dacvalue -= 1; I2C_DAC_Init(dacvalue); break; } }
gMotorRPM and gFinalRPM are the global floats.
Regards, Dhaval
Only once - you don't need to clear the event.