Hallo, ich programmiere den 68HC12 in C und habe folgendes Problem: wenn ich alles in einer Zeile rechne, ist das resultat komplet falsch: t_m = (DELTA_P_ER*REAL_LOOP/DELTA_L2_L1); // ergibt 0xfffffffd wenn ich es aufteile, ergibt es das richtige resultat: t_m = DELTA_P_ER; t_m = t_m *REAL_LOOP; t_m = t_m / DELTA_L2_L1; // ergibt 184 Definitionen: unsigned long t_m; #define DELTA_P_ER 0x3EF8 #define DELTA_L2_L1 0x2219 #define REAL_LOOP 100 Kann mir jemand sagen, wo hier das Problem liegt? Ist es nicht möglich, das ganze in einer Zeile zu rechnen? Besten Dank für eure Hilfe!
Hi, interessant. beim GCC funktioniert der Codeausschnitt so wie Du ihn gepostet hast, und es kommt 184 raus. Ich vermute mal, dass Dein Compiler/Preprozessor für die Konstanten als Datentyp unsigned short (16 bit) annimmt und damit rechnet. Bei der Multiplikation gibt es dann einen Überlauf und der Wert stimmt nicht mehr. Meine Theorie. Versuch doch mal ein L hinter die Werte zu packen, also z.B. #define DELTA_P_ER 0x3EF8L Edd
Hi Edd, dein Tip war Gold wert.. ich musste hinter die Konstante ein L einfügen und schon hat es geklappt! Ich möchte mich für deine Hilfe herzlich bedanken. Gruss Chrigu
Hi Chrigu, kein Problem, es freut mich, dass ich helfen konnte. Viel Erfolg weiterhin. Edd
@Chrigu Hi, was für einen Compiler benutzt du denn? Cosmic, Metrowerks oder ... ? Christian
Hallo, habt ihr etwa auch HC12X Erfahrung? Ich bin auf der Suche nach eine SCI-Anwendung als RS232. Könnt ihr mir da weiterhelfen? Danke... Steini
@ christian der compiler heisst IAR 12 @Steini was brauchst du denn genau, bzw. was für eine Anwendung möchtest du programmieren? Gruss chrigu
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.