Vous êtes sur la page 1sur 73

ESCOLA POLITCNICA DE PERNAMBUCO

SISTEMA DE COMUNICAO USB COM MICROCONTROLADOR

Trabalho de Concluso de Curso Engenharia da Computao

Leonardo de S Leal Santos Orientador: Prof. Srgio Campello Oliveira

LEONARDO DE S LEAL SANTOS

SISTEMA DE COMUNICAO USB COM MICROCONTROLADOR

Monografia apresentada como requisito parcial para obteno do diploma de Bacharel em Engenharia da Computao pela Escola Politcnica de Pernambuco Universidade de Pernambuco.

Recife, Junho de 2009.

Dedico este trabalho a minha famlia, em especial a meus pais que em todo tempo me apoiaram e me incentivaram para a buscas desta conquista.

Agradecimentos
Agradeo primeiramente a Deus, pois ele o centro da minha vida e tudo que sou, isto , minha educao, meu entendimento, meu modo de pensar, minha vida. Tudo devo a Ele. Nada faria sem o apoio do meu Deus todo poderoso. Agradeo com grande orgulho a minha famlia, pois ela tem se dedicado me ajudando a conquistar essa vitoria. Em todos os momentos pude contar com o apoio, a disciplina e os conselhos que me fizeram vencer. Em especial quero agradecer a meus pais, Ftima e Leal, pois eles so a grande parte das minhas vitorias. Queria agradecer a minha companheira fiel, Raquel, pois sempre tem me apoiado, apesar das dificuldades e sempre esteve ao meu lado para me levantar nos momentos em que no conseguia mais caminhar. Queria agradecer os momentos de compreenso e de abdicao, pois eles so expressos hoje como momentos de sabedoria. Agradeo tambm a sua famlia, que por laos de sangue sua, mas na pratica minha famlia a qual sou de mesmo modo grato. Presto meus agradecimentos a meus amigos de turma, companheiros em momentos de desespero e trabalho rduo. Tambm a meus professores, que promoveram a orientao necessria para concluir esta vitoria hoje. Estes no s transmitiram o conhecimento, mas tambm lies para a vida. Agradeo em especial a meu orientador, Sergio Campello pela pacincia e companheirismo, no s nestes momentos finais, mas tambm em todos esses 5 anos. Um forte abrao e um grande obrigado !!

Resumo
A cada dia, com o crescimento de tecnologia voltada a sistemas embarcados, o uso microcontroladores tem se tornado mais freqente. Este tipo de componente apresenta inmeras vantagens como baixo consumo de energia, programao via linguagem de alto e baixo nvel, entre outras. H sempre uma necessidade de comunicao entre sistemas embarcados e computadores, sejam para diagnostico, monitoramento ou transferncia de dados armazenados. Assim necessrio sempre um modo de comunicao simples e disponvel em vrios tipos de equipamento. proposto por este trabalho o desenvolvimento de um sistema de comunicao USB com microcontroladores. Esse sistema projetado para fornecer comunicao em projetos desenvolvidos, em desenvolvimento ou em planejamento, pois pode ser adicionado como um mdulo a outros sistemas. J esto presentes no sistema todas as configuraes necessrias para fornecer comunicao USB. proposto tambm por este trabalho o desenvolvimento de uma biblioteca de funes para comunicao USB que proporciona facilidade de configurao, abstrao do funcionamento em baixo nvel e instrues de uso no desenvolvimento de um sistema personalizado ou de outras funcionalidades caso seja necessrio. O desenvolvimento feito em linguagem de programao de alto nvel.

Abstract
Each day, with the embedded systems technologies growing, the use of microcontrollers has been more common. This kind of component has a lot of advantages, like small energy consumption, high or low level of programming, and others. There is always the necessity of communications between computers and embedded systems, for diagnosis, monitoring or data transfers. Thus, is always necessary a simple communication way avaliable for at a sort of equipments. This work purposes na USB communication system with microcontrollers development. This system is designed for giving communications in projects in development, developed or in planning, because it can be added as a module with another systems. There is already inside the system all the necessary configurations for giving USB communication. This work also purposes a library of functions for USB communication, providing configuration facilites, better level of low level

programming abstraction, instructions of use for custom system development or another funcionalities, if necessary. All the development in this work is made using high-level programming language.

ii

Sumrio
Captulo 1 .........................................................................................................8 Introduo.........................................................................................................8 Captulo 2 .......................................................................................................10 Microcontroladores .........................................................................................10 2.1 Principais Componentes ..................................................................11 Memria.......................................................................................11 ALU..............................................................................................11 Temporizadores e contadores .....................................................11 Interfaces de entrada e sada ......................................................11 Interrupes.................................................................................12

2.1.1 2.1.2 2.1.3 2.1.4 2.1.5

Captulo 3 .......................................................................................................13 Universal Serial Bus (USB).............................................................................13 3.1 3.2 3.3 Conectores.......................................................................................14 Identificao do Dispositivo..............................................................15 Tipos de Fluxo de Dados .................................................................16 Transferncia de Controle ...........................................................16 Transferncia de Massa ..............................................................16 Transferncia de Interrupo.......................................................17 Transferncia Isossncrona..........................................................17

3.3.1 3.3.2 3.3.3 3.3.4 3.4

Descritores .......................................................................................18

3.5 Classes de dispositivos .........................................................................19 3.5.1 3.5.2 3.5.3 Human Interface Device (HID) .....................................................19 Mass Storage Device (MSC) .......................................................20 Communications Device Class (CDC) .........................................20 iii

3.5.4 Outros.............................................................................................20 Captulo 4 .......................................................................................................22 Sistema de Comunicao USB com Microcontrolador ...................................22 4.1 Ferramentas usadas ........................................................................22 Linguagem C para microcontroladores ........................................22 Ferramenta Computacional de Simulao...................................24 Envio e Recepo de Dados no Computador..............................25

4.1.1 4.1.2 4.1.3 4.2 4.3 4.4

Microcontrolador PIC 18F4550 ........................................................25 Biblioteca de funes .......................................................................26 Comunicao USB...........................................................................28 Descritores USB ..........................................................................28 Bits de configurao ....................................................................32 Configurao de clock .................................................................35 Alimentao do Circuito ...............................................................38 Circuito de Gravao ...................................................................39 Programa Principal ......................................................................40 Simulao ....................................................................................45 Circuito Eltrico............................................................................47 Instalao e Funcionamento........................................................49

4.4.1 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.4.7 4.4.8 4.4.9

Captulo 5 .......................................................................................................53 Concluso e Trabalhos Futuros......................................................................53 Bibliografia ......................................................................................................55 Apndices .......................................................................................................56 Arquivo usb_serial_TCC.h ..........................................................................56 Arquivo usb_biblioteca.h .............................................................................59 Arquivo usb_desc_TCC.h ...........................................................................64 iv

ndice de Figuras
Figura 1. Comparativo entre as formas de comunicao em relao velocidade. ................................................................................................................14 Figura 2. Conectores USB. .............................................................................14 Figura 3. Configurao de hardware Full Speed Device.................................15 Figura 4. Configurao de hardware Low Speed Device................................16 Figura 5. Tipos de fluxos de dados da comunicao USB..............................18 Figura 6. Hierarquia de descritores USB ........................................................19 Figura 7. Distribuies e respectivas famlias do compilador CCS.................24 Figura 8. Diagrama do clock para o oscilador primrio, adaptada e extrada de . .................................................................................................................................36 Figura 9. Esquema de alimentao do circuito ...............................................39 Figura 10. Gravador e esquema de gravao ICD2 .......................................40 Figura 11. Circuito de simulao no Proteus ..................................................46 Figura 12. Desenho do circuito impresso........................................................48 Figura 13. Face dos componentes do circuito construdo...............................48 Figura 14. Face das soldas e trilhas do circuito construdo ............................49 Figura 15. Reconhecimento no computador do SCUSB (Sistema de Comunicao USB)...................................................................................................50 Figura 16. Configurao da conexo do terminal no computador ..................51 Figura 17. Abrir porta de comunicao no programa terminal ........................51 Figura 18. Resposta obtida pelo envio do comando Instrues .....................52 Figura 19. Resposta obtida pelo envio do comando Ler EEPROM ................52 Figura 20. Resposta obtida pelo envio do comando Gravar na EEPROM......52 Figura 21. Resposta obtida pelo envio do comando Mostrar Rotina ..............52

ndice de Tabelas
Tabela 1. Pinagem dos conectores USB. .......................................................15 Tabela 2. Tipos de dispositivos.......................................................................21 Tabela 3. Descritor de dispositivo...................................................................29 Tabela 4. Descritor de configurao ...............................................................30 Tabela 5. Descritor de interface de controle ...................................................30 Tabela 6. Descritor da interface de transmisso de dados do tipo CDC ........31 Tabela 7. Descritor de endpoint 0...................................................................31 Tabela 8. Descritor de endpoint 1...................................................................31 Tabela 9. Descritor de endpoint 2...................................................................32 Tabela 10. Configurao da freqncia de clock............................................37 Tabela 11. Diretivas de compilao................................................................40 Tabela 12. Bits de configurao do programa principal..................................42

vi

Tabela de Smbolos e Siglas


USB - Universal Serial Bus RAM Random Access Memory EEPROM - Electrically-Erasable Programmable Read-Only Memory ALU - Arithmetic Logic Unit FS - Full Speed LS - Low Speed HID - Human Interface Device MSC - Mass Storage Device CDC - Communications Device Class SPP - Streaming Parallel Port CP - Code-Protect bit WRT - Write-Protect bit EBTR - External Block Table Read bit WDT - Watchdog Timer ICSP- In Circuit Serial Programming LVP - Low-Voltage Programming PLL - Phase Locked Loopgsdygs

vii

Captulo 1 Introduo

ESCOLA POLITCNICA DE PERNAMBUCO

Captulo 1 Introduo
H uma tendncia nos dias atuais para a utilizao da comunicao USB devido a sua gama de vantagens em relao a outros tipos de comunicao, como por exemplo, possuir configurao fcil por parte do usurio, ter um baixo custo de desenvolvimento, ter disponvel vasta documentao e suporte, entre outras. Neste trabalho foram observadas essas vantagens tornando a comunicao USB em microcontroladores como alvo principal. A comunicao USB proporciona uma conexo padro para diversos tipos de dispositivos tornando muito fcil a instalao deste projeto em qualquer computador. Esse tipo de comunicao tambm proporciona a rpida utilizao aps a instalao, caracterstica chamada de plug and play. O foco inicial era obter um melhoramento do Sistema de Deteco ptica de Descargas Parciais em Cadeias de Isoladores em Linhas de Transmisso de Alta Tenso [1], incluindo a transmisso USB para comunicao direta com um computador. Esse melhoramento seria realizado na central de processamento desse sistema que usa o microcontrolador PIC 16F877A [2] e deveria ser adaptada para o uso do PIC 18F4550 [3] migrando todas as funes definidas anteriormente, contudo a ampliao deste trabalho para uso em diversos sistemas se tornou em foco principal, tornando-o assim mais abrangente. Neste trabalho foi proposto esse tipo de comunicao pela razo de ampla compatibilidade com diversas plataformas e sistemas operacionais. O Windows, por exemplo, o suporta desde a verso 98. Sistemas operacionais Linux e Mac tambm so compatveis. Atualmente, possvel conectar dispositivos USB em vrios outros aparelhos eletrnicos. Alm de que os dispositivos USB podem ser conectados e desconectados a qualquer momento. Em um computador, por exemplo, no necessrio reinici-lo ou deslig-lo para conectar ou desconectar. A interface de comunicao USB tem a caracterstica de fornecer tenso para alimentao eltrica 8

Captulo 1 Introduo

ESCOLA POLITCNICA DE PERNAMBUCO

