The following registers are
enable-protected, meaning they can be written only when the I
2C interface is
disabled (CTRLA.ENABLE is ‘0’):
- Control A register (CTRLA), except
Enable (CTRLA.ENABLE) and Software Reset (CTRLA.SWRST) bits
- Control B register (CTRLB), except
Acknowledge Action (CTRLB.ACKACT) and Command (CTRLB.CMD) bits
- Baud register (BAUD)
- Address register (ADDR) in slave
operation.
When the I2C is enabled or is being enabled (CTRLA.ENABLE=1),
writing to these registers will be discarded. If the I2C is being disabled,
writing to these registers will be completed after the disabling.
Enable-protection is denoted by the "Enable-Protection" property in the
register description.
Before the I
2C is enabled it must be configured as outlined by the
following steps:
- Select I2C Master or Slave
mode by writing 0x4 or 0x5 to the Operating Mode bits in the CTRLA register
(CTRLA.MODE).
- If desired, select the SDA Hold Time
value in the CTRLA register (CTRLA.SDAHOLD).
- If desired, enable smart operation by
setting the Smart Mode Enable bit in the CTRLB register (CTRLB.SMEN).
- If desired, enable SCL low time-out by setting the SCL Low Time-Out bit in the
Control A register (CTRLA.LOWTOUT).
- In Master mode:
- Select the inactive bus
time-out in the Inactive Time-Out bit group in the CTRLA register
(CTRLA.INACTOUT).
- Write the Baud Rate register
(BAUD) to generate the desired baud rate.
In Slave mode:- Configure the address match
configuration by writing the Address Mode value in the CTRLB register
(CTRLB.AMODE).
- Set the Address and Address
Mask value in the Address register (ADDR.ADDR and ADDR.ADDRMASK) according to
the address configuration.