Re: [問題] PC經UART傳4組PWM數值給51

看板ASM (組合語言)作者 (800IM)時間12年前 (2012/08/13 04:14), 編輯推噓4(4013)
留言17則, 6人參與, 最新討論串3/3 (看更多)
※ 引述《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

08/13 04:21, , 1F
就MEMORY MAP而已啊~ 還有,他的ISR如果配合C動作會出錯
08/13 04:21, 1F

08/13 04:22, , 2F
以及ISR的週期數露算了INT發生時還會產生兩週期的跳躍
08/13 04:22, 2F

08/13 04:26, , 3F
你這個C的ISR最少要20周,因為>=要算兩次
08/13 04:26, 3F

08/13 09:10, , 4F
你的方向正確但是方法要摸索.主要在架構要正確.能驗證
08/13 09:10, 4F

08/13 15:05, , 5F
太巧了,連結內文章作者目前離我三公尺遠
08/13 15:05, 5F

08/13 15:10, , 6F
快! 拿橡皮筋射他! (你是小學生啊?)
08/13 15:10, 6F

08/13 18:47, , 7F
丟看看(順手丟出正在切牛排的刀) :P
08/13 18:47, 7F

08/13 22:49, , 8F
這個玩玩可以。真的要做東西的還是用有硬體PWM吧!!
08/13 22:49, 8F

08/13 22:50, , 9F
而且價格便宜到不值得花心力用soft pwm.
08/13 22:50, 9F

08/13 23:21, , 10F
我倒是覺得求學階段多多去用軟體模擬東西,把基礎邏輯能
08/13 23:21, 10F

08/13 23:22, , 11F
力打好,打扎實。純硬派的作法在實做商業產品時時間成本
08/13 23:22, 11F

08/13 23:23, , 12F
相比之下才會便宜。而且我們業界工程師買ic的價格跟學生
08/13 23:23, 12F

08/13 23:23, , 13F
的取得成本差異很大,我是真的不怎鼓勵求學練功階段就有
08/13 23:23, 13F

08/13 23:24, , 14F
什麼功能只要買什麼ic來用就好這種想法,因為什麼都學不
08/13 23:24, 14F

08/13 23:25, , 15F
到,只是占占醬油對於未來要用這些技能求職很不利。
08/13 23:25, 15F

08/14 00:13, , 16F
原PO先把UART接收封包搞定再說吧~~^_^b
08/14 00:13, 16F

08/14 20:47, , 17F
我都先用軟體模擬驗證 再改硬體@@"
08/14 20:47, 17F
文章代碼(AID): #1GA0wYk9 (ASM)
討論串 (同標題文章)
文章代碼(AID): #1GA0wYk9 (ASM)