12.04.2013 Views

Osciloscópio Digital De 4 canais e Analisador Lógico ... - DEE-Logo

Osciloscópio Digital De 4 canais e Analisador Lógico ... - DEE-Logo

Osciloscópio Digital De 4 canais e Analisador Lógico ... - DEE-Logo

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Osciloscópio</strong> <strong>Digital</strong> <strong>De</strong> 4 <strong>canais</strong> e<br />

<strong>Analisador</strong> <strong>Lógico</strong> de até 16 Canais<br />

Renato Batista Pereira<br />

1030375<br />

<strong>De</strong>partamento de Engenharia Electrotécnica<br />

Instituto Superior de Engenharia do Porto<br />

2009<br />

1


Este relatório satisfaz, parcialmente, os requisitos que constam da Ficha da<br />

Disciplina<br />

Seminário/Estágio, do 3º ano, da Licenciatura em Engenharia Electrotécnica e de<br />

Computadores<br />

Candidato: Renato Batista Pereira, Nº 1030375, 1030375@isep.ipp.pt<br />

Orientação científica: José Miguel Lopes Vieira dos Santos, jvs@isep.ipp.pt<br />

Organização: Instituto Superior de Engenharia do Porto<br />

Supervisão: José Miguel Lopes Vieira dos Santos, jvs@isep.ipp.pt<br />

<strong>De</strong>partamento de Engenharia Electrotécnica<br />

Instituto Superior de Engenharia do Porto<br />

25 de Março de 2009<br />

2


Agradecimentos<br />

Agradecemos a atenção dada pelo engenheiro José Miguel Lopes Vieira dos Santos,<br />

pela ajuda dada e pela oportunidade de poder realizar este projecto. Agradecemos<br />

também aos elementos do <strong>De</strong>partamento de Engenharia Electrotécnica e aos da<br />

Direcção do ISEP por nos permitir usar os laboratórios fora do horário de aulas.<br />

Agradecemos a colaboração dos fabricantes que nos forneceram amostras de alguns<br />

componentes utilizados no nosso projecto.<br />

Microchip, Maxim e Cypress Semiconductors.<br />

3


Resumo<br />

Este projecto é baseado no desenvolvimento de um <strong>Osciloscópio</strong> <strong>Digital</strong> de 4 <strong>canais</strong><br />

e <strong>Analisador</strong> <strong>Lógico</strong> de até 16 <strong>canais</strong>, em PC.<br />

Através da análise prévia dos requisitos, foram determinados quais os métodos a<br />

aplicar, os componentes que poderiam ser mais apropriados e organizado o<br />

desenvolvimento do projecto por várias etapas. Entre vários tipos de interface de<br />

comunicação do sistema com o PC, a escolha recaiu sobre o interface USB, visto este<br />

projecto ter como requisitos principais a elevada rapidez de comunicação com o PC,<br />

com a finalidade da transmissão de dados amostrados por 4 <strong>canais</strong> analógicos e 16<br />

<strong>canais</strong> digitais.<br />

O microprocessador utilizado para a realização deste trabalho foi a PIC 18F4550,<br />

pois possui um módulo USB integrado, que atinge velocidade teórica máxima de<br />

12Mbits por segundo.<br />

O condicionamento de sinal analógico foi conseguido através de AD’s de 8bits<br />

paralelos, Multiplexer’s Analógicos e Amplificadores Operacionais. Utilizou-se<br />

também 2 buffer’s digitais de 8 bits cada para isolar e proteger o circuito na obtenção<br />

de sinal digital. Ponderámos o uso de um módulo exterior com Fifo’s, de 18 bits<br />

paralelo e com 32K memória, com o intuito de fazer a amostragem digital,<br />

armazenando-a em tempo real e descarregando os dados para o PC assim que fossem<br />

requisitados.<br />

O software da PIC foi desenvolvido no compilador MPLAB C18 da Microchip, e foi<br />

baseado no exemplo genérico de HID USB MOUSE. O software no PC foi<br />

desenvolvido com recurso ao Visual Basic 6.0. Todos os esquemas e desenho de<br />

placa de circuito impresso foram desenvolvidos no Eagle da Cadsoft.<br />

Palavras-Chave<br />

USB “Universal Serial Bus”, <strong>Analisador</strong> lógico de 16 <strong>canais</strong>, <strong>Osciloscópio</strong> digital.<br />

4


Abstract<br />

This project is based on the development of a 4 channel <strong>Digital</strong> Oscilloscope and 16<br />

channel Logic Analyser, with PC communication.<br />

By previous analysis of the requirements, it was agreed which methods to apply, the<br />

components to use and the several steps of the project development were organized.<br />

Among many possible interfaces, the USB interface was selected due to its<br />

bandwidth and transmission rate, which comply with the heavy requirements needed<br />

for the transmission of the signal attained through sampling of 4 analog input<br />

channels and 16 digital input channels.<br />

The PIC 18F4550 was selected because it has an integrated USB module, with<br />

12Mbit of maximum theoretical transfer speed.<br />

The analog signal manipulation was made through Analog Multiplexer’s,<br />

Operational Amplifiers and Analog-to-<strong>Digital</strong> Converters. It was also used <strong>Digital</strong> 8<br />

bit Buffer’s to isolate and protect the circuit. It was also considered to use a Fifo to<br />

store the digital samples in real time and send them to the PC through the PIC when<br />

they were needed.<br />

The PIC software was developed in Microchip C18 compiler and was based in HID<br />

USB MOUSE generic example. The PC software was developed in Visual Basic 6.0.<br />

All of the schematics were developed in Cadsoft Eagle.<br />

Keywords<br />

USB “Universal Serial Bus”, Logic Analyser of 16 channels, <strong>Digital</strong> Oscilloscope.<br />

5


Índice<br />

Agradecimentos ........................................................................................................... 3<br />

Resumo ........................................................................................................................ 4<br />

Abstract........................................................................................................................ 5<br />

Índice ........................................................................................................................... 6<br />

Índice de Figuras.......................................................................................................... 9<br />

Índice de Tabelas ....................................................................................................... 11<br />

Acrónimos.................................................................................................................. 12<br />

1 – Introdução ............................................................................................................ 13<br />

1.1 - Contextualização.............................................................................................13<br />

1.2 – Objectivos ......................................................................................................14<br />

1.3 - Calendarização................................................................................................15<br />

1.4- Organização Do Relatório ...............................................................................15<br />

2 - Pesquisa efectuada................................................................................................ 16<br />

2.1 - USB (Universal Serial Bus)............................................................................17<br />

2.1.2 - O que é USB............................................................................................ 17<br />

2.1.3 - Características técnicas ........................................................................... 19<br />

2.1.4 - Estrutura eléctrica e sinais do cabo USB ................................................ 19<br />

2.1.5 - Tipos de interfaces .................................................................................. 20<br />

2.1.6 - Protocolo USB ........................................................................................ 21<br />

2.1.7 – <strong>De</strong>scritores.............................................................................................. 22<br />

2.1.8 - Processo de enumeração ......................................................................... 22<br />

2.2 – Comunicação RS232......................................................................................22<br />

2.2.1 - <strong>De</strong>talhes do padrão.................................................................................. 23<br />

2.2.2 – Configurações......................................................................................... 26<br />

2.3 - Ethernet...........................................................................................................27<br />

2.3.1 – História ................................................................................................... 28<br />

2.3.2 - <strong>De</strong>scrição geral........................................................................................ 29<br />

2.3.3 - Ethernet com meio compartilhado CSMA/CD ....................................... 29<br />

2.3.4 - Hubs Ethernet.......................................................................................... 31<br />

6


2.3.5 - Ethernet Comutada (Switched Ethernet)................................................. 31<br />

2.3.6 - Tipos de quadro Ethernet e o campo EtherType..................................... 32<br />

2.3.7 - Variedades de Ethernet ........................................................................... 33<br />

2.3.8 - Algumas variedades antigas de Ethernet................................................. 33<br />

2.3.9 - 10 Mbit/s Ethernet................................................................................... 34<br />

2.3.10 - Fast Ethernet.......................................................................................... 35<br />

2.3.11- Gigabit Ethernet ..................................................................................... 36<br />

2.3.12 – “10-Gigabit Ethernet”........................................................................... 36<br />

2.3.13 - Padrões Relacionados............................................................................ 37<br />

2.4 - Microcontrolador PIC .....................................................................................38<br />

2.4.1 - Periféricos internos.................................................................................. 38<br />

2.4.2 - Programação e desenvolvimento............................................................. 39<br />

2.4.3 - Modelos comuns de PICs........................................................................ 39<br />

2.4.4 - Aplicações ............................................................................................... 40<br />

2.4.5 – História ................................................................................................... 40<br />

2.4.6 - Curiosidade Científica............................................................................. 41<br />

2.4.7 - Do controle de portas para controlador RISC......................................... 42<br />

3 - Opções de projecto ............................................................................................... 44<br />

3.1 - Avaliação dos requisitos .................................................................................44<br />

3.2 - USB.................................................................................................................45<br />

3.3 - PIC 18F4550...................................................................................................45<br />

3.4 - Construção do Programador ...........................................................................46<br />

3.5 - Compilador (Assembly ou C).........................................................................46<br />

3.6 - Visual Basic 6 .................................................................................................47<br />

3.7 - Condicionamento sinal [Analógico e <strong>Digital</strong>] ................................................48<br />

3.8 - FIFO’s.............................................................................................................48<br />

3.9 - Investigação sobre alimentação do circuito. ...................................................49<br />

4 - <strong>De</strong>scrição do Circuito ........................................................................................... 50<br />

4.1 - <strong>De</strong>senvolvimento da placa de comunicação USB: .........................................50<br />

4.2 - Placa programadora ........................................................................................51<br />

4.3 - Condicionamento de sinal...............................................................................52<br />

4.4 - Conversão Analógico para <strong>Digital</strong>..................................................................55<br />

4.5 - PIC18F4550....................................................................................................55<br />

7


4.6 – Esquema da Placa Global...............................................................................56<br />

4.8 - PCB do esquema Global.................................................................................57<br />

5 - <strong>De</strong>scrição do Programa/Código............................................................................ 58<br />

5.1 - Software Bootloader .......................................................................................58<br />

5.2 - Software Placa Principal e Periféricos............................................................62<br />

5.3 – Software de Interface Gráfica no PC .............................................................65<br />

6 - Placa Programadora.............................................................................................. 69<br />

6.1 - Programador JDM...........................................................................................69<br />

6.2 - Construção ......................................................................................................70<br />

6.3 – Utilização .......................................................................................................71<br />

6.4 – Software .........................................................................................................72<br />

7 – Construção caseira de PCB.................................................................................. 76<br />

Método com Lâmpadas UV ....................................................................................76<br />

Método com ferro de engomar................................................................................80<br />

8 - Conclusão ............................................................................................................. 84<br />

Referências Documentais .......................................................................................... 86<br />

Anexo A..................................................................................................................... 90<br />

Placa de Aquisição de dados USB ..........................................................................90<br />

Anexo B. .................................................................................................................... 91<br />

Placa de tratamento de dados:.................................................................................91<br />

Anexo C. .................................................................................................................... 92<br />

Placa de aquisição de sinal:.....................................................................................92<br />

Anexo D..................................................................................................................... 93<br />

Fonte de alimentação: .............................................................................................93<br />

Anexo E. .................................................................................................................... 94<br />

Bootloader: (anexo digital) .....................................................................................94<br />

Anexo F...................................................................................................................... 95<br />

Código PIC: (anexo digital) ....................................................................................95<br />

Anexo G..................................................................................................................... 96<br />

Microchip C18 Toolsuite ........................................................................................96<br />

8


Índice de Figuras<br />

Figura 1- Calendarização ........................................................................................... 15<br />

Figura 2 – PCS100A.................................................................................................. 16<br />

Figura 3 – USB Basic Board...................................................................................... 50<br />

Figura 4 – Programador JDM .................................................................................... 51<br />

Figura 5 – Fluxograma Hardware.............................................................................. 52<br />

Figura 6 – Condicionamento de sinal universal......................................................... 53<br />

Figura 7 – Circuito básico para o AD MAX154........................................................ 55<br />

Figura 8 – Circuito global em schematic ................................................................... 56<br />

Figura 9 – Circuito global em PCB ........................................................................... 57<br />

Figura 10 – USB Bootloader Version 1.00................................................................ 59<br />

Figura 11 – Fluxograma Software PIC ...................................................................... 60<br />

Figura 12 – Ilustração USB PICDEM(TM)............................................................... 62<br />

Figura 13 – Firmaware Mouse <strong>De</strong>mo ........................................................................ 63<br />

Figura 14 – Processo de inicialização........................................................................ 64<br />

Figura 15 – Interface windows .................................................................................. 66<br />

Figura 16 – Interface Windows basica ...................................................................... 66<br />

Figura 17 – Programador JDM em schematic ........................................................... 69<br />

Figura 18 – Programador JDM em PCB.................................................................... 70<br />

Figura 19 – Programador em schematic completo .................................................... 71<br />

Figura 20 – Palabras de configuração........................................................................ 72<br />

Figura 21 – Interface principal WinPic800................................................................ 73<br />

Figura 22 – <strong>De</strong>tecção de pic no WinPic800 .............................................................. 73<br />

Figura 23 – Processo de escrita WinPic800............................................................... 75<br />

Figura 24 – Placa de cobre......................................................................................... 76<br />

Figura 25 – Cobre polido........................................................................................... 77<br />

Figura 26 – Acetado do layout................................................................................... 77<br />

Figura 27 – Maquina de foto impressão .................................................................... 78<br />

Figura 28 – Corrosão em percloreto de ferro............................................................. 78<br />

Figura 29 – Experiencias especiais............................................................................ 79<br />

9


Figura 30 – PCB estanhado ....................................................................................... 79<br />

Figura 31 – layout em papel fotografico.................................................................... 80<br />

Figura 32 – Foto impressão ....................................................................................... 81<br />

Figura 33 – Aquecimento com ferro de engomar ...................................................... 81<br />

Figura 34 – Mergulho em água.................................................................................. 82<br />

Figura 35 – limpeza do exesso de papel .................................................................... 82<br />

Figura 36 – Placa concluida....................................................................................... 83<br />

Figura 37 – USB PCB board...................................................................................... 90<br />

Figura 38 – USB layout Board .................................................................................. 90<br />

Figura 39 – Placa de tratamento de dados PCB......................................................... 91<br />

Figura 40 Placa de tratamento de dados SCH............................................................ 91<br />

Figura 41 – Condicionamento de Sinal PCB e SCH ................................................. 92<br />

Figura 42 – Fonte de alimentação PCB e SCH.......................................................... 93<br />

Figura 43 – Bootloader code...................................................................................... 94<br />

Figura 44 – PIC code ................................................................................................. 95<br />

Figura 45 – Configuração de palavras no MPLAB ................................................... 98<br />

10


Índice de Tabelas<br />

Tabela 1 – <strong>Analisador</strong> lógico no mercado ................................................................. 17<br />

Tabela 2 – RS232 pinagem........................................................................................ 25<br />

Tabela 3 – Protocolo TCP/IP..................................................................................... 28<br />

Tabela 4 – Tabela MAX338 ...................................................................................... 53<br />

Tabela 5 – Ganhos de selecção de tensão .................................................................. 54<br />

Tabela 6 – Estado de funcionamento USB ................................................................ 65<br />

11


Acrónimos<br />

API – Application Programming Interface<br />

CSMA/CD – Carrier Sense Multiple Access/Collision <strong>De</strong>tection<br />

USB – Universal Serial Bus<br />

FIFO – First In First Out<br />

12


1 – Introdução<br />

Um osciloscópio é uma ferramenta que se pode considerar o braço direito de um<br />

Engenheiro, pois, no que diz respeito ao desenvolvimento de um projecto,<br />

manutenção ou reparação de equipamentos é uma ferramenta de mais-valia. Em<br />

aplicações de electrónica analógica seria muito difícil criar ou reparar um circuito<br />

sem um osciloscópio, pois com ele, podemos observar em tempo real todo o processo<br />

do sinal entre a saída e a entrada do circuito. <strong>De</strong>ste modo, podemos observar onde<br />

existe o problema e concentrar forças para o resolver enquanto que a utilização de<br />

um multímetro pouca informação nos daria.<br />

Um analisador lógico também é uma ferramenta útil em várias áreas da electrónica.<br />

Com ele podemos analisar um barramento inteiro, bem como sinais de controlo e<br />

