SSブログ

書籍「Arduinoをはじめよう」を(途中まで)読んでみて [ATmarquino Arduino]


Arduinoをはじめよう

Arduinoをはじめよう

  • 作者: Massimo Banzi
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2009/03/27
  • メディア: 単行本(ソフトカバー)

さてどうしたものかなと悩んでいたのですが、さんざんこのblogでアマゾンリンクを貼っていた責任上、気になる点を書いておきます。

この本の112ページの「ポートの操作」の解説の中で、デジタルIOピンの0と1(0はRXD、1はTXDにもなる)をいじってしまうとシリアルの入出力ができなくなるし、”プログラムの書き込みもできなくなる”となっています。
ですが、そんな事はありません。
確かにユーザープログラム(スケッチ)を実行中にこのピンをポートとして設定すればシリアルが使えなくなる事は事実ですが、だからと言ってプログラムを書き込む事ができなくなる事はありません。
それにはまずArduinoの起動からの手順を説明します。

まずArduinoが起動した時はブートローダーが先に起動します。当然この時は先のピンはRXD、TXDとして初期化される訳です。一定時間以内にIDE側からアクセスがあれば、IDEとArduino間で通信を行って、ユーザープログラムのダウンロードを始めます。その後、実行をユーザープログラムに移します。
一定時間以内にIDEとの通信が行われなければ、やはり実行をユーザープログラムに移します。

つまりブートローダーの起動にはユーザープログラムの設定は一切関係していない訳です。
実際に私がちょっと前に7セグメントLEDでこのピンを出力として利用している訳ですが、その時スケッチのダウンロードができなくて困った、困ったと言う話にはなっていません。

ハードウエア的な話で、番号0のピンを入力として設定し、外部からの出力を受け入れる形であれば、FT232RLのTXDピンと出力同士でぶつかって正常に通信ができなくなる事は事実でしょう。
そんな時は外部との接続を一旦外してください。

番号0のピンを出力に設定した場合はFT232RLのTXDピンと出力同士でぶつかります。この時パソコン側から受信が無ければFT232RLのTXDピンはHIGHレベルを出力しています。お互いに出力同士ぶつかって問題ありですが、実際にはAVRのピンとFT232RLのピン間には1KΩの抵抗が挿入されています。なので意外と動いちゃいます。AVRの電流出力容量が比較的大きく、1KΩ位の負荷なら十分駆動できるからでしょう。
ラッチアップが気になるならもっと大きな抵抗を挿入しても良いでしょう。少なくともATmarquinoはリード部品を使っていますので、変更は容易です。
または、FT232RLのリセット入力にLOWを入れれば、FT232RLのモデム側端子はフローティングとなりますので、より安心です。

番号1のピンの場合は、まあFT232RLがいい迷惑(アンダーランエラーとか、フレーミングエラー)するだけで、特に他への影響は少ないでしょう。

ATmega168は28ピンも有りますが、逆に言えば28ピンしか無い訳で、その内汎用ポートとして使えるポートは更に少ないのですから、貴重なポートは有意義に利用した方が良いのです。

nice!(0)  コメント(8)  トラックバック(0) 

nice! 0

コメント 8

船田

こんにちは。お世話になっております。ご指摘の部分は私の誤訳です。
原文は、おおよそ次のようになっておりました。
「注意が必要なのは、Arduinoのピン0と1はシリアル通信に使用されている点です。もしこのピンを変更すると、シリアル通信が必要であっても、受信や送信の機能が無効になってしまいます。また、このピンはプログラムのダウンロードやデバッグの際にも使用されることを覚えておいてください。」
より詳しくするなら、「プログラムの実行中に方向レジスタを変更すると」ということですね。お詫びして訂正したします。
by 船田 (2009-03-30 10:51) 

hamayan

お世話になっています。

本に掲載されていた連絡先とか、オライリーのfeedbackから連絡しようかと思っていたのですが、ここ経由でこの本を買っていただいた方が結構居られるので、失礼とは思いつつ、先にここでの公開をしてしまいました。

すいませんです。
by hamayan (2009-03-30 11:46) 

つぐ

先週、本 と ボード を Amazon で購入しました~
DIGITAL ポート0~10 に LEDアレイを接続したときに、Upload できなくて焦りました(^^;
しばらく悩んでボードのシルク印刷 0:RX , 1:TX を見てティン!と来ました♪
by つぐ (2009-06-09 09:12) 

hamayan

普段のアップロードがお手軽で、うん確かに簡単お手軽だ!。

なのでアップロードの度に接続を外したり、戻したりは面倒に感じてしまいますね。私もついつい忘れてしまって焦ったり。(XBee実装したままアップロードしようとして、出来なくて「基板壊したか?」なんて)。

何か有効な対策は、、、手の甲にでもマジックで書いておくか。
「シリアル併用中!」とか。

by hamayan (2009-06-09 09:25) 

つぐ

DIGITAL ポート0(RX) , 1(TX) に接続した LED の電流制限抵抗を 100Ω → 1KΩ にしたら、接続したままでも Upload できました♪ (偶然発見!)
by つぐ (2009-06-10 09:13) 

hamayan

それはしかし、明るさは?(笑)
by hamayan (2009-06-10 09:47) 

つぐ

明るさは大丈夫ですよ~、そもそも、明るさ調整で 100Ω → 1k にしたので。
で、Upload 時に、うっかり LED 外し忘れたんですが Upload できた訳です。

#人感センサーとリモコンON用リレーを使って、うたた寝したときにテレビとAVアンプを自動OFFできるようになりました♪
by つぐ (2009-06-15 11:04) 

hamayan

(笑)実にエコですな。

by hamayan (2009-06-15 12:22) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。