dos dispositivos conectados atravs dela. Por exemplo, um celular conectado em um computador atravs de conexo USB no necessita de nenhuma alimentao externa, no entanto possvel o carregamento de sua bateria. O sistema desenvolvido neste trabalho usa a alimentao que fornecida pela conexo USB. A manipulao dos dispositivos com comunicao USB intuitiva, rpida e de simples configurao para o usurio, contudo o seu desenvolvimento necessita de vrios mdulos de configurao, esses descritos neste trabalho em detalhes. Com o uso de microcontroladores esse tipo de comunicao necessita tambm de descritores (trazem informaes sobre o dispositivo), biblioteca de funes, entre outros. Uma nova biblioteca foi desenvolvida, tambm descrita neste trabalho, para tornar mais simples a implementao de futuros projetos, seja nesse sistema, seja em qualquer outro sistema que use microcontroladores da Microchip [4] e programao em linguagem C. A carncia de portas de comunicao paralela em novos dispositivos provocou o desincentivo ao desenvolvimento desse tipo de comunicao nos sistemas embarcados em geral. Esse outro motivo para o desenvolvimento deste trabalho com comunicao USB para microcontroladores.

Captulo 2 Microcontroladores

ESCOLA POLITCNICA DE PERNAMBUCO

Captulo 2 Microcontroladores
Microcontrolador um circuito integrado composto por um microprocessador e dispositivos perifricos essenciais para o seu funcionamento como: memria de programa e de dados; e tambm perifricos acessrios como: interfaces de entrada e sada de dados. Os microcontroladores tambm so equipados com diversos circuitos eletrnicos tais como: conversor analgico digital, temporizadores, comparadores, interfaces de comunicao, geradores de pulsos, entre outros. So muito populares devido ao seu baixo custo. Isso vem tornando os microcontroladores como solues de viabilidade de vrios projetos que tem como prioridade o baixo consumo de energia. Por serem programveis podem ser utilizados nas mais diversas aplicaes em sistemas embarcados, como celulares, eletrodomsticos, equipamentos de automao industrial, relgios, alarmes, brinquedos e outros, pois podem ser desenvolvidos para aplicaes especificas. Uma grande parte de componentes eletrnicos hoje composta por

microcontroladores. A capacidade de processamento e de armazenamento varia entre os microcontroladores definindo desta forma famlias de processadores com funes semelhantes. Existem famlias que so de linhas compactas, isto , possuem poucas funes, ocupam menos espao, consomem menos energia. Esses so usados para executar operaes mais simples que no necessitem de muitos recursos. Outros so compostos por maior capacidade de armazenamento de dados, palavras de bits maiores, diversas funcionalidades e podem ser usados para a execuo de atividades mais complexas, e em algumas ocasies substituindo computadores. Alm de terem baixo custo como vantagem ainda consomem pouca energia, so portteis, eliminam a necessidade de muitos componentes externos, podem ser reconfigurados com facilidade e necessitam de pouco tempo para o

desenvolvimento. 10

Captulo 2 Microcontroladores

ESCOLA POLITCNICA DE PERNAMBUCO

2.1 Principais Componentes


A maior parte dos componentes encontrados nos microcontroladores est citada abaixo, sendo estes os principais:

2.1.1 Memria
A memria um componente essencial em um microcontrolador e dividida em dois tipos: memria de programa (Flash) e memria de dados (RAM Random Access Memory e EEPROM - Electrically-Erasable Programmable Read-Only Memory). A memria de programa onde esto armazenadas as tarefas que o microcontrolador deve executar. Nessa os programas podem modificar

configuraes, manipular os dispositivos, efetuar comunicao de entrada e sada, executar instrues aritmticas, entre outros. A memria de dados usada para armazenar resultados e dados que sero usados pelo microcontrolador. Ambas as memrias tem tamanho bem limitado se comparado com outros dispositivos.

2.1.2 ALU
A ALU (Arithmetic Logic Unit) um modulo do microcontrolador que trabalha com operaes lgicas de comparao como maior, menor, igual; operaes booleanas como and, or, xor; operaes aritmticas como adio, subtrao, incrementao, multiplicao e diviso. considerada a central de processamento.

2.1.3 Temporizadores e contadores


So usados para executar rotinas que precisem de noes de tempo ou contadores temporais. Podem gerar pulsos, rotinas em perodos especficos, entre outros. Seus parmetros so alterveis, tornando o seu uso programvel para uso especifico ou geral.

2.1.4 Interfaces de entrada e sada


Este tipo de componente responsvel por prover formas de comunicao do microcontrolador com dispositivos externos. o meio usado para a troca de dados que podem ser transmisso serial e paralela em vrios protocolos como RS232 e 11

Captulo 2 Microcontroladores

ESCOLA POLITCNICA DE PERNAMBUCO

USB por exemplo. Podem receber informaes de mouses, teclados, sensores e enviar informaes para display, atuadores, entre outros.

2.1.5 Interrupes
Este o componente que controla os pedidos de interrupo. Vrios so os dispositivos que esto inclusos dentro de um microcontrolador e a sua maioria dispara pedidos de interrupo o qual pode ser usado para a execuo de rotinas especificas.

12

Captulo 3 Universal Serial Bus (USB)

ESCOLA POLITCNICA DE PERNAMBUCO

Captulo 3 Universal Serial Bus (USB)


O protocolo de comunicao USB foi desenvolvido por um conjunto de empresas que observaram a necessidade de obter uma forma de comunicao nica [5]. A diversidade de protocolos e conectores dificultava a comunicao de produtos com os computadores. O protocolo USB foi concebido com a finalidade de poder ser implementado em qualquer dispositivo, possuir configurao fcil por parte do usurio, ter um baixo custo de desenvolvimento, ser Plug and Play e ter disponvel vasta documentao e suporte. A velocidade da transmisso de dados tambm foi algo em foco no desenvolvimento desse padro. Varias verses foram desenvolvidas com mudana nas velocidades implementadas. Sua taxa de transmisso hoje est acima de muitas formas de comunicao. A verso 1.1 tem como fator negativo a baixa velocidade na transmisso de dados (1,5 a 12 Mbps). Esse valor considerado alto em relao as portas seriais, mas muito deficiente em relao a outros tipos de barramentos como o SCSI (80 a 160 Mbps) e o Firewire (400 Mbps). O padro USB 2.0 tem a velocidade de 480 Mbps. Essa supera a velocidade das primeiras implementaes do Firewire, tornando a USB tambm uma opo vivel. Pode-se observar na Figura 1 um comparativo entre as formas de comunicao em relao velocidade de transmisso.

13

Captulo 3 Universal Serial Bus (USB)

ESCOLA POLITCNICA DE PERNAMBUCO

Figura 1. Comparativo

entre as formas de comunicao em relao velocidade.

3.1 Conectores
Existem vrios tipos de conectores, contudo todos seguem o mesmo padro de fabricao. A Figura 2 mostra a diversidade dos conectores e as diferenas fsicas entre eles. Os diversos tipos tm a funo de evitar conexes perigosas, isto , que possam danificar algum dispositivo, como por exemplo, encadeamentos com dispositivos no permitidos ou concatenao de cabos. Os conectores mini foram criados para dispositivos menores como telefones celulares, PDAs, maquinas fotogrficas, etc.

Figura 2. Conectores

USB.

14

Captulo 3 Universal Serial Bus (USB)

ESCOLA POLITCNICA DE PERNAMBUCO

Cada conector possui quatro contatos funcionais. Dois para alimentao e dois para dados diferenciais e seguem as conexes indicadas na Tabela 1.
Tabela 1.

Pinagem dos conectores USB. Cor


Vermelho Branco Verde Preto

Contato Sinal
1 2 3 4 Vcc (5V) DD+ Terra

3.2 Identificao do Dispositivo


As transferncias de dados podem ser sncronas, em alta velocidade, ou assncronas, com padres de velocidade menores. A identificao desses dispositivos feita por meio de hardware. Quando um dispositivo conectado ele questionado quanto a sua velocidade de operao e quanto ao driver a ser carregado para uma configurao adequada. O dispositivo USB indica a sua velocidade ao host colocando a linha D+ ou a linha D- no nvel lgico alto (3.3 Volts) quando se conecta ao host. O dispositivo FS-USB (Full Speed) que transmitem com taxa de 12 Mbps, usa um resistor de pullup de 1.5k ligado linha D+ para se identificar como dispositivo FS-USB conforme ilustrado na Figura 3 [6]. Quando essa linha est em nvel alto, o host detecta a presena do dispositivo conectado a sua porta.

Figura 3. Configurao

de hardware Full Speed Device 15

Captulo 3 Universal Serial Bus (USB)

ESCOLA POLITCNICA DE PERNAMBUCO

J os dispositivos LS-USB (Low Speed), que transmitem com taxa de 1,5 Mbps, tm um resistor pull-up de 1.5k ligado linha D-, como ilustrado na Figura 4 [6]. Alguns dispositivos possuem esse resistor projetado internamente no chip.

Figura 4. Configurao

de hardware Low Speed Device

3.3 Tipos de Fluxo de Dados


Os dispositivos USB so usados para diversas aplicaes. Ele pode ser usado conforme a demanda de uma aplicao e configurado para uso especifico. Existem quatro tipos de fluxos de dados que podem ser transferidos por um dispositivo USB so eles: controle, massa, interrupo, isossncrona [6].

3.3.1 Transferncia de Controle


Usada para o reconhecimento e configurao do dispositivo, acontece troca de dados de informaes sobre o dispositivo disponibilizando os descritores e parmetros de configurao. Nesse tipo de transmisso h um robusto controle de erros, pois a troca de dados deve ser precisa.

3.3.2 Transferncia de Massa


o tipo de transferncia que recebe e envia grande quantidade de dados, podendo existir simultaneamente o envio e o recebimento. Geralmente permanecem com uma conexo por muito tempo e variam a velocidade de transmisso de acordo com a carga de congestionamento do transmissor e do receptor. Geralmente usada 16

Captulo 3 Universal Serial Bus (USB)

ESCOLA POLITCNICA DE PERNAMBUCO

para a transmisso de arquivos, pois prov forte controle de erros, assim como a transferncia de controle. Os dispositivos de armazenamento como pen drivers, cartes de memria, impressoras, scanners entre outros usam este tipo de transferncia.

3.3.3 Transferncia de Interrupo


Usada para enviar pequena quantidade de dados. Geralmente so caracteres ou coordenadas de dispositivos de interface humana como mouses, teclados, controladores de jogos e outros. Os dados so gerados a partir de uma deteco de mudana no estado do dispositivo que chamada de evento. Como por exemplo, o pressionar de um boto em um controlador de jogo ou movimentar o mouse.

3.3.4 Transferncia Isossncrona


Transferncia isossncronos so trocas de dados contnuas, geralmente em tempo real. Este tipo de transferncia deve ser efetuado de acordo com uma determinada taxa previamente configurada. O envio de dados feito de acordo com essa taxa, desprezando eventuais perdas de blocos de dados neste perodo. No h uma preocupao com a perda de dados, mas sim com a taxa de transmisso. Um exemplo de uso deste tipo de transferncia o uso de dispositivos de comunicao de udio em tempo real ou de telefonia. Devem seguir uma taxa especfica; caso exista alguma perda de dados no meio da transmisso no h sentido a retransmisso desses dados, pois no mais interessante. No h uma rigidez quanto correo de erros, contudo h uma preferncia quanto taxa de transmisso. Geralmente neste tipo de transmisso o dispositivo faz uma reserva de memria para o recebimento dos dados no inicio da transmisso. Na Figura 5 podemos observar como so as caractersticas dos quatro tipos de comunicao.

17

Captulo 3 Universal Serial Bus (USB)

ESCOLA POLITCNICA DE PERNAMBUCO

Figura 5. Tipos

de fluxos de dados da comunicao USB

3.4 Descritores
Todos os dispositivos USB tm uma hierarquia de descritores que informam ao host o que compe o dispositivo e suas caractersticas de funcionamento, como: nmero de srie do produto, identificao do fabricante, tipo do dispositivo (impressora, scanner, modem, mouse, etc.), nmero de configuraes, nmero de endpoint (local fsico onde ser armazenado o fluxo de dados), tipo de transferncia, tipo de interface, entre outros. possvel visualizar a hierarquia dos descritores analisando a Figura 6.

18

Captulo 3 Universal Serial Bus (USB)

ESCOLA POLITCNICA DE PERNAMBUCO

Figura 6.

Hierarquia de descritores USB

