音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

探討一個(gè)問題,定時(shí)定量捕捉事件。有一定難度,別輕視。

作者:gtw 欄目:單片機(jī)
探討一個(gè)問題,定時(shí)定量捕捉事件。有一定難度,別輕視。
要求:在檢測(cè)滿足m時(shí)間內(nèi)發(fā)生n次動(dòng)作的事件。定時(shí)定量,動(dòng)態(tài)檢測(cè)。



如何實(shí)現(xiàn)?從第一次動(dòng)作開始計(jì)時(shí),計(jì)滿m時(shí)間后或動(dòng)作次數(shù)不足n則將時(shí)間從第二次動(dòng)作為起始算起。
注意,計(jì)滿m時(shí)間后,可能發(fā)生i(i<n)次動(dòng)作,每個(gè)動(dòng)作發(fā)生的時(shí)間都可能被用于重新計(jì)算時(shí)間域。



有沒有比較好的方法實(shí)現(xiàn)?
如果使用n個(gè)計(jì)時(shí)器來保存n次時(shí)間的起始時(shí)間的話,太浪費(fèi)RAM了,排除,不要。
其他方法呢?希望各位不吝賜教。


* - 本貼最后修改時(shí)間:2006-4-15 9:47:53 修改者:gtw

2樓: >>參與討論
xwj
保存每一次動(dòng)作的時(shí)間,然后再作判斷
 
3樓: >>參與討論
gtw
呵呵,如我題中,費(fèi)RAM啊。
 
4樓: >>參與討論
taoest
高通
用類似高通的算法
嘗試一下。
bit input=0,OUTPUT=0;
int m,n;
int measureValue=m;
int timeStated=0;
while(tickcount())
{
    measureValue--;
    if(measureValue<0)measureValue=0;
    if(input==1) OUTPUT+=m/n;
    if(timeStated<m)timeStated++;
    else
    {
        if(OUTPUT>=m) OUTPUT=1;
        else OUTPUT=0;
    }
    doSomeThing();
}
//以上為偽代碼
// m,n要取合適的值,使M/N為整數(shù);
//tickcount() 為延時(shí)程序,一個(gè)時(shí)間單位。

5樓: >>參與討論
yewuyi
計(jì)滿m時(shí)間后動(dòng)作次數(shù)足n要如何辦???
 
6樓: >>參與討論
gtw
研究中
計(jì)滿m時(shí)間后動(dòng)作次數(shù)足n要如何辦???
計(jì)滿m時(shí)間內(nèi)動(dòng)作次數(shù)足n,就完成了實(shí)時(shí)檢測(cè)啊……ye大哥

7樓: >>參與討論
dengm
增量
 
8樓: >>參與討論
gtw
即使是增量
即使是增量,假如兩次事件相隔較長(zhǎng),這個(gè)增量仍有可能達(dá)到最大值啊。

9樓: >>參與討論
gtw
taoest兄,問題的麻煩之處在于
taoest兄,問題的麻煩之處在于假如從第一次事件開始m分鐘后未滿n次事件,本次檢測(cè)并未結(jié)束,m時(shí)間段是動(dòng)態(tài)的,即0~m時(shí)間內(nèi)沒有滿足n次事件則檢查1~m+1內(nèi)是否滿足,如此等等
否則不會(huì)這么難了

* - 本貼最后修改時(shí)間:2006-4-15 14:33:43 修改者:gtw

10樓: >>參與討論
hjf8031
to:gtw
這個(gè)問題不錯(cuò)!
1. 從純理論的角度感覺省不了RAM.搞編碼不知能不能行得通?
2. 在你的應(yīng)用中應(yīng)該有一點(diǎn)規(guī)律吧?那怕是一點(diǎn)點(diǎn),可以搞搞模糊算法.

11樓: >>參與討論
gtw
to:hjf8031
實(shí)際上
應(yīng)該講,如果用編碼的方法,編碼越細(xì),效果越好,但占用RAM越多。編碼少,則中間會(huì)漏數(shù)……難題。
事件的發(fā)生完全是隨機(jī)的,目前除了用大RAM,我還沒想到其他好方法。
這應(yīng)該是個(gè)高通的問題,但如何實(shí)時(shí)檢測(cè)不漏數(shù),還不大容易。


12樓: >>參與討論
xwj
m多大?n多大?
 
