ASM MC68332 förstå uträkning

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
jocke4u
Inlägg: 10
Blev medlem: 12 juni 2013, 19:12:38

ASM MC68332 förstå uträkning

Inlägg av jocke4u »

Hej,

Till min bil så har jag SAAB's Trionic 5 styrsystem och eftersom bilen inte är en SAAB så behöver jag justera vissa värden mha T5Suite. Detta krävs bl.a. för att räkna ut vilken växel som man kör på och därigenom korrigeras laddtryck osv.

ECU'n skall ha bl.a. MC68332 Main micro controller

Det finns några parametrar som är av intresse för detta (tror/hoppas jag har fått med alla)

Pulses_per_rev = antal pulser som skickas till Trionic per hjulvarv (fast konfigurerat enligt nedan)
Gear_st = total utväxling (växellåda + slutväxel, fast konfigurerat enligt nedan), 5 olika värden på de olika växlarna
Gear_ratio_delta = Ett "delta-värde" som beskriver något som jag inte förstår vad och som jag vill och hoppas kunna förstå med er hjälp :) (5 fasta värden som mappar till de 5 växlarna)
Rpm = varvtalet på motorn (dynamiskt)
Gear = tror jag är variabeln heter som som jag undrar hur den räknas ut (dvs resultatet)

Någon vänlig själ här som kan hjälpa mig att tyda assembler-koden (jag programmerar men inte så hårdvarunära :))

Pulses_per_rev = Gear_st =

Kod: Markera allt

2,8
3,6
4,5
7,1
13,7
Gear_ratio_delta =

Kod: Markera allt

3
3
4
12
24
Från rad 559 så finns detta: (fullständig kod här https://dl.dropboxusercontent.com/u/193 ... 660833.asm)

Kod: Markera allt

0x000431BA	CLR.L	D1
0x000431BC	MOVE.B	(RAM_Gear_ratio_delta!),D1
0x000431C2	MOVE.W	(RAM_Gear_st!),D0
0x000431C8	SUB.W	D1,D0
0x000431CA	CMP.W	(A2),D0
0x000431CC	BCC	LBL_00043226
0x000431D0	CLR.L	D1
0x000431D2	MOVE.B	(RAM_Gear_ratio_delta!),D1
0x000431D8	ADD.W	(RAM_Gear_st!),D1
0x000431DE	CMP.W	(A2),D1
0x000431E0	BLS	LBL_00043226
0x000431E4	JSR	(Function_00044398).L
0x000431EA	CMPI.B	#01,D0
0x000431EE	BNE	LBL_0004321A
0x000431F2	MOVE.B	(00006645).L,D1
0x000431F8	ANDI.B	#40,D1
0x000431FC	BNE	LBL_0004321A
0x00043200	MOVE.B	(00006648).L,D1
0x00043206	ANDI.B	#10,D1
0x0004320A	BNE	LBL_0004321A
0x0004320E	MOVE.B	#52,(RAM_Gear)
0x00043216	BRA	LBL_000432F8
LBL_0004321A:
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: ASM MC68332 förstå uträkning

Inlägg av blueint »

Verkar som MC68332 tillhör Freescale 683xx familjen. Vilket innebär 68EC00 eller 68020 liknande assembler. Kort sagt i stort sett m68k rakt av. Finns en del hintar på Motorola 68000#Instruction set details

Kod: Markera allt

0x000431BA   CLR.L   D1
Sätt D1 som long (32-bit) till noll.

Kod: Markera allt

0x000431BC   MOVE.B   (RAM_Gear_ratio_delta!),D1
Kopiera RAM_Gear_ratio_delta! som byte till register D1.

Kod: Markera allt

0x000431C2   MOVE.W   (RAM_Gear_st!),D0
Kopiera RAM_Gear_st! som word (16-bit) till register D0.

Kod: Markera allt

0x000431C8   SUB.W   D1,D0
Subtrahera D1 från D0 som word.

Kod: Markera allt

0x000431CA   CMP.W   (A2),D0
Jämför det värde som A2 pekar med D0 som word.

Kod: Markera allt

0x000431CC   BCC   LBL_00043226
Hoppar beroende på om [ur=http://68k.hax.com/Bcc]flagga[/url] är satt.

Kod: Markera allt

0x000431D8   ADD.W   (RAM_Gear_st!),D1
Lägger RAM_Gear_st! till D1. Eventuellt med RAM_Gear_st! som pekare, viktig skillnad! (??)

Kod: Markera allt

0x000431E0   BLS   LBL_00043226
Hoppa om jämförelsen är lägre eller lika med.

Kod: Markera allt

0x000431E4   JSR   (Function_00044398).L
Anropa funktionen "Function_00044398".

Kod: Markera allt

0x000431EA   CMPI.B   #01,D0
Jämför D0 som byte med värdet "1".

Kod: Markera allt

0x000431EE   BNE   LBL_0004321A
Hoppa om det skiljer sig till LBL_0004321A.

Kod: Markera allt

0x000431F2   MOVE.B   (00006645).L,D1

Kod: Markera allt

0x000431F8   ANDI.B   #40,D1
Ställ bitarna som 0x40 som representerar i D1 som byte till "0". Talbasen är oklar!

Kod: Markera allt

0x00043200   MOVE.B   (00006648).L,D1
Antingen (00006648) indirekt eller som värde används som long kopieras till D1.

Kod: Markera allt

0x0004320E   MOVE.B   #52,(RAM_Gear)
Flytta värdet 0x52 (eller decimalt?) till (RAM_Gear), förmodligen indirekt pekare.

Kod: Markera allt

0x00043216   BRA   LBL_000432F8
Hoppa till position LBL_000432F8.

Hoppas detta hjälper dig att av sammanhanget klura ut resterande.
jocke4u
Inlägg: 10
Blev medlem: 12 juni 2013, 19:12:38

Re: ASM MC68332 förstå uträkning

Inlägg av jocke4u »

Tack för input/förklaringar skall nysta vidare i detta.
Skriv svar