From: MooseFET on
On Dec 27, 1:52 pm, RFI-EMI-GUY <Rhyol...(a)NETTALLY.COM> wrote:
> I have a device that has a three digit LED display. The chip that drives
> the LED also has four Binary Weighted outputs (1,2,4,8) and three
> address pins for 100's, 10's and units. I want to drive a FIFO UART of
> some sort to output an RS232 stream so that this device can update a
> software program. Baud rate 300 to 4800 range would be nice if possible.
>
> The updates are about 300/second
>
> Is there a real simple hardware FIFO UART that can do this without a lot
> of extra hardware. I don't want a software fix unless I can do it in
> PicAxe and can find code written.

I think it would be easier without the FIFO UART. You just want a
signal that looks like the RS-232. You don't really need a RS-232
receive function at all unless you want to use it to set the Baud
rate.

>
> Off the shelf products OK I don't want to reinvent the wheel.
>
> --
> Joe Leikhim K4SAT
> "The RFI-EMI-GUY"©
>
> "Use only Genuine Interocitor Parts" Tom Servo  ;-P

From: John Fields on
On Sun, 27 Dec 2009 21:20:10 -0500, RFI-EMI-GUY <Rhyolite(a)NETTALLY.COM>
wrote:

>John Fields wrote:
>> On Sun, 27 Dec 2009 16:52:22 -0500, RFI-EMI-GUY <Rhyolite(a)NETTALLY.COM>
>> wrote:
>>
>>> I have a device that has a three digit LED display. The chip that drives
>>> the LED also has four Binary Weighted outputs (1,2,4,8) and three
>>> address pins for 100's, 10's and units. I want to drive a FIFO UART of
>>> some sort to output an RS232 stream so that this device can update a
>>> software program. Baud rate 300 to 4800 range would be nice if possible.
>>>
>>> The updates are about 300/second
>>>
>>> Is there a real simple hardware FIFO UART that can do this without a lot
>>> of extra hardware. I don't want a software fix unless I can do it in
>>> PicAxe and can find code written.
>>>
>>> Off the shelf products OK I don't want to reinvent the wheel.
>>
>> ---
>> The way I'd do it would be to broadside load a 10 bit parallel-in
>> serial-out shift registers with the BCD data, the digit data, a stop and
>> a start bit, and then shift the data out serially to the RS-232 input of
>> whatever's updating your software program.
>>
>> If the broadside data into the shifter is updating at about 300Hz,
>> that's about 3.33ms, so to shift it all out before the next update comes
>> along would require a bit clock at least 10 times faster than that, or
>> about 333�s/3.3kHz.
>>
>> Duck soup, maybe. ;)
>>
>> What's the chip that's driving the display?
>>
>> JF
>
>Its an ICM7217IJI Common Cathode 4 LED Display/Programmable Up/Down
>Counter. The BCD I/O pins and the segment drivers b, d and f (d1, d2,
>d3) used to select 100's. 10's and units (I may have order reversed).

---
According to the schematic, the segment drivers are only used to drive
segments and the digit drivers are used to select which digit is being
driven, multiplexed at 25% duty cycle.

So, if you were to do something like this:

ICL7217
.. +------+
.. | D1|--------------------------------------+
.. | D2|-----------------------------------+ |
.. | D3|--------------------------------+ | |
.. | D4|-----------------------------+ | | |
.. | I/O1|--------------------------+ | | | |
.. | I/O2|-----------------------+ | | | | |
.. | I/O4|--------------------+ | | | | | |
.. | I/O8|-----------------+ | | | | | | |
.. +------+ | | | | | | | |
.. U1 | | | | | | | |
.. +------------------------+
.. | Dh Dg Df De Dd Dc Db Da|
..CLK>--+-----------------|> |
.. | |____ | U2
..LOAD--|-+--------------O|LOAD 74HC165 |
| | | |
.. | | +--|Sin Qh|--+
.. | | | +------------------------+ |
.. | +------------|----------------------------+ |
.. +-|------------|--------------------------+ | |
.. | | HC74 | | | | HC74
.. | | +------+ | | | | +------+
.. | +--|R Q|--+ | | +----|D Q|-->OUT
.. +----|> | | +------|R |
..Vcc>----+--|R | +--------|> |
.. +--|D | Vcc--|S |
.. +------+ +------+
U3A U3B

