24.5.9
Master DATA
Name:
MDATA
Offset:
0x08
Reset:
0x00
Property: -
Bit
7
Access
R/W
Reset
0
Bits 7:0 – DATA[7:0] Data
The bit field gives direct access to the master's physical Shift register which is used both to shift data out
onto the bus (write) and to shift in data received from the bus (read).
The direct access implies that the Data register cannot be accessed during byte transmissions. Built-in
logic prevents any write access to this register during the shift operations. Reading valid data or writing
data to be transmitted can only be successfully done when the bus clock (SCL) is held low by the master
(i.e., when the CLKHOLD bit in the Master Status register (TWIn.MSTATUS) is set). However, it is not
necessary to check the CLKHOLD bit in software before accessing this register if the software keeps
track of the present protocol state by using interrupts or observing the interrupt flags.
Accessing this register assumes that the master clock hold is active, auto-triggers bus operations
dependent of the state of the Acknowledge Action Command bit (ACKACT) in TWIn.MSTATUS and type
of register access (read or write).
A write access to this register will, independent of ACKACT in TWIn.MSTATUS, command the master to
perform a byte transmit operation on the bus directly followed by receiving the Acknowledge bit from the
slave. When the Acknowledge bit is received, the Master Write Interrupt Flag (WIF) in TWIn.MSTATUS is
set regardless of any bus errors or arbitration. If operating in a multi-master environment, the interrupt
handler or application software must check the Arbitration Lost Status Flag (ARBLOST) in
TWIn.MSTATUS before continuing from this point. If the arbitration was lost, the application software must
decide to either abort or to resend the packet by rewriting this register. The entire operation is performed
(i.e., all bits are clocked), regardless of winning or losing arbitration before the write interrupt flag is set.
When arbitration is lost, only '1's are transmitted for the remainder of the operation, followed by a write
interrupt with ARBLOST flag set.
Both TWI Master Interrupt Flags are cleared automatically when this register is written. However, the
Master Arbitration Lost and Bus Error flags are left unchanged.
Reading this register triggers a bus operation, dependent on the setting of the Acknowledge Action
Command bit (ACKACT) in TWIn.MSTATUS. Normally the ACKACT bit is preset to either ACK or NACK
before the register read operation. If ACK or NACK action is selected, the transmission of the
acknowledge bit precedes the release of the clock hold. The clock is released for one byte, allowing the
slave to put one byte of data on the bus. The Master Read Interrupt flag RIF in TWIn.MSTATUS is then
set if the procedure was successfully executed. However, if arbitration was lost when sending NACK, or a
bus error occurred during the time of operation, the Master Write Interrupt flag (WIF) is set instead.
Observe that the two Master Interrupt Flags are mutually exclusive (i.e., both flags will not be set
simultaneously).
©
2018 Microchip Technology Inc.
6
5
R/W
R/W
0
0
4
3
DATA[7:0]
R/W
R/W
0
0
Datasheet Preliminary
®
megaAVR
0-Series
Two-Wire Interface (TWI)
2
1
R/W
R/W
0
0
DS40002015A-page 360
0
R/W
0
Need help?
Do you have a question about the megaAVR 0 Series and is the answer not in the manual?
Questions and answers