Albert-Jan Knevels / Mbed 2 deprecated CherryStone

Dependencies:   mbed

Committer:
EiJay
Date:
Wed Oct 29 12:03:57 2014 +0000
Revision:
16:62feeff507d5
Parent:
15:963d229367f6
Child:
17:0dee2d58c357
Working version (tested for SPI)

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