ultrasound.ControlRoi: fix control mechanism
Change-Id: I9d01de260d3bdc63eb1004ba4f714d38d1c0508c
This commit is contained in:
parent
36f2919ec2
commit
75783b211a
@ -98,26 +98,28 @@ class ControlRoi(Roi, Readable):
|
|||||||
def doPoll(self):
|
def doPoll(self):
|
||||||
inphase = self.value[0]
|
inphase = self.value[0]
|
||||||
freq = self.freq.target
|
freq = self.freq.target
|
||||||
|
newfreq = None
|
||||||
if freq != self._freq_target:
|
if freq != self._freq_target:
|
||||||
self._freq_target = freq
|
self._freq_target = freq
|
||||||
# do no control 2 times after changing frequency
|
# do no control 2 times after changing frequency
|
||||||
self._skipctrl = 2
|
self._skipctrl = 2
|
||||||
fdif = freq - self._old[0]
|
if self._old:
|
||||||
if self.control_active:
|
fdif = freq - self._old[0]
|
||||||
if self._old:
|
if self.control_active:
|
||||||
newfreq = freq + inphase * self.slope
|
newfreq = freq + inphase * self.slope
|
||||||
self.log.info('fdif %r minstep %r', fdif, self.minstep)
|
self.log.info('fdif %r minstep %r', fdif, self.minstep)
|
||||||
else:
|
if abs(fdif) > self.minstep * 0.99:
|
||||||
# do a 'test' step
|
idif = inphase - self._old[1]
|
||||||
newfreq = freq + self.minstep
|
if idif:
|
||||||
if abs(fdif) > self.minstep * 0.99:
|
self.slope = - fdif / idif
|
||||||
idif = inphase - self._old[1]
|
self._old = (freq, inphase)
|
||||||
if idif:
|
else:
|
||||||
self.slope = - fdif / idif
|
|
||||||
self._old = (freq, inphase)
|
self._old = (freq, inphase)
|
||||||
|
if self.control_active:
|
||||||
|
newfreq = freq + self.minstep
|
||||||
if self._skipctrl > 0: # do no control for some time after changing frequency
|
if self._skipctrl > 0: # do no control for some time after changing frequency
|
||||||
self._skipctrl -= 1
|
self._skipctrl -= 1
|
||||||
elif self.control_active:
|
elif newfreq is not None:
|
||||||
self._freq_target = self.freq.write_target(clamp(freq - self.maxstep, newfreq, freq + self.maxstep))
|
self._freq_target = self.freq.write_target(clamp(freq - self.maxstep, newfreq, freq + self.maxstep))
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user