summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2019-10-31 00:00:54 -0400
committer AJR <ajrhacker@users.noreply.github.com>2019-10-31 00:02:09 -0400
commit9e2706f4e49dba480d3d75f8348d3196fc0fc5a9 (patch)
tree9629b4f29d3d4bbe96bb7d45183591a9c8846c7a /src/devices/machine
parent0e2de758b13d41d6caf3abe729e65d8770c85029 (diff)
ds1302: Subtle fix for CE writes; improve logging (nw)
Diffstat (limited to 'src/devices/machine')
-rw-r--r--src/devices/machine/ds1302.cpp33
1 files 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;
}