2015-07-03 02:35 AM
Hello,
I'm trying to develop a watchdog handler to catch, as for exceptions, the last code executed before watchdog. To do that I tried to copy the handler I did for faults and that I found on web. asm( ''TST LR, #4 \n'' ''ITE EQ \n'' ''MRSEQ R0, MSP \n'' ''MRSNE R0, PSP \n'' ''B HalWdt_Save_Reg_c \n'' ); My application runs partially under OS, uC-os III, with some Irqs under OS, and partially under direct Irq, out of OS. The problem I'm experiencing is that the first check done to decide if I have to use the PSP or the MSP it's not working correctly. I checked the OS and the CONTROL[1] is set to 1 so normally under irq it should use the MSP while in thread mode it should use the PSP, as far as I understood. I debug a little bit and when I go in the watchdog irq it correctly does the check at the beginning and it chooses the PSP based on LR but the correct data are on MSP. I don't know if I'm missing something or if the check should be done in a different way. My toolchain is IAR. thanks michele2015-07-03 10:50 PM
hello,
I solved the issue. The solution is working, the problem is that in case of an infine loop there can be still a more prior ira that enter during the loop execution so the data collected are not always true.regardsmichele