dados e verificar se os dados enviados ou recebidos correspondem aos esperados,<br />

comparando com os dados para o qual o circuito foi projectado.<br />

1.1 - Contextualização<br />

Este trabalho está a ser realizado no âmbito da cadeira de Seminário/Estágio do<br />

Instituto Superior de Engenharia do Porto, no qual os alunos envolvidos devem criar<br />

um projecto de elevado grau de dificuldade, para poder testar, aprofundar e<br />

desenvolver os conhecimentos adquiridos ao longo do curso. Este trabalho tenta<br />

ajudar na preparação do aluno de maneira eficaz para o mundo de trabalho, visto que<br />

na realidade, o mundo de trabalho acarreta dificuldades em que o aluno deve estar<br />

preparado.<br />

13


1.2 – Objectivos<br />

O objectivo principal deste projecto é a aquisição de sinais analógicos e digitais,<br />

amostrados a várias frequências e transmitidos para o PC, para posteriormente serem<br />

processados e apresentados. <strong>De</strong>vido à extensão, ao grau de desenvolvimento e<br />

trabalho de investigação necessário para atingir os objectivos, o projecto foi dividido<br />

em várias etapas, com a finalidade de facilitar o controlo de erros e de simplificar o<br />

planeamento de cada etapa seguinte.<br />

As etapas podem ser consideradas as seguintes:<br />

• Investigação e escolha de equipamentos relevantes ao projecto;<br />

• Aquisição de amostras do equipamento escolhido ou equivalente;<br />

• Construção de um programador para a PIC;<br />

• Estudo de protocolos de comunicação possíveis entre PIC e PC, focando-se o<br />

USB, o seu modo de funcionamento e implementação. Estudo dos exemplos da<br />

Microchip;<br />

• Inserção do Bootloader na PIC e teste ao seu funcionamento correcto em<br />

breadboard;<br />

• <strong>De</strong>senvolvimento de um programa na PIC com o básico de comunicação USB e<br />

controlo por aplicação no PC. <strong>De</strong>senvolvimento em paralelo de aplicação em<br />

Visual Basic 6.0 para interface com o dispositivo;<br />

• Implementação do AD, multiplexer e aplificador operacional na breadboard, teste<br />

e desenvolvimento do condicionamento de sinal em hardware e software;<br />

• Implementação do Buffer ou FIFO na PIC e desenvolvimento da aquisição de<br />

sinal digital em hardware e software;<br />

• Aperfeiçoamento da interface de utilizador na aplicação de controlo e ligeiras<br />

afinações no software da PIC;<br />

• Construção de placa circuito impresso final com todo os componentes do<br />

projecto;<br />

14


1.3 - Calendarização<br />

Tendo este projecto um grande número de etapas e sendo algumas bastante<br />

complexas, o melhor método para analisar o tempo dispensado em cada parte deste<br />

projecto foi calendarizar o mesmo. A tabela abaixo apresentada, ilustra todas as<br />

etapas pelas quais o processo passou apresentando todas as datas em que cada etapa<br />

se iniciou e terminou.<br />

1.4- Organização Do Relatório<br />

Figura 1- Calendarização<br />

Este relatório está dividido em seis partes.<br />

1 - Introdução<br />

2 - Pesquisa efectuada<br />

3 - Opções de projecto<br />

4 - <strong>De</strong>scrição do Hardware<br />

5 - <strong>De</strong>scrição do software<br />

6 - Conclusão<br />

7 – Placa Programadora<br />

8 - Referências Documentais<br />

15


2 - Pesquisa efectuada<br />

Neste capítulo demonstra-se a pesquisa efectuada de produtos semelhantes existentes<br />

no mercado, interfaces e os protocolos de comunicação.<br />

<strong>Osciloscópio</strong> digital:<br />

Figura 2 – PCS100A<br />

<strong>Osciloscópio</strong> digital de armazenamento de dados que recorre ao monitor de um<br />

computador para mostrar as formas de onda (comunicação pela porta paralela).<br />

PCS100A - <strong>Osciloscópio</strong> para computador com 1 canal, com adaptador<br />

Características:<br />

- base de tempo: 0,1 µs<br />

- 100 ms por divisão<br />

- ajuste de trigger<br />

- sensibilidade: 10 mV<br />

- 3 V por divisão<br />

- armazenamento: 4096 amostras<br />

- frequência de amostragem: 800 Hz - 32 MHz<br />

- true RMS<br />

- tempo máx. de gravação: 9,4 h/ecrã<br />

16


<strong>Analisador</strong> lógico:<br />

Tabela 1 – <strong>Analisador</strong> lógico no mercado<br />

2.1 - USB (Universal Serial Bus)<br />

USB é a sigla de Universal Serial Bus. Trata-se de uma tecnologia que tornou mais<br />

simples e fácil a conexão de diversos tipos de aparelhos (câmaras digitais, drives<br />

externos, modems, rato, teclado, etc) ao computador, evitando o uso de um tipo<br />

específico de conector para cada dispositivo. Esta introdução visa mostrar a razão do<br />

USB ter essas características e de ser tão essencial aos computadores nos dias de<br />

hoje.<br />

2.1.2 - O que é USB<br />

Algum tempo atrás, instalar um periférico no computador era considerada uma tarefa<br />

digna apenas de técnicos ou de pessoas com mais experiência. Entre a vários tipos de<br />

cabos e conectores, era preciso descobrir, quase que por instinto, em qual porta do<br />

computador deveria ser conectado o periférico em questão. Quando a instalação era<br />

interna, o utilizador precisava de abrir o computador e quase sempre tinha que<br />

configurar jumpers e/ou IRQs, tarefa essa que desencorajava a adição de um novo<br />

17


dispositivo ao PC. Com o padrão PnP (Plug and Play), diminuiu toda a complicação<br />

existente na configuração de dispositivos. O padrão PnP permitiu instalar um novo<br />

periférico e usá-lo imediatamente, sem complicações mas esse padrão ainda era (é)<br />

complicado para alguns, principalmente quando, por alguma razão, falha.<br />

Diante de situações como essa, foi criada em 1995, uma aliança promovida por<br />

várias empresas (como NEC, Intel e Microsoft) com o intuito de desenvolver uma<br />

tecnologia que permitisse o uso de um tipo de conexão comum entre computador e<br />

periféricos: a USB Implementers Forum. Em pouco tempo, surgia o USB, um<br />

barramento que adota um tipo de conector que deve ser comum a todos os aparelhos<br />

que o usarem. Assim, a interface USB tornou-se o meio mais fácil de conectar<br />

periféricos ao computador. Fabricantes passaram a adoptá-la em seus produtos.<br />

Poder conectar num único tipo de entrada diversos tipos de aparelhos ajudou o USB<br />

a popularizar-se. Qualquer utilizador pode instalar dispositivos USB, não precisam<br />

chamar um técnico para instalar um aparelho, já que problemas como conflito de<br />

IRQ’s praticamente já não existem. O USB permite ao sistema operacional<br />

reconhecer e disponibilizar imediatamente o dispositivo instalado desde que o<br />

sistema operativo seja compatível. Além de ser "plug and play", é possível conectar e<br />

desconectar qualquer dispositivo USB com o computador ligado, sem que este sofra<br />

danos e não é necessário reiniciar o computador para que o aparelho instalado possa<br />

ser usado. Basta conectá-lo devidamente e ele estará pronto para o uso. Também é<br />

possível o uso de "hubs USB", aparelhos que usam uma porta USB do computador e<br />

disponibilizam 4 ou 8 outras portas. Teoricamente, pode-se conectar até 127<br />

dispositivos USB numa única porta, mas isso não é viável, visto que a velocidade de<br />

transmissão de dados de todos os equipamentos envolvidos seria comprometida.<br />

A imagem abaixo mostra um "pen drive", um dispositivo móvel que permite<br />

armazenar até milhares de MBs em dados de qualquer tipo. Aparelhos desse tipo<br />

usam quase que exclusivamente a conexão USB do computador.<br />

18


2.1.3 - Características técnicas<br />

Uma característica importante e interessante do USB, é que sua<br />

interface permite que o dispositivo conectado seja alimentado pelo<br />

cabo de dados, desde que sejam equipamentos que consumam<br />

pouca energia. Os restantes necessitam de alimentação externa. É importante frisar<br />

que os cabos USB devem ter até 5 metros de comprimento. Acima disso, o aparelho<br />

pode não funcionar correctamente. Caso seja necessário instalar dispositivos em<br />

distâncias longas, é recomendável o uso de hubs USB a cada cinco metros.<br />

Quanto à velocidade, o barramento USB pode operar de 1,5 Mbps (megabits por<br />

segundo) à 12 Mbps. A velocidade mais baixa geralmente é usada por dispositivos<br />

como rato, teclado e joysticks. Já velocidades mais altas, são utilizadas por<br />

equipamentos como scanners e câmaras digitais, que precisam de alta velocidade na<br />

transmissão de dados.<br />

O USB é tido como um padrão satisfatório quanto ao aspecto desempenho. É bem<br />

mais rápido que as tradicionais portas seriais e paralelas, mas, está abaixo de outros<br />

tipos de barramento, como o SCSI (80 a 160MB por segundo) e o FireWire<br />

(400Mbps). A maioria dos computadores com mais de uma porta USB divide o<br />

barramento entre os diversos dispositivos conectados. O USB com essas<br />

características é conhecido como USB 1.1. Recentemente apareceu a versão USB 2.0<br />

(480 Mbps). Estes acontecimentos tornaram o padrão USB indispensável em<br />

qualquer computador.<br />

2.1.4 - Estrutura eléctrica e sinais do cabo USB<br />

O cabo USB é composto por 4 fios e uma malha para eliminação de ruídos simples.<br />

<strong>De</strong>sses, 2 são fios que transportam energia para alimentar dispositivos. Essa energia<br />

é fornecida pela controladora e gerida pelo Driver do Controlador Host.<br />

O Cabo USB usa cores padrão para os fios, sendo assim, o fio de cor vermelho é<br />

chamado Vbus (5v), ou seja, é o fio positivo de fornecimento de energia. O fio de cor<br />

19


preto é o GND (0v). Este é o pino negativo de energia do Bus.<br />

O bus USB pode fornecer no máximo 5 Volt de tensão e 500mA de corrente<br />

eléctrica, isso para cada porta do Root Hub do host. A quantidade de corrente que o<br />

dispositivo irá precisar para funcionar pode ser configurada via software. Os outros<br />

dois fios D+ (data+) e D– (data-) são usados pelo sistema USB para transferência de<br />

dados entre o Host, hub e dispositivos. Todos os sinais de dados trafegam apenas por<br />

esses dois fios usando a codificação NRZI (No Return to Zero Inverted). Ou seja, o<br />

bit 1 é codificado através de uma transição ocorrendo da maior voltagem para a<br />

menor, ou também o inverso, da menor para a maior. Já o bit 0 é codificado sem<br />

haver transição. Durante o intervalo de um bit a voltagem é constante.<br />

2.1.5 - Tipos de interfaces<br />

Há dois tipos de interface em que um dispositivo USB pode trabalhar: Bus-powered<br />

e Self-powered. No Bus-powered o dispositivo é alimentado pelo próprio Bus USB<br />

através dos pinos Vbus e Gnd podendo fornecer no máximo 500mA directo de uma<br />

Porta do Root Hub (host) ou de uma Porta de um Hub comum que tenha sua própria<br />

fonte de alimentação. Se o Hub não tiver uma fonte de alimentação, os dispositivos<br />

conectados a ele só poderão consumir cada um, no máximo 100mA do Bus USB. Já<br />

o tipo self-powered não consome energia do Bus USB, mas deve ser alimentado com<br />

uma fonte externa para que o circuito possa funcionar.<br />

Para que um dispositivo USB trabalhe no modo Bus-powered ou Self-powered, é<br />

necessário que o fabricante configure o circuito electricamente para que possa<br />

trabalhar da maneira desejada.<br />

20


Dispositivos configurados para trabalhar no modo Bus-powered devem consumir no<br />

máximo 100mA, podendo retirar essa corrente directamente da porta do Root hub, ou<br />

de qualquer tipo de Hub. Dispositivos Bus-powered que consomem 500mA devem<br />

ser conectados somente no Root Hub ou na porta de um Hub que disponha de sua<br />

própria fonte de alimentação.<br />

Dispositivos Bus-powered são desligados involuntariamente quando o computador é<br />

ligado ou desligado. Já dispositivos electricamente configurados como Self-powered<br />

mantêm o circuito ligado mesmo que o computador seja desligado, isso porque são<br />

alimentados através de uma fonte externa. Esses tipos de interface deve ser levados<br />

em consideração quando criarem circuitos críticos, como alarmes, controles de abrir<br />

e fechar portas, portões e quaisquer outros dispositivos que, em hipóteses nenhuma,<br />

devam ser accionados involuntariamente. Nesse caso Self-powered é a ideal.<br />

2.1.6 - Protocolo USB<br />

O protocolo é uma das partes mais importantes do funcionamento do sistema USB, é<br />

através dele que um ou mais dispositivos trocam informações com o Host. No Host a<br />

pilha do protocolo está disponível em forma de drivers de arquivos. sys, dll, drv, exe,<br />

etc. Já no dispositivo o protocolo pode ser encontrado dentro de um<br />

microprocessador específico, como por exemplo um PIC que disponha de uma certa<br />

quantidade de memória. Nesse caso, o protocolo é escrito com base na norma USB,<br />

numa linguagem específica (C ou Assembler), depois é compilado e gravado na<br />

memória do microprocessador através de um programador de PIC. Há<br />

microprocessadores PIC como o 18F2550 e 18F4550 que internamente já dispõe do<br />

protocolo, tornando assim mais fácil o desenvolvimento de aplicações. Uma outra<br />

maneira é através de um chipset que carrega dentro de si toda a funcionalidade do<br />

protocolo USB, livrando o microprocessador de todo o trabalho pesado. É diferente<br />

da Porta Série ou Paralela onde simplesmente através dos sinais eléctricos dos pinos<br />

e um programa básico se pode comunicar com um dispositivo. O protocolo USB tem<br />

vários recursos como: CRC (Cyclic Redundancy Check), detecção e correcção de<br />

erros, detecção de conexão e remoção de dispositivos, controle de fluxo de dados<br />

21


assegurando transmissões síncronas (tráfego contínuo de dados), disponibilidade<br />

assegurada de largura de banda, entre outros.<br />

2.1.7 – <strong>De</strong>scritores<br />

Todos os dispositivos USB têm uma hierarquia de descritores que informam ao Host<br />

o que o dispositivo é, ou seja, sua "personalidade", suas características de<br />

funcionamento, como; número de série do produto, identificação do fabricante, tipo<br />

do dispositivo (impressora, scanner, modem, rato, etc.), número de configurações,<br />

número de <strong>canais</strong> (endpoints), tipo de transferência, tipo de interface, etc.<br />

2.1.8 - Processo de enumeração<br />

No sistema USB o processo de enumeração refere-se à conexão, detecção, leitura dos<br />

descritivos dos dispositivos e desconexão. É uma actividade ininterrupta. É tudo<br />

gerido em tempo real pelo controlador Host e o software do sistema. Do ponto de<br />

vista do usuário do computador, o processo de enumeração é transparente, desde que<br />

se tenha antes instalado no sistema operacional, os drivers do fabricante do<br />

dispositivo. Após isso, o carregamento dos drivers é automático quando um<br />

dispositivo é conectado.<br />

2.2 – Comunicação RS232<br />

O protocolo de comunicação RS-232 tem sido progressivamente substituído pelo<br />

USB para comunicação local. O protocolo USB é mais rápido, possui conectores<br />

mais simples de usar e tem um melhor suporte por software. Mesmo assim, este<br />

22


protocolo continua a ser utilizado em periféricos para pontos de venda (caixas<br />

registadoras, leitores de códigos de barra ou fita magnética) e para a área industrial<br />

(dispositivos de controle remoto). Por essas razões, computadores para estes fins<br />

continuam sendo produzidos com portas RS-232, tanto on-board ou em placas para<br />

barramentos PCI ou barramento ISA. Como alternativa, existem adaptadores para<br />

portas USB, que podem ser utilizados para conectar teclados ou ratos PS/2, uma ou<br />

mais portas séries e uma ou mais portas paralelas.<br />

2.2.1 - <strong>De</strong>talhes do padrão<br />

No protocolo de comunicação RS-232, caracteres são enviados um a um como um<br />

conjunto de bits. A codificação mais comum é o "start-stop assíncrono" que usa um<br />

