DIY_EFI Digest Thursday, 10 July 1997 Volume 02 : Number 233 In this issue: injector flow rates Re: conversion question + RE: Introduction & O2 Sensor Questions Diacom Interface! Re: injector flow rates Re: injector flow rates RE: Introduction & O2 Sensor Questions Re: Diacom Interface! Re: Coolant temp sensor circuitry, injector lugs Re: linear EFI Re: turbo EGT rise, and wideband O2 Re: Diacom Interface! Re: Introduction & O2 Sensor Questions Re: Introduction & O2 Sensor Questions re . le jetronic fault codes Re: Diacom Interface! Re: HC11 EFI Code See the end of the digest for information on subscribing to the DIY_EFI or DIY_EFI-Digest mailing lists. ---------------------------------------------------------------------- From: Rich Mauruschat Date: Thu, 10 Jul 1997 09:25:28 +0100 Subject: injector flow rates Does anyone have details of flow rates (static and dynamic at specified pressure) for Bosch injectors? The part numbers I am particularly interested in are: 0 280 150 203 0 280 150 209 0 280 150 211 0 280 150 219 0 280 150 227 0 280 150 702 0 280 150 703 0 280 150 725 0 280 150 727 0 280 150 734 0 280 150 744 A longer list would be great! Cheers, Richard ------------------------------ From: Haas@xxx.nl (Joeri de Haas) Date: Thu, 10 Jul 1997 11:40:43 +0200 Subject: Re: conversion question + Todd, Have you considered boost dependent ignition retard as one of the possible cause of EGT rise ? Also Turbocharged engines usually run lower compression ratios leading to a less efficient expansion which also gives higher EGT 's. Joeri de Haas > A couple of questions; a) what is the conversion for gal/hr to > pounds/hr for gasoline? b) Also, with the turbo cars we see a dramatic > rise in EGT during a 1/4 mile pass, with EGT typically rising to > 1550-1700F by the end. Can anyone comment on the big picture here, > energy, phyics or otherwisewise, as to what is going on with turbo > engines and EGT at wot? I realize that the exh manifold up to the > turbine is at much higher pressure than for n.a., the turbine is > extracting energy from the exh flow, etc. but is this EGT rise > "necessary" for the turbo to keep up at wot/high compressor pressure > ratios/high flows, ie is the high EGT sort of indicative of the > potential energy "well" existing in the manifold, necessary for the > turbo to draw from to "keep up" with it's chores on the comprssor > side? Wow, I'm clear as mud here, right? :-) > > Todd tking@xxx.com > ------------------------------ From: James Boughton Date: Thu, 10 Jul 1997 09:15:06 -0400 Subject: RE: Introduction & O2 Sensor Questions Fred wrote: >Anyways, in order to turn off the attachment crap, from the inbox, go into >your personal address book, and create an entry called "DIYEFI". Put in >diy_efi@xxx. Turn off UUCP, turn off >RTF, and set it for MIME. >Frederic Breitwieser >Homebrew Automotive Mailing List >http://www.geocities.com/MotorCity/Downs/4605/index.html Where is UUCP and RTF? I checked the MIME check box, but I don't really know what this does (and if it works I probably don't care). I think I cured the attachment problem by changing the character set from some ISO set to the US ASCII. I am still hoping to find a way to avoid the hard returns at the end of every line though. Too much thought for me :-0 Jim Boughton boughton@xxx.net - --- begin 600 WINMAIL.DAT M>)\^(@P-`0:0" `$```````!``$``0>0!@`(````Y 0```````#H``$-@ 0` M`@````(``@`!!) &`&0!```!````# ````,``# #````"P`/#@`````"`?\/ M`0```&,`````````@2L?I+ZC$!F=;@#=`0]4`@````!D:7E?969I0&-O=6QO M;6(N96YG+F]H:6\M``,P`0`` M`",```!D:7E?969I0&-O=6QO;6(N96YG+F]H:6\M5]E9FE 8V]U;&]M8BYE;F`' ``0```"<```!213H@26YT M``@xxx. M3T9&5$A%051404-(345.5$-205 L1E)/351(14E.0D]8+$=/24Y43UE/55)0 M15)33TY!3$%$1%)%4U-"3T]++$%.1$-2``````(!"1 !````: ,``&0#```. M!@xxx.#/[_``H!#P(5`J@%ZP*#`% "\@D"`&-H"L!S970R-P8`!L," M@xxx._$6#S(U-0* "H$- ML0M@X&YG,3 S%% +"A11)0OR8P! ($86$2!WNP-@$] Z&:1W81.P+" +@" %L/$$@2!T;R&0"' A(0W082&0:&4@80) M`-!HRP> `C @!0!A<"#P`U+7(E,+@ ;@>"#P9R&P"X!?(: =%QW_'P\XQKR!G%C($(6 M$#B `_!?!Y $D#F_.L\<'D@#<&5V8A80!^!!+' #: ) (' Z+R]W1L N9UAE;V,X@#W!+@6@;2PO31M@!;!# M.(!Y+PA$;W<`@"\T-C!,-2\+@ VP>"Y&4&WV;#E/&?Y7(G 6$"$`!"#7,[(I M\S>Q/RQ 22- (G#\8VL;$2)B./)-="F1)('68BQQ36!D`B G!4 J4;,K8"L@ M:VY(D!T5=Q& WP5 (F!,04^@!Y$H*@(&D'4X Date: Fri, 11 Jul 1997 00:07:01 +1000 Subject: Diacom Interface! Hi all I know over the past we have all gotten in on the topic of PC - ALDL type interfaces and so on....I know i played around for hours and hours tyring to get it all to work.....HA! didnt have much luck with the tricky baud rates.... anyway has anyone got the diacom progies floating around in the collection of auto stuff??? if so may i have a copy PLEASE ....in return ill post a copy of "DIACOM" compatable interface plans. I know that its not a normal reguest for the group but i know that all will enjoy.....and most have travlled down this road. jalbury@xxx.au ------------------------------ From: jon hanson Date: Thu, 10 Jul 1997 16:47:56 +0100 Subject: Re: injector flow rates >Does anyone have details of flow rates (static and dynamic at specified >pressure) for Bosch injectors? >The part numbers I am particularly interested in are: >0 280 150 203 >0 280 150 209 >0 280 150 211 >0 280 150 219 >0 280 150 227 >0 280 150 702 >0 280 150 703 >0 280 150 725 >0 280 150 727 >0 280 150 734 >0 280 150 744 >A longer list would be great! > >Cheers, >Richard > > I only have a reference for one of the above (every little bit helps) part no application flow rate (cc/min) @pressure (bar) 0280 150 203 BMW 195 2.7 the ref (Jeff Hartmanns book) doesn't specify if the flow rate is static or dynamic regards Jon Hanson ------------------------------ From: Michael McBroom Date: Thu, 10 Jul 1997 07:53:28 -0700 Subject: Re: injector flow rates Rich Mauruschat wrote: > > Does anyone have details of flow rates (static and dynamic at specified > pressure) for Bosch injectors? > The part numbers I am particularly interested in are: > 0 280 150 203 > 0 280 150 209 > 0 280 150 211 > 0 280 150 219 > 0 280 150 227 > 0 280 150 702 > 0 280 150 703 > 0 280 150 725 > 0 280 150 727 > 0 280 150 734 > 0 280 150 744 > A longer list would be great! Check out the list at http://www.co.jyu.fi/~rax/suutin.htm Some of the part #'s you were inquiring about are listed, plus several more. It's mostly in Finnish, but you can still get the flow data off the chart. - -- Best, Michael McBroom '87 745T 123k w/APC (batoutahell!) '88 765T 154k _________________________________________________________________________ Graduate Student, Linguistics Author of Research Interest: Biological Origins =McBroom's Camera Bluebook= of Language http://mcbrooms.com California State University, Fullerton _________________________________________________________________________ ------------------------------ From: Frederic Breitwieser Date: Thu, 10 Jul 1997 11:06:18 -0400 Subject: RE: Introduction & O2 Sensor Questions >Where is UUCP and RTF? I checked the MIME check box, but I don't really know >what this does (and if it works I probably don't care). I think I cured the attachment RTF is rich text format, which is Window's way of making things pretty to look at. Unfortunately, until the world gets to Outlook, we gotta turn it off. Mime is a type of encoding, see the bottom of all your messages... that MIME encoding. UUCP is the default if you turn MIME off, UUCP goes on. Its one or the other. >problem by changing the character set from some ISO set to the US ASCII. I am >still hoping to find a way to avoid the hard returns at the end of every line >though. Not doable my friend... anything I want unformatted to archive for later use, I cut and paste into word, and do a "search and replace" removing all the carriage returns. A lot of work if you ask me :) Frederic Breitwieser Homebrew Automotive Mailing List http://www.geocities.com/MotorCity/Downs/4605/index.html - --- ------------------------------ From: peter paul fenske Date: Thu, 10 Jul 1997 08:14:28 -0700 (PDT) Subject: Re: Diacom Interface! Regarding interfaces This software works for 8192. GL:Peter /********************************************************** GCAR1.C ***********************************************************/ #include #include #include #include #include "comdefs.h" /* register definitions */ #include "alt_key.h" #include "ascii.h" #define BUF_SIZE 200 /* Size of Rx and Tx buffers */ #define FALSE 0 #define TRUE !FALSE #define FORMAT 0x03 /* 8N1 format in LCR */ #define BAUD 8192 void interrupt com_svc (__CPPARGS); /* RX data ISR */ void interrupt (*old_svc) (__CPPARGS); /* old int. vector */ void init_com (int port, char format, int baud); /* initialize COM port */ void restore (int port); /* restore COM vector */ void put_com (char c); /* transmit data */ int get_com (void); /* receive data */ void do_command(void); /* process Keys */ long atox(char *cmdline); int tohex(char letter); /* The following are treated as global variables and are */ /* declared outside the main program. */ FILE *stream; char text_buff[140]; int file_status = FALSE; int rx_buff[BUF_SIZE]; /* receive data buffer */ char tx_buff[BUF_SIZE]; /* transmit data buffer */ int rx_in_ptr, rx_out_ptr; /* write & read pointers*/ int tx_in_ptr, tx_out_ptr; /* write & read pointers*/ int retransmit_out_ptr, retransmit_in_ptr; int transmitting, tx_out_ptr_check; int carrier_sense; int run; /* program run/quit flag */ int com_base; /* COM port base address */ int displacement; /* flow control */ void main (void) { int c; int port; /* COM port number 1-4 */ file_status = FALSE; init_com( port=1, FORMAT, BAUD ); /* initialize COM port */ printf("\n\n GM Car Monitor:\n\n\ t Transmits x Exits l Loads Hex data\n"); printf("\nEnter filename to save data (or for no file)\n\ Filename: "); gets(text_buff); if( isgraph(*text_buff )) if ((stream = fopen(text_buff, "wt")) == NULL) { printf("Cannot open text file.\n"); } else file_status = TRUE; printf("Press l to load the Hex data Transmit string\nMonitor mode..."); run = TRUE; /* program run/quit flag */ while( run ) /* Run till we get bored */ { c = get_com (); /* check for character; */ if (c != -1) /* if one was received, */ { printf("%.2X ",(unsigned char)c ); /* print it */ if(file_status) fprintf(stream,"%.2X ",(unsigned char)c ); /* print it to file */ } if (kbhit ()) /* if a key has been hit */ { c = getch (); /* read char from kybd */ if (c == NUL) /* if it's a NUL, */ do_command(); /* 2nd byte as command */ } } if( file_status ) fclose(stream); /* close file */ restore(port); } void put_com(char c) /* Fill Tx Buffer */ { int tx_ptr; tx_ptr = (tx_in_ptr+1) % BUF_SIZE; /* point to next spot in */ if (tx_ptr != tx_out_ptr) /* buffer; if available */ { tx_buff[tx_ptr] = c; /* save received data */ tx_in_ptr = tx_ptr; /* and update rx input ptr */ } } int get_com(void) /* Receive character */ { if(rx_out_ptr == rx_in_ptr) return (-1); else { displacement--; rx_out_ptr = (rx_out_ptr+1) % BUF_SIZE; /* point to next spot in */ return (rx_buff[rx_out_ptr]); } } void do_command(void) { switch (getch()) /* select command */ { case ALTX: /* x exits program */ run = FALSE; break; case ALTT: /* t transmits data */ printf("-- " ); if(file_status) fprintf(stream,"-- " ); /* print it to file */ carrier_sense=1; delay(10); if(carrier_sense) { outp( (com_base+MCR), (inp( com_base+MCR ) & ~RTS) ); /* enable Tx */ tx_out_ptr = retransmit_out_ptr; /* retrieve transmit pointers */ tx_in_ptr = retransmit_in_ptr; /* for retransmitting */ transmitting=TRUE; tx_out_ptr_check=tx_out_ptr; if(inp(com_base+LSR) & THRE) if( tx_out_ptr != tx_in_ptr ) { tx_out_ptr = (tx_out_ptr+1) % BUF_SIZE; /* point to next spot */ outp( com_base+THR, tx_buff[tx_out_ptr] ); /* and Tx */ } } break; case ALTL: /* l loads hex string */ printf("\n\n Load Hex String"); printf("\nEnter each Hex byte followed by "); printf("\npress twice on last byte\n"); for(;;) { gets(text_buff); if( tohex(*text_buff) < 0 ) break; put_com((char)atox(text_buff)); } retransmit_out_ptr = tx_out_ptr; /* save transmit pointers */ retransmit_in_ptr = tx_in_ptr; /* for retransmitting */ printf("Press t to transmit string\n"); break; } } /********************************************************** INIT_COM - initialize COMx port and interrupt vector ***********************************************************/ void init_com (int port, char format, int baud) { char c; int com_int, irq_msk; unsigned dbaud; dbaud = (unsigned)(115200L/baud); /* rate divisor*/ switch (port) /* port-specific defns. */ { case 1: com_base = COM1; /* port base address */ com_int = INT_C; /* hardware int number */ irq_msk = IRQ4M; /* PIC interrupt mask */ break; case 2: com_base = COM2; /* port base address */ com_int = INT_B; /* hardware int number */ irq_msk = IRQ3M; /* PIC interrupt mask */ break; case 3: com_base = COM3; /* port base address */ com_int = INT_C; /* hardware int number */ irq_msk = IRQ4M; /* PIC interrupt mask */ break; case 4: com_base = COM4; /* port base address */ com_int = INT_B; /* hardware int number */ irq_msk = IRQ3M; /* PIC interrupt mask */ break; default: break; }; asm CLI; /* disable interrupts */ outp (com_base+LCR, DLAB); /* access divisor latch */ outp (com_base+DLL, (char)dbaud); /* set UART bit rate */ outp (com_base+DLM, (char)(dbaud >> 8)); outp (com_base+LCR, format); /* set word length, etc.*/ old_svc = getvect (com_int); /* save old COMx vector */ setvect (com_int, com_svc); /* vector -> com_svc () */ rx_in_ptr = rx_out_ptr = 0; /* init buffer pointers */ tx_in_ptr = tx_out_ptr = 0; /* init buffer pointers */ retransmit_out_ptr = retransmit_in_ptr = 0; transmitting = 0; carrier_sense = 0; displacement = 0; c = inp (PIC_IMR); outp (PIC_IMR, c & ~irq_msk); /* enable interrupt on */ outp (com_base+IER, ERBFI | ETBEI); /* Data Ready & THRE */ c = inp (com_base+RBR); /* clear RX data reg */ outp (com_base+MCR, OUT2|DTR|RTS); /* gate 8250 INT to 8259 */ asm STI; /* enable interrupts */ } /********************************************************** RESTORE - disable COMx interrupt and restore old vector You *must* call this function before you exit! ***********************************************************/ void restore (int port) { char c; int com_int, irq_msk; switch (port) /* port-specific defns. */ { case 1: com_base = COM1; /* port base address */ com_int = INT_C; /* hardware int number */ irq_msk = IRQ4M; /* PIC interrupt mask */ break; case 2: com_base = COM2; /* port base address */ com_int = INT_B; /* hardware int number */ irq_msk = IRQ3M; /* PIC interrupt mask */ break; case 3: com_base = COM3; /* port base address */ com_int = INT_C; /* hardware int number */ irq_msk = IRQ4M; /* PIC interrupt mask */ break; case 4: com_base = COM4; /* port base address */ com_int = INT_B; /* hardware int number */ irq_msk = IRQ3M; /* PIC interrupt mask */ break; default: break; }; c = inp (PIC_IMR); outp (PIC_IMR, c | irq_msk); /* disable COMx int */ outp (com_base+IER, 0x00); outp (com_base+MCR, 0x00); /* all modem outputs off */ setvect (com_int, old_svc); /* restore COMx vector */ } /********************************************************** COM_SVC - receive and transmit data interrupt service routine Reads received character from 8250 and places it in the receive data buffer if there is room - if there isn't, the character is discarded. Note that wraparound of the buffer pointer is handled by incrementing modulo BUF_SIZE. ***********************************************************/ void interrupt com_svc (__CPPARGS) { char c; int rx_ptr, status; carrier_sense = 0; if( (status=inp(com_base+IIR)) & ID1 ) /* Receive Interrupt? */ { c = inp (com_base+RBR); /* read received char */ rx_ptr = (rx_in_ptr+1) % BUF_SIZE; /* point to next spot in */ if (rx_ptr != rx_out_ptr) /* buffer; if available */ { rx_buff[rx_ptr] = c; /* save received data */ rx_in_ptr = rx_ptr; /* and update rx input ptr */ displacement++; } if(transmitting) { tx_out_ptr_check = (tx_out_ptr_check+1) % BUF_SIZE; if(c != tx_buff[tx_out_ptr_check]) tx_out_ptr = tx_in_ptr; // Kill packet transmission } if( (inp(com_base+LSR) & (THRE)) == (THRE) ) // if so, disable Tx { outp( (com_base+MCR), (inp( com_base+MCR ) | RTS) ); transmitting = FALSE; } } if( status & ID0 ) /* Transmit Interrupt? */ { if( tx_out_ptr != tx_in_ptr ) { tx_out_ptr = (tx_out_ptr+1) % BUF_SIZE; /* point to next spot */ outp( com_base+THR, tx_buff[tx_out_ptr] ); /* and Tx */ } } // Flow control may be implemented somewhere else. // if( displacement >= (int)(0.8*BUF_SIZE) ) // put_com(DC3); // if( displacement <= (int)(0.2*BUF_SIZE) ) // put_com(DC1); outp (PIC_ICR, EOI); /* 8259 end of interrupt */ } long atox(char *cmdline) /* see tohex for details */ { long x = 0; int y; while( (y = tohex(*cmdline++)) >= 0 ) x = (x << 4) + y; return x; } int tohex(char letter) /* Returns TRUE (number) or ERROR (negative) */ { if( (letter >= '0') && (letter <= '9') ) letter = letter - '0'; else if( (letter >= 'A') && (letter <= 'F') ) letter = letter - 'A' + 10; else if( (letter >= 'a') && (letter <= 'f') ) letter = letter - 'a' + 10; else letter = -1; return (int)letter; } At 12:07 AM 7/11/97 +1000, you wrote: >Hi all > >I know over the past we have all gotten in on the topic of PC - ALDL >type interfaces and so on....I know i played around for hours and hours >tyring to get it all to work.....HA! didnt have much luck with the >tricky baud rates.... anyway has anyone got the diacom progies >floating around in the collection of auto stuff??? if so may i have a >copy PLEASE ....in return ill post a copy of "DIACOM" compatable >interface plans. I know that its not a normal reguest for the group but >i know that all will enjoy.....and most have travlled down this road. > >jalbury@xxx.au > > ------------------------------ From: sheridan@xxx.com (Brad Sheridan) Date: Thu, 10 Jul 1997 08:23:27 +0100 Subject: Re: Coolant temp sensor circuitry, injector lugs >Also, the injector connectors used on late model Mazda engines, some >Mitsubishi's etc - what are they, where can the lugs that fit in them be >found? Do they use Nippon Denso injectors? I've been told that 87-89 Maximas, which use Nippon Denso injectors, had wiring harness problems, so as a result, Nissan dealers should have these connectors in stock, but the one dealer I've checked with so far was out. If they use Bosch, the Nissan dealer has those too, and they're also used in most European cars, so getting them from a VW dealer or the like should be easy. If you're not sure of the diff. between Bosch and Denso, the Bosch connectors are rectangular, and have a metal clip to secure the connector, the Denso are rectangular also, but have rounded off corners, and AFAIK don't use a metal clip to secure the connector. Instead they have a plastic push tab on the connector that secures it. The injectors should also have Denso or Bosch written on them somewhere. Hope this helps, Brad ------------------------------ From: "Edward C. Hernandez" Date: Thu, 10 Jul 1997 11:52:50 -0400 Subject: Re: linear EFI Almost a year ago, tom cloud wrote: > > >TBI will lose the whole rpm range to a good port injected intake. > >Ergo... > > > >-- > >Ed Hernandez > > okay, Ed. You said your specialty was manifolds. Let me pick your > brain, if that's okay. Currently have the Holley 650 cfm TBI on > Edelbrock Performer manifold on 351W. Plan to get Motorsport 351W > (the cast-iron head dude with 346 hp rated). Do you think I'd lose > to put a 351W HO TPI system from a junk yard on it instead? Would > then play with either building a controller, modifying a Ford unit > or maybe (as pondered in previous post) a GM controller. > > I.E.: Do you think I'll lose by dumping the Performer and going to the > Ford stock TPI manifold? You may remember that the reason I dropped myself of the list was because I couldn't read all the mail. I still have 800 messages to go, and I know this is a late answer(maybe too late), but you will lose by dumpering the Performer. My opinion, not a fact. 799 to go... Ed Hernandez Ford AVT Motorsport Technology ehernan3@xxx.com ------------------------------ From: Todd King Date: Thu, 10 Jul 97 09:36:00 PDT Subject: Re: turbo EGT rise, and wideband O2 <<< Corky Bell's new book published by Robert Bently called "Maximum Boost" is all about turbos and their theory, installation and tuning. It is excellent. From there you will learn that normal turbine back pressure is 2-3 times manifold pressure but the lower the better to a certain point as pressure is necessary to extract the energy as you suggested. >>> So it's out finally- I asked Corky (of Bell Engineering in San Antonio- I'm from there too; formerly Cartech in Dallas, which was formerly associated with Haltech, which is now in Australia or similar I believe... get me- quite the name-dropper!:-) a few months back but it was not yet out. I'll check it out! I've seen some interesting data from the Engine Analyzer SW on backpressure with turbo; I think the exh man press is typically a bit higher than the pressure on the intake side, or thereabouts. <<< I found in my own turbo car that had a pretty restrictive cat and exhaust, that I had very high temps (1650 deg F) until I lowered the pressure after the turbo. >>> I have a 3" mandrel bent downpipe from the turbo, which is run open at the track; no backpressure problem here! :-) <<< > >Also Frank, any way you could put a copy of that graph on the DIY web site > >so all of us could get a look at it. > Yes, I will do this as soon as I can buy a good 24 bit or better color scanner that will work with my Gateway 166 MMX portable. >>> I'll scan it here at work if you'll send me a copy of it; or you can just truck on over to your nearest Kinko's for the same result... BTW I hit up the company employee resource center recently for everything they had from the SAE- turned up lots of very intereasting stuff, all currently stacked on my desk (you want it when??? Haw-haw-haw...) Wouldn't you know it- several papers on wideband O2, like #890299: "Wide-Range A/F Sensor", or even better, #880559: "A Portable Fast Response A/F Ratio Meter Using an Extended Range Oxygen Sensor" by Nissan engineers. And you were wondering how all these automotive "garages" were suddenly coming up with these engineering "design feats" to bring out their new wonder A/F meters? :-) These papers are dated from the late 80's... Oh, and I can't resist one that'll make the list collectively cringe- #910259: "A PC Engine Control Development System"... remember that thread <*shiver*>? Todd tking@xxx.com ------------------------------ From: Frederic Breitwieser Date: Thu, 10 Jul 1997 12:53:23 -0400 Subject: Re: Diacom Interface! >This software works for 8192. Howdy there Peter... 8192 Baud... that's not for the 1986 ECM's is it? They are a tad old, so I wasn't sure if they were the phase modulated 160 baud ECMs. Just curious... saw your post and if my ECM can work at 8192 baud, you just saved me a month of research :) Thansk! Fred ------------------------------ From: Johnny Date: Thu, 10 Jul 1997 10:08:02 -0700 Subject: Re: Introduction & O2 Sensor Questions Frederic Breitwieser wrote: > > >Where is UUCP and RTF? I checked the MIME check box, but I don't really know > >what this does (and if it works I probably don't care). I think I cured > the attachment > > RTF is rich text format, which is Window's way of making things pretty to > look at. Unfortunately, until the world gets to Outlook, we gotta turn it > off. > > Mime is a type of encoding, see the bottom of all your messages... that > MIME encoding. UUCP is the default if you turn MIME off, UUCP goes on. > Its one or the other. > > >problem by changing the character set from some ISO set to the US ASCII. > I am > >still hoping to find a way to avoid the hard returns at the end of every > line >though. > > Not doable my friend... anything I want unformatted to archive for later > use, I cut and paste into word, and do a "search and replace" removing all > the carriage returns. A lot of work if you ask me :) > Man, that Billybob stuff sure sounds like a hassle. ;) - -j- ------------------------------ From: Frederic Breitwieser Date: Thu, 10 Jul 1997 14:18:19 -0400 Subject: Re: Introduction & O2 Sensor Questions >Man, that Billybob stuff sure sounds like a hassle. ;) Can be :) Not to us computer types. Car engineering is the hassle :) Cheers, Fred ------------------------------ From: "nico badenhorst" Date: Thu, 10 Jul 1997 22:10:39 +0300 Subject: re . le jetronic fault codes hi guys , i have a small favor to ask, (please exuse me if this is a bit off the subject,) has anybody heard of a variation of the bosch jetronic system called the le jetronic, or l3 jetronic? i am desperately looking for the description of the error codes generated by this system. anyboby knows where i can find this ? the agents are typicaly thight lipped about this .. any info on this will be apreciated thanx a lot , nico badenhorst ------------------------------ From: peter paul fenske Date: Thu, 10 Jul 1997 13:29:18 -0700 (PDT) Subject: Re: Diacom Interface! Hi Fred and all You will need the include files. Either mail me direct or if people want i will include em with the text.. If you ecm uses a blue calpak it will work. If just a 2732 it is 160 baud.. I have posted the interface previously.. It is in tango format. Unfortunately i can't get the scanner to work so that is the format it will stay it.. GL:peter At 12:53 PM 7/10/97 -0400, you wrote: >>This software works for 8192. > >Howdy there Peter... 8192 Baud... that's not for the 1986 ECM's is it? >They are a tad old, so I wasn't sure if they were the phase modulated 160 >baud ECMs. > >Just curious... saw your post and if my ECM can work at 8192 baud, you just >saved me a month of research :) > >Thansk! > >Fred > > ------------------------------ From: peter paul fenske Date: Thu, 10 Jul 1997 13:40:00 -0700 (PDT) Subject: Re: HC11 EFI Code Well here is an example 10 year old engineering project.. Have fun:peter ***************************************************************** FUEL INJECTION CODE VERSIONC ***************************************************************** IOREGS EQU $1000 PORTA EQU $00 PORTB EQU $04 CFORC EQU $0B TCNT EQU $0E TIC3 EQU $14 TOC2 EQU $18 TOC3 EQU $1A TOC4 EQU $1C TOC5 EQU $1E TCTL1 EQU $20 TCTL2 EQU $21 TMSK1 EQU $22 TFLG1 EQU $23 TMSK2 EQU $24 TFLG2 EQU $25 PACTL EQU $26 ADCTL EQU $30 ADR1 EQU $31 ADR2 EQU $32 ADR3 EQU $33 ADR4 EQU $34 OPTION EQU $39 JMPTOF EQU $00D0 JMPTOC2 EQU $00DC JMPTOC5 EQU $00D3 JMPIC3 EQU $00E2 RTIVEC EQU $00EB JMP_OP EQU $7E ;Code for jump instruction RISEIC3 EQU %00000001 MASKIC3 EQU %00000001 CLRIC3 EQU %00000001 TOFMASK EQU %10000000 OUTRHLF EQU $FFB5 ;Ascii output routines in monitor OUTLHLF EQU $FFB2 OUT1BYT EQU $E4D5 OUT1BSP EQU $E4E4 OUT2BSP EQU $E4E1 OUTCRLF EQU $E4ED OUTSTRG EQU $E4FD BUFFALO EQU $E0B2 ;Return to monitor FUEL EQU $C600 ;Fueling table CHOKE EQU $C700 ;Choke enrichment table COLD EQU $C710 ;Cold run enrichment table ORG $0000 PERIOD RMB 3 TIMER2 RMB 3 CLOCK RMB 2 CLOCKA RMB 2 SECOND RMB 1 TOC2CNT RMB 2 TOC5CNT RMB 2 COUNTER RMB 2 TOFCNT RMB 1 BANK1 RMB 1 BANK2 RMB 1 START RMB 1 RPMVAL RMB 1 RPMFRAC RMB 1 VACVAL RMB 1 VACFRAC RMB 1 AVAL RMB 1 BVAL RMB 1 CVAL RMB 1 DVAL RMB 1 X1VAL RMB 1 X2VAL RMB 1 DIFVAL RMB 1 T1 RMB 2 T2 RMB 2 CALCVAL RMB 2 MAPVAL RMB 1 FUELVAL RMB 2 MULFLAG RMB 1 QUOTE RMB 5 ;QUOTIENT BIN TO BCD ROUTINE ****************************************************************** START OF PROGRAM * ***************************************************************** ORG $C000 RMP SEI ;Disable interrupts LDX #IOREGS ******************************************************************INIT TIMER OVERFLOW ROUTINE(give periods greater than 32 mS) * ***************************************************************** CLR TOFCNT ;set overflow counter to zero LDAA #JMP_OP STAA JMPTOF LDD #TOFINT STD {JMPTOF+1} LDAA #TOFMASK STAA TMSK2,X ;Enable timer overflow interrupt - TOI STAA TFLG2,X ;Clear the timer overflow flag - TOF ******************************************************************SETUP UP INPUT CAPTURE INTERRUPT ROUTINE(to measure RPM) * ***************************************************************** LDAA #JMP_OP STAA JMPIC3 LDD #IC3INT STD {JMPIC3+1} LDAA #RISEIC3 STAA TCTL2,X LDAA #CLRIC3 STAA TFLG1,X ;Clear input capture flag - IC3F LDD #0 STD PERIOD STAA {PERIOD+2} STD CLOCK ****************************************************************** IDLE AIR MOTOR CONTROL SETUP * ***************************************************************** LDAA #JMP_OP STAA JMPTOC2 LDD #TOC2INT STD {JMPTOC2+1} LDAA #%01010000 STAA TCTL1,X LDAA #$41 ;Enable OC2I and IC3I STAA TMSK1,X LDD #!60000 ;slowest stepper speed STD TOC2CNT ADDD TCNT,X ;Hold off first TOC2 interrupt STD TOC2,X ****************************************************************** Set up and start A to D * ***************************************************************** LDAA #%10000000 ;ADPU = 1 STAA OPTION,X LDAA #%00110000 ;SCAN = 1, MULT = 1, CHAN 0 TO 3 STAA ADCTL,X LDAA #4 STAA BANK1 LDAA #8 STAA BANK2 LDAA #1 STAA START LDD #2000 ;Something to start out with STD FUELVAL ****************************************************************** SETUP REAL TIME INTERRUPT (Clock) * ***************************************************************** TD LDD $0000 STD CLOCKA LDAA $61 STAA SECOND LDAA #JMP_OP STAA RTIVEC LDD #CONT STD {RTIVEC+1} LDAA #%00000010 STAA PACTL,X LDAA #%11000000 STAA TMSK2,X LDAA #%01000000 STAA TFLG2,X ****************************************************************** START OF MAIN REPITITIVE LOOP * ***************************************************************** EDGE1 SEI ;Disable interrupts sensitive LDAA PERIOD STAA TIMER2 LDD {PERIOD+1} ;Get a working copy of ignition period STD {TIMER2+1} ; in usec CLI ;Enable interrupts CPD #!37500 ;If RPM < 400 then START mode BLS ON1 ****************************************************************** STARTING ROUTINE * ***************************************************************** STMODE LDAA #1 STAA START LDAB {IOREGS+ADR3} ;GET STARTING TEMP LSRB LSRB LSRB LSRB LDX #CHOKE ABX LDAA 0,X LDAB #!200 MUL ;STARTING PULSE WIDTH STD FUELVAL JMP OUTIT ON1 XGDX TST TIMER2 ;If greater than 65535 then START mode BNE STMODE LDD #!2343 ;If greater than 6400 RPM then CPD {TIMER2+1} ; set to 6400 RPM BLO ON2 STD {TIMER2+1} ON2 CLR START LDX {TIMER2+1} LDD #!37500 ;400 RPM = 37500 USEC IDIV DEX XGDX STAB RPMVAL XGDX LDX {TIMER2+1} FDIV ;get fraction XGDX LSRA LSRA LSRA LSRA STAA RPMFRAC LDAB {IOREGS+ADR2} STAB VACVAL ANDB #%00001111 STAB VACFRAC LDAB VACVAL ANDB #%11110000 STAB VACVAL LDX #FUEL ABX LDAB RPMVAL ABX LDAA 0,X STAA AVAL CMPB #15 BEQ OK1 INX OK1 LDAA 0,X STAA BVAL LDAB #16 LDAA VACVAL CMPA #$F0 BEQ OK2 ABX OK2 LDAA 0,X STAA DVAL LDAA RPMVAL CMPA #15 BEQ OK3 DEX OK3 LDAA 0,X STAA CVAL * X1 = AVAL + (BVAL - AVAL) * RPMFRAC / 16 LDX AVAL PSHX LDAA RPMFRAC PSHA JSR CALCIT STAB X1VAL * X2 = DVAL + (CVAL - DVAL) * RPMFRAC / 16 LDX CVAL PSHX LDAA RPMFRAC PSHA JSR CALCIT STAB X2VAL * MAPVAL = X1VAL + (X2VAL - X1VAL) * VACFRAC / 16 LDX X1VAL PSHX LDAA VACFRAC PSHA JSR CALCIT STAB MAPVAL LDAA #!156 MUL STD FUELVAL ****************************************************************** OUTPUT PARAMETERS TO TERMINAL * ***************************************************************** OUTIT LDX #STARTIT JSR OUTSTRG LDX #START JSR OUT1BSP LDD {TIMER2+1} JSR BINBCD JSR OUTBCD LDX #USEC ;Print "uSec" JSR OUTSTRG LDX #{ADR2+IOREGS} JSR OUT1BSP JSR OUT1BSP JSR OUT1BSP LDX #AVAL JSR OUT1BSP LDX #VACVAL JSR OUT1BSP LDX #RPMVAL JSR OUT1BSP LDX #PW JSR OUTSTRG LDD FUELVAL LSRD JSR BINBCD JSR OUTBCD LDX #USEC JSR OUTSTRG LDD CLOCKA JSR BINBCD JSR OUTBCD JSR OUTCRLF ;Add a CR/LF LDX #!500 ;Let the poor PC catch up!!!!!!! BIGWAIT CLR COUNTER WAIT DEC COUNTER BNE WAIT DEX BNE BIGWAIT JSR SESTEP JMP EDGE1 ****************************************************************** OUTPUT A BCD VALUE SUBROUTINE * ***************************************************************** OUTBCD LDAA QUOTE ;Print the period in hex JSR OUTRHLF LDAA {QUOTE+1} JSR OUTRHLF LDAA {QUOTE+2} JSR OUTRHLF LDAA {QUOTE+3} JSR OUTRHLF LDAA {QUOTE+4} JSR OUTRHLF RTS ****************************************************************** BINARY TO BCD CONVERSION SUBROUTINE * ***************************************************************** BINBCD LDX #$2710 ;LOAD DIVISOR 10,000 IDIV XGDX STAB QUOTE XGDX LDX #$3E8 ;LOAD DIVISOR 1000 IDIV XGDX STAB {QUOTE+1} XGDX LDX #$64 ;LOAD DIVISOR 100 IDIV XGDX STAB {QUOTE+2} XGDX LDX #$A ;LOAD DIVISOR 10 IDIV XGDX STAB {QUOTE+3} XGDX STAB {QUOTE+4} RTS ***************************************************************** * IDLE AIR MOTOR SPEED AND DIRECTION CONTROL SUBROUTINE * ***************************************************************** SESTEP LDX #IOREGS LDAB ADR4,X CMPB #$C0 BHS UPP CMPB #$40 BLO DOWNE LDAB #$00 STAB PORTB,X BRA MOVER DOWNE LDAB #$10 STAB PORTB,X JMP MOVER UPP LDAB #$30 STAB PORTB,X MOVER RTS ****************************************************************** TIMER OVERFLOW INTERRUPT ROUTINE * ***************************************************************** TOFINT INC TOFCNT BPL TOFINT1 ;Do not let TOFCNT overflow DEC TOFCNT TOFINT1 LDAA #TOFMASK STAA {IOREGS+TFLG2} ;Clear the timer overflow flag RTI ***************************************************************** * REAL TIME INTERRUPT ROUTINE (Clock) * *****************************************************************CONT LDAA SECOND DECA BNE CONTA LDD CLOCKA ADDD #$0001 STD CLOCKA LDAA #!61 CONTA STAA SECOND LDAA #%01000000 STAA {IOREGS+TFLG2} RTI ****************************************************************** MAIN IGN TIMER AND INJECTOR DRIVER INTERRUPT ROUTINE * ***************************************************************** IC3INT LDX #IOREGS LDD TIC3,X BMI IC3INT1 TST TFLG2,X BPL IC3INT1 INC TOFCNT IC3INT1 SUBD CLOCK STD {PERIOD+1} BCC IC3INT2 DEC TOFCNT IC3INT2 LDAA TOFCNT STAA PERIOD CLC ROR PERIOD ;Change to usec ROR {PERIOD+1} ROR {PERIOD+2} CLR TOFCNT LDD TIC3,X STD CLOCK BMI IC3INT3 LDAA TFLG2,X BPL IC3INT3 DEC TOFCNT IC3INT3 LDAA START ;Check for START mode: 0 = RUN BEQ IC3INT6 JSR FIREB1 DEC BANK1 BNE IC3INT4 BRA IC3INT7 IC3INT6 DEC BANK1 BNE IC3INT4 JSR FIREB1 IC3INT7 LDAA #8 STAA BANK1 IC3INT4 LDAA START ;Check for START mode: 0 = RUN BEQ IC3INT8 JSR FIREB2 DEC BANK2 BNE IC3INT5 BRA IC3INT9 IC3INT8 DEC BANK2 BNE IC3INT5 JSR FIREB2 IC3INT9 LDAA #8 STAA BANK2 IC3INT5 LDAA #1 STAA TFLG1,X ;Clear input capture flag - IC3F RTI ****************************************************************** Idle control motor interrupt routine * ***************************************************************** TOC2INT LDX #IOREGS LDD TOC2CNT ADDD TOC2,X STD TOC2,X LDAA #$40 STAA TFLG1,X RTI ***************************************************************** * SET INJECTOR OUTPUT PULSEWIDTH INTERRUPT ROUTINE * ***************************************************************** FIREB1 LDD FUELVAL BEQ FIREB1E ADDD TCNT,X STD TOC3,X BSET TCTL1,X,%00110000 ;Set OC3 to 1 on forced compare LDAA #%00100000 ;Force OC3 STAA CFORC,X BCLR TCTL1,X,%00010000 ;Set OC3 to 0 on timer compare FIREB1E RTS FIREB2 LDD FUELVAL BEQ FIREB2E ADDD TCNT,X STD TOC4,X BSET TCTL1,X,%00001100 LDAA #%00010000 STAA CFORC,X BCLR TCTL1,X,%00000100 FIREB2E RTS ****************************************************************** RECOVER PARAMETERS LOST BEFORE RTI SUBROUTINE * ***************************************************************** CALCIT TSX LDD 3,X ;Get back AVAL (CVAL, X1VAL) and CBA ; BVAL (DVAL, X2VAL) BHI CALCIT1 STAA 4,X STAB 3,X BRA CALCIT2 CALCIT1 LDAA #16 SUBA 2,X STAA 2,X CALCIT2 LDD 3,X SBA LDAB 2,X MUL STD T1 LSRD LSRD LSRD LSRD STD T2 ADDB 4,X STD CALCVAL PULX ;Get the RETURN address PULA ;Clean up the STACK PULY PSHX ;Return RETURN address to STACK RTS ****************************************************************** TEXT STORAGE * *****************************************************************USEC FCB ' uS ' FCB $04 STARTIT FCB ' Start = ' FCB $04 PW FCB ' Pulse Width = ' FCB $04 ****************************************************************** FUEL CONTROL MAP * ***************************************************************** ORG $C600 FCB !90,!130,!145,!161,!163,!165,!167,!169 FCB !173,!171,!169,!165,!163,!161,!159,0 FCB !85,!120,!133,!157,!158,!160,!162,!163 FCB !164,!163,!161,!159,!157,!155,!154,0 FCB !80,!110,!125,!141,!142,!143,!145,!153 FCB !153,!153,!148,!146,!144,!142,!141,0 FCB !75,!105,!115,!123,!129,!131,!133,!137 FCB !143,!141,!139,!135,!131,!127,!124,0 FCB !70,!90,!105,!117,!118,!122,!125,!130 FCB !131,!131,!127,!125,!122,!119,!118,0 FCB !65,!70,!95,!110,!111,!115,!119,!125 FCB !127,!126,!123,!120,!116,!113,!112,0 FCB !60,!62,!80,!104,!105,!110,!111,!117 FCB !119,!117,!111,!108,!107,!106,!105,0 FCB !55,!56,!72,!97,!98,!99,!103,!110 FCB !113,!111,!107,!102,!101,!99,!98,0 FCB !50,!51,!68,!87,!88,!90,!96,!101 FCB !106,!103,!98,!95,!93,!91,!90,0 FCB !44,!45,!62,!75,!79,!85,!92,!98 FCB !101,!99,!93,!90,!86,!85,!84,0 FCB !42,!43,!55,!71,!76,!80,!84,!89 FCB !92,!89,!86,!83,!81,!75,!73,0 FCB !40,!41,!43,!52,!58,!63,!67,!73 FCB !71,!73,!69,!97,!65,!63,!61,0 FCB !37,!37,!37,!41,!48,!54,!58,!61 FCB !63,!61,!59,!57,!55,!54,!53,0 FCB !36,!36,!36,!38,!42,!47,!51,!54 FCB !55,!53,!51,!50,!48,!47,!46,0 FCB !34,!34,!34,!35,!38,!42,!46,!48 FCB !49,!47,!45,!44,!43,!42,!41,0 FCB !27,!27,!28,!29,!31,!33,!35,!37 FCB !38,!37,!35,!33,!31,!30,!29,0 ****************************************************************** COLD START ENRICHMENT TABLE * ***************************************************************** ORG $C700 FCB !120,!110,!100,!90,!80,!75,!70,!65 FCB !60,!55,!50,!45,!40,!35,!30,!20 END ------------------------------ End of DIY_EFI Digest V2 #233 ***************************** To subscribe to DIY_EFI-Digest, send the command: subscribe diy_efi-digest in the body of a message to "Majordomo@xxx. A non-digest (direct mail) version of this list is also available; to subscribe to that instead, replace "diy_efi-digest" in the command above with "diy_efi".