Albert-Jan Knevels / Mbed 2 deprecated CherryStone

Dependencies:   mbed

Committer:
EiJay
Date:
Thu Sep 25 07:17:12 2014 +0000
Revision:
15:963d229367f6
Parent:
14:68623bf5de94
Child:
16:62feeff507d5
intermediate - preperation for release 3

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