⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 master.c

📁 An algorithm I2C communication as a master in AVR MCU using WINCC
💻 C
字号:
unsigned char TWI_address @0x800;      // variable for choosing SLAVE MCU
signed int Vright @0x801;            // variable for setting Velocity to right SLAVE MCU
signed int Vleft @0x803;             // variable for setting Velocity to left SLAVE MCU
unsigned char TWI_cmd_right @0x805;    // variable for Command to right SLAVE MCU
unsigned char TWI_cmd_left @0x806;     // variable for Command to left SLAVE MCU
signed int left_data @0x807;         // data from left SLAVE MCU
char LDH @0x808;              // high-byte of left_data
char LDL @0x807;              // low-byte of left_data
signed int right_data @0x809;        // data from right SLAVE MCU
char RDH @0x80A;              // high-byte of right_data
char RDL @0x809;              // low-byte of right_data

//**** TWI Control Register (TWCR) ****	
#define TWINT     7
#define TWEA	   6
#define TWSTA	   5
#define TWSTO	   4
#define TWWC	   3
#define TWEN      2
#define TWIE	   0
#define TWI_TWBR  0x00        // TWI Bit rate Register setting

/****************************************************************************
  Bit and byte definitions
****************************************************************************/
#define TWI_READ_BIT  0       // Bit position for R/W bit in "address byte".
#define TWI_ADR_BITS  1       // Bit position for LSB of the slave address bits in the init byte.

#define TRUE          1
#define FALSE         0

/****************************************************************************
  TWI State codes
****************************************************************************/
// General TWI Master status codes                      
#define TWI_START                  0x08  // START has been transmitted  
#define TWI_REP_START              0x10  // Repeated START has been transmitted
#define TWI_ARB_LOST               0x38  // Arbitration lost

// TWI Master Transmitter status codes                      
#define TWI_MTX_ADR_ACK            0x18  // SLA+W has been tramsmitted and ACK received
#define TWI_MTX_ADR_NACK           0x20  // SLA+W has been tramsmitted and NACK received 
#define TWI_MTX_DATA_ACK           0x28  // Data byte has been tramsmitted and ACK received
#define TWI_MTX_DATA_NACK          0x30  // Data byte has been tramsmitted and NACK received 

// TWI Master Receiver status codes  
#define TWI_MRX_ADR_ACK            0x40  // SLA+R has been tramsmitted and ACK received
#define TWI_MRX_ADR_NACK           0x48  // SLA+R has been tramsmitted and NACK received
#define TWI_MRX_DATA_ACK           0x50  // Data byte has been received and ACK tramsmitted
#define TWI_MRX_DATA_NACK          0x58  // Data byte has been received and NACK tramsmitted

// TWI Slave Transmitter status codes
#define TWI_STX_ADR_ACK            0xA8  // Own SLA+R has been received; ACK has been returned
#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
#define TWI_STX_DATA_ACK           0xB8  // Data byte in TWDR has been transmitted; ACK has been received
#define TWI_STX_DATA_NACK          0xC0  // Data byte in TWDR has been transmitted; NOT ACK has been received
#define TWI_STX_DATA_ACK_LAST_BYTE 0xC8  // Last data byte in TWDR has been transmitted (TWEA = 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -