Hello,
I'm using a code like this with K60N512 MQX 4.0.0 and some times i have a time out after some undred of millisecond (random value).
Somebody have an explanation ?
#define BSP_ALARM_FREQUENCY (1000)
result =_lwevent_wait_ticks(&buflwevent,LW_READBUF2,TRUE,2000);
if(result == MQX_OK)
{
...
thankyou
Antonio
Solved! Go to Solution.
Hi,
I tested whith the two function _time_get_elapsed_ticks() before the instruction
result =_lwevent_wait_ticks(&buflwevent,LW_READBUF2,TRUE,2000);
and with the same function after timeout.
The answer was corret: 2000 ticks different between the two reading...
I found the bug. My bug in the initialization of the serial ISR.
Isr_InitIsr(INT_UART3_RX_TX, Uart_RxTx3_Isr); //OK!
NVICICPR1 |= (1<<19); //NOT MQX ISR initialization!
NVICISER1 |= (1<<19); //NOT MQX ISR initialization!
NVICIP51 = 0x30; //NOT MQX ISR initialization!
_bsp_int_init(INT_UART3_RX_TX, 3, 0, TRUE); //Correct MQX initializaion... problem solved.
Thank you
Antonio
Hi Antonio,
In addition to Martin's question have you re-compiled the RTOS after making the BSP_ALARM_FREQUENCY (1000)?
You can also implement the following code to check your _lwevent_wait_ticks() call with following from the MQXRM.pdf in MQX4.0\doc\mqx path:
Regards,
David
Hi David,
Yes i have re-compiled all the libraries of the MQX after making the BSP_ALARM_FREQUENCY (1000).
Hi, Martin, I mesured the time using a watch testing the right time on o modified
instruction like this:
"result =_lwevent_wait_ticks(&buflwevent,LW_READBUF2,TRUE,20000); " //20 second time test
if(result == MQX_OK)
...
.. the time is right (plus or minus some tens of milliseconds ...my reaction time on watch...)
Also i mesured the time with an oscilloscope between string out on my serialRs485 and the complete answer of the slave (this event set the "LW_READBUF2")
and verified with a breakpoint on the IAR 6.70.
I will mesure the ticks with your suggestion.
Thankyou
Antonio
Hi,
Can you explain to me how you measured the time? Test for this functionality has been added in 4.0.2 release and works. Can you try to measure ticks (with function _time_get_elapsed_ticks()) before and after _lwevent_wait_ticks function and call _time_diff_ticks()?
We should decide if it is problem of lwevent or mqx timing.
Regards,
Martin Bielik
Hi,
I tested whith the two function _time_get_elapsed_ticks() before the instruction
result =_lwevent_wait_ticks(&buflwevent,LW_READBUF2,TRUE,2000);
and with the same function after timeout.
The answer was corret: 2000 ticks different between the two reading...
I found the bug. My bug in the initialization of the serial ISR.
Isr_InitIsr(INT_UART3_RX_TX, Uart_RxTx3_Isr); //OK!
NVICICPR1 |= (1<<19); //NOT MQX ISR initialization!
NVICISER1 |= (1<<19); //NOT MQX ISR initialization!
NVICIP51 = 0x30; //NOT MQX ISR initialization!
_bsp_int_init(INT_UART3_RX_TX, 3, 0, TRUE); //Correct MQX initializaion... problem solved.
Thank you
Antonio