Subversion Repositories MK3Mag

Compare Revisions

Ignore whitespace Rev 18 → Rev 19

/branches/MK3Mag V0.14 Code Redesign Killagreg/twislave.h
1,86 → 1,72
#ifndef _TWI_SLAVE_H_
#define _TWI_SLAVE_H_
 
#define I2C_SLAVE_ADDRESS 0x50
#include <inttypes.h>
 
#define I2C_CMD_VERSION 0x01
struct str_I2C_Version
{
unsigned char Hauptversion;
unsigned char Nebenversion;
unsigned char Comp;
} ;
#define I2C_SLAVE_ADDRESS 0x50
#define I2C_PROTOCOL_COMP 1
 
#define I2C_CMD_WRITE_EEPROM 0x0A
#define I2C_CMD_READ_EEPROM 0x0B
struct str_I2C_EEPROM
{
unsigned char Adresse;
unsigned int Inhalt;
} ;
#define I2C_CMD_VERSION 0x01
#define I2C_CMD_READ_MAG 0x02
#define I2C_CMD_READ_HEADING 0x03
#define I2C_CMD_WRITE_CAL 0x04
#define I2C_CMD_WRITE_EEPROM 0x0A
#define I2C_CMD_READ_EEPROM 0x0B
 
#define I2C_CMD_READ_MAG 0x02
struct str_I2C_Mag
 
typedef struct
{
int MagX;
int MagY;
int MagZ;
} ;
uint8_t Major;
uint8_t Minor;
uint8_t Compatible;
} I2C_Version_t;
 
#define I2C_CMD_READ_HEADING 0x03
struct str_I2C_WriteNickRoll
 
typedef struct
{
int Nick;
int Roll;
} ;
uint8_t Adress;
uint16_t Content;
} I2C_EEPROM_t;
 
#define I2C_CMD_WRITE_CAL 0x04
struct str_I2C_WriteCal
 
typedef struct
{
unsigned char CalByte;
unsigned char Dummy1;
unsigned char Dummy2;
} ;
int16_t MagX;
int16_t MagY;
int16_t MagZ;
} I2C_Mag_t;
 
struct str_I2C_Heading
 
typedef struct
{
unsigned int Heading;
} ;
int16_t Nick;
int16_t Roll;
} I2C_WriteAttitude_t;
 
 
extern unsigned char Tx_Idx, Rx_Idx, I2C_Direction;
typedef struct
{
uint8_t CalByte;
uint8_t Dummy1;
uint8_t Dummy2;
} I2C_WriteCal_t;
 
extern struct str_I2C_Heading I2C_Heading;
extern struct str_I2C_WriteNickRoll I2C_WriteNickRoll;
extern struct str_I2C_Mag I2C_Mag;
extern struct str_I2C_EEPROM I2C_ReadEEPROM, I2C_WriteEEPROM;
extern struct str_I2C_Version I2C_Version;
extern struct str_I2C_WriteCal I2C_WriteCal;
typedef struct
{
int16_t Heading;
} I2C_Heading_t;
 
 
extern void InitIC2_Slave (void);
extern uint8_t Tx_Idx, Rx_Idx, I2C_Direction;
 
#define TWI_BUS_ERR_1 0x00
#define TWI_BUS_ERR_2 0xF8
extern I2C_Heading_t I2C_Heading;
extern I2C_WriteAttitude_t I2C_WriteNickRoll;
extern I2C_Mag_t I2C_Mag;
extern I2C_Version_t I2C_Version;
extern I2C_WriteCal_t I2C_WriteCal;
 
// Status Slave RX Mode
#define SR_SLA_ACK 0x60
#define SR_LOST_ACK 0x68
#define SR_GEN_CALL_ACK 0x70
#define GEN_LOST_ACK 0x78
#define SR_PREV_ACK 0x80
#define SR_PREV_NACK 0x88
#define GEN_PREV_ACK 0x90
#define GEN_PREV_NACK 0x98
#define STOP_CONDITION 0xA0
#define REPEATED_START 0xA0
void I2C_Init(void);
 
// Status Slave TX mode
#define SW_SLA_ACK 0xA8
#define SW_LOST_ACK 0xB0
#define SW_DATA_ACK 0xB8
#define SW_DATA_NACK 0xC0
#define SW_LAST_ACK 0xC8
 
#endif
#endif // _TWI_SLAVE_H_