“start bit”, seguido por sete ou oito bits de dados, possivelmente um bit de paridade,<br />

e um ou dois “stop bits” sendo, então, necessários 10 bits para enviar um único<br />

crater. A alternativa mais comum ao "start-stop assíncrono" é o HDLC. O padrão<br />

define os níveis eléctricos correspondentes aos níveis lógicos um e zero, a velocidade<br />

de transmissão padrão e os tipos de conectores.<br />

Conector fêmea RS-232 de nove pinos<br />

O padrão especifica 20 diferentes sinais de conexão, e um conector em forma de D é<br />

comummente usado. São utilizados conectores machos e fêmeas - geralmente os<br />

conectores dos cabos são machos e os conectores de dispositivos são fêmeas - e estão<br />

disponíveis adaptadores m-m e f-f. Há também os chamados "null modems" para<br />

conectar unidades utilizando-se ambas como terminais de dados (ou modems). Para<br />

23


configuração e diagnóstico de problemas com cabos RS-232 pode-se utilizar uma<br />

"breakout box". Este dispositivo possui um conector macho e um conector fêmea, e<br />

deve ser anexado em linha. Além disso, possui luzes para cada pino e meios de<br />

interligar os pinos com diferentes configurações.<br />

A maioria dos pinos é inutilizada pela maioria dos dispositivos sendo, então, comum<br />

que máquinas economizem espaço e dinheiro, utilizando conexões menores. A<br />

segunda geração dos IBM PC AT foi disponibilizada com um conector em forma de<br />

D com apenas 9 pinos, tornando-se o padrão. Grande parte dos dispositivos utiliza<br />

conectores de 25 pinos. Consequentemente, cabos com 9 pinos numa extremidade e<br />

25 em outra são comuns.<br />

Os cabos para RS-232 podem ser construídos com conectores disponíveis em<br />

qualquer loja de electrónica. Os cabos podem ter de 3 a 25 pinos. Cabos "Flat RJ"<br />

(cabos de telefone) podem ser usados com conectores RJ-RS232 e são os de mais<br />

fácil configuração. A razão pela qual é possível criar uma interface mínima com<br />

apenas três fios é que todo sinal RS-232 utiliza o mesmo fio terra para referência. O<br />

uso de circuitos desequilibrados deixa o RS-232 altamente susceptível a problemas<br />

devido a diferenças de potencial entre os sinais de terra dos dois circuitos. Este<br />

padrão também tem um pobre controlo dos tempos de picos e descidas do sinal,<br />

levando a potenciais problemas de comunicação.<br />

O RS-232 é recomendado para conexões curtas (quinze metros ou menos). Os sinais<br />

variam de 3 a 15 volts positivos ou negativos, valores próximos de zero não são<br />

sinais válidos. O nível lógico um é definido por ser voltagem negativa, a condição de<br />

sinal é chamada marca e tem significado funcional de OFF (desligado). O nível<br />

lógico zero é positivo, a condição de sinal é espaço, e a função é ON (ligado). Níveis<br />

de sinal +-5, +-10, +/- 12 e +/-15 são vistos normalmente, dependendo da fonte<br />

eléctrica disponível.<br />

Três são os sinais carregados por esses fios: terra, transmissão/recepção e<br />

"handshake". Existem códigos para estes sinais, por exemplo:<br />

24


Sinal Significado<br />

SG ou GND Terra<br />

TD ou TX Transmissão de dados<br />

RD ou RX Recepção de dados<br />

DTR Terminal de dados pronto<br />

DSR Conjunto de dados pronto<br />

RTS Pronto para enviar(computador)<br />

CTS Envie os dados (modem)<br />

DCD Portadora detectada<br />

RI Indicador de telefone tocando<br />

FG (Frame Ground)<br />

Tabela 2 – RS232 pinagem<br />

Os dispositivos RS-232 podem ser classificados em DTE e DCE. Essa classificação<br />

permite definir quais fios irão mandar e/ou enviar sinais de dados. <strong>De</strong> qualquer<br />

modo, estas definições nem sempre são seguidas. Normalmente é necessário<br />

consultar a documentação ou testar as conexões com uma "breakout box" para<br />

determinar os sinais necessários.<br />

Se os equipamentos estiverem muito longe, com diferentes fontes eléctricas, a<br />

diferença entre terras dos dois dispositivos será muito grande e a comunicação irá<br />

falhar, sendo esta uma condição difícil de detectar. Em conectores de 25 pinos, o<br />

pino 7 geralmente é a terra (pino 1 e terra do chassis são raramente usados). Neste<br />

mesmo conector, os pinos 2 e 3 são os pinos de transmissão e recepção, um<br />

dispositivo deve enviar no 2 e receber no 3; o outro deve ser o contrário (se não, essa<br />

inversão deve ser feita no fim do cabo, como num cabo para null modem, também<br />

chamado “crossover”). No caso de desenvolver cabos para uma conexão, pode-se<br />

testá-lo com uma “breakout box” qual pino está transmitindo. Os “handshakes”<br />

podem ser necessários por um ou por outro dispositivo. Por exemplo, o pino 20 é<br />

frequente ser usado para indicar "dispositivo pronto". Os pinos também podem ser<br />

curto-circuitados. Por exemplo, um pino que pergunte "você está pronto?" que parte<br />

do dispositivo A pode ser ligado directamente no pino referente a resposta "estou<br />

25


pronto" no dispositivo A se o dispositivo A não transmitir tal sinal. Os pinos<br />

normalmente utilizados para “handshake” são os pinos 20, 8, 4 e 6.<br />

2.2.2 – Configurações<br />

Há várias configurações de software para conexões serie. As mais comuns são<br />

velocidade e bits de paridade e “stop bits”. A velocidade é a quantidade de bits por<br />

segundo transmitida de um dispositivo para outro. Taxas comuns de transmissão são<br />

300, 1200, 2400, 9600, 19200, etc. Tipicamente ambos os dispositivos devem estar<br />

configurados com a mesma velocidade. Alguns dispositivos, porém, podem ser<br />

configurados para auto-detectar a velocidade. Paridade é um método de verificar a<br />

precisão dos dados. Paridade é normalmente nula (não usada), mas pode ser par ou<br />

ímpar. Paridade funciona modificando os dados, em cada byte enviado. Paridade<br />

nula é simples, os dados não são modificados. Na paridade par, os dados são<br />

acomodados de modo que o número de bits 1 (isto é, sua contagem em um byte) seja<br />

um número par; isto é feito definindo o bit de paridade (geralmente os bits mais ou<br />

menos significativo) como 0 ou 1. Na paridade impar, o número de bits 1 é um<br />

número impar. A paridade pode ser usada pelo receptor para detectar a transmissão<br />

de erros - se um byte foi recebido com o número errado de bits 1, então ele deve estar<br />

corrompido. Se a paridade estiver correcta então não deve haver erros, ou então há<br />

um número par de erros. “Stop bits” são enviados no fim de cada byte transmitido<br />

com o intuito de permitir que o receptor do sinal se sincronize. Existe uma<br />

convenção para a notação de uma configuração de software de uma conexão serie,<br />

sendo essa notação da forma D/P/S. Sendo que a configuração mais comum é a 8/N/1<br />

que especifica que são transmitidos 8 bits de dados, paridade nula e um “Stop bit”.<br />

O número de bits de dados pode ser 7, 8 ou (às vezes) 9. Paridade pode ser nula (N),<br />

impar (O) ou par (E); o bit de paridade é emprestado dos bits de dados, então 8/E/1<br />

significa que um dos oito bits de dados é utilizado como bit de paridade. Pode haver<br />

1, 1,5 ou 2 “stop bits”. Outras configurações definem quando pinos enviam sinais de<br />

"handshake", ou outras verificações de integridade dos dados. Combinações comuns<br />

são RTS/CTS, DTR/DSR, ou XON/XOFF (que não usam pinos no conector, mas<br />

26


caracteres especiais no fluxo dos dados). O caracter XON diz ao receptor que o<br />

remetente do caracter está pronto para receber mais dados. O caracter XOFF diz ao<br />

receptor para parar de enviar caracteres. O XON/XOFF está em desuso, e é preferível<br />

que se utilize o controlo de fluxo RTS/CTS. XON/XOFF é um método "em banda"<br />

que funciona entre dois pontos, mas ambos devem suportar o protocolo, e há uma<br />

confusão em potencial no início. Pode ser feito numa interface com três fios.<br />

RTS/CTS foi desenvolvido com o intuito de permitir que a teletypewriter e o modem<br />

coordenassem ligações half-duplex onde apenas um modem pode transmitir por vez.<br />

O terminal deve "levantar" o sinal Pronto Para Enviar e esperar que o modem<br />

responda com Envie os Dados. RTS/CTS é um "handshake" no nível do hardware,<br />

mas tem suas vantagens.<br />

2.3 - Ethernet<br />

Ethernet é uma tecnologia de interconexão para redes locais - Local Area Networks<br />

(LAN) - baseada no envio de pacotes. Ela define cabeamento e sinais eléctricos para<br />

a camada física, e formato de pacotes e protocolos para a camada de control0 de<br />

acesso ao meio (Media Access Control - MAC) do modelo OSI. A Ethernet foi<br />

padronizada pelo IEEE como 802.3. <strong>De</strong>sde os anos 90, ela tem sido a tecnologia de<br />

LAN mais amplamente utilizada e tem tomado grande parte do espaço de outros<br />

padrões de rede como Token Ring, FDDI e ARCNET.<br />

27


2.3.1 – História<br />

Camada Protocolo<br />

Protocolos Internet (TCP/IP)<br />

5.Aplicação HTTP, SMTP, FTP, SSH, RTP, Telnet, SIP, RDP,<br />

IRC, SNMP, NNTP, POP3, IMAP, BitTorrent, DNS,<br />

Ping, IPSec ...<br />

4.Transporte TCP, UDP, SCTP, DCCP ...<br />

3.Rede IP (IPv4, IPv6) , ARP, RARP, ICMP ...<br />

2.Enlace Ethernet, 802.11 WiFi, IEEE 802.1Q, 802.11g,<br />

HDLC, Token ring, FDDI, PPP, Frame Relay,<br />

1.Física Modem, RDIS, RS-232, EIA-422, RS-449, Bluetooth,<br />

USB, ...<br />

Tabela 3 – Protocolo TCP/IP<br />

A Ethernet foi originalmente desenvolvida como um projecto pioneiro da Xerox<br />

PARC. Por conhecimento geral, a Ethernet foi inventada em 1973, e concebida<br />

durante um período de vários anos. Em 1976, Metcalfe e David Boggs (seu<br />

assistente) publicaram um artigo, Ethernet: Distributed Packet-Switching For Local<br />

Computer Networks.<br />

Metcalfe deixou a Xerox em 1979 para promover o uso de computadores pessoais e<br />

redes locais (LANs), e para isso criou a 3Com. Ele conseguiu convencer DEC, Intel,<br />

e Xerox a trabalhar juntas para promover a Ethernet como um padrão, que foi<br />

publicado em 30 de setembro de 1980. Competindo com elas na época estavam dois<br />

sistemas grandemente proprietários, token ring e ARCNET. Em pouco tempo ambos<br />

foram afogados por uma onda de produtos Ethernet. No processo a 3Com se tornou<br />

uma grande companhia.<br />

28


2.3.2 - <strong>De</strong>scrição geral<br />

Uma placa de rede Ethernet típica com conectores BNC e par trançado.<br />

Ethernet é baseada na ideia de pontos da rede enviando mensagens, no que é<br />

essencialmente semelhante a um sistema de rádio, cativo entre um cabo comum ou<br />

canal. Cada ponto tem uma chave de 48 bits globalmente única, conhecida como<br />

endereço MAC, para assegurar que todos os sistemas em uma Ethernet tenham<br />

endereços distintos.<br />

2.3.3 - Ethernet com meio compartilhado CSMA/CD<br />

Um esquema conhecido como Carrier Sense Multiple Access with Collision<br />

<strong>De</strong>tection (CSMA/CD) organizava a forma como os computadores compartilhavam o<br />

canal. Originalmente desenvolvido nos anos 60 para ALOHAnet - Hawaii usando<br />

Rádio, o esquema é relativamente simples se comparado ao token ring ou rede de<br />

controlo central (master controlled networks). Quando um computador deseja enviar<br />

alguma informação, este obedece o seguinte algoritmo:<br />

1. Se o canal está livre, inicia-se a transmissão, senão vai para o passo 4;<br />

2. [transmissão da informação] se colisão é detectada, a transmissão continua<br />

até que o tempo mínimo para o pacote seja alcançado (para garantir que todos<br />

os outros transmissores e receptores detectem a colisão), então segue para o<br />

passo 4;<br />

3. [fim de transmissão com sucesso] informa sucesso para as camadas de rede<br />

superiores, sai do modo de transmissão;<br />

4. [canal está ocupado] espera até que o canal esteja livre;<br />

29


5. [canal se torna livre] espera-se um tempo aleatório, e vai para o passo 1, a<br />

menos que o número máximo de tentativa de transmissão tenha sido<br />

excedido;<br />

6. [número máximo de tentativa de transmissão excedido] informa falha para as<br />

camadas de rede superiores, sai do modo de transmissão;<br />

Na prática, funciona como um jantar onde os convidados usam um meio comum (o<br />

ar) para falar com um outro. Antes de falar, cada convidado educadamente espera<br />

que outro convidado termine de falar. Se dois convidados começam a falar ao mesmo<br />

tempo, ambos param e esperam um pouco, um pequeno período. Espera-se que cada<br />

convidado espere por um tempo aleatório de forma que ambos não aguardem o<br />

mesmo tempo para tentar falar novamente, evitando outra colisão. O tempo é<br />

aumentado exponencialmente se mais de uma tentativa de transmissão falhar.<br />

Originalmente, a Ethernet fazia um compartilhamento via cabo coaxial, que passava<br />

através de um prédio ou de um campus universitário para interligar cada máquina. Os<br />

computadores eram conectados a uma unidade transceiver ou interface de anexação<br />

(Attachment Unit Interface, ou AUI), que por sua vez era conectada ao cabo. Apesar<br />

de que um fio simples passivo fosse uma solução satisfatória para pequenas<br />

Ethernets, não o era para grandes redes, onde apenas um defeito em qualquer ponto<br />

do fio ou em um único conector fazia toda a Ethernet parar.<br />

Como todas as comunicações aconteciam num mesmo fio, qualquer informação<br />

enviada por um computador era recebida por todos os outros, mesmo que a<br />

informação fosse destinada para um destinatário específico. A placa de interface de<br />

rede descarta a informação não endereçada a ela, interrompendo a CPU somente<br />

quando pacotes aplicáveis eram recebidos, a menos que a placa fosse colocada em<br />

modo de comunicação promíscua. Essa forma de “um fala e todos escutam” definia<br />

um meio de compartilhamento de Ethernet de fraca segurança, pois um nodo na rede<br />

Ethernet podia escutar às escondidas todo o tráfego do cabo se assim desejasse. Usar<br />

um cabo único também significava que a largura de banda (bandwidth) era<br />

compartilhada, de forma que o tráfego de rede podia tornar-se lentíssimo quando, por<br />

exemplo, a rede e os nós tinham de ser reinicializados após uma interrupção<br />

eléctrica.<br />

30


2.3.4 - Hubs Ethernet<br />

Este problema foi contornado pela invenção de hubs Ethernet, que formam uma rede<br />

com topologia física em estrela, com múltiplos controladores de interface de rede<br />

enviando dados ao hub e, daí, os dados são então reenviados a um backbone, ou para<br />

outros segmentos de rede.<br />

Porém, apesar da topologia física em estrela, as redes Ethernet com hub ainda usam<br />

CSMA/CD, no qual todo pacote que é enviado a uma porta do hub pode sofrer<br />

colisão; o hub realiza um trabalho mínimo ao lidar com colisões de pacote.<br />

As redes Ethernet trabalham bem como meio compartilhado quando o nível de<br />

tráfego na rede é baixo. Como a chance de colisão é proporcional ao número de<br />

transmissores e ao volume de dados a serem enviados, a rede pode ficar<br />

extremamente congestionada, em torno de 50% da capacidade nominal, dependendo<br />

desses fatores. Para solucionar isto, foram desenvolvidos "comutadores" ou switches<br />

Ethernet, para maximizar a largura de banda disponível.<br />

2.3.5 - Ethernet Comutada (Switched Ethernet)<br />

