NXP Lego plotter demo code using FRDM-34931S-EVB, FRDM-STBC-AGM01, and FRDM-K64F (accelerometer/client side).

Dependencies:   EthernetInterface mbed-rtos mbed

Fork of DEMO_plotter_acc-client by Freescale

Committer:
mareikeFSL
Date:
Fri May 27 21:07:24 2016 +0000
Revision:
0:65cab7b6fd7a
Initial publication

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mareikeFSL 0:65cab7b6fd7a 1 /*--------------------------------------------------------------------------------*/
mareikeFSL 0:65cab7b6fd7a 2 /* Plotter Demo Code for K64F (Accelerometer, Ethernet Client) */
mareikeFSL 0:65cab7b6fd7a 3 /*--------------------------------------------------------------------------------*/
mareikeFSL 0:65cab7b6fd7a 4
mareikeFSL 0:65cab7b6fd7a 5 /*--COMPANY-----AUTHOR------DATE------------REVISION----NOTES---------------------*/
mareikeFSL 0:65cab7b6fd7a 6 /* NXP mareikeFSL 2016.02.05 rev 1.0 initial */
mareikeFSL 0:65cab7b6fd7a 7 /* NXP mareikeFSL 2016.03.02 rev 1.1 added feedback / enable */
mareikeFSL 0:65cab7b6fd7a 8 /* */
mareikeFSL 0:65cab7b6fd7a 9 /*--------------------------------------------------------------------------------*/
mareikeFSL 0:65cab7b6fd7a 10
mareikeFSL 0:65cab7b6fd7a 11 /*--PROGRAM FLOW------------------------------------------------------------------*/
mareikeFSL 0:65cab7b6fd7a 12 /* MAIN */
mareikeFSL 0:65cab7b6fd7a 13 /* -> */
mareikeFSL 0:65cab7b6fd7a 14 /*--------------------------------------------------------------------------------*/
mareikeFSL 0:65cab7b6fd7a 15
mareikeFSL 0:65cab7b6fd7a 16 /*--HARDWARE----------------------------------------------------------------------*/
mareikeFSL 0:65cab7b6fd7a 17 /* FRDM-K64F #2 REV: 700-28163 REV C, SCH-28163 REV E */
mareikeFSL 0:65cab7b6fd7a 18 /* FRDM-STBC-AGM01 REV: 700-28556 REV B, SCH-28566 REV C */
mareikeFSL 0:65cab7b6fd7a 19 /* FRDM-STBC-AGM01 J5 is (1-2), J6 is (1-2), J7 is (1-2) */
mareikeFSL 0:65cab7b6fd7a 20 /* Ethernet cable from FRDM-K64F (#1) to FRDM-K64F (#2) */
mareikeFSL 0:65cab7b6fd7a 21 /*--------------------------------------------------------------------------------*/
mareikeFSL 0:65cab7b6fd7a 22
mareikeFSL 0:65cab7b6fd7a 23 /*--GPIO--------------------------------------------------------------------------*/
mareikeFSL 0:65cab7b6fd7a 24 /* INT1_8700 (INT1) = PTB19 (J1-3) */
mareikeFSL 0:65cab7b6fd7a 25 /* INT2_8700 (INT2) = PTC1 (J1-5) */
mareikeFSL 0:65cab7b6fd7a 26 /* INT1_21002 (INT1_G) = PTB9 (J1-6) */
mareikeFSL 0:65cab7b6fd7a 27 /* INT2_21002 (INT2_G) = PTE26 (J2-1) */
mareikeFSL 0:65cab7b6fd7a 28 /* SPI_CSB_21002 (CS_G) = PTD0 (J2-6) */
mareikeFSL 0:65cab7b6fd7a 29 /* RST_GPIO (RESET) = PTB11 (J10-4) */
mareikeFSL 0:65cab7b6fd7a 30 /* SA1_CSB_8700 (CS) = PTB10 (J10-3) */
mareikeFSL 0:65cab7b6fd7a 31 /* RST_MCU (U_RESET) = RESET (J9-3) */
mareikeFSL 0:65cab7b6fd7a 32 /*--------------------------------------------------------------------------------*/
mareikeFSL 0:65cab7b6fd7a 33 /*--SPI---------------------------------------------------------------------------*/
mareikeFSL 0:65cab7b6fd7a 34 /* SPI_MOSI (MOSI) = PTD2 (J2-4) */
mareikeFSL 0:65cab7b6fd7a 35 /* SA0_MISO (MISO) = PTD3 (J2-5) */
mareikeFSL 0:65cab7b6fd7a 36 /* SPI_SCLK (CLK) = PTD1 (J2-6) */
mareikeFSL 0:65cab7b6fd7a 37 /*--------------------------------------------------------------------------------*/
mareikeFSL 0:65cab7b6fd7a 38 /*--I2C---------------------------------------------------------------------------*/
mareikeFSL 0:65cab7b6fd7a 39 /* I2C_SDA0 (DATA0) = PTE25 (J2-9) */
mareikeFSL 0:65cab7b6fd7a 40 /* I2C_SCL0 (CLK0) = PTE24 (J2-10) */
mareikeFSL 0:65cab7b6fd7a 41 /* I2C_SCL1 (CLK1) = PTC10 (J10-6) */
mareikeFSL 0:65cab7b6fd7a 42 /* I2C_SDA1 (DATA1) = PTC11 (J10-5) */
mareikeFSL 0:65cab7b6fd7a 43 /*--------------------------------------------------------------------------------*/
mareikeFSL 0:65cab7b6fd7a 44 /*--OTHER-------------------------------------------------------------------------*/
mareikeFSL 0:65cab7b6fd7a 45 /* GND (GND) = GND (J2-8) */
mareikeFSL 0:65cab7b6fd7a 46 /* GND (GND) = GND (J9-7) */
mareikeFSL 0:65cab7b6fd7a 47 /* GND (GND) = GND (J9-6) */
mareikeFSL 0:65cab7b6fd7a 48 /* VDD (VDD) = VDD (J9-4) */
mareikeFSL 0:65cab7b6fd7a 49 /* VDD (VDD) = VDD (J9-2) */
mareikeFSL 0:65cab7b6fd7a 50 /*--------------------------------------------------------------------------------*/
mareikeFSL 0:65cab7b6fd7a 51
mareikeFSL 0:65cab7b6fd7a 52
mareikeFSL 0:65cab7b6fd7a 53 /*--INCLUDES----------------------------------------------------------------------*/
mareikeFSL 0:65cab7b6fd7a 54 #include "mbed.h"
mareikeFSL 0:65cab7b6fd7a 55 #include "EthernetInterface.h"
mareikeFSL 0:65cab7b6fd7a 56 #include <string>
mareikeFSL 0:65cab7b6fd7a 57
mareikeFSL 0:65cab7b6fd7a 58
mareikeFSL 0:65cab7b6fd7a 59 /*--DEFINES-----------------------------------------------------------------------*/
mareikeFSL 0:65cab7b6fd7a 60 #define STATUS 0x00 //read
mareikeFSL 0:65cab7b6fd7a 61 #define OUT_X_MSB 0x01 //read
mareikeFSL 0:65cab7b6fd7a 62 #define OUT_Y_MSB 0x03 //read
mareikeFSL 0:65cab7b6fd7a 63 #define OUT_Z_MSB 0x05 //read
mareikeFSL 0:65cab7b6fd7a 64 #define WHO_AM_I 0x0D //read
mareikeFSL 0:65cab7b6fd7a 65 #define CTRL_REG1 0x2A //read/write
mareikeFSL 0:65cab7b6fd7a 66 #define ADDRESS 0x3A //address of FXOS8700CQ (on schematic)
mareikeFSL 0:65cab7b6fd7a 67 #define WHO_AM_I_VALUE 0xC7 //value of who_am_i
mareikeFSL 0:65cab7b6fd7a 68
mareikeFSL 0:65cab7b6fd7a 69 #define CODE_MASK_CLEAR 0x3F;
mareikeFSL 0:65cab7b6fd7a 70 #define BOARD1_PWMA 0x00 //board 1, pwm a = 0b0000
mareikeFSL 0:65cab7b6fd7a 71 #define BOARD1_PWMB 0x40 //board 1, pwm b = 0b0100
mareikeFSL 0:65cab7b6fd7a 72 #define BOARD2_PWMA 0x80 //board 2, pwm a = 0x1000
mareikeFSL 0:65cab7b6fd7a 73 #define BOARD2_PWMB 0xC0 //board 2, pwm b = 0x1100
mareikeFSL 0:65cab7b6fd7a 74 #define X_STOP 0xFA
mareikeFSL 0:65cab7b6fd7a 75 #define Y_STOP 0xFB
mareikeFSL 0:65cab7b6fd7a 76
mareikeFSL 0:65cab7b6fd7a 77 #define BL_0_max 0x0A
mareikeFSL 0:65cab7b6fd7a 78 #define BL_80_max 0x1D
mareikeFSL 0:65cab7b6fd7a 79 #define BL_90_max 0x31
mareikeFSL 0:65cab7b6fd7a 80 #define BL_100_max 0x80
mareikeFSL 0:65cab7b6fd7a 81
mareikeFSL 0:65cab7b6fd7a 82 #define BL_0to80_lim 0x06
mareikeFSL 0:65cab7b6fd7a 83 #define BL_80to0_lim 0x0F
mareikeFSL 0:65cab7b6fd7a 84 #define BL_80to90_lim 0x19
mareikeFSL 0:65cab7b6fd7a 85 #define BL_90to80_lim 0x22
mareikeFSL 0:65cab7b6fd7a 86 #define BL_90to100_lim 0x2D
mareikeFSL 0:65cab7b6fd7a 87 #define BL_100to90_lim 0x36
mareikeFSL 0:65cab7b6fd7a 88
mareikeFSL 0:65cab7b6fd7a 89 #define FR_80_max 0xF4
mareikeFSL 0:65cab7b6fd7a 90 #define FR_90_max 0xE1
mareikeFSL 0:65cab7b6fd7a 91 #define FR_100_max 0xCD
mareikeFSL 0:65cab7b6fd7a 92
mareikeFSL 0:65cab7b6fd7a 93 #define FR_0to80_lim 0xF9
mareikeFSL 0:65cab7b6fd7a 94 #define FR_80to0_lim 0xF0
mareikeFSL 0:65cab7b6fd7a 95 #define FR_80to90_lim 0xE6
mareikeFSL 0:65cab7b6fd7a 96 #define FR_90to80_lim 0xDD
mareikeFSL 0:65cab7b6fd7a 97 #define FR_90to100_lim 0xD2
mareikeFSL 0:65cab7b6fd7a 98 #define FR_100to90_lim 0xC9
mareikeFSL 0:65cab7b6fd7a 99
mareikeFSL 0:65cab7b6fd7a 100 #define DC_0 0x00
mareikeFSL 0:65cab7b6fd7a 101 #define DC_80 0x19 //0x28 = 80, 0x19 = 50
mareikeFSL 0:65cab7b6fd7a 102 #define DC_90 0x23 //0x2D = 90, 0x23 = 70
mareikeFSL 0:65cab7b6fd7a 103 #define DC_100 0x32
mareikeFSL 0:65cab7b6fd7a 104
mareikeFSL 0:65cab7b6fd7a 105
mareikeFSL 0:65cab7b6fd7a 106 /*--CONSTANTS---------------------------------------------------------------------*/
mareikeFSL 0:65cab7b6fd7a 107 const int PORT = 7;
mareikeFSL 0:65cab7b6fd7a 108 static const char* SERVER_IP = "192.168.1.101"; //IP of motor board
mareikeFSL 0:65cab7b6fd7a 109 static const char* CLIENT_IP = "192.168.1.102"; //IP of accelerometer board
mareikeFSL 0:65cab7b6fd7a 110 static const char* MASK = "255.255.255.0"; //mask
mareikeFSL 0:65cab7b6fd7a 111 static const char* GATEWAY = "192.168.1.1"; //gateway
mareikeFSL 0:65cab7b6fd7a 112
mareikeFSL 0:65cab7b6fd7a 113
mareikeFSL 0:65cab7b6fd7a 114 /*--INITS-------------------------------------------------------------------------*/
mareikeFSL 0:65cab7b6fd7a 115 DigitalOut red(LED_RED); //debug led
mareikeFSL 0:65cab7b6fd7a 116 DigitalOut green(LED_GREEN); //debug led
mareikeFSL 0:65cab7b6fd7a 117 DigitalOut blue(LED_BLUE); //debug led
mareikeFSL 0:65cab7b6fd7a 118
mareikeFSL 0:65cab7b6fd7a 119 EthernetInterface eth; //create ethernet
mareikeFSL 0:65cab7b6fd7a 120 UDPSocket sock; //creat socket
mareikeFSL 0:65cab7b6fd7a 121 Endpoint server; //create endpoint
mareikeFSL 0:65cab7b6fd7a 122
mareikeFSL 0:65cab7b6fd7a 123 I2C i2c0(PTE25, PTE24); //I2C0
mareikeFSL 0:65cab7b6fd7a 124
mareikeFSL 0:65cab7b6fd7a 125
mareikeFSL 0:65cab7b6fd7a 126 /*--VARIABLES---------------------------------------------------------------------*/
mareikeFSL 0:65cab7b6fd7a 127 int n; //size of received message
mareikeFSL 0:65cab7b6fd7a 128 char in_buffer[1]; //create receive buffer
mareikeFSL 0:65cab7b6fd7a 129 char counter1[1] = {0}; //sample send buffer
mareikeFSL 0:65cab7b6fd7a 130 char counter2[1] = {5}; //sample send buffer
mareikeFSL 0:65cab7b6fd7a 131 char X_MSB_data[1] = {0x00};
mareikeFSL 0:65cab7b6fd7a 132 char Y_MSB_data[1] = {0x00};
mareikeFSL 0:65cab7b6fd7a 133 char x_axis = 1;
mareikeFSL 0:65cab7b6fd7a 134 char y_axis = 0;
mareikeFSL 0:65cab7b6fd7a 135 char prev_X = 0;
mareikeFSL 0:65cab7b6fd7a 136 char prev_Y = 0;
mareikeFSL 0:65cab7b6fd7a 137
mareikeFSL 0:65cab7b6fd7a 138
mareikeFSL 0:65cab7b6fd7a 139 /*--FUNCTION DECLARATIONS---------------------------------------------------------*/
mareikeFSL 0:65cab7b6fd7a 140 void init_eth(void); //initializes ethernet
mareikeFSL 0:65cab7b6fd7a 141
mareikeFSL 0:65cab7b6fd7a 142 void init_i2c0(void); //initializes I2C0
mareikeFSL 0:65cab7b6fd7a 143 void init_acc(void);
mareikeFSL 0:65cab7b6fd7a 144 char read_register(char address, //reads from register
mareikeFSL 0:65cab7b6fd7a 145 char reg,
mareikeFSL 0:65cab7b6fd7a 146 char if_print);
mareikeFSL 0:65cab7b6fd7a 147 void write_register(char address, //writes to register
mareikeFSL 0:65cab7b6fd7a 148 char reg,
mareikeFSL 0:65cab7b6fd7a 149 char write_data,
mareikeFSL 0:65cab7b6fd7a 150 bool if_print);
mareikeFSL 0:65cab7b6fd7a 151 void read_acc(void);
mareikeFSL 0:65cab7b6fd7a 152 char convert_acc_to_pwm(char input, char axis);
mareikeFSL 0:65cab7b6fd7a 153 int main(void);
mareikeFSL 0:65cab7b6fd7a 154
mareikeFSL 0:65cab7b6fd7a 155
mareikeFSL 0:65cab7b6fd7a 156 /*--FUNCTION DEFINITIONS----------------------------------------------------------*/
mareikeFSL 0:65cab7b6fd7a 157
mareikeFSL 0:65cab7b6fd7a 158 /***********************************************************************INIT_ETH***/
mareikeFSL 0:65cab7b6fd7a 159 void init_eth(void)
mareikeFSL 0:65cab7b6fd7a 160 {
mareikeFSL 0:65cab7b6fd7a 161 eth.init(CLIENT_IP, MASK, GATEWAY); //set up IP
mareikeFSL 0:65cab7b6fd7a 162 eth.connect(); //connect ethernet, takes ~15s
mareikeFSL 0:65cab7b6fd7a 163 sock.init(); //initialize socket
mareikeFSL 0:65cab7b6fd7a 164 server.set_address(SERVER_IP, PORT); //set address of server
mareikeFSL 0:65cab7b6fd7a 165
mareikeFSL 0:65cab7b6fd7a 166 } //end init_eth()
mareikeFSL 0:65cab7b6fd7a 167
mareikeFSL 0:65cab7b6fd7a 168 /**********************************************************************INIT_I2C0***/
mareikeFSL 0:65cab7b6fd7a 169 void init_i2c0(void)
mareikeFSL 0:65cab7b6fd7a 170 {
mareikeFSL 0:65cab7b6fd7a 171 i2c0.frequency(100000); //freq (100kHz)
mareikeFSL 0:65cab7b6fd7a 172
mareikeFSL 0:65cab7b6fd7a 173 } //end init_i2c0()
mareikeFSL 0:65cab7b6fd7a 174
mareikeFSL 0:65cab7b6fd7a 175 /******************************************************************READ REGISTER***/
mareikeFSL 0:65cab7b6fd7a 176 char read_register(char address, char reg, bool if_print)
mareikeFSL 0:65cab7b6fd7a 177 {
mareikeFSL 0:65cab7b6fd7a 178 char return_data = 0;
mareikeFSL 0:65cab7b6fd7a 179 char data[1] = {reg};
mareikeFSL 0:65cab7b6fd7a 180
mareikeFSL 0:65cab7b6fd7a 181 i2c0.write(address, data, 1, true); //write I2C address, then register to read
mareikeFSL 0:65cab7b6fd7a 182 i2c0.read(address, data, 1); //read from register, store result in data
mareikeFSL 0:65cab7b6fd7a 183
mareikeFSL 0:65cab7b6fd7a 184 return_data = data[0];
mareikeFSL 0:65cab7b6fd7a 185
mareikeFSL 0:65cab7b6fd7a 186 return return_data;
mareikeFSL 0:65cab7b6fd7a 187
mareikeFSL 0:65cab7b6fd7a 188 } //end read_register()
mareikeFSL 0:65cab7b6fd7a 189
mareikeFSL 0:65cab7b6fd7a 190 /*****************************************************************WRITE REGISTER***/
mareikeFSL 0:65cab7b6fd7a 191 void write_register(char address, char reg, char write_data, bool if_print)
mareikeFSL 0:65cab7b6fd7a 192 {
mareikeFSL 0:65cab7b6fd7a 193 char data[2] = {reg, write_data};
mareikeFSL 0:65cab7b6fd7a 194
mareikeFSL 0:65cab7b6fd7a 195 i2c0.write(address, data, 2); //write I2C address, then register, then data
mareikeFSL 0:65cab7b6fd7a 196
mareikeFSL 0:65cab7b6fd7a 197 } //end write_register()
mareikeFSL 0:65cab7b6fd7a 198
mareikeFSL 0:65cab7b6fd7a 199 /***********************************************************************INIT_ACC***/
mareikeFSL 0:65cab7b6fd7a 200 void init_acc(void)
mareikeFSL 0:65cab7b6fd7a 201 {
mareikeFSL 0:65cab7b6fd7a 202 write_register(ADDRESS, CTRL_REG1, 0x00, false); //standby
mareikeFSL 0:65cab7b6fd7a 203 write_register(ADDRESS, CTRL_REG1, 0x01, false); //enable
mareikeFSL 0:65cab7b6fd7a 204 char success = read_register(ADDRESS, WHO_AM_I, false);
mareikeFSL 0:65cab7b6fd7a 205
mareikeFSL 0:65cab7b6fd7a 206 } //end init_acc()
mareikeFSL 0:65cab7b6fd7a 207
mareikeFSL 0:65cab7b6fd7a 208 /***********************************************************************READ_ACC***/
mareikeFSL 0:65cab7b6fd7a 209 void read_acc(void)
mareikeFSL 0:65cab7b6fd7a 210 {
mareikeFSL 0:65cab7b6fd7a 211 X_MSB_data[0] = read_register(ADDRESS, OUT_X_MSB, false);
mareikeFSL 0:65cab7b6fd7a 212
mareikeFSL 0:65cab7b6fd7a 213 Y_MSB_data[0] = read_register(ADDRESS, OUT_Y_MSB, false);
mareikeFSL 0:65cab7b6fd7a 214
mareikeFSL 0:65cab7b6fd7a 215 } //end read_acc()
mareikeFSL 0:65cab7b6fd7a 216
mareikeFSL 0:65cab7b6fd7a 217 /*************************************************************CONVERT ACC TO PWM***/
mareikeFSL 0:65cab7b6fd7a 218 char convert_acc_to_pwm(char input, char axis)
mareikeFSL 0:65cab7b6fd7a 219 {
mareikeFSL 0:65cab7b6fd7a 220 char send;
mareikeFSL 0:65cab7b6fd7a 221
mareikeFSL 0:65cab7b6fd7a 222 if(input <= BL_0_max) //- - - - - - - - - - - - - - - - - - - - - - - - BL_0_max
mareikeFSL 0:65cab7b6fd7a 223 {
mareikeFSL 0:65cab7b6fd7a 224 if(axis)
mareikeFSL 0:65cab7b6fd7a 225 {
mareikeFSL 0:65cab7b6fd7a 226 if((prev_X == DC_80) && (input >= BL_0to80_lim))
mareikeFSL 0:65cab7b6fd7a 227 send = BOARD1_PWMA | DC_80;
mareikeFSL 0:65cab7b6fd7a 228 else
mareikeFSL 0:65cab7b6fd7a 229 {
mareikeFSL 0:65cab7b6fd7a 230 send = X_STOP; /*BOARD1_PWMA | DC_0;*/
mareikeFSL 0:65cab7b6fd7a 231 prev_X = DC_0;
mareikeFSL 0:65cab7b6fd7a 232 }
mareikeFSL 0:65cab7b6fd7a 233 }
mareikeFSL 0:65cab7b6fd7a 234 else
mareikeFSL 0:65cab7b6fd7a 235 {
mareikeFSL 0:65cab7b6fd7a 236 if((prev_Y == DC_80) && (input >= BL_0to80_lim))
mareikeFSL 0:65cab7b6fd7a 237 send = BOARD2_PWMB | DC_80;
mareikeFSL 0:65cab7b6fd7a 238 else
mareikeFSL 0:65cab7b6fd7a 239 {
mareikeFSL 0:65cab7b6fd7a 240 send = Y_STOP; /*BOARD2_PWMB | DC_0;*/
mareikeFSL 0:65cab7b6fd7a 241 prev_Y = DC_0;
mareikeFSL 0:65cab7b6fd7a 242 }
mareikeFSL 0:65cab7b6fd7a 243 }
mareikeFSL 0:65cab7b6fd7a 244 }
mareikeFSL 0:65cab7b6fd7a 245 else if(input <= BL_80_max) //- - - - - - - - - - - - - - - - - - - - -BL_80_max
mareikeFSL 0:65cab7b6fd7a 246 {
mareikeFSL 0:65cab7b6fd7a 247 if(axis)
mareikeFSL 0:65cab7b6fd7a 248 {
mareikeFSL 0:65cab7b6fd7a 249 if((prev_X == DC_90) && (input >= BL_80to90_lim))
mareikeFSL 0:65cab7b6fd7a 250 send = BOARD1_PWMA | DC_90;
mareikeFSL 0:65cab7b6fd7a 251 else if((prev_X == DC_0) && input <= (BL_80to0_lim))
mareikeFSL 0:65cab7b6fd7a 252 send = X_STOP; /*BOARD1_PWMA | DC_0;*/
mareikeFSL 0:65cab7b6fd7a 253 else
mareikeFSL 0:65cab7b6fd7a 254 {
mareikeFSL 0:65cab7b6fd7a 255 send = BOARD1_PWMA | DC_80;
mareikeFSL 0:65cab7b6fd7a 256 prev_X = DC_80;
mareikeFSL 0:65cab7b6fd7a 257 }
mareikeFSL 0:65cab7b6fd7a 258 }
mareikeFSL 0:65cab7b6fd7a 259 else
mareikeFSL 0:65cab7b6fd7a 260 {
mareikeFSL 0:65cab7b6fd7a 261 if((prev_Y == DC_90) && (input >= BL_80to90_lim))
mareikeFSL 0:65cab7b6fd7a 262 send = BOARD2_PWMB | DC_90;
mareikeFSL 0:65cab7b6fd7a 263 else if((prev_Y == DC_0) && input <= (BL_80to0_lim))
mareikeFSL 0:65cab7b6fd7a 264 send = Y_STOP; /*BOARD2_PWMB | DC_0;*/
mareikeFSL 0:65cab7b6fd7a 265 else
mareikeFSL 0:65cab7b6fd7a 266 {
mareikeFSL 0:65cab7b6fd7a 267 send = BOARD2_PWMB | DC_80;
mareikeFSL 0:65cab7b6fd7a 268 prev_Y = DC_80;
mareikeFSL 0:65cab7b6fd7a 269 }
mareikeFSL 0:65cab7b6fd7a 270 }
mareikeFSL 0:65cab7b6fd7a 271 }
mareikeFSL 0:65cab7b6fd7a 272 else if(input <= BL_90_max) //- - - - - - - - - - - - - - - - - - - - -BL_90_max
mareikeFSL 0:65cab7b6fd7a 273 {
mareikeFSL 0:65cab7b6fd7a 274 if(axis)
mareikeFSL 0:65cab7b6fd7a 275 {
mareikeFSL 0:65cab7b6fd7a 276 if((prev_X == DC_100) && (input >= BL_90to100_lim))
mareikeFSL 0:65cab7b6fd7a 277 send = BOARD1_PWMA | DC_100;
mareikeFSL 0:65cab7b6fd7a 278 else if((prev_X == DC_80) && input <= (BL_90to80_lim))
mareikeFSL 0:65cab7b6fd7a 279 send = BOARD1_PWMA | DC_80;
mareikeFSL 0:65cab7b6fd7a 280 else
mareikeFSL 0:65cab7b6fd7a 281 {
mareikeFSL 0:65cab7b6fd7a 282 send = BOARD1_PWMA | DC_90;
mareikeFSL 0:65cab7b6fd7a 283 prev_X = DC_90;
mareikeFSL 0:65cab7b6fd7a 284 }
mareikeFSL 0:65cab7b6fd7a 285 }
mareikeFSL 0:65cab7b6fd7a 286 else
mareikeFSL 0:65cab7b6fd7a 287 {
mareikeFSL 0:65cab7b6fd7a 288 if((prev_Y == DC_100) && (input >= BL_90to100_lim))
mareikeFSL 0:65cab7b6fd7a 289 send = BOARD2_PWMB | DC_100;
mareikeFSL 0:65cab7b6fd7a 290 else if((prev_Y == DC_80) && input <= (BL_90to80_lim))
mareikeFSL 0:65cab7b6fd7a 291 send = BOARD2_PWMB | DC_80;
mareikeFSL 0:65cab7b6fd7a 292 else
mareikeFSL 0:65cab7b6fd7a 293 {
mareikeFSL 0:65cab7b6fd7a 294 send = BOARD2_PWMB | DC_90;
mareikeFSL 0:65cab7b6fd7a 295 prev_Y = DC_90;
mareikeFSL 0:65cab7b6fd7a 296 }
mareikeFSL 0:65cab7b6fd7a 297 }
mareikeFSL 0:65cab7b6fd7a 298 }
mareikeFSL 0:65cab7b6fd7a 299 else if(input <= BL_100_max) //- - - - - - - - - - - - - - - - - - - -BL_100_max
mareikeFSL 0:65cab7b6fd7a 300 {
mareikeFSL 0:65cab7b6fd7a 301 if(axis)
mareikeFSL 0:65cab7b6fd7a 302 {
mareikeFSL 0:65cab7b6fd7a 303 if((prev_X == DC_90) && input <= (BL_100to90_lim))
mareikeFSL 0:65cab7b6fd7a 304 send = BOARD1_PWMA | DC_90;
mareikeFSL 0:65cab7b6fd7a 305 else
mareikeFSL 0:65cab7b6fd7a 306 {
mareikeFSL 0:65cab7b6fd7a 307 send = BOARD1_PWMA | DC_100;
mareikeFSL 0:65cab7b6fd7a 308 prev_X = DC_100;
mareikeFSL 0:65cab7b6fd7a 309 }
mareikeFSL 0:65cab7b6fd7a 310 }
mareikeFSL 0:65cab7b6fd7a 311 else
mareikeFSL 0:65cab7b6fd7a 312 {
mareikeFSL 0:65cab7b6fd7a 313 if((prev_Y == DC_90) && input <= (BL_100to90_lim))
mareikeFSL 0:65cab7b6fd7a 314 send = BOARD2_PWMB | DC_90;
mareikeFSL 0:65cab7b6fd7a 315 else
mareikeFSL 0:65cab7b6fd7a 316 {
mareikeFSL 0:65cab7b6fd7a 317 send = BOARD2_PWMB | DC_100;
mareikeFSL 0:65cab7b6fd7a 318 prev_Y = DC_100;
mareikeFSL 0:65cab7b6fd7a 319 }
mareikeFSL 0:65cab7b6fd7a 320 }
mareikeFSL 0:65cab7b6fd7a 321 }
mareikeFSL 0:65cab7b6fd7a 322 else if(input <= FR_100_max) //- - - - - - - - - - - - - - - - - - - -FR_100_max
mareikeFSL 0:65cab7b6fd7a 323 {
mareikeFSL 0:65cab7b6fd7a 324 if(axis)
mareikeFSL 0:65cab7b6fd7a 325 {
mareikeFSL 0:65cab7b6fd7a 326 if((prev_X == DC_90) && input >= (FR_100to90_lim))
mareikeFSL 0:65cab7b6fd7a 327 send = BOARD1_PWMB | DC_90;
mareikeFSL 0:65cab7b6fd7a 328 else
mareikeFSL 0:65cab7b6fd7a 329 {
mareikeFSL 0:65cab7b6fd7a 330 send = BOARD1_PWMB | DC_100;
mareikeFSL 0:65cab7b6fd7a 331 prev_X = DC_100;
mareikeFSL 0:65cab7b6fd7a 332 }
mareikeFSL 0:65cab7b6fd7a 333 }
mareikeFSL 0:65cab7b6fd7a 334 else
mareikeFSL 0:65cab7b6fd7a 335 {
mareikeFSL 0:65cab7b6fd7a 336 if((prev_Y == DC_90) && input >= (FR_100to90_lim))
mareikeFSL 0:65cab7b6fd7a 337 send = BOARD2_PWMA | DC_90;
mareikeFSL 0:65cab7b6fd7a 338 else
mareikeFSL 0:65cab7b6fd7a 339 {
mareikeFSL 0:65cab7b6fd7a 340 send = BOARD2_PWMA | DC_100;
mareikeFSL 0:65cab7b6fd7a 341 prev_Y = DC_100;
mareikeFSL 0:65cab7b6fd7a 342 }
mareikeFSL 0:65cab7b6fd7a 343 }
mareikeFSL 0:65cab7b6fd7a 344 }
mareikeFSL 0:65cab7b6fd7a 345 else if(input <= FR_90_max) //- - - - - - - - - - - - - - - - - - - - -FR_90_max
mareikeFSL 0:65cab7b6fd7a 346 {
mareikeFSL 0:65cab7b6fd7a 347 if(axis)
mareikeFSL 0:65cab7b6fd7a 348 {
mareikeFSL 0:65cab7b6fd7a 349 if((prev_X == DC_80) && (input >= FR_90to80_lim))
mareikeFSL 0:65cab7b6fd7a 350 send = BOARD1_PWMB | DC_80;
mareikeFSL 0:65cab7b6fd7a 351 else if((prev_X == DC_100) && input <= (FR_100to90_lim))
mareikeFSL 0:65cab7b6fd7a 352 send = BOARD1_PWMB | DC_100;
mareikeFSL 0:65cab7b6fd7a 353 else
mareikeFSL 0:65cab7b6fd7a 354 {
mareikeFSL 0:65cab7b6fd7a 355 send = BOARD1_PWMB | DC_90;
mareikeFSL 0:65cab7b6fd7a 356 prev_X = DC_90;
mareikeFSL 0:65cab7b6fd7a 357 }
mareikeFSL 0:65cab7b6fd7a 358 }
mareikeFSL 0:65cab7b6fd7a 359 else
mareikeFSL 0:65cab7b6fd7a 360 {
mareikeFSL 0:65cab7b6fd7a 361 if((prev_Y == DC_80) && (input >= FR_90to80_lim))
mareikeFSL 0:65cab7b6fd7a 362 send = BOARD2_PWMA | DC_80;
mareikeFSL 0:65cab7b6fd7a 363 else if((prev_Y == DC_100) && input <= (FR_100to90_lim))
mareikeFSL 0:65cab7b6fd7a 364 send = BOARD2_PWMA | DC_100;
mareikeFSL 0:65cab7b6fd7a 365 else
mareikeFSL 0:65cab7b6fd7a 366 {
mareikeFSL 0:65cab7b6fd7a 367 send = BOARD2_PWMA | DC_90;
mareikeFSL 0:65cab7b6fd7a 368 prev_Y = DC_90;
mareikeFSL 0:65cab7b6fd7a 369 }
mareikeFSL 0:65cab7b6fd7a 370 }
mareikeFSL 0:65cab7b6fd7a 371 }
mareikeFSL 0:65cab7b6fd7a 372 else if(input <= FR_80_max) //- - - - - - - - - - - - - - - - - - - - -FR_80_max
mareikeFSL 0:65cab7b6fd7a 373 {
mareikeFSL 0:65cab7b6fd7a 374 if(axis)
mareikeFSL 0:65cab7b6fd7a 375 {
mareikeFSL 0:65cab7b6fd7a 376 if((prev_X == DC_0) && (input >= FR_80to0_lim))
mareikeFSL 0:65cab7b6fd7a 377 send = X_STOP; /*BOARD1_PWMB | DC_0;*/
mareikeFSL 0:65cab7b6fd7a 378 else if((prev_X == DC_90) && input <= (FR_80to90_lim))
mareikeFSL 0:65cab7b6fd7a 379 send = BOARD1_PWMB | DC_90;
mareikeFSL 0:65cab7b6fd7a 380 else
mareikeFSL 0:65cab7b6fd7a 381 {
mareikeFSL 0:65cab7b6fd7a 382 send = BOARD1_PWMB | DC_80;
mareikeFSL 0:65cab7b6fd7a 383 prev_X = DC_80;
mareikeFSL 0:65cab7b6fd7a 384 }
mareikeFSL 0:65cab7b6fd7a 385 }
mareikeFSL 0:65cab7b6fd7a 386 else
mareikeFSL 0:65cab7b6fd7a 387 {
mareikeFSL 0:65cab7b6fd7a 388 if((prev_Y == DC_0) && (input >= FR_80to0_lim))
mareikeFSL 0:65cab7b6fd7a 389 send = Y_STOP; /*BOARD2_PWMA | DC_0;*/
mareikeFSL 0:65cab7b6fd7a 390 else if((prev_Y == DC_90) && input <= (FR_80to90_lim))
mareikeFSL 0:65cab7b6fd7a 391 send = BOARD2_PWMA | DC_90;
mareikeFSL 0:65cab7b6fd7a 392 else
mareikeFSL 0:65cab7b6fd7a 393 {
mareikeFSL 0:65cab7b6fd7a 394 send = BOARD2_PWMA | DC_80;
mareikeFSL 0:65cab7b6fd7a 395 prev_Y = DC_80;
mareikeFSL 0:65cab7b6fd7a 396 }
mareikeFSL 0:65cab7b6fd7a 397 }
mareikeFSL 0:65cab7b6fd7a 398 }
mareikeFSL 0:65cab7b6fd7a 399 else /*if(input <= FR_0_max)*/ //- - - - - - - - - - - - - - - - - - - -FR_0_max
mareikeFSL 0:65cab7b6fd7a 400 {
mareikeFSL 0:65cab7b6fd7a 401 if(axis)
mareikeFSL 0:65cab7b6fd7a 402 {
mareikeFSL 0:65cab7b6fd7a 403 if((prev_X == DC_80) && input <= (FR_0to80_lim))
mareikeFSL 0:65cab7b6fd7a 404 send = BOARD1_PWMB | DC_80;
mareikeFSL 0:65cab7b6fd7a 405 else
mareikeFSL 0:65cab7b6fd7a 406 {
mareikeFSL 0:65cab7b6fd7a 407 send = X_STOP; /*BOARD1_PWMB | DC_0;*/
mareikeFSL 0:65cab7b6fd7a 408 prev_X = DC_0;
mareikeFSL 0:65cab7b6fd7a 409 }
mareikeFSL 0:65cab7b6fd7a 410 }
mareikeFSL 0:65cab7b6fd7a 411 else
mareikeFSL 0:65cab7b6fd7a 412 {
mareikeFSL 0:65cab7b6fd7a 413 if((prev_Y == DC_80) && input <= (FR_0to80_lim))
mareikeFSL 0:65cab7b6fd7a 414 send = BOARD2_PWMA | DC_80;
mareikeFSL 0:65cab7b6fd7a 415 else
mareikeFSL 0:65cab7b6fd7a 416 {
mareikeFSL 0:65cab7b6fd7a 417 send = Y_STOP; /*BOARD2_PWMA | DC_0;*/
mareikeFSL 0:65cab7b6fd7a 418 prev_Y = DC_0;
mareikeFSL 0:65cab7b6fd7a 419 }
mareikeFSL 0:65cab7b6fd7a 420 }
mareikeFSL 0:65cab7b6fd7a 421 }
mareikeFSL 0:65cab7b6fd7a 422
mareikeFSL 0:65cab7b6fd7a 423 return send;
mareikeFSL 0:65cab7b6fd7a 424
mareikeFSL 0:65cab7b6fd7a 425 } //end convert_acc_to_pwm()
mareikeFSL 0:65cab7b6fd7a 426
mareikeFSL 0:65cab7b6fd7a 427
mareikeFSL 0:65cab7b6fd7a 428 /**********************************************************************************/
mareikeFSL 0:65cab7b6fd7a 429 /***************************************************************************MAIN***/
mareikeFSL 0:65cab7b6fd7a 430 /**********************************************************************************/
mareikeFSL 0:65cab7b6fd7a 431 int main(void)
mareikeFSL 0:65cab7b6fd7a 432 {
mareikeFSL 0:65cab7b6fd7a 433 red = 0;
mareikeFSL 0:65cab7b6fd7a 434 green = 0;
mareikeFSL 0:65cab7b6fd7a 435 blue = 0;
mareikeFSL 0:65cab7b6fd7a 436
mareikeFSL 0:65cab7b6fd7a 437 init_i2c0();
mareikeFSL 0:65cab7b6fd7a 438 init_acc();
mareikeFSL 0:65cab7b6fd7a 439 init_eth(); //initialize the Ethernet connection
mareikeFSL 0:65cab7b6fd7a 440
mareikeFSL 0:65cab7b6fd7a 441 red = 0; //client = red
mareikeFSL 0:65cab7b6fd7a 442 green = 1;
mareikeFSL 0:65cab7b6fd7a 443 blue = 1;
mareikeFSL 0:65cab7b6fd7a 444
mareikeFSL 0:65cab7b6fd7a 445 while(true)
mareikeFSL 0:65cab7b6fd7a 446 {
mareikeFSL 0:65cab7b6fd7a 447 read_acc();
mareikeFSL 0:65cab7b6fd7a 448
mareikeFSL 0:65cab7b6fd7a 449 X_MSB_data[0] = convert_acc_to_pwm(X_MSB_data[0], x_axis);
mareikeFSL 0:65cab7b6fd7a 450 Y_MSB_data[0] = convert_acc_to_pwm(Y_MSB_data[0], y_axis);
mareikeFSL 0:65cab7b6fd7a 451
mareikeFSL 0:65cab7b6fd7a 452 sock.sendTo(server, X_MSB_data, sizeof(X_MSB_data));
mareikeFSL 0:65cab7b6fd7a 453 sock.sendTo(server, Y_MSB_data, sizeof(Y_MSB_data));
mareikeFSL 0:65cab7b6fd7a 454 }
mareikeFSL 0:65cab7b6fd7a 455
mareikeFSL 0:65cab7b6fd7a 456 } //end main()