PIC als I2C Slave

Begonnen von ^Cobra, 08.02.2024, 12:04:45 CET

Vorheriges Thema - Nächstes Thema

^Cobra

Hallo mal wieder,

ich bereite grade bisschen weiter vor.
Nun geht es darum ein PIC als I2C Slave zu betreiben.
Der Pic 18F44K20 besitzt ein MSSP Modul somit sollte das überwiegend die HW machen.
Aber: In der Doku lese ich nun das die Slave Adresse (7Bit Betrieb) in SSPADD steht.
Dann gibt es aber noch SSPMSK welcher eine Maske für irgend ein Vergleich macht. Ich verstehe aber nun nicht wo
ich nun die "Soll Adresse" hin schreiben soll. Hat jemand schonmal den MSSP auf I2C Slave gestellt und kann mir das mal erklären?

Gruß
Cobra

pic18

Die Adresse schreibst Du in SSPADD,
wenn SSPMSK 0xff ist, so muß die Adresse 1:1 übereinstimmen, SSPMSK ist beim Start automatisch auf 0xff gestellt, da brauchst Du nichts machen. 
Wenn du ein Bit von SSPMSK löscht, dann wird dieses eine Bit nicht mit der Adresse verglichen. 
Bei der 10-Bit-I2C-Adressierung werden die 8 Lo-Bits der Adresse durch das SSPMSK-Register maskiert.

Ottmar

PIC-I2C-Slave:
Habe das noch nie gemacht aber : Wenn ich im DS das Flussdiagramm Figur 14-7 anschaue, meine ich, dass im SSPSR die Adresse ankommt und mit dem Inhalt von SSPADD verglichen wird. Bei 'match' siehe Register SSPSTAT Fußnote 2 zum R/W-Bit. Vielleicht hilft Dir das.

^Cobra

Danke euch beiden.
Leider habt ihr auch unterschiedliche auffassung.
@pic18 
hast du schonmal Pic als Slave benutzt bzw. weißt du das es so ist wie du schreibst oder verstehst du das DS so?

@Ottmar
Ja das Diagramm habe ich gefunden aber eben da steht nix von dem SSPMSK- Register daher war ich mehr als Irritiert.
Übrings will ich mit der Slave Funktion die 10 Servos über den I2C Bus ansprechen. Also 1 Pic gibt die Position vor, der "Servo-Pic" steuert dann die Ausgänge der Servos an. Sprich sobald die Slave funktion (hoffentlich) Funktionstüchtig ist wird ein Pic als Master configuriert und dann Sollwerte übertragen.

Gruß
Cobra

pic18

Zitat von: ^Cobra in 08.02.2024, 14:47:31 CEThast du schonmal Pic als Slave benutzt
nein, nur als Master. Ich hatte ein EEProm programmiert. 

Das habe ich im Datenblatt gefunden:

The PIC18F45K20 has I2C™ slave address masking, which allows it to respond to multiple I 2C slave addresses. For legacy support, the SSPMSK register has the power-up value of 0xFF where the slave requires a complete match. When a bit is cleared in the SSPMSK register, that particular bit becomes a "don't care" in the address comparison. With 10-bit I2C addressing, the Least Significant 8 bits of the address are masked by the SSPMSK register.

pic18

Weiß jemand wie lange die Leitung zwischen den zwei Pic's sein darf, ich möchte zwei PIC's allerdings mit SPI verbinden. Die Leitungslänge ist ungefähr 5m.

^Cobra

Ich habe mal irgenwo gelesen das ab einer gewissen länge man Treiber Transistoren benutzen soll. Weiß aber grade nicht wo das war,DS?Sprut? woanders?
denke die Frage ist auch wie schnell da die Übertragung sein soll

Schnellantwort

Name:
Verifizierung:
Bitte lassen Sie dieses Feld leer:
Geben Sie die Buchstaben aus dem Bild ein
Buchstaben anhören / Neues Bild laden

Geben Sie die Buchstaben aus dem Bild ein:

Tastenkürzel: Alt+S Beitrag schreiben oder Alt+P für Vorschau

Similar topics (5)