Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Geschwindigkeitsmessung Kategorie: Programmierung ASM (von Dietmar, Homepage - 26.01.2005 17:43)
 Als Antwort auf Re: Geschwindigkeitsmessung von Michael - 26.01.2005 12:06

Hallo Michael,

> das assemblerprog habe ich nun abgeändert, jetzt läuft es ca. 25mal schneller.

das ist gut. Aber hast Du auch bedacht, daß nun, da das Assemblerprogramm 25mal schneller läuft, auch nur noch 25mal höhere Geschwindigkeiten gemessen werden können? Der Wert 12000 wird nun bei einer Geschwindigkeit von 250,8 km/h zurückgeliefert, nicht mehr bei 10 km/h. Ein möglicher Lösungsweg ist, die Auflösung des Counters um ein Byte zu erhöhen, aber dann mußt Du natürlich die Berechnung umständlich anpassen:

 inc $a4
  bne loop
  inc $a5
  bne loop
  inc $a6
  bra loop


Grundsätzlich solltest Du Dir selbst die Frage beantworten, in welchem Wertebereich und mit welcher Auflösung Du die Geschwindigkeit messen willst/mußt. Im ersten Beitrag in diesem Forum hast Du geschrieben, Du willst Geschwindigkeiten um die 90 km/h auf zwei Dezimalstellen genau messen. Mittlerweile erreichst Du sogar über 2,5 Dezimalstellen Genauigkeit. Das bisherige Ergebnis war also schon sehr gut. Wenn Du in diesem Bereich eine gute Werteauflösung erreichen willst, geht das bei gegebener Darstellungs- und Rechengenauigkeit immer auf Kosten des meßbaren Geschwindigkeitsbereichs.

Eine Ungenauigkeit entsteht übrigens auch dadurch, daß die C-Control im Hintergrund, also während der normalen Programmausführung, einige Interrupts abarbeitet. Wenn Du auf eine hohe Meßgenauigkeit Wert legst, kannst Du diese Interrupts für die Dauer der Messung deaktivieren. Das geht in Assembler:

 sei
 
  ...    ;restliches Programm
 
  cli
  rts


Wenn ich das richtig sehe, wartest Du in BASIC so lange, bis der Start des Impulses kommt und rufst dann Assembler auf? Ich würde auch diese Abfrage schon in Assembler bei deaktivierten Interrupts mittels BRCLR oder BRSET durchführen.

Gruß, Dietmar

Meine Homepage: http://ccintern.dharlos.de

 Antwort schreiben

Bisherige Antworten:

Re: Geschwindigkeitsmessung (von Michael - 27.01.2005 14:22)
    Re: Geschwindigkeitsmessung (von Thomas - 3.03.2005 10:28)