2010年11月23日火曜日

ArduinoのRESET回路

外部端子を一個減らしたい・・
今、うちのArduino系の外付け端子は、VCC /GND/RST/TX/RXの5本有る。
実は、Tiny85/84のArdino IDE互換の物作ってるのだが・・マイコンがSOPと言うのも有るが、シリアルコネクタがでかいんですわ。コネクタが邪魔臭いんですね。

方法論として考えてるのは、最も常識的には、内蔵電源にすれば、VCCが要らなくなる。
もう一個は、RSTでVCCをカットする回路積めばいいんじゃないか?と言う案だ。この場合だとUSBから電源が送れる。
更にもう一個考えてるのが、この二案の合わせたのって出来るかなーーと言う感じ、そうすると3本になる、違う、ブートローダー使うと、送るだけで返信しないのも有るので、それなら、TXが要らなくなるから、2本に出来るかも知れない。

方法論は、GNDを、GND(RST)とする方法か・つまり、本来0V出てる、USB-シリアルの端子に、ダイオードでも噛ませて、瞬間的に+にする。
マイコンボード側に、ちょっと細工がいるが、USBのGNDが、プラスになったら、マイコンのRSTをかけるって言う手は無いかと思ってる。

電源を切っちゃったら、どうなるのかなと思うのは、ATtiny85等の、8ピン物のRST問題で、ブートローダーを入れた上で、フューズでRSTを、I/Oにしたら、外部RSTが効かなくなるが、電源を切っちゃえば、RSTにはなる訳だ。そうすると、Tiny85は、6ピン使える状態で使えるんじゃないのーーと言う予測だ。(ブートローダー書き換える時、高電圧書き込みするか、一回フューズリセットが必要なんで面倒だが)

書き込みに、オーディオピンジャックか、MINI-USBコネクタを使いたいから、3−4ピンでオートリセット出来るようにしたい訳ですね。

追記
そういえば、USBシリアル側から見れば、TXは、受信するだけで、通常パッシブな状態だが、このTXに、パルスを送った場合ってどうだろうと思った。
ダイオードかなんかで切り分け出来ないかな・・これなら、3本で済むか・・

バスパワーなら、VCCを切ればいいだけだとは思うが・・セルフパワーの場合のRST
信号を、何処に乗せるかRXは、通常、USB側から、信号が来る。TXは、マイコンから信号が来るから、USBに出る、DTRのCRのパルスを、TXに乗せてもマイコンのTXは反応しない。(USB側のTX・実際はRXは反応しちゃうが・・その瞬間回路切っちゃえば行かないなTRで出来るかも)
TXにUSBから、信号が来た場合、RSTと判断させればいいか・・

最悪、PIC10Fに簡単なコード書けばいいかと思ってるが・・

Arduino用の、RS485のブートローダーも現存し、それだとRXしか必要無い。VCCと、GNDはつなぎ、VCCとRSTを同じにすれば、リセットはかかるはずだ。


何がしたいか・・

子供とかでも使える、ペンダントサイズの、Arduinoを作った場合のIFの単純化と、小型化とかなんですが・・IDEを全く変更しないで、74ICか、t13をリセットICとしてのプログラム書いたら出来ないかとか、・・その辺なんですね。
まあ、シリアル通信の間に一個単機能マイコンを置いて、STK500のダウンロード開始のコード拾ったら、リセットしてしまうと言う手が綺麗かも知れない。(それ以外は全部スルー)

しかし、ターゲットマイコンが、t85となると、t13ですらでかい・・PIC10でも小さいとも言えない気がするし・・やっぱり付加回路ゼロに出来ないだろうかーー悩む・・

とりあえず、DTR信号にTR噛まして・・それをVCCにする案で進めてみよう・・TRをリセット信号で切る事で、電源切っちゃうと言う感じ・・スイッチ付けておけば、シリアル側で、対応出来るしね。(あんまり何種類も作るの面倒だし)

0 件のコメント:

コメントを投稿