// Esse programa ainda não foi testado. // É uma adaptação para utilizar vários acelerômetros utilizando a classe // BUSOUT ligado no CS dos acelerômetros; //Baseado na biblioteca de aaronn berek

Dependencies:   ADXL345 mbed

Fork of ADXLHELLOWORD by Thiago .

Files at this revision

API Documentation at this revision

Comitter:
Jamess
Date:
Fri Apr 24 12:55:57 2015 +0000
Parent:
0:e59a01f2ebcd
Child:
2:6f5f2342d0a5
Commit message:
aGORA COM HEADERS TROCARPARA SPI

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Thu Apr 23 17:41:39 2015 +0000
+++ b/main.cpp	Fri Apr 24 12:55:57 2015 +0000
@@ -9,43 +9,208 @@
         
 //DONE:
         //Instalação do acc na protoboard.
-        
-#include "ADXL345.h"
+#include "mbed.h"
+/*-------ADXL345-------*/
+
+// When SDO grounded
+#define ADXL1_ADDR_WRITE 0xA6
+#define ADXL1_ADDR_READ 0xA7
+#define ADXL1_ADDR 0X53
+
+//When SDO high
+#define ADXL2_ADDR_WRITE 0x3A
+#define ADXL2_ADDR_READ 0x3B
+#define ADXL2_ADDR 0x53
+
+//Registers
 
-ADXL345 accelerometer(PTD2,PTD3,PTD1,PTD0);//PinName mosi, PinName miso, PinName sck,     PinName cs)
+#define POWER_CTL 0x2D
+#define DATA_FORMAT 0x31
+#define DATAX0 0x32       //X
+#define DATAX1 0x33
+#define DATAY0 0x34       //Y
+#define DATAY1 0x35
+#define DATAZ0 0x36       //Z
+#define DATAZ1 0x37
+#define OFSX 0x1D         //accelerometer offset calibration
+#define OFSY 0x1F         
+#define OFSZ 0x20
+#define BW_RATE 0x2C      //define Baudrate
+
+/*----Transmicao----*/
+
+
+SPI spi1(PTD2,PTD3,PTD1); //PTD0);//PinName mosi, PinName miso, PinName sck,     PinName cs)
 Serial pc(USBTX, USBRX);
 DigitalOut PIN(PTA13);
- 
+
+/********************---------FUNÇÕES ACELERÔMETRO**********************************/
+//Escrita:
+inline void RegisterWrite(char acc,char address,char data);            //Escreve o desejado no acelerômetro acc no endereço tal
+void MultRegisterWrite(char acc,char address,char data);               //Faz isso
+
+//Leitura:
+void GetOutputs(void);                                                  //Faz aquilo          
+void MultRegisterRead(void);                                            //
+void RegisterRead(void);
+/******************************Variáveis Acelerômetro********************************/
+
+bool Acc_CS[10] = {0};
+
+
+/************************************************************************************/
+
 int main() {
  
     int readings[3] = {0, 0, 0};
-    
-    pc.printf("Starting ADXL345 test...\n");
-    pc.printf("Device ID is: 0x%02x\n", accelerometer.getDevId());
- 
+     
     //Go into standby mode to configure the device.
-    accelerometer.setPowerControl(0x00);
+  //  pc.printf("Starting setting the accelerômeters");
+    //accelerometer.setPowerControl(0x00);
  
     //Full resolution, +/-16g, 4mg/LSB.
-    accelerometer.setDataFormatControl(0x0B);
+    //accelerometer.setDataFormatControl(0x0B);
     
     //3.2kHz data rate.
-    accelerometer.setDataRate(ADXL345_3200HZ);
+    //accelerometer.setDataRate(ADXL345_3200HZ);
  
     //Measurement mode.
-    accelerometer.setPowerControl(0x08);
+    //accelerometer.setPowerControl(0x08);
  
     while (1) {
     
         wait(0.1);
         
-        accelerometer.getOutput(readings);
+        //accelerometer.getOutput(readings);
         
-        PIN = '1';
+        PIN = 1;
         //13-bit, sign extended values.
-        pc.printf("%i, %i, %i\n", (int16_t)readings[0], (int16_t)readings[1], (int16_t)readings[2]);
-        PIN = '0';
+      //  pc.printf("%i, %i, %i\n", (int16_t)readings[0], (int16_t)readings[1], (int16_t)readings[2]);
+        PIN = 0;
     }
  
 }
