Device to measure angle and get IMU measurements.

Dependencies:   mbed commands BLE_API nRF51822

Committer:
dkester
Date:
Mon Jun 01 15:41:01 2015 +0000
Revision:
3:a3e1a06c486d
Parent:
1:b44bd62c542f
Child:
4:2a5a08b14539
hoi;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dkester 0:1c5088dae6e1 1 #include "Storage.h"
dkester 0:1c5088dae6e1 2
dkester 0:1c5088dae6e1 3 SPI spi(p20, p22, p25); // mosi, miso, sclk
dkester 1:b44bd62c542f 4 DigitalOut cs(p14);
dkester 0:1c5088dae6e1 5
dkester 0:1c5088dae6e1 6 Storage* Storage::instance = new Storage();
dkester 0:1c5088dae6e1 7
dkester 0:1c5088dae6e1 8 Storage::Storage()
dkester 0:1c5088dae6e1 9 {
dkester 0:1c5088dae6e1 10 cs = 1;
dkester 1:b44bd62c542f 11 spi.format(8,0);
dkester 0:1c5088dae6e1 12 spi.frequency(300000);
dkester 0:1c5088dae6e1 13 }
dkester 0:1c5088dae6e1 14
dkester 0:1c5088dae6e1 15 Storage* Storage::getInstance()
dkester 0:1c5088dae6e1 16 {
dkester 0:1c5088dae6e1 17 return instance;
dkester 0:1c5088dae6e1 18 }
dkester 0:1c5088dae6e1 19
dkester 3:a3e1a06c486d 20 void Storage::setup(){
dkester 3:a3e1a06c486d 21 }
dkester 3:a3e1a06c486d 22
dkester 3:a3e1a06c486d 23 void Storage::endAction(){
dkester 3:a3e1a06c486d 24 cs = 1;
dkester 3:a3e1a06c486d 25 }
dkester 3:a3e1a06c486d 26
dkester 3:a3e1a06c486d 27 bool Storage::setWREN(){
dkester 3:a3e1a06c486d 28 cs = 0;
dkester 3:a3e1a06c486d 29 spi.write(0x06);
dkester 3:a3e1a06c486d 30 cs = 1;
dkester 3:a3e1a06c486d 31
dkester 1:b44bd62c542f 32 cs = 0;
dkester 3:a3e1a06c486d 33 spi.write(0x05);
dkester 3:a3e1a06c486d 34
dkester 3:a3e1a06c486d 35 if(spi.write(0x00) & 0x2){
dkester 3:a3e1a06c486d 36 cs = 0;
dkester 3:a3e1a06c486d 37 return true;
dkester 3:a3e1a06c486d 38 } else {
dkester 3:a3e1a06c486d 39 cs = 0;
dkester 3:a3e1a06c486d 40 return 1;
dkester 3:a3e1a06c486d 41 }
dkester 3:a3e1a06c486d 42 }
dkester 3:a3e1a06c486d 43
dkester 3:a3e1a06c486d 44 bool Storage::isBusy(){
dkester 3:a3e1a06c486d 45 cs = 0;
dkester 3:a3e1a06c486d 46 spi.write(0x05);
dkester 3:a3e1a06c486d 47
dkester 3:a3e1a06c486d 48 if(spi.write(0x00) & 0x1){
dkester 3:a3e1a06c486d 49 cs = 0;
dkester 3:a3e1a06c486d 50 return true;
dkester 3:a3e1a06c486d 51 } else {
dkester 3:a3e1a06c486d 52 cs = 0;
dkester 3:a3e1a06c486d 53 return 1;
dkester 3:a3e1a06c486d 54 }
dkester 3:a3e1a06c486d 55 }
dkester 1:b44bd62c542f 56
dkester 3:a3e1a06c486d 57 void Storage::pageProgram(int32_t addr){
dkester 3:a3e1a06c486d 58 cs = 0;
dkester 3:a3e1a06c486d 59 spi.write(0x12);
dkester 3:a3e1a06c486d 60
dkester 3:a3e1a06c486d 61 for(int i = 3; i >= 0; i--){
dkester 3:a3e1a06c486d 62 spi.write((addr >> (8*i)) & 0xff);
dkester 3:a3e1a06c486d 63 }
dkester 3:a3e1a06c486d 64 }
dkester 3:a3e1a06c486d 65
dkester 3:a3e1a06c486d 66 void Storage::writeData(int8_t data){
dkester 3:a3e1a06c486d 67 spi.write(data);
dkester 3:a3e1a06c486d 68 }
dkester 3:a3e1a06c486d 69
dkester 3:a3e1a06c486d 70 void Storage::read(int32_t addr){
dkester 3:a3e1a06c486d 71 cs = 0;
dkester 3:a3e1a06c486d 72
dkester 3:a3e1a06c486d 73 spi.write(0x13);
dkester 0:1c5088dae6e1 74
dkester 3:a3e1a06c486d 75 //char[4] bytes;
dkester 3:a3e1a06c486d 76 //bytes[0] = (addr >> 24) & 0xff;
dkester 3:a3e1a06c486d 77 //bytes[1] = (addr >> 16) & 0xff;
dkester 3:a3e1a06c486d 78 //bytes[2] = (addr >> 8) & 0xff;
dkester 3:a3e1a06c486d 79 //bytes[3] = addr & 0xff;
dkester 3:a3e1a06c486d 80
dkester 3:a3e1a06c486d 81 for(int i = 3; i < 0; i--){
dkester 3:a3e1a06c486d 82 spi.write((addr >> (8*i)) & 0xff);
dkester 3:a3e1a06c486d 83 }
dkester 3:a3e1a06c486d 84 }
dkester 3:a3e1a06c486d 85
dkester 3:a3e1a06c486d 86 int8_t Storage::readData(){
dkester 3:a3e1a06c486d 87 return spi.write(0x00);
dkester 3:a3e1a06c486d 88 }
dkester 3:a3e1a06c486d 89
dkester 3:a3e1a06c486d 90
dkester 3:a3e1a06c486d 91