TTK4155 Ping-pong project
TWI_Master.h
Go to the documentation of this file.
1 /*****************************************************************************
2 *
3 * Atmel Corporation
4 *
5 * File : TWI_Master.h
6 * Compiler : IAR EWAAVR 2.28a/3.10c
7 * Revision : $Revision: 1.13 $
8 * Date : $Date: 24. mai 2004 11:31:22 $
9 * Updated by : $Author: ltwa $
10 *
11 * Support mail : avr@atmel.com
12 *
13 * Supported devices : All devices with a TWI module can be used.
14 * The example is written for the ATmega16
15 *
16 * AppNote : AVR315 - TWI Master Implementation
17 *
18 * Description : Header file for TWI_Master.c
19 * Include this file in the application.
20 *
21 ****************************************************************************/
22 
23 /****************************************************************************
24  TWI Status/Control register definitions
25 ****************************************************************************/
26 #define TWI_BUFFER_SIZE 4 // Set this to the largest message size that will be sent including address byte.
27 
28 #define TWI_TWBR 0x0C // TWI Bit rate Register setting.
29  // Se Application note for detailed
30  // information on setting this value.
31 // Not used defines!
32 //#define TWI_TWPS 0x00 // This driver presumes prescaler = 00
33 
34 /****************************************************************************
35  Global definitions
36 ****************************************************************************/
37 
38 union TWI_statusReg // Status byte holding flags.
39 {
40  unsigned char all;
41  struct
42  {
43  unsigned char lastTransOK:1;
44  unsigned char unusedBits:7;
45  };
46 };
47 
48 extern union TWI_statusReg TWI_statusReg;
49 
50 /****************************************************************************
51  Function definitions
52 ****************************************************************************/
53 void TWI_Master_Initialise( void );
54 unsigned char TWI_Transceiver_Busy( void );
55 unsigned char TWI_Get_State_Info( void );
56 void TWI_Start_Transceiver_With_Data( unsigned char * , unsigned char );
57 void TWI_Start_Transceiver( void );
58 unsigned char TWI_Get_Data_From_Transceiver( unsigned char *, unsigned char );
59 
60 /****************************************************************************
61  Bit and byte definitions
62 ****************************************************************************/
63 #define TWI_READ_BIT 0 // Bit position for R/W bit in "address byte".
64 #define TWI_ADR_BITS 1 // Bit position for LSB of the slave address bits in the init byte.
65 
66 #define TRUE 1
67 #define FALSE 0
68 
69 /****************************************************************************
70  TWI State codes
71 ****************************************************************************/
72 // General TWI Master staus codes
73 #define TWI_START 0x08 // START has been transmitted
74 #define TWI_REP_START 0x10 // Repeated START has been transmitted
75 #define TWI_ARB_LOST 0x38 // Arbitration lost
76 
77 // TWI Master Transmitter staus codes
78 #define TWI_MTX_ADR_ACK 0x18 // SLA+W has been tramsmitted and ACK received
79 #define TWI_MTX_ADR_NACK 0x20 // SLA+W has been tramsmitted and NACK received
80 #define TWI_MTX_DATA_ACK 0x28 // Data byte has been tramsmitted and ACK received
81 #define TWI_MTX_DATA_NACK 0x30 // Data byte has been tramsmitted and NACK received
82 
83 // TWI Master Receiver staus codes
84 #define TWI_MRX_ADR_ACK 0x40 // SLA+R has been tramsmitted and ACK received
85 #define TWI_MRX_ADR_NACK 0x48 // SLA+R has been tramsmitted and NACK received
86 #define TWI_MRX_DATA_ACK 0x50 // Data byte has been received and ACK tramsmitted
87 #define TWI_MRX_DATA_NACK 0x58 // Data byte has been received and NACK tramsmitted
88 
89 // TWI Slave Transmitter staus codes
90 #define TWI_STX_ADR_ACK 0xA8 // Own SLA+R has been received; ACK has been returned
91 #define TWI_STX_ADR_ACK_M_ARB_LOST 0xB0 // Arbitration lost in SLA+R/W as Master; own SLA+R has been received; ACK has been returned
92 #define TWI_STX_DATA_ACK 0xB8 // Data byte in TWDR has been transmitted; ACK has been received
93 #define TWI_STX_DATA_NACK 0xC0 // Data byte in TWDR has been transmitted; NOT ACK has been received
94 #define TWI_STX_DATA_ACK_LAST_BYTE 0xC8 // Last data byte in TWDR has been transmitted (TWEA = “0”); ACK has been received
95 
96 // TWI Slave Receiver staus codes
97 #define TWI_SRX_ADR_ACK 0x60 // Own SLA+W has been received ACK has been returned
98 #define TWI_SRX_ADR_ACK_M_ARB_LOST 0x68 // Arbitration lost in SLA+R/W as Master; own SLA+W has been received; ACK has been returned
99 #define TWI_SRX_GEN_ACK 0x70 // General call address has been received; ACK has been returned
100 #define TWI_SRX_GEN_ACK_M_ARB_LOST 0x78 // Arbitration lost in SLA+R/W as Master; General call address has been received; ACK has been returned
101 #define TWI_SRX_ADR_DATA_ACK 0x80 // Previously addressed with own SLA+W; data has been received; ACK has been returned
102 #define TWI_SRX_ADR_DATA_NACK 0x88 // Previously addressed with own SLA+W; data has been received; NOT ACK has been returned
103 #define TWI_SRX_GEN_DATA_ACK 0x90 // Previously addressed with general call; data has been received; ACK has been returned
104 #define TWI_SRX_GEN_DATA_NACK 0x98 // Previously addressed with general call; data has been received; NOT ACK has been returned
105 #define TWI_SRX_STOP_RESTART 0xA0 // A STOP condition or repeated START condition has been received while still addressed as Slave
106 
107 // TWI Miscellaneous status codes
108 #define TWI_NO_STATE 0xF8 // No relevant state information available; TWINT = “0”
109 #define TWI_BUS_ERROR 0x00 // Bus error due to an illegal START or STOP condition
110 
Definition: TWI_Master.h:38
unsigned char TWI_Get_State_Info(void)
Definition: TWI_Master.c:66
unsigned char TWI_Get_Data_From_Transceiver(unsigned char *, unsigned char)
Definition: TWI_Master.c:128
void TWI_Master_Initialise(void)
Definition: TWI_Master.c:42
unsigned char unusedBits
Definition: TWI_Master.h:44
unsigned char all
Definition: TWI_Master.h:40
unsigned char lastTransOK
Definition: TWI_Master.h:43
void TWI_Start_Transceiver_With_Data(unsigned char *, unsigned char)
Definition: TWI_Master.c:79
void TWI_Start_Transceiver(void)
Definition: TWI_Master.c:109
unsigned char TWI_Transceiver_Busy(void)
Definition: TWI_Master.c:56