O primeiro nvel da hierarquia de descritores o descritor de dispositivo. Nele informado o tipo de dispositivo, a classe, nome do produto, fabricante, entre outros. Abaixo na hierarquia existem os descritores de configurao. Nele informado se o dispositivo tem alimentao prpria ou no, nmero de interfaces, entre outros. Existe, seguindo a hierarquia, o descritor de interface que informa os parmetros que identificam a relao entre o dispositivo e o endpoint. O descritor de endpoint tem por funo informar o host sobre uma via de comunicao especfica, visto que podemos configurar o dispositivo para possuir mais de um via [6] [7].

3.5 Classes de dispositivos


3.5.1 Human Interface Device (HID)
Os dispositivos que fazem parte desta classe USB so dispositivos que geralmente ajudam os operadores a se comunicar de maneira fcil com os computadores. Sua instalao simples, pois j esto previamente definidos os protocolos de comunicao para estes dispositivos. So dispositivos HID os mouses, teclados, controladores de jogos, entre outros.

19

Captulo 3 Universal Serial Bus (USB)

ESCOLA POLITCNICA DE PERNAMBUCO

Geralmente a implementao destes dispositivos no necessita de muito trabalho, pois os protocolos de comunicao j so disponveis prontos e j esto implementados nos sistemas operacionais.

3.5.2 Mass Storage Device (MSC)


Os dispositivos que se enquadram nesta classe de comunicao so chamados dispositivos de armazenamento de grande quantidade de dados. Esses dispositivos so normalmente equipamentos que trabalham com transferncia de um grande volume de dados, normalmente transferncia de arquivos. So dispositivos que se identificam com essa classe os discos rgidos magnticos externos, drives pticos externos, incluindo os leitores e gravadores de CD e DVD, dispositivos portteis de memria flash, cmeras digitais, entre outros.

3.5.3 Communications Device Class (CDC)


Os dispositivos do tipo de classe definido como CDC implementam um mecanismo de comunicao de propsito geral que pode ser usado para a comunicao entre a maioria dos dispositivos. Normalmente os dispositivos classificados como CDC so modems, dispositivos de rede, comunicao sem fio, telefonia. Alm disso, estes dispositivos suportam implementao semelhante a uma placa de rede, fornecendo uma interface de transmisso de quadros Ethernet ou ATM para alguns suportes fsicos.

3.5.4 Outros
No h apenas estas classes de dispositivos. Pode-se implementar com o protocolo USB diversos tipos de dispositivos. Na Tabela 2 podemos visualizar diversas formas j determinadas.

20

Captulo 3 Universal Serial Bus (USB)

ESCOLA POLITCNICA DE PERNAMBUCO

Tabela 2. Tipos

de dispositivos

Cdigo Classe de dispositivos


00h 01h 02h 03h 05h 06h 07h 08h 09h 0Ah 0Bh 0Dh 0Eh 0Fh DCh E0h EFh FEh FFh Reservado Interface de udio Comunicao e controle CDC Interface HID (Human Interface Device) Interface fsica Interface virtual Interface de impresso Interface Mass Storage Dispositivo Hub Interface CDC de dados Interface para carto inteligente Interface de contedo de segurana Interface de vdeo Interface para dispositivos de cuidado com sade pessoal Dispositivo de diagnostico Interface controladora de redes em fio Hbridos Interface de aplicaes especifica Dispositivo comercial especifico

21

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

Captulo 4 Sistema de Comunicao USB com Microcontrolador


Neste capitulo ser apresentado os conceitos e conhecimentos adquiridos para o desenvolvimento do sistema incluindo as ferramentas utilizadas, detalhes sobre o microcontrolador, uma apresentao detalhada sobre a biblioteca de funes e a implementao final e funcionamento do sistema.

4.1 Ferramentas usadas


4.1.1 Linguagem C para microcontroladores
A linguagem C uma linguagem de alto nvel e estruturada. Sua sintaxe simples e porttil, isto , pode ser usado o mesmo programa em vrias plataformas. C muito utilizada para a programao de microcontroladores e tambm tem o poder de interagir com a plataforma em baixo nvel podendo incluir cdigos em assembly em sua implementao. A portabilidade uma vantagem para o desenvolvimento de programas em C, os quais uma vez construdos podem ser usados em vrias plataformas e dificilmente haver modificaes. Como exemplo, pode-se citar a escrita de algumas rotinas para uso no microcontrolador PIC 16F877A [2], o qual foi usado em testes inicialmente para o aprendizado, e posteriormente migrando esses programas para uso no microcontrolador PIC 18F4550 [3]. A migrao destas rotinas para diferentes plataformas necessitou de poucas modificaes no programa, as modificaes feitas so relacionadas a funcionalidades no suportadas entre uma famlia e outra, ou mudanas na especificao de cada um dos microcontroladores, como o clculo de tempo dos temporizadores. As funes desenvolvidas em C so de fcil implementao, pois so usadas, geralmente, um conjunto de rotinas simples para a execuo de rotinas complexas. 22

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

Tambm possvel verificar a vasta quantidade de documentao a respeito da programao nesta linguagem. Com C possvel o desenvolvimento de biblioteca de propsito especfico, a qual foi desenvolvida neste projeto e ser descrita em sees posteriores. A explorao de rotinas de baixo nvel possvel em C, pois existe suporte a programao em assembly dentro de seus programas. Deste modo pode-se desfrutar de todas as vantagens da implementao em alto nvel e tambm fazer uso das vantagens da implementao em baixo nvel explorando rotinas que podem no ser otimizadas atravs da programao em alto nvel. No caso de projetos com microcontroladores disponibilizado geralmente rotinas (bibliotecas de funes) em C pelos seus fabricantes, pois a linguagem geralmente utilizada para programao em microcontroladores pelas diversas vantagens informadas at este momento. Tambm possvel a programao diretamente em assembly, contudo uma abordagem que exige muito mais experincia e trabalho. O CCS C Compiler um compilador de linguagem C usado neste projeto para o desenvolvimento das rotinas para os microcontroladores [8]. O CCS prov completa estrutura lgica para a programao e tem baixo custo de implementao. O CCS composto por operadores que foram empacotados em bibliotecas que so especficos para os microcontroladores PICs, bem como acesso aos recursos de hardware com C. O compilador usado para gerar o cdigo fonte em C e assembly em linguagem de mquina. Possui interface para facilitar a implementao do sistema assim como fornece exemplos, drivers e funes em forma de bibliotecas. O CCS foi concebido para dar suporte a todas as famlias dos microcontroladores PICs da Microchip. Na Figura 7 podemos verificar as distribuies e as respectivas famlias.

23

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

Figura 7. Distribuies

e respectivas famlias do compilador CCS

No desenvolvimento deste trabalho foi usado o compilador com suporte ao PIC18, j que este projeto est baseado no microcontrolador PIC18F4550 [3] como veremos nas prximas sees. Tambm foi necessrio o suporte a comunicao USB que essencial para este desenvolvimento.

4.1.2 Ferramenta Computacional de Simulao


O Proteus uma ferramenta til para a simulao e a construo de circuitos eltricos. Nele esto disponveis vrios componentes, incluindo microcontroladores, com a possibilidade de observar o funcionamento de forma virtual. Pode ser utilizada tanto para circuitos analgicos quanto para circuitos digitais ou hbridos. No Proteus ainda so disponibilizadas ferramentas de laboratrio como osciloscpios, multmetros, geradores de sinais entre outros, permitindo o aprendizado da operao dos principais instrumentos essenciais em uma bancada de eletrnica. O uso do Proteus foi essencial neste trabalho, para a execuo de testes de funcionamento e aprendizado, pois foram usados vrios exemplos at a absoro e 24

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

adaptao com as plataformas utilizadas. O uso do Proteus foi necessrio para a verificao da confeco do circuito e corrigir erros de programao.

4.1.3 Envio e Recepo de Dados no Computador


O programa de recepo e envio de dados usado no computador o programa Advanced Serial Port Terminal. Ele responsvel por receber e enviar dados do computador para um dispositivo usando uma porta serial. O Advanced Serial Port Terminal uma ferramenta para ser usada por desenvolvedores, programadores e usurios e possvel se conectar a qualquer dispositivo para verificar, solucionar problemas, depurar ou usar o sistema [9]. O Advanced Serial Port Terminal muito mais funcional do que o terminal padro do Windows, o Hyper Terminal, uma vez que capaz de enviar e receber vrios tipos de dados (string ASCII, binrio, octal e hexadecimal) ao longo de fluxo de comunicao.

4.2 Microcontrolador PIC 18F4550


O microcontrolador explorado neste projeto o PIC18F4550 [2] que possui muitas funcionalidades, isto , ele considerado um microcontrolador completo. As caractersticas desse microcontrolador so: Memria de programao e de dados que permitem apagamento e reescrita de valores milhares de vezes; auto programvel, isto , atravs de um controle interno por software, o microcontrolador pode escrever na sua prpria memria de programa. Usando uma rotina de bootloader, alocada no bloco Boot no topo da memria de programa, possvel atualizar a aplicao em campo, sem a utilizao de um gravador. 1 Mdulo Universal Serial Bus (USB). O PIC18F4550 possui um USB SIE (Serial Interface Engine) compatvel com full-speed e low-speed USB o que possibilita a rpida comunicao entre um host USB e o microcontrolador. Alm disso, o mdulo USB possui 16 endpoints bidirecionais e suporta 4 tipos de transferncias: controle, interrupo, isossncrona e Massa.

25

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

13 Conversores analgico-digitais de 10 bits; Memria de programa Flash com 32 Kbytes; Memria de dados EEPROM 256 Bytes; Memria RAM 2 Kbytes; Freqncia de operao at 48 MHz; Portas bidirecionais de entrada e sada: A, B, C, D e E; 4 Timers; 1 Mdulo Capture/Compare/PWM; 2 Comparadores; 1 Streaming Parallel Port (SPP).

4.3 Biblioteca de funes


A biblioteca de funes um conjunto de funes extras que tornam transparente ao programador a manipulao do dispositivo USB. Nele existem funes de inicializao, transmisso e recepo de dados usando o protocolo de comunicao USB. Esta biblioteca foi desenvolvida para uso em sistemas que usem o microcontrolador de modelo PIC 18F4550 [3] e o compilador CCS [8]. A transmisso de dados USB neste projeto realizada por um microcontrolador que foi programado para se comportar como um dispositivo do tipo CDC. Em um computador ele reconhecido como uma transmisso atravs de uma porta serial de comunicao (COM). Todas as funes referenciadas ou desenvolvidas nesta biblioteca referem-se a esse tipo de transmisso. Existem funes nativas fornecidas com a instalao do compilador, e estas so documentadas nesta biblioteca de forma que esteja disponvel ao programador uma documentao bsica para efetuar transmisso via USB. Essas funes nativas documentadas nesta biblioteca podem ser necessrias para o desenvolvimento de sistemas que usem transmisso de dados.

26

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

As funes nativas so: usb_enumerated(): Verifica se o dispositivo est pronto para a comunicao; usb_detach(): Desconecta o dispositivo. Deve ser usada antes de sua remoo fsica do computador; usb_attach(): Re-conecta o dispositivo, deve ser usada para reconect-lo quando o dispositivo foi desconectado, mas ainda no

removido literalmente; usb_cdc_putc(char c): Envia um caracter via USB; usb_cdc_kbhit(): Verifica se existe algum dado no buffer de recepo; usb_cdc_getc(): Recebe um caracter. Deve-se usar o usb_cdc_kbhit() descrito anteriormente para verificar se existem dados; get_float_usb(): Recebe um numero ponto flutuante; get_long_usb(): Recebe um numero inteiro longo; get_int_usb(): Recebe um inteiro; get_string_usb(char *s, int max): Recebe uma string; gethex_usb(): Recebe um hexadecimal.

Maiores informaes sobre estas funes nativas podem ser encontradas na documentao do compilador CCS compiler na pasta de instalao \...\PICC\Drivers nos arquivos USB.c, pic18_usb.h e usb_cdc.h. As funes extras necessrias que foram implementadas e esto includas nesta biblioteca com a inteno de completar as funes nativas existentes so: usb_cdc_putString(char *p): Envia uma string; usb_cdc_putEEPROM (int posicaoI, int tamanho): Envia um bloco da memria de dados; usb_cdc_putFLASH (char posicaoI, char tamanho): Envia um bloco da memria de programa; usb_cdc_conectar(): Inicializa e configura o dispositivo USB. 27

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