Then, when LOAD went low, U3 would generate a start bit, U2 would hold
the segment and digit data, and U3A would generate the stop bit, all of
which would be shifted out of U3B-Q at a rate determined by CLK.

According to page 6 of the 7217 data sheet, when LOAD COUNTER goes
3-state, the 4 bit I/O port will output BCD segment data peculiar to one
of the four digits when that digit line go high, so differentiating the
low-going edge of the digit pulses to load data into U2 and the start
and stop bits into E3 would look like this:

________
DIGITn_____| |_______________

_____ ________ ______________
DATAn _____|________|______________

____ ______________ _____________
LOAD |_|
_______________ _______________
DATAl_______________|_______________


After loading the parallel data into U2 and setting up the start and
stop bits, serial data in the registers would look like this, LSB on the
left:

____ ______________ _____________
LOAD |_|

______________ __ __ __ __ __ __ __ __ __________
SD |__|__|__|__|__|__|__|__|__| \
/ Da Db Dc Dd De Df Dg Dh \
START STOP

Notice that the numerical data as well as the digit ID is embedded in
the frame, so it should be easy for your software to sort out what's
what as data comes rolling in

Next, you'll need to generate a LOAD pulse when any of the digit lines
goes low, and you can do that like this:

Vcc
|
[10K]
+-------------A |
+-----+ | +-----+ NAND Y--[<1N4148]--+
DIGIT1>------|D Q|-+-|D Q| +--B |
| _| | _| | |
CLK>-------+-|> Q| +-|> Q|O-+ |
| +-----+ | +-----+ |
+---------+ |
| |
| +-------------A |
| +-----+ | +-----+ NAND Y--[<1N4148]--+
DIGIT2>----|-|D Q|-+-|D Q| +--B |
| | _| | _| | |
+-|> Q| +-|> Q|O-+ |
| +-----+ | +-----+ |
+---------+ |
| |
| +-------------A |
| +-----+ | +-----+ NAND Y--[<1N4148]--+
DIGIT3>----|-|D Q|-+-|D Q| +--B |
| | _| | _| | |
+-|> Q| +-|> Q|O-+ |
| +-----+ | +-----+ |
+---------+ |
| |
| +-------------A | ____
| +-----+ | +-----+ NAND Y--[<1N4148]--+-->LOAD
DIGIT4>----|-|D Q|-+-|D Q| +--B
| | _| | _| |
+-|> Q| +-|> Q|O-+
| +-----+ | +-----+
+---------+

The dflops are HC174's and the nands are HC00's

JF
From: John Fields on
On Mon, 28 Dec 2009 12:46:15 -0600, John Fields
<jfields(a)austininstruments.com> wrote:


> ICL7217
>. +------+
>. | D1|--------------------------------------+
>. | D2|-----------------------------------+ |
>. | D3|--------------------------------+ | |
>. | D4|-----------------------------+ | | |
>. | I/O1|--------------------------+ | | | |
>. | I/O2|-----------------------+ | | | | |
>. | I/O4|--------------------+ | | | | | |
>. | I/O8|-----------------+ | | | | | | |
>. +------+ | | | | | | | |
>. U1 | | | | | | | |
>. +------------------------+
>. | Dh Dg Df De Dd Dc Db Da|
>.CLK>--+-----------------|> |
>. | |____ | U2
>.LOAD--|-+--------------O|LOAD 74HC165 |
> | | | |
>. | | +--|Sin Qh|--+
>. | | | +------------------------+ |
>. | +------------|----------------------------+ |
>. +-|------------|--------------------------+ | |
>. | | HC74 | | | | HC74
>. | | +------+ | | | | +------+
>. | +--|S Q|--+ | | +----|D Q|-->OUT
>. +----|> | | +------|R |
>.Vcc>----+--|R | +--------|> |
>. +--|D | Vcc--|S |
>. +------+ +------+
> U3A U3B

---
Oops...

