Wojciech Rynczuk / Mbed 2 deprecated vcdMaker_Demo

Dependencies:   mbed vcdLogger vcdSignal

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

Go to the documentation of this file.
00001 /*!
00002   @file main.cpp
00003 
00004   The main vcdMaker demo file.
00005 
00006   @par Full Description
00007   The vcdMaker demo. See http://vcdmaker.org for details.
00008 
00009   @if REVISION_HISTORY_INCLUDED
00010   @par Edit History
00011   @li [0]    wojciech.rynczuk@wp.pl    20-JAN-2015    Initial file revision.
00012   @li [1]    wojciech.rynczuk@wp.pl    22-APR-2016    Sync line added.
00013   @endif
00014 
00015   @ingroup vcdMakerDemo
00016 
00017   The MIT License (MIT)
00018   Copyright (c) 2016 Wojciech Rynczuk
00019 
00020 */
00021 
00022 #include "mbed.h"
00023 #include "serialLogger.hpp "
00024 #include "button.hpp "
00025 #include "light.hpp "
00026 #include "slider.hpp "
00027 #include "magnetometer.hpp "
00028 #include "accelerometer.hpp "
00029 #include "sync.hpp"
00030 
00031 #define NO_OF_LINES      ((uint32_t)75)
00032 #define NO_OF_CHARACTERS ((uint32_t)100)
00033 
00034 // Periodic timers
00035 Ticker timer1;
00036 Ticker timer2;
00037 
00038 // Button interrupts
00039 InterruptIn sw1_event(PTC3);
00040 InterruptIn sw3_event(PTC12);
00041 InterruptIn sync_event(PTA13);
00042 
00043 // Logger
00044 SerialLogger  slogger(NO_OF_LINES,NO_OF_CHARACTERS);
00045 Logger*       uniLogger;
00046 
00047 // Signals
00048 Sync          sync("FRDM.Sync",PTA13,slogger);
00049 Button        sw1("FRDM.Buttons.SW1",PTC3,slogger);
00050 Button        sw3("FRDM.Buttons.SW3",PTC12,slogger);
00051 Light         light("FRDM.Sensors.Light",PTE22,slogger);
00052 Slider        slider("FRDM.Sensors.Slider", slogger);
00053 Magnetometer  magnetometer("FRDM.Sensors.Magnetometer.", slogger);
00054 Accelerometer accelerometer("FRDM.Sensors.Accelerometer.", slogger);
00055 
00056 // Time reference
00057 uint32_t time_ref = 0;
00058 
00059 void log_slider_accelerometer()
00060 {
00061     slider.PrintState();
00062     accelerometer.PrintState();
00063 }
00064 
00065 void log_light_magnetometer()
00066 {
00067     light.PrintState();
00068     magnetometer.PrintState();
00069 }
00070 
00071 void sw1_irq()
00072 {
00073     sw1.PrintState();
00074     if (0 == sw1)
00075     {
00076         time_ref = uniLogger->GetTime();
00077     }
00078     else
00079     {
00080         if ((uniLogger->GetTime() - time_ref) > 3000000)
00081         {
00082             if (uniLogger->IsRecording())
00083             {
00084                 uniLogger->StopRecording();
00085             }
00086             else
00087             {
00088                 uniLogger->StartRecording();
00089             }
00090         }
00091     }
00092 }
00093 
00094 void sw3_irq()
00095 {
00096     sw3.PrintState();
00097 }
00098 
00099 void sync_irq()
00100 {
00101     sync.PrintState();
00102 }
00103 
00104 
00105 int main()
00106 {
00107     uniLogger = &slogger;
00108     
00109     sw1_event.rise(&sw1_irq);
00110     sw3_event.rise(&sw3_irq);
00111     sw1_event.fall(&sw1_irq);
00112     sw3_event.fall(&sw3_irq);
00113     sync_event.fall(&sync_irq);
00114     sync_event.rise(&sync_irq);
00115     timer1.attach_us(&log_light_magnetometer, 50000);
00116     timer2.attach_us(&log_slider_accelerometer, 40000);
00117     
00118     while (true)
00119     {        
00120         uniLogger->Print();
00121     };
00122 }