全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2130
推到 Plurk!
推到 Facebook!

89C2051與定時器

答題得分者是:bernie_w39
tomm0692001
一般會員


發表:1
回覆:1
積分:0
註冊:2007-12-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-12-04 14:47:58 IP:203.68.xxx.xxx 訂閱
請問我該怎麼設定定時器,可以每一1us中斷一次
振盪器是使用22.1184MHZ的
我的程式如下:
TMOD=0x22;
PCON=0x80; //57600bps *2 22.1184M 115200bps
TH0=0xFE;
TL0=0xFE;
EA=1;
ET0=1;//致能外t0中斷0
TR0=1;
依照公式算法因該可以每1us中斷一次,可是我用示波器去量測的時候,卻是每9us中斷一次,請問為什麼會這樣,是因為他沒辦法那麼快嗎?如果是的話,那我該換哪一種mcu會比較好?
bernie_w39
資深會員


發表:3
回覆:199
積分:280
註冊:2007-10-07

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-12-04 17:50:21 IP:61.218.xxx.xxx 訂閱
中斷之後, 又作了什麼動作呢?

MCU 進入中斷, 需要一點時間, 然後處理中斷程式本身, 也要時間, 處理完後,
從中斷返回, 也是要時間. 這三個時間加起來, 就會是你測到的結果 - 9uS

記得 cygnal 有一款 C8051 系列的, 內建 24MHz clock, 如果指令是 1 clock
一個的話, 應該有機會.
tomm0692001
一般會員


發表:1
回覆:1
積分:0
註冊:2007-12-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-12-04 18:53:16 IP:203.68.xxx.xxx 訂閱

===================引 用 bernie_w39 文 章===================
中斷之後, 又作了什麼動作呢?

MCU 進入中斷, 需要一點時間, 然後處理中斷程式本身, 也要時間, 處理完後,
從中斷返回, 也是要時間. 這三個時間加起來, 就會是你測到的結果 - 9uS

記得 cygnal 有一款 C8051 系列的, 內建 24MHz clock, 如果指令是 1 clock
一個的話, 應該有機會.

這個TIMER中斷只有讓COUTER加1,透過COUTER的數值來計算時間,並利用一個外部中斷,當負緣觸發時進入中斷,然後讀取COUNTER的值,夠過COUTER的值去判斷紅外線訊號,因為此紅外線編碼有4個不同的時間,每一個時間差距只有110us,所以當我使用89c2051去做判斷的時候都會出錯,除非送很多次才有辦法控制,所以想請問看看有什麼方法可以得到每1us中斷一次?我有想過如果用avr單晶片去做,不知道可不可以,如果可以的話可以推薦那個型號比較好?
bernie_w39
資深會員


發表:3
回覆:199
積分:280
註冊:2007-10-07

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-12-04 22:23:55 IP:59.121.xxx.xxx 訂閱
AVR 我就還滿熟的, 像你要求的功能 (四個輸入, 每個之間的差距在 110uS), 然後要抓訊號的解析度
在 1uS. 這樣的功能, 大部份的 AVR chip 應該都可以, 看你其它部份的功能要多少 i/o, 以及程式碼
空間. 以及用 C or ASM, 再來決定 chip 比較好.

比較常見的像 ATmega8, ATmega48, ATtiny24... 實作你提的功能, 應該都綽綽有餘. 看你的解析度要
多準, 如果要很準的, 就用 crystal, 否則 internal 8MHz RC oscillator 是夠用了. 它有 16 bit timer,
以及 pin changer interrupt, 所以 pin change 時, 將 pin 的資料與 timer 值留住, 應該準度是可以的.
系統時間:2024-05-07 21:29:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!