目次
前
次
SubBrainマイコン
SubBrainマイコンは、ARMコアをもつADcU7026を利用します。
書籍名が変更になりましたが、DesignWaveMagazineの2006年
3月号の付録になっていたマイコンボードを2枚使います。
同じARM系のLPC1343も利用できるようにします。
各ボードのピン配置を見て、接続マイコンの
インタフェースを考えます。
ADcU7026のI/F
左右の34ピンの信号配置を見てみます。
CN2
_________________________________
| A01 | ADCin10 | B01 | ADCin9 |
| A02 | ADCin8 | B02 | ADCin7 |
| A03 | ADCin6 | B03 | ADCin5 |
| A04 | ADCin4 | B04 | ADCin1 |
| A05 | AGND | B05 | AGND |
| A06 | +5V | B06 | +5V |
| A07 | ADCin0 | B07 | DACout0 |
| A08 | ADCin11 | B08 | DACout1 |
| A09 | COMPin0 | B09 | DACout2 |
| A10 | COMPin1 | B10 | DACout3 |
| A11 | AGND | B11 | AGND |
| A12 | COMPpout | B12 | DACref |
| A13 | AGND | B13 | AGND |
| A14 | IO4[4] | B14 | IO4[5] |
| A15 | IO4[2] | B15 | IO4[3] |
| A16 | SDA1 | B16 | SCL1 |
| A17 | IO1[4] | B17 | 3.3V |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CN3
_________________________________
| A01 | IO1[5] | B01 | IO4[1] |
| A02 | IO4[0] | B02 | IO1[6] |
| A03 | IO1[7] | B03 | IO2[2] |
| A04 | IO2[1] | B04 | IO2[7] |
| A05 | IO3[7] | B05 | IO3[6] |
| A06 | +5V | B06 | +5V |
| A07 | IO0[7] | B07 | IO2[0] |
| A08 | IRQ7 | B08 | IO2[0] |
| A09 | IO3[5] | B09 | IO3[4] |
| A10 | nRESET | B10 | IO2[6] |
| A11 | DGND | B11 | DGND |
| A12 | IO2[4] | B12 | IO2[5] |
| A13 | IO3[2] | B13 | IO3[3] |
| A14 | IO3[0] | B14 | IO3[1] |
| A15 | IO0[6] | B15 | IO0[2] |
| A16 | IO4[6] | B16 | IO4[7] |
| A17 | IO0[1] | B17 | IO2[3] |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
IO3[5]/PWM2L IO4[5]/PWM2H
IO3[2]/PWM1H IO3[3]/PWM1L
IO3[0]/PWM0H IO3[1]/PWM0L
アクチュエータとの接続
アクチュエータ担当は、ATtiny2313です。
マイコンATtiny2313は、シリアルインタフェースで与えられた
Duty比を利用して、モータを回転します。
SubBrainのADcU7026とは、シリアルインタフェースで接続します。
ADcU7026のコネクタには、SIN、SOUTが出ていないので、シリアル
インタフェースコネクタを利用しまs。基板から、線材を利用し
引出します。
ノイズがのることでの、文字化けを防止と論理レベル
を確保するために、次のバッファを入れます。
バッファを入れることで、シリアルインタフェースで
使う電圧範囲(+12V〜-12V)から0〜4V程度にします。
送信だけに限定するのは、モータの回転速度を与える
だけで充分という考えからです。
回転速度は、左右のDuty比をコマンドで与えて、制御します。
コマンドは、次の仕様にしました。
DLLRR'\r'
D 1文字コマンド(Dutyの頭文字)
LL 左のDuty比を16進2けたで表現
RR 右のDuty比を16進2けたで表現
'\r' 1コマンドとパラメータの終わりを示すデリミタ
プロトコルは、以下とします。
- データ転送速度 9600bps
- データ長 8ビット
- ストップビット 1ビット
- フロー制御 なし
- 配線 3線方式
コマンドとプロトコルを確定したので、後で
ATtiny2313のファームウエアを書き換えます。
BCS(BarCodeScanner)との接続
BCSは、センサーボード上のATtiny2313が制御を担当し
その時点の8ビットデータを出力しています。
ADcU7026は、自分のタイミングで、BCSの
出力する8ビットデータを入力します。
8ビットの入力は、10ピンコネクタを用意し
次のピンアサインで対応します。
ADcU7026のファームウエア中に、I/Oポートの
入出力を設定する関数と入力処理関数を用意
します。
入出力は、起動時のポート指定で設定すれば
充分なので、BCSからデータを入力する関数を
定義します。
UBYTE get_bcs(void)
{
/* PORT2の値をリードし、出力 */
}
GBC(GameBoyCamera)との接続
GBCは、センサーボード上のATtiny328が制御を担当し
ラインアドレスを与えると、対応するビットデータを
出力しています。
ADcU7026は、自分のタイミングで、GBCの
出力する8ビットデータを入力します。
ラインアドレスは、0〜63ですが
必要なのは、8ライン程度なので
アドレスとして、3ビットを指定します。
3ビットのライン指定と8ビットの入力が
あればよいので、20ピンコネクタを用意し
次のピンアサインで対応します。
ADcU7026のファームウエア中に、I/Oポートの
入出力を設定する関数と入力処理関数を用意
します。
入出力は、起動時のポート指定で設定すれば
充分なので、GBCからデータを入力する関数を
定義します。
UBYTE get_gbc(UBYTE reg_adr)
{
/* レジスタ番号を出力 */
/* ディレイ */
/* PORT3の値をリードし、出力 */
}
ホストとの接続
ADcU7026とホストになるPCとR8C/Tinyには、シリアル
インタフェースがあるので、通信ポートを使う場合は
ケーブルを利用して接続します。
R8C/Tinyからは、1ビットのレベル信号で、ADcU7026を
制御すればよいので、次のようにLEDをモニタにしてから
論理レベルを確保して接続します。
目次
前
次