I use that part for my NIXIE, Panaplex and LED displays and I also write in 
assembly (8051, not PIC)
For my code, I send the serial data for NEXT time to display in the time 
after a 1 second update. On the 1 second "hack"
I update the display by doing the serial to parallel pulse.

Here is the code I use:

;************************************************************************
;*                                    *
;*    Serial clock the data in the raw buffer to the H/W drivers.     *
;*    Note: this routine does not strobe the data to the display.    *
;*                                    *
;*    On Entry: None.                            *
;*    On Exit:  Display H/W drivers updated from ram.            *
;*                                    *
;************************************************************************

WRT_NIXIE_HW:    MOV    R0,#DISP_RAW_TH        ;point at start of raw 
display ram
                                 MOV    R1,#12d            ;12 bytes of 
data to send
RAW_BYTE_LP:     MOV    R2,#5            ;5 bits per byte
                                MOVX    A,@R0            ;get a 5 bit value
                                INC    R0            ;bump the pointer

RAW_BIT_LP:        RRC    A            ;bit 0 into carry
                               MOV    DISP_DAT,C        ;put the bit into 
the I/O port
                               CALL    HV_BIT_DELAY        ;delay
                               SETB    DISP_CLK        ;clock high
                               CALL    HV_BIT_DELAY        ;delay
                               CLR    DISP_CLK        ;clock low
                               DJNZ    R2,RAW_BIT_LP        ;loop 5 bits
                               DJNZ    R1,RAW_BYTE_LP        ;loop 12 bytes
                               RET                ;and return


;************************************************************************
;*                                    *
;*    Update the NIXIE readouts with the data in the H/W buffers.    *
;*                                    *
;*    On Entry: None.                            *
;*    On Exit:  NIXIE displays show updated values.            *
;*                                    *
;************************************************************************


UPDATE_DISP:    CALL    HV_BIT_DELAY        ;delay
                              SETB    DISP_STRB        ;strobe the data
                              CALL    HV_BIT_DELAY        ;delay
                              CLR    DISP_STRB        ;un-strobe NIXIE 
drivers
                              RET



On Saturday, August 13, 2022 at 8:40:39 AM UTC-7 flata...@gmail.com wrote:

