Добрый день! Прошу помощи в реализации интерфейса TWI на XMEGA. Набросал код для двух микроконтроллеров. Но на выходе SDA и SCL вообще ничего не происходит. Привожу пример для мастера.
#define F_CPU 2000000UL
#define CPU_SPEED 2000000
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
uint8_t slave_address=6, write=0;
uint8_t data=0x01;
void TWI_init(void)
{
TWIC.CTRL=0;
TWIC.MASTER.BAUD=0x05;
TWIC.MASTER.CTRLA=TWI_MASTER_INTLVL_HI_gc|TWI_MASTER_ENABLE_bm|TWI_MASTER_WIEN_bm;
TWIC.MASTER.CTRLB=0;
TWIC.MASTER.CTRLC=0;
TWIC.MASTER.STATUS=TWI_MASTER_BUSSTATE_IDLE_gc;
}
void TWI_write_date(uint8_t data)
{
//TWIC.MASTER.CTRLC=TWI_MASTER_CMD_REPSTART_gc;
TWIC.MASTER.ADDR=slave_address|write;
while(!(TWIC.MASTER.STATUS&TWI_MASTER_WIF_bm));
TWIC.MASTER.DATA=data;
while(!(TWIC.MASTER.STATUS & TWI_MASTER_WIF_bm));
TWIC.MASTER.DATA=data;
while(!(TWIC.MASTER.STATUS & TWI_MASTER_WIF_bm));
TWIC.MASTER.CTRLC=TWI_MASTER_ACKACT_bm|TWI_MASTER_CMD_STOP_gc;
TWIC.MASTER.CTRLC=0;
}
int main(void)
{
CPU_SREG|=(1<<CPU_I_bp);
TWI_init();
while(1)
{
TWI_write_date(data);
}
}