summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQMK Bot <hello@qmk.fm>2021-07-08 08:46:57 +0000
committerQMK Bot <hello@qmk.fm>2021-07-08 08:46:57 +0000
commit1fd1198522d5652d996ca38ee89dfd37a93c6be1 (patch)
tree9c07d99722fb266a8b7a68225a983e0247687ae3
parente675a9fc606ee124c196bf029bf6da5c40f7f15d (diff)
parenteab623f1ada0dc4e2b709b08aac837282a206efd (diff)
Merge remote-tracking branch 'origin/master' into develop
-rw-r--r--docs/ja/internals_gpio_control.md23
1 files changed, 21 insertions, 2 deletions
diff --git a/docs/ja/internals_gpio_control.md b/docs/ja/internals_gpio_control.md
index 9685f3ce72..60c5367870 100644
--- a/docs/ja/internals_gpio_control.md
+++ b/docs/ja/internals_gpio_control.md
@@ -1,8 +1,8 @@
# GPIO 制御 :id=gpio-control
<!---
- original document: 0.9.34:docs/internals_gpio_control.md
- git diff 0.9.34 HEAD -- docs/internals_gpio_control.md | cat
+ original document: 0.13.15:docs/internals_gpio_control.md
+ git diff 0.13.15 HEAD -- docs/internals_gpio_control.md | cat
-->
QMK には、マイクロコントローラに依存しない GPIO 制御抽象レイヤーがあります。これは異なるプラットフォーム間でピン制御に簡単にアクセスできるようにするためのものです。
@@ -26,3 +26,22 @@ QMK には、マイクロコントローラに依存しない GPIO 制御抽象
## 高度な設定 :id=advanced-settings
各マイクロコントローラは GPIO に関して複数の高度な設定を持つことができます。この抽象レイヤーは、アーキテクチャー固有の機能の使用法を制限しません。上級ユーザは、目的のデバイスのデータシートを参照し、必要なライブラリを含めてください。AVR については、標準 avr/io.h ライブラリが使われます; STM32 については ChibiOS [PAL ライブラリ](https://chibios.sourceforge.net/docs3/hal/group___p_a_l.html)が使われます。
+
+## アトミック操作 :id=atomic-operation
+
+上記の関数は、必ずしもアトミックに動作することが保証されているわけではありません。そのため、上記の関数を複数組み合わせて使用する際に、操作の途中での割り込みを防ぎたい場合は、以下の `ATOMIC_BLOCK_FORCEON` マクロを使用してください。
+
+例:
+```c
+void some_function() {
+ // 通常の処理
+ ATOMIC_BLOCK_FORCEON {
+ // アトミックであることが必要な処理
+ }
+ // 通常の処理
+}
+```
+
+`ATOMIC_BLOCK_FORCEON` は、ブロックが実行される前に、割り込みが有効か無効かに関わらず、強制的に割り込みを無効にします。そして、ブロックが実行された後に、割り込みを有効にします。
+
+したがって、`ATOMIC_BLOCK_FORCEON`は、ブロックの実行前に割り込みが有効になっていることがわかっている場合や、ブロックの完了時に割り込みを有効にしても問題ないことがわかっている場合のみ使用できることに注意してください。