Can't disable COP properly on SPYDER

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

Can't disable COP properly on SPYDER

1,932 次查看
Johnnymysto
Contributor I

One of the SPYDER demo programs has this line of code to disable the COP:

 

SOPT1 &= 0x7F;

 

That demo program runs fine.  But when I try that same line of code in my program, I keep getting the error "Lost communication with the target device".  I don't see anything else in the demo program that pertains to disabling the COP.  Why isn't my program working?  I have pared down the program to simply disable the COP and then turn on the LED, but it still doesn't work.  Here is the entire program:

 

#include <hidef.h> 

#include "derivative.h"

void main(void) {
  EnableInterrupts;
  SOPT1 &= 0x7F;
  PTADD = 0x01;
  PTAD = 0x01;
}
标签 (1)
0 项奖励
回复
4 回复数

1,156 次查看
bigmac
Specialist III

Hello,

 

Unfortunately, your code has been pared down to the extent that the main() function can exit.  This is not allowed. You will need to add the following infinite loop code within the function to ensure the function does not exit.

 

for ( ; ; ) {


}

 

 

Regards,

Mac

0 项奖励
回复

1,155 次查看
Johnnymysto
Contributor I

That did it - thanks bigmac!

0 项奖励
回复

1,156 次查看
peg
Senior Contributor IV

Hello and welcome to the fora,

 

Generally the problem here is that SOPT is a "write once" register. It only accepts the first attempt to write to it and ignores all others. The problem probably is that it is being written to before you get to it and your write is ignored.

 

0 项奖励
回复

1,156 次查看
Johnnymysto
Contributor I

Thanks Peg!  Where would be a better place to put the SOPT write command?

0 项奖励
回复