andre luis zerbielli trabalho de integra oeducatec.eng.br/engenharia/monografia de...

38
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL FACULDADE DE ENGENHARIA CURSO DE ENGENHARIA ELÉTRICA DISCIPLINA DE TRABALHO DE INTEGRAÇÃO INTERFACEAMENTO USB COM MICROCONTROLADOR ANDRÉ LUIS ZERBIELLI JÚLIO CÉSAR MARQUES DE LIMA Porto Alegre, Junho 2005.

Upload: dinhthu

Post on 17-Nov-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL

FACULDADE DE ENGENHARIA

CURSO DE ENGENHARIA ELÉTRICA

DISCIPLINA DE TRABALHO DE INTEGRAÇÃO

INTERFACEAMENTO USB COM MICROCONTROLADOR

ANDRÉ LUIS ZERBIELLI

JÚLIO CÉSAR MARQUES DE LIMA

Porto Alegre, Junho 2005.

Page 2: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

2

Dedicatória

Este trabalho é dedicado aos meus pais, familiares, amigos e professores que de alguma

forma contribuíram para que hoje viesse a me tornar Engenheiro Eletrônico.

“O gênio é composto por 2% de talento e de 98% de perseverante aplicação.”

Ludwing Van Beethoven

Page 3: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

3

Agradecimentos

Agradeço a Deus por estar sempre ao meu lado, fonte de esperança e energia, pois sem

ele não existiria sabedoria.

Agradeço aos meus Pais Sr. Luiz e Sra. Maria, pela dedicação, trabalho e incentivo para

que hoje pudesse estar completando este objetivo: me formar Engenheiro Elétrico.

Page 4: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

4

Resumo

Este projeto de Integração teve como objetivo apresentar uma solução para uma

necessidade profissional: A realização da tarefa de leitura do estoque dos produtos no

Departamento de Automação Comercial da Empresa onde trabalho, ELGIN S/A. Cada produto

recebe uma etiqueta contendo o número de série do equipamento. A tarefa de leitura de estoque

(inventário) era feita manualmente, isto é, cada equipamento tinha seu número de série anotado e

posteriormente inserido em uma planilha de controle em formato excel. Este Projeto de

Automação visa melhorar este procedimento com claras vantagens tendo em vista a redução do

tempo gasto, número de pessoas envolvidas, confiabilidade dos dados gerados e principalmente

custos operacionais. Me propus a desenvolver este projeto para atender a esta deficiência

operacional. Este projeto é na verdade um Coletor de Dados, utilizando um leitor de código de

barras com padrão de leitura EAN-13 para leitura dos códigos. Uma placa cpu responsável pelo

gerenciamento e armazenamento das informações geradas pelo leitor, além de um aplicativo

desenvolvido em DELPHI como interface com o usuário, que foi utilizado para efetuar o

download e reset das informações contidas na placa, através da interface USB com o PC.

O resultado deste Projeto foi plenamente satisfatório, uma vez que mesmo foi possível

atender a necessidade à uma deficiência operacional da empresa onde trabalho e pelo fato de nos

proporcionar uma experiência ao nível de desenvolvimento, pesquisa e implementação de um

projeto completo de engenharia.

Page 5: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

5

Sumário

1. Introdução .......................................................................................................................... 9

2. Descrição do Hardware..................................................................................................... 10

2.1 Descrição dos Componentes de Hardware................................................................. 10

2.1.1. Diagrama em Blocos do Projeto ............................................................................ 10

2.1.2. MSC1211Y5......................................................................................................... 10

2.1.3. Controle do Backlight do Display e Bateria........................................................... 12

2.1.4. Fonte de Alimentação ........................................................................................... 13

2.1.5. Bridge USB FT232BM ......................................................................................... 14

2.1.6. E2PROM Serial AT24C512 .................................................................................. 24

2.1.7. Leitor de Códigos de Barra ................................................................................... 28

2.1.8. Esquemático do Hardware do Projeto.................................................................... 39

2.1.9. Placa CPU Projeto Integração ............................................................................... 41

3. Descrição do Software...................................................................................................... 43

3.1. O Software do Microcontrolador MSC1211Y5 .................................................. 43

3.1.1. Fluxograma Software Microcontrolador................................................................ 44

3.1.2. Descrição do Funcionamento do Software Microcontrolador................................. 47

3.1.3. Código Fonte do Software Microcontrolador......................................................... 51

3.2. Software Aplicativo PC ............................................................................................ 90

3.2.1. Fluxograma Software Aplicativo........................................................................... 91

3.2.2. Descrição do Funcionamento do Software Aplicativo ........................................... 92

3.2.3. Código Fonte do Software Aplicativo ................................................................... 98

4. Resultados ...................................................................................................................... 108

5. Conclusões ..................................................................................................................... 109

6. Referências Bibliográficas .............................................................................................. 110

Page 6: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

6

Lista de Figuras

Figura 2.1 Diagrama em Blocos do Projeto de Automação ....................................................... 10

Figura 2.2 Disposição dos Pinos MSC1211Y5. ........................................................................ 11

Figura 2.3 Diagrama em Blocos MSC1211Y5. ......................................................................... 12

Figura 2.4 Descrição dos Pinos do conversor PT5101............................................................... 13

Figura 2.5 Esquema Físico de Conexão do Barramento. ........................................................... 16

Figura 2.6 Pacote Data. ............................................................................................................ 17

Figura 2.7 Pacote Token........................................................................................................... 17

Figura 2.8 Pacote Handshake Packets. ...................................................................................... 17

Figura 2.9 Camadas de software necessárias para operação de dados via USB.......................... 19

Figura 2.10 Seqüência de eventos desde a conexão da placa até a inicialização dos drivers....... 21

Figura 2.11 Conectores USB: tipo A e tipo B. .......................................................................... 21

Figura 2.12 Disposição dos Pinos FT232BM............................................................................ 23

Figura 2.13 Diagrama em Blocos FT232BM. ........................................................................... 23

Figura 2.14 Pinagem e disposição dos pinos memória AT24C512. ........................................... 25

Figura 2.15 Gravação de dados memória AT24C512................................................................ 26

Figura 2.16 Leitura Aleatória de dados memória AT24C512. ................................................... 26

Figura 2.17 Leitura Sequencial de dados memória AT24C512.................................................. 27

Figura 2.18 Representa um código de Barras padrão EAN-13................................................... 29

Figura 2.19 Representação Código de Barras............................................................................ 33

Figura 2.20 Codificação Código de Barras. .............................................................................. 36

Figura 2.21 Seqüência de bits na comunicação padrão AT........................................................ 37

Figura 2.22 Conectores para Leitor de Códigos de Barra. ......................................................... 38

Figura 2.23 Seqüência de Dados junto aos 11 bits de clock....................................................... 38

Figura 2.24 Representação dos códigos Scan-Code para ASCII. ............................................... 39

Figura 2.25 Esquema Elétrico placa cpu do Projeto. ................................................................. 40

Figura 2.26 Placa CPU vista superior do roteamento. ............................................................... 41

Figura 2.27 Disposição dos componentes na placa cpu. ............................................................ 41

Figura 2.28 Vista superior da placa cpu sem a montagem dos componentes. ............................ 42

