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
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