看板 ASM 關於我們 聯絡資訊
※ 引述《deo2000 (800IM)》之銘言: : 如標題 : 之前的控制,我一次都只傳一個字元,所以沒什麼問題。 : 但是現在控制目標不僅僅只於馬達運動方向了,還多了 PWM。 不知報版上有沒有人研究過這篇文章 以單晶微電腦製作之多通道波寬調變信號產生器 劉漢平 http://cc.cust.edu.tw/~hoppertw/34-13.pdf 這篇文章有幾個特色: ˙平行輸出 8 通道 PWM,resolution:100,921Hz ˙用標準型 8051 實現, crystal 也是標準的 11.059MHz ˙CPU 尚有足夠時間讓 UART 修改 8 通道 PWM 的數值 剛好完完全全就是我需要的東西,但是 PDF 中的每張圖片都有缺字, 尤其最重要的流程圖,一個字也沒有,全都只剩下框框, 所有期刊資料庫下載的檔案都一樣。 在只有這些少量訊息狀況下我就先實作無UART的,方法如下 #define SIZE_OF_BIT 8 //通道數 #define RESOLUTION 100 //解析度 unsigned char PWM_PinSequnce[RESOLUTION]={0}; //8*RESOLUTION 的陣列,長 = 解析度 unsigned char PWM_Pin[SIZE_OF_BIT]={100,50,25,13,7,4,2,1}; //各通道 Duty cycle void SetPWM_PinSequnce(void) { 1.陣列全部 set 0 2.在通道 i 填入 PWM_Pin[i] 個 1 } main() { SetPWM_PinSequnce(); while(1) P0=~PWM_PinSequnce[k]; } 1/100週期定時ISR { if(k>=99)k=0; k++; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.122.167.217
WolfLord:就MEMORY MAP而已啊~ 還有,他的ISR如果配合C動作會出錯 08/13 04:21
WolfLord:以及ISR的週期數露算了INT發生時還會產生兩週期的跳躍 08/13 04:22
WolfLord:你這個C的ISR最少要20周,因為>=要算兩次 08/13 04:26
lion21:你的方向正確但是方法要摸索.主要在架構要正確.能驗證 08/13 09:10
odahawk:太巧了,連結內文章作者目前離我三公尺遠 08/13 15:05
cortex1234:快! 拿橡皮筋射他! (你是小學生啊?) 08/13 15:10
WolfLord:丟看看(順手丟出正在切牛排的刀) :P 08/13 18:47
MasterChang:這個玩玩可以。真的要做東西的還是用有硬體PWM吧!! 08/13 22:49
MasterChang:而且價格便宜到不值得花心力用soft pwm. 08/13 22:50
WolfLord:我倒是覺得求學階段多多去用軟體模擬東西,把基礎邏輯能 08/13 23:21
WolfLord:力打好,打扎實。純硬派的作法在實做商業產品時時間成本 08/13 23:22
WolfLord:相比之下才會便宜。而且我們業界工程師買ic的價格跟學生 08/13 23:23
WolfLord:的取得成本差異很大,我是真的不怎鼓勵求學練功階段就有 08/13 23:23
WolfLord:什麼功能只要買什麼ic來用就好這種想法,因為什麼都學不 08/13 23:24
WolfLord:到,只是占占醬油對於未來要用這些技能求職很不利。 08/13 23:25
MasterChang:原PO先把UART接收封包搞定再說吧~~^_^b 08/14 00:13
Deltaguita:我都先用軟體模擬驗證 再改硬體@@" 08/14 20:47