its very similar to the schematic ive included, with the exception that i drive the 7219 directly, and this schematic uses an additional hex inverter.
The interesting thing is that it is able to drive the 7219 using only 2 wires (plus power and ground), and this is verified by looking at the actual PCBS based off the circuit.
I tried to recreate the circuit, however i didnt have the same hex buffers that were shown on the schematic. Im thinking that that is my issue, as the ones used are 74HC14 (hex inverter with schmitt trigger) and what i had were just regular hex inverters.
its not that i need the extra pins, but i have had some interest in making my sketch work with existing hardware already out there.
what happens with the regular hex inverter is the segment displays all just show 8s.
my question is, is it due to the schmitt trigger that makes the circuit work as expected? or is would it be a different way of coding the functions that output to the segments?
currently using the LedControl library to talk to the 7219. using a mega2560
The top left part of the circuit is a monostable implemented using an RC stage, a diode to the triggering
clock input, and this requires schmitt-trigger gates on the output to prevent oscillations and multiple
output spikes and/or runt pulses going on to the 7219 enable pin. The circuit functions to delay rising
edges from the clk input.
There out to be a 220 ohm resistor in series with that clk input to limit the current through the
diode and capacitor, as its way too large a capacitive load for a logic signal.
MarkT:
The top left part of the circuit is a monostable implemented using an RC stage, a diode to the triggering
clock input, and this requires schmitt-trigger gates on the output to prevent oscillations and multiple
output spikes and/or runt pulses going on to the 7219 enable pin. The circuit functions to delay rising
edges from the clk input.
There out to be a 220 ohm resistor in series with that clk input to limit the current through the
diode and capacitor, as its way too large a capacitive load for a logic signal.
great thanks for the quick answer. ive ordered the schmitt triggers. as for the resistor, this schematic is from a commercially produced product. (maybe they engineered it to fail? lol)
code wise, the LEDControl library makes calls using the enable pin to update the 7219, so what would i specify as the pin number for that? the clock pin since thats where its getting its signal from? or would i have to rewrite some functions and eliminate the references to the enable pin?
OK, the problem here is in fact the monostable. If you use a standard library, the crude implementation of a monostable will not initialise sufficiently quickly. The library must be modified so that the first LOW on the clock line in a data sequence is stretched for a few ms in order for the monostable to respond.
MarkT:
If you are directly driving the 7219 from a microcontroller, there is no need for any delay circuits,
the code can do that.
That is how i do it now, but this schematic is for a board that exists already on a large number of similar games that are commercially produced. i have had interest from a number of people who own the commercially produced version to be able to use my sketch on their hardware.
to do that, i need to know how to deal with the delay circuit that their boards have so that my sketch is virtually plug and play for them.
Paul__B:
OK, the problem here is in fact the monostable. If you use a standard library, the crude implementation of a monostable will not initialise sufficiently quickly. The library must be modified so that the first LOW on the clock line in a data sequence is stretched for a few ms in order for the monostable to respond.
i think i need to learn a little bit about monstables haha. im fairly new to the hardware side of things. i have a slightly more than basic understanding of electronics, but learning something new daily.
After much reading, and many videos on schmitt triggers and monostables, i THINK i understand how this schematic is working...
based on my new understanding, the clock signal is fed into the schmitt trigger, which stabilizes the clock pulse into a stable squarewave. it branches off from there and feeds the clock input on the max7219.
the other branch feeds the monostable. which will charge the cap on the high pulse, and the cap will discharge on the low pulse maintaining the high signal just long enough to catch the next clock pulse, effectively keeping the signal to the load pin on the max7219 held high for as long as the clock signal is pulsing.
once the clock pin stops pulsing, the cap discharges for the last time, and the load pin drops low, latching the data into the segment displays.
As long as LOW clock pulses keep arriving, the ~E pin will be pulled LOW and when they time out, it will go HIGH to latch the information.
As I pointed out, if the clock pulses are too fast, the ~E pin will not be able to catch the first one and your whole sequence will be mangled. The first LOW on the clock line must be stretched; after that it does not matter.