Figura 2.29 Vista superior da placa cpu com a montagem dos componentes. ............................ 42

Figura 3.1 Primeira etapa fluxograma software para Microcontrolador. .................................... 44

Figura 3.2 Segunda etapa fluxograma software para Microcontrolador. .................................... 45

Figura 3.3 Terceira etapa fluxograma software para Microcontrolador. .................................... 46

Figura 3.4 Inicialização de mensagens no dispositivo. .............................................................. 47

Figura 3.5 Visualização de código armazenado. ....................................................................... 47

Figura 3.6 Visualização de mensagem para código já armazenado............................................ 48

Figura 3.7 Solicitação de reset ou reinicialização do dispositivo. .............................................. 50

Figura 3.8 Visualização mensagem após reset finalizado. ......................................................... 50

Figura 3.9 Configuração do componente ComPort1.................................................................. 90

Figura 3.10 Fluxograma do software Aplicativo. ...................................................................... 91

Figura 3.11 Visualização mensagem falha na abertura da porta de comunicação....................... 92

Page 7: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

7

Figura 3.12 Visualização mensagem falha ao conectar com dispositivo. ................................... 93

Figura 3.13 Visualização mensagem falha na comunicação devido a TIMEOUT...................... 94

Figura 3.14 Visualização mensagem leitura dos códigos armazenados...................................... 94

Figura 3.15 Visualização mensagem finalização do reset na memória do dispositivo. ............... 95

Figura 3.16 Visualização Caixa de Diálogo para salvar códigos recebidos................................ 96

Figura 3.17 Visualização informações sobre Projeto Aplicativo................................................ 97

Page 8: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

8

Lista de Tabelas

Tabela 2.1 Mapa de Memória utilizada no chip AT24C512. ..................................................... 28

Tabela 2.2 Relação dos códigos de sistema numérico para cada região. .................................... 30

Tabela 2.3 Representação dos passos para calculo do checksum............................................... 32

Tabela 2.4 Codificação códigos EAN-13. ................................................................................. 34

Tabela 2.5 Codificação de Paridade EAN. ................................................................................ 35

Page 9: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

9

1. Introdução

Este projeto teve como objetivo o desenvolvimento uma solução em hardware e software

para solucionar uma deficiência na realização da tarefa de inventário de estoque dos produtos,

visando redução do tempo gasto, número de pessoas envolvidas, confiabilidade dos dados

gerados e principalmente custos operacionais.

O projeto consiste de um coletor de dados, funcionando da seguinte forma: O dispositivo

leitor de código de barras, captura as informações (códigos EAN-13) e salva em uma memória

E2PROM serial para posterior download efetuado através de comunicação via USB com um PC.

O hardware consiste de uma placa cpu, onde encontra-se um micro-controlador MSC1211

responsável pela parte lógica e operacional do dispositivo, uma Bridge USB FT232BM faz a

ponte entre o canal serial RS232 do micro-controlador e a interface USB do PC e uma memória

E2PROM serial para armazenamento de dados. Um software aplicativo em linguagem DELPHI

é responsável pela leitura e zeramento das informações contidas na memória E2PROM. Neste

hardware também consta um visor (Display de LCD) onde são mostradas as informações geradas

pelo dispositivo leitor código de barras. O dispositivo pode ser alimentado por fonte externa

como também por uma bateria 9V, haja visto que o consumo da placa é relativamente baixo.

Com isso seguimos uma maior versatilidade do sistema. O dispositivo também possui

acionamento automático do backligth do display e controle do nível da bateria.

Page 10: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

10

2. Descrição do Hardware

Este capítulo irá descrever todos os componentes utilizados no projeto, além de alguns

conceitos importantes que para o entendimento do projeto.

2.1 Descrição dos Componentes de Hardware

2.1.1. Diagrama em Blocos do Projeto

O esquema é composto por diversos componentes interligados conforme Diagrama em

Blocos da Figura 2.1.

Figura 2.1 Diagrama em Blocos do Projeto de Automação

2.1.2. MSC1211Y5

O MSC1211Y5 é um Conversor Analógico Digital e Digital Analógico que possui um

microcontrolador com core compatível com o do 8051, além de memória tipo ROM Flash,

incorporado no seu envólucro.

Page 11: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

11

Este chip foi escolhido devido ao fato de possuir características muito úteis para

gerenciar o hardware contido na placa cpu e os periféricos a ele conectado. O chip MSC1211Y5,

possui memória interna tipo flash de 32k o que permite a gravação do software diretamente na

ROM interna do chip, sem a necessidade de acesso a memória externa do tipo EPROM, e

também de nenhum dispositivo de gravação externa. Ele é três vezes mais rápido que o 8051

original, pois utiliza 4 ciclos de clock por instrução ao contrário do 8051 tradicional que utiliza

12 ciclos de clock por instrução. Possui 3 Timers, conversor com 8 canais A/D de 24 bits, 32

pinos de Entrada/Saída, sensor de temperatura, duas portas seriais full duplex, 256 bytes de

RAM original mais 1k de SRAM, capaz de acessar 64k de memória externa de dados e 64k de

memória externa de programa, possui vários modelos, tendo o Y2 composto de memória a

versão 4k e o modelo Y5 a versão de 32k, entre outras características.

Possui as mais diversas aplicações como por exemplo nas áreas Controle de Processo

Industrial, Instrumentação e Aplicações Portáteis. Pois apresenta baixo consumo de potência.

A Figura 2.2 apresenta o Disposição dos pinos do chip MSC1211Y5 e a Figura 2.3

apresenta o Diagrama em Blocos do mesmo com todas as funções disponíveis.

Figura 2.2 Disposição dos Pinos MSC1211Y5.

Page 12: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

12

Figura 2.3 Diagrama em Blocos MSC1211Y5.

2.1.3. Controle do Backlight do Display e Bateria

O MSC1211Y5 possui um conversor com 8 canais single-end que podem operar

conforme programação/inicialização pré definida pelo programador. Para isso definem-se alguns

parâmetros como: OffSet, Tensão de Referência , Ganho, Seleção de Canal, etc. Isto é feito

através da carga nos respectivos registradores para cada função. Neste projeto a variação

permitida da tensão na entrada do conversor é de 0 a 2,5V.

Devido ao fato da necessidade de utilização do projeto em locais com pouco intensidade

luminosa, e em virtude do Chip MSC1211Y5 possuir a disposição o conversor A/D, foram

implementadas as seguintes funções:

No canal AIN0 do conversor, foi conectado um foto transistor TIL78, responsável pelo

monitoramento da intensidade luminosa e com isso, permite ao microcontrolador fazer o

acionamento do backlight do Display. Existem dois estados possíveis que estão vinculados aos

níveis de tensão no canal CH0 do conversor, conforme aumenta a incidência de luz sobre o

TIL78 aumenta o nível de tensão do canal e quando este assume um valor igual a 2V ocorre o

Page 13: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

13

acionamento do sinal que irá manter ligado o Backlight Display, caso contrário o Backlight

Display se manterá desligado.

Devido ao baixo consumo da placa cpu mais os periféricos externos conectados a ela, foi

possível a utilização de além da fonte de alimentação externa uma Bateria 9V, da mesma forma

