GM (160)23262 A to D chip

T Hergen thergen at svn.net
Sat Jun 6 06:01:09 GMT 1998


Ludis,

This looks like a National ADC0829, TI TL532/TL533, and Motorola MC14442
(Mot number referenced in TI databook - I couldn't verify the number). Bit
7 is listed (National and TI) as a don't care (a real "x", not a constant
0 or 1).  Pin 1 is agnd, pin 2 is gnd, pin 28 is Vref (channel 1 also, as
you found), pin 27 is vcc.  It is listed as a low power, 50mW device, in
case you're still calculating your power budget;) 

Your reverse engineering job looks accurate.

Let me know if you need more info.

Tom

On Fri, 5 Jun 1998, Ludis Langens wrote:

> Has anyone figured out all the registers/bits of the A to D chip used in
> most (all?) GM C3 ECMs?  This 28 pin DIP is usually marked with the part
> number 23262.  I have a question about one control bit.  First, here's
> what I've figured out:
> 
> \/\/\/
> 
> Offset 0 - read (only) : A2D conversion result register
> 
>   bit  15   : conversion complete (1)
>   bits 14-8 : 0
>   bits 7-0  : conversion result (0 to 255)
> 
> Offset 2 - write : A2D Control/Status register
> 
>   bits 15-9 : unused, written as 0
>   bit  8    : start conversion (1)
>   bit  7    : unknown
>   bits 6-4  : unused, written as 0
>   bits 3-0  : mux selector (0 to 15)
> 
> Offset 2 - read : A2D Control/Status register
> 
>   bit  15   : analog channel 15 > ~1.4 volts
>   bit  14   : analog channel 14 > ~1.4 volts
>   bit  13   : analog channel 13 > ~1.4 volts
>   bit  12   : analog channel 12 > ~1.4 volts
>   bit  11   : analog channel 11 > ~1.4 volts
>   bit  10   : analog channel 10 > ~1.4 volts
>   bits 9-6  : mux selector (0 to 15)
>   bits 5-0  : 0
> 
> 
> Only analog channels 0, 2 to 5, and 10 to 15 are implemented/bounded
> out.  Channel 1 appears to be internally connected to VCC.  Channels 6
> to 9 are not connected and float at random intermediate voltages.
> 
> All writes need to be performed as a 16 bit write, single byte writes
> are ignored.  An 8 bit read will transfer the upper byte (bits 15-8) of
> the selected register.
> 
> A hardware reset clears the conversion complete flag, clears the
> conversion result to 0, and switches the mux to channel 0.
> 
> A (word) write to the Control/Status register clears the conversion
> complete flag, even if the start conversion bit was not set.  The
> conversion result byte retains a previous value until a new value is
> loaded (and the conversion complete flag is set.)  The following code
> fragment demonstrates the earliest cycle in which the conversion
> complete flag will be set.
> 
>     LDD #$0100
>     STD $1002
>     MUL        ; waste 10 E cycles
>     MUL        ; waste 10 E cycles
>     NOP        ; waste 2 E cycles
>     LDD $1000  ; burn 3 E cycles, then read $1000
>     BPL HardwareError
>     STAB ChannelZeroResult
> 
> /\/\/\
> 
> What does bit 7 of control register writes do?  I have been unable to
> observe any effects of this bit.
> 
> Several ECMs always write a zero into this bit.  Several other ECMs
> always write a one.  This is done in the A2D subroutine by ORing the mux
> selector with a RAM variable.  This variable is initialized to 0x80 and
> never changed.
> 
> Bit 7 does not:  Alter the conversion time.  Cause any change in the
> conversion results.  Cause anything to appear in the "0" read bits.
> 
> This chip has two VCC and two GND connections.  The GNDs are both wired
> together.  The VCCs are both connected to the VCC supply, though with
> seperate circuit board traces (double sided board.)  Perhaps bit 7
> switches the full scale reference voltage between the two VCCs.
> 
> Perhaps bit 7 turns on/off a high impedance pull-up on the analog
> inputs.  This might simplify using channels 10 to 15 as digital inputs. 
> However, the pull-up would have to be a very high impedance.  (Most
> inputs to the A to D chip are from high impedance sources.  See two
> paragraphs back.)
> 
> The ECMs which clear bit 7 have at least one digital input via the A to
> D chip.  ECMs which set bit 7 don't.  However, the clearing ECMs also
> have serious code space limitations.
> 
> The bit 7 ORing might be left over from prototype and or special
> calibrator hardware.  This is consistent with the initialized but never
> changed RAM variable.
> 
> Does anyone have any other ideas/information?
> 
>                unsigned long BinToBCD(unsigned long i) {unsigned long t;
> Ludis Langens     return i ? (t = BinToBCD(i >> 1), (t << 1) + (i & 1) + 
> ludis at cruzers.com            (t + 858993459 >> 2 & 572662306) * 3) : 0;}
> 
> 




More information about the Diy_efi mailing list