die o.a. Versionen enthalten noch einen Bug, der leider erst nach der Herausgabe von V2.0.1 entdeckt wurde.
Problem:
Drehzahl und Geschwindigkeit werden um Faktor 1,4 falsch angezeigt.
Ursache:
Die neue HW SiXO V2.0 arbeitet mit ca. 14 MHz anstatt 10 MHz der V1.0. Zwar wurden in der SW die Timer-Reload-Werte für die Systemzeit (timer.c) korrigiert, nicht jedoch die Zeitbasis für Drehzahl + Geschwindigkeit (measdrv.c).
Abhilfe:
Die entsprechenden Timer-Reloadwerte für den MeasureDriver müssen ebenfalls in Abhängigkeit des Systemtaktes FSYS gebracht werden.
Das ganze basiert auf diesem FSYS Makro in timer.h, dass aber schon vorhanden und ok ist:
Code: Alles auswählen
72: /* hardware settings */
73: #define FQUARTZ 3686400L // used Quartz
74: #define PLL_FACT 4L // used PLL factor
75: #define FSYS (4*FQUARTZ) // = 14745600L FSYS with PLL-factor
könnte man mal ändern in
75: #define FSYS (PLL_FACT*FQUARTZ) // = 14745600L FSYS with PLL-factor
Code: Alles auswählen
73: #define TB2_HZ 5000L /* Wheel-Prescaler frequency in Hz = 1/(200 µs) */
74: #define TB2_RELOAD FSYS/TB2_HZ /* TB2-Reload value = 14745600L/5000L = 2949,12 */
75: #define TA4_HZ 100000L /* RPM-Prescaler frequency in Hz = 1/(10 µs) */
76: #define TA4_RELOAD FSYS/TA4_HZ /* TA4-Reload value = 14745600L/100000L = 147,456 */
Code: Alles auswählen
155 alt: tb2 = 2000; /* set TB2 cont value & reload register to 200 usec/Interrupt */
155 neu: tb2 = TB2_RELOAD; /* set TB2 cont value & reload register to 200 usec/Interrupt */
...
208 alt: ta4 = 100; /* set TA4 cont value & reload register to 10 usec/Interrupt */
208 neu: ta4 = TA4_RELOAD; /* set TA4 cont value & reload register to 10 usec/Interrupt */
Ralf