PIC18F45K50 I2C

 

Katalógus: PIC18F45K50.pdf

Katalógus: I2C - 214-249. oldal

Eléggé jó leírás: https://electrosome.com/i2c-pic-microcontroller-mplab-xc8/

Magyar oldal:   http://esca.atomki.hu/PICula/i2c.html

I2C doksi, példaprogramok: itt

 

SSPADD = FOSC/4/FSCL - 1     <-->  SCL pin clock period = ((ADD<7:0> + 1) *4)/Fosc


képlet alapján történik, ahol FOSC a mikrovezérlő órajelének frekvenciája, FSCL pedig a beállítani kíván adatátviteli frekvencia (általában 100 kHz vagy 400 kHz). Az i2c_init() függvény bitrate_kHz paramétere tulajdonképpen FSCL értékét adja meg, de kHz egységekben, ezért kell a programban FOSC értékét 4000-re osztani 4 helyett. A programban az L típusjelző azt jelzi, hogy long típusú (32 bites) számértékekről van szó.  A függvényben SSPADD beállításán kívül csak az I2C modul engedélyezése történik.

 

 

Regiszter 7. bit 6. bit 5. bit 4. bit 3. bit 2. bit 1. bit 0. bit Infó
ANSELB ANSB5
R/W-1
ANSB4
R/W-1
ANSB3
R/W-1
ANSB2
R/W-1
ANSB1
R/W-1
ANSB0
R/W-1
148
INTCON GIE/GIEH
R/W-0
PEIE/GIEL
R/W-0
TMR0IE INT0IE IOCIE TMR0IF INT0IF IOCIF 114
IPR1 ACTIP ADIP RCIP TXIP SSPIP
R/W-1
CCP1IP TMR2IP TMR1IP 123
IPR2 OSCFIP C1IP C2IP EEIP BCLIP
R/W-1
HLVDIP TMR3IP CCP2IP 124
PIE1 ACTIE ADIE RCIE TXIE SSPIE
R/W-0
CCP1IE TMR2IE TMR1IE 120
PIE2 OSCFIE C1IE C2IE EEIE BCLIE
R/W-0
HLVDIE TMR3IE CCP2IE 121
PIR1 ACTIF ADIF RCIF TXIF SSPIF
R/W-0
CCP1IF TMR2IF TMR1IF 117
PIR2 OSCFIF C1IF C2IF EEIF BCLIF
R/W-0
HLVDIF TMR3IF CCP2IF 118
PMD1 MSSPMD
R/W-0
CTMUMD CMP2MD CMP1MD ADCMD CCP2MD CCP1MD 62
SSP1ADD SSP1 Address Register in I2C Slave Mode. SSP1 Baud Rate Reload Register in I2C Master mode
R/W-0
257
SSPBUF SSP1 Receive Buffer/Transmit Register ---
SSP1CON1 WCOL
R/C/HS-0
SSPOV
R/C/HS-0
SSPEN
R/W-0
CKP
R/W-0
SSPM<3:0>
R/W-0
252
SSP1CON2 GCEN
R/W-0
ACKSTAT
R-0
ACKDT
R/W-0
ACKEN
R/S/HC-0
RCEN
R/S/HC-0
PEN
R/S/HC-0
RSEN
R/S/HC-0
SEN
R/W/HC-0
254
SSP1CON3 ACKTIM
R-0
PCIE
R/W-0
SCIE
R/W-0
BOEN
R/W-0
SDAHT
R/W-0
SBCDE
R/W-0
AHEN
R/W-0
DHEN
R/W-0
255
SSP1MSK SSP1 MASK Register bits
R/W-1
256
SSP1STAT SMP
R/W-0
CKE
R/W-0
D/!A
R-0
P
R-0
S
R-0
R/!W
R-0
UA
R-0
BF
R-0
251
TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 149
                   

Legend: Shaded bits are not used by the MSSP in I2C mode

 

  http://www.tankonyvtar.hu/hu/tartalom/tamop412A/2010-0017_41_mikrovezerlok_alkalmazasa/ch15s04.html

http://www.tankonyvtar.hu/hu/tartalom/tamop412A/2010-0017_41_mikrovezerlok_alkalmazasa/ch15s04.html
 
ANSELB ANSB0<0> R/W-1 Analog Select bit
(RB0) Analóg bemenetnek beállító bit
  1. Digitális I/O bemenet
  2. Analóg bemenet (A/D-hoz)

ANSB1<1> R/W-1 (RB1)  Analóg bemenetnek beállító bit
  1. Digitális I/O bemenet
  2. Analóg bemenet (A/D-hoz)
ANSB0<0> R/W-1 (RB0) Analog Select bit
  1. Digital input buffer enabled
  2. Digital input buffer disabled

ANSB0<1> R/W-1 (RB1) Analog Select bit
 
  1. Digital input buffer enabled
  2. Digital input buffer disabled
VISSZA
INTCON PEIE/GIEL<6> R/W-0  Peripheral Interrupt Enable bit
Perifériék általi megszakítást engedélyező bit

Ha RCON<IPEN> = 0:  Egyszintű (csak magas) megszakítás esetén
  1. Letiltja az összes megszakítást, melyeket a perifériák váltanak ki
  2. Engedélyez minden nem maszkolható perifériák által kiváltott megszakítást
Ha RCON<IPEN> IPEN = 1: Kétszintű megszakítás esetén
  1. Letiltja az összes alacsony szintű megszakítást
  2. Engedélyezi az összes alacsony szintű megszakítást


