Enable measurements with ?-sweep (v, i, temp, or res).

Improve error messages.
Prevent crash is compüdata is not available.
Add to examples for measure failures.
This commit is contained in:
Holger Vogt 2023-12-08 10:32:15 +01:00
parent 6ad0a6ad38
commit c69018fe82
2 changed files with 53 additions and 12 deletions

View File

@ -91,5 +91,7 @@ meas tran tdiff TRIG v(1) VAL=0.5 RISE=1 TARG VAL=0.5 RISE=2
meas tran tdiff TRIG v(1) VAL=0.5 RISE=1 TARG v(1) RISE=2
meas tran tdiff TRIG v(1) VAL= RISE=1 TARG v(1) VAL=0.5 RISE=2
meas tran tdiff TRIG v(1) VAL=0.5 RISE= TARG v(1) VAL=0.5 RISE=2
meas sp tmax MAX v(2) from=2m to=3m
meas dc ymax MAX v(2) from=2m to=3m
.endc
.end

View File

@ -432,7 +432,10 @@ com_measure_when(
value = get_value(meas, d, i); //d->v_compdata[i].cx_real;
else
value = d->v_realdata[i];
scaleValue = dScale->v_compdata[i].cx_real;
if (dScale->v_compdata)
scaleValue = dScale->v_compdata[i].cx_real;
else
scaleValue = dScale->v_realdata[i];
} else if (sp_check) {
if (d->v_compdata)
value = get_value(meas, d, i); //d->v_compdata[i].cx_real;
@ -768,20 +771,38 @@ measure_minMaxAvg(
if (ac_check || sp_check) {
dScale = vec_get("frequency");
if (dScale == NULL) {
fprintf(cp_err, "Error: meas %s ...\n", meas->m_analysis);
fprintf(cp_err, " no such scale vector as frequency.\n");
return MEASUREMENT_FAILURE;
}
} else if (tran_check) {
dScale = vec_get("time");
if (dScale == NULL) {
fprintf(cp_err, "Error: meas %s ...\n", meas->m_analysis);
fprintf(cp_err, " no such scale vector as time.\n");
return MEASUREMENT_FAILURE;
}
} else if (dc_check) {
dScale = vec_get("v-sweep");
if (!dScale) {
dScale = vec_get("i-sweep");
if (!dScale) {
dScale = vec_get("temp-sweep");
if (!dScale)
dScale = vec_get("res-sweep");
}
}
if (dScale == NULL) {
fprintf(cp_err, "Error: meas %s ...\n", meas->m_analysis);
fprintf(cp_err, " no such scale vector as v-sweep, i-sweep, temp-sweep, or res-sweep.\n");
return MEASUREMENT_FAILURE;
}
} else { /* error */
fprintf(cp_err, "Error: no such analysis type as %s.\n", meas->m_analysis);
return MEASUREMENT_FAILURE;
}
if (dScale == NULL) {
fprintf(cp_err, "Error: no such vector as time, frequency or v-sweep.\n");
return MEASUREMENT_FAILURE;
}
if (dScale->v_realdata == NULL && dScale->v_compdata == NULL) {
fprintf(cp_err, "Error: scale vector time, frequency or v-sweep has no data.\n");
return MEASUREMENT_FAILURE;
@ -949,22 +970,40 @@ measure_rms_integral(
if (ac_check || sp_check) {
xScale = vec_get("frequency");
if (xScale == NULL) {
fprintf(cp_err, "Error: meas %s ...\n", meas->m_analysis);
fprintf(cp_err, " no such scale vector as frequency.\n");
return MEASUREMENT_FAILURE;
}
} else if (tran_check) {
xScale = vec_get("time");
if (xScale == NULL) {
fprintf(cp_err, "Error: meas %s ...\n", meas->m_analysis);
fprintf(cp_err, " no such scale vector as time.\n");
return MEASUREMENT_FAILURE;
}
} else if (dc_check) {
xScale = vec_get("v-sweep");
if (!xScale) {
xScale = vec_get("i-sweep");
if (!xScale) {
xScale = vec_get("temp-sweep");
if (!xScale)
xScale = vec_get("res-sweep");
}
}
if (xScale == NULL) {
fprintf(cp_err, "Error: meas %s ...\n", meas->m_analysis);
fprintf(cp_err, " no such scale vector as v-sweep, i-sweep, temp-sweep, or res-sweep.\n");
return MEASUREMENT_FAILURE;
}
} else { /* error */
fprintf(cp_err, "Error: no such analysis type as %s.\n", meas->m_analysis);
return MEASUREMENT_FAILURE;
}
if (xScale == NULL) {
fprintf(cp_err, "Error: no such vector as time, frequency or v-sweep.\n");
return MEASUREMENT_FAILURE;
}
if (xScale->v_realdata == NULL && xScale->v_compdata == NULL) {
fprintf(cp_err, "Error: scale vector time, frequency or v-sweep has no data.\n");
fprintf(cp_err, "Error: scale vector time, frequency or ?-sweep has no data.\n");
return MEASUREMENT_FAILURE;
}