Forum: Mikrocontroller und Digitale Elektronik Microchip PIC als I2C-Slave


von Guenter S. (nuecke)


Lesenswert?

Hallo zusammen,
hat schon einmal jemand einen Microchip Pic als Slave programmiert? Mein 
konkreter Anwendungsfall wäre folgender.
Ich möchte einen Pic als I2C-Slave programmieren. Dieser sollte zyklisch 
A/D-Werte einlesen (10-12 A/D-Wandler Eingänge) und diese auf 
Anforderung von einem Master (ebenfalls ein Microchip Pic) per I2C an 
den Master übermitteln. Das ganze möchte ich so gestalten, daß der 
Master angeben kann, von welchem A/D-Wandlereingang der Wert vom Slave 
gesendet werden soll.
Das ganze wird von mir in C programmiert. Wenn jemand dazu Tips hat oder 
eventuell auch schon Sourcecode (von dem ich gerne profitieren würde 
smile ), wäre es nett, wenn ihr dazu schreiben könntet.

Gruß
Nuecke

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Ja,
läuft hier - aber nicht in C.

Da gibt es aber Tausende Beispielprogramme in Netz - in jeder Sprache. 
Sicher auch auf der Seite von Microchip.
Sieh in das Datenblatt von dem PIC - da steht sehr viel drin !


Im Grunde sieht man sich ganz genau an, welche Zustände der 
I2C-Empfänger haben kann (Start,Stop,Parity,NAK...).
Dann muß man das alles in eine INT-Routine packen. Die I2C-Hardware löst 
immer schöne IRQ aus, die man löscht und bedient.
Sieh Dir vor allem jedes Bit an und sieh nach, was es bedeutet. 
Teilweise mußt Du Fehler-Bits selbst löschen (OV), teilweise kannst Du 
erst Werte schreiben, wenn bestimmte Bits gelöscht sind (BF) oder man 
wartet auf ein Bit (BCLIF)...

Die Adressierung mußt Du vorher mit einer Transmission vom Master 
übertragen, und dann kann der Master ja einen Receive durchführen und 
der Slave liefert die richtigen Daten.

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.