SW-Bug in V2.0.1 und V2.0.1B - U/Min und km/h falsch

SIxO-Firmware-Updates, Versionen, Historie, Patches, etc...
Antworten
Ralf
Beiträge: 575
Registriert: 20 Feb 2004 - 11:27
Wohnort: Hannover

SW-Bug in V2.0.1 und V2.0.1B - U/Min und km/h falsch

Beitrag von Ralf »

Hi,

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
Für den BugFix sind diese 4 Zeilen in measdrv.h ab Zeile 73 einzufügen:

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 */
Und dann sind diese 2 Zeilen in measdrv.c zu korrigieren:

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 */
Damit sind km/h und U/Min wieder im Lot! In Versionen > V2.0.1B ist dieser Fix bereits enthalten, er muss also nur in diesen alten Versionen nachgepflegt werden. Eine neue SW-Zip-Versionen (V2.0.1b1 ;-) ) wollte ich wg. dieser marginalen Änderungen nicht bauen.

Ralf

Peter
Beiträge: 91
Registriert: 03 Mär 2004 - 19:37
Wohnort: Solingen
Kontaktdaten:

Beitrag von Peter »

Hi Ralf,

bei mir ist noch nicht die Version "B" aufgespielt. Der Raddurchmesser ist richtig eingegeben und der SIxO liefert die gleichen Werte wie das GPS, das dürfte doch eigentlich mit der "falschen" Software nicht so sein oder??
Gruß aus Oberbayern

Peter

SIxO 2.0 / 005

Ralf
Beiträge: 575
Registriert: 20 Feb 2004 - 11:27
Wohnort: Hannover

Beitrag von Ralf »

Ich weiß nicht, WANN dir Arnold deine Version gebrannt hat, aber offensichtlich entspricht deine nicht der V2.0.1, denn in den Sourcen ist der Bug definitiv enthalten.

Wenn du einen schnellen Fix haben willst, setz die 4 Sourcecodezeilen wie hier beschrieben ein und Flash sie dir selbst. Ansonsten: Ich werde demnächst mal nen Megre mit Markus tollen neuen Sourcen + Ansgars BMP machen, dann haben wir die Version 2.1.0 (oder so) und alle bekommen updates.

Ralf

Antworten