PIC 18F4620 mit SPI und I2C

Gast #350760
Lesenswert?
• ▲
▼
Hallo,

ich habe folgendes Problem:

An einen PIC 18F4620 ist ein Funkempfänger über SPI angeschlossen.
Jetzt soll nach mehrere Sensoren über I2C mit dem PIC verbunden werden.
Allderings benötigen sowohl SPI als auch I2C die Pins RC3 und RC4.

Ist es möglich den I2C-Bus auch über anderer Pins des Mikrocontroller
anzuschließen? Wenn ja, wie?

Danke schon im Vorraus!

Marc
Gast #350763
Lesenswert?
• ▲
▼
Hallo Marc,

dein PIC hat nur ein MSSP-Modul, d. h. du kannst nur ein mal
hardwaremäßig I²C oder SPI verwenden. Größere PICs (z.B. 18F6620) haben
zwei dieser Einheiten.

Man kann (s. Geri) diese Schnittstellen auch per Software realisieren,
dann ist die Wahl der Pins dir überlassen. Aber: Das frisst Speicher
und Rechenzeit und ist VIEL langsamer.

Beispiele dafür findest du beim C18-Compiler oder unter den Application
notes.

Viele Grüße,
Bernhard
Gast #350767
Lesenswert?
• ▲
▼
Hallo Marc,

den Faktor kann ich dir natürlich nicht nennen, weil ich nicht weiß,
welche Schnittstelle du wie realisieren möchtest.
Nur so viel: Unter Verwendung des MSSP-Moduls brauchst du, zumindest
bei 8-Bit Adressierung, fast keine Rechenzeit.

Dein PIC hat so weit ich weiß nur einen Pin in
Open-Collector-Ausführung. Demnach benötigst du für IIC zwei
Transistoren und vier Widerstände. SPI ist demnach vom Hardwareaufwand
vorzuziehen, außerdem ist für SPI der Programmieraufwand geringer, da
du keine Adressierung benötigst. Andererseits überträgst du zum
Funkmodul sicherlich mehr Daten als zu den Sensoren.

@ Schoasch
Du hast recht, für ein paar Bytes mit 400 kHz ist Software-IIC
unproblematisch. Wenn Marc aber große Datenmengen zeitkritisch
übertragen und gleichzeitig z.B. regeln muss, dann sieht die Sache
schon ganz anders aus.

Viele Grüße,
Bernhard
Gast #350768
Lesenswert?
• ▲
▼
Hallo,

erstmal danke für eure Hilfe!

Mir ist leider noch nicht klar, ob ich für einen I2C-Bus in Software 2
oder 4 Pins an meinem PIC brauche?

In dem Beispiel unter dieser URL werden 4 Pins benötigt:
http://www.sprut.de/electronic/pic/programm/thermo75/thermo75.htm

In den C18 Libaries hingegen wird davon augegangen, daß der PIC über 2
Pins mit dem I2C-Bus verbunden ist.

Braucht man nun 2 oder 4 Pins? Oder ist das egal?

Gruß Marc
Gast #350769
Lesenswert?
• ▲
▼
2 Pins.
Das Open-Collector-Verhalten erreicht man normalerweise dadurch, daß
man die Datenrichtung des Ports ändert. Datenrichtung: Eingang -> Pegel
auf dem Bus wird durch den Pull-up High, Datenrichtung: Ausgang -> Pegel
= Low
Gast #350772
Lesenswert?
• ▲
▼
Also vor Sprut habe ich großen Respekt und behaupte nicht, es besser zu
wissen.
Seine Version hat den Vorteil, dass bei einem Programmfehler (PIC zieht
Pegel auf H) kein Kurzschluss entstehen kann.

Ich hab's, wie die Microchip-Examples, mit zwei Pins gemacht, am
Anfang habe ich 470 Ohm in Reihe zum Controller als Kurzschlussschutz
geschaltet.

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