Hallo, beim PIC gibt's ja nun (auch) diese PIN-Auswahl. Ich finde dazu leider keine kurze und schnell nachvollziehbare Beschreibung zu. Man kann ins Datenblatt schauen -tu ich auch- aber das ist da doch etwas sehr verwirrend. Kennt jemand eine Literatirstelle, wo man mal kompakt nachlesen könnte, wie man beispielsweise beim PIC18F06Q40 den SCL und den SDA untereinander vertauscht? Oder könnte das hier jemand mal kurz beschreiben, einfach welches Register wie zuerst, welches dann etc.? Besten Dank im Voraus!
Hallo BL Soweit mir bekannt ist kann man SCL U. SDA nicht mit anderen Pins tauschen weil SCL U. SDA bidirectonale Pins sind und diese Funktion nicht an allen Pins zur Verfügung steht. M. Th.
M. Th. schrieb: > Hallo BL > Soweit mir bekannt ist kann man SCL U. SDA nicht mit anderen Pins > tauschen weil SCL U. SDA bidirectonale Pins sind und diese Funktion > nicht an allen Pins zur Verfügung steht. > M. Th. Schau Dir auch mal das Blockdiagramm an. Dort sieht man die interne Logic der Pins. SCL U. SDA werden von den internen FETs nach Masse gezogen u. von der internen Logik getrennt verarbeitet. Ein Tausch ist deshalb nicht vorgesehen.
BL schrieb: > beim PIC gibt's ja nun (auch) diese PIN-Auswahl. Ich finde dazu leider > keine kurze und schnell nachvollziehbare Beschreibung zu. Man kann ins > Datenblatt schauen -tu ich auch- aber das ist da doch etwas sehr > verwirrend. Ähn, nein. PPS funktioniert so: Ausgangssignale: 1. Such Dir einen Pin aus, den Du mit einem Signal belegen willst, z.B. RB4 2. Such Dir auf Seite 335 (21.9 Register Summary: Peripheral Pin Select Module) das zugehörige Register raus -> RB4PPS 3. Such Dir auf Seite 328/329 (Table 21-2. PPS Output Selection Table) das passende Signal raus, z.B. I2C1_SDA und merke Dir den Wert in der ersten Spalte (RxyPPS) -> 0x22 4. Schreib den gemerkten Wert ins passende PPS-Register -> RB4PPS=0x22; 5. erledigt. Eingangssignale: 1. Such Dir auf Seite 327/328 das zu mappende Eingangssignal raus (z.B. I2C1 Data) und merke Dir das zugehörige Register in Spalte 2 -> I2C1SDAPPS 2. Such Dir auf Seite 335 (21.9 Register Summary: Peripheral Pin Select Module) das zugehörige Register raus -> I2C1SDAPPS 3. Such Dir einen Pin aus, den Du mit einem Signal belegen willst, z.B. RB4 4. Bits 5..3 des Registers sind auf den Port zu setzen: (A=000, B=001, C=010), für RB4 also 0b001 5. Bits 2..0 enthalten das Portbit, bei RB4 also 0b100=4 6. In das Register muss also der Wert 0b00'001'100 =0x0c geschrieben werden -> I2C1SDAPPS=0x0c; 7. fertig. Natürlich musst du die PPS-Register vorher unlocken, aber das steht ja im Datenblatt. Bei bidirektionalen Signalen wie I2C musst Du sowohl die Eingangsrichtung als auch die Ausgangsrichtung programmieren, und zwar so, dass beide zueinander passen. So funktioniert das bei allen 8 und 16 Bit PICs mit PPS. fchk
:
Bearbeitet durch User
Zu den PIC18F06Q40 habe ich Vorabbemerkungen: Die neuen PIC18F06Q40 und ...Q41 haben meines Wissens keine Unterstützung durch Include-Files des bisherigen Assemblers, der bis MPLABX 5.35 dabei war. D. h. wenn Du mit diesem Assembler unterwegs bist, bleibt Dir z. B. nur ein eigenes Inlude File aus z. B. P18F26Q43.inc zu editieren. Ich habe das für einen PIC18F16Q41 gemacht. Nun zu Deiner PPS-Frage (stammt aus einem Source File für PIC18F16Q41): Ursprünglich: MOVLW 010000B ; REDIRECT INPUT RC0 TO I2C1 SCL MOVWF I2C1SCLPPS MOVLW 010001B ; REDIRECT INPUT RC1 TO I2C1 SDA MOVWF I2C1SDAPPS MOVLW 100001B ; REDIRECT OUTPUT I2C1 SCL TO RC0 MOVWF RC0PPS MOVLW 100010B ; REDIRECT OUTPUT I2C1 SDA TO RC1 MOVWF RC1PPS oder vertauscht: MOVLW 010000B ; REDIRECT INPUT RC0 TO I2C1 SDA MOVWF I2C1SDAPPS MOVLW 010001B ; REDIRECT INPUT RC1 TO I2C1 SCL MOVWF I2C1SCLPPS MOVLW 100010B ; REDIRECT OUTPUT I2C1 SDA TO RC0 MOVWF RC0PPS MOVLW 100001B ; REDIRECT OUTPUT I2C1 SCL TO RC1 MOVWF RC1PPS Da die Pins RC0 und RC1 speziell schon Vorkehrungen bezüglich Pegel und Pull-up haben, gehe ich davon aus, dass Du nur SCL und SDA vertauschen willst. MfG Wuff_W
Du hattest nach weiterer Literatur gefragt. Hier gibts Infos zu den neuen I2C_Interfaces, wie in den PIC18F06Q40: http://ww1.microchip.com/downloads/en/DeviceDoc/MSSP-to-the-Stand-Alone-I2C-Module-Migration-40002020A.pdf Ansonsten ist im Datenblatt alles gut beschrieben. MfG Wuff_W
Moin, allerbesten Dank für die Antworten! Ihr habt mir sehr geholfen. Ich zieh mir das jetzt mal in aller Ruhe rein und dann sehen wir mal, ob ich es hinkriege. Falls ich noch eine speziellere Frage hab, würde ich mir diese hier noch mal erlauben. Ich mach das übrigens im XC8. Dazu mußte ich den MPLAB X erst auf Version 5.50 upgraden. Mit 5.30 hat er den IC nicht gekannt. Ich will das mit dem MCC machen und bin erst in dem Stadium, den richtig einzustellen. Ich hatte vorher einen PIC16F15325 eingesetzt und dafür die Software auch fast fertig. Aber die 7kB Flash sind bei dem einfach zu wenig. Deshalb wollte ich den 18F06Q40 einsetzen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.