> Thank you both.
>
> Say that I want to drive high HVOUT12 on pin2 (that is binary b'00000010') 
> of the HV5530... and reading your previous messages, do I simply...:
>
> drive pin28 (CLOCK) low
> drive pin31 (LE) low
>
> drive pin28 (CLOCK) high
> drive pin32 (DATA Input) low ; send 0 for bit 0 of b'00000010'
> drive pin28 (CLOCK) low
> drive pin28 (CLOCK) high
> drive pin32 (DATA Input) high ; send 1 for bit 1 of b'00000010'
> drive pin28 (CLOCK) low
> drive pin28 (CLOCK) high
> drive pin32 (DATA Input) low ; send 0 for bit 2 of b'00000010'
> drive pin28 (CLOCK) low etc
> etc...
> drive pin31 (LE) high.
>
> Of course, I'd need to do it do it within a certain time frame (nS, I 
> suppose)
>
> Then I guess I would need a level shifter as while the input voltage is 
> 12V, the PIC is at 3.3V (LF series). Argh. 
>
> I'm starting to think whether that is really a better approach than using 
> an 80pin or 100pin PIC with HV transistors to drive the cathodes of the 
> Nixies (pic18f46k22 would do for instance). It would increase component 
> count and cost of PIC etc, but it's not a commercial project, I'm only 
> making 3 clocks in total.
>
> Indeed, I'm building a clock with Dalibor's RZ568M (beautiful!).
>
> Il giorno sabato 13 agosto 2022 alle 15:46:58 UTC+1 gregebert ha scritto:
>
>> Be sure to use a level translator to drive the 5530-type devices at the 
>> proper signal voltages (12 VDC). Some people have driven them at 5V, which 
>> is out-of-spec and not guaranteed to work.  I use these drivers in some of 
>> my clocks and they work very well. 
>>
>> Pardon my rant below, but I've been designing IC's for a living since the 
>> 1980's and too often I see others having problems with serial devices  :
>>
>>   One thing that annoys me about the HV5530 (and similar) devices is that 
>> the datasheet specs are incomplete for the serial data signals. The data-in 
>> hold time (tH) is 10nsec, but there is no *minimum* propagation time in 
>> the spec (tDLH, tDHL). The only have a maximum (100ns). What this means is 
>> that per the datasheet, you cannot simply cascade multiple devices. It 
>> might work if you do, but if you want to guarantee that it will always 
>> work, place a rising-edge flip-flop between cascaded devices). In order to 
>> have reliable shifting, the minimum propagation-delay of the driving device 
>> *must 
>> be greater* than the hold-time of the next device. If there is no 
>> minimum prop-delay spec, assume it's zero (a very safe and reasonable 
>> assumption). 
>>
>> My current clock project (6-tube RZ 568m) has multiple PC boards with 
>> ribbon cables interconnecting them. Not just for the three HV5530's that 
>> drive the tubes, but also many other devices in the same serial chain for 
>> reading switches and controlling lamps. After many weeks of testing with 
>> billions of bits, there are zero bit errors.....because I made sure setup 
>> and hold times are met.
>>
>>
>> On Saturday, August 13, 2022 at 6:32:31 AM UTC-7 SWISSNIXIE - Jonathan F. 
>> wrote:
>>
>>> Hi Max,
>>> The HV5530 and other HV-Series IC's are "Serial to Paralell" converters 
>>> which allow to be control 32-pins (or even more with multiple ic's) from 
>>> single clock and data lines. They are basically normal serial to parallel 
>>> converters with high voltage transistors attached. 
>>>
>>> To operate these you will need a clock source (for easy way a gpio that 
>>> goes high/low) and a data source, which means either a pin that is high or 
>>> low at the time of clock. After you've sent the required amount of data 
>>> (number of outputs on the IC) the first data will transfer to "DATA OUT" 
>>> pin and into the next IC (if there is one).
>>>
>>> For a 6 digit clock you need 2 pcs of HV553
>>>
>>> I cannot provice ASM code for PIC, but here is a low level code of 
>>> ATMega:
>>>
>>> *#define thePort PORTD *
>>> *#define DATA PD5*
>>>
>>> *#define CLK PD7 *
>>>
>>>
>>> *PORTC |= _BV(PC1);  //Set OE/LE Signal LOW*
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> * for (int i = 0; i < 32; i++) {    thePort &= ~_BV(DATA);  //Data LOW  
>>>   if ( bitRead(val_one, i) == 1) {      thePort |= _BV(DATA);  //Data HIGH  
>>>   }    thePort |= _BV(CLK);  //CLK HIGH    thePort &= ~_BV(CLK); //CLK LOW  
>>> }*
>>> *PORTC &= ~_BV(PC1);  //Set OE/LE Signal HIGH* 
>>>
>>> The general operation of the 5530 is as following.
>>>
>>> 1.) Drive Data pin and Clock pin LOW
>>> 2.) Before starting to send data, drive LE pin LOW
>>> 3.) For each bit you need to do a clock signal and data pin, for this:
>>> 3.1) Drive CLOCK High
>>> 3.2) Drive DATA high or low, depending if you want to turn the digit on 
>>> or off
>>> 3.3) Drive CLOCK Low
>>> 3.4) Drive DATA Low
>>> 4.) This needs to be done for all Inputs of an ic, if you have two ic's 
>>> chained you need to to it two times.
>>> 5.) After all Data has been sent, drive LE pin HIGH, Outputs will now be 
>>> set to the data you've just send
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Saturday, 13 August 2022 at 12:13:24 UTC+2 flata...@gmail.com wrote:
>>>
>>>> Hello,
>>>>
>>>> I'm starting to design my first 6 digit nixie clock and I'd like to use 
>>>> direct drive of the tubes (my power supply can take 6 nixies without 
>>>> multiplexing).
>>>>
>>>> So far I have built my Nixie watch, coding in ASM, worked on extreme 
>>>> power saving etc.
>>>>
>>>> I could multiplex the nixies as I did in this project 
>>>> https://fb.watch/eTb69SnxEP/ , but since I have a good power supply I 
>>>> wanted to build a clock with direct drive of the tubes.
>>>>
>>>> I prefer to code in ASM (don't ask why :)  ), I could use a 100pin 
>>>> PIC18 to drive each digit individually through MMBTA92 & A42 transistors. 
>>>> However, if I want to use a PIC with a lower pin count (say 40pins), I may 
>>>> use a driver such as HV5530.
>>>>
>>>> Would I still get same brightness as a genuine direct drive as when 
>>>> using A92&A42 transistors? I suppose the switching that happens using 
>>>> CLK/SDA on the HV5530 is not too different than a good multiplexing. I may 
>>>> be wrong.
>>>>
>>>> And if I were do code ASM to use HV5530, does anyone have sample ASM 
>>>> code? I managed to write myself the code to read/write time from an RTC 
>>>> using CLK/SDA so I suppose it's very similar but I cannot figure it out 
>>>> from the datasheet of HV5530.
>>>>
>>>> Any help is much appreciated.
>>>>
>>>> Max
>>>>
>>>

-- 
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/c2e49484-d56e-4545-b635-942952d2c1f4n%40googlegroups.com.

Reply via email to