各位专家,您好!
如果您对我的方法有任何问题,我希望您提供意见。 如果您认为有更好的方法在较高级别上构建代码,我也会寻求建议。
我的问题:
1)您是否预计持续切换比较器B信道会出现任何问题?
2)在较高级别上,您能想到更好的代码结构吗?
目标是测量两个独立的信号。 一个信号我称为"AC Fault"(交流故障),另一个信号为"DC Fault"(直流故障)。 当交流或直流信号通过阈值时,我们必须快速跳闸继电器。 LPM不是优先事项,但一旦我们有了工作,就可以实施。
我们的联系将会是这样
WFP 1.0 :AC比较器
WFP 1.1 :AC ADC,
WFP 1.2 :DC比较器
WFP 1.3 :DC ADC.
代码概述:
快速说明:
答 经常在比较器输入通道之间切换。
B. 如果比较器中断,则在对应于比较器的通道上触发ADC读数。
C. 比较器告知MCU输入信号是交流还是直流故障,然后设置ADC10HI继电器跳闸阈值。
D. 如果输入ADC10HI中断,则触发继电器
谢谢!
// My idea for the while loop while(1){ if (faultMode == NO_FAULT) { // swap between two comparator channels constantly if (index) { CBCTL0 |= CBIPSEL_2; // comp_B input channel CBx <-> IPSEL_x } else { CBCTL0 |= CBIPSEL_0; // comp_B input channel CBx <-> IPSEL_x } // Trigger new ADC read, monitor for fault } else { ADC10CTL0 &= ADC10ENC; ADC10CTL0 |= ADC10ENC + ADC10SC; if (index > FAULT_RESET_DELAY) { index = 0; faultMode = NO_FAULT; } } index++; }
// My idea for the while loop while(1){ if (faultMode == NO_FAULT) { // swap between two comparator channels constantly if (index) { CBCTL0 |= CBIPSEL_2; // comp_B input channel CBx <-> IPSEL_x } else { CBCTL0 |= CBIPSEL_0; // comp_B input channel CBx <-> IPSEL_x } // Trigger new ADC read, monitor for fault } else { ADC10CTL0 &= ADC10ENC; ADC10CTL0 |= ADC10ENC + ADC10SC; if (index > FAULT_RESET_DELAY) { index = 0; faultMode = NO_FAULT; } } index++; }