aboutsummaryrefslogtreecommitdiff
path: root/docs/ja/hardware_avr.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/ja/hardware_avr.md')
-rw-r--r--docs/ja/hardware_avr.md189
1 files changed, 189 insertions, 0 deletions
diff --git a/docs/ja/hardware_avr.md b/docs/ja/hardware_avr.md
new file mode 100644
index 000000000..6eb86a378
--- /dev/null
+++ b/docs/ja/hardware_avr.md
@@ -0,0 +1,189 @@
1# AVR マイコンを使ったキーボード
2
3<!---
4 grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
5 original document: c9e3fa6f7:docs/hardware_avr.md
6 git diff c9e3fa6f7 HEAD -- docs/hardware_avr.md | cat
7-->
8
9このページでは QMK における AVR マイコンのサポートについて説明します。AVR マイコンには、Atmel 社製の atmega32u4、atmega32u2、at90usb1286 やその他のマイコンを含みます。AVR マイコンは、簡単に動かせるよう設計された8ビットの MCU です。キーボードでよく使用される AVR マイコンには USB 機能や大きなキーボードマトリックスのためのたくさんの GPIO を搭載しています。これらは、現在、キーボードで使われる最も一般的な MCU です。
10
11まだ読んでない場合は、[キーボードガイドライン](ja/hardware_keyboard_guidelines.md) を読んで、キーボードを QMK にどのように適合させるかを把握する必要があります。
12
13## AVR を使用したキーボードを QMK に追加する
14
15QMK には AVR を使ったキーボードでの作業を簡略化するための機能が多数あります。大体のキーボードでは1行もコードを書く必要がありません。まずはじめに、`util/new_keyboard.sh` スクリプトを実行します。
16
17```
18$ ./util/new_keyboard.sh
19Generating a new QMK keyboard directory
20
21Keyboard Name: mycoolkb
22Keyboard Type [avr]:
23Your Name [John Smith]:
24
25Copying base template files... done
26Copying avr template files... done
27Renaming keyboard files... done
28Replacing %KEYBOARD% with mycoolkb... done
29Replacing %YOUR_NAME% with John Smith... done
30
31Created a new keyboard called mycoolkb.
32
33To start working on things, cd into keyboards/mycoolkb,
34or open the directory in your favourite text editor.
35```
36
37これにより、新しいキーボードをサポートするために必要なすべてのファイルが作成され、デフォルト値で設定が入力されます。あとはあなたのキーボード用にカスタマイズするだけです。
38
39## `readme.md`
40
41このファイルではキーボードに関する説明を記述します。[キーボード Readme テンプレート](ja/documentation_templates.md#keyboard-readmemd-template)に従って `readme.md` を記入して下さい。`readme.md` の上部に画像を配置することをお勧めします。画像は [Imgur](http://imgur.com) のような外部サービスを利用してください。
42
43## `<keyboard>.c`
44
45このファイルではキーボード上で実行される全てのカスタマイズされたロジックを記述します。多くのキーボードの場合、何も書く必要はありません。
46[機能のカスタマイズ](ja/custom_quantum_functions.md)で、カスタマイズされたロジックの記述方法を詳しく学ぶことが出来ます。
47
48## `<keyboard>.h`
49
50このファイルでは、[レイアウト](ja/feature_layouts.md)を定義します。最低限、以下のような `#define LAYOUT` を記述する必要があります。
51
52```c
53#define LAYOUT( \
54 k00, k01, k02, \
55 k10, k11 \
56) { \
57 { k00, k01, k02 }, \
58 { k10, KC_NO, k11 }, \
59}
60```
61
62`LAYOUT` マクロの前半部ではキーの物理的な配置を定義します。後半部ではスイッチが接続されるマトリックスを定義します。これによってマトリックス配線の順とは異なるキーを物理的に配置できます。
63
64それぞれの `k__` 変数はユニークでなければいけません。通常は `k<row><col>` というフォーマットに従って記述されます。
65
66物理マトリックス(後半部)では、`MATRIX_ROWS` に等しい行数が必要であり、各行には正確に `MATRIX_COLS` と等しい数の要素が含まれていなければいけません。物理キーが存在しない場合は、`KC_NO` を使用して空白を埋める事ができます。
67
68## `config.h`
69
70`config.h` ファイルには、ハードウェアや機能の設定を記述します。このファイルで設定できるオプションは列挙しきれないほどたくさんあります。利用できるオプションの概要は[設定オプション](ja/config_options.md)を参照して下さい。
71
72### ハードウェアの設定
73
74`config.h` の先頭には USB に関する設定があります。これらはキーボードが OS からどのように見えるかを制御しています。変更する理由がない場合は、`VENDOR_ID` を `0xFEED` のままにしておく必要があります。`PRODUCT_ID` にはまだ使用されていない番号を選ばなければいけません。
75
76`MANUFACTURER`、 `PRODUCT`、 `DESCRIPTION` をキーボードにあった設定に変更します。
77
78```c
79#define VENDOR_ID 0xFEED
80#define PRODUCT_ID 0x6060
81#define DEVICE_VER 0x0001
82#define MANUFACTURER You
83#define PRODUCT my_awesome_keyboard
84#define DESCRIPTION A custom keyboard
85```
86
87?> Windows や macOS では、`MANUFACTURER` と `PRODUCT` が USBデバイスのリストに表示されます。Linux 上の `lsusb` では、代わりにデフォルトで [USB ID Repository](http://www.linux-usb.org/usb-ids.html) によって維持されているリストからこれらを取得します。`lsusb -v` を使用するとデバイスから示された値を表示します。また、接続したときのカーネルログにも表示されます。
88
89### キーボードマトリックスの設定
90
91`config.h` ファイルの次のセクションではキーボードのマトリックスを扱います。最初に設定するのはマトリックスのサイズです。これは通常、常にではありませんが、物理キー配置と同じ数の行・列になります。
92
93```c
94#define MATRIX_ROWS 2
95#define MATRIX_COLS 3
96```
97
98マトリックスのサイズを定義したら、MCU のどのピンを行と列に接続するかを定義します。そのためにはピンの名前を指定するだけです。
99
100```c
101#define MATRIX_ROW_PINS { D0, D5 }
102#define MATRIX_COL_PINS { F1, F0, B0 }
103#define UNUSED_PINS
104```
105
106
107`MATRIX_ROW_PINS` の要素の数は `MATRIX_ROWS` に定義した数と同じでなければいけません。同様に `MATRIX_COL_PINS` の要素の数も `MATRIX_COLS` と等しい必要があります。`UNUSED_PINS` は定義しなくても問題ありませんがどのピンが空いているのか記録しておきたい場合は定義できます。
108
109最後にダイオードの方向を定義します。これには `COL2ROW` か `ROW2COL` を設定します。
110
111```c
112#define DIODE_DIRECTION COL2ROW
113```
114
115#### ダイレクトピンマトリックス
116
117各スイッチが、列と行のピンを共有する代わりに、それぞれ個別のピンとグランドに接続されているキーボードを定義するには、`DIRECT_PINS` を使用します。マッピング定義では、列と行の各スイッチのピンを左から右の順に定義します。`MATRIX_ROWS` と `MATRIX_COLS` 内のサイズに準拠する必要があり、空白を埋めるには `NO_PIN` を使用します。これによって `DIODE_DIRECTION`、`MATRIX_ROW_PINS`、`MATRIX_COL_PINS` の動作を上書きします。
118
119```c
120// #define MATRIX_ROW_PINS { D0, D5 }
121// #define MATRIX_COL_PINS { F1, F0, B0 }
122#define DIRECT_PINS { \
123 { F1, E6, B0, B2, B3 }, \
124 { F5, F0, B1, B7, D2 }, \
125 { F6, F7, C7, D5, D3 }, \
126 { B5, C6, B6, NO_PIN, NO_PIN } \
127}
128#define UNUSED_PINS
129
130/* COL2ROW, ROW2COL */
131//#define DIODE_DIRECTION
132```
133
134### バックライトの設定
135
136QMK では GPIO ピンでのバックライト制御をサポートしています。これらの設定を選択して MCU から制御できます。詳しくは[バックライト](ja/feature_backlight.md)を参照して下さい。
137
138```c
139#define BACKLIGHT_PIN B7
140#define BACKLIGHT_LEVELS 3
141#define BACKLIGHT_BREATHING
142#define BREATHING_PERIOD 6
143```
144
145### その他の設定オプション
146
147`config.h` で設定・調整できる機能はたくさんあります。詳しくは[設定オプション](ja/config_options.md)を参照して下さい。
148
149## `rules.mk`
150
151`rules.mk` ファイルを使用して、ビルドするファイルや有効にする機能をQMKへ指示します。atmega32u4 を使っている場合、これらのオプションはデフォルトのままにしておくことが出来ます。他の MCU を使用している場合はいくつかのパラメータを調整する必要があります。
152
153### MCU オプション
154
155このオプションではビルドする CPU をビルドシステムに指示します。これらの設定を変更する場合は非常に注意して下さい。キーボードを操作不能にしてしまう可能性があります。
156
157```make
158MCU = atmega32u4
159F_CPU = 16000000
160ARCH = AVR8
161F_USB = $(F_CPU)
162OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
163```
164
165### ブートローダー
166
167ブートローダーは MCU に保存されているプログラムをアップグレードするための特別なセクションです。キーボードのレスキューパーティションのようなものだと考えて下さい。
168
169#### Teensy Bootloader の例
170
171```make
172BOOTLOADER = halfkay
173```
174
175#### Atmel DFU Loader の例
176
177```make
178BOOTLOADER = atmel-dfu
179```
180
181#### Pro Micro Bootloader の例
182
183```make
184BOOTLOADER = caterina
185```
186
187### ビルドオプション
188
189`rules.mk` にはオン・オフできるたくさんの機能があります。詳細なリストと説明は[設定オプション](ja/config_options.md#feature-options)を参照して下さい。