- 
\ No newline at end of file
+
+void RegisterRead(void){
+    
+    int tx = (ADXL345_SPI_READ | (address & 0x3F));
+    int rx = 0;
+
+    PIN = 0;
+    //Send address to read from.
+    spi_.write(tx);
+    //Read back contents of address.
+    rx = spi_.write(0x00);
+    PIN = 1;
+
+    return rx;
+}
+
+void RegisterWrite(int address, char data) {
+
+    int tx = (ADXL345_SPI_WRITE | (address & 0x3F));
+
+    PIN = 0; // Aqui na verdade vai ficar uma márcara para decidirvários pinos aomesmo tempo
+    //Send address to write to.
+    spi_.write(tx);
+    //Send data to be written.
+    spi_.write(data);
+    PIN = 1;
+
+}
+void MultRegisterRead(int startAddress, char* buffer, int size) {
+
+    int tx = (ADXL345_SPI_READ | ADXL345_MULTI_BYTE | (startAddress & 0x3F));
+
+    PIN = 0;
+    //Send address to start reading from.
+    spi_.write(tx);
+
+    for (int i = 0; i < size; i++) {
+        buffer[i] = spi_.write(0x00);
+    }
+
+    PIN = 1;
+
+}
+
+void MultRegisterWrite(int startAddress, char* buffer, int size) {
+
+    int tx = (ADXL345_SPI_WRITE | ADXL345_MULTI_BYTE | (startAddress & 0x3F));
+
+    PIN = 0;
+    //Send address to start reading from.
+    spi_.write(tx);
+
+    for (int i = 0; i < size; i++) {
+        buffer[i] = spi_.write(0x00);
+    }
+
+    PIN = 1;
+
+}
+
+
+
+
+/*===============================FUNCOES COPIADAS======================================*/
+/*int ADXL345::oneByteRead(int address) {
+
+    int tx = (ADXL345_SPI_READ | (address & 0x3F));
+    int rx = 0;
+
+    PIN = 0;
+    //Send address to read from.
+    spi_.write(tx);
+    //Read back contents of address.
+    rx = spi_.write(0x00);
+    PIN = 1;
+
+    return rx;
+
+}
+
+void ADXL345::oneByteWrite(int address, char data) {
+
+    int tx = (ADXL345_SPI_WRITE | (address & 0x3F));
+
+    PIN = 0;
+    //Send address to write to.
+    spi_.write(tx);
+    //Send data to be written.
+    spi_.write(data);
+    PIN = 1;
+
+}
+
+void ADXL345::multiByteRead(int startAddress, char* buffer, int size) {
+
+    int tx = (ADXL345_SPI_READ | ADXL345_MULTI_BYTE | (startAddress & 0x3F));
+
+    PIN = 0;
+    //Send address to start reading from.
+    spi_.write(tx);
+
+    for (int i = 0; i < size; i++) {
+        buffer[i] = spi_.write(0x00);
+    }
+
+    PIN = 1;
+
+}
+
+void ADXL345::multiByteWrite(int startAddress, char* buffer, int size) {
+
+    int tx = (ADXL345_SPI_WRITE | ADXL345_MULTI_BYTE | (startAddress & 0x3F));
+
+    PIN = 0;
+    //Send address to start reading from.
+    spi_.write(tx);
+
+    for (int i = 0; i < size; i++) {
+        buffer[i] = spi_.write(0x00);
+    }
+
+    PIN = 1;
+
+}*/
\ No newline at end of file