GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
いつもお世話になっております。
過去に何度も何度もハードウェアI2Cについて質問していましたが、
皆様のアドバイスのおかげで、ある程度のハードウェアI2C仕様のライブラリを作ってみました。
残念ながら割り込みに引っかかってスレーブモードはまだ出来ていません。。。
このライブラリを使用する利点としては、400kbps、1Mbps(未検証)で通信できることです。
本当に400kbps通信できているのかちょっと怪しいところですが、通信は出来ているようです。
参考までに、下記のプログラムで確認したところ、
追記です。
このライブラリにはコンストラクタが既に登録されています(hardWire)ので、メインプログラムにコンストラクタ登録は不必要です。
今のところ対応ポートはRIIC0(30,31番ピン)のみです。
また、このライブラリの実行確認環境はHEWです。
こんにちは。
こちらにて公開されていましたソースを使用していろいろ試しておりましたが、ちょっと意図しない動きがあり調べました。
本当ですと改良済みのソースをお出しするのが筋なのですが、手元にメモしかないため…横着してレポートのみ取り急ぎ上げさせていただきます。申し訳ございません。
■ 起きていた症状
requestFrom関数において、quantityに22以上を指定したとき1度受信したあとは以降ずっとエラーとなる。
■ 改造箇所(以下のどれが効いたのか、突き詰めて確認できてません。すいません。)
1. I2C初期化時の手順がマニュアルと異なっているため変更
ソースコード上で記述されている手順は
(1) ICEを0(69行目)
(2) IICRSTを1(70行目)
(3) IICRSTを0(71行目)
(4) レジスターの初期化
(5) ICEを1(101行目)
"RX63Nグループ、RX631グループ ユーザーズマニュアル ハードウェア編"での手順
(1) ICEを0
(2) IICRSTを1
(3) ICEを1
(5) IICRSTを0
2. ICMR1レジスターの初期化が重複しているため変更
3. ICFERレジスターの初期化において、マニュアル上では"マスターアービトレーションロスト検出許可ビット"について「通常は"1"にしておいてください」との記述がありますが、0のままになっていたため変更。
4. 360行目において、NACKまたはタイムアウトの検出を行い、検出された場合はエラーを返すようになっていますが、そのフラグをクリアしていないため、一度NACKまたはタイムアウトが検出された場合は以降受信不能となっていたため変更。
ご査収いただけますと幸いです。
返信が遅くなり申し訳ありません。
レポートありがとうございます。ただ、今現在こちらで検証する時間がなく、さらに今のものがこちらにアップ時のバージョンにいろいろ変更を加えている(特にエラー処理)ものでして、当時アップしたバージョンとはもしかしたら別の症状が出てしまうかもしれませんが、今は急ぎで開発バージョンに指摘していただいた項目で未だ修正できていなかったところを変更したものをアップさせていただきます。本来は変更があるたびにアップすべきではありますが、修正したい部分(回線切断などによるエラーが起きた後バスフリーズを起こしてしまう)が解決しきれていなかったため今までアップできていませんでした。申し訳ありません。
*このバージョンは未検証ですので予期せぬ事態を避けるためにもプロジェクトのバックアップはとっておいてください。
また、不具合等ありましたら教えていただけると非常に助かります。