This is the vcdMaker demo project. See http://vcdmaker.org for details. vcdMaker is supposed to help engineers to debug their applications and systems. It transforms text log files into the VCD format which can be easily displayed as a waveform.
Dependencies: mbed vcdLogger vcdSignal
main.cpp
- Committer:
- ketjow
- Date:
- 2016-12-07
- Revision:
- 3:6d5e16097db0
- Parent:
- 2:a13cde5c679c
File content as of revision 3:6d5e16097db0:
/*! @file main.cpp The main vcdMaker demo file. @par Full Description The vcdMaker demo. See http://vcdmaker.org for details. @if REVISION_HISTORY_INCLUDED @par Edit History @li [0] wojciech.rynczuk@wp.pl 20-JAN-2015 Initial file revision. @li [1] wojciech.rynczuk@wp.pl 22-APR-2016 Sync line added. @endif @ingroup vcdMakerDemo The MIT License (MIT) Copyright (c) 2016 Wojciech Rynczuk */ #include "mbed.h" #include "serialLogger.hpp" #include "button.hpp" #include "light.hpp" #include "slider.hpp" #include "magnetometer.hpp" #include "accelerometer.hpp" #include "sync.hpp" #define NO_OF_LINES ((uint32_t)75) #define NO_OF_CHARACTERS ((uint32_t)100) // Periodic timers Ticker timer1; Ticker timer2; // Button interrupts InterruptIn sw1_event(PTC3); InterruptIn sw3_event(PTC12); InterruptIn sync_event(PTA13); // Logger SerialLogger slogger(NO_OF_LINES,NO_OF_CHARACTERS); Logger* uniLogger; // Signals Sync sync("FRDM.Sync",PTA13,slogger); Button sw1("FRDM.Buttons.SW1",PTC3,slogger); Button sw3("FRDM.Buttons.SW3",PTC12,slogger); Light light("FRDM.Sensors.Light",PTE22,slogger); Slider slider("FRDM.Sensors.Slider", slogger); Magnetometer magnetometer("FRDM.Sensors.Magnetometer.", slogger); Accelerometer accelerometer("FRDM.Sensors.Accelerometer.", slogger); // Time reference uint32_t time_ref = 0; void log_slider_accelerometer() { slider.PrintState(); accelerometer.PrintState(); } void log_light_magnetometer() { light.PrintState(); magnetometer.PrintState(); } void sw1_irq() { sw1.PrintState(); if (0 == sw1) { time_ref = uniLogger->GetTime(); } else { if ((uniLogger->GetTime() - time_ref) > 3000000) { if (uniLogger->IsRecording()) { uniLogger->StopRecording(); } else { uniLogger->StartRecording(); } } } } void sw3_irq() { sw3.PrintState(); } void sync_irq() { sync.PrintState(); } int main() { uniLogger = &slogger; sw1_event.rise(&sw1_irq); sw3_event.rise(&sw3_irq); sw1_event.fall(&sw1_irq); sw3_event.fall(&sw3_irq); sync_event.fall(&sync_irq); sync_event.rise(&sync_irq); timer1.attach_us(&log_light_magnetometer, 50000); timer2.attach_us(&log_slider_accelerometer, 40000); while (true) { uniLogger->Print(); }; }