Tambm

est

presente

nesta

biblioteca

instrues

respeito

do

desenvolvimento de sistemas. As instrues so duas: a incluso de um descritor CDC diferente e a criao de um novo arquivo descritor USB. O nome da biblioteca foi determinado como usb_biblioteca.h. Existem dois arquivos que envolvem os descritores USB: usb_desc_cdc.h e usb_cdc.h, ambos se encontram na pasta "\...\PICC\Drivers". O primeiro a implementao dos descritores USB. A criao de um novo arquivo descritor USB necessria caso se deseje efetuar alguma modificao no descritor original para a criao de um descritor personalizado ou mais especifico. Devem ser feitas as modificaes e salv-las na mesma pasta onde se encontra o projeto mudando o nome do arquivo. O segundo arquivo o usb_cdc.h. Esse arquivo indica qual o arquivo que implementa o descritor usado no sistema. Caso seja criado um novo arquivo de descritor deve ser modificada a referncia dentro deste arquivo.

4.4 Comunicao USB


O desenvolvimento do sistema tem como finalidade efetuar a transferncia de dados, da memria do microcontrolador ou gerados pelo programa, para um computador e transferir dados do computador para uso nas rotinas do microcontrolador ou para gravao na sua memria. Essa comunicao tem como objetivo prover um mecanismo de transferncia de dados que tem a potencialidade de ser aplicado em outros sistemas.

4.4.1 Descritores USB


Inicialmente, neste trabalho, foram implementados os descritores USB. Foi necessrio a modificao dos descritores originais, sendo criado um novo arquivo descritor chamado usb_desc_TCC.h. Na cadeia de hierarquia de descritores, o descritor no topo o descritor de dispositivo. Na Tabela 3 podem-se visualizar os parmetros aplicados nesse descritor de dispositivo e a uma explicao sobre esses parmetros. Os valores usados foram inicialmente retirados do arquivo original usb_desc_cdc.h. Alguns dos valores atribudos so valores j configurados pelos arquivos de especificao USB.

28

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

Tabela 3. Descritor

de dispositivo Descrio
Tamanho em bytes do descritor Tipo de descritor Verso USB utilizada Classe do dispositivo Sub Classe do dispositivo Protocolo utilizado Tamanho max. do pacote Id do fabricante Id do produto Verso do produto Informaes do produto Informaes do produto N de Serie do produto N de configuraes disponveis

N
0 1 2 4 5 6 7 8 10 12 14 15 16 17

Campo
bLength bDescriptorType bcdUSB bDeviceClass bDeviceSubClass bDeviceProtocol bMaxPacketSize0 idVendor idProduct bcdDevice iManufacturer iProduct iSerialNumber

TAM. Valor
1 1 2 1 1 1 1 2 2 2 1 1 1 USB_DESC_DEVICE_LEN 01h 0110h 02h 00h 00h USB_MAX_EP0_PACKET_LENGTH 0461h 0033h 0100h 01h 02h 00h USB_NUM_CONFIGURATIONS

bNumConfigurations 1

Cada dispositivo USB possui apenas um descritor de dispositivo que contm informaes gerais. Estes parmetros so os primeiros a serem coletados quando o dispositivo USB conectado [6]. A definio da classe e subclasse da interface segue os valores da Tabela 2 que definem o tipo de dispositivo USB. O parmetro neste descritor que pode sofrer alteraes quando implementado em outros sistemas, o parmetro bcdUSB. Esse campo configura a verso USB utilizada. Neste caso est configurado como verso 1.1, no entanto pode tambm assumir o valor outras verses como a verso 2.0 (0200h). Foi tambm implementado o descritor de configurao. No caso deste sistema s foi disponibilizado uma configurao, portanto outras configuraes podem ser definidas, sendo utilizada uma por vez. Geralmente existe apenas uma configurao por dispositivo USB. Podem-se observar os valores atribudos ao descritor de configurao na Tabela 4. O Remote Wakeup uma funo que desativa o dispositivo USB enquanto no utilizado. Neste projeto no utilizamos esta funcionalidade e conseqentemente foi desativada.

29

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

Tabela 4. Descritor

de configurao Descrio

N
0 1 2 4 5 6 7

Campo
bLength bDescriptorType wTotalLength bNumInterfaces bConfigurationValue iConfiguration bmAttributes 4..0: Reserved 5: Remote Wakeup 6: Self Powered 7: Reserved bMaxPower

Tam.
1 1 2 1 1 1 1

Valor

Tamanho em bytes do USB_DESC_CONFIG_LEN descritor de configurao USB_DESC_CONFIG_TYPE Tipo de configurao Tamanho de todas as USB_TOTAL_CONFIG_LEN configuraes 02h N de interfaces 01h Id da configurao ndice do descritor de string da configurao 01h C0h Definio de vrios atributos ...00000 Suporte a Remote Wakeup ..0..... .1...... Alimentao do circuito 1....... Maxima corrente requerida 32h (maximum milliamperes/2)

No descritor de configurao devem ser observados dois parmetros para o desenvolvimento de outros projetos: o tipo de alimentao do circuito e a corrente mxima requerida, respectivamente os campos Self Power e bMaxPower [6]. No descritor de interface atribuda a classe da interface de transmisso. Na configurao de dispositivos USB possvel atribuir vrias interfaces de comunicao de classes diferentes. A definio da classe da interface segue os valores da Tabela 2. Neste sistema foi implementado duas interfaces: uma de controle e outra de transmisso de dados do tipo CDC. Podem-se analisar os atributos destas interfaces na Tabela 5 e na Tabela 6.
Tabela 5. Descritor

de interface de controle Descrio


Tamanho do descritor Tipo de descritor Id da interface Configurao alternativa Numero de endpoits Classe da interface Sub classe Protocolo utilizado ndice do descritor de string da interface

N
0 1 2 3 4 5 6 7 8

Campo
bLength bDescriptorType bInterfaceNumber bAlternateSetting bNumEndpoints bInterfaceClass bInterfaceSubClass bInterfaceProtocol iInterface

TAM. Valor
1 1 1 1 1 1 1 1 1 USB_DESC_INTERFACE_LEN USB_DESC_INTERFACE_TYPE 02h 00h 01h 02h 02h 01h 00h

30

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

Tabela 6.

Descritor da interface de transmisso de dados do tipo CDC TAM. Valor


1 1 1 1 1 1 1 1 1 USB_DESC_INTERFACE_LEN USB_DESC_INTERFACE_TYPE 01h 00h 02h 0Ah 00h 00h 00h

N
0 1 2 3 4 5 6 7 8

Campo
bLength bDescriptorType bInterfaceNumber bAlternateSetting bNumEndpoints bInterfaceClass bInterfaceSubClass bInterfaceProtocol iInterface

Descrio
Tamanho do descritor Tipo de descritor Id da interface Configurao alternativa Numero de endpoits Classe da interface Sub classe Protocolo utilizado ndice do descritor de string

Os descritores de endpoints definem o tipo de transferncia de dados suportada pelo endpoint (controle, massa, interrupo e isossncrona), a direo dos dados, o tamanho mximo do pacote de dados. H neste trabalho trs endpoints como se pode observar nos parmetros dos descritores de interface. Um endpoint usado para a transferncia dos dados de controle, outras duas so usadas para o envio e recebimento dos dados gerados pelo sistema. Nas Tabela 7, Tabela 8 e Tabela 9 respectivamente esto exibidos os valores utilizados na implementao.
Tabela 7. Descritor

de endpoint 0 Descrio
Tamanho da descrio Tipo de descritor Endereo Tipo de transferncia (Interrupo) Tamanho do pacote Intervalo temporal (ms)

N
0 1 2 3

Campo
bLength bDescriptorType bEndpointAddress bmAttributes 1..0: Transfer Type 7..2: Reserved 4 wMaxPacketSize 6 bInterval

Tam. Valor
1 1 1 1 USB_DESC_ENDPOINT_LEN USB_DESC_ENDPOINT_TYPE USB_CDC_COMM_IN_ENDPOINT 03h ......11 000000.. 2 USB_CDC_COMM_IN_SIZE 1 250

Tabela 8. Descritor

de endpoint 1 Descrio
Tamanho da descrio Tipo de descritor Endereo Tipo de transferncia (Interrupo) Tamanho do pacote Intervalo temporal (ms)

N
0 1 2 3

Campo
bLength bDescriptorType bEndpointAddress bmAttributes 1..0: Transfer Type 7..2: Reserved 4 wMaxPacketSize 6 bInterval

TAM. Valor
1 1 1 1 USB_DESC_ENDPOINT_LEN USB_DESC_ENDPOINT_TYPE USB_CDC_DATA_OUT_ENDPOINT 02h ......10 000000.. 2 USB_CDC_DATA_OUT_SIZE 1 250

31

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

Tabela 9. Descritor

de endpoint 2 Descrio
Tamanho da descrio Tipo de descritor Endereo Tipo de transferncia (Interrupo) Tamanho do pacote Intervalo temporal (ms)

N
0 1 2 3

Campo
bLength bDescriptorType bEndpointAddress bmAttributes 1..0: Transfer Type 7..2: Reserved 4 wMaxPacketSize 6 bInterval

TAM. Valor
USB_DESC_ENDPOINT_LEN USB_DESC_ENDPOINT_TYPE USB_CDC_DATA_IN_ENDPOINT 02h ......10 000000.. 2 USB_CDC_DATA_IN_SIZE 1 250 1 1 1 1

4.4.2 Bits de configurao


Os bits de configurao do as diretrizes da configurao das funes do microcontrolador e se encontram sempre no inicio do cdigo fonte em C. Esses bits so na verdade valores binrios que so atribudos a posies especficas na memria do microcontrolador. Esses dados so atribudos no momento da compilao e gravao para configurar determinadas opes no microcontrolador. Algumas dessas configuraes no so removidas com facilidade. Um exemplo pode ser a proteo do dispositivo impedindo a leitura do programa atravs de um gravador externo, para evitar a sua duplicao ou engenharia reversa. Essa funcionalidade configurada por bits de configurao. Em alguns casos a atribuio destes bits irreversvel em outros s podem ser desprogramados apagando todo o contedo da memria. O desenvolvimento do sistema desenvolvido neste trabalho contm vrios bits de configurao. Ser abordado neste tpico os bits usados e o significado de cada um deles, mostrando as principais funes possveis em outros projetos e as aplicadas neste. Os bits responsveis pela configurao de proteo do programa so: PROTECT, NOPROTECT. As rotinas usadas neste trabalho usam o bit NOPROTECT, pois o foco disponibilizar as rotinas e torn-las mais adaptvel possvel a outras aplicaes. Existem bits que envolvem outros tipos de proteo ou restrio envolvendo o programa contido no microcontrolador como, por exemplo, a proteo de memria do programa contra a auto modificao ou at proteo de alguns blocos de memria. 32

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

