Ir ao conteúdo
  • Cadastre-se

PIC comunicação rs232 entre pics com transceiver max487


Posts recomendados

A comunicação rs232 consegui fazer entre dois pics, estou utilizando o PIC16F628A, entre fios de ligação direta entre os PICS funciona perfeitamente,

porém quando vou acrescentar dois transceivers MAX487 não está funcionando. Vou postar logo abaixo o código fonte dos dois PICS, se alguém puder me ajudar eu agradeço,

inclusive ja até pesquisei no youtube alguns projetos entre o pic mestre e o pic escravo, a pessoa que montou esse projeto habilita o pino ENABLE da RS232, onde os ports RE, DE são curtucircuitados para habilitação de envio ou recepção de dados. Porém, eu fiz um parecido e nada consegui por enquanto, alguém poderia me ajudar? Vou postar aqui o código dos dois PICS

 

 

#include <PICTESTER.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
  
#define LCD_ENABLE_PIN PIN_B0
#define LCD_RS_PIN PIN_B1
#define LCD_RW_PIN PIN_B2
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
  
#use delay(internal=4000000)
#use rs232(baud=3000,parity=N,xmit=PIN_A0,rcv=PIN_A1,bits=8,stream=PORT1,enable=PIN_A4)
  
int16 comando;
int16 resultado=0;
#include <lcd.c>
//////
void main()/////
{
/////

   disable_interrupts(global);
   lcd_init();
   printf(lcd_putc"\fRECEPTOR\nTRANSMISSOR");delay_ms(100);
   output_low(pin_a6);//PIC AINDA NÃO RECEBEU MENSAGEM DO transmissor DO CI DE COMUNC.
   while(TRUE)
   {
      ////testando receptor questões ok e falsa
      If (kbhit()){ //SE RECEBER MENSAGEM 1 que significa ok então
     comando=getc();
     if (comando=='1'){
     output_high(pin_a2);//LIGA LED DE receptor ok!
     resultado++;
     printf(lcd_putc"\fRECEPTOR    BOM\nTRANSMISSOR");delay_ms(100);////
     }     
   } 
   ////testando transmissor questões ok e falsa
     if (comando=='3'){
     delay_ms(2000);
     putc('5');//envia essas letras pela serial
     }
     if (comando=='9'){
     
     output_high(pin_a6);//LIGA LED DE transmissor ok!
     resultado++;
     printf(lcd_putc"\fRECEPTOR    BOM\nTRANSMISSOR BOM");delay_ms(2000);////
     }

     
     if (resultado==2){
     putc('8');//para finalizar no display
     delay_ms(100);
     printf(lcd_putc"\f   PIC_TESTER:\n    75176 BOM");delay_ms(3000);break;
     }
  
   
   }

}

 

 

 

/////////////////////////////////////////////////////////////


#include <envia tx transceiver rs485.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
  
#define LCD_ENABLE_PIN PIN_B0
#define LCD_RS_PIN PIN_B1
#define LCD_RW_PIN PIN_B2
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
  
#use delay(internal=4000000)
#use rs232(baud=3000,parity=N,xmit=PIN_A0,rcv=PIN_A1,bits=8,stream=PORT1,enable=PIN_A4)

#include <lcd.c>
int16 conta=0;//
int16 comando;
void testar_75176_agora(){
output_high(pin_a2);//led testando 
printf(lcd_putc"\f    TESTANDO\n    RECEPTOR");delay_ms(100);
delay_ms(1000);
putc('1');
delay_ms(1000);
printf(lcd_putc"\f    TESTANDO\n   TRANSMISSOR  ");
delay_ms(100);
putc('3');//envia 3, pictester manda 5
  // }//end if
}//end função testar_75176_agora
void leitura_serial_sn75176b (){//aqui dentro minhas condições
If (kbhit()){ //aqui é para testar o transmissor LEITURA DA SERIAL
     comando=getc();
     if (comando=='5'){//se pic tester mandou 5,mando 9 pela serial, sinal que funcionou o transmissor do 75176 quando enviou 5 
     putc('9');//confirmando dados do transmissor no pic tester, esse comando é só para o pictester realizar o bloco respectivo da função de liga e desliga led do tx
     }
      if (comando=='8'){//se pic tester mandou 5,mando 9 pela serial, sinal que funcionou o transmissor do 75176 quando enviou 5 
     output_low(pin_a2);//led testando 
     printf(lcd_putc"\fTESTE FINALIZADO\nDESLIGUE E LIGUE");delay_ms(2500);BREAK;
          }
     }
}
void main(){
   lcd_init();
   printf(lcd_putc"\f   PIC_TESTER\n TESTA SN75176B");delay_ms(5000);
   
     testar_75176_agora();
   while(TRUE)
   {
     leitura_serial_sn75176b();//habilito leitura serial em looping infinito com as minhas respectivas condições dentro da minha função

   }//end while

}//end void main

O Objetivo é testar os cis tranceivers.

 

Ou, alguém teria um exemplo para me ajudar? Agradeço desde ja

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá amigo. Bem eu nunca usei este ci mas a figura abaixo já nos fornece praticamente tudo pra entender e programar a comunicação que aparentemente é relativamente simples...

max487cpa-dip-8-max487-rs-485rs-422-tran

Também não avaliei seu fonte mas tem muita coisa pra arduino em que você pode se basear

Link para o comentário
Compartilhar em outros sites

Em 14/07/2020 às 08:14, Isadora Ferraz disse:

Olá amigo. Bem eu nunca usei este ci mas a figura abaixo já nos fornece praticamente tudo pra entender e programar a comunicação que aparentemente é relativamente simples...

max487cpa-dip-8-max487-rs-485rs-422-tran

Também não avaliei seu fonte mas tem muita coisa pra arduino em que você pode se basear

Muito obrigado, pela dica, vou tentar alguma coisa com esse exemplo ,

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Consegui fazer deu certo, a questão era o proteus em si, acredito que seja um bug mesmo.

 

Pela programação estava definindo quem ia enviar e que ia receber os dados. ATÉ AI OK....Quando ia simular , as vezes não funcionava, então,

inseri para o transceiver que transmite tx, um resistor de pull up, e para o que recebe o sinal (rx) um resistor de pull down.  Funcionou perfeitamente , obrigado pela ajuda 

 

adicionado 2 minutos depois

Próximo passo é fazer uma comunicação via Canbus

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!