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