The Niximatrix is a sight to behold!! I must dig mine out....... Do you
have any more kits Jon?

Nick

On Tue, Jan 9, 2024 at 12:55 AM Jon <dekat...@nomotron.com> wrote:

> >For the hardware I was thinking that one of the 595's would connect to
> low sided drivers (MPSA42 etc) to ground the required cathodes whilst the
> other 595 would connect to high sided drivers (MPSA42+MPSA92 etc) to
> connect the >desired anode to the HV supply
>
> Yes, that approach works really well. See this clock from a few years
> back: https://youtu.be/4FnxWsp58EM
>
> Each six tube row is a 2 x 3 multiplex controlled by a pair of 595s
> driving discrete transistor high-side drivers for the anodes, low side
> drivers for the decimal points and a pair of Russian K155ID1 (near
> equivalents of the 141) to decode and low side drive the digits. The
> K155ID1 route was chosen instead of a regular logic decoder and discrete
> low side drivers to save board space without getting into lots of fiddly
> SMD stuff. And then each of the seven rows simply have their pairs of 595s
> hooked up to make a 14 device total daisychain that controls the whole
> display. There's a single PIC18 running the show which bit blasts display
> refreshes down the daisychain  as well as managing USB comms, talking to a
> DS3232 RTC - plenty of compute time and power to do that. The nice thing is
> that this approach reduces all the display composition and management to
> software - multiplexing, cross-fading, all the funky display animations
> shown in the video; it's all just a matter of figuring out what bits to set
> when in the 144 bit output stream. Took me right back to my programming
> roots writing for bit-mapped displays on 8 bit micros in the early 80s! :)
>
> Jon.
>
>
> On Tuesday, January 9, 2024 at 5:03:52 AM UTC Richard Scales wrote:
>
>> @ David - that is an interesting idea - I did that already in another
>> design  where I wanted to reduce the workload on an ESP8266 so I used a
>> Teensy running a state machine based piece of code to do the heavy lifting
>> - the ESP8266 just fed data to the Teensy over a serial connection - I kid
>> you not - it works really well - though that is all running a lot slower
>> than what I need for this multiplexed display project.
>> I am actually hoping to do it all on ESP8266 this time round with a
>> couple of 595's driven via SPI transfers and some state-machine based code
>> which manages the display.
>>
>> The next part of my planning is to gain the understanding of what delays
>> are required and where.
>>
>> I am broadly assuming that I need to do things in the following order:
>>
>> {
>> Set the cathodes for the number to be displayed
>> Delay before turning on anode
>> Set the desired anode on
>> Wait for the desired 'anode on' time
>> Set the anode off
>> Wait for the desired 'anode off ' time
>> Increment the current anode number (reset to 0 if we got past the max)
>> }
>>
>> In this way, the anode on and off times can be set - thus controlling
>> fading etc
>>
>> My next question is - do I need to wait at all after setting the cathodes
>> up and before turning the required anode on?
>>
>> For the hardware I was thinking that one of the 595's would connect to
>> low sided drivers (MPSA42 etc) to ground the required cathodes whilst the
>> other 595 would connect to high sided drivers (MPSA42+MPSA92 etc) to
>> connect the desired anode to the HV supply.
>>
>> I was then thinking that all anodes and cathodes would connect to
>> something like 80V via a suitable resistance - as per the Bally schematic
>> for driving multiplexed panaplex displays in pinball machines.
>>
>> As detailed here: bally_as2518_15_6digit.pdf (pinitech.com)
>> <https://www.pinitech.com/retrofit/schematics/bally_as2518_15_6digit.pdf>
>>
>> Am I anywhere near the right track on any of this?
>>
>> - Richard
>>
>>
>> On Friday 3 November 2023 at 12:12:03 UTC David Pye wrote:
>>
>>> Hi,
>>>
>>> Next time I do a clock, I am going to separate my hw into 2:
>>>
>>> A cheap ARM based MCU using SPI/DMA to do multiplexing and dimming, with
>>> enough IO to drive anodes and cathodes via individual transistors, with
>>> Comms to the main MCU via spi or i2c.
>>>
>>> An esp32 or esp8266 to provide application logic
>>>
>>> Using the ARM MCU and transistors solves the issues with the HV driver
>>> ICs needing 9v and both the STM32 and the esp8266 can communicate with 3v3
>>> signal levels and will be cheaper albeit with higher component count.
>>>
>>> David
>>>
>>> On Fri, 3 Nov 2023, 11:15 Mike Mitchell, <mmit...@gmail.com> wrote:
>>>
>>>> That's basically what I'm doing for my simple case.  The upkeep work is
>>>> done after tubes are energized, where I have significantly more time before
>>>> the next event.  The off time is only 200us so I don't do anything during
>>>> the off time.  With the fast processors of today you could do "quick"
>>>> things in the off time, but any complex computation I'd put in the longer
>>>> on time.  I'm using the FastLED module to drive a short string of LEDs
>>>> during my "DISP_EVEN" time, but calculate what to put into the LEDs in the
>>>> "DISP_ODD" time.
>>>>
>>>> On Friday, November 3, 2023 at 12:43:40 AM UTC-4 Richard Scales wrote:
>>>>
>>>>> @Mike
>>>>> So, I have been getting my head around the whole state-machine
>>>>> concept. I have one I did before - curiously also running on  a Teensy but
>>>>> that was because I was worried about speed (I had no idea!).
>>>>> Regardless.
>>>>>
>>>>> Here is what I think my state-machine might look like:
>>>>>
>>>>> Set State to 'Turn Off Displays'
>>>>>
>>>>> :Main program loop
>>>>> If state = 'Turn off Displays' then turn off all the anodes and change
>>>>> state to 'Delay before turn on'
>>>>>
>>>>> //This state exists to allow the injection of any required delay
>>>>> between display of each digit / group of digits
>>>>> if state = 'Delay before turn on' then if there there has been
>>>>> sufficient delay, change state to 'Turn on desired display'
>>>>>
>>>>> //This state works out which cathodes and anodes to set and turns them
>>>>> on
>>>>> if state = 'Turn on desired display' then set the required cathodes
>>>>> and anodes and turn them on and change state to 'Display is on'
>>>>>
>>>>> //This state works out whether the display has been on long enough
>>>>> if state = 'Display is on' then has it been on long enough? If so,
>>>>> change state to 'Turn off Displays'
>>>>>
>>>>>
>>>>> Rest of clock code goes here - and by that I mean the business of
>>>>> working out what to display be it time, date, temp, pressure etc.
>>>>> Obviously everything must be non-blocking so if I want to do fancy
>>>>> things like scrolling messages then I assume that I will need to introduce
>>>>> more 'states' to control all that
>>>>>
>>>>> :End of main program loop
>>>>>
>>>>> I think this differs from yours in as much as I have lumped all the
>>>>> 'rest of clock code' into one place on the basis that it should not be
>>>>> blocking anything and execute quickly.
>>>>>
>>>>> Is this at all wise?
>>>>>
>>>>>  - Richard
>>>>>
>>>>>
>>>>> On Thursday, 2 November 2023 at 13:32:57 UTC Richard Scales wrote:
>>>>>
>>>>>> @Mike, many thanks.
>>>>>>
>>>>>> I'll work through that.
>>>>>>
>>>>>>  - Richard
>>>>>>
>>>>>>
>>>>>> On Thursday, 2 November 2023 at 12:20:53 UTC Mike Mitchell wrote:
>>>>>>
>>>>>>> My most recent Nixie project uses ZM1032 tubes.  They are a 9-pin
>>>>>>> tube, with five cathode pins and two anodes.  I'm using direct-drive on 
>>>>>>> all
>>>>>>> the cathodes, but skimp on the tens-of-hours digit where I only drive 
>>>>>>> three
>>>>>>> cathodes instead of all five.  I'm using four SN75468 darlington arrays 
>>>>>>> to
>>>>>>> drive the cathodes and two opto-isolators to drive the anodes, 
>>>>>>> multiplexing
>>>>>>> the anodes as all evens and all odds.
>>>>>>> I'm using a Teensy 4.1 processor to control everything, though I
>>>>>>> could have used an ESP32.  I just wanted something with a lot of pins to
>>>>>>> handle driving the 28 cathodes.  I'm not using a timing interrupt at 
>>>>>>> all.
>>>>>>> In the main loop I use the built-in arduino "micros()" call to keep 
>>>>>>> track
>>>>>>> of the time and compare it to the time of the next event.  I use a state
>>>>>>> variable to keep track of what to do next.  Here's some pseudo code:
>>>>>>>
>>>>>>> if (long)(micros() - timeNextDisp) >= 0 {
>>>>>>>   switch(dispstate) {
>>>>>>>     case DISP_DELAY_EVEN:
>>>>>>>       timeNextDisp = micros() + 200
>>>>>>>       turn off all anodes, turn on all cathodes
>>>>>>>       dispstate = DISP_EVEN
>>>>>>>       break;
>>>>>>>     case DISP_EVEN:
>>>>>>>       timeNextDisp = micros() + disp_even_time
>>>>>>>       turn off all cathodes
>>>>>>>       turn on appropriate cathodes
>>>>>>>       turn on even anode
>>>>>>>       dispstate = DISP_DELAY_ODD
>>>>>>>       /* split work between even/odd anodes */
>>>>>>>       read PIR
>>>>>>>       read GPS
>>>>>>>       break;
>>>>>>>     case DISP_DELAY_ODD:
>>>>>>>       timeNextDisp = micros() + 200
>>>>>>>       turn off all anodes, turn on all cathodes
>>>>>>>       dispstate = DISP_EVEN
>>>>>>>       break;
>>>>>>>     case DISP_ODD:
>>>>>>>       timeNextDisp = micros() + disp_odd_time
>>>>>>>       turn off all cathodes
>>>>>>>       turn on appropriate cathodes
>>>>>>>       turn on odd anode
>>>>>>>       dispstate = DISP_DELAY_EVEN
>>>>>>>       /* split work between even/odd anodes */
>>>>>>>       read RTC
>>>>>>>       read ADC
>>>>>>>       calculate time display values
>>>>>>>       break;
>>>>>>> }
>>>>>>>
>>>>>>> In my case the even digits are behind a screen electrode which
>>>>>>> blocks their light.  I keep the even digits on for about twice as long 
>>>>>>> as
>>>>>>> the odd digits to even out the brightness.  I could have increased the 
>>>>>>> even
>>>>>>> digit's current by reducing the even's anode resistor, but I decided to
>>>>>>> keep the current the same for even/odd and just increase the "on" time. 
>>>>>>>  My
>>>>>>> timings are roughly 10.1ms on for even, 0.2 ms for dead time, 5.1ms on 
>>>>>>> for
>>>>>>> odd, 0.2 ms dead time, for 15.625 ms per cycle (64 times a second).
>>>>>>> A more typical multiplexing scheme could have two state variables,
>>>>>>> one selects either displaying a digit or discharging the tube, the other
>>>>>>> selects what tube to display.
>>>>>>> On Thursday, November 2, 2023 at 12:56:33 AM UTC-4 gregebert wrote:
>>>>>>>
>>>>>>>> Where it all leads to, I think, is that you no longer need to do
>>>>>>>> custom logic design, and you can skip the need for certain ICs such as
>>>>>>>> realtime clocks, by switching to a software-based design, whether it's
>>>>>>>> RasPi, Arduino, or any other embedded controller.
>>>>>>>>
>>>>>>>> It's gotten so "bad" that I rarely need to use a scope or logic
>>>>>>>> analyzer to hunt down a bug. Several years ago I literally logged-in
>>>>>>>> remotely to the RasPi controlling my NIMO clock and did quite a bit of
>>>>>>>> software development and debug from thousands of miles away.
>>>>>>>>
>>>>>>>> Even now, I'm too lazy to get out of my chair, and go out into the
>>>>>>>> chilly garage to work on my Pi+FPGA board. Instead, I will write a new 
>>>>>>>> test
>>>>>>>> and run/debug logic simulations rather than push new (untested) code 
>>>>>>>> onto
>>>>>>>> the FPGA to see if it works.
>>>>>>>>
>>>>>>>> On Wednesday, November 1, 2023 at 9:23:25 PM UTC-7 Richard Scales
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Dual Core Processors - now my head really hurts - I mean - I love
>>>>>>>>> the idea but don't think my programming skills are ever going to 
>>>>>>>>> stretch
>>>>>>>>> that far!
>>>>>>>>> Just woke early (03.13) - still full of Covid and had a wrestles
>>>>>>>>> thinking session on this during which I reminded myself of all the 
>>>>>>>>> success
>>>>>>>>> that I have had with B-7971/ZM1350 Smart sockets - can you see where 
>>>>>>>>> this
>>>>>>>>> might be going?
>>>>>>>>>  - Richard
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Wednesday, 1 November 2023 at 16:29:32 UTC Craig Garnett wrote:
>>>>>>>>>
>>>>>>>>>> I'm using a Pico in my project, I run the tube driving routine on
>>>>>>>>>> one core and everything else on the rest so it doesn't suffer from
>>>>>>>>>> slowdowns.
>>>>>>>>>> I've had to introduce a delay to slow it down to a 1ms refresh!
>>>>>>>>>>
>>>>>>>>>> Craig
>>>>>>>>>> On Wednesday, 1 November 2023 at 15:47:33 UTC gregebert wrote:
>>>>>>>>>>
>>>>>>>>>>> Multiplexing might not be possible in certain software
>>>>>>>>>>> environments. Several years ago I switched to Linux-based Raspberry 
>>>>>>>>>>> Pi
>>>>>>>>>>> systems in my projects, and with the unpredictable overhead of 
>>>>>>>>>>> Linux I cant
>>>>>>>>>>> rely on the CPU being available every millisecond to update the 
>>>>>>>>>>> display.
>>>>>>>>>>> Instead of using Arduino or a custom OS, I add an FPGA or CPLD to 
>>>>>>>>>>> handle
>>>>>>>>>>> the time- critical tasks.
>>>>>>>>>>>
>>>>>>>>>>> Just by coincidence, I'm putting the final touches on the
>>>>>>>>>>> software and RTL code for a board I recently had fabbed to do this. 
>>>>>>>>>>> I know
>>>>>>>>>>> it's blasphemy, but the first project using this is LED-based...I 
>>>>>>>>>>> got a
>>>>>>>>>>> bunch of large 8x8 red/green LED arrays for just under 1 USD apiece 
>>>>>>>>>>> and the
>>>>>>>>>>> need a multiplexed driver. Dont worry, there are several nixie and
>>>>>>>>>>> nixie-ish projects in the pipeline that will use this board.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> [image: raspi_fpga.JPG]
>>>>>>>>>>>
>>>>>>>>>>> On Wednesday, November 1, 2023 at 8:19:48 AM UTC-7 Richard
>>>>>>>>>>> Scales wrote:
>>>>>>>>>>>
>>>>>>>>>>>> @Paul - I have no idea of the sense of scale and the relative
>>>>>>>>>>>> times taken. If I were to hang another HV driver on the chain with
>>>>>>>>>>>> associated electronics to switch the HV, is there going to be 
>>>>>>>>>>>> enough time
>>>>>>>>>>>> to do the following:
>>>>>>>>>>>>
>>>>>>>>>>>> Set the bits for the segments required- I add this step just in
>>>>>>>>>>>> case any settling time might be be required
>>>>>>>>>>>> Set the bits for the segments required and the anode(s) on
>>>>>>>>>>>> Wait for 400us (typical on time for the panaplex segments I
>>>>>>>>>>>> have in mind
>>>>>>>>>>>> Set the digits and anode(s) off again
>>>>>>>>>>>> Loop to the next set of digits
>>>>>>>>>>>>
>>>>>>>>>>>> With 12 individual anodes - there would be 12 passes - one for
>>>>>>>>>>>> each anode that needed to be switched on
>>>>>>>>>>>> If I used 2 drivers (using 3 x 16 bits for cathodes, I could
>>>>>>>>>>>> use bits from the remaining 16 to control the anodes. Thus there 
>>>>>>>>>>>> would be
>>>>>>>>>>>> only 3 passes.
>>>>>>>>>>>>
>>>>>>>>>>>> Please stop me when I've gone off the scent (still mid-covid)
>>>>>>>>>>>> :-(
>>>>>>>>>>>>
>>>>>>>>>>>> In Summary:
>>>>>>>>>>>> Using the HV55xx for cathodes AND anodes
>>>>>>>>>>>> Given i want 12 characters:
>>>>>>>>>>>> with 1 driver I have 16 segments and 16 spare for the 12 anodes
>>>>>>>>>>>> - easy but slowest
>>>>>>>>>>>> with 2 drivers I have 3 lots of 16 segments and then group the
>>>>>>>>>>>> displays into lumps of 4 (12 characters/3) and still have 16 bits 
>>>>>>>>>>>> to
>>>>>>>>>>>> control the anodes, of which there will now only be 3)
>>>>>>>>>>>>
>>>>>>>>>>>> Am I anywhere near close with the driver split and the
>>>>>>>>>>>> pseudocode for the ISR?
>>>>>>>>>>>> I was thinking that there should be some uS delays either
>>>>>>>>>>>> before and/or after lighting the segments
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> - Richard
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Wednesday, 1 November 2023 at 15:01:20 UTC Richard Scales
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> @David - many thanks for that caution though there will not be
>>>>>>>>>>>>> (nor ever will there be!) any LEDS for this project!
>>>>>>>>>>>>> @Pauld - thank you - I had thought of that but I was
>>>>>>>>>>>>> endeavouring to keep the code inside the ISR to an absolute 
>>>>>>>>>>>>> minimum so
>>>>>>>>>>>>> thought that it would be best handled outside of it and hence 
>>>>>>>>>>>>> separate from
>>>>>>>>>>>>> the HV chain. Using SPI.Transfer  to send 32, 64 or 96 bits - I 
>>>>>>>>>>>>> guess it
>>>>>>>>>>>>> all happens fairly quickly!
>>>>>>>>>>>>> @Benoit - I will look at that - ESP32 - another bridge thus
>>>>>>>>>>>>> far uncrossed!
>>>>>>>>>>>>>  - Richard
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Wednesday, 1 November 2023 at 14:54:53 UTC Benoit Tourret
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> if an ESP8266 is not enough powerful, the ESP32 will do the
>>>>>>>>>>>>>> job.
>>>>>>>>>>>>>> the ESP_WROVER can be a good platfom.
>>>>>>>>>>>>>> you should have a look to Mose's work on
>>>>>>>>>>>>>> https://neonixie.com/Z57XM6DV2/
>>>>>>>>>>>>>> the code is a bit "strong" as it can be used both on an 6
>>>>>>>>>>>>>> IV-9 clock and a more traditional  6 digits Z57, superb clocks, 
>>>>>>>>>>>>>> all they
>>>>>>>>>>>>>> need is addressable LEDs for a more colorful background. and 
>>>>>>>>>>>>>> deactivable.
>>>>>>>>>>>>>> the BH1750 luxmeter does a great job and is more sensible
>>>>>>>>>>>>>> than a standard photoresistor.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Le mercredi 1 novembre 2023 à 14:38:44 UTC+1, David Pye a
>>>>>>>>>>>>>> écrit :
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I offer you one caution with the ESP8266 boards - almost
>>>>>>>>>>>>>>> everything is implemented in the libraries in software rather 
>>>>>>>>>>>>>>> than onchip
>>>>>>>>>>>>>>> hw.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> That means doing things like updating addressable LEDs can
>>>>>>>>>>>>>>> cause the multiplexing to glitch slightly because of the need 
>>>>>>>>>>>>>>> to send LED
>>>>>>>>>>>>>>> data at strict timings.   (Or, if you sacrifice led timings to 
>>>>>>>>>>>>>>> run your
>>>>>>>>>>>>>>> multiplex interrupt routine, it can glitch the LEDs.  ).  Chips 
>>>>>>>>>>>>>>> which have
>>>>>>>>>>>>>>> DMA/more complex peripherals might avoid this.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> You might get away with it with certain combinations of
>>>>>>>>>>>>>>> things but it was a bit of a pain for me.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> David
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Wed, 1 Nov 2023, 11:54 Richard Scales, <
>>>>>>>>>>>>>>> ric...@scalesweb.co.uk> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Many thanks Nick.
>>>>>>>>>>>>>>>> Unless anything else comes to light I think I will forge
>>>>>>>>>>>>>>>> ahead on that basis. I want to drive 15 segment panaplex 
>>>>>>>>>>>>>>>> displays (16
>>>>>>>>>>>>>>>> including the DP) so plan to use HV5530 or similar driver for 
>>>>>>>>>>>>>>>> the segments,
>>>>>>>>>>>>>>>> probably two of them. Then the same MPSA42/MPSA92 driver 
>>>>>>>>>>>>>>>> arrangement for
>>>>>>>>>>>>>>>> the HV though there are going to be 5 of those - I might be 
>>>>>>>>>>>>>>>> running low on
>>>>>>>>>>>>>>>> pins it using a Wemos - I might consider a port expander for 
>>>>>>>>>>>>>>>> the extra pins
>>>>>>>>>>>>>>>> needed - I need to check pins required - I think 4 for the HV 
>>>>>>>>>>>>>>>> register
>>>>>>>>>>>>>>>> chain, 6 for the Anode switching (two drivers driving a 12 
>>>>>>>>>>>>>>>> digit device -
>>>>>>>>>>>>>>>> perhaps 5 for a 10 digit device) plus I want to read a PIR and 
>>>>>>>>>>>>>>>> talk to a
>>>>>>>>>>>>>>>> BMP-280 sensor. Certainly a Wemos + port expander would do it 
>>>>>>>>>>>>>>>> - might get
>>>>>>>>>>>>>>>> away with a Node MCU or similar.
>>>>>>>>>>>>>>>> OK, I just realised that I can use a single 32 bit driver
>>>>>>>>>>>>>>>> with two sets of 16 bits, one going to each bank of displays.
>>>>>>>>>>>>>>>> It still has the same pin requirements of the processor I
>>>>>>>>>>>>>>>> think. That will be a juggling excersise!
>>>>>>>>>>>>>>>>  - Richard
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Wednesday, 1 November 2023 at 11:10:02 UTC Nick Sargeant
>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> It’s not difficult. My fumbling attempts at a Nixie clock
>>>>>>>>>>>>>>>>> some time ago used a 4:1 multiplex ratio, using four digits 
>>>>>>>>>>>>>>>>> and only one
>>>>>>>>>>>>>>>>> decoder. I used the same MPSA42/MPSA92 driver as your 
>>>>>>>>>>>>>>>>> example. My multiplex
>>>>>>>>>>>>>>>>> function was called at 100Hz, so each digit was refreshing at 
>>>>>>>>>>>>>>>>> 25Hz. It
>>>>>>>>>>>>>>>>> doesn’t flicker, and (whoa!) it is working 15 years later.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> The only mod I had was when switching between digits, I
>>>>>>>>>>>>>>>>> turned the cathode drive off for a period of 20 microseconds, 
>>>>>>>>>>>>>>>>> before
>>>>>>>>>>>>>>>>> selecting the correct anode and turning on the next digit. 
>>>>>>>>>>>>>>>>> This helped
>>>>>>>>>>>>>>>>> prevent ghosting.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Wednesday, 1 November 2023 at 10:14:25 UTC Richard
>>>>>>>>>>>>>>>>> Scales wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Actually - I just looked through an example over at:
>>>>>>>>>>>>>>>>>> https://www.hackster.io/doug-domke/multiplexed-nixie-tube-clock-759ff5
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> ... and it all seems fairly understandable, have I
>>>>>>>>>>>>>>>>>> overthought this?
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>  - Richard
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On Wednesday, 1 November 2023 at 09:22:03 UTC Richard
>>>>>>>>>>>>>>>>>> Scales wrote:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> The time has come when I need to get a handle the dark
>>>>>>>>>>>>>>>>>>> and mysterious art of multiplexing.
>>>>>>>>>>>>>>>>>>> I have an understanding of what needs to happen though
>>>>>>>>>>>>>>>>>>> am mostly at a loss of how to implement it.
>>>>>>>>>>>>>>>>>>> I am broadly assuming that I should be using some kind
>>>>>>>>>>>>>>>>>>> of interrupt routine to make the actual display work whilst 
>>>>>>>>>>>>>>>>>>> the rest of the
>>>>>>>>>>>>>>>>>>> code gets on with the job of working out what to display 
>>>>>>>>>>>>>>>>>>> and when to
>>>>>>>>>>>>>>>>>>> display it.
>>>>>>>>>>>>>>>>>>> Is it even going to be feasible to have some kind of
>>>>>>>>>>>>>>>>>>> interrupt routine that decides what digits to light - set 
>>>>>>>>>>>>>>>>>>> all the bits and
>>>>>>>>>>>>>>>>>>> then sets the right anode(s) on and then off again giving 
>>>>>>>>>>>>>>>>>>> enough time for
>>>>>>>>>>>>>>>>>>> the persistence of vision to produce a non flickering 
>>>>>>>>>>>>>>>>>>> display when using
>>>>>>>>>>>>>>>>>>> something like a wemos D1?
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> I am thinking that the interrupt routine needs to
>>>>>>>>>>>>>>>>>>> increment which digit(s) is/are being illuminated - set up 
>>>>>>>>>>>>>>>>>>> the right bit
>>>>>>>>>>>>>>>>>>> pattern for the cathodes and turn on the relevant anode(s) 
>>>>>>>>>>>>>>>>>>> - wait a little
>>>>>>>>>>>>>>>>>>> and then turn them off again.
>>>>>>>>>>>>>>>>>>> My worry is that the amount of time that the displays
>>>>>>>>>>>>>>>>>>> should be left on might be a little too long for the ISR as 
>>>>>>>>>>>>>>>>>>> my
>>>>>>>>>>>>>>>>>>> understanding is that these should be kept as lean as 
>>>>>>>>>>>>>>>>>>> possible.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Do I even need multiple interrupts (my covid addled
>>>>>>>>>>>>>>>>>>> brain is struggling to type let alone contemplate multiple 
>>>>>>>>>>>>>>>>>>> ISR's!)?
>>>>>>>>>>>>>>>>>>> Can the rest of my code run in a non time critical
>>>>>>>>>>>>>>>>>>> manner as it works out what it wants to display where 
>>>>>>>>>>>>>>>>>>> whilst the interrupt
>>>>>>>>>>>>>>>>>>> routine merryly illuminates digits based on values which I 
>>>>>>>>>>>>>>>>>>> store in a
>>>>>>>>>>>>>>>>>>> buffer somewhere?
>>>>>>>>>>>>>>>>>>> ... or does the rest of my code have to work in come
>>>>>>>>>>>>>>>>>>> kind of state-machine fashion?
>>>>>>>>>>>>>>>>>>> I would expect (hope) to handle display brightness via
>>>>>>>>>>>>>>>>>>> PWM signals to HV Drivers.
>>>>>>>>>>>>>>>>>>> I have no need for cross fade effects either - just
>>>>>>>>>>>>>>>>>>> basic multiplexing of say 10 different multi segment 
>>>>>>>>>>>>>>>>>>> displays. I am more
>>>>>>>>>>>>>>>>>>> than happy to break up the displays into say 2 (or more) 
>>>>>>>>>>>>>>>>>>> groups in order to
>>>>>>>>>>>>>>>>>>> makes things a little easier.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Can anyone point me in the right direction - ideally
>>>>>>>>>>>>>>>>>>> with some code snippets that I can use as a foundation?
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Just to confirm, it is only the general implementation
>>>>>>>>>>>>>>>>>>> to drive the displays that eludes me - the rest of the 
>>>>>>>>>>>>>>>>>>> clock code is well
>>>>>>>>>>>>>>>>>>> defined and working well in a direct drive capacity.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> The desire to move to multiplexed operation is born out
>>>>>>>>>>>>>>>>>>> the the desire to drive a greater number of displays with a 
>>>>>>>>>>>>>>>>>>> greater number
>>>>>>>>>>>>>>>>>>> of segments which could be done via direct drive but I 
>>>>>>>>>>>>>>>>>>> foresee that
>>>>>>>>>>>>>>>>>>> multiplexing the displays will simplify the electronics 
>>>>>>>>>>>>>>>>>>> required.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> So many questions I know. I would be grateful for any
>>>>>>>>>>>>>>>>>>> pointers, thank you.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>  - Richard
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>> You received this message because you are subscribed to the
>>>>>>>>>>>>>>>> Google Groups "neonixie-l" group.
>>>>>>>>>>>>>>>> To unsubscribe from this group and stop receiving emails
>>>>>>>>>>>>>>>> from it, send an email to neonixie-l+...@googlegroups.com.
>>>>>>>>>>>>>>>> To view this discussion on the web, visit
>>>>>>>>>>>>>>>> https://groups.google.com/d/msgid/neonixie-l/e576bff1-8d65-4d53-b0cc-2ba5ba574232n%40googlegroups.com
>>>>>>>>>>>>>>>> <https://groups.google.com/d/msgid/neonixie-l/e576bff1-8d65-4d53-b0cc-2ba5ba574232n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>>>>>>>>> .
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "neonixie-l" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to neonixie-l+...@googlegroups.com.
>>>>
>>> To view this discussion on the web, visit
>>>> https://groups.google.com/d/msgid/neonixie-l/1bc508d5-1f0c-4b6e-af2f-3f9a0092ecc6n%40googlegroups.com
>>>> <https://groups.google.com/d/msgid/neonixie-l/1bc508d5-1f0c-4b6e-af2f-3f9a0092ecc6n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> --
> You received this message because you are subscribed to the Google Groups
> "neonixie-l" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to neonixie-l+unsubscr...@googlegroups.com.
> To view this discussion on the web, visit
> https://groups.google.com/d/msgid/neonixie-l/2edcc2a6-37e5-44db-ae77-ce3a4286aa63n%40googlegroups.com
> <https://groups.google.com/d/msgid/neonixie-l/2edcc2a6-37e5-44db-ae77-ce3a4286aa63n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"neonixie-l" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to neonixie-l+unsubscr...@googlegroups.com.
To view this discussion on the web, visit 
https://groups.google.com/d/msgid/neonixie-l/CAOX%2BRH%2BgT2J4NM4eBhTa6%2Br6A%2By_Jnxqao%3DYdMfsKQm1eRuq%3DQ%40mail.gmail.com.

Reply via email to