This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好、
我遇到了很多 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():
(笑声)
Fullscreen123456789101112void ReCalScanIF(void){int16_t newLevel, delta;uint16_t loopCounter = 0;...if (gRecalFlag&VALID_RECALIBRATION){if(gRecalFlag&PERIODIC_AFE2_RECALIBRATION){afe2MaxDACCH0 /= 4;afe2MinDACCH0 /= 4;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXvoid 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()前被清除,因此不可能更新寄存器的值。
是否有人建议正确修复此错误?
此致。
您好 Oscar、
在论坛上发布代码时、请使用插入- 代码功能、使内容更易读。 我已经修改了您的帖子以反映这一点。
尽管我尤其不熟悉这个库、 但我确实看到这是校准例程的超时、因此我希望代码位于 ISR 或其中一个子函数中、直到达到超时或完成校准。
校准过程中、您是否可以确认您的车轮至少旋转4周?
另请查看 以下相关帖子:
尊敬的 Jace:
感谢你的帮助。 是的、我可以确认我至少获得4次旋转。
您发布到审阅的两个链接来自我的工作伙伴。 它是具有相同问题的同一个项目。
其他 E2E 主题对您有何帮助?
我已经检查过这是一个错误。 修复后、自动校准将正常工作。