Albert-Jan Knevels / Mbed 2 deprecated CherryStone

Dependencies:   mbed

main.cpp

Committer:
EiJay
Date:
2014-07-30
Revision:
10:59582af3b94a
Parent:
9:190ec4ad9ac7
Child:
11:529d80511757

File content as of revision 10:59582af3b94a:

#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: {
                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);
                break;
            }
            case 7: {
                //read measurement
                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;
            }
        }
    }
}