collapse

* Links de Robótica

* Posts Recentes

Ajuda com TRIAC por senso
[17 de Novembro de 2017, 18:00]


TV LG White Screen por almamater
[15 de Novembro de 2017, 08:37]


Pergunta sobre prototipagem ( Pesquisa ) por luisjustin
[14 de Novembro de 2017, 23:22]


Medir Agua que está no Poço por Njay
[14 de Novembro de 2017, 13:28]


Amplificador audio por beirao
[12 de Novembro de 2017, 23:43]


Power_OK Enermax por edeweld
[12 de Novembro de 2017, 17:15]


Driver motor por beirao
[11 de Novembro de 2017, 17:40]


Preciso de uma fonte de corrente constante ? por samc
[09 de Novembro de 2017, 14:18]


Pressoestato 0-10V por artur36
[07 de Novembro de 2017, 23:22]


Ideias para construir um quadrúpede simples por Njay
[07 de Novembro de 2017, 18:39]

Autor Tópico: ajuda comunicação i2c mikroc  (Lida 2769 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline clauiocbamt

  • Mini Robot
  • *
  • Mensagens: 18
ajuda comunicação i2c mikroc
« 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;

Online senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.400
  • Helpdesk do sitio
Re: ajuda comunicação i2c mikroc
« Responder #1 em: 27 de Fevereiro de 2011, 23:55 »
Tens os pull-ups nas linhas SDL e SCK?
Sem elas o I2C nao funciona.
Avr fanboy

Offline clauiocbamt

  • Mini Robot
  • *
  • Mensagens: 18
Re: ajuda comunicação i2c mikroc
« Responder #2 em: 28 de Fevereiro de 2011, 01:14 »
sim, esta com resistor de pull up



segue abaixo o arquivo de simulação no proteus



Offline clauiocbamt

  • Mini Robot
  • *
  • Mensagens: 18
Re: ajuda comunicação i2c mikroc
« Responder #3 em: 28 de Fevereiro de 2011, 01:35 »
FALTOU O ARQUIVO .HEX

Online senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.400
  • Helpdesk do sitio
Re: ajuda comunicação i2c mikroc
« Responder #4 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.
Avr fanboy