Forum: Mikrocontroller und Digitale Elektronik I2C PIC 18F2550 und MCP4728


von Dirk G. (c_anfaenger)


Lesenswert?

Ich habe einen PIC 18F2550 und einen DAC MCP4728.
Ich will Ausgangsspannungen am DAC einstellen usw.
Das alles soll über I2C gehen.
Hat Jemand einen fertigen I2C Mustercode den ich meinem bestehenden 
"Grundprogramm" integrieren kann ? Welche *.h - file muss ich includen 
und was muss im C-Code Teil meines Grundprogrammes stehen ???

: Bearbeitet durch User
von I2C Krauterer (Gast)


Lesenswert?

Dirk GP schrieb:
> Das alles geht über I2C.

Wenn es schon geht dann brauchst du ja keinen Code mehr.

von Dirk G. (c_anfaenger)


Lesenswert?

Die Kommunikation soll über I2C gehen. In meinem Grundprogramm ist der 
I2C noch nicht implementiert.
Brauche dringend Hilfe !!!

: Bearbeitet durch User
von Dirk G. (c_anfaenger)


Lesenswert?

Hallo Herr Krauterer,

wenn Sie einen I2C Code für den PIC18F2550 haben oder mir einfach und 
verständlich beschreiben könnten wie ich in den C-Code meines Pic 
Grundprogrammes die I2C Funktionalität implementieren uns richtig 
einstellen kann, haben, dann wäre ich Ihnen sehr dankbar.

von Chris B. (dekatz)


Lesenswert?

Dirk GP schrieb:
> Hat Jemand einen fertigen I2C Mustercode den ich meinem bestehenden
> "Grundprogramm" integrieren kann ? Welche *.h - file muss ich includen
> und was muss im C-Code Teil meines Grundprogrammes stehen ???

Das kommt auf den Compiler und eventuell vorhandene LIB an.
Bein XC8 findet sich die i2c.h unter ...xc8/v1.33/include/plib
Die Beschreibung im Dokumentation in MPLAB_XC8_Peripheral_Libraries.pdf 
...ist etwas Sucharbeit, aber:
Unter <Devices> die PIC18F4550_Family den PIC18F2550 wählen, kommt man 
zu Kapitel 6.36.3, Doppelklick auf <klick here> weiter zu Kapitel 
7.30....runterscollen zu den I2C Funktionen (7.30.6) und Doppelklick auf 
die 1. Funktion (OpenI2C)...dann landet man den Beschreibungen aller 
Funktionen u. Macros und am Ende des Kapitels 2 Beispiele für I2C_Master 
und I2C_Slave.

von X4U (Gast)


Lesenswert?

Chris B. schrieb:

Wahrend Sie in villa abacho noch suchen

> Bein XC8 findet sich die i2c.h unter ...xc8/v1.33/include/plib
> Die Beschreibung im Dokumentation in MPLAB_XC8_Peripheral_Libraries.pdf
> ...ist etwas Sucharbeit, aber:
> Unter <Devices> die PIC18F4550_Family den PIC18F2550 wählen, kommt man
> zu Kapitel 6.36.3, Doppelklick auf <klick here> weiter zu Kapitel
> 7.30....runterscollen zu den I2C Funktionen (7.30.6) und Doppelklick auf
> die 1. Funktion (OpenI2C)...dann landet man den Beschreibungen aller
> Funktionen u. Macros und am Ende des Kapitels 2 Beispiele für I2C_Master
> und I2C_Slave.


Sind Sie in villa arriba schon am feiern

http://www.mikroe.com/download/eng/documents/compilers/mikroc/pro/pic/help/i2c_library.htm

von WehOhWeh (Gast)


Angehängte Dateien:

Lesenswert?

Herzlichen Beileid. Wenn eines echt bescheuert zum Implementieren ist, 
dann I2C. Warum die Leute das so lieben, werde ich nie verstehen.

Abkürzugen gibts aber schon:

Möglichkeit 1:
Schau bei Microchip, ob die nicht eine Referenzimplementierung für den 
Chip haben. Haben sie oft. Sehr praktisch :-)

Möglichkeit 2:
http://www.microchip.com/CodeExamplesByFunc.aspx
Vielleicht ist hier was dabei. Ein Beispiel für I2C wirds vermutlich 
geben.

Möglichkeit 3:
Der Code im Anhang ist für PIC24.

Ich habe den da geklaut:
http://www.engscope.com/pic24-tutorial/
Da ist auch Dokumentation dabei.

Dazu muss ich sagen, der Code ist furchtbar unelegant, mit __delay und 
ähnlichem Mist - schrecklich. Aber es ist I2C und daher kompliziert und 
zickig. Ohne Not fass ich das nicht an.

Das wirst du portieren müssen. Ich habe das z.B. für PIC32 gemacht und 
hatte keine allzu großen Schwierigkeiten dabei. Ein paar Sachen wird man 
halt anpassen müssen, wie das __delay und ein paar Register.

