Help with Noritake Itron GU256x64-372 Graphic VFD

Hi there!

Since I finally run a GU256x128C-3900, now I have another challenge. Try to run Noritake Itron GU256x64-372 with Uno.

Small Datasheet -> http://media.digikey.com/pdf/Data%20Sheets/Noritake%20PDFs/GU256X64-372.pdf
Full Datasheet -> http://cypax.net/downloads/A0%20GU256X64-372.pdf
Code for WinAVR -> http://kimboricha.blogspot.kr/2013/10/noritake-itron-gu256x64-901a-vfdvacuum.html

I can't use any example on net with Arduino.

Tryed too with other routines that connect with a parallel LCD, but this model use a 2us delay instead BUSY signal.

I need to fix the code above to accept communications with GU256x64-372. The GU7000 library for Arduino, appear to be good for use.

class GU7000_Parallel : public GU7000_Interface {

protected:
    unsigned RS_PIN:4;
    unsigned WR_PIN:4;
    unsigned RD_PIN:4;
    unsigned RESET_PIN:4;
    unsigned BUSY_PIN:4;
    unsigned D0_PIN:4;
    unsigned D1_PIN:4;
    unsigned D2_PIN:4;
    unsigned D3_PIN:4;
    unsigned D4_PIN:4;
    unsigned D5_PIN:4;
    unsigned D6_PIN:4;
    unsigned D7_PIN:4;
    unsigned jrb:2; // Pin#3 (JRB jumper): 0=BUSY, 1=RESET, 2=nonthing
    
public:
    GU7000_Parallel(uint8_t jrb,
      uint8_t busy, uint8_t reset, uint8_t wr, uint8_t rd,
      uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
      uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7):
        jrb(2), BUSY_PIN(busy), RESET_PIN(reset), WR_PIN(wr),  RD_PIN(rd),
        D0_PIN(d0), D1_PIN(d1), D2_PIN(d2), D3_PIN(d3),
        D4_PIN(d4), D5_PIN(d5), D6_PIN(d6), D7_PIN(d7)
    {
        if ((jrb|0x20) == 'b') this->jrb = 0;
        if ((jrb|0x20) == 'r') this->jrb = 1;
    }
    
    void init() {        
        if (this->jrb == 1) {
            RAISE(RESET);
            DIRECTION(RESET, 1);
        }
        if (this->jrb != 0) {
            RAISE(RD);
            DIRECTION(RD, 1);
        }
        RAISE(WR);
        DIRECTION(BUSY, 0);
        DIRECTION(WR, 1);
        DIRECTION(D0, 1);
        DIRECTION(D1, 1);
        DIRECTION(D2, 1);
        DIRECTION(D3, 1);
        DIRECTION(D4, 1);
        DIRECTION(D5, 1);
        DIRECTION(D6, 1);
        DIRECTION(D7, 1);
    }
    
    void write(uint8_t data) {
        if (data & 0x01) RAISE(D0); else LOWER(D0);
        if (data & 0x02) RAISE(D1); else LOWER(D1);
        if (data & 0x04) RAISE(D2); else LOWER(D2);
        if (data & 0x08) RAISE(D3); else LOWER(D3);
        if (data & 0x10) RAISE(D4); else LOWER(D4);
        if (data & 0x20) RAISE(D5); else LOWER(D5);
        if (data & 0x40) RAISE(D6); else LOWER(D6);
        if (data & 0x80) RAISE(D7); else LOWER(D7);
        if (this->jrb == 0)
            while (CHECK(BUSY));
        else {
            bool ok;
            DIRECTION(D7,0);
            do {
                LOWER(RD);        
                _delay_us(.08);
                ok = CHECK(D7);
                RAISE(RD);
            } while (ok);
            DIRECTION(D7,1);
        }
        LOWER(WR);
        _delay_us(0.11);
        RAISE(WR);
        _delay_us(20);
    }
    
    void hardReset() {
        init();
        if (this->jrb == 1) {
        	LOWER(RESET);
        	_delay_ms(1);
        	RAISE(RESET);
        	_delay_ms(100);
        }
    }
};

Of course, the WinAVR code from Boricha have more features like a load of custom font.

Thanks a lot.

Hi i have a Gu256x64 350 i think its very similar driver chips, just wondering if you had any luck getting Gu256x64 372 Working?

Cheers

Luke