A maioria das instalações modernas de Ethernet usa switches Ethernet ao invés de<br />

hubs. Embora o cabeamento seja idêntico ao de uma Ethernet com hub, com switches<br />

no lugar dos hubs, a Ethernet comutada tem muitas vantagens sobre a Ethernet<br />

média, incluindo maior largura de banda e cabeamento simplificado. Redes com<br />

switches tipicamente seguem uma topologia em estrela, embora elas ainda<br />

implementem uma "nuvem" única de Ethernet do ponto de vista das máquinas<br />

ligadas.<br />

No início, switches Ethernet funcionam como os hubs, com todo o tráfego sendo<br />

repetido para todas as portas. Contudo, ao longo do tempo o switch "aprende" quais<br />

31


são as pontas associadas a cada porta, e assim ele pára de mandar tráfego não-<br />

broadcast para as demais portas a que o pacote não esteja endereçado. <strong>De</strong>sse modo, a<br />

comutação na Ethernet pode permitir velocidade total de Ethernet no cabeamento a<br />

ser usado por um par de portas de um mesmo switch.<br />

Já que os pacotes são tipicamente entregues somente na porta para que são<br />

endereçadas, o tráfego numa Ethernet comutada é levemente menos público que<br />

numa Ethernet de média compartilhada. Contudo, como é fácil subverter sistemas<br />

Ethernet comutados por meios como ARP spoofing e MAC flooding, bem como por<br />

administradores usando funções de monitoramento para copiar o tráfego da rede, a<br />

Ethernet comutada ainda é considerada como uma tecnologia de rede insegura.<br />

2.3.6 - Tipos de quadro Ethernet e o campo EtherType<br />

Há quatro tipos de quadro Ethernet :<br />

• Ethernet original versão I (não mais usado)<br />

• O quadro Ethernet versão 2 ou quadro Ethernet II, chamado quadro DIX<br />

(iniciais de DEC, Intel, e Xerox). É o mais comum atualmente, já que é<br />

muitas vezes usado directamente pelo Protocolo Internet.<br />

• quadro IEEE 802.x LLC/SNAP<br />

Os tipos diferentes de frame têm formatos e valores de MTU diferentes, mas podem<br />

coexistir no mesmo meio físico.<br />

A Ethernet Versão 1 original da Xerox tinha um campo de comprimento de 16 bits,<br />

embora o tamanho máximo de um pacote fosse 1500 bytes. Esse campo de<br />

comprimento foi logo reutilizado na Ethernet Versão 2 da Xerox como um campo de<br />

rótulo, com a convenção de que valores entre 0 e 1500 indicavam o uso do formato<br />

Ethernet original, mas valores maiores indicavam o que se tornou conhecido como<br />

um EtherType, e o uso do novo formato de frame. Isso agora é suportado nos<br />

protocolos IEEE 802 usando o header SNAP.<br />

32


O IEEE 802.x definiu o campo de 16 bits após o endereço MAC como um campo de<br />

comprimento de novo. Como o formato de frames do Ethernet I não é mais usado,<br />

isso permite ao software determinar se uma frame é do Ethernet II ou do IEEE 802.x,<br />

permitindo a coexistência dos dois padrões no mesmo meio físico. Todos os frames<br />

802.x têm um campo LLC. Examinando o campo LLC, é possível determinar se ele é<br />

seguido por um campo SNAP.<br />

As variantes 802.x de Ethernet não são de uso geral em redes comuns. O tipo mais<br />

comum usado hoje é a Ethernet Versão 2, já que é usada pela maioria das redes<br />

baseadas no Protocolo da Internet, com seu EtherType colocado em 0x0800. Existem<br />

técnicas para encapsular tráfego IP em frames IEEE 802.3 mas isso não é comum.<br />

2.3.7 - Variedades de Ethernet<br />

Além dos tipos de frames mencionados acima, a maioria das diferenças entre as<br />

variedades de Ethernet podem ser resumidas em variações de velocidade e<br />

cabeamento. Portanto, em geral, a pilha do software de protocolo de rede vai<br />

funcionar de modo idêntico na maioria dos tipos a seguir.<br />

As sessões seguintes provêem um breve sumário de todos os tipos de média Ethernet<br />

oficiais. Em adição a esses padrões, muitos fabricantes implementaram tipos de<br />

média proprietários por várias razões, geralmente para dar suporte a distâncias<br />

maiores com cabeamento de fibra óptica.<br />

2.3.8 - Algumas variedades antigas de Ethernet<br />

• Xerox Ethernet -- a implementação original de Ethernet, que tinha duas<br />

versões, Versão 1 e Versão 2, durante seu desenvolvimento. O formato de<br />

frame da versão 2 ainda está em uso comum.<br />

33


• 10BASE5 (também chamado Thicknet) -- esse padrão antigo da IEEE usa um<br />

cabo coaxial simples em que você literalmente conseguia uma conexão<br />

furando o cabo para se conectar ao núcleo. É um sistema obsoleto, embora<br />

devido a sua implantação largamente difundida antigamente, talvez ainda<br />

possa ser utilizado por alguns sistemas.<br />

• 10BROAD36 -- Obsoleto. Um padrão antigo suportando Ethernet para<br />

distâncias mais longas. Utilizava técnicas de modulação de banda larga<br />

similares àquelas empregadas em sistemas de cable modem, e operava com<br />

cabo coaxial.<br />

• 1BASE5 -- Uma tentativa antiga de padronizar uma solução de LAN de baixo<br />

custo, opera a 1 Mbit/s e foi um fracasso comercial.<br />

• StarLAN 1 -- A primeira implementação de Ethernet com cabeamento de par<br />

entrançado.<br />

2.3.9 - 10 Mbit/s Ethernet<br />

• 10BASE2 (também chamado ThinNet ou Cheapernet) -- Um cabo coaxial de<br />

50-ohm conecta as máquinas, cada qual usando um adaptador T para conectar<br />

seu NIC. Requer terminadores nos finais. Por muitos anos esse foi o padrão<br />

dominante de ethernet de 10 Mbit/s.<br />

• 10BASE5 (também chamado Thicknet) -- Especificação Ethernet de banda<br />

básica de 10 Mbps, que usa o padrão (grosso) de cabo coaxial de banda de<br />

base de 50 ohms. Faz parte da especificação de camada física de banda de<br />

base IEEE 802.3, tem um limite de distância de 500 metros por segmento.<br />

• StarLAN 10 -- Primeira implementação de Ethernet em cabeamento de par<br />

trançado a 10 Mbit/s. Mais tarde evoluiu para o 10BASE-T.<br />

• 10BASE-T -- Opera com 4 fios (dois conjuntos de par trançado) num cabo de<br />

cat-3 ou cat-5. Um hub ou switch fica no meio e tem uma porta para cada nó<br />

da rede. Essa é também a configuração usada para a ethernet 100BASE-T e a<br />

Gigabit.<br />

34


• FOIRL -- Link de fibra óptica entre repetidores. O padrão original para<br />

ethernet sobre fibra.<br />

• 10BASE-F -- um termo genérico para a nova família de padrões de ethernet<br />

de 10 Mbit/s: 10BASE-FL, 10BASE-FB e 10BASE-FP. <strong>De</strong>sses, só o<br />

10BASE-FL está em uso comum (todos utilizando a fibra óptica como meio<br />

físico).<br />

• 10BASE-FL -- Uma versão actualizada do padrão FOIRL.<br />

• 10BASE-FB -- Pretendia ser usada por backbones conectando um grande<br />

número de hubs ou switches, agora está obsoleta.<br />

• 10BASE-FP -- Uma rede passiva em estrela que não requer repetidores,<br />

nunca foi implementada.<br />

2.3.10 - Fast Ethernet<br />

• 100BASE-T -- <strong>De</strong>signação para qualquer dos três padrões para 100 Mbit/s<br />

ethernet sobre cabo de par trançado. Inclui 100BASE-TX, 100BASE-T4 e<br />

100BASE-T2.<br />

• 100BASE-TX -- Usa dois pares, mas requer cabo cat-5. Configuração "star-<br />

shaped" idêntica ao 10BASE-T. 100Mbit/s.<br />

• 100BASE-T4 -- 100 Mbit/s ethernet sobre cabeamento cat-3 (Usada em<br />

instalações 10BASE-T). Utiliza todos os quatro pares no cabo. Actualmente<br />

obsoleto, cabeamento cat-5 é o padrão. Limitado a Half-Duplex.<br />

• 100BASE-T2 -- Não existem produtos. 100 Mbit/s ethernet sobre cabeamento<br />

cat-3. Suporta full-duplex, e usa apenas dois pares. Seu funcionamento é<br />

equivalente ao 100BASE-TX, mas suporta cabeamento antigo.<br />

• 100BASE-FX -- 100 Mbit/s ethernet sobre fibra óptica. Usando fibra óptica<br />

multimodo 62,5 mícrons tem o limite de 400 metros.<br />

35


2.3.11- Gigabit Ethernet<br />

• 1000BASE-T -- 1 Gbit/s sobre cabeamento de cobre categoria 5e ou 6.<br />

• 1000BASE-SX -- 1 Gbit/s sobre fibra.<br />

• 1000BASE-LX -- 1 Gbit/s sobre fibra. Optimizado para distâncias maiores<br />

com fibra mono-modo.<br />

• 1000BASE-CX -- Uma solução para transportes curtos (até 25m) para rodar<br />

ethernet de 1 Gbit/s num cabeamento especial de cobre. Antecede o<br />

1000BASE-T, e agora é obsoleto.<br />

2.3.12 – “10-Gigabit Ethernet”<br />

O novo padrão Ethernet de 10 gigabits abrange 7 tipos diferentes de médias para uma<br />

LAN, MAN e WAN. Ele está actualmente especificado por um padrão suplementar,<br />

IEEE 802.3ae, e será incorporado numa versão futura do padrão IEEE 802.3.<br />

• 10GBASE-SR -- projectado para suportar distâncias curtas sobre cabeamento<br />

de fibra multi-modo, variando de 26m a 82m dependendo do tipo de cabo.<br />

Suporta também operação a 300m numa fibra multi-modo de 2000 MHz.<br />

• 10GBASE-LX4 -- usa multiplexação por divisão de comprimento de ondas<br />

para suportar distâncias entre 240m e 300m em cabeamento multi-modo.<br />

Também suporta 10km com fibra mono-modo.<br />

• 10GBASE-LR e 10GBASE-ER -- esses padrões suportam 10km e 40km<br />

respectivamente sobre fibra mono-modo.<br />

• 10GBASE-SW, 10GBASE-LW e 10GBASE-EW. Essas variedades usam o<br />

WAN PHY, projectado para comunicar com equipamentos OC-192 / STM-64<br />

SONET/SDH. Eles correspondem à camada física do 10GBASE-SR,<br />

10GBASE-LR e 10GBASE-ER respectivamente, e daí usam os mesmos tipos<br />

de fibra e suportam as mesmas distâncias. (Não há um padrão WAN PHY<br />

correspondendo ao 10GBASE-LX4.)<br />

36


Ethernet de 10 gigabit é muito nova, e continua em vistas sobre qual padrão vai<br />

ganhar aceitação comercial.<br />

2.3.13 - Padrões Relacionados<br />

Esses padrões de rede não são parte do padrão Ethernet IEEE 802.3 Ethernet, mas<br />

suportam o formato de frame ethernet, e são capazes de interagir com ele.<br />

• Wireless Ethernet (IEEE 802.11) -- Frequentemente rodando a 2 Mbit/s<br />

(802.11legacy), 11 Mbit/s (802.11b) ou 54 Mbit/s (802.11g).<br />

• 100BaseVG -- Um rival precoce para a ethernet de 100 Mbit/s. Ele roda com<br />

cabeamento categoria 3. Usa quatro pares. Um fracasso, comercialmente.<br />

• TIA 100BASE-SX -- Promovido pela Telecommunications Industry<br />

Association. O 100BASE-SX é uma implementação alternativa de ethernet de<br />

100 Mbit/s em fibra ótica; é incompatível com o padrão oficial 100BASE-<br />

FX. Sua característica principal é a interoperabilidade com o 10BASE-FL,<br />

suportando auto negociação entre operações de 10 Mbit/s e 100 Mbit/s -- uma<br />

característica que falta nos padrões oficiais devido ao uso de comprimentos<br />

de ondas de LED diferentes. Ele é mais focado para uso na base instalada de<br />

redes de fibra de 10 Mbit/s.<br />

• TIA 1000BASE-TX -- Promovido pela Telecommunications Industry<br />

Association, foi um fracasso comercial, e nenhum produto desse padrão<br />

existe. O 1000BASE-TX usa um protocolo mais simples que o padrão oficial<br />

1000BASE-T, mas requer cabeamento categoria 6.<br />

37


2.4 - Microcontrolador PIC<br />

Os PIC (PICmicro) são uma família de microcontroladores fabricados pela<br />

Microchip Technology, que processam dados de 8 bits (recentemente foi lançada<br />

uma família de 16 bits com prefixo 24F) com extensa variedade de modelos e<br />

periféricos internos, com arquitectura Harvard e conjunto de instruções RISC<br />

(conjuntos de 35 instruções e de 76 instruções), com recursos de programação por<br />

Memória Flash, EEPROM e OTP. Os microcontroladores PIC têm famílias com<br />

núcleos de processamento de 12 bits, 14 bits e 16 bits e trabalham em velocidades de<br />

0kHz (ou DC) a 48MHz, usando ciclo de instrução mínimo de 4 períodos de clock, o<br />

que permite uma velocidade de no máximo 10 MIPS. Há o reconhecimento de<br />

interrupções tanto externas como de periféricos internos. Funcionam com tensões de<br />

alimentação de 2 a 6V e os modelos possuem encapsulamento de 6 a 100 pinos em<br />

diversos formatos (SOT23, DIP, SOIC, TQFP, etc).<br />

2.4.1 - Periféricos internos<br />

Seus principais periféricos internos (a disponibilidade varia conforme o modelo):<br />

• Conversores Analógico-Digitais de 8 a 12 bits<br />

• Contadores e timers de 8 e 16 bits<br />

• Comparadores Analógicos<br />

• USARTs<br />

• Controladores de comunicação I2C, SPI, USB<br />

• Controladores PWM<br />

• Controladores de LCD<br />

• Controladores de motores<br />

• Gerador de energia de alta potência<br />

• Periféricos para LIN, CAN<br />

• Controladores Ethernet<br />

38


• Periféricos IRDA<br />

• Codificadores para criptografia Keeloq<br />

• <strong>De</strong>tetores de falha na alimentação<br />

• Portas digitais com capacidade de 25mA (fornecer ou drenar) para accionar<br />

circuitos externos<br />

• Osciladores internos<br />

2.4.2 - Programação e desenvolvimento<br />

Os PICs podem ser programados em linguagem mnemônica (assembly) ou usando-se<br />

compiladores de linguagem de alto nível (Pascal, C, Basic) que geram um código em<br />

formato hexadecimal (Intel Hex format ou linguagem de máquina) que são usados<br />

para serem gravados na memória de programa desses microcontroladores. Para tal<br />

procedimento, utiliza-se um hardware especial (gravador) acoplado a um PC. (com<br />

um PIC é possível rodar pequenos programas de computadores gravados neles). PICs<br />

com memória FLASH são altamente flexíveis na fase de desenvolvimento pois<br />

permitem uma rápida alteração do código de programa. Como ferramentas de<br />

desenvolvimento, encontram-se disponíveis: gravadores, depuradores, emuladores,<br />

placas de protótipos, etc.<br />

2.4.3 - Modelos comuns de PICs<br />

• PIC16F84/PIC16F84A<br />

• PIC16F628/PIC16F628A<br />

• PIC16F877/PIC16F877A<br />

• PIC18F452/PIC18F4520<br />

• PIC16F876<br />

• PIC24F/PIC24H[1]<br />

39


2.4.4 - Aplicações<br />

A linha de microcontroladores PIC é comum ser utilizada em:<br />

• Electrónicas de consumo<br />

• Automação<br />

• Robótica<br />

• Instrumentação<br />

• Electrónica embebida<br />

• Periféricos de informática.<br />

2.4.5 – História<br />

As raízes dos PICs têm origem na universidade de Harvard com um projecto para o<br />

<strong>De</strong>partamento de <strong>De</strong>fesa, mas este foi vencido por um projecto de memória mais<br />

simples (e mais confiável na época) da Universidade de Princeton. A arquitectura<br />

Harvard foi primeiramente usada no 8x300 da Signetics, e foi adoptada pela General<br />

