bestimmt kann mir jemand hier sagen was der folgende Code macht Ist ein Auszug aus der get_adc function im MS2 Extra Code.
Versuche grad mich bisschen reinzuarbeiten in die Programmierung
Nein, hast du nicht. Der Code ist teils in C, teils in Assembler. Alle wo der Compiler entweder Mist macht oder es zeitkritisch ist, wie die Interrupt-Handler, ist in ASM geschrieben. C++ kommt nirgends zum Einsatz, das hat im kleinen Embeddedbereich nix verloren und kommt erst auf groesseren Kisten a la ARM zum Einsatz die dann auch ein OS fahren.
Zum Code:
Hier wird der MAP-Wert berechnet. Der ADC liefert nur einen Wert von 0-1024 entsprechend 0-5V. Gemaess den Einstellungen in Megatune (Map0 und MapMax fuer die Druckwerte bei 0 und 5V) wird dann hier der aktuelle MAP-Wert (*10) errechnet.
ldd %1 -> lade flash4.mapmax in Register D
subd %2 -> subtrahiere flash4.map0 von Register D
ldy %3 -> lade den Wert vom AD-Wandler Channel 0 nach Register Y
emul -> multipliziere (y*d nehme ich mal an, Ergebnis in einen von beiden)
ldx #1023 -> lade den Wert 1023 in Register X
ediv -> teile (den Wert aus der vorherigen Multiplikation durch 1023)
tfr y,d -> aehm... transfer glaube, also y nach d kopieren
addd %2 -> addiere flash4.map0 auf Register D
: "=d"(outpc.map) -> am Ende des Blocks kopiere Register D noch outpc.map
: "m"(flash4.mapmax),"m"(flash4.map0)","m"(ATD0DR0) -> Deine %1-%3, "m" sagt das hier auf Speicher verwiesen wird
: "y", "x" -> benutzte Register, die der Compiler ggf. vor der Routine sichern muss da sie von dir ueberkritzelt werden
So hab grad bisschen Schwierigkeiten mit dem wheel decoder.
Gibt es jemanden hier der sich gut mit dem MS2Extra Code auskennt und mir evtl. per pn ein paar Fragen speziell zum Wheel decoder beantworten kann?
Würde z.B. gerne wissen wie das mit der time prediction für den Zündzeitpunkt genau funktioniert.
Wäre doch schön, wenn hier jeder Interessierte mitlesen könnte.
Gruß
Münchhausen
Vielen Dank für die Beachtung aller Sicherheitshinweise.
Fahrzeug: VW Typ3, 2L Typ4(GB), MS2 PCB3 ,Ansaugtrakt(Eigenbau), COPs mit EDIS, LC1 = R.I.P 2012
Mein Dank geht an: Kiesow GmbH Norderstedt.