PIC18F2550とGT-720FのRS-232C通信の時の回路とdsPICのRS-232C通信回路が微妙に違うので、dsPICオシロのADM3202AN周辺回路のチェックのために以下のようなものを作ってみた。
dsPIC30F4012モジュール
dsPIC30F4012の各ピンを7×2のピンソケット2つにつないでジャンプワイヤーでアクセスできるようにしたモジュールです。
ICSP端子とリセット回路、10MHzのセラロックが付いています。
ADM3202AN+D-sub9モジュール
ADM3202ANの各ピンとD-sub9ピンコネクタの2, 3, 5, 7, 8ピンを7×2のピンソケットにつないでジャンプワイヤーでアクセスできるようにしたモジュールです。
ADM3202ANに必要なコンデンサーが付けてあります。
モジュールを使っての検証
2つのモジュールとブレッドボードを使ってPIC18F2550+GT-720Fの時の回路と同等の以下の回路を組んで検証する。
検証に使ったプログラムは以下のようなもので、プログラムを書き込んでTeraTermで接続後、’0’を入力すると’1’が表示され、’1’を入力すると’0’が表示されるというチェックをした。
#include "p30f4012.h"
#include "uart.h"
//// コンフィギュレーションの設定
_FOSC(CSW_FSCM_OFF & XT_PLL8); // 10MHzx8=80MHz
_FWDT(WDT_OFF);
_FBORPOR(PBOR_ON & BORV_20 & PWRT_64 & MCLR_EN);
_FGS(CODE_PROT_OFF);
/// ハードウェアポート設定
#define Green1 LATEbits.LATE0
#define Green2 LATEbits.LATE1
#define Yellow1 LATEbits.LATE2
#define Yellow2 LATEbits.LATE3
/// UART用設定パラメータ
#define UART_ALTRX_ALTTX 0xFFE7 /*Communication through ALT pins*/
unsigned int UMODEValue = UART_EN & UART_IDLE_CON & UART_ALTRX_ALTTX &
UART_DIS_WAKE & UART_DIS_LOOPBACK &
UART_DIS_ABAUD & UART_NO_PAR_8BIT & UART_1STOPBIT;
unsigned int USTAValue = UART_INT_TX_BUF_EMPTY & UART_TX_PIN_NORMAL &
UART_TX_ENABLE & UART_INT_RX_CHAR & UART_ADR_DETECT_DIS
& UART_RX_OVERRUN_CLEAR;
// グローバル変数
unsigned char Threshold; // スレッショルド値
unsigned int State, Channel; // 同期チャネル
unsigned int Index, cmnd; // 送受信用インデックス
unsigned int Sample; // サンプリング周期
int main(void)
{
long wait;
LATE = 0xFF;
TRISE = 0;
//// UART初期設定
OpenUART1(UMODEValue, USTAValue, 21); //57.6kbps@80MHz
while (1) {
Green1 = !Green1; // 目印LED
while(!DataRdyUART1()); // 受信レディか?
cmnd = ReadUART1(); // 1文字受信取得
switch(cmnd) {
case '0': // 接続確認コマンド
while(BusyUART1());
WriteUART1('1'); // OK出力
while(BusyUART1()); // 送信完了待ち
Green2 = 0; // LED On
Yellow2 = 1; // LED Off
break;
case '1': // 接続確認コマンド
while(BusyUART1());
WriteUART1('0'); // OK出力
while(BusyUART1()); // 送信完了待ち
Green2 = 1; // LED Off
Yellow2 = 0; // LED On
break;
default : break;
}
}
return 0;
}
結果は無事に通信できた。
少なくともこの回路なら通信できるはず。





