Introduction.
This note illutrates how to interface with the
The TPIC series of logic from TI is interesting in that the control interface uses TTL compatible logic (logic 0 near ground and logic one near +5 VDC), but the outputs are open drain FETs which are capable of sinking up to 250 mA per output with up to 40VDC outputs which may be used to drive relays, small lamps and similar. It is readily available from a number of sources, including Digikey for about $3.00.
The specific one of eight outputs to be addressed is determined by inputs S2, S1 and S0. The desired state of the output is determined by the state appearing on input D. The data is latched into the flip flop by bringing /G momentarily low.
Note that a logic one on the 'D' input which is then latched causes the output DMOS transistor to turn on. That is, the output goes to near ground causing the relay or lamp to operate. A logic zero on 'D' causes the output transistor to turn off.
All outputs may be turned off by applying a logic zero on the CLR input.
The TPIC6259 provides separate logic and power grounds. When configuring your circuit, connect the logic ground (LGND) to the processor ground. However, run a seaparate lead from the power ground (PGND) back to the supply using a separate lead. This avoids L-di/dt transients in the processor's ground which can raise havoc with processor resets and other erratic behavior.
One might question the wisdom of using six outputs to obtain a mere eight powwer outputs. However, this can be easly increased to 16 power outputs, or even 24 outputs by using either two or three TPIC6259 devices. Leads D, S2, S1, S0 and /CLR may be shared by all of the TPIC devices. The "cost" is simply providing a separate /G terminal for each TPIC6259 device.
Thus, to operate bit 3 on TPIC 2 is a matter of setting S2, S1 and S0 to 011, D to 1 and then bringing G2 momentarily low and again high to latch the data.
In program TPIC6259_1.Bas, I am controlling only a single TPIC6259 device. Program TPIC6259_2.Bas expands this control to three TPIC devices providing 24 power outputs.
Program TPIC6259_1.Bas
' TPIC6259_1.Bas (PICAXE-18X) ' ' Illustrates an interface with the Texas Instruments TPIC6259 8-bit ' Addressable Latch with FET Outputs. ' ' Initially clears all eight oututs. ' ' Operates output Drain 0 for a period of time and then releases it. ' This is repeated for output Drain 1, 2 and 3. ' ' PICAXE-18X TPIC6259 ' ' Output5 (term 11) ----------------- /G (term 13) ' Output4 (term 10) ----------------- CLR (term 19) ' Output3 (term 9) ------------------ D (term 18) ' ' Output2 (term 8) ------------------ S2 (term 12) ' Output1 (term 7) ------------------ S1 (term 8) ' Output0 (term 6) ------------------ S0 (term 3) ' ' Uses about 128 bytes and could probably be accommodated in a less expensive ' PICAXE-18A. ' ' copyright, Peter H Anderson, Baltimore, MD, May, '04 Symbol LatchDataBit = B0 ' 0 or 1 Symbol LatchSelectAddress = B1 ' 0 - 7 Symbol CurrentPORTB = B2 Symbol D = 3 ' Data Symbol CLR = 4 ' Clear all TPIC6259 outputs Symbol G0 = 5 Main: High G0 Low CLR ' clear all outputs High CLR Main_1: LatchDataBit = 1 LatchSelectAddress = 0 GoSub Latch Pause 200 LatchDataBit = 0 LatchSelectAddress = 0 GoSub Latch LatchDataBit = 1 LatchSelectAddress = 1 GoSub Latch Pause 200 LatchDataBit = 0 LatchSelectAddress = 1 GoSub Latch LatchDataBit = 1 LatchSelectAddress = 2 GoSub Latch Pause 200 LatchDataBit = 0 LatchSelectAddress = 2 GoSub Latch LatchDataBit = 1 LatchSelectAddress = 3 GoSub Latch Pause 200 LatchDataBit = 0 LatchSelectAddress = 3 GoSub Latch Goto Main_1 Latch: ' set the output identified in LatchSelectAddress to state D High G0 ' be sure G is high Peek $06, CurrentPORTB ' determine current sate of outputs Pins = CurrentPORTB & %11111000 | LatchSelectAddress ' setup S2, S1 and S0 Branch LatchDataBit, (Latch_0, Latch_1) ' set D to appropriate state Latch_0: Low D Goto Latch_2 Latch_1: High D GoTo Latch_2 Latch_2: Low G0 ' latch the D into the addressed flip flop High G0 Return
Program TPIC6259_2.Bas
' TPIC6259_2.Bas (PICAXE-18X) ' ' Illustrates an interface with three Texas Instruments TPIC6259 8-bit ' Addressable Latches. ' ' Initially clears all eight oututs on each of the three latches. ' ' Operates output Drain 4 on Device 0 for a period of time and then releases it. ' This is repeated for output Drain 5 on Device 0, Drain 6 on Device 1 and Drain 7 ' on Device 2. ' ' PICAXE-18X TPIC6259 TPIC6259 TPIC6259 ' Dev 0 Dev 1 Dev 2 ' ' Output7 (term 13) ---------------------------------------------------------- /G (term 13) ' Output6 (term 12) ----------------------------------------- /G (term 13) ' Output5 (term 11) ----------------- /G (term 13) ' Output4 (term 10) ----------------- CLR (term 19) --------- CLR ------------ CLR ' Output3 (term 9) ------------------ D (term 18) ----------- D -------------- D ' ' Output2 (term 8) ------------------ S2 (term 12) ---------- S2 ------------- S2 ' Output1 (term 7) ------------------ S1 (term 8) ----------- S1 ------------- S1 ' Output0 (term 6) ------------------ S0 (term 3) ----------- S0 ------------- S0 ' ' Uses about 174 bytes and could probably be accommodated in a less expensive ' PICAXE-18A. ' ' copyright, Peter H Anderson, Baltimore, MD, May, '04 Symbol LatchDataBit = B0 ' 0 or 1 Symbol LatchSelectAddress = B1 ' 0 - 7 Symbol DeviceNum = B2 ' 0, 1, 2 Symbol GateSelect = B3 Symbol CurrentPORTB = B4 Symbol D = 3 ' Data Symbol CLR = 4 ' Clear all TPIC6259 outputs Symbol G0 = 5 Symbol G1 = 6 Symbol G2 = 7 Main: High G0 Low CLR ' clear all outputs High CLR Main_1: DeviceNum = 0 LatchSelectAddress = 4 LatchDataBit = 1 GoSub Latch Pause 200 DeviceNum = 0 LatchDataBit = 0 LatchSelectAddress = 4 GoSub Latch DeviceNum = 0 LatchDataBit = 1 LatchSelectAddress = 5 GoSub Latch Pause 200 DeviceNum = 0 LatchDataBit = 0 LatchSelectAddress = 5 GoSub Latch DeviceNum = 1 LatchDataBit = 1 LatchSelectAddress = 6 GoSub Latch Pause 200 DeviceNum = 1 LatchDataBit = 0 LatchSelectAddress = 6 GoSub Latch DeviceNum = 2 LatchDataBit = 1 LatchSelectAddress = 7 GoSub Latch Pause 200 DeviceNum = 2 LatchDataBit = 0 LatchSelectAddress = 7 GoSub Latch Goto Main_1 Latch: ' set the output identified in LatchSelectAddress on the specified device to state D Peek $06, CurrentPORTB Pins = CurrentPORTB | %11110000 ' be sure G2, G1 and G0 at one, /CLR at 1 Peek $06, CurrentPORTB Pins = CurrentPORTB & %11111000 | LatchSelectAddress ' setup S2, S1 and S0 Branch LatchDataBit, (Latch_0, Latch_1) ' set D to appropriate state Latch_0: Low D Goto Latch_2 Latch_1: High D GoTo Latch_2 Latch_2: Lookup DeviceNum, (%11000000, %10100000, %01100000), GateSelect Peek $06, CurrentPORTB Pins = CurrentPortB & %00011111 | GateSelect ' bring appropriate gate bit low Pins = CurrentPortB | %11100000 ' bring it back to high Return