Hallo Gemeinde,
ich versuche mich gerade an einer kleinen Rechenaufgabe.
Controller ist ein Atmega128a (also 8bit)
1 | #include <stdio.h>
|
2 | #include <stdlib.h>
|
3 | #include <stdint.h>
|
4 |
|
5 | int freq;
|
6 | uint16_t i_time, e_time, b_time;
|
7 |
|
8 | b_time = ((60000/freq)/3);
|
9 | i_time = b_time;
|
10 | e_time = b_time*2;
|
Bei freq=1 stimmt der Wert von b_time mit 20000, auch i_time hat
natürlich den richtigen Wert. Schau ich mir aber e_time an, so zeigt er
mir einen negativen Wert an. Der Controller scheint die Variable e_time
als int16_t zu handhaben, denn ab 32767 passiert der Overflow.
Nun habe ich schon Beispiele gefunden, die mit ASM eine Art Workaround
bilden, nur habe ich von ASM keine Ahnung.
Weiß jemand, ob der MUL-Befehl oder ähnliches mit C umgesetzt werden
kann?
Danke und Gruß,
wastlB