test

Dependencies:   USBDevice mbed

main.cpp

Committer:
fblanc
Date:
2014-06-06
Revision:
4:75077e05de3e
Parent:
3:7acf6d1a6b1e
Child:
5:832b59a73dec

File content as of revision 4:75077e05de3e:

#include "mbed.h"
#include "USBSerial.h"
//#define BAUD 460800
//#define BAUD 9600

#define __LPC1768
#if defined( __LPC1768)
//Serial pc(USBTX, USBRX);
USBSerial pc;
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);
AnalogIn adc_1(p16);
AnalogIn adc_2(p17);
#endif
#if defined( __KL25)
USBSerial pc;
DigitalOut led2(LED_GREEN);
DigitalOut led3(LED_RED);
DigitalOut led4(LED_BLUE);
AnalogIn adc_1(PTC1);
AnalogIn adc_2(PTC2);
#endif

uint16_t  T_hma_u16[2][2048];
uint16_t index_hma_write=0;

uint16_t index_hma_read=0;
bool t_write=0;
char str[256];
uint8_t start_str=0;
bool flag_write_USB=0;
Ticker flipperADC;

void flipADC()
{

    T_hma_u16[t_write][index_hma_write++]=adc_1.read_u16(); //read ADC
    T_hma_u16[t_write][index_hma_write++]=adc_2.read_u16(); //read ADC
    //T_hma_u16[t_write][index_hma_write++]=0x00FF;
  
    if(index_hma_write>2000) {
        flag_write_USB=1;
        t_write=!t_write; //toggel buffer
        index_hma_read=index_hma_write-2;
        index_hma_write=0;
    }

}

Ticker flipperUSB;
void flipUSB()
{

    flag_write_USB=1;

}

void pc_rx(void)
{

led4=1;
    for(; pc.readable()==true; ++start_str) {
        str[start_str]=pc.getc();
    }
//pc.printf("recv:%s",str);
    if( strncmp(str,"*IDN?",strlen("*IDN?"))==0 ) {
        //pc.printf("HMA\r");
        led3=1;
        pc.printf("HMA serial\r");
        start_str=0;
        for(int i=0; i<256; ++i) {
            str[i]='\0';

        }

    } else if( strncmp(str,"MEASure",strlen("MEASure"))==0 ) {
        for(int i=0; i<256; ++i) {
            str[i]='\0';

        }
        flipperADC.attach_us(&flipADC, 1000); //500us
 

    } else if( strncmp(str,"ABORt",strlen("ABORt"))==0 ) {
        for(int i=0; i<256; ++i) {
            str[i]='\0';

        }
        flipperADC.detach();
        t_write=0;
        index_hma_read=0;
        index_hma_write=0;

    }
    for(int i=0; i<start_str; ++i) {
        if(str[i]=='\r') {
            for(int j=0; j<256; ++j) {
                str[j]='\0';

            }
             start_str=0;
            
        }
       
    }


}

int main()
{
led2=0;
led3=0;
led4=0;
//    pc.baud(BAUD);
    pc.printf("HMA serial\r");
    for(int i=0; i<256; ++i) {
        str[i]='\0';

    }


    while(1) {
 
        if (pc.readable()) {
            pc_rx();
        }
        if(flag_write_USB==1) {
            flag_write_USB=0;


            pc.printf("%04d%c\r",index_hma_read,'\0'); //'\0'fin de chaine ASCII '\r' fin de transmission

            char* ptr=(char*)&T_hma_u16[!t_write][0];

            for(uint16_t i=0; i<index_hma_read; ++i) {
                pc.putc(*ptr++);
                pc.putc(*ptr++);
            }

        }



    }
}