Page 43 of 55 FirstFirst ... 33383940414243444546474853 ... LastLast
Results 631 to 645 of 825

Thread: DIY LTCC or similar system for LT1s

  1. #631
    Fuel Injected! spfautsch's Avatar
    Join Date
    Apr 2015
    Location
    Montgomery City, MO
    Age
    53
    Posts
    883
    Here's a few fixes.

    Code:
    0.9.35 - 5/13/2020
    
    Add adaptive dwell queuing
    
    Increase dwell mutiplier for cranking and idle areas
    
    Fix unchecked bounds write to sequencer array that was causing all sorts of odd problems
    
    0.9.34 - 5/8/2020
    
    Fix 0.5s log semaphore handling
    
    Fix baseDwell initialization to get dwell from coldest temp @ 12v
    The adaptive queuing might benefit from some fine-tuning of the thresholds, but it resolves the race condition that was causing misses around 2000 rpm and smoothes out the transition to overlapped dwell all the way to as fast as the PCM can control the engine (approx 7300 rpm). The maximum dwell overlap is picked out during compile time based on what dwell table / coil the user selects.

    In the process of troubleshooting the adaptive queuing (which I wanted to add caused me to encounter a blown IGN fuse at 2k rpm in 2nd) I found a problem with warm starts where spark advance jumps from ~7 degrees to ~24 instantaneously, causing a miss due to a lower dwell requirement on the previous cylinder. This mainly poses a problem with the LT4 cranking spark advance table I've been using, so I'm going to go back to the stock '95 y-body calibration and test.

    Another thing I've run into that will need solving - eeprom cars and the cranking spark advance table (if they use one). I took a look at the $DA2 mask for the 16159278 ecu, and the info in the .xdf from the bins and definition files thread [here] is incredibly sparse. If anyone has better info on these eeprom based LT-1 masks I'd really appreciate some assistance. Otherwise consider this setup incompatible with the pre-94 LT-1s.

    I'll report back in a couple days when I have a chance for an extended road test.
    Attached Files Attached Files

  2. #632
    Fuel Injected!
    Join Date
    Jul 2019
    Location
    Orange, CA
    Posts
    757
    Where is the cranking spark advance on the '94-'95? I want to be sure I know what I'm looking at so that when I go hunting for the same thing in $DA2 I can be sure that that's right. I figure it can't be any harder than when I was locating knock detection for early 90s Nissan cars by sifting through their BIN files and comparing between engines.
    1990 Corvette (Manual)
    1994 Corvette (Automatic)
    1995 Corvette (Manual)

  3. #633
    LT1 specialist steveo's Avatar
    Join Date
    Aug 2013
    Posts
    4,040
    i still want to build this thing, i have your bag o' parts sitting in my 'to-do' pile (although i did steal a capacitor at one point to help fix a friend's battery charger, i think i wrote down its specs). what changes should i make since you sent it to me all those months ago?

  4. #634
    Fuel Injected! spfautsch's Avatar
    Join Date
    Apr 2015
    Location
    Montgomery City, MO
    Age
    53
    Posts
    883
    Quote Originally Posted by NomakeWan View Post
    Where is the cranking spark advance on the '94-'95?
    I've been waiting my whole life to say RTFM because it's mentioned in the README and the source... but in the spirit of cooperation, 0x12057. In the .xdf I'm using it's under:

    Air Fuel Metering > Startup AFR > 12075 Crank Spark Advance vs. Coolant Temp

    Quote Originally Posted by NomakeWan View Post
    I want to be sure I know what I'm looking at so that when I go hunting for the same thing in $DA2 I can be sure that that's right. I figure it can't be any harder than when I was locating knock detection for early 90s Nissan cars by sifting through their BIN files and comparing between engines.
    Good luck. I've paid my penance over the last two weeks, having to chase down a memory corruption problem (albeit self-created) by way of dumping the assembly and figuring out what global variables were being stored near the ectTblNo variable. I was thrilled to be able to dig through logs and confirm "the smoking gun" after the fact, but it kicked my ass for the better part of a week.

    Quote Originally Posted by steveo View Post
    i still want to build this thing, i have your bag o' parts sitting in my 'to-do' pile... what changes should i make since you sent it to me all those months ago?
    Just the addition of a 0.1uf decoupling capacitor on the spare IN1 analog input that was "repurposed" for ECT. If you want, I'll send you another kit including all the caps you're missing. I have 40+ kits and and another 35 circuit boards after that.

  5. #635
    Fuel Injected!
    Join Date
    Jul 2019
    Location
    Orange, CA
    Posts
    757
    Quote Originally Posted by spfautsch View Post
    I've been waiting my whole life to say RTFM because it's mentioned in the README and the source... but in the spirit of cooperation, 0x12057. In the .xdf I'm using it's under:

    Air Fuel Metering > Startup AFR > 12075 Crank Spark Advance vs. Coolant Temp
    Sorry, hadn't thought to look at the DIY-LTCC readme, I was looking at my TunerPro. And the fact that the SPARK ADVANCE was listed in a category for AIR FUEL METERING is exactly why I couldn't find it. I appreciate the spoon-feed, and hopefully I'll be able to have an answer for you soon. :P

    EDIT: Also your post and the readme have a typo. It's most certainly at 12075, not 12057. ;)
    Last edited by NomakeWan; 05-17-2020 at 08:48 AM.
    1990 Corvette (Manual)
    1994 Corvette (Automatic)
    1995 Corvette (Manual)

  6. #636
    Fuel Injected!
    Join Date
    Jul 2019
    Location
    Orange, CA
    Posts
    757
    Okay, I think I've got it. It was really confusing since the disassemblies of both $EE and $DA3 are really...not...great. $EE, for example, lists the values for Crank Spark Advance VS Coolant Temp in the middle of the table for Minimum Spark Advance VS RPM. That was a lot of fun. And the disassembly for $DA3 makes assumptions about commands and doesn't actually display the hex values of those commands, making it very difficult to compare against the $EE disassembly which did include the raw hex values before they were interpreted by the disassembler. Still, it's good to start with a structure that makes a modicum of sense and work backwards. So I started with the $EE Crank Spark Advance and compared where it was stored versus the main spark tables. This is because we do not know where the crank spark table is in $DA2/$DA3, but we do know where the main spark tables are. There's no guarantee it'll be the same--but it's a good bet there'll be a ton of similarities seeing as we're still dealing with the 68HC11 and the same LT1 engine, so it's unlikely GM would completely reinvent the wheel.

    In $EE, the Crank Spark Advance table is right before the main spark advance table. So since we know where the main spark advance is in $DA3, I went to it in my hex editor and looked at it. The table is incredibly similar to $EE's table, including the 00 00 10 10 bias values that directly precede it. However, the data before that bias value doesn't look like cranking spark advance. They're too high. If we scroll a little earlier, however, we see values that do make sense as cranking spark advance. The bias values are at 0x00A0, the main spark table is at 0x00A4, and 0x0078 we see sane values. Okay. So now that we have a guess, time to do a sanity check and see if the actual engine operation code supports pulling from this address.

    In $EE, the code that operates on the Crank Spark Advance table looks like this:

    Code:
    3789    B6 01 93        @34    ldaA    l_0193_CoolTmp_fltrd_$f0_max_$e0
    378C    CE 26 91            ldX    #$2691 (Prime PW vs CoolTmp)
    378F    BD 78 12            call    l_7812_lkup2d_nooff_16spc
    3792    F6 01 8F            ldaB    L018F
    3795    3D                  mul    
    3796    05                  lslD    
    3797    24 02               bcc    @35
    3799    86 FF               ldaA    #$FF
    379B    CE 26 80        @35    ldX    #$2680 (Base BPW For Startup)
    379E    BD 77 81            call    l_7781_A*X->D_8x16_Mult_sub
    37A1    1A 83 7D F0     @36    cmpD    #$7DF0
    37A5    23 03               bls    @37
    37A7    CC 7D F0            ldD    #$7DF0
    37AA    FD 01 A5        @37    stD    L01A5
    37AD    B6 01 D9            ldaA    l_01d9_fts_CoolTmp_fltrd_$f0
    37B0    CE 20 75            ldX    #$2075 (Crank Spark Advance vs CoolTmp)
    37B3    BD 78 12            call    l_7812_lkup2d_nooff_16spc
    37B6    B7 01 4B            staA    L014B
    ...
    Okay, so next we dig into the disassembly of $DA3 and see if we can find LDX #$0078 anywhere. And...we can't. This actually drove me nuts for an hour or so until I ate dinner and realized that I'd been reading the code wrong. The explanation was in the disassmbly notes: PROM tables start at 0x8000. So add an '8' at the start, and search again for LDX #$8078. Bam, instantly found. And what does this section look like?

    Code:
    A1A3 : LDAA  $01AC            Load A with $01AC            | A = M[$01AC]            | (byte) 0x01A9 limited to 0xD0
    A1A6 : LDX   #$8029            Load X with 8029            | X = 8029
    A1A9 : JSR   $FC14            Jump to subroutine FC14            | gosub FC14
    A1AC : SUBA  $8028            Sub A from $8028            | A = A - M[$8028]
    A1AF : STAA  $0108            Store A to $0108            | M[$0108] = A
    A1B2 : LDAA  $01A9            Load A with $01A9            | A = M[$01A9]            | MSB (Word) Lag filtered Coolant Temperature sensor input.   D = X + ( 256 * A - X ) * 0x10
    A1B5 : LSRA                  Shift right Logical A            | A = A >> 1
    A1B6 : LDX   #$8078            Load X with 8078            | X = 8078
    A1B9 : JSR   $FC14            Jump subroutine $FC14            | gosub FC14
    A1BC : STAA  $0109            Store A to $0109            | M[$0109] = A
    Firstly, it's important to note that $EE's "l_7812_lkup2d_nooff_16spc" and $DA2/$DA3's "Subroutine FC14" are both "pushX, pushB, ldaB #$10," so those are the same commands. A lot of the surrounding stuff is a little different, but again, the decompilation here isn't the greatest so it's a little hard to compare. That being said, the same sensor inputs and jumps get referenced, and the values are within sane limits, so I'm gonna go with the Crank Start Advance for $DA2 being at 0x0078 ($8078). And the table would be:

    Code:
    18 18 18 18 18 13 10 10 10 08 08 02 02 02 02 02 02
    Only thing I'm not 100% about is the actual temperature range referenced, since I'm assuming it's the same number of values as $EE. Sure, I have the equation for 01A9, but I don't actually know what to do with it. I'm afraid this is the limit of my ability with 68HC11 stuff.
    1990 Corvette (Manual)
    1994 Corvette (Automatic)
    1995 Corvette (Manual)

  7. #637
    Fuel Injected! spfautsch's Avatar
    Join Date
    Apr 2015
    Location
    Montgomery City, MO
    Age
    53
    Posts
    883
    17 bytes, perfect. Thank you! It's been so long since I've made any progress working with dis-assemblies it doesn't take long for me to give up and punt. But I really should work harder at trying. I think it's safe to assume the temperature divisions will match. Debating how to best handle this for eeprom cars - will anyone be able to "copy" the table when it's not in any of the .xdfs? Man that's some really low spark advance in the 92c and hotter cells.

    I've been meaning to ask Banish if GM / Delco has a name for this temp unit that gives C with (x * 0.75) - 40 and F with (x * 1.35) - 40.

    Thanks for pointing out the typo in the readme. I noticed it in config.h but must have copied / pasted from the code.

    I should have another release later today. Found some instances in the logging from yesterday that pointed out a problem that's thankfully, easy to fix.

  8. #638
    Fuel Injected!
    Join Date
    Mar 2013
    Posts
    1,475
    8029 is the crank spark advance. 8028 is crank spark bias.

    It is 14 cells table. The coolant value for table lookup is capped at $d0, so the upper 3 cells are missing, to fill the table upto 17 bytes extend the last value.

    There is some code for high res error that switch to time based calculation for spark.
    The coolant code looks similar to 94-95 with the same switch for 2 rc network, There is short table lookup than the full 255 bytes ad/ad conversion.
    I found also some very interesting code in the da3 diss. There is per cylinder spark correction tables vs rpm. Not enabled in the bin I looked at but the code is there.

    Conversion to crank spark is x*1
    Here is the stock table
    8028 byte_8028: fcb 0 ; DATA XREF: __RESET-5AE4r
    RESERVED:8028 ; sub_F132+B6r
    RESERVED:8028 ; crank spark bias
    RESERVED:8029 fcb $E ; crank spark
    RESERVED:802A fcb $E
    RESERVED:802B fcb $E
    RESERVED:802C fcb $E
    RESERVED:802D fcb $D
    RESERVED:802E fcb $D
    RESERVED:802F fcb $C
    RESERVED:8030 fcb $C
    RESERVED:8031 fcb $C
    RESERVED:8032 fcb $C
    RESERVED:8033 fcb $C
    RESERVED:8034 fcb $C
    RESERVED:8035 fcb $A
    RESERVED:8036 fcb 8

  9. #639
    Fuel Injected! spfautsch's Avatar
    Join Date
    Apr 2015
    Location
    Montgomery City, MO
    Age
    53
    Posts
    883
    Quote Originally Posted by kur4o View Post
    8029 is the crank spark advance. 8028 is crank spark bias.

    It is 14 cells table. The coolant value for table lookup is capped at $d0, so the upper 3 cells are missing, to fill the table upto 17 bytes extend the last value.
    That sounds workable - up to 116C. The higher temp cells aren't that important for ect sensing and the last 4 cells seem to be the same in all the $EE calibrations I've looked at anyway.

    Wherever, whatever the table is, it's just good to know it exists for these eeprom cars. Worst case it could be extrapolated through testing. Am I correct to assume these eeproms have to be dumped with a programmer, out of the ecu?

    Quote Originally Posted by kur4o View Post
    The coolant code looks similar to 94-95 with the same switch for 2 rc network, There is short table lookup than the full 255 bytes ad/ad conversion.
    You might look at the bin to verify this shorter table because I suspect what you're seeing is the disassembler identifying a bunch of duplicate fill, i.e.

    Code:
    EFCB	                	db	$00, $00, $00, $00, $00, $00, $FF, $FF, $FF, $FF
    EFD5	                	fill	$FF, 27
    EFF0	                	db	$FD, $FB, $F9, $F7, $F5, $F3, $F1, $EF, $ED, $EC
    I got hung up on this for a while when building these tables - didn't make sense to use them as a lookup table when they were different sizes. When I looked at the bin in a hex editor it became obvious the first 31 bytes of the high-temp table are all $FF.

  10. #640
    Fuel Injected!
    Join Date
    Mar 2013
    Posts
    1,475
    I found the coolant cal data tables to be at this address.

    RESERVED:FCAC fcb $FF ; coolant1
    RESERVED:FCAD fcb $D7 ; +
    RESERVED:FCAE fcb $9B ; Û
    RESERVED:FCAF fcb $84 ; Ä
    RESERVED:FCB0 fcb $75 ; u
    RESERVED:FCB1 fcb $6A ; j
    RESERVED:FCB2 fcb $61 ; a
    RESERVED:FCB3 fcb $58 ; X
    RESERVED:FCB4 fcb $51 ; Q
    RESERVED:FCB5 fcb $4A ; J
    RESERVED:FCB6 fcb $43 ; C
    RESERVED:FCB7 fcb $3C ; <
    RESERVED:FCB8 fcb $34 ; 4
    RESERVED:FCB9 fcb $2C ; ,
    RESERVED:FCBA fcb $22 ; "
    RESERVED:FCBB fcb $16
    RESERVED:FCBC fcb 0
    RESERVED:FCBD fcb $FF ; coolant2
    RESERVED:FCBE fcb $FF
    RESERVED:FCBF fcb $FA ; ·
    RESERVED:FCC0 fcb $E0 ; ð
    RESERVED:FCC1 fcb $CD ; =
    RESERVED:FCC2 fcb $BF ; ¬
    RESERVED:FCC3 fcb $B2 ; -
    RESERVED:FCC4 fcb $A7 ; ç
    RESERVED:FCC5 fcb $9D ; Ý
    RESERVED:FCC6 fcb $93 ; Ó
    RESERVED:FCC7 fcb $89 ; É
    RESERVED:FCC8 fcb $7F ; 
    RESERVED:FCC9 fcb $74 ; t
    RESERVED:FCCA fcb $67 ; g
    RESERVED:FCCB fcb $57 ; W
    RESERVED:FCCC fcb $3D ; =
    RESERVED:FCCD fcb 0

  11. #641
    Fuel Injected! spfautsch's Avatar
    Join Date
    Apr 2015
    Location
    Montgomery City, MO
    Age
    53
    Posts
    883
    Thanks kur4o. I'd have to plot those to be sure but the general slopes seem close to the $EE conversion tables just with greatly reduced resolution. Worst case I can help any potential eeprom users log with the controller to determine the starting spark advance. I'm fairly certain the same coolant sensor was used for the ecu all the way back to the late 80's so the general functionality is very likely similar / identical in the code. What I'm mainly interested in is the starting spark advance and it's relation to the GM temp units because that's all the controller needs to extrapolate which table the ecu has selected.

    A quick road test with the latest build went very well. I hope to put 115+ miles on it tomorrow, will report back in about 24 hours.

    In another world where our politicians haven't burned our economies to the ground, I'd say I'd be in the market for a pre-94 b-body to test this on. Unfortunately in the current economic climate, owning yet another car isn't in my near future. It would just be ideal because I'm identifying problems primarily by feel and sound, and the y-body's harsh suspension removes a lot of sensitivity from the feel component. A big, floaty land barge with a slushbox and less aggressive exhaust note would be ideal for confirming this will work more completely.

    NomakeWan if you have a working Arduino IDE available I'd really appreciate someone checking if this will compile. My process for dropping a release is a bunch of manual steps at this point so I'd hate to have someone try to compile and get discouraged because I forgot to un-comment one line or somesuch.

    Assuming no problems arise during further road testing, my next goal is to take a break for a few days and then look into determining whether misfire detection is possible. I'd also like to at least have a limp-home mode with time based dwell and sequence detection, but that may be several months away.
    Attached Files Attached Files

  12. #642
    Fuel Injected!
    Join Date
    Jul 2019
    Location
    Orange, CA
    Posts
    757
    Quote Originally Posted by kur4o View Post
    8029 is the crank spark advance. 8028 is crank spark bias.

    It is 14 cells table. The coolant value for table lookup is capped at $d0, so the upper 3 cells are missing, to fill the table upto 17 bytes extend the last value.
    I personally find it hilarious that after spending some 8 hours on this, I managed to locate the correct routine but failed to locate the correct table. That seems to be par for the course when it comes to my trying to disassemble unfamiliar code. Thank you for this. I did get fed up at one point and spin up a Windows XP instance so I could run the '93 Corvette BIN through DHC11 just to get the disassembly output to match the $EE disassembly output format, but of course without specific instructions about how to do it in the config and no comments available, it wasn't super useful. I know you already have a ton on your plate, and honestly I'd rather be selfish and focus on a lean cruise patch for $EE, but for the benefit of folks thinking of grabbing a 92-93 LT1 a better disassembly (and accompanying XDF!) for $DA2/$DA3 would be pretty neat. In any case, thank you very much for picking up where I left off and finding the proper information for spfautsch. I really do appreciate it.

    Quote Originally Posted by spfautsch View Post
    NomakeWan if you have a working Arduino IDE available I'd really appreciate someone checking if this will compile. My process for dropping a release is a bunch of manual steps at this point so I'd hate to have someone try to compile and get discouraged because I forgot to un-comment one line or somesuch.

    Assuming no problems arise during further road testing, my next goal is to take a break for a few days and then look into determining whether misfire detection is possible. I'd also like to at least have a limp-home mode with time based dwell and sequence detection, but that may be several months away.
    You bet I do. Compiled without any issues whatsoever using the latest IDE, screenshot attached. Congrats on the new version, and I'm hoping your long drive goes smoothly. Misfire detection on OBDI sounds neat.
    Attached Images Attached Images
    1990 Corvette (Manual)
    1994 Corvette (Automatic)
    1995 Corvette (Manual)

  13. #643
    Fuel Injected! spfautsch's Avatar
    Join Date
    Apr 2015
    Location
    Montgomery City, MO
    Age
    53
    Posts
    883
    Quote Originally Posted by NomakeWan View Post
    ... Compiled without any issues whatsoever using the latest IDE, screenshot attached.
    Much appreciated. But please hold your congratulations for the winner.

    Quote Originally Posted by NomakeWan View Post
    Misfire detection on OBDI sounds neat.
    I'm not terribly optimistic it will be as thorough or accurate as OBDII stuff without a crank mounted sensor, but I'd like to make an effort because it would be a nice way to pinpoint problems going forward.

    It's too soon to declare victory but so far, so good. It did have a hiccup this morning getting on i-70, but it was easy to identify the problem from logging. I made a bone-headed oversight in the logic that controls the queue depth. I just drove the fix about 10 miles over lunch break and no signs of problems.

  14. #644
    Fuel Injected! spfautsch's Avatar
    Join Date
    Apr 2015
    Location
    Montgomery City, MO
    Age
    53
    Posts
    883
    After a thorough road test this afternoon I'm extremely happy with this build. Logs from today and yesterday's testing are [here] if anyone cares to have a look (eehack + controller ascii / csv data). This was lots of different kinds of driving through wildly changing weather conditions (warm + humid to spot showers to cool + humid) with some boring cruise control interstate monotony as well as moderate to fairly aggressive driving in the last log. Aside from the one hiccup this morning that was caused by the queue depth shrinking before it should have, nothing notable. After fixing that issue, everything I asked the car to do it did without protest. I would have liked to have tested a full throttle pull to the rev limiter but the only place I had the opportunity was on some chip-coated pavement that would completely shred my tires in 2nd so I kept it to around 4750 rpm in 3rd (last log).

    I'd like to put some use on this build to make sure there aren't any bugs lurking, but if I had to sell the car tomorrow I feel like I could do that guilt-free.

    Sorry to spam with so many releases but my laptop has been acting up and I think is on it's last legs. Wanted to make sure I have backups in redundant locations in case the battery catches fire and the ssd (and / or the car) turn to ash.
    Attached Files Attached Files

  15. #645
    Fuel Injected!
    Join Date
    Nov 2017
    Location
    Californiacation
    Age
    57
    Posts
    823
    Hiya,
    I don't have a car to test it on but I would like to build a couple kits so I can play on the bench. How do you want payment and how much? PM is fine if you like. I am pretty sure I have everything in the BOM on hand but a kit would be nice to start :)
    Being it's a noisy automotive environment do you think higher v caps should be tried? 1 - P16379CT-ND - CAP ALUM POLY 100UF 20% 16V <<<<<< this one in particular? Maybe a heat sink on the V-reg? 1.5a isn't much heat to dissipate, just curious.

    I'll dig out an UNO in a bit and compile and shekk it out :D
    -Carl

Similar Threads

  1. Which TBI system is better?
    By KeyAir in forum GM EFI Systems
    Replies: 41
    Last Post: 05-13-2019, 09:39 PM
  2. Hard start 93 LT1 with LTCC Ignition Mod
    By beestoys in forum GM EFI Systems
    Replies: 0
    Last Post: 05-18-2015, 08:58 AM
  3. ABS system?
    By K1500ss4x4 in forum Gear Heads
    Replies: 3
    Last Post: 02-06-2014, 06:21 AM
  4. Vortec EGR System?
    By EagleMark in forum OBDII Tuning
    Replies: 40
    Last Post: 06-02-2013, 10:07 PM
  5. Quicker way to do Spark Hook test on the street for LT1s and others?
    By sherlock9c1 in forum Fuel Injection Writeups Articles and How to New and Old
    Replies: 15
    Last Post: 03-03-2013, 01:52 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •