tutorial - Serial Link

Transcrição

tutorial - Serial Link
TUTORIAL
Comunicação Serial no 8051
Índice
Índice.................................................................................................................................................... 2
Introdução.............................................................................................................................................3
Material Necessário.............................................................................................................................. 4
Montagem.............................................................................................................................................6
Montagem do Cabo Serial.................................................................................................................... 7
Montagem do Hardware....................................................................................................................... 8
Montagem do Software...................................................................................................................... 15
Testando o Funcionamento................................................................................................................. 16
Conclusão........................................................................................................................................... 22
Introdução
Neste tutorial explicarei como montar um circuito para comunicação serial entre o computador e o
microcontrolador 8051.
O exemplo mostrado nesse tutorial é bem simples e pretende apenas ensinar o funcionamento
básico da comunicação serial.
Então para exemplificar o funcionamento do projeto vamos criar um programa que retorne um
caractere para cada tecla digitada no computador. Caso a tecla digitada seja um 'A' (maiúsculo), o
programa retorna o caractere 'K', caso contrário, retorna um ponto de interrogação (?).
Para executar as tarefas desse tutorial, você deve ter conhecimento prévio do procedimento de
gravação no 8051.
Material Necessário
Para este tutorial, você precisará dos seguintes componentes:
Tabela de componentes necessários para a montagem do tutorial. Informações retiradas do site
http://www.SoldaFria.com.br em 10/05/2010. Os preços podem variar e são de total responsabilidade do site
mencionado.
Capacitor Eletrolítico 1uF x 50V
4
R$ 0,60
Circuito Integrado MAX232 (ICL232, HIN232)
1
R$2,30
Soquete 16 Pinos Estampado
1
R$0,18
Capa para conector DB9 Bege com kit Curto
1
R$0,63
Conector DB9 Fêmea 180 Graus Solda Fio
1
R$0,84
Conector 5045-4 (KK 4 Vias Macho)
1
R$0,24
4
Alojamento Para Conector kk Molex 5051-4
Cabo Manga 3 Vias Sem Blindagem (metro)
1
R$0,33
1
R$0,90
Total
R$ 6,02
Você pode encontrar todos esses componentes facilmente na Santa Ifigênia, na loja Mult Comercial
(http://www.multcomercial.com.br/) , ou ainda no site Solda Fria (http://soldafria.com.br/loja/).
Você também vai precisar do seguinte datasheet:
•
MAX232 – Driver/Receiver conversor RS232 para TTL;
http://pdf1.alldatasheet.com/datasheet-pdf/view/207382/TI/MAX232N.html
Corte também alguns fios de cobre para grampear a protoboard.
Montagem
Para montar esse circuito você precisará da protoboard configurada com o esquema básico do
microcontrolador AT89S52, conforme descrito no tutorial de gravação. Vide figura abaixo.
Além disso, você precisará montar o cabo, conforme o próximo tópico.
Montagem do Cabo Serial
Para montar o cabo necessário para esse projeto, basta seguir as instruções da tabela de pinagem e o
resultado final deve parecer com a foto abaixo.
Mapeamento dos Pinos
Pino
DB9
Conector
GND
5
1
RXD
2
3
TXD
3
4
DTR
4
DSR
6
RTS
7
CTS
8
Muita atenção na montagem do cabo, pois apenas os pinos 5, 2 e 3 do DB9 são ligados no conector.
Os pinos 4 e 6 e os pinos 7 e 8 são ligados entre si, conforme a ilustração na tabela acima.
Esse cabo é chamado de Null-Modem, pois ele “força” o “handshaking” automático, ou seja, o
computador entenderá que o dispositivo conectado ao cabo estará sempre disponível.
O pino TXD é o responsável por enviar as informações do computador para o 8051 e o RXD recebe
os dados. O pino GND é o terra, responsável por equilibrar a tensão da comunicação.
Montagem do Hardware
A montagem do circuito deste projeto na protoboard é a parte mais fácil desse tutorial, bastando
apenas seguir as imagens:
Primeiro ache um bom lugar para colocar o MAX232 na protoboard. Repare no chanfro existente na
carcaça do circuito integrado que facilita a localização do pino 1 do componente.
No esquema abaixo você pode conferir a posição e a identificação dos pinos existentes no
MAX232. Os que realmente nos interessam são os pinos 15 e 16, onde ligaremos a alimentação, os
pinos 1, 2, 3, 4, 5 e 6, onde ligaremos os capacitores de polarização e os pinos 11, 12, 13 e 14, onde
ligaremos os fios de comunicação.
Precisamos então ligar a alimentação do MAX232. Para isso basta grampear o terminal positivo no
pino 16...
E o terminal negativo no pino 15 do MAX232.
Em seguida, precisamos colocar os capacitores de polarização. O primeiro vai no pino 1 e no pino 3
do MAX232, sendo que o pólo negativo vai no pino 3...
O segundo capacitor vai nos pinos 4 e 5 com o negativo virado para o pino 5; o terceiro capacitor
tem seu negativo ligado no pino 6 do MAX232 e o positivo no negativo da rede de alimentação.
Isso mesmo, é invertido, assim como o quarto capacitor, que tem o positivo ligado no pino 1 e o
negativo, no positivo da rede.
1
Pi no
GND
Pino 3
RXD
o
Pin
XD
4T
Coloque então o conector de quatro pinos na protoboard. Repare que o pino 2 não é utilizado. Isso é
porque o único conector que eu tinha aqui era de 4 pinos, mas você pode usar um de 3 pinos.
A primeira coisa a fazer é grampear o pino 1 do conector no negativo da rede, ou seja, no terra.
A parte final da montagem do circuito é a mais importante, pois é quando conectamos os fios da
comunicação. O primeiro é o que vai do pino 10 do 8051 até o pino 12 do MAX232.
O segundo fio (azul) vai do pino 11 do 8051 para o pino 11 do MAX232, e o fio branco é o que liga
o pino 14 do MAX232 para o pino 2 do conector. Se você prestou atenção, deve ter percebido que
eu liguei o TR1OUT do MAX232 no RXD do conector que vai ligado no computador. Isso acontece
porque o pino 14 é o que envia dados do MAX232 e o pino 2 do conector é o que recebe dados para
o computador.
O último fio (marrom) liga o pino 13 do MAX232 no pino 3 do conector. Perceba que ele também é
invertido para que a comunicação funcione.
Agora falta ligar o cabo. Uma ponta na porta serial do computador...
A outra ponta do cabo serial deve ser ligada no conector grampeado na protoboard.
Montagem do Software
O software não é complicado, mas alguns detalhes importantes devem ser comentados aqui.
Começando pelo include da primeira linha. Ele é necessário para o RIDE51 carregar parâmetros do
microcontrolador escolhido. O comando ORG 23H aponta para o endereço de gatilho da serial.
Quando alguma informação vinda pela serial completa o buffer do 8051, o processador interrompe
o que está fazendo e executa os comandos que estão nesse endereço, como a chamada para a função
SERIAL_IRQ.
Os outros comandos são comuns e seguem o fluxo normal do Assembly. Estude as configurações da
serial do 8051 e também a lógica de desvios para entender o resto do código. Por último o comando
RETI é um retorno especial da interrupção para orientar o procesador a fazer o que estava fazendo
antes de ser interrompido pela chegada de informações. No caso do código abaixo é ficar
eternamente em loop, nada de mais.
$include(REG51.inc)
ORG
LJMP
0000H
0040H
; SERIAL IRQ
ORG
LJMP
0023H
SERIAL_IRQ
INICIO_PROG:
ORG
0040H
; HABILITANDO SERIAL
MOV
IE, #90H
MOV
SCON, #50H
MOV
PCON, #00H
MOV
TMOD, #20H
MOV
TH1, #0F4H
SETB
TR1
; FICANDO EM LOOP INFINITO
JB
P2.0, $
SERIAL_IRQ:
ORG
0100H
; SERIAL RECEBENDO
MOV
A, SBUF
CLR
RI
; VERIFICANDO INFO RECEBIDA
CJNE
A, #'A', SERIAL_ERRADO
; VALOR CORRETO
MOV
A, #'K'
MOV
SBUF, A
JNB
TI, $
CLR
TI
RETI
; VALOR ERRADO
SERIAL_ERRADO:
MOV
MOV
JNB
CLR
RETI
END
A, #3FH
SBUF, A
TI, $
TI
Testando o Funcionamento
Bom, depois de codificar o programa de comunicação do microcontrolador e compilá-lo em um
arquivo HEX (para isso utilize o comando Build All do RIDE51), vamos gravar o executável no
8051.
Basta abrir o ISP – Flash Programming e selecionar o arquivo HEX compilado.
Depois é só clicar em “Write” ou “Program”, dependendo da versão do ISP – Flash Programmer.
Espere terminar o procedimento e clique em OK na caixa de diálogo que aparecer. Se algo der
errado, verifique o circuito de gravação. Utilize o tutorial de gravação para comparar as conexões e
ver se está tudo certo.
Depois do programa gravado no 8051, cabo serial conectado no MAX232 e tudo pronto, falta testar
a aplicação. Para isso vamos usar o HyperTerminal da Hilgraeve. Em alguns casos, pode ser
necessário instalar esse componente, pois nem todos os Windows trazem esse programa instalado
por padrão.
Depois de abrir o HyperTerminal, um assistente de criação de Nova Conexão é aberto e o programa
solicita um nome para essa conexão e você pode também selecionar um ícone. Eu utilizei o nome:
Tutorial Serial. Você pode escolher um que lhe agrade mais.
Ainda no assistente de criação de nova conexão, precisamos escolher a porta na qual vamos
estabelecer a comunicação. No meu caso é a COM1, mas dependendo de qual porta você conectou
o cabo, pode ser a COM2. Eu já tive problemas com essa porta, então o melhor é conectar o cabo na
COM1 mesmo.
Depois de escolher a porta, falta configurá-la. Como o código exemplo desse tutorial foi escrito
para configurar a comunicação do microcontrolador para a velocidade de 2400 bits por segundo,
vamos utilizar essa configuração também no computador. Além disso não devemos utilizar nenhum
controle de fluxo, já que estamos usando um cabo Null-Modem.
Terminando o assistente o HyperTerminal já nos conecta automaticamente com o 8051. Mas antes
vamos verificar algumas configurações. Para isso clique no botão propriedades na barra de
ferramentas.
Na aba de Configurações precisamos alterar a emulação para o protocolo ANSI.
Finalmente clicando no botão “Configuração ASCII” da aba “Configurações”, vamos ligar o eco
dos caracteres digitados para vermos na tela as teclas que estamos digitando e que estão sendo
enviadas para o 8051 via serial.
Se tudo deu certo, basta digitar alguma coisa na tela principal da conexão para que ela seja enviada
para o microcontrolador. Se for qualquer diferente de A maiúsculo, o 8051 responde com um ponto
de interrogação, mas quando digitamos o A, aparece a letra K de volta. Desssa forma podemos
constatar que a comunicação está funcionando e o 8051 está respondendo de acordo com a
programação.
Conclusão
Bom, neste tutorial aprendemos como montar, programar e testar uma comunicação serial entre o
computador PC e o microcontrolador 8051.
Não pude entrar em detalhes sobre “Baud Rate” que é taxa de transferência da comunicação e as
diversas configurações de timers, osciladores e interrupção do microcontrolador, senão esse tutorial
seria muito grande.
Agora cabe a você esmiuçar os detalhes dessa tecnologia que de nova não tem nada, mas sem o
conhecimento prévio da comunicação serial não é possível partir para a comunicação via USB, pois
o princípio é o mesmo, mudando apenas os protocolos e formas de comunicação.
Até a próxima!

Documentos relacionados