como no controle do acionamento do backlight do Display, foi utilizado o canal CH1 do

conversor A/D para monitorar os níveis da Bateria.

No canal AIN1 do conversor, foi conectado a Bateria de 9V, através um divisor resistivo

que mantém os valores de tensão dentro dos níveis pré estabelecidos. Desta forma conforme a

Bateria é consumida, ocorre a variação dos níveis de tesão na entrada do canal e com isso é

possível a comparação. São mostrados no Display três mensagens que correspondem: Nb-Sem

Bateria, Mb-Média Bateria e Fb-Bateria Cheia.

2.1.4. Fonte de Alimentação

Mesmo o projeto consumindo baixos níveis de potência, houve a necessidade da

utilização de um regulador de baixo consumo e alta eficiência (5V-90%). Para isso foi utilizado

o chip integrado PT5101 da Texas. Recomendado para utilização com bateria, pois garante

tensão de saída igual a 5V permitindo grande variação de tensão na entrada. Este chip também é

recomendado para projetos com grande dissipação, pois é capaz de fornecer até 1 Amper sem

elevar a temperatura do dissipador. Possui também limitador de corrente de saída e proteção de

desligamento por temperatura, além de pinagem compatível com os reguladores de 5V com

encapsulamento TO-220 da série 78XX. A Figura 2.4 mostra a disposição dos pinos do chip

PT5101.

Figura 2.4 Descrição dos Pinos do conversor PT5101.

Page 14: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

14

2.1.5. Bridge USB FT232BM

A quantidade de dispositivos conectados ao PC vem crescendo, no entanto até

recentemente existia uma limitação no número de portas disponíveis para conexão dos

dispositivos de I/O, além do que as mesmas não possuíam alimentação em seus barramentos, por

exemplo: porta serial e porta paralela. Para suprir esta necessidade foi desenvolvido uma

interface de comunicação denominada USB (Barramento Serial Universal). Suas características

são impressionantes.

Com o USB, os usuários aproveitam os benefícios da arquitetura plug and play, ou seja,

não necessitam mais efetuar configurações de recursos de hardware, como nos dip-switches e

jumpers, para a definição de IRQs, canais de DMA ou endereços de I/O. O USB utiliza um

conector universal que permite ao usuário instalar e remover o dispositivo sem abrir o

computador. E ainda, com a característica de inserção e remoção automáticas, os periféricos

podem ser instalados e removidos a qualquer momento, mesmo com o computador ligado. Além

disso esta interface permite que os dispositivos que estejam conectados, retirem alimentação 5V

do próprio barramento USB.

Dois importantes atributos do USB são também destacados: a compatibilidade universal,

pois nada impede que o USB seja aproveitado em outra arquitetura, e a simplicidade no projeto

de periféricos, pois são eliminados diversos custos, como o de interfaces auxiliares de que, por

exemplo, alguns scanners e CD-ROM precisam (no caso, uma SCSI).

O USB pode ser usado com a maioria dos periféricos de PC, tais como: controladores de

vídeo, drives de CD-ROM, joysticks, unidades de fita, drives de disco flexível externos, scanners

ou impressoras. A taxa de comunicação especificada é de 1,5 ou 12Mbps para versão 1.0 / 1.1 e

de até 480Mbps na versão 2.0 .

A partir da metade da década de 90, os principais líderes de mercado começaram a

desenvolver a idéia de criar um padrão de interface, denominado USB (Universal Serial Bus) que

oferecesse características de operação não presentes nos padrões ISA/PCI/AGP, como:

• Hot-pluggable: dispositivos de I/O podem ser acrescidos enquanto o PC está ligado.

• Fácil uso: dispositivos de I/O são anexados e reconhecidos pelo PC e apropriados drivers

e configurações são feitas automaticamente.

• Tipo único de conector: todos os dispositivos são plugados ao mesmo tipo de conector.

Page 15: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

15

• Alta performance: 12Mbps, mais rápido que as portas serial e paralela

• Até 127 dispositivos conectados ao mesmo barramento: praticamente não existe limite

para expansão de dispositivos de I/O .

• Gerencia de Energia: dispositivo se auto-desliga quando não estiver em uso.

• Detecção de erro e recuperação: erros são detectados e transações são tentadas

novamente assegurando a confiança na entregas dos dados.

• Conector externo no PC: não existe a necessidade de abrir o gabinete do PC para anexar

qualquer dispositivo.

• Permitir a conexão de dispositivos “on the fly”, ou seja, com o sistema operacional já

rodando aplicativos.

• Característica plug and play, com a carga de alguns device-drivers somente no instante da

conexão do dispositivo no conector.

O sistema USB é composto pelo Controlador Host USB, por dispositivos USB e por

interconexões. O host é responsável por detectar a inserção e a remoção de um dispositivo, por

gerenciar o fluxo de dados e de controle, monitorando o estado das transferências, e por controlar

a interface elétrica entre ele e os dispositivos.

Um dispositivo USB pode ser de dois tipos: função ou hub. A função é capaz de

transmitir ou receber dados ou informações de controle pelo barramento. Ela serve para

aumentar a capacidade do sistema. Exemplos de funções são: mouse, teclado, scanner e

impressora. Cada função contém informações descrevendo suas capacidades e os recursos dos

quais necessita.

O hub é o elemento chave na topologia USB, pois é ele que permite a expansão do

número de conexões do sistema. Cada hub converte um ponto de conexão em outros múltiplos

pontos. A arquitetura USB permite o uso de múltiplos hubs.

O barramento físico é composto de um cabo com quatro fios: VBus, D+, D- e GND. O

fio VBus é o meio de fornecimento de alimentação para os dispositivos que necessitarem dela.

Em um sistema USB, existem hubs e funções que possuem alimentação própria e hubs e funções

que são alimentados pelo barramento através de VBus. VBus é nominalmente +5V. Para

aplicações de alta velocidade, os fios D+ e D- são entrelaçados. Os dados são transmitidos

Page 16: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

16

através de D+ e D- por meio de diferenças de tensão entre eles. O USB usa uma codificação

NRZI.

Os cabos são conectados aos dispositivos conforme ilustrado na Figura 2.5. A posição

dos resistores de pull-up muda dependendo de tratar-se de alta ou baixa velocidade. Quando não

existe função conectada ao hub, os resistores de pull-down fazem com que ambos D+ e D-

fiquem abaixo de um valor de tensão de limiar para a detecção da presença do dispositivo. Se

essa condição persistir por mais que 2,5 microssegundos, é caracterizada a desconexão do

dispositivo. A conexão de um dispositivo é caracterizada pela situação oposta, ou seja, quando

apenas uma das linhas é levada além da tensão de limiar e esta situação persiste por mais de 2,5

microssegundos.

Figura 2.5 Esquema Físico de Conexão do Barramento.

A transmissão de dados via USB é baseada no envio de pacotes. A transmissão começa

quando o Controlador Host envia um pacote (Token Packet) descrevendo o tipo e a direção da

transmissão, o endereço do dispositivo USB e o referido número de endpoint. A transmissão de

dados pode ser realizada tanto do Host para o dispositivo quanto em sentido inverso. O

dispositivo USB decodifica o campo de endereço, reconhecendo que o pacote lhe é referente. A

