Universidade do Vale do Paraíba Faculdade de Engenharias Urbanismo e Arquitetura Curso de Engenharia Elétrica/Eletrônica GIGA DE TESTES PARA RIB Teste dos circuitos Óptico e Ethernet GUILHERME CERON BENTO Relatório do Trabalho de Conclusão de Curso apresentado à Banca Avaliadora da Faculdade de Engenharias Urbanismo e Arquitetura da Universidade do Vale do Paraíba, como parte dos requisitos para obtenção do Título de Bacharel em Engenharia Elétrica/Eletrônica. São José dos Campos – SP Novembro 2014 GIGA DE TESTES PARA RIB GUILHERME CERON BENTO Banca Avaliadora Presidente Orientador Alessandro Corrêa Mendes Membro A Membro B ______________________________________ Alessandro Corrêa Mendes Orientador Acadêmico ______________________________________ José Ricardo Abalde Guedes Coordenador da Disciplina de TCC Data: Agradecimentos Agradeço primeiramente a Deus, Senhor da minha vida, que me fez a vocação para empregar e desenvolver pelo estudo e pelo trabalho os dons Dele recebidos. A Maria, minha Mãe, que me deu paciência e sabedoria para nunca recuar perante o cansaço e as dificuldades. A esta universidade, sеu corpo docente, direção е administração quе oportunizaram а janela pela qual hoje vislumbro um horizonte superior. Aos meus pais e à minha noiva, pelo amor, incentivo е apoio incondicional. Meus agradecimentos também аоs amigos Fábio e Marcos, companheiros dе trabalhos, sem os quais este projeto não teria acontecido. A todos que passaram pela minha vida acadêmica nestes cinco anos, “muito obrigado!”. Resumo Foi desenvolvido um projeto de uma estação de teste para uma placa específica da empresa Ericsson Telecomunicações S.A. de São José dos Campos, tendo o nome técnico RIB (Placa de Interface de Rádio, do inglês “Radio Interface Board”). A RIB é uma placa interna de uma RRU (Unidade de Rádio Remoto, do inglês “Remote Radio Unit”) e tem como função realizar a interface de sinais analógicos e digitais entre a RRU e a BTS (Estação Base de Transmissão, do inglês “Base Transceiver Station”). A placa possui como principais conexões a Ethernet, transceptores ópticos, sinais de alarmes externo e conectores usados somente em instalações e manutenções da RRU, assim, através do microcontrolador da família MSP430 (Texas Instruments) desenvolveu-se uma estação em que são testados funcionalmente os sinais de comunicações e alarmes externos, e tendo como principais objetivos, abranger todos os tipos de simulações possíveis semelhantes ao seu funcionamento em campo e ao mesmo tempo minimizar o custo do projeto com soluções simples, porém eficaz. Neste projeto serão abordados os testes nos circuitos Óptico e Ethernet da RIB. Palavras-chave: Microcontrolador; MSP430; Ethernet; RIB; Fibra-óptica. Abstract Develops a design of a test station for a specific board of the company Ericsson Telecommunications SA of São José dos Campos, the technical name is RIB (Radio Interface Board). The RIB is an internal board of RRU (Remote Radio Unit) and has the function to interface of analogue and digital signals between the RRU and BTS (Base Transceiver Station). The board has as main connections to Ethernet, optical transceivers, external alarm signals and connectors used only in installation and maintenance of RRU, thus by the MSP430 microcontroller family (Texas Instruments) developed a station where are functionally tested signals communications and external alarms, and having as main objectives reach all similar functions like field operation while minimizing possible simulations project cost with simple but effective solutions. In this project will be covered the test in the RIB’s optical circuit and RIB’s Ethernet circuit. Keywords: Microcontroller; MSP430; Ethernet; RIB; Fiber-optics. Sumário BANCA AVALIADORA ............................................................................................... II AGRADECIMENTOS ................................................................................................ III RESUMO ....................................................................................................................... IV ABSTRACT .................................................................................................................... V ÍNDICE DE FIGURAS .............................................................................................VIII ÍNDICE DE TABELAS ................................................................................................ IX LISTA DE ABREVIAÇÕES......................................................................................... X INTRODUÇÃO ............................................................................................................. 11 1.1 ANTECEDENTES .................................................................................................. 11 1.2 DESCRIÇÃO DO PROBLEMA ........................................................................... 12 1.3 OBJETIVO .............................................................................................................. 13 1.4 RESTRIÇÕES......................................................................................................... 13 1.5 ORGANIZAÇÃO O TRABALHO........................................................................ 13 EMBASAMENTO TEÓRICO .................................................................................... 14 2.1 CONHECIMENTOS BÁSICOS SOBRE A RIB ................................................. 14 2.2 CONCEITOS BÁSICOS ........................................................................................ 15 2.2.1 MSP-EXP430F5529LP ...................................................................................... 15 2.2.2 Redes .................................................................................................................. 16 2.2.3 Ethernet .............................................................................................................. 17 2.3 METODOLOGIA ................................................................................................... 21 DESENVOLVIMENTO ............................................................................................... 24 3.1 MATERIAIS ........................................................................................................... 24 3.1.1 Circuito Principal ............................................................................................... 24 3.1.2 Circuito Óptico ................................................................................................... 26 3.1.3 Circuito Ethernet ................................................................................................ 27 3.2 PROJETO DETALHADO ..................................................................................... 27 3.3 PROGRAMAÇÃO.................................................................................................. 32 3.4 FLUXOGRAMA ..................................................................................................... 33 RESULTADOS ............................................................................................................. 37 4.1.1 Teste Funcional .................................................................................................. 37 CONCLUSÕES ............................................................................................................. 42 REFERÊNCIAS BIBLIOGRÁFICAS ........................................................................ 43 ANEXO 1 – ESQUEMA ELÉTRICO......................................................................... 44 ANEXO 2 – CÓDIGO MAIN ...................................................................................... 50 Índice de Figuras Figura 1 – Desenho simplificado dos conectores da RIB ............................................... 14 Figura 2 - MSP-EXP430F5529LP LaunchPad ............................................................... 16 Figura 3 - Rede com Ethernet em uma arquitetura de barramento ................................. 18 Figura 4 - Comparação entre codificação binária e Codificação Manchester ................ 19 Figura 5 - Quadro Ethernet ............................................................................................. 20 Figura 6 – Diagrama esquemático da Giga de Teste da placa RIB ................................ 22 Figura 7 – Bloco Principal .............................................................................................. 29 Figura 8 - Bloco Óptico .................................................................................................. 30 Figura 9 - Bloco RS485 / Ethernet.................................................................................. 31 Figura 10 - PCB Circuito RS485/Ethernet (TOP) .......................................................... 39 Figura 11 - PCB Circuito RS485/Ethernet (BOT) .......................................................... 39 Figura 12 – Giga de Testes ............................................................................................. 40 Figura 13 - Redução do tempo de produção por lote ...................................................... 41 Figura 14 - Ganho em tempo .......................................................................................... 41 Índice de Tabelas Tabela 1 - Estudo dos principais defeitos possíveis na RIB ........................................... 28 Tabela 2 - Resultados dos testes no circuito Ethernet ..... Erro! Indicador não definido. Tabela 3 - Resultados dos testes no circuito Óptico ....................................................... 38 Lista de Abreviações RIB Radio Interface Board RRUS Remote Radio Unity RBS Radio Base Station BTS Base Transmission Station HW Hardware LED Light Emitting Diode NC Not connected OVP Over Voltage Protection PCB Printed Circuit Board RET Remote Electrical Tilt SFP Small Form Pluggable transceiver XALM External Alarm CI Circuito integrado AC Corrente Alternada DC Corrente Contínua MAC Media Access Control LLC Logic Link Control CSMA/CD Carrier Sense Multiple Access with Collision Detection Capítulo 1 Introdução 1.1 Antecedentes A RIB (Placa de Interface de Rádio, do inglês “Radio Interface Board”), produzida atualmente na empresa Ericsson, é uma placa interna essencial das RRUS (Unidades de Rádio Remoto, do inglês “Remote Radio Unity”), que, por sua vez, tem a função de ampliar o alcance da RBS (Estação Rádio-Base, o inglês “Radio Base Station”) em dezenas de quilômetros. A RIB é um dos dispositivos que procuram solucionar a problemática do crescente aumento de demanda de banda larga e tráfego de redes móveis. Segundo Umehara e Villas-Bôas: O tráfego de dados móveis atualmente já ultrapassou o de voz e continua crescendo segundo as tendências globais. Em regiões como Oriente Médio, África e América Latina o tráfego de banda larga móvel tem quase que dobrado a cada ano e a projeção para os próximos anos indica um crescimento exponencial [3]. A Ericsson prevê um aumento de dez vezes no tráfego de dados até 2019 em relação aos dados de 2013, resultado de vários fatores, como o crescimento global em dispositivos sem fio em redes, o aumento no uso de “smartphones”, e a implantação de redes mais rápidas que os padrões atuais 2G e 3G em todo o mundo [4]. Os serviços de 4G / LTE e 5G prometem a solução para o aumento da demanda com a ampliação da largura de banda, o que de fato, é muito importante, no entanto cada vez mais no meio técnico-científico tem crescido também outra escola de pensamento que sugere como solução uma melhoria na eficiência das redes e defende o uso de um modelo híbrido (redes heterogêneas ou “Het Nets”), geralmente composto de várias tecnologias de acesso de rádio, diferentes arquiteturas, soluções de transmissão e estações rádio-base com vários níveis de potência de transmissão. As redes heterogêneas fazem o “offload” da rede e favorecem a cobertura “indoor”, pois funcionam com uma cobertura de pequenas células (“small cells”) subjacente à cobertura de células macro e com a integração de tecnologia Wi-Fi [5]. Para que se compreenda melhor o problema da ineficiência da rede convém citar o exemplo recente quando na abertura da Copa do Mundo, na partida entre Brasil e Croácia, segundo a SindiTelebrasil (SINDITELEBRASIL, 2014), a tecnologia 3G teve picos de tráfego e 11 congestionamentos momentâneos devido a grande concentração de usuários conectados num mesmo lugar [8]. E vale ressaltar que na arena de São Paulo, a cobertura “indoor” contava com 337 antenas interligadas por 12 quilômetros de fibras ópticas e a área externa do estádio ainda foi reforçada com mais 22 antenas móveis. Para os sistemas públicos, especialmente ao ar livre e se a rede macro existente é demasiado escassa para atender a demanda de tráfego e a cobertura adequada, a implantação de nós de baixa potência ao ar livre é o mais adequado, pois podem oferecer cobertura a uma vasta área com vários edifícios e abranger vários locais fechados (“indoor”). Existem vários tipos de nós de baixa potência, cada um com exigências diferentes do “backhaul” (infraestrutura de conexão dos pontos de concentração da rede de acesso com o núcleo de alta capacidade de transmissão da rede, também conhecido como “backbone”). Para redes onde o “backhaul” tem características de baixa latência e alta capacidade, a implantação de RRUS é a abordagem mais praticada. (UMEHARA e VILLAS-BÔAS, 2014) [6] A RIB possui conectores utilizados na instalação e manutenção da RRU e tem como principal função realizar a interface de sinais analógicos e digitais entre a RRU e a BTS (Estação Base de Transmissão, do inglês “Base Transceiver Station”). 1.2 Descrição do problema É indispensável que haja planos de amostragem e procedimentos para inspeção por atributos dos lotes de RIBs devido à sua complexidade e à sua importância na RRU. O teste de inspeção deve ser o mais simples possível para ser aplicado na linha de produção; nesse teste a unidade de produto (uma placa amostral) seja classificada como defeituosa ou não em relação a um dado requisito ou conjunto de requisitos. Atualmente a inspeção de um lote na linha de produção da Ericsson é feita com a montagem completa de uma RRU, e em seguida são feitos vários ensaios das principais funções do dispositivo para verificar se a RIB não apresenta falhas. Apesar de eficaz, este processo ocasiona minutos de linha parada enquanto se espera o resultado do teste, e consequentemente, diminui a produtividade na linha. Umehara e Villas-Bôas desenvolveram o projeto da Giga de Teste que não possui concorrentes no mercado e também apresentou eficácia nos resultados [6]. Em 12 seu projeto foram estudados e testados alguns circuitos da RIB, mas ainda faltou o circuito óptico e de Ethernet. 1.3 Objetivo Projetar uma melhoria na estação de teste (Giga de Teste) sem comprometer o baixo custo para simular e testar as funções dos circuitos Óptico e Ethernet da RIB. Automatizar o processo de inspeção na linha de produção da RIB, apresentando ao usuário o resultado do teste de maneira mais simples. Obter resultados do teste de inspeção mais rapidamente para diminuir o tempo de linha parada, aumentar a produtividade e reduzir o custo de fabricação da RIB. 1.4 Restrições Este trabalho irá se dedicar somente ao estudo dos circuitos Óptico e Ethernet da RIB, não se aprofundando nos testes de outros blocos da placa tais como os que já foram apresentados por Umehara e Villas-Bôas [6]. Como já foi esclarecido, este projeto tem como finalidade a redução de custo no processo de fabricação da RIB, portanto a principal restrição para este trabalho é que o custo da Giga de Teste não prejudique sua viabilidade para a empresa. Sob autorização das gerências da empresa, os estudos puderam ser realizados nas dependências da Ericsson, algumas placas RIB puderam ser utilizadas para os testes e a Giga de Teste pôde ser retirada da empresa para a apresentação deste trabalho. Contudo, por motivo de sigilo empresarial, a empresa Ericsson não forneceu as especificações (“datasheets”) da RIB, normas de processo, os documentos e equipamentos envolvidos em seu processo de fabricação. 1.5 Organização o Trabalho O capítulo 2 apresenta o embasamento teórico do funcionamento da RIB e da Giga de Teste e os principais conceitos utilizados na solução do problema. O capítulo 3 apresenta os materiais e a metodologia utilizada no processo de teste dos circuitos Óptico e Ethernet da RIB no projeto da Giga de Teste. O capítulo 4 apresenta os resultados obtidos e faz uma discussão usando-se dos conhecimentos adquiridos. O último capítulo traz as conclusões gerais sobre o projeto e apresenta as proposições para novos estudos e futuros desafios. 13 Capítulo 2 Embasamento Teórico 2.1 Conhecimentos básicos sobre a RIB A RIB tem como principal função realizar a interface de sinais analógicos e digitais na instalação e manutenção da RRU, por isso trabalha com diferentes tipos de sinais e níveis de tensão simultaneamente e possui vários conectores, que estão listados a seguir e são mostrados na Figura 1: RJ-45 (8 pinos) RET (6 pinos) XALM (4 pinos) Conector de teste (24 pinos) SFP A (20 pinos) SFP B (20 pinos) Conector RIB (80 pinos) Figura 1 – Desenho simplificado dos conectores da RIB 14 Para facilitar o seu estudo podemos dividir a RIB em quatro circuitos, de acordo com os sinais e conectores envolvidos: circuito de sinal digital RS485, circuito de comunicação no padrão Ethernet, circuito de comunicação óptica e circuito de sinal analógico RET VCC. O procedimento de inspeção da RIB na linha de produção deve testar cada um destes quatro circuitos e o requisito para que a amostra e, assim também, o lote sejam classificados como não defeituosos é que todos os quatro circuitos não apresentem falha, ou seja, se um ou mais destes circuitos apresentar mau funcionamento, o lote deve ser classificado como defeituoso e não pode ser liberado para a próxima fase. Como já foi mencionado na introdução, este trabalho irá se dedicar somente ao estudo de como serão testados na Giga de Teste os circuitos Óptico e Ethernet da RIB. Este processo envolve como componentes principais dois microcontroladores da família MSP430 (Texas Instruments), um CI que faz a medição indireta da corrente do circuito mensurando o efeito hall e um módulo conversor de sinal digital RS232 / RS485. 2.2 Conceitos Básicos 2.2.1 MSP-EXP430F5529LP O MSP-EXP430F5529LP LaunchPad ou simplesmente “F5529 LaunchPad” ilustrado na Figura 2, é um kit de desenvolvimento para o microcontrolador USB MSP430F5529 que oferece emulação “on-board” para programação e “debug” e dispõe de LEDs para simplificar a interface com o usuário. O microcontrolador 16-bit MSP430F5529 tem 128KB de memória “flash”, 8KB RAM e velocidade de processamento de 25MHz, USB integrado e a possibilidade de trabalhar com diversos periféricos, a critério do usuário. Sua tensão de operação é de 1,8V a 3,6V. 15 Figura 2 - MSP-EXP430F5529LP LaunchPad Seus principais recursos são: Cinco “timers” Sistema de “clock” até 25MHz Possibilidade de trabalhar com até quatro interfaces de comunicação serial (SPI, UART, I²C). Conversor analógico-digital (AD) de 12 bits Entradas analógicas e digitais com função de “pull up” e ”pull down” internos. 2.2.2 Redes Uma rede, em sua definição mais genérica, é um conjunto de dispositivos interligados para enviar e receber dados. O uso das redes atualmente se tornou tão comum que muitas vezes não são nem notadas; a comunicação entre um monitor e o controle remoto, por exemplo, por mais simples que seja, consiste numa rede. Sem o uso das redes é impossível para um dispositivo fazer compartilhamento de recursos, 16 enviar e receber informações de outros equipamentos, trabalhar com telecomunicação ou acessar internet, por exemplo. A Internet é o maior exemplo de rede de computadores, com milhões de máquinas interconectadas ao redor do mundo, por outro lado as pequenas redes LAN desempenham um papel também importante no acesso diário de informações [7]. As tecnologias de rede podem ser divididas em dois grupos básicos: Rede local, na qual as tecnologias LAN (Local Area Network) conectam muitos dispositivos que estão relativamente próximos, geralmente num ambiente fechado, ou no mesmo prédio. Rede de longa distância, na qual as tecnologias WAN (Wide Area Network) conectam dispositivos que podem estar separados por milhares de quilômetros. Em comparação às WANs, as LANs são mais rápidas e confiáveis. A tecnologia, porém, se desenvolve rapidamente, e as diferenças entre WAN e LAN estão cada vez menores. Os cabos de fibra ótica permitem uma conexão de alta taxa de transferência entre dispositivos separados por quilômetros de distância. Esses cabos também melhoram a velocidade e a confiabilidade das redes WAN. Com o desenvolvimento das redes cada vez mais foi se tornando necessário que houvesse padronização dos meios de conexão, dos parâmetros elétricos dos sinais, dos tipos de conectores e cabeamento, das estruturas de dados a serem enviados, etc. Aos poucos as grandes organizações foram criando as normas, que depois se ajuntavam e formavam protocolos. 2.2.3 Ethernet A Ethernet é uma arquitetura de interconexão baseada na norma IEEE 802.3 que define padrões de transmissão de dados e interconexões para redes locais (LAN) [2]. A tecnologia surgiu em 1972 com uma largura de banda de 10Mbps e foi desenvolvido pela Xerox, DEC (Digital Equipment) e Intel para arquiteturas tipo barramento, na qual todos os dispositivos da rede estão conectados ao barramento principal, por onde trafegam todos os pacotes de dados, conforme Figura 3. Desde a década de 90 a Ethernet vem sendo a tecnologia de LAN mais amplamente utilizada e tem tomado grande parte do espaço de outros padrões de rede como Token Ring, FDDI e ARCNET. Inicialmente limitava-se a pequenas redes com 17 algumas centenas de metros e arquitetura de barramento, mas, com os avanços da tecnologia, atualmente a Ethernet é capaz de oferecer cobertura para dezenas de quilômetros e velocidades de 10/100/1000 Mbit/s (Fast Ethernet e Gigabit Ethernet), com possibilidade de chegar até 10Gbit/s (10 Gigabit Ethernet), e utiliza uma topologia em estrela, na qual cada nó (dispositivo) está conectado ao outro através de equipamentos ativos de rede, tais como switches e roteadores [1]. Figura 3 - Rede com Ethernet em uma arquitetura de barramento Esta tecnologia abrange uma série de padrões e, basicamente, consiste de três elementos: LLC (Controle do Link Lógico, do inglês “Logic Link Control”): conforme IEEE 802.2, inclui informações do protocolo de alto nível que entregou o pacote de dados a ser transmitido. Possibilita que a máquina receptora saiba para qual protocolo de alto nível ela deve entregar os dados de um quadro que ela acabou de receber. MAC (Controle de Acesso ao Meio, do inglês “Media Access Control”): conforme IEEE 802.3, monta o quadro de dados a ser transmitido pela camada física, incluindo cabeçalhos próprios dessa camada aos dados recebidos da camada de LLC. Física: Transmite os quadros entregues pela camada de MAC usando o método CSMA/CD CSMA/CD (do inglês “Carrier Sense Multiple Access with Collision Detection”). Define como os dados são transmitidos através do cabeamento da rede e também o formato dos conectores usados na placa de rede. 18 Uma característica importante do Ethernet é o modo de transmissão, que está na subcamada MAC e pode ser de dois tipos: Half-duplex: cada estação transmite ou recebe informações, sem transmissão simultânea; Full-duplex: cada estação transmite e/ou recebe, podendo ocorrer transmissões simultâneas. 2.2.3.1 Codificação As redes que funcionam com padrões semelhantes a Ethernet não usam uma codificação direta, ou seja, com 0V (zero volt) para representar um bit 0 (nível lógico baixo) e 5V (cinco volts) para representar um bit 1 (nível lógico alto), pois esta codificação pode gerar ambiguidade: se uma estação enviar uma palavra “00010000”, outras poderão interpretá-la erroneamente como “10000”, pois não conseguem discernir entre uma estação inativa e um bit 0, porque ambas estão em 0V. Esse problema poderia ser resolvido usando-se, por exemplo, +1V para representar um bit 1 e −1V para representar um bit 0. Mesmo assim, o receptor pode ter problemas para delinear o início e fim de cada bit. A solução para estes problemas veio com o uso da Codificação Manchester mostrada na Figura 4, em que os valores (alto e baixo) para o padrão 802.3 correspondem a +0,85V e −0,85V. Figura 4 - Comparação entre codificação binária e Codificação Manchester 19 2.2.3.2 Endereçamento O endereçamento da rede é feito através de uma numeração única de 6 bytes para cada “host” conhecida como “endereço MAC”. Os primeiros três bytes são o endereço OUI (“Organizationally Unique Identifier”) que serve para a identificação do fabricante e os três bytes seguintes são controlados por cada fabricante de placa de rede, normalmente usados para numeração sequencial. O endereço MAC é representado em números hexadecimais. Cada algarismo em hexadecimal equivale a um número de quatro bits. Dessa forma, um byte é representado por dois algarismos em hexadecimal e, com isso, o endereço MAC é sempre representado por um conjunto de 12 algarismos em hexadecimal. O endereço MAC é um controle universal, pois o fabricante que quiser produzir uma placa de rede deve se cadastrar no IEEE para ganhar o seu número OUI e cada fabricante é responsável por controlar a numeração MAC das placas de rede que produz. 2.2.3.3 Quadro Ethernet O quadro ethernet é dividido em campos. Os principais campos podem ser descritos como na Figura 5. Figura 5 - Quadro Ethernet 20 Preâmbulo: com 7 bytes que informa às estações receptoras que um frame está começando; SFD (“Start Frame Delimeter”) ou SOF (“Start-Of-Frame”): campo de 1 byte denominado delimitador de início de frame. Este byte termina com 2 bits “1” (10101011) consecutivos que servem para sincronizar a parte de recepção de frame de todas as estações da LAN. Endereço de Destino: campo de 6 bytes que contém o endereço MAC do dispositivo de destino; Endereço de Origem: campo de 6 bytes que contém o endereço MAC do dispositivo que enviou o pacote; Tamanho: campo de 2 bytes que indica o tamanho (em bytes) do campo de dados; Dados: contém os dados a ser passados para a próxima camada; deve ter tamanho mínimo de 46 bytes e máximo de 1500 bytes. No caso da IEEE 802.3, o protocolo deve ser definido dentro do campo de dado. Se o dado no frame for insuficiente para preencher o mínimo de 64bytes (somados do endereço de destino até o campo FCS), são inseridos bytes de preenchimento para garantir o número mínimo de bytes. FCS – Frame Check Sequence: Este campo de 4 bytes contém contém o valor de CRC (Verificação de Redundância Cíclica, do inglês “Cyclic Redundancy Check”). O CRC é criado pelo dispositivo transmissor e recalculado pelo dispositivo receptor para verificar a integridade dos. É importante observar que o endereço de origem (ou fonte) é sempre um endereço “unicast” (nó único), enquanto o endereço de destino pode ser “unicast”, “multicast” (a um grupo) ou “broadcast” (a todos). 2.3 Metodologia Antes de iniciar o procedimento de inspeção da RIB com a Giga de Teste, o operador liga a fonte alimentação (5V) para energizar os microcontroladores da estação e encaixa a RIB que será testada. 21 Figura 6 – Diagrama esquemático da Giga de Teste da placa RIB A Figura 6 apresenta o diagrama de blocos da Giga de Teste. Para dar início ao teste pressiona-se o botão START. O microcontrolador chaveia o circuito do regulador de tensão LM317 que energiza a RIB com 5V. Se houver curto-circuito o próprio LM317, que possui proteção de sobrecorrente, abre o circuito instantaneamente. Inicialmente, há o teste de corrente e dos circuitos DCDC e RS-485. Logo em seguida inicia-se o teste do circuito Óptico da RIB. O MSP_B mede os níveis de tensão aplicados pela RIB e pela Giga de Teste sobre os conectores A e B do circuito óptico através dos pinos de entrada analógica P6.6 e P6.5, respectivamente. Cada pino destes está ligado a um multiplexador, que por sua vez comuta o sinal de treze pinos que vem de um dos conectores ópticos, ou seja, P6.6 e P6.5 verificam um total de 26 pinos da RIB. O nível de tensão medido em cada pino é comparado ao padrão de uma placa não defeituosa (placa “Master”). Caso haja alguma divergência nos valores, o teste é encerrado e o LED “FAIL” é aceso. Se o teste não apresentar falhas, conclui-se que o circuito Óptico não possui defeitos e passa-se para a próxima etapa de teste. 22 O último teste realizado é o do padrão Ethernet. O MSP_A envia uma letra para a placa RIB, passando pelo conector no padrão Ethernet, a Giga de teste provoca um “backloop” e a RIB devolve instantaneamente o dado recebido para o microcontrolador. Quando o MSP recebe o dado ele faz a verificação. Caso haja alguma divergência com o dado recebido, ou se o tempo de espera tiver estourado, o teste é encerrado e o LED “FAIL” é aceso. Se o dado foi enviado e voltou corretamente, termina-se o teste e conclui-se que o circuito Ethernet não possui defeitos. Ao final do teste, depois de todas as etapas, se em momento algum a amostra não apresentar defeito, o LED “PASS” é aceso e o usuário pode remover a RIB da Giga de Teste. O botão RESET permite que o usuário reinicie um teste a qualquer instante. 23 Capítulo 3 Desenvolvimento 3.1 Materiais O custo total deste projeto foi de R$440,00; no qual se incluem o custo dos módulos e fretes dos componentes comprados no exterior e também o custo de R$230,00 dos blocos para teste dos circuitos DCDC e RS485 conforme o projeto de Umehara e Villas-Bôas [6]. 3.1.1 Circuito Principal O circuito principal já estava montado na Giga de Teste, no entanto é conveniente citar mais uma vez os seus componentes principais e suas atualizações: Peça C2 C3 C4 C5 DCDC Valor 100nF 100nF 100nF 100nF 10PIN DRIVER S IC2 10 PIN 4052N Ecapsulamento C0402K C0402K C0402K C0402K PAK100/250010 -2510 PAK100/250010 4052N DIL16 IC3 4052N 4052N DIL16 JP1 ETH_LOOP_ 0 ETH_LOOP_ 1 UART_MSP 430 CTRL_LED1 CTRL_LED2 JP1E JP1 Dual 4-channel ANALOG MULTIPLEXER Dual 4-channel ANALOG MULTIPLEXER JUMPER JP1E JP1 JUMPER JP2Q JP2Q JUMPER JP1E JP1E SSW-102-02S-D SSW-102-02S-D LEDCHIPLED_ 0805 LEDCHIPLED_ 0805 JP1 JP1 SSW-102-02-S-D CHIPLED_0805 JUMPER JUMPER THROUGH-HOLE .025" SQ POST SOCKET THROUGH-HOLE .025" SQ POST SOCKET LED CHIPLED_0805 LED JP2 JP3 JP4 JP5 JP8 JP9 LED1 LED2 UART_CTRL 1 UART_CTRL 2 Dispositivo C-EUC0402K C-EUC0402K C-EUC0402K C-EUC0402K -2510 SSW-102-02-S-D Descrição CAPACITOR, European symbol CAPACITOR, European symbol CAPACITOR, European symbol CAPACITOR, European symbol 3M (TM) Pak 100 4-Wall Header 3M (TM) Pak 100 4-Wall Header 24 OPTCO _A OPTCO _B PAINEL R1 R4 R6 R7 R8 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R37 R39 R40 R41 R53 R54 R55 R56 R57 R58 R59 R60 R61 U2 20 PIN 20 PIN -2510 33 33 2k2 2k2 33 1k 33 33 33 33 33 33 33 33 33 33 33 1K 2K2 1K 2K2 1K 2K2 1K 2K2 47K 470 470 470 470 MSP430 U4 MSP430 X200 QSE-040-02 -2520 PAK100/25003M (TM) Pak 100 4-Wall Header 20 -2520 PAK100/25003M (TM) Pak 100 4-Wall Header 20 -2510 PAK100/25003M (TM) Pak 100 4-Wall Header 10 R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol R-US_R0402 R0402 RESISTOR, American symbol MSPMSP-EXP430F5529LP EXP430F5529 LP MSPMSP-EXP430F5529LP EXP430F5529 LP QSE-040-02 QSE-040-02 0,80mm HI-SPEED SOCKET QSE Serie 25 3.1.2 Circuito Óptico Part IC1 IC4 OPTCO_A OPTCO_B OPTICO_A OPTICO_B R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R29 R30 R31 R32 R33 R34 R35 R36 R38 R42 Value MPC506AP MPC506AP 20 PIN 20 PIN PIN 14 PIN 14 4,7K 4,7K 4,7K 4,7K 4,7K 4,7K 4,7K 4,7K 1K 1K 4,7K 4,7K 4,7K 4,7K 4,7K 4,7K 4,7K 4,7K 1K 1K Device MPC506AP MPC506AP -2520 -2520 -2514 -2514 R-US_R0402 R-US_R0402 R-US_R0402 R-US_R0402 R-US_R0402 R-US_R0402 R-US_R0402 R-US_R0402 R-US_R0402 R-US_R0402 R-US_R0402 R-US_R0402 R-US_R0402 R-US_R0402 R-US_R0402 R-US_R0402 R-US_R0402 R-US_R0402 R-US_R0402 R-US_R0402 Package DIL28 DIL28 PAK100/2500-20 PAK100/2500-20 PAK100/2500-14 PAK100/2500-14 R0402 R0402 R0402 R0402 R0402 R0402 R0402 R0402 R0402 R0402 R0402 R0402 R0402 R0402 R0402 R0402 R0402 R0402 R0402 R0402 Description CMOS Analog Multiplexers CMOS Analog Multiplexers 3M (TM) Pak 100 4-Wall Header 3M (TM) Pak 100 4-Wall Header 3M (TM) Pak 100 4-Wall Header 3M (TM) Pak 100 4-Wall Header RESISTOR, American symbol RESISTOR, American symbol RESISTOR, American symbol RESISTOR, American symbol RESISTOR, American symbol RESISTOR, American symbol RESISTOR, American symbol RESISTOR, American symbol RESISTOR, American symbol RESISTOR, American symbol RESISTOR, American symbol RESISTOR, American symbol RESISTOR, American symbol RESISTOR, American symbol RESISTOR, American symbol RESISTOR, American symbol RESISTOR, American symbol RESISTOR, American symbol RESISTOR, American symbol RESISTOR, American symbol 26 3.1.3 Circuito Ethernet Peça Valor C1 C2 C3 C4 C5 DRIVERS 100nF 100nF 1uF 1uF 100nF 10 PIN IC5 MAX3232C SE DB9 MODULE RS485 OPT1 OPT2 Dispositivo Ecapsulam ento C-EUC0402K C0402K C-EUC0402K C0402K C-EUC0603K C0603K C-EUC0603K C0603K C-EUC0402K C0402K -2510 PAK100/25 00-10 MAX3232CSE SO16 Descrição F09HP F09HP CAPACITOR, European symbol CAPACITOR, European symbol CAPACITOR, European symbol CAPACITOR, European symbol CAPACITOR, European symbol 3M (TM) Pak 100 4-Wall Header True RS-232 Transceivers 3.0V to 5.5V, Low-Power SUB-D FODM121 SFH6186-2 SMD4 FODM121 SFH6186-2 SMD4 R1 220 R-US_R0402 R2 220 R-US_R0402 RET_CABLE DB9 F09HP RS232 CON1 53047-03 RS232_RX/TX JP2Q RS232/ETHE RNET UART_ETHERNET JP2Q XALARM_CA F15 F15HDH BLE R0402 R0402 F09HP 53047-03 JP2Q JP2Q HDF15H Optocoupler, Phototransistor Output, Low Input Current Optocoupler, Phototransistor Output, Low Input Current RESISTOR, American symbol RESISTOR, American symbol SUB-D CONNECTOR JUMPER MODULE_RS232/ETHERNET MODULE_ETHERNET JUMPER SUB-D 3.2 Projeto Detalhado Para que se elaborem os procedimentos de inspeção de um produto, devem-se conhecer antes de qualquer coisa os padrões de qualidade do produto a ser testado e os principais defeitos que podem resultar num produto não conforme. Para isso estudou-se os parâmetros de uma placa não defeituosa – comumente chamada na empresa de placa “Master” – para que sirvam de referência. Outro ponto importante a se observar quando se projeta uma estação de teste é que a Giga de Teste deve ser capaz de “perceber” cada um dos defeitos, ainda que não seja capaz de isolá-los, mas precisa garantir que a amostra, quando aprovada no teste, de fato não possui nenhum defeito. A seguir, na Tabela 1, o estudo de Umehara e Villas-Bôas sobre o assunto [6]: 27 Tabela 1 - Estudo dos principais defeitos possíveis na RIB Causa Componentes com orientação / polaridade invertida Efeito Sintoma Teste O componente com orientação / polaridade invertida irá se danificar e há pequena possibilidade de danificar outros componentes ligados diretamente a ele. Perda de sinal. O bloco do circuito onde o componente estiver não funcionará corretamente. O sinal “morre” nele. Medição dos sinais de entrada e saída do componente, em seguida verificação visual da serigrafia do componente. Sinais ligados aos terminais do componente faltando apresentarão variação nos níveis de tensão ou serão nulos. O bloco do circuito onde o componente estiver não funcionará corretamente e pode haver curtocircuito. Apenas realizar inspeção visual. Aparecimento de ruídos no circuito envolvido. Identificar a região do circuito que apresenta falha através do multímetro e em seguida com auxilio de um microscópico realizar uma inspeção visual até identificar o problema na solda. Comparar os sinais de entrada e saída do componente e comparar os valores com valores de uma placa de referência (placa Master). Componentes Faltando Ponte de Solda (“Solde bridge”) Outros problemas relacionados à solda (Solda fria, insuficiência, etc) Falha funcional do componente Em terminais de sinais digitais, poderá danificar o próprio componente com a ponte de solda e em caso de ponte de solda entre VCC e GND a placa entrará em curto-circuito, danificando o circuito da fonte. O circuito pode apresentar “mau-contato” e intermitência. O circuito relacionado ao componente defeituoso apresentará mau funcionamento ou não funcionará. Sinais de entrada no componente estarão funcionando perfeitamente, porém não haverá sinal de saída. Identificar o circuito com falha com um ohmímetro e realizar a inspeção visual com um microscópio. Os autores mencionados estudaram as causas e efeitos dos diversos defeitos em lotes não liberados na empresa Ericsson para poder listar todos as falhas possíveis na RIB, seus sintomas, ou seja, os principais indícios de que o defeito está presente e quais os tipos de testes que a Giga de Teste deveria ser capaz de realizar para garantir a qualidade da RIB. Excetuando-se a verificação de componentes com o microscópio e a inspeção visual, os testes que a Giga de Teste deve realizar para os circuitos estudados são simples: medição de tensão, comparando com os níveis de uma placa Master e o envio/recebimento de um dado para verificar a integridade da comunicação Ethernet. Os dois microcontroladores estarão conectados aos quatro circuitos de teste da Giga, como mostra a Figura 7. O circuito RS 485 é representado junto ao de padrão 28 Ethernet por utilizar o mesmo multiplexador. No entanto, como já foi mencionado, os objetos de estudo deste trabalho serão somente os testes dos circuitos Óptico e Ethernet. MSP430_A UART MSP430_B UART UART DCDC RS 485/Ethernet Óptico Painel LEDs Figura 7 – Bloco Principal Ao ligar a fonte de alimentação, a tensão é regulada em 5V pelo LM 317 para energizar a Giga de Teste (seus microcontroladores). E ao ser pressionado o botão START do microcontrolador, ele envia um sinal para um segundo LM317, que fecha o circuito e alimenta a RIB que será testada. Os LM317 possuem proteção contra sobrecorrente que abrem o circuito se a corrente extrapolar um limite, assegurando que a RIB conectada à Giga de Teste não receba a corrente de curto. Inicialmente, a Giga de Teste realiza os testes nos circuitos DCDC e RS-485. Segundo Umehara e Villas-Bôas (2014): “O MSP realiza uma medição da corrente que sai do LM317 e vai para a RIB a fim de comparar com o valor da placa Master e detectar já nesse processo inicial se há algum mau funcionamento na amostra e se esse for o caso, encerra o teste e acende o LED ‘FAIL’”. Em seguida, a Giga de Teste realiza o teste nos conectores ópticos, conforme Figura 8. Foi utilizado um conector adaptador para que a Giga de Teste pudesse se conectar aos conectores ópticos. A própria RIB internamente já energiza com 3V alguns dos pinos dos conectores e possui resistores de “pull up” e “pull down”, a Giga de Teste apenas completou os circuito de cada pino criando outro “pull down” ou “pull up”. Cada um desses pinos está conectado internamente na RIB com um conector principal (80 pinos), que por sua vez está ligado à Giga de Teste por meio de um multiplexador. 29 3V da RIB ou da Giga de Teste Divisor de Tensão Conector Conector Sinal analógico que vem dos conectores MSP430 Multiplex ADDRESS Figura 8 - Bloco Óptico Na Giga de Teste são utilizados dois multiplexadores MPC 506, cada um comuta a entrada de treze pinos do circuito óptico nas portas analógicas P6.6 e P6.5 do MSP_B. Durante o teste, o “enable” dos multiplexadores fica em nível alto e o MSP envia para eles o endereço (“4bit address”) de cada pino em que se fará a leitura. O microcontrolador faz a litura e compara os valores obtidos com os padrões de uma placa Master e se não houver grandes variações passa-se para a próxima etapa. Finalmente, para o teste do circuito Ethernet, mostrado na Figura 9, foi utilizado um conversor Ethernet/UART para que o MSP pudesse enviar uma palavra através do conector da RIB em sobrecarregar o código da Giga de Teste. A Giga de Teste quando conectada à RIB, estabelece um “backloop” na extremidade interna do circuito Ethernet, fazendo com que ao enviar um dado à RIB, o MSP receba-o de volta. Neste momento final do teste da RIB o microcontrolador enviará uma letra através circuito Ethernet e vai esperar seu retorno. Se a RIB devolver o dado sem danos e dentro do tempo padrão da placa Master, finaliza-se o ciclo de testes da RIB e os LEDs indicativos irão informar que a placa não possui defeitos. 30 MSP430_A UART UART_A Multiplex 4052 UART_B Placa RIB Módulo Ethernet / RS232 Módulo RS 232/485 Placa RIB MAX 232 Backloop MSP430_B UART Figura 9 - Bloco RS485 / Ethernet 31 3.3 Programação O programa inicia em um “loop” de Decisão, no qual aguarda o BOTAO_START ficar em nível alto, que acontece quando o operador deseja iniciar o teste da RIB e aciona o BOTAO_START; Após acionado o BOTAO_START, é feito a leitura da corrente consumida pela RIB através de uma porta analógica (I_SUPERV) do MSP_A, e se a corrente for menor que 90d ou maior que 120d o teste é finalizado cortando a alimentação da RIB e acionando o LED_FAIL(vermelho), e caso a corrente estiver entre 90d a 120d o teste continua para próxima etapa; Na etapa seguinte é testada a comunicação serial RS-485, na qual o MSP_A configura o multiplexador para direcionar a saída serial do MSP_A para o módulo conversor RS-232/RS485, através do “set”:A=0 e B=0; em seguida o MSP_A envia o caracter “a” e aguarda uma resposta de um caracter “b” do MSP_B, nessa etapa o MSP_B fica aguardando um caracter “a” via serial (interrupção) e em seguida envia um caracter “b”. Ao receber o caracter “b”, o MSP_A deixa a porta de saída digital NEXT em nível alto; caso não recebe o caracter “b”, o teste é finalizado indicando falha; A seguir o MSP_B começa a atuar iniciando o teste de ETHERNET. O MSP_B é iniciado em um “loop” de Decisão no qual aguarda a porta de entrada digital NEXT ler um nível alto; logo após o MSP_B configura o multiplexador para o direcionamento de sua saída UART para o módulo ETHERNET/UART, através do “set”: A=0, B=1. Em seguida, o MSP_B envia o caracter “c” e aguarda o retorno do mesmo caracter durante um tempo; caso exceda o tempo, o teste é finalizado indicando Falha, caso contrário o teste passa para próxima etapa; Nessa etapa o MSP_B testa os conectores do OPTICO_A e B, através de dois multiplexadores de 1x16 e com duas portas analógicas; o MSP_B inicia o teste com um “loop” de 13 repetições, na qual cada repetição é feita a comutação da saída do multiplexador, uma leitura analógica e a comparação do valor lido com o limite de 1,5V até 2,0V; caso todas 13 leituras estejam atendam o limite, essa etapa se repete para o OPTICO_B e caso esteja também entre os limites, o teste é finalizado e aciona-se o LED_PASS (verde) indicando aprovada. Se durante as 13 leituras de cada OPTICO o valor esteja fora do limite de 1,5V até 2,0V, o teste é finalizado acionando o LED_FAIL (vermelho) indicando NÃO aprovada. 32 3.4 Fluxograma MSP430_A INÍCIO MSP430_B BOTÃO_START = 1 DELAY_MS = 1000 LER I_SUPERV 90 < I_SUPERV < 120 CALL FAIL A = 0; B = 0 UART_A_TX = “a” 33 INTERRUPÇÃO UART_B CALL FAIL C=1; C<500; C++ RIB_ON/OFF = 0 UART_A_RX == “b” UART_B_RX == “a” NEXT = 1 UART_B_TX = “b” FIM FIM LED_FAIL = 1 FIM 34 INÍCIO NEXT == 0 A = 0; B = 1 CALL FAIL UART_C_TX = “c” C=1; C<500; C++ RIB_ON/OFF = 0 UART_C_RX == “c” LED_FAIL = 1 FIM 35 MULT_A=0; MULT_A<12; MULT_A++ 1,5V < ANALOG_A < 2V CALL FAIL MULT_B=0; MULT_B<12; MULT_B++ 1,5V < ANALOG_B < 2V CALL FAIL RIB_ON/OFF = 0 LED_PASS = 1 FIM 36 Capítulo 4 Resultados 4.1 Teste Conector Ethernet 4.1.1 Teste Funcional O teste foi realizado utilizando a PCB mostrada nas Figuras 10 e 11 e conectando a saída UART do MSP ao conector Ethernet enquanto no conector da RIB foi conectado um loop, com este circuito loop montado enviamos um dado e o recebemos no MSP via UART também. O teste baseia-se em comparar o dado enviado ao dado recebido (deve ser o mesmo). Foram disponibilizadas outras 10 RIBs para fazermos o teste e todas foram aprovadas. 4.1.2 Teste de Confiabilidade Como também não é possível realizar este teste em bancada foi realizado o seguinte teste: Não conectamos totalmente o cabo no conector Ethernet, simulando algum problema de solda fria ou até mesmo falta de solda ou ainda a falta de um componente causando problema na comunicação ou no recebimento do dado enviado, e a estação reprovou as placas. Para confirmar os resultados fornecidos pela estação mostrada na Figura 12, as placas testadas foram levadas para serem testadas em nível de rádio e todas foram aprovadas. 37 4.2 Teste Conector Óptico 4.2.1 Teste Funcional Este teste, devido a sua complexidade, foi projetado para trabalhar simplesmente comparando tensões e com isso testando a continuidade do caminho percorrido pelo dado enviado, como a nossa preocupação foi apenas verificar se havia empecilhos nesse caminho, como por exemplo, a falta de solda em algum componente, ou até mesmo a falta dele. Foram disponibilizadas outras 10 RIBs para realizarmos esse teste, e todas foram aprovadas pela estação, conforme Tabela 3. 4.2.2 Teste de Confiabilidade Devido à incapacidade de realizar este teste em bancada, em todas as placas retiramos um resistor, deixando o caminho do dado impedido, assim simulando a falta desse componente, e a estação respondeu bem a esse teste reprovando essas unidades. Ainda assim montamos o resistor retirado e enviamos as unidades para o teste de rádio, foram reprovadas três unidades do radio, que ao serem analisadas pelos técnicos foi constatado falhas de processo produtivo em outros componentes do rádio, que não a RIB, como demonstra a tabela abaixo. Tabela 2 - Resultados dos testes no circuito Óptico Resultado Teste Ethernet Pass Pass Pass Pass Pass Resultado do teste (RIB) Pass Pass Pass Pass Pass Resultado Teste (RRU) Pass Pass Pass Pass Pass Pass Pass Failed Pass Pass Pass Pass Pass Failed Pass Pass Pass Pass Pass Failed Observação Técnica Componente deslocado na PAU (Power Amplifier Unit) Componente faltando na TRX (Transciever) Reconectaram os cabos e a unidade foi aprovada 38 4.3 Placas Confeccionadas As Figuras 10, e 11 mostram a placa de circuito impresso do Bloco Ethernet. A Giga de Teste já finalizada é mostrada na Figura 12. Figura 10 - PCB Circuito RS485/Ethernet (TOP) Figura 11 - PCB Circuito RS485/Ethernet (BOT) 39 Figura 12 – Giga de Testes 4.4 Redução de Custos Tendo como exemplo um lote de 100 peças, conseguimos uma redução de tempo de linha, de aproximadamente 34%, o que representaria um aumento de 55 peças com o mesmo tempo de produção, como demonstrado na figura 13. Segundo informações da empresa a hora da linha custa R$1100,00; fabricando 250 peças (quantidade média produzida atualmente por turno), obtém-se um ganho de aproximadamente 140min, conforme a Figura 14, ou seja, mais de R$2560,00. 40 Figura 13 - Redução do tempo de produção por lote Figura 14 - Ganho em tempo 41 Capítulo 5 Conclusões Com este projeto os autores puderam estudar o funcionamento da RIB e trabalhar no projeto da estação de teste (Giga de Teste), que chegou a ser testada na linha de produção da empresa Ericsson. Os resultados mostraram que dispositivo fabricado é capaz de simular e testar corretamente as funções dos circuitos Óptico e Ethernet da RIB. A Giga de Teste automatizou o processo de inspeção na linha de produção e melhorou a metodologia do teste, possibilitando que o usuário obtenha resultados de maneira mais simples. O tempo do teste que antes durava cerca de 50 minutos foi reduzido para aproximadamente 5 minutos, e pode diminuir mais com treinamento dos operadores. Isso resultou em menos tempo de linha parada, maior produtividade e redução no custo de fabricação da RIB. Em suma, todos os objetivos pré-estabelecidos foram alcançados com êxito e o dispositivo fabricado mostrou-se como uma inovação de baixo custo. Este projeto conseguiu também ampliar a visão dos envolvidos sobre o processo de inspeção da RIB, deixando oportunidades de melhoria para implementação futura das quais se destaca a criação de uma interface no computador ou tela de LCD para melhorar a apresentação dos resultados. 42 Referências Bibliográficas [1] - AXIS COMMUNICATIONS. Rede local e Ethernet. Disponível em: http://www.axis.com/pt/products/video/about_networkvideo/ip_networks.htm Acesso em: 10 nov. 2014 [2] - CIANET. Tecnologia Ethernet. Disponível em: http://www.cianet.ind.br/pt/produtos/tecnologias/tecnologia-ethernet/ Acesso em: 10 nov. 2014 [3] - CISCO. Cisco Visual Networking Index: Global Mobile Data Traffic Forecast Update, 2013–2018 Disponível em: http://www.cisco.com/c/en/us/solutions/collateral/service-provider/visual-networkingindex-vni/white_paper_c11-520862.html Acesso em: 27 set. 2014. [4] - CNET. Ericsson predicts tenfold increase in mobile data traffic in five years. Disponível em: http://www.cnet.com/news/ericsson-predicts-tenfold-increase-inmobile-data-traffic-in-five-years/ Acesso em: 28 set. 2014. [5] - E-THESIS. Small cells: você ainda vai ter a sua... Disponível em: http://www.e-thesis.inf.br/index.php?option=com_content&task=view&id=7912&Itemi d=52 Acesso em: 4 out. 2014. [6] - F. UMEHARA , M. P. VILLAS-BÔAS. Giga de testes para RIB: Teste dos circuitos DCDC e RS485. 2014. Relatório do Trabalho de Conclusão de Curso para obtenção do Título de Bacharel em Engenharia Elétrica/Eletrônica – UNIVAP – Universidade do Vale do Paraíba, São José dos Campos. [7] - PIDGEON, NICK. How Stuff Works. Como funciona a Ethernet. Disponível em: http://tecnologia.hsw.uol.com.br/ethernet1.htm Acesso em: 10 nov. 2014 [8] - SINDITELEBRASIL, SINDICATO NACIONAL DAS EMPRESAS DE TELEFONIA E DE SERVIÇO MÓVEL CELULAR E PESSOAL. Copa 2014: mais de 1 milhão de comunicação de dados no jogo do Brasil x Croácia. Disponível em: http://www.sinditelebrasil.org.br/sala-de-imprensa/na-midia/2210-copa-2014-mais-de1-milhao-de-comunicacao-de-dados-no-jogo-do-brasil-x-croacia Acesso em: 5 out. 2014. 43 Anexo 1 – Esquema Elétrico 44 45 46 47 48 49 Anexo 2 – Código Main MSP_A #include <msp430f5529.h> volatile unsigned int results[10]; example // Needs to be global in this // Otherwise, the compiler removes it // because it is not used for anything. unsigned int c; int Analog; int RS485_check = 0; int Ethernet_check = 0; void Pass(void) { unsigned int a; P2OUT |= P1OUT |= P6OUT &= for(a=0; BIT7; BIT6; ~BIT6; a<10000; a++); while (!(UCA1IFG&UCTXIFG)); UCA1TXBUF = 'p'; // // // // DESLIGA VCC_RIB SET UART MSPA=MSPB SET UART MSPA=MSPB delay // USCI_A0 TX buffer ready? // TX -> RXed character } void Fail(void) { unsigned int b; P2OUT |= P1OUT |= P6OUT &= for(b=0; BIT7; BIT6; ~BIT6; b<10000; b++); while (!(UCA1IFG&UCTXIFG)); UCA1TXBUF = 'f'; //DESLIGA VCC_RIB // SET UART MSPA=MSPB // SET UART MSPA=MSPB // delay // USCI_A0 TX buffer ready? // TX -> RXed character } int main(void) { WDTCTL = WDTPW+WDTHOLD; P2DIR |= BIT4; P2OUT &= ~BIT4; //Configuração portas P2DIR |= BIT7; // Stop watchdogtimer // MSP_A FINISHED, MSP_B START // RIB_ON/OFF 50 P2OUT |= BIT7; // DESLIGA P3DIR &= ~BIT1; P3REN |= BIT1; P3OUT |= BIT1; // START_BUTTON // ATIVA PULL UP/DOWN // SET PULLUP P6DIR &= ~BIT5; // I_SUPERV (ANALOGICO) P1DIR |= BIT6; P6DIR |= BIT6; // UART SELECT = A // UART SELECT = B //Configuração UART P3SEL = BIT3+BIT4; UCA0CTL1 |= UCSWRST; UCA0CTL1 |= UCSSEL_2; UCA0BR0 = 6; UCA0BR1 = 0; UCA0MCTL = UCBRS_0 + UCBRF_13 + UCOS16; UCA0CTL1 &= ~UCSWRST; machine** UCA0IE |= UCRXIE; __bis_SR_register(GIE); //Configuração ADC P6SEL = 0x0F; ADC12CTL0 = ADC12ON+ADC12MSC+ADC12SHT0_2; time ADC12CTL1 = ADC12SHP+ADC12CONSEQ_1; sequence ADC12MCTL0 = ADC12INCH_0; ADC12MCTL1 = ADC12INCH_1; ADC12MCTL2 = ADC12INCH_2; ADC12MCTL3 = ADC12INCH_3+ADC12EOS; seq. ADC12MCTL5 = ADC12INCH_5; channel = A5 ADC12IE = 0x08; ADC12CTL0 |= ADC12ENC; // // // // // // // P3.4,5 = USCI_A0 TXD/RXD **Put state machine in reset** SMCLK 1MHz 9600 (see User's Guide) 1MHz 9600 Modln UCBRSx=0, UCBRFx=0, **Initialize USCI state // Enable USCI_A0 RX interrupt // interrupts enabled // Enable A/D channel inputs // Turn on ADC12, set sampling // Use sampling timer, single // // // // ref+=AVcc, ref+=AVcc, ref+=AVcc, ref+=AVcc, channel channel channel channel = = = = A0 A1 A2 A3, end // ref+=AVcc, // Enable ADC12IFG.3 // Enable conversions while(1) { nok: while((P3IN & BIT1)==0);// Aguarda o operador acionar o botão START for(c=0; c<15000; c++); // Delay P2OUT &= ~BIT7; // Acionada a alimentação da RIB for (c=1; c<4000; c++); // Delay para a RIB estabilizar // Leitura da corrente ADC12CTL0 |= ADC12SC; // Start convn - software trigger Analog = ADC12MEM5; // Leitura analogica do I_Superv if ((90 < Analog) && (Analog < 150)) // Limites de corrente de uma placa ok goto ok; else 51 { Fail(); goto nok; // senão termina o teste } ok: for(c=1; c<10000; c++); //Inicio do teste RS485 P1OUT &= ~BIT6; P6OUT &= ~BIT6; // delay // SET UART RS485 // MSP_A = UART_A / MSP_B = UART_D for(c=1; c<10000; c++); // delay while (!(UCA1IFG&UCTXIFG)); UCA1TXBUF = 'a'; for(c=1; c<20000; c++) { if(RS485_check == 1) { RS485_check = 0; goto ok1; } } Fail(); goto nok; // USCI_A0 TX buffer ready? // TX -> RXed character //RS485 ok! ok1: // TESTE ETHERNET for(c=1; c<10000; c++); // delay P1OUT &= ~BIT6; P6OUT |= BIT6; // SET UART TO ETHERNET // SET UART TO ETHERNET for(c=1; c<10000; c++); // delay while (!(UCA1IFG&UCTXIFG)); // USCI_A0 TX buffer ready? UCA1TXBUF = 'e'; // TX -> RXed character for(c=1; c<20000; c++) { if(Ethernet_check == 1) { Ethernet_check = 0; goto ok2; // Ethernet ok! } } Fail(); goto nok; ok2: for(c=1; c<10000; c++); P2OUT |= P1OUT |= P6OUT &= for(c=1; P2OUT &= BIT4; BIT6; ~BIT6; c<30000; c++); ~BIT4; // delay // TEST MSP_A FINISHED, START MSP_B // SET UART MSPA=MSPB // SET UART MSPA=MSPB } } #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) 52 #pragma vector=ADC12_VECTOR __interrupt void ADC12ISR (void) #elif defined(__GNUC__) void __attribute__ ((interrupt(ADC12_VECTOR))) #else #error Compiler not supported! #endif { switch(__even_in_range(ADC12IV,34)) { case 0: break; // case 2: break; // case 4: break; // overflow case 6: break; // case 8: break; // case 10: break; // case 12: // results[0] = ADC12MEM0; // results[1] = ADC12MEM1; // results[2] = ADC12MEM2; // results[3] = ADC12MEM3; // results[5] = ADC12MEM5; __bic_SR_register_on_exit(LPM4_bits); // BREAKPOINT HERE case 14: break; // case 16: break; // case 18: break; // case 20: break; // case 22: break; // case 24: break; // case 26: break; // case 28: break; // case 30: break; // case 32: break; // case 34: break; // default: break; } } ADC12ISR (void) Vector Vector Vector 0: 2: 4: No interrupt ADC overflow ADC timing Vector 6: ADC12IFG0 Vector 8: ADC12IFG1 Vector 10: ADC12IFG2 Vector 12: ADC12IFG3 Move results, IFG is cleared Move results, IFG is cleared Move results, IFG is cleared Move results, IFG is cleared Exit active CPU, SET Vector Vector Vector Vector Vector Vector Vector Vector Vector Vector Vector 14: 16: 18: 20: 22: 24: 26: 28: 30: 32: 34: ADC12IFG4 ADC12IFG5 ADC12IFG6 ADC12IFG7 ADC12IFG8 ADC12IFG9 ADC12IFG10 ADC12IFG11 ADC12IFG12 ADC12IFG13 ADC12IFG14 // Echo back RXed character, confirm TX buffer is ready first #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) #pragma vector=USCI_A0_VECTOR __interrupt void USCI_A0_ISR(void) #elif defined(__GNUC__) void __attribute__ ((interrupt(USCI_A0_VECTOR))) USCI_A0_ISR (void) #else #error Compiler not supported! #endif { switch(__even_in_range(UCA0IV,4)) { case 0:break; // Vector 0 - no interrupt case 2: // Vector 2 - RXIFG if(UCA1RXBUF == 'b') // RETORNO RS485 { RS485_check = 1; } if(UCA1RXBUF == 'e') // TESTE ETHERNET 53 { Ethernet_check = 1; } if(UCA1RXBUF == 'd') { P2OUT |= BIT7; } break; case 4:break; default: break; } // DESLIGA VCC_RIB // Vector 4 - TXIFG } MSP_B #include <msp430f5529.h> volatile unsigned int results[10]; example // Needs to be global in this // Otherwise, the compiler removes it // because it is not used for anything. unsigned int c; unsigned Analog_opt_A; unsigned Analog_opt_B; void Pass(void) { unsigned int a; P1OUT |= BIT4; for(a=10000; a>0; a--); while (!(UCA1IFG&UCTXIFG)); UCA1TXBUF = 'd'; // on // delay // USCI_A0 TX buffer ready? // TX -> RXed character } 54 void Fail(void) { unsigned int a; P1OUT |= BIT5; for(a=10000; a>0; a--); while (!(UCA1IFG&UCTXIFG)); UCA1TXBUF = 'd'; // on // delay // USCI_A0 TX buffer ready? // TX -> RXed character } int main(void) { WDTCTL = WDTPW+WDTHOLD; P2DIR &= ~BIT4; P2REN |= BIT4; P2OUT &= ~BIT4; // Stop watchdog timer // START TEST MSP_B // PULDOWN SET //Configuração portas P1DIR |= BIT4; P1OUT &= ~BIT4; // LED_PASS // APAGA P1DIR |= BIT5; P1OUT &= ~BIT5; // LED_FAIL // APAGA // OPTICO P4DIR |= P4DIR |= P3DIR |= P2DIR |= CONTROL BIT1; BIT2; BIT2; BIT7; // // // // CTRL CTRL CTRL CTRL A0 A1 A2 A3 BIT1; BIT3; BIT6; BIT1; // // // // CTRL CTRL CTRL CTRL B0 B1 B2 B3 P8DIR P3DIR P2DIR P3DIR |= |= |= |= //Configuração UART P3SEL = BIT3+BIT4; // P3.4,5 = USCI_A0 TXD/RXD UCA0CTL1 |= UCSWRST; // **Put state machine in reset** UCA0CTL1 |= UCSSEL_2; // SMCLK UCA0BR0 = 6; // 1MHz 9600 (see User's Guide) UCA0BR1 = 0; // 1MHz 9600 UCA0MCTL = UCBRS_0 + UCBRF_13 + UCOS16; // Modln UCBRSx=0, UCBRFx=0, UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine** UCA0IE |= UCRXIE; // Enable USCI_A0 RX interrupt __bis_SR_register(GIE); // interrupts enabled //Configuração ADC P6SEL = 0x0F; // Enable A/D channel inputs ADC12CTL0 = ADC12ON+ADC12MSC+ADC12SHT0_2; ADC12CTL1 = ADC12SHP+ADC12CONSEQ_1; ADC12MCTL5 = ADC12INCH_5; // ref+=AVcc, channel = A5 ADC12MCTL6 = ADC12INCH_6; // ref+=AVcc, channel = A6 ADC12IE = 0x08; ADC12CTL0 |= ADC12ENC; // Enable ADC12IFG.3 // Enable conversions 55 while(1) { while((P2IN & BIT4)==0); for(c=15000; c>1; c--); // inicia TESTE EM MSP_B // Delay //************ Inicio teste optico_A ***************************** //start Optico_A test => 0 P4OUT &= ~BIT1; // CTRL A0 P4OUT &= ~BIT2; // CTRL A1 P3OUT &= ~BIT2; // CTRL A2 P2OUT &= ~BIT7; // CTRL A3 for(c=15000; c>1; c--); // Leitura analog ADC12CTL0 |= ADC12SC; Analog_opt_A = ADC12MEM6; for(c=15000; c>1; c--); // Delay // Start convn - software trigger // Leitura analogica // Delay if (!(1168 < Analog_opt_A < 1490)) // Limites 1,45V ~ 1,85V => 3,3V/2 = 1,65 Fail(); for(c=15000; c>0; c--); // Delay //start Optico_A test => 1 P4OUT |= BIT1; P4OUT &= ~BIT2; P3OUT &= ~BIT2; P2OUT &= ~BIT7; // // // // for(c=15000; c>1; c--); // Delay // Leitura analog ADC12CTL0 |= ADC12SC; Analog_opt_A = ADC12MEM6; for(c=15000; c>1; c--); CTRL CTRL CTRL CTRL A0 A1 A2 A3 // Start convn - software trigger // Leitura analogica // Delay if (!(1168 < Analog_opt_A < 1490)) => 3,3V/2 = 1,65 Fail(); // Limites 1,45V ~ 1,85V for(c=15000; c>1; c--); // Delay //start Optico_A test => 2 P4OUT &= ~BIT1; P4OUT |= BIT2; P3OUT &= ~BIT2; P2OUT &= ~BIT7; // // // // for(c=15000; c>1; c--); // Delay // Leitura analog ADC12CTL0 |= ADC12SC; Analog_opt_A = ADC12MEM6; for(c=15000; c>1; c--); CTRL CTRL CTRL CTRL A0 A1 A2 A3 // Start convn - software trigger // Leitura analogica // Delay 56 if (!(1168 < Analog_opt_A < 1490)) => 3,3V/2 = 1,65 Fail(); // Limites 1,45V ~ 1,85V for(c=15000; c>1; c--); // Delay //start Optico_A test => 3 P4OUT |= BIT1; P4OUT |= BIT2; P3OUT &= ~BIT2; P2OUT &= ~BIT7; // // // // for(c=15000; c>1; c--); // Delay // Leitura analog ADC12CTL0 |= ADC12SC; Analog_opt_A = ADC12MEM6; for(c=15000; c>1; c--); CTRL CTRL CTRL CTRL A0 A1 A2 A3 // Start convn - software trigger // Leitura analogica // Delay if (!(1168 < Analog_opt_A < 1490)) => 3,3V/2 = 1,65 Fail(); // Limites 1,45V ~ 1,85V for(c=15000; c>1; c--); // Delay //start Optico_A test => 4 P4OUT &= ~BIT1; P4OUT &= ~BIT2; P3OUT |= BIT2; P2OUT &= ~BIT7; // // // // for(c=15000; c>1; c--); // Delay // Leitura analog ADC12CTL0 |= ADC12SC; Analog_opt_A = ADC12MEM6; for(c=15000; c>1; c--); if (!(1168 < Analog_opt_A < 1490)) 3,3V/2 = 1,65 Fail(); CTRL CTRL CTRL CTRL A0 A1 A2 A3 // Start convn - software trigger // Leitura analogica // Delay // Limites 1,45V ~ 1,85V => for(c=15000; c>1; c--); // Delay //start Optico_A test => 5 P4OUT |= BIT1; P4OUT &= ~BIT2; P3OUT |= BIT2; P2OUT &= ~BIT7; // // // // for(c=15000; c>1; c--); // Delay // Leitura analog ADC12CTL0 |= ADC12SC; Analog_opt_A = ADC12MEM6; for(c=15000; c>1; c--); CTRL CTRL CTRL CTRL A0 A1 A2 A3 // Start convn - software trigger // Leitura analogica // Delay 57 if (!(1168 < Analog_opt_A < 1490)) 3,3V/2 = 1,65 Fail(); // Limites 1,45V ~ 1,85V => for(c=15000; c>1; c--); // Delay //start Optico_A test => 6 P4OUT &= ~BIT1; P4OUT |= BIT2; P3OUT |= BIT2; P2OUT &= ~BIT7; // // // // for(c=15000; c>1; c--); // Delay // Leitura analog ADC12CTL0 |= ADC12SC; // Start convn - software Analog_opt_A = ADC12MEM6; for(c=15000; c>1; c--); // Leitura analogica // Delay CTRL CTRL CTRL CTRL A0 A1 A2 A3 trigger if (!(1168 < Analog_opt_A < 1490)) 3,3V/2 = 1,65 Fail(); // Limites 1,45V ~ 1,85V => for(c=15000; c>1; c--); // Delay //start Optico_A test => 7 P4OUT |= BIT1; P4OUT |= BIT2; P3OUT |= BIT2; P2OUT &= ~BIT7; // // // // for(c=15000; c>1; c--); // Delay // Leitura analog ADC12CTL0 |= ADC12SC; // Start convn - software Analog_opt_A = ADC12MEM6; for(c=15000; c>1; c--); // Leitura analogica // Delay CTRL CTRL CTRL CTRL A0 A1 A2 A3 trigger if (!(1168 < Analog_opt_A < 1490)) 3,3V/2 = 1,65 Fail(); // Limites 1,45V ~ 1,85V => for(c=15000; c>1; c--); // Delay //start Optico_A test => 8 P4OUT &= ~BIT1; P4OUT &= ~BIT2; P3OUT &= ~BIT2; P2OUT |= BIT7; // // // // for(c=15000; c>1; c--); // Delay // Leitura analog ADC12CTL0 |= ADC12SC; CTRL CTRL CTRL CTRL A0 A1 A2 A3 // Start convn - software trigger 58 Analog_opt_A = ADC12MEM6; for(c=15000; c>1; c--); if (!(1168 < Analog_opt_A < 1490)) 3,3V/2 = 1,65 Fail(); // Leitura analogica // Delay // Limites 1,45V ~ 1,85V => for(c=15000; c>1; c--); // Delay //start Optico_A test => 9 P4OUT |= BIT1; P4OUT &= ~BIT2; P3OUT &= ~BIT2; P2OUT |= BIT7; // // // // for(c=15000; c>1; c--); // Delay // Leitura analog ADC12CTL0 |= ADC12SC; Analog_opt_A = ADC12MEM6; for(c=15000; c>1; c--); if (!(1168 < Analog_opt_A < 1490)) 3,3V/2 = 1,65 Fail(); CTRL CTRL CTRL CTRL A0 A1 A2 A3 // Start convn - software trigger // Leitura analogica // Delay // Limites 1,45V ~ 1,85V => for(c=15000; c>1; c--); // Delay //start Optico_A test => 10 P4OUT &= ~BIT1; P4OUT |= BIT2; P3OUT &= ~BIT2; P2OUT |= BIT7; // // // // for(c=15000; c>1; c--); // Delay // Leitura analog ADC12CTL0 |= ADC12SC; Analog_opt_A = ADC12MEM6; for(c=15000; c>1; c--); if (!(1168 < Analog_opt_A < 1490)) 3,3V/2 = 1,65 Fail(); CTRL CTRL CTRL CTRL A0 A1 A2 A3 // Start convn - software trigger // Leitura analogica // Delay // Limites 1,45V ~ 1,85V => for(c=15000; c>1; c--); // Delay //start Optico_A test => 11 P4OUT |= BIT1; P4OUT |= BIT2; P3OUT &= ~BIT2; P2OUT |= BIT7; // // // // for(c=15000; c>1; c--); // Delay // Leitura analog ADC12CTL0 |= ADC12SC; CTRL CTRL CTRL CTRL A0 A1 A2 A3 // Start convn - software trigger 59 Analog_opt_A = ADC12MEM6; for(c=15000; c>1; c--); if (!(1168 < Analog_opt_A < 1490)) 3,3V/2 = 1,65 Fail(); // Leitura analogica // Delay // Limites 1,45V ~ 1,85V => for(c=15000; c>1; c--); // Delay //start Optico_A test => 12 P4OUT &= ~BIT1; P4OUT &= ~BIT2; P3OUT |= BIT2; P2OUT |= BIT7; // // // // for(c=15000; c>1; c--); // Delay // Leitura analog ADC12CTL0 |= ADC12SC; Analog_opt_A = ADC12MEM6; for(c=15000; c>1; c--); if (!(1168 < Analog_opt_A < 1490)) 3,3V/2 = 1,65 Fail(); for(c=15000; c>1; c--); CTRL CTRL CTRL CTRL A0 A1 A2 A3 // Start convn - software trigger // Leitura analogica // Delay // Limites 1,45V ~ 1,85V => // Delay //***************** Fim do teste Optico_A ************************* //************ Inicio teste optico_B ***************************** //start Optico_B test => 0 P8OUT &= ~BIT1; // CTRL B0 P3OUT &= ~BIT3; // CTRL B1 P2OUT &= ~BIT6; // CTRL B2 P3OUT &= ~BIT1; // CTRL B3 for(c=15000; c>1; c--); // Leitura analog ADC12CTL0 |= ADC12SC; Analog_opt_B = ADC12MEM5; for(c=15000; c>1; c--); if (!(1168 < Analog_opt_B < 1490)) 3,3V/2 = 1,65 Fail(); // Delay // Start convn - software trigger // Leitura analogica // Delay // Limites 1,45V ~ 1,85V => for(c=15000; c>1; c--); // Delay //start Optico_B test => 1 P8OUT |= BIT1; P3OUT &= ~BIT3; P2OUT &= ~BIT6; P3OUT &= ~BIT1; // // // // CTRL CTRL CTRL CTRL B0 B1 B2 B3 60 for(c=15000; c>1; c--); // Leitura analog ADC12CTL0 |= ADC12SC; Analog_opt_B = ADC12MEM5; for(c=15000; c>1; c--); if (!(1168 < Analog_opt_B < 1490)) 3,3V/2 = 1,65 Fail(); // Delay // Start convn - software trigger // Leitura analogica // Delay // Limites 1,45V ~ 1,85V => for(c=15000; c>1; c--); // Delay //start Optico_B test => 2 P8OUT &= ~BIT1; P3OUT |= BIT3; P2OUT &= ~BIT6; P3OUT &= ~BIT1; // // // // for(c=15000; c>1; c--); // Delay // Leitura analog ADC12CTL0 |= ADC12SC; // Start convn - software Analog_opt_B = ADC12MEM5; for(c=15000; c>1; c--); // Leitura analogica // Delay CTRL CTRL CTRL CTRL B0 B1 B2 B3 trigger if (!(1168 < Analog_opt_B < 1490)) 3,3V/2 = 1,65 Fail(); // Limites 1,45V ~ 1,85V => for(c=15000; c>1; c--); // Delay //start Optico_B test => 3 P8OUT |= BIT1; P3OUT |= BIT3; P2OUT &= ~BIT6; P3OUT &= ~BIT1; // // // // for(c=15000; c>1; c--); // Delay // Leitura analog ADC12CTL0 |= ADC12SC; Analog_opt_B = ADC12MEM5; for(c=15000; c>1; c--); if (!(1168 < Analog_opt_B < 1490)) 3,3V/2 = 1,65 Fail(); CTRL CTRL CTRL CTRL B0 B1 B2 B3 // Start convn - software trigger // Leitura analogica // Delay // Limites 1,45V ~ 1,85V => for(c=15000; c>1; c--); // Delay //start Optico_B test => 4 P8OUT &= ~BIT1; P3OUT &= ~BIT3; P2OUT |= BIT6; P3OUT &= ~BIT1; // // // // CTRL CTRL CTRL CTRL B0 B1 B2 B3 61 for(c=15000; c>1; c--); // Leitura analog ADC12CTL0 |= ADC12SC; Analog_opt_B = ADC12MEM5; for(c=15000; c>1; c--); if (!(1168 < Analog_opt_B < 1490)) 3,3V/2 = 1,65 Fail(); // Delay // Start convn - software trigger // Leitura analogica // Delay // Limites 1,45V ~ 1,85V => for(c=15000; c>1; c--); // Delay //start Optico_B test => 5 P8OUT |= BIT1; P3OUT &= ~BIT3; P2OUT |= BIT6; P3OUT &= ~BIT1; // // // // for(c=15000; c>1; c--); // Delay // Leitura analog ADC12CTL0 |= ADC12SC; Analog_opt_B = ADC12MEM5; for(c=15000; c>1; c--); if (!(1168 < Analog_opt_B < 1490)) 3,3V/2 = 1,65 Fail(); CTRL CTRL CTRL CTRL B0 B1 B2 B3 // Start convn - software trigger // Leitura analogica // Delay // Limites 1,45V ~ 1,85V => for(c=15000; c>1; c--); // Delay //start Optico_B test => 6 P8OUT &= ~BIT1; P3OUT |= BIT3; P2OUT |= BIT6; P3OUT &= ~BIT1; // // // // for(c=15000; c>1; c--); // Delay // Leitura analog ADC12CTL0 |= ADC12SC; Analog_opt_B = ADC12MEM5; for(c=15000; c>1; c--); if (!(1168 < Analog_opt_B < 1490)) 3,3V/2 = 1,65 Fail(); CTRL CTRL CTRL CTRL B0 B1 B2 B3 // Start convn - software trigger // Leitura analogica // Delay // Limites 1,45V ~ 1,85V => for(c=15000; c>1; c--); // Delay //start Optico_B test => 7 P8OUT |= BIT1; P3OUT |= BIT3; P2OUT |= BIT6; P3OUT &= ~BIT1; // // // // CTRL CTRL CTRL CTRL B0 B1 B2 B3 62 for(c=15000; c>1; c--); // Delay // Leitura analog ADC12CTL0 |= ADC12SC; Analog_opt_B = ADC12MEM5; for(c=15000; c>1; c--); // Start convn - software trigger // Leitura analogica // Delay if (!(1168 < Analog_opt_B < 1490)) 3,3V/2 = 1,65 Fail(); // Limites 1,45V ~ 1,85V => for(c=15000; c>1; c--); // Delay //start Optico_B test => 8 P8OUT &= ~BIT1; P3OUT &= ~BIT3; P2OUT &= ~BIT6; P3OUT |= BIT1; // // // // for(c=15000; c>1; c--); // Delay // Leitura analog ADC12CTL0 |= ADC12SC; Analog_opt_B = ADC12MEM5; for(c=15000; c>1; c--); CTRL CTRL CTRL CTRL B0 B1 B2 B3 // Start convn - software trigger // Leitura analogica // Delay if (!(1168 < Analog_opt_B < 1490)) 3,3V/2 = 1,65 Fail(); // Limites 1,45V ~ 1,85V => for(c=15000; c>1; c--); // Delay //start Optico_B test => 9 P8OUT |= BIT1; P3OUT &= ~BIT3; P2OUT &= ~BIT6; P3OUT |= BIT1; // // // // for(c=15000; c>1; c--); // Delay // Leitura analog ADC12CTL0 |= ADC12SC; Analog_opt_B = ADC12MEM5; for(c=15000; c>1; c--); if (!(1168 < Analog_opt_B < 1490)) 3,3V/2 = 1,65 Fail(); CTRL CTRL CTRL CTRL B0 B1 B2 B3 // Start convn - software trigger // Leitura analogica // Delay // Limites 1,45V ~ 1,85V => for(c=15000; c>1; c--); // Delay //start Optico_B test => 10 P8OUT &= ~BIT1; P3OUT |= BIT3; P2OUT &= ~BIT6; P3OUT |= BIT1; // // // // CTRL CTRL CTRL CTRL B0 B1 B2 B3 63 for(c=15000; c>1; c--); // Leitura analog ADC12CTL0 |= ADC12SC; Analog_opt_B = ADC12MEM5; for(c=15000; c>1; c--); if (!(1168 < Analog_opt_B < 1490)) 3,3V/2 = 1,65 Fail(); // Delay // Start convn - software trigger // Leitura analogica // Delay // Limites 1,45V ~ 1,85V => for(c=15000; c>1; c--); // Delay //start Optico_B test => 11 P8OUT |= BIT1; P3OUT |= BIT3; P2OUT &= ~BIT6; P3OUT |= BIT1; // // // // for(c=15000; c>1; c--); // Delay // Leitura analog ADC12CTL0 |= ADC12SC; Analog_opt_B = ADC12MEM5; for(c=15000; c>1; c--); if (!(1168 < Analog_opt_B < 1490)) 3,3V/2 = 1,65 Fail(); CTRL CTRL CTRL CTRL B0 B1 B2 B3 // Start convn - software trigger // Leitura analogica // Delay // Limites 1,45V ~ 1,85V => for(c=15000; c>1; c--); // Delay //start Optico_B test => 12 P8OUT &= ~BIT1; P3OUT &= ~BIT3; P2OUT |= BIT6; P3OUT |= BIT1; // // // // for(c=15000; c>1; c--); // Delay // Leitura analog ADC12CTL0 |= ADC12SC; Analog_opt_B = ADC12MEM5; for(c=15000; c>1; c--); if (!(1168 < Analog_opt_B < 1490)) 3,3V/2 = 1,65 Fail(); for(c=15000; c>1; c--); CTRL CTRL CTRL CTRL B0 B1 B2 B3 // Start convn - software trigger // Leitura analogica // Delay // Limites 1,45V ~ 1,85V => // Delay //***************** Fim do teste Optico_B ************************* Pass(); } 64 } // Echo back RXed character, confirm TX buffer is ready first #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) #pragma vector=USCI_A0_VECTOR __interrupt void USCI_A0_ISR(void) #elif defined(__GNUC__) void __attribute__ ((interrupt(USCI_A0_VECTOR))) USCI_A0_ISR (void) #else #error Compiler not supported! #endif { switch(__even_in_range(UCA0IV,4)) { case 0:break; // Vector 0 - no interrupt case 2: // Vector 2 - RXIFG if(UCA1RXBUF == 'a') // RS485 TEST { while (!(UCA1IFG&UCTXIFG)); // USCI_A0 TX buffer ready? UCA1TXBUF = 'b'; } if(UCA1RXBUF == 'p') P1OUT |= BIT4; // LED_PASS ON if(UCA1RXBUF == 'f') break; case 4:break; default: break; } P1OUT |= BIT5; // FAIL_PASS ON // Vector 4 - TXIFG } #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) #pragma vector=ADC12_VECTOR __interrupt void ADC12ISR (void) #elif defined(__GNUC__) void __attribute__ ((interrupt(ADC12_VECTOR))) ADC12ISR (void) #else #error Compiler not supported! #endif { switch(__even_in_range(ADC12IV,34)) { case 0: break; // Vector 0: No interrupt case 2: break; // Vector 2: ADC overflow case 4: break; // Vector 4: ADC timing overflow case 6: break; // Vector 6: ADC12IFG0 case 8: break; // Vector 8: ADC12IFG1 case 10: break; // Vector 10: ADC12IFG2 case 12: // Vector 12: ADC12IFG3 results[5] = ADC12MEM5; // ANALOG OPTCO_B results[6] = ADC12MEM6; // ANALOG OPTCO_A __bic_SR_register_on_exit(LPM4_bits); // Exit active CPU, SET BREAKPOINT HERE case 14: break; // Vector 14: ADC12IFG4 case 16: break; // Vector 16: ADC12IFG5 case 18: break; // Vector 18: ADC12IFG6 65 case 20: case 22: case 24: case 26: case 28: case 30: case 32: case 34: default: } break; break; break; break; break; break; break; break; break; // // // // // // // // Vector Vector Vector Vector Vector Vector Vector Vector 20: 22: 24: 26: 28: 30: 32: 34: ADC12IFG7 ADC12IFG8 ADC12IFG9 ADC12IFG10 ADC12IFG11 ADC12IFG12 ADC12IFG13 ADC12IFG14 } 66