/* 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 |