各位好,
目前小弟正在嘗試使用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的速度嗎?
謝謝