Forum: Mikrocontroller und Digitale Elektronik Wer könnte mir helfen (I2C)?


von Stefan B. (sibbl) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo geschätzes Forum,

ich möchte über I2C 2 Teilnehmer anschließen. Zum Einen wäre das ein 
EEprom (24C256) und zum Anderen ein Luftdrucksensor (BMP085 von Bosch). 
Libs zu Hauf gibt es für jeden Einzelnen, aber für beide zusammen kann 
ich nichts finden. Genauso wenig finde ich über die Suchmaschine oder 
hier, wie man 2 Teilnehmer konfigurieren muss (Master/Slave). Davon 
abgesehen muss ich ehrlich zugeben, dass ich jetz nicht unbedingt der 
große Programmierexperte bin.

Zustand momentan ist so, dass der EEprom erfolgreich eingebunden wurde. 
D.h. das Problem, welches ich habe, den BMP085 irgendwie jetzt ins 
System zu bringen.

Die 2 24C64-Files laufen tadellos. Wie binde ich jetzt das i2cmaster.h 
und twimaster.c  File darin ein? Oder kann man die getrennt laufen 
lassen? Bin grade ein bißchen am Verzweifeln.

Ich wäre für eine Hilfe sehr dankbar.

Bitte keine Kommentare: Dann lerne das Programmieren........


Gruss Stefan

: Bearbeitet durch User
von PittyJ (Gast)


Lesenswert?

Du weisst, was du da tust?
Du weisst, wie I2c funktioniert? So mit Adressbyte etc?
Was bedeutet: die Files laufen tadellos? Sie kompilieren? Oder hast du 
schon Daten gelesen/geschrieben?
Warum kannst du dann das Wissen der Eproms nicht auf den 
Luftdrucksensors transferieren?

Oder hast du nur irgend welche Sourcen irgend woher kopiert?

von Michael (Gast)


Lesenswert?

Stefan B. schrieb:
> Libs zu Hauf gibt es für jeden Einzelnen, aber für beide zusammen kann
> ich nichts finden. Genauso wenig finde ich über die Suchmaschine oder
> hier, wie man 2 Teilnehmer konfigurieren muss (Master/Slave).

Wenn man für jedes Pärchen von 2 I2C Geräten eine eigene Lib bräuchte, 
hätte man das Thema auch ziemlich verfehlt. Außer deinen beiden 
I2C-Teilnehmern (EEPROM und Drucksensor) hast du als dritten Teilnehmer 
immer deinen µC als Master. Die I2C Grundfunktionen sind für beide 
Slaves gleich. Unterschiede bestehen in den Funktionen der Register und 
den zu übertragenden Daten. Und ob die Bibliothek nun I2C oder TWI 
heißt, dürfte ziemlich egal sein ;-)
Dein Hauptprogramm wirst du dir, abhängig von den gewünschten 
Funktionen, wohl selber schreiben müssen, weil das abhängig davon ist, 
was du außer "anschließen" mit deinen beiden Teilnehmern vor hast.

von Stefan B. (sibbl) Benutzerseite


Lesenswert?

PittyJ schrieb:
> Du weisst, was du da tust?

Ähhm.....

PittyJ schrieb:
> Was bedeutet: die Files laufen tadellos?

Der verbaute EEprom speichert meine Variablen und gelesen werden sie 
auch.

PittyJ schrieb:
> Warum kannst du dann das Wissen der Eproms nicht auf den
> Luftdrucksensors transferieren?

Das ist ja mein Problem, welches ich habe -->

Stefan B. schrieb:
> Davon
> abgesehen muss ich ehrlich zugeben, dass ich jetz nicht unbedingt der
> große Programmierexperte bin.

Ich habe die Files aus dem Netz.

PittyJ schrieb:
> Oder hast du nur irgend welche Sourcen irgend woher kopiert?

Leider ja...

Michael schrieb:
> Dein Hauptprogramm wirst du dir, abhängig von den gewünschten
> Funktionen, wohl selber schreiben müssen, weil das abhängig davon ist,
> was du außer "anschließen" mit deinen beiden Teilnehmern vor hast.

Das ist fertig und läuft. Halt noch ohne den BMP085. Und den möchte ich 
ja gerne noch irgendwie darin einbinden.