GIE/GIEH<7> R/W-0 A megszakításokat globálisan engedélyező bit

Ha RCON<IPEN> = 0:  Egyszintű (csak magas) megszakítás esetén
  1. Letiltja az összes megszakítást, beleértve a perifériákét is
  2. Engedélyez minden nem maszkolható megszakítást

Ha RCON<IPEN> IPEN = 1: Kétszintű megszakítás esetén
  1. Letiltja az összes alacsony szintű megszakítást, beleértve a perifériákét is
  2. Engedélyez minden nem maszkolható megszakítást
PEIE/GIEL<6> R/W-0 Peripheral Interrupt Enable bit

When IPEN = 0:
  1. Disables all peripheral interrupts
  2. Enables all unmasked peripheral interrupts

When IPEN = 1:
  1. Disables all low priority interrupts
  2. Enables all low priority interrupts
     


GIE/GIEH<7> R/W-0 Global Interrupt Enable bit

When IPEN = 0:
  1. Disables all interrupts including peripherals
  2. Enables all unmasked interrupts

When IPEN = 1:
  1. Disables all interrupts including low priority
  2. Enables all high priority interrupts
VISSZA
IPR1 SSPIP<3> R/W-1 Master Synchronous Serial Port Interrupt Priority bit
Master soros port általi megszakítás pioritását beállító bit
  1. Alacsony pioritású legyen a megszakítás
  2. Magas pioritású legyen a megszakítás
SSPIP<3> R/W-1 Master Synchronous Serial Port Interrupt Priority bit
  1. Low priority
  2. High priority
VISSZA
IPR2 PERIPHERAL INTERRUPT PRIORITY REGISTER 2
PERIFÉRIA ÁLTAL KIVÁLTOTT MEGSZAKÍTÁS PIORITÁSÁT BEÁLLÍTÓ REGISZTER
BCLIP<3>  R/W-1 MSSP busz ütközés esetén a megszakítás pioritását beállító bit
  1. Alacsony pioritású legyen a megszakítás
  2. Magas pioritású legyen a megszakítás
PERIPHERAL INTERRUPT PRIORITY REGISTER 2
BCLIP<3>  R/W-1 MSSP Bus Collision Interrupt Priority bit
  1. Low priority
  2. High priority
VISSZA
PIE1 PERIPHERAL INTERRUPT ENABLE (FLAG) REGISTER 1
SSPIE<3>  R/W-0 Master Synchronous Serial Port Interrupt Enable bit
  1. Nem engedélyezi az MSSP által kiváltott megszakítást
  2. Engedélyezi az MSSP által kiváltott megszakítást
PERIPHERAL INTERRUPT ENABLE (FLAG) REGISTER 1
SSPIE<3>  R/W-0 Master Synchronous Serial Port Interrupt Enable bit
  1. Disables the MSSP interrupt
  2. Enables the MSSP interrupt
VISSZA
PIE2 PERIPHERAL INTERRUPT ENABLE (FLAG) REGISTER 2
BCLIE<3>  R/W-0 Bus Collision Interrupt Enable bit 
Master szinkron soros port (MSSP) busz ütközésesetén a megszakítást engedélyezői bit
  1. Nem engedélyezi (tiltja)
  2. Engedélyezi
PERIPHERAL INTERRUPT ENABLE (FLAG) REGISTER 2
BCLIE<3>  R/W-0 MSSP Bus Collision Interrupt Enable bit 
  1. Disabled
  2. Enabled
VISSZA
PIR1 PERIPHERAL INTERRUPT REQUEST (FLAG) REGISTER 1
SSPIF<3>  R/W-0 Master Synchronous Serial Port Interrupt Flag bit
Mester szinkron soros port megszakításjelző bit
  1. Várakozik az adásra/vételre
  2. Jelzi, hogy az átvitel/vétel teljes (programból kell törölni)
PERIPHERAL INTERRUPT REQUEST (FLAG) REGISTER 1
SSPIF<3>  R/W-0 Master Synchronous Serial Port Interrupt Flag bit
  1. Waiting to transmit/receive
  2. The transmission/reception is complete (must be cleared by software)
VISSZA
PIR2 PERIPHERAL INTERRUPT REQUEST (FLAG) REGISTER 1
BCLIF<3>  R/W-0 MSSP Bus Collision Interrupt Flag bit
MSSP busz ütközés esetén megszakítás jelző bit
  1. Nem történt bisz ütközés 
  2. Jelzi, hogy busz ütközés történt (programból kell törölni)
PERIPHERAL INTERRUPT REQUEST (FLAG) REGISTER 1
BCLIF<3>  R/W-0 MSSP Bus Collision Interrupt Flag bit
  1. No bus collision occurred
  2. A bus collision occurred (must be cleared by software)
VISSZA
PMD1 PERIPHERAL MODULE DISABLE REGISTER 1
MSSPMD<6> R/W-0 MSSP Peripheral Module Disable Control bit
MSSP perifériás modult tiltó bit
  1. A modul engedélyezve van, az óraforrás csatlakoztatva van, a modul digitálisan működik
  2. A modul le van tiltva, az óraforrás lekapcsolódik, a modul nem dolgozik digitálisan 
PERIPHERAL MODULE DISABLE REGISTER 1
MSSPMD<6> R/W-0 MSSP Peripheral Module Disable Control bit
  1. Module is enabled, clock source is connected, module draws digital power
  2. Module is disabled, clock source is disconnected, module does not draw digital power
