LPC810は茨の道

LPC810の個性を生かす使いみちはLPC810より処理能力の高いマイコンの一部の役割を引き受けて分散処理することだと思う。LPC810より処理能力の高いマイコンとはI2Cで連携するのが妥当だと思う。したがってLPC810はI2Cのスレーブに設定することになり、その場合、常識的には割り込みでROM APIのプログラムを呼び出す形になる。ところが、そういう使いかたをした実例が現状ひとつも見つからない。トランジスタ技術の記事はI2Cのマスターだし、mbedオンラインコンパイラはLPC800のI2Cに未対応だし、LPCOpenのサンプルlpc812max_periph_i2c_rom_slaveはマスターがI2Cで接続したとたんに暴走する。

実例をまねて手っ取り早く動かしてみようという気持ちを捨て、LPC81x User manualでイチから勉強。割り込みハンドラi2c_isr_handler、割り込み受信用i2c_slave_receive_intr、割り込み送信用i2c_slave_transmit_intrの関係がよくわからない。で、ソースをいちばん丁寧に公開しているLPCOpenのサンプルlpc812max_periph_i2c_rom_slaveへ戻って記述を追う。参照先を辿ったらいちばん低レベルのlpc_chip_8xx_libのソースsysinit_8xx.cまで行ってしまったのだが、その70行目と71行目にこんな記述が。
cmd[2] = CPU_FREQ_EQU;
cmd[2] = 24000000 / 10000;
たぶん後ろはcmd[3] = ~だと思う。NXPに報告するべきだが、英語が苦手だし手続きもわからない。そのあたりについて詳しい人がいたら、ぜひ報告してあげて欲しい。

で、これを修正したがそれだけではまだ問題が解決しない。まだ努力が足りないと天の声がいっている。ブツが75円で気軽に買えて、買ってみたら使い方で苦労するというパターンは、普通の人なら腹がたつと思う。ボクはそういうやつのほうが面白いし、ここだけの話、またとないビジネスチャンスだ。企画書を書こうっと。

広告
カテゴリー: LPC810 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中