Arduino の不思議 [Arduino]
Arduino の不思議 というより、AVR Atmega328p は 絶対設定pinは 電源やRESET しかなくて、
ほかにはxtal位で、アナログやPWMなどはディジタルポートとして使え、それ以外に、COMポート SPI I2C などの専用機能があることです。
今回の目的にはイーサネット、SDカードを SPIで使い チップセレクトでデバイスの選択し、
LCDはめんどくさいI2Cをさけて、余ったpinに分離状態で割り当てようと思っています。
Atmega328P の機能名 SS MOSI MISO SCK は
16-PB2-D11 17-PB3-D12 18-PB4-D13 19 -PB5-D14
といくつもの名前があって ややこしいです。
ライブラリに寄りますと SPI によるイサーネットは10、11、12、13 となっています
メモリーや SDカードの SPIは 4 がチップセレクト MOSI MISO SCK は同じバスですが、
機能名ですと DとかAとか書いてあるので10というのはXTAL機能pinでしょうか?
もし違っていれば 適当に入れ替えても 動作するようです。
(専用機能は出来るだけそのまま使った方が速度が上げられます)
さて残ったLCDは LiquidCrystal lcd(rs-a2, Enbl-a3, d3, d4, d8, d10);
LiquidCrystal lcd(25, 26, 5, 6, 14, 16); とバラバラに割り当ててためしてみます。
追加
今更なんですが デジタルピンはd13で終わっていますが、
アナログピンはその次からa0~a5 となっています。
しかしこれをデジタルピンとして設定すると d14~d19として扱えます。
xt1、xt2、は発信器が必要で ほかに宛てることは出来ませんが、
txd、rxd には スケッチを聞き込まないときは ほかに宛てることがせきますが、
d何々とかの名前が内容ですが (d0、d1)かもしれません。
Arduino は AVRチップと ファウンデーションの IDEが核となって チップと基板を組み合わせ
高く売りすぎているように思います。 所詮は AVRの能力を超えるものではなく、ピン配列なども無理に制限を加えられ、ワンチップ化して マイクロコントローラーとして使うしかない様で、
それとなれば PICの方が 遙かに高機能なんですが、 フルサポートする ソフトが高く、
次の LPCXpresso NXP LPC1769 なんかと比べると もう終わったな と感じてしまいました。
Arduino と ワンチップ Arduino はおもしろい [Arduino]
Arduino と ワンチップ Arduino はおもしろい。
いろいろ資料を調べてゆくうちに、チップICのピン番で表示をしたものや、
Arduino 本来の端子名で表示がしてあるのとが判った。
またAruduino のバージョンや OSのバージョンで動作したり動作しなかったりと、
不思議な現象になるようだ。
ワンチップArduinoのブートローダ書き込み機 と 「COMポート」の認識 [Arduino]
こんにちは
元ネタは http://www.geocities.co.jp/orion_cosmo/boot.html のからです。
ワンチップArduinoのブートローダ書き込み機の書き込み機を作ろうと、
(安いチップだけをを好きな基盤に移せるので便利です)
AE-UM232R をPCに認識させようとしたんですが「USB シリアルコントローラ」
は認識するんですが、「COMポート」を認識しません。
スタート 設定 コントロールパネル ハードウエアの追加 から入れようとしても、
うまく設定できません。
--------------------------------
しばらくあきらめて、FT232RLを使う別の基盤を組み立て、使ってみるとちゃんと認識します。
これを使ってD2XXダイレクトドライバーでブートローダを書き込みました。
FT232RLチップなんですが FT245R と表示されて進行します。
途中、パスが違うとかいろいろ失敗をしながら最後は書き込めました。
C:\に「arduino-1.0.2」 と
「avrdude-serjtag04n」 を移して 「C:\avrdude-serjtag04n\bin」 の下に
BOOTATmega328P.bat
「@echo off
echo # チップを消去します #
pause
cd C:\avrdude-serjtag04n\bin
avrdude.exe -c diecimila -P ft0 -p m328p -B 4800 -e
echo # フューズビットをセットします #
pause
cd C:\avrdude-serjtag04n\bin
avrdude.exe -c diecimila -P ft0 -p m328p -B 4800 -U efuse:w:0x05:m -U hfuse:w:0xDA:m -U lfuse:w:0xCF:m
echo # ブートローダーを書き込みます #
pause
cd C:\avrdude-serjtag04n\bin
avrdude.exe -c diecimila -P ft0 -p m328p -D -U flash:w:"C:\arduino-1.0.2\hardware\arduino\bootloaders\atmega\ATmegaBOOT_168_atmega328.hex":a
echo # ロックビットをセットします #
pause
cd C:\avrdude-serjtag04n\bin
avrdude.exe -c diecimila -P ft0 -p m328p -U lock:w:0x0F:m
echo # 終了します #
pause」
Arduino ブートローダ書き込みと Arduini IDE スケッチの使い方をまとめてみました。
「ワンチップArduino は Arduino UNO ATMega328P などを搭載、
「ワンチップArduinoブートローダの起動書き込み」
C:\XXXX\BOOTATmega328P.bat へ を起動して、
C:\avrdude-serjtag04n\bin から ブートローダを書き込む。
「Arduino IDEの起動」
C:\arduino-1.0.2\arduino.exe が Arduino IDE の本体、
これを起動して、
「Arduino IDEの設定」
ツール マイコンボード Arduino UNO を選択。
ツール シリアルポート (今回は COM4)を選択設定。
ツール 書き込み装置の選択 (USBtynuISP または、USBasp)
何も選択しなかったら
「avrdude: stk500_getsync(): not in sync: resp=0x00」
と表示されました。
IDE の ツール ブートローダの書き込みは使えません。。
「スケッチの読み込み や スケッチの作成」
C:\arduino-1.0.2\examples\01.Basics\Blink のスケッチ
Blink.ino を ファイル 開く で読み込ませる。
または スケッチブックの例 01.Basic Blink を選択する。
「スケッチのコンパイル書き込み」
ファイル下 の 右矢印を押す。
コンパイルが始まり、書き込みが行われ、
成功すれば、「マイコンボードの書き込みが完了しました。」
と表示されます。」
--------------------------------
AE-UM232R を使った場合の不具合は
MPROGを立ち上げて内容を見ようとしたら、もう無くて、「FTD2XXST.EXE」 に変わっていました。
新型は使いからが判らず少しはさわってみたのですがよくわからず直りません。
「USB シリアルコントローラ」のドライバの内容をよく見ると「COMポート」同じで、
詳細設定に 「VCPをロードする」というチェック項目があり はずれていたので、チェックをして差しなおしますと、「COMポート」を認識してくれました。
確か以前はこんな設定は見なかった気がするんですが 、デュアルコアにしたせいか、WINXP-SP2をSP3にしたせいなのか、あるいは見落としていたんですね。
今度のPCになってからファイルの削除がよく失敗するのですが、調べてみると、
ダウンロードした、圧縮ファイルが幻を見せてくれるようで、
ダウンロードした圧縮元ファイルを削除すると消えてくれます。
ほかには、FT245RLを差したらFT245Rをまず認識し、 USBシリアルコントローラとして認識し、
更に、COMポートとしても認識します。
FT245RLはどこに行ってしまったんでしょうね。
ではまた
追伸 この Arduino には SDカード と WIZ820IO(イーサネットをつなぎますが)
両方とも SPI接続で チップセレクトをSDカードはd2(pd2) と WIZ820IOはxtal(pb7) にします。
LCDは I2C なんですが 持っていないので 本来 a4,a5 の所を、HD44780 互換の 標準の LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); から
LiquidCrystal(rs, enable, a2, a3, d3, d4, d8, d10) に変更するつもりですが、こんなにバラバラでも動作するか心配です。
今回は
VS1053bギミック基板 完成品 2060円
VS1053bギミック基板 380円
SPI SRAM 23K256-E/SN 280円
インターネットラジオメイン基板 380円
ワンチップArduino作成用ブートローダー&スケッチライタ(完成版)980円
ワンチップArduino作成用ブートローダー&スケッチライタ 380円
AE-UM232R 950円
と随分高く付いてしまった、それに20曲しか選択できないが、Arduino を使っているので、操作の仕方を変えられるので仕方がないか?
主要部品のアクセスが SRAM, SDカード、MP3デコーダ、WIZ820IO SPIなので、
LCDもそれが使えれば良かったのだけれども、これはI2Cしかないようだ。
(MIKROCで組んでみたら16f628aでも出来るし、74HC590なんかのシフトレジスタだけで実現できるのに、販売されていないようです)
Arduino の電圧切り替え シミュレート出来ました(555) [Arduino]
始めの予想と違って、抵抗値がずいぶん変わりました。
おそらく使ったのがNE555で、
CMOSの7555でないと本当のところは判らないんですが、
基本的な考えは合っていたようです。
この回路に555を使うには普通ヒステリシスがあって
使いにくいのですが2本の外部抵抗100kで打ち消しています。
他には1本ずつの検出抵抗100k(内部の100kとパラ),51kとキャパシタです。
キャパシタを入れた方がシミュレータしてみて安定でした。
キャパシタを1nFに換えて、
もう一点加え、負荷抵抗2kを加えて、
外部電圧検出をREG前にしました。
ICM7555とNE555は同じ回路で
似た結果になりました。
基準電圧はVccの5vを参照しています。
(3.3vに変更可能)
555にはパワーインバータや
38KHz・赤外線ダイオードドライブ(IR)などの用途もあります。
抵抗値を変更するとで動作電圧を換えることが出来ます。
91k,100k,100k,120k 5~10v信号を0~10v(ノンインバート)に変換します。
私は555をさわり始めたとき 、入力優先度があって
RESET=THRSHOLD=CONTROL>TRIGGER->OUTOPUT=DISCHARGE
の関係であるのを思い出しました。これを応用すると、もっと簡単に THRSHOLD=CONTROL を決定すれば
簡単に動作します。
Arduinoの電源切り替えも変更してみました。
ヒステリシスを通さないのでクリチカルな動作を考えなくても良くなりました。