• Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

Options to replace 82C54 Programmable Interval Timer

Thread starter #1
I worked out a way to get an Arduino to handle a task here at work involving a variable frequency (0.1Hz to 100.0Hz), variable duty cycle (1% to 99%) pulse train, a 2 line by 16 character LCD display, and RS485 communications by using an old Intel 82C54 Programmable Interval Timer to generate the pulse train so the Arduino can keep up with everything else. The pulse train needs to be accurate to within a few µs.

I can get the Arduino to keep up with two out of three tasks by itself but the third disrupts the pulse train to an extent where we can't trust its accuracy.

I'd rather not use a chip quite as dated as a 82C54 and in a wide body DIP package but the searches I've done haven't turned up any other simple to wire and understand options. Aside from using a more powerful processor, or maybe a Cypress PSoC 3, are there any other more recent devices with three programmable 16-bit counters? how about one with a serial interface?

We have a lot of noobs here and little time to lay out custom PCB's. That's why I prefer to use Arduinos for a lot of these basic testing chores. We also got a good deal and have scads of these parallel interface LCD displays.
Thread starter #4
32KHz = 31µs resolution which is about a tenth of the accuracy we need. 100Hz @ 1% duty cycle = 100µs pulses. We need them to be more accurate than ±31%, small enough to carry in a troubleshooter's toolbox, and simple enough for a recent vocational school graduate to grasp.

What I like about the 82C54 is I can just upload the timing parameters: an arbitrary 16-bit divider for the 8 MHz clock into timer 1 which clocks the other two timers, an arbitrary 16-bit on period into timer 2 configured as a monostable triggering timer 3, and an arbitrary 16-bit off period into timer 3 that's likewise configured as a monostable triggering timer 2. It unfortunately requires more I/O than an Arduino Uno provides without adding some kind of I/O expander which defeats the one chip solution I'm hoping for.

I figure the best way to go at this point is to just use an Arduino Mega with four 16-bit timers and no additional silicon beyond a prototyping shield for connecting pullups and debouncing. Yesterday's search for other options didn't turn up anything better.

Latest threads

EE World Online Articles