From: MooseFET on 28 Dec 2009 10:50 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 28 Dec 2009 13:46 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 28 Dec 2009 13:54 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 28 Dec 2009 14:56 "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 28 Dec 2009 15:31
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. |