Alguns bits so o Code-Protect bit (CPn), o Write-Protect bit (WRTn) e o External Block Table Read bit (EBTRn). O CPn responsvel pela leitura ou escrita na memria por dispositivos externos. O WRTn responsvel pela permisso de escrita em blocos de memria do microcontrolador, seja o pedido de manipulao proveniente de dispositivo externo ou do prprio microcontrolador, e o EBTRn responsvel pela leitura de blocos de memria por dispositivos externos. No utilizado neste trabalho nenhuma destas funes de proteo, contudo em trabalhos futuros pode existir esta necessidade. O Brown-out Reset monitora a alimentao do microcontrolador comparandoa com um valor de tenso de referencia previamente configurada. Caso a tenso de alimentao seja menor do que a de referencia o microcontrolador re-inicializa o sistema a fim de evitar mau funcionamento. Os valores de referncia disponveis esto entre os bits de habilitao do Brown-out via software (BROWNOUT_SW), o de desativao (NOBROWNOUT), o de ativao (BROWNOUT) e os de valores de tenso de referncia de 2.0V (BORV20), 2.8V (BORV28), 4.3V (BORV43) e 4.6V (BORV46). A alimentao padro para os microcontroladores de 5V. O Brown-out Reset configurado neste projeto como desativado. A alimentao do circuito segura, a respeito da variao, pois o baixo consumo do projeto no ocasionar perdas prejudiciais fonte de energia, a qual ser especificada nos prximos tpicos. possvel nos trabalhos futuros a possibilidade do seu uso. O Power up timer uma funcionalidade que torna o dispositivo com uma maior margem de segurana a respeito do seu correto funcionamento. Aps um estado de re-inicializao, seja aps ser ligado, seja aps algum evento de Brownout Reset, causado um atraso no seu efetivo funcionamento. Isso se destina a aguardar que a tenso de alimentao atinja um nvel aceitvel e estvel e que a gerao de clock se torne bem definida. Os bits para a ativao e desativao so respectivamente PUT, NOPUT. No projeto aconselhvel a ativao desta funo, j que ela garante que no existir um mau funcionamento no incio da operao do dispositivo. Por existir a transmisso de dados em alta velocidade, foi apropriado o uso desta funo para evitar a ocorrncia de erros e problemas inesperados. Nesse microcontrolador h outra funcionalidade que tambm configurada por bits de configurao. Ela chamada de Co de Guarda (Watchdog Timer 33

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

WDT). Ela funciona garantindo o funcionamento normal do sistema contra possveis acontecimentos inesperados pela execuo do programa como, por exemplo, travamentos. configurada uma constante de tempo em um contador o qual produz uma re-inicializao do programa (reset) caso no seja zerado. Este contador, em operao normal, deve ser zerado pelo programa antes de seu estouro. Caso seja zerado indica que houve um mau funcionamento e provoca a re-inicializao. O nome dado a esse contador Contador de Watchdog. Esse contador usa um circuito contador independente do contador do ncleo do microcontrolador. Os valores possveis para a configurao so os bits: WDT1, WDT2, WDT4, WDT8, WDT16, WDT32, WDT64, WDT128, WDT256, WDT512, WDT1024, WDT2048, WDT4096, WDT8192, WDT16384, WDT32768. Estes bits representam valores de escalas de tempo entre 4ms e 131.072 s (2.18 minutos). Os bits NOWDT e WDT desativam e ativam esta funo respectivamente. O sistema implementado promove a transferncia de dados no crticos e a incluso de um boto de re-inicializao externo, portanto no necessria a ativao desta funo. definido no programa o bit de configurao NOWDT configurando a desativao desta funo. A re-inicializao do dispositivo possvel atravs de diversas

funcionalidades. Vrios bits configuram possveis ocorrncias, contudo existe a possibilidade de provocar no microcontrolador uma re-inicializao via meios externos. O pino MCLR o pino especfico para o uso desta funo e pode ser configurado como provocador de re-inicializao. A re-inicializao ocorre quando o pino MCLR alimentado com nvel lgico zero. Os bits que configuram esta funo so MCLR (para habilitar) e NOMCLR (para desabilitar). Foi definido um boto externo para provocar a re-inicializao do sistema, a fim de corrigir qualquer mau funcionamento que venha a se desenvolver durante sua operao. Est caracterstica de pino de re-inicializao foi definida com o bit MCLR no cdigo do programa definindo como ativada a funo. Existem os bits que permite a depurao do programa no circuito. A configurao desta funo atribuda aos bits NODEBUG (no permite a depurao) e DEBUG (permite a depurao). Neste sistema no foi permitida a depurao, j que no necessrio o uso deste tipo de funcionalidade.

34

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

A gravao do programa no microcontrolador feita por um gravador especfico fornecido pelos fabricantes. No caso dos microcontroladores da famlia PIC da microchip fornecido ao pino MCLR uma tenso de 13V indicando que o microcontrolador est em modo de gravao. Nem todos os sistemas que fazem gravao no prprio circuito podem suportar a recepo dessa tenso. Para resolver este problema existe a funo Low-Voltage ICSP Programming (LVP) que permite a gravao no microcontrolador com baixa tenso. Esta funo configurada pelos bits de configurao NOLVP e LVP. Na ativao a indicao que o microcontrolador est em modo de gravao a atribuio de valor lgico alto no pino PGM no microcontrolador. Note que como o PGM geralmente compartilhado com uma porta, est fica inutilizada se a LVP estiver habilitada. O ICSP significa "In Circuit Serial Programming", ou seja, programao serial no circuito. Neste sistema usado o bit de configurao NOLVP pois mesmo que a gravao do PIC seja no prprio circuito do sistema, h um isolamento do circuito de gravao e de comunicao USB. O bit de configurao VREGEN ativa o uso do Vusb. O Vusb uma entrada no microcontrolador que funciona como alimentao dos resistores pull-up para a deteco da velocidade da transmisso USB, isto , detecta se o dispositivo opera em Full Speed Device ou em Low Speed Device. A no ativao desta funo provoca uma necessidade de alimentao externa deste pino por uma tenso de 3,3V. Ele funciona tambm como regulador interno de tenso para o dispositivo USB. O bit que desabilita esta funcionalidade o NOVREGEN.

4.4.3 Configurao de clock


O microcontrolador usado pode assumir trs fontes de gerao de clock: oscilador primrio, oscilador secundrio e oscilador interno. Tambm pode assumir diversas configuraes diferentes com cada tipo de oscilador ou a combinao entre eles [3]. Estes tipos de fontes diferentes permitem a utilizao de clock de funcionamento diferente para o ncleo do microcontrolador e o dispositivo de comunicao USB. No projeto foi utilizada uma fonte e o oscilador primrio como gerador de clock para todo o circuito. O PLL (Phase Locked Loop - Lao Travado em Fase) um mdulo do microcontrolador que provoca pr e ps escalamento dos valores do clock do ncleo 35

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

do microcontrolador e do circuito USB. Tambm existem os bits de configurao USBDIV e NOUSBDIV que so projetados para configurar qual o clock do dispositivo USB integrado com o microcontrolador. Ambos os bits so usados para definir como ser feito o clculo da frequncia de operao no microcontrolador, tornando adaptvel a cada aplicao. Os bits configuram os blocos internos do microcontrolador conforme a Figura 8.

Figura 8. Diagrama

do clock para o oscilador primrio, adaptada e extrada de [3].

A respeito do circuito do gerador de frequncia o microcontrolador divide os cristais osciladores em dois tipos possveis, os cristais XT (de 200 kHz a 4 MHz) e os HS de alta velocidade (de 4MHz a 20 MHz). Os bits para a configurao da frequncia so: XT (oscilador a cristal), XTPLL (oscilador a cristal com PLL habilitado), HS (oscilador a cristal de alta velocidade), HSPLL (oscilador a cristal de alta velocidade com PLL habilitado), EC (gerador de clock externo), ECIO (gerador de clock externo com sada no RA6), ECPLL (gerador de clock externo com PLL habilitado), ECPIO (gerador de clock externo com PLL habilitado e sada no RA6), entre outros.

36

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

Os valores possveis para os escalares PLL so divididos em dois tipos: pr escalares e ps escalares. Os valores de pr escalares so chamados de PLLDIV e so PLL1, PLL2, PLL3, PLL4, PLL5, PLL6, PLL10 e PLL12. Os valores de ps escalares so chamados de CPUDIV e so CPUDIV1, CPUDIV2, CPUDIV3 e CPUDIV4. No programa principal a configurao da frequncia de operao algo que deve ser observado com bastante cautela. No circuito o cristal opera em uma freqncia de 20MHz. H no PIC18F4550 uma grande variao de possibilidades de clock de operao. O dispositivo USB deve ser configurado para operar com 6 MHz, caso esteja configurado para transmisso Low Speed, ou 48MHz, caso esteja configurado para transmisso Full Speed, o qual foi o caso implementado neste sistema. Os bits de configurao do oscilador foram definidos como HSPLL (oscilador a cristal de alta velocidade com PLL habilitado). As possibilidades de configurao desses bits para um oscilador de 20MHz seguem a Tabela 10.
Tabela 10. Configurao

da freqncia de clock Freqncia do clock do microcontrolador


20 MHz 10 MHz 6.67 MHz 5 MHz 48 MHz 32 MHz 24 MHz 16 MHz

Freqncia do PLLDIV oscilador de entrada

Modo de clock

CPUDIV

20 MHz

5 (100)

None (00) HS, EC, ECIO 2 (01) 3 (10) 4 (11) 2 (00) HSPLL, ECPLL, ECPIO 3 (01) 4 (10) 6 (11)

Os valores de configurao atribudos, isto , usados neste sistema, so os bits USBDIV, PLL5, CPUDIV1. Isso significa que usado o modulo PLL pr escalar com a configurao PPL5. Conforme a Figura 8 o clculo com o valor de freqncia de entrada 20 MHz divido por 5 gerando uma frequncia de 4 MHz. Este valor o adequado para o mdulo de gerao de 96 MHz. Este sinal encaminhado para dois mdulos diferentes. O primeiro mdulo controlado pelo USBDIV, o qual divide o sinal por 2 gerando uma freqncia de 48 MHz para o mdulo USB. O outro 37

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

controlado pela PLL ps escalar. Este valor recebido pelo mdulo PLL ps escalar dividido por 2, conforme CPUDIV1 e enviado para o ncleo do microcontrolador. Como foi observado o ncleo do microcontrolador e o perifrico USB, ambos trabalham com a freqncia de 48 MHz.

4.4.4 Alimentao do Circuito


O sistema pode ser executado em dois modos de operao, gravao com o ICD2 [4] e execuo de comunicao USB. A alimentao do sistema pode ser feita de duas origens dependendo do modo de operao. Em ambos os modos o circuito alimentado com 5V contudo o esquema de alimentao determina que funo o sistema deve desempenhar. Vale salientar que a alimentao depende da arquitetura de comunicao em que o sistema est conectado, j que so arquiteturas de comunicao deferentes. A alimentao do circuito em modo de gravao fornecida atravs da conexo do conector RJ-12 com o gravador. A alimentao do circuito no modo USB pode ser feitas atravs de trs opes. A alimentao eltrica atravs do dispositivo conectado na USB, isto , o computador fornece a tenso para o funcionamento do circuito. Pode ser feita tambm por meio de alimentao externa, atravs de pilhas, baterias ou adaptadores ligados na corrente eltrica fornecendo tenso diretamente ao circuito. A alimentao pode tambm ser hibrida, sendo composta por alimentao do dispositivo USB ou externa. Est ltima configurao permite que o circuito seja alimentado por fonte externa, porm na ausncia ser alimentado pela conexo USB. Pode-se obter alternncia entre a alimentao neste ltimo caso. Neste projeto foi usada a alimentao pela comunicao USB. Isso torna o circuito mais porttil e mais prtico. No necessria a substituio de pilhas/baterias ou a preocupao de ter disponvel tenso ao executar as funes do circuito. O esquema eltrico desta ligao segue a especificao da Figura 9.

38

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

Figura 9. Esquema

de alimentao do circuito

A alimentao do Vbarramento fornecido pelo pino de alimentao USB. Um capacitor de 100uF ligado entre a alimentao e o terra para que seja mantida uma estabilidade na tenso. De mesmo modo feita a conexo do Vusb e o valor do capacitor neste caso de 470nF. O Vss o pino terra do microcontrolador. Deve-se mencionar a existncia do pino sensitivo. Este pino serve para monitoramento interno do microcontrolador a fim de detectar alguma conexo do circuito em uma porta USB. No sistema desenvolvido no existe necessidade da implementao do uso deste pino, pois a evidncia de uma conexo o seu funcionamento. Este pino somente implementado nos casos de alimentao do circuito via fonte externa ou alimentao hibrida.

4.4.5 Circuito de Gravao


Um microcontrolador necessita de um sistema de gravao para inserir cdigos em sua memria. Ao compilar um programa fonte em C gerado um arquivo pronto para ser gravado, e esse sistema de gravao que executa o processo da transferncia do programa para o microcontrolador. Existem diversos gravadores no mercado e neste projeto usado o ICD2 [4]. Este gravador fabricado e comercializado pela Microchip. Ele composto por duas partes, o gravador/depurador e o soquete de gravao para o microcontrolador. O gravador faz a converso dos dados gerados pelo compilador em dados a serem armazenados no microcontrolador. Pode ser observado na Figura 10 um gravador ICD2. O soquete de gravao o circuito que fornece a comunicao do gravador 39

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

