From 9e2706f4e49dba480d3d75f8348d3196fc0fc5a9 Mon Sep 17 00:00:00 2001 From: AJR Date: Thu, 31 Oct 2019 00:00:54 -0400 Subject: ds1302: Subtle fix for CE writes; improve logging (nw) --- src/devices/machine/ds1302.cpp | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/src/devices/machine/ds1302.cpp b/src/devices/machine/ds1302.cpp index c74faa2113a..57ec63f78db 100644 --- a/src/devices/machine/ds1302.cpp +++ b/src/devices/machine/ds1302.cpp @@ -189,18 +189,20 @@ void ds1302_device::rtc_clock_updated(int year, int month, int day, int day_of_w WRITE_LINE_MEMBER( ds1302_device::ce_w ) { - LOG("DS1302 CE: %u\n", state); - - if (!state && m_ce) + if (state && !m_ce) { + LOG("DS1302 CE: 1\n"); + // synchronize user buffers for (int i = 0; i < 9; i++) { m_user[i] = m_reg[i]; } } - else if (state && !m_ce) + else if (!state && m_ce) { + LOG("DS1302 CE: 0\n"); + // terminate data transfer m_state = STATE_COMMAND; m_bits = 0; @@ -262,6 +264,8 @@ void ds1302_device::input_bit() m_cmd |= (m_io << 7); m_bits++; + LOG("DS1302 Input Bit: %u\n", m_io); + if (m_bits == 8) { LOG("DS1302 Command: %02x\n", m_cmd); @@ -299,6 +303,8 @@ void ds1302_device::input_bit() m_data |= (m_io << 7); m_bits++; + LOG("DS1302 Input Bit: %u\n", m_io); + if (m_bits == 8) { LOG("DS1302 Data: %02x\n", m_data); @@ -363,6 +369,8 @@ void ds1302_device::output_bit() m_state = STATE_COMMAND; } } + + LOG("DS1302 Output Bit: %u\n", m_io); } @@ -372,17 +380,14 @@ void ds1302_device::output_bit() WRITE_LINE_MEMBER( ds1302_device::sclk_w ) { - LOG("DS1302 CLK: %u\n", state); - - if (!m_ce) return; + //LOG("DS1302 CLK: %u\n", state); - if (!m_clk && state) // rising edge - { - input_bit(); - } - else if (m_clk && !state) // falling edge + if (m_ce) { - output_bit(); + if (!m_clk && state) // rising edge + input_bit(); + else if (m_clk && !state) // falling edge + output_bit(); } m_clk = state; @@ -395,7 +400,7 @@ WRITE_LINE_MEMBER( ds1302_device::sclk_w ) WRITE_LINE_MEMBER( ds1302_device::io_w ) { - LOG("DS1302 I/O: %u\n", state); + //LOG("DS1302 I/O: %u\n", state); m_io = state; } -- cgit v1.2.3