Instruments para uso como interface controladora de periféricos (PIC) que foi<br />

projectada para compensar o fraco barramento de I/O da sua CPU CP1600 de 16 bits.<br />

A divisão de micro electrónica foi depois transformada na Arizona Microchip<br />

Technology (por volta de 1985), com os PICs como seu produto principal. Os PICs<br />

tinham um grande conjunto de registos (de 25 a 192 registos de 8 bits, comparado<br />

com os 144 do Z8). Existem até 31 registos directos, mais um acumulador W,<br />

embora R1 a R8 também tenham funções especiais - R2 é o PC (com uma pilha<br />

implícita de 2 a 16 níveis), e R5 a R8 controlam as portas de I/O. R0 é mapeado no<br />

registo R4 (FSR) e serve como apontador (semelhante ao ISR no F8, ele é o único<br />

meio de se aceder ao registo R32 ou acima).<br />

O PIC16x é muito simples, tem somente 33 instruções de 12 bits de largura fixa,<br />

incluindo diversas instruções de salto condicional a flags para a próxima instrução<br />

40


(para loops e rotinas condicionais), produzindo um código enxuto importante para<br />

aplicações em sistemas embebidos. Ele tem pipelines marginais (2 estágios, 1 de<br />

busca e 1 de execução), combinados com execução em um ciclo (excepto para saltos,<br />

com 2 ciclos), tendo um desempenho muito bom para a sua categoria.<br />

O PIC 17x tem mais modos de endereçamento (directo, indirecto, e relativo; as<br />

instruções de modo indirecto gastam 2 ciclos para execução), mais instruções (58 de<br />

16 bits), mais registos (232 a 454), mais até 64k palavras de espaço de programa (2k<br />

a 8k no chip). As versões top de linha também possuem instruções de multiplicação<br />

de 8 bits sem sinal de 1 ciclo. Este modelo está obsoleto, não sendo mais<br />

recomendado para novos projectos de acordo com a Microchip.<br />

O PIC 16x é uma variante interessante do projecto de 8 bits feita por volta de 1985<br />

pela General Instruments com técnicas de projecto mais inovadoras do que a de<br />

outras CPUs da lista (o 1650, o sucessor do 1600 mais comum). Ela perdeu para<br />

outras CPUs mais populares e foi posteriormente vendida para a Microchip<br />

Technology, que ainda o vende para pequenas aplicações em sistemas embebidos.<br />

Um exemplo deste microcontrolador é uma pequena placa chamada Basic Stamp que<br />

consiste em 2 circuitos integrados (1 PIC 16C56 de 18 pinos, um interpretador Basic<br />

em 512 palavras de ROM e uma memória EEPROM serial de 256 bytes) com uma<br />

porta de I/O onde os programas do usuário podem ser armazenados (por volta de 80<br />

linhas de comando de Basic).<br />

2.4.6 - Curiosidade Científica<br />

Na verdade a arquitetura PIC foi primeiramente integrada pela Signetics para uma<br />

empresa em San Jose usando tecnologia bipolar e usado no 8X300. Antes disso, a<br />

arquitectura tinha sido uma curiosidade científica desde a sua invenção pela<br />

Universidade de Harvard numa competição criada pelo departamento de <strong>De</strong>fesa que<br />

colocou Princeton contra Harvard. Princeton ganhou a competição porque o tempo<br />

médio entre falhas (MTBF) da sua arquitectura de memória mais simples era muito<br />

melhor, embora mais lenta que a proposta de Harvard. Com o desenvolvimento dos<br />

41


transístores e dos circuitos integrados, a arquitectura Harvard finalmente foi<br />

reconhecida. A Microchip fez melhoramentos na arquitectura original, e actualizou<br />

os blocos funcionais do projecto original com avanços modernos que estão em<br />

compasso com os processos arquitectónicos existentes e capacitados pelo baixo custo<br />

dos semicondutores.<br />

2.4.7 - Do controle de portas para controlador RISC<br />

Em 1965 a General Instruments criou a divisão de microelectrónica, e sem dúvida<br />

usou esta divisão para gerar algumas das primeiras arquitecturas de memórias<br />

EPROM e EEPROM viáveis. A Divisão de microelectrónica da General Instrumens<br />

foi responsável também por uma grande variedade de funções digitais e analógicas,<br />

com as famílias AY3-xxxx e AY5-xxxx.<br />

A General Instruments também criou um microprocessador de 16 bits chamado<br />

CP1600, no começo dos anos 70. Era um microprocessador razoável, mas<br />

especialmente era pobre em portas de entrada e saída. Para algumas aplicações muito<br />

específicas onde as portas de I/O eram necessárias, a General Instruments projectou<br />

uma interface controladora de periféricos (ou PIC abreviadamente, de Peripherical<br />

Interface Controller em inglês), por volta de 1975. Ele era projectado para ser muito<br />

rápido, dado que era para ser portas de I/O de uma máquina de 16 bits, mas não tinha<br />

uma grande capacidade de funcionalidade, tendo um conjunto de instruções<br />

microcodificadas pequeno. A arquitectura projectada em 1975 é substancialmente a<br />

arquitectura de hoje do PIC16C5x. A versão de 1975 foi fabricada em NMOS, e era<br />

somente disponível em versões ROM mascaradas. O mercado, contudo, não pensava<br />

particularmente assim, e os PICs permaneceram projectados somente para um<br />

punhado de grandes clientes.<br />

No final dos anos 80, a General Instruments fez uma grande revisão no seu negócio e<br />

se reestruturou, deixando para se concentrar nas suas actividades principais, que<br />

eram essencialmente semicondutores de potência. A Divisão de microelectrónica da<br />

General Instruments se tornou a General Instruments Microelectronics Inc.<br />

42


(subsidiária integral), da qual 85% foi finalmente vendida para alguns investidores,<br />

incluindo a fábrica em Chandler, no Arizona. O pessoal desses investidores analisou<br />

profundamente a linha de produtos e fez uma limpeza na maioria deles, como a linha<br />

AY3 e AY5 e outros produtos, restando como negócio principal os PICs e as<br />

EEPROMs paralelas. Houve uma decisão de reiniciar uma nova empresa, chamada<br />

Arizona Microchip Technology.<br />

Como parte da estratégia, a família NMOS PIC165X foi reprojectada para usar um<br />

recurso em que a empresa era muito boa, o EPROM, o conceito de ser baseado em<br />

CMOS, one-time-programmable e assim a família PIC16C5X de memória de<br />

programa EPROM apagável tinha nascido.<br />

PIC é uma família de microcontroladores RISC fabricada pela Microchip, derivada<br />

do PIC1650 originalmente desenvolvida pela divisão de microelectrónica da General<br />

Instruments. A Microchip não usa PIC como um acrónimo, na realidade a marca é<br />

PICmicro. Geralmente é conhecido que PIC significa Peripherical Interface<br />

Controller, embora o acrónimo original para o PIC1650 era Programmable<br />

Intelligent Computer.<br />

O PIC original foi fabricado para ser usado com a nova CPU de 16 bits da General<br />

Instruments, o CP1600. Apesar de ser uma boa CPU, o CP1600 tinha fraco<br />

desempenho de portas de I/O, e o PIC de 8 bits foi desenvolvido em 1975 para<br />

melhorar o desempenho do sistema em geral liberando as tarefas de I/O da CPU. O<br />

PIC usava simples microcódigos armazenados na ROM para desempenhar suas<br />

tarefas, e e embora o termo não tenha sido usado na época, ele tinha um projeto<br />

RISC que executava uma instrução por ciclo (4 ciclos de clock).<br />

Em 1985, a General Instruments vendeu a divisão de microeletrônica, e os novos<br />

donos cancelaram quase tudo, o que na época era obsoleto. Os PICs contudo, foram<br />

actualizados com EPROM para produzir um controlador programável, e hoje uma<br />

grande variedade de PICs é disponível com vários periféricos internos (módulos de<br />

comunicação serial, UARTS, núcleos de controle de motores, etc.) e memória de<br />

programa de 512 a 32k palavras.<br />

43


3 - Opções de projecto<br />

O objectivo deste projecto é realizar um osciloscópio digital de 4 <strong>canais</strong> e um<br />

analisador lógico de até 16 <strong>canais</strong>.<br />

3.1 - Avaliação dos requisitos<br />

Os requisitos indicam que é necessária uma comunicação entre o microprocessador e<br />

o PC com largura de banda suficiente, e com uma taxa de transferência elevada. É<br />

necessário transferir dados rapidamente e em grande quantidade. Para isso<br />

analisámos várias interfaces de comunicação, série RS232, usb e ethernet. A<br />

comunicação série, de momento em declínio, permite no máximo 115200bps, o que<br />

embora seja suficiente para amostrar dados a uma boa frequência, há problemas ao<br />

amostrar 4 <strong>canais</strong> simultaneamente. A comunicação via USB permite taxa de<br />

transferência até 480Mbps (USB2.0) estando esta interface a atingir a maturidade no<br />

ciclo de vida. A comunicação via Ethernet 10/100/1000 permite taxas de<br />

transferência ate 1Gbps e no caso de estar ligado a um switch ou hub numa rede<br />

permite o seu acesso por qualquer tipo de máquina da rede, possibilitando a<br />

verificação do circuito, até mesmo por Internet caso o software de suporte seja<br />

desenvolvido. Foi escolhida a interface USB em prol da Ethernet, visto haver a<br />

possibilidade de obter os recursos necessários para o desenvolvimento do projecto<br />

por USB, não havendo conhecimento de como obter ou desenvolver hardware capaz<br />

de fazer interface do microprocessador com Ethernet.<br />

44


3.2 - USB<br />

A interface USB poderia ser aplicada neste projecto de 2 formas. Através de um<br />

módulo externo, simplificando o trabalho a nível de software mas havendo a despesa<br />

de cerca de 30 . O módulo externo continha também o software (drivers) para o PC<br />

simplificando também o desenvolvimento nesse lado. A outra forma de aplicação da<br />

interface USB seria através de um módulo integrado num microprocessador, que<br />

permitiria ter um maior controlo sobre o método de transferência de dados, reduzir os<br />

custos monetários mas incrementando o esforço do desenvolvimento da interface no<br />

software. No entanto, achamos que esta decisão é a mais viável a longo prazo pois se<br />

necessitarmos de repetir várias vezes o projecto ou elaborar projectos com interface<br />

USB, o custo de um módulo externo será deduzido a cada projecto extra,<br />

compensando a longo prazo. Outra das razões, embora menos lógica, seria a escolha<br />

deste método de interface pelo desafio que impõe a nível de conhecimentos, pelo<br />

gozo de desenvolver algo que não conhecemos apenas familiarizamos o conceito<br />

exterior. Caso utilizássemos o módulo externo poderíamos ter escolhido um<br />

microprocessador utilizado frequentemente no ISEP, visto que seria disponibilizado<br />

pelo Instituto, não necessitando de ser muito avançado. Um 16F84A ou um 8051<br />

serviria para o efeito.<br />

3.3 - PIC 18F4550<br />

Recorreu-se à pesquisa na Internet de microprocessadores com módulos de USB<br />

integrados, requisitando amostras de Microprocessadores da Microchip, Atmel e<br />

Maxim. Após recepção e a não recepção das amostras, foi decidido que o<br />

microprocessador seria a PIC 18F4550 pois foi o único que veio como amostra com<br />

módulo de USB. O 8051 e AVR seria necessário adquirir através de compra. A PIC<br />

tinha a vantagem de ter sido a primeira a ser apresentada na cadeira de LABSI e por<br />

possuirmos alguns fundamentos sobre o seu funcionamento. Os fóruns on-line<br />

indicavam também a superioridade da PIC em relação ao 8051 na interface USB.<br />

45


<strong>De</strong>scartamos a utilização da FPGA como peça principal deste projecto visto já haver<br />

um projecto disponível para esse efeito.<br />

3.4 - Construção do Programador<br />

Após investigação inicial sobre funcionamento da PIC 18F4550, em comparação<br />

com a 16F84A, tentamos elaborar um código simples de inicialização do hardware e<br />

colocação do código de alternância de um led, para teste do funcionamento da PIC e<br />

da montagem correcta do circuito inicial. Na tentativa de programação da PIC<br />

através do programador existente no ISEP, verificamos que o programador não é<br />

compatível com as novas famílias de microprocessadores da Microchip, entre eles o<br />

nosso modelo. <strong>De</strong>cidiu-se construir um programador para a PIC. Investigação na<br />

Internet revelou vários tipos de modelos de programadores, sendo escolhido um que<br />

têm bastante sucesso e revela não ser necessário muito equipamento electrónico, pois<br />

queremos ter o mínimo de despesa. O modelo JDM2 foi o escolhido. Inicialmente<br />

resolvemos desenvolver e construir um programador que pudesse ser alimentado pela<br />

porta série ou com conector de alimentação externo baseado em vários modelos.<br />

Após a sua construção verificou-se que não funcionava. Construiu-se o programador<br />

em breadboard, alimentado exclusivamente pela porta série, tendo funcionado.<br />

3.5 - Compilador (Assembly ou C)<br />

<strong>De</strong> seguida programámos na PIC o código de alternância de estado de um led,<br />

desenvolvido em assembly. O led funcionou demonstrando que a PIC obtida por<br />

amostra aparentemente estava em boas condições de funcionamento. Iniciou-se a<br />

pesquisa nos “Application Notes” e “Source Codes” distribuídos pela Microchip<br />

sobre a PIC, sobre a interface USB e sobre vários outros tipos de “Source Codes”<br />

com alguma relevância para o nosso projecto. Após descodificação e compreensão<br />

de parte do funcionamento do código de interface USB por assembly, decidimos<br />

46


abandonar a linguagem assembly devido à extrema complexidade de compreender<br />

todo o código necessário ao seu desenvolvimento e tentar mudar para um compilador<br />

C. O compilador de assembly utilizado foi o MPLAB IDE 7.60 com o módulo<br />

MPASM, o compilador C utilizado foi o MPLAB IDE 7.60 com o módulo C18.<br />

Embora existam actualmente vários compiladores para a PIC, como o CCS C ou o<br />

HI-TECH C, foi escolhido o C18 devido a ser o oficialmente distribuído pela<br />

Microchip, ser o formato do código encontrado nas “application notes” e “source<br />

codes” distribuídas. É necessário referir que neste compilador (C18) as instruções de<br />

USB na PIC não estão presentes em funções pré-compiladas e têm que ser<br />

adicionadas ou programadas de raiz pelo utilizador. Utilizou-se como base do nosso<br />

programa o código exemplo de HID MOUSE da Microchip. Este código já executava<br />

a enumeração e autenticação USB. Como curiosidade, após análise do ficheiro<br />

bootloader distribuído pela MICROCHIP verificamos que este exemplo foi<br />

desenvolvido a partir do código fonte do bootloader visto que as configurações e<br />

desenho do pacote de dados USB é idêntico, assim como as funções utilizadas para<br />

os transferir e até mesmo grande parte dos comentários. Mais uma vez se verifica que<br />

“não é necessário reinventar a roda”.<br />

3.6 - Visual Basic 6<br />

A escolha deste compilador deve-se principalmente a duas razões, o programa base<br />

para o PIC tem como interface de comunicação e controlo um programa simples em<br />

Visual Basic 6, que envia um byte para a PIC por USB e recebe esse mesmo byte. O<br />

Visual Basic 6 é um compilador de programação orientada a objectos, sobre o qual<br />

nós já possuíamos algumas ideias de como realizar um programa deste tipo.<br />

47


3.7 - Condicionamento sinal [Analógico e <strong>Digital</strong>]<br />

Os sinais amostrados digitalmente são lidos através de buffer’s digitais que filtram o<br />

sinal mas mantém os níveis lógicos, isto para impedir surtos de tensão que possam<br />

danificar a PIC e o resto do circuito. No condicionamento de sinal analógico a<br />

filtragem e protecção são feitas pelo AD. Foi escolhido um AD da Maxim<br />

(MAX154BCNG) de interface paralela visto poder ser obtido por amostra, cumprir<br />

os requisitos mínimos de amostragem necessária para o projecto e ter interface de<br />

comunicação de saída paralela, o que simplificava o trabalho no código interno da<br />

PIC. <strong>De</strong>finimos que a tensão que o AD iria amostrar variava apenas entre 0V e +5V<br />

utilizando Amplificadores Operacionais com regulação de ganho para permitir ler<br />

valores entre 0,1V e 20V, positivos e negativos. A regulação de ganho é feita<br />