'R' at the top left of U3A should be S(ET), as corrected above.

JF
From: petrus bitbyter on

"RFI-EMI-GUY" <Rhyolite(a)NETTALLY.COM> schreef in bericht
news:4b3815d7$0$4949$9a6e19ea(a)unlimited.newshosting.com...
> John Fields wrote:
>> On Sun, 27 Dec 2009 16:52:22 -0500, RFI-EMI-GUY <Rhyolite(a)NETTALLY.COM>
>> wrote:
>>
>>> I have a device that has a three digit LED display. The chip that drives
>>> the LED also has four Binary Weighted outputs (1,2,4,8) and three
>>> address pins for 100's, 10's and units. I want to drive a FIFO UART of
>>> some sort to output an RS232 stream so that this device can update a
>>> software program. Baud rate 300 to 4800 range would be nice if possible.
>>>
>>> The updates are about 300/second
>>>
>>> Is there a real simple hardware FIFO UART that can do this without a lot
>>> of extra hardware. I don't want a software fix unless I can do it in
>>> PicAxe and can find code written.
>>>
>>> Off the shelf products OK I don't want to reinvent the wheel.
>>
>> ---
>> The way I'd do it would be to broadside load a 10 bit parallel-in
>> serial-out shift registers with the BCD data, the digit data, a stop and
>> a start bit, and then shift the data out serially to the RS-232 input of
>> whatever's updating your software program.
>>
>> If the broadside data into the shifter is updating at about 300Hz,
>> that's about 3.33ms, so to shift it all out before the next update comes
>> along would require a bit clock at least 10 times faster than that, or
>> about 333�s/3.3kHz.
>>
>> Duck soup, maybe. ;)
>>
>> What's the chip that's driving the display?
>>
>> JF
>
> Its an ICM7217IJI Common Cathode 4 LED Display/Programmable Up/Down
> Counter. The BCD I/O pins and the segment drivers b, d and f (d1, d2, d3)
> used to select 100's. 10's and units (I may have order reversed).
>
> --
> Joe Leikhim K4SAT
> "The RFI-EMI-GUY"�
>
> "Use only Genuine Interocitor Parts" Tom Servo ;-P


Hmm... So 300 updates/s * 3 digits * 10 bits makes 9000bps. Even 4800Bd will
not be enough you will need at least 9600Bd.

Meanwhile, the scanrate is some 2500 digits/s. To send them all you would
need at least 25kbps. There is no need to send them all but you will need to
do some buffering and selection at the transmitting side.

Another complication is the updating itself. For all I can see there is no
other way to detect an update but finding some digit(s) changed. That's to
say unless you can catch the /STORE signal. But even then there seems no way
to predict at what time during the scanning of the three digits that signal
occurs. So you need to store two sets of digits and compare them. Only when
two successive sets are equal you may have a valid output. Otherwise one or
even both may be deformed.

I consider the chance to find an of the shelf solution pretty small.
Building a circuit that account for all details mentioned requires quite a
lot of hardware. Today, designers will use some programmable device like a
PLD or an FPGA. But the moment you're going to program a device you may get
a micro as well. A PIC16F628 or a PICAXE-28X2 will do the job... But yes, it
need to be programmed.

If you want me to do something like that for you, mail me at
petrusdotbitbyterathotmaildotcom.

petrus bitbyter


From: whit3rd on
On Dec 27, 1:52 pm, RFI-EMI-GUY <Rhyol...(a)NETTALLY.COM> wrote:
> I have a device that has a three digit LED display. The chip that drives
> the LED also has four Binary Weighted outputs (1,2,4,8) and three
> address pins for 100's, 10's and units. I want to drive a FIFO UART...

> Is there a real simple hardware FIFO UART that can do this

The RS-232 requirement will be somewhat awkward, depending
on what power supplies are available; have you considered
USB instead? The FTDI device "FT245R" is a FIFO-input
USB slave device, with software support. I'd imagine you
can clear the FIFO and clock eight bits of address-and-BCD
data (four BCD bits and three 'digit enable' flags) as the
display is updated. Maybe the 'extra' bit could be used for
overflow or other error indicator.