Forum: Mikrocontroller und Digitale Elektronik Reloadwert berechnen


von Robert (Gast)


Lesenswert?

Hallo,
ich habe einen Fehler bei der Berechnung bzw. bei der Zuweisung eines 
Reloadwerts für den Timer.
1
#define OVERFLOW  10000          // in us
2
#define CCLK      7,3728  // in MHz
3
#define PRESCALE  2    // Vorteiler
4
#define MAX_COUNT 65536 + LATENCY // Maximale Anzahl an Zyklen (16 Bit)
5
#define LATENCY  0    // Zeit bis TL0 in ISR gesetzt wird
6
7
unsigned int gui_reloadvalue = (MAX_COUNT - (OVERFLOW * (CCLK / PRESCALE)));  // Berechnung Reloadvalue

Nachgerechnet sollte in gui_reloadvalue 0x7000 stehen.
Tatsächlich steht 0x9380 drin.

Kann mir jemand helfen. Muss ich casten?

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Warum verschweigst Du den verwendeten Prozessor?

von Robert (Gast)


Lesenswert?

Entschuldigung...

P89LPC936

von Stefan E. (sternst)


Lesenswert?

Robert schrieb:
> #define CCLK      7,3728  // in MHz

Irgendwie bezweifle ich, dass du wirklich den Komma-Operator in deiner 
Rechnung haben möchtest. ;-)

: Bearbeitet durch User
von Manfred K. (mkch)


Lesenswert?

Hallo,
ich hätte zwei Anmerkungen:
1. CCLK ohne Komma, sondern mit Punkt schreiben, also 7.238
2. 65536 ist grösser als 16 Bit !! Was da der Compiler macht ?
Gruß Manfred

von Robert (Gast)


Lesenswert?

Ou mann,

danke.

Grüße

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
Noch kein Account? Hier anmelden.