digitalmente com controlo por parte da PIC para evitar a necessidade de ajuste<br />

manual do circuito, permitindo controlo completo de tudo através da interface no PC.<br />

Para esse efeito utilizamos multiplexer’s digitais de 8 <strong>canais</strong> da MAXIM<br />

(MAX338EPE) em conjunção com o integrado que contém 2 amplificadores<br />

operacionais (TL082CP).<br />

3.8 - FIFO’s<br />

Para a leitura de sinais digitais com frequência superior á de amostragem máxima do<br />

circuito recorremos a uma FIFO assíncrona colocada num módulo externo<br />

(CY7C4275-15ASC) com 32Kb de profundidade de memória com 18 bits em<br />

paralelo, com possibilidade de interligar mais FIFO’s em série para obter maior<br />

memória onde guardar as amostras.<br />

48


3.9 - Investigação sobre alimentação do circuito.<br />

Na alimentação do circuito, toda a energia de 0V até +5V é obtida a partir da<br />

interface USB, estando já a PIC programada para permitir até 450 mA de corrente de<br />

consumo do circuito completo. Para as tensões requisitadas pelo multiplexer e<br />

amplificadores operacionais, positivas e negativas, utiliza-se um transformador de<br />

220V / 12V (AC) com ponte rectificadora e 2 rectificadores de tensão para obter<br />

+12V e -12V (7812 e 7912 respectivamente). A placa é parcialmente alimentada por<br />

USB para permitir utilizar o analisador lógico em locais que não possuam energia<br />

eléctrica. Também é possível amostrar sinais analógicos desde que estejam contidos<br />

entre 0V e +5V, sem alimentação externa.<br />

49


4 - <strong>De</strong>scrição do Circuito<br />

4.1 - <strong>De</strong>senvolvimento da placa de comunicação USB:<br />

O tipo de comunicação utilizada é USB e para tal foi usada a PIC18F4550, pois, já<br />

tem integrado uma porta USB. A comunicação USB foi escolhida porque é um meio<br />

de comunicação que nos permite elevadas taxas de transmissão, o que não era<br />

exequível com o protocolo RS232. Para tal usamos o esquema em baixo que nos<br />

permite realizar a parte da comunicação com o PC.<br />

Figura 3 – USB Basic Board<br />

Este circuito simples é o requisito mínimo para estabelecer comunicação USB com o<br />

PC. Realizamos este esquema através da informação adquirida pelo fabricante<br />

“Microchip”. O hardware ilustrado só por si não faz nada, para tal é preciso<br />

programa-lo com o Bootloader, programa este, que possui todas as rotinas do<br />

protocolo USB bem como o processo de inicialização da PIC. O Bootloader<br />

50


desenvolvido foi uma alteração do disponibilizado pelo fabricante que estava<br />

preparado para outro tipo de hardware, nomeadamente as boards de desenvolvimento<br />

da Microchip. O software utilizado para compilar o código foi o MPLAB C18,<br />

disponibilizado pela Microchip. <strong>De</strong>pois de compreender o Bootloader, disponível<br />

pelo fabricante, procedemos á modificação para compatibilizar com o nosso<br />

hardware. No entanto os programadores de PIC do ISEP não tinham suporte para<br />

programar a PIC18F4550, o que fez regressar ao trabalho de pesquisa por um<br />

programador que nos permitisse programar a PIC.<br />

4.2 - Placa programadora<br />

Para programar a PIC, utilizamos um programador básico do tipo JDM que nos<br />

permitiu programar o dispositivo pela porta RS232.<br />

Figura 4 – Programador JDM<br />

51


<strong>De</strong>pois de programada a PIC, testamos o firmware ligando ao PC. Tivemos alguns<br />

problemas no inicio pois nem sempre o firmware funcionava bem ou nem mesmo<br />

funcionava. Com umas rectificações atingiu-se o funcionamento correcto.<br />

<strong>De</strong> momento, o dispositivo estabelece comunicação com o PC e possui a<br />

possibilidade de ser programado via USB. Para tal é necessário o driver USB da PIC<br />

18F4550 e o pacote de desenvolvimento PICDEM FS USB Starter Kit.<br />

Quanto ao desenvolvimento do <strong>Osciloscópio</strong>, foi decidido desenvolver um<br />

osciloscópio de 4 <strong>canais</strong>. Para isso utilizou-se a seguinte filosofia:<br />

Figura 5 – Fluxograma Hardware<br />

Na primeira fase, o circuito de condicionamento de sinal é feito com Amplificadores<br />

Operacionais e controlado por computador. <strong>De</strong> seguida, o sinal é convertido pelo AD<br />

e transmitido à PIC que envia a informação para o PC, e este mostra o sinal na<br />

aplicação desenvolvida em visual Basic.<br />

4.3 - Condicionamento de sinal<br />

A parte de condicionamento de sinal resume-se a um conjunto de ampops que<br />

transformam uma variação de sinal na entrada para uma variação de sinal na saída<br />

entre [0,+5] V, independentemente dos valores de entrada, o ganho dos ampops pode<br />

52


ser controlado por PC através de um switch analógico fornecido como sample da<br />

Maxim.<br />

Figura 6 – Condicionamento de sinal universal<br />

Os Amplificadores Operacionais estão contidos num integrado (CA320EN), em par,<br />

num formato DIP de 8 pinos. A primeira etapa tem montagem de amplificador<br />

inversor. Este amplificador condiciona a onda de entrada “Vi” para que as<br />

amplitudes máximas sejam sempre de 2.5 V de pico. O switch/multiplexer analógico<br />

usado é o Max 338. Este componente permite fazer uma selecção das resistências de<br />

forma simples e sem alterações no circuito de montagem inversora. Em baixo está<br />

ilustrada a tabela de verdade do Max338.<br />

Tabela 4 – Tabela MAX338<br />

As entradas A2 a A0 são controladas pelo utilizador na aplicação em Visual Basic<br />

permitindo total controlo do dispositivo.<br />

53


Para cada canal de selecção, foram calculadas as resistências R2, em que R1=10k .<br />

Variação Vi (Vp) Vo1 (Vp) Ganho 1º Ampop R (Ohm)<br />

0,1 2,5 25 250000<br />

0,2 2,5 12,5 125000<br />

0,5 2,5 5 50000<br />

1 2,5 2,5 25000<br />

2 2,5 1,25 12500<br />

5 2,5 0,5 5000<br />

10 2,5 0,25 2500<br />

20 2,5 0,125 1250<br />

Tabela 5 – Ganhos de selecção de tensão<br />

Estes ganhos foram calculados de acordo com a fórmula:<br />

A = −<br />

Para garantir os ganho de uma forma perfeita ou mais próxima da ideal usamos<br />

54<br />

R2<br />

R1<br />

potenciómetros para garantir os valores exactos de resistência.<br />

No entanto, nesta fase, para as variações máximas do sinal para cada selecção, o sinal<br />

na saída do primeiro ampop varia entre [-2.5;2.5] V. O AD funciona com tensões de<br />

referencia de [0;+5] V, e para garantir isso, utilizamos um circuito somador na saída<br />

da primeira etapa do circuito para somar uma componente continua de +2,5V.<br />

O potenciómetro R53 é variado na fase final para que a tensão de referência seja<br />

2,5V e os potenciómetros R49, R50 e R54 são iguais, para que a saída do circuito<br />

seja:<br />

Vo 2 = Vref + Vo1<br />

Assim é garantido um condicionamento de sinal de [0,+5] V para qualquer tipo de<br />

variação de entrada.


4.4 - Conversão Analógico para <strong>Digital</strong><br />

O AD utilizado é o Max154, de 8 bits, com uma taxa de conversão de 2.5µs. Possui 4<br />

entradas analógicas, o que possibilita lerem 4 sinais analógicos com o mesmo<br />

integrado. O circuito seguinte representa o circuito do AD:<br />

Figura 7 – Circuito básico para o AD MAX154<br />

Os 4 diodos que estão na entrada analógica servem para em caso de sobretensão não<br />

danificar o AD. Os 2 bits de selecção de canal servem para seleccionar um dos 4<br />

<strong>canais</strong> para o AD converter, o bit de leitura é o bit que serve de amostragem, que faz<br />

com que o AD converta a uma taxa de amostragem predefinida pelo utilizador. Este<br />

bit a “1” faz com que o AD desligue, a “0” faz a conversão e leitura. O barramento<br />

de dados está ligado ao Porto B da PIC que processa e envia os dados para o PC.<br />

4.5 - PIC18F4550<br />

Este dispositivo e o núcleo principal de todo este projecto. É ele que controla os<br />

componentes, processa os dados e os transmite para o PC. É baseado no ultimo<br />

modelo de microprocessador RISC da Microchip. Funciona a cerca de 40 MHz com<br />

10 MIPS.<br />

55


4.6 – Esquema da Placa Global<br />

Aqui temos o desenho completo do trabalho realizado, com todos os componentes<br />

descriminados:<br />

Figura 8 – Circuito global em schematic<br />

56


4.8 - PCB do esquema Global<br />

Figura 9 – Circuito global em PCB<br />

57


5 - <strong>De</strong>scrição do Programa/Código<br />

5.1 - Software Bootloader<br />

O bootloader da Microchip é uma sequência de código de inicialização que configura<br />

a PIC para poder receber dados pela interface de USB, permitindo a execução de<br />

comandos provenientes de uma aplicação de programação no PC, para<br />

descarregamento de código desenvolvido pelo construtor através da mesma interface<br />

USB. Este bootloader é vantajoso em comparação com a programação em<br />

programador externo, pois não é necessário remover a PIC do circuito onde ela<br />

opera, permitindo apagar e programar novas aplicações em caso de actualização ou<br />

necessidade de alteração do software. É comummente denominado como “Flash<br />

Bootloader“ pois permanece na memória flash do microprocessador e é sempre a<br />

primeira aplicação a ser executada após o reset.<br />

O bootloader da Microchip foi descarregado para a PIC por meio do programador<br />

JDM em conjunção com a aplicação WinPic800. Foi necessário ajustar as palavras<br />

de configuração do ficheiro “.HEX” devido às alterações existentes no hardware<br />

(cristal, temporizador interno, modo USB, interrupções, etc). Embora houvesse<br />

dificuldade na calibração correcta das palavras de configuração, após análise da<br />

datasheet e consulta online do fórum da Microchip, a programação da PIC foi bem<br />

sucedida, visto a PIC enumerar e autenticar correctamente por USB quando<br />

conectada. O “Source Code” do Bootloader não foi alterado, apenas foi estudado de<br />

forma a aprofundar o conhecimento sobre a programação da interface USB.<br />

58


O cabeçalho do código principal do Bootloader está apresentado na figura seguinte:<br />

Figura 10 – USB Bootloader Version 1.00<br />

59


O funcionamento do bootloader é descrito no diagrama de blocos seguinte e no texto<br />

que o procede:<br />

Figura 11 – Fluxograma Software PIC<br />

Após o inicio do programa (“Start”), são inicializados os registos, definidas variáveis<br />

e verificadas os pinos dos portos que definem se o código do bootloader será<br />

executado (“Bootloader Button Pressed”).<br />

Se o pino 2 do Porto E estiver no nível lógico zero, o código a executar será o do<br />

bootloader. O código do bootloader começa por inicializar as portas dos leds para<br />

coloca-los a piscar, em padrões definidos (ver tabela no capitulo seguinte), consoante<br />

o estado de comunicação do módulo USB (“mInitAllLeds”).<br />

60


<strong>De</strong> seguida, é configurado o módulo USB interno e inicializados os buffers dos<br />

<strong>canais</strong> de entrada e saída (“mInitializeUSBDriver”).<br />

O estado da interface USB no hardware é verificada (“USBCheckBusStatus”) e o<br />

serviço de enumeração e autenticação USB é inicializada (“USBDriverService”).<br />

Caso a enumeração não ter terminado ou ainda se encontrar em progresso, a secção<br />

de código do “BootService” não é executada.<br />

Se a interface de comunicação USB estiver completamente configurada e<br />

correctamente enumerada, os leds devem piscar alternadamente, indicando canal<br />

preparado para comunicação. O programa ficará a correr em ciclo fechado apenas<br />

colocando os leds nos estados lógicos do estado da interface USB, esperando a<br />

recepção de um comando de controlo vindo pelo USB por parte da aplicação no PC<br />

(“USBDriverService”), executando o código ao qual o comando se refere,<br />

preparando a resposta à execução do comando (“BootService”) e enviando os dados<br />

de volta à aplicação no PC (“USBDriverService”).<br />

Os comandos, enviados pela aplicação de programação por USB, “Microchip<br />

PICDEM FS USB <strong>De</strong>monstration Tool”, permitem realizar algumas operações tais<br />

como leitura da versão do bootloader instalado, leitura do código existente no espaço<br />

de programação dedicado a código a ser programável por USB, escrita de código a<br />

ser executado em funcionamento normal, formatação do espaço dedicado a código de<br />

funcionamento normal, leitura de dados de EEPROM, escrita de dados na EEPROM,<br />

escrita de configuração da PIC, executar o reset á PIC, entre outros.<br />

O modo de comunicação de USB do bootloader é baseado em interrupções<br />

provenientes do PC, o PC envia dados e a PIC retorna os dados respondendo, não ao<br />

contrário. A comunicação é feita em pacotes de um byte de dados de cada vez, célere<br />

a suficiente para permitir a execução da programação em menos de 5 segundos.<br />

A figura seguinte demonstra a interface de programação por USB fornecida no<br />

pacote de software “Microchip USB Framework, distribuída e disponível no site da<br />

Microchip.<br />

61


Figura 12 – Ilustração USB PICDEM(TM)<br />

5.2 - Software Placa Principal e Periféricos<br />

Através da análise do código do bootloader, e de um exemplo de código rato USB<br />

fornecido pela Microchip no pacote de desenvolvimento USB, começou-se a<br />

desenvolver o software da PIC, no compilador C18 fornecido pela Microchip.<br />

Inicialmente ponderou-se a programação em linguagem assembly, ideia essa que foi<br />

colocada de parte devido à elevada complexidade dos protocolos e funções USB<br />

nessa linguagem. Estudamos e utilizamos a linguagem C, do compilador C18 no<br />

MPLAB C18.<br />

62


O cabeçalho do código principal do Bootloader está apresentado na figura seguinte:<br />

Figura 13 – Firmaware Mouse <strong>De</strong>mo<br />

63


Na figura abaixo está descrita, em diagrama de blocos, o funcionamento do código<br />

geral na PIC.<br />

Figura 14 – Processo de inicialização<br />

Após o modo de bootloader ter sido verificado no arranque e negado, o programa<br />

coloca o “program counter” a 0x800, sendo este o inicio do código do programa<br />

normal (principal) da PIC, o equivalente ao 0x000. As interrupções também são<br />

deslocadas o mesmo número estando agora nas posições 0x808H (interrupções de<br />

alta prioridade, alterada colocando um salto na 0x008H) e 0x818H (interrupções de<br />

baixa prioridade, alterada colocando um salto na 0x018H).<br />

Após o inicio do programa principal, são re-inicializados os registos, definidas<br />

variáveis e colocados os estados nos portos e são inicializadas as portas dos leds para<br />

coloca-los a piscar, em padrões definidos (ver tabela seguinte), consoante o estado de<br />

comunicação do módulo USB (“InitializeSystem”).<br />

<strong>De</strong> seguida, é configurado o módulo USB interno e inicializados os buffers dos<br />

<strong>canais</strong> de entrada e saída. O estado da interface USB no hardware é verificada e o<br />

serviço de enumeração e autenticação USB é inicializada (“USBTasks”). Caso a<br />

enumeração não tenha terminado ou ainda se encontrar em progresso, a secção de<br />

código do “ProcessIO” não é executada.<br />

64


Quando a interface de comunicação USB estiver completamente configurada e<br />

correctamente enumerada, os leds devem piscar alternadamente, indicando canal<br />

preparado para comunicação. O programa ficará a correr em ciclo fechado apenas<br />

colocando os leds nos estados lógicos do estado da interface USB, esperando a<br />

recepção de um comando de controlo vindo pelo USB por parte da aplicação no PC<br />

(“USBTasks”), executando o código do comando correspondente, preparando os<br />

dados para envio da resposta de volta à aplicação no PC (“ProcessIO”) e envio dos<br />

dados na secção (“USBTasks”).<br />

Estado Interface USB Estado dos leds<br />

SUSPEND 1: Toggle – 2: =LED1<br />

