Deze processor communiceert via een slim systeem (al zeg ik het zelf) met een FPGA waar het unsigned 24 bit getallen heen kan sturen
en idem dito terug kan lezen.
Nu doet zich daar een merkwaardig probleem voor wat ik niet helemaal kan verklaren.
Ik lees een getal uit en probeer dan vervolgens op het scherm te toveren
Naar analogie ziet dat er ongeveer als volgt uit.
Code: Selecteer alles
char msg[20];
uint32_t DataRead = GetDataFromFpga();
sprintf(msg, "%lu", DataRead);
SerialPortPrintLine(msg);
Het gekke is dat bij getallen groter dan ongeveer 260000 de sprintf functie overloopt en foutieve getallen schrijft.
Ik kan dat niet helemaal verklaren.. immers met 24 bits unsigned kan ik elk getal van 0 t/m 2^25 - 1 = 33554431 maken.
Compileer ik de zelfde code gewoon op mijn PC (intel 64bit) dan rollen er gewoon goede getallen uit.
Ik heb het nu maar opgelost door zelf een conversie functie te maken maar dat zou toch niet nodig moeten zijn.
Iemand een idee wat hier aan de hand is ?