code ax12 petit robot 12/05/2017

Fork of command_AX12_petit_robot_V3 by CRAC Team

Committer:
ClementBreteau
Date:
Fri May 12 14:35:09 2017 +0000
Revision:
7:ad4a19e26b84
Parent:
2:99b1cb0d9f5e
position ax12

Who changed what in which revision?

UserRevisionLine numberNew contents of line
SquirrelGod 2:99b1cb0d9f5e 1 /* mbed Microcontroller Library - InterruptIn
SquirrelGod 2:99b1cb0d9f5e 2 * Copyright (c) 2006-2011 ARM Limited. All rights reserved.
SquirrelGod 2:99b1cb0d9f5e 3 */
SquirrelGod 2:99b1cb0d9f5e 4
SquirrelGod 2:99b1cb0d9f5e 5 #ifndef MBED_INTERRUPTIN_H
SquirrelGod 2:99b1cb0d9f5e 6 #define MBED_INTERRUPTIN_H
SquirrelGod 2:99b1cb0d9f5e 7
SquirrelGod 2:99b1cb0d9f5e 8 #include "device.h"
SquirrelGod 2:99b1cb0d9f5e 9
SquirrelGod 2:99b1cb0d9f5e 10 #if DEVICE_INTERRUPTIN
SquirrelGod 2:99b1cb0d9f5e 11
SquirrelGod 2:99b1cb0d9f5e 12 #include "platform.h"
SquirrelGod 2:99b1cb0d9f5e 13 #include "PinNames.h"
SquirrelGod 2:99b1cb0d9f5e 14 #include "PeripheralNames.h"
SquirrelGod 2:99b1cb0d9f5e 15 #include "Base.h"
SquirrelGod 2:99b1cb0d9f5e 16 #include "FunctionPointer.h"
SquirrelGod 2:99b1cb0d9f5e 17
SquirrelGod 2:99b1cb0d9f5e 18 #if defined(TARGET_LPC1768) || defined(TARGET_LPC2368)
SquirrelGod 2:99b1cb0d9f5e 19 #define CHANNEL_NUM 48
SquirrelGod 2:99b1cb0d9f5e 20 #elif defined(TARGET_LPC11U24)
SquirrelGod 2:99b1cb0d9f5e 21 #define CHANNEL_NUM 8
SquirrelGod 2:99b1cb0d9f5e 22 #endif
SquirrelGod 2:99b1cb0d9f5e 23
SquirrelGod 2:99b1cb0d9f5e 24 namespace mbed {
SquirrelGod 2:99b1cb0d9f5e 25
SquirrelGod 2:99b1cb0d9f5e 26 /* Class: InterruptIn
SquirrelGod 2:99b1cb0d9f5e 27 * A digital interrupt input, used to call a function on a rising or falling edge
SquirrelGod 2:99b1cb0d9f5e 28 *
SquirrelGod 2:99b1cb0d9f5e 29 * Example:
SquirrelGod 2:99b1cb0d9f5e 30 * > // Flash an LED while waiting for events
SquirrelGod 2:99b1cb0d9f5e 31 * >
SquirrelGod 2:99b1cb0d9f5e 32 * > #include "mbed.h"
SquirrelGod 2:99b1cb0d9f5e 33 * >
SquirrelGod 2:99b1cb0d9f5e 34 * > InterruptIn event(p16);
SquirrelGod 2:99b1cb0d9f5e 35 * > DigitalOut led(LED1);
SquirrelGod 2:99b1cb0d9f5e 36 * >
SquirrelGod 2:99b1cb0d9f5e 37 * > void trigger() {
SquirrelGod 2:99b1cb0d9f5e 38 * > printf("triggered!\n");
SquirrelGod 2:99b1cb0d9f5e 39 * > }
SquirrelGod 2:99b1cb0d9f5e 40 * >
SquirrelGod 2:99b1cb0d9f5e 41 * > int main() {
SquirrelGod 2:99b1cb0d9f5e 42 * > event.rise(&trigger);
SquirrelGod 2:99b1cb0d9f5e 43 * > while(1) {
SquirrelGod 2:99b1cb0d9f5e 44 * > led = !led;
SquirrelGod 2:99b1cb0d9f5e 45 * > wait(0.25);
SquirrelGod 2:99b1cb0d9f5e 46 * > }
SquirrelGod 2:99b1cb0d9f5e 47 * > }
SquirrelGod 2:99b1cb0d9f5e 48 */
SquirrelGod 2:99b1cb0d9f5e 49 class InterruptIn : public Base {
SquirrelGod 2:99b1cb0d9f5e 50
SquirrelGod 2:99b1cb0d9f5e 51 public:
SquirrelGod 2:99b1cb0d9f5e 52
SquirrelGod 2:99b1cb0d9f5e 53 /* Constructor: InterruptIn
SquirrelGod 2:99b1cb0d9f5e 54 * Create an InterruptIn connected to the specified pin
SquirrelGod 2:99b1cb0d9f5e 55 *
SquirrelGod 2:99b1cb0d9f5e 56 * Variables:
SquirrelGod 2:99b1cb0d9f5e 57 * pin - InterruptIn pin to connect to
SquirrelGod 2:99b1cb0d9f5e 58 * name - (optional) A string to identify the object
SquirrelGod 2:99b1cb0d9f5e 59 */
SquirrelGod 2:99b1cb0d9f5e 60 InterruptIn(PinName pin, const char *name = NULL);
SquirrelGod 2:99b1cb0d9f5e 61 #if defined(TARGET_LPC11U24)
SquirrelGod 2:99b1cb0d9f5e 62 virtual ~InterruptIn();
SquirrelGod 2:99b1cb0d9f5e 63 #endif
SquirrelGod 2:99b1cb0d9f5e 64
SquirrelGod 2:99b1cb0d9f5e 65 int read();
SquirrelGod 2:99b1cb0d9f5e 66 #ifdef MBED_OPERATORS
SquirrelGod 2:99b1cb0d9f5e 67 operator int();
SquirrelGod 2:99b1cb0d9f5e 68
SquirrelGod 2:99b1cb0d9f5e 69 #endif
SquirrelGod 2:99b1cb0d9f5e 70
SquirrelGod 2:99b1cb0d9f5e 71 /* Function: rise
SquirrelGod 2:99b1cb0d9f5e 72 * Attach a function to call when a rising edge occurs on the input
SquirrelGod 2:99b1cb0d9f5e 73 *
SquirrelGod 2:99b1cb0d9f5e 74 * Variables:
SquirrelGod 2:99b1cb0d9f5e 75 * fptr - A pointer to a void function, or 0 to set as none
SquirrelGod 2:99b1cb0d9f5e 76 */
SquirrelGod 2:99b1cb0d9f5e 77 void rise(void (*fptr)(void));
SquirrelGod 2:99b1cb0d9f5e 78
SquirrelGod 2:99b1cb0d9f5e 79 /* Function: rise
SquirrelGod 2:99b1cb0d9f5e 80 * Attach a member function to call when a rising edge occurs on the input
SquirrelGod 2:99b1cb0d9f5e 81 *
SquirrelGod 2:99b1cb0d9f5e 82 * Variables:
SquirrelGod 2:99b1cb0d9f5e 83 * tptr - pointer to the object to call the member function on
SquirrelGod 2:99b1cb0d9f5e 84 * mptr - pointer to the member function to be called
SquirrelGod 2:99b1cb0d9f5e 85 */
SquirrelGod 2:99b1cb0d9f5e 86 template<typename T>
SquirrelGod 2:99b1cb0d9f5e 87 void rise(T* tptr, void (T::*mptr)(void)) {
SquirrelGod 2:99b1cb0d9f5e 88 _rise.attach(tptr, mptr);
SquirrelGod 2:99b1cb0d9f5e 89 setup_interrupt(1, 1);
SquirrelGod 2:99b1cb0d9f5e 90 }
SquirrelGod 2:99b1cb0d9f5e 91
SquirrelGod 2:99b1cb0d9f5e 92 /* Function: fall
SquirrelGod 2:99b1cb0d9f5e 93 * Attach a function to call when a falling edge occurs on the input
SquirrelGod 2:99b1cb0d9f5e 94 *
SquirrelGod 2:99b1cb0d9f5e 95 * Variables:
SquirrelGod 2:99b1cb0d9f5e 96 * fptr - A pointer to a void function, or 0 to set as none
SquirrelGod 2:99b1cb0d9f5e 97 */
SquirrelGod 2:99b1cb0d9f5e 98 void fall(void (*fptr)(void));
SquirrelGod 2:99b1cb0d9f5e 99
SquirrelGod 2:99b1cb0d9f5e 100 /* Function: fall
SquirrelGod 2:99b1cb0d9f5e 101 * Attach a member function to call when a falling edge occurs on the input
SquirrelGod 2:99b1cb0d9f5e 102 *
SquirrelGod 2:99b1cb0d9f5e 103 * Variables:
SquirrelGod 2:99b1cb0d9f5e 104 * tptr - pointer to the object to call the member function on
SquirrelGod 2:99b1cb0d9f5e 105 * mptr - pointer to the member function to be called
SquirrelGod 2:99b1cb0d9f5e 106 */
SquirrelGod 2:99b1cb0d9f5e 107 template<typename T>
SquirrelGod 2:99b1cb0d9f5e 108 void fall(T* tptr, void (T::*mptr)(void)) {
SquirrelGod 2:99b1cb0d9f5e 109 _fall.attach(tptr, mptr);
SquirrelGod 2:99b1cb0d9f5e 110 setup_interrupt(0, 1);
SquirrelGod 2:99b1cb0d9f5e 111 }
SquirrelGod 2:99b1cb0d9f5e 112
SquirrelGod 2:99b1cb0d9f5e 113 /* Function: mode
SquirrelGod 2:99b1cb0d9f5e 114 * Set the input pin mode
SquirrelGod 2:99b1cb0d9f5e 115 *
SquirrelGod 2:99b1cb0d9f5e 116 * Variables:
SquirrelGod 2:99b1cb0d9f5e 117 * mode - PullUp, PullDown, PullNone
SquirrelGod 2:99b1cb0d9f5e 118 */
SquirrelGod 2:99b1cb0d9f5e 119 void mode(PinMode pull);
SquirrelGod 2:99b1cb0d9f5e 120
SquirrelGod 2:99b1cb0d9f5e 121 static InterruptIn *_irq_objects[CHANNEL_NUM];
SquirrelGod 2:99b1cb0d9f5e 122
SquirrelGod 2:99b1cb0d9f5e 123 #if defined(TARGET_LPC1768) || defined(TARGET_LPC2368)
SquirrelGod 2:99b1cb0d9f5e 124 static void _irq();
SquirrelGod 2:99b1cb0d9f5e 125 #elif defined(TARGET_LPC11U24)
SquirrelGod 2:99b1cb0d9f5e 126 static void handle_interrupt_in(unsigned int channel);
SquirrelGod 2:99b1cb0d9f5e 127 static void _irq0(); static void _irq1();
SquirrelGod 2:99b1cb0d9f5e 128 static void _irq2(); static void _irq3();
SquirrelGod 2:99b1cb0d9f5e 129 static void _irq4(); static void _irq5();
SquirrelGod 2:99b1cb0d9f5e 130 static void _irq6(); static void _irq7();
SquirrelGod 2:99b1cb0d9f5e 131 #endif
SquirrelGod 2:99b1cb0d9f5e 132
SquirrelGod 2:99b1cb0d9f5e 133 protected:
SquirrelGod 2:99b1cb0d9f5e 134 PinName _pin;
SquirrelGod 2:99b1cb0d9f5e 135 #if defined(TARGET_LPC11U24)
SquirrelGod 2:99b1cb0d9f5e 136 Channel _channel;
SquirrelGod 2:99b1cb0d9f5e 137 #endif
SquirrelGod 2:99b1cb0d9f5e 138 FunctionPointer _rise;
SquirrelGod 2:99b1cb0d9f5e 139 FunctionPointer _fall;
SquirrelGod 2:99b1cb0d9f5e 140
SquirrelGod 2:99b1cb0d9f5e 141 void setup_interrupt(int rising, int enable);
SquirrelGod 2:99b1cb0d9f5e 142
SquirrelGod 2:99b1cb0d9f5e 143 };
SquirrelGod 2:99b1cb0d9f5e 144
SquirrelGod 2:99b1cb0d9f5e 145 } // namespace mbed
SquirrelGod 2:99b1cb0d9f5e 146
SquirrelGod 2:99b1cb0d9f5e 147 #endif
SquirrelGod 2:99b1cb0d9f5e 148
SquirrelGod 2:99b1cb0d9f5e 149 #endif