Dining Philosophers Problem (DPP) example for the QP active object framework. Demonstrates: event-driven programming, hierarchical state machines in C++, modeling and graphical state machine design, code generation, preemptive multitasking, software tracing, power saving mode, direct event posting, publish-subscribe. More information available in the [[/users/QL/notebook|Quantum Leaps Notebook pages]]. See also [[http://www.state-machine.com|state-machine.com]].
Revision 2:2e62e514f323, committed 2011-02-16
- Comitter:
- QL
- Date:
- Wed Feb 16 17:12:38 2011 +0000
- Parent:
- 1:c7711e751cf6
- Child:
- 3:81ceb3127876
- Commit message:
- added slight delay to the idle loop to see the LED4 intensity
Changed in this revision
bsp.cpp | Show annotated file Show diff for this revision Revisions of this file |
qp_config.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/bsp.cpp Mon Feb 14 01:24:01 2011 +0000 +++ b/bsp.cpp Wed Feb 16 17:12:38 2011 +0000 @@ -1,7 +1,7 @@ ////////////////////////////////////////////////////////////////////////////// // Product: BSP for "Dining Philosophers Problem" example, QK kernel // Last Updated for Version: 4.1.06 -// Date of the Last Update: Feb 10, 2011 +// Date of the Last Update: Feb 16, 2011 // // Q u a n t u m L e a P s // --------------------------- @@ -131,7 +131,11 @@ void QK::onIdle(void) { QF_INT_LOCK(dummy); - LED_PORT->FIOSET = LED4_BIT; // turn the LED4 on + LED_PORT->FIOSET = LED4_BIT; // turn the LED4 on + __NOP(); // delay a bit to see some light intensity + __NOP(); + __NOP(); + __NOP(); LED_PORT->FIOCLR = LED4_BIT; // turn the LED4 off QF_INT_UNLOCK(dummy); @@ -145,9 +149,15 @@ } } #else - // put the CPU and peripherals to the low-power mode - // you might need to customize the clock management for your application, - // see the datasheet for your particular Cortex-M3 MCU. + // Put the CPU and peripherals to the low-power mode. You might need to + // customize the clock management for your application, see the datasheet + // for your particular Cortex-M3 MCU. + // + // Specifially for the mbed board, see the articles: + // * "Power Management" http://mbed.org/cookbook/Power-Management; and + // * "Interface Powerdown" at + // http://mbed.org/users/simon/notebook/interface-powerdown/ + // __WFI(); #endif }
--- a/qp_config.h Mon Feb 14 01:24:01 2011 +0000 +++ b/qp_config.h Wed Feb 16 17:12:38 2011 +0000 @@ -1,40 +1,40 @@ -////////////////////////////////////////////////////////////////////////////// -// Product: QP-mbed configuration file -// Last Updated for Version: 4.1.06 -// Date of the Last Update: Feb 10, 2011 -// -// Q u a n t u m L e a P s -// --------------------------- -// innovating embedded systems -// -// Copyright (C) 2002-2011 Quantum Leaps, LLC. All rights reserved. -// -// This software may be distributed and modified under the terms of the GNU -// General Public License version 2 (GPL) as published by the Free Software -// Foundation and appearing in the file GPL.TXT included in the packaging of -// this file. Please note that GPL Section 2[b] requires that all works based -// on this software must also be made publicly available under the terms of -// the GPL ("Copyleft"). -// -// Alternatively, this software may be distributed and modified under the -// terms of Quantum Leaps commercial licenses, which expressly supersede -// the GPL and are specifically designed for licensees interested in -// retaining the proprietary status of their code. -// -// Contact information: -// Quantum Leaps Web site: http://www.quantum-leaps.com -// e-mail: info@quantum-leaps.com -////////////////////////////////////////////////////////////////////////////// -#ifndef qp_config_h -#define qp_config_h - -// enable the Q-SPY software tracing instrumentation -#define Q_SPY - -// enable preemptive QK kernel -#define QK_PREEMPTIVE - -// The maximum number of active objects in the application (could be up to 63) -#define QF_MAX_ACTIVE 16 - -#endif // qp_config_h +////////////////////////////////////////////////////////////////////////////// +// Product: QP-mbed configuration file +// Last Updated for Version: 4.1.06 +// Date of the Last Update: Feb 10, 2011 +// +// Q u a n t u m L e a P s +// --------------------------- +// innovating embedded systems +// +// Copyright (C) 2002-2011 Quantum Leaps, LLC. All rights reserved. +// +// This software may be distributed and modified under the terms of the GNU +// General Public License version 2 (GPL) as published by the Free Software +// Foundation and appearing in the file GPL.TXT included in the packaging of +// this file. Please note that GPL Section 2[b] requires that all works based +// on this software must also be made publicly available under the terms of +// the GPL ("Copyleft"). +// +// Alternatively, this software may be distributed and modified under the +// terms of Quantum Leaps commercial licenses, which expressly supersede +// the GPL and are specifically designed for licensees interested in +// retaining the proprietary status of their code. +// +// Contact information: +// Quantum Leaps Web site: http://www.quantum-leaps.com +// e-mail: info@quantum-leaps.com +////////////////////////////////////////////////////////////////////////////// +#ifndef qp_config_h +#define qp_config_h + +// enable the Q-SPY software tracing instrumentation +#define Q_SPY + +// enable preemptive QK kernel +#define QK_PREEMPTIVE + +// The maximum number of active objects in the application (could be up to 63) +#define QF_MAX_ACTIVE 16 + +#endif // qp_config_h