會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   2 名訪客





用PIC12F1572的Timer 1 Toggle Mode 抓RPM會飄
高級會員
註冊日期:
2007/04/16 20:42
所屬群組:
註冊會員
文章: 84
等級: 8; EXP: 12
HP : 0 / 178
MP : 28 / 6378
離線
Dear 先進,
後學擬設計1個能抓取風扇轉速RPM的裝置;參卓版主Ryang所說:用教育光碟W301教材中的Timer 1 Toggle Mode於PIC12F1572中的腳4(RA3)來設計。雖可中斷,但RPM會飄。
PIC採16MHz,Timer1的Clock為1MHz,外部RPM從RA3輸入,我採MCC來產生程式碼,怪的是:依PIC12F1572 PDF檔第101頁所示,若將T1GSEL=1 (RA3輸入),則無法中斷;但將T1GSEL=0 (表RA4輸入),則可中斷,但抓到的Timer 1 Clock數會飄。
附件中的Timer1_Gated_CKT1是電路方塊圖;
附件中的Timer 1 Toggle Mode是時序圖;
附件中的在Prog.zip檔是部分重要程式;
而完整程式是Frq.X.zip檔。
在Prog.zip檔是部分重要程式中,其中:
1.在main.c 中,打開中斷、TMR1清為0、並測是抓取其標G_Period;
2.若有抓到Toggle中斷,則在ISR程式中,將G_Period=0,並將Timer 1 Clock數目寫至Period。
3.Timer 1 Toggle Mode的其他設定在Prog.zip檔中。
4.因T1GGO是屬於Single Pulse Mode的抓Next Pulse; 不知Toggle Mode 是否有類似Bit或哪個Bit可做為抓Next Period的旗標呢?

敬請各先進們協助後進解決問題為何?
感恩您

附加檔案:



jpg  Timing.JPG (45.26 KB)
3325_5d0eeb4d2400c.jpg 527X387 px

jpg  Timer1_Gated_CKT.JPG (14.51 KB)
3325_5d0eeb5e3dbc4.jpg 253X117 px
zip Frq.X.zip 大小: 411.43 KB; 下載次數: 23
zip prog.zip 大小: 1.02 KB; 下載次數: 21

6月23日 11:23:52
轉換PDF檔 列印


Re: 用PIC12F1572的Timer 1 Toggle Mode 抓RPM會飄
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14792
等級: 73; EXP: 51
HP : 1087 / 1812
MP : 4930 / 80591
離線
可以先用的穩定的信號產生器當標準,測試一下這訊號的頻率是否準確?

一般 RPM 是機械式的轉速如果沒有轉速回授控制會不穩定的。你也可以用示波器先測量一下 RPM 的上升緣之間是否有嚴重的抖動現象。因為 Timer1 的 Gate Time Control 是硬體的電路,時間的測量會是準確的,還有一項你的 RPM 輸入波形是否是沒有毛刺的方波,這點也要確認一下。

6月24日 09:55:38
轉換PDF檔 列印


Re: 用PIC12F1572的Timer 1 Toggle Mode 抓RPM會飄
高級會員
註冊日期:
2007/04/16 20:42
所屬群組:
註冊會員
文章: 84
等級: 8; EXP: 12
HP : 0 / 178
MP : 28 / 6378
離線
誠如版主Ryang所言,去了波型的毛邊後,抓取Timer的值已穩定了,但只能抓取(中斷)1次而已;而,我於ISR中也清 PIR1bits.TMR1GIF = 0;
煩請版主在幫忙指正為何!!!

6月24日 13:50:50
轉換PDF檔 列印


Re: 用PIC12F1572的Timer 1 Toggle Mode 抓RPM會飄
高級會員
註冊日期:
2007/04/16 20:42
所屬群組:
註冊會員
文章: 84
等級: 8; EXP: 12
HP : 0 / 178
MP : 28 / 6378
離線
Dear Ryang,
已找到無法再次中斷的問題了。
感謝版主Ryang的指導。

6月25日 15:18:02
轉換PDF檔 列印


Re: 用PIC12F1572的Timer 1 Toggle Mode 抓RPM會飄
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14792
等級: 73; EXP: 51
HP : 1087 / 1812
MP : 4930 / 80591
離線
討論一下我的做法,參考一下:

1. 在 Get Time 的中斷裡,先將 TIMER1CIE 關閉,再抓下 Timer1<H:L) 16-bit 的 RPM 計數值,設定一個處理待 RPM 待處理旗號。清除 TIMER1CIF 中斷旗號後離開中斷函式。

2. 主程式裡,檢查是否有 RPM 待處理旗號。如有的話,清除此旗號後開始計算上一次的 RPM 轉速,計算完成後看是否要在抓下一次的 RPM。基本上 RPM 算是很慢的東西,100mS 抓一次就很夠了。

3. 如果主程式要再抓 RPM 時,先將 Timer1<H:L> 清為 0 ,TIMER1CIF 再清一次,再來啟動 TIMER1CIE 開啟 RPM 的中斷抓取即可。

6月27日 13:28:46
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
Microchip連結

網頁捷徑
2019 Summer Elite 報名
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project