會員登陸
帳號:

密碼:

記住我



忘記密碼?

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


正在流覽:   2 名訪客



« 1 (2)


Re: 請問這個要求需要使用到multi-task甚至是RTOS嗎?
中級會員
註冊日期:
2014/09/29 12:04
所屬群組:
註冊會員
文章: 65
等級: 6; EXP: 95
HP : 0 / 148
MP : 21 / 1369
離線
謝謝各位回覆,也謝謝版主提供範例參考。
看了範例後,有個問題想要請教各位版友。
在範例中有個前提是"確定每個Task 的執行時間小於分配時間"。

假設我所有的task中,LED是花最多時間的,那是不是代表我Timer所分配的時間是由LED的Task決定?

那麼,LED的閃爍也是用Delay完成嗎?(不好意思,看不懂Eigen大貼的程式碼Orz...)

9月12日 14:47:31
轉換PDF檔 列印


Re: 請問這個要求需要使用到multi-task甚至是RTOS嗎?
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14151
等級: 72; EXP: 51
HP : 1072 / 1787
MP : 4717 / 70841
離線
好的程式,LED 不會用軟體做 Delay 的。它一定會在 Timer 的中斷裡完成 LED 的控制的。

9月12日 16:45:14
轉換PDF檔 列印


Re: 請問這個要求需要使用到multi-task甚至是RTOS嗎?
資深會員
註冊日期:
2004/07/23 16:25
所屬群組:
註冊會員
文章: 1176
等級: 29; EXP: 94
HP : 0 / 723
MP : 392 / 28187
離線
我十五年前剛開始時,就是將所有的程式『通通塞在中斷之中』(當時沒人教,將簡單的產品讓我負責,就做成這樣)

以你這種小程式當然可以,我以前做的程式沒沒多複雜,就控制馬達上上下下,加上一些保護

功能簡單當然可以這樣搞,功能複雜時,這種寫法一定gg的

ex: 你 1ms 中斷一次,結果你寫的程式超過 1ms,然後程式就永遠卡在中斷之中或時間算不準~~

所以最後一定是『非常重要的』才在中斷處理,不是很重要的,就set flag ,回到 mail loop 再處理

這樣才能處理很多事~~

led 你要亮 300ms,不是真的delay 300ms ,用delay 的方式,你其它事通通都不用做了

300/4ms = 75,也就是 led=1 led_timer =75,然後在 4ms flag set 的程序之中,led_timer--

當 led_timer=0 時,就表示過了 300ms ,這時就能 led=0

羅輯大概就是這樣(再看不懂我也沒招~~ 讓其它人來吧)

9月12日 22:59:46
轉換PDF檔 列印


Re: 請問這個要求需要使用到multi-task甚至是RTOS嗎?
資深會員
註冊日期:
2012/05/04 19:18
所屬群組:
註冊會員
文章: 183
等級: 12; EXP: 58
HP : 0 / 289
MP : 61 / 4694
離線
這簡單,
假設timer 4ms中斷一次,會設定flag,你就在主程式判定flag是否被城定if(flag == 1),若是就將count++,當count = 25的時候就是100ms了,
簡單來說你設一個鬧鐘每4ms響一次,響了25次就等於經過了100ms,鬧鐘沒響的時候你就去做你其他的事,鬧鐘響的時候就做鬧鐘響的時候該做的事,That is all about timer delay.

9月13日 09:53:00
轉換PDF檔 列印


Re: 請問這個要求需要使用到multi-task甚至是RTOS嗎?
資深會員
註冊日期:
2004/08/16 13:52
來自 台灣台南
所屬群組:
註冊會員
文章: 768
等級: 25; EXP: 2
HP : 0 / 600
MP : 256 / 23276
離線
連PWM都不需要用到,好強

引用:

Eigen 寫道:
你不懂 4ms 處理一次?

一般pic timer0 ,最基本就是讓timer0 4ms interrupt 一次。

當然你要 1ms 8ms 16ms 都可以,只是最基礎都是 4ms,每中斷一次,就 set flag



二、你的main loop,則一直檢查 flag ,flag set,就表示 發生 4ms 中斷,就進去處理

處理什麼? 250-- 到0 = 1sec ,

40-- 到 0 =160ms 210--到0 =840ms = 1sec duty 16%
80-- 到 0 =320ms 170--到0 =780ms = 1sec duty 32%

1sec 的pwm 用 timer 很容易就做出來了~~

9月15日 17:32:33
轉換PDF檔 列印



« 1 (2)



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

[進階搜尋]


搜尋
Microchip連結

網頁捷徑
2017 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