No, it did not help me. I don't know if i understood everything correct. But as far as i understood i checked everything.: The memory area at __user_libspace is not changing and setting the locale with setlocale(LC_ALL,''C''); does not help either.
The printf and sprintf are re-entrant. This could cause corruption if the interrupt fires while the printf or sprintf functions are being executed. How often do your interrupts happen? Personally I don't tend to use the printf and sprintf functions as they are quite large (the GPIO read and write functions aren't so bad).
Have you any means other than the printf statements to check the values of these variables? Can you single step through the debugger or simulator to read the values that way?
I checked the values with a if-statement (like if (ape>xy)). The double values are OK!, only the sprintf and printf outputs are incorrect... It seems to me like some kind of debugger problem. Because when i do a breakpoint at the interuptserviceroutine and try to examine the veriable ''ape'' or another double variable inside any ISR i get an Error like ''Unable to determine location''. --> The debugger cannot evaluate a double varibale inside any ISR!! But is there a connection between the sprintf problem?
What does the mapfile say about the location of these variables? Does declaring them as static or volatile make any difference? This should force the linker to keep them in the same memory location (although with such a small program it should anyway).
Other than this the only problem I can see is the re-entrance problem from earlier. Do the external interrupts fire very often?