KL25 driver for Tango Control System

Dependencies:   mbed

Committer:
jskl
Date:
Thu Aug 28 07:50:06 2014 +0000
Revision:
2:9fe6f1e273b4
Parent:
0:5d27c333afa6
Fixed bugs in JSON format replies

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jskl 0:5d27c333afa6 1 /** @file main.cpp */
jskl 0:5d27c333afa6 2 /** @file main.h
jskl 0:5d27c333afa6 3 *
jskl 0:5d27c333afa6 4 * \brief
jskl 0:5d27c333afa6 5 * Program main features:
jskl 0:5d27c333afa6 6 * - enables communication via ethernet
jskl 0:5d27c333afa6 7 * - reads data from GY-80 sensor
jskl 0:5d27c333afa6 8 * - reads data from built-in touch sensor
jskl 0:5d27c333afa6 9 * - enables configuration of Wiz550io ethernet card via PC serial port
jskl 0:5d27c333afa6 10 *
jskl 0:5d27c333afa6 11 *
jskl 0:5d27c333afa6 12 * Peripherals connection details:
jskl 0:5d27c333afa6 13 *
jskl 0:5d27c333afa6 14 * WIZ550io pins are connected to:
jskl 0:5d27c333afa6 15 * - MOSI -> PTD2
jskl 0:5d27c333afa6 16 * - MISO -> PTD3
jskl 0:5d27c333afa6 17 * - SCLK -> PTD1
jskl 0:5d27c333afa6 18 * - CS -> PTD0
jskl 0:5d27c333afa6 19 * - RST -> PTA20
jskl 0:5d27c333afa6 20 * - VCC -> +3.3V
jskl 0:5d27c333afa6 21 * - GND -> GND
jskl 0:5d27c333afa6 22 *
jskl 0:5d27c333afa6 23 * IMU GY-80 pins:
jskl 0:5d27c333afa6 24 * - VCC -> +5V
jskl 0:5d27c333afa6 25 * - GND -> GND
jskl 0:5d27c333afa6 26 * - SDA -> PTC9
jskl 0:5d27c333afa6 27 * - SCL -> PTC8
jskl 0:5d27c333afa6 28 * - Connection to other I2C port may not work!!!
jskl 0:5d27c333afa6 29 *
jskl 0:5d27c333afa6 30 * Serial port communication is available via virtual OpenSDA COM port.
jskl 0:5d27c333afa6 31 * Detailed description about configuring OpenSDA available here: https://mbed.org/handbook/Windows-serial-configuration .
jskl 0:5d27c333afa6 32 *
jskl 0:5d27c333afa6 33 * Digital I/O ports pins and names:
jskl 0:5d27c333afa6 34 * - PTE20 -> P1
jskl 0:5d27c333afa6 35 * - PTE21 -> P2
jskl 0:5d27c333afa6 36 * - PTE22 -> P3
jskl 0:5d27c333afa6 37 * - PTE23 -> P4
jskl 0:5d27c333afa6 38 * - PTE29 -> P5
jskl 0:5d27c333afa6 39 * - PTE30 -> P6
jskl 0:5d27c333afa6 40 *
jskl 0:5d27c333afa6 41 * Ethernet commands:
jskl 0:5d27c333afa6 42 * Available commands:
jskl 0:5d27c333afa6 43 * - "read_sensor" - reads all sensor data - Reply form: "Sensor data: magnX, magnY, magnZ, accelX, accelY, accelZ, gyroX, gyroY, gyroZ, TSIposition"
jskl 0:5d27c333afa6 44 * - "check_ports" - reads ports P1 to P6 status - Reply form: "Port values: P1: %d, P2: %d, P3: %d, P4: %d, P5: %d, P6: %d"
jskl 0:5d27c333afa6 45 * Single port commands:
jskl 0:5d27c333afa6 46 * - "set_P$_i" - sets port as input - Reply: "P1 is now set as input"
jskl 0:5d27c333afa6 47 * - "set_P$_o" - sets port as output - Reply: "P1 is now set as output"
jskl 0:5d27c333afa6 48 * - "set_P$_1" - sets port as 1 (High) - Reply: "P1 value is now: %d "
jskl 0:5d27c333afa6 49 * - "set_P$_0" - sets port as 0 (low) - Reply: "P1 value is now: %d "
jskl 0:5d27c333afa6 50 * - "get_P$" - gets port value - Reply: "P1 value: %d"
jskl 0:5d27c333afa6 51 * - $ mark is port number from 1-6
jskl 0:5d27c333afa6 52 *
jskl 0:5d27c333afa6 53 * @author Mateusz Jaskula
jskl 0:5d27c333afa6 54 *
jskl 0:5d27c333afa6 55 */
jskl 0:5d27c333afa6 56
jskl 0:5d27c333afa6 57
jskl 0:5d27c333afa6 58
jskl 0:5d27c333afa6 59 // Set server communication port to 22
jskl 0:5d27c333afa6 60 #define ECHO_SERVER_PORT 22
jskl 0:5d27c333afa6 61
jskl 0:5d27c333afa6 62
jskl 0:5d27c333afa6 63 /// SPI communication with WIZ550io initialization
jskl 0:5d27c333afa6 64 SPI spi(PTD2, PTD3, PTD1); /// mosi, miso, sclk
jskl 0:5d27c333afa6 65
jskl 0:5d27c333afa6 66 /// Ethernet communication via WIZ550io
jskl 0:5d27c333afa6 67 WIZnetInterface eth(&spi, PTD0, PTA20); /// spi, cs, reset
jskl 0:5d27c333afa6 68
jskl 0:5d27c333afa6 69 /// Serial communication init
jskl 0:5d27c333afa6 70 Serial pc(USBTX,USBRX);
jskl 0:5d27c333afa6 71
jskl 0:5d27c333afa6 72 /// TSI Electrodes definition:
jskl 0:5d27c333afa6 73 #define ELEC0 9
jskl 0:5d27c333afa6 74 /// TSI Electrodes definition:
jskl 0:5d27c333afa6 75 #define ELEC1 10
jskl 0:5d27c333afa6 76
jskl 0:5d27c333afa6 77
jskl 0:5d27c333afa6 78 /// port P1 is connected to PTE20 pin
jskl 0:5d27c333afa6 79 DigitalInOut P1(PTE20);
jskl 0:5d27c333afa6 80 /// port P1 is connected to PTE21 pin
jskl 0:5d27c333afa6 81 DigitalInOut P2(PTE21);
jskl 0:5d27c333afa6 82 /// port P2 is connected to PTE22 pin
jskl 0:5d27c333afa6 83 DigitalInOut P3(PTE22);
jskl 0:5d27c333afa6 84 /// port P3 is connected to PTE23 pin
jskl 0:5d27c333afa6 85 DigitalInOut P4(PTE23);
jskl 0:5d27c333afa6 86 /// port P4 is connected to PTE29 pin
jskl 0:5d27c333afa6 87 DigitalInOut P5(PTE29);
jskl 0:5d27c333afa6 88 /// port P5 is connected to PTE30 pin
jskl 0:5d27c333afa6 89 DigitalInOut P6(PTE30);
jskl 0:5d27c333afa6 90
jskl 0:5d27c333afa6 91
jskl 0:5d27c333afa6 92 /// Defines use of DHCP protocol or Static IP Configuration
jskl 0:5d27c333afa6 93 bool USE_DHCP = true;
jskl 0:5d27c333afa6 94
jskl 0:5d27c333afa6 95 // Static IP setting. Using MAC stored in WIZ550io
jskl 0:5d27c333afa6 96 char IP_Addr[16] = "192.168.133.015"; /// IP
jskl 0:5d27c333afa6 97 char IP_Subnet[16] = "255.255.255.000"; /// Subnet Mask
jskl 0:5d27c333afa6 98 char IP_Gateway[16] = "192.168.133.001"; /// Gateway
jskl 0:5d27c333afa6 99
jskl 0:5d27c333afa6 100 /// MAC Adress global variable
jskl 0:5d27c333afa6 101 uint8_t mac[6];
jskl 0:5d27c333afa6 102
jskl 0:5d27c333afa6 103 /// GY80 IMU sensor Object
jskl 0:5d27c333afa6 104 GY80 sensor;
jskl 0:5d27c333afa6 105
jskl 0:5d27c333afa6 106 // GY80 Data is being hold here
jskl 0:5d27c333afa6 107 float magn[3]; /// Current magnitude
jskl 0:5d27c333afa6 108 float accel[3]; /// Current acceleration
jskl 0:5d27c333afa6 109 float gyro[3]; /// current gyroscope
jskl 0:5d27c333afa6 110
jskl 0:5d27c333afa6 111 /// TSI Slider object:
jskl 0:5d27c333afa6 112 TSIAnalogSlider tsi(ELEC0, ELEC1, 100);
jskl 0:5d27c333afa6 113
jskl 0:5d27c333afa6 114 /// TSI Slider position:
jskl 0:5d27c333afa6 115 float TSI_pos;
jskl 0:5d27c333afa6 116
jskl 0:5d27c333afa6 117 /// Ticker generates time based interrups to read data from sensors in 10ms intervals.
jskl 0:5d27c333afa6 118 Ticker tick1;
jskl 0:5d27c333afa6 119
jskl 0:5d27c333afa6 120
jskl 0:5d27c333afa6 121 //Functions declaration:
jskl 0:5d27c333afa6 122 // Initializes eth communication with MAC, IP, Subnet Mask asd Gateway
jskl 0:5d27c333afa6 123 int init_eth();
jskl 0:5d27c333afa6 124 // Handles ethernet communication
jskl 0:5d27c333afa6 125 void eth_comm();
jskl 0:5d27c333afa6 126 // Reads data from sensor with 1ms freq
jskl 0:5d27c333afa6 127 void read_data();
jskl 0:5d27c333afa6 128 // Reads commands and takes action
jskl 0:5d27c333afa6 129 void comm_handler(char* command);
jskl 0:5d27c333afa6 130 // Enables configuration mode
jskl 0:5d27c333afa6 131 void SerialInterHandler();
jskl 0:5d27c333afa6 132 // 5 sec serial menu with info how to enter configuration mode
jskl 0:5d27c333afa6 133 void menu_prop();