static void u8g_com_arduino_st7920_write_byte_hw_spi(u8g_t *u8g, uint8_t rs, uint8_t val)
{
  uint8_t i;

  if ( rs == 0 )
  {
    /* command */
    u8g_arduino_st7920_hw_spi_shift_out(u8g, 0x0f8);
  }
  else if ( rs == 1 )
  {
    /* data */
    u8g_arduino_st7920_hw_spi_shift_out(u8g, 0x0fa);
  }
  else
  {
    /* do nothing, keep same state */
  }
  
  u8g_arduino_st7920_hw_spi_shift_out(u8g, val & 0x0f0);
  u8g_arduino_st7920_hw_spi_shift_out(u8g, val << 4);

  for( i = 0; i < 4; i++ )
    u8g_10MicroDelay();
}
static void u8g_com_arduino_st7920_write_byte_hw_spi_seq(u8g_t *u8g, uint8_t rs, uint8_t *ptr, uint8_t len)
{
  uint8_t i;

  if ( rs == 0 )
  {
    /* command */
    u8g_arduino_st7920_hw_spi_shift_out(u8g, 0x0f8);
  }
  else if ( rs == 1 )
  {
    /* data */
    u8g_arduino_st7920_hw_spi_shift_out(u8g, 0x0fa);
  }

  while( len > 0 )
  {
    u8g_arduino_st7920_hw_spi_shift_out(u8g, *ptr & 0x0f0);
    u8g_arduino_st7920_hw_spi_shift_out(u8g, *ptr << 4);
    ptr++;
    len--;
    u8g_10MicroDelay();
  }
  
  for( i = 0; i < 4; i++ )
    u8g_10MicroDelay();
}