Schau dir mal die I2C Module an (nicht gerade das vom BMP180 da dort noch die HiPi Option drin ist, die an sich keinen Sinn mehr macht und das Modul nur verkompliziert).
Hier hast du ein Modul für einen bereits bestehenden 3-Achsen Beschleunigungssensor
Hier habe ich ein paar Kommentare zur Funktion an den Subroutinen.
Das wichtigste, was du beachten musst ist, daß die I2C Kommunikation asynchron aufgebaut sein muss. Sprich Register auslesen und die Antwort darauf sind entkoppelt (du kannst nicht einfach einen Registerinhalt anfordern und gleich mit dem Ergebnis weiterarbeiten). Sonder du forderst einen Registerinhalt an. Dieser wird dann irgendwann geliefert und dann machst du weiter.
Hat der HMC5883L eine Triggeroption, oder wie möchtest du ihn am Gaszähler verwenden?