routeur done

Dependencies:   mbed

Fork of APP4 by Évan Laverdure

Committer:
RufflesAllD
Date:
Mon Feb 24 19:06:11 2014 +0000
Revision:
4:aac38b016952
Parent:
2:7515831bb5f5
l

Who changed what in which revision?

UserRevisionLine numberNew 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 }