EEPROMTEST

Dependencies:   ADS1015 mbed

Fork of Test_nucleo_MCUUU by BAP TUDelft

Committer:
MockyBirdTwo
Date:
Wed May 23 09:19:46 2018 +0000
Revision:
15:44d291c21362
Parent:
14:be6538b80545
Child:
16:c998931f8395
EEPROM werkt

Who changed what in which revision?

UserRevisionLine numberNew contents of line
xorjoep 0:952479e15354 1 #include "mbed.h" // Include files and define parameters.
xorjoep 0:952479e15354 2 #include "Adafruit_ADS1015.h"
MockyBirdTwo 7:65325c237ac5 3 #include <vector>
MockyBirdTwo 9:cc559f905411 4 #include <string>
MockyBirdTwo 15:44d291c21362 5
MockyBirdTwo 9:cc559f905411 6 using namespace std;
xorjoep 0:952479e15354 7
MockyBirdTwo 9:cc559f905411 8 I2C i2c(PB_9, PB_8); // I2C for sensorplate.
MockyBirdTwo 9:cc559f905411 9 Adafruit_ADS1115 piezo_resistive_adc1(&i2c, 0x48); // i2c pins, i2c address.
MockyBirdTwo 9:cc559f905411 10 Adafruit_ADS1115 piezo_resistive_adc2(&i2c, 0x49); // i2c pins, i2c address.
MockyBirdTwo 9:cc559f905411 11 Adafruit_ADS1115 piezo_electric_adc(&i2c, 0x4B); // i2c pins, i2c address.
MockyBirdTwo 14:be6538b80545 12
MockyBirdTwo 9:cc559f905411 13
xorjoep 0:952479e15354 14 Serial usb_serial(SERIAL_TX, SERIAL_RX); // tx, rx
xorjoep 0:952479e15354 15
xorjoep 0:952479e15354 16 int i2c__frequency = 100000; // I2C Frequency.
xorjoep 0:952479e15354 17 int baud_rate = 115200; // Baud rate.
MockyBirdTwo 14:be6538b80545 18 const int EEPROM_adr=0xA0 ;//8Bit address for I2C to EEPROM
xorjoep 4:fd10d8609295 19 Timer timer;
xorjoep 4:fd10d8609295 20
MockyBirdTwo 7:65325c237ac5 21 // array to save sensor data
MockyBirdTwo 3:efb3a5b4bc9e 22
xorjoep 0:952479e15354 23 DigitalOut myled(LED1);
MockyBirdTwo 3:efb3a5b4bc9e 24
MockyBirdTwo 8:2875bb7a4e67 25 //Check whether any sensor values are zero
MockyBirdTwo 9:cc559f905411 26 void checkzero (vector<int>& sendat, int size){
MockyBirdTwo 9:cc559f905411 27 usb_serial.printf("Zero:");
MockyBirdTwo 7:65325c237ac5 28 for(int i=0;i<size;++i){
MockyBirdTwo 9:cc559f905411 29 if(sendat[i]> -5 & sendat[i] < 5){
MockyBirdTwo 9:cc559f905411 30 sendat[i]=0;}
MockyBirdTwo 9:cc559f905411 31 if(sendat[i]!= 0){
MockyBirdTwo 9:cc559f905411 32 usb_serial.printf("%d\n", i);}
MockyBirdTwo 9:cc559f905411 33 else{
MockyBirdTwo 9:cc559f905411 34 usb_serial.printf("%d\n", i);}
MockyBirdTwo 7:65325c237ac5 35 }
MockyBirdTwo 7:65325c237ac5 36 }
MockyBirdTwo 12:c0a99de7c6d3 37 //EEPROM
MockyBirdTwo 12:c0a99de7c6d3 38 // Device Code Chip Enable RW
MockyBirdTwo 12:c0a99de7c6d3 39 //Bit b7 b6 b5 b4 b3 b2 b1 b0
MockyBirdTwo 12:c0a99de7c6d3 40 //Device Select 1 0 1 0 E2 E1 E0 RW
MockyBirdTwo 12:c0a99de7c6d3 41 // E0,E1 and E2 are to identify device
MockyBirdTwo 9:cc559f905411 42 //Writing EEPROM through I2C
MockyBirdTwo 15:44d291c21362 43 void EEPROM_ready(){
MockyBirdTwo 14:be6538b80545 44 int ack;
MockyBirdTwo 15:44d291c21362 45 uint8_t waddr[2];
MockyBirdTwo 15:44d291c21362 46 waddr[0] = 0;
MockyBirdTwo 15:44d291c21362 47 // Wait end of write
MockyBirdTwo 15:44d291c21362 48 do {
MockyBirdTwo 15:44d291c21362 49 ack = i2c.write(EEPROM_adr,(char *)waddr,0);
MockyBirdTwo 15:44d291c21362 50 } while(ack != 0);
MockyBirdTwo 9:cc559f905411 51 }
MockyBirdTwo 8:2875bb7a4e67 52
MockyBirdTwo 15:44d291c21362 53 void EEPROM_write(uint32_t Wreg, int8_t EEPROM_dat){
MockyBirdTwo 15:44d291c21362 54 int ack;
MockyBirdTwo 15:44d291c21362 55 uint8_t cmd[3];
MockyBirdTwo 15:44d291c21362 56 cmd[0] = (uint8_t) (Wreg >> 8); //Address MSB
MockyBirdTwo 15:44d291c21362 57 cmd[1] = (uint8_t) Wreg; //Address LSB
MockyBirdTwo 15:44d291c21362 58 cmd[2] = (uint8_t) EEPROM_dat; //Data
MockyBirdTwo 15:44d291c21362 59
MockyBirdTwo 15:44d291c21362 60 ack=i2c.write(EEPROM_adr,(char*)cmd,sizeof(cmd));
MockyBirdTwo 15:44d291c21362 61 if(ack != 0) {
MockyBirdTwo 15:44d291c21362 62 usb_serial.printf("ERRORwrite\r\n");
MockyBirdTwo 15:44d291c21362 63 }
MockyBirdTwo 15:44d291c21362 64 // Wait end of write
MockyBirdTwo 15:44d291c21362 65 EEPROM_ready();
MockyBirdTwo 15:44d291c21362 66 }
MockyBirdTwo 15:44d291c21362 67
MockyBirdTwo 15:44d291c21362 68 void EEPROM_read(uint32_t Wreg, int8_t& EEPROM_dat){
MockyBirdTwo 15:44d291c21362 69 int ack;
MockyBirdTwo 15:44d291c21362 70 uint8_t cmd[2];
MockyBirdTwo 15:44d291c21362 71
MockyBirdTwo 15:44d291c21362 72 cmd[0] = (uint8_t) (Wreg >> 8);
MockyBirdTwo 15:44d291c21362 73 cmd[1] = (uint8_t) Wreg;
MockyBirdTwo 15:44d291c21362 74 ack = i2c.write(EEPROM_adr,(char*)cmd,2,true);
MockyBirdTwo 15:44d291c21362 75 if(ack != 0) {
MockyBirdTwo 15:44d291c21362 76 usb_serial.printf("ERRORfakewrite\r\n");
MockyBirdTwo 15:44d291c21362 77 }
MockyBirdTwo 15:44d291c21362 78 ack=i2c.read(EEPROM_adr,(char*)&EEPROM_dat,sizeof(EEPROM_dat));
MockyBirdTwo 15:44d291c21362 79 if(ack != 0) {
MockyBirdTwo 15:44d291c21362 80 usb_serial.printf("ERRORread\r\n");
MockyBirdTwo 15:44d291c21362 81 }
MockyBirdTwo 15:44d291c21362 82 }
MockyBirdTwo 14:be6538b80545 83
xorjoep 0:952479e15354 84 int main(){
MockyBirdTwo 14:be6538b80545 85
MockyBirdTwo 9:cc559f905411 86 i2c.frequency(i2c__frequency); // Set frequency for i2c connection to sensorplate (variable is declared in config part).
MockyBirdTwo 15:44d291c21362 87 usb_serial.baud(baud_rate); // Set serial USB connection baud rate (variable is declared in config part).
MockyBirdTwo 14:be6538b80545 88
MockyBirdTwo 14:be6538b80545 89 // vector<int> S_data(8);
MockyBirdTwo 14:be6538b80545 90
MockyBirdTwo 15:44d291c21362 91 uint32_t Wreg= 10;
MockyBirdTwo 15:44d291c21362 92 int8_t EEPROM_dat=56;
MockyBirdTwo 15:44d291c21362 93 int8_t result=0;
MockyBirdTwo 15:44d291c21362 94
MockyBirdTwo 15:44d291c21362 95 usb_serial.printf("Startooo\r\n");
MockyBirdTwo 15:44d291c21362 96 EEPROM_write(Wreg,EEPROM_dat);
MockyBirdTwo 15:44d291c21362 97 EEPROM_read(Wreg,result);
MockyBirdTwo 15:44d291c21362 98 usb_serial.printf("EEPROMdata = %d\r\n", result);
MockyBirdTwo 14:be6538b80545 99
MockyBirdTwo 13:9bd3083f02d4 100 // piezo_resistive_adc1.setGain(GAIN_TWOTHIRDS); // Set ranges of ADC to +/-6.144V (end is marked with #):
MockyBirdTwo 13:9bd3083f02d4 101 // piezo_resistive_adc2.setGain(GAIN_TWOTHIRDS);
MockyBirdTwo 13:9bd3083f02d4 102 //
MockyBirdTwo 13:9bd3083f02d4 103 // usb_serial.printf("Gains set.\n");
MockyBirdTwo 13:9bd3083f02d4 104 //
MockyBirdTwo 13:9bd3083f02d4 105 // timer.start();
MockyBirdTwo 13:9bd3083f02d4 106 // while(1){
MockyBirdTwo 13:9bd3083f02d4 107 // while(timer.read_us() < 2000){}; timer.reset(); //Set readout frequency
MockyBirdTwo 13:9bd3083f02d4 108 //
MockyBirdTwo 14:be6538b80545 109
MockyBirdTwo 13:9bd3083f02d4 110 // //usb_serial.printf("Piezo electric 0_1 dif %d \n", piezo_electric_adc.readADC_Differential_0_1()); // First PE readout.
MockyBirdTwo 13:9bd3083f02d4 111 //// usb_serial.printf("Piezo electric 2_3 dif %d \n", piezo_electric_adc.readADC_Differential_2_3());
MockyBirdTwo 13:9bd3083f02d4 112 //
MockyBirdTwo 13:9bd3083f02d4 113 // for (uint8_t t=0; t<4; ++t){ //Save sensor data into array
MockyBirdTwo 13:9bd3083f02d4 114 // S_data[t] = (int16_t) piezo_resistive_adc1.readADC_SingleEnded(t); //Put first 4 PR sensor data into first 4 S_data array
MockyBirdTwo 13:9bd3083f02d4 115 // S_data[t+4]= (int16_t) piezo_resistive_adc2.readADC_SingleEnded(t); //Put next 4 PR sensor data into first 4 S_data array
MockyBirdTwo 13:9bd3083f02d4 116 // }
MockyBirdTwo 13:9bd3083f02d4 117 //
MockyBirdTwo 13:9bd3083f02d4 118 // checkzero(S_data,S_data.size()); //Check whether any sensor values are zero
MockyBirdTwo 13:9bd3083f02d4 119 // for (uint8_t k = 0; k < 4; ++k) {
MockyBirdTwo 13:9bd3083f02d4 120 // usb_serial.printf("R %d Ar %d: %d\n", k, 1, S_data[k]); // First 4 PR readout.
MockyBirdTwo 13:9bd3083f02d4 121 // usb_serial.printf("R %d Ar %d: %d\n", k, 2, S_data[k+4]); // Next 4 PR readout.
MockyBirdTwo 13:9bd3083f02d4 122 // }
MockyBirdTwo 13:9bd3083f02d4 123 //
MockyBirdTwo 13:9bd3083f02d4 124 //
MockyBirdTwo 13:9bd3083f02d4 125 // }
xorjoep 0:952479e15354 126 }