nobody wrote on Friday, December 22, 2006:
I have been playing with the RTOS for a while using the AT91SAM7X256 and the atmel evaluation kit. However I got stuck and I hope you can give me a little help.
The problem is as follows:
The PIT is used for the vPortPreemptiveTick and the vPortNonPreemptiveTick functions. This Interruption is not only for the PIT but also for a couple of others peripherals (all using Interrupt source 1). What I want to do is to distinguish when is a PIT interrupt and when not. I think the modification should be in portasm.s79. In the entry point of the function vPortNonPreemptiveTick() we should ask what cause the interruption and then if wasn’t the PIT I call “do_something_is_noPIT()”. I try that with this following lines:
.
.
……
vPortPreemptiveTick:
LDR R0, =auxiliar ; Atiende las interrupciones para el caso de que la interrupción sea diferente a la del PIT
mov lr, pc ; de ser diferente a la del PIT, subo una variable global y evito que se ejecuten las siguientes funciones
BX R0
portSAVE_CONTEXT ; Save the context of the current task.
LDR R0, =vTaskIncrementTick ; Increment the tick count - this may wake a task.
……
auxiliar() is a function defined in port.c and will distinguish if it was PIT or other kind of interruption.
However it didn’t work! I try a couple of others things and neither they work.
I don’t know what else to try.
Thank you Very Much.
(Sorry for my English, I’m not a native English Speaker, I don’t even live in the US).