#topicpath ** アルドゥイーノ・アーデュイーノ (Arduino) [#z18ec656] 電子工作は素人。だけど、Arduino を使ってみたいと思います。 以下、Arduino を使うまでの道筋を記録します。 同じような素人さん向けに参考になるように。 ** いくつかの基礎知識 [#gfda371d] 素人ですので、不正確、場合によっては誤りの情報があるかと思います。 どうぞご指摘下さい。 - ATmega168P~ Atmel 社の「ワンチップマイコン」です。~ 一つのチップの中に、CPU(中央演算処理装置)、メモリ、AD変換(アナログデジタル変換)機能などを詰め込んだものです。~ 仕様の一部を下に示します。(私たちが普通入手するPDIP パッケージ--2列に足が並んで出ているもの--について)~ | 項目| | | | | | EEPROM | 512 バイト | | SRAM | 1K バイト| | AD変換 | 6 チャンネル | | IO | 23 本 | | 電圧 | 2.7-5.5 V| | 周波数 | 20MHz まで | - ブートローダ~ AVRマイコンのプログラム用フラッシュメモリの一部に、プログラムを書き込んだり読み込んだりする機能を仕込むことができるようです。~ そのプログラムをブートローダというようです。 ~ ~ - ヒューズ(Fuse : 発音はフューズのはずだけど、ヒューズと書くのが習わしらしい。)~ ブートローダとは別に、AVR の機能を変化させるためのスイッチとして使われます。~ (多くの人には通じないでしょうけど、昔の EPSON のパソコンのディップスイッチのようなもののようです。)~ ブートローダとは別に書き込む必要があります。~ 失敗すると、元に戻すのに苦労する場合があるので、慎重にセットする必要があります。~ Arduino でどのようなヒューズがセットされているかは、arduino-0017/hardware/board.txt の中に書いてあります。~ 以下の情報は ATmega168P に基づいています。~ ~ -- 上位ヒューズ(High Fuse)~ リセットに際してのEEPROMの扱いや、外部デバイスとの電位差(?)に対する対応など。~ 0xdd(11011101)でいいようです。 ~ ~ -- 下位ヒューズ(Low Fuse)~ 分周(?)や、ATmega168Pを駆動する周波数をどこからとるかによって変えます。~ 外部から水晶発振の 16MHz をとる場合には、0xFF(2進数で11111111)でいいようです。 --- 7bit : CKDIV 分周(?)するか --- 6bit : CKOUT 外部に出すか --- 5〜4bit : SUT start-up の時間 --- 3〜0bit : CKSEL クロックをどこからとるか ~ ~ -- 拡張ヒューズ(Extended Fuse) ATmega168P の場合、00(八進数。0x00 と書きます。二進数で00000000) にします。 --- 7-3 ビット目~ 意味がありません。 --- 2,1 ビット目~ ブートローダ領域の大きさを指定しています。BOOTSZ~ |2ビット目 | 1ビット目 | 168Pの場合のブートローダ領域の大きさ | | | | | | 1 | 1 | 0.25 Kbyte ( 128 ワード ) | | 1 | 0 | 0.5 Kbyte ( 256 ワード ) | | 0 | 1 | 1 Kbyte ( 512 ワード ) | | 0 | 0 | 2 Kbyte ( 1024 ワード ) | --- 0ビット目~ リセットベクタ BOOTRST (おそらく、リセット信号が来たときに、ブートローダ領域に飛ぶか、応用プログラム領域に飛ぶかということ?)~ | 1ビット目 | 行き先 | | | | | 0 | ブートローダ領域 | | 1 | 応用プログラム領域 | ~ ~ -- ロックビット~ Fuse の値を保持したり、 *** [[既製品の Arduino を使う>./既製品の Arduino を使う]] [#u3ac599e] --- [[既製品の Arduino を使う>./既製品の Arduino を使う]] *** [[自作の Arduino を使う>./自作の Arduino を使う]] [#a7709053] --- [[自作の Arduino を使う>./自作の Arduino を使う]]