Litt usikker på kvar eg skal begynne..
Du kjenner jo til UART, der du har kun datasignal og begge parter må kjenne overføringsraten for å forstå kva data som blir sendt.
I2C er en synkron (både klokke og datasignal) master-slave kobling der master (i ditt tilfelle AVRen) alltid driver en klokke som slave bruker for å synkronisere overføringen.
Det første du må få til er å aktivere I2C på AVRen din. Dersom du skriver i C så kan du sannsynlegvis bruke det som er beskrevet her direkte (det er nok uansett lett å "overføre" til andre programmeringspråk)
http://atmega32-avr.com/i2c-bus-for-attiny-and-atmega168/
I2C kommunikasjon foregår som regel ved at master skriver en 2-3 bytes verdi (som oftest adresse til slave + intern registeradresse som skal leses) og etter dette fortsetter å styre klokkelinja mens datalinja leses så mange bytes som du vil motta.
Hvis du ser i NAU7802 databladet på side 15 (http://www.chipcad.hu/letoltes/NAU7802.pdf) så ser du oversikt over skrive og lesekommandoer.
Vanlig skrivekommando er det 3 bytes som skal sendes. Først adresse til slave, så registeradresse, til slutt data som skal skrives til det registeret.
Ta ditt eksempel med "streaming mode" så står det på side 17 at du først skal sende "power up" ved å skrive bit 1 og 2 i register 0 lik 1. Dvs 00000110 (sjekk side 28 for info om de andre bits i samme register)
På side 15 står det "The NAU87802 is permanently programmed with 010 1010 (0x2A) as the Device Address." Denne adressa er berre 7 bit. Det siste bitet er brukt til Read/Write (Write=0)
Adresse byte blir da 010 1010 0 eller, 0x54
Dvs, en komplett skriving blir
0x54 0x00 0x06
Dersom du vil lese samme register så endrer du bit 0 i adressebyte til 1, også lar du klokka gå X antall bytes du vil lese etter at skriveoperasjon er fullført (veldig enkelt forklart. Les om start, stop, ack osv i linken over)
Prøv litt, og send meg gjerne koden din på mail dersom du har problemer så skal eg sjå om eg kan hjelpe deg videre
LT