今天的主角換成DUE囉,
DUE的工作頻率是84MHz,整整是其他朋友的5倍還有剩,而且它的CPU 是32 bit的,所以當然是快多了啊
OK~話不多說,一樣來看結果吧,測試的Raw Data在這裡下載。
神奇了,居然每個頭都是2,該不會是四捨五入的結果吧?Arduino 沒有提供nanosec的參數,很不方便啊,
不過除了每一行的開頭是2之外,其他都是1 micro sec,不錯不錯,很快很快。
程式碼在這裡
這次沒有變無窮迴圈,大家可以想看看問題在哪裡喔。
DUE的CPU 是32 bit,所以int不是2byte,而是4個byte,65535(0xFFFF)+1之後,就是65536(0x10000)了,所以大於65535,迴圈結束
如果看不懂的話,可能要參考一下計算機概論的書籍。
(請反白)
延伸閱讀
1. http://arduino.cc/en/reference/micros
On 16 MHz Arduino boards (e.g. Duemilanove and Nano), this function has a resolution of four microseconds (i.e. the value returned is always a multiple of four). On 8 MHz Arduino boards (e.g. the LilyPad), this function has a resolution of eight microseconds.
2. 這一頁中,有人提出了micros()的精確度問題,不過似乎是用在那些16MHz 的8-bit CPU上,然後他自己寫了一個新的micros,詳情在下面網址
http://electricrcaircraftguy.blogspot.com/2014/02/Timer2Counter-more-precise-Arduino-micros-function.html#.VCefyvmSz2U