Ir ao conteúdo
  • Cadastre-se
montteiro88

RESOLVIDO Problema comunicação serial

Recommended Posts

Pessoal ,

 

Estou enfrentando o seguinte problemas , acredito que seja algo bobo mas infelizmente nao consegui resolver . Estou tentando enviar um frase , palavra ou letra para porta serial porém unica coisa que recebo são caracteres desconhecidos ou  xxxxxxxxxxxx , ççççççççççççç . Compilei no CCS e compilei no Proteus  funcionou bonitinho do jeito que eu esperava , mas quando coloco no hardware da esse erro  estou usando um max232 e um conversor serial para usb.

 

Fui eliminando por periferico ou seja , desconectei o pic . E fiz um loop entre pc --- conversor---- max232 , a transmissao e recepção funcionou perfeitamente.

 

o codigo

 

#include <18f4550.h>

#fuses nowdt,hs ..........

#use delay(clock=20M)

#use rs232 (baud=9600 , xmit=pin_c6,rcv=pin_c7)

 

void main()

{

            while(true)

            {

                     printf("teste serial"); //

             }

}

 

mas ja tentei printf ,putc ,etc......, coloquei delay etc.

 

 

Agradeço quem poder me ajudar

 

post-765954-0-78083600-1431302963.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

@montteiro88,

Vou dar uns palpites ....

1- No programa voce informou a frequência correta do oscilador ?? Se você usa um cristal de 4 Mhz e no seu programa diz ao compilador que é 20 Mhz, vai ficar tudo errado mesmo....

2- Especifique totalmente o formato de comunicação serial por exemplo 9600 bauds, 8 bits, sem paridade e 1 stop bit. Mais conheçido como 9600,8,N,1 .

3- Por ultimo, em seu PC veja se o programa de terminal também está com todas as informações corretas, 9660,8,N,1 .

Paulo

Compartilhar este post


Link para o post
Compartilhar em outros sites

@aphawk ,

 

Então declarei no #fuse HS , para high speed , a unica coisa que ai nao mudei foi codigo foi o stop bits , mas eu to achando que deve ser algo relacionado ao clock como você disse , pois um dia antes fiz um programa para aprensentar a cada 3 segundos , delay_ms(3000); , ele demora o dobro, porém no proteus ele acusou o erro , excessive load cpu , mas está muito estranhho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvi  :D

Ontem fiz um programa no Mikroc e funcionou então já foi descartado o hardware . então resolvi dar uma olha nos fusiveis e comparei com os do Mikcroc cheguei na solução :

 

#FUSES PLL1                     
#FUSES CPUDIV1                  
#FUSES NOUSBDIV                
#FUSES NOICPRT        
 
Mesmo que nao use PLL , esses caras interferem no clock.           

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×