SISTEMA DE COMUNICAÇÃO USB COM MICROCONTROLADOR
|
|
|
- Sabrina Teixeira Lacerda
- 10 Há anos
- Visualizações:
Transcrição
1 POLITÉCNICA DE SISTEMA DE COMUNICAÇÃO USB COM MICROCONTROLADOR Trabalho de Conclusão de Curso Engenharia da Computação Leonardo de Sá Leal Santos Orientador: Prof. Sérgio Campello Oliveira
2 LEONARDO DE SÁ LEAL SANTOS SISTEMA DE COMUNICAÇÃO USB COM MICROCONTROLADOR Monografia apresentada como requisito parcial para obtenção do diploma de Bacharel em Engenharia da Computação pela Escola Politécnica de Pernambuco Universidade de Pernambuco. Recife, Junho de 2009.
3 Dedico este trabalho a minha família, em especial a meus pais que em todo tempo me apoiaram e me incentivaram para a buscas desta conquista.
4 Agradecimentos Agradeço primeiramente a Deus, pois ele é o centro da minha vida e tudo que sou, isto é, minha educação, meu entendimento, meu modo de pensar, minha vida. Tudo devo a Ele. Nada faria sem o apoio do meu Deus todo poderoso. Agradeço com grande orgulho a minha família, 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, Fátima e Leal, pois eles são 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 não conseguia mais caminhar. Queria agradecer os momentos de compreensão e de abdicação, pois eles são expressos hoje como momentos de sabedoria. Agradeço também a sua família, que por laços de sangue é sua, mas na pratica é minha família a qual sou de mesmo modo grato. Presto meus agradecimentos a meus amigos de turma, companheiros em momentos de desespero e trabalho árduo. Também a meus professores, que promoveram a orientação necessária para concluir esta vitoria hoje. Estes não só transmitiram o conhecimento, mas também lições para a vida. Agradeço em especial a meu orientador, Sergio Campello pela paciência e companheirismo, não só nestes momentos finais, mas também em todos esses 5 anos. Um forte abraço e um grande obrigado!!
5 Resumo A cada dia, com o crescimento de tecnologia voltada a sistemas embarcados, o uso microcontroladores tem se tornado mais freqüente. Este tipo de componente apresenta inúmeras vantagens como baixo consumo de energia, programação via linguagem de alto e baixo nível, entre outras. Há sempre uma necessidade de comunicação entre sistemas embarcados e computadores, sejam para diagnostico, monitoramento ou transferência de dados armazenados. Assim é necessário sempre um modo de comunicação simples e disponível em vários tipos de equipamento. É proposto por este trabalho o desenvolvimento de um sistema de comunicação USB com microcontroladores. Esse sistema é projetado para fornecer comunicação em projetos desenvolvidos, em desenvolvimento ou em planejamento, pois pode ser adicionado como um módulo a outros sistemas. Já estão presentes no sistema todas as configurações necessárias para fornecer comunicação USB. É proposto também por este trabalho o desenvolvimento de uma biblioteca de funções para comunicação USB que proporciona facilidade de configuração, abstração do funcionamento em baixo nível e instruções de uso no desenvolvimento de um sistema personalizado ou de outras funcionalidades caso seja necessário. O desenvolvimento é feito em linguagem de programação de alto nível. i
6 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
7 Sumário Capítulo Introdução...8 Capítulo Microcontroladores Principais Componentes Memória ALU Temporizadores e contadores Interfaces de entrada e saída Interrupções...12 Capítulo Universal Serial Bus (USB) Conectores Identificação do Dispositivo Tipos de Fluxo de Dados Transferência de Controle Transferência de Massa Transferência de Interrupção Transferência Isossíncrona Descritores Classes de dispositivos Human Interface Device (HID) Mass Storage Device (MSC) Communications Device Class (CDC)...20 iii
8 3.5.4 Outros...20 Capítulo Sistema de Comunicação USB com Microcontrolador Ferramentas usadas Linguagem C para microcontroladores Ferramenta Computacional de Simulação Envio e Recepção de Dados no Computador Microcontrolador PIC 18F Biblioteca de funções Comunicação USB Descritores USB Bits de configuração Configuração de clock Alimentação do Circuito Circuito de Gravação Programa Principal Simulação Circuito Elétrico Instalação e Funcionamento...49 Capítulo Conclusão e Trabalhos Futuros...53 Bibliografia...55 Apêndices...56 Arquivo usb_serial_tcc.h...56 Arquivo usb_biblioteca.h...59 Arquivo usb_desc_tcc.h...64 iv
9 Índice de Figuras Figura 1. Comparativo entre as formas de comunicação em relação à velocidade Figura 2. Conectores USB...14 Figura 3. Configuração de hardware Full Speed Device...15 Figura 4. Configuração de hardware Low Speed Device...16 Figura 5. Tipos de fluxos de dados da comunicação USB...18 Figura 6. Hierarquia de descritores USB...19 Figura 7. Distribuições e respectivas famílias do compilador CCS...24 Figura 8. Diagrama do clock para o oscilador primário, adaptada e extraída de Figura 9. Esquema de alimentação do circuito...39 Figura 10. Gravador e esquema de gravação ICD Figura 11. Circuito de simulação no Proteus...46 Figura 12. Desenho do circuito impresso...48 Figura 13. Face dos componentes do circuito construído...48 Figura 14. Face das soldas e trilhas do circuito construído...49 Figura 15. Reconhecimento no computador do SCUSB (Sistema de Comunicação USB)...50 Figura 16. Configuração da conexão do terminal no computador...51 Figura 17. Abrir porta de comunicação no programa terminal...51 Figura 18. Resposta obtida pelo envio do comando Instruções...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 v
10 Índice de Tabelas Tabela 1. Pinagem dos conectores USB Tabela 2. Tipos de dispositivos...21 Tabela 3. Descritor de dispositivo...29 Tabela 4. Descritor de configuração...30 Tabela 5. Descritor de interface de controle...30 Tabela 6. Descritor da interface de transmissão de dados do tipo CDC...31 Tabela 7. Descritor de endpoint Tabela 8. Descritor de endpoint Tabela 9. Descritor de endpoint Tabela 10. Configuração da freqüência de clock...37 Tabela 11. Diretivas de compilação...40 Tabela 12. Bits de configuração do programa principal...42 vi
11 Tabela de Símbolos 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
12 Capítulo 1 Introdução Capítulo 1 Introdução Há uma tendência nos dias atuais para a utilização da comunicação USB devido a sua gama de vantagens em relação a outros tipos de comunicação, como por exemplo, possuir configuração fácil por parte do usuário, ter um baixo custo de desenvolvimento, ter disponível vasta documentação e suporte, entre outras. Neste trabalho foram observadas essas vantagens tornando a comunicação USB em microcontroladores como alvo principal. A comunicação USB proporciona uma conexão padrão para diversos tipos de dispositivos tornando muito fácil a instalação deste projeto em qualquer computador. Esse tipo de comunicação também proporciona a rápida utilização após a instalação, característica chamada de plug and play. O foco inicial era obter um melhoramento do Sistema de Detecção Óptica de Descargas Parciais em Cadeias de Isoladores em Linhas de Transmissão de Alta Tensão [1], incluindo a transmissão USB para comunicação 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 funções definidas anteriormente, contudo a ampliação deste trabalho para uso em diversos sistemas se tornou em foco principal, tornando-o assim mais abrangente. Neste trabalho foi proposto esse tipo de comunicação pela razão de ampla compatibilidade com diversas plataformas e sistemas operacionais. O Windows, por exemplo, o suporta desde a versão 98. Sistemas operacionais Linux e Mac também são compatíveis. Atualmente, é possível conectar dispositivos USB em vários outros aparelhos eletrônicos. Além de que os dispositivos USB podem ser conectados e desconectados a qualquer momento. Em um computador, por exemplo, não é necessário reiniciá-lo ou desligá-lo para conectar ou desconectar. A interface de comunicação USB tem a característica de fornecer tensão para alimentação elétrica 8
13 Capítulo 1 Introdução dos dispositivos conectados através dela. Por exemplo, um celular conectado em um computador através de conexão USB não necessita de nenhuma alimentação externa, no entanto é possível o carregamento de sua bateria. O sistema desenvolvido neste trabalho usa a alimentação que é fornecida pela conexão USB. A manipulação dos dispositivos com comunicação USB é intuitiva, rápida e de simples configuração para o usuário, contudo o seu desenvolvimento necessita de vários módulos de configuração, esses descritos neste trabalho em detalhes. Com o uso de microcontroladores esse tipo de comunicação necessita também de descritores (trazem informações sobre o dispositivo), biblioteca de funções, entre outros. Uma nova biblioteca foi desenvolvida, também descrita neste trabalho, para tornar mais simples a implementação de futuros projetos, seja nesse sistema, seja em qualquer outro sistema que use microcontroladores da Microchip [4] e programação em linguagem C. A carência de portas de comunicação paralela em novos dispositivos provocou o desincentivo ao desenvolvimento desse tipo de comunicação nos sistemas embarcados em geral. Esse é outro motivo para o desenvolvimento deste trabalho com comunicação USB para microcontroladores. 9
14 Capítulo 2 Microcontroladores Capítulo 2 Microcontroladores Microcontrolador é um circuito integrado composto por um microprocessador e dispositivos periféricos essenciais para o seu funcionamento como: memória de programa e de dados; e também periféricos acessórios como: interfaces de entrada e saída de dados. Os microcontroladores também são equipados com diversos circuitos eletrônicos tais como: conversor analógico digital, temporizadores, comparadores, interfaces de comunicação, geradores de pulsos, entre outros. São muito populares devido ao seu baixo custo. Isso vem tornando os microcontroladores como soluções de viabilidade de vários projetos que tem como prioridade o baixo consumo de energia. Por serem programáveis podem ser utilizados nas mais diversas aplicações em sistemas embarcados, como celulares, eletrodomésticos, equipamentos de automação industrial, relógios, alarmes, brinquedos e outros, pois podem ser desenvolvidos para aplicações especificas. Uma grande parte de componentes eletrônicos hoje é composta por microcontroladores. A capacidade de processamento e de armazenamento varia entre os microcontroladores definindo desta forma famílias de processadores com funções semelhantes. Existem famílias que são de linhas compactas, isto é, possuem poucas funções, ocupam menos espaço, consomem menos energia. Esses são usados para executar operações mais simples que não necessitem de muitos recursos. Outros são compostos por maior capacidade de armazenamento de dados, palavras de bits maiores, diversas funcionalidades e podem ser usados para a execução de atividades mais complexas, e em algumas ocasiões substituindo computadores. Além de terem baixo custo como vantagem ainda consomem pouca energia, são portáteis, eliminam a necessidade de muitos componentes externos, podem ser reconfigurados com facilidade e necessitam de pouco tempo para o desenvolvimento. 10
15 Capítulo 2 Microcontroladores 2.1 Principais Componentes A maior parte dos componentes encontrados nos microcontroladores está citada abaixo, sendo estes os principais: Memória A memória é um componente essencial em um microcontrolador e é dividida em dois tipos: memória de programa (Flash) e memória de dados (RAM Random Access Memory e EEPROM - Electrically-Erasable Programmable Read-Only Memory). A memória de programa é onde estão armazenadas as tarefas que o microcontrolador deve executar. Nessa os programas podem modificar configurações, manipular os dispositivos, efetuar comunicação de entrada e saída, executar instruções aritméticas, entre outros. A memória de dados é usada para armazenar resultados e dados que serão usados pelo microcontrolador. Ambas as memórias tem tamanho bem limitado se comparado com outros dispositivos ALU A ALU (Arithmetic Logic Unit) é um modulo do microcontrolador que trabalha com operações lógicas de comparação como maior, menor, igual; operações booleanas como and, or, xor; operações aritméticas como adição, subtração, incrementação, multiplicação e divisão. É considerada a central de processamento Temporizadores e contadores São usados para executar rotinas que precisem de noções de tempo ou contadores temporais. Podem gerar pulsos, rotinas em períodos específicos, entre outros. Seus parâmetros são alteráveis, tornando o seu uso programável para uso especifico ou geral Interfaces de entrada e saída Este tipo de componente é responsável por prover formas de comunicação do microcontrolador com dispositivos externos. É o meio usado para a troca de dados que podem ser transmissão serial e paralela em vários protocolos como RS232 e 11
16 Capítulo 2 Microcontroladores USB por exemplo. Podem receber informações de mouses, teclados, sensores e enviar informações para display, atuadores, entre outros Interrupções Este é o componente que controla os pedidos de interrupção. Vários são os dispositivos que estão inclusos dentro de um microcontrolador e a sua maioria dispara pedidos de interrupção o qual pode ser usado para a execução de rotinas especificas. 12
17 Capítulo 3 Universal Serial Bus (USB) Capítulo 3 Universal Serial Bus (USB) O protocolo de comunicação USB foi desenvolvido por um conjunto de empresas que observaram a necessidade de obter uma forma de comunicação única [5]. A diversidade de protocolos e conectores dificultava a comunicação de produtos com os computadores. O protocolo USB foi concebido com a finalidade de poder ser implementado em qualquer dispositivo, possuir configuração fácil por parte do usuário, ter um baixo custo de desenvolvimento, ser Plug and Play e ter disponível vasta documentação e suporte. A velocidade da transmissão de dados também foi algo em foco no desenvolvimento desse padrão. Varias versões foram desenvolvidas com mudança nas velocidades implementadas. Sua taxa de transmissão hoje está acima de muitas formas de comunicação. A versão 1.1 tem como fator negativo a baixa velocidade na transmissão de dados (1,5 a 12 Mbps). Esse valor é considerado alto em relação as portas seriais, mas muito deficiente em relação a outros tipos de barramentos como o SCSI (80 a 160 Mbps) e o Firewire (400 Mbps). O padrão USB 2.0 tem a velocidade de 480 Mbps. Essa supera a velocidade das primeiras implementações do Firewire, tornando a USB também uma opção viável. Pode-se observar na Figura 1 um comparativo entre as formas de comunicação em relação à velocidade de transmissão. 13
18 Capítulo 3 Universal Serial Bus (USB) Figura 1. Comparativo entre as formas de comunicação em relação à velocidade. 3.1 Conectores Existem vários tipos de conectores, contudo todos seguem o mesmo padrão de fabricação. A Figura 2 mostra a diversidade dos conectores e as diferenças físicas entre eles. Os diversos tipos têm a função de evitar conexões perigosas, isto é, que possam danificar algum dispositivo, como por exemplo, encadeamentos com dispositivos não permitidos ou concatenação de cabos. Os conectores mini foram criados para dispositivos menores como telefones celulares, PDAs, maquinas fotográficas, etc. Figura 2. Conectores USB. 14
19 Capítulo 3 Universal Serial Bus (USB) Cada conector possui quatro contatos funcionais. Dois para alimentação e dois para dados diferenciais e seguem as conexões indicadas na Tabela 1. Tabela 1. Pinagem dos conectores USB. Contato Sinal Cor 1 Vcc (5V) Vermelho 2 D- Branco 3 D+ Verde 4 Terra Preto 3.2 Identificação do Dispositivo As transferências de dados podem ser síncronas, em alta velocidade, ou assíncronas, com padrões de velocidade menores. A identificação desses dispositivos é feita por meio de hardware. Quando um dispositivo é conectado ele é questionado quanto a sua velocidade de operação e quanto ao driver a ser carregado para uma configuração adequada. O dispositivo USB indica a sua velocidade ao host colocando a linha D+ ou a linha D- no nível lógico 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 nível alto, o host detecta a presença do dispositivo conectado a sua porta. Figura 3. Configuração de hardware Full Speed Device 15
20 Capítulo 3 Universal Serial Bus (USB) Já os dispositivos LS-USB (Low Speed), que transmitem com taxa de 1,5 Mbps, têm 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. Configuração de hardware Low Speed Device 3.3 Tipos de Fluxo de Dados Os dispositivos USB são usados para diversas aplicações. Ele pode ser usado conforme a demanda de uma aplicação e configurado para uso especifico. Existem quatro tipos de fluxos de dados que podem ser transferidos por um dispositivo USB são eles: controle, massa, interrupção, isossíncrona [6] Transferência de Controle Usada para o reconhecimento e configuração do dispositivo, acontece à troca de dados de informações sobre o dispositivo disponibilizando os descritores e parâmetros de configuração. Nesse tipo de transmissão há um robusto controle de erros, pois a troca de dados deve ser precisa Transferência de Massa É o tipo de transferência que recebe e envia grande quantidade de dados, podendo existir simultaneamente o envio e o recebimento. Geralmente permanecem com uma conexão por muito tempo e variam a velocidade de transmissão de acordo com a carga de congestionamento do transmissor e do receptor. Geralmente usada 16
21 Capítulo 3 Universal Serial Bus (USB) para a transmissão de arquivos, pois provê forte controle de erros, assim como a transferência de controle. Os dispositivos de armazenamento como pen drivers, cartões de memória, impressoras, scanners entre outros usam este tipo de transferência Transferência de Interrupção Usada para enviar pequena quantidade de dados. Geralmente são caracteres ou coordenadas de dispositivos de interface humana como mouses, teclados, controladores de jogos e outros. Os dados são gerados a partir de uma detecção de mudança no estado do dispositivo que é chamada de evento. Como por exemplo, o pressionar de um botão em um controlador de jogo ou movimentar o mouse Transferência Isossíncrona Transferência isossíncronos são trocas de dados contínuas, geralmente em tempo real. Este tipo de transferência 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 período. Não há uma preocupação com a perda de dados, mas sim com a taxa de transmissão. Um exemplo de uso deste tipo de transferência é o uso de dispositivos de comunicação de áudio em tempo real ou de telefonia. Devem seguir uma taxa específica; caso exista alguma perda de dados no meio da transmissão não há sentido a retransmissão desses dados, pois não é mais interessante. Não há uma rigidez quanto à correção de erros, contudo há uma preferência quanto à taxa de transmissão. Geralmente neste tipo de transmissão o dispositivo faz uma reserva de memória para o recebimento dos dados no inicio da transmissão. Na Figura 5 podemos observar como são as características dos quatro tipos de comunicação. 17
22 Capítulo 3 Universal Serial Bus (USB) Figura 5. Tipos de fluxos de dados da comunicação USB 3.4 Descritores Todos os dispositivos USB têm uma hierarquia de descritores que informam ao host o que compõe o dispositivo e suas características de funcionamento, como: número de série do produto, identificação do fabricante, tipo do dispositivo (impressora, scanner, modem, mouse, etc.), número de configurações, número de endpoint (local físico onde será armazenado o fluxo de dados), tipo de transferência, tipo de interface, entre outros. É possível visualizar a hierarquia dos descritores analisando a Figura 6. 18
23 Capítulo 3 Universal Serial Bus (USB) Figura 6. Hierarquia de descritores USB O primeiro nível 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 configuração. Nele é informado se o dispositivo tem alimentação própria ou não, número de interfaces, entre outros. Existe, seguindo a hierarquia, o descritor de interface que informa os parâmetros que identificam a relação entre o dispositivo e o endpoint. O descritor de endpoint tem por função informar o host sobre uma via de comunicação específica, visto que podemos configurar o dispositivo para possuir mais de um via [6] [7]. 3.5 Classes de dispositivos Human Interface Device (HID) Os dispositivos que fazem parte desta classe USB são dispositivos que geralmente ajudam os operadores a se comunicar de maneira fácil com os computadores. Sua instalação é simples, pois já estão previamente definidos os protocolos de comunicação para estes dispositivos. São dispositivos HID os mouses, teclados, controladores de jogos, entre outros. 19
24 Capítulo 3 Universal Serial Bus (USB) Geralmente a implementação destes dispositivos não necessita de muito trabalho, pois os protocolos de comunicação já são disponíveis prontos e já estão implementados nos sistemas operacionais Mass Storage Device (MSC) Os dispositivos que se enquadram nesta classe de comunicação são chamados dispositivos de armazenamento de grande quantidade de dados. Esses dispositivos são normalmente equipamentos que trabalham com transferência de um grande volume de dados, normalmente transferência de arquivos. São dispositivos que se identificam com essa classe os discos rígidos magnéticos externos, drives ópticos externos, incluindo os leitores e gravadores de CD e DVD, dispositivos portáteis de memória flash, câmeras digitais, entre outros Communications Device Class (CDC) Os dispositivos do tipo de classe definido como CDC implementam um mecanismo de comunicação de propósito geral que pode ser usado para a comunicação entre a maioria dos dispositivos. Normalmente os dispositivos classificados como CDC são modems, dispositivos de rede, comunicação sem fio, telefonia. Além disso, estes dispositivos suportam implementação semelhante a uma placa de rede, fornecendo uma interface de transmissão de quadros Ethernet ou ATM para alguns suportes físicos Outros Não 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
25 Capítulo 3 Universal Serial Bus (USB) Tabela 2. Tipos de dispositivos Código Classe de dispositivos 00h Reservado 01h Interface de áudio 02h Comunicação e controle CDC 03h Interface HID (Human Interface Device) 05h Interface física 06h Interface virtual 07h Interface de impressão 08h Interface Mass Storage 09h Dispositivo Hub 0Ah Interface CDC de dados 0Bh Interface para cartão inteligente 0Dh Interface de conteúdo de segurança 0Eh Interface de vídeo 0Fh Interface para dispositivos de cuidado com saúde pessoal DCh Dispositivo de diagnostico E0h Interface controladora de redes em fio EFh Híbridos FEh Interface de aplicações especifica FFh Dispositivo comercial especifico 21
26 Capítulo 4 Sistema de Comunicação USB com Microcontrolador Capítulo 4 Sistema de Comunicação 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 apresentação detalhada sobre a biblioteca de funções e a implementação final e funcionamento do sistema. 4.1 Ferramentas usadas Linguagem C para microcontroladores A linguagem C é uma linguagem de alto nível e estruturada. Sua sintaxe é simples e portátil, isto é, pode ser usado o mesmo programa em várias plataformas. C é muito utilizada para a programação de microcontroladores e também tem o poder de interagir com a plataforma em baixo nível podendo incluir códigos em assembly em sua implementação. A portabilidade é uma vantagem para o desenvolvimento de programas em C, os quais uma vez construídos podem ser usados em várias plataformas e dificilmente haverá modificações. 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 migração destas rotinas para diferentes plataformas necessitou de poucas modificações no programa, as modificações feitas são relacionadas a funcionalidades não suportadas entre uma família e outra, ou mudanças na especificação de cada um dos microcontroladores, como o cálculo de tempo dos temporizadores. As funções desenvolvidas em C são de fácil implementação, pois são usadas, geralmente, um conjunto de rotinas simples para a execução de rotinas complexas. 22
27 Capítulo 4 Sistema de Comunicação USB com Microcontrolador Também é possível verificar a vasta quantidade de documentação a respeito da programação nesta linguagem. Com C é possível o desenvolvimento de biblioteca de propósito específico, a qual foi desenvolvida neste projeto e será descrita em seções posteriores. A exploração de rotinas de baixo nível é possível em C, pois existe suporte a programação em assembly dentro de seus programas. Deste modo pode-se desfrutar de todas as vantagens da implementação em alto nível e também fazer uso das vantagens da implementação em baixo nível explorando rotinas que podem não ser otimizadas através da programação em alto nível. No caso de projetos com microcontroladores é disponibilizado geralmente rotinas (bibliotecas de funções) em C pelos seus fabricantes, pois é a linguagem geralmente utilizada para programação em microcontroladores pelas diversas vantagens informadas até este momento. Também é possível a programação diretamente em assembly, contudo é uma abordagem que exige muito mais experiência 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 lógica para a programação e tem baixo custo de implementação. O CCS é composto por operadores que foram empacotados em bibliotecas que são específicos para os microcontroladores PICs, bem como acesso aos recursos de hardware com C. O compilador é usado para gerar o código fonte em C e assembly em linguagem de máquina. Possui interface para facilitar a implementação do sistema assim como fornece exemplos, drivers e funções em forma de bibliotecas. O CCS foi concebido para dar suporte a todas as famílias dos microcontroladores PICs da Microchip. Na Figura 7 podemos verificar as distribuições e as respectivas famílias. 23
28 Capítulo 4 Sistema de Comunicação USB com Microcontrolador Figura 7. Distribuições e respectivas famílias 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 próximas seções. Também foi necessário o suporte a comunicação USB que é essencial para este desenvolvimento Ferramenta Computacional de Simulação O Proteus é uma ferramenta útil para a simulação e a construção de circuitos elétricos. Nele estão disponíveis vários componentes, incluindo microcontroladores, com a possibilidade de observar o funcionamento de forma virtual. Pode ser utilizada tanto para circuitos analógicos quanto para circuitos digitais ou híbridos. No Proteus ainda são disponibilizadas ferramentas de laboratório como osciloscópios, multímetros, geradores de sinais entre outros, permitindo o aprendizado da operação dos principais instrumentos essenciais em uma bancada de eletrônica. O uso do Proteus foi essencial neste trabalho, para a execução de testes de funcionamento e aprendizado, pois foram usados vários exemplos até a absorção e 24
29 Capítulo 4 Sistema de Comunicação USB com Microcontrolador adaptação com as plataformas utilizadas. O uso do Proteus foi necessário para a verificação da confecção do circuito e corrigir erros de programação Envio e Recepção de Dados no Computador O programa de recepção e envio de dados usado no computador é o programa Advanced Serial Port Terminal. Ele é responsável 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 usuários e é possível 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 padrão do Windows, o Hyper Terminal, uma vez que é capaz de enviar e receber vários tipos de dados (string ASCII, binário, octal e hexadecimal) ao longo de fluxo de comunicação. 4.2 Microcontrolador PIC 18F4550 O microcontrolador explorado neste projeto é o PIC18F4550 [2] que possui muitas funcionalidades, isto é, ele é considerado um microcontrolador completo. As características desse microcontrolador são: Memória de programação e de dados que permitem apagamento e reescrita de valores milhares de vezes; É auto programável, isto é, através de um controle interno por software, o microcontrolador pode escrever na sua própria memória de programa. Usando uma rotina de bootloader, alocada no bloco Boot no topo da memória de programa, é possível atualizar a aplicação em campo, sem a utilização de um gravador. 1 Módulo Universal Serial Bus (USB). O PIC18F4550 possui um USB SIE (Serial Interface Engine) compatível com full-speed e low-speed USB o que possibilita a rápida comunicação entre um host USB e o microcontrolador. Além disso, o módulo USB possui 16 endpoints bidirecionais e suporta 4 tipos de transferências: controle, interrupção, isossíncrona e Massa. 25
30 Capítulo 4 Sistema de Comunicação USB com Microcontrolador 13 Conversores analógico-digitais de 10 bits; Memória de programa Flash com 32 Kbytes; Memória de dados EEPROM 256 Bytes; Memória RAM 2 Kbytes; Freqüência de operação até 48 MHz; Portas bidirecionais de entrada e saída: A, B, C, D e E; 4 Timers; 1 Módulo Capture/Compare/PWM; 2 Comparadores; 1 Streaming Parallel Port (SPP). 4.3 Biblioteca de funções A biblioteca de funções é um conjunto de funções extras que tornam transparente ao programador a manipulação do dispositivo USB. Nele existem funções de inicialização, transmissão e recepção de dados usando o protocolo de comunicação USB. Esta biblioteca foi desenvolvida para uso em sistemas que usem o microcontrolador de modelo PIC 18F4550 [3] e o compilador CCS [8]. A transmissão 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 transmissão através de uma porta serial de comunicação (COM). Todas as funções referenciadas ou desenvolvidas nesta biblioteca referem-se a esse tipo de transmissão. Existem funções nativas fornecidas com a instalação do compilador, e estas são documentadas nesta biblioteca de forma que esteja disponível ao programador uma documentação básica para efetuar transmissão via USB. Essas funções nativas documentadas nesta biblioteca podem ser necessárias para o desenvolvimento de sistemas que usem transmissão de dados. 26
31 Capítulo 4 Sistema de Comunicação USB com Microcontrolador As funções nativas são: usb_enumerated(): Verifica se o dispositivo está pronto para a comunicação; usb_detach(): Desconecta o dispositivo. Deve ser usada antes de sua remoção física do computador; usb_attach(): Re-conecta o dispositivo, deve ser usada para reconectá-lo quando o dispositivo foi desconectado, mas ainda não removido literalmente; usb_cdc_putc(char c): Envia um caracter via USB; usb_cdc_kbhit(): Verifica se existe algum dado no buffer de recepção; 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 informações sobre estas funções nativas podem ser encontradas na documentação do compilador CCS compiler na pasta de instalação \...\PICC\Drivers nos arquivos USB.c, pic18_usb.h e usb_cdc.h. As funções extras necessárias que foram implementadas e estão incluídas nesta biblioteca com a intenção de completar as funções nativas existentes são: usb_cdc_putstring(char *p): Envia uma string; usb_cdc_puteeprom (int posicaoi, int tamanho): Envia um bloco da memória de dados; usb_cdc_putflash (char posicaoi, char tamanho): Envia um bloco da memória de programa; usb_cdc_conectar(): Inicializa e configura o dispositivo USB. 27
32 Capítulo 4 Sistema de Comunicação USB com Microcontrolador Também está presente nesta biblioteca instruções a respeito do desenvolvimento de sistemas. As instruções são duas: a inclusão de um descritor CDC diferente e a criação 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 implementação dos descritores USB. A criação de um novo arquivo descritor USB é necessária caso se deseje efetuar alguma modificação no descritor original para a criação de um descritor personalizado ou mais especifico. Devem ser feitas as modificações 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 referência dentro deste arquivo. 4.4 Comunicação USB O desenvolvimento do sistema tem como finalidade efetuar a transferência de dados, da memória do microcontrolador ou gerados pelo programa, para um computador e transferir dados do computador para uso nas rotinas do microcontrolador ou para gravação na sua memória. Essa comunicação tem como objetivo prover um mecanismo de transferência de dados que tem a potencialidade de ser aplicado em outros sistemas Descritores USB Inicialmente, neste trabalho, foram implementados os descritores USB. Foi necessário a modificação 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 parâmetros aplicados nesse descritor de dispositivo e a uma explicação sobre esses parâmetros. Os valores usados foram inicialmente retirados do arquivo original usb_desc_cdc.h. Alguns dos valores atribuídos são valores já configurados pelos arquivos de especificação USB. 28
33 Capítulo 4 Sistema de Comunicação USB com Microcontrolador Tabela 3. Descritor de dispositivo Nº Campo TAM. Valor Descrição 0 blength 1 USB_DESC_DEVICE_LEN Tamanho em bytes do descritor 1 bdescriptortype 1 01h Tipo de descritor 2 bcdusb h Versão USB utilizada 4 bdeviceclass 1 02h Classe do dispositivo 5 bdevicesubclass 1 00h Sub Classe do dispositivo 6 bdeviceprotocol 1 00h Protocolo utilizado 7 bmaxpacketsize0 1 USB_MAX_EP0_PACKET_LENGTH Tamanho max. do pacote 8 idvendor h Id do fabricante 10 idproduct h Id do produto 12 bcddevice h Versão do produto 14 imanufacturer 1 01h Informações do produto 15 iproduct 1 02h Informações do produto 16 iserialnumber 1 00h Nº de Serie do produto Nº de configurações 17 bnumconfigurations 1 USB_NUM_CONFIGURATIONS disponíveis Cada dispositivo USB possui apenas um descritor de dispositivo que contém informações gerais. Estes parâmetros são os primeiros a serem coletados quando o dispositivo USB é conectado [6]. A definição da classe e subclasse da interface segue os valores da Tabela 2 que definem o tipo de dispositivo USB. O parâmetro neste descritor que pode sofrer alterações quando implementado em outros sistemas, é o parâmetro bcdusb. Esse campo configura a versão USB utilizada. Neste caso está configurado como versão 1.1, no entanto pode também assumir o valor outras versões como a versão 2.0 (0200h). Foi também implementado o descritor de configuração. No caso deste sistema só foi disponibilizado uma configuração, portanto outras configurações podem ser definidas, sendo utilizada uma por vez. Geralmente existe apenas uma configuração por dispositivo USB. Podem-se observar os valores atribuídos ao descritor de configuração na Tabela 4. O Remote Wakeup é uma função que desativa o dispositivo USB enquanto não é utilizado. Neste projeto não utilizamos esta funcionalidade e conseqüentemente foi desativada. 29
34 Capítulo 4 Sistema de Comunicação USB com Microcontrolador Tabela 4. Descritor de configuração Nº Campo Tam. Valor Descrição 0 blength 1 USB_DESC_CONFIG_LEN Tamanho em bytes do descritor de configuração 1 bdescriptortype 1 USB_DESC_CONFIG_TYPE Tipo de configuração Tamanho de todas as 2 wtotallength 2 USB_TOTAL_CONFIG_LEN configurações 4 bnuminterfaces 1 02h Nº de interfaces 5 bconfigurationvalue 1 01h Id da configuração 6 iconfiguration 1 01h Índice do descritor de string da configuração 7 bmattributes 1 C0h Definição de vários atributos 4..0: Reserved : Remote Wakeup Suporte a Remote Wakeup 6: Self Powered.1... Alimentação do circuito 7: Reserved bmaxpower 1 32h Maxima corrente requerida (maximum milliamperes/2) No descritor de configuração devem ser observados dois parâmetros para o desenvolvimento de outros projetos: o tipo de alimentação do circuito e a corrente máxima requerida, respectivamente os campos Self Power e bmaxpower [6]. No descritor de interface é atribuída a classe da interface de transmissão. Na configuração de dispositivos USB é possível atribuir várias interfaces de comunicação de classes diferentes. A definição da classe da interface segue os valores da Tabela 2. Neste sistema foi implementado duas interfaces: uma de controle e outra de transmissão 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 Nº Campo TAM. Valor Descrição 0 blength 1 USB_DESC_INTERFACE_LEN Tamanho do descritor 1 bdescriptortype 1 USB_DESC_INTERFACE_TYPE Tipo de descritor 2 binterfacenumber 1 02h Id da interface 3 balternatesetting 1 00h Configuração alternativa 4 bnumendpoints 1 01h Numero de endpoits 5 binterfaceclass 1 02h Classe da interface 6 binterfacesubclass 1 02h Sub classe 7 binterfaceprotocol 1 01h Protocolo utilizado Índice do descritor de string 8 iinterface 1 00h da interface 30
35 Capítulo 4 Sistema de Comunicação USB com Microcontrolador Tabela 6. Descritor da interface de transmissão de dados do tipo CDC Nº Campo TAM. Valor Descrição 0 blength 1 USB_DESC_INTERFACE_LEN Tamanho do descritor 1 bdescriptortype 1 USB_DESC_INTERFACE_TYPE Tipo de descritor 2 binterfacenumber 1 01h Id da interface 3 balternatesetting 1 00h Configuração alternativa 4 bnumendpoints 1 02h Numero de endpoits 5 binterfaceclass 1 0Ah Classe da interface 6 binterfacesubclass 1 00h Sub classe 7 binterfaceprotocol 1 00h Protocolo utilizado 8 iinterface 1 00h Índice do descritor de string Os descritores de endpoints definem o tipo de transferência de dados suportada pelo endpoint (controle, massa, interrupção e isossíncrona), a direção dos dados, o tamanho máximo do pacote de dados. Há neste trabalho três endpoints como se pode observar nos parâmetros dos descritores de interface. Um endpoint é usado para a transferência dos dados de controle, outras duas são usadas para o envio e recebimento dos dados gerados pelo sistema. Nas Tabela 7, Tabela 8 e Tabela 9 respectivamente estão exibidos os valores utilizados na implementação. Tabela 7. Descritor de endpoint 0 Nº Campo Tam. Valor Descrição 0 blength 1 USB_DESC_ENDPOINT_LEN Tamanho da descrição 1 bdescriptortype 1 USB_DESC_ENDPOINT_TYPE Tipo de descritor 2 bendpointaddress 1 USB_CDC_COMM_IN_ENDPOINT Endereço 3 bmattributes 1 03h Tipo de transferência 1..0: Transfer Type...11 (Interrupção) 7..2: Reserved wmaxpacketsize 2 USB_CDC_COMM_IN_SIZE Tamanho do pacote 6 binterval Intervalo temporal (ms) Tabela 8. Descritor de endpoint 1 Nº Campo TAM. Valor Descrição 0 blength 1 USB_DESC_ENDPOINT_LEN Tamanho da descrição 1 bdescriptortype 1 USB_DESC_ENDPOINT_TYPE Tipo de descritor 2 bendpointaddress 1 USB_CDC_DATA_OUT_ENDPOINT Endereço 3 bmattributes 1 02h Tipo de transferência 1..0: Transfer Type...10 (Interrupção) 7..2: Reserved wmaxpacketsize 2 USB_CDC_DATA_OUT_SIZE Tamanho do pacote 6 binterval Intervalo temporal (ms) 31
36 Capítulo 4 Sistema de Comunicação USB com Microcontrolador Tabela 9. Descritor de endpoint 2 Nº Campo TAM. Valor Descrição 0 blength 1 USB_DESC_ENDPOINT_LEN Tamanho da descrição 1 bdescriptortype 1 USB_DESC_ENDPOINT_TYPE Tipo de descritor 2 bendpointaddress 1 USB_CDC_DATA_IN_ENDPOINT Endereço 3 bmattributes 1 02h Tipo de transferência 1..0: Transfer Type...10 (Interrupção) 7..2: Reserved wmaxpacketsize 2 USB_CDC_DATA_IN_SIZE Tamanho do pacote 6 binterval Intervalo temporal (ms) Bits de configuração Os bits de configuração dão as diretrizes da configuração das funções do microcontrolador e se encontram sempre no inicio do código fonte em C. Esses bits são na verdade valores binários que são atribuídos a posições específicas na memória do microcontrolador. Esses dados são atribuídos no momento da compilação e gravação para configurar determinadas opções no microcontrolador. Algumas dessas configurações não são removidas com facilidade. Um exemplo pode ser a proteção do dispositivo impedindo a leitura do programa através de um gravador externo, para evitar a sua duplicação ou engenharia reversa. Essa funcionalidade é configurada por bits de configuração. Em alguns casos a atribuição destes bits é irreversível em outros só podem ser desprogramados apagando todo o conteúdo da memória. O desenvolvimento do sistema desenvolvido neste trabalho contém vários bits de configuração. Será abordado neste tópico os bits usados e o significado de cada um deles, mostrando as principais funções possíveis em outros projetos e as aplicadas neste. Os bits responsáveis pela configuração de proteção do programa são: PROTECT, NOPROTECT. As rotinas usadas neste trabalho usam o bit NOPROTECT, pois o foco é disponibilizar as rotinas e torná-las mais adaptável possível a outras aplicações. Existem bits que envolvem outros tipos de proteção ou restrição envolvendo o programa contido no microcontrolador como, por exemplo, a proteção de memória do programa contra a auto modificação ou até proteção de alguns blocos de memória. 32
37 Capítulo 4 Sistema de Comunicação USB com Microcontrolador Alguns bits são o Code-Protect bit (CPn), o Write-Protect bit (WRTn) e o External Block Table Read bit (EBTRn). O CPn é responsável pela leitura ou escrita na memória por dispositivos externos. O WRTn é responsável pela permissão de escrita em blocos de memória do microcontrolador, seja o pedido de manipulação proveniente de dispositivo externo ou do próprio microcontrolador, e o EBTRn é responsável pela leitura de blocos de memória por dispositivos externos. Não é utilizado neste trabalho nenhuma destas funções de proteção, contudo em trabalhos futuros pode existir esta necessidade. O Brown-out Reset monitora a alimentação do microcontrolador comparandoa com um valor de tensão de referencia previamente configurada. Caso a tensão de alimentação seja menor do que a de referencia o microcontrolador re-inicializa o sistema a fim de evitar mau funcionamento. Os valores de referência disponíveis estão entre os bits de habilitação do Brown-out via software (BROWNOUT_SW), o de desativação (NOBROWNOUT), o de ativação (BROWNOUT) e os de valores de tensão de referência de 2.0V (BORV20), 2.8V (BORV28), 4.3V (BORV43) e 4.6V (BORV46). A alimentação padrão para os microcontroladores é de 5V. O Brown-out Reset é configurado neste projeto como desativado. A alimentação do circuito é segura, a respeito da variação, pois o baixo consumo do projeto não ocasionará perdas prejudiciais à fonte de energia, a qual será especificada nos próximos tópicos. É possível nos trabalhos futuros a possibilidade do seu uso. O Power up timer é uma funcionalidade que torna o dispositivo com uma maior margem de segurança a respeito do seu correto funcionamento. Após um estado de re-inicialização, seja após ser ligado, seja após algum evento de Brownout Reset, é causado um atraso no seu efetivo funcionamento. Isso se destina a aguardar que a tensão de alimentação atinja um nível aceitável e estável e que a geração de clock se torne bem definida. Os bits para a ativação e desativação são respectivamente PUT, NOPUT. No projeto é aconselhável a ativação desta função, já que ela garante que não existirá um mau funcionamento no início da operação do dispositivo. Por existir a transmissão de dados em alta velocidade, foi apropriado o uso desta função para evitar a ocorrência de erros e problemas inesperados. Nesse microcontrolador há outra funcionalidade que também é configurada por bits de configuração. Ela é chamada de Cão de Guarda (Watchdog Timer - 33
38 Capítulo 4 Sistema de Comunicação USB com Microcontrolador WDT). Ela funciona garantindo o funcionamento normal do sistema contra possíveis acontecimentos inesperados pela execução do programa como, por exemplo, travamentos. É configurada uma constante de tempo em um contador o qual produz uma re-inicialização do programa (reset) caso não seja zerado. Este contador, em operação normal, deve ser zerado pelo programa antes de seu estouro. Caso seja zerado indica que houve um mau funcionamento e provoca a re-inicialização. O nome dado a esse contador é Contador de Watchdog. Esse contador usa um circuito contador independente do contador do núcleo do microcontrolador. Os valores possíveis para a configuração são os bits: WDT1, WDT2, WDT4, WDT8, WDT16, WDT32, WDT64, WDT128, WDT256, WDT512, WDT1024, WDT2048, WDT4096, WDT8192, WDT16384, WDT Estes bits representam valores de escalas de tempo entre 4ms e s (2.18 minutos). Os bits NOWDT e WDT desativam e ativam esta função respectivamente. O sistema implementado promove a transferência de dados não críticos e a inclusão de um botão de re-inicialização externo, portanto não é necessária a ativação desta função. É definido no programa o bit de configuração NOWDT configurando a desativação desta função. A re-inicialização do dispositivo é possível através de diversas funcionalidades. Vários bits configuram possíveis ocorrências, contudo existe a possibilidade de provocar no microcontrolador uma re-inicialização via meios externos. O pino MCLR é o pino específico para o uso desta função e pode ser configurado como provocador de re-inicialização. A re-inicialização ocorre quando o pino MCLR é alimentado com nível lógico zero. Os bits que configuram esta função são MCLR (para habilitar) e NOMCLR (para desabilitar). Foi definido um botão externo para provocar a re-inicialização do sistema, a fim de corrigir qualquer mau funcionamento que venha a se desenvolver durante sua operação. Está característica de pino de re-inicialização foi definida com o bit MCLR no código do programa definindo como ativada a função. Existem os bits que permite a depuração do programa no circuito. A configuração desta função é atribuída aos bits NODEBUG (não permite a depuração) e DEBUG (permite a depuração). Neste sistema não foi permitida a depuração, já que não é necessário o uso deste tipo de funcionalidade. 34
39 Capítulo 4 Sistema de Comunicação USB com Microcontrolador A gravação do programa no microcontrolador é feita por um gravador específico fornecido pelos fabricantes. No caso dos microcontroladores da família PIC da microchip é fornecido ao pino MCLR uma tensão de 13V indicando que o microcontrolador está em modo de gravação. Nem todos os sistemas que fazem gravação no próprio circuito podem suportar a recepção dessa tensão. Para resolver este problema existe a função Low-Voltage ICSP Programming (LVP) que permite a gravação no microcontrolador com baixa tensão. Esta função é configurada pelos bits de configuração NOLVP e LVP. Na ativação a indicação que o microcontrolador está em modo de gravação é a atribuição de valor lógico 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, programação serial no circuito. Neste sistema é usado o bit de configuração NOLVP pois mesmo que a gravação do PIC seja no próprio circuito do sistema, há um isolamento do circuito de gravação e de comunicação USB. O bit de configuração VREGEN ativa o uso do Vusb. O Vusb é uma entrada no microcontrolador que funciona como alimentação dos resistores pull-up para a detecção da velocidade da transmissão USB, isto é, detecta se o dispositivo opera em Full Speed Device ou em Low Speed Device. A não ativação desta função provoca uma necessidade de alimentação externa deste pino por uma tensão de 3,3V. Ele funciona também como regulador interno de tensão para o dispositivo USB. O bit que desabilita esta funcionalidade é o NOVREGEN Configuração de clock O microcontrolador usado pode assumir três fontes de geração de clock: oscilador primário, oscilador secundário e oscilador interno. Também pode assumir diversas configurações diferentes com cada tipo de oscilador ou a combinação entre eles [3]. Estes tipos de fontes diferentes permitem a utilização de clock de funcionamento diferente para o núcleo do microcontrolador e o dispositivo de comunicação USB. No projeto foi utilizada uma fonte e o oscilador primário como gerador de clock para todo o circuito. O PLL (Phase Locked Loop - Laço Travado em Fase) é um módulo do microcontrolador que provoca pré e pós escalamento dos valores do clock do núcleo 35
40 Capítulo 4 Sistema de Comunicação USB com Microcontrolador do microcontrolador e do circuito USB. Também existem os bits de configuração USBDIV e NOUSBDIV que são projetados para configurar qual o clock do dispositivo USB integrado com o microcontrolador. Ambos os bits são usados para definir como será feito o cálculo da frequência de operação no microcontrolador, tornando adaptável a cada aplicação. Os bits configuram os blocos internos do microcontrolador conforme a Figura 8. Figura 8. Diagrama do clock para o oscilador primário, adaptada e extraída de [3]. A respeito do circuito do gerador de frequência o microcontrolador divide os cristais osciladores em dois tipos possíveis, os cristais XT (de 200 khz a 4 MHz) e os HS de alta velocidade (de 4MHz a 20 MHz). Os bits para a configuração da frequência são: 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 saída no RA6), ECPLL (gerador de clock externo com PLL habilitado), ECPIO (gerador de clock externo com PLL habilitado e saída no RA6), entre outros. 36
41 Capítulo 4 Sistema de Comunicação USB com Microcontrolador Os valores possíveis para os escalares PLL são divididos em dois tipos: pré escalares e pós escalares. Os valores de pré escalares são chamados de PLLDIV e são PLL1, PLL2, PLL3, PLL4, PLL5, PLL6, PLL10 e PLL12. Os valores de pós escalares são chamados de CPUDIV e são CPUDIV1, CPUDIV2, CPUDIV3 e CPUDIV4. No programa principal a configuração da frequência de operação é algo que deve ser observado com bastante cautela. No circuito o cristal opera em uma freqüência de 20MHz. Há no PIC18F4550 uma grande variação de possibilidades de clock de operação. O dispositivo USB deve ser configurado para operar com 6 MHz, caso esteja configurado para transmissão Low Speed, ou 48MHz, caso esteja configurado para transmissão Full Speed, o qual foi o caso implementado neste sistema. Os bits de configuração do oscilador foram definidos como HSPLL (oscilador a cristal de alta velocidade com PLL habilitado). As possibilidades de configuração desses bits para um oscilador de 20MHz seguem a Tabela 10. Freqüência do oscilador de entrada Tabela 10. Configuração da freqüência de clock PLLDIV Modo de clock CPUDIV None (00) 20 MHz HS, EC, ECIO 2 (01) 10 MHz 3 (10) 6.67 MHz 20 MHz 5 (100) 4 (11) 5 MHz 2 (00) 48 MHz HSPLL, ECPLL, ECPIO 3 (01) 32 MHz 4 (10) 24 MHz 6 (11) 16 MHz Freqüência do clock do microcontrolador Os valores de configuração atribuídos, isto é, usados neste sistema, são os bits USBDIV, PLL5, CPUDIV1. Isso significa que é usado o modulo PLL pré escalar com a configuração PPL5. Conforme a Figura 8 o cálculo com o valor de freqüência de entrada 20 MHz é divido por 5 gerando uma frequência de 4 MHz. Este valor é o adequado para o módulo de geração de 96 MHz. Este sinal é encaminhado para dois módulos diferentes. O primeiro módulo é controlado pelo USBDIV, o qual divide o sinal por 2 gerando uma freqüência de 48 MHz para o módulo USB. O outro é 37
42 Capítulo 4 Sistema de Comunicação USB com Microcontrolador controlado pela PLL pós escalar. Este valor recebido pelo módulo PLL pós escalar é dividido por 2, conforme CPUDIV1 e é enviado para o núcleo do microcontrolador. Como foi observado o núcleo do microcontrolador e o periférico USB, ambos trabalham com a freqüência de 48 MHz Alimentação do Circuito O sistema pode ser executado em dois modos de operação, gravação com o ICD2 [4] e execução de comunicação USB. A alimentação do sistema pode ser feita de duas origens dependendo do modo de operação. Em ambos os modos o circuito é alimentado com 5V contudo o esquema de alimentação determina que função o sistema deve desempenhar. Vale salientar que a alimentação depende da arquitetura de comunicação em que o sistema está conectado, já que são arquiteturas de comunicação deferentes. A alimentação do circuito em modo de gravação é fornecida através da conexão do conector RJ-12 com o gravador. A alimentação do circuito no modo USB pode ser feitas através de três opções. A alimentação elétrica através do dispositivo conectado na USB, isto é, o computador fornece a tensão para o funcionamento do circuito. Pode ser feita também por meio de alimentação externa, através de pilhas, baterias ou adaptadores ligados na corrente elétrica fornecendo tensão diretamente ao circuito. A alimentação pode também ser hibrida, sendo composta por alimentação do dispositivo USB ou externa. Está última configuração permite que o circuito seja alimentado por fonte externa, porém na ausência ser alimentado pela conexão USB. Pode-se obter alternância entre a alimentação neste último caso. Neste projeto foi usada a alimentação pela comunicação USB. Isso torna o circuito mais portátil e mais prático. Não é necessária a substituição de pilhas/baterias ou a preocupação de ter disponível tensão ao executar as funções do circuito. O esquema elétrico desta ligação segue a especificação da Figura 9. 38
43 Capítulo 4 Sistema de Comunicação USB com Microcontrolador Figura 9. Esquema de alimentação do circuito A alimentação do Vbarramento é fornecido pelo pino de alimentação USB. Um capacitor de 100uF é ligado entre a alimentação e o terra para que seja mantida uma estabilidade na tensão. De mesmo modo é feita a conexão do Vusb e o valor do capacitor neste caso é de 470nF. O Vss é o pino terra do microcontrolador. Deve-se mencionar a existência do pino sensitivo. Este pino serve para monitoramento interno do microcontrolador a fim de detectar alguma conexão do circuito em uma porta USB. No sistema desenvolvido não existe necessidade da implementação do uso deste pino, pois a evidência de uma conexão é o seu funcionamento. Este pino somente é implementado nos casos de alimentação do circuito via fonte externa ou alimentação hibrida Circuito de Gravação Um microcontrolador necessita de um sistema de gravação para inserir códigos em sua memória. Ao compilar um programa fonte em C é gerado um arquivo pronto para ser gravado, e é esse sistema de gravação que executa o processo da transferência 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 gravação para o microcontrolador. O gravador faz a conversão dos dados gerados pelo compilador em dados a serem armazenados no microcontrolador. Pode ser observado na Figura 10 um gravador ICD2. O soquete de gravação é o circuito que fornece a comunicação do gravador 39
44 Capítulo 4 Sistema de Comunicação USB com Microcontrolador com o microcontrolador a ser gravado. Cada microcontrolador tem uma configuração especifica no soquete de gravação. Figura 10. Gravador e esquema de gravação ICD2 Neste trabalho foi adicionado ao sistema de comunicação USB um circuito semelhante ao soquete de gravação. A implementação desse circuito traz a facilidade de gravação do programa no microcontrolador sem a necessidade da retirada do mesmo do circuito. A seleção do modo de operação do sistema é feita através de uma chave seletora presente no circuito. Só deve ser usada uma das duas opções na execução, isto é, ou modo de operação de gravação ou execução de comunicação USB Programa Principal O primeiro passo para o desenvolvimento do programa foi a definição das diretrizes de compilação iniciais. Essas são instruções para o compilador atribuir, na etapa de compilação, valores específicos de configuração de cada microcontrolador. Podem ser observadas algumas diretivas na Tabela 11. Tabela 11. Diretivas de compilação Diretiva #define #include #fuses #use delay Descrição Definição de constantes de cadeia de caracteres Incluir arquivos de códigos fontes Define os bits de configuração Informa ao compilador o valor da freqüência em Hz A diretiva #define é apropriada para fornecer um rotulo a um valor ou cadeia de caracteres que serão substituídos pelos respectivos valores no momento da 40
45 Capítulo 4 Sistema de Comunicação USB com Microcontrolador compilação. Ideal para a definição de constantes ou oferecer nomes a cadeia de caracteres ou valores. Sua principal vantagem é que não é necessária a alteração do valor em todas as ocorrências, apenas sua alteração é necessária em um ponto do código. Existe na implementação do sistema a definição dos comandos que podem ser enviados durante a execução. A definição segue o código 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 operação da CPU do microcontrolador e os valores são informados em Hz. A operação deste sistema é baseada em uma freqüência de 48 MHz. No programa é definido conforme código abaixo. #use delay(clock= ) A diretiva #include indica arquivos com códigos de programação extras. Esses arquivos de código fonte são adicionados ao programa principal no momento da compilação. Evitam a repetição de um determinado código em vários arquivos. Funções especiais podem ser definidas em arquivos separados e adicionados em vários programas sem a necessidade de reescrevê-los. No programa desenvolvido foi usado está diretiva para a inclusão de dois arquivos, são eles: 18F4550.h e usb_biblioteca.h. As inclusão é definida conforme descrito abaixo. #include <18F4550.h> #include <usb_biblioteca.h> O arquivo 18F4550.h é fornecido pelo fabricante e contém informações e funções aplicadas ao PIC 18F4550. Nesse arquivo são definidas funções de manipulação de temporizadores, entrada e saída de dados, configuração, comparadores, conversores analógico-digitais, interrupções, entre outras. É um arquivo essencial para o uso desse microcontrolador. O arquivo usb_biblioteca.h é o arquivo desenvolvido neste trabalho que contem funções de comunicação USB. Esse arquivo promove transferência de 41
46 Capítulo 4 Sistema de Comunicação USB com Microcontrolador dados do tipo de dispositivo USB CDC. Ele inclui com a diretiva #include, o arquivo usb_cdc.c que contém mais funções para esse tipo de comunicação. O arquivo usb_cdc.h é um arquivo de suporte do compilador CCS. No arquivo USB_cdc.c é incluído o arquivo de descritores, o USB_desc_TCC. O arquivo usb_desc_tcc.h contém a implementação dos descritores USB. Os descritores deste sistema foram detalhados nas seções anteriores. Este arquivo contem às informações que descrevem detalhadamente o dispositivo USB implementado. A diretiva #fuses informa ao compilador os bits de configuração adicionados ao programa na compilação e, conseqüentemente, na gravação. Estes bits são específicos de cada microcontrolador, apesar de alguns serem iguais em alguns tipos de microcontroladores. Esses bits são chamados pelo compilador CCS de fusíveis de configuração. Os bits de configuração usados podem ser visualizados na Tabela 12 incluindo uma breve descrição do significado. Maiores detalhes sobre esses parâmetros foram expressos em seções anteriores. Tabela 12. Bits de configuração do programa principal Bits de Configuração Descrição HSPLL Cristal oscilador de alta velocidade com PLL habilitado NOWDT Desativação do cão de guarda NOPROTECT Desativação de proteção de código NOLVP Desativação da gravação em baixa tensão NODEBUG Desativação de depuração em circuito USBDIV Ativação do multiplexador USBDIV PLL5 Uso de PLL pré escalar com valor 5 PUT Ativação do Power-Up Timer MCLR Ativação da re-inicialização externa CPUDIV1 Uso de PLL pós escalar com valor 1 Ativação do uso do Vusb como regulador de tensão VREGEN interna USB O programa oferece cinco opções, são elas: Instruções, Ler EEPROM, Gravar na EEPROM, Mostrar a Rotina e Desconectar dispositivo. O comando Instruções fornece todas as opções que o usuário poderá escolher. O comando enviado ao microcontrolador será em hexadecimal e seu valor 42
47 Capítulo 4 Sistema de Comunicação USB com Microcontrolador é 00. Nessa opção o microcontrolador enviará uma string armazenada na sua memória com todas as opções possíveis que podem ser enviadas. Este comando usa a função usb_cdc_putstring() presente na biblioteca para enviar a mensagem com as instruções conforme código em C abaixo: char mensagem1[] = {" \nsistema de Comunicação USB com Microcontrolador TCC DSC / POLI / UPE Aluno: Leonardo Santos Orientador: Sergio Campello Opções: 00 -> Instruções 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 conteúdo armazenado na memória do microcontrolador da posição 00 até a 2F. Os valores são organizados por linha e coluna. Onde na primeira linha são mostrados os valores da memória das posições 00 até a 0F, na próxima linha serão mostrados os valores das posições 10 até 1F, e assim sucessivamente até a ultima posição. Esses valores foram organizados dessa forma para facilitar a visualização das alterações dos valores com o comando Gravar na EEPROM. O comando é representado no microcontrolador como o valor em hexadecimal 01. A chamada para a execução deste comando usa a função usb_cdc_puteeprom() desenvolvida na biblioteca de funções para transmitir dados da memória do microcontrolador para o computador. O comando Gravar na EEPROM é usado para alteração da memória de dados. Com ele o usuário pode transmitir valores para serem armazenados na memória do microcontrolador. Ao executar esse comando o programa solicitará uma posição de memória e em seguida um valor em hexadecimal. Cada posição de memória pode armazenar dois bytes, caso seja fornecido um valor que não possa 43
48 Capítulo 4 Sistema de Comunicação USB com Microcontrolador ser gravado nesta quantidade de bytes, o valor será truncado. A sua representação no microcontrolador é o hexadecimal 02. Os valores são recebidos com o uso da função gethex_usb() descrita na biblioteca. O comando Mostrar Rotina informa o número do Contador de Rotinas. O Contador de Rotinas é uma variável inteira longa que é incrementada enquanto o dispositivo está em funcionamento. Ela foi criada com a intenção de simular um trabalho qualquer que o microcontrolador ficará executando durante seu funcionamento. Este contador pode ser substituído por qualquer rotina continua em trabalhos futuros. A representação desse comando é o hexadecimal 03 no microcontrolador. O comando Desconectar prepara o dispositivo para ser efetivamente desconectado do computador. Ele encerra a comunicação e o funcionamento do programa principal. Ao executar este comando o dispositivo pode ser removido com segurança do computador. O valor hexadecimal que representa este comando é 04 no microcontrolador. A desconexão é feita pela função usb_detach() descrita na biblioteca. Existe um fluxo no programa que mostra uma mensagem ao usuário caso ele forneça algum comando não definido. O microcontrolador informa ao usuário a mensagem Digite um valor válido! conforme o trecho de código abaixo. Este fluxo funciona como filtro para não serem inseridos valores que provoquem um funcionamento não esperado. char mensagem6[] = {"\n\ndigite um valor válido!\n"}; usb_cdc_putstring(mensagem6); O desenvolvimento do programa segue alguns passos. Inicialmente há uma definição das variáveis de uso no programa,em seguida há a inicialização do dispositivo USB através da função usb_cdc_conectar(),. Esta função está definida na biblioteca criada neste trabalho e descrita em seções 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 verificação a cada loop se existe algum dado enviado ao microcontrolador, caso isso aconteça, indica que foi enviada algum comando, estão o programa recebe 44
49 Capítulo 4 Sistema de Comunicação USB com Microcontrolador esse dado e verifica que comando foi acionado e executa a devida tarefa. O comando que encerra a execução do programa é o de Desconectar Simulação A simulação é um bom tipo de análise do funcionamento do dispositivo, pois é possível a verificação da implementação de forma virtual. O aplicativo usado foi o Proteus 7.4 com o módulo virtual USB. O circuito é dividido em seis partes, são elas: a gravação com o ICD2, o circuito selecionador de função, o circuito oscilador, as luzes informativas, o circuito de re-inicialização e a comunicação USB. A interligação entre o computador e o gravador ICD2 é feita pela comunicação USB ou por porta RS-232. A conexão entre o gravador e o circuito de gravação é realizada através do conector RJ-12. Este circuito de gravação foi incluído no sistema, não existindo assim a necessidade da retirada do microprocessador do circuito para a gravação. Esse desenvolvimento proporciona todas as características do circuito original de gravação como, por exemplo, a depuração em tempo real. A simulação de gravação com o ICD2 não é possível porque o Proteus não tem suporte já que é uma comunicação entre o gravador e o sistema. Contudo foi incluída no circuito de simulação para visualização dos componentes presentes e sua interligação com o circuito completo. A falta dos conectores na documentação suporte do Proteus foi suprida com a inclusão de pinos de entrada simples, que representam o conector RJ-12 usado na comunicação com o gravador ICD2. Podem-se observar todas as conexões entre este módulo e o microcontrolador na Figura
50 Capítulo 4 Sistema de Comunicação USB com Microcontrolador Figura 11. Circuito de simulação no Proteus O circuito pode ser executado operando com duas funções. A primeira é como sistema de comunicação USB e a outra é como circuito de gravação. O Circuito Selecionador funciona como um seletor para definir de que modo o circuito será executado. É nessa parte do circuito que é controlada a alimentação, que depende do modo de operação do mesmo. Está chave tem duas posições, USB e ICD2. Podem ser observadas suas conexões na Figura 11. O circuito oscilador é o responsável por gerar o clock de entrada no circuito. O circuito usa um cristal de 20 MHz e dois capacitores cerâmicos de 15pF. O microcontrolador internamente configura o clock conforme descrito em seções anteriores. Este circuito está presente na simulação para verificar sua integração com todo circuito, pois a sua simulação não é possível. A definição da freqüência é informada diretamente no Proteus. As luzes informativas são para monitoração do funcionamento do circuito. Estão presentes três luzes indicadoras dos estados do circuito, são elas: circuito em execução, USB ativado e gravação ativada. A luz que indica quando o dispositivo está em funcionamento verifica se o sistema está em operação em algum dos dois modos. A luz de USB ativada indica quando o sistema está sendo executado como 46
51 Capítulo 4 Sistema de Comunicação USB com Microcontrolador comunicação USB. A luz de gravação ativada indica quando o circuito de gravação está sendo executado. A distinção destes tipos de operação é dada pela alimentação, portanto não é recomendada a operação de ambos os circuitos ao mesmo tempo, sendo possível a danificação do sistema. O circuito de re-inicialização é responsável por provocar uma re-inicialização do sistema completo por meio externo. Caso exista um mau funcionamento do circuito existe esta opção de restauração. Existe no circuito a presença de dois capacitores não inclusos em nenhum dos módulos definidos anteriormente. O primeiro se encontra entre uma ligação do Vdd com o Vss do circuito. Esse funciona como um filtro para a retirada dos ruídos de alta freqüência da alimentação do circuito. O segundo se encontra entre uma ligação do Vusb e o Vss. Esse é uma recomendação do fabricante do dispositivo para manter a estabilidade do circuito USB interno do microcontrolador Circuito Elétrico Na simulação não é possível verificar algumas características como tensão no microcontrolador, configuração do oscilador e comunicação com tipos de comunicação não suportados. O circuito elétrico envolve todas as conexões, simuladas ou não. A estrutura da construção física do circuito varia conforme disponibilidade de espaço, confecção de trilhas, colocação de componentes e conectores. Para a sua confecção foram seguidas todas as recomendações do fabricante do microcontrolador em relação aos valores de componentes utilizados. Neste circuito desenvolvido não é necessária alimentação via barramento, como foi especificado em seções anteriores. O desenho da placa de circuito impresso é demonstrado na Figura
52 Capítulo 4 Sistema de Comunicação USB com Microcontrolador Figura 12. Desenho do circuito impresso O circuito construído pode ser visualizado na Figura 13 e na Figura 14. Seu funcionamento e instalação são detalhados nas seções posteriores. Figura 13. Face dos componentes do circuito construído 48
53 Capítulo 4 Sistema de Comunicação USB com Microcontrolador Figura 14. Face das soldas e trilhas do circuito construído Instalação e Funcionamento A instalação do sistema é dada de modo simples como costumam ser os dispositivos de comunicação USB. Após o sistema ser totalmente construído, isto é, em circuito impresso, com os componentes e o programa gravado no microcontrolador, é necessário iniciar a instalação no computador. Quando o sistema foi conectado ao computador é reconhecido como TCC LEO SANTOS SCUSB conforme Figura
54 Capítulo 4 Sistema de Comunicação USB com Microcontrolador Figura 15. Reconhecimento no computador do SCUSB (Sistema de Comunicação USB) A seguir é interrogado quanto ao driver de instalação. O driver é um arquivo fornecido pela instalação do CCS C Compiler que se encontra na pasta de instalação \...\PICC\Drivers e são 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 instalação é possível fazer a comunicação USB com o sistema. Ao conectar o dispositivo e concluir a instalação é adicionada uma nova porta serial ao computador. O programa utilizado é o Advanced Serial Port Terminal. Neste programa é possível abrir um fluxo de comunicação. No Advanced Serial Port Terminal deve-se criar uma nova seção, escolhendo a porta, a taxa e demais configurações. Os parâmetros seguem os representados na Figura 16. A única mudança será a porta, pois depende da porta em que foi instalado o sistema. Nesse exemplo a porta usada foi a COM21. Configurada a conexão, deve-se abrir a porta de comunicação para iniciar o fluxo de dados conforme Figura 17. O microcontrolador no momento da configuração já está executando o Contador de Rotinas e aguarda o recebimento de algum comando. 50
55 Capítulo 4 Sistema de Comunicação USB com Microcontrolador Figura 16. Configuração da conexão do terminal no computador Figura 17. Abrir porta de comunicação no programa terminal Os comandos são os valores 00, 01, 02, 03, 04 que representam respectivamente Instruções, Ler EEPROM, Gravar na EEPROM, Mostrar Rotina, Desconectar. A resposta dos comandos Instruções, Ler EEPROM, Gravar na EEPROM, e Mostrar Rotina podem ser observados respectivamente na Figura 18, Figura 19, Figura 20 e Figura
56 Capítulo 4 Sistema de Comunicação USB com Microcontrolador Figura 18. Resposta obtida pelo envio do comando Instruções 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
57 Capítulo 5 Conclusão e Trabalhos Futuros Capítulo 5 Conclusão e Trabalhos Futuros Atualmente a comunicação entre computadores e sistemas que usam microcontroladores é de extrema importância para uma grande variedade de projetos. Existe em algumas aplicações a necessidade de colher informações, prover comunicação e enviar dados para esses sistemas. Há sempre também uma busca por simplicidade e abstração quando se usa comunicação nestes sistemas. O protocolo de comunicação USB traz uma boa parte destas vantagens, por isso é de suma importância o seu desenvolvimento em sistemas que necessitem comunicação com os computadores. A comunicação USB além de ser de fácil configuração, Plug and Play e presente na maioria dos computadores atuais, tem várias outras vantagens como a alimentação direta no circuito que é usado neste sistema. Este trabalho fornece abstração de seu funcionamento a baixo nível tornando transparente ao desenvolvedor a comunicação USB. O desenvolvimento deste trabalho proporciona uma fácil implementação do tipo de comunicação USB em microcontroladores. Isso facilita a disseminação do uso de comunicação com esse tipo de dispositivo. Assim como proporciona maior adaptabilidade de aplicações nesta área já que diversos tipos de comunicação têm entrado em desuso devido às novas vantagens oferecidas com estas formas de comunicação. Este trabalho proporciona como desenvolvimentos futuros a implementação de uma interface própria no computador para realizar a comunicação com o dispositivo que contém o microcontrolador. Bibliotecas são disponibilizadas pelos fabricantes de forma que possa ser desenvolvida uma interface de comunicação no computador mais específica para cada aplicação. Vale salientar que este trabalho fornece privilégios a implementação deste tipo de comunicação em qualquer sistema. E que no futuro seja integrado com 53
58 Capítulo 5 Conclusão e Trabalhos Futuros sistemas de uso específicos. No inicio deste trabalho foi observada a aplicação deste projeto no sistema de detecção óptica de descargas parciais em cadeias de isoladores de transmissão de alta tensão [1], contudo a generalização para alcançar varias aplicações se tornou um ponto forte. O tipo de dispositivo USB CDC obteve um ótimo desempenho em relação à fácil instalação e facilidade de comunicação, contudo o desenvolvimento de comunicação USB usando outros tipos de dispositivos como mass storage device pode ser também tratado em trabalhos futuros como forma de aprimorar ou comparar as vantagens e desvantagens desses outros tipos de comunicação em relação ao que foi desenvolvido. 54
59 Bibliografia Bibliografia [1] S. C. Oliveira, Sistema de Detecção Óptica de Descargas Parciais em Cadeias de Isoladores de Transmissão de Alta Tensão. 119 f. Tese de Doutorado, Depto. de Engenharia Elétrica da Universidade Federal de Pernambuco, Recife PE, Brasil, [2] Data Sheet do microcontrolador PIC16F87A disponível em Acessado em 08/06/2009 [3] Data Sheet do microcontrolador PIC18F4550 disponível em Acessado em 08/06/2009 [4] Microchip Technology Inc, disponível em Acessado em 08/06/2009. [5] STALLINGS, William. Arquitetura e Organização de Computadores 5a Edição. São Paulo: Prentice Hall, [6] USB.Org, disponível em Acessado em 08/06/2009. [7] Ibrahim, Dagan. Advanced PIC microcontroller Projects in C: from USB to RTOS with the PIC18F series, Newnes, [8] CCS, Inc. Home, disponível em Acessado em 08/06/2009. [9] Serial Port Terminal Test and debug drial port devices with advanced serial port terminal, disponível em Acessado em 08/06/
60 Apêndices Apêndices Arquivo usb_serial_tcc.h // Inclue a biblioteca basica do PIC 18F4550 #include <18F4550.h> // Atribui os Bits de configuração e define o clock do nucleo do microcontrolador #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGE N,MCLR,PUT #use delay(clock= ) // Inclue a biblioteca de funções #include <usb_biblioteca.h> #define INSTRUCOES 00 #define LEITURA 01 #define GRAVACAO 02 #define ROTINA 03 #define DESCONECTAR 04 void main() { // Declaração 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
61 Apêndices { // Simula uma rotina de um processo qualquer usual de microcontrolador cont++; // Verifica se existe caracter para recepção if(usb_cdc_kbhit()) { // Recebe um hexadecimal opcao = gethex_usb(); // As opções são 00, 01, 02, 03 e 04 switch (opcao) { case INSTRUCOES: { char mensagem1[] = {" \nsistema de Comunicação USB com Microcontrolador TCC DSC / POLI / UPE Aluno: Leonardo Santos Orientador: Sergio Campello Opções: 00 -> Instruções 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, " a b c d e f"); 57
62 Apêndices 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[] = {"\nposição 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
63 Apêndices } 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 transmissão de dados através do protocolo de USB de comunicação. Contém funções básicas de transmissão e recepção de dados. É implementada para simular uma PORTA COM VIRTUAL. Modelo do microprocessador: PIC 18F4550 Compilador: CCS TCC DSC / UPE Aluno: Leonardo de Sá Leal Santos Orientador: Sergio Campello ** Instruções ** 59
64 Apêndices * Inclusão de um descritor CDC diferente A inclusão 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. * Criação de um novo arquivo descritor usb Caso deseje efetuar alguma modificação no descritor, o mesmo se encontra na pasta "\...\PICC\Drivers" com o nome usb_desc_cdc.h. Faça as modificações e salve na mesma pasta onde se encontra o projeto, não esquecendo de adicioná-lo nos arquivos de configuração. */ #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 não é necessário a declaração 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
65 Apêndices } } i ++; /* ** usb_cdc_puteeprom ** Envia um bloco da memória de dados int posicaoi -> Posição inicial do bloco de memória int tamanho -> Comprimento do bloco de memória Obs: Pode enviar os valores em hex ou em caracteres ASCII (código 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 memória de programa int posicaoi -> Posição inicial do bloco de memória int tamanho -> Comprimento do bloco de memória Obs: Pode enviar os valores em hex ou em caracteres ASCII (código 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
66 Apêndices } } 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 transmissão */ void usb_cdc_conectar() { // usb_cdc_init(); usb_init_cs();// não trava na configuração e é necessário chamar usb_task usb_init(); usb_task(); while(!usb_cdc_connected()) {} } /* ***** Funções nativas ***** ** usb_enumerated() ** Verifica se o dispositivo está pronto para a comunicação Retorna True ou False Obs: Maiores informações sobre estas funções e mais funções estão no arquivo usb.c em \...\PICC\Drivers ** usb_detach() ** Desconecta o dispositivo, usado antes de sua remoção física do computador ** usb_attach() ** Re-conecta o dispositivo, usado para re-conectá-lo quando o dispositivo foi desconectado mas ainda não removido literalmente 62
67 Apêndices Obs: Maiores informações sobre estas funções e mais funções estão no arquivo pic18_usb.h em \...\PICC\Drivers ** usb_cdc_putc(char c) ** Envia um caracter para a transmissão ** usb_cdc_kbhit() ** Verifica se existe algum dado no buffer de recepção Retorna True ou False ** usb_cdc_getc() ** Recebe um caracter do buffer de recepção, 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 informações sobre estas funções e mais funções estão no arquivo usb_cdc.h em \...\PICC\Drivers */ 63
68 Apêndices Arquivo usb_desc_tcc.h #IFNDEF USB_DESCRIPTORS #DEFINE USB_DESCRIPTORS #include <usb.h> #DEFINE USB_TOTAL_CONFIG_LEN 67 //config+interface+class+endpoint+endpoint (2 endpoints) const char USB_CONFIG_DESC[] = { //Descritor de configuração 1 USB_DESC_CONFIG_LEN, //length of descriptor size ==0 USB_DESC_CONFIG_TYPE, //constant CONFIGURATION (CONFIGURATION 0x02) ==1 USB_TOTAL_CONFIG_LEN,0, //size of all data returned for this config ==2,3 2, //number of interfaces this device supports ==4 0x01, //identifier for this configuration. (IF we had more than one configurations) ==5 0x00, //index of string descriptor for this configuration ==6 0xC0, // significa = ( ) -> 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) (0x32 = 100mA) ==8 //Descritor de interface 0 (comm class interface) USB_DESC_INTERFACE_LEN, //length of descriptor =9 USB_DESC_INTERFACE_TYPE, //constant INTERFACE (INTERFACE 0x04) =10 0x00, //number defining this interface (IF we had more than one interface) ==11 0x00, //alternate setting ==12 1, //number of endpoints ==13 64
69 Apêndices 0x02, //class code, 02 = Comm Interface Class ==14 0x02, //subclass code, 2 = Abstract ==15 0x01, //protocol code, 1 = v.25ter ==16 0x00, //index of string descriptor for interface ==17 //class descriptor [functional header] 5, //length of descriptor ==18 0x24, //dscriptor type (0x24 == ) ==19 0, //sub type (0=functional header) ==20 0x10,0x01, // ==21,22 //cdc version //class descriptor [acm header] 4, //length of descriptor ==23 0x24, //dscriptor type (0x24 == ) ==24 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 ==27 0x24, //dscriptor type (0x24 == ) ==28 6, //sub type (6=union) ==29 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 ==31 //Interface number of first slave or associated interface in the union. * //class descriptor [call mgmt header] 5, //length of descriptor ==32 0x24, //dscriptor type (0x24 == ) ==33 1, //sub type (1=call mgmt) ==34 0, //capabilities ==35 //device does not handle call management itself 1, //data interface ==36 //interface number of data class interface //endpoint descriptor 65
70 Apêndices USB_DESC_ENDPOINT_LEN, //length of descriptor ==37 USB_DESC_ENDPOINT_TYPE, //constant ENDPOINT (ENDPOINT 0x05) ==38 USB_CDC_COMM_IN_ENDPOINT 0x80, //endpoint number and direction 0x03, //transfer type supported (0x03 is interrupt) ==40 USB_CDC_COMM_IN_SIZE,0x00, //maximum packet size supported ==41,42 250, //polling interval, in ms. (cant be smaller than 10) ==43 //Descritor de interface 1 (data class interface) USB_DESC_INTERFACE_LEN, //length of descriptor =44 USB_DESC_INTERFACE_TYPE, //constant INTERFACE (INTERFACE 0x04) =45 0x01, //number defining this interface (IF we had more than one interface) ==46 0x00, //alternate setting ==47 2, //number of endpoints ==48 0x0A, //class code, 0A = Data Interface Class ==49 0x00, //subclass code ==50 0x00, //protocol code ==51 0x00, //index of string descriptor for interface ==52 //endpoint descriptor USB_DESC_ENDPOINT_LEN, //length of descriptor ==60 USB_DESC_ENDPOINT_TYPE, //constant ENDPOINT (ENDPOINT 0x05) ==61 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, , //polling interval, in ms. (cant be smaller than 10) ==66 //endpoint descriptor 66
71 Apêndices USB_DESC_ENDPOINT_LEN, //length of descriptor ==53 USB_DESC_ENDPOINT_TYPE, //constant ENDPOINT (ENDPOINT 0x05) ==54 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) ==59 #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 ,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
72 Apêndices 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
73 Apêndices '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
Processo de enumeração
USB Processo de enumeração USB - Universal Serial Bus USB não é um interface de comunicação genérico entre dispositivos O USB foi concebido para ligar dispositivos (periféricos) a Computadores Computador
CAPÍTULO 5. INTERFACES PARA PERIFÉRICOS DE ARMAZENAMENTO INTERFACES DIVERSAS: FIREWIRE, SPI e I 2 C INTERFACES COM O MUNDO ANALÓGICO
28 CAPÍTULO 5 INTERFACES PARA PERIFÉRICOS DE ARMAZENAMENTO INTERFACES DIVERSAS: FIREWIRE, SPI e I 2 C INTERFACES COM O MUNDO ANALÓGICO Interfaces para periféricos de armazenamento: Periféricos de armazenamento,
1. CAPÍTULO COMPUTADORES
1. CAPÍTULO COMPUTADORES 1.1. Computadores Denomina-se computador uma máquina capaz de executar variados tipos de tratamento automático de informações ou processamento de dados. Os primeiros eram capazes
CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA
8 CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA A porta paralela, também conhecida por printer port ou Centronics e a porta serial (RS-232) são interfaces bastante comuns que, apesar de estarem praticamente
Aula 04 B. Interfaces. Prof. Ricardo Palma
Aula 04 B Interfaces Prof. Ricardo Palma Interface SCSI SCSI é a sigla de Small Computer System Interface. A tecnologia SCSI (pronuncia-se "scuzzy") permite que você conecte uma larga gama de periféricos,
Disciplina: Introdução à Informática Profª Érica Barcelos
Disciplina: Introdução à Informática Profª Érica Barcelos CAPÍTULO 4 1. ARQUITETURA DO COMPUTADOR- HARDWARE Todos os componentes físicos constituídos de circuitos eletrônicos interligados são chamados
Programação em BASIC para o PIC Mostrando Mensagens no Display LCD Vitor Amadeu Souza
Programação em BASIC para o PIC Mostrando Mensagens no Display LCD Vitor Amadeu Souza Introdução Nesta terceira série de artigos que aborda a programação na linguagem BASIC para o microcontrolador PIC,
Serial Paralela USB FireWire(IEEE1394)
Serial Paralela USB FireWire(IEEE1394) histórico Tudo começou em 1980 quando a IBM estava desenvolvendo seu primeiro micro PC. Já haviam definido que o barramento ISA seria usado para permitir que o IBM
Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)
Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,
Introdução aos Computadores
Os Computadores revolucionaram as formas de processamento de Informação pela sua capacidade de tratar grandes quantidades de dados em curto espaço de tempo. Nos anos 60-80 os computadores eram máquinas
Sistemas Operacionais
Sistemas Operacionais Sistemas Operacionais Prof. Marcelo Sabaris Carballo Pinto Gerenciamento de Dispositivos Gerenciamento de Dispositivos de E/S Introdução Gerenciador de Dispositivos Todos os dispositivos
Vitor Amadeu Souza. [email protected]
Introdução Vitor Amadeu Souza [email protected] Veremos agora os passos para enviar uma string de caracteres pela USB. Porém antes veremos um tutorial referente a porta USB. Tutorial USB Sistema de
Introdução sobre à porta USB
Introdução sobre à porta USB O USB (Universal Serial Bus) surgiu em 1995 com uma parceria entre várias companhias de alta tecnologia (Compaq, Hewlett-Packard, Intel, Lucent, Microsoft, NEC e Philips).
3. Arquitetura Básica do Computador
3. Arquitetura Básica do Computador 3.1. Modelo de Von Neumann Dar-me-eis um grão de trigo pela primeira casa do tabuleiro; dois pela segunda, quatro pela terceira, oito pela quarta, e assim dobrando sucessivamente,
A idéia hardware sugerida é colocar a placa entre o PC e o microcontrolador, conforme mostrado no esquema abaixo.
Circuito de gravação (AVR programmer) Introdução Nossa proposta, nesta parte do trabalho, é apresentar um circuito para gravação ISP (In-System- Programming) para microcontroladores AVR. Este circuito,
Placa Acessório Modem Impacta
manual do usuário Placa Acessório Modem Impacta Parabéns, você acaba de adquirir um produto com a qualidade e segurança Intelbras. A Placa Modem é um acessório que poderá ser utilizado em todas as centrais
Prof. Daniel Gondim [email protected]. Informática
Prof. Daniel Gondim [email protected] Informática Componentes de um SC Barramento Também conhecido como BUS É um conjunto de linhas de comunicação que permitem a interligação entre dispositivos,
Prof. Esp. Lucas Cruz
Prof. Esp. Lucas Cruz O hardware é qualquer tipo de equipamento eletrônico utilizado para processar dados e informações e tem como função principal receber dados de entrada, processar dados de um usuário
IW10. Rev.: 02. Especificações Técnicas
IW10 Rev.: 02 Especificações Técnicas Sumário 1. INTRODUÇÃO... 1 2. COMPOSIÇÃO DO IW10... 2 2.1 Placa Principal... 2 2.2 Módulos de Sensores... 5 3. APLICAÇÕES... 6 3.1 Monitoramento Local... 7 3.2 Monitoramento
5 Entrada e Saída de Dados:
5 Entrada e Saída de Dados: 5.1 - Arquitetura de Entrada e Saída: O sistema de entrada e saída de dados é o responsável pela ligação do sistema computacional com o mundo externo. Através de dispositivos
Componentes de um computador típico
Componentes de um computador típico Assim como em um videocassete, no qual é necessário ter o aparelho de vídeo e uma fita contendo o filme que será reproduzido, o computador possui a parte física, chamada
CAPÍTULO 4 Interface USB
Interfaces e Periféricos 29 CAPÍTULO 4 Interface USB Introdução Todo computador comprado atualmente possui uma ou mais portas (conectores) USB. Estas portas USB permitem que se conecte desde mouses até
Programa de Atualização de Pontos do Lince GPS
Esse programa atualiza os pontos do software Lince GSP em aparelhos portáteis, como navegadores e celulares. A Robotron mantém um serviço de fornecimento de pontos de controle de velocidade aos aparelhos
IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira
IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários
R S Q 0 0 1 0 1 0 1 0 0 1 1 0 Tabela 17 - Tabela verdade NOR
19 Aula 4 Flip-Flop Flip-flops são circuitos que possuem a característica de manter os bits de saída independente de energia, podem ser considerados os princípios das memórias. Um dos circuitos sequenciais
Tecnologia PCI express. Introdução. Tecnologia PCI Express
Tecnologia PCI express Introdução O desenvolvimento de computadores cada vez mais rápidos e eficientes é uma necessidade constante. No que se refere ao segmento de computadores pessoais, essa necessidade
Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui.
3 Tecnologia FPGA Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui. 3.1. FPGA: Histórico, linguagens e blocos Muitos dos
O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware
1 2 Revisão de Hardware 2.1 Hardware O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 2.1.1 Processador O Processador
Tutorial de Auxílio. figura 1.0 programa de gravação
Tutorial de Auxílio O intuito deste material é facilitar o uso, por parte do aluno, das ferramentas de software indispensáveis para o trabalho com os microcontroladores, neste tutorial abordaremos o processo
Programa de Instalação do Lince GPS
Esse programa instala o software Lince GSP em aparelhos portáteis que tenham GPS, como navegadores e celulares. O software Lince GPS é um programa destinado a alertar sobre a aproximação a pontos previamente
SCD 912. Dispositivo de comunicação e armazenamento. Apresentação. Dados Técnicos. Conexões
Conv. USB-Serial Baudrate, stop bit e nro de dados programável. Baudrate de 1200 a 38400 bauds. Emula porta COM virtual. Led de indicação de operação como conversor USB-serial. Não possui linhas de controle
Visão Geral de Sistemas Operacionais
Visão Geral de Sistemas Operacionais Sumário Um sistema operacional é um intermediário entre usuários e o hardware do computador. Desta forma, o usuário pode executar programas de forma conveniente e eficiente.
www.vwsolucoes.com Copyright 2013 VW Soluções
1 1. Especificação técnicas: Dimensões do módulo 4EA2SA v1.0: 100 mm x 56 mm Peso aproximado: xxx gramas (montada). Alimentação do circuito : 12 ou 24Vcc Tipo de comunicação: RS232 ou RS485 Tensão de referencia:
Componentes de um Sistema de Computador
Componentes de um Sistema de Computador HARDWARE: unidade responsável pelo processamento dos dados, ou seja, o equipamento (parte física) SOFTWARE: Instruções que dizem o que o computador deve fazer (parte
Arquitetura e Organização de Computadores I
Arquitetura e Organização de Computadores I Interrupções e Estrutura de Interconexão Prof. Material adaptado e traduzido de: STALLINGS, William. Arquitetura e Organização de Computadores. 5ª edição Interrupções
Prof. Sandrina Correia
Tecnologias de I informação de C omunicação 9º ANO Prof. Sandrina Correia TIC Prof. Sandrina Correia 1 Objectivos Definir os conceitos de Hardware e Software Identificar os elementos que compõem um computador
6 - Gerência de Dispositivos
1 6 - Gerência de Dispositivos 6.1 Introdução A gerência de dispositivos de entrada/saída é uma das principais e mais complexas funções do sistema operacional. Sua implementação é estruturada através de
Easy Lab. Manual do usuário Revisão 1.2 01/11/14. www.dma.ind.br. DMA Electronics 1
Easy Lab Manual do usuário Revisão 1.2 01/11/14 www.dma.ind.br DMA Electronics 1 A DMA ELECTRONICS projeta e fabrica sistemas para aquisição e registro de dados com conexão a um computador do tipo PC.
Leitor MaxProx-Lista-PC
Leitor MaxProx-Lista-PC O leitor de cartões de proximidade MaxProx-Lista-PC é destinado aos Integradores de Controle de Acesso. Ele foi especialmente projetado para controle de acesso, para ser usado Stand
INTRODUÇÃO BARRAMENTO PCI EXPRESS.
INTRODUÇÃO BARRAMENTO EXPRESS. O processador se comunica com os outros periféricos do micro através de um caminho de dados chamado barramento. Desde o lançamento do primeiro PC em 1981 até os dias de hoje,
Guilherme Pina Cardim. Relatório de Sistemas Operacionais I
Guilherme Pina Cardim Relatório de Sistemas Operacionais I Presidente Prudente - SP, Brasil 30 de junho de 2010 Guilherme Pina Cardim Relatório de Sistemas Operacionais I Pesquisa para descobrir as diferenças
Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB
Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha
SISTEMA DE MONITORAMENTO DIGITAL
SISTEMA DE MONITORAMENTO DIGITAL Módulos para automação Características gerais - Processamento independente - Possui alerta sonoro e luminoso de falta de conexão - Não precisa ser configurado (Plug and
Processo de Instalação Limpa do Windows 8.1 em Computadores Philco
Processo de Instalação Limpa do Windows 8.1 em Computadores Philco O processo de Instalação Limpa irá remover todos os programas e arquivos de dados do seu computador, substituindo eles com uma instalação
Introdução a Informática. Prof.: Roberto Franciscatto
Introdução a Informática Prof.: Roberto Franciscatto 2.1 CONCEITO DE BIT O computador só pode identificar a informação através de sua elementar e restrita capacidade de distinguir entre dois estados: 0
FIREWIRE. O logotipo padronizado: Suas principais vantagens:
FIREWIRE O barramento Firewire, também conhecido como IEEE 1394 ou como i.link, foi desenvolvido inicialmente pela Apple Computer em 1996, como um barramento serial de alta velocidade, e transfere um grande
SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA
SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA 1. INTRODUÇÃO O conceito de concorrência é o princípio básico para o projeto e a implementação dos sistemas operacionais multiprogramáveis. O sistemas multiprogramáveis
Por razões, é requerido um módulo de E/S, que deve desempenhar duas funções principais:
Entrada e Saída Além do processador e da memória, um terceiro elemento fundamental de um sistema de computação é o conjunto de módulos de E/S. Cada módulo se conecta com o barramento do sistema ou com
Sistemas Operacionais. Roteiro. Hardware. Marcos Laureano
Sistemas Operacionais Marcos Laureano 1/25 Roteiro Estrutura de um sistema operacional Interrupções Proteção do núcleo Níveis de privilégio Chamadas de sistema 2/25 Mono-processadores atuais seguem um
Anexo IV PLANILHA DESCRITIVA DE ESPECIFICAÇÕES TÉCNICAS
Anexo IV PLANILHA DESCRITIVA DE ESPECIFICAÇÕES TÉCNICAS Requisito Descrição 6.1 - Produtos de Hardware 6.1.1. GRUPO 1 - IMPRESSORA TIPO I (MONOCROMÁTICA 20PPM - A4) 6.1.1.1. TECNOLOGIA DE IMPRESSÃO 6.1.1.1.1.
CDE4000 MANUAL 1. INTRODUÇÃO 2. SOFTWARE DE CONFIGURAÇÃO 3. COMUNICAÇÃO
CDE4000 MANUAL 1. INTRODUÇÃO O controlador CDE4000 é um equipamento para controle de demanda e fator de potência. Este controle é feito em sincronismo com a medição da concessionária, através dos dados
Curso Técnico de Nível Médio
Curso Técnico de Nível Médio Disciplina: Informática Básica 2. Hardware: Componentes Básicos e Funcionamento Prof. Ronaldo Componentes de um Sistema de Computador HARDWARE: unidade
Entrada e Saída. Prof. Leonardo Barreto Campos 1
Entrada e Saída Prof. Leonardo Barreto Campos 1 Sumário Introdução; Dispositivos Externos; E/S Programada; E/S Dirigida por Interrupção; Acesso Direto à Memória; Bibliografia. Prof. Leonardo Barreto Campos
Sistemas Operacionais Entrada / Saída. Carlos Ferraz ([email protected]) Jorge Cavalcanti Fonsêca ([email protected])
Sistemas Operacionais Entrada / Saída Carlos Ferraz ([email protected]) Jorge Cavalcanti Fonsêca ([email protected]) Tópicos Princípios do hardware de E/S Princípios do software de E/S Camadas do software
Infra-Estrutura de Hardware
Infra-Estrutura de Hardware P r o f. W i l t o n O. F e r r e i r a U n i v e r s i d a d e F e d e r a l R u r a l d e P e r n a m b u c o U F R P E 1 º S e m e s t r e / 2 0 1 2 Conteúdo da aula Hardware
Na primeira aula, conhecemos um pouco sobre o projeto Arduino, sua família de placas, os Shields e diversos exemplos de aplicações.
Na primeira aula, conhecemos um pouco sobre o projeto Arduino, sua família de placas, os Shields e diversos exemplos de aplicações. A partir de agora, iremos conhecer o hardware do Arduino e suas caracteristicas
Orientação a Objetos
1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Prof. André Dutton
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES Prof. André Dutton EMENTA: Conceitos fundamentais e histórico da ciência da computação; Histórico dos computadores, evolução e tendências; Modalidades de computadores
Um Driver NDIS Para Interceptação de Datagramas IP
Um Driver NDIS Para Interceptação de Datagramas IP Paulo Fernando da Silva [email protected] Sérgio Stringari [email protected] Resumo. Este artigo apresenta o desenvolvimento de um driver NDIS 1 para
Universal Serial Bus USB
Universal Serial Bus USB Walter Fetter Lages [email protected] Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica Microprocessadores II Copyright (c) Walter
Sistemas Operacionais
Sistemas Operacionais Sistemas de Entrada/Saída Princípios de Hardware Sistema de Entrada/Saída Visão Geral Princípios de Hardware Dispositivos de E/S Estrutura Típica do Barramento de um PC Interrupções
INTERFACE USB PARA PROFIBUS PA
MANUAL DO USUÁRIO INTERFACE USB PARA PROFIBUS PA OUT / 12 PBI-PLUS P B I P L U S M P smar www.smar.com.br Especificações e informações estão sujeitas a modificações sem prévia consulta. Informações atualizadas
Guia do Usuário Placa de Desenvolvimento McLab1
Placa de Desenvolvimento McLab1 Sumário 1. APRESENTAÇÃO...3 2. HARDWARE...4 2.1. MICROCONTROLADOR PIC16F628A...4 2.2. DISPLAYS DE 7 SEGMENTOS...5 2.3. TECLAS...5 2.4. LEDS...6 2.5. LÂMPADA...6 2.6. BOTÃO
MANUAL DE INSTALAÇÃO E PROGRAMAÇÃO CONVERSOR - IP / USB / SERIAL - 317 RV1
MANUAL DE INSTALAÇÃO E PROGRAMAÇÃO CONVERSOR - IP / USB / SERIAL - 317 RV1 SÃO CAETANO DO SUL 06/06/2014 SUMÁRIO Descrição do Produto... 3 Características... 3 Configuração USB... 4 Configuração... 5 Página
ULA Sinais de Controle enviados pela UC
Solução - Exercícios Processadores 1- Qual as funções da Unidade Aritmética e Lógica (ULA)? A ULA é o dispositivo da CPU que executa operações tais como: Adição Subtração Multiplicação Divisão Incremento
ÍNDICE 1. INTRODUÇÃO... 3 2. DESCRIÇÃO DO PICKIT2... 4. 2.1. Ligação da porta USB... 4. 2.2. LEDs de estado... 4. 2.3. Botão... 5
MANUAL PICKIT2 ÍNDICE 1. INTRODUÇÃO... 3 2. DESCRIÇÃO DO PICKIT2... 4 2.1. Ligação da porta USB... 4 2.2. LEDs de estado... 4 2.3. Botão... 5 2.4. Conector de programação... 5 2.5. Slot para chaveiro...
Figura 1 - O computador
Organização e arquitectura dum computador Índice Índice... 2 1. Introdução... 3 2. Representação da informação no computador... 4 3. Funcionamento básico dum computador... 5 4. Estrutura do processador...
Notas da Aula 15 - Fundamentos de Sistemas Operacionais
Notas da Aula 15 - Fundamentos de Sistemas Operacionais 1. Software de Entrada e Saída: Visão Geral Uma das tarefas do Sistema Operacional é simplificar o acesso aos dispositivos de hardware pelos processos
Como instalar uma impressora?
Como instalar uma impressora? Antes de utilizar uma impressora para imprimir seus documentos, arquivos, fotos, etc. é necessário instalá-la e configurá-la no computador. Na instalação o computador se prepara
Arquitetura de Computadores. Tipos de Instruções
Arquitetura de Computadores Tipos de Instruções Tipos de instruções Instruções de movimento de dados Operações diádicas Operações monádicas Instruções de comparação e desvio condicional Instruções de chamada
Application Note FBEE Comunicação Serial Wireless REV01. - 1 - Rev01
Application Note FBEE Comunicação Serial Wireless REV01-1 - Rev01 1. INTRODUÇÃO Aplicações com redes sem fio vêm se tornando bastante comuns. De aplicações industriais a projetos específicos, criou-se
Arquitetura de Computadores Arquitetura de entrada e saída
Arquitetura de Entrada e Saída Arquitetura de Computadores Arquitetura de entrada e saída Barramento Meio de transmissão de dados entre a CPU, a memória principal e os dispositivos de entrada e saída.
MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos
MÓDULO 7 Modelo OSI A maioria das redes são organizadas como pilhas ou níveis de camadas, umas sobre as outras, sendo feito com o intuito de reduzir a complexidade do projeto da rede. O objetivo de cada
Tutorial de Utilização do CellControl SMS I/O em rede DXNET com CLP Dexter µdx série 200
Tutorial de Utilização do CellControl SMS I/O em rede DXNET com CLP Dexter µdx série 200 julho/2010 GSControl Automação Ltda. Rua Washington Luiz, 675 ITC Conjunto 1101 Centro Porto Alegre RS CEP 90010-460
MEMÓRIA. 0 e 1 únicos elementos do sistema de numeração de base 2
MEMÓRIA CONCEITO Bit- 0 1 Essência de um sistema chamado BIESTÁVEL Ex: Lâmpada 0 apagada 1 acesa 0 e 1 únicos elementos do sistema de numeração de base 2 A que se destina a memória: Armazenamento das instruções
SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com
- Aula 2-1. PRINCÍPIOS DE SOFTWARE DE ENTRADA E SAÍDA (E/S) As metas gerais do software de entrada e saída é organizar o software como uma série de camadas, com as mais baixas preocupadas em esconder as
3. Cite o nome e características do ponto mais alto e do ponto mais baixo de uma onda?
Exercícios: 1. Sobre:Ondas Responda: a. O que é a Natureza de Ondas? b. O que origina as Ondas Mecânicas? c. As Ondas Mecânicas se propagam no vácuo? Explique a sua resposta. d. Quais são os elementos
ARQUITETURA DE COMPUTADORES
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100
Alarme Automotivo com mensagem para móvel utilizando Arduino
Alarme Automotivo com mensagem para móvel utilizando Arduino Maycon Cirilo dos Santos¹, Wyllian Fressatti¹ ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil [email protected], [email protected]
INDICE 1. INTRODUÇÃO... 3 2. CONFIGURAÇÃO MÍNIMA... 4 3. INSTALAÇÃO... 4 4. INTERLIGAÇÃO DO SISTEMA... 5 5. ALGUNS RECURSOS... 6 6. SERVIDOR BAM...
1 de 30 INDICE 1. INTRODUÇÃO... 3 2. CONFIGURAÇÃO MÍNIMA... 4 3. INSTALAÇÃO... 4 3.1. ONDE SE DEVE INSTALAR O SERVIDOR BAM?... 4 3.2. ONDE SE DEVE INSTALAR O PROGRAMADOR REMOTO BAM?... 4 3.3. COMO FAZER
Sistemas Operacionais. Prof. André Y. Kusumoto [email protected]
Sistemas Operacionais Prof. André Y. Kusumoto [email protected] Estruturas de Sistemas de Computação O sistema operacional precisa garantir a operação correta do sistema de computação. Operação
Fundamentos de Hardware
Fundamentos de Hardware Curso Técnico em Informática SUMÁRIO PLACAS DE EXPANSÃO... 3 PLACAS DE VÍDEO... 3 Conectores de Vídeo... 4 PLACAS DE SOM... 6 Canais de Áudio... 7 Resolução das Placas de Som...
Universidade Tuiuti do Paraná UTP Faculdade de Ciências Exatas - FACET
Universidade Tuiuti do Paraná UTP Faculdade de Ciências Exatas - FACET Hardware de Computadores Questionário II 1. A principal diferença entre dois processadores, um deles equipado com memória cache o
ARQUITETURA DE COMPUTADORES - 1866
6.7 Operações com as Memórias: Já sabemos, conforme anteriormente citado, que é possível realizar duas operações em uma memória: Escrita (write) armazenar informações na memória; Leitura (read) recuperar
ARQUITETURA DE COMPUTADORES - 1866
7 Unidade Central de Processamento (UCP): O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento e de controle, durante a execução de um
Guia Rápido de Comunicação USB via HID Terminal em Microcontroladores PIC
Guia Rápido de Comunicação USB via HID Terminal em Microcontroladores PIC Autor: Eng. Rahul Martim Juliato ([email protected]) Este artigo apresenta de forma prática alguns passos para realizar uma
Visão Computacional. Alessandro L. Koerich. Programa de Pós-Graduação em Engenharia Elétrica Universidade Federal do Paraná (UFPR)
Visão Computacional Alessandro L. Koerich Programa de Pós-Graduação em Engenharia Elétrica Universidade Federal do Paraná (UFPR) Interfaces Câmera PC Analógica, Firewire, GigE, Camera Link, USB Introdução
Sistemas Operacionais Gerência de Dispositivos
Universidade Estadual de Mato Grosso do Sul UEMS Curso de Licenciatura em Computação Sistemas Operacionais Gerência de Dispositivos Prof. José Gonçalves Dias Neto [email protected] Introdução A gerência
Tutorial de Utilização do CellControl SMS 200 em rede DXNET com CLP Dexter µdx série 200
Tutorial de Utilização do CellControl SMS 200 em rede DXNET com CLP Dexter µdx série 200 Novembro/2009 GSControl Automação Ltda. Rua Washington Luiz, 675 ITC Conjunto 1101 Centro Porto Alegre RS CEP 90010-460
ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET
INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET 2010/2011 1 Protocolo TCP/IP É um padrão de comunicação entre diferentes computadores e diferentes sistemas operativos. Cada computador deve
Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.
Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores. 7.3.1.2 Registradores: São pequenas unidades de memória, implementadas na CPU, com as seguintes características:
Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação
Multiplexadores Permitem que vários equipamentos compartilhem um único canal de comunicação Transmissor 1 Receptor 1 Transmissor 2 Multiplexador Multiplexador Receptor 2 Transmissor 3 Receptor 3 Economia
Comunicação Serial com o AVR ATMEGA8
Comunicação Serial com o AVR ATMEGA8 Vitor Amadeu Souza [email protected] Introdução Os microcontroladores AVR vem a cada dia tomando cada vez mais espaço nos novos projetos eletrônicos microcontrolados.
Introdução a Ciência da Computação Conceitos Básicos de Sistema PROFESSORA CINTIA CAETANO
Introdução a Ciência da Computação Conceitos Básicos de Sistema PROFESSORA CINTIA CAETANO Introdução A informática é uma área que atualmente vem evoluindo muito rapidamente. A cada dia se torna mais importante
AULA 5 Sistemas Operacionais
AULA 5 Sistemas Operacionais Disciplina: Introdução à Informática Professora: Gustavo Leitão Email: [email protected] Sistemas Operacionais Conteúdo: Partições Formatação Fragmentação Gerenciamento
USB - Introdução. Meios Eletrônicos I 2011
USB - Introdução Meios Eletrônicos I 2011 História USB: Universal Serial Bus Criado pela Intel em 1994, junto com outras empresas (Microsoft, HP, NEC, Apple) Facilita a conexão de dispositivos periféricos
Motorola Phone Tools. Início Rápido
Motorola Phone Tools Início Rápido Conteúdo Requisitos mínimos... 2 Antes da instalação Motorola Phone Tools... 3 Instalar Motorola Phone Tools... 4 Instalação e configuração do dispositivo móvel... 5
Como posso usar o HP Easy Printer Care através de USB ou conexão paralela?
HP Easy Printer Care Perguntas freqüentes Como posso usar o HP Easy Printer Care através de USB ou conexão paralela? O HP Easy Printer Care só pode ser usado através de USB ou de uma conexão paralela se
BIOS, BOOT, CMOS e CMOS Setup. Prof. César Couto
BIOS, BOOT, CMOS e CMOS Setup Prof. César Couto BIOS Quando o computador é ligado, o processador executa instruções da memória ROM (Read Only Memory). A ROM preserva o conteúdo quando o computador é desligado.
