Tu Hoang
/
Test_nucleo_MCUUU_EEPROMTEST
EEPROMTEST
Fork of Test_nucleo_MCUUU by
main.cpp
- Committer:
- MockyBirdTwo
- Date:
- 2018-05-23
- Revision:
- 15:44d291c21362
- Parent:
- 14:be6538b80545
- Child:
- 16:c998931f8395
File content as of revision 15:44d291c21362:
#include "mbed.h" // Include files and define parameters. #include "Adafruit_ADS1015.h" #include <vector> #include <string> 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. const int EEPROM_adr=0xA0 ;//8Bit address for I2C to EEPROM 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); cmd[1] = (uint8_t) Wreg; 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. // } // // // } }