collapse

* Links de Robótica

* Posts Recentes

URGENTE - display de 7 segmentos com backpack por helderjsd
[Hoje às 12:30]


Preços e fabricantes de pcb por Sérgio_Sena
[Ontem às 10:20]


Palavras Cruzadas por Njay
[Ontem às 02:24]


Isaac Asimov - I, Robot por senso
[18 de Setembro de 2017, 03:41]


Apresentação por TigPT
[17 de Setembro de 2017, 07:31]


ic SL440 da Plessey? por senso
[16 de Setembro de 2017, 13:11]


Compra Colectiva RS-Amidata por brunus
[15 de Setembro de 2017, 22:31]


Ideias para construir um quadrúpede simples por zordlyon
[15 de Setembro de 2017, 10:18]


Preparar bancada de testes por jm_araujo
[14 de Setembro de 2017, 10:24]


Mitos: mudança da ilumação tradicional p/ iluminação a LEDs? por LVirtual
[14 de Setembro de 2017, 07:46]

Autor Tópico: ajuda comunicação i2c mikroc  (Lida 2711 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.389
  • 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.389
  • 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