Warum bindest Du in "mpu_eigen.h" die Datei "i2c.h" ein?
Wird in "mpu_eigen.h" irgendwas aus der anderen Datei verwendet?
Das ist eine Frage, die Du Dir immer stellen solltest.
Sollte "keine Referenz" die Übersetzung von "undefined reference" sein,
dann ist das wiederum kein Compiler-, sondern ein Linkerfehler.
Du sagst zwar dem Compiler, daß es irgendwo ein Symbol X gäbe (das
kann eine Funktion oder auch eine Variable sein), aber dem Linker wirfst
Du nicht die Datei vor, in der der zugehörige Code bzw. Speicherbereich
enthalten ist.
Du wirst Dir mal die Projektverwaltung Deiner Entwicklungsumgebung
ansehen müssen, Stichwort: "Wie setze ich ein Projekt aus mehreren
Quelldateien zusammen"
--
Oh, und Deine Datei "i2c.h" solltest Du Dir nochmal ganz genau ansehen.
Das ist keine *.h-Datei, diese Datei enthält Quellcode, und nicht nur
Deklarationen.
Du solltest in Deinem C-Buch nochmal den Teil durchlesen, in dem
beschrieben steht, was wann in einer *.h-Datei unterzubringen ist.