![](/media/cache/profiles/8138ec4f8dbf9991f277b91dd462de7d.jpg.50x50_q85.png)
Example software for a Cyclic Executive
Dependencies: MCP23017 SDFileSystem WattBob_TextLCD mbed
Tasks.cpp@3:c611b9bb5770, 2016-02-17 (annotated)
- Committer:
- sk398
- Date:
- Wed Feb 17 10:22:50 2016 +0000
- Revision:
- 3:c611b9bb5770
- Parent:
- 2:22ebabd78084
- Child:
- 4:b85bc0d810e1
All 4 input processes constructed
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sk398 | 2:22ebabd78084 | 1 | /* ############################################################################### |
sk398 | 2:22ebabd78084 | 2 | # |
sk398 | 2:22ebabd78084 | 3 | # |
sk398 | 2:22ebabd78084 | 4 | # |
sk398 | 2:22ebabd78084 | 5 | # |
sk398 | 2:22ebabd78084 | 6 | # |
sk398 | 2:22ebabd78084 | 7 | # |
sk398 | 2:22ebabd78084 | 8 | # |
sk398 | 2:22ebabd78084 | 9 | # |
sk398 | 2:22ebabd78084 | 10 | # |
sk398 | 2:22ebabd78084 | 11 | # |
sk398 | 2:22ebabd78084 | 12 | # |
sk398 | 2:22ebabd78084 | 13 | # |
sk398 | 2:22ebabd78084 | 14 | # |
sk398 | 2:22ebabd78084 | 15 | # |
sk398 | 2:22ebabd78084 | 16 | # |
sk398 | 2:22ebabd78084 | 17 | ############################################################################### */ |
sk398 | 2:22ebabd78084 | 18 | |
sk398 | 1:221d677fe0d3 | 19 | #include "mbed.h" |
sk398 | 1:221d677fe0d3 | 20 | #include "Tasks.h" |
sk398 | 1:221d677fe0d3 | 21 | |
sk398 | 1:221d677fe0d3 | 22 | |
sk398 | 1:221d677fe0d3 | 23 | /* ==================================== Task 1 ==================================== */ |
sk398 | 1:221d677fe0d3 | 24 | Task1::Task1(PinName squareWaveInPin) |
sk398 | 1:221d677fe0d3 | 25 | { |
sk398 | 1:221d677fe0d3 | 26 | Timer Task1Timer; |
sk398 | 1:221d677fe0d3 | 27 | _squareWaveIn = new DigitalIn(squareWaveInPin); |
sk398 | 1:221d677fe0d3 | 28 | } |
sk398 | 1:221d677fe0d3 | 29 | |
sk398 | 1:221d677fe0d3 | 30 | int Task1::MeasureFreq() |
sk398 | 1:221d677fe0d3 | 31 | { |
sk398 | 3:c611b9bb5770 | 32 | return 0; |
sk398 | 1:221d677fe0d3 | 33 | } |
sk398 | 1:221d677fe0d3 | 34 | |
sk398 | 1:221d677fe0d3 | 35 | |
sk398 | 1:221d677fe0d3 | 36 | /* ==================================== Task 2 ==================================== */ |
sk398 | 1:221d677fe0d3 | 37 | Task2::Task2(PinName digitalInCheckPin) |
sk398 | 1:221d677fe0d3 | 38 | { |
sk398 | 3:c611b9bb5770 | 39 | _digitalInCheck = new DigitalIn(digitalInCheckPin); |
sk398 | 1:221d677fe0d3 | 40 | } |
sk398 | 3:c611b9bb5770 | 41 | |
sk398 | 3:c611b9bb5770 | 42 | bool Task2::digitalInState() |
sk398 | 3:c611b9bb5770 | 43 | { |
sk398 | 3:c611b9bb5770 | 44 | if(_digitalInCheck -> read()) |
sk398 | 3:c611b9bb5770 | 45 | { |
sk398 | 3:c611b9bb5770 | 46 | return TRUE; |
sk398 | 3:c611b9bb5770 | 47 | } |
sk398 | 3:c611b9bb5770 | 48 | else |
sk398 | 3:c611b9bb5770 | 49 | { |
sk398 | 3:c611b9bb5770 | 50 | return FALSE; |
sk398 | 3:c611b9bb5770 | 51 | } |
sk398 | 3:c611b9bb5770 | 52 | } |
sk398 | 3:c611b9bb5770 | 53 | |
sk398 | 1:221d677fe0d3 | 54 | |
sk398 | 1:221d677fe0d3 | 55 | /* ==================================== Task 3 ==================================== */ |
sk398 | 1:221d677fe0d3 | 56 | Task3::Task3(PinName WatchdogPin) |
sk398 | 1:221d677fe0d3 | 57 | { |
sk398 | 1:221d677fe0d3 | 58 | _Watchdog = new DigitalOut(WatchdogPin); |
sk398 | 1:221d677fe0d3 | 59 | } |
sk398 | 1:221d677fe0d3 | 60 | |
sk398 | 1:221d677fe0d3 | 61 | void Task3::OutputWatchdogPulse() |
sk398 | 1:221d677fe0d3 | 62 | { |
sk398 | 1:221d677fe0d3 | 63 | _Watchdog -> write(HIGH); |
sk398 | 1:221d677fe0d3 | 64 | wait_ms(WATCHDOG_PULSE_WIDTH); |
sk398 | 1:221d677fe0d3 | 65 | _Watchdog -> write(LOW); |
sk398 | 1:221d677fe0d3 | 66 | } |
sk398 | 1:221d677fe0d3 | 67 | |
sk398 | 1:221d677fe0d3 | 68 | |
sk398 | 3:c611b9bb5770 | 69 | /* ==================================== Task 4 ==================================== */ |
sk398 | 3:c611b9bb5770 | 70 | Task4::Task4(PinName Analog1Pin,PinName Analog2Pin) |
sk398 | 3:c611b9bb5770 | 71 | { |
sk398 | 3:c611b9bb5770 | 72 | _AnalogIn1 = new AnalogIn(Analog1Pin); |
sk398 | 3:c611b9bb5770 | 73 | _AnalogIn2 = new AnalogIn(Analog2Pin); |
sk398 | 3:c611b9bb5770 | 74 | } |
sk398 | 3:c611b9bb5770 | 75 | |
sk398 | 3:c611b9bb5770 | 76 | float *Task4::returnAnalogReadings() |
sk398 | 3:c611b9bb5770 | 77 | { |
sk398 | 3:c611b9bb5770 | 78 | float readBuffer_1 = 0.0; |
sk398 | 3:c611b9bb5770 | 79 | float readBuffer_2 = 0.0; |
sk398 | 3:c611b9bb5770 | 80 | |
sk398 | 3:c611b9bb5770 | 81 | float outputBuffer[2]; |
sk398 | 3:c611b9bb5770 | 82 | float *outputBufferPtr =&outputBuffer[0]; |
sk398 | 3:c611b9bb5770 | 83 | |
sk398 | 3:c611b9bb5770 | 84 | // outputBuffer[0] = _AnalogIn1 -> read(); |
sk398 | 3:c611b9bb5770 | 85 | // outputBuffer[1] = _AnalogIn2 -> read(); |
sk398 | 3:c611b9bb5770 | 86 | |
sk398 | 3:c611b9bb5770 | 87 | for(int readCount = 0;readCount < NUM_ANALOG_SAMPLES; readCount++) |
sk398 | 3:c611b9bb5770 | 88 | { |
sk398 | 3:c611b9bb5770 | 89 | readBuffer_1 += _AnalogIn1 -> read(); |
sk398 | 3:c611b9bb5770 | 90 | readBuffer_2 += _AnalogIn2 -> read(); |
sk398 | 3:c611b9bb5770 | 91 | } |
sk398 | 3:c611b9bb5770 | 92 | |
sk398 | 3:c611b9bb5770 | 93 | outputBuffer[0] = readBuffer_1/NUM_ANALOG_SAMPLES; |
sk398 | 3:c611b9bb5770 | 94 | outputBuffer[1] = readBuffer_1/NUM_ANALOG_SAMPLES; |
sk398 | 3:c611b9bb5770 | 95 | |
sk398 | 3:c611b9bb5770 | 96 | return outputBufferPtr; |
sk398 | 3:c611b9bb5770 | 97 | } |