Évan Laverdure
/
APP4
routeur done
Fork of APP4 by
routeur.cpp@4:aac38b016952, 2014-02-24 (annotated)
- Committer:
- RufflesAllD
- Date:
- Mon Feb 24 19:06:11 2014 +0000
- Revision:
- 4:aac38b016952
- Parent:
- 2:7515831bb5f5
l
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
joGenie | 2:7515831bb5f5 | 1 | #include "routeur.hpp" |
joGenie | 2:7515831bb5f5 | 2 | |
RufflesAllD | 4:aac38b016952 | 3 | const char COORD_ADRESS[8] = {0x00, 0x13, 0xA2, 0x00, 0x40, 0x0A, 0x2F, 0xB3}; |
RufflesAllD | 4:aac38b016952 | 4 | |
joGenie | 2:7515831bb5f5 | 5 | Routeur::Routeur(PinName _tx, PinName _rx) : |
RufflesAllD | 4:aac38b016952 | 6 | trame(_tx, _rx), accel(p9, p10), piton(p30) |
RufflesAllD | 4:aac38b016952 | 7 | { |
RufflesAllD | 4:aac38b016952 | 8 | DigitalOut reset(p8); |
RufflesAllD | 4:aac38b016952 | 9 | |
RufflesAllD | 4:aac38b016952 | 10 | reset = 0; |
RufflesAllD | 4:aac38b016952 | 11 | wait(0.4); |
RufflesAllD | 4:aac38b016952 | 12 | reset = 1; |
RufflesAllD | 4:aac38b016952 | 13 | wait(4); |
RufflesAllD | 4:aac38b016952 | 14 | } |
RufflesAllD | 4:aac38b016952 | 15 | |
RufflesAllD | 4:aac38b016952 | 16 | void Routeur::initAccel() |
RufflesAllD | 4:aac38b016952 | 17 | { |
RufflesAllD | 4:aac38b016952 | 18 | // Mise de l'accéléromètre en standby |
RufflesAllD | 4:aac38b016952 | 19 | writeRegister(CTRL_REG1, 0x10); |
RufflesAllD | 4:aac38b016952 | 20 | |
RufflesAllD | 4:aac38b016952 | 21 | // Set offset de l'accéléromètre |
RufflesAllD | 4:aac38b016952 | 22 | writeRegister(0x31, 0xEE); |
RufflesAllD | 4:aac38b016952 | 23 | |
RufflesAllD | 4:aac38b016952 | 24 | // activate de l'accéléromètre |
RufflesAllD | 4:aac38b016952 | 25 | char c; |
RufflesAllD | 4:aac38b016952 | 26 | readRegister(CTRL_REG1, &c); |
RufflesAllD | 4:aac38b016952 | 27 | writeRegister(CTRL_REG1, c | 0x01); |
RufflesAllD | 4:aac38b016952 | 28 | } |
RufflesAllD | 4:aac38b016952 | 29 | |
RufflesAllD | 4:aac38b016952 | 30 | void Routeur::sendSwitchValue() |
RufflesAllD | 4:aac38b016952 | 31 | { |
RufflesAllD | 4:aac38b016952 | 32 | switchValue[0] = piton; |
RufflesAllD | 4:aac38b016952 | 33 | |
RufflesAllD | 4:aac38b016952 | 34 | trame.sendTransmitRequest(COORD_ADRESS, switchValue, 1); |
RufflesAllD | 4:aac38b016952 | 35 | } |
RufflesAllD | 4:aac38b016952 | 36 | |
RufflesAllD | 4:aac38b016952 | 37 | void Routeur::sendAccelValues() |
RufflesAllD | 4:aac38b016952 | 38 | { |
RufflesAllD | 4:aac38b016952 | 39 | int ack = readRegisters(OUT_X_MSB, 6, accelValues); |
RufflesAllD | 4:aac38b016952 | 40 | |
RufflesAllD | 4:aac38b016952 | 41 | trame.sendTransmitRequest(COORD_ADRESS, accelValues, 6); |
RufflesAllD | 4:aac38b016952 | 42 | } |
RufflesAllD | 4:aac38b016952 | 43 | |
RufflesAllD | 4:aac38b016952 | 44 | int Routeur::readRegister(char reg, char* data) |
joGenie | 2:7515831bb5f5 | 45 | { |
RufflesAllD | 4:aac38b016952 | 46 | int ack = 0; |
RufflesAllD | 4:aac38b016952 | 47 | accel.start(); |
RufflesAllD | 4:aac38b016952 | 48 | ack = accel.write(DATA_REG_W); |
RufflesAllD | 4:aac38b016952 | 49 | ack = accel.write(reg); |
RufflesAllD | 4:aac38b016952 | 50 | accel.start(); |
RufflesAllD | 4:aac38b016952 | 51 | ack = accel.write(DATA_REG_R); |
RufflesAllD | 4:aac38b016952 | 52 | data[0] = accel.read(0); |
RufflesAllD | 4:aac38b016952 | 53 | accel.stop(); |
RufflesAllD | 4:aac38b016952 | 54 | |
RufflesAllD | 4:aac38b016952 | 55 | return ack; |
RufflesAllD | 4:aac38b016952 | 56 | } |
RufflesAllD | 4:aac38b016952 | 57 | |
RufflesAllD | 4:aac38b016952 | 58 | int Routeur::readRegisters(char reg, int range, char* data) |
RufflesAllD | 4:aac38b016952 | 59 | { |
RufflesAllD | 4:aac38b016952 | 60 | int ack = 0; |
RufflesAllD | 4:aac38b016952 | 61 | accel.start(); |
RufflesAllD | 4:aac38b016952 | 62 | ack = accel.write(DATA_REG_W); |
RufflesAllD | 4:aac38b016952 | 63 | ack = accel.write(reg); |
RufflesAllD | 4:aac38b016952 | 64 | accel.start(); |
RufflesAllD | 4:aac38b016952 | 65 | ack = accel.write(DATA_REG_R); |
RufflesAllD | 4:aac38b016952 | 66 | for (int i = 0; i < range - 1; i++) |
RufflesAllD | 4:aac38b016952 | 67 | data[i] = accel.read(1); |
RufflesAllD | 4:aac38b016952 | 68 | data[range - 1] = accel.read(0); |
RufflesAllD | 4:aac38b016952 | 69 | accel.stop(); |
RufflesAllD | 4:aac38b016952 | 70 | |
RufflesAllD | 4:aac38b016952 | 71 | return ack; |
RufflesAllD | 4:aac38b016952 | 72 | } |
RufflesAllD | 4:aac38b016952 | 73 | |
RufflesAllD | 4:aac38b016952 | 74 | int Routeur::writeRegister(char reg, char data) |
RufflesAllD | 4:aac38b016952 | 75 | { |
RufflesAllD | 4:aac38b016952 | 76 | int ack = 0; |
RufflesAllD | 4:aac38b016952 | 77 | accel.start(); |
RufflesAllD | 4:aac38b016952 | 78 | ack = accel.write(DATA_REG_W); |
RufflesAllD | 4:aac38b016952 | 79 | ack = accel.write(reg); |
RufflesAllD | 4:aac38b016952 | 80 | ack = accel.write(data); |
RufflesAllD | 4:aac38b016952 | 81 | accel.stop(); |
RufflesAllD | 4:aac38b016952 | 82 | |
RufflesAllD | 4:aac38b016952 | 83 | return ack; |
RufflesAllD | 4:aac38b016952 | 84 | } |