Programme d'utilisation servomotors MX12 V1

Committer:
R66Y
Date:
Fri May 19 14:32:14 2017 +0000
Revision:
0:80df663dd15e
programme pour utiliser les servomoteurs MX12.

Who changed what in which revision?

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