Trigger by rising edge

Dependencies:   mbed

Committer:
Neolker
Date:
Thu Apr 05 14:47:00 2018 +0000
Revision:
0:468c345c018c
initial version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Neolker 0:468c345c018c 1 /*
Neolker 0:468c345c018c 2 * -----------------------------------------
Neolker 0:468c345c018c 3 * Trigger_LabSat_variant_2 1.0 (2018-04-05)
Neolker 0:468c345c018c 4 * -----------------------------------------
Neolker 0:468c345c018c 5 * Works well with NUCLEO-F031K6 and NUCLEO-F411RE.
Neolker 0:468c345c018c 6 *
Neolker 0:468c345c018c 7 * In (D2): ___-______-___
Neolker 0:468c345c018c 8 *
Neolker 0:468c345c018c 9 * Out (D3): ___--------___
Neolker 0:468c345c018c 10 *
Neolker 0:468c345c018c 11 * negOut (D4): ---________---
Neolker 0:468c345c018c 12 *
Neolker 0:468c345c018c 13 * LED (LED1): ___--------___
Neolker 0:468c345c018c 14 *
Neolker 0:468c345c018c 15 * Copyright (c) 2018, Martin Wolker (neolker@gmail.com)
Neolker 0:468c345c018c 16 * All rights reserved.
Neolker 0:468c345c018c 17 *
Neolker 0:468c345c018c 18 * Redistribution and use in source and binary forms, with or without
Neolker 0:468c345c018c 19 * modification, are permitted provided that the following conditions are met:
Neolker 0:468c345c018c 20 * - Redistributions of source code must retain the above copyright
Neolker 0:468c345c018c 21 * notice, this list of conditions and the following disclaimer.
Neolker 0:468c345c018c 22 * - Redistributions in binary form must reproduce the above copyright
Neolker 0:468c345c018c 23 * notice, this list of conditions and the following disclaimer in the
Neolker 0:468c345c018c 24 * documentation and/or other materials provided with the distribution.
Neolker 0:468c345c018c 25 * - Neither the name of Martin Wolker nor the
Neolker 0:468c345c018c 26 * names of its contributors may be used to endorse or promote products
Neolker 0:468c345c018c 27 * derived from this software without specific prior written permission.
Neolker 0:468c345c018c 28 *
Neolker 0:468c345c018c 29 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
Neolker 0:468c345c018c 30 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
Neolker 0:468c345c018c 31 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Neolker 0:468c345c018c 32 * DISCLAIMED. IN NO EVENT SHALL MARTIN WOLKER BE LIABLE FOR ANY
Neolker 0:468c345c018c 33 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
Neolker 0:468c345c018c 34 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
Neolker 0:468c345c018c 35 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
Neolker 0:468c345c018c 36 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
Neolker 0:468c345c018c 37 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
Neolker 0:468c345c018c 38 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Neolker 0:468c345c018c 39 */
Neolker 0:468c345c018c 40
Neolker 0:468c345c018c 41 #include "mbed.h"
Neolker 0:468c345c018c 42 #define TRIGGER_IGNORE_LENGTH_MS 500
Neolker 0:468c345c018c 43
Neolker 0:468c345c018c 44 InterruptIn trigger_in(D2);
Neolker 0:468c345c018c 45 DigitalOut trigger_out(D3);
Neolker 0:468c345c018c 46 DigitalOut trigger_out_negative(D4);
Neolker 0:468c345c018c 47 DigitalOut trigger_led(LED1);
Neolker 0:468c345c018c 48
Neolker 0:468c345c018c 49 void trigger(void)
Neolker 0:468c345c018c 50 {
Neolker 0:468c345c018c 51 trigger_out =! trigger_out;
Neolker 0:468c345c018c 52 trigger_out_negative =! trigger_out_negative;
Neolker 0:468c345c018c 53 trigger_led =! trigger_led;
Neolker 0:468c345c018c 54 }
Neolker 0:468c345c018c 55
Neolker 0:468c345c018c 56 void interrupt(void)
Neolker 0:468c345c018c 57 {
Neolker 0:468c345c018c 58 trigger();
Neolker 0:468c345c018c 59 wait_ms(TRIGGER_IGNORE_LENGTH_MS);
Neolker 0:468c345c018c 60 }
Neolker 0:468c345c018c 61
Neolker 0:468c345c018c 62 int main(void)
Neolker 0:468c345c018c 63 {
Neolker 0:468c345c018c 64 //Trigger interrupt by rising edge
Neolker 0:468c345c018c 65 trigger_in.rise(&interrupt);
Neolker 0:468c345c018c 66
Neolker 0:468c345c018c 67 //Default state
Neolker 0:468c345c018c 68 trigger_out = 0;
Neolker 0:468c345c018c 69 trigger_out_negative = 1;
Neolker 0:468c345c018c 70 trigger_led = 0;
Neolker 0:468c345c018c 71
Neolker 0:468c345c018c 72 //Endless loop
Neolker 0:468c345c018c 73 while(1) { }
Neolker 0:468c345c018c 74 }