I2C PIC 18F2550 und MCP4728

#4041550
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 ???
#4042161
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.
Gast #4042324
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
Gast #4042540
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.
Angehängte Dateien:
Gast #4045705
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
Angehängte Dateien:
Gast #4045851
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
#4048518
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 ?
#4048635
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.....
#4048674
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.
#4048812
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren