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
I think you are asking the specs of the driving chip? 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).
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).
There are separate BCD outputs, in addition to the LED drivers abcdefg. So he could use the muxs to latch the bcd data into shift registers. After 16 bits are latched, clock them out with start and stop bits.
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.
--- 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.
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:
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:
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.
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.
The device I am talking about is a Doppler Systems DDF4002 doppler direction finder. It is an older modele that once had a serial interface option which is no longer available.
Your observation about the update rate is quite correct and is covered in the manual for the DDF4002, The theory section of the manual describes almost exactly the data rate assumptions you have stated but qualifies it with:
"However, the message is initiated only when the display is updated. Since this occurs at a maximum rate of 1/1.875 (0.533) seconds, ample time exists between characters and between messages to prevent overrunning.
There is also a later hardware mod to raise the 16X clock (4800 Hz from main board) to 38,400 Hz to provide 2400 baud.
I understand that I may need a bi-polar power supply and line driver like a DF1488 am wary of USB beacause I don't know if any of the legacy amateur software that this will be used for has drivers for USB. Tell me more however.
Found a manual of the DDF1. That's a kits description but two important pages i.e.18 and 19 are carefully wiped out. Maybe a predecessor of the DDF4002 (or not).
Current information at Doppler Systems Inc. starts at 6000 series. No trace of the 4002 ever existed. Does your manual contain a schematic or print layout?
Yes you need to be compatible with software that expects RS-232. This means that you do not need a UART chip. All a UART chip does is make a signal wiggle up and down with a certain pattern. It is often easier to just make the signal you want rather than adapt to some chip.
Example: A simple counter driving a 4051 MUX or two or three can make perfectly good RS-232 data out of some small collection of logic signals.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.