导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→添加超时ADAT接收器?[liufengzhong]

 *第60835篇: 添加超时ADAT接收器?

  
楼 主:liufengzhong 2014年11月22日12:19
 添加超时ADAT接收器?
我想添加一个简单的超时ADAT接收器,因为有时候,如果你把光缆才通过

p when pinsneq(violation) :>   int _;  

声明,它只会挂,从未退出线程。 我需要退出线程执行一些操作,所以我想读端口计数器每回合(或使用一个计时器),并使用select语句就像在超时的例子将是我最好的选择。

while(1) {
        violation = word;
        select {
            case t when timerafter(count + 100000) :>   void:
                printf("timer reached\n");
                return;
            case p when pinsneq(violation) :>   int _ @ count:
                break;
        }
   ...
   ...
   ...
}

现在,我知道adat_rx模块应该是可靠的,只是增加了select语句和采样端口柜台似乎把时间不一致,导致线程退出时结束循环,检查

if (word != 0 && word+1 != 0) 

任何想法如何可靠地退出线程如果等待
P
到不平等的
violation 
需要太长时间?

回答:

select
{
  case t when timerafter(count + 100000) :>   count:
    printf("timer reached\n");
    return;
  case p when pinsneq(violation) :>   void:
    t:>  count;
  break;
}

回复:

我也用一个计时器。 采样定时器这样仍然使线程退出时到达最后一个“如果”语句。 任何其他想法? 陷入在这一点上,在我的情况下甚至很少,不是可接受的。 我很惊讶这个问题还没有被发现之前(了)。


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:64位libwebkit Lubuntu 14.04

[下一篇主题]:usb 2.0 -音频端口重新配置可能吗?