seguir, a fonte da transmissão envia um pacote de dados, Figura 2.6 (Data Packet) ou indica que

não há dados a transferir. O destino responde com um pacote de Handshake (Handshake Packet)

indicando se a transferência obteve sucesso. O USB utiliza três tipos de pacotes: Na figura 2.7 é

Page 17: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

17

mostrado a configuração dos campos para pacote Token, Data e na Figura 2.8 a configuração dos

campos para apcote Handshake Packets.

Figura 2.6 Pacote Data.

Figura 2.7 Pacote Token.

Figura 2.8 Pacote Handshake Packets.

• PID (Packet Identifier): composto de oito bits. Os quatro mais significativos identificam e

descrevem o pacote e os restantes são bits de verificação para prevenção de erros (check

bits). Esses check bits são constituídos pelo complemento um dos quatros bits

identificadores;

• ADDR (Address): endereço do dispositivo USB envolvido. Composto de 7 bits, limita o

número de dispositivos endereçáveis em 0 a 127;

• ENDP (Endpoint): possui 4 bits que representam o número do endpoint envolvido.

Permite maior flexibilidade no endereçamento de funções que necessitem de mais de um

sub-canal;

• CRC (Cyclic Redundancy Checks): bits destinados à detecção de erros na transmissão;

Page 18: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

18

• DATA : bits de dados.

Um Token Packet pode identificar a transmissão como sendo de transferência para o Host

(IN), de transferência para a função (OUT), de início de frame (SOF) ou de transferência de

informações de controle para o endpoint (SETUP). O CRC de um Token Packet possui 5 bits e

atua apenas sobre os campos ADDR e ENDP, uma vez que o PID possui seu próprio sistema de

prevenção contra erros. Os dados transmitidos via Data Packet devem ter um número inteiro de

bytes. O CRC de um Data Packet possui 16 bits e age apenas sobre o campo DATA. O

Handshake Packet é constituído apenas de um PID. Esse pacote pode significar que o receptor

recebeu os dados livres de erros (ACK), que o receptor não pode receber os dados, que o

transmissor não pode transmitir (NAK) ou que o endpoint está em parado (STALL).

O USB aceita quatro tipos de transferências diferentes: Control, Bulk, Interrupt e

Isochronous.

A transferência do tipo Control serve para configurar ou transmitir parâmetros de

controle a um dispositivo. Inicialmente, em estado idle, ele recebe um Token de SETUP oriundo

do Controlador Host. Em seguida, o Host envia um Data Packet para o endpoint de controle da

função. A função envia, então, ao Host um Handshake Packet de reconhecimento (ACK) e entra

em estado idle.

A transferência Bulk é utilizada para a transmissão de grande quantidade de dados, como

em impressoras ou scanners. Ela garante uma transmissão livre de erros por meio da detecção de

erros e de novas retransmissões, se necessário. Caso o Host deseje receber uma grande

quantidade de dados, ele envia um Token de IN e a função devolve um Data Packet. Se houver

algum problema, a função envia um STALL ou NAK e entra em estado idle. Ao final, o Host

devolve um ACK. Se, em vez de receber, o Host desejar enviar dados, ele manda um Token de

OUT em vez de IN.

A transmissão do tipo Interrupt é requisitada pelo Host e consiste numa transferência de

pequena quantidade de dados. Os dados podem representar a notificação de algum evento, como

os de um mouse ou caneta ótica.

A transferência tipo Isochronous permite o tráfego de dados que são criados, enviados e

recebidos continuamente em tempo real. Nessa situação não há handshake, devido à própria

Page 19: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

19

continuidade com que os dados são transmitidos. Caso contrário, haveria atraso e a transmissão

em tempo real seria comprometida.

Todas as especificações técnicas do padrão USB estão rigorosamente estabelecidas na

Universal Serial Bus Specification Revision 1.0.

Quanto à organização das camadas de software necessárias para operar-se um

dispositivo, o sistema USB HOST é composto por vários níveis de hardware e softwares,

conforme mostrado na Figura 2.9.

Figura 2.9 Camadas de software necessárias para operação de dados via USB.

Conforme a figura acima indica, um aplicativo requer o acesso a um periférico USB da

forma padrão, como é feita para os periféricos comuns: chama funções da API.

Page 20: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

20

Num segundo estágio, a API chama rotinas do driver Cliente do periférico USB

instalado. Este driver traduz os comandos da API para comandos USB. O driver Cliente é

geralmente parte do sistema operacional ou vem instalável com o dispositivo USB.

A terceira camada de software indicada é o driver USB (USBD), que é aquela que dá ao

sistema operacional o suporte ao USB.

A quarta camada de interesse é o driver do controlador HOST (HCD), que funciona a

nível de Kernel do sistema operacional. O HCD provê o nível de software entre o hardware do

controlador HOST e o USBD. É esta camada que realiza os acessos de I/O necessários para a

operação do dispositivo USB. O HCD interpreta as chamadas do USBD e constrói uma lista de

estruturas, um descritor de transferências, uma fila principal e um buffer de dados para o

controlador HOST.

Existem também duas camadas de hardware.

A primeira delas é o Controlador HOST (HC), que é o circuito onde serão feitas as

conexões de todos os dispositivos USB. Tal circuito executa eletronicamente os comandos

programadas pelo HCD, além de registrar o estado das transações do USB. Sua operação é

gerenciada pelo HCD.

A segunda delas é constituída pelo conjunto de Dispositivos USB conectados, que são os

periféricos que usam esse tipo de barramento.

Uma característica extremamente inovadora do USB é a possibilidade de conectar-se um

novo dispositivo durante a execução do aplicativo. Neste caso, o controlador HOST detecta a

conexão e envia uma mensagem ao HCD para avisá-lo do fato. Em seguida, o HCD faz a mesma

notificação ao driver USB (USBD). Este, então, inicializa o driver cliente do periférico

conectado e, em seguida, torna-o operacional, de forma que o aplicativo já possa dispor de seus

recursos. Tal seqüência está ilustrada na figura 2.10.

Page 21: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

21

Figura 2.10 Seqüência de eventos desde a conexão da placa até a inicialização dos drivers.

Todos os dispositivos possuem um ponto de acesso a um seu superior hierárquico. Os

conectores do tipo A têm características mecânicas diferentes dos conectores tipo B, impedindo

assim ligações de loopback nos hubs. Os cabos possuem quatro condutores com blindagem e

robustez especificada. Na figura 2.11 apresentam os dois modelos de conectores USB.

Figura 2.11 Conectores USB: tipo A e tipo B.

Com o objetivo de utilizar a tecnologia USB de forma simples e funcional, foi utilizado

chip FT232BM da FTDI Components como conversor RS232 facilitando muito a interface com

Page 22: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

22

o mundo externo. Utilizando o chip FT232BM a tarefa da comunicação via USB se torna algo

simples e transparente para o projetista/programador, pois não existe a necessidade de

desenvolvimento de protocolos mais elaborados como algoritmos de correções de erro e frames

de comunicação conforme descrito acima. Estas tarefas ficam a cargo do próprio conversor.

O chip FT232BM é um dispositivo de baixo custo para uma solução USB UART para

