www.mikrocontroller.net

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


Autor: Guenter S. (nuecke)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.