본문 바로가기

[INTERFACE]/EZ-USB

[FX2 EVM] 8051에서 unsigned long사용시 주의

[FX2 EVM] 8051에서 unsigned long사용시 주의

테스트 하는중에 코드량이 좀 늘어니 이상한 동작을 하는경우가 발생한다. 코드가 멈추거나 리셋 되는 현상이 있다.
Delay 함수를 쓰고나면 이상한 동작을 한다.

system.c 에 있는 Delay() 함수는 아래와 같고 지금까지 잘 사용 했었는데...
void Delay(unsigned long Time)
{
 volatile unsigned int delay = 0;

 for(; Time != 0; Time--)
 {
  for(delay=0;delay<800;delay++);
 };
}

FX2의 코어는 8비트 8051이므로 혹시나 long 타입이 문제가 아닐까 싶어 unsigned int로 변경해 보았는데.. 잘 동작한다.
옵티마이즈 수정을 좀 하긴했는데.. 컴파일러의 문제 인지..?
 -> 옵티마이즈 문제는 아닌것 같다.

아무튼 long을 사용하지 않고 unsigned int로 하니 잘 동작한다.
반응형