DETACHED_STATE 1: Off – 2: Off<br />

ATTACHED_STATE 1: On – 2: On<br />

POWERED_STATE 1: On – 2: Off<br />

DEFAULT_STATE 1: Off – 2: On<br />

ADDRESS_STATE 1: Toggle – 2: Off<br />

CONFIGURED_STATE 1: Toggle – 2: !LED1<br />

Tabela 6 – Estado de funcionamento USB<br />

5.3 – Software de Interface Gráfica no PC<br />

Recorreu-se ao Visual Basic 6.0 para desenvolver a aplicação de interface com o<br />

dispositivo, utilizável no PC, visto ser uma linguagem de alto nível, de programação<br />

orientada a objectos que permite desenvolver uma interface de utilizador com<br />

facilidade e rapidez. A interface gráfica desenvolvida até ao momento encontra-se<br />

65


apresentada nas imagens seguintes, tanto para a parte de osciloscópio digital, tanto<br />

como de analisador lógico.<br />

Figura 15 – Interface windows<br />

A aplicação em Visual Basic 6 foi baseada na aplicação de interface com o exemplo<br />

do HID MOUSE EXAMPLE da Microchip, apresentado na figura seguinte.<br />

Figura 16 – Interface Windows basica<br />

A aplicação demonstra o envio de um byte para a PIC por USB e a recepção desse<br />

mesmo byte por parte da aplicação. Permite enviar o byte a cada clique num botão,<br />

ou continuamente num intervalo de tempo predefinido. O código em que nos<br />

66


aseamos principalmente está contido num módulo de declarações de API’s de<br />

interface USB (“Application Programming Interface”) que permite utilizar as<br />

funções existentes de interface USB no sistema operativo. Para além do módulo de<br />

API’s existente neste exemplo, foi necessário recorrer ao uso de outros módulos,<br />

pesquisados e obtidos na Internet, posteriormente modificados para serem utilizados<br />

na aplicação. Entre eles destacam-se os módulos de classes com funções de API’s de<br />

contadores de alta performance, visto os timer’s do VB não terem a resolução<br />

suficiente para determinarem intervalos de tempo de transferências por USB, pois a<br />

resolução mínima deles é 1ms e não contam o intervalo de tempo quando o código da<br />

sua interrupção é executado. As funções o timer de alta performance é baseado no<br />

numero de clocks do CPU entre o inicio e a paragem do clock. Recorreu-se à<br />

construção de um módulo de manipulação de bits visto ser necessária a conversão de<br />

valores decimais para binário e vice-versa, decimal para hexadecimal e vice-versa,<br />

binário para hexadecimal e vice-versa. A maior parte destas funções está presente na<br />

livraria de desenvolvimento MSDN fornecida em conjunto com o Visual Studio 6.0<br />

no qual está presente o Visual Basic 6.0 tendo o inconveniente de a maior parte das<br />

funções serem encontradas se for conhecida a sua designação e finalidade, daí a<br />

pesquisa por módulos já existentes.<br />

A componente de código do DFT (Direct Fourier Transform) foi obtida na Internet<br />

através da análise do código de uma função de um projecto de um osciloscópio<br />

digital, desenvolvido numa outra faculdade. O link pode ser encontrado nas<br />

referências. Actualmente a análise da DFT só é executada no canal a ser amostrado<br />

de momento.<br />

O analisador lógico, apresentado na figura da direita, lista a amostragem a ser<br />

efectuada na PIC, 16 bits de cada vez. A amostragem está a ser feita a 16 bits, por<br />

pedido da aplicação no PC. <strong>De</strong> momento a FIFO ainda não foi implementada,<br />

limitando o funcionamento do analisador lógico. Taxa de amostragem seguida<br />

409600 Hz, até 512 amostras guardadas no buffer interno. Taxa de amostragem por<br />

pedido de interrupção de USB encontra-se nos 75Hz devido ao tempo de pedidos de<br />

dados por parte da aplicação no PC. Análise da interface USB na PIC indica que é<br />

possível atingir taxas de amostragem e taxas de transferências elevadas.<br />

67


A PIC têm capacidade de enviar dados pela interface USB a cada milissegundo,<br />

possui 16 <strong>canais</strong> (“endpoints” ), cada um com 64bytes por transferência, totalizando<br />

cerca de 1024 KBytes por segundo de transferência máxima, ou 8Mbits por segundo.<br />

Taxa de amostragem perto de 1MHz é teoricamente possível (em tempo real),<br />

embora com utilização da FIFO possa atingir os 66Mhz.<br />

68


6 - Placa Programadora<br />

6.1 - Programador JDM<br />

Na figura seguinte é apresentado o programador. As tensões da porta série não<br />

possibilitam a programação directa da PIC. Para se programar uma PIC precisa-se<br />

“Ground”, +5V para alimentação e +12.5V para o sinal de programação. A norma<br />

RS232 indica que o valor lógico 0 está entre -3V a -25V (normalmente a -12V) e o<br />

valor lógico 1 está entre +3V a +25V (normalmente a +12V). A norma RS232<br />

estabelece como valores válidos para o valor lógico 0 o intervalo de -8V a -12V e<br />

para o valor lógico 1 o intervalo de +8V a +12V. Na maioria dos PC’s as tensões dos<br />

sinais andam perto de -8V e +8V.<br />

Figura 17 – Programador JDM em schematic<br />

69


Para se conseguir obter +12.5V de tensão de programação, cria-se uma massa de<br />

alimentação da PIC que está a -5V relativamente ao Ground da porta série. <strong>De</strong>sta<br />

forma o Ground da porta série está a +5V do Ground da PIC, servindo ela como<br />

alimentação para a mesma. O condensador de 22uF carrega-se relativamente à queda<br />

de tensão dos 2 diodos 1N 4148 (à direita) estabilizando-se no zener 5v1, servindo de<br />

fonte de alimentação +5V. O condensador de 100uF carrega-se relativamente à<br />

queda de tensão do diodo 1N 4148 (à esquerda) e do transístor 2N 3904 (à esquerda)<br />

estabilizando-se na série dos zener 5v1 e 8v2 a cerca de 13V. Esta tensão é utilizada<br />

para programação da PIC. Os sinais dos restantes pinos podem ser obtidos<br />

directamente da porta série do PC, sendo estes os Data e Clock, obtidos<br />

respectivamente do CTS, DTR e RTS. Este método é utilizado normalmente nos<br />

programadores de alimentação por porta série, não tendo muito sucesso devido ás<br />

características de temporização e consumo de Vpp da PIC, sendo neste desenho já<br />

compensado da maneira descrita acima.<br />

Frisa-se que este programador só funciona correctamente com um software de<br />

programação preparado para ele. ICPROG 1.4 não funciona. Winpic800 funciona.<br />

6.2 - Construção<br />

Figura 18 – Programador JDM em PCB<br />

O software escolhido para desenvolver esta placa circuito impresso foi o Eagle da<br />

Cadsoft, versão 4.16. Este programador suporta PIC’s de 40, 28,18 e 8 pinos. A<br />

figura acima mostra o PCB enquanto a figura seguinte mostra o esquemático.<br />

70


6.3 – Utilização<br />

Figura 19 – Programador em schematic completo<br />

Na utilização deste programador convém ter em conta algumas medidas a serem<br />

executadas, de modo a não danificar o programador, a PIC ou a porta série do PC.<br />

Referem-se as seguintes:<br />

Colocar a PIC no programador, estando ele desconectado de tudo.<br />

1º. Colocar a PIC no programador, estando ele desconectado de tudo.<br />

2º. Ligar o cabo série, ou o programador à porta série do PC.<br />

3º. Programar, ler, etc (<strong>De</strong>scrito na parte do software, mais abaixo).<br />

4º. <strong>De</strong>sligar o cabo série, ou o programador da porta série do PC.<br />

5º. Remover a PIC do programador.<br />

71


6.4 – Software<br />

Foi escolhido o Winpic800 como software para programar em conjunto com este<br />

programador. O facto de ser grátis, de utilização intuitiva e bastante compatível com<br />

este programador levou à sua preferência. Nas figuras seguintes demonstra-se o<br />

procedimento para programar um ficheiro compilado no formato hexadecimal<br />

(*.hex) que será descarregado para a PIC.<br />

Figura 20 – Palabras de configuração<br />

Na figura acima, estão apresentadas as palavras de configuração do ficheiro “hex”<br />

compilado. Estas servem para determinar a configuração do hardware onde será<br />

descarregado, desde frequência de operação a definições de timer’s, programação de<br />

baixa voltagem, AD’s internos, entre outros.<br />

A próxima figura mostra o código em blocos hexadecimais, código esse que será<br />

descarregado na PIC.<br />

72


Figura 21 – Interface principal WinPic800<br />

Os procedimentos para descarregar um ficheiro compilado para uma PIC através do<br />

programador, estão descritos nas figuras seguintes.<br />

1º. Iniciar aplicação Winpic800. Ao iniciar, o programador deve estar com a PIC já<br />

inserida. A aplicação tenta fazer a auto-detecção do modelo da PIC. Se tiver sucesso,<br />

o modelo será indicado, como na figura seguinte. Caso falhe a detecção, será<br />

indicado como “<strong>De</strong>sconhecido”.<br />

Figura 22 – <strong>De</strong>tecção de pic no WinPic800<br />

73


2º. Ir a “Menu” -> “Configuração” -> “Hardware” e seleccionar “JDM<br />

Programmer”. Escolher a porta série correspondente, neste caso COM1.<br />

3º. Ir a “Menu” -> “Configuração” -> “Software” e seleccionar as seguintes<br />

opções:<br />

“General” -> Nada.<br />

“Programar” -> “Verificar após programação”<br />

“Dispositivo” -> “Usar Autoseleccção(…)” e “<strong>De</strong>tectar e autosel(…)”<br />

“.hex” -> “Actualizar ficheiro (…)” e “File .HEX -> Data(…)”<br />

“AVR” -> Nada.<br />

“ICSP-Mode” -> “Code” , “Data” e “Configuration”<br />

4º. Ir a “Ficheiro” -> “Abrir” e navegar até ao ficheiro *.hex que se deseja<br />

descarregar para a PIC.<br />

5º. Ir a “Dispositivo” e seleccionar “Programar Tudo”.<br />

Se tiver sucesso na programação a barra ficará verde no fim e um aviso será<br />

mostrado a indicar que a programação foi bem sucedida (Figura abaixo). Se não tiver<br />

sucesso, será mostrado também um aviso, e a programação será interrompida. No<br />

caso dos portáteis, certas interfaces RS232 não tem níveis de tensões suficiente altos<br />

para permitir a programação, mas recomenda-se que se tente umas 10 vezes antes de<br />

desistir.<br />

Após a programação deve seguir-se os passos descritos na secção de hardware<br />

anteriormente (remover cabo, retirar PIC, etc).<br />

74


Figura 23 – Processo de escrita WinPic800<br />

75


7 – Construção caseira de PCB<br />

Neste capítulo mostramos duas maneiras fáceis de fazer placas de circuito impresso<br />

em casa. Uma por via lâmpadas ultravioletas e outra com ferro de engomar caseiro.<br />

Método com Lâmpadas UV<br />

Este método é um pouco mais caro, caso não se tenha ainda o equipamento<br />

necessário, que foi o nosso caso. Como previamente já possuíamos experiencia na<br />

criação de placas de circuito impresso, o desenvolvimento tornou-se mais rápido. O<br />

processo é dividido em várias fases:<br />

Passo 1:<br />

Figura 24 – Placa de cobre<br />

<strong>De</strong>ve ser raspada a placa de cobre de maneira a retirar toda a sujidade, gordura ou<br />

humidade. Para tal aconselha-se usar um esfregão de cozinha bem seco e sem<br />

gorduras, ou seja, novo. <strong>De</strong>ve esfregar a placa até esta ficar com a placa de cobre<br />

76


em limpa e uniforme. <strong>De</strong> seguida, deve-se limpar com um lenço de papel o pó e<br />

resíduos que possam ter acumulado.<br />

Figura 25 – Cobre polido<br />

Em seguida deve ser colocada uma camada de “Positivo 20” na placa de cobre de<br />

uma maneira rápida e uniforme, pois, se for demorado, o cobre começa a oxidar.<br />

<strong>De</strong>ve-se deixar repousar o Positivo 20 por cerca de 30 mim, num local com ausência<br />

de luz tanto solar como artificial.<br />

Passo 2:<br />

<strong>De</strong>pois de ter o desenho das pistas feito numa aplicação, o Eagle por exemplo, deve-<br />

se imprimir o esquema em acetato com qualidade fotográfica.<br />

Figura 26 – Acetado do layout<br />

77


Seguidamente deve-se colocar a placa em cima do acetato de forma correcta e leva-la<br />

a 2 minutos de exposição a radiação ultravioleta.<br />

Figura 27 – Maquina de foto impressão<br />

Este é o nosso protótipo do aparelho de foto impressão, depois de feita a foto<br />

impressão passamos a placa numa solução aquosa de soda cáustica, que testamos<br />

anteriormente, para retirar o excesso de positivo 20.<br />

Passo 3:<br />

Neste passo mergulha-se a placa numa solução de percloreto de ferro onde o cobre<br />

em excesso será retirado.<br />

Figura 28 – Corrosão em percloreto de ferro<br />

78


Um conselho, pegar numas luvas de borracha e ir mexendo a solução. Nesta fase é<br />

preciso ter muito cuidado, pois os químicos são fortes. Recomenda-se muita<br />

paciência, pois o processo pode ser demorado. NÃO ENTREM EM DESESPEROS<br />

como aconteceu aqui, em que se aqueceu a solução num fogão e levando à corrosão<br />

do material de cozinha… O problema foi o que a dona de casa achou da ideia…<br />

Passo 4:<br />

Figura 29 – Experiencias especiais<br />

Após a retirada a camada do cobre, a placa deve ser limpa em água e depois deve ser<br />

removida a camada restante de positivo 20 com álcool. Em seguida deve-se aplicar<br />

um spray protector para o cobre não oxidar ou então estanhar as pistas.<br />

Figura 30 – PCB estanhado<br />

79


Este processo de fabricação é simples e consegue-se ter bastante qualidade no<br />

acabamento final.<br />

Método com ferro de engomar<br />

1.º Passo – <strong>De</strong>senhe o lay-out do circuito utilizando qualquer software para circuitos<br />

eletrónicos. O nosso utilizado foi o Eagle 4.16 por ser “freeware”. Caso já tenha o<br />

desenho em algum formato de imagem, pode utilizá-lo. Imprima com impressora<br />

laser o desenho em uma folha de papel fotográfico para impressora jato de tinta e<br />

verifique se o tamanho e as pistas estão corretas.<br />

Figura 31 – layout em papel fotografico<br />

2.º Passo – Prepare a placa limpando a superfície de cobre de sujidades, oxidação e<br />

gordura, utilize algum produto químico ou se preferir, passe um esfregão de cozinha<br />

(de preferência novo) que dá o mesmo resultado. Importante é que a placa não sofra<br />

contacto com absolutamente nada nesta etapa, nem sequer soprar para a placa.<br />

Coloque o papel com a face impressa sobre a placa já cortada no tamanho exacto.<br />

80


Figura 32 – Foto impressão<br />

3.º Passo – Com um ferro de engomar bem quente, pressione o papel sobre a placa<br />

por aproximadamente 2 minutos. Escolha bem a superfície onde vai apoiar a placa,<br />

evitando estragar alguma superfície com o calor do ferro. Cuidado também para não<br />

exagerar ao fazer pressão e acabar danificar o ferro de engomar, pois, certamente vai<br />

arranjar problemas com a mãe ou esposa...<br />

Figura 33 – Aquecimento com ferro de engomar<br />

4.º Passo – Feito isso, o toner impresso no papel estará preso no cobre da placa.<br />

Nesta fase ainda não remova o papel da placa de cobre. Prepare uma pequena bacia<br />

com água quente e um pouco de detergente, quantidade suficiente para cobrir a placa.<br />

Mergulhe a placa na água e aguarde cerca de 30 minutos. Isso vai amolecer o papel e<br />

facilitar sua remoção.<br />

81


Figura 34 – Mergulho em água<br />

5.º Passo – Remove-se o papel friccionando as pontas dos dedos sobre. Se for<br />

preciso molhe algumas vezes a placa na água da panela e vá fazendo o movimento<br />

com os dedos até retirar todo o papel.<br />

Figura 35 – limpeza do exesso de papel<br />

