2013年8月5日月曜日

PIC C18 メモ(SPI修正履歴)

-----------------------------
スレーブ側のプログラムバージョン(参考)
-----------------------------
SPI通信手順は、D/A, A/D系を扱うPICの載った基板、フロントパネルのスイッチやLED表示などを扱うPICの載った基板をメイン基板(マスター側)からコントロールするため、自己流で考案した。
本ブログ(PIC C18 メモ)記載の「スレーブ側」は、このスイッチ監視基板を指す。SPIスレーブ側プログラムの修正履歴をまとめた。
  • 【901v02】 2006.11.27 迄SPI割り込みで処理(バラックセット)
  • 【901v03】 2006.11.27 割り込みを使わない方法へ
  • 【901v05】 2006.12.09 (正規基板)
  • 【901v06】 2006.01.14 SPI通信手順を改良
  • 【901v08】 2007.02.17 SPI CKE=0,CKP=0 をCKP=1へ変更
  • 【A01v01】 2007.12.19 SPI通信手順を変更(基板改版)
  • 【A01v02】 2009.10.05 configulation変更とPICの品種が安価なタイプへ
  • 【A01v03】 2010.11.19 コマンド追加
【901v02以前】
SPI受信割り込みを使ったバージョンの不具合理由
  • 割り込み受信の場合は、割り込み許可前に WCOL=L にしておく
  • 複数の割り込み要因がある場合は、割り込みの優先設定、割り込み処理中の割り込み禁止など必要
【901v03】
  • 割り込みは使わない
  • SPIマスタ側は2つ目の送信をこの待つ必要がある
  • アイドルループを左下の方法から、右へ変更。通信しないと返すべきデータが更新されないので、ループ一回分遅れ、現在の状況が分からない
  →
↑ ↓
↑ if(タイマ1の処理)
↑ while(SPI受信)
↑ if(
タイマ2の処理)
↑ ↓
 ←
  →
↑ ↓
↑ if(
SPI受信)
↑ if(タイマ1の処理)
↑ if(タイマ2の処理)
↑ ↓
 ←
・タイマ1処理は、バックライトタイマ、タイマ2は、スイッチ読み込みとフィルタリング
・SPI受信は、コマンド受信と応答

【901v06】
  • LEDオンオフが任意のタイミングで出来るよう、どのコマンドも都度 Ready へ戻る
【901v08】2007.02.17
  • SPI設定 CKE=0,CKP=0 をCKP=1へ変更
    (マスター側にuALFATを接続するため)
【A01v01】

【901v08】までは試作機段階のもので、製品版の装置に用いられたのは、【A01v01】以降のバージョンである。
2013.08.07