In Sachen Display

Dieses Thema im Forum "Fiesta Mk3" wurde erstellt von Gerrit, 14. Dezember 2003.

  1. Agamemnon

    Agamemnon Forums Inventar

    Registriert seit:
    23. Juli 2002
    Beiträge:
    2.175
    Zustimmungen:
    1
    Ort:
    Zülpich, Deutschland
    Hab das ganze jetzt mal durchlaufen lassen.
    Die GPix habe ich durch folgenden Code ersetzt:

    Code:
    void TForm1::GPix(int x, int y)
    {
       Form1->Canvas->Brush->Color = clBlack;
       Form1->Canvas->Rectangle(x,y,x+2,y+2);
    } // endof GPix
    Ergebnis: 10 Millionen (!!!) Zeichenvorgänge einer Linie von Punkt 20/20 nach Punkt 500/200 benötigen auf einem P3 mit einem Gigahertz nur 29 Sekunden!

    Gerrit, das Teil ist schnell wie Sau.
    Zumindest die GLine-Funktion.

    Hier wird so gut wie nichts rauszuholen sein.

    Code:
    TTime Anfangszeit = Time();
    int a = 0;
    while (a < 10000000)
    {
       a++;
       GLine(20,20,500,200);
    }
    Form1->Caption = TimeToStr(Time()-Anfangszeit);
    
     
  2. TS
    Gerrit

    Gerrit Forums Elite

    Registriert seit:
    4. Februar 2003
    Beiträge:
    1.293
    Zustimmungen:
    0
    Ort:
    Braunschweig, Germany
    Mh, das klingt schonmal erfreulich. Wie gesagt, ich hab mehrmals versucht das ding zu verstehen, aber wollte nich.

    Was mich an dieser Routine halt gefreut hat ist, dass sie ohne MOD oder DIV auskommt, was bei einem 8bittigen microprozessor in elendigen Subtraktions-Schleifen erledigt wird. Daher hab ich den damals ohne weiteres nachdenken genommen.

    In Mathe hab ich bei Vektorrechnung nämlich kläglich versagt :(

    Gruss, Gerrit
     
  3. Krisu

    Krisu Forums Profi

    Registriert seit:
    16. Oktober 2001
    Beiträge:
    665
    Zustimmungen:
    0
    :eek: Ihr seid echt hammer mit eurem Fachchinesisch :D
     
  4. TS
    Gerrit

    Gerrit Forums Elite

    Registriert seit:
    4. Februar 2003
    Beiträge:
    1.293
    Zustimmungen:
    0
    Ort:
    Braunschweig, Germany
    Hehe, sei froh, dass Du eben nicht im Chat warst
     
  5. Agamemnon

    Agamemnon Forums Inventar

    Registriert seit:
    23. Juli 2002
    Beiträge:
    2.175
    Zustimmungen:
    1
    Ort:
    Zülpich, Deutschland
    :rofl:

    Kannst das alles ja mal durchteste, was wir eben optimiert haben :D
    Ansonsten schick mir ruhig die Sachen, die du noch hast.
     
  6. TS
    Gerrit

    Gerrit Forums Elite

    Registriert seit:
    4. Februar 2003
    Beiträge:
    1.293
    Zustimmungen:
    0
    Ort:
    Braunschweig, Germany
    Jop, und vielen Dank dafür.

    Zu zweit kommt mann dann doch eher auf die Fehler.

    Ich denke, ich werd noch ein paar mal auf Dich zurückkommen, einfach nur, damit du mir sagst "Ey Alter, das kannste aber noch besser".

    Schau doch mal, ob in der GPix-Routine, die ich vorhin gepostet habe, die DIV und MOD noch irgendwie zu umgehen sind.

    Btw:
    Code:
    void TForm1::GPix(int x, int y) 
    { 
       Form1->Canvas->Brush->Color = clBlack; 
       Form1->Canvas->Rectangle(x,y,x+2,y+2); 
    } // endof GPix
    Borland Builder ??? :gruebel:

    Gruss, Gerrit
     
  7. Agamemnon

    Agamemnon Forums Inventar

    Registriert seit:
    23. Juli 2002
    Beiträge:
    2.175
    Zustimmungen:
    1
    Ort:
    Zülpich, Deutschland
    Richtig geraten, BCB6 ;)

    Code:
    Offset = x % 8;
    Hier kann man auch

    Code:
    while (x > 7)
      x -= 8;
    schreiben.
    Ich weiß aber nicht, ob das wirklich schneller ist.
    Wie groß kann denn x maximal sein?
    Bei entsprechender Größe könnte sich eine Anweisung wie

    Code:
    while (x > 100)
      x -= 100;
    lohnen.
     
  8. TS
    Gerrit

    Gerrit Forums Elite

    Registriert seit:
    4. Februar 2003
    Beiträge:
    1.293
    Zustimmungen:
    0
    Ort:
    Braunschweig, Germany
    Moin !

    Ich hab ja schon nicht mehr damit gerechnet, aber heute lag ein Paket in meinem Zimmer.

    Das war drin:

    [​IMG]
    :B:

    Eigentlich wollte ich nen MAX749-SMD haben, aber naja.... :-?
    Gruss, Gerrit
     
  9. Agamemnon

    Agamemnon Forums Inventar

    Registriert seit:
    23. Juli 2002
    Beiträge:
    2.175
    Zustimmungen:
    1
    Ort:
    Zülpich, Deutschland
    Ups, mir ist gerade was aufgefallen.

    Bitte die 100 durch 120 ersetzen, da 100 nicht wirklich durch 8 teilbar ist ;)
     
  10. haeger

    haeger Forums Fortgeschrittene(r)

    Registriert seit:
    28. Mai 2004
    Beiträge:
    314
    Zustimmungen:
    0
    was ihr hier so macht ist echt klasse son tacho möchte ich auch haben für meinen xr2i konnte leider nicht alles bilder im thread öffnen habe ihn aber komplett durchgelesen wünsche dir noch viel glück bei deiner arbeit und das es bald funtz
     
  11. Agamemnon

    Agamemnon Forums Inventar

    Registriert seit:
    23. Juli 2002
    Beiträge:
    2.175
    Zustimmungen:
    1
    Ort:
    Zülpich, Deutschland
    Meld dich für das Ring-Treffen an!
    Ich belaber den Gerrit solange, bis der auch kommt, und dann kannst du dir den Prototyp in seinem Auto ansehen ;)
     
  12. haeger

    haeger Forums Fortgeschrittene(r)

    Registriert seit:
    28. Mai 2004
    Beiträge:
    314
    Zustimmungen:
    0
    mein xr2i ist noch nicht fertig der ist gerade beim lacker und dann muss ich noch den motor überholen und wieder alles zusammen bauen

    sah so aus als ich ihn gekauft habe
    [​IMG]
     
  13. Agamemnon

    Agamemnon Forums Inventar

    Registriert seit:
    23. Juli 2002
    Beiträge:
    2.175
    Zustimmungen:
    1
    Ort:
    Zülpich, Deutschland
    Und, Gerrit?
    Hast du schon mal erste Tests durchgeführt?
     
  14. TS
    Gerrit

    Gerrit Forums Elite

    Registriert seit:
    4. Februar 2003
    Beiträge:
    1.293
    Zustimmungen:
    0
    Ort:
    Braunschweig, Germany
    Mh, ich wollte eigentlich noch eine modifizierte Zeichenroutine einbauen, aber mir fällt nix ein.

    Werds vllt heute mal testen, und wenn nicht heute, dann nächste woche, da hab ich nämlich Urlaub :B:

    Gruss, Gerrit
     
  15. TS
    Gerrit

    Gerrit Forums Elite

    Registriert seit:
    4. Februar 2003
    Beiträge:
    1.293
    Zustimmungen:
    0
    Ort:
    Braunschweig, Germany
    Moin zusammen !

    Ich war heute - für meine begriffe - mal fleissig. Bzw WIR...

    Heute war der AndiMK4 bei mir und wir haben bei dem schönen Wetter erstmal eine 40km Radtour gemacht.

    Danach haben wir uns in meinen Fofi gesetzt und ein wenig an den Geschwindigkeitsroutinen rumgebastelt.

    Ergebnis:
    - bei höherer Geschwindigkeit ist eigentlich keine Glättung der Daten notwendig, d.h. man kann die ermittelte Geschwindigkeit sofort anzeigen.
    - es dauert 1,5sec, bis der Stillstand detektiert wird.
    - die Interruptlast wird bei hohen Geschwindigkeiten später zu hoch sein.
    - eine veränderte timingroutine könnte erst ab 2km/h anzeigen und würde 0,75 sec brauchen um den Stillstand zu detektieren.

    an alle, die mal nen bissel mathe machen wollen:

    Ich suche eine gescheite Möglichkeit, die Geschwindigkeit möglichst einfach und genau zu bestimmen und einen Stillstand schnell zu detektieren.

    ich habe:
    einen Zähler, der die Impulse zählt
    einen Timer, der in regelmässigen Abständen (beliebiges Intervall) den Zählerstand liefert und den Zähler auf 0 setzt.
    Geschwindigkeitsimpulse, die 4mal pro Radumdrehung (bei mir mit 155/70R13 : alle 42,xx cm) kommen.
    eine anzeigbare maximalgeschwindigkeit von 255km/h
    eine anzeigbare minimalgeschwindigkeit von 0 km/h

    wie lang muss das Timerintervall sein, um gute werte zu liefern ?

    Viel Spass

    Gruss, Gerrit
     
  16. Agamemnon

    Agamemnon Forums Inventar

    Registriert seit:
    23. Juli 2002
    Beiträge:
    2.175
    Zustimmungen:
    1
    Ort:
    Zülpich, Deutschland
    Rechnen wir jetzt mal durch, welches Intervall für genaue Geschwindigkeiten (auf 1 km/h) notwendig wäre:

    1 km/h = 1000 m/3600 s = 5/18 m/s

    Da alle 42cm = 42/100 m ein Impuls kommt, muss dies einberechnet werden.

    5/18 m/s / (42/100) m = 500/756 1/s = 125/189 Hz
    Das entsprich ungefähr 2/3 Hz.

    Heißt: Bei einer Geschwindigkeit von 1 km/h kommt alle 0,66 Sekunden ein Impuls.

    Wenn du also wirklich Geschwindigkeiten von 1 km/h anzeigen lassen willst, wäre dies das minimal mögliche Intervall.
    Wenn kein Impuls in dieser Zeit gezählt wurde, kannst du davon ausgehen, dass das Auto steht.

    Vorteil: Die Anzahl der gezählten Impulse entspricht genau der Geschwindigkeit
     
  17. TS
    Gerrit

    Gerrit Forums Elite

    Registriert seit:
    4. Februar 2003
    Beiträge:
    1.293
    Zustimmungen:
    0
    Ort:
    Braunschweig, Germany
    Moin !

    Ja, sowas hatte ich am ende auch raus.
    Aber ich hab die Nacht mal drüber geschlafen und festgestellt:

    Habich aber Problem, weil unterschiedliche Radgrössen.. !!!

    Sagen wir mal, ich fange erst bei 2km/h an, bei einem ähnlich niedrigen Timerintervall.

    Ich brauche aber auch noch eine Rechnung mit einer Variablen X, welche irgendwie mit der Reifengrösse zusammenhängt.

    Vorschläge ?

    Gruss, Gerrit
     
  18. Agamemnon

    Agamemnon Forums Inventar

    Registriert seit:
    23. Juli 2002
    Beiträge:
    2.175
    Zustimmungen:
    1
    Ort:
    Zülpich, Deutschland
    Boah Gerrit, Mathematik Klasse 8!

    Kannst du denn das Intervall flexibel machen?

    Wenn ja, sagen wir einfach mal, der Faktor entspricht grundsätzlich dem Radumfang.
    Bei dir: 171,9 cm.
    Machen wir der Einfachheit halber den Faktor in mm, also xy = 1719.

    Dann ist die Formel:

    Frequenz = 5/18 m/s * 4 * 1000 / xy m = 10000/(9 * xy) Hz

    Wenn du das ganze in Millisekunden haben willst:

    Intervall = (9 * xy)/10 ms

    Ergebnis wäre ca. 1,5 Sekunden, habe oben Frequenz mit Intervall verwechselt :oops:

    Vorteil dieser Lösung wäre, dass man nur die Impulse zählen müsste, und die Anzahl identisch mit der Geschwindigkeit ist.
    Du brauchst also keinen komplexen Algorithmus, der jede Zählung in km/h umrechnet.

    Du könntest aber beispielsweise Sommer- und Winterreifen vorprogrammieren, so dass man relativ einfach zwischen ihnen wechseln kann, ohne immer den Faktor einzugeben.


    Wenn du nur auf 2 km/h genau sein willst, halbiere das Intervall und multipliziere die Impulse mit 2.
     
  19. Maddin

    Maddin Forums Inventar Mitarbeiter Moderator

    Registriert seit:
    19. Mai 2002
    Beiträge:
    8.722
    Zustimmungen:
    0
    Ort:
    Frankfurt am Main, Germany
    Bei der ganzen theorie aber net die praxis vergessen. Der radumfang is nur ein ca. wert und weicht je nach hersteller und verschles ab, die angegebenen werte sind glaub mit 50% profil. Für den TÜV darf der tacho auch auf keinen fall weniger anzeigen. Auserdem hat man mit zunehmender geschwindigkeit auch einen schlupf, ab ca. 160 wird das merkbar. Bei 200km dreht das rad etwa 8kmh schneller als sich das auto bewegt.
     
  20. Agamemnon

    Agamemnon Forums Inventar

    Registriert seit:
    23. Juli 2002
    Beiträge:
    2.175
    Zustimmungen:
    1
    Ort:
    Zülpich, Deutschland
    Das ist klar.
    Du kannst net 100% genau messen. Aber irgendwovon musst du ja ausgehen.

    Wenn rundum 5mm Profil abgefahren werden, verringert sich der Umfang um 31,4 mm, weniger als 2%. Daher sollte der Radumfang auf neue Reifen berechnet werden, damit keinesfalls weniger als die tatsächliche Geschwindigkeit angezeigt wird. Je mehr Profil abgefahren wird, desto mehr wird bei gleicher Geschwindigkeit angezeigt.

    Und das mit dem Schlupf unterscheidet sich von Reifen zu Reifen (je nach Härte und Hersteller), da wird auch höchstens zuviel angezeigt.
    Außerdem ist da die Tachowelle, die jetzt drin ist, auch net genauer ;)