VISSZA
SSP1ADD
(SSPxADD)
MSSP R/W-0 ADDRESS AND BAUD RATE REGISTER (I2C MODE)
Cím- és baudrata beállító regiszter
 7 bites címzésű szolga üzemmódban:
ADD<0> Ebben az üzemmódban nem használt bit
ADD<7:1> 7 bites cím (szolga üzemmód)

10-Bit Slave mode — Least Significant Address byte:
bit 7-0 ADD<7:0>: Eight Least Significant bits of 10-bit address

10-Bit Slave mode — Most Significant Address byte:
bit 7-3 Not used: Unused for Most Significant Address byte. Bit state of this register is a “don’t care”. Bit 
pattern sent by master is fixed by I2C specification and must be equal to ‘11110’. However, those bits are compared by hardware and are not affected by the value in this register.
bit 2-1 ADD<2:1>: Two Most Significant bits of 10-bit address
bit 0 Not used: Unused in this mode. Bit state is a “don’t care”.

Master mode:
 ADD<7:0>: Baud rata beállító bitek, mely hatással van az SCL lábon jelentkező szinkronjel ferkvenciájára, mely a következő képlet alapján számolható ki: Szinkronjel fewrkvencia = ((ADD<7:0> + 1) *4)/FOSC 
 
MSSP ADDRESS AND BAUD RATE REGISTER (I2C MODE)
7-Bit Slave mode:
bit 0 Not used: Unused in this mode. Bit state is a “don’t care”.
bit 7-1 ADD<7:1>: 7-bit address

10-Bit Slave mode — Least Significant Address byte:
bit 7-0 ADD<7:0>: Eight Least Significant bits of 10-bit address

10-Bit Slave mode — Most Significant Address byte:
bit 7-3 Not used: Unused for Most Significant Address byte. Bit state of this register is a “don’t care”. Bit 
pattern sent by master is fixed by I2C specification and must be equal to ‘11110’. However, those bits are compared by hardware and are not affected by the value in this register.
bit 2-1 ADD<2:1>: Two Most Significant bits of 10-bit address
bit 0 Not used: Unused in this mode. Bit state is a “don’t care”.

Master mode:
bit 7-0 ADD<7:0>: Baud Rate Clock Divider bits SCL pin clock period = ((ADD<7:0> + 1) *4)/FOSC
 
VISSZA
SSPBUF SSP1 <0:7> Fogadott adat tárolója/Elküldendő adat tárolója. Tehát az a regiszter, amibe bele kell írni az elküldendő adatokat, illetve ebből a regiszterből lehet kiolvasni a fogadott adatokat.
 
SSP1 Receive Buffer/Transmit Register
VISSZA
SSP1CON1 SSPx CONTROL REGISTER 1
SSPM<3:0> R/W-0: Synchronous Serial Port Mode Select bits
Master Szinkreon Soros Port üzemmódjának beállítása:
0000 = SPI Master mode, clock = FOSC/4
0001 = SPI Master mode, clock = FOSC/16
0010 = SPI Master mode, clock = FOSC/64
0011 = SPI Master mode, clock = TMR2 output/2
0100 = SPI Slave mode, clock = SCK pin, SS pin control enabled
0101 = SPI Slave mode, clock = SCK pin, SS pin control disabled, SS can be used as I/O pin
0110 = I2C Szolga üzemmód, 7-bites címzés
0111 = I2C Szolga üzemmód, 10-bites címzés
1000 = I2C Master mód, órajel = FOSC/(4 * (SSPADD + 1))
1001 = Reserved
1010 = SPI Master mode, clock = FOSC/(4 * (SSPxADD+1))
1011 = I2C Firmware vazérelt Master mód (Slave tétlen) 
1100 = Reserved
1101 = Reserved
1110 = I2C szolga üzemmód 7 bites címzéssel, és a START és STOP megszakítási kérelmek engedélyezésével
1111 =  I2C szolga üzemmód 10 bites címzéssel, és a START és STOP megszakítási kérelmek engedélyezésével
 

CKP<4> R/W-0: Clock Polarity Select bit
SPI üzemmódban:
0 = Az órajel vezéreletlen állapotban alacsony értékű (aktív magas)
1 = Az órajel vezéreletlen állapotban magas értékű (aktív alacsony)

I2C szolga üzemmódban:
SCL felengedésének szabályozása
0 = Az órajelet alacsony szinten tartja (megnyújtja). Az adat beállási hosszabb idejének biztosításához használt. (clock strech))
1 = Engedélyezi a normál szinkronjelet

I2C mester üzemmódban:
Nincs használva ebben az üzemmódban

SSPEN<5> R/W-0: Synchronous Serial Port Enable bit
Master Szinkron Soros Port engedélyezése, vagyis SSP modul engedélyező bitje.
Mindkét üzemmódban ha engedélyezett, a lábakat megfelelően be kell állítani bemenetként vagy kimenetként. Én I2C-ben bemenetnek állítom mindkét lábat!

SPI üzemmódban:
  1. Disables serial port and configures these pins as I/O port pins
  2. Engedélyezi a soros kommunikációs portot, és konfigurálja hozzá az SCK, SDO, SDI, és !SS lábakat.(2)
I2C üzemmódban:
  1.  Letiltja a soros kommunikációs portot és a hozzá tartozó lábakat általános I/O lábaknak konfigurálja.
  2. Engedélyezi a soros kommunikációs portot és konfigurálja hozzá az SDA, és SCL lábakat.(3)

