Hi! можно ли I2c - библиотеку прикрутить к TWI ATXmega384?
код:
Код:
#define EEPROM_BUS_ADDRESS 0xa0
unsigned char eeplc24_read(unsigned char address_high, unsigned char address_low) {
unsigned char data;
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address_high);
i2c_write(address_low);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | 1);
data=i2c_read(0);
i2c_stop();
return data;
}
void eeplc24_write(unsigned char address_high, unsigned char address_low, unsigned char data) {
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address_high);
i2c_write(address_low);
i2c_write(data);
i2c_stop();
}
TWI XMEGA
код инициализации:
Код:
// TWIC initialization
// structure that holds information used by the TWIC Master
// for performing a TWI bus transaction
TWI_MASTER_INFO_t twic_master;
void twic_init(void)
{
// General TWIC initialization
// External Driver Interface: Off
// SDA Hold: 400 ns
twi_init(&TWIC,false,TWI_SDAHOLD_400NS_gc);
// TWIC Master initialization
// Master interrupt: Low Level
// Peripheral Clock frequency: 32000000 Hz
// SCL Rate: 100000 bps
// Real SCL Rate: 100000 bps, Error: 0,0 %
twi_master_init(&twic_master,&TWIC,TWI_MASTER_INTLVL_LO_gc,
TWI_BAUD_REG(32000000,100000));
// TWIC Slave is disabled
TWIC.SLAVE.CTRLA=0;
}
// TWIC Master interrupt service routine
#pragma optsize- // optimize for speed
interrupt [TWIC_TWIM_vect] void twic_master_isr(void)
{
twi_master_int_handler(&twic_master);
}
#pragma optsize_default
twic_init();