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 - I2C
R66Y 0:80df663dd15e 2 * Copyright (c) 2007-2011 ARM Limited. All rights reserved.
R66Y 0:80df663dd15e 3 */
R66Y 0:80df663dd15e 4
R66Y 0:80df663dd15e 5 #ifndef MBED_I2C_H
R66Y 0:80df663dd15e 6 #define MBED_I2C_H
R66Y 0:80df663dd15e 7
R66Y 0:80df663dd15e 8 #include "device.h"
R66Y 0:80df663dd15e 9
R66Y 0:80df663dd15e 10 #if DEVICE_I2C
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
R66Y 0:80df663dd15e 17 namespace mbed {
R66Y 0:80df663dd15e 18
R66Y 0:80df663dd15e 19 /* Class: I2C
R66Y 0:80df663dd15e 20 * An I2C Master, used for communicating with I2C slave devices
R66Y 0:80df663dd15e 21 *
R66Y 0:80df663dd15e 22 * Example:
R66Y 0:80df663dd15e 23 * > // Read from I2C slave at address 0x62
R66Y 0:80df663dd15e 24 * >
R66Y 0:80df663dd15e 25 * > #include "mbed.h"
R66Y 0:80df663dd15e 26 * >
R66Y 0:80df663dd15e 27 * > I2C i2c(p28, p27);
R66Y 0:80df663dd15e 28 * >
R66Y 0:80df663dd15e 29 * > int main() {
R66Y 0:80df663dd15e 30 * > int address = 0x62;
R66Y 0:80df663dd15e 31 * > char data[2];
R66Y 0:80df663dd15e 32 * > i2c.read(address, data, 2);
R66Y 0:80df663dd15e 33 * > }
R66Y 0:80df663dd15e 34 */
R66Y 0:80df663dd15e 35 class I2C : public Base {
R66Y 0:80df663dd15e 36
R66Y 0:80df663dd15e 37 public:
R66Y 0:80df663dd15e 38
R66Y 0:80df663dd15e 39 enum RxStatus {
R66Y 0:80df663dd15e 40 NoData
R66Y 0:80df663dd15e 41 , MasterGeneralCall
R66Y 0:80df663dd15e 42 , MasterWrite
R66Y 0:80df663dd15e 43 , MasterRead
R66Y 0:80df663dd15e 44 };
R66Y 0:80df663dd15e 45
R66Y 0:80df663dd15e 46 enum Acknowledge {
R66Y 0:80df663dd15e 47 NoACK = 0
R66Y 0:80df663dd15e 48 , ACK = 1
R66Y 0:80df663dd15e 49 };
R66Y 0:80df663dd15e 50
R66Y 0:80df663dd15e 51 /* Constructor: I2C
R66Y 0:80df663dd15e 52 * Create an I2C Master interface, connected to the specified pins
R66Y 0:80df663dd15e 53 *
R66Y 0:80df663dd15e 54 * Variables:
R66Y 0:80df663dd15e 55 * sda - I2C data line pin
R66Y 0:80df663dd15e 56 * scl - I2C clock line pin
R66Y 0:80df663dd15e 57 */
R66Y 0:80df663dd15e 58 I2C(PinName sda, PinName scl, const char *name = NULL);
R66Y 0:80df663dd15e 59
R66Y 0:80df663dd15e 60 /* Function: frequency
R66Y 0:80df663dd15e 61 * Set the frequency of the I2C interface
R66Y 0:80df663dd15e 62 *
R66Y 0:80df663dd15e 63 * Variables:
R66Y 0:80df663dd15e 64 * hz - The bus frequency in hertz
R66Y 0:80df663dd15e 65 */
R66Y 0:80df663dd15e 66 void frequency(int hz);
R66Y 0:80df663dd15e 67
R66Y 0:80df663dd15e 68 /* Function: read
R66Y 0:80df663dd15e 69 * Read from an I2C slave
R66Y 0:80df663dd15e 70 *
R66Y 0:80df663dd15e 71 * Performs a complete read transaction. The bottom bit of
R66Y 0:80df663dd15e 72 * the address is forced to 1 to indicate a read.
R66Y 0:80df663dd15e 73 *
R66Y 0:80df663dd15e 74 * Variables:
R66Y 0:80df663dd15e 75 * address - 8-bit I2C slave address [ addr | 1 ]
R66Y 0:80df663dd15e 76 * data - Pointer to the byte-array to read data in to
R66Y 0:80df663dd15e 77 * length - Number of bytes to read
R66Y 0:80df663dd15e 78 * repeated - Repeated start, true - don't send stop at end
R66Y 0:80df663dd15e 79 * returns - 0 on success (ack), or non-0 on failure (nack)
R66Y 0:80df663dd15e 80 */
R66Y 0:80df663dd15e 81 int read(int address, char *data, int length, bool repeated = false);
R66Y 0:80df663dd15e 82
R66Y 0:80df663dd15e 83 /* Function: read
R66Y 0:80df663dd15e 84 * Read a single byte from the I2C bus
R66Y 0:80df663dd15e 85 *
R66Y 0:80df663dd15e 86 * Variables:
R66Y 0:80df663dd15e 87 * ack - indicates if the byte is to be acknowledged (1 = acknowledge)
R66Y 0:80df663dd15e 88 * returns - the byte read
R66Y 0:80df663dd15e 89 */
R66Y 0:80df663dd15e 90 int read(int ack);
R66Y 0:80df663dd15e 91
R66Y 0:80df663dd15e 92 /* Function: write
R66Y 0:80df663dd15e 93 * Write to an I2C slave
R66Y 0:80df663dd15e 94 *
R66Y 0:80df663dd15e 95 * Performs a complete write transaction. The bottom bit of
R66Y 0:80df663dd15e 96 * the address is forced to 0 to indicate a write.
R66Y 0:80df663dd15e 97 *
R66Y 0:80df663dd15e 98 * Variables:
R66Y 0:80df663dd15e 99 * address - 8-bit I2C slave address [ addr | 0 ]
R66Y 0:80df663dd15e 100 * data - Pointer to the byte-array data to send
R66Y 0:80df663dd15e 101 * length - Number of bytes to send
R66Y 0:80df663dd15e 102 * repeated - Repeated start, true - do not send stop at end
R66Y 0:80df663dd15e 103 * returns - 0 on success (ack), or non-0 on failure (nack)
R66Y 0:80df663dd15e 104 */
R66Y 0:80df663dd15e 105 int write(int address, const char *data, int length, bool repeated = false);
R66Y 0:80df663dd15e 106
R66Y 0:80df663dd15e 107 /* Function: write
R66Y 0:80df663dd15e 108 * Write single byte out on the I2C bus
R66Y 0:80df663dd15e 109 *
R66Y 0:80df663dd15e 110 * Variables:
R66Y 0:80df663dd15e 111 * data - data to write out on bus
R66Y 0:80df663dd15e 112 * returns - a '1' if an ACK was received, a '0' otherwise
R66Y 0:80df663dd15e 113 */
R66Y 0:80df663dd15e 114 int write(int data);
R66Y 0:80df663dd15e 115
R66Y 0:80df663dd15e 116 /* Function: start
R66Y 0:80df663dd15e 117 * Creates a start condition on the I2C bus
R66Y 0:80df663dd15e 118 */
R66Y 0:80df663dd15e 119
R66Y 0:80df663dd15e 120 void start(void);
R66Y 0:80df663dd15e 121
R66Y 0:80df663dd15e 122 /* Function: stop
R66Y 0:80df663dd15e 123 * Creates a stop condition on the I2C bus
R66Y 0:80df663dd15e 124 */
R66Y 0:80df663dd15e 125 void stop(void);
R66Y 0:80df663dd15e 126
R66Y 0:80df663dd15e 127 protected:
R66Y 0:80df663dd15e 128
R66Y 0:80df663dd15e 129 void aquire();
R66Y 0:80df663dd15e 130
R66Y 0:80df663dd15e 131 I2CName _i2c;
R66Y 0:80df663dd15e 132 static I2C *_owner;
R66Y 0:80df663dd15e 133 int _hz;
R66Y 0:80df663dd15e 134
R66Y 0:80df663dd15e 135 };
R66Y 0:80df663dd15e 136
R66Y 0:80df663dd15e 137 } // namespace mbed
R66Y 0:80df663dd15e 138
R66Y 0:80df663dd15e 139 #endif
R66Y 0:80df663dd15e 140
R66Y 0:80df663dd15e 141 #endif
R66Y 0:80df663dd15e 142