Beitrag "Unabhängiger Timer gesucht"

von Stefan (Gast)


Lesenswert?

Du solltest die Libraries der beiden Chips so umschreiben, dass sie auf 
eine gemeinsame Library für I2C Kommunikation aufsetzen. Dann ist sicher 
gestellt, dass sie sich nicht gegenseitig stören.

Abgesehen davon: Du kannst beide Chips einfach wechselweise ansprechen, 
denn sie haben ja unterschiedliche Adressen.

Wo ist dein Problem? Was klappt nicht?

Hast Du die beiden Chips wenigstens schonmal einzeln unabhängig 
voneinander angesprochen? Falls nicht, ist die primäre Frage nicht die 
von Dir gestellte (wie bringe ich beide zusammen), sondern: Wie benutze 
ich die eine oder andere Library.

Also, verrate uns, was nicht klappt. "Irgendwie einbinden" ist ein 
bisschen wenig, da fragt man sich, ob Du es überhaupt versucht hast und 
was Du versucht hast.

von Jope (Gast)


Lesenswert?

Der BMP085-Code benutzt die I2C-Bibliothek von Fleury (i2cmaster.h + 
twimaster.c). Das ist doch schon mal was. Die Webseite zu Peter Fleurys 
I2C-Bibliothek: 
http://homepage.hispeed.ch/peterfleury/group__pfleury__ic2master.html

Was Du jetzt machen musst, ist die Ansteuerung des 24C64 und 24C256 
mithilfe der Fleury-Bibliothek zu programmieren. Mit der Anleitung zur 
Bibliothek (auf der Webseite oben) und den Datenblättern der EEPROMs 
sollte das eigentlich zu schaffen sein. Nur mit Copy & Paste ist man 
halt ständig auf andere angewiesen, und das macht auf die Dauer auch 
nicht wirklich Spaß.

von Stefan B. (sibbl) Benutzerseite


Lesenswert?

Stefan schrieb:
> Wo ist dein Problem? Was klappt nicht?

Ich bringe mir gcc die letzte Zeit selbst per "Learning by Doing" bei. 
Würde es nicht wahnsinnigen Spaß machen und hätte ich nicht schon für 
mich "richtige" Erfolgserlebnisse, hätte ich schon längst alles 
hingeworfen, denn ein rießiger Teil meiner Freizeit geht dabei drauf. 
Ist möglicherweise bei jedem so ;-) Mal abgesehen von denen, die das von 
Grund auf lernen und ihre berufliche Laufbahn danach ausrichten. Für 
mich ist es ein wahnsinnig interessantes Hobby mit unendlich vielen 
Möglichkeiten.

Stefan schrieb:
> Also, verrate uns, was nicht klappt. "Irgendwie einbinden" ist ein
> bisschen wenig, da fragt man sich, ob Du es überhaupt versucht hast und
> was Du versucht hast.

In Sachen I2C fehlen mir die Grundkenntnisse, die ich versuche, mit 
meinem "Lernprojekt" Thermometer beizubringen. Wenn ich ein paar 
Anhaltspunkte habe, dann "wurschtel" ich mich da durch, davon kann 
ausgegangen werden. Die Lib für den 24C64 habe ich kopiert und bis jetzt 
nicht weiter beachtet, weil es funktioniert ja. Nun sollte noch der 
BMP085 dazu, jetzt werde ich mich doch intensiver mit I2C beschäftigen 
müssen. Ich lag da wohl falsch, dass man relativ einfach als "Anfänger" 
die beiden Bus-Teilnehmer zum zusammenarbeiten bekommt.

Jope schrieb:
> Nur mit Copy & Paste ist man
> halt ständig auf andere angewiesen

Das ist ganz sicher nur am Anfang so......

von Wolfgang (Gast)


Lesenswert?

Stefan B. schrieb:
> Nun sollte noch der BMP085 dazu, jetzt werde ich mich doch intensiver mit
> I2C beschäftigen müssen.
Es ist bestimmt nicht verkehrt, wenn du das Grundprinzip vom I2C 
verstanden hast, so dass du weißt was du tust und auch prüfen kannst, ob 
deine I2C-Kommunikation dem Datenblatt des jeweiligen Slaves entspicht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.