Albert-Jan Knevels / Mbed 2 deprecated CherryStone

Dependencies:   mbed

Committer:
EiJay
Date:
Wed Oct 29 13:18:21 2014 +0000
Revision:
17:0dee2d58c357
Parent:
16:62feeff507d5
Child:
18:1fddc3e5fffe
Updated for I2C

Who changed what in which revision?

UserRevisionLine numberNew contents of line
EiJay 11:529d80511757 1 /*ÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛ
EiJay 11:529d80511757 2 ÛÛÛ°°°°°ÛÛÛ°°ÛÛÛ ÛÛÛ°°°°°ÛÛÛ °°ÛÛÛ
EiJay 11:529d80511757 3 ÛÛÛ °°° °ÛÛÛÛÛÛÛ ÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛ ÛÛÛÛÛ ÛÛÛÛ°ÛÛÛ °°° ÛÛÛÛÛÛÛ ÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛ
EiJay 11:529d80511757 4 °ÛÛÛ °ÛÛÛ°°ÛÛÛ ÛÛÛ°°ÛÛÛ°°ÛÛÛ°°ÛÛÛ°°ÛÛÛ°°ÛÛÛ°°ÛÛÛ °ÛÛÛ °°ÛÛÛÛÛÛÛÛÛ °°°ÛÛÛ° ÛÛÛ°°ÛÛÛ°°ÛÛÛ°°ÛÛÛ ÛÛÛ°°ÛÛÛ
EiJay 11:529d80511757 5 °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛÛÛÛÛ °ÛÛÛ °°° °ÛÛÛ °°° °ÛÛÛ °ÛÛÛ °°°°°°°°ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛÛÛÛÛ
EiJay 11:529d80511757 6 °°ÛÛÛ ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ°°° °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ ÛÛÛ °ÛÛÛ °ÛÛÛ ÛÛÛ°ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ°°°
EiJay 11:529d80511757 7 °°ÛÛÛÛÛÛÛÛÛ ÛÛÛÛ ÛÛÛÛÛ°°ÛÛÛÛÛÛ ÛÛÛÛÛ ÛÛÛÛÛ °°ÛÛÛÛÛÛÛ °°ÛÛÛÛÛÛÛÛÛ °°ÛÛÛÛÛ °°ÛÛÛÛÛÛ ÛÛÛÛ ÛÛÛÛÛ°°ÛÛÛÛÛÛ
EiJay 11:529d80511757 8 °°°°°°°°° °°°° °°°°° °°°°°° °°°°° °°°°° °°°°°ÛÛÛ °°°°°°°°° °°°°° °°°°°° °°°° °°°°° °°°°°°
EiJay 11:529d80511757 9 ÛÛÛ °ÛÛÛ
EiJay 11:529d80511757 10 °°ÛÛÛÛÛÛ
EiJay 16:62feeff507d5 11
EiJay 11:529d80511757 12 °°°°°°*/
EiJay 16:62feeff507d5 13
EiJay 15:963d229367f6 14 //TODO:
EiJay 15:963d229367f6 15 /*
EiJay 15:963d229367f6 16 1. include I am alive - to check if connecting w/ the mbed was succesfull
EiJay 15:963d229367f6 17 2. include a watch dog system for unconditional errors --> auto reset
EiJay 15:963d229367f6 18 */
EiJay 16:62feeff507d5 19
EiJay 16:62feeff507d5 20
EiJay 0:7bb832ad2fb8 21 #include "mbed.h"
EiJay 0:7bb832ad2fb8 22 #include "MLX90393.h"
EiJay 0:7bb832ad2fb8 23 int main()
EiJay 0:7bb832ad2fb8 24 {
EiJay 5:92add1a06191 25 //mBed indicators
EiJay 17:0dee2d58c357 26 DigitalOut a1(p21);
EiJay 17:0dee2d58c357 27 DigitalOut a0(p22);
EiJay 5:92add1a06191 28
EiJay 5:92add1a06191 29 //PC-communication
EiJay 5:92add1a06191 30 Serial pc (USBTX, USBRX);
EiJay 5:92add1a06191 31 pc.baud(9600);
EiJay 17:0dee2d58c357 32
EiJay 17:0dee2d58c357 33 //variables
EiJay 17:0dee2d58c357 34 int hostData1,hostData2,hostData3, content_buffer[63];
EiJay 17:0dee2d58c357 35 unsigned int dataInteger0, dataInteger1, dataInteger2;
EiJay 17:0dee2d58c357 36 char read_buffer[11], hostCommand;
EiJay 17:0dee2d58c357 37
EiJay 17:0dee2d58c357 38 //Chip communication (SPI)
EiJay 17:0dee2d58c357 39 /*SPI spi(p5, p6, p7);
EiJay 5:92add1a06191 40 spi.format(MLX90393::spi_bits,MLX90393::spi_mode);
EiJay 13:226b63f2b5e4 41 spi.frequency(100000000);
EiJay 16:62feeff507d5 42 MLX90393 sensor(p8,&spi);
EiJay 17:0dee2d58c357 43 */
EiJay 17:0dee2d58c357 44
EiJay 17:0dee2d58c357 45 //Chip communication (I2C)
EiJay 17:0dee2d58c357 46 a1=0;
EiJay 17:0dee2d58c357 47 a0=0;
EiJay 17:0dee2d58c357 48 I2C i2c(p9, p10);
EiJay 17:0dee2d58c357 49 i2c.frequency(75000);
EiJay 17:0dee2d58c357 50 MLX90393 sensor(MLX90393::i2c_address,&i2c);
EiJay 0:7bb832ad2fb8 51
EiJay 17:0dee2d58c357 52
EiJay 6:c09f0df4123c 53 //if you remove this line the program will fail
EiJay 7:7a91079a5ddd 54 //also make sure that you always send the status back to the host
EiJay 17:0dee2d58c357 55
EiJay 6:c09f0df4123c 56 hostCommand = 0;
EiJay 5:92add1a06191 57 while(1) {
EiJay 5:92add1a06191 58 pc.scanf(" %i, %i, %i, %i", &hostCommand, &hostData1, &hostData2, &hostData3);
EiJay 5:92add1a06191 59 switch(hostCommand) {
EiJay 5:92add1a06191 60 case 0: {
EiJay 14:68623bf5de94 61 //read eeprom (implemented CS)
EiJay 10:59582af3b94a 62 sensor.RR(read_buffer,hostData1,hostData2);
EiJay 10:59582af3b94a 63 printf("%i\n",(read_buffer[0]*65536)+(read_buffer[1]*256) + read_buffer[2]);
EiJay 5:92add1a06191 64 break;
EiJay 5:92add1a06191 65 }
EiJay 5:92add1a06191 66 case 1: {
EiJay 14:68623bf5de94 67 //read eeprom full (implemeted CS)
EiJay 9:190ec4ad9ac7 68 for (int i = 0; i<63; i++) {
EiJay 17:0dee2d58c357 69 sensor.RR(read_buffer,i,hostData1);
EiJay 9:190ec4ad9ac7 70 content_buffer[i] = (read_buffer[0]*65536)+(read_buffer[1]*256) + read_buffer[2];
EiJay 9:190ec4ad9ac7 71 }
EiJay 9:190ec4ad9ac7 72 for (int i = 0; i<63; i++) {
EiJay 10:59582af3b94a 73 printf("%i\n",content_buffer[i]);
EiJay 9:190ec4ad9ac7 74 }
EiJay 5:92add1a06191 75 break;
EiJay 5:92add1a06191 76 }
EiJay 5:92add1a06191 77 case 2: {
EiJay 10:59582af3b94a 78 //Write register
EiJay 10:59582af3b94a 79 sensor.WR(read_buffer,hostData1,hostData2,hostData3);
EiJay 5:92add1a06191 80 break;
EiJay 5:92add1a06191 81 }
EiJay 5:92add1a06191 82 case 3: {
EiJay 5:92add1a06191 83 break;
EiJay 5:92add1a06191 84 }
EiJay 5:92add1a06191 85 case 4: {
EiJay 14:68623bf5de94 86 //reset (Implemeted)
EiJay 11:529d80511757 87 sensor.RT(read_buffer,hostData1);
EiJay 11:529d80511757 88 printf("%i\n",read_buffer[0]);
EiJay 5:92add1a06191 89 break;
EiJay 5:92add1a06191 90 }
EiJay 5:92add1a06191 91 case 5: {
EiJay 14:68623bf5de94 92 //exit (implemented in cs)
EiJay 14:68623bf5de94 93 sensor.EX(read_buffer,hostData1);
EiJay 8:7f7c9353bc05 94 printf("%i\n",read_buffer[0]);
EiJay 5:92add1a06191 95 break;
EiJay 5:92add1a06191 96 }
EiJay 5:92add1a06191 97 case 6: {
EiJay 14:68623bf5de94 98 //single measurement (implemented)
EiJay 10:59582af3b94a 99 sensor.SM(read_buffer,hostData1,hostData2);
EiJay 11:529d80511757 100 printf("%i\n",read_buffer[0]);
EiJay 5:92add1a06191 101 break;
EiJay 5:92add1a06191 102 }
EiJay 5:92add1a06191 103 case 7: {
EiJay 14:68623bf5de94 104 //read measurement (implemented cs)
EiJay 10:59582af3b94a 105 sensor.RM(read_buffer,hostData1,hostData2);
EiJay 10:59582af3b94a 106 dataInteger0 = (read_buffer[0]<<24)+ (read_buffer[1]<<16)+(read_buffer[2]<<8)+read_buffer[3];
EiJay 10:59582af3b94a 107 dataInteger1 = (read_buffer[4]<<24)+ (read_buffer[5]<<16)+(read_buffer[6]<<8)+read_buffer[7];
EiJay 10:59582af3b94a 108 dataInteger2 = (read_buffer[8]<<16)+ (read_buffer[9]<<8)+read_buffer[10];
EiJay 10:59582af3b94a 109 printf("%u,%u,%u\n",dataInteger0,dataInteger1,dataInteger2);
EiJay 5:92add1a06191 110 break;
EiJay 5:92add1a06191 111 }
EiJay 5:92add1a06191 112 case 8: {
EiJay 14:68623bf5de94 113 //burst (implemented CS)
EiJay 10:59582af3b94a 114 sensor.SB(read_buffer,hostData1,hostData2);
EiJay 8:7f7c9353bc05 115 printf("%i\n",read_buffer[0]);
EiJay 5:92add1a06191 116 break;
EiJay 5:92add1a06191 117 }
EiJay 5:92add1a06191 118 case 9: {
EiJay 14:68623bf5de94 119 //wake up on change (Implemented in cs)
EiJay 17:0dee2d58c357 120 sensor.SWOC(read_buffer,hostData1,hostData2);
EiJay 8:7f7c9353bc05 121 printf("%i\n",read_buffer[0]);
EiJay 5:92add1a06191 122 break;
EiJay 5:92add1a06191 123 }
EiJay 13:226b63f2b5e4 124 case 10: {
EiJay 13:226b63f2b5e4 125 //memory recall
EiJay 13:226b63f2b5e4 126 sensor.HR(read_buffer,hostData1);
EiJay 13:226b63f2b5e4 127 printf("%i\n",read_buffer[0]);
EiJay 13:226b63f2b5e4 128 break;
EiJay 13:226b63f2b5e4 129 }
EiJay 13:226b63f2b5e4 130 case 11: {
EiJay 13:226b63f2b5e4 131 //memory store
EiJay 13:226b63f2b5e4 132 sensor.HS(read_buffer,hostData1);
EiJay 13:226b63f2b5e4 133 printf("%i\n",read_buffer[0]);
EiJay 13:226b63f2b5e4 134 break;
EiJay 13:226b63f2b5e4 135 }
EiJay 13:226b63f2b5e4 136
EiJay 4:dd534b0b54dd 137 }
EiJay 0:7bb832ad2fb8 138 }
EiJay 0:7bb832ad2fb8 139 }