transferência serial de dados através de comunicação USB. Também conhecida como Bridge ou

ponte entre protocolo de comunicação RS232 e USB. Com taxas de transferência acima de 1M

Baud (RS232), 3M Baud (RS422/RS485), o FT232BM aumenta significativamente o nível de

performance sobre o tradicional barramento ISA e PCI baseado ainda em soluções UART,

oferecendo tecnologia plug and play e fácil interfaceamento através da interface USB.

O chip FT232BM possui um Buffer 384 Bytes recebimento / Buffer 128 Bytes para

transferência em alta velocidade dos dados, utiliza um clock de 6MHz internamente multiplicado

para 48MHz por PLL, permite tensão de operação entre 4,35V e 5,25V, possui circuito de

Power-on-Reset, permite armazenamento de USB VID, PID, Número e Serial e Descrição de

Produto através EEPROM externa, possui compatibilidade USB 1.1 e USB 2.0, possui

encapsulamento compacto com 32 pinos, possui Drivers para Porta Virtual COM (VCP) para

todos os principais sistemas operacionais: Windows 98/2000/ME/XP, MAC OS-8/9/X e LINUX.

E ainda suporte para detecção de desconexão do dispositivo através dos pinos SLEEP# e RI#.

O chip FT232BM está diretamente conectado ao chip MSC1211Y5 através do canal de

comunicação pelos pinos RX0 e TX0, logo como mencionado acima, para o processador 8051 a

comunicação com o meio externo é vista de forma serial, porém devido a Brigde USB conectada

a ele na realidade ocorre a conversão dos dados para o protocolo USB. Com isso obtêm-se

grandes facilidades na programação de software, também como na conectividade ao meio

externo do projeto.

A Figura 2.12 apresenta o Disposição dos pinos do chip FT232BM e a Figura 2.13

apresenta o Diagrama em Blocos do mesmo com todas as funções disponíveis.

Page 23: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

23

Figura 2.12 Disposição dos Pinos FT232BM.

Figura 2.13 Diagrama em Blocos FT232BM.

Page 24: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

24

2.1.6. E2PROM Serial AT24C512

O AT24C512 dispõem 524.288 bits (512Kbits) de dados eletricamente apagável e

programável via serial (EEPROM) organizado como 65.536 palavras de 8 bits cada (64 Kbytes).

O dispositivo tem como característica a de permitir cascatear até 4 dispositivos compartilhando o

barramento comum. O dispositivo foi desenvolvido para uso em muitas aplicações industriais e

comerciais onde baixo-consumo e operação em baixa-voltagem. Os dispositivos estão

disponíveis nos encapsulamentos: 8-pinos PDIP, EIAJ SOIC, JEDEC SOIC e TSSOP. Além

disso, a família inteira está disponível para alimentação em: 2.7V (2.7V a 5.5V) e 1.8V (1.8V a

3.6V).

Este chip utiliza o Protocolo I2C para leitura e escrita dos dados no barramento. I2C é um

protocolo de comunicação do Tipo Master-Slave que utiliza um barramento com apenas dois

fios: SDA – Serial Data (Bidirecional) e SCL - Serial Clock (Unidirecional). Neste barramento é

possível conectar vários dispositivos escravos (Slave) ao mestre (Master).

O Sinal de clock (SCL) é sempre enviado pelo Master (MSC1211). A direção do sinal

SDA vai depender se o microcontrolador quer escrever ou ler dados no barramento. Neste

protocolo foi adicionado um estado para verificação dos dados (ACKnowledge) transmitidos

pelo microcontrolador ou pelo dispositivo escravo.

Se o microcontrolador estiver enviando dados (SDA saída) o nono pulso de clock será

usado pelo escravo para enviar uma confirmação de recebimento (ACK). Neste caso o pino SDA

deve mudar de Saída para Entrada.

Se o microcontrolador estiver recebendo dados (SDA é entrada) então o nono pulso de

clock será usado pelo microntrolador para enviar uma confirmação (ACK) ou não (NAK) de

recebimento. Neste caso o pino SDA deve mudar de Entrada para Saída. A figura 2.14 mostra a

pinagem do chip AT24C512 e a disposição dos pinos para o encapsulamento TSSOP.

Page 25: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

25

Figura 2.14 Pinagem e disposição dos pinos memória AT24C512.

Existem duas maneiras de utilização do chip para a gravação de dados. A primeira em

forma paginada, onde os 512k de memória são divididos em blocos de 128 bytes cada, ficando a

cargo da própria memória o incremento dos endereços baixos. Neste caso o microcontrolador

não finaliza o processo de gravação com uma condição de stop no barramento e continua

enviando o restante dos 127 bytes, a cada byte enviado a memória retorna ACK(zerado).

Neste modo de gravação deve haver um cuidado especial uma vez que a memória

mantém o endereço alto fixo enquanto varia o endereço baixo. Quando a mesma receber os 128

bytes, se não houver novo endereçamento ocorrerá a sobre escrita dos dados.

A segunda forma de gravação de dados é a gravação byte a byte de cada informação, esta

opção foi utilizada no projeto. O procedimento de gravação de um byte na memória AT24C512

é divido 4 etapas compostas de 8bits cada. Inicialmente cria-se uma condição de Start no

barramento I2C, após enviamos o endereçamento do chip 1010 0000 (1010 + A0A1A2W), o

valor 1010 é definido pelo fabricante de acordo com o modelo da memória, os valores de A2, A1

e A0 correspondem ao endereço de hardware da memória e o sinal W significa gravação e possui

valor igual a 0 (zero). A cada byte recebido corretamente pela memória será respondido com um

ACK zerado. Os dois próximos passos são enviar o endereço Alto e endereço Baixo de gravação

e por último é enviado o dado que se deseja gravar. Após recebido o último ACK o

microcontrolador cria uma condição de stop, finalizando o procedimento de gravação. A figura

2.15 ilustra o procedimento para gravação de dados na memória AT24C512.

Page 26: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

26

Figura 2.15 Gravação de dados memória AT24C512.

Para efetuar a leitura dos dados gravados na memória mencionada pode ser feita de três

formas:

• Através do endereço corrente: Internamente o contador mantém o último endereço

acessado durante a última leitura ou escrita da memória, incrementado de uma posição.

Este endereço se mantém válido enquanto se mantiver a alimentação do chip. Para

efetuar a leitura deste dado deve-se enviar a seqüência igual a etapa número 1 de

gravação, porém no último bit onde estava zerado passa e ser 1 (um), agora definido

como R para leitura 1010 0001 (1010 + A0A1A2R).

• Leitura Aleatória: Para leitura na forma aleatória dos dados gravados na memória é

necessário um procedimento composto em duas etapas. A primeira etapa é igual a etapa

de gravação byte a byte descrita anteriormente, porém quando recebido o último ACK se

incializa uma nova condição de start enviando a seqüência 1010 0001 (1010 +

A0A1A2R). Após o recebimento do respectivo bit de ACK o dado será disponibilizado

no barramento. O processo é finalizado com o envio de um sinal NO ACK pelo

microcontrolador, além de uma condição de stop. Na Figura 2.16 ilustra o procedimento

para leitura de dados na memória AT24C512.

