中国福彩网中心

新聞中心

EEPW首頁 > 牛人業話 > 萬物皆需濾波,否則系統翻車

萬物皆需濾波,否則系統翻車

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

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

本文引用地址:http://www.tsejo.com.cn/article/201901/397351.htm

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

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

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

  面對信息的汪洋,網民們大都脆弱而迷惘,太多時候,不想看的應有盡有,想看的一無所有。雖然常在河邊走,哪有不濕鞋,百花叢中過,很難做到片葉不沾身,但是我們仍然期盼著有那么一堵墻或者一張無形的網,把我們不想看的都擋上一擋。

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

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

  1

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

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

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

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

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

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

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

  當得知轉向燈莫名其妙地閃了一夜之后,灑家心里一個咯噔,“你們怎么測試出來的?”打開程序后,我迅速鎖定了和轉向燈閃爍有關的代碼后,開始心平氣和地問起小鄭來。

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

  我頭腦中閃過幾個可能的答案。“是不是警示開關壞了?”我提醒小鄭。“如果警示開關一直有效的話,轉向燈是會閃個不停的!”

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

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

  2

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

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

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

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

  3

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

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

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

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

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

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

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

  4

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

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

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

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

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

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

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

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

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

  5

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

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

  “啊,”我不置可否,“還要再確認一下!”

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

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

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

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

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

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

  6

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



關鍵詞:

評論


相關推薦

技術專區

關閉
中国福彩网中心