13樓: >>參與討論
gtw
比方說
比方說,n在1~100次,m在1~10000個(gè)檢測(cè)周期
但是,主要是,我們能不能找一種通用的方法?

14樓: >>參與討論
dengm
變長(zhǎng)
n在1~100次,m在1~10000

RAM 要求最大 應(yīng)在 n=100, m=10000 時(shí)

m/n = 100   7 bits

     增量                             bits format
  0 --  127       0 + 7 bits       0xxxxxxx
128 -- 1023       10 + 10 bits     10xxxxxx xxxx
1024 --16383      11 + 14 bits     11xxxxxx xxxxxxxx

77 個(gè) 128 + 23個(gè) 24 時(shí):   77 * 1.5 + 23 = 139 bytes 為RAM最大值


* - 本貼最后修改時(shí)間:2006-4-16 10:53:32 修改者:dengm

15樓: >>參與討論
taoest
動(dòng)態(tài)
我給的程序是動(dòng)態(tài)的,請(qǐng)問你看了沒有?

16樓: >>參與討論
gtw
可能是沒能理解taoest兄的意思
用類似高通的算法
嘗試一下。
bit input=0,OUTPUT=0;
int m,n;
int measureValue=m;
int timeStated=0;
int eventRcord = 0x0000;    // 增加該量,用于記錄
while(tickcount())
{
  // measureValue作用僅為組成一個(gè)m時(shí)長(zhǎng)的時(shí)鐘?該時(shí)鐘可一直運(yùn)行
    measureValue--;
    if(measureValue<0)measureValue=0;    ---->?:measureValue=m,沒什么意義
    if(input==1) eventRcord+=m/n;    // 檢測(cè)到一次事件,并記錄
    if(timeStated<m){
     timeStated++;    // 該時(shí)鐘啟動(dòng)后運(yùn)行滿m時(shí)長(zhǎng)后即停止
    }else{
    // timeStated運(yùn)行完允許輸出
        if(eventRcord>=m)    // 但eventRecord不能只加不減啊
         OUTPUT=1;
        else
         OUTPUT=0;          // 當(dāng)前時(shí)間前m時(shí)長(zhǎng)內(nèi)不足n次事件,eventRcord應(yīng)當(dāng)減去一個(gè)量
    }
    doSomeThing();
}
//以上為偽代碼
// m,n要取合適的值,使M/N為整數(shù);
//tickcount() 為延時(shí)程序,一個(gè)時(shí)間單位。


17樓: >>參與討論
taoest
程序有誤
不好意思,程序有點(diǎn)錯(cuò)誤
用類似高通的算法
嘗試一下。
bit input=0,OUTPUT=0;
int m,n;
int measureValue=m;
int timeStated=0;
while(tickcount())
{
    measureValue--;
    if(measureValue<0)measureValue=0;
    if(input==1) measureValue+=m/n;   //這行改過
    if(timeStated<m)timeStated++;    //這個(gè)判斷可能是多余的,因?yàn)閙easure VALUE本來就有這個(gè)功能。
    else
    {
        if(measureValue>=m) OUTPUT=1;//這行改過
        else OUTPUT=0;
    }
    doSomeThing();
}
//以上為偽代碼
// m,n要取合適的值,使M/N為整數(shù);
//tickcount() 為延時(shí)程序,一個(gè)時(shí)間單位。

18樓: >>參與討論
gtw
研究中……
 
19樓: >>參與討論
gtw
是的,這種算法可近似解決該問題
但主要是事件發(fā)生或撤銷的時(shí)間與系統(tǒng)流逝的時(shí)間不一致,不能完全定量。
你說的對(duì),要么用老辦法解決,要么改變動(dòng)作輸出方式

20樓: >>參與討論
gtw
我提出的定時(shí)定量看來與高通還是有區(qū)別的
可以看一下附件的演示
左邊的out指示是高通算法,右邊的是記錄時(shí)間

http://bbs.21ic.com/upfiles/img/200642391328137.rar

21樓: >>參與討論
dengm
n在1~100次,m在1~10000個(gè)檢測(cè)周期時(shí),峰值用多少ram能接受?
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請(qǐng)叫高手一個(gè)問題!
AD精度到底在實(shí)際應(yīng)用中是多少???。!
有人做過編程器和開發(fā)板么
從何入手
急求16位雙積分型ADC,大家來幫幫忙
免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)