大家好、
我对使用 TMS320F28055控制器的 ADC 有疑问。 输出引脚上有一个 Poti。 我可以成功地使用 ADC 进行转换。 我的触发源是计时器、这意味着我的 ADC 值每毫秒更新一次。 转换后的 ADC 值位于 AdcResult.ADCRESULT0寄存器中。 我在状态机中转换了应用的数字值、该值的运行方式例如介于0-200之间、存储在变量"A"中、并发送到另一个控制器。 现在我们来讨论一下主要问题、我只想在 ADC 值发生变化时发送变量"A"中存储的值。 为此、我创建了一个具有先前值和当前值的结构。 我更新计时器中断中的当前值、并在状态机中不断对其进行比较、如果这些值不相同、则应再次发送"A"。 问题是、虽然调试模式显示两个值(上一个值和当前值)是相同的、但它会不断跳转到 SEND 函数。 要进行测试、我一直向上转动电位器或将其设置为0、但它不起作用。 有人能告诉我如何解决这个问题吗?
我怀疑这是由于 ADC 结果。ADC 结果0参数。(因为参数总是不断变化)
感谢你的帮助。
GLOBALS_statusMotorcontroller.frequenz_sollwert =要发送的值
freqsollwert.vorherigerSollwert =以前的值
freqsollwert.aktuellerSollwert =这是在定时器中断中不断更新的当前值
sendesollwert = 这是一个布尔变量,用于确保仅在值发生更改时才发送该值。
faktor_frequenz = 4095 / diff; GLOBALS_statusMotorcontroller.frequenz_sollwert = offset + AdcResult.ADCRESULT0 / faktor_frequenz; if(freqsollwert.vorherigerSollwert != freqsollwert.aktuellerSollwert) { sendesollwert = false; } ////////////FREQUENZ-SOLLWERT auf Änderung senden///////////// if(sendesollwert == false) { //testcounter++; freqsollwert.vorherigerSollwert = freqsollwert.aktuellerSollwert; INTERFACE_MOTORCONTROLLER_addtokritischeQueue(Motorcontroller_Befehl_Write_BE_FREQUENZ_SOLLWERT, GLOBALS_statusMotorcontroller.frequenz_sollwert ); STATEMACHINE_SPI_MOTORCONTROLLER_kommunikation(); sendesollwert = true; }