CPS-Lab* / Mbed 2 deprecated lab6

Dependencies:   ADXL362 mbed MPL3115A2

Committer:
htdoughe
Date:
Thu Feb 22 15:45:26 2018 +0000
Revision:
4:8065ca897f8b
Parent:
3:813694e51f72
Child:
5:02aa71487c01
so many errors but i think i know where to go from here

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rmneubau 0:0f663d16e8a2 1 #include "mbed.h"
rmneubau 0:0f663d16e8a2 2 #include "ADXL362.h"
htdoughe 4:8065ca897f8b 3 #include "string.h"
htdoughe 4:8065ca897f8b 4 #include <map>
htdoughe 4:8065ca897f8b 5 #include <string>
htdoughe 4:8065ca897f8b 6
htdoughe 4:8065ca897f8b 7 //map of register values and names
htdoughe 4:8065ca897f8b 8 std::map< int, int > registerids;
htdoughe 4:8065ca897f8b 9 std::map< int, char* > registernames;
htdoughe 4:8065ca897f8b 10 //populating the map
htdoughe 4:8065ca897f8b 11 void initmap() {
htdoughe 4:8065ca897f8b 12 registerids.insert(0, 0x00);
htdoughe 4:8065ca897f8b 13 registers.insert(1, make_pair("DEVID_MST", 0x01));
htdoughe 4:8065ca897f8b 14 registers.insert(2, make_pair("PARTID", 0x02));
htdoughe 4:8065ca897f8b 15 registers.insert(3, make_pair("REVID", 0x03));
htdoughe 4:8065ca897f8b 16 registers.insert(4, make_pair("XDATA", 0x08));
htdoughe 4:8065ca897f8b 17 registers.insert(5, make_pair("YDATA", 0x09));
htdoughe 4:8065ca897f8b 18 registers.insert(6, make_pair("ZDATA", 0x0A));
htdoughe 4:8065ca897f8b 19 registers.insert(7, make_pair("STATUS", 0x0B));
htdoughe 4:8065ca897f8b 20 registers.insert(8, make_pair("FIFO_ENTRIES_L", 0x0C));
htdoughe 4:8065ca897f8b 21 registers.insert(9, make_pair("FIFO_ENTRIES_H", 0x0D));
htdoughe 4:8065ca897f8b 22 registers.insert(10, make_pair("XDATA_L", 0x0E));
htdoughe 4:8065ca897f8b 23 registers.insert(11, make_pair("XDATA_H", 0x0F));
htdoughe 4:8065ca897f8b 24 registers.insert(12, make_pair("YDATA_L", 0x10));
htdoughe 4:8065ca897f8b 25 registers.insert(13, make_pair("YDATA_H", 0x11));
htdoughe 4:8065ca897f8b 26 registers.insert(14, make_pair("ZDATA_L", 0x12));
htdoughe 4:8065ca897f8b 27 registers.insert(15, make_pair("ZDATA_H", 0x13));
htdoughe 4:8065ca897f8b 28 registers.insert(16, make_pair("TEMP_L", 0x14));
htdoughe 4:8065ca897f8b 29 registers.insert(17, make_pair("TEMP_H", 0x15));
htdoughe 4:8065ca897f8b 30 registers.insert(18, make_pair("SOFT_RESET", 0x1F));
htdoughe 4:8065ca897f8b 31 registers.insert(19, make_pair("THRESH_ACT_L", 0x20));
htdoughe 4:8065ca897f8b 32 registers.insert(20, make_pair("THRESH_ACT_H", 0x21));
htdoughe 4:8065ca897f8b 33 registers.insert(21, make_pair("TIME_ACT", 0x22));
htdoughe 4:8065ca897f8b 34 registers.insert(22, make_pair("THRESH_INACT_L", 0x23));
htdoughe 4:8065ca897f8b 35 registers.insert(23, make_pair("THRESH_INACT_H", 0x24));
htdoughe 4:8065ca897f8b 36 registers.insert(24, make_pair("TIME_INACT_L", 0x25));
htdoughe 4:8065ca897f8b 37 registers.insert(25, make_pair("TIME_INACT_H", 0x26));
htdoughe 4:8065ca897f8b 38 registers.insert(26, make_pair("ACT_INACT_CTL", 0x27));
htdoughe 4:8065ca897f8b 39 registers.insert(27, make_pair("FIFO_CONTROL", 0x28));
htdoughe 4:8065ca897f8b 40 registers.insert(28, make_pair("FIFO_SAMPLES", 0x29));
htdoughe 4:8065ca897f8b 41 registers.insert(29, make_pair("INTMAP1", 0x2A));
htdoughe 4:8065ca897f8b 42 registers.insert(30, make_pair("INTMAP2", 0x2B));
htdoughe 4:8065ca897f8b 43 registers.insert(31, make_pair("FILTER_CTL", 0x2C));
htdoughe 4:8065ca897f8b 44 registers.insert(32, make_pair("POWER_CTL", 0x2D));
htdoughe 4:8065ca897f8b 45 registers.insert(33, make_pair("SELF_TEST", 0x2E));
htdoughe 4:8065ca897f8b 46 }
htdoughe 4:8065ca897f8b 47
rmneubau 0:0f663d16e8a2 48 // Interface pulled from ADXL362.cpp
rmneubau 0:0f663d16e8a2 49 // ADXL362::ADXL362(PinName CS, PinName MOSI, PinName MISO, PinName SCK) :
rmneubau 0:0f663d16e8a2 50 ADXL362 adxl362(PA_0,PA_7,PA_6,PA_1);
rmneubau 0:0f663d16e8a2 51
rmneubau 0:0f663d16e8a2 52 int main() {
htdoughe 4:8065ca897f8b 53 initmap();
rmneubau 0:0f663d16e8a2 54 adxl362.reset();
rmneubau 0:0f663d16e8a2 55 wait_ms(600); // we need to wait at least 500ms after ADXL362 reset
rmneubau 0:0f663d16e8a2 56 adxl362.set_mode(ADXL362::MEASUREMENT);
rmneubau 0:0f663d16e8a2 57 int8_t x,y,z;
rmneubau 0:0f663d16e8a2 58 adxl362_reg_print(start, length);
rmneubau 0:0f663d16e8a2 59
rmneubau 0:0f663d16e8a2 60 while(1) {
rmneubau 0:0f663d16e8a2 61 x=adxl362.scanx_u8();
rmneubau 0:0f663d16e8a2 62 y=adxl362.scany_u8();
rmneubau 0:0f663d16e8a2 63 z=adxl362.scanz_u8();
rmneubau 0:0f663d16e8a2 64 printf("x = %d y = %d z = %d\r\n",x,y,z);
rmneubau 0:0f663d16e8a2 65 wait_ms(100);
rmneubau 0:0f663d16e8a2 66 }
rmneubau 0:0f663d16e8a2 67 }
rmneubau 0:0f663d16e8a2 68
rmneubau 0:0f663d16e8a2 69 int adxl362_reg_print(int s, int l){
htdoughe 4:8065ca897f8b 70 //check s is between 0x00 and 0x2E
htdoughe 4:8065ca897f8b 71 unsigned char regVal = 0;
rmneubau 0:0f663d16e8a2 72 if(s > 0x2E || s < 0x00){
htdoughe 1:b8716571ecac 73 printf("adx: requires start between 0x00 and 0x2E; given %d (0x%01x)\n", s,s);
htdoughe 4:8065ca897f8b 74 return -1;
rmneubau 0:0f663d16e8a2 75 }else if(l < 0){
htdoughe 4:8065ca897f8b 76 //check length > 0
htdoughe 1:b8716571ecac 77 printf("adx: requires length >= 0, given %d\n", l);
htdoughe 4:8065ca897f8b 78 return -1;
rmneubau 0:0f663d16e8a2 79 }else{
rmneubau 0:0f663d16e8a2 80 // start sending stuff
rmneubau 0:0f663d16e8a2 81 //first check DEVID_AD == 0xAD
htdoughe 4:8065ca897f8b 82 if(adxl362_board.DEVID_AD != 0xAD){
htdoughe 2:496a662be854 83 printf("error: DEVID_AD is not 0xAD; exiting\n");
htdoughe 4:8065ca897f8b 84 return -1;
rmneubau 0:0f663d16e8a2 85 }else{
rmneubau 0:0f663d16e8a2 86 //now do stuff
htdoughe 1:b8716571ecac 87 //if length == 0, send everything from s to end of registers
htdoughe 4:8065ca897f8b 88 //else print from s to l
htdoughe 4:8065ca897f8b 89 // formula : range = end - start - length
htdoughe 4:8065ca897f8b 90 // area = start + range
htdoughe 4:8065ca897f8b 91 int stop = 0;
htdoughe 1:b8716571ecac 92 if(l == 0){
htdoughe 4:8065ca897f8b 93 stop = 34;
htdoughe 3:813694e51f72 94 }else{
htdoughe 4:8065ca897f8b 95 stop = s + l;
htdoughe 4:8065ca897f8b 96 }
htdoughe 4:8065ca897f8b 97 int in = s;
htdoughe 4:8065ca897f8b 98 while(in < stop){
htdoughe 4:8065ca897f8b 99 //get register name
htdoughe 4:8065ca897f8b 100 string name = registers[in].first; //GET NAME
htdoughe 4:8065ca897f8b 101 uint16_t val = ADXL362::read_reg_u16(registers[in].secod); //GET REG VAL
htdoughe 4:8065ca897f8b 102 //print val
htdoughe 4:8065ca897f8b 103 printf("0x%01x: %s=0x%01x\r\n", in, name, val);
htdoughe 4:8065ca897f8b 104 in++;
htdoughe 1:b8716571ecac 105 }
rmneubau 0:0f663d16e8a2 106 }
rmneubau 0:0f663d16e8a2 107 }
rmneubau 0:0f663d16e8a2 108
htdoughe 1:b8716571ecac 109 }