|ARM Technical Support Knowledge Articles|
Applies to: C51 C Compiler
Information in this article applies to:
Casting an int with a value of zero to a float causes the program to stop responding on some Dallas 390 or 400 devices when the Arithmetic Accelerator is enabled.
With the Arithmetic Accelerator enabled, the C51 libraries use the Normalize function of the Dallas 390/400 to cast an int to float. Some revisions of the Dallas 390 and 400 chips don't clear the MCNT1.7(MST) bit after normalizing an operand with a value of zero. The routine is then caught in an endless loop.
To get around this inconsistency, the attached zip file contains replacement C51 floating point libraries which check for a zero operand. Download the file and extract it to your C:/KEIL/C51/LIB folder. Rebuild your project and the new library code should fix the error.
Fixed in C51 V8.00a and later.
Article last edited on: 2005-10-14 09:04:03
Did you find this article helpful? Yes No
How can we improve this article?