|
現: 2020-12-26 (土) 15:08:07 yuji |
| + | *_delay_ms()がおかしい [#l84c8425] |
| + | _delay_msを使っていたら,なんか意図したように時間が取れない。~ |
| + | delay.hとdelay_basic.hを見ると,_delay_ms()は_delay_loop_2()をつかっている。_delay_loop_2()は,16bit数を-1ループになってるんで4クロック*65536=262.144ms(CPUが1MHzの時)までのdelayになる。8MHzだと32.768msまでしか正常にウエイト出来ない。~ |
| | | |
| + | _delay_us()も同様に,_delay_loop1()を使って,3クロック*256=768us(CPUが1MHzの時)までのdelayになる。8MHzだと96usまでしか正常にウエイト出来ない。~ |
| + | |
| + | 使うときは, |
| + | void __delay_ms(time) { |
| + | while (time--) |
| + | _delay_ms(1); |
| + | } |
| + | ってすれば大丈夫。~ |
| + | |
| + | どうも最適化オプションは,-O1以上にしないとおかしくなるようだ。 |
- 開発/AVR/_delay_ms()がおかしい のバックアップ差分(No. All)
- 現: 2020-12-26 (土) 15:08:07 yuji
Counter: 1181,
today: 1,
yesterday: 2
Copyright©2008 Yuji Ueno All Rights Reserved.