請問如何處理訊號源? |
缺席
|
loveforme
一般會員 發表:22 回覆:39 積分:22 註冊:2009-03-24 發送簡訊給我 |
目前我的接法如下:
我用一顆電晶體C1815(npn) ,其中 B腳接訊號源 C接 5V 10歐姆電阻 E接地 接著我把C腳拉一條線接到INT0 作為中斷訊號~ B腳接收的訊號約1V的脈波...(像是反相放大的效果) 我用示波器測量C腳的波型,是一個還算蠻漂亮的低電壓觸發的波型... 但是頭痛的是,每當我在實驗版測試的時候,用手動按鈕觸發中斷時都會出現我預期的結果 但是接上我要處理的訊號源的時候就瘋掉了... 我的訊號源是測轉速的...我用電磁感應式的~轉速約在一千轉 不知道是不是因為訊號太快? 導致我的程式來不及運算.. 可以請教大大們幫解惑 或是分享各位對於訊號源處理的心得~ |
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
你不是說出了重點了嗎?
1.查查B點的示波器波型,看看是否正確. 2.轉速一千.以中斷來說.還好勒.是你怎麼寫的?你沒說呀. ===================引 用 loveforme 文 章=================== 接著我把C腳拉一條線接到INT0 作為中斷訊號~ B腳接收的訊號約1V的脈波...(像是反相放大的效果) 我用示波器測量C腳的波型,是一個還算蠻漂亮的低電壓觸發的波型... 但是頭痛的是,每當我在實驗版測試的時候,用手動按鈕觸發中斷時都會出現我預期的結果 但是接上我要處理的訊號源的時候就瘋掉了... 我的訊號源是測轉速的...我用電磁感應式的~轉速約在一千轉 不知道是不是因為訊號太快? 導致我的程式來不及運算.. 可以請教大大們幫解惑 或是分享各位對於訊號源處理的心得~ |
loveforme
一般會員 發表:22 回覆:39 積分:22 註冊:2009-03-24 發送簡訊給我 |
我的程式...
是以time0 每50us T0中斷一次並且 count ; 因為偵測到一次訊號等於轉一圈所以我計數出來的count跟RPM的計算方式為: 利用INT0偵測到訊號時中斷並且運行以下程式碼 RPM = 1200000 / count ; //因為想不出更好的計算方式,所以只好用這種很耗資源的計算方式... count = 0 ; //歸零 以便計算下一圈總共有多少 50us RPM 再另外用七段顯示器 或是 UART 輸出 我都有個別寫程式碼 只是用手動輸入中斷,跟用實際轉速訊號時...好像是兩回事... 先別說 七段顯示器 跟UART ,我有另外實驗用INT0中斷執行 P1^0 = 0 ; delay() P1^0 = 1 ; 接著我用示波器測量...P1^0 針腳的波型,雖然有出現低電位的觸發...但是他觸發點會亂跳...(使用七段顯示器時也是都整個亂跳...) 因為我轉速是固定的...我測量INT0腳的低電位的位置都是固定的! 所以我才會懷疑是否是因為我輸入的訊號不好... 附帶一題...我T0的中斷優先是1 雖然執行INT0中斷程式時會遠遠大於50us但是中斷優先低於T0所以count 還是正常計時的...
編輯記錄
loveforme 重新編輯於 2009-03-31 22:07:20, 註解 無‧
|
loveforme
一般會員 發表:22 回覆:39 積分:22 註冊:2009-03-24 發送簡訊給我 |
剛剛爬了很久的文,再找看看有沒有跟我這篇類似的文章...卻發現了這個!
http://delphi.ktop.com.tw/board.php?cid=173&fid=1167&tid=78789 因為我是直接學keil C 所以對於硬體方面不是很懂... 我知道用組合語言寫程式比較快,但是我只會用C... C雖然方便 但是有計算上會比較慢... 像我剛剛回的文有一個RPM = 1200000 / count ; 這種東西真是獻醜了... 有沒有大大可以推薦我幾本有關如何用C寫出有執行效率的書呢? 像剛剛我有爬到一些文,有人寫乘法的程式碼是先設定 sfr a = 0xF0; sfr b = 0xE0; c = a * b; //如果是我,我就傻傻的直接寫這個了... 還有這個 在此引用(正)版主的這句話... " (以10進制為例)假設你要做2222*21, 你可以把它拆成220*210 22*21 或 2200*21 22*21 16進制一樣的觀念, 我很希望學習這方面的東西,因為我目前看的書 都是敎人家寫出結構化的程式... 但是如何寫出,不讓晶片負擔太大的程式,我就不懂了...
編輯記錄
loveforme 重新編輯於 2009-04-01 01:09:55, 註解 無‧
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
PONT 這本可以給一些觀念.值得你看一下
http://rapidshare.com/files/14775815/Embedded_c_tutorial_-__8051_.pdf ===================引 用 loveforme 文 章=================== 剛剛爬了很久的文,再找看看有沒有跟我這篇類似的文章...卻發現了這個! http://delphi.ktop.com.tw/board.php?cid=173&fid=1167&tid=78789 因為我是直接學keil C 所以對於硬體方面不是很懂... 我知道用組合語言寫程式比較快,但是我只會用C... C雖然方便 但是有計算上會比較慢... 像我剛剛回的文有一個RPM = 1200000 / count ; 這種東西真是獻醜了... 有沒有大大可以推薦我幾本有關如何用C寫出有執行效率的書呢? 像剛剛我有爬到一些文,有人寫乘法的程式碼是先設定 sfr a = 0xF0; sfr b = 0xE0; c = a * b; //如果是我,我就傻傻的直接寫這個了... 還有這個 在此引用(正)版主的這句話... " (以10進制為例)假設你要做2222*21, 你可以把它拆成220*210 22*21 或 2200*21 22*21 16進制一樣的觀念, 我很希望學習這方面的東西,因為我目前看的書 都是敎人家寫出結構化的程式... 但是如何寫出,不讓晶片負擔太大的程式,我就不懂了... |
loveforme
一般會員 發表:22 回覆:39 積分:22 註冊:2009-03-24 發送簡訊給我 |
暗黑大你好~
這本書我有拜讀過了,真的很不錯! 尤其第五章影響我很多...結構化我的程式碼~ 只是不知道版大是要我著重哪個地方? 我所欠缺的觀念是不知道如何寫出對程式較無負擔程式碼... 因為C語言是個方便的東西>"< 但是卻不是對晶片直接做溝通... 所以我想了解 同樣一個東西怎樣寫才是有同樣效果又可以讓晶片很快計算出來! 之前有看過一個文章,他舉了一個例子: 如何計算圓周率?? 她總共用了三種方法...我有點忘了第三種 第一種是直接3.14 第二種是直接圓周/直徑 第三種是兩個數字相除然後<<8(位移) 只是不知道這個想法是怎麼來的... |
KSC
一般會員 發表:4 回覆:18 積分:4 註冊:2006-09-17 發送簡訊給我 |
這兒有講
http://chamberplus.myweb.hinet.net/ems_2.htm 單晶片是八位元的世界,您就應該轉換成八位元的思考模式,才能寫出有效率的好程式。 到現在我還是基於此點去寫我的程式 ===================引 用 loveforme 文 章=================== 暗黑大你好~ 這本書我有拜讀過了,真的很不錯! 尤其第五章影響我很多...結構化我的程式碼~ 只是不知道版大是要我著重哪個地方? 我所欠缺的觀念是不知道如何寫出對程式較無負擔程式碼... 因為C語言是個方便的東西>"< 但是卻不是對晶片直接做溝通... 所以我想了解 同樣一個東西怎樣寫才是有同樣效果又可以讓晶片很快計算出來! 之前有看過一個文章,他舉了一個例子: 如何計算圓周率?? 她總共用了三種方法...我有點忘了第三種 第一種是直接3.14 第二種是直接圓周/直徑 第三種是兩個數字相除然後<<8(位移) 只是不知道這個想法是怎麼來的... ? |
loveforme
一般會員 發表:22 回覆:39 積分:22 註冊:2009-03-24 發送簡訊給我 |
KFC大大~~你連結的那個網站,也恨是我很崇拜的一個作者之ㄧ!!
剛好就在你連結的那個網址中! 她有一個計算ADC轉換溫度的程式,裡面有一段... 以我的笨腦袋真的想不懂他這樣寫的意思是怎樣... 我要說的就是他計算 cnt_offset 的這個變數! 一般來說~我簡單的腦袋會想到計算cnt_offset這個東西的時候... 我應該會計算(BT_table( cnt_1) - BT_table(cnt_1 1) ) / 5 ; 這個就是 cnt_offset 每增加 1度C ..adc_v 所增加的值! 可是他的算法真是令我百思不得其解... 不過我以我的算法下去算的時候...會遇到一種狀況 當差值小的時候 又 除 5 很可能這個cnt_offset會被忽略掉 只是我不明白他的算法...還有謂何他要一直定義它的變數型態?? |
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
|
loveforme
一般會員 發表:22 回覆:39 積分:22 註冊:2009-03-24 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |