PIC C18 I2C weiß nicht weiter

OP #3020021
Lesenswert?

Hi

Ich habe heute den ganzen Tag nach Lösungen gesucht, aber es gibt 
wirklich kaum Informationen zu dem Thema.

Es geht darum, einen PIC18F4550 und einen 18F2620 mit I2C zu verbinden.

Ich arbeite mit dem PICKIT3 und MPLAB und C18 Compiler.

Nun gibt es ja die i2c.h vom Microchip.

Ich habe herausgefunden:
Die kann Strings senden, die kann einzelne Bytes senden.
Da gibt es keine Timeouts. Slave oder Master warten immer auf die
Antwort des anderen.

Ich möchte: Byte Array unterschiedlicher Längen senden. (1-33 Bytes)
Ich möchte im MAIN weiterarbeiten, also eigentlich nirgends 
hängenbleiben, wenn auf den Bus gewartet wird. Ich möchte daher auch 
gerne am Slave einen Interrupt ausgelöst haben (kein Polling) , wenn 
Daten anstehen. Notfalls aber auch Polling. Und natürlich TImeouts, wenn 
was hängt. Und gibt es auch Übertragungsfehler? Die muß man ja auch 
erkennen!? Wie?

Das einzige Beispiel von Microchip, das man findet, sendet einfach nur 
einen String mit einer 0 am Ende und macht kein Polling.

Wie habt ihr das gelöst?
Wo gibt es Hinweise, wie man die LIB vernünftig nutzt?
Examples für die Fälle, die mich interessieren?

Gruß
Thomas
Gast #3020031
Lesenswert?

Hallo Thomas,

Ich kann aus eigener Erfahrung sagen, dass die Lib gar nichts taugt. Wir 
mussten hier in der Arbeit unsere eigene Interrupt basierte I2C-Lib 
schreiben.

Von daher kann ich dir nur empfehlen, dass auch zu tun. Also 
Datenblätter wälzen und ab gehts :)

Gruß Mike
#3023012
Lesenswert?

Hi,

das I2C.h file kann man wirklich den Hasen geben. Die Funktionen lassen 
sich relativ schnell schreiben. Musst mal nach dem Datenblatt AN734 und 
AN735 googlen. Darin geht es speziell um das MSSP-Modul im PIC sprich 
I2C. Enthalten sind auch die Funktionen, zwar im Assembler aber wenn man 
den Syntax versteht kann man die gut umwandeln. Wenn du hilfe benötigst 
kann ich jenachdem welche Probleme anfallen, da ich bestimmt selbst noch 
nicht alle gehabt habe, helfen.

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