Den Kram für deinen IC musst du selber schreiben, aber mit den 
Funktionen ist das nicht mehr so schwierig. Einfach die Diagramme im 
Datenblatt abtippen.

Hab noch die Funktion für einen PCF8574 dazugehängt. Als Beispiel.

von Dirk G. (c_anfaenger)


Lesenswert?

Vielen Dank für die vielen Ratschläge. Ich werde sie am Montag gleich 
mal testen.
Ich habe eben nicht die riesen Ahnung um irgendwelche leicht andere 
codes anzupassen. Daher wäre mir ein Code speziel für den 18F2550 und 
den MCP4728 am liebsten.

Vielleicht findet ja Jemand noch etwas.

Nochmals Danke und ich melde mich wieder.

von Dirk GP (Gast)


Lesenswert?

Hallo Zusammen,

ich benutze den C18 Compliler und MLAB. Hat noch keiner bei einem 
18F2550 den I2C BUS zum laufen gebracht. Ich bräuchte alle Routinen, 
damit ich sie 1:1 übernehmen kann. Und ein "write" Beispiel um Daten zu 
dem DAC (z.B.) MCP4728 runter zu schreiben.
Im Voraus Danke

von Stephan (Gast)


Lesenswert?

Dirk GP schrieb:
> Ich habe eben nicht die riesen Ahnung um irgendwelche leicht andere
> codes anzupassen.

Gerade die Implementierung von I2C auf einem PIC ist wunderbar,
um sich das nötige anzueigenen.

von seppi (Gast)


Lesenswert?


von Dirk G. (c_anfaenger)


Lesenswert?

Vielen Dank. Ich suche aber immer noch einen C-code für die 
implementierung von I2C auf den PIC 18F2550.
Bitte um Hilfe.

von chris (Gast)


Lesenswert?

Oder verwende USB4ALL , kann auch i2c mit diesem uC.

von Toxic (Gast)


Angehängte Dateien:

Lesenswert?

Du bekommst alle Informationen hier.
Es handelt sich um die "MPLAB® C18 C COMPILER LIBRARIES Dokumentation

http://www.google.ie/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCAQFjAA&url=http%3A%2F%2Fww1.microchip.com%2Fdownloads%2Fen%2FDeviceDoc%2FMPLAB_C18_Libraries_51297f.pdf&ei=qJ79VOqHOOmc7AajnYG4DQ&usg=AFQjCNGwh6e-oqBjRp2KMfZK-qXD3FNnCA&bvm=bv.87611401,d.ZGU

Unter Chapter 2 findest Du die Info fuer die Implementation der fertigen 
I2C-Hardwarefunktionen
In Chapter 3 werden auch Funktionen beschrieben fuer Pics ohne 
I2C-Hardware

von Dirk G. (c_anfaenger)


Lesenswert?

Vielen Dank, hat schon etwas geholfen. Hat Jemand ein C-code um speziell 
den MCp4728 über I2C zu schreiben ??

von Toxic (Gast)


Lesenswert?

Dirk GP schrieb:
> Vielen Dank, hat schon etwas geholfen. Hat Jemand ein C-code um speziell
> den MCp4728 über I2C zu schreiben ??

Der eigentliche Code zum Lesen und Schreiben des MCP's ist ja schon 
durch den I2C-Librarycode gegeben.
Das Ansprechen der Register und die Reihenfolge der zu sendeten Bytes 
must Du selbst aus dem Datenblatt entnehmen.Beispiele sind ja angegeben.
Du hast dir nicht den allereinfachsten I2C-Schaltkreis ausgesucht,sollte 
aber keine unueberwindbare Huerde darstellen.
Da Du dich selbst als Anfaenger bezeichnest,schlage ich Dir erstmal vor 
die Libraryfunktionen durchzuackern,verstehen wie sie funktionieren und 
ohne Kompilierungsfehler zum Laufen zu bringen.
Die Libraryfunktionen sind uebrigens in einem Ordner innerhalb von C18 
vergraben - inklusive sourcecodes.

Hier das Datenblatt(das Du sicherlich schon hast!?)
http://www.google.ie/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CCYQFjAB&url=http%3A%2F%2Fww1.microchip.com%2Fdownloads%2Fen%2FDeviceDoc%2F22187a.pdf&ei=7rH9VKu7BcnT7Abcj4CoDw&usg=AFQjCNHtIwS-q-kHNCCoqlA2IwApy0-UpQ&bvm=bv.87611401,d.ZGU

von Dirk G. (c_anfaenger)


Lesenswert?

Hallo Zusammen,

