Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed vcdLogger vcdSignal
main.cpp@2:a13cde5c679c, 2016-05-28 (annotated)
- Committer:
- ketjow
- Date:
- Sat May 28 19:25:39 2016 +0000
- Revision:
- 2:a13cde5c679c
- Parent:
- 1:446154224f92
- Child:
- 3:6d5e16097db0
Added Sync signal.; Added libraries.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| ketjow | 0:9a59cffaafad | 1 | /*! |
| ketjow | 0:9a59cffaafad | 2 | @file main.cpp |
| ketjow | 0:9a59cffaafad | 3 | |
| ketjow | 0:9a59cffaafad | 4 | The main vcdMaker demo file. |
| ketjow | 0:9a59cffaafad | 5 | |
| ketjow | 0:9a59cffaafad | 6 | @par Full Description |
| ketjow | 0:9a59cffaafad | 7 | The vcdMaker demo. See http://vcdmaker.org for details. |
| ketjow | 0:9a59cffaafad | 8 | |
| ketjow | 0:9a59cffaafad | 9 | @if REVISION_HISTORY_INCLUDED |
| ketjow | 0:9a59cffaafad | 10 | @par Edit History |
| ketjow | 0:9a59cffaafad | 11 | @li [0] wojciech.rynczuk@wp.pl 20-JAN-2015 Initial file revision. |
| ketjow | 2:a13cde5c679c | 12 | @li [1] wojciech.rynczuk@wp.pl 22-APR-2016 Sync line added. |
| ketjow | 0:9a59cffaafad | 13 | @endif |
| ketjow | 0:9a59cffaafad | 14 | |
| ketjow | 0:9a59cffaafad | 15 | @ingroup vcdMakerDemo |
| ketjow | 0:9a59cffaafad | 16 | |
| ketjow | 2:a13cde5c679c | 17 | The MIT License (MIT) |
| ketjow | 2:a13cde5c679c | 18 | Copyright (c) 2016 Wojciech Rynczuk |
| ketjow | 0:9a59cffaafad | 19 | |
| ketjow | 0:9a59cffaafad | 20 | */ |
| ketjow | 0:9a59cffaafad | 21 | |
| ketjow | 0:9a59cffaafad | 22 | #include "mbed.h" |
| ketjow | 0:9a59cffaafad | 23 | #include "serialLogger.hpp" |
| ketjow | 0:9a59cffaafad | 24 | #include "button.hpp" |
| ketjow | 0:9a59cffaafad | 25 | #include "light.hpp" |
| ketjow | 0:9a59cffaafad | 26 | #include "slider.hpp" |
| ketjow | 0:9a59cffaafad | 27 | #include "magnetometer.hpp" |
| ketjow | 0:9a59cffaafad | 28 | #include "accelerometer.hpp" |
| ketjow | 0:9a59cffaafad | 29 | |
| ketjow | 0:9a59cffaafad | 30 | #define NO_OF_LINES ((uint32_t)75) |
| ketjow | 0:9a59cffaafad | 31 | #define NO_OF_CHARACTERS ((uint32_t)100) |
| ketjow | 0:9a59cffaafad | 32 | |
| ketjow | 0:9a59cffaafad | 33 | // Periodic timers |
| ketjow | 0:9a59cffaafad | 34 | Ticker timer1; |
| ketjow | 0:9a59cffaafad | 35 | Ticker timer2; |
| ketjow | 0:9a59cffaafad | 36 | |
| ketjow | 0:9a59cffaafad | 37 | // Button interrupts |
| ketjow | 0:9a59cffaafad | 38 | InterruptIn sw1_event(PTC3); |
| ketjow | 0:9a59cffaafad | 39 | InterruptIn sw3_event(PTC12); |
| ketjow | 2:a13cde5c679c | 40 | InterruptIn sync_event(PTA13); |
| ketjow | 0:9a59cffaafad | 41 | |
| ketjow | 0:9a59cffaafad | 42 | // Logger |
| ketjow | 0:9a59cffaafad | 43 | SerialLogger slogger(NO_OF_LINES,NO_OF_CHARACTERS); |
| ketjow | 0:9a59cffaafad | 44 | Logger* uniLogger; |
| ketjow | 0:9a59cffaafad | 45 | |
| ketjow | 0:9a59cffaafad | 46 | // Signals |
| ketjow | 2:a13cde5c679c | 47 | Button sync("FRDM.Sync",PTA13,slogger); |
| ketjow | 0:9a59cffaafad | 48 | Button sw1("FRDM.Buttons.SW1",PTC3,slogger); |
| ketjow | 0:9a59cffaafad | 49 | Button sw3("FRDM.Buttons.SW3",PTC12,slogger); |
| ketjow | 0:9a59cffaafad | 50 | Light light("FRDM.Sensors.Light",PTE22,slogger); |
| ketjow | 0:9a59cffaafad | 51 | Slider slider("FRDM.Sensors.Slider", slogger); |
| ketjow | 0:9a59cffaafad | 52 | Magnetometer magnetometer("FRDM.Sensors.Magnetometer.", slogger); |
| ketjow | 0:9a59cffaafad | 53 | Accelerometer accelerometer("FRDM.Sensors.Accelerometer.", slogger); |
| ketjow | 0:9a59cffaafad | 54 | |
| ketjow | 0:9a59cffaafad | 55 | // Time reference |
| ketjow | 0:9a59cffaafad | 56 | uint32_t time_ref = 0; |
| ketjow | 0:9a59cffaafad | 57 | |
| ketjow | 0:9a59cffaafad | 58 | void log_slider_accelerometer() |
| ketjow | 0:9a59cffaafad | 59 | { |
| ketjow | 0:9a59cffaafad | 60 | slider.PrintState(); |
| ketjow | 0:9a59cffaafad | 61 | accelerometer.PrintState(); |
| ketjow | 0:9a59cffaafad | 62 | } |
| ketjow | 0:9a59cffaafad | 63 | |
| ketjow | 0:9a59cffaafad | 64 | void log_light_magnetometer() |
| ketjow | 0:9a59cffaafad | 65 | { |
| ketjow | 0:9a59cffaafad | 66 | light.PrintState(); |
| ketjow | 0:9a59cffaafad | 67 | magnetometer.PrintState(); |
| ketjow | 0:9a59cffaafad | 68 | } |
| ketjow | 0:9a59cffaafad | 69 | |
| ketjow | 0:9a59cffaafad | 70 | void sw1_irq() |
| ketjow | 0:9a59cffaafad | 71 | { |
| ketjow | 0:9a59cffaafad | 72 | sw1.PrintState(); |
| ketjow | 0:9a59cffaafad | 73 | if (0 == sw1) |
| ketjow | 0:9a59cffaafad | 74 | { |
| ketjow | 0:9a59cffaafad | 75 | time_ref = uniLogger->GetTime(); |
| ketjow | 0:9a59cffaafad | 76 | } |
| ketjow | 0:9a59cffaafad | 77 | else |
| ketjow | 0:9a59cffaafad | 78 | { |
| ketjow | 0:9a59cffaafad | 79 | if ((uniLogger->GetTime() - time_ref) > 3000000) |
| ketjow | 0:9a59cffaafad | 80 | { |
| ketjow | 0:9a59cffaafad | 81 | if (uniLogger->IsRecording()) |
| ketjow | 0:9a59cffaafad | 82 | { |
| ketjow | 0:9a59cffaafad | 83 | uniLogger->StopRecording(); |
| ketjow | 0:9a59cffaafad | 84 | } |
| ketjow | 0:9a59cffaafad | 85 | else |
| ketjow | 0:9a59cffaafad | 86 | { |
| ketjow | 0:9a59cffaafad | 87 | uniLogger->StartRecording(); |
| ketjow | 0:9a59cffaafad | 88 | } |
| ketjow | 0:9a59cffaafad | 89 | } |
| ketjow | 0:9a59cffaafad | 90 | } |
| ketjow | 0:9a59cffaafad | 91 | } |
| ketjow | 0:9a59cffaafad | 92 | |
| ketjow | 0:9a59cffaafad | 93 | void sw3_irq() |
| ketjow | 0:9a59cffaafad | 94 | { |
| ketjow | 0:9a59cffaafad | 95 | sw3.PrintState(); |
| ketjow | 0:9a59cffaafad | 96 | } |
| ketjow | 0:9a59cffaafad | 97 | |
| ketjow | 2:a13cde5c679c | 98 | void sync_irq() |
| ketjow | 2:a13cde5c679c | 99 | { |
| ketjow | 2:a13cde5c679c | 100 | sync.PrintState(); |
| ketjow | 2:a13cde5c679c | 101 | } |
| ketjow | 2:a13cde5c679c | 102 | |
| ketjow | 0:9a59cffaafad | 103 | |
| ketjow | 0:9a59cffaafad | 104 | int main() |
| ketjow | 0:9a59cffaafad | 105 | { |
| ketjow | 0:9a59cffaafad | 106 | uniLogger = &slogger; |
| ketjow | 0:9a59cffaafad | 107 | |
| ketjow | 0:9a59cffaafad | 108 | sw1_event.rise(&sw1_irq); |
| ketjow | 0:9a59cffaafad | 109 | sw3_event.rise(&sw3_irq); |
| ketjow | 0:9a59cffaafad | 110 | sw1_event.fall(&sw1_irq); |
| ketjow | 0:9a59cffaafad | 111 | sw3_event.fall(&sw3_irq); |
| ketjow | 2:a13cde5c679c | 112 | sync_event.fall(&sync_irq); |
| ketjow | 2:a13cde5c679c | 113 | sync_event.rise(&sync_irq); |
| ketjow | 0:9a59cffaafad | 114 | timer1.attach_us(&log_light_magnetometer, 50000); |
| ketjow | 0:9a59cffaafad | 115 | timer2.attach_us(&log_slider_accelerometer, 40000); |
| ketjow | 0:9a59cffaafad | 116 | |
| ketjow | 0:9a59cffaafad | 117 | while (true) |
| ketjow | 0:9a59cffaafad | 118 | { |
| ketjow | 0:9a59cffaafad | 119 | uniLogger->Print(); |
| ketjow | 0:9a59cffaafad | 120 | }; |
| ketjow | 0:9a59cffaafad | 121 | } |