Skip to content

Commit 7b7e692

Browse files
authored
Merge pull request #197 from NINI1988/fixTimebase
Fix: timebase ps4000a
2 parents 4d4cd86 + 5c09ffd commit 7b7e692

File tree

1 file changed

+14
-51
lines changed

1 file changed

+14
-51
lines changed

picoscope/ps4000a.py

Lines changed: 14 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,6 @@
6363
CFUNCTYPE
6464
from ctypes import c_int32 as c_enum
6565

66-
import warnings
67-
6866
from picoscope.picobase import _PicoscopeBase
6967

7068

@@ -412,21 +410,7 @@ def getTimeBaseNum(self, sampleTimeS):
412410
See "Timebases" section of the PS4000a programmer's guide
413411
for more information.
414412
"""
415-
416-
if self.model == '4828':
417-
# TODO does a model 4828 exist?
418-
maxSampleTime = (((2 ** 32 - 1) + 1) / 8E7)
419-
420-
if sampleTimeS <= 12.5E-9:
421-
timebase = 0
422-
else:
423-
# Otherwise in range 2^32-1
424-
if sampleTimeS > maxSampleTime:
425-
sampleTimeS = maxSampleTime
426-
427-
timebase = math.floor((sampleTimeS * 2e7) + 1)
428-
429-
elif self.model == '4444':
413+
if self.model == '4444':
430414
maxSampleTime = (((2 ** 32 - 1) - 2) / 5.0E7)
431415

432416
if (sampleTimeS <= 2.5E-9 and
@@ -442,49 +426,28 @@ def getTimeBaseNum(self, sampleTimeS):
442426

443427
timebase = math.floor((sampleTimeS * 5.0E7) + 2)
444428

445-
elif self.model.startswith('4824'):
446-
maxSampleTime = (((2 ** 32 - 1) + 1) / 8E7)
447-
448-
if sampleTimeS > maxSampleTime:
449-
sampleTimeS = maxSampleTime
450-
timebase = math.floor(sampleTimeS * 8e7 - 1)
451-
timebase = max(0, timebase)
452-
453-
else: # The original case from non "A" series
454-
warnings.warn("The model PS4000a you are using may not be "
455-
"fully supported", stacklevel=2)
456-
maxSampleTime = (((2 ** 32 - 1) - 4) / 2e7)
457-
458-
if sampleTimeS <= 12.5E-9:
459-
timebase = math.floor(math.log(sampleTimeS * 8E7, 2))
460-
timebase = max(timebase, 0)
461-
else:
462-
# Otherwise in range 2^32-1
463-
if sampleTimeS > maxSampleTime:
464-
sampleTimeS = maxSampleTime
465-
466-
timebase = math.floor((sampleTimeS * 2e7) + 1)
429+
else:
430+
timebase = math.floor(sampleTimeS / 12.5e-9 - 1)
431+
timebase = max(timebase, 0)
432+
timebase = min(timebase, 2 ** 32 - 1)
467433

468434
return timebase
469435

470436
def getTimestepFromTimebase(self, timebase):
471-
"""Convert `timebase` index to sampletime in seconds."""
472-
if self.model == '4828' or self.model.startswith('4824'):
473-
dt = (timebase + 1) / 8.0E7
474-
elif self.model == '4444':
437+
"""
438+
Convert `timebase` index to sampletime in seconds.
439+
440+
See "Timebases" section of the PS4000a programmer's guide
441+
for more information.
442+
"""
443+
if self.model == '4444':
475444
if timebase <= 3:
476445
dt = 2 ** timebase / 4.0E8
477446
else:
478447
dt = (timebase - 2) / 5.0E7
479448

480-
else: # The original case from non "A" series
481-
warnings.warn("The model PS4000a you are using may not be "
482-
"fully supported", stacklevel=2)
483-
if timebase < 3:
484-
dt = 2. ** timebase / 8e7
485-
else:
486-
dt = (timebase - 1) / 2e7
487-
return dt
449+
else:
450+
dt = (timebase + 1) / 8.0E7
488451
return dt
489452

490453
def _lowLevelSetAWGSimpleDeltaPhase(self, waveform, deltaPhase,

0 commit comments

Comments
 (0)