📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
ページの作成:「== 概要 == <br><br> == SC2004 / I2C接続 == ==== ATMega328の設定 ==== ATMega328をI2Cマスターモードで設定する必要がある。<br> <br> * TWCR(TWI Control Register)レジスタを設定して、I2Cの開始条件、停止条件、データ送信等を制御する。 * TWSR(TWI Status Register)レジスタを監視して、I2Cバスの状態を確認する。 * TWBR(TWI Bit Rate Register)レジスタを設定して、I2Cのビットレートを決…」 |
|||
| 2行目: | 2行目: | ||
<br><br> | <br><br> | ||
== SC2004 / | == SC2004 / I2C通信 == | ||
==== ATmega328とI2C ==== | |||
ATmega328において、I2Cのシリアルクロック線(SCL)とシリアルデータ線(SDA)で一般的によく使用されるピンは、以下の通りである。<br> | |||
* SCL | |||
*: PC5 | |||
* SDA | |||
*: PC4 | |||
<br> | |||
ATmega328にはI2Cハードウェアモジュール(TWI)が1つ搭載されているため、SCLとSDAに対応するピンは1組しか存在しない。<br> | |||
これらのピンはデフォルトで以下の機能にも割り当てられている。<br> | |||
* PC5 | |||
*: リセット時の状態を示すピン | |||
* PC4 | |||
*: USART0の受信ピン(RXD0) | |||
<br> | |||
したがって、I2C通信を使用する場合は、これらの代替機能を有効にする必要がある。<br> | |||
また、ATmega328にはI2C専用の物理ピンヘッダが無いため、一般的なデジタルI/Oピンを使用してI2C通信を行う必要がある。<br> | |||
<br> | |||
理論的には、ポートB、C、Dのピンを使用してI2C通信を行うことができるが、ポートCの割り当てられたピンを使うのが最も確実で効率的である。<br> | |||
ポートB、Dを使用する場合は、開発者自身がI2C通信向けのソースコードを設計する必要がある。<br> | |||
* ポートA | |||
*: ATmega328では、ポートA全体がツェナープラグ保護されているため、I2C通信が使用できない。 | |||
* ポートB | |||
*: PB2〜PB7はツェナープラグ保護されていないため、I2C通信が使用できる。 | |||
* ポートC | |||
*: PC4、PC5がI2Cハードウェアモジュール(TWI)に割り当てられているため、I2C通信に最適である。 | |||
* ポートD | |||
*: ツェナープラグ保護されていないため、I2C通信が使用できるが、ハードウェア割り当てが無い。 | |||
<br> | |||
また、Arduino IDEでは、Wire.hライブラリを使用することで、I2C通信を簡単に扱うことができる。<br> | |||
Arduinoの公式ボードでは、A4がSDAピン、A5がSCLピンとして使用されている。<br> | |||
<br> | |||
==== ツェナープラグ保護 (Zener Clamping)とは ==== | |||
AVRマイクロコントローラ上の入出力ピンを過電圧から保護する機能のことである。<br> | |||
<br> | |||
各入出力ピンの内部にツェナーダイオードが接続されている。<br> | |||
ツェナーダイオードは、一定の電圧を超えると導通し、過剰な電圧を基板のグランド側に流すことで、ICを保護する役割を果たす。<br> | |||
<br> | |||
ATmega328ではポートA全体、一部のポートBピン(PB0、PB1)がこのツェナープラグ保護で保護されている。<br> | |||
保護電圧は、5[V]が典型的な値である。<br> | |||
<br> | |||
ツェナープラグ保護の長所は、ICを過電圧から確実に守れることである。<br> | |||
しかし、その分ピンの使用方法に制約が生じる。<br> | |||
<br> | |||
保護ピンはダイオードの特性上、ハイインピーダンス入力としては使用できない。<br> | |||
また、外部からの電流供給が制限されるため、High駆動能力が低下する。<br> | |||
<br> | |||
このため、I2C通信等でプルアップ抵抗を使用する場合は、ツェナープラグ非保護のピンを選ぶ必要がある。<br> | |||
ATmega328では、一部のポートB、ポートC全体が最適な選択肢となる。<br> | |||
<br> | |||
==== ATMega328の設定 ==== | ==== ATMega328の設定 ==== | ||
ATMega328をI2Cマスターモードで設定する必要がある。<br> | ATMega328をI2Cマスターモードで設定する必要がある。<br> | ||