Figura 2.16 Leitura Aleatória de dados memória AT24C512.

Page 27: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

27

• Leitura Seqüencial: Leitura seqüencial é inicializada por um dos modos de leitura

anteriores. Após o microcontrolador receber o dado, o mesmo responde com sinal de

acknowledge, após a EEPROM receber este sinal ela continuará a incrementar o

endereçamento interno e o envio dos dados de forma seqüencial. Quando o endereço

limite for alcançado ocorrerá um roll-over na leitura dos dados. A seqüência de leitura é

finalizada com uma condição de stop. Na Figura 2.17 ilustra o procedimento para leitura

seqüencial de dados na memória AT24C512.

Figura 2.17 Leitura Sequencial de dados memória AT24C512.

Neste modelo de memória E2PROM Serial 512k, para a leitura de dados na forma

aleatória é necessário o reset do contador interno de endereçamento. Este contador tem seu valor

resetado através de uma interrupção no protocolo, isto se dá desligando a alimentação ou através

de seqüência de comandos via software. Para reset via software deve-se enviar manter o sinal

SDA em nível alto por mais de 9 cliclos de clock, e ao final submeter o barramento a uma

condição de start.

Page 28: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

28

A utilização da área de dados na memória E2PROM serial, foi definido conforme Tabela

Endereço Memória

E2Prom

Valor contido após Reset Dado armazenado

0000 - 0001 0 Armazena o Contador de códigos armazenados

0002 - 0003 End_hi = 01 End_lo = 00 Armazena último endereço de código gravado

na E2Prom.

0004 - 0005 Adr_B = 00 Adr_B = 08 Armazena o último endereço do valor MSB

checksum calculado.

0006 - 0007 Adr_A = 00 Adr_A = 80 Armazena o último endereço do valor LSB

checksum calculado.

0008 – 007F 0 Armazena o valor MSB checksum calculado.

0080 – 00FF 0 Armazena o valor LSB checksum calculado.

0100 – 056A 0 Armazena as leituras dos códigos de barras.

Tabela 2.1 Mapa de Memória utilizada no chip AT24C512.

2.1.7. Leitor de Códigos de Barra

Leitor de códigos de barras é uma representação gráfica em barras claras e escuras das

combinações binárias utilizadas pelo computador. Decodificadas por leitura óptica, informam os

números arábicos ou letras, que constituem o código de barras, conforme a simbologia.

A combinação binária que constitui as barras claras e escuras dos códigos, são baseadas

em critérios diferentes a cada simbologia, isto implica em vários padrões de leitura diferentes.

Os códigos de barras EAN/UPC possuem um conteúdo de dados padronizado, isto é, há

uma organização nas numerações a serem representadas, os scanners só conseguem decodificar

as simbologias, se estiverem configurados para tal. Por outro lado, os softwares aplicativos das

Page 29: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

29

empresas, só podem interpretar o conteúdo dos dados capturados dos códigos de barras, se estes

seguirem um padrão estruturado de dados, a menos que tenha sido previamente programado

entre as partes.

Um código de barras EAN-13 é dividido em quatro áreas, conforme visualizado na

Figura 2.18 :

1. O sistema de número.

2. O código de fabricante.

3. O código de produto.

4. O dígito de verificação.

Figura 2.18 Representa um código de Barras padrão EAN-13.

Normalmente o primeiro número (dígito) de sistema é impresso à esquerda do código de

barras, o segundo número (dígito) de sistema é impresso como o primeiro caracter do grupo de

seis números no lado esquerdo abaixo do código de barras, o código de fabricante são os

próximos cinco dígitos no lado esquerdo abaixo do código de barras, o código produto são os

primeiros cinco dígitos no lado direito abaixo do código de barras, e o dígito de verificação é o

último dígito no lado direito abaixo do código de barras.

Sistema de número: O sistema de número consiste em dois dígitos (às vezes três dígitos)

que identificam o país (ou região econômica) numerando autoridade que nomeou o código de

fabricante. O sistema de identificação consiste nas regiões descritas na Tabela 2.2.

00-13: USA & Canada 20-29: In-Store Functions 30-37: France

40-44: Germany 45: Japan (also 49) 46: Russian Federation

471: Taiwan 474: Estonia 475: Latvia

477: Lithuania 479: Sri Lanka 480: Philippines

482: Ukraine 484: Moldova 485: Armenia

486: Georgia 487: Kazakhstan 489: Hong Kong

Page 30: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

30

49: Japan (JAN-13) 50: United Kingdom 520: Greece

528: Lebanon 529: Cyprus 531: Macedonia

535: Malta 539: Ireland 54: Belgium & Luxembourg

560: Portugal 569: Iceland 57: Denmark

590: Poland 594: Romania 599: Hungary

600 & 601: South Africa 609: Mauritius 611: Morocco

613: Algeria 619: Tunisia 622: Egypt

625: Jordan 626: Iran 64: Finland

690-692: China 70: Norway 729: Israel

73: Sweden 740: Guatemala 741: El Salvador

742: Honduras 743: Nicaragua 744: Costa Rica

746: Dominican Republic 750: Mexico 759: Venezuela

76: Switzerland 770: Colombia 773: Uruguay

775: Peru 777: Bolivia 779: Argentina

780: Chile 784: Paraguay 785: Peru

786: Ecuador 789: Brazil 80 - 83: Italy

84: Spain 850: Cuba 858: Slovakia

859: Czech Republic 860: Yugloslavia 869: Turkey

87: Netherlands 880: South Korea 885: Thailand

888: Singapore 890: India 893: Vietnam

899: Indonesia 90 & 91: Austria 93: Australia

94: New Zealand 955: Malaysia

977: International Standard

Serial Number for Periodicals

(ISSN)

978: International Standard

Book Numbering (ISBN)

979: International Standard

Music Number (ISMN) 980: Refund receipts

981 & 982: Common

Currency Coupons 99: Coupons

Tabela 2.2 Relação dos códigos de sistema numérico para cada região.

Código de fabricante: O código de fabricante é um código diferenciado nomeado a cada

fabricante pela autoridade de cada região. Todos os produtos produzidos por uma determinada

companhia usarão o mesmo código de fabricante.

EAN usa o que é chamado "códigos de fabricante de variável-comprimento. Dependendo

da quantidade de produtos de cada fabricante o espaço reservado ao código do fabricante e do

reservado ao códigos de produto é variável, desta forma é possível uma melhor adequação do

código.

Page 31: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

31

Código de produto: O código de produto é um código diferenciado nomeado pelo

fabricante. O fabricante é livre para nomear códigos de produto sem consultar qualquer outra

organização.

Dígito Verificador: O dígito verificador é um dígito adicional que verificava se um

código de barras foi scaneado corretamente. Um scaneamento pode produzir dados incorretos

devido a velocidade de leitura incompatível ou imperfeições no código. O dígito de verificação é

calculado baseado no resto dos dígitos do código de barras. Normalmente, se o dígito de

verificação estiver igual ao valor do dígito de verificação baseado nos dados que foram

scaneados, há um nível alto de confiança que o código foi lido corretamente.

Antes de um símbolo de EAN-13 poder ser codificado, o software tem que computar o

dígito de checksum correto que será acrescido ao código de barras. O dígito de checksum está