com o microcontrolador a ser gravado. Cada microcontrolador tem uma configurao especifica no soquete de gravao.

Figura 10.

Gravador e esquema de gravao ICD2

Neste trabalho foi adicionado ao sistema de comunicao USB um circuito semelhante ao soquete de gravao. A implementao desse circuito traz a facilidade de gravao do programa no microcontrolador sem a necessidade da retirada do mesmo do circuito. A seleo do modo de operao do sistema feita atravs de uma chave seletora presente no circuito. S deve ser usada uma das duas opes na execuo, isto , ou modo de operao de gravao ou execuo de comunicao USB.

4.4.6 Programa Principal


O primeiro passo para o desenvolvimento do programa foi a definio das diretrizes de compilao iniciais. Essas so instrues para o compilador atribuir, na etapa de compilao, valores especficos de configurao de cada microcontrolador. Podem ser observadas algumas diretivas na Tabela 11.
Tabela 11. Diretivas

de compilao

Diretiva
#define #include #fuses #use delay

Descrio
Definio de constantes de cadeia de caracteres Incluir arquivos de cdigos fontes Define os bits de configurao Informa ao compilador o valor da freqncia em Hz

A diretiva #define apropriada para fornecer um rotulo a um valor ou cadeia de caracteres que sero substitudos pelos respectivos valores no momento da 40

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

compilao. Ideal para a definio de constantes ou oferecer nomes a cadeia de caracteres ou valores. Sua principal vantagem que no necessria a alterao do valor em todas as ocorrncias, apenas sua alterao necessria em um ponto do cdigo. Existe na implementao do sistema a definio dos comandos que podem ser enviados durante a execuo. A definio segue o cdigo abaixo.
#define INSTRUCOES 00 #define LEITURA 01 #define GRAVACAO 02 #define ROTINA 03 #define DESCONECTAR 04

A diretiva #use delay informa ao compilador qual o clock de operao da CPU do microcontrolador e os valores so informados em Hz. A operao deste sistema baseada em uma freqncia de 48 MHz. No programa definido conforme cdigo abaixo.
#use delay(clock=48000000)

A diretiva #include indica arquivos com cdigos de programao extras. Esses arquivos de cdigo fonte so adicionados ao programa principal no momento da compilao. Evitam a repetio de um determinado cdigo em vrios arquivos. Funes especiais podem ser definidas em arquivos separados e adicionados em vrios programas sem a necessidade de reescrev-los. No programa desenvolvido foi usado est diretiva para a incluso de dois arquivos, so eles: 18F4550.h e usb_biblioteca.h. As incluso definida conforme descrito abaixo.
#include <18F4550.h> #include <usb_biblioteca.h>

O arquivo 18F4550.h fornecido pelo fabricante e contm informaes e funes aplicadas ao PIC 18F4550. Nesse arquivo so definidas funes de manipulao de temporizadores, entrada e sada de dados, configurao, comparadores, conversores analgico-digitais, interrupes, entre outras. um arquivo essencial para o uso desse microcontrolador. O arquivo usb_biblioteca.h o arquivo desenvolvido neste trabalho que contem funes de comunicao USB. Esse arquivo promove transferncia de 41

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

dados do tipo de dispositivo USB CDC. Ele inclui com a diretiva #include, o arquivo usb_cdc.c que contm mais funes para esse tipo de comunicao. O arquivo usb_cdc.h um arquivo de suporte do compilador CCS. No arquivo USB_cdc.c includo o arquivo de descritores, o USB_desc_TCC. O arquivo usb_desc_TCC.h contm a implementao dos descritores USB. Os descritores deste sistema foram detalhados nas sees anteriores. Este arquivo contem s informaes que descrevem detalhadamente o dispositivo USB implementado. A diretiva #fuses informa ao compilador os bits de configurao adicionados ao programa na compilao e, conseqentemente, na gravao. Estes bits so especficos de cada microcontrolador, apesar de alguns serem iguais em alguns tipos de microcontroladores. Esses bits so chamados pelo compilador CCS de fusveis de configurao. Os bits de configurao usados podem ser visualizados na Tabela 12 incluindo uma breve descrio do significado. Maiores detalhes sobre esses parmetros foram expressos em sees anteriores.
Tabela 12. Bits

de configurao do programa principal

Bits de Configurao Descrio


HSPLL NOWDT NOPROTECT NOLVP NODEBUG USBDIV PLL5 PUT MCLR CPUDIV1 VREGEN Cristal oscilador de alta velocidade com PLL habilitado Desativao do co de guarda Desativao de proteo de cdigo Desativao da gravao em baixa tenso Desativao de depurao em circuito Ativao do multiplexador USBDIV Uso de PLL pr escalar com valor 5 Ativao do Power-Up Timer Ativao da re-inicializao externa Uso de PLL ps escalar com valor 1 Ativao do uso do Vusb como regulador de tenso interna USB

O programa oferece cinco opes, so elas: Instrues, Ler EEPROM, Gravar na EEPROM, Mostrar a Rotina e Desconectar dispositivo. O comando Instrues fornece todas as opes que o usurio poder escolher. O comando enviado ao microcontrolador ser em hexadecimal e seu valor 42

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

