diff options
author | 2023-12-16 11:14:08 -0500 | |
---|---|---|
committer | 2023-12-16 11:14:10 -0500 | |
commit | 831195f2f75c173e512d92a0fba8e488b8258446 (patch) | |
tree | 78796b5b5ec810d73c1631d575e016b15ad8ae9f /src/devices/machine/ds2430a.cpp | |
parent | 641a713f2e19c2910942880daa30b8a81b8c5a30 (diff) |
ds2430a: Fixes and adjustments
- Undo incorrect swapping of tPDL and tPDH and make latter slightly longer
- Remember to pull up data line after reading last bit from ROM
Diffstat (limited to 'src/devices/machine/ds2430a.cpp')
-rw-r--r-- | src/devices/machine/ds2430a.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/devices/machine/ds2430a.cpp b/src/devices/machine/ds2430a.cpp index d7b38285e23..ba7926432e7 100644 --- a/src/devices/machine/ds2430a.cpp +++ b/src/devices/machine/ds2430a.cpp @@ -38,7 +38,7 @@ #include "emu.h" #include "ds2430a.h" -#include <algorithm> +#include <numeric> // std::accumulate #define LOG_PULSE (1U << 1) #define LOG_BITS (1U << 2) @@ -65,8 +65,8 @@ DEFINE_DEVICE_TYPE(DS1971, ds1971_device, "ds1971", "Dallas DS1971 EEPROM iButto // timing constants static constexpr attoseconds_t tRSTL = 480 * ATTOSECONDS_PER_MICROSECOND; // 480 μs ≤ t < ∞ static constexpr attoseconds_t tRSTH = 480 * ATTOSECONDS_PER_MICROSECOND; // 480 μs ≤ t < ∞ -static constexpr attoseconds_t tPDL = 15 * ATTOSECONDS_PER_MICROSECOND; // 15 μs ≤ t < 60 μs -static constexpr attoseconds_t tPDH = 120 * ATTOSECONDS_PER_MICROSECOND; // 60 μs ≤ t < 240 μs +static constexpr attoseconds_t tPDL = 120 * ATTOSECONDS_PER_MICROSECOND; // 60 μs ≤ t < 240 μs +static constexpr attoseconds_t tPDH = 16 * ATTOSECONDS_PER_MICROSECOND; // 15 μs ≤ t < 60 μs (but must exceed 15 μs for Konami Viper games) static constexpr attoseconds_t tSLOT = 60 * ATTOSECONDS_PER_MICROSECOND; // 60 μs ≤ t < 120 μs static constexpr attoseconds_t tREC = 1 * ATTOSECONDS_PER_MICROSECOND; // 1 μs ≤ t < ∞ static constexpr attoseconds_t tLOW0 = 60 * ATTOSECONDS_PER_MICROSECOND; // 60 μs ≤ t < 120 μs @@ -381,6 +381,7 @@ TIMER_CALLBACK_MEMBER(ds1wire_device::update_state) case state::ROM_READ: case state::ROM_SEARCH: case state::ROM_SEARCH_COMPLEMENT: + case state::DONE: // pull up data line after reading last bit m_data_out = true; break; @@ -394,7 +395,6 @@ TIMER_CALLBACK_MEMBER(ds1wire_device::update_state) case state::MEMORY_COMMAND: case state::MEMORY_WRITE: case state::ROM_SEARCH_WRITE: - case state::DONE: // Only compilers care about cases that do nothing break; } |