dsPICオシロのADM3202AN周辺回路の検証

PIC18F2550とGT-720FのRS-232C通信の時の回路とdsPICのRS-232C通信回路が微妙に違うので、dsPICオシロのADM3202AN周辺回路のチェックのために以下のようなものを作ってみた。

dsPIC30F4012モジュール

dsPIC30F4012の各ピンを7×2のピンソケット2つにつないでジャンプワイヤーでアクセスできるようにしたモジュールです。
ICSP端子とリセット回路、10MHzのセラロックが付いています。

dsPIC30F4012モジュール

dsPIC30F4012モジュール

dsPIC30F4012モジュール(裏側)

dsPIC30F4012モジュール(裏側)

ADM3202AN+D-sub9モジュール

ADM3202ANの各ピンとD-sub9ピンコネクタの2, 3, 5, 7, 8ピンを7×2のピンソケットにつないでジャンプワイヤーでアクセスできるようにしたモジュールです。
ADM3202ANに必要なコンデンサーが付けてあります。

ADM3202AN+D-sub9モジュール

ADM3202AN+D-sub9モジュール

ADM3202AN+D-sub9モジュール(裏側)

ADM3202AN+D-sub9モジュール(裏側)

モジュールを使っての検証

dsPICオシロの新RS-232C通信部分とLED×4部分を組み立てて検証

dsPICオシロの新RS-232C通信部分とLED×4部分を組み立てて検証

2つのモジュールとブレッドボードを使ってPIC18F2550+GT-720Fの時の回路と同等の以下の回路を組んで検証する。

dsPICオシロのADM3202AN周辺の変更

dsPICオシロのADM3202AN周辺の変更

検証に使ったプログラムは以下のようなもので、プログラムを書き込んで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;
}

結果は無事に通信できた。
少なくともこの回路なら通信できるはず。

カテゴリー: PIC, 作業, 回路 タグ: , , , , , , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA