AcelEnrichment mit negativen Werten
Re: AcelEnrichment mit negativen Werten
Heilige Scheisse!!!!!!!!!!!
mit den Gleichdruckvergasern war ich schon immer auf Kriegsfuss.
Ob jetzt im /8 oder in englischen Gehhilfen, immer scheisse!
Diese elende Fehlkonstruktion, ob jetzt SU oder Stromberg, oder wie die alle heissen.
Und jetzt alle Probleme dieser geistigen Blähung kombiniert mit Programmiersprachen,
die ich nur vom Hörensagen kenne.
Mannomann, MK!
Du machst es dir auch nicht leicht.
Die goldene Anstecknadel für Hartnäckigkeit ist dir sicher.
Viel Glück!
Kann leider nix kostruktives beitragen, ausser zu Flachschiebern zu raten.
mit den Gleichdruckvergasern war ich schon immer auf Kriegsfuss.
Ob jetzt im /8 oder in englischen Gehhilfen, immer scheisse!
Diese elende Fehlkonstruktion, ob jetzt SU oder Stromberg, oder wie die alle heissen.
Und jetzt alle Probleme dieser geistigen Blähung kombiniert mit Programmiersprachen,
die ich nur vom Hörensagen kenne.
Mannomann, MK!
Du machst es dir auch nicht leicht.
Die goldene Anstecknadel für Hartnäckigkeit ist dir sicher.
Viel Glück!
Kann leider nix kostruktives beitragen, ausser zu Flachschiebern zu raten.
Re: AcelEnrichment mit negativen Werten
Doch, soviel geht immer, aber es wir dich nicht freuen:
lda TPSACCEL //laedt TPSACCEL in den Akkumulator
tax //speichert den Akku Inhalt in Register x
lda #$64 ; accel is in 0.1ms units //laedt Speicheradresse in den Akku
mul //multiplizieren des Akku mit dem X-Register , weis aber nciht ob er es im akku oder im X-Register speichert
add tmp14 //addiert zum Akku tmp14 dazu
sta tmp20 //speichere den Akku nach tmp20
txa //lade Register X in den Akku
adc tmp13 //addiere mit Carry-bit tmp13 dazu
sta tmp19 //speicehere den Akku als temp19
clc //loesche das carrybit
lda tmp20 //lade temp20 in den akku
add tmp6 //addiere tmp6 dazu
sta tmp20 //speichere den akku als tmp20
lda tmp5 //lade tmp5 in den Akku
adc tmp19 //addiere tmep 19 dazu
sta tmp19 //speichere das ganze in temp19
Also zusammengefasst:
TPSACCEL * $64 + tmp14 -> temp20
TPSACCEL + tmp13 ->temp19
dann
temp20+temp6 ->temp20
temp5+temp19 ->temp19
Scheint so als ob die Zeile die du willst nciht dabei ist, oder ich weis nciht was das sein soll: tmp13:tmp14
Teilen ?
Ich weis eben nicht was in temp5 und temp6 steht, da fehlt noch Code.
edit: Gelichdruckvergaser sind gut ! Sie laufen ein ganzes Stueck sparsamer und sprechen sanfter an.
Nur das anpassen der Nadel ist nicht so top, weil man weis ja nich so genau wann die Nadel wo steht.
lda TPSACCEL //laedt TPSACCEL in den Akkumulator
tax //speichert den Akku Inhalt in Register x
lda #$64 ; accel is in 0.1ms units //laedt Speicheradresse in den Akku
mul //multiplizieren des Akku mit dem X-Register , weis aber nciht ob er es im akku oder im X-Register speichert
add tmp14 //addiert zum Akku tmp14 dazu
sta tmp20 //speichere den Akku nach tmp20
txa //lade Register X in den Akku
adc tmp13 //addiere mit Carry-bit tmp13 dazu
sta tmp19 //speicehere den Akku als temp19
clc //loesche das carrybit
lda tmp20 //lade temp20 in den akku
add tmp6 //addiere tmp6 dazu
sta tmp20 //speichere den akku als tmp20
lda tmp5 //lade tmp5 in den Akku
adc tmp19 //addiere tmep 19 dazu
sta tmp19 //speichere das ganze in temp19
Also zusammengefasst:
TPSACCEL * $64 + tmp14 -> temp20
TPSACCEL + tmp13 ->temp19
dann
temp20+temp6 ->temp20
temp5+temp19 ->temp19
Scheint so als ob die Zeile die du willst nciht dabei ist, oder ich weis nciht was das sein soll: tmp13:tmp14
Teilen ?
Ich weis eben nicht was in temp5 und temp6 steht, da fehlt noch Code.
edit: Gelichdruckvergaser sind gut ! Sie laufen ein ganzes Stueck sparsamer und sprechen sanfter an.
Nur das anpassen der Nadel ist nicht so top, weil man weis ja nich so genau wann die Nadel wo steht.
-Kein Auto mehr mit MS1 auf der Strasse, alle abgemeldet in der Garage.
Re: AcelEnrichment mit negativen Werten
Dann brauche ich doch bloß folgendes
lda TPSACCEL //laedt TPSACCEL in den Akkumulator
tax //speichert den Akku Inhalt in Register x
????? //laedt die Zahl -1 in den Akku
mul //multiplizieren des Akku mit dem X-Register ...
tax // ... und speichert es in Register x
Und dann einfach weiter mit dem "alten" Code ....
Wäre es ev. alternativ möglich statt mit -1 malzunehmen das sign-Flag manuell zu setzen ?
SF 07 Sign =1 wenn das höchstwertige Bit 1 ist und damit der Wert als negativ interpretiert wird, wenn sie Signet-Type ist.
Alternativ hätte ich immer noch im Kopf die Variable (im .h-File definiert ?), die den aus den teabins ausgelesenen Wert hält, von signed zu unsigned zu ändern und die negaiven Werte dann über MegaTune zu übergeben.
Signed und Unsigned
Signed bedeutet das die Zahl ein Negativ-Zeichen enthalten kann, dafür wird das letze Bit der Zahl verwendet, das anzeigt ob die Zahl positiv oder 0 ist (=0) oder negativ (=1). Dem Zahlenwert geht also ein Bit verloren.
Unsigned Werte verwenden alle Bits für den Zahlenwert und können deshalb nur 0 und Positive Werte abbilden.
Der Prozessor selbst unterscheiden nicht zwischen Signed- und Unsigned-Werten, es werden die gleichen Register verwendet. Für Addition und Subtraktion existieren noch nicht einmal besondere Funktionen, da sie nicht zwangsläufig notwendig sind wie bei Multiplikation und Division. Der Programmierer oder der Compiler ist dafür verantwortlich die Funktionen gemäß der Deklarationen der Variablen korrekt anzuwenden. zB. wird für eine Überlaufsprüfung bei einem Signed-Typ das Overflow-Flag OF geprüft, bei einem Unsigned-Typ das Carry-Flag CF.
Nur dafür fehlt mir halt die Beispiel-Syntax ...
PS: Lt.
http://www-ivs.cs.uni-magdeburg.de/bs/l ... bler.shtml
Wird das Ergebnis von sum im Akku abgelegt.
Oder hier: http://runtime-basic.net/Assembler:Schnell-Kurs
A? Akkumulator Ist für mathematische und logische Operationen, am besten. Multiplikation/Division ist auf A? angewiesen da das Resultat dort gespeichert wird
lda TPSACCEL //laedt TPSACCEL in den Akkumulator
tax //speichert den Akku Inhalt in Register x
????? //laedt die Zahl -1 in den Akku
mul //multiplizieren des Akku mit dem X-Register ...
tax // ... und speichert es in Register x
Und dann einfach weiter mit dem "alten" Code ....
Wäre es ev. alternativ möglich statt mit -1 malzunehmen das sign-Flag manuell zu setzen ?
SF 07 Sign =1 wenn das höchstwertige Bit 1 ist und damit der Wert als negativ interpretiert wird, wenn sie Signet-Type ist.
Alternativ hätte ich immer noch im Kopf die Variable (im .h-File definiert ?), die den aus den teabins ausgelesenen Wert hält, von signed zu unsigned zu ändern und die negaiven Werte dann über MegaTune zu übergeben.
Signed und Unsigned
Signed bedeutet das die Zahl ein Negativ-Zeichen enthalten kann, dafür wird das letze Bit der Zahl verwendet, das anzeigt ob die Zahl positiv oder 0 ist (=0) oder negativ (=1). Dem Zahlenwert geht also ein Bit verloren.
Unsigned Werte verwenden alle Bits für den Zahlenwert und können deshalb nur 0 und Positive Werte abbilden.
Der Prozessor selbst unterscheiden nicht zwischen Signed- und Unsigned-Werten, es werden die gleichen Register verwendet. Für Addition und Subtraktion existieren noch nicht einmal besondere Funktionen, da sie nicht zwangsläufig notwendig sind wie bei Multiplikation und Division. Der Programmierer oder der Compiler ist dafür verantwortlich die Funktionen gemäß der Deklarationen der Variablen korrekt anzuwenden. zB. wird für eine Überlaufsprüfung bei einem Signed-Typ das Overflow-Flag OF geprüft, bei einem Unsigned-Typ das Carry-Flag CF.
Nur dafür fehlt mir halt die Beispiel-Syntax ...
PS: Lt.
http://www-ivs.cs.uni-magdeburg.de/bs/l ... bler.shtml
Wird das Ergebnis von sum im Akku abgelegt.
Oder hier: http://runtime-basic.net/Assembler:Schnell-Kurs
A? Akkumulator Ist für mathematische und logische Operationen, am besten. Multiplikation/Division ist auf A? angewiesen da das Resultat dort gespeichert wird
Ciao
Martin
----------------
RD350YPVS, Microsquirt, AlphaN
Martin
----------------
RD350YPVS, Microsquirt, AlphaN
Re: AcelEnrichment mit negativen Werten
Wie sagt der Engländer:
You and your f... rocket-science.
Viel Spass dabei.
You and your f... rocket-science.
Viel Spass dabei.
Re: AcelEnrichment mit negativen Werten
Im Assembler laeuft eigentlich alles ueber den Akku,
es liegt daran wie der Chip aufgebaut, der Akku ist sozusagen der Schreibtisch.
Falls etwas nicht auf den Schreibtisch passt wird neben dran abglegt (Sprich in Register X),
aber gearbeitet wird immer mit dem Schreibtisch (also mit dem Akku).
Das mit dem invertieren wuerde ich mal huebsch bleiben lassen, denn da aenderst du den Typ der Variable.
In C versuche ich immer alle Varaliaben als unsigned zu definieren, wegen dem hoehren Adressbreich,
das machen die gerade bei Asm sicher auch. Und nach dem zu nicht weist wie gross die Zahl ist die drin steht..
lieber Finger weg lassen (ein bit weniger halbiert den Adressbereich, also bei 8 bit von 0-256 ist dann -128-128).
Du musst eigentlich die Reihenfolge umdrehen.
Also anstelle so:
lda TPSACCEL //laedt TPSACCEL in den Akkumulator
tax //speichert den Akku Inhalt in Register x
lda #$64 ; accel is in 0.1ms units //laedt Speicheradresse in den Akku
mul //multiplizieren des Akku mit dem X-Register
add tmp14 //addiert zum Akku tmp14 dazu
sta tmp20 //speichere den Akku nach tmp20
eher so:
lda TPSACCEL //laedt TPSACCEL in den Akkumulator
tax //speichert den Akku Inhalt in Register x
lda #$64 ; accel is in 0.1ms units //laedt Speicheradresse in den Akku
mul //multiplizieren des Akku mit dem X-Register
txa //Akkuinhalt nach in X speichern
lda tmp14 //tmp14 in den Akku laden
sub //X wird abgezogen vom Akku (ohne Gewaehr das er X nimmt, aber ich denke das er das tut)
sta //Akku speichern nach tmp20
falls du es doch versuchen willst mit deiner Metode:
da TPSACCEL //laedt TPSACCEL in den Akkumulator
tax //speichert den Akku Inhalt in Register x
lda #$64 ; accel is in 0.1ms units //laedt Speicheradresse in den Akku
mul //multiplizieren des Akku mit dem X-Register
cma //Akkuinhalt wird negiert
add tmp14 //addiert zum Akku tmp14 dazu
sta tmp20 //speichere den Akku nach tmp20
edit: Ah, eigentlich ist es egal welche du immst, die CMA-Methode ist weniger Aufwand und beide werden katastrophal fehlschlagen sobald TPSACCEL * $64 groesser als tmp14 ist (weil dann ist das Ergebniss negativ, Bufferunderum)
edit2: Schade, der MC68HC908 unterstuetzt den Befehl CMA nicht...
Aber hier auf Seite 94 gibts alle was er kann, musst dir "nur" noch die Reihenfolge zusammenstoepseln:
http://www.freescale.com/files/microcon ... 08GP32.pdf
edit3000: Ah, negieren geht doch mit NEGA. Aber emp5:tmp6, das verwirrt mich noch immer. Was so die Verkettung ?
es liegt daran wie der Chip aufgebaut, der Akku ist sozusagen der Schreibtisch.
Falls etwas nicht auf den Schreibtisch passt wird neben dran abglegt (Sprich in Register X),
aber gearbeitet wird immer mit dem Schreibtisch (also mit dem Akku).
Das mit dem invertieren wuerde ich mal huebsch bleiben lassen, denn da aenderst du den Typ der Variable.
In C versuche ich immer alle Varaliaben als unsigned zu definieren, wegen dem hoehren Adressbreich,
das machen die gerade bei Asm sicher auch. Und nach dem zu nicht weist wie gross die Zahl ist die drin steht..
lieber Finger weg lassen (ein bit weniger halbiert den Adressbereich, also bei 8 bit von 0-256 ist dann -128-128).
Du musst eigentlich die Reihenfolge umdrehen.
Also anstelle so:
lda TPSACCEL //laedt TPSACCEL in den Akkumulator
tax //speichert den Akku Inhalt in Register x
lda #$64 ; accel is in 0.1ms units //laedt Speicheradresse in den Akku
mul //multiplizieren des Akku mit dem X-Register
add tmp14 //addiert zum Akku tmp14 dazu
sta tmp20 //speichere den Akku nach tmp20
eher so:
lda TPSACCEL //laedt TPSACCEL in den Akkumulator
tax //speichert den Akku Inhalt in Register x
lda #$64 ; accel is in 0.1ms units //laedt Speicheradresse in den Akku
mul //multiplizieren des Akku mit dem X-Register
txa //Akkuinhalt nach in X speichern
lda tmp14 //tmp14 in den Akku laden
sub //X wird abgezogen vom Akku (ohne Gewaehr das er X nimmt, aber ich denke das er das tut)
sta //Akku speichern nach tmp20
falls du es doch versuchen willst mit deiner Metode:
da TPSACCEL //laedt TPSACCEL in den Akkumulator
tax //speichert den Akku Inhalt in Register x
lda #$64 ; accel is in 0.1ms units //laedt Speicheradresse in den Akku
mul //multiplizieren des Akku mit dem X-Register
cma //Akkuinhalt wird negiert
add tmp14 //addiert zum Akku tmp14 dazu
sta tmp20 //speichere den Akku nach tmp20
edit: Ah, eigentlich ist es egal welche du immst, die CMA-Methode ist weniger Aufwand und beide werden katastrophal fehlschlagen sobald TPSACCEL * $64 groesser als tmp14 ist (weil dann ist das Ergebniss negativ, Bufferunderum)
edit2: Schade, der MC68HC908 unterstuetzt den Befehl CMA nicht...
Aber hier auf Seite 94 gibts alle was er kann, musst dir "nur" noch die Reihenfolge zusammenstoepseln:
http://www.freescale.com/files/microcon ... 08GP32.pdf
edit3000: Ah, negieren geht doch mit NEGA. Aber emp5:tmp6, das verwirrt mich noch immer. Was so die Verkettung ?
-Kein Auto mehr mit MS1 auf der Strasse, alle abgemeldet in der Garage.
Re: AcelEnrichment mit negativen Werten
Denke das mit dem negieren klingt gut.
Doofe Frage am Rande: Was kann max. passieren, wenn die CPU am Stim abschmiert ? Kann ich mir den Boot-Bereich so zerballern, so dass ich den "alten & lauffähigen" Code nicht mehr via bootloader drauf bekomme ?
Weil wenn's "harmlos" ist, dann bin ich ein Anhänger von Try & Error![Wink ;-)](./images/smilies/icon_wink.gif)
Doofe Frage am Rande: Was kann max. passieren, wenn die CPU am Stim abschmiert ? Kann ich mir den Boot-Bereich so zerballern, so dass ich den "alten & lauffähigen" Code nicht mehr via bootloader drauf bekomme ?
Weil wenn's "harmlos" ist, dann bin ich ein Anhänger von Try & Error
![Wink ;-)](./images/smilies/icon_wink.gif)
Ciao
Martin
----------------
RD350YPVS, Microsquirt, AlphaN
Martin
----------------
RD350YPVS, Microsquirt, AlphaN
Re: AcelEnrichment mit negativen Werten
Nein, der Boot-Bereich ist sehr sicher, da passiert nix.
Lustig wird das dann nur wenn du z.B. kleine TPSACCL-Werte hast
(also nicht ordentlich am Kabel gezogen hast) und meinst das geht,
aber bei grossen Aenderungen aber Mist berechnet wird.
Also so als Beispiel was da passieren kann.
Die Chancen sind hoch das es funktioniert, aber nicht so wie du willst.
Lustig wird das dann nur wenn du z.B. kleine TPSACCL-Werte hast
(also nicht ordentlich am Kabel gezogen hast) und meinst das geht,
aber bei grossen Aenderungen aber Mist berechnet wird.
Also so als Beispiel was da passieren kann.
Die Chancen sind hoch das es funktioniert, aber nicht so wie du willst.
-Kein Auto mehr mit MS1 auf der Strasse, alle abgemeldet in der Garage.
Re: AcelEnrichment mit negativen Werten
Hallo,
ich hätte da eine etwas verrückte Idee aber wenn du "ein Anhänger von Try & Error" bist kannst es ja mal probieren:
Drosselklappenpoti andersrum anschließen und "Decel Fuel Amount" nutzen
mehr fällt mir zu dem Thema auch nicht ein, zumindest nichts was ich schreiben würde.
Gruß
Tobias
ich hätte da eine etwas verrückte Idee aber wenn du "ein Anhänger von Try & Error" bist kannst es ja mal probieren:
Drosselklappenpoti andersrum anschließen und "Decel Fuel Amount" nutzen
![Wink :wink:](./images/smilies/icon_wink.gif)
mehr fällt mir zu dem Thema auch nicht ein, zumindest nichts was ich schreiben würde.
Gruß
Tobias
Alle Angaben ohne Gewähr und Absolutheitsanspruch!
Re: AcelEnrichment mit negativen Werten
Hehe, netter Tipp.opelfreak hat geschrieben:Hallo,
ich hätte da eine etwas verrückte Idee aber wenn du "ein Anhänger von Try & Error" bist kannst es ja mal probieren:
Drosselklappenpoti andersrum anschließen und "Decel Fuel Amount" nutzen![]()
mehr fällt mir zu dem Thema auch nicht ein, zumindest nichts was ich schreiben würde.
Gruß
Tobias
Geht sogar noch einfacher in der Software: TPS Kalibrierung absichtlich falschrum machen.
Leider muss in beiden Faellen aber auch das Kennfeld komplet gedreht werden.
-Kein Auto mehr mit MS1 auf der Strasse, alle abgemeldet in der Garage.
Re: AcelEnrichment mit negativen Werten
Okay dann dreht der Eimer hoch. Was ist nun unter Volllast oder ist das da genauso?!
Fiat Uno Racing, K16, UMC1, Gslender 3.2.1, LC-1, 355cc, Bluetooth
Re: AcelEnrichment mit negativen Werten
Heute hatt ich noch eine geniale Idee.
1) Tabelle im MT enthält statt der zu addierenden/subtrahierenden PW's
TPSdot vs. AccelEnrich%
2) Code wird geändert
von PW = PW + AccelEnrichPW
auf PW = PW * (AccelEnrich% / 100)
Schwupp sind alle Probleme mit den doofen negativen Zahlen weg.
Werte > 100 = Beschleunigungsanreicherung wie gehabt
Werte < 100 = Beschleunigungsabmagerung wie von mir gewünscht
Mal sehen ob ich das selber hin bekomme; wenn nicht frag ich nochmal konkret ....
1) Tabelle im MT enthält statt der zu addierenden/subtrahierenden PW's
TPSdot vs. AccelEnrich%
2) Code wird geändert
von PW = PW + AccelEnrichPW
auf PW = PW * (AccelEnrich% / 100)
Schwupp sind alle Probleme mit den doofen negativen Zahlen weg.
Werte > 100 = Beschleunigungsanreicherung wie gehabt
Werte < 100 = Beschleunigungsabmagerung wie von mir gewünscht
Mal sehen ob ich das selber hin bekomme; wenn nicht frag ich nochmal konkret ....
Ciao
Martin
----------------
RD350YPVS, Microsquirt, AlphaN
Martin
----------------
RD350YPVS, Microsquirt, AlphaN
-
- Beiträge: 173
- Registriert: Sa Mai 14, 2005 8:47 pm
- Wohnort: ab 1.1.2008 wieder in Düsseldorf
- Kontaktdaten:
Re: AcelEnrichment mit negativen Werten
Hallo Martin
Warum verzögerst du nicht einfach Die ausgangsspannung vom Poti ( TPS )
Schalte einen Elko parallel zum Ausgang ( vom Poti gegen Masse ). Z.B. 100 myf. So kommst du mit nicht so schnell in den fetten Bereich. Ein Versuch ist es wert weil es nur wenige sekunden dauert es zu probieren.
Gruss Armin
Warum verzögerst du nicht einfach Die ausgangsspannung vom Poti ( TPS )
Schalte einen Elko parallel zum Ausgang ( vom Poti gegen Masse ). Z.B. 100 myf. So kommst du mit nicht so schnell in den fetten Bereich. Ein Versuch ist es wert weil es nur wenige sekunden dauert es zu probieren.
Gruss Armin
MS1/Extra Format hr_10
Motorrad Suzuki RG 500 ( 500ccm Zweitakter )
LC1
Motorrad Suzuki RG 500 ( 500ccm Zweitakter )
LC1
Re: AcelEnrichment mit negativen Werten
Der Tip mit dem Kondesator und etwas Lesen hat mich auf was gebracht.
Und zwar hat die MS II die Lag-Faktoren:
The following inputs can have lag factors applied to them:
MAP Averaging Lag Factor,
RPM Averaging Lag Factor,
TPS Averaging Lag Factor,
Lambda Averaging Lag Factor,
CLT/MAT/Batt Averaging Lag Factor,
Knock Averaging Lag Factor.
Wenn man sich mal die Wirkungsweise anschaut, dann ist das genau was ich gesucht habe. Es verzögert die Weitergabe" des TPS Wertes an die CPU. Wenn man z.B. einen Sprung am Gas macht, dann sind die Verläufe die die CPU sieht wie angehängt. Die Sprunganwort ist so ziemlich wie mit einem Kondensator ...
Und zwar hat die MS II die Lag-Faktoren:
The following inputs can have lag factors applied to them:
MAP Averaging Lag Factor,
RPM Averaging Lag Factor,
TPS Averaging Lag Factor,
Lambda Averaging Lag Factor,
CLT/MAT/Batt Averaging Lag Factor,
Knock Averaging Lag Factor.
Wenn man sich mal die Wirkungsweise anschaut, dann ist das genau was ich gesucht habe. Es verzögert die Weitergabe" des TPS Wertes an die CPU. Wenn man z.B. einen Sprung am Gas macht, dann sind die Verläufe die die CPU sieht wie angehängt. Die Sprunganwort ist so ziemlich wie mit einem Kondensator ...
Ciao
Martin
----------------
RD350YPVS, Microsquirt, AlphaN
Martin
----------------
RD350YPVS, Microsquirt, AlphaN