EEPROMTEST

Dependencies:   ADS1015 mbed

Fork of Test_nucleo_MCUUU by BAP TUDelft

main.cpp

Committer:
MockyBirdTwo
Date:
2018-05-23
Revision:
16:c998931f8395
Parent:
15:44d291c21362
Child:
17:41160d6c66ae

File content as of revision 16:c998931f8395:

#include "mbed.h"                                                                   // Include files and define parameters.
#include "Adafruit_ADS1015.h"
#include <vector>
#include <string>
#define EEPROM_adr (0xA0)//8Bit address for I2C to EEPROM
using namespace std;

I2C i2c(PB_9, PB_8);                                                  // I2C for sensorplate.
Adafruit_ADS1115 piezo_resistive_adc1(&i2c, 0x48);                  // i2c pins, i2c address.
Adafruit_ADS1115 piezo_resistive_adc2(&i2c, 0x49);                  // i2c pins, i2c address.
Adafruit_ADS1115 piezo_electric_adc(&i2c, 0x4B);                    // i2c pins, i2c address.


Serial usb_serial(SERIAL_TX, SERIAL_RX);                                            // tx, rx

int i2c__frequency = 100000;                                                              // I2C Frequency.
int baud_rate = 115200;                                                             // Baud rate.
Timer timer;

                                                                 // array to save sensor data

DigitalOut myled(LED1);

//Check whether any sensor values are zero
void checkzero (vector<int>& sendat, int size){ 
    usb_serial.printf("Zero:");
    for(int i=0;i<size;++i){
        if(sendat[i]> -5 & sendat[i] < 5){
            sendat[i]=0;}
                if(sendat[i]!= 0){
                    usb_serial.printf("%d\n", i);}
                else{
                    usb_serial.printf("%d\n", i);}
    }
}
//EEPROM
//              Device      Code  Chip   Enable  RW
//Bit           b7 b6 b5 b4 b3    b2     b1      b0
//Device Select 1  0  1  0  E2    E1     E0      RW
// E0,E1 and E2 are to identify device
//Writing EEPROM through I2C
void EEPROM_ready(){
    int ack;
    uint8_t waddr[2];
    waddr[0] = 0;
  // Wait end of write
  do {
       ack = i2c.write(EEPROM_adr,(char *)waddr,0);
  } while(ack != 0);
}

void EEPROM_write(uint32_t Wreg, int8_t EEPROM_dat){
    int ack;
    uint8_t cmd[3];
    cmd[0] = (uint8_t) (Wreg >> 8); //Address MSB
    cmd[1] = (uint8_t) Wreg;        //Address LSB
    cmd[2] = (uint8_t) EEPROM_dat;       //Data
    
    ack=i2c.write(EEPROM_adr,(char*)cmd,sizeof(cmd));
    if(ack != 0) {
    usb_serial.printf("ERRORwrite\r\n");
    }
    // Wait end of write
    EEPROM_ready();
}

void EEPROM_read(uint32_t Wreg, int8_t& EEPROM_dat){
    int ack;
    uint8_t cmd[2];
    
    cmd[0] = (uint8_t) (Wreg >> 8); //Address MSB
    cmd[1] = (uint8_t) Wreg;        //Address LSB
    
    ack = i2c.write(EEPROM_adr,(char*)cmd,2,true);
    if(ack != 0) {
    usb_serial.printf("ERRORfakewrite\r\n");
    }
    ack=i2c.read(EEPROM_adr,(char*)&EEPROM_dat,sizeof(EEPROM_dat));
    if(ack != 0) {
    usb_serial.printf("ERRORread\r\n");
    } 
}

int main(){

    i2c.frequency(i2c__frequency);                                    // Set frequency for i2c connection to sensorplate (variable is declared in config part).
    usb_serial.baud(baud_rate);                                                     // Set serial USB connection baud rate (variable is declared in config part).
    
//    vector<int> S_data(8);  

    uint32_t Wreg= 10;
    int8_t EEPROM_dat=56;
    int8_t result=0;
    
    usb_serial.printf("Startooo\r\n");
    EEPROM_write(Wreg,EEPROM_dat);
    EEPROM_read(Wreg,result);
    usb_serial.printf("EEPROMdata = %d\r\n", result); 

//    piezo_resistive_adc1.setGain(GAIN_TWOTHIRDS);                                   // Set ranges of ADC to +/-6.144V (end is marked with #):
//    piezo_resistive_adc2.setGain(GAIN_TWOTHIRDS);   
//
//    usb_serial.printf("Gains set.\n");  
//    
//    timer.start();
//    while(1){
//        while(timer.read_us() < 2000){}; timer.reset(); //Set readout frequency
//
        
//        //usb_serial.printf("Piezo electric 0_1 dif %d \n", piezo_electric_adc.readADC_Differential_0_1());            // First PE readout.
////        usb_serial.printf("Piezo electric 2_3 dif %d \n", piezo_electric_adc.readADC_Differential_2_3()); 
//
//        for (uint8_t t=0; t<4; ++t){ //Save sensor data into array
//            S_data[t] = (int16_t) piezo_resistive_adc1.readADC_SingleEnded(t);             //Put first 4 PR sensor data into first 4 S_data array
//            S_data[t+4]= (int16_t) piezo_resistive_adc2.readADC_SingleEnded(t);             //Put next 4 PR sensor data into first 4 S_data array
//        }
//        
//        checkzero(S_data,S_data.size());                                  //Check whether any sensor values are zero
//        for (uint8_t k = 0; k < 4; ++k) {
//            usb_serial.printf("R %d Ar %d: %d\n", k, 1, S_data[k]);  // First 4 PR readout.
//            usb_serial.printf("R %d Ar %d: %d\n", k, 2, S_data[k+4]);  // Next 4 PR readout.
//        }
//        
//    
//    }
}