| Electronic Components Datasheet Search |
|
PIC18F44J10-E/ML Datasheet(PDF) 161 Page - Microchip Technology |
|
|
|||||||||||||||||||||||||||||
PIC18F44J10-E/ML Datasheet(HTML) 161 Page - Microchip Technology |
|
161 / 358 page ![]() © 2007 Microchip Technology Inc. Preliminary DS39682C-page 159 PIC18F45J10 FAMILY 15.4.2 OPERATION The MSSP module functions are enabled by setting the MSSP Enable bit, SSPEN (SSPxCON1<5>). The SSPxCON1 register allows control of the I2C operation. Four mode selection bits (SSPxCON1<3:0>) allow one of the following I2C modes to be selected: •I2C Master mode, clock = (FOSC/4) x (SSPxADD + 1) •I2C Slave mode (7-bit address) •I2C Slave mode (10-bit address) •I2C Slave mode (7-bit address) with Start and Stop bit interrupts enabled •I2C Slave mode (10-bit address) with Start and Stop bit interrupts enabled •I2C Firmware Controlled Master mode, slave is Idle Selection of any I2C mode, with the SSPEN bit set, forces the SCLx and SDAx pins to be open-drain, provided these pins are programmed to inputs by setting the appropriate TRISC or TRISD bits. To ensure proper operation of the module, pull-up resistors must be provided externally to the SCLx and SDAx pins. 15.4.3 SLAVE MODE In Slave mode, the SCLx and SDAx pins must be configured as inputs (TRISC<4:3> or TRISD<1:0> set). The MSSP module will override the input state with the output data when required (slave-transmitter). The I2C Slave mode hardware will always generate an interrupt on an address match. Through the mode select bits, the user can also choose to interrupt on Start and Stop bits When an address is matched, or the data transfer after an address match is received, the hardware auto- matically will generate the Acknowledge (ACK) pulse and load the SSPxBUF register with the received value currently in the SSPxSR register. Any combination of the following conditions will cause the MSSP module not to give this ACK pulse: • The Buffer Full bit, BF (SSPxSTAT<0>), was set before the transfer was received. • The overflow bit, SSPOV (SSPxCON1<6>), was set before the transfer was received. In this case, the SSPxSR register value is not loaded into the SSPxBUF, but bit SSPxIF is set. The BF bit is cleared by reading the SSPxBUF register, while bit SSPOV is cleared through software. The SCLx clock input must have a minimum high and low for proper operation. The high and low times of the I2C specification, as well as the requirement of the MSSP module, are shown in timing parameter 100 and parameter 101. 15.4.3.1 Addressing Once the MSSP module has been enabled, it waits for a Start condition to occur. Following the Start condition, the 8 bits are shifted into the SSPxSR register. All incoming bits are sampled with the rising edge of the clock (SCLx) line. The value of register SSPxSR<7:1> is compared to the value of the SSPxADD register. The address is compared on the falling edge of the eighth clock (SCLx) pulse. If the addresses match and the BF and SSPOV bits are clear, the following events occur: 1. The SSPxSR register value is loaded into the SSPxBUF register. 2. The Buffer Full bit, BF, is set. 3. An ACK pulse is generated. 4. The MSSP Interrupt Flag bit, SSPxIF, is set (and interrupt is generated, if enabled) on the falling edge of the ninth SCLx pulse. In 10-bit Address mode, two address bytes need to be received by the slave. The five Most Significant bits (MSbs) of the first address byte specify if this is a 10-bit address. Bit R/W (SSPxSTAT<2>) must specify a write so the slave device will receive the second address byte. For a 10-bit address, the first byte would equal ‘11110 A9 A8 0 ’, where ‘A9’ and ‘A8’ are the two MSbs of the address. The sequence of events for 10-bit address is as follows, with steps 7 through 9 for the slave-transmitter: 1. Receive first (high) byte of address (bits SSPxIF, BF and UA (SSPxSTAT<1>) are set). 2. Update the SSPxADD register with second (low) byte of address (clears bit UA and releases the SCLx line). 3. Read the SSPxBUF register (clears bit BF) and clear flag bit SSPxIF. 4. Receive second (low) byte of address (bits SSPxIF, BF and UA are set). 5. Update the SSPxADD register with the first (high) byte of address. If match releases SCLx line, this will clear bit UA. 6. Read the SSPxBUF register (clears bit BF) and clear flag bit SSPxIF. 7. Receive Repeated Start condition. 8. Receive first (high) byte of address (bits SSPxIF and BF are set). 9. Read the SSPxBUF register (clears bit BF) and clear flag bit SSPxIF. |
|
Link URL |
| Does ALLDATASHEET help your business so far? [ DONATE ] |
About Alldatasheet | Advertisement | Contact us | Privacy Policy | Link to Datasheet | Link Exchange | Manufacturer List All Rights Reserved©Alldatasheet.com |
| Russian : Alldatasheetru.com | Korean : Alldatasheet.co.kr | Spanish : Alldatasheet.es | French : Alldatasheet.fr | Italian : Alldatasheetit.com Portuguese : Alldatasheetpt.com | Polish : Alldatasheet.pl | Vietnamese : Alldatasheet.vn Indian : Alldatasheet.in | Mexican : Alldatasheet.com.mx | British : Alldatasheet.co.uk | New Zealand : Alldatasheet.co.nz |
|
Family Site : ic2ic.com |
icmetro.com |