LusoRobótica - Robótica em Português

Sistemas específicos => PIC => Tópico iniciado por: clauiocbamt em 27 de Fevereiro de 2011, 23:43

Título: ajuda comunicação i2c mikroc
Enviado por: clauiocbamt em 27 de Fevereiro de 2011, 23:43
alguem pode me ajudar a resolver um problema na comunicação i2c.
e o seguinte estou simulando o codigo no proteus , ele esta enviando o comando e repondendo tudo normal, só que qdo estou usando o debugger i2c ele apresenta a seguinte mensagem . "spurios SCL transition detect" e na mensagem aparece um tempo em S , alguem pode ajudar resolver o problema. segue o código MIKROC.


Código:
codigo do Mestre


// microcontrolador pic 18f4550

const escravo = 0xb0;
unsigned short enviar_dados;
void enviar(unsigned short enviar_dados){
I2C1_Init(100000);
I2C1_Start();
I2C1_Wr(escravo);
I2C1_Wr(enviar_dados);
I2C1_Stop();
delay_ms(1000);
}

void main(){


trisd.rd0 = 1;
trisd.rd1 = 1;

while(1){
if (portd.rd0 == 0){
enviar(02);
}
if (portd.rd1 == 0){
enviar(03);
}

}
}


//codigo do escravo
/--------------------------------------------------------------------------------------------
// microcontrolador escravo pic16f877a
//------------------------------------------------------------------------------
const escravo = 0xb0;
//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
unsigned short j;
unsigned short recebidos;
unsigned short tx_dados;
//------------------------------------------------------------------------------
void Init(){
ADCON1 = 0;
TRISA = 0;
TRISD = 0;
portd.rd0 = 0;
TRISC = 0xFF;
portc = 0;
SSPADD = escravo;
SSPCON = 0x36;
PIE1.SSPIF = 1;
INTCON = 0xC0;
}
//------------------------------------------------------------------------------
void interrupt(){
if (PIR1.SSPIF == 1){
PIR1.SSPIF =0;
if (SSPSTAT.R_W == 1){
SSPBUF = tx_dados;
SSPCON.CKP = 1;
j = SSPBUF;
return;
}
if (SSPSTAT.BF == 0){
j = SSPBUF;
return;
}
//recieve data from master
if (SSPSTAT.D_A == 1){
recebidos = SSPBUF;
j = SSPBUF;
Título: Re: ajuda comunicação i2c mikroc
Enviado por: senso em 27 de Fevereiro de 2011, 23:55
Tens os pull-ups nas linhas SDL e SCK?
Sem elas o I2C nao funciona.
Título: Re: ajuda comunicação i2c mikroc
Enviado por: clauiocbamt em 28 de Fevereiro de 2011, 01:14
sim, esta com resistor de pull up



segue abaixo o arquivo de simulação no proteus


Título: Re: ajuda comunicação i2c mikroc
Enviado por: clauiocbamt em 28 de Fevereiro de 2011, 01:35
FALTOU O ARQUIVO .HEX
Título: Re: ajuda comunicação i2c mikroc
Enviado por: senso em 28 de Fevereiro de 2011, 02:05
Simuladores com bugs lol..
Monta lá isso na realidade e ve se funciona ou nao, esse simulador nao e grande coisa.