SSPOV<6> R/C/HS-0 : Receive Overflow Indicator bit(1)
Vételi túlcsordulásjelző
In SPI mode:
  1. nincs túlcsordulás
  2. Új adat érkezett, mielőtt az SSPxBUF regiszterből az előző kiolvasásra került volna. Ebben az esetben az SSPxSR regiszter tartalma elvész, az SSPxBUF tartalma a továbbiakban nem aktualizálódik. Fogadó oldali túlcsordulás csak SPI szolga üzemmódban történet. Az SSPxBUF regiszter túlcsordulásának elkerülése végett a regisztert abban az esetben is mindig ki kell olvasni, ha a szolga csak adatot küld. SPI mester esetben nem léphet fel a fogadó oldali túlcsordulás esete, mivel minden új adat küldését/fogadását az SSPBUF írása kezdeményezi. Szoftveresen kell törölni!
In I2C mode:
  1. nincs túlfolyás
  2. Új byte érkezett, amikor még az SSPxBUF az előzőleg fogadott byte-ot tartalmazta, nem lett kiolvasva. Küldéskor az SSPOV állapota érdektelen. Szoftveresen kell törölni!

WCOL<7> R/C/HS-0 : Write Collision Detect bit
Írási ütközés (Write Collision) jelzőbit, vagyis ütközésdetektálás írásnál

Master üzemmódban:
  1. Nincs ütközés
  2.  Írási ütközés történt, új adat került beírásra az SSPxBUF regiszterbe mielőtt az előzőleg beírt adat elküldése befejeződött volna. Szoftveresen kell törölni!

Slave mode:
  1. Nincs ütközés
  2. Írást kíséreltünk meg, amikor nem lehetett. Az SSPxBUF regiszter írása közben még nem továbbította az előző szót.  (Programból kell törölni a hibajelzést)

Note :
  1. Master módban a túlcsordulási bit nincs beállítva, mivel minden egyes új vétel (és adatküldés) az SSPxBUF regiszterbe íródik. ??
  2. Ha engedélyezett, ezeket a lábakat megfelelően be kell állítani bemenetként vagy kimenetként.
  3. Ha engedélyezett, akkor az SDA és SCL lábakat bemenetként kell konfigurálni.
  4. A 0, 1 vagy 2  SSPxADD értékek I2C módban nem támogatottak.
SSPx CONTROL REGISTER 1
SSPM<3:0> R/W-0: Synchronous Serial Port Mode Select bits
0000 = SPI Master mode, clock = FOSC/4
0001 = SPI Master mode, clock = FOSC/16
0010 = SPI Master mode, clock = FOSC/64
0011 = SPI Master mode, clock = TMR2 output/2
0100 = SPI Slave mode, clock = SCK pin, SS pin control enabled
0101 = SPI Slave mode, clock = SCK pin, SS pin control disabled, SS can be used as I/O pin
0110 = I2C Slave mode, 7-bit address
0111 = I2C Slave mode, 10-bit address
1000 = I2C Master mode, clock = FOSC/(4 * (SSPxADD+1))(4)
1001 = Reserved
1010 = SPI Master mode, clock = FOSC/(4 * (SSPxADD+1))
1011 = I2C firmware controlled Master mode (slave idle) 
1100 = Reserved
1101 = Reserved
1110 = I2C Slave mode, 7-bit address with Start and Stop bit interrupts enabled
1111 = I2C Slave mode, 10-bit address with Start and Stop bit interrupts enabled 
 
 

CKP<4> R/W-0: Clock Polarity Select bit
In SPI mode:
0 = Idle state for clock is a low level
1 = Idle state for clock is a high level 

In I2C Slave mode:
SCL release control
0 = Holds clock low (clock stretch). (Used to ensure data setup time.)
1 = Enable clock 

In I2C Master mode:
Unused in this mode
 

SSPEN<5> R/W-0: Synchronous Serial Port Enable bit
In both modes, when enabled, these pins must be properly configured as input or output

In SPI mode:
  1. Disables serial port and configures these pins as I/O port pins
  2. Enables serial port and configures SCK, SDO, SDI and !SS as the source of the serial port pins(2)
In I2C mode:
  1. Disables serial port and configures these pins as I/O port pins
  2. Enables the serial port and configures the SDA and SCL pins as the source of the serial port pins(3)

SSPOV<6> R/C/HS-0 : Receive Overflow Indicator bit(1)

In SPI mode:
  1. No overflow
  2. A new byte is received while the SSPxBUF register is still holding the previous data. In case of overflow, the data in SSPxSR is lost. Overflow can only occur in Slave mode. In Slave mode, the user must read the SSPxBUF, even if only transmitting data, to avoid setting overflow. In Master mode, the overflow bit is not set since each new reception (and transmission) is initiated by writing to the SSPxBUF register (must be cleared in software).
In I2C mode:
  1. No overflow
  2. A byte is received while the SSPxBUF register is still holding the previous byte. SSPOV is a “don’t care” in
    Transmit mode (must be cleared in software).

WCOL<7> R/C/HS-0 :

Master mode:
  1. No collision
  2. A write to the SSPxBUF register was attempted while the I2C conditions were not valid for a transmission to be started

Slave mode:
  1. No collision
  2. The SSPxBUF register is written while it is still transmitting the previous word (must be cleared in software)

Note :
  1. In Master mode, the overflow bit is not set since each new reception (and transmission) is initiated by writing to the SSPxBUF register.
  2. When enabled, these pins must be properly configured as input or output.
  3. When enabled, the SDA and SCL pins must be configured as inputs.
  4. SSPxADD values of 0, 1 or 2 are not supported for I2C mode.
