<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 牛人業(yè)話 > 萬物皆需濾波,否則系統(tǒng)翻車

          萬物皆需濾波,否則系統(tǒng)翻車

          作者:光華居士 時間:2019-01-31 來源:電子產(chǎn)品世界 收藏

          “這是一個最好的時代,也是一個最壞的時代,這是一個智慧的年代,也是一個愚蠢的年代。”拿英國大文豪狄更斯的這段話用來描述這個信息爆炸的現(xiàn)代社會再合適不過了。

          本文引用地址:http://www.ex-cimer.com/article/201901/397351.htm

            當(dāng)代社會,網(wǎng)絡(luò)四通八達(dá),觸角遍布天下,宅在家中,只要連上網(wǎng),我們似乎就被賦予了神通的力量,生了千里眼,足不出戶,可觀天下,長了順風(fēng)耳,動動鼠標(biāo),就能捕捉到空中永不消逝的電波。遠(yuǎn)古時代交通基本靠走,通信基本靠吼,就連那個傳奇般的瑯琊閣,也要靠遍布天下的眼線、不斷飛梭的信鴿傳書才能識盡天下人,算盡天下事,相比之下,這個耀眼的大時代對我們真是無私而慷慨。

            但是,這世上的一切都像月亮,總有一個陰暗面,讓人永遠(yuǎn)看不見。

            在這個無序地野蠻生長的網(wǎng)絡(luò)社會中,在這個你方唱罷我登場的自媒體時代,每個人既是信息的消費(fèi)者,也是信息的生產(chǎn)者,在數(shù)以億計生產(chǎn)者有意無意的輸出中,數(shù)據(jù)終于泛濫的洪水滔天。各類垃圾數(shù)據(jù)猶如耀眼的煙花,騰空而來,逐風(fēng)而去,轉(zhuǎn)眼落地成渣。各種虛假的信息野蠻生長,來得轟轟烈烈,消失地?zé)o聲無息。總之,無用的垃圾信息撲面而來,讓網(wǎng)民們防不勝防,白白浪費(fèi)了大好的寶貴時光。

            面對信息的汪洋,網(wǎng)民們大都脆弱而迷惘,太多時候,不想看的應(yīng)有盡有,想看的一無所有。雖然常在河邊走,哪有不濕鞋,百花叢中過,很難做到片葉不沾身,但是我們?nèi)匀黄谂沃心敲匆欢聣蛘咭粡垷o形的網(wǎng),把我們不想看的都擋上一擋。

            哪里有壓迫,哪里就有反抗,更何況,信息過濾也是一個非常大的市場。于是乎,靠著對個人閱讀習(xí)慣的精準(zhǔn)推送,在數(shù)據(jù)洪流上添加了一道過濾網(wǎng)的今日頭條粉墨登場了。頭條剛剛開始嶄露頭角時,灑家就切切實實地感受到了它的力量,這種體驗實在太棒了,幾番磨合下來,頭條就像捕捉到了你的所思所想,給的都是想看的,不想看的通通入網(wǎng)?,F(xiàn)代社會,效率至上,時間就是金錢,頭條通過“濾波”節(jié)約了網(wǎng)民的大量時間,它也得以迅速成長。只是后來的頭條慢慢走了樣,變得空有技術(shù),內(nèi)容干貨越來越少,我也終于把它一卸了之。

            剛剛成立六年的頭條當(dāng)今市值千億,腳踢騰訊,掌摑百度,足以證明濾波有多么重要。做為嵌入式工程師的筆者,在一次莫名其妙的產(chǎn)品故障之后,也體會到了電子產(chǎn)品不濾波就翻車的尿性。

            1

            入冬后的北方越來越難熬了。

            公司地處偏郊,靠坐班車來回通勤。為了節(jié)約班車運(yùn)營成本,司機(jī)師傅總是到點才開始熱車,往往路程過半,車內(nèi)才稍稍有了一些溫度,到了公司門前,車內(nèi)也終于變得一片溫暖。由儉入奢易,由奢入儉難,坐在車內(nèi)感受溫暖,眼見著車外凜冽的寒風(fēng)將枯枝吹得亂顫,也就不愿意下車面對這惱人的寒。這時候,只得帶著一百個不情愿,重新把自己裹得嚴(yán)嚴(yán)實實,忍凍耐寒地大步奔向公司辦公室。

            到了辦公室,打開中央空調(diào)的開關(guān),頭兩個小時內(nèi)仍然不敢摘下帽子,不愿意伸出手。這段時間里,大家伙談天的熱情也不高,大都帶著帽子,縮著脖子,畏畏縮縮地坐在電腦桌前,先看看文檔打打前站,等到辦公室內(nèi)終于暖和過來,同事們才開始慢慢活泛起來,自此才開始一天熱火朝天的工作。

            灑家雖然一向埋頭苦干,也很耐得了煩,但在剛上班頭一兩個小時的冬眠蟄伏期,也頗不愿意遇上一些繁難,這一段時間,我也只求個平平安安。

            可是,歲月劍拔弩張,豈能盡如我們的想象?

            這不,剛到辦公室坐下不大會兒,來自項目合作方的一通電話就火急火燎地打了過來。

            “光華居士,碰上大事了,不知道怎么搞的,轉(zhuǎn)向燈一直閃個不停。”隔著電話,仍能聽得到合作方小鄭的焦急。

            當(dāng)?shù)弥D(zhuǎn)向燈莫名其妙地閃了一夜之后,灑家心里一個咯噔,“你們怎么測試出來的?”打開程序后,我迅速鎖定了和轉(zhuǎn)向燈閃爍有關(guān)的代碼后,開始心平氣和地問起小鄭來。

            “我們是在對這款產(chǎn)品進(jìn)行帶負(fù)載試驗,拿一些時間繼電器產(chǎn)生開關(guān)信號,觸發(fā)產(chǎn)品接通負(fù)載,大概十分鐘就跑完一個完整的測試周期了。測試的第一天一點事沒有,前天發(fā)現(xiàn)轉(zhuǎn)向燈突然閃個不停,我們斷了電重新上電,測到昨天又發(fā)現(xiàn)轉(zhuǎn)向燈突然閃個不停,到現(xiàn)在都快閃了一天了。”小鄭簡短地描述了問題產(chǎn)生的背景。

            我頭腦中閃過幾個可能的答案?!笆遣皇蔷鹃_關(guān)壞了?”我提醒小鄭?!叭绻鹃_關(guān)一直有效的話,轉(zhuǎn)向燈是會閃個不停的!”

            “我們確認(rèn)了所有信號,這些信號都很正常,光華居士,我們分析了大半天了,現(xiàn)在感覺應(yīng)該是軟件問題,要不你仔細(xì)看看代碼,分析分析哪里是不是有漏洞?”小鄭小心翼翼地提議道。

            很有可能就是軟件的問題,我在心里嘀咕道。

            2

            由于無法在公司重現(xiàn)產(chǎn)品測試環(huán)境,領(lǐng)導(dǎo)委派我到Z市去解決問題。出發(fā)時正趕上下雪,街邊行人稀少,路過的美女也藏起了撩人的小蠻腰。公交車小心翼翼地行駛在有些上凍的路面上,時而發(fā)出吱呀吱呀的聲音,灑家坐在搖搖晃晃的車上,有一搭沒一搭地考慮著這個問題,突然想到了一個可能的答案。

            ‘可能是定時器管理程序那里的問題,在轉(zhuǎn)向燈多次定時那里,有個對軟件定時器節(jié)點的計時次數(shù)的遞減操作,這是一個32位的變量,它是不是從0遞減到了2的32次方-1了?’灑家一面盤算著,一邊打開電腦,想驗證一下自己的想法。

            看到代碼后,灑家不禁啞然失笑,原來我早就改變了定時器管理程序的實現(xiàn)方式,現(xiàn)在計時次數(shù)不是遞減,而是累加了,每次計時到達(dá)時將計時次數(shù)累加,然后和設(shè)定好的閾值進(jìn)行比較,如果大于等于閾值就說明已經(jīng)完成了多次定時。

            人的記憶真奇妙,大雁飛過天空了無痕,人之前干過的事情卻在腦子里扎下了根。

            3

            北風(fēng)吹,雪花飄,刮到臉上似鐮刀!在一片肅殺的天寒地凍中,灑家頂風(fēng)冒雪地來到項目合作方所在的Z市。

            寒暄幾句之后,小鄭把我引到測試臺前,一個高約兩米的測試機(jī)柜靜靜地矗立在房間的角落,前面有一些清晰但不耀眼的指示燈,后面就是一些時間繼電器和實打?qū)嵉能嚐?、車窗等?fù)載了。

            我探過頭去看了看,轉(zhuǎn)向燈正閃個不停,甚是刺眼。

            “你們一直沒有斷電?”我揉了揉被車燈晃得發(fā)花的眼睛,問起小鄭來。

            “沒有,知道你過來,我們沒敢斷電,就怕斷了電,問題就再也測不出來了。”小鄭帶著一絲不好意思的微笑,哎,多么老實的工程師??!

            接著是一陣無言的沉默,看著我攢眉蹙額地想事情,小鄭也識趣地站遠(yuǎn)了一些。產(chǎn)品線束零亂地接在測試臺上,在測試過程中,其它負(fù)載仍然有條不紊地相繼接通和關(guān)斷,轉(zhuǎn)向燈暫時正常一下,執(zhí)行完相關(guān)功能之后再一次返回?zé)o休無止的通斷輪回中。

            看著簡陋的測試環(huán)境和凌亂的接線,我心里多多少少有些不安,這樣的測試環(huán)境,各個輸入線上得有多少雜波呀!不過,除了心疼產(chǎn)品要應(yīng)對這種無端的騷擾之外,灑家對雜波會產(chǎn)生產(chǎn)品功能故障倒是一點也不擔(dān)心,做為一名入職多年的嵌入式軟件工程師,灑家可以想得到,雜波一次次向產(chǎn)品襲來,大無畏的產(chǎn)品果斷啟用濾波功能,將一道道雜波斬于馬下,就是雜波來得再猛烈些,濾波也能游刃有余,不在話下!

            4

            灑家遇到問題一向喜歡快刀斬亂麻,憑著多年掃過的雷,掉過的坑,再輔以神神叨叨的直覺,一般都會精準(zhǔn)定位,快速爆破,直搗黃龍,這種順風(fēng)順?biāo)?,在一定程度上也滋養(yǎng)了我的輕狂。

            自古年少多輕狂,誰不想,輕衣怒馬,仗劍走四方!

            這次,灑家檢查了觸發(fā)轉(zhuǎn)向燈閃爍的幾乎所有代碼,基本上都是有進(jìn)有出,閃爍幾次就會停下來,絕不至于閃個不停的。弄了半天還搞不清楚子丑演卯,身在異鄉(xiāng),進(jìn)退恓惶,真想跺跺腳,罵罵娘,以免被憋到抓狂。

            人的世界里充滿了爾虞我詐,計算機(jī)的世界卻始終表里如一,童叟無欺。轉(zhuǎn)向燈明明白白地突然在一邊閃個不停,搞得人心神不寧,再不正視問題就是赤裸裸的掩耳盜鈴!

            看來問題就出在還沒檢查過的最后一處代碼了,即碰撞報警功能。這款產(chǎn)品平時會檢測一個PWM形式的碰撞信號,碰撞信號有效時,會觸發(fā)轉(zhuǎn)向燈一直閃爍。

            可能嗎?測試臺還能鬼使神差地在碰撞信號線上產(chǎn)生出一個PWM形式的雜波來?

            世界千奇百怪,如果真有這樣的雜波,身經(jīng)百戰(zhàn)的灑家也有些感到奇怪。但是畢竟沒有了其它懷疑的對象,于是灑家收拾好心情,好好地分析了一下碰撞信號的檢測程序。

            在這款產(chǎn)品中,使用管腳的輸入捕捉功能檢測碰撞信號,使用上升沿和下降沿同時捕捉的方式,檢測到上升沿后,記錄一個時間戳A,等到檢測到下降沿時,再記錄一個時間戳B,再等待下一個上升沿,繼續(xù)記錄時間戳C。如果信號線上的高電平持續(xù)時間(B-A)和低電平持續(xù)時間(C-B)滿足碰撞信號形式,便認(rèn)為碰撞信號有效。

            分析到這里,灑家有些茫然了。

            5

            天外有天有無常,山外有山有他鄉(xiāng),雜波之外有雜波,難道正是PWM模樣?

            灑家正想沉浸在神秘主義和虛無主義的情緒里顧影自憐一番,小鄭屁顛屁顛地過來了。他帶著一副期待的神情,看了看我,看了看電腦,沉默了一會兒,終于問了出來;“是不是找到原因了?”

            “啊,”我不置可否,“還要再確認(rèn)一下!”

            時間寶貴,不可浪費(fèi),既然對碰撞信號檢測程序起了懷疑,不管三七二十一,先把代碼改了再說。

            于是,我在碰撞信號的檢測上也加了一層濾波。

            修改之后,必須連續(xù)三次PWM信號滿足碰撞信號形式,才會認(rèn)為碰撞信號有效。改完之后,我把新程序灌到板子上,把小鄭叫來,讓他重新對測試臺上了電,便先回了賓館。

            一路奔波,下了車直接過來頂鍋,看著系統(tǒng)的翻車,最后加了一層濾波,灑家也是累了狗了!

            傍晚時分,我緩緩踱步到了合作方公司,測試臺正在有條不紊地執(zhí)行各項功能,指示燈閃來閃去都很正常。

            接下來兩天正好是周末,我和小鄭在辦公室盯了兩天,一切正常!心態(tài)放松的我跟小鄭說明白了問題的來龍去脈,看著小鄭驚訝地遲遲合不上嘴,我毫不留情地又給了他重重一錘:碰撞信號輸入線上能引入PWM形式的雜波,你們應(yīng)該檢查檢查到底是測試臺的問題還是產(chǎn)品硬件的問題了!

            6

            回程的路上,我一直禁不住地胡思亂想,電子工程師的工作干得久了,我慢慢地變成了一個懷疑論者。在電子產(chǎn)品的世界里,一切都有可能發(fā)生,保持開放的態(tài)度、發(fā)散的思維對解決疑難雜癥特別重要。這一次經(jīng)驗教訓(xùn)也給我結(jié)結(jié)實實地上了一課,正所謂:萬物皆需加濾波,否則系統(tǒng)會翻車!



          關(guān)鍵詞:

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();