Arduinoなんだかなぁ〜
アップロードがうまくいきません。
ブートローダは動いている(TXD、RXDにパルスは出ている)んですが、
なにやら途中であきらめてしまっているふうです。
LEDチカチカまでいたりません。
LED(黄色)が1秒周期点滅でブートローダー起動でしょ。
Lチカのプログラムをアップしようとしたんですが、上のエラーが出現。
何度かトライしてエラーなく「書き込みました」っと出たこともあった
んですが、LEDの点滅周期が、プログラムで指定した時間に変わらず、
1秒周期のまま。
いったいなに?
※PCを変えたらすっと行ったわぁ。
なんじゃいな?
USBドライバをいったん削除して再インストしても×。
古い(使い込んでる)PCだと×みたい…
シリアルの送受にデータは出ているんですが、PC・マイコン間のやりとりに
失敗かな。
成功するPCだと、ずこ〜っと書き込みデータが流れる(ハンドシェークしながら)
のが見えますが、×のPCはポツ・ポツとしたやりとりになってます。
※なぜISP書き込みで使わないの?
あえてブートローダーを使うわけは?
Arduino・AVRマイコンの場合、ブートローダがデバッグ機能を持つわけじゃ
なく、単にプログラムのロードだけ。
だとすれば、ISPでもいいんじゃないのかなぁ〜。
PICと違って比較的簡単なハードで可能だし。
あっ、そうか。
シリアル入出力がデバッグ機能という位置付けね。
それとSCLK、MISO、MOSIの3線がISPに占有されるのを気にしなくて
いいし。
|
2012年12月15日 17時57分
|
記事へ |
コメント(2) |
トラックバック(0) |
|
・電子回路工作 |
トラックバックURL:http://blog.zaq.ne.jp/igarage/trackback/3198/
※ブログ管理者が承認するまで表示されません
Uno R3ではなくDiecimilaであればシリアルデバイスがFT232になっているので、そのハードウェアを作成したArduino準拠のベースで進めた方が早いのでは?と、思ったりもします。
オープンソースハードウェアですので回路図も公開されていますのでどうしてもUno R3が必須条件でなくArduino環境がつかえればと言う事であれば、R3ではなくDiecimila互換ハードウェアでFT232を使うのも手ですよ。
で、「digitalWrite()」が遅い。
Hレベルのパルスを出して下げるだけで4usほどかかってます。
そこで、↓ これ。
#include <compat/deprecated.h>
こんな記述が可能になり、
sbi(PORTB,PORTB5); // 高速パルス出力
cbi(PORTB,PORTB5);
アセンブラの
__asm__ ("sbi 0x05, 5");
__asm__ ("cbi 0x05, 5");
と、同じコード(最高速)をひねり出してくれます。
これで、125nsのパルスとなります。