OK I've made it works.
Here is an exaple of my code:
void initI2C(void){
IBFD=0x14;
}
void main(void) {
DDRA=0xFF;
PORTA=0xFF;
i=0;
initI2C();
EnableInterrupts;
for(;
{
PORTA_BIT0=0; //Led off
IBCR_IBEN=1; //I-Bus Enabled
IBCR_MS_SL=1; //HC12 is Master
IBCR_TXAK=0; //transmit ack disable
while(IBSR_IBB==1){} //wait until i2c bus is free
PORTA_BIT1=0; //Led off
IBCR_TX_RX=1; //Transmit mode
IBDR=0xC0; //sending cmps03 address
while(IBSR_IBIF==0){} //wait until address is send
if (IBSR_RXAK!=1)
PORTA_BIT2=0; else //if ack received led off
IBCR_MS_SL=0; //else sending stop bit
IBSR_IBIF=1; //clear IBIF flag
IBDR=2; //sending number of register to be read
while(IBSR_IBIF==0){}
if (IBSR_RXAK!=1)
PORTA_BIT3=0; else
IBCR_MS_SL=0;
IBSR_IBIF=1;
IBDR=3; //sending number of register to be read
while(IBSR_IBIF==0){}
if (IBSR_RXAK!=1)
PORTA_BIT3=0; else
IBCR_MS_SL=0;
IBSR_IBIF=1;
IBCR_RSTA=1; //genereting of repeated start
IBDR=0xC1; //sending address of cmps03 with R/W on 1
while(IBSR_IBIF==0){}
if (IBSR_RXAK!=1)
PORTA_BIT4=0; else
IBCR_MS_SL=0;
IBSR_IBIF=1;
IBCR_TX_RX=0; //Recieve mode
cmps[i]=IBDR; //dummy readout
while(IBSR_IBIF==0){} //wait for data
cmps[i]=IBDR*256; //store data
IBSR_IBIF=1;
IBCR_TXAK=1; //transmit ack enables
while(IBSR_IBIF==0){}
cmps[i]=cmps[i]+IBDR; //store data
IBCR_MS_SL=0; //sending stop bit
IBCR_IBEN=0; //I-Bus disable
PORTA=0xFF; //all Led on
}
}