baseado em um modulo de 10, baseado na soma dos valores de cada dígito do sistema de

número, código de fabricante e código de produto. Primeiro, pegamos o dígito mais a direita do

valor e consideramos como caráter ímpar. Nós movemos da direita para esquerda então,

enquanto alternando entre impar e par. Nós somamos o valor numérico de todas as posições, e

soma o valor numérico multiplicado por três de todas as posições impares.

1. Considere o digito mais a direita da mensagem como posição ímpar, e nomeie

impar/par a cada caracter da direita para esquerda.

2. Some os dígitos em posições das posições impares, e multiplique o resultado por

três.

3. Some os dígitos em todas as posições pares.

4. Some os totais calculados nos passos 2 e 3.

5. O dígito de verificação é o número que, quando acrescentou aos totais calculados

no passo 4, resulte em um número uniformemente divisível por 10.

6. Se a soma calculada no passo 4 é uniformemente divisível por 10, o dígito de

cheque é "0".

Isto é mais fácil de entender com um exemplo. Calculemos o dígito de checksum para o

código de barras 0075678164125. De fato, nós sabemos que o dígito de checksum é o último

dígito do código, "5". Isto significa a própria "mensagem" do código é na verdade

007567816412. Isto representa um sistema de número de "00", um código de fabricante de

Page 32: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

32

"75678" e um código de produto de "16412". Assim, nós temos que calcular um dígito de

verificação para a mensagem 007567816412. Na tabela 2.3 consta a representação dos passos 1

ao 6.

Código 0 0 7 5 6 7 8 1 6 4 1 2

Posição P I P I P I P I P I P I

PESO 1 3 1 3 1 3 1 3 1 3 1 3

Cálculo 0 * 1 0 * 3 7 * 1 5 * 3 6 * 1 7 * 3 8 * 1 1 * 3 6 * 1 4 * 3 1 * 1 2 * 3

Resultado 0 0 7 15 6 21 8 3 6 12 1 6

Tabela 2.3 Representação dos passos para calculo do checksum.

Na soma para cada dígito, corresponde 0 + 0 + 7 + 15 + 6 + 21 + 8 + 3 + 6 + 12 + 1 + 6

= 85. Este é o valor de checksum. Porém, há só um dígito de checksum. O dígito de checksum é

o valor que deve ser acrescentado ao valor de checksum para fazer isto divisível por 10. Neste

caso, o próximo número partidário 85 que é uniformemente divisível antes das 10 é o número 90.

Nós temos que somar 5 a 85 para adquirir 90, então nosso dígito de cheque é "5". Nós juntamos

a mensagem ao código original subseqüentemente (007567816412) com nosso dígito de

reconhecimento calculado (5), é acrescido ao valor final de 0075678164125.

Uma vez o dígito de checksum foi calculado, sabemos que a mensagem inteira que deve

ser codificada nas barras e espaços. Continuando com nosso exemplo, nós codificaremos um

barcode de EAN-13 para o valor 0075678164125.

No texto seguinte, nós discutiremos a codificação do barcode por considerando que o

número "1" representa uma "tarja preta" ou seção de "barra" do código considerando que uns "0"

representam uma seção "clara" do código. Assim os números 1101 representam uma barra dupla

(11), seguida por um espaço em branco (0), seguida por uma barra (1). Isto seria impresso no

código de barras como na Figura 2.19.:

Page 33: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

33

Figura 2.19 Representação Código de Barras.

Um código de Barras no formato EAN-13 tem a estrutura física seguinte:

• Barras de guarda à esquerda, ou sentinela de começo, codificada como 101.

• O segundo carácter do número código de sistema.

• Os cinco carácteres do fabricante.

• Padrão de guarda de centro, codificado como 01010.

• Os cinco caracteres do produto.

• Digito verificador.

• Barras de guarda à direita, ou sentinela de fim, codificada como 101.

Os caracteres que são codificados à esquerda do padrão de guarda de centro são

considerados o "lado de mão esquerda" do símbolo considerando que todos os caracteres

codificaram à direita do padrão de guarda de centro é considerado o "lado de mão direita" do

símbolo.

O primeiro caráter do número de EAN-13 código de sistema (i.e., o primeiro dígito do

valor de EAN-13) é codificado na paridade dos caracteres do lado à esquerda do símbolo. Quer

dizer, o valor do primeiro caracter do valor de EAN-13 determina a paridade com que cada um

dos caracteres no lado à esquerda do código de barras será codificado.

Tabela para Codificação Códigos EAN Tabela 2.4, indica como codificar cada dígito de

um código de barras EAN-13 que depende em qual meio (esquerda ou direito) do código de

barras o dígito se encontra. No caso de um dígito à esquerda, a codificação (paridade impar ou

par) está baseado no valor do primeiro dígito do número código de sistema.

Page 34: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

34

CODIFICAÇÃO LADO ESQUERDO CODIFICAÇÃO LADO DIREITO DIGITO

PARIDADE IMPAR (A) PARIDADE PAR (B) TODOS CARACTERES

0 0001101 0100111 1110010

1 0011001 0110011 1100110

2 0010011 0011011 1101100

3 0111101 0100001 1000010

4 0100011 0011101 1011100

5 0110001 0111001 1001110

6 0101111 0000101 1010000

7 0111011 0010001 1000100

8 0110111 0001001 1001000

9 0001011 0010111 1110100

Tabela 2.4 Codificação códigos EAN-13.

Um caracter EAN-13 é representado em 7 elementos que consistem em 2 barras e 2

espaços. Nenhuma barra ou espaço podem ser mais longos que 4 elementos. A única exceção

para esta regra é a esquerda e barras de guarda de direito (3 elementos cada) e o centro barra de

vigia (5 elementos).

Todos os caracteres no lado à esquerda do código de barras sempre começam com um 0

(espaço) enquanto todos os caráter no lado da mão direita do código de barras sempre começam

com um barra.

O padrão de codificação "da mão direita" está exatamente igual ao padrão de codificação

impar " à esquerda", mas com 1's mudados para 0's, e 0's mudados para 1's.

A Tabela de Codificação de Paridade EAN Tabela 2.4, indica a paridade com que cada

caracter no lado à esquerda do código de barras deverá ser codificado. A paridade está baseado

no primeiro dígito do valor de EAN-13. Por exemplo, 0075678164125, o primeiro dígito do

número código de sistema é o primeiro dígito "0", assim a paridade está baseado no número 0 da

Tabela 2.5.

Page 35: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

35

PARIDADE PARA CODIFICAR COM CARACTER DE CÓDIGO DE FABRICANTE

1° Número Digito Sistema 2° Número

Digito Sistema 1 2 3 4 5 0 (UPC-A) Ímpar Ímpar Ímpar Ímpar Ímpar Ímpar

1 Ímpar Ímpar Par Ímpar Par Par 2 Ímpar Ímpar Par Par Ímpar Par 3 Ímpar Ímpar Par Par Par Ímpar 4 Ímpar Par Ímpar Ímpar Par Par 5 Ímpar Par Par Ímpar Ímpar Par 6 Ímpar Par Par Par Ímpar Ímpar 7 Ímpar Par Ímpar Par Ímpar Par 8 Ímpar Par Ímpar Par Par Ímpar 9 Ímpar Par Par Ímpar Par Ímpar