00. Nessa opo o microcontrolador enviar uma string armazenada na sua memria com todas as opes possveis que podem ser enviadas. Este comando usa a funo usb_cdc_putString() presente na biblioteca para enviar a mensagem com as instrues conforme cdigo em C abaixo:
char mensagem1[] = {" \nSistema de Comunicao USB com Microcontrolador TCC - 2009.1 - DSC / POLI / UPE Aluno: Leonardo Santos Orientador: Sergio Campello

Opes: 00 -> Instrues 01 -> Ler EEPROM 02 -> Gravar na EEPROM 03 -> Mostrar Rotina 04 -> Desconectar\n"};

// Envia uma string para o computador usb_cdc_putString(mensagem1);

O comando Ler EEPROM mostra o contedo armazenado na memria do microcontrolador da posio 00 at a 2F. Os valores so organizados por linha e coluna. Onde na primeira linha so mostrados os valores da memria das posies 00 at a 0F, na prxima linha sero mostrados os valores das posies 10 at 1F, e assim sucessivamente at a ultima posio. Esses valores foram organizados dessa forma para facilitar a visualizao das alteraes dos valores com o comando Gravar na EEPROM. O comando representado no microcontrolador como o valor em hexadecimal 01. A chamada para a execuo deste comando usa a funo usb_cdc_putEEPROM() desenvolvida na biblioteca de funes para transmitir dados da memria do microcontrolador para o computador. O comando Gravar na EEPROM usado para alterao da memria de dados. Com ele o usurio pode transmitir valores para serem armazenados na memria do microcontrolador. Ao executar esse comando o programa solicitar uma posio de memria e em seguida um valor em hexadecimal. Cada posio de memria pode armazenar dois bytes, caso seja fornecido um valor que no possa 43

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

ser gravado nesta quantidade de bytes, o valor ser truncado. A sua representao no microcontrolador o hexadecimal 02. Os valores so recebidos com o uso da funo gethex_usb() descrita na biblioteca. O comando Mostrar Rotina informa o nmero do Contador de Rotinas. O Contador de Rotinas uma varivel inteira longa que incrementada enquanto o dispositivo est em funcionamento. Ela foi criada com a inteno de simular um trabalho qualquer que o microcontrolador ficar executando durante seu

funcionamento. Este contador pode ser substitudo por qualquer rotina continua em trabalhos futuros. A representao desse comando o hexadecimal 03 no microcontrolador. O comando Desconectar prepara o dispositivo para ser efetivamente desconectado do computador. Ele encerra a comunicao e o funcionamento do programa principal. Ao executar este comando o dispositivo pode ser removido com segurana do computador. O valor hexadecimal que representa este comando 04 no microcontrolador. A desconexo feita pela funo usb_detach() descrita na biblioteca. Existe um fluxo no programa que mostra uma mensagem ao usurio caso ele fornea algum comando no definido. O microcontrolador informa ao usurio a mensagem Digite um valor vlido! conforme o trecho de cdigo abaixo. Este fluxo funciona como filtro para no serem inseridos valores que provoquem um funcionamento no esperado.
char mensagem6[] = {"\n\nDigite um valor vlido !\n"}; usb_cdc_putString(mensagem6);

O desenvolvimento do programa segue alguns passos. Inicialmente h uma definio das variveis de uso no programa,em seguida h a inicializao do dispositivo USB atravs da funo usb_cdc_conectar(),. Esta funo est definida na biblioteca criada neste trabalho e descrita em sees anteriores. A seguir, o programa entra em um loop onde verifica se o dispositivo USB est devidamente configurado. Ainda neste loop executado o incremento do Contador de Rotinas. H uma verificao a cada loop se existe algum dado enviado ao microcontrolador, caso isso acontea, indica que foi enviada algum comando, esto o programa recebe 44

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

esse dado e verifica que comando foi acionado e executa a devida tarefa. O comando que encerra a execuo do programa o de Desconectar.

4.4.7 Simulao
A simulao um bom tipo de anlise do funcionamento do dispositivo, pois possvel a verificao da implementao de forma virtual. O aplicativo usado foi o Proteus 7.4 com o mdulo virtual USB. O circuito dividido em seis partes, so elas: a gravao com o ICD2, o circuito selecionador de funo, o circuito oscilador, as luzes informativas, o circuito de re-inicializao e a comunicao USB. A interligao entre o computador e o gravador ICD2 feita pela comunicao USB ou por porta RS-232. A conexo entre o gravador e o circuito de gravao realizada atravs do conector RJ-12. Este circuito de gravao foi includo no sistema, no existindo assim a necessidade da retirada do microprocessador do circuito para a gravao. Esse desenvolvimento proporciona todas as caractersticas do circuito original de gravao como, por exemplo, a depurao em tempo real. A simulao de gravao com o ICD2 no possvel porque o Proteus no tem suporte j que uma comunicao entre o gravador e o sistema. Contudo foi includa no circuito de simulao para visualizao dos componentes presentes e sua interligao com o circuito completo. A falta dos conectores na documentao suporte do Proteus foi suprida com a incluso de pinos de entrada simples, que representam o conector RJ-12 usado na comunicao com o gravador ICD2. Podem-se observar todas as conexes entre este mdulo e o microcontrolador na Figura 11.

45

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

Figura 11. Circuito

de simulao no Proteus

O circuito pode ser executado operando com duas funes. A primeira como sistema de comunicao USB e a outra como circuito de gravao. O Circuito Selecionador funciona como um seletor para definir de que modo o circuito ser executado. nessa parte do circuito que controlada a alimentao, que depende do modo de operao do mesmo. Est chave tem duas posies, USB e ICD2. Podem ser observadas suas conexes na Figura 11. O circuito oscilador o responsvel por gerar o clock de entrada no circuito. O circuito usa um cristal de 20 MHz e dois capacitores cermicos de 15pF. O microcontrolador internamente configura o clock conforme descrito em sees anteriores. Este circuito est presente na simulao para verificar sua integrao com todo circuito, pois a sua simulao no possvel. A definio da freqncia informada diretamente no Proteus. As luzes informativas so para monitorao do funcionamento do circuito. Esto presentes trs luzes indicadoras dos estados do circuito, so elas: circuito em execuo, USB ativado e gravao ativada. A luz que indica quando o dispositivo est em funcionamento verifica se o sistema est em operao em algum dos dois modos. A luz de USB ativada indica quando o sistema est sendo executado como 46

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

comunicao USB. A luz de gravao ativada indica quando o circuito de gravao est sendo executado. A distino destes tipos de operao dada pela alimentao, portanto no recomendada a operao de ambos os circuitos ao mesmo tempo, sendo possvel a danificao do sistema. O circuito de re-inicializao responsvel por provocar uma re-inicializao do sistema completo por meio externo. Caso exista um mau funcionamento do circuito existe esta opo de restaurao. Existe no circuito a presena de dois capacitores no inclusos em nenhum dos mdulos definidos anteriormente. O primeiro se encontra entre uma ligao do Vdd com o Vss do circuito. Esse funciona como um filtro para a retirada dos rudos de alta freqncia da alimentao do circuito. O segundo se encontra entre uma ligao do Vusb e o Vss. Esse uma recomendao do fabricante do dispositivo para manter a estabilidade do circuito USB interno do microcontrolador.

4.4.8 Circuito Eltrico


Na simulao no possvel verificar algumas caractersticas como tenso no microcontrolador, configurao do oscilador e comunicao com tipos de comunicao no suportados. O circuito eltrico envolve todas as conexes, simuladas ou no. A estrutura da construo fsica do circuito varia conforme disponibilidade de espao, confeco de trilhas, colocao de componentes e conectores. Para a sua confeco foram seguidas todas as recomendaes do fabricante do microcontrolador em relao aos valores de componentes utilizados. Neste circuito desenvolvido no necessria alimentao via barramento, como foi especificado em sees anteriores. O desenho da placa de circuito impresso demonstrado na Figura 12.

47

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

Figura 12.

Desenho do circuito impresso

O circuito construdo pode ser visualizado na Figura 13 e na Figura 14. Seu funcionamento e instalao so detalhados nas sees posteriores.

Figura 13. Face

dos componentes do circuito construdo 48

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

Figura 14.

Face das soldas e trilhas do circuito construdo

4.4.9 Instalao e Funcionamento


A instalao do sistema dada de modo simples como costumam ser os dispositivos de comunicao USB. Aps o sistema ser totalmente construdo, isto , em circuito impresso, com os componentes e o programa gravado no microcontrolador, necessrio iniciar a instalao no computador. Quando o sistema foi conectado ao computador reconhecido como TCC LEO SANTOS SCUSB conforme Figura 15.

49

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

Figura 15. Reconhecimento

no computador do SCUSB (Sistema de Comunicao USB)

A seguir interrogado quanto ao driver de instalao. O driver um arquivo fornecido pela instalao do CCS C Compiler que se encontra na pasta de instalao \...\PICC\Drivers e so os arquivos cdc9Xpt1.inf, cdc9Xpt2.inf,

cdc_NTXP.inf e cdc_NTXPVista.inf, respectivamente para os sistemas operacionais Windowns 9xpt1, 9xpt2, NT/XP e Vista. No termino da instalao possvel fazer a comunicao USB com o sistema. Ao conectar o dispositivo e concluir a instalao adicionada uma nova porta serial ao computador. O programa utilizado o Advanced Serial Port Terminal. Neste programa possvel abrir um fluxo de comunicao. No Advanced Serial Port Terminal deve-se criar uma nova seo, escolhendo a porta, a taxa e demais configuraes. Os parmetros seguem os representados na Figura 16. A nica mudana ser a porta, pois depende da porta em que foi instalado o sistema. Nesse exemplo a porta usada foi a COM21. Configurada a conexo, deve-se abrir a porta de comunicao para iniciar o fluxo de dados conforme Figura 17. O microcontrolador no momento da configurao j est executando o Contador de Rotinas e aguarda o recebimento de algum comando.

50

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

Figura 16. Configurao

da conexo do terminal no computador

Figura 17. Abrir

porta de comunicao no programa terminal

Os comandos so os valores 00, 01, 02, 03, 04 que representam respectivamente Instrues, Ler EEPROM, Gravar na EEPROM, Mostrar Rotina, Desconectar. A resposta dos comandos Instrues, Ler EEPROM, Gravar na EEPROM, e Mostrar Rotina podem ser observados respectivamente na Figura 18, Figura 19, Figura 20 e Figura 21.

51

Captulo 4 Sistema de Comunicao USB com Microcontrolador

ESCOLA POLITCNICA DE PERNAMBUCO

Figura 18.

Resposta obtida pelo envio do comando Instrues

Figura 19.

Resposta obtida pelo envio do comando Ler EEPROM

Figura 20.

Resposta obtida pelo envio do comando Gravar na EEPROM

Figura 21. Resposta

obtida pelo envio do comando Mostrar Rotina

52

Captulo 5 Concluso e Trabalhos Futuros

ESCOLA POLITCNICA DE PERNAMBUCO

Captulo 5 Concluso e Trabalhos Futuros


Atualmente a comunicao entre computadores e sistemas que usam microcontroladores de extrema importncia para uma grande variedade de projetos. Existe em algumas aplicaes a necessidade de colher informaes, prover comunicao e enviar dados para esses sistemas. H sempre tambm uma busca por simplicidade e abstrao quando se usa comunicao nestes sistemas. O protocolo de comunicao USB traz uma boa parte destas vantagens, por isso de suma importncia o seu desenvolvimento em sistemas que necessitem comunicao com os computadores. A comunicao USB alm de ser de fcil configurao, Plug and Play e presente na maioria dos computadores atuais, tem vrias outras vantagens como a alimentao direta no circuito que usado neste sistema. Este trabalho fornece abstrao de seu funcionamento a baixo nvel tornando transparente ao desenvolvedor a comunicao USB. O desenvolvimento deste trabalho proporciona uma fcil implementao do tipo de comunicao USB em microcontroladores. Isso facilita a disseminao do uso de comunicao com esse tipo de dispositivo. Assim como proporciona maior adaptabilidade de aplicaes nesta rea j que diversos tipos de comunicao tm entrado em desuso devido s novas vantagens oferecidas com estas formas de comunicao. Este trabalho proporciona como desenvolvimentos futuros a implementao de uma interface prpria no computador para realizar a comunicao com o dispositivo que contm o microcontrolador. Bibliotecas so disponibilizadas pelos fabricantes de forma que possa ser desenvolvida uma interface de comunicao no computador mais especfica para cada aplicao. Vale salientar que este trabalho fornece privilgios a implementao deste tipo de comunicao em qualquer sistema. E que no futuro seja integrado com 53

Captulo 5 Concluso e Trabalhos Futuros

ESCOLA POLITCNICA DE PERNAMBUCO

sistemas de uso especficos. No inicio deste trabalho foi observada a aplicao deste projeto no sistema de deteco ptica de descargas parciais em cadeias de isoladores de transmisso de alta tenso [1], contudo a generalizao para alcanar varias aplicaes se tornou um ponto forte. O tipo de dispositivo USB CDC obteve um timo desempenho em relao fcil instalao e facilidade de comunicao, contudo o desenvolvimento de comunicao USB usando outros tipos de dispositivos como mass storage device pode ser tambm tratado em trabalhos futuros como forma de aprimorar ou comparar as vantagens e desvantagens desses outros tipos de comunicao em relao ao que foi desenvolvido.

54

Bibliografia

ESCOLA POLITCNICA DE PERNAMBUCO

Bibliografia
[1] S. C. Oliveira, Sistema de Deteco ptica de Descargas Parciais em Cadeias de Isoladores de Transmisso de Alta Tenso. 119 f. Tese de Doutorado, Depto. de Engenharia Eltrica da Universidade Federal de Pernambuco, Recife PE, Brasil, 2008. [2] Data Sheet do microcontrolador PIC16F87A disponvel em

http://ww1.microchip.com/downloads/en/DeviceDoc/39582b.pdf. Acessado em 08/06/2009 [3] Data Sheet do microcontrolador PIC18F4550 disponvel em

http://ww1.microchip.com/downloads/en/DeviceDoc/39632b.pdf. Acessado em 08/06/2009 [4] Microchip Technology Inc, disponvel em http://www.microchip.com. Acessado em 08/06/2009. [5] STALLINGS, William. Arquitetura e Organizao de Computadores 5a Edio. So Paulo: Prentice Hall, 2002. [6] [7] USB.Org, disponvel em http://www.usb.org/. Acessado em 08/06/2009. Ibrahim, Dagan. Advanced PIC microcontroller Projects in C: from USB to RTOS with the PIC18F series, Newnes, 2008. [8] CCS, Inc. Home, disponvel em http://www.ccsinfo.com/. Acessado em 08/06/2009. [9] Serial Port Terminal Test and debug drial port devices with advanced serial port terminal, disponvel em http://www.eltima.com/products/serial-port-terminal. Acessado em 08/06/2009.

55

Apndices

ESCOLA POLITCNICA DE PERNAMBUCO

Apndices
Arquivo usb_serial_TCC.h
// Inclue a biblioteca basica do PIC 18F4550 #include <18F4550.h> // Atribui os Bits de configurao e define o clock do nucleo do microcontrolador #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGE N,MCLR,PUT #use delay(clock=48000000) // Inclue a biblioteca de funes #include <usb_biblioteca.h> #define INSTRUCOES 00 #define LEITURA 01 #define GRAVACAO 02 #define ROTINA 03 #define DESCONECTAR 04 void main() { // Declarao de variaveis int address, value, opcao; unsigned long int cont = 0; // Inicializa, configura e enumera o dispositivo USB usb_cdc_conectar(); do { if (usb_enumerated()) // Verifica se o dispositivo est pronto 56

Apndices

ESCOLA POLITCNICA DE PERNAMBUCO

{ // Simula uma rotina de um processo qualquer usual de microcontrolador cont++; // Verifica se existe caracter para recepo if(usb_cdc_kbhit()) { // Recebe um hexadecimal opcao = gethex_usb(); // As opes so 00, 01, 02, 03 e 04 switch (opcao) { case INSTRUCOES: { char mensagem1[] = {" \nSistema de Comunicao USB com Microcontrolador TCC - 2009.1 - DSC / POLI / UPE Aluno: Leonardo Santos Orientador: Sergio Campello Opes: 00 -> Instrues 01 -> Ler EEPROM 02 -> Gravar na EEPROM 03 -> Mostrar Rotina 04 -> Desconectar\n"}; // Envia uma string para o computador usb_cdc_putString(mensagem1); break; } case LEITURA: { char mensagem2[] = {"\n\nConteudo da EEPROM:\n"}; usb_cdc_putString(mensagem2); printf(usb_cdc_putc, " | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | a | b | c | d | e | f"); 57

Apndices

ESCOLA POLITCNICA DE PERNAMBUCO

printf(usb_cdc_putc, "\n0| "); // Envia um bloco da memoria de dados do microcontrolador usb_cdc_putEEPROM (0x00, 15); printf(usb_cdc_putc, "\n1| "); usb_cdc_putEEPROM (0x10, 15); printf(usb_cdc_putc, "\n2| "); usb_cdc_putEEPROM (0x20, 15); printf(usb_cdc_putc, "\n"); break; } case GRAVACAO: { char mensagem3[] = {"\n\nGravando Valores na Memoria"}; char mensagem4[] = {"\nPosio de Memoria: "}; char mensagem5[] = {"\nNovo Valor: "}; usb_cdc_putString(mensagem3); usb_cdc_putString(mensagem4); address = gethex_usb(); usb_cdc_putString(mensagem5); value = gethex_usb(); // Grava na memoria do microcontrolador write_eeprom( address, value ); printf(usb_cdc_putc, "\n"); break; } case ROTINA: { printf(usb_cdc_putc, "\n\nRotina %lu", cont); printf(usb_cdc_putc, "\n"); break; } case DESCONECTAR: { // Desconecta o dispositivo 58

Apndices

ESCOLA POLITCNICA DE PERNAMBUCO

usb_detach(); break; } default: { char mensagem6[] = {"\n\nDigite um valor valido !\n"}; usb_cdc_putString(mensagem6); break; } } } } } while (TRUE); }

Arquivo usb_biblioteca.h
/* ************** usb_biblioteca.h ************** Esta uma biblioteca para transmisso de dados atravs do protocolo de USB de comunicao. Contm funes bsicas de transmisso e recepo de dados. implementada para simular uma PORTA COM VIRTUAL. Modelo do microprocessador: PIC 18F4550 Compilador: CCS 4.057 TCC 2009.1 - DSC / UPE Aluno: Leonardo de S Leal Santos Orientador: Sergio Campello ** Instrues ** 59

Apndices

ESCOLA POLITCNICA DE PERNAMBUCO

* Incluso de um descritor CDC diferente A incluso de descritores feita no arquivo usb_cdc.h que est localizado na pasta "\...\PICC\Drivers", a deve-se trocar o arquivo usb_desc_cdc.h pelo nome do novo descritor caso deseje troc-lo. * Criao de um novo arquivo descritor usb Caso deseje efetuar alguma modificao no descritor, o mesmo se encontra na pasta "\...\PICC\Drivers" com o nome usb_desc_cdc.h. Faa as modificaes e salve na mesma pasta onde se encontra o projeto, no esquecendo de adicion-lo nos arquivos de configurao. */ #include <usb_cdc.h> /* ** usb_cdc_putString ** Envia uma string char *p -> ponteiro que represente a string obs: A string deve estar declarada para ser enviada, por exemplo: char temp[] = {"valor da string"}; usb_cdc_putString(temp); H uma forma alternativa para o envio de string e com ela no necessrio a declarao da string anteriormente. printf(usb_cdc_putc, "valor da string"); */ void usb_cdc_putString(char *p) { char i = 0; while (*(p+i) != '\0') { usb_cdc_putc(*(p+i)); 60

