collapse

* Posts Recentes

+ LASERs por dropes
[03 de Julho de 2025, 19:35]


Cerca eléctrica por SerraCabo
[14 de Junho de 2025, 23:26]


Alguém arranja motores? por almamater
[10 de Junho de 2025, 22:34]


Condensador 4.7uF 0603 por brunus
[09 de Junho de 2025, 15:52]


Lenovo IdeaPad 3 Não liga por jm_araujo
[07 de Maio de 2025, 19:10]


Identificar Diodo Zenner por filjoa
[01 de Maio de 2025, 23:07]


Meu novo robô por dropes
[18 de Março de 2025, 14:51]


JBL partybox On-The-Go por almamater
[21 de Fevereiro de 2025, 23:32]


Talking Reverse Engineering with an Absolute Legend! por SerraCabo
[13 de Fevereiro de 2025, 09:56]


Motoserra Stihl 120C por brunus
[11 de Fevereiro de 2025, 16:29]

Autor Tópico: ajuda comunicação i2c mikroc  (Lida 7052 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;

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • 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

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • 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