Marco Mayer / Mbed OS Queue
Committer:
demayer
Date:
Wed Apr 22 11:50:00 2020 +0000
Revision:
2:c7897a3f5f11
Parent:
1:b36bbc1c6d27
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
demayer 0:6bf0743ece18 1 #include "mbed.h"
demayer 0:6bf0743ece18 2 #include "mbed_events.h"
demayer 0:6bf0743ece18 3 #include "MPU9250.h"
demayer 0:6bf0743ece18 4
demayer 1:b36bbc1c6d27 5 #define SAMPLE_TIME 100
demayer 1:b36bbc1c6d27 6
demayer 0:6bf0743ece18 7 DigitalOut led1(LED1);
demayer 0:6bf0743ece18 8 InterruptIn sw(USER_BUTTON);
demayer 0:6bf0743ece18 9
demayer 2:c7897a3f5f11 10
demayer 2:c7897a3f5f11 11 // Sensor Interrupts
demayer 2:c7897a3f5f11 12 InterruptIn button1(D2);
demayer 2:c7897a3f5f11 13 InterruptIn button2(D3);
demayer 2:c7897a3f5f11 14 InterruptIn button3(D4);
demayer 2:c7897a3f5f11 15 InterruptIn button4(D5);
demayer 2:c7897a3f5f11 16 InterruptIn ir1(D6);
demayer 2:c7897a3f5f11 17
demayer 2:c7897a3f5f11 18
demayer 0:6bf0743ece18 19 Thread eventthread;
demayer 0:6bf0743ece18 20 Thread imuthread;
demayer 0:6bf0743ece18 21 bool read_imu_isrunning;
demayer 0:6bf0743ece18 22
demayer 0:6bf0743ece18 23 // Pin defines
demayer 0:6bf0743ece18 24 DigitalOut led_green(D4);
demayer 0:6bf0743ece18 25
demayer 2:c7897a3f5f11 26 Serial* pc;
demayer 2:c7897a3f5f11 27 MPU9250* mpu9250;
demayer 2:c7897a3f5f11 28
demayer 0:6bf0743ece18 29
demayer 2:c7897a3f5f11 30 void button1Event()
demayer 2:c7897a3f5f11 31 {
demayer 2:c7897a3f5f11 32 pc->printf("Button 1\n\r");
demayer 2:c7897a3f5f11 33 }
demayer 2:c7897a3f5f11 34
demayer 2:c7897a3f5f11 35 void button2Event()
demayer 2:c7897a3f5f11 36 {
demayer 2:c7897a3f5f11 37 pc->printf("Button 2\n\r");
demayer 2:c7897a3f5f11 38 }
demayer 2:c7897a3f5f11 39
demayer 2:c7897a3f5f11 40 void button3Event()
demayer 0:6bf0743ece18 41 {
demayer 2:c7897a3f5f11 42 pc->printf("Button 3\n\r");
demayer 2:c7897a3f5f11 43 }
demayer 2:c7897a3f5f11 44
demayer 2:c7897a3f5f11 45 void button4Event()
demayer 2:c7897a3f5f11 46 {
demayer 2:c7897a3f5f11 47 pc->printf("Button 4\n\r");
demayer 2:c7897a3f5f11 48 }
demayer 2:c7897a3f5f11 49
demayer 2:c7897a3f5f11 50 void ir1Event()
demayer 2:c7897a3f5f11 51 {
demayer 2:c7897a3f5f11 52 pc->printf("IR-1\n\r");
demayer 2:c7897a3f5f11 53 mpu9250->vx_old = 10.5;
demayer 2:c7897a3f5f11 54 }
demayer 2:c7897a3f5f11 55
demayer 2:c7897a3f5f11 56 void readIMUThread()
demayer 2:c7897a3f5f11 57 {
demayer 2:c7897a3f5f11 58 pc->printf("in IMU-Thread\n\r");
demayer 2:c7897a3f5f11 59 while(1) {
demayer 2:c7897a3f5f11 60 pc->printf("vx: %f\n\r", mpu9250->getVBuffer());
demayer 2:c7897a3f5f11 61 wait(0.4);
demayer 0:6bf0743ece18 62 }
demayer 0:6bf0743ece18 63 }
demayer 0:6bf0743ece18 64
demayer 0:6bf0743ece18 65
demayer 0:6bf0743ece18 66
demayer 0:6bf0743ece18 67 int main()
demayer 0:6bf0743ece18 68 {
demayer 2:c7897a3f5f11 69 pc = new Serial(USBTX, USBRX);
demayer 2:c7897a3f5f11 70 pc->baud(9600);
demayer 2:c7897a3f5f11 71
demayer 2:c7897a3f5f11 72 // Setup of IMU (Constructor calls setup-function)
demayer 2:c7897a3f5f11 73 mpu9250 = new MPU9250(pc);
demayer 2:c7897a3f5f11 74
demayer 2:c7897a3f5f11 75 imuthread.start(readIMUThread);
demayer 0:6bf0743ece18 76
demayer 0:6bf0743ece18 77 // Request the shared queue
demayer 0:6bf0743ece18 78 EventQueue *queue = mbed_event_queue();
demayer 2:c7897a3f5f11 79 pc->printf("Starting in context %p\r\n", Thread::gettid());
demayer 2:c7897a3f5f11 80
demayer 0:6bf0743ece18 81
demayer 2:c7897a3f5f11 82 button1.rise(queue->event(button1Event));
demayer 2:c7897a3f5f11 83 button2.rise(queue->event(button2Event));
demayer 2:c7897a3f5f11 84 button3.rise(queue->event(button3Event));
demayer 2:c7897a3f5f11 85 button4.rise(queue->event(button4Event));
demayer 2:c7897a3f5f11 86 ir1.rise(queue->event(ir1Event));
demayer 2:c7897a3f5f11 87
demayer 0:6bf0743ece18 88 // Setup complete, so we now dispatch the shared queue from main
demayer 2:c7897a3f5f11 89 queue->dispatch();
demayer 0:6bf0743ece18 90 }