Was benutzt Du genau für einen AVR, einen Tiny oder AT90 ?
Beim AT90 passt das $regfile, für den Tiny nicht !

Die haben beide kein TWI onboard, also bleibt erstmal nur Soft-I2C.
Der Tiny hat USI, das kann auch so tun wie I2C, beim AT90 bleibt nur die Softwarelösung.

Ich hab hier mal eine Lib gebaut, die das USI verwendet, dazu muss man aber auch die vorgesehen Ports verwenden !
https://www.roboternetz.de/phpBB2/ze...ag.php?t=26774

In Sachen Pullups wird sonst gerne etwas um die 10k verwendet, hab auch schon 4k7 gesehen, mit den 22k sollte es aber erstmal auch gehen.

Das mit dem Read haut so immer noch nicht hin, Du bekommst so den Wert nicht wieder ins Hauptprogramm !
Mach mal einen Function draus:

Code:
Declare Function Read_eeprom(byval Lesen As Byte) As Byte
und in der Function am ende:
Code:
Read_eeprom = Lesen
' oder gleich 
I2crbyte Read_eeprom