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@0:9a59cffaafad, 2016-02-12 (annotated)
- Committer:
- ketjow
- Date:
- Fri Feb 12 21:38:04 2016 +0000
- Revision:
- 0:9a59cffaafad
- Child:
- 1:446154224f92
vcdMaker demo
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 | 0:9a59cffaafad | 12 | @endif |
| ketjow | 0:9a59cffaafad | 13 | |
| ketjow | 0:9a59cffaafad | 14 | @ingroup vcdMakerDemo |
| ketjow | 0:9a59cffaafad | 15 | |
| ketjow | 0:9a59cffaafad | 16 | @par Copyright (c) MMXV Wojciech Rynczuk |
| ketjow | 0:9a59cffaafad | 17 | |
| ketjow | 0:9a59cffaafad | 18 | Permission is hereby granted, free of charge, to any person obtaining a |
| ketjow | 0:9a59cffaafad | 19 | copy of this software and associated documentation files (the "Software"), |
| ketjow | 0:9a59cffaafad | 20 | to deal in the Software without restriction, including without limitation |
| ketjow | 0:9a59cffaafad | 21 | the rights to use, copy, modify, merge, publish, distribute, sublicense, |
| ketjow | 0:9a59cffaafad | 22 | and/or sell copies of the Software, and to permit persons to whom the |
| ketjow | 0:9a59cffaafad | 23 | Software is furnished to do so, subject to the following conditions: |
| ketjow | 0:9a59cffaafad | 24 | |
| ketjow | 0:9a59cffaafad | 25 | The above copyright notice and this permission notice shall be included |
| ketjow | 0:9a59cffaafad | 26 | in all copies or substantial portions of the Software. |
| ketjow | 0:9a59cffaafad | 27 | |
| ketjow | 0:9a59cffaafad | 28 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
| ketjow | 0:9a59cffaafad | 29 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| ketjow | 0:9a59cffaafad | 30 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
| ketjow | 0:9a59cffaafad | 31 | THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
| ketjow | 0:9a59cffaafad | 32 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
| ketjow | 0:9a59cffaafad | 33 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS |
| ketjow | 0:9a59cffaafad | 34 | IN THE SOFTWARE. |
| ketjow | 0:9a59cffaafad | 35 | |
| ketjow | 0:9a59cffaafad | 36 | */ |
| ketjow | 0:9a59cffaafad | 37 | |
| ketjow | 0:9a59cffaafad | 38 | |
| ketjow | 0:9a59cffaafad | 39 | #include <stdint.h> |
| ketjow | 0:9a59cffaafad | 40 | |
| ketjow | 0:9a59cffaafad | 41 | #include "mbed.h" |
| ketjow | 0:9a59cffaafad | 42 | #include "serialLogger.hpp" |
| ketjow | 0:9a59cffaafad | 43 | #include "button.hpp" |
| ketjow | 0:9a59cffaafad | 44 | #include "light.hpp" |
| ketjow | 0:9a59cffaafad | 45 | #include "slider.hpp" |
| ketjow | 0:9a59cffaafad | 46 | #include "magnetometer.hpp" |
| ketjow | 0:9a59cffaafad | 47 | #include "accelerometer.hpp" |
| ketjow | 0:9a59cffaafad | 48 | |
| ketjow | 0:9a59cffaafad | 49 | #define NO_OF_LINES ((uint32_t)75) |
| ketjow | 0:9a59cffaafad | 50 | #define NO_OF_CHARACTERS ((uint32_t)100) |
| ketjow | 0:9a59cffaafad | 51 | |
| ketjow | 0:9a59cffaafad | 52 | // Periodic timers |
| ketjow | 0:9a59cffaafad | 53 | Ticker timer1; |
| ketjow | 0:9a59cffaafad | 54 | Ticker timer2; |
| ketjow | 0:9a59cffaafad | 55 | |
| ketjow | 0:9a59cffaafad | 56 | // Button interrupts |
| ketjow | 0:9a59cffaafad | 57 | InterruptIn sw1_event(PTC3); |
| ketjow | 0:9a59cffaafad | 58 | InterruptIn sw3_event(PTC12); |
| ketjow | 0:9a59cffaafad | 59 | |
| ketjow | 0:9a59cffaafad | 60 | // Logger |
| ketjow | 0:9a59cffaafad | 61 | SerialLogger slogger(NO_OF_LINES,NO_OF_CHARACTERS); |
| ketjow | 0:9a59cffaafad | 62 | Logger* uniLogger; |
| ketjow | 0:9a59cffaafad | 63 | |
| ketjow | 0:9a59cffaafad | 64 | // Signals |
| ketjow | 0:9a59cffaafad | 65 | Button sw1("FRDM.Buttons.SW1",PTC3,slogger); |
| ketjow | 0:9a59cffaafad | 66 | Button sw3("FRDM.Buttons.SW3",PTC12,slogger); |
| ketjow | 0:9a59cffaafad | 67 | Light light("FRDM.Sensors.Light",PTE22,slogger); |
| ketjow | 0:9a59cffaafad | 68 | Slider slider("FRDM.Sensors.Slider", slogger); |
| ketjow | 0:9a59cffaafad | 69 | Magnetometer magnetometer("FRDM.Sensors.Magnetometer.", slogger); |
| ketjow | 0:9a59cffaafad | 70 | Accelerometer accelerometer("FRDM.Sensors.Accelerometer.", slogger); |
| ketjow | 0:9a59cffaafad | 71 | |
| ketjow | 0:9a59cffaafad | 72 | // Time reference |
| ketjow | 0:9a59cffaafad | 73 | uint32_t time_ref = 0; |
| ketjow | 0:9a59cffaafad | 74 | |
| ketjow | 0:9a59cffaafad | 75 | void log_slider_accelerometer() |
| ketjow | 0:9a59cffaafad | 76 | { |
| ketjow | 0:9a59cffaafad | 77 | slider.PrintState(); |
| ketjow | 0:9a59cffaafad | 78 | accelerometer.PrintState(); |
| ketjow | 0:9a59cffaafad | 79 | } |
| ketjow | 0:9a59cffaafad | 80 | |
| ketjow | 0:9a59cffaafad | 81 | void log_light_magnetometer() |
| ketjow | 0:9a59cffaafad | 82 | { |
| ketjow | 0:9a59cffaafad | 83 | light.PrintState(); |
| ketjow | 0:9a59cffaafad | 84 | magnetometer.PrintState(); |
| ketjow | 0:9a59cffaafad | 85 | } |
| ketjow | 0:9a59cffaafad | 86 | |
| ketjow | 0:9a59cffaafad | 87 | void sw1_irq() |
| ketjow | 0:9a59cffaafad | 88 | { |
| ketjow | 0:9a59cffaafad | 89 | sw1.PrintState(); |
| ketjow | 0:9a59cffaafad | 90 | if (0 == sw1) |
| ketjow | 0:9a59cffaafad | 91 | { |
| ketjow | 0:9a59cffaafad | 92 | time_ref = uniLogger->GetTime(); |
| ketjow | 0:9a59cffaafad | 93 | } |
| ketjow | 0:9a59cffaafad | 94 | else |
| ketjow | 0:9a59cffaafad | 95 | { |
| ketjow | 0:9a59cffaafad | 96 | if ((uniLogger->GetTime() - time_ref) > 3000000) |
| ketjow | 0:9a59cffaafad | 97 | { |
| ketjow | 0:9a59cffaafad | 98 | if (uniLogger->IsRecording()) |
| ketjow | 0:9a59cffaafad | 99 | { |
| ketjow | 0:9a59cffaafad | 100 | uniLogger->StopRecording(); |
| ketjow | 0:9a59cffaafad | 101 | } |
| ketjow | 0:9a59cffaafad | 102 | else |
| ketjow | 0:9a59cffaafad | 103 | { |
| ketjow | 0:9a59cffaafad | 104 | uniLogger->StartRecording(); |
| ketjow | 0:9a59cffaafad | 105 | } |
| ketjow | 0:9a59cffaafad | 106 | } |
| ketjow | 0:9a59cffaafad | 107 | } |
| ketjow | 0:9a59cffaafad | 108 | } |
| ketjow | 0:9a59cffaafad | 109 | |
| ketjow | 0:9a59cffaafad | 110 | void sw3_irq() |
| ketjow | 0:9a59cffaafad | 111 | { |
| ketjow | 0:9a59cffaafad | 112 | sw3.PrintState(); |
| ketjow | 0:9a59cffaafad | 113 | } |
| ketjow | 0:9a59cffaafad | 114 | |
| ketjow | 0:9a59cffaafad | 115 | |
| ketjow | 0:9a59cffaafad | 116 | int main() |
| ketjow | 0:9a59cffaafad | 117 | { |
| ketjow | 0:9a59cffaafad | 118 | uniLogger = &slogger; |
| ketjow | 0:9a59cffaafad | 119 | |
| ketjow | 0:9a59cffaafad | 120 | sw1_event.rise(&sw1_irq); |
| ketjow | 0:9a59cffaafad | 121 | sw3_event.rise(&sw3_irq); |
| ketjow | 0:9a59cffaafad | 122 | sw1_event.fall(&sw1_irq); |
| ketjow | 0:9a59cffaafad | 123 | sw3_event.fall(&sw3_irq); |
| ketjow | 0:9a59cffaafad | 124 | timer1.attach_us(&log_light_magnetometer, 50000); |
| ketjow | 0:9a59cffaafad | 125 | timer2.attach_us(&log_slider_accelerometer, 40000); |
| ketjow | 0:9a59cffaafad | 126 | |
| ketjow | 0:9a59cffaafad | 127 | while (true) |
| ketjow | 0:9a59cffaafad | 128 | { |
| ketjow | 0:9a59cffaafad | 129 | uniLogger->Print(); |
| ketjow | 0:9a59cffaafad | 130 | }; |
| ketjow | 0:9a59cffaafad | 131 | } |