
/*
Excep_SCI0_RXI0,
Excep_SCI0_TXI0,
Excep_SCI0_TEI0,
Excep_SCI1_RXI1,
Excep_SCI1_TXI1,
Excep_SCI1_TEI1,
Excep_SCI2_RXI2,
Excep_SCI2_TXI2,
Excep_SCI2_TEI2,
Excep_SCI3_RXI3,
Excep_SCI3_TXI3,
Excep_SCI3_TEI3,
*/
RXI2C_SCI0_RXI0, //--- for RXI2CLIB
RXI2C_SCI0_TXI0,
RXI2C_SCI0_TEI0,
RXI2C_SCI1_RXI1, //--- for RXI2CLIB
RXI2C_SCI1_TXI1,
RXI2C_SCI1_TEI1,
RXI2C_SCI2_RXI2, //--- for RXI2CLIB
RXI2C_SCI2_TXI2,
RXI2C_SCI2_TEI2,
RXI2C_SCI3_RXI3, //--- for RXI2CLIB
RXI2C_SCI3_TXI3,
RXI2C_SCI3_TEI3,
Excep_SCI4_RXI4,
Excep_SCI4_TXI4,
Excep_SCI4_TEI4,
/*
Excep_SCI5_RXI5,
Excep_SCI5_TXI5,
Excep_SCI5_TEI5,
Excep_SCI6_RXI6,
Excep_SCI6_TXI6,
Excep_SCI6_TEI6,
*/
RXI2C_SCI5_RXI5, //--- for RXI2CLIB
RXI2C_SCI5_TXI5,
RXI2C_SCI5_TEI5,
RXI2C_SCI6_RXI6, //--- for RXI2CLIB
RXI2C_SCI6_TXI6,
RXI2C_SCI6_TEI6,
Excep_SCI7_RXI7,
Excep_SCI7_TXI7,
Excep_SCI7_TEI7,
/*
Excep_SCI8_RXI8,
Excep_SCI8_TXI8,
Excep_SCI8_TEI8,
*/
RXI2C_SCI8_RXI8, //--- for RXI2CLIB
RXI2C_SCI8_TXI8,
RXI2C_SCI8_TEI8,
Excep_SCI9_RXI9,
Excep_SCI9_TXI9,
Excep_SCI9_TEI9,
Excep_SCI10_RXI10,
Excep_SCI10_TXI10,
Excep_SCI10_TEI10,
Excep_SCI11_RXI11,
Excep_SCI11_TXI11,
Excep_SCI11_TEI11,
/*
Excep_SCI12_RXI12,
Excep_SCI12_TXI12,
Excep_SCI12_TEI12,
*/
RXI2C_SCI12_RXI12, //--- for RXI2CLIB
RXI2C_SCI12_TXI12,
RXI2C_SCI12_TEI12,
|
void __attribute__ ((interrupt)) RXI2C_SCI0_RXI0(void); void __attribute__ ((interrupt)) RXI2C_SCI0_TXI0(void); void __attribute__ ((interrupt)) RXI2C_SCI0_TEI0(void); void __attribute__ ((interrupt)) RXI2C_SCI1_RXI1(void); void __attribute__ ((interrupt)) RXI2C_SCI1_TXI1(void); void __attribute__ ((interrupt)) RXI2C_SCI1_TEI1(void); void __attribute__ ((interrupt)) RXI2C_SCI2_RXI2(void); void __attribute__ ((interrupt)) RXI2C_SCI2_TXI2(void); void __attribute__ ((interrupt)) RXI2C_SCI2_TEI2(void); void __attribute__ ((interrupt)) RXI2C_SCI3_RXI3(void); void __attribute__ ((interrupt)) RXI2C_SCI3_TXI3(void); void __attribute__ ((interrupt)) RXI2C_SCI3_TEI3(void); void __attribute__ ((interrupt)) RXI2C_SCI5_RXI5(void); void __attribute__ ((interrupt)) RXI2C_SCI5_TXI5(void); void __attribute__ ((interrupt)) RXI2C_SCI5_TEI5(void); void __attribute__ ((interrupt)) RXI2C_SCI6_RXI6(void); void __attribute__ ((interrupt)) RXI2C_SCI6_TXI6(void); void __attribute__ ((interrupt)) RXI2C_SCI6_TEI6(void); void __attribute__ ((interrupt)) RXI2C_SCI8_RXI8(void); void __attribute__ ((interrupt)) RXI2C_SCI8_TXI8(void); void __attribute__ ((interrupt)) RXI2C_SCI8_TEI8(void); void __attribute__ ((interrupt)) RXI2C_SCI12_RXI12(void); void __attribute__ ((interrupt)) RXI2C_SCI12_TXI12(void); void __attribute__ ((interrupt)) RXI2C_SCI12_TEI12(void); |
#include "rxi2clib.h" |
//;0x0358 SCI0_RXI0
//(fp)INT_Excep_SCI0_RXI0,
(fp)RXI2C_SCI0_RXI0,
//;0x035C SCI0_TXI0
//(fp)INT_Excep_SCI0_TXI0,
(fp)RXI2C_SCI0_TXI0,
//;0x0360 SCI0_TEI0
//(fp)INT_Excep_SCI0_TEI0,
(fp)RXI2C_SCI0_TEI0,
|
void __attribute__ ((interrupt)) RXI2C_SCI0_RXI0(void); void __attribute__ ((interrupt)) RXI2C_SCI0_TXI0(void); void __attribute__ ((interrupt)) RXI2C_SCI0_TEI0(void); void __attribute__ ((interrupt)) RXI2C_SCI1_RXI1(void); void __attribute__ ((interrupt)) RXI2C_SCI1_TXI1(void); void __attribute__ ((interrupt)) RXI2C_SCI1_TEI1(void); void __attribute__ ((interrupt)) RXI2C_SCI2_RXI2(void); void __attribute__ ((interrupt)) RXI2C_SCI2_TXI2(void); void __attribute__ ((interrupt)) RXI2C_SCI2_TEI2(void); void __attribute__ ((interrupt)) RXI2C_SCI3_RXI3(void); void __attribute__ ((interrupt)) RXI2C_SCI3_TXI3(void); void __attribute__ ((interrupt)) RXI2C_SCI3_TEI3(void); void __attribute__ ((interrupt)) RXI2C_SCI5_RXI5(void); void __attribute__ ((interrupt)) RXI2C_SCI5_TXI5(void); void __attribute__ ((interrupt)) RXI2C_SCI5_TEI5(void); void __attribute__ ((interrupt)) RXI2C_SCI6_RXI6(void); void __attribute__ ((interrupt)) RXI2C_SCI6_TXI6(void); void __attribute__ ((interrupt)) RXI2C_SCI6_TEI6(void); void __attribute__ ((interrupt)) RXI2C_SCI8_RXI8(void); void __attribute__ ((interrupt)) RXI2C_SCI8_TXI8(void); void __attribute__ ((interrupt)) RXI2C_SCI8_TEI8(void); void __attribute__ ((interrupt)) RXI2C_SCI12_RXI12(void); void __attribute__ ((interrupt)) RXI2C_SCI12_TXI12(void); void __attribute__ ((interrupt)) RXI2C_SCI12_TEI12(void); |
#include "rxi2clib.h" |
//Sample program of RXI2CLIB
#include <rxduino.h>
// e2studioの場合は #include <Arduino.h>
#include "rxi2clib.h"
int ni2c=12;
#define AG_I2C_ADR 0x68
#define AG_WHO_AM_I 0x75
void setup()
{
pinMode(PIN_SW,INPUT); //青ボタン使用
pinMode(PIN_LED0,OUTPUT); //LED0使用
pinMode(PIN_LED1,OUTPUT); //LED1使用
int r= RXI2C_Open(ni2c, 3); //簡易I2Cオープン
if(!r) digitalWrite(PIN_LED0,1);
}
void loop()
{
if(!digitalRead(PIN_SW)){ //青ボタン処理
unsigned char c;
RXI2C_Send1(ni2c, AG_I2C_ADR, AG_WHO_AM_I);
RXI2C_Recv1(ni2c, AG_I2C_ADR, &c);
if(c==0x68) digitalWrite(PIN_LED1,1);
}
}
|
//MPU-9150 読み出し&出力サンプル
#include <rxduino.h>
// e2studioの場合は #include <Arduino.h>
int ncom= 0;
int ni2c= 12;
#define RXRS_SENDBUFFERSIZE0 256
#include "rxrslib.h"
#include "rxi2clib.h"
#define delayms(t) delay(t)
unsigned int t0;
//加速度&ジャイロ
#define AG_I2C_ADR 0x68
#define AG_GYRO_CONFIG 0x1B
#define AG_INT_PIN_CFG 0x37
#define AG_PWR_MGMT1 0x6B
#define AG_ACCEL_XOUT_H 0x3B
//コンパス
#define M_I2C_ADR 0x0C
#define M_HXL 0x03
#define M_CNTL 0x0A
void setup(){
//シリアル通信ポート開始
RXRS_Open(ncom, 12); //brr=12->230769bps
//I2C開始
RXI2C_Open(ni2c, 3); //brr=3->375000bps
//加速度&ジャイロ初期設定
RXI2C_Send2(ni2c, AG_I2C_ADR, AG_PWR_MGMT1, 0x00);
RXI2C_Send2(ni2c, AG_I2C_ADR, AG_INT_PIN_CFG, 0x02);
RXI2C_Send2(ni2c, AG_I2C_ADR, AG_GYRO_CONFIG, 0x08);
//00h:+/- 250deg/s(default)
//08h:+/- 500deg/s
//10h:+/-1000deg/s
//18h:+/-2000deg/s
//コンパス初期設定
RXI2C_Send2(ni2c, M_I2C_ADR, M_CNTL, 0x01); //変換開始
delayms(10);
t0=micros();
}
void loop(){
unsigned char dat[22];
int d[9];
//加速度&ジャイロ読み出し
RXI2C_Send1(ni2c, AG_I2C_ADR, AG_ACCEL_XOUT_H);
RXI2C_Recv(ni2c, AG_I2C_ADR, &dat[2], 14);
d[0]=(dat[2]*0x100)|dat[3];
d[1]=(dat[4]*0x100)|dat[5];
d[2]=(dat[6]*0x100)|dat[7];
d[3]=(dat[10]*0x100)|dat[11];
d[4]=(dat[12]*0x100)|dat[13];
d[5]=(dat[14]*0x100)|dat[15];
//コンパス読み出し
RXI2C_Send1(ni2c, M_I2C_ADR, M_HXL);
RXI2C_Recv(ni2c, M_I2C_ADR, &dat[16], 6);
d[6]=(dat[17]*0x100)|dat[16];
d[7]=(dat[19]*0x100)|dat[18];
d[8]=(dat[21]*0x100)|dat[20];
//コンパスは次の変換を開始しておく
RXI2C_Send2(ni2c, M_I2C_ADR, M_CNTL, 0x01); //変換開始
//データ出力(テキスト形式)
char s[256];
//ここまでで約0.77ms(@375kbps)
sprintf(s,"dt=%4d ",(int)(micros()-t0));
while(RXRS_CheckSend(ncom)<(int)strlen(s));
RXRS_Sends(ncom,s);
sprintf(s,"%6d %6d %6d/%6d %6d %6d/%6d %6d %6d\r\n"
,d[0],d[1],d[2],d[3],d[4],d[5],d[6],d[7],d[8]);
while(RXRS_CheckSend(ncom)<(int)strlen(s));
RXRS_Sends(ncom,s);
//時間待ち(10msになるまで)
while(micros()-t0<10000);
t0= micros();
}
|
brr -> 通信速度 [Hz] 0 -> 1500000.0 [Hz] 1 -> 750000.0 [Hz] 2 -> 500000.0 [Hz] 3 -> 375000.0 [Hz] 4 -> 300000.0 [Hz] 14 -> 100000.0 [Hz] |
SCI0: P21(IO0) =SCL, P20(IO1) =SDA SCI1: P30(CN6-6)=SCL, P26(CN6-3)=SDA ※ SCI2: P12(IO30) =SCL, P13(IO31) =SDA SCI3: P25(IO5) =SCL, P23(IO3) =SDA SCI5: PC2(IO8) =SCL, PC3(IO9) =SDA SCI6: P33(IO7) =SCL, P32(IO6) =SDA SCI8: PC6(IO11) =SCL, PC7(IO12) =SDA SCI12: PE2(IO46) =SCL, PE1(IO45) =SDA |

// SCI0で P33(IO7)=SCL, P32(IO6)=SDAを使うとき #define SCI0_SCLSDA_P33P32 // SCI2で P52(IO26)=SCL, P50(IO24)=SDAを使うとき #define SCI2_SCLSDA_P52P50 |

