+
+ delay(); // NEEDED?
+
+ start_condition(); // restart condition
+ rwrite(I2C_DR, READ_CMD); // read? to address CMD
+ if(!ack_recv()) {
+ printf("Can't initiate read");
+ return -1;
+ }
+
+
+ rsetbit(I2C_CR1, 10); // send ack if Master receives data
+// data_recv();
+// char c = *I2C_DR;
+// printf("%d:%p\n", addr, c);
+ for (int i = 0; i < BUFFER ; i++ ) {
+ data_recv();
+ buf[i] = (char) *I2C_DR;
+ }
+
+ printf("%p, %p, %p, %p\n", *I2C_SR1, *I2C_SR2, *I2C_DR, *I2C_CR1);
+ printf("DATA: %s\n", buf);
+
+}
+
+void at24c_run() {
+
+// char * global_data = "abcdefghijklmnop";
+
+// eeprom_write(0x0080, global_data, strlen(global_data));
+
+// delay();
+
+// for (int i = 0; i < 0xFFFF; i++) {
+// eeprom_read(i);
+// delay();
+// }
+
+ //delay();
+
+ eeprom_read(0x0000);
+
+//W uint32_t statusr;
+//W
+//W start_condition();
+//W rwrite(I2C_DR, WRITE_CMD); // write to address CMD
+//W if(!ack_recv())
+//W cputs("CAN'T REACH DEVICE");
+//W
+//W rwrite(I2C_DR, 0x00);
+//W if(!buf_empty())
+//W cputs("FAIL");
+//W rwrite(I2C_DR, 0x03);
+//W if(!buf_empty())
+//W cputs("FAIL");
+//W //rwrite(I2C_DR, 0x61);
+//W //if(!buf_empty())
+//W // cputs("FAIL");
+//W
+//W //statusr = *I2C_SR1;
+//W //statusr = *I2C_SR2;
+//W stop_condition();