関連
XBee S1による無線化1:モジュールの初期化XBee S1による無線化2:エクスプローラの配線XBee S1による無線化3:ベースボードの配線無線化するためのハードウェアが揃ったのでSH7125の設定を行います。
SH7125ベースボード2つで遠隔制御の回のプログラムをベースに使います。
シリアル通信設定ファイルintSCI.c、intSCI.hを
SCI0が使えるように編集します。
編集方法は
シリアル通信の設定(1)~(7)に準拠します。
現在ダウンロード可能な
intSCI.c、
intSCI.hは
SCI0が使えるように編集済みです。
設定ファイルの読み込みについては
遠隔制御の回を参照してください。
遠隔制御の回から変更する点は
intprg.cの
SCI1用シリアル通信設定451行目付近
453行目付近
455行目付近
void INT_SCI1_ERI1(
void){
/* sleep(); */}
void INT_SCI1_RXI1(
void){
/* sleep(); */}
void INT_SCI1_TXI1(
void){
/* sleep(); */}
↓
void INT_SCI1_ERI1(
void){
SCI1_INT_ERI1();}
void INT_SCI1_RXI1(
void){
SCI1_INT_RXI1();}
void INT_SCI1_TXI1(
void){
SCI1_INT_TXI1();}
に加えて
SCI0用シリアル通信設定443行目付近
445行目付近
447行目付近
void INT_SCI0_ERI0(
void){
/* sleep(); */}
void INT_SCI0_RXI0(
void){
/* sleep(); */}
void INT_SCI0_TXI0(
void){
/* sleep(); */}
↓
void INT_SCI0_ERI0(
void){
SCI0_INT_ERI0();}
void INT_SCI0_RXI0(
void){
SCI0_INT_RXI0();}
void INT_SCI0_TXI0(
void){
SCI0_INT_TXI0();}
を編集することでSCI0が使用可能になります。
メインプログラムは4か所を変更することで使用ポートが
SCI1から
SCI0へ変わります。
<設定>#include "iodefine.h"
#include <stdio.h>
#include "io_setup.h"
#include "ADConv.h"
#include "intMTU.h"
#include "intCMT.h"
#include "intSCI.h"
void main(void){
//変数定義 short ad_vale[8];
//AD変換値の格納 short pwm_out[8];
//PWM出力値の格納 short trans_data[10];
//送信データ格納用 short recive_data[10];
//受信データ格納用 unsigned long timer;
//ループ制御用タイマー int i;
//各機能の初期化 hardware_setup();
//汎用IOの初期化 init_ADC();
//AD変換の初期化 init_MTU();
//PWMの初期化 init_CMT0(1);
//タイマーの初期化 init_SCI0();
//シリアル通信の初期化 timer=getsystime();
//現在時刻の取得(intCMT) while(1){
//無限ループ開始 check_ai();
//AD変換の実行 analysys_sci(
0);
//シリアル通信受信処理 if(timer<getsystime()){
//タイマー設定時刻を経過 timer=getsystime()+50;
//50ms後に設定 for(i=0;i<8;i++){
ad_vale[i]=get_ai(i);
//AD変換値を取得0-1023 }
recv_data_sci0(ID_OPE,10,
recive_data);
//受信データを取得 set_pwm(PWM_PE0,
recive_data[2]*4);
//0-255を0-1023に変換して出力 set_pwm(PWM_PE1,
recive_data[3]*4);
//0-255を0-1023に変換して出力 set_pwm(PWM_PE8,
recive_data[4]*4);
//0-255を0-1023に変換して出力 set_pwm(PWM_PE9,
recive_data[5]*4);
//0-255を0-1023に変換して出力 set_pwm(PWM_PE10,
recive_data[6]*4);
//0-255を0-1023に変換して出力 set_pwm(PWM_PE11,
recive_data[7]*4);
//0-255を0-1023に変換して出力 set_pwm(PWM_PE12,
recive_data[8]*4);
//0-255を0-1023に変換して出力 set_pwm(PWM_PE13,
recive_data[9]*4);
//0-255を0-1023に変換して出力 //送信用データを組み立て trans_data[0]=0;
//送信データ0内部状態 trans_data[1]=get_sw1();
//送信データ1スイッチ入力 trans_data[2]=ad_vale[0]/4;
//送信データ1AD変換値0、0-1023を0-255へ変換 trans_data[3]=ad_vale[1]/4;
//送信データ1AD変換値1、0-1023を0-255へ変換 trans_data[4]=ad_vale[2]/4;
//送信データ1AD変換値2、0-1023を0-255へ変換 trans_data[5]=ad_vale[3]/4;
//送信データ1AD変換値3、0-1023を0-255へ変換 trans_data[6]=ad_vale[4]/4;
//送信データ1AD変換値4、0-1023を0-255へ変換 trans_data[7]=ad_vale[5]/4;
//送信データ1AD変換値5、0-1023を0-255へ変換 trans_data[8]=ad_vale[6]/4;
//送信データ1AD変換値6、0-1023を0-255へ変換 trans_data[9]=ad_vale[7]/4;
//送信データ1AD変換値7、0-1023を0-255へ変換 send_data_sci0(ID_OPE,10,
trans_data);
//データ送信 }
//50ms }
//end while}
ホストプログラム等を使って動作確認を行います
ホストプログラム設定ファイルCOM_Settings.iniのPortNumは
XBee USBインターフェースボードキットの設定時に確認したポートへ変更して使用します。
PC→
XBee USBインターフェースボードキット→
XBeeエクスプローラ→
マイコンの順にデータが流れて無線通信が可能になったはずです。
ホストプログラムの上2つのスライダを動かしてマイコンのLEDが調光できれば成功です。
マイコン間で無線通信を行いたい場合はXBeeエクスプローラとマイコンの配線をもう一式用意してください。