summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-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;
}