2007年4月14日 星期六

ATmega-128 Pulse V...

兩日來,我都測試不到 ATmega 輸出的訊號,原因可能是程式跑得快,所以無法量度出所花的時間。
今天,我便改為量度輸出口的訊號。我在程式中硬性設定了兩隻腳輸出高位,然後利用一個 for loop 去做二十次,然後把其中一隻腳設定為低位,再重複 for loop。得出來的結果是 46us 及 23us,意味著 for loop 二十次大約花掉 23us。
測驗了這麼久都沒有甚麼改進,看來我還是用回之前的設計好了,反正 Amigo 03 剛剛好是八個馬達...。那麼,我先要買鋰電回來!

7 則留言:

irobot 提到...

按你的結果每20次循環用 23us,那每一循環便花上 1.15us。有否興趣作以下的小測試,看是否可以讓16個 servo 每個的轉動角相距11.25度。
while (1)
{ 把 16 支針腳同時設為 1 //高電位//

// 延時 0.5 ms 後關掉第1針腳 //
循環 434 次後,設第1針腳為0,其餘不變

// 延時 0.133 ms 後關掉第2針腳 //
循環 116 次後,設第2針腳為0,其餘不變

// 延時 0.133 ms 後關掉第3針腳 //
循環 116 次後,設第2針腳為0,其餘不變

// 重複步驟直至第16支針腳 //

// 延時 17.5 ms 結束循環 //
外循環 60 次,內循環255次
}

若有 CRO 便可看看你測量的數據是否準確了了。

Pacess 提到...

好,就試一試,等我的結果吧~

iRobot 提到...

我用在 8051 系列上是可以的,用這方法最高精確度為: 180度 可以分200步完成。因為就算只做一個循環也花上 10 us。(用 11.0592MHz 的晶振計。)
我也很好奇呢,不知在 avr 系列會如何。
我想 avr 系列可以更精確的,因為 8051 系列比 avr 普遍慢上 10 倍呢。

Victor 提到...

It depends on which 8051 you are talking, nowadays 8051 runs really fast indeed!

http://www.maxim-ic.com/products/microcontrollers/8051_drop_in.cfm?CMP=KNC-S8R000725486

iRobot 提到...

running at 4 clocks-per-machine cycle instead of the original 12 clocks.So 33MHz is 82.5MHz equivalent 按這計算它的速度便與16MHz RISC 架構的 atmega 128 相約了。
沒有你的介紹,還不知道呢。

Victor 提到...

NO! Not 4 clk/mc, it's
ONE clk/machine cycle!

Fastest Drop-In 8051 with In-Application Programmable Flash
The DS89C450 is the world's fastest 8051 drop-in. The device operates at one clock per machine cycle core and offers 64kB of in-application programmable flash memory.

iRobot 提到...

Single Cycle Instruction in 30ns . Oh! it is terribly fast. Have double speed than that of atmega128.