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.

MSP430G2231如何实现两个开关信号的方向性输出



说明下这里的 RX1和RX2是接光电开关信号的输入端,先挡住RX1,再挡住RX2,D1点亮,表示进,并通过RF24L01发送出去,如果是先挡住RX2,再挡住RX1,D2点亮,表示退,并通过RF24L01发送出去,一个开关信号我可以实现,两个开关信号不知道怎么实现方向性,请指点下

  • 这个是纯粹的软件问题。

    1.  要想满足你的想法,首先要设定两个开关量连续发生的间隔时间,当RX1被挡住后,多长时间内,RX2被挡住。否者你这个设计就有可能得到非确定的结果。

    2. 事件发生的频率不能低于连个连续开关量间隔时间,否者由于初始状态是未知的,容易造成相反的结果输出

    3. 在上面两个条件都确定的前提下,你可以设计一个当前状态机和一个历史状态机,用来保存当前状态, 比如,00表示未发生遮挡事件,01表示RX1遮挡事件发生,10表示RX2事件发生,11表示两个事件都发生。比较当前状态机和历史状态机,就可以得到几个不同的事件组合。

    4. 状态处理最好在遮挡事件发生过后处理。

    5. 一个事件发生后,要启动不同的TIMEOUT时间,在RX1,或RX2发生时,启动TIMEOUT1,只有在TIMEROUT1发生以内的RX2,RX1事件才有效,否者复位状态机。 在状态机为11时,启动TIMEROUT2,在TIMEOUT2发生之前的所有事件都无效,如果发生了,则根据当前状态更新状态机。