This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

A way use isr_evt_set function by FIQ in ARTX

In the ARTX, since the isr_evt_set can not be use in the __fiq function, I use the __swi function set the task instead. for exampal:

void IsrSetFunction (void) __swi (8) {
isr_evt_set (0x0001, tskMyTask);
}

void FIQ_Handler (void) __fiq {
IsrSetFunction();
EXTINT = 0x00000002; // Clear the peripheral interrupt flag
}

But this way will do? You know, the ARTX using the swi to do something.
'Software interrupts 0-7 are used by the Advanced Real-Time Kernel (ARARM) and may not be used in your application.'
So if I use the swi to set a task, this will occur some problem in ARTX?

Parents
  • Using nesting interrupts with ARTX is not a good practice. I mean, why would somebody try to implement a "feature" which is already a part of ARTX Kernel. Nested interrupts may simply be avoided by using a good RTOS based concept.

    Calling two isr_xxx functions from one interrupt function is not a problem. This works because the request is queued and processed later, when the irq function has finished. Then the os_clock_demon() task scheduler is started to process the queued requests, reschedule tasks and start the ready one with the highest priority.

    ARTX Kernel has proven to be a good and stable RTOS, used in may aplications. In general ARTX Kernel should work also with nested interrupts.

    But, if you really want to use nested interrupts, then you probably do not need ARTX Kernel at all.

Reply
  • Using nesting interrupts with ARTX is not a good practice. I mean, why would somebody try to implement a "feature" which is already a part of ARTX Kernel. Nested interrupts may simply be avoided by using a good RTOS based concept.

    Calling two isr_xxx functions from one interrupt function is not a problem. This works because the request is queued and processed later, when the irq function has finished. Then the os_clock_demon() task scheduler is started to process the queued requests, reschedule tasks and start the ready one with the highest priority.

    ARTX Kernel has proven to be a good and stable RTOS, used in may aplications. In general ARTX Kernel should work also with nested interrupts.

    But, if you really want to use nested interrupts, then you probably do not need ARTX Kernel at all.

Children
No data