主题中讨论的其他器件: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()前被清除,因此不可能更新寄存器的值。
是否有人建议正确修复此错误?
此致。