Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: FreescaleIAP mbed-rtos mbed
Fork of workinQM_10thDec by
Diff: ACS.cpp
- Revision:
- 60:bd1498f03319
- Parent:
- 59:0fc0bfafaa9f
- Child:
- 63:55d32e7dcad7
--- a/ACS.cpp Sun Sep 04 19:06:02 2016 +0000
+++ b/ACS.cpp Sat Oct 08 09:19:13 2016 +0000
@@ -570,6 +570,278 @@
return 0;
}
+int PARAMETER_TRANSFER_GYRO(int gyro_rng)
+{
+
+ //READ_PARAMETER();
+ if(gyro_rng ==0)
+ return 0;
+ char range[5];
+
+
+ range[0] = 0x64;
+ range[1] = 0x4B;
+ i2c.write(SLAVE_ADDR,range,5);
+ i2c.write(SLAVE_ADDR,range,2);
+
+ range[0] = 0x54;
+ range[1] = 0x80;
+ i2c.write(SLAVE_ADDR,range,2);
+
+ range[0]=0x3A;
+ i2c.write(SLAVE_ADDR,range,1);
+ i2c.read(SLAVE_ADDR_READ,range,1);
+
+ printf("ACK_PARA : %.02X",range[0]);
+
+ if(range[0] != ((char)(0x4B)))
+ {
+ printf("Parameter transfer read failed \r\n");
+ return 0;
+ }
+
+ range[0]=0x3B;
+ i2c.write(SLAVE_ADDR,range,1);
+ i2c.read(SLAVE_ADDR_READ,range,4);
+
+ printf("range[0] range[1] range[2] range[3] : %.02X %.02X %.02X %.02X \r\n",range[0] ,range[1] , range[2] ,range[3]);
+
+ //range[0] = 0x64;
+ //range[1] = 0x00;
+ //i2c.write(SLAVE_ADDR,range,2);
+
+ //range[0] = 0x54;
+ //range[1] = 0x00;
+ //i2c.write(SLAVE_ADDR,range,2);
+ //wait_ms(4000);
+
+
+
+ range[0] = 0x60;
+
+
+ range[1] = (int)(gyro_rng%256); //1000
+ range[2] = (int)(gyro_rng/256);
+
+ //range[1]= 0x88;
+ //range[2] = 0x13; //5000
+
+ range[3] = 0x00;
+ range[4] = 0x00;
+ i2c.write(SLAVE_ADDR,range,5);
+
+ range[0] = 0x64;
+ range[1] = 0xCB;
+ i2c.write(SLAVE_ADDR,range,2);
+
+
+ //range[0] = 0x54;
+ //range[1] = 0x80;
+ //i2c.write(SLAVE_ADDR,range,2);
+
+ range[0]=0x3A;
+ i2c.write(SLAVE_ADDR,range,1);
+ i2c.read(SLAVE_ADDR_READ,range,1);
+
+ printf("ACK_PARA : %.02X",range[0]);
+
+ if(range[0] != ((char)(0xCB)))
+ {
+ printf("Parameter transfer failed \r\n");
+ return 0;
+ }
+
+ printf("Parameter transfer success\r\n");
+ //wait_ms(4000);
+ //range[0] = 0x64;
+ //range[1] = 0x00;
+ //i2c.write(SLAVE_ADDR,range,5);
+ //i2c.write(SLAVE_ADDR,range,2);
+
+ // range[0] = 0x54;
+ // range[1] = 0x00;
+ //i2c.write(SLAVE_ADDR,range,2);
+
+
+ printf("Reading parameter\r\n");
+ //READ_PARAMETER();
+
+ range[0] = 0x64;
+ range[1] = 0x4B;
+ i2c.write(SLAVE_ADDR,range,5);
+ i2c.write(SLAVE_ADDR,range,2);
+
+ //range[0] = 0x54;
+ //range[1] = 0x80;
+ //i2c.write(SLAVE_ADDR,range,2);
+
+ range[0]=0x3A;
+ i2c.write(SLAVE_ADDR,range,1);
+ i2c.read(SLAVE_ADDR_READ,range,1);
+
+ printf("ACK_PARA : %.02X",range[0]);
+
+ if(range[0] != ((char)(0x4B)))
+ {
+ printf("Parameter transfer read failed \r\n");
+ return 0;
+ }
+
+ range[0]=0x3B;
+ i2c.write(SLAVE_ADDR,range,1);
+ i2c.read(SLAVE_ADDR_READ,range,4);
+
+ printf("range[0] range[1] range[2] range[3] : %.02X %.02X %.02X %.02X \r\n",range[0] ,range[1] , range[2] ,range[3]);
+
+ range[0] = 0x64;
+ range[1] = 0x00;
+ i2c.write(SLAVE_ADDR,range,2);
+
+ range[0] = 0x54;
+ range[1] = 0x00;
+ i2c.write(SLAVE_ADDR,range,2);
+
+
+ return 1;
+
+}
+
+int PARAMETER_TRANSFER_MAG(int mag_rng)
+{
+
+ //READ_PARAMETER();
+ if(mag_rng ==0)
+ return 0;
+ char range[5];
+
+
+ range[0] = 0x64;
+ range[1] = 0x4A;
+ i2c.write(SLAVE_ADDR,range,5);
+ i2c.write(SLAVE_ADDR,range,2);
+
+ range[0] = 0x54;
+ range[1] = 0x80;
+ i2c.write(SLAVE_ADDR,range,2);
+
+ range[0]=0x3A;
+ i2c.write(SLAVE_ADDR,range,1);
+ i2c.read(SLAVE_ADDR_READ,range,1);
+
+ printf("ACK_PARA : %.02X",range[0]);
+
+ if(range[0] != ((char)(0x4B)))
+ {
+ printf("Parameter transfer read failed \r\n");
+ return 0;
+ }
+
+ range[0]=0x3B;
+ i2c.write(SLAVE_ADDR,range,1);
+ i2c.read(SLAVE_ADDR_READ,range,4);
+
+ printf("range[0] range[1] range[2] range[3] : %.02X %.02X %.02X %.02X \r\n",range[0] ,range[1] , range[2] ,range[3]);
+
+ //range[0] = 0x64;
+ //range[1] = 0x00;
+ //i2c.write(SLAVE_ADDR,range,2);
+
+ //range[0] = 0x54;
+ //range[1] = 0x00;
+ //i2c.write(SLAVE_ADDR,range,2);
+ //wait_ms(4000);
+
+
+
+ range[0] = 0x60;
+
+
+ range[1] = (int)(mag_rng%256); //1000
+ range[2] = (int)(mag_rng/256);
+
+ //range[1]= 0x88;
+ //range[2] = 0x13; //5000
+
+ range[3] = 0x00;
+ range[4] = 0x00;
+ i2c.write(SLAVE_ADDR,range,5);
+
+ range[0] = 0x64;
+ range[1] = 0xCA;
+ i2c.write(SLAVE_ADDR,range,2);
+
+
+ //range[0] = 0x54;
+ //range[1] = 0x80;
+ //i2c.write(SLAVE_ADDR,range,2);
+
+ range[0]=0x3A;
+ i2c.write(SLAVE_ADDR,range,1);
+ i2c.read(SLAVE_ADDR_READ,range,1);
+
+ printf("ACK_PARA : %.02X",range[0]);
+
+ if(range[0] != ((char)(0xCB)))
+ {
+ printf("Parameter transfer failed \r\n");
+ return 0;
+ }
+
+ printf("Parameter transfer success\r\n");
+ //wait_ms(4000);
+ //range[0] = 0x64;
+ //range[1] = 0x00;
+ //i2c.write(SLAVE_ADDR,range,5);
+ //i2c.write(SLAVE_ADDR,range,2);
+
+ // range[0] = 0x54;
+ // range[1] = 0x00;
+ //i2c.write(SLAVE_ADDR,range,2);
+
+
+ printf("Reading parameter\r\n");
+ //READ_PARAMETER();
+
+ range[0] = 0x64;
+ range[1] = 0x4A;
+ i2c.write(SLAVE_ADDR,range,5);
+ i2c.write(SLAVE_ADDR,range,2);
+
+ //range[0] = 0x54;
+ //range[1] = 0x80;
+ //i2c.write(SLAVE_ADDR,range,2);
+
+ range[0]=0x3A;
+ i2c.write(SLAVE_ADDR,range,1);
+ i2c.read(SLAVE_ADDR_READ,range,1);
+
+ printf("ACK_PARA : %.02X",range[0]);
+
+ if(range[0] != ((char)(0x4B)))
+ {
+ printf("Parameter transfer read failed \r\n");
+ return 0;
+ }
+
+ range[0]=0x3B;
+ i2c.write(SLAVE_ADDR,range,1);
+ i2c.read(SLAVE_ADDR_READ,range,4);
+
+ printf("range[0] range[1] range[2] range[3] : %.02X %.02X %.02X %.02X \r\n",range[0] ,range[1] , range[2] ,range[3]);
+
+ range[0] = 0x64;
+ range[1] = 0x00;
+ i2c.write(SLAVE_ADDR,range,2);
+
+ range[0] = 0x54;
+ range[1] = 0x00;
+ i2c.write(SLAVE_ADDR,range,2);
+
+
+ return 1;
+
+}
+
int SENSOR_INIT()
{
/// acs_pc.printf("Entered sensor init\n \r");
@@ -747,6 +1019,9 @@
return 0;
}
+ PARAMETER_TRANSFER_GYRO(0); // dont set range //PARAMETER of function sets range of gyroscope
+ PARAMETER_TRANSFER_MAG(0); // dont set range //PARAMETER of function sets range of magnetometer
+
cmd[0]=SENTRALSTATUS;
ack = i2c.write(SLAVE_ADDR,cmd,1);
if( ack!=0)