VISSZA
SSP1CON2 SSPx CONTROL REGISTER 2
SEN(1)<0> R/W/HC-0: Start Condition Enabled bit (in I2C Master mode only)
START feltétel engedélyezés, ha a modul I2C master (START szekvenciát indít az SDAx és SCLx lábakon. Hardveresen törlődik, amikor a szekvencia befejeződik.
In Master mode:
  1. START kondíció kikapcsolva
  2. START kondíciót kezdeményez az SDA, SCL lábakon. Automatikusan törli a hardver.

SEN   - START feltétel engedélyezés, ha a modul I2C master (START szekvenciát indít az SDAx és SCLx lábakon. Hardveresen törlődik, amikor a szekvencia befejeződik. 0: START szekvencia nincs folyamatban)
          - SCL órajel nyújtásának engedélyezése slave módban (1: engedélyezve, 0: letiltva)

Szolga üzemmódban:
  1. SCL órajel nyújtásának tiltása szolga módban
  2. SCL órajel nyújtásának engedélyezése szolga módban
 
RSEN(1)<1> R/W/HC-0:  Repeated Start Condition Enabled bit (in I2C Master mode only)
RESTART jel kiadás engedélyezés, ha a modul I2C master (RESTART szekvenciát indít az SDAx és SCLx lábakon. Hardveresen törlődik, amikor a szekvencia befejeződik.
  1.  RESTART szekvencia nincs folyamatban
  2.  RESTART szekvenciát indít az SDAx és SCLxlábakon. Hardveresen törlődik, amikor a szekvencia befejeződik.
 
PEN(1)<2> R/W/HC-0: STOP jel kiadás engedélyezés, ha a modul I2C master
SCK Release Control:
  1. STOP szekvencia nincs folyamatban
  2. STOP szekvenciát indít az SDAx és SCLxlábakon. Hardveresen törlődik, amikor a szekvencia befejeződik. 
 
RCEN(1)<3> R/W/HC-0: Receive Enable bit (in I2C Master mode only)
Vétel engedélyezés (Receive Enable) bit, ha a modul I2C master.
  1. Vétel nincs folyamatban illetve nincs engedélyezve
  2. Engedélyezi a vételt. Hardveresen törlődik, amikor a 8 bites vétel befejeződik I2C üzemmódban
 
ACKEN(1)<4> R/W/HC-0: Acknowledge Sequence Enable bit (in I2C Master mode only)
Nyugtázó szekvencia engedélyezés. Ha az I2C modul master módban működik, akkor ez a bit vételkor érvényesül.
Master vételi üzemmódban:
  1. Nyugtázó szekvencia nincs folyamatban)
  2. ACK szekvenciát indít az SDAx és SCLx lábakon és kiküldi az ACKDT bitet. Hardveresen törlődik, amikor a szekvencia befejeződik.

ACKDT<5>  R/W-0 Acknowledge Data bit (in I2C mode only)
Nyugtázó adatbit. Master módban, vételkor érvényesül. Itt lehet megadni, hogy milyen választ küldjön a modul a slave eszköznek, vagyis az adatfogadás végén ez lesz a küldendő érték.
Vételi üzemmódban:
Value transmitted when the user initiates an Acknowledge sequence at the end of a receive
  1. Pozitív nyugtázás (ACK) küldési lehetőség (Kimeneten negatív jel lesz)
  2. Negatív nyugtázás (NAK) küldési lehetőség. (Kimeneten pozitív jel lesz)
    (Több adatbájt fogadásakor az utolsó nyugtázására a mester tészéről ezt kell választani, ami egyben azt is közli, hogy nem fogad további adatokat)
 
ACKSTAT<6>  R-0 Acknowledge Status bit (in I2C mode only)
Nyugtázás állapotjelző master üzemmódban adatküldés esetén
  1. Érkezett a szolgától (ACK) nyugtázó jel
  2. Nem érkezett a szolgától nyugtázó jel (ACK) a szolgától
 
GCEN<7>  R/W-0 General Call Enable bit (in I2C Slave mode only)
 Általános hívás (címzés) figyelés engedélyezése (csak I2C szolga üzemmódban)
  1. General call address disabled
  2. Megszakítási kérelem engedélyezve, ha az általános címet (0x00 vagy 00h) -át fogadta és belekerült az SSPxSR regiszterbe

Note  1:
Az ACKEN, RCEN, PEN, RSEN, SEN bitek esetében: Ha az I2C modul nincs készenléti üzemmódban, akkor ez a bit nem állítható be (nincs várakozás), és az SSPxBUF nem írható (vagy az SSPxBUF-ba az írán nem engedélyezett)
SSPx CONTROL REGISTER 2
SEN(1)<0> R/W/HC-0: Start Condition Enabled bit (in I2C Master mode only)

In Master mode:
  1. Start condition Idle
  2. Initiate Start condition on SDA and SCL pins. Automatically cleared by hardware.
In Slave mode:
  1. Clock stretching is disabled
  2. Clock stretching is enabled for both slave transmit and slave receive (stretch enabled)
 






 
RSEN(1)<1> R/W/HC-0:  Repeated Start Condition Enabled bit (in I2C Master mode only)
  1. Repeated Start condition Idle
  2.  Initiate Repeated Start condition on SDA and SCL pins. Automatically cleared by hardware.
 

 
PEN(1)<2> R/W/HC-0: Stop Condition Enable bit (in I2C Master mode only)
SCK Release Control:
  1. Stop condition Idle
  2. Initiate Stop condition on SDA and SCL pins. Automatically cleared by hardware.
 
RCEN(1)<3> R/W/HC-0: Receive Enable bit (in I2C Master mode only)
  1. Receive idle
  2. Enables Receive mode for I2C
 

 
ACKEN(1)<4> R/W/HC-0: Acknowledge Sequence Enable bit (in I2C Master mode only)
In Master Receive mode:
  1. Acknowledge sequence idle
  2. Initiate Acknowledge sequence on SDA and SCL pins, and transmit ACKDT data bit. Automatically cleared by hardware



     

ACKDT<5>  R/W-0 Acknowledge Data bit (in I2C mode only)
In Receive mode:
Value transmitted when the user initiates an Acknowledge sequence at the end of a receive
  1. Acknowledge 
  2. Not Acknowledge
 







 
ACKSTAT<6>  R-0 Acknowledge Status bit (in I2C mode only)
  1. Acknowledge was received
  2. Acknowledge was not received
 
 
GCEN<7>  R/W-0 General Call Enable bit (in I2C Slave mode only)
  1. General call address disabled
  2. Enable interrupt when a general call address (0x00 or 00h) is received in the SSPxSR
 
Note  1:
For bits ACKEN, RCEN, PEN, RSEN, SEN: If the I2C module is not in the Idle mode, this bit may not be set (no spooling) and the SSPxBUF may not be written (or writes to the SSPxBUF are disabled)
 
VISSZA
SSP1CON3 SSPx CONTROL REGISTER 3
DHEN<0>  R/W-0 Data Hold Enable bit (I2C Slave mode only)
  1. Data holding is disabled
  2. Following the 8th falling edge of SCL for a eceived data byte; slave hardware clears the CKP bit of the SSPxCON1 register and SCL is held low.
 
AHEN<1>  R/W-0  Address Hold Enable bit (I2C Slave mode only)
  1. Address holding is disabled
  2. Following the 8th falling edge of SCL for a matching received address byte; CKP bit of the SSPxCON1 register will be cleared and the SCL will be held low.
 
SBCDE<2>  R/W-0  Slave Mode Bus Collision Detect Enable bit (I2C Slave mode only)
If on the rising edge of SCL, SDA is sampled low when the module is outputting a high state, the BCLIF
bit of the PIR2 register is set, and bus goes idle
  1. Slave bus collision interrupts are disabled
  2. Enable slave bus collision interrupts
 
SDAHT<3>  R/W-0  SDA Hold Time Selection bit (I2C mode only)
  1. Minimum of 100 ns hold time on SDA after the falling edge of SCL
  2. Minimum of 300 ns hold time on SDA after the falling edge of SCL
 
BOEN<4>  R/W-0  Buffer Overwrite Enable bit
In SPI Slave mode:(1)
  1. If new byte is received with BF bit of the SSPxSTAT register already set, SSPOV bit of the SSPxCON1 register is set, and the buffer is not updated
  2. SSPxBUF updates every time that a new data byte is shifted in ignoring the BF bit

In I2C Master mode:
      This bit is ignored.

In I2C Slave mode:
  1. SSPxBUF is only updated when SSPOV is clear
  2. SSPxBUF is updated and !ACK is generated for a received address/data byte, ignoring the state of the SSPOV bit only if the BF bit = 0.
 
SCIE<5>  R/W-0  Start Condition Interrupt Enable bit (I2C mode only)
  1. Start detection interrupts are disabled(2)
  2. Enable interrupt on detection of Start or Restart conditions
 
PCIE<6>  R/W-0  Stop Condition Interrupt Enable bit (I2C mode only)
  1. Stop detection interrupts are disabled(2)
  2. Enable interrupt on detection of Stop condition
 
ACKTIM<7>  R-0  Acknowledge Time Status bit (I2C mode only)(3)
  1. Not an Acknowledge sequence, cleared on 9 th rising edge of SCL clock
  2. Indicates the I2C bus is in an Acknowledge sequence, set on 8 th falling edge of SCL clock
 

Note :
  1. For daisy-chained SPI operation; allows the user to ignore all but the last received byte. SSPOV is still set when a new byte is received and BF = 1, but hardware continues to write the most recent byte to SSPxBUF.
  2. This bit has no effect in Slave modes for which Start and Stop condition detection is explicitly listed as enabled.
  3. The ACKTIM Status bit is active only when the AHEN bit or DHEN bit is set.
SSPx CONTROL REGISTER 3
DHEN<0>  R/W-0 Data Hold Enable bit (I2C Slave mode only)
  1. Data holding is disabled
  2. Following the 8th falling edge of SCL for a eceived data byte; slave hardware clears the CKP bit of the SSPxCON1 register and SCL is held low.
 
AHEN<1>  R/W-0  Address Hold Enable bit (I2C Slave mode only)
  1. Address holding is disabled
  2. Following the 8th falling edge of SCL for a matching received address byte; CKP bit of the SSPxCON1 register will be cleared and the SCL will be held low.
 
SBCDE<2>  R/W-0  Slave Mode Bus Collision Detect Enable bit (I2C Slave mode only)
If on the rising edge of SCL, SDA is sampled low when the module is outputting a high state, the BCLIF
bit of the PIR2 register is set, and bus goes idle
  1. Slave bus collision interrupts are disabled
  2. Enable slave bus collision interrupts
 
SDAHT<3>  R/W-0  SDA Hold Time Selection bit (I2C mode only)
  1. Minimum of 100 ns hold time on SDA after the falling edge of SCL
  2. Minimum of 300 ns hold time on SDA after the falling edge of SCL
 
BOEN<4>  R/W-0  Buffer Overwrite Enable bit
In SPI Slave mode:(1)
  1. If new byte is received with BF bit of the SSPxSTAT register already set, SSPOV bit of the SSPxCON1 register is set, and the buffer is not updated
  2. SSPxBUF updates every time that a new data byte is shifted in ignoring the BF bit

In I2C Master mode:
      This bit is ignored.

In I2C Slave mode:
  1. SSPxBUF is only updated when SSPOV is clear
  2. SSPxBUF is updated and !ACK is generated for a received address/data byte, ignoring the state of the SSPOV bit only if the BF bit = 0.
 
SCIE<5>  R/W-0  Start Condition Interrupt Enable bit (I2C mode only)
  1. Start detection interrupts are disabled(2)
  2. Enable interrupt on detection of Start or Restart conditions
 
PCIE<6>  R/W-0  Stop Condition Interrupt Enable bit (I2C mode only)
  1. Stop detection interrupts are disabled(2)
  2. Enable interrupt on detection of Stop condition
 
ACKTIM<7>  R-0  Acknowledge Time Status bit (I2C mode only)(3)
  1. Not an Acknowledge sequence, cleared on 9 th rising edge of SCL clock
  2. Indicates the I2C bus is in an Acknowledge sequence, set on 8 th falling edge of SCL clock
 

Note :
  1. For daisy-chained SPI operation; allows the user to ignore all but the last received byte. SSPOV is still set when a new byte is received and BF = 1, but hardware continues to write the most recent byte to SSPxBUF.
  2. This bit has no effect in Slave modes for which Start and Stop condition detection is explicitly listed as enabled.
  3. The ACKTIM Status bit is active only when the AHEN bit or DHEN bit is set.


 
VISSZA
SSP1MSK SSPxMSK<7:0>: SSPx MASK REGISTER
<MSK7:MSK0>

MSK<0>: Mask bit for I2C Slave mode, 10-bit Address
I2C Slave mode, 10-bit address (SSPxM<3:0> = 0111 or 1111):
  1. The received address bit 0 is not used to detect I2C address match I2C Slave mode, 7-bit address, the bit is ignored
  2. The received address bit 0 is compared to SSPxADD<0> to detect I2C address match
 

MSK<7:1>: Mask bits
  1. The received address bit n is not used to detect I2C address match
  2. The received address bit n is compared to SSPxADD<n> to detect I2C address match
SSPxMSK<7:0>: SSPx MASK REGISTER
<MSK7:MSK0>

MSK<0>: Mask bit for I2C Slave mode, 10-bit Address
I2C Slave mode, 10-bit address (SSPxM<3:0> = 0111 or 1111):
  1. The received address bit 0 is not used to detect I2C address match I2C Slave mode, 7-bit address, the bit is ignored
  2. The received address bit 0 is compared to SSPxADD<0> to detect I2C address match
 

MSK<7:1>: Mask bits
  1. The received address bit n is not used to detect I2C address match
  2. The received address bit n is compared to SSPxADD<n> to detect I2C address match
VISSZA
SSP1STAT SSPxSTAT: SSPx STATUS REGISTER
BF<0>   R-0   Buffer Full Status bit
BF: buffertároló megtelését (Buffer Full) jelző bit

Fogadáskor (SPI and I2C  modban):
  1. Nincs kész az adatfogadás, SSPxBUF üres
  2. jelzi, hogy kész az adatfogadás, az SSPxBUF regiszter megtelt

Küldéskor (csak I2C üzemmódban):
  1. jelzi, hogy az adatküldés elkészült (nem tartalmazza az !ACK és Stop biteket), az SSPxBUF regiszter kiürült.
  2. Jelzi, hogy a küldés folyamatban van (nem tartalmazza az !ACK és Stop biteket), az SSPxBUF regiszter tele van. 
 (1: az adatbuffer megtelt/foglalt, 0: az adatbuffer üres)
UA<1>   R-0 : Update Address bit (10-bit I2C mode only)
Címfrissítés jelzőbit, csak 10 bites I2C üzemmódban.
  1. Nem kell frissíteni a címet
  2. Jelzi, hogy frissíteni kell a címet az SSPxADD regiszterben
 
R/!W<2>   R-0 : Read/!Write bit information (I2C mode only)
Írás, vagy olvasás választó bit (csak I2C üzemmódban)
Ez a jelzőbit tartalmazza az R /! W bit információt a cím után <0>. bitként, ami időileg is utolsóként kerül az adatvonalra. 

I2C Szolga üzemmódban:
  1. Írás
  2. Olvasás
   
I2C Mester üzemmódban:
  1. A adatküldés nincs folyamatban. Ha az SEN, RSEN, PEN, RCEN vagy ACKEN jelzi, akkor az MSSP készenléti állapotban van.
    Nincs adatküldés folyamatban.
  2. Adatküldés folyamatban
 
S<3>   R-0 : Start bit. Akkor állítódik be, ha START vagy RESTART feltételt detektált a hardver, s akkor törlődik, ha STOP feltételt detektált.
  1. utoljára nem START feltétel volt
  2. utoljára START vagy RESTART feltétel volt
 
P<4>   R-0 : Stop bit 
(Csak I2C üzemmódban. Ha P=0, akkor az MSSP modul nincs engedélyezve, SSPxEN=0)
Stop bit. Akkor állítódik be, ha STOP  feltételt detektált, s akkor törlődik, ha START vagy RESTART feltételt detektált a hardver.
  1. Utoljára nem STOP feltétel volt
  2. utoljára STOP feltétel volt
 
D/!A<5>   R-0 : Data/!Address bit (I2C mode only) 
Data/Address (adat/!cím) bit (ha I2C slave módban vagyunk). Hardveresen állítódik, csak olvasható bit.
  1. az utoljára vett bájt cím volt
  2. Az utoljára vett bájt adat volt
 
CKE<6> R/W-0 : SPI Clock Edge Select bit (SPI mode only)
SMBus kompatibilis bemeneti mód engedélyezése

SPI Mester vagy Szolga üzemmodban:
  1. Az adat az órajel (SCK) lefutó élére továbbítódik
  2. Az adat az órajel (SCK) felfutó élére továbbítódik

Csak I2C üzemmódban:
  1. SMBus kompatibilis bemeneti mód tiltása
  2. SMBus kompatibilis bemeneti mód engedélyezva
 
SMP<7> R/W-0 : SPI Data Input Sample bit
SPI adatolvasás mintavételezésének beállítása
1:  engedélyezve, 0: letiltva

SPI mester üzemmodban:
  1. Az adatolvasás az adatkimeneti idő közepén kerül mintavételezésre
  2. Az adatolvasás az adatkimeneti idő végén kerül mintavételezésre

SPI szolga üzemmódban:
SMP must be cleared when SPI is used in Slave mode In I2C Master or Slave mode:
Maximális jelváltozási sebesség (slew rate) korlátozása  (1:  engedélyezve, 0: letiltva)
  1. Nagy sebességű üzemmódban (400 kHz) Slew rate control enabled for high speed mode (400 kHz)
  2. Az elmosódásszabályozás le van tiltva a normál sebességű üzemmódban (100 kHz és 1 MHz) Slew rate control disabled for standard speed mode (100 kHz and 1 MHz

Maximális jelváltozási sebesség (slew rate) korlátozása  (1:  engedélyezve, 0: letiltva)
 
SSPxSTAT: SSPx STATUS REGISTER
BF<0>   R-0   Buffer Full Status bit



Receive (SPI and I2C  modes):
  1. Receive not complete, SSPxBUF is empty
  2. Receive complete, SSPxBUF is full

Transmit (I2C mode only):
  1. Data transmit complete (does not include the !ACK and Stop bits), SSPxBUF is empty
  2. Data transmit in progress (does not include the !ACK and Stop bits), SSPxBUF is full
 
 
UA<1>   R-0 : Update Address bit (10-bit I2C mode only)
  1. Address does not need to be updated
  2. Indicates that the user needs to update the address in the SSPxADD register
 
 
R/!W<2>   R-0 : Read/!Write bit information (I2C mode only)
This bit holds the R/!W bit information following the last address match. This bit is only valid from the address match to the next Start bit, Stop bit, or not ACK bit.

In I2C Slave mode:
  1. Write
  2. Read
   
In I2C Master mode:
  1. Transmit is not in progress OR-ing this bit with SEN, RSEN, PEN, RCEN or ACKEN will indicate if the MSSP is in Idle mode.
  2. Transmit is in progress
 
S<3>   R-0 : Start bit (I2C mode only. This bit is cleared when the MSSP module is disabled, SSPxEN is cleared.)
  1. Start bit was not detected last
  2. Indicates that a Start bit has been detected last (this bit is ‘0’ on Reset)
 
P<4>   R-0 : Stop bit 
(I2C mode only. This bit is cleared when the MSSP module is disabled, SSPxEN is cleared.)
  1. Stop bit was not detected last
  2. Indicates that a Stop bit has been detected last (this bit is ‘0’ on Reset)
 
D/!A<5>   R-0 : Data/!Address bit (I2C mode only) 
  1. Indicates that the last byte received or transmitted was address
  2. Indicates that the last byte received or transmitted was data
 
CKE<6> R/W-0 : SPI Clock Edge Select bit (SPI mode only)

In SPI Master or Slave mode:
  1. Transmit occurs on transition from Idle to active clock state
  2. Transmit occurs on transition from active to Idle clock state

In I2C mode only:
  1. Disable SMBus specific inputs
  2. Enable input logic so that thresholds are compliant with SMBus specification
 
SMP<7> R/W-0 : SPI Data Input Sample bit

SPI Master mode:
  1. Input data sampled at middle of data output time
  2. Input data sampled at end of data output time

SPI Slave mode:
SMP must be cleared when SPI is used in Slave mode In I2C Master or Slave mode:
  1. Slew rate control enabled for high speed mode (400 kHz)
  2. Slew rate control disabled for standard speed mode (100 kHz and 1 MHz)
VISSZA
TRISB TRISB: PORTB TRI-STATE REGISTER
TRISB0<0> R/W-1: PORTB Tri-State Control bit
  1. PORTB0 kimenet legyen
  2. PORTB0 bemenet legyen (I2C esetén ezt kell beállítani)
 
TRISB1<1> R/W-1: PORTB Tri-State Control bit
  1. PORTB1 kimenet legyen
  2. PORTB bemenet legyen (I2C esetén ezt kell beállítani)
TRISB: PORTB TRI-STATE REGISTER
 
TRISB0<0> R/W-1: PORTB Tri-State Control bit
  1. PORTB pin configured as an output
  2. PORTB pin configured as an input (tri-stated)
 
TRISB1<1> R/W-1: PORTB Tri-State Control bit
  1. PORTB pin configured as an output
  2. PORTB pin configured as an input (tri-stated)
VISSZA