6.º Passo – Procede-se à corrosão do cobre não protegido pelo toner. Após a<br />

corrosão ele é retirado com auxílio mais uma vez do esfregão de cozinha. Coloca-se<br />

uma camada homogénea de verniz protector e perfura-se a placa. A placa deverá ter<br />

uma qualidade parecida com uma produzida por métodos profissionais. Para a<br />

corrosão deve-se utilizar percloreto de ferro ou outro, que poderá ser adquirido nas<br />

lojas de electrónica.<br />

82


Figura 36 – Placa concluida<br />

Para placas de dupla face, primeiramente faz-se um lado seguindo os seis passos<br />

descritos, porém na hora da corrosão proteje-se o lado sem toner com adesivo,<br />

perfura-se a placa para se ter referências na outra face e procede-se novamente aos<br />

seis passos, protegendo na hora da corrosão a face já pronta.<br />

Atenção: Este processo só funciona com impressões feitas a partir de uma<br />

impressora à laser, pois utilizam o toner na impressão que possui partículas metálicas<br />

que ficarão agarradas no cobre durante o aquecimento com o ferro de passar;<br />

portanto impressoras jacto de tinta não funcionam.<br />

83


8 - Conclusão<br />

Ao longo deste texto foram sendo apresentadas conclusões que permitiram sustentar<br />

as opções de desenvolvimento efectuadas ao longo do projecto. Assim, nesta última<br />

secção é realizada uma síntese das principais conclusões, consequências e relevância<br />

do trabalho realizado e perspectivados futuros desenvolvimentos.<br />

A interface por comunicação RS232, a porta série, não possui uma largura de banda<br />

e taxa de transferência suficientes. Foi analisada a interface de comunicação via<br />

Ethernet mas descartada visto não haver bases (conhecimento sobre hardware e<br />

software) que suportassem o seu desenvolvimento. No entanto, esta ultima forma de<br />

interface seria mais vantajosa do ponto de vista de desenvolvimento, em relação à<br />

interface USB, pois possibilitava integração e controlo a partir de outros sistemas de<br />

comunicação (poderia ser controlado e monitorizado a partir de qualquer sistema<br />

com ligação Ethernet ou até mesmo por Internet).<br />

Como alternativa, poderia ter sido escolhido um módulo de desenvolvimento USB<br />

com conversão para RS232 não necessitando assim de um microprocessador tão<br />

complexo, permitindo o uso de uma PIC 16F84A ou um AT89C51. No entanto, foi<br />

escolhido o desenvolvimento de USB na PIC, visto que, em termos de aprendizagem,<br />

permite obter um conhecimento mais aprofundado sobre esta interface de<br />

comunicações do que o que seria possível com a utilização do módulo que se pode<br />

considerar como “Plug and Play”. Se o objectivo deste projecto fosse a<br />

comercialização imediata, seria viável reduzir o tempo e custo de desenvolvimento,<br />

assim como obter uma robustez aparentemente garantida, a utilização deste módulo<br />

seria uma opção bastante apelativa.<br />

No que diz respeito a realização de hardware, este deve ser testado sempre que<br />

possível em breadboard para garantir que na passagem do mesmo para PCB não<br />

traga problemas futuros. Sempre que possível recomenda-se realizar módulos de<br />

hardware e interliga-los entre si, pois, permite um desenvolvimento mais rápido e<br />

eficaz do hardware, possibilitando teste passo a passo do desenvolvimento do<br />

84


circuito. Com a filosofia dos blocos podemos também reutilizar o hardware<br />

desenvolvido com outras finalidades.<br />

Sempre que possível preparar e organizar com antecedência os procedimentos para a<br />

realização da próxima etapa, pois assim pode-se verificar se os objectivos estão ou<br />

não a ser cumpridos.<br />

85


Referências Documentais<br />

[1] – www.microchip.com<br />

Application Notes and Source Codes [Assembly, C and Visual Basic]<br />

[1.1] - http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2121<br />

[1.2] - http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1408<br />

[1.2] - http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1469&filter1=function<br />

[1.3] - http://www.lvr.com/hidpage.htm#MyExampleCode<br />

[2] – http://pt.wikipedia.org<br />

[3] – www.maxim-ic.com<br />

[4] - http://pic18fusb.online.fr<br />

[5] - www.jdm.homepage.dk/newpic.htm<br />

[7] - http://www.microchipc.com/<br />

[8] - http://www.ppgia.pucpr.br/~santin/ee/2005/1s/2/index.html<br />

[9] - http://www.usbmadesimple.co.uk/ums_5.htm<br />

[10] - http://www.hep.princeton.edu/~tziegler/electronics/microchip/C18compiler.html<br />

Informação DFT’s<br />

http://www.ppgia.pucpr.br/~santin/ee/2005/1s/2/index.html<br />

Datasheet da PIC18F2455/2550/4455/4550 :<br />

http://ww1.microchip.com/downloads/en/<strong>De</strong>viceDoc/39632D.pdf<br />

86


Datasheet MAX154/MAX158 [AD]<br />

http://datasheets.maxim-ic.com/en/ds/MAX154-MAX158.pdf<br />

Datasheet MAX338/MAX339 [Switch]<br />

http://datasheets.maxim-ic.com/en/ds/MAX338-MAX339.pdf<br />

Datasheet TL082 [Amplificar Operacional Eq. CA3240]<br />

http://www.ortodoxism.ro/datasheets/nationalsemiconductor/DS008357.PDF<br />

Datasheet 7812, 7912 [Reguladores de tensão]<br />

http://www.geocities.com/romulo1954/DataBook/78XX.htm<br />

http://www.tranzistoare.ro/datasheets/150/44435_DS.pdf<br />

http://www.tranzistoare.ro/datasheets/320/438291_DS.pdf<br />

Datasheet 74HCT245N [Buffer]<br />

http://www.ortodoxism.ro/datasheets2/8/0utcapw7a6iaajft0o1x649sy2py.pdf<br />

Datasheet CY7C4265V-15ASC [FIFO]<br />

http://www.ortodoxism.ro/datasheets2/0/01795sszd1i0k9g2xp6od7eiizyy.pdf<br />

Sebenta Engº João Paulo da Costa Baptista : "Arquitectura de Computadores. Micro<br />

controlador PIC16F84A" em<br />

URL( https://portal.isep.ipp.pt/INTRANET/conta/down_file.asp?c=134286 )<br />

87


Documento MPLAB C18 (v3.00) C Compiler Getting Started :<br />

http://www.microchip.com/Microchip.WWW.SecureSoftwareList/secsoftwaredownl<br />

oad.aspx?device=en010014&lang=en&ReturnURL=http://www.microchip.com/stell<br />

ent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014#<br />

Documento MPLAB C18 (v3.00) C Compiler User's Guide :<br />

http://www.microchip.com/Microchip.WWW.SecureSoftwareList/secsoftwaredownl<br />

oad.aspx?device=en010014&lang=en&ReturnURL=http://www.microchip.com/stell<br />

ent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014#<br />

Documento MPLAB C18 Libraries Documentation :<br />

http://www.microchip.com/Microchip.WWW.SecureSoftwareList/secsoftwaredownl<br />

oad.aspx?device=en010014&lang=en&ReturnURL=http://www.microchip.com/stell<br />

ent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014#<br />

Documento PIC18F <strong>De</strong>velopment Tools Product Overview :<br />

http://www.microchip.com/Microchip.WWW.SecureSoftwareList/secsoftwaredownl<br />

oad.aspx?device=en010014&lang=en&ReturnURL=http://www.microchip.com/stell<br />

ent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014#<br />

Documento MPLAB IDE Quick Start Guide<br />

http://www.microchip.com/Microchip.WWW.SecureSoftwareList/secsoftwaredownl<br />

oad.aspx?device=en019469&lang=en&ReturnURL=http://www.microchip.com/stell<br />

ent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469&part<br />

=SW007002#<br />

88


Documento MPLAB IDE User's Guide<br />

http://www.microchip.com/Microchip.WWW.SecureSoftwareList/secsoftwaredownl<br />

oad.aspx?device=en019469&lang=en&ReturnURL=http://www.microchip.com/stell<br />

ent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469&part<br />

=SW007002#<br />

Conjunto documentos PICDEM Full Speed USB [Incluindo software disponivel]<br />

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=14<br />

06&dDocName=en021940<br />

Documentos Codigo-Fonte Microchip Exemplos [Variados]<br />

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2121<br />

Lista de módulos de interface de Ethernet<br />

http://www.beyondlogic.org/etherip/ip.htm<br />

Lista de módulos de interface USB<br />

http://www.beyondlogic.org/usb/usbhard2.htm<br />

89


Anexo A.<br />

Placa de Aquisição de dados USB<br />

Este equipamento foi criado com base na filosofia de blocos. Este dispositivo foi<br />

desenvolvido com o propósito de suportar todo o equipamento necessário para<br />

estabelecer a comunicação via USB. Possui a capacidade de ser interligado a outros<br />

circuitos para outros fins, pois, possui fichas de conexão para os portos do PIC. Este<br />

dispositivo permite também programar o PIC através da ligação directa aos pinos<br />

correspondentes. Aqui temos o PCB da placa:<br />

Figura 37 – USB PCB board<br />

Figura 38 – USB layout Board<br />

90


Anexo B.<br />

Placa de tratamento de dados:<br />

Este equipamento possui dois dos componentes principais do circuito. O AD e o<br />

barramento de protecção das entradas do analisador lógico. O barramento de<br />

protecção tem a função de proteger o circuito interno de surtos de tensão do circuito<br />

exterior. Permite que seja ligado directamente ao barramento onde se deseja fazer a<br />

leitura do analisador lógico, bem como liga-lo ao FIFO para permitir obter taxas de<br />

amostragem superiores. O barramento do AD tem as entradas analógicas com uma<br />

ficha de engate fácil. A placa recebe 4 sinais analógicos, que são convertidos para<br />

digital através do AD e enviados para a PIC.<br />

Figura 39 – Placa de tratamento de dados PCB<br />

Figura 40 Placa de tratamento de dados SCH<br />

91


Anexo C.<br />

Placa de aquisição de sinal:<br />

A parte de condicionamento de sinal resume-se a um conjunto de ampops que<br />

transformam uma variação de sinal na entrada para uma variação de sinal na saída<br />

entre [0,+5] V, independentemente dos valores de entrada, o ganho dos ampops pode<br />

ser controlado por PC através de um switch analógico fornecido como sample da<br />

Maxim.<br />

Os Amplificadores Operacionais estão contidos num integrado (CA320EN), em par,<br />

num formato DIP de 8 pinos. A primeira etapa tem montagem de amplificador<br />

inversor. Este amplificador condiciona a onda de entrada “Vi” para que as<br />

amplitudes máximas sejam sempre de 2.5 V de pico. O switch/multiplexer analógico<br />

usado é o Max 338. Este componente permite fazer uma selecção das resistências de<br />

forma simples e sem alterações no circuito de montagem inversora.<br />

As entradas A0 a A2 são controladas pelo utilizador na aplicação em Visual Basic<br />

permitindo total controlo do dispositivo.<br />

Figura 41 – Condicionamento de Sinal PCB e SCH<br />

92


Anexo D.<br />

Fonte de alimentação:<br />

Na alimentação do circuito, toda a energia de 0V até +5V é obtida a partir da<br />

interface USB, estando já a PIC programada para permitir até 450 mA de corrente de<br />

consumo do circuito completo. Para as tensões requisitadas pelo multiplexer e<br />

amplificadores operacionais, positivas e negativas, utiliza-se um transformador de<br />

220V / 12V (AC) com ponte rectificadora e 2 rectificadores de tensão para obter<br />

+12V e -12V (7812 e 7912 respectivamente). A placa é parcialmente alimentada por<br />

USB para permitir utilizar o analisador lógico em locais que não possuam energia<br />

eléctrica. Também é possível amostrar sinais analógicos desde que estejam contidos<br />

entre 0V e +5V, sem alimentação externa. Os condensadores electrolíticos têm a<br />

função de manter a onda em +12 e -12 V e servem como desacoplamento para evitar<br />

que altas frequências alterem o funcionamento normal da fonte.<br />

O PCB do circuito em cima é o seguinte:<br />

Figura 42 – Fonte de alimentação PCB e SCH<br />

93


Anexo E.<br />

Bootloader: (anexo digital)<br />

Figura 43 – Bootloader code<br />

94


Anexo F.<br />

Código PIC: (anexo digital)<br />

Figura 44 – PIC code<br />

95


Anexo G.<br />

Microchip C18 Toolsuite<br />

Modo de instalação:<br />

1º Instalar o MPLAB IDE 7.60 adquirido no site :<br />

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=14<br />

06&dDocName=en019469&part=SW007002<br />

<strong>De</strong> preferência instalar no directório predefinido no instalador.<br />

2º Instalar o C18 3.12 Toolsuite adquirido no site:<br />

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=14<br />

06&dDocName=en010014<br />

<strong>De</strong> preferência instalar no directório predefinido no instalador.<br />

3º Iniciar a aplicação MPLAB IDE<br />

Após a instalação do MPLAB IDE recomenda-se a verificação do seu funcionamento<br />

normal. <strong>De</strong>ve-se testar o seu funcionamento desenvolvendo algum código simples,<br />

compilando e verificando o seu funcionamento. Após verificação da compatibilidade<br />

procede-se ao passo seguinte.<br />

96


4º Configurar o C18 com as seguintes opções:<br />

“Project”->”Select language toolsuite”->Active toolsuite: Microchip C18 Toolsuite<br />

Verificar as seguintes localizações dos executáveis em toolsuite contents:<br />

MPASM Assembler: C:\(…)\MCC18\mpasm\mpasmwin.exe<br />

MPLink Object Linker: C:\(…)\MCC18\bin\mplink.exe<br />

MPLAB C18 C Compiler: C:\(…)\MCC18\bin\mcc18.exe<br />

MPLIB Librarian: C:\(…)\MCC18\bin\mplib.exe<br />

“Project”->”Set Language Tool Locations”->Microchip C18 Toolsuite<br />

Executables:<br />

MPASM Assembler: C:\(…)\MCC18\mpasm\mpasmwin.exe<br />

MPLAB C18 C Compiler: C:\(…)\MCC18\bin\mcc18.exe<br />

MPLIB Librarian: C:\(…)\MCC18\bin\mplib.exe<br />

MPLink Object Linker: C:\(…)\MCC18\bin\mplink.exe<br />

<strong>De</strong>fault Search Paths & Directories:<br />

Output Directory: “ “<br />

Intermediates Directory: “ “<br />

Include Search Path: “ “<br />

Library Search Path: C:\(…)\MCC18\lib<br />

Linker-Script Search Path: C:\(…)\MCC18\lkr<br />

97


“Project”->”Version Control”->Version Control System: None<br />

Configure->Select <strong>De</strong>vice->”PIC designada para o código neste caso<br />

PIC18F4550”<br />

Configure-> Configuration Bits<br />

No caso da nossa PIC aplicaram-se os seguintes Configuration Bits<br />

Configure->Settings:<br />

Workspace:<br />

Figura 45 – Configuração de palavras no MPLAB<br />

Automatically save workspace upon closing -> “Prompt”<br />

98


<strong>De</strong>bugger:<br />

Automatically save files before running<br />

Show disassembly if source is unavailable<br />

Remove breakpoints upon importing a file<br />

Program Loading:<br />

Projects:<br />

Clear memory before building a project<br />

Clear program memory upon loading a program<br />

Close open source files on project close<br />

Clear output windows before build<br />

Save Project before build<br />

Save files before build<br />

Halt build on first failure<br />

Use one-to-one project workspace model<br />

Os passos acima descritos indicam como configurar o MPLAB C18 para executar o<br />

nosso código. No caso de a instalação ser feita num directório diferente do proposto<br />

na instalação, provavelmente, ao compilar o código, haverá um erro que indica que<br />

o ficheiro “c018i.o” não foi encontrado. Para resolver este problema, deve-se<br />

colocar o ficheiro (vai também em anexo no CD) no directório “C:\MCC18\lib\ “,<br />

criando caso não exista, e no directório “C:\(…)\MCC18\lib\ “ onde foi instalado.<br />

Ao compilar o projecto, o ficheiro NOME_DO_PROJECTO.hex será criado no local<br />

da “output directory”, por defeito na mesma pasta onde se encontra o “Workspace”<br />

do projecto.<br />

Para criar um novo projecto, utilizar a opção “Project”-> “Project Wizard”.<br />

99

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!