www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit unsigned long?


Autor: chrigu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Edd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: chrigu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Edd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Chrigu,

kein Problem, es freut mich, dass ich helfen konnte.
Viel Erfolg weiterhin.

Edd

Autor: Christian G. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Chrigu

Hi, was für einen Compiler benutzt du denn?
Cosmic, Metrowerks oder ... ?

Christian

Autor: Steini (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Christian G. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na klar,

was wolls denn sein?

Christian

Autor: chrigu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ christian
der compiler heisst IAR 12
@Steini
was brauchst du denn genau, bzw. was für eine Anwendung möchtest du
programmieren?
Gruss chrigu

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.