You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

188 lines
9.4 KiB

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