Albert-Jan Knevels / Mbed 2 deprecated CherryStone

Dependencies:   mbed

main.cpp

Committer:
EiJay
Date:
2014-08-08
Revision:
11:529d80511757
Parent:
10:59582af3b94a
Child:
12:2fc3e1efa646

File content as of revision 11:529d80511757:

/*ÛÛÛÛÛÛÛÛÛ  ÛÛÛÛÛ                                               ÛÛÛÛÛÛÛÛÛ   ÛÛÛÛÛ
  ÛÛÛ°°°°°ÛÛÛ°°ÛÛÛ                                               ÛÛÛ°°°°°ÛÛÛ °°ÛÛÛ
 ÛÛÛ     °°°  °ÛÛÛÛÛÛÛ    ÛÛÛÛÛÛ  ÛÛÛÛÛÛÛÛ  ÛÛÛÛÛÛÛÛ  ÛÛÛÛÛ ÛÛÛÛ°ÛÛÛ    °°°  ÛÛÛÛÛÛÛ    ÛÛÛÛÛÛ  ÛÛÛÛÛÛÛÛ    ÛÛÛÛÛÛ
°ÛÛÛ          °ÛÛÛ°°ÛÛÛ  ÛÛÛ°°ÛÛÛ°°ÛÛÛ°°ÛÛÛ°°ÛÛÛ°°ÛÛÛ°°ÛÛÛ °ÛÛÛ °°ÛÛÛÛÛÛÛÛÛ °°°ÛÛÛ°    ÛÛÛ°°ÛÛÛ°°ÛÛÛ°°ÛÛÛ  ÛÛÛ°°ÛÛÛ
°ÛÛÛ          °ÛÛÛ °ÛÛÛ °ÛÛÛÛÛÛÛ  °ÛÛÛ °°°  °ÛÛÛ °°°  °ÛÛÛ °ÛÛÛ  °°°°°°°°ÛÛÛ  °ÛÛÛ    °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛÛÛÛÛ
°°ÛÛÛ     ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ°°°   °ÛÛÛ      °ÛÛÛ      °ÛÛÛ °ÛÛÛ  ÛÛÛ    °ÛÛÛ  °ÛÛÛ ÛÛÛ°ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ °ÛÛÛ°°°
 °°ÛÛÛÛÛÛÛÛÛ  ÛÛÛÛ ÛÛÛÛÛ°°ÛÛÛÛÛÛ  ÛÛÛÛÛ     ÛÛÛÛÛ     °°ÛÛÛÛÛÛÛ °°ÛÛÛÛÛÛÛÛÛ   °°ÛÛÛÛÛ °°ÛÛÛÛÛÛ  ÛÛÛÛ ÛÛÛÛÛ°°ÛÛÛÛÛÛ
  °°°°°°°°°  °°°° °°°°°  °°°°°°  °°°°°     °°°°°       °°°°°ÛÛÛ  °°°°°°°°°     °°°°°   °°°°°°  °°°° °°°°°  °°°°°°
                                                       ÛÛÛ °ÛÛÛ
                                                      °°ÛÛÛÛÛÛ
                                                      °°°°°°*/

#include "mbed.h"
#include "MLX90393.h"
int main()
{
    //mBed indicators
    DigitalOut myled(LED1);

    //PC-communication
    Serial pc (USBTX, USBRX);
    pc.baud(9600);
    char hostCommand;
    int hostData1;
    int hostData2;
    int hostData3;
    //Chip communication
    SPI spi(p5, p6, p7);
    spi.format(MLX90393::spi_bits,MLX90393::spi_mode);
    spi.frequency(1000000);
    MLX90393 sensor(p26,&spi);


    //variables
    char read_buffer[11];
    int content_buffer[63];
    unsigned int dataInteger0;
    unsigned int dataInteger1;
    unsigned int dataInteger2;
    //if you remove this line the program will fail
    //also make sure that you always send the status back to the host
    hostCommand = 0;
    while(1) {
        pc.scanf(" %i, %i, %i, %i", &hostCommand, &hostData1, &hostData2, &hostData3);
        switch(hostCommand) {
            case 0: {
                //read eeprom
                sensor.RR(read_buffer,hostData1,hostData2);
                printf("%i\n",(read_buffer[0]*65536)+(read_buffer[1]*256) + read_buffer[2]);
                break;
            }
            case 1: {
                //read eeprom full
                for (int i = 0; i<63; i++) {
                    sensor.RR(read_buffer,i,1);
                    content_buffer[i] = (read_buffer[0]*65536)+(read_buffer[1]*256) + read_buffer[2];
                }
                for (int i = 0; i<63; i++) {
                    printf("%i\n",content_buffer[i]);
                }
                break;
            }
            case 2: {
                //Write register
                sensor.WR(read_buffer,hostData1,hostData2,hostData3);
                break;
            }
            case 3: {
                break;
            }
            case 4: {
                //reset
                sensor.RT(read_buffer,hostData1);
                printf("%i\n",read_buffer[0]);
                break;
            }
            case 5: {
                //exit
                sensor.EX(read_buffer,1);
                printf("%i\n",read_buffer[0]);
                break;
            }
            case 6: {
                //single measurement
                sensor.SM(read_buffer,hostData1,hostData2);
                printf("%i\n",read_buffer[0]);
                break;
            }
            case 7: {
                //read measurement
                //incl i f(ddry is not set loop until it's set)
                
                sensor.RM(read_buffer,hostData1,hostData2);
                dataInteger0 = (read_buffer[0]<<24)+ (read_buffer[1]<<16)+(read_buffer[2]<<8)+read_buffer[3];
                dataInteger1 = (read_buffer[4]<<24)+ (read_buffer[5]<<16)+(read_buffer[6]<<8)+read_buffer[7];
                dataInteger2 = (read_buffer[8]<<16)+ (read_buffer[9]<<8)+read_buffer[10];
                printf("%u,%u,%u\n",dataInteger0,dataInteger1,dataInteger2);
                break;
            }
            case 8: {
                //burst
                sensor.SB(read_buffer,hostData1,hostData2);
                printf("%i\n",read_buffer[0]);
                break;
            }
            case 9: {
                //wake up on change
                sensor.SWOC(read_buffer,hostData1,1);
                printf("%i\n",read_buffer[0]);
                break;
            }
        }
    }
}