[問題] 如何打出MHz等級的方波

看板LinuxDev作者 (無敵人)時間9年前 (2015/11/01 15:47), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串1/1
各位好, 目前小弟正在嘗試使用AR9331+openwrt的系統實作一個方波, 目的是為了看這個系統打出來的方波可以到多快,最終會用這個波去控制RGB LED燈。 我使用的方法是用hrtimer寫一個module, hrtimer的interrupt時間我設為5000(5us), 每一次進入interrupt就反向gpio_out,並且用gpio_set_value指定出去。 但是我看示波器量到的結果, 他反向的時間有時候會是3us,有時候是8us,且是隨機的, 有時候是high轉low時為3us有時是8us,low轉high時也是, 但如果把interrupt設到8000以上的話,示波器上看到的結果是正確的(反向頻率125Khz)。 所以我想會不會是這兩個function實際上跑的指令跟想像中不太一樣, 我有試著讓這個module在編譯時留下assembly code, 但是加上-save-temps也沒辦法,所以沒辦法追到它實際執行的指令是哪些。 目前還想嘗試的是..不使用interrupt而是直接用while loop, 看看他最快可以到哪裡..但是這樣之後openwrt如果有跑其他process, 再排程下來,好像就更難捉摸它的速度會變成什麼了。 所以目前我算是沒有別的辦法了orz 請問各位有其他方法可以幫助我再逼出這個CPU的速度嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.3.213 ※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1446364054.A.00A.html

11/01 15:59, , 1F
沒有硬體的PWM可以用嗎?
11/01 15:59, 1F

11/01 16:02, , 2F
好像沒有 我反覆看了幾次datasheet沒看到PWM的關鍵字
11/01 16:02, 2F

11/01 16:02, , 3F
google後好像都是用gpio來實作的
11/01 16:02, 3F

11/01 16:37, , 4F
gpio+dma ? RPi印象中可以這樣弄,google pigpio
11/01 16:37, 4F

11/01 16:59, , 5F
!! 好像可行 看到有人最快做到15MHz
11/01 16:59, 5F

11/01 17:00, , 6F
感謝!! 我研究一下看看怎麼寫的 謝謝!!
11/01 17:00, 6F
文章代碼(AID): #1MDSEM0A (LinuxDev)
文章代碼(AID): #1MDSEM0A (LinuxDev)