Tabela 2.5 Codificação de Paridade EAN.

Observação:

O segundo número dígito de sistema sempre é codificado com paridade impar.

Todos os símbolos de EAN-13 sempre que tiver três caracteres à esquerda são

codificados usando paridade par e dois será codificado usando paridade impar.

Exemplo codificação do código de barras EAN-13 que representa o valor

"7501031311309". Número sistema "75", fabricante código "01031", produto código "31130" (o

dígito de cheque é "9", mas nós vamos calcular isso neste exemplo).

Primeiro, nós calculamos o dígito verificador:

Somando 7 + 15 + 0 + 3 + 0 + 9 + 1 + 9 + 1 + 3 + 3 + 0 = 51. Nós temos que somar 9

para fazer 51 uniformemente divisível por 10 (51 + 9 = 60), então o dígito verificador é 9.

Logo, nós observamos que o primeiro dígito do número código de sistema (digito mais a

esquerda do código) é o dígito "7". Consultando a tabela de paridade que codifica o dígito "7",

nós achamos que a paridade para o segundo dígito de sistema e o código de fabricante deveriam

seguir o padrão "Impar/Par/Impar/Par/Impar/Par. Isso significa o segundo número do dígito de

sistema será codificado pela tabela de paridade impar " à esquerda", o primeiro dígito do código

de fabricante será codificado com paridade par" à esquerda", etc.. O código de barras é

construído então concatenando os itens:

Page 36: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

36

BARRAS DE GUARDA ESQUERDA (sempre o mesmo): 101.

SEGUNDO NÚMERO DÍGITO DE SISTEMA [5]: Codificou com paridade impar à esquerda, 0110001.

1º DÍGITO de FABRICANTE [0]: Codificando com paridade par à esquerda, 0100111.

2º DÍGITO de FABRICANTE [1]: Codificou com paridade impar à esquerda, 0011001.

3º DÍGITO de FABRICANTE [0]: Codificou com paridade par à esquerda, 0100111.

4º DÍGITO de FABRICANTE [3]: Codificou com paridade impar à esquerda, 0111101.

5º DÍGITO de FABRICANTE [1]: Codificou com paridade par à esquerda, 0110011.

BARRAS GUARDA CENTRAL (sempre o mesmo): 01010.

1º DÍGITO de CÓDIGO de PRODUTO [3]: Codificou como caracter da mão direita, 1000010.

2º DÍGITO de CÓDIGO de PRODUTO [1]: Codificou como caracter da mão direita, 1100110.

3º DÍGITO de CÓDIGO de PRODUTO [1]: Codificou como caracter da mão direita, 1100110.

4º DÍGITO de CÓDIGO de PRODUTO [3]: Codificou como caracter da mão direita, 1000010.

5º DÍGITO de CÓDIGO de PRODUTO [0]: Codificou como caracter da mão direita, 1110010.

CONFIRA DÍGITO [9]: Codificou como caracter da mão direita, 1110100.

BARRAS DE GUARDA DIREITA (sempre o mesmo): 101.

Logo o valor um "1" representa uma barra e um "0" representa um espaço. Assim se nós

convertemos este seqüência de números à representação do código de barras será codificado

conforme Figura 2.20:

Figura 2.20 Codificação Código de Barras.

Um leitor padrão de código de barras pode ser configurado para adotar o mesmo

protocolo de um teclado de PC padrão AT, sendo esta geralmente a configuração padrão da

maioria dos leitores CCD do mercado. Por este motivo tanto o leitor quanto o teclado de PC são

ligados no mesmo conector, podendo até mesmo ser ligados simultaneamente, com o auxílio de

um cabo especial.

Page 37: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

37

O padrão de comunicação de um teclado AT, que será adotado também pelo leitor

CCD, caracteriza-se pela utilização de apenas dois sinais: um sendo o clock e outro o sinal de

dados. O sinal de clock está ligado no pino de interrupção externa zero (IE0). A idéia é então

utilizar o sinal de clock para gerar as interrupções e, cada vez que uma interrupção ocorrer, o

software deverá ler o estado do sinal de dados. Desta forma, a informação irá sendo montada, bit

a bit.

A forma de onda que caracteriza um byte é a seguinte e visualizada na Figura 2.21:

Figura 2.21 Seqüência de bits na comunicação padrão AT.

A ordem dos bits de dados é realmente inversa da que estamos acostumados a analisar

quando decompomos um byte. Repare ainda que a forma de onda acima mostrada ocorre para

um byte. Quando pressionamos e soltamos imediatamente uma tecla em um teclado padrão AT,

o teclado envia na verdade três bytes: o código da tecla, o byte 0F0H e uma repetição do código

da tecla. Quando mantemos a tecla pressionada, o teclado ficará repetindo o código da tecla

indefinidamente. O byte 0F0H e a repetição são enviados apenas quando a tecla é liberada.

Como o leitor CCD simula o comportamento de um teclado de PC, ele terá o

mesmo comportamento. No caso de ele ler um código de barras padrão EAN-13, ele irá enviar

14 bytes composto pelo trio de bytes (código + 0F0H + código). São 14 bytes porque ele simula

também o pressionamento da tecla ENTER (5AH), ao final do código.

Isto totaliza 42 bytes para cada código de barras EAN-13, sendo que cada um dos

bytes enviados gera 11 pulsos de clock. Cada pulso de clock irá gerar uma interrupção com um

sinal nível baixo na entrada da interrupção EX0 doMSC1211Y5.

Page 38: Andre Luis Zerbielli Trabalho de Integra oeducatec.eng.br/engenharia/Monografia de apoio/Interfaceamento USB... · Departamento de Automação Comercial da Empresa onde trabalho,

38

A porta de comunicação para teclado de PC e do Scanner de Códigos de Barras é

composta de dois sinais: dado serial e clock serial. Estes sinais estão presentes nos PINO P3.2 e

PINO P3.4 do microcontrolador MSC1211Y5. Na Figura 2.22 está descrita a configuração

padrão para conector DIN e Mini DIN do Leitor de Códigos de Barra.

Conector DIN de 5 pinos Mini DIN de 6 pinos (PS2)

1 Clock

2 Dados

3 Não usado

4 Terra

5 Vcc: +5 Volts

1 Clock

2 Terra

3 Dados

4 Não usado

5 Vcc: +5 Volts

6 Não usado

Figura 2.22 Conectores para Leitor de Códigos de Barra.

O protocolo para ler as os dados vindos do Leitor de Códigos de Barra, usa um quadro de

11 bits conforme a Figura 2.23. Os bits de dados devem ser lidos na descida do clock.

Figura 2.23 Seqüência de Dados junto aos 11 bits de clock.

O clock tem frequência típica entre 20kHz e 30kHz. Os bits de dados seguem a

sequência: start-bit (sempre zero); os 8 bits de dados, menos significativo primeiro; um bit de

paridade impar e o stop-bit (sempre um).

Os bytes gerados pelo Leitor de Códigos de Barras ou teclado de PC não fornecem

diretamente o código ASCII das teclas, mas um código diferente chamado Scan-Code. A figura