i2c sda_pulled low by slave

hi,
am currently working in i2c protocol in arduino uno.i have successfully communicating over i2c to my end device(eeprom).but am facing some problem while the end device filer(due to some connection or internal problem),that time my overall communication is drooped.i need to reset the arduino manually, then only i can proceed further otherwise the arduino hang.
i measured the voltage whiile hanging.
scl is 4v
sdais 0v.
please kindly any one help me.

The description of your problem is poor to say it politely. There is no link to the datasheet of the EEPROM chip you're using and no wiring diagram of your setup. You also forget to post the full code your using. What do you expect from use? Helping you without any useful information?

hi,
here i attached my code. please forgive me for lake of communication,here mentioned my obtained result and issue.
1.upload my code to arduino uno. am receiving selection data from another master controller(advark).once i get the selection data, my arduino start to select the end device(eeprom) based on received selection data.
2.if my end device(eeprom) not percent no issue,i can move to next device by using next selection data.
3.if my end device is present with working condition that time also no issue.
4.if my end device present with some internal problem(device itself) that time my overall i2c bus arduino is hung i cant proceed further(its not go into interrupt routine-for receive selection data) until manual reset this is my issue.

i2c hang that time both the sda and scl line are goes low.
if my device file i need to overcome this without manual reset.by using software please can any one give some solution.
thanks ,

am 100% sure my hardware working correctly.

I2C_REV002SEL_FINAL_number_receive_clock_streching3-03-2017.ino (9.52 KB)

If I interpret your description correctly (you still didn't provide a wiring diagram) you have a setup with one Arduino being slave for a PC and master for several EEPROM devices handled over a I2C bus multiplexer. This won't work as it would be a multi-master setup and that is not supported by the Wire library.

I strongly suggest removing the PC<->Arduino connection from the I2C bus and using the UART (standard serial device) for that. You don't follow the I2C paradigm on the PC-Arduino communication anyway, what you do there is more a serial communication, so use that interface.

yes your wright,my arduino received data from another controller (that time my arduino act as slave ) once the commend received-my arduino act as master but its work when the slave in(eeprom)good condition ,even i tested continuously in a day. only the problem occurred if some internal issue in slave(eeprom) due to some function failure.

is any option to solve this with the same method( without serial).

only the problem occurred if some internal issue in slave(eeprom) due to some function failure.

What exactly does tell you that the EEPROM is responsible for the failure?

is any option to solve this with the same method( without serial).

If you want to have a reliable system I don't think so.