mein I2C läuft immer noch nicht. Also irgendwie bin ich schon von diesem 
Forum hier enttäuscht. Es hat sicherlich schon Jemand auf dem PICF2550 
den I2C Bus in C und mit dem C18 Compiler implementiert, aber keiner 
kann die entsprechenden C-Codes mir geben. Ich weiß eben nicht wo und 
was ich genau in den Code schreiben muss damit es tut. Welche Standard 
*.h, *.c files ich vom C18 Compiler includen soll und welche (sicherlich 
wenige) Register ich wie einstellen muss.
Wie ich die C18 Compiler *.c files (wie i2c_open.c, i2c_strt.c oder 
i2c_stop.c.) verwende usw. In den beiden i2c_strt.c und i2c_stop.c. 
steht z.B. das bei I2C_V1, das vorher im I2C.h definiert wurde für den 
PIC18F2550 nicht deifniert ist. Überall steht aber dass man diese 
braucht.

Kann bitte einer mir eine Implementierungsvorgehensweise vom I2C BUs für 
den PIC18F2550 geben ?

von Chris B. (dekatz)


Lesenswert?

Dirk GP schrieb:
> Also irgendwie bin ich schon von diesem
> Forum hier enttäuscht. Es hat sicherlich schon Jemand auf dem PICF2550
> den I2C Bus in C und mit dem C18 Compiler implementiert, aber keiner
> kann die entsprechenden C-Codes mir geben.

Vielleicht weil es nicht nur einen PIC18 gibt und/oder niemand damit 
deine DAC verwendet hat und weil der C18 seit 2 oder 3 Jahren durch den 
XC8 ersetzt wurde

> Ich weiß eben nicht wo und
> was ich genau in den Code schreiben muss damit es tut. Welche Standard
> *.h, *.c files ich vom C18 Compiler includen soll und welche (sicherlich
> wenige) Register ich wie einstellen muss.

Also hast du dich mit dem PIC18F2550 und I2C Hardware noch gar nicht 
beschäftigt.....wie auch alle obigen Links ignoriert.

> Wie ich die C18 Compiler *.c files (wie i2c_open.c, i2c_strt.c oder
> i2c_stop.c.) verwende usw.

Gar nicht, weil diese bereits in der entsprechenden "p18F2550.lib" 
enthalten sind und sich der Linker darum kümmert. Du brauchst nur die 
I2C.h einbinden und nach der oben verlinkten Dokumentation ""MPLAB® C18 
C COMPILER LIBRARIES" zu halten. Dort sind sogar Minimalstbeispiele 
angeführt.....

> In den beiden i2c_strt.c und i2c_stop.c.
> steht z.B. das bei I2C_V1, das vorher im I2C.h definiert wurde für den
> PIC18F2550 nicht deifniert ist. Überall steht aber dass man diese
> braucht.

????? Ich kenne den 2550 nicht auswendig, aber wenn er nur 1 MSSP-Modul 
hat, dann gibt es auch kein I2C_V1, I2C_V2......Die Routine heissen dann 
z.B eben nur "StopI2C" und nicht "StopI2C1" usw.....

von Dirk G. (c_anfaenger)


Lesenswert?

Ich mir die obigen Lilnks angeschaut, alle beschreiben Teile der I2C 
Funktion.
Ich weiß ja gar nicht mal wie ich anfangen soll. Und was ich für einen 
PIC 18Fxx habe nicht unbedingt relevant wenn es um eine Grundstuktur 
geht. Ob seit 2 -3 Jahren andere PIC Controller verwendet werden ist 
nicht relevant. Ich habe auf meinem Rechner noch den Code von dem 
Motorola HC12 den ich vor 10 Jahren programmiert habe.

Bitte nochmal an ALLE einen Aufruf, ob Jemand mir helfen kann.

von Witkatz :. (wit)


Lesenswert?

Dirk GP schrieb:
> was ich für einen
> PIC 18Fxx habe nicht unbedingt relevant

XC8 ist kein PIC sondern der aktuelle Compiler. Wenn du den installiert 
hast, dann findest du im Installationsverzeichnis den Unterordner docs 
mit u.a. MPLAB_XC8_Peripheral_Libraries.pdf, Doku und Besipiele zu den 
Peripherie Libs.

Für C18 gibt es aber auch Doku mit Beispielen, was hindert dich daran 
sie zu lesen?
http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_C18_Libraries_51297f.pdf

PS
Bevor du wieder enntäuscht bist, dass dir niemand die passende Seite 
aufgeschlagen hat und du dich alleine im Inhaltsverzeichnis nicht 
zurechtfindest, hier: Kap. 2.4.3 Example of Use, Page 34

: Bearbeitet durch User
von Toxic (Gast)


Lesenswert?

Dirk GP schrieb:
> Also irgendwie bin ich schon von diesem
> Forum hier enttäuscht.

Das basiert auf Gegenseitigkeit.
Du hast den Wagen (Pic18Fxxx) und den Zuendschluessel (Libs)
Fahren musst Du halt schon selbst.
http://www.microchip.com/forums/m87210.aspx

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.