diff --git a/ipsdriv.c b/ipsdriv.c index 6965366..7c7ce40 100644 --- a/ipsdriv.c +++ b/ipsdriv.c @@ -447,7 +447,7 @@ static long IpsRead(long pc, void *object) goto ramp_zero; } - OxiSet(eab, "J", drv->perscurrent, 3); /* put set point to a low value, above the CLACK value */ + OxiSet(eab, "J", drv->perscurrent, 3); /* put set point to a low value */ return __LINE__; case __LINE__: EaseWrite(eab, "A1"); /* goto set (almost zero) */ @@ -578,6 +578,7 @@ static long IpsChangeField(long pc, void *object) EaseWrite(eab, "F7"); /* switch to tesla on display */ return __LINE__; case __LINE__: /**********************************/ + EaseWrite(eab, "A0"); /* hold */ return __LINE__; case __LINE__: /**********************************/ @@ -587,11 +588,18 @@ static long IpsChangeField(long pc, void *object) case __LINE__: /**********************************/ drv->current = OxiGet(eab, 3, NULL, drv->current); + if (drv->perswitch) { + IpsSetField(drv, drv->current); + goto skipR18; + } + EaseWrite(eab, "R18"); /* read persistant field (in Tesla) */ return __LINE__; case __LINE__: /**********************************/ - IpsSetField(drv, OxiGet(eab, 3, NULL, drv->persfield)); + fld = OxiGet(eab, 3, NULL, drv->persfield); + IpsSetField(drv, fld); + skipR18: FsmCall(IpsMeas); return __LINE__; case __LINE__: /**********************************/ @@ -804,7 +812,7 @@ static int IpsInit(SConnection * con, int argc, char *argv[], int dynamic) if (drv == NULL) return 0; drv->d.maxwait = 999999; - drv->d.tolerance = 0.001; + drv->d.tolerance = 0.00011; drv->dothis = NOTHING; return 1; }