Wojciech Rynczuk / Mbed 2 deprecated vcdMaker_Demo

Dependencies:   mbed vcdLogger vcdSignal

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?

UserRevisionLine numberNew 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 }