Got a illegal instruction interrupt

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Got a illegal instruction interrupt

1,587 次查看
douglaslps
Contributor I

Hi,

 

I have been working in this project that uses on DSC 56F8037. Summarizing it does send data to AD, reads some data from DA, process that data and repeats the cicle.

 

After a few seconds running I got a Cpu_Interrupt5 (ivINT_MisalignedLongWordAccess) that I was not able to find the problem source.

 

If I continue the execution I get a Cpu_Interrupt2 (ivINT_Illegal_Instruction).

 

I'm not used debugging this kind of error. By the way, my stack is all messed.

 

Can anyone give instructions to debug that? I read that CPU return address RA can be found at SP+6. But I don't know what to do with that, and I don't know if it is valid since my stack is not.

 

Thanks,

Douglas

标签 (1)
标记 (1)
0 项奖励
回复
3 回复数

632 次查看
J2MEJediMaster
Specialist I

Those errors are probably from when the CPU gets lost and goes out into the weeds as it executes random bits in memory. Are you using interrupts? If so, check to see that your handler code is cleaning up the stack properly when it exits.

 

---Tom

0 项奖励
回复

632 次查看
douglaslps
Contributor I

Hi Tom,

 

I'm not sure if my handler code is cleaning up the stack. Do I have to explicit clean that?

 

All I do is to insert my code inside the function created by Processor Expert. This ADC function "void Audio_Input_OnEnd(void)" has this pragma code before it "#pragma interrupt called ". I'm not sure if I need to comment this pragma instruction or not. But I does not change the behavior I described.

 

Can you help me?

Thanks,

Douglas

 

 

 

0 项奖励
回复

632 次查看
ProcessorExpert
Senior Contributor III

Hello,

 

This may came from various issues...

Please check that you have 'Interrupt preserve registers' set to 'yes'  in the ADC component properties (visible in 'expert' view mode that is selected by buttons at the bottom of the inspector). Then comment out or remove '#pragma interrupt called' from the event function.

 

The problem can be also caused by too small stack, you can try to increase it in currently active CPU component's properties at 'Build options' tab - use that property 'Stack size'.

I also recommend to set  'Unhandled interrupts' to 'Own handler for every' that causes that each interrupt will have its own routine and it's easier to diagnose which interrupt came.

 

best regards
Petr Hradsky
Processor Expert Support Team

 

 

0 项奖励
回复