[FX2 EVM] 8051에서 unsigned long사용시 주의
테스트 하는중에 코드량이 좀 늘어니 이상한 동작을 하는경우가 발생한다. 코드가 멈추거나 리셋 되는 현상이 있다.
Delay 함수를 쓰고나면 이상한 동작을 한다.
system.c 에 있는 Delay() 함수는 아래와 같고 지금까지 잘 사용 했었는데...
FX2의 코어는 8비트 8051이므로 혹시나 long 타입이 문제가 아닐까 싶어 unsigned int로 변경해 보았는데.. 잘 동작한다.
옵티마이즈 수정을 좀 하긴했는데.. 컴파일러의 문제 인지..?
-> 옵티마이즈 문제는 아닌것 같다.
아무튼 long을 사용하지 않고 unsigned int로 하니 잘 동작한다.
테스트 하는중에 코드량이 좀 늘어니 이상한 동작을 하는경우가 발생한다. 코드가 멈추거나 리셋 되는 현상이 있다.
Delay 함수를 쓰고나면 이상한 동작을 한다.
system.c 에 있는 Delay() 함수는 아래와 같고 지금까지 잘 사용 했었는데...
void Delay(unsigned long Time)
{
volatile unsigned int delay = 0;
for(; Time != 0; Time--)
{
for(delay=0;delay<800;delay++);
};
}
{
volatile unsigned int delay = 0;
for(; Time != 0; Time--)
{
for(delay=0;delay<800;delay++);
};
}
FX2의 코어는 8비트 8051이므로 혹시나 long 타입이 문제가 아닐까 싶어 unsigned int로 변경해 보았는데.. 잘 동작한다.
옵티마이즈 수정을 좀 하긴했는데.. 컴파일러의 문제 인지..?
-> 옵티마이즈 문제는 아닌것 같다.
아무튼 long을 사용하지 않고 unsigned int로 하니 잘 동작한다.
반응형