Arduino
をテンプレートにして作成
[
トップ
] [
新規
| |
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#topicpath
** アルドゥイーノ・アーデュイーノ (Arduino) [#z18ec656]
電子工作は素人。だけど、Arduino を使ってみたいと思います。
以下、Arduino を使うまでの道筋を記録します。
同じような素人さん向けに参考になるように。
** いくつかの基礎知識 [#gfda371d]
素人ですので、不正確、場合によっては誤りの情報があるかと...
どうぞご指摘下さい。
- ATmega168P~
~
Atmel 社の「ワンチップマイコン」です。~
一つのチップの中に、CPU(中央演算処理装置)、メモリ、AD変換...
仕様の一部を下に示します。(私たちが普通入手するPDIP パッ...
~
#style(class=table_left){{
| 項目| |h
| | |
| EEPROM (電気的に消したりプログラムしたりでき、電源を落...
| SRAM (メインメモリ) | 1K バイト|
| AD変換 (アナログデータをデジタルデータに変換する機能)| ...
| IO (入出力に使えるピンの数) | 23 本 |
| 駆動電圧 | 2.7-5.5 V (ただし電圧が低いとクロックを下...
| 周波数(クロック。1秒間に何回計算するか) | 20MHz まで |
}}
~
~
- 電源とクロック~
使用する電源電圧に応じて、安全に稼働する周波数の範囲が変...
&ref(safe_operating_area.png,,400x217);~
~
~
- ブートローダ~
AVRマイコンのプログラム用フラッシュメモリの一部(Boot Prog...
そのプログラムをブートローダというようです。~
~
ブートローダがあることによって、比較的容易にマイコンにプ...
~
~
- ヒューズ(Fuse : 発音はフューズのはずだけど、ヒューズと...
~
※ ヒューズビットという表現もありますが、マニュアルにはヒ...
8bit(=1byte)をセットで設定する必要があるからでしょう...
~
AVR マイコンの機能を変化させるためのスイッチとして使われ...
(多くの人には通じないでしょうけど、昔の EPSON のパソコン...
ブートローダとは別に書き込む必要があります。~
失敗すると、元に戻すのに苦労する場合があるので、慎重にセ...
Arduino でどのようなヒューズがセットされているかは、ardui...
以下の情報は ATmega168P に基づいています。&color(red){ATm...
~
++ 上位ヒューズ(High Fuse)~
リセットの扱いなど。~
Diecimila, Duemilanove Nano w/ ATmega168 では 0xdd(110111...
~
#style(class=table_left){{
| 名称 | ビット番号 | 意味 | Default の値 |h
| | | | |
| RSDIBL | 7 | 外部からのリセットを使用不可にする。これが...
| DWEN | 6 | On-chip デバッグシステムを使えるようにする。...
| SPIEN | 5 | シリアルプログラムとデータのダウンロードを...
| WDTON | 4 | Watchdog Timer(内蔵のカウンタが決まった値に...
| EESAVE | 3 | Chip Erase でも EEPROM を保持 | 1 (設定し...
| BODLEVEL2 | 2 | BOD(Brown-Out:電圧低下 Detector)電圧低...
| BODLEVEL1 | 1 | | ※1|
| BODLEVEL0 | 0 | | ※1|
}}
~
#style(class=table_left){{
| ※1 | BODLEVEL 2:0 の設定について|h
| | |
| 111 | BOD を使わない ( Default ) |
| 110 | Vcc 2.5V用(?) に設定。1.8V 以下で停止 |
| 101 | Vcc 3.5V用(?) に設定。2.7V 以下で停止 |
| 100 | Vcc 5.0V用(?) に設定。4.3V 以下で停止 |
}}
~
++ 下位ヒューズ(Low Fuse)~
分周(?)や、ATmega168Pを駆動する周波数をどこからとるかによ...
Diecimila, Duemilanove Nano w/ ATmega168 では 0xff(111111...
~
#style(class=table_left){{
| 名称 | ビット番号 | 意味 | Default の値 |h
| | | | |
| CKDIV8 | 7 | 周波数を1/8 にする。(8MHz → 1MHz ) | 0 (設...
| CKOUT | 6 | CLKO ピン(PB0, 14番)からクロックを出力する...
| SUT1 | 5 | スタートアップタイムの指定 | ※1 |
| SUT0 | 4 | |※1 |
| CKSEL3 | 3 | クロックの指定 | ※2 |
| CKSEL2 | 2 | | ※2|
| CKSEL1 | 1 | | ※2|
| CKSEL0 | 0 | | ※2|
}}
~
#style(class=table_left){{
|※1 | SUT1:0 の設定について(ただし、CKSEL3:0 が 1111の場...
| | |
| 01 | リセットからの余分な遅れ : 14クロック (ただし、BOD...
| 10 | リセットからの余分な遅れ : 14クロック + 4.1ms |
| 11 | リセットからの余分な遅れ : 14クロック + 65ms |
}}
~
#style(class=table_left){{
|※2 | CKSEL3:0 の設定について |h
| | |
| 0000 | External Clock Source(外部発振源?)を使う |
| 0010 | 内部 RC 発振回路 8( 7.3-8.1 )MHz を使う |
| 0011 | 内部 128kHz(low power で高精度に作られていない) ...
| 0100-1111 | 水晶発振 |
| 1111 | 水晶発振(8.0-16.0)MHz (12-22 pF のコンデンサを噛...
}}
~
++ 拡張ヒューズ(Extended Fuse)~
Diecimila, Duemilanove Nano w/ ATmega168 では 0x00(000000...
~
#style(class=table_left){{
| 名称 | ビット番号 | 意味 | Default の値 |h
| | | | |
| | 7 | 不使用 | |
| | 6 | 不使用 | |
| | 5 | 不使用 | |
| | 4 | 不使用 | |
| | 3 | 不使用 | |
| BOOTSZ1 | 2 | ブートローダのサイズを決める| ※1|
| BOOTSZ0 | 1 | |※1 |
| BOOTRST | 0 | リセット信号が来たときに、ブートローダ領...
}}
~
#style(class=table_left){{
| ※ 1 | BOOTSZ1:0 の設定と168Pの場合のブートローダ領域の...
| | |
| 1 1 | 0.25 Kbyte ( 128 ワード ) ...
| 1 0 | 0.5 Kbyte ( 256 ワード ) ...
| 0 1 | 1 Kbyte ( 512 ワード ) ...
| 0 0 | 2 Kbyte ( 1024 ワード ) ...
}}
~
※ 00 なら 1024words( アドレス 0x1C00-0x1FFF までの 2KB 分...
~
~
++ ロックビット(Lock Bit)~
応用プログラム領域の書き込みをできなくしたり(BLB0)、~
ブートローダ領域の書き込みをできなくしたり(BLB1)、~
場合によってはヒューズの書き込みも含めて禁止(LB)~
します。
~
#style(class=table_left){{
| 名称 | ビット番号 | 意味 | Default の値 |h
| | | | |
| | 7 | 不使用 | |
| | 6 | 不使用 | |
| BLB12 | 5 | ブートローダセクションへのアクセス | ※1 |
| BLB11 | 4 | | ※1 |
| BLB02 | 3 | アプリケーションセクションへのアクセス | ※...
| BLB01 | 2 | | ※2 |
| LB2 | 1 | フラッシュメモリ・EEPROMへのアクセス | ※3 |
| LB1 | 0 | | ※3 |
}}
~
#style(class=table_left){{
| ※ 1 | BLB12:1 の設定 : ブートローダセクションの読み書...
| | |
| 1 1 | ロックしない |
| 1 0 | SPMによる書き込みを禁止する。 ...
| 0 1 | アプリケーションからのLPM(Load P...
| 0 0 | SPM(Store Program Memory)もアプ...
}}
※ ブートローダを書き込むときは"11"がよい。ブートローダを...
~
#style(class=table_left){{
| ※ 2 | BLB02:1 の設定 : アプリケーションセクションの読...
| | |
| 1 1 | ロックしない |
| 1 0 | SPMによる書き込みを禁止する。 ...
| 0 1 | ブートローダからのLPM(Load Progr...
| 0 0 | SPM(Store Program Memory)もブー...
}}
※ ブートローダから変更したいので設定する必要ない。 "11"で...
~
#style(class=table_left){{
| ※ 3 | LB2:1 の設定 : フラッシュメモリとEEPROMについて |h
| | |
| 1 1 | ロックしない |
| 1 0 | プログラミングを禁止する。 ...
| 0 0 | プログラミングも確かめ(Verify)も...
}}
※ 設定する必要ない。 "11"でよい。
~
~
board.txt によると、Arduino で設定しているのは、次の2通り...
0x0F(ブートローダ領域への書き込み読み取りを禁止)~
0x3F(一切禁止しない)~
~
- パソコンとの通信~
-- ハードウェア~
パソコンからマイコン(ここの場合、ATmega168P)にプログラム...
自作Arduino 互換について書いたもののうち、[[Duemilanoveタ...
~
しかし、これを使わない方法もあります。[[USBasp>http://www...
~
自作Arduino 互換について書いたもののうち、[[USB直結タイプ...
~
-- ソフトウエア~
FTDI にしろ、CP2102 にしろ、これを通して通信する場合には...
~
[[USBasp>http://www.fischl.de/usbasp/]] を使う場合にもや...
~
~
*** [[既製品の Arduino を使う>./既製品の Arduino を使う]]...
- [[既製品の Arduino を使う>./既製品の Arduino を使う]]
*** Arduino のプログミング [#mf825325]
- [[Arduino のプログラム開発環境を整える>./ArduinoIDE]]
- [[Arduino のプログラミングTips>./ArduinoTips]]
-- [[digitalWrite()を速くする>./ArduinoTips#rb8c22cc]]
*** [[Arduino 互換(もどき) の自作>./Arduino の自作]] [#a7...
- [[Arduino 互換(もどき) の自作>./Arduino の自作]]
*** [[Arduino 互換機の購入>./Arduino 互換機の購入]] [#g1f...
- [[Arduino 互換機の購入>./Arduino 互換機の購入]]~
自作するよりも互換機を購入した方が楽な時代になったようで...
*** [[やってみました。>./みんな試作機]] [#x78bae08]
- [[つくってみたもの>./みんな試作機]]
終了行:
#topicpath
** アルドゥイーノ・アーデュイーノ (Arduino) [#z18ec656]
電子工作は素人。だけど、Arduino を使ってみたいと思います。
以下、Arduino を使うまでの道筋を記録します。
同じような素人さん向けに参考になるように。
** いくつかの基礎知識 [#gfda371d]
素人ですので、不正確、場合によっては誤りの情報があるかと...
どうぞご指摘下さい。
- ATmega168P~
~
Atmel 社の「ワンチップマイコン」です。~
一つのチップの中に、CPU(中央演算処理装置)、メモリ、AD変換...
仕様の一部を下に示します。(私たちが普通入手するPDIP パッ...
~
#style(class=table_left){{
| 項目| |h
| | |
| EEPROM (電気的に消したりプログラムしたりでき、電源を落...
| SRAM (メインメモリ) | 1K バイト|
| AD変換 (アナログデータをデジタルデータに変換する機能)| ...
| IO (入出力に使えるピンの数) | 23 本 |
| 駆動電圧 | 2.7-5.5 V (ただし電圧が低いとクロックを下...
| 周波数(クロック。1秒間に何回計算するか) | 20MHz まで |
}}
~
~
- 電源とクロック~
使用する電源電圧に応じて、安全に稼働する周波数の範囲が変...
&ref(safe_operating_area.png,,400x217);~
~
~
- ブートローダ~
AVRマイコンのプログラム用フラッシュメモリの一部(Boot Prog...
そのプログラムをブートローダというようです。~
~
ブートローダがあることによって、比較的容易にマイコンにプ...
~
~
- ヒューズ(Fuse : 発音はフューズのはずだけど、ヒューズと...
~
※ ヒューズビットという表現もありますが、マニュアルにはヒ...
8bit(=1byte)をセットで設定する必要があるからでしょう...
~
AVR マイコンの機能を変化させるためのスイッチとして使われ...
(多くの人には通じないでしょうけど、昔の EPSON のパソコン...
ブートローダとは別に書き込む必要があります。~
失敗すると、元に戻すのに苦労する場合があるので、慎重にセ...
Arduino でどのようなヒューズがセットされているかは、ardui...
以下の情報は ATmega168P に基づいています。&color(red){ATm...
~
++ 上位ヒューズ(High Fuse)~
リセットの扱いなど。~
Diecimila, Duemilanove Nano w/ ATmega168 では 0xdd(110111...
~
#style(class=table_left){{
| 名称 | ビット番号 | 意味 | Default の値 |h
| | | | |
| RSDIBL | 7 | 外部からのリセットを使用不可にする。これが...
| DWEN | 6 | On-chip デバッグシステムを使えるようにする。...
| SPIEN | 5 | シリアルプログラムとデータのダウンロードを...
| WDTON | 4 | Watchdog Timer(内蔵のカウンタが決まった値に...
| EESAVE | 3 | Chip Erase でも EEPROM を保持 | 1 (設定し...
| BODLEVEL2 | 2 | BOD(Brown-Out:電圧低下 Detector)電圧低...
| BODLEVEL1 | 1 | | ※1|
| BODLEVEL0 | 0 | | ※1|
}}
~
#style(class=table_left){{
| ※1 | BODLEVEL 2:0 の設定について|h
| | |
| 111 | BOD を使わない ( Default ) |
| 110 | Vcc 2.5V用(?) に設定。1.8V 以下で停止 |
| 101 | Vcc 3.5V用(?) に設定。2.7V 以下で停止 |
| 100 | Vcc 5.0V用(?) に設定。4.3V 以下で停止 |
}}
~
++ 下位ヒューズ(Low Fuse)~
分周(?)や、ATmega168Pを駆動する周波数をどこからとるかによ...
Diecimila, Duemilanove Nano w/ ATmega168 では 0xff(111111...
~
#style(class=table_left){{
| 名称 | ビット番号 | 意味 | Default の値 |h
| | | | |
| CKDIV8 | 7 | 周波数を1/8 にする。(8MHz → 1MHz ) | 0 (設...
| CKOUT | 6 | CLKO ピン(PB0, 14番)からクロックを出力する...
| SUT1 | 5 | スタートアップタイムの指定 | ※1 |
| SUT0 | 4 | |※1 |
| CKSEL3 | 3 | クロックの指定 | ※2 |
| CKSEL2 | 2 | | ※2|
| CKSEL1 | 1 | | ※2|
| CKSEL0 | 0 | | ※2|
}}
~
#style(class=table_left){{
|※1 | SUT1:0 の設定について(ただし、CKSEL3:0 が 1111の場...
| | |
| 01 | リセットからの余分な遅れ : 14クロック (ただし、BOD...
| 10 | リセットからの余分な遅れ : 14クロック + 4.1ms |
| 11 | リセットからの余分な遅れ : 14クロック + 65ms |
}}
~
#style(class=table_left){{
|※2 | CKSEL3:0 の設定について |h
| | |
| 0000 | External Clock Source(外部発振源?)を使う |
| 0010 | 内部 RC 発振回路 8( 7.3-8.1 )MHz を使う |
| 0011 | 内部 128kHz(low power で高精度に作られていない) ...
| 0100-1111 | 水晶発振 |
| 1111 | 水晶発振(8.0-16.0)MHz (12-22 pF のコンデンサを噛...
}}
~
++ 拡張ヒューズ(Extended Fuse)~
Diecimila, Duemilanove Nano w/ ATmega168 では 0x00(000000...
~
#style(class=table_left){{
| 名称 | ビット番号 | 意味 | Default の値 |h
| | | | |
| | 7 | 不使用 | |
| | 6 | 不使用 | |
| | 5 | 不使用 | |
| | 4 | 不使用 | |
| | 3 | 不使用 | |
| BOOTSZ1 | 2 | ブートローダのサイズを決める| ※1|
| BOOTSZ0 | 1 | |※1 |
| BOOTRST | 0 | リセット信号が来たときに、ブートローダ領...
}}
~
#style(class=table_left){{
| ※ 1 | BOOTSZ1:0 の設定と168Pの場合のブートローダ領域の...
| | |
| 1 1 | 0.25 Kbyte ( 128 ワード ) ...
| 1 0 | 0.5 Kbyte ( 256 ワード ) ...
| 0 1 | 1 Kbyte ( 512 ワード ) ...
| 0 0 | 2 Kbyte ( 1024 ワード ) ...
}}
~
※ 00 なら 1024words( アドレス 0x1C00-0x1FFF までの 2KB 分...
~
~
++ ロックビット(Lock Bit)~
応用プログラム領域の書き込みをできなくしたり(BLB0)、~
ブートローダ領域の書き込みをできなくしたり(BLB1)、~
場合によってはヒューズの書き込みも含めて禁止(LB)~
します。
~
#style(class=table_left){{
| 名称 | ビット番号 | 意味 | Default の値 |h
| | | | |
| | 7 | 不使用 | |
| | 6 | 不使用 | |
| BLB12 | 5 | ブートローダセクションへのアクセス | ※1 |
| BLB11 | 4 | | ※1 |
| BLB02 | 3 | アプリケーションセクションへのアクセス | ※...
| BLB01 | 2 | | ※2 |
| LB2 | 1 | フラッシュメモリ・EEPROMへのアクセス | ※3 |
| LB1 | 0 | | ※3 |
}}
~
#style(class=table_left){{
| ※ 1 | BLB12:1 の設定 : ブートローダセクションの読み書...
| | |
| 1 1 | ロックしない |
| 1 0 | SPMによる書き込みを禁止する。 ...
| 0 1 | アプリケーションからのLPM(Load P...
| 0 0 | SPM(Store Program Memory)もアプ...
}}
※ ブートローダを書き込むときは"11"がよい。ブートローダを...
~
#style(class=table_left){{
| ※ 2 | BLB02:1 の設定 : アプリケーションセクションの読...
| | |
| 1 1 | ロックしない |
| 1 0 | SPMによる書き込みを禁止する。 ...
| 0 1 | ブートローダからのLPM(Load Progr...
| 0 0 | SPM(Store Program Memory)もブー...
}}
※ ブートローダから変更したいので設定する必要ない。 "11"で...
~
#style(class=table_left){{
| ※ 3 | LB2:1 の設定 : フラッシュメモリとEEPROMについて |h
| | |
| 1 1 | ロックしない |
| 1 0 | プログラミングを禁止する。 ...
| 0 0 | プログラミングも確かめ(Verify)も...
}}
※ 設定する必要ない。 "11"でよい。
~
~
board.txt によると、Arduino で設定しているのは、次の2通り...
0x0F(ブートローダ領域への書き込み読み取りを禁止)~
0x3F(一切禁止しない)~
~
- パソコンとの通信~
-- ハードウェア~
パソコンからマイコン(ここの場合、ATmega168P)にプログラム...
自作Arduino 互換について書いたもののうち、[[Duemilanoveタ...
~
しかし、これを使わない方法もあります。[[USBasp>http://www...
~
自作Arduino 互換について書いたもののうち、[[USB直結タイプ...
~
-- ソフトウエア~
FTDI にしろ、CP2102 にしろ、これを通して通信する場合には...
~
[[USBasp>http://www.fischl.de/usbasp/]] を使う場合にもや...
~
~
*** [[既製品の Arduino を使う>./既製品の Arduino を使う]]...
- [[既製品の Arduino を使う>./既製品の Arduino を使う]]
*** Arduino のプログミング [#mf825325]
- [[Arduino のプログラム開発環境を整える>./ArduinoIDE]]
- [[Arduino のプログラミングTips>./ArduinoTips]]
-- [[digitalWrite()を速くする>./ArduinoTips#rb8c22cc]]
*** [[Arduino 互換(もどき) の自作>./Arduino の自作]] [#a7...
- [[Arduino 互換(もどき) の自作>./Arduino の自作]]
*** [[Arduino 互換機の購入>./Arduino 互換機の購入]] [#g1f...
- [[Arduino 互換機の購入>./Arduino 互換機の購入]]~
自作するよりも互換機を購入した方が楽な時代になったようで...
*** [[やってみました。>./みんな試作機]] [#x78bae08]
- [[つくってみたもの>./みんな試作機]]
ページ名: