Looking up interrupts from MaxBotix Maxsonar MB73x0 ultrasonic gauge and writing data and timestamp to SD flash card. I'm using MB7380 with STM32F103C8T6 minimal board from Ali (it's perfect MCU board for small projects!).
Dependencies: SDFileSystem mbed
Revision 3:66b5c374745e, committed 2016-04-02
- Comitter:
- shtirlitz
- Date:
- Sat Apr 02 21:37:01 2016 +0000
- Parent:
- 2:a5ea1929e545
- Commit message:
- Excluded bullshit
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Thu Mar 17 22:32:39 2016 +0000 +++ b/main.cpp Sat Apr 02 21:37:01 2016 +0000 @@ -3,80 +3,61 @@ SDFileSystem sd(PA_7, PA_6, PA_5, PA_4, "sd"); //mosi, miso, sck, cs -Serial pc(PA_2, PA_3); // This is USB tx, rx -Serial sensor_uart(PA_9, PA_10); // This is USART2 tx, rx - -DigitalOut myled(PC_13); // This is USER LED -DigitalOut myled2(PB_11); // This is USER LED -DigitalIn Button(PB_12); // This is Blue-Button +Serial pc_uart(PA_2, PA_3); // This is USART1 tx, rx +Serial sensor_uart(PA_9, PA_10); // This is USART2 tx, rx -#define Pressed 0 -#define NotPressed 1 +DigitalOut led_read(PC_13); // This is reading LED indicator +DigitalOut led_write(PB_11); // This is writing LED indicator +DigitalIn button(PB_12); // This is STOP button -int USBByte='\0'; -int GaugeByte='\0'; -int n=0; -int readgauge = 0; Timer t; -char buf[32]; -char str[32]; -char str2[32]; +char buf[5]; +char reading_str[32]; +char writing_str[32]; uint8_t writeflag = 0; -long millis = 0; -void PC_INT() // USART2 used for Debug -{ - // Note: you need to actually read from the serial to clear the RX interrupt - pc.putc(pc.getc()); - myled = (myled)?(0):(1); -} - -void SENSOR_USART_INT() // SENSOR_USART +void SENSOR_USART_INT() // sensor uart interrupt { if (sensor_uart.getc() == 'R') { - myled = (myled)?(0):(1); - sprintf(str, "%d; %s;", t.read_ms(), sensor_uart.gets(buf, 5)); + led_read = 1; + sprintf(reading_str, "%d; %s;", t.read_ms(), sensor_uart.gets(buf, 5)); writeflag = 1; - //pc.printf("%s\r\n", str); } } int main() { - myled = 0; - - // SetUp the baud rate - pc.baud(115200); - sensor_uart.baud(9600); + pc_uart.baud(115200); //set baudrate of pc port + sensor_uart.baud(9600); //set baudrate of sensorport mkdir("/sd/ultrasonic", 0777); FILE *fp = fopen("/sd/ultrasonic/test.csv", "w"); if(fp == NULL) { - pc.printf("Could not open file for write\n"); + pc_uart.printf("Could not open file for write\n"); } fprintf(fp, "timestamp;value;\n"); //fclose(fp); - pc.printf("\n\r\n\r|||||START MAIN|||||\n\r"); + pc_uart.printf("\n\r\n\r|||||START_MAIN|||||\n\r"); t.start(); sensor_uart.attach(&SENSOR_USART_INT); - pc.attach(&PC_INT); while(1) { - if (Button) + if (button) fclose(fp); if (writeflag) { - myled2 = (myled2)?(0):(1); - memcpy(str2, str, 32); - fprintf(fp, "%s\n", str2); + led_write = 1; + memcpy(writing_str, reading_str, 32); + fprintf(fp, "%s\n", writing_str); writeflag = 0; - fprintf(pc, "%s\r\n", str2); - } - else - { - myled2 = (myled2)?(0):(1); + fprintf(pc_uart, "%s\r\n", writing_str); + } + else { + led_write = 1; wait (0.07); } + led_read = 0; + led_write = 0; } } \ No newline at end of file