主题中讨论的其他器件:FLOWESI-GUI、
大家好、
我遇到了很多 FLOWESI-GUI 生成的代码错误和问题。
我53ºC 到、当我将温度从25ºC ̊ C 增加到48 ̊ C 时、我的 MSP430FR5989会失败。 ESI 停止正确计数。 ºC 我将温度降低至45 ̊ C 左右、ESI 再次开始工作。
我怀疑自动校准不能正常工作、因为我正在打印寄存 器 ESIDAC1R0-ESIDAC1R1和 ESIDAC1R2-ESIDAC1R3、并且在将温度从25ºC μ V 升高到48 53ºC 的过程中、它们从未发生变化。 因此、我正在检查代码、我意识到负责更新这些寄存器的代码不起作用。
这是我要讨论的流程图的一部分:

在文件:esiCalibration.c 中、我发现代码的一部分负责计算漂移。 该函数在第639行中重新校准 ScanIF():
(笑声)
void ReCalScanIF(void){ int16_t newLevel, delta; uint16_t loopCounter = 0; ... if (gRecalFlag&VALID_RECALIBRATION) { if(gRecalFlag&PERIODIC_AFE2_RECALIBRATION) { afe2MaxDACCH0 /= 4; afe2MinDACCH0 /= 4;
但该函数 ReCalScanIF()在 main.c 的330行中执行:
(笑声)
void serviceInterrupts(void){
TARGET_COMM_checkForReceivedPacket();
if(gCommFlags & START_CONFIG_ESI_MODULE){
esiConfig();
startTimer();
}
if(gCommFlags & COMM_CAL_DONE){
if(gCommFlags & FLUSH_COUNTER_REGISTERS){
TARGET_COMM_sendSensorData();
gCommFlags &= ~FLUSH_COUNTER_REGISTERS;
}
if(gCommFlags & FLUSH_DEBUG_REGISTERS){
TARGET_COMM_sendDebugData();
gCommFlags &= ~FLUSH_DEBUG_REGISTERS;
}
if(gRecalFlag&PERIODIC_AFE2_RECALIBRATION){
GPIO_setOutputLowOnPin(RECAL_LED_PORT, RECAL_LED_PIN);
TARGET_COMM_sendRecalStartCmd();
gRecalFlag &= ~PERIODIC_AFE2_RECALIBRATION;
Timer_A_setCompareValue(TIMER_RECALIBRATION_SELECTION,
TIMER_A_CAPTURECOMPARE_REGISTER_0,
RECAL_TIME_OUT);
Timer_A_startCounter(TIMER_RECALIBRATION_SELECTION,TIMER_A_UP_MODE);
ReCalScanIF();
gRecalCounter = TIME_TO_RECAL_REPEAT;
Timer_A_initUpModeParam upParams =
{
...
如您所见,位 periode_AFE2_recalibrationsis 在进入函数 ReCalScanIF()前被清除,因此不可能更新寄存器的值。
是否有人建议正确修复此错误?
此致。