Ir ao conteúdo
  • Cadastre-se

[Resolvido]Serial entre PC e 8051 - Dúvida


graccula

Posts recomendados

Pessoal,

Estou fazendo experiencias com comunicação serial entre o PC e o 8051. No simulador do proteus, consegui utilizando o Virtual Terminal, fazer funcionar sem problemas. Mas não consegui fazer funcionar direito com o MAX232.

Não consegui simular no Proteus, mesmo usando o COMPIM (um componente para simular as portas seriais).

No real, eu consegui fazer o MC "receber" dados e apresentar no LCD, mas o estranho é que esses dados estão chegando com problemas.

Eu estou utilizando o HyperTerminal para conversar do PC (via COM2) com o 8051 (através do MAX232). Quando digito 'a' no hyperterminal, aparece 'O' no LCD conectado ao MC. Só quando eu digito '=' é que aparece a letra 'a' no LCD.

Alguém já passou por isso? Coloquei uma imagem em anexo com o código que estou usando.

Agradeço qqer ajuda

[]s

Renato

Pessoal, só complementando: o código acima foi um teste basico que criei apenas para fazer um debug. Como no tópico acima eu falo em aparecer no LCD e tal, mas o teste com o LCD foi outro.

post-86792-13884947829598_thumb.gif

Link para o comentário
Compartilhar em outros sites

Salve, graccula. beleza?

Faz tempo que eu não programo 8051...

E faz mais tempo ainda que eu não programo o 51 em ASM...

As configurações, me parecem corretas. Quem pode te dar uma dica melhor em ASM, é o soschip. Vamos ver se ele aparece por esse post, eheheheheh

Cara! Quando eu tive problemas com serial, o problema era sempre na configuração do PC. você configurou correto a porta que você está trabalhando?

Se as configurações estiverem corretas, então, aí a gente já deve partir pra erros de desenho ou de montagem da interface, usando o MAX.

Refaz o check das conexões do MAX, e verifique se não tem capacitores invertidos.

Verifique tb se o próprio tá funfando.

Depois de estabelecer a comunicação entre os dois, dê um RESET no 51. Isso, as vezes resolvia por aqui.

Posta o desenho do circuito elétrico aí, pra gente dar uns pitacos.

[]'s

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Opa... parece que 'escutei' meu nome!

sugiro que apresente os dados recebido em leds antes de enviar para o display. Assim você pode comparar na tabela ASCII se está recebendo os caracteres corretamente. Como disse o maurício, também acho que pode ser problema de hardware.

Pode inserir o código após o clr ri

jnb ri,$

mov a,sbuf

clr ri

mov px,a ;apresenta dado recebido em binário, onde 'x' é a porta que pode ser 1,2,3 ou4

...continua seu código.

DICA: Baixe o RCOMSERIAL do rogercom.

è bem fácil e funciona muito bem.

TelaRcomSerial.gif

http://www.rogercom.com/PortaSerial/PortaSerial.htm

Link para o comentário
Compartilhar em outros sites

Maurício e soschip, obrigado pela ajuda!

Mauricio, quanto as configurações do PC eu tentei vária diferentes, mas todas causam o mesmo efeito. A não ser quando eu mudo o baud rate, aí não funciona mesmo. Os capacitores do MAX232 eu estou desconfiado que estão com problemas mesmo, senão o próprio MAX232 está bichado. Já encomendei outro para verificar essa possibilidade e também comprei novos capacitores de 1uF, só que 50V. porque eu tenho visto na maioria dos esquemas o pessoal usando os capacitores de 50V. Eu estou usando de 16V. Estou começando a desconfiar que não está funcionando por causa da tensão do capacitor. você sabe se os níveis de tensão do MAX232 podem passar de 16V?

soschip, muito legal esse site do Rogercom hein! Eu não tinha visto ainda! Vou fazer experiencias com o programa dele. Agora, vendo a página dele eu acabei ficando com dúvidas sobre qual cabo utilizar...? Com ou sem suporte a controle de fluxo via hardware? Eu estou usando o sem suporte, ou seja com loopback nos pinos do handshaking.

Outra coisa que vou fazer é montar o loopback para testar a porta serial. Acho que não é esse o problema, mas não custa nada testar a porta do PC né?

Valeu mesmo gente.

[]s

Renato

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Amigo, se for só para receber dados do PC pelo 8051, não precisa de max232. Basta pega o TXD da porta serial e aplicar no anodo de um diodo 1N4148, o katodo você liga num resistor até a base de um NPN. O coletor será a saída para o RxD do 8051... Moleza!