Apndices

ESCOLA POLITCNICA DE PERNAMBUCO

i ++; } } /* ** usb_cdc_putEEPROM ** Envia um bloco da memria de dados int posicaoI -> Posio inicial do bloco de memria int tamanho -> Comprimento do bloco de memria Obs: Pode enviar os valores em hex ou em caracteres ASCII (cdigo comentado)*/ void usb_cdc_putEEPROM (int posicaoI, int tamanho) { int i; for(i=0; i<=tamanho; i++) { printf(usb_cdc_putc, "%2x ", read_eeprom(i + posicaoI) ); //usb_cdc_putc(read_eeprom(i + posicaoI)); } } /* ** usb_cdc_putFLASH ** Envia um bloco da memria de programa int posicaoI -> Posio inicial do bloco de memria int tamanho -> Comprimento do bloco de memria Obs: Pode enviar os valores em hex ou em caracteres ASCII (cdigo comentado)*/ void usb_cdc_putFLASH (char posicaoI, char tamanho) { char i; int16 dado; for(i=0; i<=tamanho; i++) { dado = read_program_eeprom(i + posicaoI); 61

Apndices

ESCOLA POLITCNICA DE PERNAMBUCO

usb_cdc_putc(dado); } } /* ** usb_cdc_conectar ** Inicializa, configura e enumera o dispositivo USB Obs: Deve ser usado quando for conectado o dispositivo USB no computador para efetuar a transmisso void usb_cdc_conectar() { // usb_cdc_init(); usb_init_cs();// no trava na configurao e necessrio chamar usb_task usb_init(); usb_task(); while(!usb_cdc_connected()) {} } /* ***** Funes nativas ***** */

** usb_enumerated() ** Verifica se o dispositivo est pronto para a comunicao Retorna True ou False Obs: Maiores informaes sobre estas funes e mais funes esto no arquivo usb.c em \...\PICC\Drivers

** usb_detach() ** Desconecta o dispositivo, usado antes de sua remoo fsica do computador ** usb_attach() ** Re-conecta o dispositivo, usado para re-conect-lo quando o dispositivo foi desconectado mas ainda no removido literalmente 62

Apndices

ESCOLA POLITCNICA DE PERNAMBUCO

Obs: Maiores informaes sobre estas funes e mais funes esto no arquivo pic18_usb.h em \...\PICC\Drivers

** usb_cdc_putc(char c) ** Envia um caracter para a transmisso ** usb_cdc_kbhit() ** Verifica se existe algum dado no buffer de recepo Retorna True ou False ** usb_cdc_getc() ** Recebe um caracter do buffer de recepo, deve-se usar o usb_cdc_kbhit() anteriormente para verificar se existe dados ** get_float_usb() ** Recebe um numero ponto flutuante ** get_long_usb() ** Recebe um numero longo ** get_int_usb() ** Recebe um inteiro ** get_string_usb(char *s, int max) ** Recebe uma String ** gethex_usb() ** Recebe um Hexadecimal obs: Maiores informaes sobre estas funes e mais funes esto no arquivo usb_cdc.h em \...\PICC\Drivers */

63

Apndices

ESCOLA POLITCNICA DE PERNAMBUCO

Arquivo usb_desc_TCC.h
#IFNDEF __USB_DESCRIPTORS__ #DEFINE __USB_DESCRIPTORS__ #include <usb.h> #DEFINE USB_TOTAL_CONFIG_LEN //config+interface+class+endpoint+endpoint (2 endpoints) const char USB_CONFIG_DESC[] = { //Descritor de configurao 1 USB_DESC_CONFIG_LEN, //length of descriptor size USB_DESC_CONFIG_TYPE, (CONFIGURATION 0x02) ==1 //constant ==0 CONFIGURATION 67

USB_TOTAL_CONFIG_LEN,0, //size of all data returned for this config ==2,3 2, //number of interfaces this device supports 0x01, //identifier for this configuration. configurations) ==5 ==4 (IF we had more than one ==6

0x00, //index of string descriptor for this configuration

0xC0, // significa = (11000000) -> bit 6=1 if self powered, bit 5=1 if supports remote wakeup (we don't), bits 0-4 unused and bit7=1 ==7 0x32, //maximum bus power required (maximum milliamperes/2) 100mA) ==8 //Descritor de interface 0 (comm class interface) USB_DESC_INTERFACE_LEN, //length of descriptor =10 0x00, //number defining this interface (IF we had more than one interface) ==11 0x00, //alternate setting ==12 1, //number of endpoints ==13 64 =9 (0x32 =

USB_DESC_INTERFACE_TYPE, //constant INTERFACE (INTERFACE 0x04)

Apndices

ESCOLA POLITCNICA DE PERNAMBUCO

0x02, //class code, 02 = Comm Interface Class 0x02, //subclass code, 2 = Abstract 0x01, //protocol code, 1 = v.25ter ==15 ==16

==14

0x00, //index of string descriptor for interface //class descriptor [functional header] 5, //length of descriptor ==18 ==19 0x24, //dscriptor type (0x24 == ) 0x10,0x01, //

==17

0, //sub type (0=functional header) ==20 ==21,22 //cdc version

//class descriptor [acm header] 4, //length of descriptor ==23 ==24 0x24, //dscriptor type (0x24 == ) 2, //sub type (2=ACM) ==25 2, //capabilities ==26 //we support Set_Line_Coding, Set_Control_Line_State, Get_Line_Coding, and the notification Serial_State. //class descriptor [union header] 5, //length of descriptor 6, //sub type (6=union) ==27 ==28 ==29 0x24, //dscriptor type (0x24 == )

0, //master intf ==30 //The interface number of the Communication or Dat a Cl ass interface, designated as the masteror controlling interface for the union. 1, //save intf0 in the union. * ==31 //Interface number of first slave or associated interface

//class descriptor [call mgmt header] 5, //length of descriptor ==32 ==33 0x24, //dscriptor type (0x24 == ) 1, //sub type (1=call mgmt) ==34 0, //capabilities 1, //data interface //endpoint descriptor 65 ==35 //device does not handle call management itself ==36 //interface number of data class interface

Apndices

ESCOLA POLITCNICA DE PERNAMBUCO

USB_DESC_ENDPOINT_LEN, //length of descriptor ==38

==37

USB_DESC_ENDPOINT_TYPE, //constant ENDPOINT (ENDPOINT 0x05) USB_CDC_COMM_IN_ENDPOINT | 0x80, //endpoint number and direction 0x03, //transfer type supported (0x03 is interrupt) USB_CDC_COMM_IN_SIZE,0x00, ==41,42 //maximum ==40 packet size supported

250, //polling interval, in ms. (cant be smaller than 10) //Descritor de interface 1 (data class interface) USB_DESC_INTERFACE_LEN, //length of descriptor =45

==43

=44

USB_DESC_INTERFACE_TYPE, //constant INTERFACE (INTERFACE 0x04) 0x01, //number defining this interface (IF we had more than one interface) ==46 0x00, //alternate setting ==47 ==49 2, //number of endpoints ==48 0x0A, //class code, 0A = Data Interface Class 0x00, //subclass code 0x00, //protocol code ==50 ==51 ==52

0x00, //index of string descriptor for interface //endpoint descriptor

USB_DESC_ENDPOINT_LEN, //length of descriptor ==61

==60

USB_DESC_ENDPOINT_TYPE, //constant ENDPOINT (ENDPOINT 0x05) USB_CDC_DATA_OUT_ENDPOINT, //endpoint number and direction (0x02 = EP2 OUT) ==62 0x02, //transfer type supported (0x02 is bulk) ==63 // make8(USB_CDC_DATA_OUT_SIZE,0),make8(USB_CDC_DATA_OUT_SIZE,1), //maximum packet size supported ==64, 65 USB_CDC_DATA_OUT_SIZE & 0xFF, (USB_CDC_DATA_OUT_SIZE >> 8) & 0xFF, //maximum packet size supported ==64, 65 250, //polling interval, in ms. (cant be smaller than 10) //endpoint descriptor 66 ==66

Apndices

ESCOLA POLITCNICA DE PERNAMBUCO

USB_DESC_ENDPOINT_LEN, //length of descriptor ==54

==53

USB_DESC_ENDPOINT_TYPE, //constant ENDPOINT (ENDPOINT 0x05) USB_CDC_DATA_IN_ENDPOINT | 0x80, //endpoint number and direction (0x82 = EP2 IN) ==55 0x02, //transfer type supported (0x02 is bulk) ==56 // make8(USB_CDC_DATA_IN_SIZE,0),make8(USB_CDC_DATA_IN_SIZE,1), //maximum packet size supported ==57, 58 USB_CDC_DATA_IN_SIZE & 0xFF, (USB_CDC_DATA_IN_SIZE >> 8) & 0xFF, //maximum packet size supported ==64, 65 250, //polling interval, in ms. (cant be smaller than 10) }; #define USB_MAX_NUM_INTERFACES 2 const char USB_NUM_INTERFACES[USB_NUM_CONFIGURATIONS]={2}; const int16 USB_CLASS_DESCRIPTORS[USB_NUM_CONFIGURATIONS][USB_MAX_NUM_I NTERFACES][4]= { //config 1 //interface 0 //class 1-4 18,23,27,32, //interface 1 //no classes for this interface 0xFFFF,0xFFFF,0xFFFF,0xFFFF }; #if (sizeof(USB_CONFIG_DESC) != USB_TOTAL_CONFIG_LEN) #error USB_TOTAL_CONFIG_LEN not defined correctly #endif // Descritor de Dispositivo const char USB_DEVICE_DESC[USB_DESC_DEVICE_LEN] ={ USB_DESC_DEVICE_LEN, //the length of this report ==0 67 ==59

Apndices

ESCOLA POLITCNICA DE PERNAMBUCO

0x01, //the constant DEVICE (DEVICE 0x01) ==1 0x10,0x01, //usb version in bcd ==2,3 0x02, //class code. 0x02=Communication Device Class ==4 0x00, //subclass code ==5 0x00, //protocol code ==6 USB_MAX_EP0_PACKET_LENGTH, //max packet size for endpoint 0. (SLOW SPEED SPECIFIES 8) ==7 0x61,0x04, //vendor id (0x04D8 is Microchip, or is it 0x0461 ??) ==8,9 0x33,0x00, //product id ==10,11 0x00,0x01, //device release number ==12,13 0x01, //index of string description of manufacturer. therefore we point to string_1 array (see below) ==14 0x02, //index of string descriptor of the product ==15 0x00, //index of string descriptor of serial number ==16 USB_NUM_CONFIGURATIONS //number of possible configurations ==17 }; //the offset of the starting location of each string. offset[0] is the start of string 0, offset[1] is the start of string 1, etc. char USB_STRING_DESC_OFFSET[]={0,4,12}; char const USB_STRING_DESC[]={ //string 0 4, //length of string index USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING) 0x09,0x04, //Microsoft Defined for US-English //string 1 8, //length of string index USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING) 'T',0, 'C',0, 'C',0, //string 2 50, //length of string index USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING) 68

Apndices

ESCOLA POLITCNICA DE PERNAMBUCO

'T',0, 'C',0, 'C',0, ' ',0, '-',0, ' ',0, 'L',0, 'E',0, 'O',0, ' ',0, 'S',0, 'A',0, 'N',0, 'T',0, 'O',0, 'S',0, ' ',0, '-',0, ' ',0, 'S',0, 'C',0, 'U',0, 'S',0, 'B',0 }; #ENDIF

69

Vous aimerez peut-être aussi