collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

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