Os GNDs devem ser comuns,

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Essa é a forma mais simples de converter RS232 para TTL/CMOS.

Como os níveis RS232 são invertidos em relação ao potencial elétrico, basta ler os níveis '0', que na realidade é +12V. O nível '1' é -12V e este será cortado pelo diodo.

Então este nível '0' de 12V vai saturar o transistor que mandará 0V para RXD... Meio confuso, não... mas entendeu?

O max232 seria necessário se precisasse converter TTL em RS232, pois você teria que criar estes níveis elétricos de -12 e +12, '1' e '0' respectivamente.

Se quiser pode adicionar um resistor de pull-up extra no coletor, mas o 8051 já tem um interno.

post-163362-13884947835218_thumb.gif

Link para o comentário
Compartilhar em outros sites

Bacana, valeu! Vou fazer esse teste. Mas acho que descobri o problema por aqui. Fiz o bendito do teste de loop back e não funcionou na COM2, que é justamente a que estou usando para a comunicação com o 8051. Fiz o teste na COM1 e funcionou legal. Vou desmontar o computador para ver se trocando o rabicho resolve.

Ah! Comprei outro MAX232 para testar e outros capacitores e também outro AT89S52. O Moska tá cobrando o olho da cara! 15 reais!

Depois volto com os resultados dos testes.

Valeu!

Link para o comentário
Compartilhar em outros sites

Cara! Quando eu tive problemas com serial, o problema era sempre na configuração do PC. você configurou correto a porta que você está trabalhando?

...

[]'s

Mauricio, acho que você acertou na mosca! O problema era a porta serial do PC. Não exatamente configuração, mas não está funcionando. Ainda não investiguei totalmente. O problema é na COM2. Ela está se comportando de forma muito esquisita.

soschip,

Consegui fazendo outro cabo e conectando na porta serial COM1. O problema é que meu computador é um dinossauro AMD K6 2 500 com monitor de 9 polegadas monocromático. Então você já viu né? O mouse fica na COM1 !!! Por sorte consegui utilizar o HyperTerminal por atalhos no teclado. O programa que você indicou do rogercom eu não consegui utilizar através do teclado.

Mas por fim funcionou! Consegui rodar o programa. Vou postar umas fotos e o programa que eu usei.

Valeu pela ajuda pessoal!

[]s

Renato

Link para o comentário
Compartilhar em outros sites

você sabe se os níveis de tensão do MAX232 podem passar de 16V?

Não sei dizer, porque eu não conheço o funcionamento interno do MAX.

Analisando o circuito, se ele for referenciado pelo terra, dificilmente essa tensão irá passar de 12V, uma vez que as fontes de PCs são bem reguladas, e dificilmente você irá encontrar um PC, que dê realmente, os 12V na saída da RS232.

Se o referencial for o nível 1 RS232 (-12), então, nesse caso sim, a tensão poderia subir até 24V.

É que eu comprei capacitores de 50V aqui, mas, não me lembro se eu já tinha usado de 25V e tinha funcionado.

16V fica muito no limite dos capacitores, pras tensões que estão sendo usadas. Nesse caso, 25V seria o mínimo recomendado.

você está usando cristal de 12M? Experimente utilizar um cristal de 11,0592MHz. Ele dá uma margem de erro 0, para esse baud, apesar de que se for de 12M, 0,12% de erro é considerado irrisório, mas, o melhor é se cercar de todas as coisas que podem dar problemas. Depois de confirmado o funcionamento, aí sim, se começa a fazer mudanças.

O circuito que eu uso aqui para comunicação com serial 232, é que os pinos do conector DB9, do lado do PC, pinos 1-4-6 em curto, e pinos 7-8 em curto também.

Os outros, são somente RX, TX e Terra. Sem esquecer que TX do PC é RX do MCU, e RX do PC é TX do MCU. E tb os resistores de pullup (10K ohms) nos pinos TX e RX do MCU. É só pra lembrar.

Tem alguma coisa a ver com o controle de fluxo da 232 no PC, tb. Não me lembro mais se eu usava XON/XOFF, ou HARDWARE. É que eu uso pouco, comunicação, e a gente só pena quando vai implementar, mesmo.

Melhor do que falar é desenhar, ehehehehehe

Veja se o desenho abaixo ajuda.

Todas as vezes que você mexer nas configurações da serial, no PC, é bom dar RESET no MCU.

Boa sorte.

[]'s

Ops! Postei sem ver suas respostas.

De qualquer modo, fica aí pra outra pessoa que tiver problemas semelhantes, eheheheheh

Melhor que funcionou! :-BEER

[]'s

post-67551-13884947836089_thumb.jpg

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!