Experimenting w/FreeRTOS
Dependencies: FreeRTOS mbed MMA7660 LM75B
main.cpp@3:9ec3ee7cf0bc, 2017-10-01 (annotated)
- Committer:
- tkatolrnmcu
- Date:
- Sun Oct 01 03:36:45 2017 +0000
- Revision:
- 3:9ec3ee7cf0bc
- Parent:
- 2:4e4fa763799a
Accidentally deleted return code variables in last commit, fixed now
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tkatolrnmcu | 0:ef389421b079 | 1 | #include "mbed.h" |
tkatolrnmcu | 0:ef389421b079 | 2 | #include "FreeRTOS.h" |
tkatolrnmcu | 0:ef389421b079 | 3 | #include "task.h" |
tkatolrnmcu | 1:1990d6e600c2 | 4 | #include "LM75B.h" |
tkatolrnmcu | 2:4e4fa763799a | 5 | #include "MMA7660.h" |
tkatolrnmcu | 0:ef389421b079 | 6 | |
tkatolrnmcu | 1:1990d6e600c2 | 7 | DigitalOut led1(LED1); |
tkatolrnmcu | 1:1990d6e600c2 | 8 | DigitalOut led2(LED2); |
tkatolrnmcu | 1:1990d6e600c2 | 9 | DigitalOut led3(LED3); |
tkatolrnmcu | 1:1990d6e600c2 | 10 | DigitalOut led4(LED4); |
tkatolrnmcu | 1:1990d6e600c2 | 11 | LM75B sensor(p28,p27); |
tkatolrnmcu | 2:4e4fa763799a | 12 | MMA7660 mma(p28,p27); |
tkatolrnmcu | 0:ef389421b079 | 13 | |
tkatolrnmcu | 2:4e4fa763799a | 14 | void vtemperature(void *pvParameters); |
tkatolrnmcu | 2:4e4fa763799a | 15 | void vshock(void *pvParameters); |
tkatolrnmcu | 0:ef389421b079 | 16 | |
tkatolrnmcu | 0:ef389421b079 | 17 | int main() { |
tkatolrnmcu | 1:1990d6e600c2 | 18 | |
tkatolrnmcu | 3:9ec3ee7cf0bc | 19 | portBASE_TYPE task1rc; |
tkatolrnmcu | 3:9ec3ee7cf0bc | 20 | portBASE_TYPE task2rc; |
tkatolrnmcu | 3:9ec3ee7cf0bc | 21 | |
tkatolrnmcu | 2:4e4fa763799a | 22 | // Sensor connection check |
tkatolrnmcu | 1:1990d6e600c2 | 23 | if (sensor.open()){ |
tkatolrnmcu | 2:4e4fa763799a | 24 | printf("LM75B temperature sensor detected.\n"); |
tkatolrnmcu | 1:1990d6e600c2 | 25 | } |
tkatolrnmcu | 1:1990d6e600c2 | 26 | else { |
tkatolrnmcu | 1:1990d6e600c2 | 27 | printf("LM75B sensor not detected!\n"); |
tkatolrnmcu | 2:4e4fa763799a | 28 | return 1; |
tkatolrnmcu | 1:1990d6e600c2 | 29 | } |
tkatolrnmcu | 1:1990d6e600c2 | 30 | |
tkatolrnmcu | 2:4e4fa763799a | 31 | if (mma.testConnection()){ |
tkatolrnmcu | 2:4e4fa763799a | 32 | printf("MMA7660 accelerometer sensor detected.\n"); |
tkatolrnmcu | 2:4e4fa763799a | 33 | } |
tkatolrnmcu | 2:4e4fa763799a | 34 | else { |
tkatolrnmcu | 2:4e4fa763799a | 35 | printf("MMA7660 sensor not detected!\n"); |
tkatolrnmcu | 2:4e4fa763799a | 36 | return 1; |
tkatolrnmcu | 2:4e4fa763799a | 37 | } |
tkatolrnmcu | 2:4e4fa763799a | 38 | printf("All sensors acounted for. Proceeding with program.\n"); |
tkatolrnmcu | 1:1990d6e600c2 | 39 | |
tkatolrnmcu | 2:4e4fa763799a | 40 | // Task 1 will read and print temperature data |
tkatolrnmcu | 2:4e4fa763799a | 41 | task1rc = xTaskCreate(vtemperature, "HELLO", 255, (void*)"TASK1", configMAX_PRIORITIES-2, NULL); |
tkatolrnmcu | 2:4e4fa763799a | 42 | |
tkatolrnmcu | 2:4e4fa763799a | 43 | // Task 2 will read accelerometer data |
tkatolrnmcu | 2:4e4fa763799a | 44 | task2rc = xTaskCreate(vshock, "BYE", 255, (void*)"TASK2", configMAX_PRIORITIES-1, NULL); |
tkatolrnmcu | 1:1990d6e600c2 | 45 | |
tkatolrnmcu | 1:1990d6e600c2 | 46 | vTaskStartScheduler(); |
tkatolrnmcu | 0:ef389421b079 | 47 | |
tkatolrnmcu | 1:1990d6e600c2 | 48 | for (;;){ |
tkatolrnmcu | 2:4e4fa763799a | 49 | /*If the tasks fail to initialize/run properly, led3 and led4 will |
tkatolrnmcu | 2:4e4fa763799a | 50 | toggle on/off to indicate the failure. */ |
tkatolrnmcu | 1:1990d6e600c2 | 51 | led3 = 1; |
tkatolrnmcu | 1:1990d6e600c2 | 52 | led4 = 1; |
tkatolrnmcu | 1:1990d6e600c2 | 53 | wait(0.5); |
tkatolrnmcu | 1:1990d6e600c2 | 54 | led3 = 0; |
tkatolrnmcu | 1:1990d6e600c2 | 55 | led4 = 0; |
tkatolrnmcu | 1:1990d6e600c2 | 56 | wait(0.5); |
tkatolrnmcu | 1:1990d6e600c2 | 57 | }; |
tkatolrnmcu | 2:4e4fa763799a | 58 | |
tkatolrnmcu | 0:ef389421b079 | 59 | } |
tkatolrnmcu | 0:ef389421b079 | 60 | |
tkatolrnmcu | 2:4e4fa763799a | 61 | void vtemperature(void *pvParameters) |
tkatolrnmcu | 0:ef389421b079 | 62 | { |
tkatolrnmcu | 1:1990d6e600c2 | 63 | char *ptr = 0; |
tkatolrnmcu | 2:4e4fa763799a | 64 | float tdata = 0.0; |
tkatolrnmcu | 1:1990d6e600c2 | 65 | ptr = (char *)pvParameters; |
tkatolrnmcu | 2:4e4fa763799a | 66 | int time = 0; |
tkatolrnmcu | 0:ef389421b079 | 67 | |
tkatolrnmcu | 0:ef389421b079 | 68 | for(;;) |
tkatolrnmcu | 0:ef389421b079 | 69 | { |
tkatolrnmcu | 2:4e4fa763799a | 70 | tdata = (float)sensor.temp(); |
tkatolrnmcu | 2:4e4fa763799a | 71 | printf("sample %i: %.3f c\n", time, tdata); |
tkatolrnmcu | 1:1990d6e600c2 | 72 | led1 = !led1; |
tkatolrnmcu | 2:4e4fa763799a | 73 | time++; |
tkatolrnmcu | 1:1990d6e600c2 | 74 | vTaskDelay(300); |
tkatolrnmcu | 0:ef389421b079 | 75 | } |
tkatolrnmcu | 0:ef389421b079 | 76 | } |
tkatolrnmcu | 0:ef389421b079 | 77 | |
tkatolrnmcu | 2:4e4fa763799a | 78 | void vshock(void *pvParameters) |
tkatolrnmcu | 0:ef389421b079 | 79 | { |
tkatolrnmcu | 1:1990d6e600c2 | 80 | char *ptr = 0; |
tkatolrnmcu | 2:4e4fa763799a | 81 | float accel_z = 0.0; |
tkatolrnmcu | 1:1990d6e600c2 | 82 | ptr = (char *)pvParameters; |
tkatolrnmcu | 2:4e4fa763799a | 83 | int time = 0; |
tkatolrnmcu | 0:ef389421b079 | 84 | |
tkatolrnmcu | 0:ef389421b079 | 85 | for(;;) |
tkatolrnmcu | 0:ef389421b079 | 86 | { |
tkatolrnmcu | 2:4e4fa763799a | 87 | accel_z = mma.z(); |
tkatolrnmcu | 2:4e4fa763799a | 88 | printf("sample %i: %.3f g\n", time, accel_z); |
tkatolrnmcu | 1:1990d6e600c2 | 89 | led2 = !led2; |
tkatolrnmcu | 2:4e4fa763799a | 90 | time++; |
tkatolrnmcu | 1:1990d6e600c2 | 91 | vTaskDelay(300); |
tkatolrnmcu | 0:ef389421b079 | 92 | } |
tkatolrnmcu | 0:ef389421b079 | 93 | } |