PROGRAMAÇÃO DE MICROCONTROLADORES
|
|
|
- Sandra Brás Bastos
- 9 Há anos
- Visualizações:
Transcrição
1 UNIVERSIDADE DO PLANALTO CATARINENSE DEPARTAMENTO DE CIÊNCIAS EXATAS E TECNOLÓGICAS CURSO DE INFORMÁTICA (BACHARELADO) PROGRAMAÇÃO DE MICROCONTROLADORES ÉVERTON ROSA GOULART LAGES, DEZEMBRO DE 2005
2 UNIVERSIDADE DO PLANALTO CATARINENSE DEPARTAMENTO DE CIÊNCIAS EXATAS E TECNOLÓGICAS CURSO DE INFORMÁTICA (BACHARELADO) PROGRAMAÇÃO DE MICROCONTROLADORES Relatório do Trabalho de Conclusão de Curso, submetido à Universidade do Planalto Catarinense, para obtenção dos créditos de disciplina com nome equivalente no curso de Informática - Bacharelado. Orientador: Prof. Carlos Roberto da Silva Filho, M.Eng. LAGES, DEZEMBRO DE 2005
3 iii PROGRAMAÇÃO DE MICROCONTROLADORES ÉVERTON ROSA GOULART ESTE RELATÓRIO, DO TRABALHO DE CONCLUSÃO DE CURSO, FOI JULGADO ADEQUADO PARA OBTENÇÃO DOS CRÉDITOS DA DISCIPLINA DE TRABALHO DE CONCLUSÃO DE CURSO DO VIII SEMESTRE, OBRIGATÓRIA PARA OBTENÇÃO DO TÍTULO DE: BACHAREL EM INFORMÁTICA Prof. Carlos Roberto da Silva Filho, M.Eng. Orientador BANCA EXAMINADORA: Marconi Januário, Esp. GRUCAO/UFSC Luciano Campos Rodrigues, M.Sc. SENAI Lages Prof. Angelo Augusto Frozza, Esp. Supervisor de TCC Prof. Wilson Castello Branco Neto, M. Eng. Coordenador de Curso Lages, 15 de Dezembro de 2005
4 iv Dedico este trabalho aos meus pais José Rodrigues Goulart e Mailza Maria Rosa Goulart, a meus irmãos Éder Rosa Goulart e Edvar José Rosa Goulart e a minha namorada Tatiane Aparecida de Oliveira.
5 Agradeço a DEUS pela oportunidade que me proporcionou, além de todos que, de alguma forma contribuíram para minha formação profissional e pessoal, sejam parentes, alunos, professores, empresas ou amigos. v
6 vi Faça o que sempre fez, e receberá o que sempre recebeu. (Autor desconhecido)
7 vii SUMÁRIO LISTA DE ILUSTRAÇÕES... X LISTA DE SIGLAS... XIII RESUMO... XIV ABSTRACT... XV 1 INTRODUÇÃO Apresentação Descrição do problema Justificativa Objetivo geral Objetivos específicos Metodologia MICROCONTROLADORES Diferenciação entre microcontroladores e microprocessadores Arquitetura básica de microcontroladores Unidade central de processamento (CPU) Memória Barramento (Bus) Comunicação Portas de entrada e saída paralela Gerador de clock Conversor digital/analógico e analógico/digital Watchdog e detector de brown-out Programa (Software) Estrutura interna de microcontroladores Famílias de microcontroladores Encapsulamentos Microcontroladores de diferentes fabricantes Microcontroladores Intel Microcontroladores PIC - Microchip Microcontroladores Motorola M68HC Especificação do microcontrolador PIC16F877A Descrição da pinagem Estrutura interna... 28
8 viii Organização dos bancos de memória Registradores especiais Módulos internos Instruções de programa Conclusão AQUISIÇÃO DE SINAIS Sinais analógicos Sinais digitais Conversores analógico/digital Conclusão ROTINAS DE GRAVAÇÃO DE MICROCONTROLADORES PIC Software de gravação MPLab Conclusão ELEMENTOS DE HARDWARE UTILIZADOS Módulo central do microcontrolador Módulo fonte de alimentação Módulo teclado matricial Módulo de saída digital com display de 7 segmentos Módulo de saída digital com display de cristal líquido LCD Módulo de sinal analógico Módulo de comunicação serial RS Conclusão COMUNICAÇÃO SERIAL RS Protocolos seriais Transmissão assíncrona x transmissão síncrona Padrão de interface serial RS232 (EIA232) Pinagem no padrão RS Temporização dos sinais Conversores de nível TTL RS Conclusão IMPLEMENTAÇÃO DOS ALGORITMOS Rotinas básicas para sistemas com microcontroladores PIC Algoritmo de controle do teclado matricial Algoritmo de controle dos displays de 7 segmentos Algoritmo de controle do display LCD Algoritmo de controle de entrada analógica Algoritmo de controle da comunicação serial RS Conclusão CONSIDERAÇÕES FINAIS REFERÊNCIAS BIBLIOGRÁFICAS APÊNDICE A APÊNDICE B
9 ix
10 x LISTA DE ILUSTRAÇÕES FIGURA 1 - Diagrama básico de um sistema microcontrolado... 8 FIGURA 2 - Diagrama básico de microcontroladores... 9 FIGURA 3 - Arquiteturas Von Newman e Harvard FIGURA 4 - Encapsulamento DIP FIGURA 5 - Encapsulamento MQFQ FIGURA 6 - Encapsulamento tipo PLCC FIGURA 7 - Encapsulamento tipo S FIGURA 8 - Arquitetura interna do 8051 Intel FIGURA 9 - Arquitetura interna do PIC16F FIGURA 10 - Pinagem PDIP do PIC16F877A FIGURA 11 - Pinagem PLCC do PIC16F877A FIGURA 12 - Pinagem QFP do PIC16F877A FIGURA 13 - Arquitetura interna do PIC16F877A FIGURA 14 - Mapa da memória de programa do PIC16F877A FIGURA 15 - Mapa dos arquivos de registradores do PIC16F877A FIGURA 16 - Justificação do resultado analógico/digital FIGURA 17 - Sinal analógico FIGURA 18 - Sinal analógico discretizado FIGURA 19 - Sinal digital FIGURA 20 - Gráfico da conversão de analógico para digital FIGURA 21 - Justificação dos bits nos registradores ADRESL e ADRESH FIGURA 22 - Diagrama em blocos de conversor A/D por aproximação sucessiva FIGURA 23 - Gravador PICSTART Plus FIGURA 24 - Tela inicial do MPLab versão FIGURA 25 - Seleção de dispositivo FIGURA 26 - Adiciona arquivos ao projeto FIGURA 27 - Compila arquivo assembly FIGURA 28 - Andamento da compilação do arquivo assembly FIGURA 29 - Seleção do gravador FIGURA 30 - Habilitação do programador FIGURA 31 - Botões de comando do programador FIGURA 32 - Interligação cristal oscilador FIGURA 33 - Módulo central do microcontrolador FIGURA 34 - Protótipo final... 75
11 xi FIGURA 35 - Módulo fonte de alimentação 5 Volts FIGURA 36 - Interligação de teclado com ligação individuais FIGURA 37 - Efeito debouce em teclados FIGURA 38 - Interligação de teclado matricial FIGURA 39 - Teclado matricial utilizado FIGURA 40 - Display de 7 segmentos FIGURA 41 - Interligação de displays de 7 segmentos FIGURA 42 - Display de cristal líquido LCD FIGURA 43 - Interligação do display LCD FIGURA 44 - Interligação do módulo de entrada analógica FIGURA 45 - Interligação do circuito serial MAX FIGURA 46 - Formato quadro serial 8 bits FIGURA 47 - Transição de clock serial FIGURA 48 - Disposição bits comunicação serial FIGURA 49 - Convenção sinais comuns em comunicação serial FIGURA 50 - Níveis de tensão na transmissão RS FIGURA 51 - Pinagem e sinais para conector DB9 DCE FIGURA 52 - Ligação do cabo null modem FIGURA 53 - Funcionamento da varredura do teclado matricial FIGURA 54 - Acionamento de display 7 segmentos FIGURA 55 - Acionamento do display de cristal líquido QUADRO 1 - Famílias de microcontroladores QUADRO 2 - Membros da família Intel QUADRO 3 - Membros da família PIC QUADRO 4 - Membros da família HC QUADRO 5 - Disposição dos bits no registrador STATUS QUADRO 6 - Descrição bits RP1 e RP QUADRO 7 - Disposição dos bits no registrador PORTA QUADRO 8 - Disposição dos bits no registrador PORTB QUADRO 9 - Disposição dos bits no registrador PORTC QUADRO 10 - Disposição dos bits no registrador PORTD QUADRO 11 - Disposição dos bits no registrador PORTE QUADRO 12 - Disposição dos bits no registrador INTCON QUADRO 13 - Disposição dos bits no registrado RCSTA QUADRO 14 - Disposição dos bits do registrador ADCON QUADRO 15 - Seleção de clock para ADCON QUADRO 16 - Seleção de canal analógico ADCON QUADRO 17 - Disposição dos bits no registrador OPTION_REG QUADRO 18 - Configuração do prescaler - PS0, PS1 e PS QUADRO 19 - Disposição dos bits do registrador TRISA QUADRO 20 - Disposição dos bits do registrador TRISB QUADRO 21 - Disposição dos bits do registrador TRISC QUADRO 22 - Disposição dos bits do registrador TRISD QUADRO 23 - Disposição dos bits do registrador TRISE... 50
12 QUADRO 24 - Disposição dos bits no registrador TXSTA QUADRO 25 - Fórmulas de cálculo do baud rate QUADRO 26 - Disposição dos bits do registrador ADCON QUADRO 27 - Configuração de entradas analógicas QUADRO 28 - Lista de instruções orientadas a bytes QUADRO 29 - Lista de instruções orientadas a bits QUADRO 30 - Lista de instruções com operadores literais QUADRO 31 - Pinagem de módulos displays LCD QUADRO 32 - Controle de inicialização de LCD QUADRO 33 - Endereçamento caracteres no display LCD QUADRO 34 - Caracteres pré-existentes em módulos de display LCD QUADRO 35 - Criação de caracter personalizado QUADRO 36 - Instruções mais utilizadas em módulos de display LCD QUADRO 37 - Descrição das funções dos bits de comunicação serial RS QUADRO 38 - Disposição dos bits do registrador PIR QUADRO 39 - Disposição dos bits do registrador PIR QUADRO 40 - Disposição dos bits do registrador T1CON QUADRO 41 - Seleção do preescaler para módulo Timer QUADRO 42 - Disposição dos bits do registrador T2CON QUADRO 43 - Seleção Postescaler para módulo Timer QUADRO 44 - Seleção Prescaler Timer QUADRO 45 - Disposição dos bits do registrador CCP1CON QUADRO 46 - Modo de funcionamento do Módulo CCP QUADRO 47 - Disposição dos bits do registrador CCP2CON QUADRO 48 - Modo de funcionamento do Módulo CCP QUADRO 49 - Disposição dos bits no registrador PIE QUADRO 50 - Disposição dos bits do registrador PIE QUADRO 51 - Disposição dos bits no registrador PCON QUADRO 52 - Disposição dos bits do registrador EECON xii
13 xiii LISTA DE SIGLAS A/D BCD CI CISC CPU CLP DVD D/A IR LCD PC PC PID RAM RISC RF ROM SIM SMD SOC USB - Analógico / Digital - Binary Converter to Decimal - Conversor Binário-Decimal - Circuito Integrado - Complex Instruction Set Computer - Conjunto de Instruções Complexo - Central Processing Unit - Unidade Central de Processamento - Controlador Lógico Programável - Digital Vídeo Disc Disco de Vídeo Digital - Digital / Analógico - Infra Red - Infra-vermelho - Liquid CrystalDisplay- Display de Cristal Líquido - Program Counter - Contador de Programa - Personal Computer - Computador Pessoal - Proporcional Integral Derivativo - Random Access Memory Memória de Acesso Randômico - Reduce Instruction Set Computer Conjunto de Instruções Reduzido - Rádio Freqüência - Read Only Memory Memória Somente Leitura - System Integration Module Módulo de Integração do Sistema - Surface Montage Montagem Sobre Superfície - Systems-On-Chip Sistemas Embutidos em Chip - Universal Serial Bus Barramento Serial Universal
14 xiv RESUMO O trabalho consiste em demonstrar como é o funcionamento interno e como deve ser realizada a programação e gravação de microcontroladores, dando maior ênfase aos microcontroladores da série PIC. Demonstra todos os registradores necessários para realização do controle dos processos sugeridos. Para exemplificar os comandos e rotinas necessárias para isso, implementa em linguagem assembly um sistema de controle de escrita em displays de 7 segmentos e de cristal líquido, a partir de operações aritméticas, e demonstra como realizar o controle de aquisição de sinais digitais e analógicos com o uso de microcontroladores. Como resultado apresenta módulos eletrônicos responsáveis por cada processo controlado, que interligados resultam num protótipo de um sistema microcontrolado. Sugere que através dos estudos teóricos e da produção do protótipo, tem-se mais uma ferramenta didática para auxiliar nas apresentações sobre sistemas eletrônicos embarcados. Palavras-chave: microcontrolador, registrador, protótipo, sistema.
15 xv ABSTRACT The work consists of demonstrating as it is the internal function and as it must be carried through the programming and writing of microcontrollers, giving bigger emphasis to the microcontrollers of series PIC. It demonstrates to all the necessary recorders for accomplishment of the control of the suggested processes. To give example the commands and necessary routines for this, it implements in language assembly a system of control of writing in displays of 7 segments and liquid crystal, from arithmetical operations, and demonstrates as to carry through the control of acquisition of digital and analogical signals with the use of microcontrollers. As result presents responsible electronic modules for each controlled process, that linked result in an archetype of a microcontrolled system. It suggests that through the theoretical studies and of the production of the prototype, it is had plus a didactic tool to assist in the presentations on embedded electronic systems. Keywords: microcontroller, register, prototype, system.
16 1 1 INTRODUÇÃO 1.1 Apresentação Com o desenvolvimento da microeletrônica, aumenta a escala de integração nos circuitos a cada dia. Com base nisso, pode-se inserir sistemas completos em um único chip ou circuito integrado (CI). Esses sistemas são designados systems-on-chip (SOC). Microcontroladores são SOCs de uso geral, com unidade de processamento, memória, conversores digital/analógicos e várias outras características, todas embutidas em um único chip. Devido ao tamanho reduzido, baixo consumo, baixo custo e alta eficiência, estes microcontroladores estão cada vez mais inseridos no cotidiano das pessoas, possibilitando a chamada Era da Computação Invisível. Este nome vem do fato de que a maioria dos equipamentos modernos fazem uso de microcontroladores, sem que o usuário perceba. Atualmente existem vários destes dispositivos em operação nos mais variados setores, como: Eletrodoméstico: televisores, fornos microondas, telefones celulares, telefones sem fio, controles remotos; Segurança: sistemas de reconhecimento para controle de acesso restrito, alarmes, portões eletrônicos, radares, localizadores; Informática: estabilizadores, nobreaks, impressoras, câmeras digitais, sistemas de monitoramento on-line, controladores de mouse, joysticks, modems;
17 2 Automobilística: injeção eletrônica, geometria, balanceamento, air-bag, computadores de bordo, alarmes; Medicina: sistemas de monitoração de pacientes, instrumentos de medição de pressão arterial, temperatura do corpo, dispositivos usados na recuperação de pacientes, próteses, equipamentos para diagnósticos diversos; Indústria: controle de robôs, sistemas de controle de processos, controle e posicionamento de motores e peças, instrumentos de medição e análise. Visando projetar unidades centrais de processamento (CPU) dedicadas a cada sistema, surgiu e cresceu o mercado de microcontroladores em todo mundo. Deste modo, o presente trabalho visa demonstrar as principais características funcionais e a arquitetura dos microcontroladores, bem como o estudo da programação para implementação de sistemas de controle de processos utilizando microcontroladores. O trabalho está dividido em capítulos, sendo que o capítulo 2 visa apresentar primeiramente a arquitetura e características básicas de microcontroladores, bem como algumas diferenças entre microcontroladores de fabricantes diferentes. São abordados também neste capítulo as especificações do chip PIC16F877A, objeto de estudo deste trabalho, além de seu conjunto de instruções, registradores especiais e interrupções. No capítulo 3 é estudada a aquisição de sinais externos para controle nos microcontroladores, passando por sinais digitais e analógicos e conversores analógico/digitais. O capítulo 4 dedica-se ao processo de gravação de microcontroladores da família PIC, através do software MPLab da Microchip. Em seguida, no capítulo 5, são abordadas as características e especificações dos componentes de hardware que são utilizados nos protótipos, sendo eles: display de 7 segmentos, display de cristal líquido, teclado matricial e simulador de transmissores analógicos. Para completar este capítulo, são projetados e construídos os protótipos, utilizando os componentes citados anteriormente e apresentando o esquema eletrônico da montagem dos mesmos. Os protótipos implementados são: aquisição de sinais digitais e analógicos para escrita em displays de 7 segmentos e cristal líquido, além de
18 3 comunicação do microcontrolador com PC através da porta de comunicação RS-232. No capítulo 6, é realizado um estudo somente a respeito da comunicação serial dos microcontroladores com o mundo externo através do padrão RS-232, apresentando o seu uso, características e especificações, descrição de componentes eletrônicos necessários para esta comunicação, além de protótipo e testes dos mesmos. 1.2 Descrição do problema Os microcontroladores podem controlar diversos sistemas e processos, desde eletrodomésticos até controle de processos industriais. Para controlar um processo é preciso saber como adquirir os sinais do meio externo, tratá-los e retornar tais informações. Deste modo, o problema tratado no trabalho consiste em como realizar a aquisição de sinais do mundo externo para inserção num microcontrolador e como o mesmo deve processá-lo e disponibilizá-lo ao meio externo. 1.3 Justificativa O uso de microcontroladores está sacramentado no mundo moderno pela maciça aplicação do mesmo nos mais variados dispositivos e equipamentos. Como exemplo, existem vários controles industriais realizados por microcontroladores, como instrumentos de medição, que recebem os sinais físicos do processo e através de um tratamento microcontrolado, repassam as variáveis através de um sinal padrão para equipamentos que estão a um nível mais alto de controle. Num controle de temperatura, a temperatura é capturada por um sensor resistivo, que por sua vez repassa uma informação na forma de resistência para um transmissor, através de um sistema eletrônico. Este transmissor gera uma informação proporcional a resistência de entrada, transformando a temperatura lida em sinal corrente elétrica (padrão 4 a 20 ma). O transmissor, quando mais elaborado, pode ainda disponibilizar saída em vários protocolos de comunicação, como: serial RS-485, RS-232, Profibus, entre outros. Na indústria, tem-se vários exemplos de sistemas microcontrolados
19 4 dedicados, pode-se citar: Válvulas de controle utilizam-se de posicionadores eletropneumáticos com microcontroles internos, implementados em microcontroladores dedicados a cada fabricante; Em laboratórios várias análises são feitas diariamente utilizando sistemas microcontrolados de alta precisão. Na indústria papeleira, por exemplo, são feitos testes de tração, umidade, gramatura no papel, entre outros; Vários instrumentos de campo na instrumentação são programados com microcontroladores, onde permitem ao usuário visualizar ou alterar os parâmetros do instrumento, através de displays e comunicação digital; Na indústria cervejeira o controle de processo de qualidade de vedação da tampa metálica é totalmente executado por um sistema microcontrolado independente dos controladores lógico programáveis (CLPs) da fábrica, onde através de um sinal sonoro de alta freqüência, um conversor analógico-digital (A/D), reconhece se a tampa está bem colocada ou não, mandando um sinal de saída digital ao controle da máquina, que por sua vez toma as devidas atitudes conforme programa da máquina; Controladores Proporcional Integral Derivativo (PID) controlam uma variável conforme set-point definido, atuando em vários elementos finais de controle através de algoritmo microcontrolado. Como pode-se verificar, os sinais de processo variam muito de acordo com a indústria, porém mantém algumas características comuns, como entrada de valores com teclados, interface com operação através de displays LCD, ou displays de 7 segmentos, leitura de variáveis analógicas utilizando conversores analógico-digitais (A/D), geração de saídas analógicas utilizando conversores digital-analógico (D/A), aquisição de variáveis e configuração de instrumentos através de protocolos de comunicação. Neste trabalho, são estudadas as interfaces e como fazer a aquisição de sinais do mundo externo, para implementação em microcontroladores.
20 5 1.4 Objetivo geral Implementar um sistema de controle de escrita em display de 7 segmentos e de cristal líquido, a partir de operações aritméticas, bem como o controle de aquisição de sinais digitais e analógicos com o uso de microcontroladores. 1.5 Objetivos específicos Os objetivos específicos do trabalho são: Especificar as vantagens de se utilizar o microcontrolador escolhido, bem como seus comandos em linguagem assembly; Especificar o hardware a ser implementado no sistema de controle, isto é, o hardware necessário para escrita num display (7 segmentos, cristal líquido), monitoramento de teclas (teclado matricial), aquisição de sinais digitais e analógicos e comunicação serial; Apresentar o fluxograma dos programas de controle e implementá-los em linguagem assembly. 1.6 Metodologia A metodologia adotada foi composta de várias etapas, desde um levantamento bibliográfico dos componentes e dispositivos utilizados em sistemas microcontrolados, especificando suas características, formas de utilização e programação, até a montagem final do protótipo. Através do levantamento bibliográfico, foi descrita a arquitetura em diagrama de blocos de microcontroladores. Apresentou-se a diferença entre a arquitetura de um microcontrolador e um microprocessador. Foi apresentada uma comparação entre dois microcontroladores PIC da Microchip, sendo que um deles foi utilizado nos protótipos de controle de processos. Com relação aos diferentes microcontroladores, foi feita uma breve descrição dos microcontroladores mais
21 6 utilizados comercialmente como o 8051 da Intel, MSP430 da Texas, AT89S8252 da Atmel, o M68HC08 da Motorola, o Z8SC30 da Zilog e os PICs da Microchip. Posteriormente, realizou-se uma pesquisa para determinar algumas aplicações com o uso de microcontroladores, em especial o processo de aquisição de sinais. Com relação a aquisição de sinais foi especificada a aquisição de sinais digitais e analógicos e suas respectivas conversões. Abordou-se também a comunicação entre o microcontrolador e a porta serial de computadores pessoais (PC), esta conhecida pelo nome de RS-232. Na etapa de programação do microcontrolador, utilizou-se a linguagem assembly, onde foi especificado o conjunto de instruções do microcontrolador. Foram apresentadas também as vantagens e desvantagens do uso desta linguagem. Uma vez estudada a linguagem de programação, montou-se o hardware do sistema de controle, isto é, um teclado matricial conectado ao microcontrolador e a saída em display de sete segmentos. Foi montado também uma interface de saída com display de cristal líquido. Logo que montado o hardware do sistema de controle, apresentaram-se partes do código relacionadas às etapas de controle do processo. Por fim, para cada hardware, foram feitos testes para validação do processo de controle.
22 7 2 MICROCONTROLADORES Com o advento dos microcontroladores, cada vez mais cresce a necessidade de conhecimento técnico sobre seu funcionamento e suas características de hardware e software. Neste capítulo são abordados temas de construção e funcionamento da arquitetura interna dos microcontroladores em geral. Além de fazer uma diferenciação entre microcontroladores e microprocessadores, também são descritas as principais características de microcontroladores de fabricantes diferentes que são mais utilizados comercialmente. 2.1 Diferenciação entre microcontroladores e microprocessadores Para realização de um controle qualquer de algum processo, deve-se pensar primeiramente nos componentes básicos necessários para desenvolver certa atividade. Num sistema microcontrolado precisa-se de um processador, de uma memória ROM para o programa, de uma memória RAM para os dados, de uma porta paralela para dar saída aos acionamentos, de outra porta para dar entrada de sinais digitais de sensores, de uma porta serial para realizar as configurações e rodarmos os diagnósticos, de um conversor A/D (Analógico/Digital) para ler variáveis como temperatura, pressão, de temporizadores para análise de falhas, dentre outros. Com todos estes componentes chega-se ao circuito básico ilustrado pela figura 1. Num sistema deste, mesmo que aparentemente pequeno, seria preciso uma placa controladora de tamanho grande e completa de circuitos integrados de controle. A idéia básica do microcontrolador é fazer um processador, com grande quantidade de recursos voltados ao controle e integrar todos estes componentes dentro
23 8 de um único circuito integrado (CI). Com isso o sistema fica muito mais simples e emprega poucos componentes, barateando bastante o projeto e aumentando a confiabilidade, pois existem menos componentes suscetíveis a erros (PEREIRA, 2004a). FIGURA 1 - Diagrama básico de um sistema microcontrolado (Fonte: SOUZA, 2004) Portanto existem várias vantagens em integrar num único circuito integrado (CI) a central de processamento (CPU) e os circuitos necessários aos sistemas de controle. Como na maioria dos casos não será feito processamento sofisticado, sua central de processamento (CPU) não precisa ter uma grande capacidade de processamento, mas deve oferecer um conjunto de instruções simples, que gere programas pequenos e de rápida execução, ou seja, as instruções devem ser pequenas e velozes. É preciso ainda oferecer uma forma simples de conexão com outros dispositivos periféricos que venham a ser adicionados (SOUZA, 2001). O conceito de microcontrolador se espalhou rapidamente e hoje em dia existe uma grande diversidade de produtos para solucionar os mais diferentes problemas de controle. O primeiro microcontrolador foi lançado pela Intel em 1978 e recebeu a sigla 8048; que depois evoluiu, dando origem a família 8051, em A Intel oferece a família 8096, que trabalha em 16 bits, possibilitando maior capacidade de processamento. Hoje em dia, uma grande quantidade de fábricas de semicondutores oferece microcontroladores. Além da Intel, citamos ainda a Zilog com a família Z8, a National com a COP8, a Atmel com o seu 8252, a Texas Instruments com os MSP430, a Motorola com o 68xx e a Microchip com a família PIC.
24 9 Basicamente os microcontroladores dos diferentes fabricantes possuem as mesmas características, sendo que praticamente todos eles oferecem uma linha completa ao desenvolvedor, tendo microcontroladores com interfaces diferenciadas, memória maior e expansível, encapsulamentos diferentes, entre outros. 2.2 Arquitetura básica de microcontroladores A arquitetura de um microcontrolador é bastante semelhante a de qualquer outro sistema, com unidade de processamento, unidade de controle, unidade lógicoaritmética e registradores (sejam eles auxiliares, de endereçamento ou de uso geral). Além disso o microcontrolador contém também memória, barramento para acesso a essa memória, portas de entrada e saída, controladores de processamento de sinal digital, gerador de clock (freqüência do sistema) e algumas opções de segurança, como, por exemplo, watchdog e controle de tensão da alimentação (detecção de brown-out) (SOUZA, 2001). Chega-se então ao diagrama ilustrado pela figura 2, que representa a típica arquitetura de um microcontrolador, com seus elementos básicos e ligações internas. FIGURA 2 - Diagrama básico de microcontroladores (Fonte: SOUZA, 2004)
25 10 Os elementos geralmente encontrados em microcontroladores são: Unidade Central de Processamento (CPU); Memória; Barramento (Bus); Módulo de Comunicação; Portas de Entrada e Saída Paralela; Gerador de clock; Conversores analógico/digital (A/D); Watchdog, detector de brown-out e dispositivos de segurança; Programa (Software). Deve-se destacar ainda que muitos desses dispositivos (como memória ou gerador de clock) podem ser acoplados externamente ao sistema, aumentando a precisão do gerador de clock ou a capacidade de memória. Pode-se, ainda, utilizar um multiplicador de portas e abstrair o sistema de entrada e saída em memória. Isso é bastante útil em microcontroladores com poucos pinos de entrada e saída ou com poucas portas. Através de algumas técnicas de hardware, pode-se otimizar a utilização de portas e entrada e saída, usando para isso multiplexadores e sistemas auxiliares, que não serão analisados por não fazerem parte do escopo deste trabalho Unidade central de processamento (CPU) Os microcontroladores possuem uma unidade de processamento, com função análoga à de um processador em um sistema. Possui unidade de controle, unidade lógico-aritmética e registradores (SOUZA, 2004) Memória Os microcontroladores possuem memória embutida no seu próprio chip. Chamada de memória RAM (geralmente para armazenamento de dados de tempo de execução, como, por exemplo, variáveis de programa) e geralmente possuem algum
26 11 tipo de memória não-volátil para armazenamento do programa, implementada como ROM, EPROM ou flash. Esta memória pode também permitir o armazenamento de dados de tempo de execução em memória não-volátil. Isso acontece pelo fato de que microcontroladores são geralmente utilizados em sistemas embutidos. Assim, eles nem sempre poderão dispor de alimentação, portanto o programa deve estar armazenado em memória não volátil. É utilizada RAM para as variáveis de programa por possuir maior velocidade de acesso e permitir infinitas regravações (SOUZA, 2004) Barramento (Bus) O barramento, também chamado de bus, é utilizado para conectar os elementos internos de um microcontrolador. A memória, como já foi citado, está embutida no chip, mas externa ao processador, e ela é acessada através de um barramento. Em alguns casos o sistema possui até mesmo mais de um barramento, como, por exemplo, em microcontroladores da família PIC, que possuem arquitetura Harvard, onde a memória de dados é separada da memória de programa (SOUZA, 2004) Comunicação Microcontroladores podem possuir portas para entrada e saída de comunicação. Dependendo do modelo de microcontrolador pode-se encontrar interfaces de comunicação: infravermelho (IR), rádio-freqüência (RF), universal serial bus (USB), entre outras. São utilizados para interface de entrada e saída com outros dispositivos como PC, microcontroladores, teclados, displays, controles remotos etc. (SOUZA, 2004) Portas de entrada e saída paralela Essas portas são responsáveis pelo acionamento de elementos externos, e funcionam como um byte, onde pode-se manipular cada bit, atribuindo-o função de
27 12 entrada ou saída sendo que a quantidade de portas depende do modelo do microcontrolador (SOUZA, 2004) Gerador de clock O microcontrolador deve possuir também um gerador de clock, para ser utilizado como sincronizador com os componentes internos e se for necessário com componentes externos ao microcontrolador (SOUZA, 2004) Conversor digital/analógico e analógico/digital Microcontroladores geralmente possuem conversores de sinal digital em analógico e vice-versa, ou comparadores de tensão, onde a tensão da entrada será comparada com determinado valor. Isso permite implementar um conversor analógicodigital por software. É utilizado para leitura de variáveis como temperatura, pressão, nível, tração, entre outros, de modo linear (SOUZA, 2004) Watchdog e detector de brown-out Os microcontroladores podem contar ainda com dispositivos de segurança, por exemplo, contra bloqueio da execução do programa e queda de tensão. O watchdog (cão de guarda) é uma rotina que deve ser chamada de tempos em tempos pelo programa. Caso não seja invocado, o sistema é reiniciado (por meio de um sinal de reset). Caso o sistema deixe de executar o programa watchdog e trave durante uma leitura da porta, após algum tempo o sistema será reiniciado, pois o watchdog não será notificado sobre a execução normal do programa. Essa propriedade é interessante quando se utiliza o microcontrolador em sistemas de monitoramento e segurança, pois uma falha do programa não compromete tão gravemente o funcionamento do sistema. Podem ocorrer também falhas no fornecimento de tensão elétrica para o sistema. O sistema de monitoramento de brown-out detecta quedas de tensão abaixo do nível aceitável. Caso ocorram, o sistema é paralisado e será reiniciado quando a
28 13 tensão retornar ao normal. Isso ocorre por que a baixa tensão pode fazer com que o sistema funcione irregularmente, o que poderia danificar o chip, alterar as variáveis, causando uma incoerência no funcionamento do software (SOUZA, 2004) Programa (Software) O programa é o responsável por tratar as entradas e saídas do sistema, além de controlar a memória e outros dispositivos. Pode ser escrita em várias linguagens desde que exista um compilador dedicado ao chip que se está utilizando. Existem no mercado compiladores em C, C++, Basic e outros, para os mais variados fabricantes e tipos de microcontroladores, a escolha depende principalmente do programador, porém a linguagem universal para microcontroladores continua sendo o assembly. 2.3 Estrutura interna de microcontroladores A arquitetura de um microcontrolador afeta principalmente a velocidade operacional e a estrutura de acesso a sua memória. Em microcontroladores a estrutura de máquina interna pode aparecer de duas formas, dependendo do fabricante e modelo de microcontrolador, sendo que podem ser do tipo Von-Newman ou Harvard. A diferença está na forma como os dados e o programa são processados. Na arquitetura tradicional do tipo Von Newman, existe apenas um barramento interno (geralmente de 8 bits), por onde as instruções e dados passam. Já na arquitetura Harvard existem dois barramentos internos, sendo um de dados e outro de instruções. Esse tipo de arquitetura permite que enquanto uma instrução é executada outra seja acessada na memória, tornando o processamento mais rápido. As duas arquiteturas existentes são ilustradas pela figura 3.
29 14 FIGURA 3 - Arquiteturas Von Newman e Harvard (Fonte: MICROCHIP, 2001a) 2.4 Famílias de microcontroladores Cada fabricante produz dezenas de modelos de microcontroladores. Como pode-se perceber existem várias configurações possíveis para sistemas microcontrolados, então, dependendo do sistema, um determinado tipo de microcontrolador deve ser usado. Os fabricantes de microcontroladores costumam chamar de família o conjunto de componentes que tem as mesmas funcionalidades, com variações pequenas entre elas, geralmente o número de portas, tamanho de memória, recurso de interface, montagem do componente na placa de circuito impresso e outros. São mostrados no quadro 1 algumas das famílias mais conhecidas do mercado atualmente (NETO, 2002). QUADRO 1 - Famílias de microcontroladores Família Fabricante MCS-51 / 8051 PIC MC68 MSP430 Intel e outros fabricantes Microchip Motorola Texas Instruments (Fonte: NETO, 2002) 2.5 Encapsulamentos Assim como as funcionalidades e recursos dos microcontroladores é variado,
30 15 também varia-se a construção física dos mesmos que segue padrões da indústria eletrônica, por isso os microcontroladores podem ser encontrados de várias formas físicas. A escolha de um determinado encapsulamento depende do projeto, levando em conta o tipo de fixação na placa de circuito impresso, tamanho do sistema proposto, dissipação de calor, resistência a temperatura ambiente entre outros. Os encapsulamentos mais comumente utilizados são: DIP, MQFQ, PLCC e S. Encapsulamento DIP: é o mais comum em protótipos e mais fácil de encontrar no mercado em geral, pode variar de 6 a 44 pinos, podendo ser soldada diretamente na placa ou encaixada em soquete próprio. A figura 4 mostra a disposição dos pinos para um chip com 40 pinos. FIGURA 4 - Encapsulamento DIP (Fonte: MICROCHIP, 2001c) Encapsulamento MQFQ: Utilizada em sistemas que possuem a fixação dos componentes eletrônicos chamados de SMD (Surface Montage), é diretamente soldada na superfície da placa de circuito impresso, não sendo possível sua substituição após fixação. Utilizada por grandes fabricantes que detém a tecnologia SMD. A figura 5 mostra a pinagem para este tipo de encapsulamento que pode variar de 20 até 84 pinos. FIGURA 5 - Encapsulamento MQFQ (Fonte: MICROCHIP, 2001c) Encapsulamento PLCC: Trata-se do encapsulamento mais utilizado
31 16 profissionalmente, pois alia tamanho pequeno e facilidade de substituição, devido a possibilidade de encaixe em soquete próprio. Não é comum adquirir em lojas de componentes eletrônicos simples, porém pode ser encontrado em grandes centros. A quantidade de pinos pode variar de 28 até 84 pinos dependendo do modelo de microcontrolador. A figura 6 mostra e disposição dos pinos neste encapsulamento. FIGURA 6 - Encapsulamento tipo PLCC (Fonte: MICROCHIP, 2001c) Encapsulamento S: Este encapsulamento é muito semelhante ao utilizado por processadores comerciais, e sempre é encaixado em soquete próprio, não sendo possível fazer solda direta em placa de circuito impresso. Utilizado em grandes aplicações, que necessitem de muitos recursos do microcontrolador. A pinagem pode variar de 40 até 240 pinos. Na figura 7 é mostrado um exemplo deste encapsulamento. FIGURA 7 - Encapsulamento tipo S (Fonte: MICROCHIP, 2001c) No próximo capítulo são demonstradas as características básicas de alguns microcontroladores de diferentes fabricantes, sendo dado maior ênfase ao chip PIC16F84 da Microchip, pois é o microcontrolador mais utilizado para fins didáticos
32 17 da Microchip, sendo que o objeto de estudo deste trabalho é o PIC16F877A, pois possui várias características comuns com o PIC16F Microcontroladores de diferentes fabricantes Microcontroladores Intel O primeiro microcontrolador a ser criado foi o 8048 da Intel, que evoluiu e recebeu a sigla Devido a grande aceitação, a família 8051 passou a ser produzida por outros fabricantes e, cada um deles pôde introduzir inovações no produto. Por isso, atualmente a família 8051 é a que oferece a maior variedade de opções, além do projetista não depender de um único fabricante. Os principais fabricantes desta família são a Philips, a Maxim-Dallas, a Atmel e a Analog-Devices (NETO, 2002). A arquitetura dos microcontroladores 8051 segue a arquitetura Harvard, com barramento de dados e programa separados. A figura 8 apresenta um diagrama em blocos, onde está especificada uma CPU de 8 bits, para a qual já foi definido um conjunto mínimo de instruções. O contador de programa (PC) é de 16 bits, o que permite até 64KB de memória de programa. Um outro registrador de 16 bits é usado para acessar a memória de dados, o que permite 64KB de memória de dados. Nota-se que existe a possibilidade da memória de programa (ROM 4KB) ser integrada junto com o chip do processador. A memória RAM interna tem 256 bytes e está dividida em dois blocos de 128 bits. O bloco inferior destina-se a trabalhar com outra memória de dados, enquanto que o bloco superior está dedicado aos registradores especiais que controlam os diversos recursos do microcontrolador. O 8051 é um microcontrolador de 8 bits, pois tanto a ROM, RAM, ULA e via de dados manipulam informação de 8 bits. O seu conjunto de instruções é formado por 111 instruções, onde se incluem as de transferência de dados, aritmética, lógica, desvio de fluxo de programa e booleanas. Estas são instruções de manipulação de variáveis de um bit do 8051 (lógica de bit único).
33 18 A arquitetura 8051 oferece quatro portas paralelas, denominadas de P0, P1, P2 e P3. Essas portas são bidirecionais e podem ser usadas para receber ou para gerar sinais digitais. Elas também podem ser acessadas bit a bit, ou seja, cada bit da porta pode ser programado como entrada ou saída. Quando se usa memória externa ao chip, as portas P0 e P2 são consumidas na construção dos barramentos de endereços e dados. Para geração de pulsos, com duração precisa ou para medição de intervalos de tempo em sinais digitais, existem dois contadores e temporizadores de 16 bits, denominados de timers. O bloco denominado controlador de interrupções trabalha com cinco interrupções. Duas dessas interrupções podem ser pedidas externamente através dos pinos INT0 e INT1, sendo que outras duas interrupções podem ser provocadas pelos contadores e temporizadores. A quinta interrupção é gerada pela porta serial. Esta arquitetura especifica uma porta serial capaz de atender aos requisitos mais usuais de comunicação, por isso a quantidade de bits e a velocidade é programável, e a porta serial gera uma interrupção tanto na transmissão quanto na recepção de um byte. FIGURA 8 - Arquitetura interna do 8051 Intel (Fonte: NETO, 2002) Alguns componentes da família 8051 são mostrados no quadro 2 especificando a tecnologia utilizada para fabricação, bem como as especificações de
34 19 tamanho das memórias existentes nos mesmos. QUADRO 2 - Membros da família Intel Membro Tecnologia Memória de Programa Memória de Dados 8051 HMOS 4K - ROM 128 bytes 8031 HMOS Não tem 128 bytes 8751H HMOS I 4K - EPROM 128 bytes 80C51 CHMOS 4K - ROM 128 bytes 80C31 CHMOS Não tem 128 bytes 8052 HMOS 8K - ROM 256 bytes (Fonte: NETO, 2002) Microcontroladores PIC - Microchip A Microchip fabrica mais de 140 tipos diferentes de microcontroladores PIC, portanto, existem muitas variações sobre os modelos (PEREIRA, 2004a). A grande maioria dos PICs são microcontroladores com registradores de 8 bits (alguns modelos possuem registradores de 16 bits). Existem basicamente três famílias de PICs, que se diferenciam pelo tamanho da palavra da memória de programa, que pode ser de 12, 14 ou 16 bits. Todos estes dispositivos possuem barramento de dados interno de 8 bits. Entre os mais populares pode-se destacar: PIC 16Cxxx (EEPROM) / PIC 16Fxxx (FLASH): Possuem instrução de 14 bits, conversor digital/analógico e interrupções. Possui 35 instruções. PIC 18Cxxx (EEPROM) / PIC 18Fxxx (FLASH): Instrução de 16 bits, conversor A/D, 77 instruções. Possui detector de brown-out. A especificação de cada microcontrolador pode ser consultada tendo-se o código do fabricante que é gravado no encapsulamento do mesmo. A nomenclatura varia de acordo com as características do chip. Abaixo pode-se observar algumas dessas nomenclaturas e seus devidos significados. PIC16CR65 ou PIC16CR72 Onde o R significa que o chip é formado por memória ROM (Ready Only Memory);
35 20 PIC16C74B/JW Onde o sufixo JW representa a memória EPROM (Erasable Programable Ready Only Memory), que pode ser apagada com luz ultra violeta; PIC16C72A/P O sufixo P representa o invólucro do chip, neste caso em plástico; PIC16C74B/SO O sufixo SO significa o tipo de montagem do chip em circuitos impressos, neste caso seria SOIC (Surface Mounting), ou seja, montagem em superfície; PIC16F877 A letra F define o tipo de memória do chip, sendo uma memória FLASH (Electrically Erasable Programmable Ready Only Memory), ou seja o mesmo é reprogramavél e o firmware pode ser escrito na memória de programa. Recentemente a Microchip apresentou sua nova linha de microcontroladores formando a quarta família chamada de DsPIC com largura de dados de 16 bits (MICROCHIP, 2001a). O aumento no tamanho da palavra de programa possibilita um aumento no número de instruções, o que aumenta a flexibilidade e eficiência de programação. Como a diversidade de componentes da família PIC é muito grande, neste momento serão verificadas características comuns a maioria dos microcontroladores PIC, tomando como exemplo o chip PIC16F84. Os microcontroladores da família PIC apresentam uma arquitetura interna do tipo Harvard, cujo funcionamento já foi citado e utilizam a tecnologia chamada RISC (Reduce Instruction Set), conjunto de instruções reduzido. Desta forma, possuem cerca de 35 instruções (o número varia conforme o microcontrolador), muito menos que os microcontroladores convencionais que utilizam tecnologia CISC (Complex Instruction Set Computer), que chegam a possuir mais de 100 instruções. Todos os registradores (exceto o acumulador) estão mapeados em memória, o que prejudica muito o desempenho, mas auxilia a reduzir o custo. Operam com cerca de 3 Volts o trabalham no máximo a 40Mhz.
36 21 O diagrama para o microcontrolador PIC16F84 é mostrado na figura 9, onde pode-se visualizar diversas partes que compõem o chip. Observa-se que a ULA (Unidade Lógico Aritmética) está ligado diretamente ao registrador W. No canto superior esquerdo tem-se a memória de programa, e saindo deste bloco existe um barramento de 14 bits. Mais ao centro está a memória de dados (RAM) com 8 bits. Ao lado direito, o primeiro periférico, a EEPROM (memória de dados não volátil). Outros periféricos também são observados, tais como: timer (TMR0), portas paralelas (I/O ports). É ligado um pino do microcontrolador (RA4/T0CK1), que em conjunto com o timer forma o contador externo. Um pouco mais ao centro, tem-se o registrador de status (STATUS Reg). Algumas informações importantes sobre as operações aritméticas da ULA ficam armazenadas neste registrador. Na parte superior ainda temse o contador de linha de programa (Program Counter) e a pilha de 8 níveis (Stack). A comunicação com todos os periféricos é feita por meio de um barramento de 8 bits. Pode-se observar ainda os circuitos internos de reset, osciladores e Watchdog Timer (WDT). FIGURA 9 - Arquitetura interna do PIC16F84 (Fonte: SOUZA, 2001)
37 22 Pode-se exemplificar algumas características de microcontroladores PIC através do quadro 3. Dispositivo QUADRO 3 - Membros da família PIC Memória de Dados Dados EEPROM Memória de Programa (bytes) (bytes) Max. Freq. (MHz) PIC16F Flash PIC16F84 1K Flash PIC16CR ROM PIC16F887A 8K Flash (Fonte: SOUZA, 2001) Características do microcontrolador PIC16F84 As principais características do microcontrolador PIC16F84 são: Apenas 35 palavras de instrução; Todas instruções com um ciclo, exceto para desvios que levam dois ciclos; Velocidade de operação: DC até 20 Mhz de clock; Instruções com 14 bits de largura; Barramento de dados de 8 bits; 16 registradores de funções especiais de hardware; Pilha com 8 níveis de profundidade; Modos de endereçamento direto, indireto e relativo para dados e instruções; Capacidade de interrupção. Tem como características dos periféricos: 13 pinos de I/O individualmente configurados (PIC16F84); Temporizador/Contador de 8 bits com 8 bits de pré-escala; Power-On Reset (POR); Temporizador Watch-Dog (WDT) com oscilador próprio para operações
38 23 seguras; Proteção de Código Programável; Modo sleep para diminuição de consumo de energia; Opções de oscilador selecionável, sendo: o RC oscilador RC de baixo custo; o XT cristal padrão; o HS Cristal de alta velocidade; o LP Cristal de baixa freqüência (redução de consumo); Programação Serial in-circuit (através de dois pinos) Organização da memória de programa A família PIC16F84 tem um contador de programa de 14 bits capaz de endereçar até 8K x 14 bits de memória de programas. O vetor de reset está localizado no endereço 0000h e o vetor de interrupção no endereço 0004h. Outra característica importante a ser salientada é a impossibilidade de se ler diretamente da memória de programa. A maneira com que isso é feito na arquitetura do PIC é utilizando a instrução RETLW k, que será visto mais adiante na apresentação do conjunto de instruções Organização da memória de dados A memória de dados é composta de registradores e RAM para uso geral. Os registradores são divididos em 2 grupos funcionais: Registradores de Funções Especiais (32 endereços iniciais de cada banco) e Registradores de Uso Geral (endereços restantes de cada banco). Entre os registradores de funções especiais estão: o registrador TMR0, o contador de programa (PC), o registrador de Status (STATUS), os registradores entrada ou saída e o registrador de seleção (FSR). Além disso, os registradores de funções especiais são usados para controlar a configuração das portas de entrada ou saída e as opções de pré-escala. Os registradores de uso geral são usados para dados e controle de informação sob comando das instruções. Outras características como: Registradores de Funções Especiais, Interface
39 24 de I/O, Temporizador, Interrupções, Conjuntos de Instruções de Software, identificação da pinagem, serão abordados em detalhes no decorrer deste trabalho, especificando-as para o chip PIC16F877A Microcontroladores Motorola M68HC08 A família Motorola M68HC08, comumente denominada HC08, contém microcontroladores de propósito geral com largas possibilidades de aplicação. Assim como os microcontroladores já apresentados, o modelo MC68HC908QT/QY também possui os componentes básicos de arquitetura como: CPU, Clock, Memória de Dados e Instruções, Portas de Entrada/Saída e software. A família M68HC08 contém CPU de 8 bits, que tem uma organização denominada de Von-Neumann. Entre as principais características pode-se citar: Código objeto compatível com a família HC05; CPU com freqüência de barramento interno de até 8 Mhz; 64 Kbytes endereçáveis para memória de programa, dados e periféricos; Barramento interno flexível para acessar periféricos; Modos de baixo consumo stop e wait; Instruções rápidas de multiplicação de 8 bits e divisão de 16 bits por 8 bits; Os modos de endereçamento indicam o caminho pelo qual a CPU obtém as informações necessárias para completar uma instrução. A CPU08 tem um total de 16 modos de endereçamento, alguns deles implementados para gerar um código eficiente quando o desenvolvimento de software for realizado com linguagens de alto nível. Esses 16 modos são: Inerente; Imediato; Direto; Estendido; Indexado;
40 25 o Com e Sem offset de 8 bits; o Com offset de 16 bits; o Sem offset e com pós-incremento; o Com offset de 8 bits e pós-incremento. Movimento de Dados de Memória para Memória; o Imediato para direto; o Direto para direto; o Indexado para direto com pós-incremento; o Direto para indexado com pós-incremento. Tensão de operação: de 5 Volts a 3Volts; Capacidade de despertar automaticamente da condição de stop; Programação in-circuit da memória flash; 128 bytes de memória RAM; Modos de redução de consumo stop e wait. Outras características dos microcontroladores que fazem parte da família MC68HC908QT/QY são o baixo consumo, alto desempenho e baixa pinagem (8 ou 16 pinos). Todos os membros dessa família utilizam a CPU08, desenvolvida para a arquitetura HC08. Os principais componentes desta família são apresentados no quadro 4. QUADRO 4 - Membros da família HC08 Componente Memória FLASH Conversor A/D Nº de Pinos MC68HC908QT bytes - 8 MC68HC908QT bytes 4 canais de 8 bits 8 MC68HC908QT bytes 4 canais de 8 bits 8 MC68HC908QY bytes - 16 pinos MC68HC908QY bytes 4 canais de 8 bits 16 pinos MC68HC908QY bytes 4 canais de 8 bits 16 pinos (Fonte: NETO, 2002) Junto com a CPU, existe um módulo chamado de SIM (System Integration
41 26 Module), que controla todas as atividades do microcontrolador. O SIM é um controlador de estados que coordena as atividades da CPU e as exceções de tempo. O módulo SIM é responsável por: gerar o clock do barramento, controle da CPU, controle de periféricos, controle do reset principal, controle de interrupções entre outras funções. A CPU08, por ser de arquitetura CISC (Complex Instruction Set Computer), apresenta um conjunto de instruções poderoso que pode ser utilizado de forma simples e imediata. Assim como a maioria dos microcontroladores do mercado a linguagem mais utilizada para programação dos mesmos continua sendo o assembly, onde, por exemplo o software CodeWarrior gera um arquivo de código binário conhecido como arquivo de formato S19, que consiste em um arquivo texto ASCII que pode ser visualizado por qualquer editor de texto. Cada linha é um registro. Cada registro começa com a letra S seguida de um número de 0 a 9. Posteriormente este arquivo S19 é utilizado para gravar a memória flash do microcontrolador, e também é utilizado como o arquivo de entrada para ferramentas de depuração, seja ela uma simulação por software ou depuração in-circuit. 2.7 Especificação do microcontrolador PIC16F877A O microcontrolador PIC16F877A da Microchip, faz parte da família PIC intermediária, chamada pelo fabricante Microchip de Mid-Range. Suas principais características são o baixo custo, facilidade de programação, memória flash (podendose gravá-lo várias vezes), grande número de entradas e saídas entre outros (MICROCHIP, 2001c). Pode-se destacar as seguintes especificações: Freqüência de Operação: DC 20 MHz; 8 Kbytes de memória flash (14 bits); Memória de Dados: 368 bytes; 256 Bytes de memória EEPROM interna;
42 27 14 Interrupções; 05 grupos de portas de entrada/saída; 03 Timers; 02 Módulos Captura, Comparador ou PWM; Comunicação Serial MSSP e USART; Comunicação Paralela PSP; 08 canais de entrada analógica de 10 bits de resolução; 35 instruções de programação Descrição da pinagem O microcontrolador PIC16F877A possui três tipos de encapsulamentos sendo: PDIP, PLCC e QFP. A figura 10 ilustra a pinagem no encapsulamento PDIP de 40 pinos que é o mais comumente encontrado e utilizado, porém o microcontrolador PIC16F877A pode ser encontrado em outros encapsulamentos, como na figura 11 que mostra a disposição dos pinos no encapsulamento PLCC e a figura 12 ilustra a pinagem do microcontrolador PIC16F877A no encapsulamento QFP. FIGURA 10 - Pinagem PDIP do PIC16F877A (Fonte: MICROCHIP, 2001c)
43 28 FIGURA 11 - Pinagem PLCC do PIC16F877A (Fonte: MICROCHIP, 2001c) FIGURA 12 - Pinagem QFP do PIC16F877A (Fonte: MICROCHIP, 2001c) Estrutura interna Pode-se verificar a estrutura interna do PIC16F877A na figura 13, onde destaca-se a memória EEPROM interna, a memória RAM estática (também chamada de file registers registradores de arquivo), a pilha (stack) e o contador de programa PC (Program Counter). A diferença de largura do barramento de dados da memória de programa
44 29 (program bus 14 bits) e a do resto do processador (data bus - 8 bits) decorre da arquitetura Harvard utilizada. FIGURA 13 - Arquitetura interna do PIC16F877A (Fonte: MICROCHIP, 2001c) Organização dos bancos de memória A memória nos microcontroladores PIC é interna, porém alguns microcontroladores de outras séries como 17 e 18 podem funcionar com memórias de programa acopladas externamente através de seu barramento. Existem quatro tecnologias típicas de implementação da memória de programa:
45 30 ROM do tipo máscara Vem com memória gravada de fábrica e não podem ser alterados, utilizados em fabricação de grande escala. O fabricante Microchip identifica estes dispositivos com o sufixo CR; OTP Dispositivos fabricados com memória PROM virgens, portanto pode-se gravar uma vez e não podem ser apagados. São identificados pelo sufixo C; EPROM Dispositivos dedicados principalmente para etapa de testes e desenvolvimento, porém tem uma custo muito alto; FLASH Chips com memória mais versátil, pois permitem várias gravações e regravações com um custo muito baixo. São identificados pelo sufixo F em sua especificação. O microcontrolador PIC16F877A, como seu próprio sufixo F sugere, possui internamente uma memória flash que permite no mínimo 1000 gravações ou apagamentos, sendo muito indicado para testes e protótipos, evitando custos com compra de vários microcontroladores. A capacidade máxima de memória da série 16 é de 8 kword, ou seja, 8192 posições de memória. Devido a limitações impostas pela estrutura das instruções RISC, a memória de programa é dividida em blocos ou páginas, cada uma com 2 kword ou 2048 posições. O microcontrolador PIC16F877A possui quatro bancos de memória, que são acessados conforme seleção no registrador STATUS, RO1 e RP2. A estrutura interna de endereçamento e memória de programa do PIC16F877A é mostrada na figura 14. Nestes bancos de memória estão localizados os registradores, que serão abordados a seguir.
46 31 FIGURA 14 - Mapa da memória de programa do PIC16F877A (Fonte: MICROCHIP, 2001c) Registradores especiais As configurações que podem ser feitas com microcontroladores para definir, por exemplo, portas como entradas ou saídas, ativar interrupções, ativar contadores, são tarefas dos registradores especiais, denominados de SFR (Special Function Registers), que servem justamente para guardar as configurações e o estado de funcionamento atual do sistema. A seguir serão especificados os registradores especiais para o microcontrolador PIC16F877A, a maioria destas definições são idênticas para os microcontroladores da família PIC produzidos pela Microchip, devendo-se consultar o datasheet do microcontrolador a ser usado para utilização dos registradores específicos do microcontrolador. Cada registrador é formado por 8 bits e cada bit possui um nome. Será especificado se este bit pode ser lido com a referência R (Read) e/ou escrito com W (Write), caso o bit não seja implementado, a representação será U (Unimplemented) e será lido com zero. A disposição dos registradores para o microcontrolador PIC16F877A, bem como o endereçamento inicial dos mesmos é mostrada pela figura 15.
47 32 FIGURA 15 - Mapa dos arquivos de registradores do PIC16F877A (Fonte: MICROCHIP, 2001c) Os endereços com identificação não implementado, são endereços que existem fisicamente mas não estão sendo utilizados, sem nenhuma função de
48 33 registrador. Os principais registradores do microcontrolador PIC16F877A e a descrição dos seus respectivos bits, são demonstrados a seguir. Os registradores que não foram utilizados nos protótipos podem ser consultados no anexo A Registrador W O registrador W (Word) pode ser utilizado como destino de diversas operações aritméticas e lógicas. Não pode ser utilizado como fonte de dados em diversas operações internas da CPU, e ao contrário dos registradores SFR e GPR, o registrador W não está mapeado na memória RAM dos PICs. Este registrador tem o uso principal de fazer uma ponte entre os registradores f, pois a arquitetura dos microcontroladores da série F, não permite que exista troca de informações diretamente entre os registradores f, por isso deve-se copiar o conteúdo do registrador f de origem para o registrador W e em seguida repassar o conteúdo de W para o registrador f de destino Registrador PCL Todo programa em microcontroladores PIC possui um contador de programa chamado de PC, que é responsável pela seqüência das instruções no PIC. O registrador PC aponta sempre para a próxima instrução a ser executada pela CPU, assim, se for necessário alterar o fluxo do programa, deve-se alterar o conteúdo do registrador PC. Nos microcontroladores da família PIC série 16, a largura de bits do contador de programa é de 13 bits, porém não é possível acessar diretamente o conteúdo deste contador. Estes 13 bits estão subdivididos em outros dois registradores, o PCL (Program Counter Least), com os 8 bits menos significativos do contador de programa, e o PCLH, responsável pelos 5 bits mais significativos do contador de programa. Somente o PCL pode ser diretamente acessado, podendo ser lido e escrito pelo programa de usuário, enquanto que o PCLH, pode ser alterado somente por intermédio do registrador PCLATH. O registrador PCL utiliza os 8 bits menos significativos do contador de programas, e está localizado nos bancos de memória 0, 1,
49 34 2, 3 e 4 nos endereços 02h, 82h, 102h e 182h, respectivamente Registrador STATUS O registrador STATUS serve para mostrar os estados da ULA, a forma do último reset e também para configurar a página de programação atual, quando necessário. É composto de vários flags (sinalizadores) que nada mais são do que bits utilizados para sinalizar uma condição específica. A disposição dos bits é mostrada no quadro 5 e pode ser acessado em qualquer dos 4 bancos de memória existentes no microcontrolador PIC16F877A. Logo em seguida tem-se a descrição de cada flag desse registrador: QUADRO 5 - Disposição dos bits no registrador STATUS Registrador: STATUS Endereços: 03h, 83h, 103h, 183h Permissão R/W R/W R/W R R R/W R/W R/W Nome IRP RP1 RP0 /TO /PD Z DC C Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 (Fonte: MICROCHIP, 2001c) C Carry/Borrow (transporte/empréstimo) Utilizado para sinalizar a condição de transporte ou empréstimo de bit após uma operação matemática ou lógica. Pode ser dividido em duas categorias: Operações Matemáticas e Operações Lógicas. Quando assume o valor 0, a última operação não ocasionou um estouro (carry), se assume o valor 1, representa que a última operação ocasionou um estouro (carry) no bit mais significativo, isto é, o resultado ultrapassou os 8 bits disponíveis; DC Digit Carry/Digit Borrow (Transbordo de dígito/ Empréstimo de dígito) Possui a mesma função do flag C, mas enquanto o flag C referese a um registrador de 8 bits, o flag DC refere-se a um conjunto de 4 bits (nibble) do registrador. Se seu valor for 0, então não ocorreu um estouro de dígito, se o valor for 1, ocorreu um estouro de dígito entre o bit 3 e 4, isto é, o resultado ultrapassou os 4 bits menos significativos; Z Zero Utilizado para sinalizar que uma operação resultou no valor
50 35 zero, ou seja, que o valor zero foi armazenado no registrador de destino. Se a operação resultou em zero, o flag Z do registrador STATUS é levado a 1, se a operação resultou em um número diferente de zero, o flag assume o valor 0; /PD Power Down (desligamento) Este flag é utilizado para sinalizar o estado do controle de energia do microcontrolador. Se estiver em nível 0, indica que o microcontrolador executou uma instrução sleep e entrou e modo de baixa potência. Se estiver em nível 1, indicará que o microcontrolador não entrou em modo de baixa potência desde que foi ligado, ou foi executada uma instrução CLRWDT (a qual coloca os flags /PD e /TO em nível 1, além de zerar o watchdog); /TO Time Out (estouro de tempo) indica o estado em que se encontra a contagem do watchdog. Se o valor for 0, indica que o watchdog chegou ao final da contagem e provocou um reset no microcontrolador, se estiver com valor 1, indica que o watchdog não atingiu a contagem final, ou foi executada a instrução CLRWDT; RP0 e RP1 Register Bank - A combinação dos valores destes bits selecionam o banco de memória que a CPU irá utilizar, conforme descrito no quadro 6. QUADRO 6 - Descrição bits RP1 e RP0 RP1 RP0 Banco Selecionado 0 0 Banco Banco Banco Banco 3 (Fonte: MICROCHIP, 2001c) IRP Indirect Register Bank- Seleciona o banco de memória para endereçamento indireto. Quando seu valor for 0, os bancos 0 e 1 (0x000h a 0x0FFh) estarão selecionados, quando seu valor for 1 o bancos 2 e 3 (0x100h a 0x1FFh) estarão selecionados.
51 Registrador PORTA O registrador PORTA (Port A) possui 6 bits e é responsável por controlar os pinos externos da porta A do microcontrolador, onde são configuradas para ser entrada ou saída através do registrador TRISA. Cada pino é acessado pelo respectivo bit do registrador conforme é mostrado no quadro 7. QUADRO 7 - Disposição dos bits no registrador PORTA Registrador: PORTA Endereços: 05h Permissão U U R/W R/W R/W R/W R/W R/W Nome - - RA5/SS/ AN4 RA4/ T0CKI RA3/AN3/ Vref RA2/AN2 RA1/AN1 RA0/AN0 Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 (Fonte: MICROCHIP, 2001c) Os pinos que estão submetidos ao registrador PORTA são: RA0 / AN0 Entrada/Saída TTL ou entrada analógica 0; RA1 / AN1 Entrada/Saída TTL ou entrada analógica 1; RA2 / AN2 Entrada/Saída TTL ou entrada analógica 2; RA3 / AN3 / Vref Entrada/Saída TTL, entrada analógica 3 ou tensão de referência; RA4 / T0CKI Entrada/Saída ou entrada para clock externo ao Timer0; RA5 / SS / AN4 Entrada/Saída, seleção de entrada para sincronismo da porta serial ou entrada analógica Registrador PORTB O registrador PORTB (Port B) possui 8 bits e é responsável por controlar os pinos externos da porta B do microcontrolador, onde são configuradas para ser entrada ou saída através do registrador TRISB. Este é o único registrador do tipo PORT que está localizado em dois endereços de bancos de memória diferentes, conforme é mostrado pelo quadro 8. Cada pino é acessado pelo respectivo bit do registrador PORTB.
52 37 QUADRO 8 - Disposição dos bits no registrador PORTB Registrador: PORTB Endereços: 06h e 106h Permissão R/W R/W R/W R/W R/W R/W R/W R/W Nome RB7/PGD RB6/PGC RB5 RB4 RB3/PGM RB2 RB1 RB0/INT Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 (Fonte: MICROCHIP, 2001c) Os pinos que estão submetidos ao registrador PORTB são: RB0 / INT Pino de entrada ou saída TTL/ST. Interrupção externa; RB1 Pino de entrada ou saída TTL; RB2 Pino de entrada ou saída TTL; RB3 / PGM Pino de entrada ou saída. Pino de programação LVP; RA4 Pino de entrada ou saída (com interrupção na mudança); RB5 Pino de entrada ou saída (com interrupção na mudança); RB6/PGC - Pino de entrada ou saída TTL/ST (com interrupção na mudança) ou pino de Debugger In-Circuit. Clock de Programação Serial; RB7/PGD - Pino de entrada ou saída TTL/ST (com interrupção na mudança) ou pino de Debugger In-Circuit. Clock de Programação Serial Registrador PORTC O registrador PORTC (Port C) possui 8 bits e é responsável por controlar os pinos externos da porta C do microcontrolador, onde são configuradas para assumirem a condição de entrada ou saída através do registrador TRISC. Cada pino é acessado pelo respectivo bit do registrador conforme é mostrado no quadro 9. QUADRO 9 - Disposição dos bits no registrador PORTC Registrador: PORTC Endereços: 07h Permissão R/W R/W R/W R/W R/W R/W R/W R/W Nome RC7/ RX/ DT RC6/ TX/ CK RC5/ SDO RC4/ SDI/ SDA RC3/ SCK/ SCL RC2/ CCP1 RC1/ T1OSI/ CCP2 RC0/ T1OSO/ T1CKI Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 (Fonte: MICROCHIP, 2001c)
53 38 Os pinos que estão submetidos ao registrador PORTC são: RC0/T1OSO/T1CKI Pino de entrada ou saída ST, ou saída para oscilador Timer1, ou entrada de clock para Timer1; RC1/T1OSI/CCP2 Pino de entrada ou saída ST, ou oscilador de entrada do Timer1, ou saída do PWM2. RC2/CCP1 Pino de entrada ou saída ST, ou entrada de captura 1, ou saída de comparação 1, ou saída do PWM1. RC3/SCK/SCL Pino de entrada ou saída ST. O pino RC3 pode ser utilizado para o clock de sincronismo serial para o modo SPI e I²C. RC4/SDI/SDA Pino de entrada ou saída ST. O pino RC4 pode ser utilizado para a entrada de dados do SPI quando em modo SPI, ou de entrada e saída de dados no modo I²C. RC5/SDO Pino de entrada ou saída, ou saída de dados de sincronismo da porta serial. RC6/TX/CK Pino de entrada ou saída ST, ou transmissor de dados da USART, ou sincronismo de clock. RC7/RX/DT Pino de entrada ou saída ST, ou receptor de dados da USART, ou sincronismo de dados Registrador PORTD O registrador PORTD (Port D) possui 8 bits e é responsável por controlar os pinos externos da porta D do microcontrolador, onde são configuradas como entrada ou saída através do registrador TRISD. A disposição dos bits é mostrado no quadro 10. QUADRO 10 - Disposição dos bits no registrador PORTD Registrador: PORTD Endereços: 08h Permissão R/W R/W R/W R/W R/W R/W R/W R/W Nome RD7/ PSP7 RD6/ PSP6 RD5/ PSP5 RD4/ PSP4 RD3/ PSP3 RD2/ PSP2 RD1/ PSP1 RD0/ PSP0 Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 (Fonte: MICROCHIP, 2001c)
54 39 Os pinos que estão submetidos ao registrador PORTD são: RD0/PSP0 Pino de entrada ou saída ST/TTL, ou bit 0 da porta paralela; RD1/PSP1 Pino de entrada ou saída ST/TTL, ou bit 1 da porta paralela; RD2/PSP2 Pino de entrada ou saída ST/TTL, ou bit 2 da porta paralela; RD3/PSP3 Pino de entrada ou saída ST/TTL, ou bit 3 da porta paralela; RD4/PSP4 Pino de entrada ou saída ST/TTL, ou bit 4 da porta paralela; RD5/PSP5 Pino de entrada ou saída ST/TTL, ou bit 5 da porta paralela; RD6/PSP6 Pino de entrada ou saída ST/TTL, ou bit 6 da porta paralela; RD7/PSP7 Pino de entrada ou saída ST/TTL, ou bit 7 da porta paralela; Registrador PORTE O registrador PORTE (Port E) possui apenas 8 bits e é responsável por controlar os pinos externos da porta E do microcontrolador, onde são configuradas para ser entrada ou saída através do registrador TRISE. Cada pino é acessado pelo respectivo bit do registrador conforme é mostrado no quadro 11. QUADRO 11 - Disposição dos bits no registrador PORTE Registrador: PORTE Endereços: 09h Permissão U U U U U R/W R/W R/W Nome RE2/ /CS/ AN7 RE1/ /WR/ AN6 Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 (Fonte: MICROCHIP, 2001c) RE0/ /RD/ AN5 Os pinos que estão submetidos ao registrador PORTE são: RE0 Pino de entrada ou saída ST/TTL, entrada de controle de leitura na porta paralela, entrada analógica 5 (/RD); RE1 Pino de entrada ou saída ST/TTL, entrada de controle de escrita na porta paralela, entrada analógica 6 (/WR); RE2 Pino de entrada ou saída ST/TTL, entrada de controle da seleção quando modo de parta paralela escravo estiver ativo, entrada analógica 7
55 40 (/CS) Registrador PCLATH Como já foi descrito no registrador PCL, o registrador PCLATH é responsável por armazenar os 5 bits mais significativos do contador de programa e por intermédio dele pode ser alterado o conteúdo do registrador PCH. O registrador PCLATH está armazenado em todos os bancos de memória nos endereços 0Ah, 8Ah, 10Ah E 18Ah, respectivamente nos bancos de memória 0, 1, 2, 3 e 4 de memória Registrador INTCON O registrador INTCON (Interrupt Config) é o responsável pela identificação e configuração das interrupções possíveis no microcontrolador. Pode-se dividir as interrupções do microcontrolador PIC16F877A em três grupos: o controle geral de interrupções (GIE), os controles individuais de interrupções (EEIE, T0IE, INTE e RBIE) e os flags sinalizadores da ocorrência da interrupção (T0IF, INTF e RBIF). O quadro 12 mostra a disposição dos bits deste registrador, e em seguida segue a descrição de cada um deles. QUADRO 12 - Disposição dos bits no registrador INTCON Registrador: INTCON Endereços: 0Bh, 8Bh, 10Bh e 18Bh Permissão R/W R/W R/W R/W R/W R/W R/W R/W Nome GIE PEIE T0IE INTE RBIE T0IF INTF RBIF Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 (Fonte: MICROCHIP, 2001c) GIE Global Interrupt Enable Se o valor deste bit for 0, nenhuma interrupção ocorrerá no microcontrolador, caso o valor seja 1, poderá ocorrer alguma interrupção no microcontrolador; PEIE Peripheral Interrupt Enable - Habilitação das interrupções de periféricos. Com valor 0 as interrupções de periféricos estão desligadas, com valor 1 habilita-se estas interrupções;
56 41 T0IE TMR0 Overflow Interrupt Enable - Habilitação das interrupções de transbordamento do Timer0. Com valor 0 a interrupção do Timer0 está desligada, com valor 1 habilita-se esta interrupção; INTE RB0/INT External Interrupt Enable - Habilitação da interrupção externa (pino RB0/INT). Com valor 0 a interrupção externa está desligada, com valor 1 habilita-se esta interrupção; RBIE RB Port Change Interrupt Enable - Habilitação da interrupção por mudança na porta B. Com valor 0 a interrupção por mudança na porta B está desligada, com valor 1 habilita-se esta interrupção; T0IF TMR0 Overflow Interrupt - Este bit sinaliza o transbordamento do Timer0, se o valor for 0 a contagem dele não ultrapassou a 255, caso o valor seja 1, é sinal que houve transbordamento do Timer0, ou seja, a contagem superou 255, e se o GIE estiver ligado, assim como o TOIE, será gerada uma interrupção neste caso; INTF RB0/INT External Interrupt - Este flag sinaliza interrupção externa no pino (RB0/INT). O valor 0 representa que não houve interrupção na porta B, e o valor 1, representa que o pino foi acionado gerando uma interrupção de INTF; RBIF RB Port Change - Este bit sinaliza alteração nos pinos RB4 a RB7, o valor 0 significa que não houve alteração nos níveis lógicos dos pinos RB4 a RB7, se o valor for 1, sinaliza que houve alteração nestes pinos Registrador RCSTA O registrador RCSTA (Receive Status and Control) é utilizado para controlar e configurar as informações referentes a recepção de dados de comunicação serial pela porta de comunicação USART. A disposição dos bits deste registrador é mostrado pelo quadro 13, e logo a seguir é descrito a função de cada bit que faz parte deste registrador.
57 42 QUADRO 13 - Disposição dos bits no registrado RCSTA Registrador: RCSTA Endereços: 18h Permissão R/W R/W R/W R/W R/W R R R Nome SPEN RX9 SREN CREN ADDEN FERR OERR RX9D Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 (Fonte: MICROCHIP, 2001c) SPEN Serial Port Enable - Este bit é utilizado para habilitação da USART. Com o valor 0, a USART está desabilitada, e os pinos RB1 e RB2 podem ser utilizados para entrada/saída. Com o valor 1 este pinos serão utilizados pela USART; RX9 9-bit Receive Enable - Seleciona o número de bits para o modo de recepção, que pode ser 8 bits, atribuindo-se o valor 0 e pode ser de 9 bits atribuindo-se a este bit o valor 1; SREN Single Receive Enable - Habilitação de recepção única, com 0 desabilita a recepção única, com 1 habilita, sendo que após a recepção de um caractere este bit volta a 0; CREN Continuous Receive Enable - Habilitação de recepção contínua, com valor 0 a recepção contínua está desabilitada e com valor 1 habilitase a recepção contínua; ADDEN Address Detect Enable - Este bit serve para habilitar a detecção de endereço. Com valor atribuído 0 a detecção está desabilitada e o nono bit pode ser utilizado para paridade. Como o valor 1 habilita a detecção de endereço, a USART permanece aguardando a chegada de um endereço; FERR Framing Error - Este bit indica com o valor 1 que houve um erro de frame (quadro), porquê o bit de stop não foi detectado ou detectado fora de hora. Se não houve erro o valor do bit é 0; OERR Overrun Error - Este bit indica com o valor 1 que houve um erro de over-run (sobreposição), isto ocorre quando três caracteres foram recebidos sem terem sido lidos pela CPU;
58 43 RX9D 9th bit of Received Data - Nono bit dos dados recebidos pela USART, que pode ser utilizado para verificar a paridade, desde que o transmissor esteja configurado para uso de paridade Registrador TXREG O registrador TXREG (Transmit Data Register) é responsável por registrar em 8 bits o dado a ser transmitido. O mesmo localiza-se no endereço 19h do banco de memória 0, no microcontrolador PIC16F877A Registrador RCREG O registrador RCREG (Receive Data Register) está localizado no endereço 1Ah do banco de memória 0, sendo responsável por registrar em 8 bits o dado recebido na comunicação USART Registrador ADRESH No registrador ADRESH (A/D Result High Register) é armazenado o resultado da conversão analógico/digital. Como os conversores A/D do microcontrolador são de 10 bits, para armazenar o resultado, deve-se primeiramente saber de forma serão organizados e como será armazenado este valor, que pode ser justificado a esquerda ou a direita. O registrador ADRESH está localizado no endereço de memória 1Eh do banco de memória 0. O resultado dos conversores analógico digitais pode ser justificado a esquerda ou a direita dos registradores ADRESH e ADRESL, conforme o estado do bit ADFM do registrador ADCON1. Se o bit ADFM estiver em 1 o registrador ADRESH armazenará somente os dois primeiros bits da conversão analógico digital, caso o bit ADFM esteja em 0, o registrador ADRESH armazenará os 8 primeiros bits do resultado da conversão analógico/digital. Para demonstrar como pode ser feita a justificação dos bits resultado da conversão analógico/digital, pode-se visualizar graficamente este processo através da figura 16.
59 Registrador ADRESL FIGURA 16 - Justificação do resultado analógico/digital (Fonte: MICROCHIP, 2001c) No registrador ADRESL (A/D Result Register Low Byte) é armazenado o resultado da conversão analógico/digital. Está localizado no endereço 9Eh do banco de memória 1. O resultado dos conversores analógico digitais pode ser justificado a esquerda ou a direita dos registradores ADRESH e ADRESL, conforme o estado do bit ADFM do registrador ADCON1. Se o bit ADFM estiver em 0 o registrador ADRESL armazenará somente os dois últimos bits da conversão analógico digital, caso o bit ADFM esteja em 1, o registrador ADRESL armazenará os 8 últimos bits do resultado da conversão analógico/digital. ADRESH. Esta configuração é ilustrada pela figura 16, na descrição do registrador Registrador ADCON0 O registrador ADCON0 (A/D Control 0) é responsável pelo controle e configuração do módulo conversor analógico-digital 0. Os bits que compõem este registrador são mostrados no quadro 14.
60 45 QUADRO 14 - Disposição dos bits do registrador ADCON0 Registrador: OPTION_REG Endereços: 81h e 181h Permissão R/W R/W R/W R/W R/W R/W U R/W Nome ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/ DONE - ADON Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 (Fonte: MICROCHIP, 2001c) A seguir serão descritas as funcionalidades de cada um dos bits do registrador ADCON 0. ADCS1 E ADCS0 A/D Conversion Clock Select A combinação destes dois bits faz a seleção do clock para o conversor A/D, conforme quadro 15. QUADRO 15 - Seleção de clock para ADCON0 ADCS1 ADCS0 Clock 0 0 Fosc / Fosc / Fosc / FRC (Clock deriva do módulo de conversão A/D interno e módulo RC. (Fonte: MICROCHIP, 2001c) CHS2, CHS1 E CHS0 Analog Channel Select A combinação deste três bits faz a seleção do canal de entrada analógica, conforme quadro 16. QUADRO 16 - Seleção de canal analógico ADCON 0 CHS2 CHS1 CHS0 Canal Selecionado Canal 0, (RA0/AN0) Canal 1, (RA1/AN1) Canal 2, (RA2/AN2) Canal 3, (RA3/AN3) Canal 4, (RA5/AN4) Canal 5, (RE0/AN5) Canal 6, (RE1/AN6) Canal 7, (RE2/AN7) (Fonte: MICROCHIP, 2001c)
61 46 GO/DONE A/D Conversion Status Este bit sinaliza como está o andamento da conversão analógica/digital, sendo que o valor 1 significa que o processo de conversão está em andamento, e o valor 0 significa que a conversão não está em progresso ou terminou. Este bit somente terá função se o bit ADON estiver em 1. ADON A/D On Bit responsável por ligar e desligar a conversão analógico/digital, com o valor 1 liga a conversão e com 0 desliga Registrador OPTION_REG O registrador OPTION_REG é responsável pela configuração de algumas funções internas para operação do microcontrolador. Apesar do nome do registrador ser Option, ele será referenciado pelo nome OPTION_REG, pois os microcontroladores da família PIC mais antigos possuíam uma instrução chamada Option, por isso a necessidade de diferenciar a instrução do registrador. Os 8 bits deste registrador estão dispostos como mostra o quadro 17. QUADRO 17 - Disposição dos bits no registrador OPTION_REG Registrador: OPTION_REG Endereços: 81h e 181h Permissão R/W R/W R/W R/W R/W R/W R/W R/W Nome /RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 (Fonte: MICROCHIP, 2001c) Será descrito em seguida cada flag desse registrador. /RBPU Ativa os resistores de pull-up internos da porta B, sendo que o valor 0, habilita o pull-up para todos os pinos da porta B configurados como entrada, e o valor 1 desabilita os pull-ups; INTEDG Configuração da borda que gerará a interrupção externa no RB0/INT, sendo que com o valor 0, a interrupção ocorrerá na borda de descida do sinal no pino RB0/INT e o valor 1, configura para ocorrer a interrupção na borda de subida;
62 47 T0CS TMR0 Clock Source Select - Seleciona a entrada de clock para o Timer0, sendo que se tiver o valor 0 o clock do timer será proveniente do clock interno do sistema, enquanto que se o valor for 1 o Timer0 terá clock externo pelos pinos RA4/T0CK1; T0SE TMR0 Source Edge Select - Seleciona a borda de sensibilidade do clock externo do Timer0. Com valor 0 o Timer0 será incrementado na borda de subida do sinal externo aplicado em RA4/T0CK1, caso o valor seja 1, então o incremento acontece na borda de descida; PSA Prescaler Assigment - Este bit seleciona a conexão do prescaler. O mesmo pode estar conectado ao Timer0 ou ao watchdog. Assumindo o valor 0 a conexão está com o Timer0, assumindo o valor 1 a conexão está com o watchdog; PS2, PS1 E PS0 Prescaler Rate Select - São os bits responsáveis pela configuração do prescaler, utilizado com o Timer0 ou o watchdog. O prescaler nada é um contador binário, que funciona como divisor programável. Tem como finalidade dividir o sinal de entrada (clock) por um valor determinado, de forma a possibilitar a contagem de valores muito grandes, ou cuja freqüência seja muito alta. No quadro 18 tem-se os valores de pré-divisão do prescaler. QUADRO 18 - Configuração do prescaler - PS0, PS1 e PS2 PS2 PS1 PS0 Timer0 (PSA=0) Watchdog (PSA=1) :2 1: :4 1: :8 1: :16 1: :32 1: :64 1: :128 1: :256 1:128 (Fonte: MICROCHIP, 2001c)
63 Registrador TRISA Este registrador TRISA (Port A Data Direction) está localizado no banco de memória 1 e tem a finalidade de configurar os pinos da porta A. Para todos os pinos a configuração é igual sendo atribuído o valor 0 quando deseja-se que o pino correspondente seja uma saída, e se atribui 1, quando o pino deve ser de entrada. A formatação deste registrador, que ocupa somente 6 bits é demonstrada através do quadro 19. QUADRO 19 - Disposição dos bits do registrador TRISA Registrador: TRISA Endereços: 85h Permissão U U R/W R/W R/W R/W R/W R/W Nome - - Registrador de direção de dados (entrada ou saída) Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Pino PORTA - - RA5 RA4 RA3 RA2 RA1 RA Registrador TRISB (Fonte: MICROCHIP, 2001c) Este registrador TRISB (Port B Data Direction) está localizado no banco de memória 1 e no banco de memória 3, e tem a finalidade de configurar os pinos da porta B. Para todos os pinos a configuração é igual sendo atribuído o valor 0 quando deseja-se que o pino correspondente seja uma saída, e se atribui 1, quando o pino deve ser de entrada. A formatação deste registrador, a disposição dos bits e seus respectivos pinos de entrada/saída é demonstrada através do quadro 20. QUADRO 20 - Disposição dos bits do registrador TRISB Registrador: TRISB Endereços: 86h Permissão R/W R/W R/W R/W R/W R/W R/W R/W Nome Registrador de direção de dados (entrada ou saída) Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Pino PORTC RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 (Fonte: MICROCHIP, 2001c)
64 Registrador TRISC Este registrador TRISC (Port C Data Direction) está localizado no banco de memória 1 e tem a finalidade de configurar os pinos da porta C. Para todos os pinos a configuração é a mesma sendo atribuído o valor 0 quando deseja-se que o pino correspondente seja uma saída, e se atribui 1, quando o pino deve ser de entrada. A disposição dos bits deste registrador, e seus respectivos pinos de entrada/saída são demonstrados através do quadro 21. QUADRO 21 - Disposição dos bits do registrador TRISC Registrador: TRISC Endereços: 87h Permissão R/W R/W R/W R/W R/W R/W R/W R/W Nome Registrador de direção de dados (entrada ou saída) Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Pino PORTC RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC Registrador TRISD (Fonte: MICROCHIP, 2001c) O registrador TRISD (Port D Data Direction) está localizado no banco de memória 1 e tem a finalidade de configurar os pinos da porta D. A configuração é a mesma, sendo atribuído o valor 0 quando deseja-se que o pino correspondente seja uma saída, e se atribui 1, quando o pino deve ser de entrada. A disposição dos bits deste registrador, e seus respectivos pinos de entrada/saída são demonstrados através do quadro 22. QUADRO 22 - Disposição dos bits do registrador TRISD Registrador: TRISD Endereços: 88h Permissão R/W R/W R/W R/W R/W R/W R/W R/W Nome Registrador de direção de dados (entrada ou saída) Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Pino PORTD RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0 (Fonte: MICROCHIP, 2001c)
65 Registrador TRISE O registrador TRISE (Parallel Slave Port Status/Control Bis and Port E Data Direction) está localizado no banco de memória 1 e tem a finalidade de configurar os pinos da porta E. Atribui-se o valor 0 quando deseja-se que o pino correspondente seja uma saída, e atribui-se 1, quando o pino deve ser de entrada. Este registrador utiliza apenas três bits para configuração como entrada e saída, e outros quatro bits para controle de estados dos buffers da porta paralela e seleção do modo de funcionamento do registrador PORTD, configurando a porta D como função de porta paralela ou como entrada de saída genérica, conforme é mostrado no quadro 23 e descrição subseqüente. QUADRO 23 - Disposição dos bits do registrador TRISE Registrador: TRISE Endereços: 89h Permissão R R R/W R/W U R/W R/W R/W Nome IBF OBF IBOV PSPMODE - Entrada/Saída Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Pino PORTE RE2 RE1 RE0 (Fonte: MICROCHIP, 2001c) IBF Input Buffer Full Status - Sinaliza o estado do buffer de entrada, onde o valor 1 mostra que a palavra recebida está na espera para ser lida pela CPU, enquanto que 0 demonstra que a palavra não foi recebida. IBOV Input Buffer Overflow Detected bit Detecta se ocorreu estouro de tamanho de palavra no buffer de entrada. Com o valor 1, ocorreu estouro, caso seu valor for 0, significa que não houve estouro. PSPMODE Parallel Slave Port Mode Select - Demonstra a configuração do port D como função de porta paralela com o valor atribuído sendo 1, ou como entradas e saídas genéricas com o valor 0. Bit2 Define a direção do pino RE2//CS/AN7, onde 1 significa que será utilizado como entrada TTL ou analógica, e 0 como saída TTL; Bit1 Define a direção do pino RE1//WR/AN6, onde 1 significa que será
66 51 utilizado como entrada TTL ou analógica, e 0 como saída TTL; Bit0 Define a direção do pino RE0//RD/AN5, onde 1 significa que será utilizado como entrada TTL ou analógica, e 0 como saída TTL Registrador SSPADD O registrador SSPADD (Syns Serial Port Address) é responsável por armazenar as informações referentes ao endereço de sincronismo da porta serial em seus 8 bits disponíveis. Está localizado no endereço 93h do banco de memória 1 do microcontrolador PIC16F877A Registrador TXSTA O registrador chamado de TXSTA (Transmit Status and Control Register) é o responsável por fazer o controle e configuração da transmissão de dados para comunicação USART. A disposição dos bits deste registrador pode ser verificada no quadro 24. QUADRO 24 - Disposição dos bits no registrador TXSTA Registrador: TXSTA Endereços: 98h Permissão R/W R/W R/W R/W U R/W R/W R/W Nome CSRC TX9 TXEN SYN - BRGH TRMT TX9D Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 (Fonte: MICROCHIP, 2001c) A seguir será feita a descrição dos bits que compõem o registrador TXSTA. CSRC Clock Source Select - Este bit tem a função de fazer a seleção de fonte de clock síncrono. Com o valor 1 o clock interno está selecionado em modo mestre, e com o valor 0 o clock externo está selecionado em modo escravo, sendo que este bit não é utilizado no modo assíncrono; TX9 9-bit Transmit Enable - Bit responsável pela habilitação de modo de transmissão de 9 bits, habilitado esta opção com o valor 1, com o valor 0 está desabilitada a transmissão com 9 bits; TXEN Transmit Enable - Este bit habilita ou desabilita o transmissor,
67 52 sendo 0 para desabilitar e 1 para habilitar; SYNC USART Mode Select - Seleção de modo de operação da USART, sendo o valor 0 para selecionar o modo assíncrono e 1 para selecionar o modo síncrono de transmissão; BRGH High Baud Rate Select - Este bit seleciona o modo de clock, para 0 o modo selecionado é de baixa velocidade, com 1 seleciona-se o modo de alta velocidade. Este bit só tem função no modo assíncrono, sendo que no modo síncrono ele não é utilizado; TRMT Transmit Shift Register Status - Indicador do estado do registrador de deslocamento na transmissão, quando o registrador TSR está cheio este bit tem o valor 0, quando o registrador de transmissão TSR está vazio, este bit possui valor 1; TX9D 9th bit of Transmit Data - Este é o nono bit usado no modo de 9 bits, pode ser utilizado para gerar informação de paridade ou detecção de erros de transmissão Registrador SPBRG O registrador SPBRG (Baud Rate Generator Register) é responsável pelo controle do gerador de baud rate interno da USART. O valor atribuído a registrador, altera o fator de divisão do BRG, resultando nas diferentes freqüências de clock para a USART. As fórmulas de cálculo do baud rate para cada modo possível, é mostrado pelo quadro 25. QUADRO 25 - Fórmulas de cálculo do baud rate SYNC Modo BRGH = 0 BRGH = 1 0 Assíncrono baud rate = Fosc/[64(X+1)] baud rate = Fosc/[16(X+1)] 1 Síncrono baud rate = Fosc/[4(X+1)] N/A (Fonte: MICROCHIP, 2001c) Onde X, é o valor que deve ser armazenado no registrador SPBRG. Deve-se calcular para os dois modos qual o menor erro encontrado, assim
68 53 escolhe-se o valor que deve-se atribuir ao registrador SPBRG Registrador ADCON1 O registrador ADCON1 (Analog to Digital Control Register 1) é o complemento do registrador ADCON0 e tem a função de armazenar mais alguns bits de controle e configuração dos conversores analógico/digital. Como pode-se observar no quadro 26, este registrador utiliza-se de apenas 5 bits, que serão descritos a seguir. QUADRO 26 - Disposição dos bits do registrador ADCON1 Registrador: ADCON1 Endereços: 9Fh Permissão R/W U U U R/W R/W R/W R/W Nome ADFM PCFG3 PCFG2 PCFG1 PCFG0 Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 (Fonte: MICROCHIP, 2001c) A funcionalidade de cada bit é: ADFM A/D Result Format Select O bit ADFM tem a função de selecionar como será armazenado o resultado da conversão analógico/digital nos registradores ADRESL e ADRESH, sendo que o valor 1 neste bit, justifica o resultado a direita destes registradores, e o valor 0 justifica o resultado a esquerda. Para verificação deste processo consultar registradores ADRESL e ADRESH. PCFG3, PCFG2, PCFG1 E PCFG0 A/D Port Configuration Control A combinação destes 4 bits fará a seleção de como será o funcionamento das portas analógicas. O quadro 27 mostra como deve ser feita esta configuração. Onde existe a indicação A, significa que a entrada será analógica, e a indicação D significa que a configuração pode ser de uma entrada ou saída digital.
69 54 PCFG3 a PCFG0 AN7/ RE2 QUADRO 27 - Configuração de entradas analógicas AN6/ AN5/ AN4/ AN3/ AN2/ AN1/ AN0/ VREF+ VREF- Canal/ RE1 RE0 RA5 RA A A A A A A A A VDD VSS 8/ A A A A VREF+ A A A RA3 VSS 7/ D D D A A A A A VDD VSS 5/ D D D A VREF+ A A A RA3 VSS 4/ D D D D A D A A VDD VSS 3/ D D D D VREF+ D A A RA3 VSS 2/1 011x D D D D D D D D VDD VSS 0/ A A A A VREF+ VREF- A A RA3 RA2 6/ D D A A A A A A VDD VSS 6/ D D A A VREF+ A A A RA3 VSS 5/ D D A A VREF+ VREF- A A RA3 RA2 4/ D D D A VREF+ VREF- A A RA3 RA2 3/ D D D D VREF+ VREF- A A RA3 RA2 2/ D D D D D D D A VDD VSS 1/ D D D D VREF+ VREF- D A RA3 RA2 1/2 RA2 RA1 (Fonte: MICROCHIP, 2001c) RA0 Ref Módulos internos Internamente existem algumas divisões para certas funções especiais no microcontrolador. Estas divisões são chamadas de módulos que são controlados por várias registradores especiais. No microcontrolador PIC16F877A encontram-se os seguintes módulos: 02 módulos Temporizadores (TMR0 e TMR2); 02 módulos de captura/comparação (CCP1 e CCP2); 08 módulos conversores analógico/digital; 01 módulo USART; 01 módulo SSP.
70 Instruções de programa Para que o microcontrolador possa manipular os dados de entrada e saída, o mesmo deve possuir um programa, que por sua vez possui uma linguagem de programação e suas devidas instruções para cada função desejada. O microcontrolador PIC16F877A pertence ao grupo dos chips chamado pelo fabricante Microchip de Mid-Range e possui uma largura de memória de 14 bits. Para manipular esta memória existe um conjunto de 35 instruções para arquitetura RISC do PIC. Para estas 35 instruções existe ainda uma subdivisão em instruções orientadas a bytes, instruções orientadas a bit e instruções com operandos literais. As instruções usadas para operações com bytes são mostradas no quadro 28. QUADRO 28 - Lista de instruções orientadas a bytes Comando Operandos Descrição Ciclos ADDWF f, d Adicionar W a f 1 ANDWF f, d Fazer o "E" lógico de W com f 1 CLRF f Escrever 0 em f 1 CLRW - Iniciar o temporizador do watchdog 1 COMF f, d Complementar f 1 DECF f, d DDecrementar f 1 DECFSZ f, d Decrementar f, saltar por cima se der = 0 1 INCF f, d Incrementar f 1 INCFSZ f, d Incrementar f, saltar por cima se der = 0 1 IORWF f, d Fazer o "OU" lógico de W com f 1 MOVF f, d Copiar f para d 1 MOVWF f Copiar W para f 1 NOP - Nenhuma operação 1 RLF f, d Rodar f para a esquerda através do Carry 1 RRF f, d Rodar f para a direita através do Carry 1 SUBWF f, d Subtrair W a f 1 SWAPF f, d Copiar o conteúdo de f para d, trocando a posição dos 4 primeiros bits com a dos 4 últimos XORWF f, d "OU-EXCLUSIVO" de W com f 1 (Fonte: SOUZA, 2001) 1
71 56 As instruções utilizadas em operações com bits são mostradas no quadro 29 e as instruções utilizadas em operações com operadores literais são mostradas no quadro 30. QUADRO 29 - Lista de instruções orientadas a bits Comando Operandos Descrição Ciclos BCF f, b Pôr a "0" o bit b de f 1 BSF f, b Pôr a "1" o bit b de f 1 BTFSC f, b Testar o bit b de f, saltar por cima se for = 0 1 BTFSS f, b Testar o bit b de f, saltar por cima se for = 1 1 (Fonte: SOUZA, 2001) QUADRO 30 - Lista de instruções com operadores literais Comando Operandos Descrição Ciclos ADDLW k Adicionar W a uma constante 1 ANDLW k Fazer o "E" lógico de W com uma constante 1 CALL k Chamar um programa 2 CLRWDT - Iniciar o temporizador do watchdog 1 GOTO k Saltar para o endereço 2 IORLW k Fazer o "OU" lógico de W com uma constante 1 MOVLW k Escrever constante no registo W 1 RETFIE - Retorno de uma rotina de interrupção 2 RETLW k Retorno de um subprograma com uma constante em W 2 RETURN k Retorno de um subprograma 2 SLEEP - Modo de repouso 1 SUBLW k Subtrair W a uma constante 1 XORLW k "OU- EXCLUSIVO" de W com uma constante 1 (Fonte: SOUZA, 2001) 2.8 Conclusão Neste capítulo foi possível conhecer e diferenciar as características básicas de alguns microcontroladores existentes no mercado, bem como especificar o microcontrolador PIC16F877A utilizado nos protótipos. As informações relatadas, principalmente no que diz respeito aos registradores e a conexão física de pinagem,
72 57 são utilizadas em todos os capítulos seguintes, por isso, foi de essencial importância para o conteúdo do trabalho, pois através do conhecimento adquirido com as pesquisas realizadas, foi possível a execução da parte prática de montagem ou seja, a montagem dos protótipos de hardware a implementação dos algoritmos de controle.
73 58 3 AQUISIÇÃO DE SINAIS Este capítulo trata das características dos sinais elétricos, as formas de conversão utilizada pelos microcontroladores PIC e como os mesmos tratam estes sinais para que seja possível realizar as tarefas programadas em seu software. 3.1 Sinais analógicos Para que os microcontroladores possam tomar as ações programadas em seus softwares, é necessário que se obtenha do mundo externo, sinais elétricos que correspondam as variáveis de processo, como posição, temperatura, pressão, botões, acionamento de motores ou lâmpadas, entre outros. É necessário, ainda, saber como externar estes sinais após o devido tratamento pelo microcontrolador. Os microcontroladores são capazes de tratar sinais elétricos de duas formas básicas: sinais digitais e sinais analógicos. A família de microcontroladores da Microchip da série PIC, trata somente sinais elétricos do tipo TTL, ou seja, com tensão máxima de 5 Volts. Sinais analógicos são, em geral, contínuos no tempo e na sua amplitude. A continuidade no tempo significa que o sinal existe para qualquer instante, dentro do intervalo de tempo considerado. A continuidade na amplitude significa que o sinal pode assumir qualquer valor, dentro de sua faixa dinâmica (a faixa dentro da qual o sinal pode assumir). É impraticável a aquisição (para posterior processamento e/ou armazenamento) de sinais contínuos e variantes no tempo em todos os instantes de sua evolução. Necessitam, portanto, ser convertidos de tempo em tempo (mas sem perda de informação), numa taxa que deve ser compatível com a máxima freqüência do
74 59 sinal. A freqüência na qual o sinal é adquirido (para conversão para valor digital) é chamada freqüência de amostragem. Isto acarreta a primeira discretização introduzida neste processo: a discretização no tempo. Pode-se observar na figura 17 o sinal analógico ao longo do tempo e na figura 18 o mesmo valor analógico com pontos de coleta de valores, percebe-se que quanto menor for o intervalo de coleta, menor será o erro causado por isso (ALMEIDA, 2000). FIGURA 17 - Sinal analógico (Fonte: ALMEIDA, 2000) FIGURA 18 - Sinal analógico discretizado (Fonte: ALMEIDA, 2000) 3.2 Sinais digitais Muitos sistemas utilizam-se de sinais digitais para o controle de processos. Sinais digitais são aqueles que se comportam de forma lógica, sendo atribuído a eles apenas dois estados possíveis, pode-se chamá-los de valores verdadeiros ou falsos, sim ou não, 1 ou 0. No caso dos microcontroladores PIC estes sinais terão níveis de tensão de 5 Volts para nível lógico 1 e 0 Volt para nível lógico 0. O comportamento de um sinal digital em relação ao tempo é mostrado pela figura 19, e se caracteriza pelos estados
75 60 de presença de sinal ou não presença de sinal (ALMEIDA, 2000). FIGURA 19 - Sinal digital (Fonte: ALMEIDA, 2000) Nos protótipos construídos serão utilizados os hardwares de teclado, display de 7 segmentos e display LCD para exemplificar como é o tratamento destes sinais pelo microcontrolador PIC16F877A. 3.3 Conversores analógico/digital Muitas variáveis de processo que serão processadas por sistemas digitais são de natureza analógica. Isto implica na necessidade de dispositivos especiais, cujas funções são a conversão, ou transformação, da amplitude analógica medida para um valor numérico, digital (conversores analógico/digitais) ou vice-versa (conversores digital/analógicos), para fazer a interface entre estes dois sistemas de medição. O microcontrolador PIC16F877A possui internamente 8 canais de leitura e conversão analógico para digital. Como sabe-se os microcontroladores trabalham internamente somente com sinais digitais, como foi descrito nos registradores especiais. Por isso é necessário realizar a conversão dos sinais analógicos em sinais digitais, para que as operações lógicas possam ser realizadas pela CPU do microcontrolador. Os elementos conversores analógico-digital podem ser interligados externamente ao microcontrolador ou já existirem previamente encapsulados no mesmo chip do microcontrolador, como é o caso do microcontrolador PIC16F877A. A função deste conversor é realizar de tempos em tempos uma leitura do
76 61 nível de tensão no sinal analógico e converter este valor em um número com uma determinada quantidade de bits, quantidade esta que indica a resolução do conversor analógico-digital. Como é impraticável a aquisição do sinal a todo instante de sua evolução, também é, a conversão para digital do sinal adquirido com uma resolução infinita, uma vez que isto implicaria em um número digital de largura infinita. Significa que, para que se possa armazenar e processar o número convertido para digital com um número de bits praticável (8, 10, 12 ou 16 bits), deve-se, aceitar um erro de discretização. A cada instante discreto de conversão, o sinal é aproximado (arredondado ou truncado) para o valor permissível mais próximo. Os valores discretos estão igualmente espaçados ao longo de toda a faixa dinâmica de conversão, e o número de valores discretos é dependente do número de bits (largura da palavra) do conversor usado. O conceito de resolução está ligado ao passo de discretização P, dado por: P = (F * D) / 2 * n Eq. 1 Para uma mesma faixa dinâmica de conversão, quanto maior a largura da palavra n, menor será o passo P, e melhor será a resolução, conforme mostra a figura 20. FIGURA 20 - Gráfico da conversão de analógico para digital (Fonte: ALMEIDA, 2000) Como é sabido, os sistemas microcontrolados trabalham com sinais digitais binários, portanto para fazer a leitura de um sinal analógico é necessário que haja um
77 62 conversor de sinais analógicos em sinais digitais, para que se possa manipular estas variáveis. Existem muitos conversores A/D externos que podem ser interligados aos microcontroladores, mas no caso do microcontrolador PIC16F877A, o mesmo já possui internamente oito canais de entrada analógica com resolução de 10 bits, podendo-se assim variar a tensão de 0 a 5 Volts nos pinos AN0, AN1, AN2, AN3, AN4, AN5, AN6, AN7 e obter o valor convertido através dos registradores ADRESH e ADRESL. A responsabilidade pela configuração e controle dos conversores fica a cargo dos registradores ADCON0 e ADCON1, conforme bits já demonstrados neste trabalho. O resultado da conversão em 10 bits pode ser acessado através dos registradores ADRESH que armazena os bits mais significativos e ADRESL que armazena os bits menos significativos conforme o alinhamento escolhido no bit ADFM do registrador ADCON1. Quando ao bit ADFM for atribuído o valor 1 significa que o alinhamento dos 10 bits da conversão A/D será à direta, e quando for atribuído 0 será a esquerda. O alinhamento ficaria justificado como é demonstrado pela figura 21. FIGURA 21 - Justificação dos bits nos registradores ADRESL e ADRESH (Fonte: MICROCHIP, 2001c) Nos conversores A/D internos ao microcontrolador, utiliza-se uma tensão de
78 63 referência que serve de span para escalar o sinal de saída do conversor, ou seja as saídas do conversor estarão todas em 1 quando a tensão de entrada for igual a tensão de referência utilizada. Para fazer a leitura de sinais analógicos é preciso escalonar o sinal de entrada sendo que no caso do PIC16F877A, os conversores A/D são implementados utilizando a técnica de aproximação sucessiva, com resolução máxima de 10 bits e clock selecionável pelo usuário e múltiplas entradas multiplexadas, ou seja, a conversão é feita individualmente em cada canal. Os tipos mais importantes de conversores AD são: Rampa ou Integração (simples e dupla); Aproximação Sucessiva; Paralelo. Por se tratar da forma utilizada pelos microcontroladores PIC, é descrito a seguir como funciona um conversor A/D por aproximação sucessiva. No conversor de rampa (integração) há uma dependência com os valores de resistores e capacitores. Se fosse substituído o integrador analógico por um integrador digital, construído com um contador crescente cuja saída alimenta um conversor digital-analógico, a saída deste integrador digital será uma rampa discretizada (em escadinha) que será aplicada à entrada do comparador para a comparação com Vi. Não há a necessidade da chave eletrônica, pois o zeramento (reset) do integrador digital será feito simplesmente pelo reset de seu contador associado. O que este integrador digital faz (bem como seu equivalente analógico) é uma busca linear, ou seja, parte de um valor mínimo (zero), crescendo linearmente na busca de um valor comparável com a tensão desconhecida. Se o valor instantâneo de Vi sendo convertido for baixo dentro de sua faixa dinâmica, a busca será rápida. Digitalmente, pode-se fazer a busca de forma mais eficiente: em vez de usar um simples contador crescente, que faz uma busca linear, pode-se utilizar um registrador (ou contador) de aproximação sucessiva, que permite uma busca binária. Um diagrama em blocos deste tipo de conversão é mostrado na figura 22.
79 64 FIGURA 22 - Diagrama em blocos de conversor A/D por aproximação sucessiva (Fonte: ALMEIDA, 2000) No início de uma conversão (iniciada pela entrada start), o valor do registrador de aproximação sucessiva de n bits é ajustado no valor binário (somente o bit bn-1 = 1), que corresponde à metade da faixa de valores com n bits. Sua saída (digital) serve de entrada para o conversor D/A, cuja referência é VRef. Para este valor digital inicial, a saída (analógica) do DAC é metade de VRef. Esta saída do DAC é comparada com Vi pelo comparador com saída compatível TTL. Se comp = 0, significa que Vi localiza-se na sub-faixa inferior (primeira metade) de VRef. Caso contrário, na superior, e podemos prosseguir a busca restringindo-a apenas à sub-faixa correspondente. Isto é feito fixando (e não mais alterando) o valor do bit mais significativo bn-1 a 0 ou 1, de acordo com o indicado pela comparação comp. Para o esquema acima, basta fazer bi = comp. O próximo passo será o teste do bit bn-2. Faz-se bn-2 = 1 e testa-se comp. Se comp = 0 (1), significa que Vi situa-se na sub-faixa (metade) inferior (superior) da sub-faixa anteriormente encontrada. Fixase, então, bn-2 = comp e pode-se prosseguir para o teste dos demais bits, até o menos significativo. Como independente do valor de Vi, a busca por aproximação sucessiva (ou binária) leva um tempo fixo, dependente somente do número n de bits (e, claro, do clock). Como o tempo de conversão deste ADC por aproximação sucessiva é determinístico (plenamente conhecido e independente do valor instantâneo de Vi) e pequeno, ele é um dos mais utilizados, especialmente em aplicações de tempo real
80 65 como controle e automação. Como exemplo, suponha um conversor de 12 bits com um clock de 12 MHz. Se conseguirmos realizar cada teste em um só período de clock, a conversão levará 1 µseg. 3.4 Conclusão Pôde-se perceber neste capítulo que é de fundamental importância conhecer que tipos de sinais estarão sendo tratados durante o projeto de um sistema microcontrolado, pois esta é a razão dos sistemas existirem para realizar a leitura, tratar e externar estes sinais com o tratamento requerido. O conhecimento adquirido neste capítulo, trouxe a base necessária para a definição dos componentes de hardwares a serem utilizados nos protótipos, o que o tornou de essencial para a continuidade do trabalho, pois sem este conhecimento seria impossível a definição dos componentes necessários para os protótipos.
81 66 4 ROTINAS DE GRAVAÇÃO DE MICROCONTROLADORES PIC Para colocar um microcontrolador efetivamente em funcionamento é necessário transferir um programa implementado e compilado para o mesmo, caso contrário o mesmo não terá função alguma. Faz-se isso através de algumas rotinas de programação e gravação em microcontroladores PIC. Para realizar a gravação de microcontroladores da série PIC, é necessário que se tenha no mínimo: 01 Computador; 01 Programador de PICs; Software editor/compilador. A Microchip disponibiliza gratuitamente em seu site o software MPLab, cujo qual foi utilizado neste trabalho na versão Isto não impede que outros softwares compiladores para microcontroladores PIC possam ser utilizados para o mesmo fim, desde que sejam devidamente adaptados. O gravador utilizado para realização dos protótipos foi o PICSTART Plus, e pode ser visualizado na figura 23. FIGURA 23 - Gravador PICSTART Plus
82 67 A interligação deste programador se dá através da porta serial do microcomputador. Deve-se observar a pinagem do microcontrolador e do gravador para soquetagem, pois a ligação invertida pode danificar permanentemente o microcontrolador. 4.1 Software de gravação MPLab O software MPLab, versão 7.01, foi utilizado para criação, edição, simulação e gravação dos códigos fontes para implementar os sistemas nos protótipos realizados. Após a ligação e alimentação do gravador deve-se executar o software MPLab, sendo que é aberta uma tela de apresentação do software e em seguida abre-se uma tela com a interface inicial do MPLab, conforme observa-se na figura 24. FIGURA 24 - Tela inicial do MPLab versão 7.01 O MPLab trabalha com o conceito de projetos onde pode-se criar um projeto e vários arquivo fonte dentro deste. Antes de criar um projeto deve-se selecionar qual o microcontrolador que deseja-se gravar. Para isto deve-se acessar o menu Configure Select Device e através da única caixa de seleção existente nesta tela escolhe-se o dispositivo desejado, sendo que o mesmo ficará indicado no rodapé da tela de edição. A figura 25 mostra a seleção do microcontrolador PIC16F877A, que é utilizado nos protótipos propostos.
83 68 FIGURA 25 - Seleção de dispositivo Após a seleção do dispositivo pode-se criar um novo projeto clicando no ícone New Project, ou acessar esta opção através do menu Project New. Feito isto abrirá uma tela onde deve-se informar o nome do projeto e o local onde o mesmo estará armazenado. Em seguida aparece a tela de projeto com o menu de arquivos para inclusão de arquivos no projeto, podendo estes serem arquivos fonte, cabeçalho, objetos, bibliotecas, link com scripts ou outros arquivos. Para incluir arquivos pré-existentes deve-se clicar com o botão direito do mouse e através do poupop menu selecionar Add Files..., conforme a figura 26, selecionando então o arquivo desejado. FIGURA 26 - Adiciona arquivos ao projeto Caso deseje-se criar um novo arquivo de código fonte em assembly deve-se
84 69 acessar o menu File New, ou o botão New File, aparecendo a tela onde o código pode ser escrito. A versão 7.01 do MPLab traz algumas diferenças em relação as versões anteriores, uma delas é a diferenciação do código fonte, onde as variáveis, comandos, comentários e outros aparecem em cores diferenciadas, facilitando a leitura do código fonte, que em versões anteriores feito de forma monocromática em preto e branco. Após feito a escrita do código fonte em assembly é necessário compilar o programa, para isso deve-se acessar o menu Project Build All, conforme é verificado na figura 27, assim será executada a compilação do mesmo, mostrando durante este processo o andamento da compilação através da tela que é mostrada na figura 28, gerando um relatório com as mensagens de erros, avisos e se a compilação foi concluída com sucesso. FIGURA 27 - Compila arquivo assembly FIGURA 28 - Andamento da compilação do arquivo assembly
85 70 Corrigindo-se todos os erros, se existirem, deve-se fazer a seleção do gravador que será utilizado através do menu Programmer Select Programmer 1 PICSTART Plus, conforme é demonstrado pela figura 29. FIGURA 29 - Seleção do gravador Deve-se ter muita atenção em relação a soquetagem do microcontrolador ao gravador, pois a inversão de pinagem pode danificá-lo. No gravador e no próprio invólucro do microcontrolador pode-se observar que existe a indicação do pino número 1, que devem coincidir no momento da gravação. Sugere-se que o mesmo somente seja soquetado, tanto no processo de gravação quanto no projeto final, com a fonte de alimentação do circuito desligada. Depois de selecionado o programador, e estando devidamente alimentado e conectado a porta serial do computador, deve-se habilitar o mesmo, através do menu Programmer Enable Programmer, como pode-se observar na figura 30. FIGURA 30 - Habilitação do programador
86 71 Se não houverem problemas em relação a conexão com o programador, neste momento habilitar-se-á algumas novas opções na barra de ferramentas, conforme a figura 31. FIGURA 31 - Botões de comando do programador Estes novos botões habilitados significam: Blank Check Verificar se o microcontrolador está em branco, sem gravação alguma; Read Faz a leitura do programa gravado no microcontrolador, desde que este não esteja com o bit de segurança habilitado, o que não impede a gravação de outro programa sobrescrevendo o arquivo existente; Program Envia o arquivo compilado para o microcontrolador; Verify Faz uma verificação de integridade física no microcontrolador, verificando se não há possíveis problemas com o mesmo; Erase Flash Device Se o microcontrolador escolhido tiver memória flash, a mesma será apagada com este comando. Clicando-se no botão Program, referente a gravação do microcontrolador, deve-se aguardar por alguns segundos até que o mesmo termine a operação, o que será indicado através de mensagem de gravação bem sucedida, caso seja necessário cancelar a gravação, esta opção estará disponível em software, portanto nunca deve-se desligar o gravador, desconectar os cabos de ligação ou retirar o microcontrolador durante o processo de gravação pois danos sérios podem acontecer ao dispositivo danificando-o permanentemente.
87 Conclusão Pôde-se, através deste capítulo, demonstrar como é a criação, edição e compilação de um código fonte em assembly utilizando o software MPLab. Além disso, demonstrou-se a forma de gravação de um microcontrolador utilizando o gravador de microcontroladores PICSTART Plus. Com isso foi possível ter a base de conhecimento mínima necessária para implementação prática dos projetos propostos em protótipos de hardware. Todos os algoritmos de controle dos processos descritos nos capítulos seguintes foram implementados como descrito neste capítulo, sendo que a principal dificuldade encontrada foi a dificuldade de obter referências bibliográficas que descrevessem a versão 7.01 do MPLab, portanto foi necessário realizar uma comparação com as versões mais antigas, aproveitando algumas semelhanças e descobrindo na prática algumas características próprias desta versão. O capítulo teve grande aproveitamento no trabalho, pois foi possível realizar efetivamente a gravação e criação de algoritmos para controle de processos utilizando o microcontrolador PIC16F877A através das informações adquiridas.
88 73 5 ELEMENTOS DE HARDWARE UTILIZADOS Este capítulo tem o propósito de demonstrar as características dos hardwares utilizados em cada módulo criado, assim como, demonstrar através de esquemas eletrônicos, como os mesmos foram integrados entre si, visando a montagem final do protótipo. Para demonstrar a programação de sistemas utilizando-se microcontroladores PIC, fez-se necessário a montagem de alguns protótipos, visando demonstrar na prática o conhecimento adquirido nos capítulos anteriores. Para facilitar a montagem e para facilitar possíveis modificações de hardware, o protótipo foi dividido em módulos, como segue: Módulo central do microcontrolador; Módulo fonte 5 Volts; Módulo de entrada digital com teclado matricial de 24 teclas; Módulo de entrada analógica com potenciômetro simulador; Módulo de saída digital com displays de 7 segmentos; Módulo de saída digital com display de cristal líquido; Módulo de comunicação serial RS Módulo central do microcontrolador Para interligação dos outros módulos de hardware com o microcontrolador foi montado uma placa eletrônica com bornes de ligação com acesso a todos os pinos do microcontrolador, podendo assim, fazer a ligação mais conveniente conforme o projeto em que se esteja trabalhando.
89 74 Para funcionamento do microcontrolador são necessários alguns componentes básicos, que são: cristal oscilador, capacitores para cristal oscilador, resistor de MCLR, fonte de alimentação de 5 Volts. O cristal oscilador utilizado é do tipo de alta velocidade (HS High Speed), e tem função e gerar o clock para o sistema. Sua característica é gerar alta freqüência quando alimentado com 5 Volts. Nos protótipos foi utilizado um cristal oscilador de 20 MHz, ou seja pulsos por segundo. Pode-se utilizar quatro tipos de geradores de clock para sistemas microcontrolados por PIC, sendo eles: LP Cristal de baixa potência; XT Cristal ou ressonador de baixa velocidade; HS Cristal ou ressonador de alta velocidade; RC Oscilador formado por Resistor e Capacitor externos Estes componentes básicos fazem parte do módulo central do microcontrolador e estão interligados conforme o esquema eletrônico da figura 32 e a montagem em circuito impresso pode ser visualizada através da figura 33. FIGURA 32 - Interligação cristal oscilador
90 75 FIGURA 33 - Módulo central do microcontrolador Após a montagem de todos os módulos separadamente chegou-se ao protótipo demonstrado pela figura 34. FIGURA 34 - Protótipo final
91 Módulo fonte de alimentação Assim como todo sistema eletrônico, é necessário que se obtenha tensão de alimentação aos circuitos, seja por meio de fontes ligadas a rede elétrica ou baterias. Como já foi descrito, os microcontroladores funcionam com tensão entre 3 Volts a 5 Volts, por isso, para os protótipos optou-se pela construção de uma fonte 5 Volts conectada a rede elétrica, o que não impede que os circuitos possam ser alimentados por bateria, porém neste caso, deve-se observar o consumo do sistema e as limitações de corrente da bateria utilizada. Pode-se observar a fonte construída através da figura 35. FIGURA 35 - Módulo fonte de alimentação 5 Volts 5.3 Módulo teclado matricial Grande parte dos sistemas possuem teclas como um dos principais meios de interface de entrada de sinais para microcontroladores. Seu princípio de funcionamento baseia-se em chavear uma tensão, geralmente Vcc de alimentação até uma porta de entrada do microcontrolador, sendo reconhecido por software o estado da entrada digital. A configuração de teclas individuais ligadas diretamente a uma porta do microcontrolador pode ser visualizado pelo esquema eletrônico da figura 36.
92 77 FIGURA 36 - Interligação de teclado com ligação individuais Seria muito simples se este chaveamento de tensão acontecesse de forma direta, mas quando uma tecla é pressionada existe um fenômeno chamado de debounce, onde são gerados vários pulsos de ruído que atingem a entrada do microcontrolador, podendo provocar a leitura sucessiva da mesma tecla tendo esta sido pressionada somente uma vez. Para eliminar este problema deve ser gerado em software um filtro que só dispara o evento relacionado a tecla quando a mesma permanecer pressionada por um determinado período de tempo. O fenômeno debounce pode ser visualizado através da figura 37, onde podese perceber os picos de tensão no momento em que uma tecla é pressionada. FIGURA 37 - Efeito debouce em teclados (Fonte: ALMEIDA, 2000)
93 78 Para algumas aplicações pode-se utilizar uma tecla para cada porta de entrada, como mostrado na figura 36, porém esta configuração não é interessante em sistemas que utilizam várias teclas, pois seriam necessárias muitas portas somente para o controle do teclado, por isso, é comumente utilizado uma configuração de teclados matriciais, onde a varredura de teclas é feitas através de linhas e colunas, minimizando a utilização de várias entradas do microcontrolador. No caso do protótipo implementado, foi utilizada a configuração de teclado matricial onde utiliza 3 portas de saída (RC1, RC2 e RC3) para controlar as colunas e 8 portas de entrada (RA0, RA1, RA2, RA3, RA5, RE0, RE1 e RE2) para controlar as linhas independentemente. O software eleva o nível de tensão nas portas de saída, uma e cada vez, e faz a varredura das portas de entrada. Pode-se verificar esta forma de varredura através da figura 52, que demonstra o nível de tensão de cada porta de saída, e demonstra como é o comportamento das portas de entrada quando a tecla número 6 é pressionada. FIGURA 38 - Interligação de teclado matricial
94 79 Conforme a tecla pressionada somente uma entrada receberá a tensão de 5 Volts. Como em software tem-se o controle de qual coluna está energizada no momento, sabe-se através do nível de tensão no pino de entrada qual a tecla foi pressionada. A configuração de ligação física do teclado matricial de 28 teclas utilizado no protótipo é mostrado na figura 38. O teclado matricial utilizado nos protótipos foi reaproveitado de um sistema inutilizado. Na figura 39 pode-se observar suas características físicas. FIGURA 39 - Teclado matricial utilizado 5.4 Módulo de saída digital com display de 7 segmentos Os displays de 7 segmentos são muito utilizados devido a sua visualização ser clara e de tamanho compatível principalmente com aplicações industriais ou locais onde a visualização pelos usuários é feita a uma certa distância do display, como por exemplo em locais de atendimento ao público, placares eletrônicos de praças esportivas, indicadores de variáveis de processos na indústria entre outros. O display de 7 segmentos, nada mais é do que 8 diodos emissores de luz (LEDs) encapsulados em uma disposição de segmentos, que formam os números de 0
95 80 à 9 além do ponto decimal. Para identificação de cada segmento é padronizado uma letra como referência que varia de a até g, conforme pode-se observar na figura 40, o ponto decimal recebe a identificação com as letras dp. No mercado a cor predominante ainda é o vermelho, porém pode-se encontrar displays com cores diversas como azul, verde e amarelo, estes sendo muito pouco utilizados. FIGURA 40 - Display de 7 segmentos (Fonte: SOUZA, 2001) Para acionamento do display é preciso ligar um pólo comum a todos os segmentos e aplicar a tensão no pino referente aquele que deseja-se acender. Como são leds, cada um destes segmentos é formado por Anodo e Catodo, porém, existem displays com pólo Anodo Comum e outros com pólo Catodo Comum, isto deve ser observado na montagem dos projetos. No caso dos protótipos montados os displays são todos de Anodo comum, ou seja o pólo negativo é comum a todos e aplica-se 5 Volts no terminal referente ao segmentos que se deseja acender, sempre levando-se em consideração um resistor para cada segmento, visando a limitação de corrente no led. Para acionamento dos displays de 7 segmentos foi utilizado um driver BCD 3161E, onde o mesmo recebe 4 bits e conforme a combinação destes, é gerado a saída em decimal, pronta para acionar os displays. A figura 41 mostra o esquema eletrônico de interligação dos CIs drivers e dos displays de sete segmentos montados para o protótipo.
96 81 FIGURA 41 - Interligação de displays de 7 segmentos Optou-se por utilizar estes drivers devido a necessidade de liberar portas de saída do microcontrolador, visando a utilização dos displays de sete segmentos e de cristal líquido no mesmo protótipo, evitando assim a montagem de protótipos separados para cada tipo de display. 5.5 Módulo de saída digital com display de cristal líquido LCD Os displays de LCD são interfaces de saída muito úteis e estão sendo muito aplicados, pois permitem grande concentração de informações em pequeno espaço físico, além de terem baixo consumo de energia. Um dos fatores negativos é a difícil visualização à distância e o custo do módulo, que ainda é elevado. Os displays LCD são divididos basicamente em módulos de caracteres e módulos gráficos. Os dois tipos são vendidos juntamente com um controlador dedicado a cada fabricante, porém a interface destes com outros sistemas segue padrões da indústria eletrônica para grande parte dos módulos existentes no mercado. Os módulos LCD gráficos são encontrados com resoluções de 122x32, 128x64, 240x64 e 240x128 dots pixel, e geralmente estão disponíveis com 20 pinos para conexão. Nos displays LCD de caracteres, deve-se levar em conta: Resolução do caracter;
97 82 Quantidade de caracteres por linha; Quantidade de linhas. No protótipo montado foi utilizado um display LCD de caracteres com resolução de 5 pixels x 8 pixels, com 16 caracteres por linha e 2 linhas disponíveis. A figura 42 mostra o exemplar de módulo LCD de caracter utilizado no protótipo proposto. FIGURA 42 - Display de cristal líquido LCD Para melhorar a visualização dos dados mostrados nos módulos, os mesmos podem possuir ajuste de constraste e iluminação de fundo (backlight). Estes módulos utilizam-se de controladores próprios, permitindo a ligação com outros sistemas através de barramento de pinos que contém a ligação para bits de controle e bits de dados do módulo LCD. A pinagem do módulo LCD utilizado no protótipo montado pode ser visualizado no quadro 31. QUADRO 31 - Pinagem de módulos displays LCD Pino Função Descrição 1 Alimentação Terra ou GND 2 Alimentação Vcc ou +5V 3 Vadj Tensão para ajuste de constraste 4 RS Seleção 1 Dado, 0 Instrução 5 R/W Seleção 1 Leitura, 0 Escrita 6 E Chip Select 1 ou (1 0) Habilita, 0 - Desabilitado
98 83 7 Bo LSB 8 B1 9 B2 Barramento 10 B3 de 11 B4 Dados 12 B5 13 B6 14 B7 MSB 15 A (Quando existir) Anodo para iluminação backlight 16 K (Quando existir) Catodo para iluminação backlight (Fonte: ILETT, 1997) Os módulos LCDs são projetados para conectar-se com a maioria dos microcontroladores disponíveis no mercado, bastando para isso que este microcontrolador atenda as temporizações de leitura e escrita de instruções e dados, fornecido pelo fabricante do módulo. Pode-se configurar duas formas de barramento de dados para o LCD de caracter, sendo possível fazer a comunicação com 4 ou 8 bits de dados, além de utilizar mais três sinais de controle sendo: ENABLE (habilita), RS (reset/set) e R/W (leitura/escrita). No protótipo implementado foi utilizado a forma de envio de dados em comunicação com 4 bits. Para que seja mostrado um determinado caracter no display, ou para que o display tome alguma ação, deve-se enviar os bits de controle e os bits no barramento de dados conforme quadro 31. Toda vez em que for alimentado o módulo LCD, deve ser executado um procedimento de inicialização, que consiste no envio de uma seqüência de instruções para configurar o modo de operação do módulo. Na rotina de inicialização deve-se enviar ao display as informações em hexadecimal de 4 bits conforme o quadro 32. QUADRO 32 - Controle de inicialização de LCD Seqüência Valor (Fonte: ILETT, 1997)
99 84 Recomenda-se um delay mínimo de 15 ms, para as duas primeiras instruções e as demais podem ser escritas após checar o Busy Flag. Os códigos de dados ou de instruções só serão repassados pelo processador do módulo após a descida do sinal do Enable (pino 6). Para ajustar a velocidade de comunicação entre o microcontrolador e o módulo LCD pode-se intercalar uma rotina de atraso de aproximadamente 15 ms entre as instruções ou, fazer a leitura do Busy Flag antes do envio de cada instrução e só enviar quando o mesmo for 0. Cada caracter do módulo recebe um endereço na DDRAM (em hexadecimal) do próprio módulo LCD, conforme o quadro 33 que demonstra o endereçamento para o módulo utilizado. QUADRO 33 - Endereçamento caracteres no display LCD LCD 16x Linha A 8B 8C 8D 8E 8F Linha 2 C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF (Fonte: ILETT, 1997) Grande parte dos módulos LCDs já possuem em sua memória uma tabela de caracteres muito vasta, porém o usuário pode criar seus próprios caracteres, desde que configure a CGRAM, que permite a construção de até 8 caracteres especiais. Os caracteres pré-existentes na memória dos módulos LCD, são caracteres universais, e podem ser visualizados pelo quadro 34, que demonstra também a seqüência de bits necessários para o acionamento de um determinado caracter. Por exemplo, como cada caracter é formado por 35 pixels, ou 5x7, onde o pixel deva aparecer deve-se atribuir o valor lógico 1, e onde deva apagar deve-se atribui o valor lógico 0. O quadro 35 demonstra a criação de um caracter especial que procura criar um caracter parecido com o desenho de uma pessoa. Os três últimos bits devem sempre ficar em 0 e a última linha também para que seja possível a visualização do cursor. Para enviar um determinado caracter ao display, deve-se: Executar a rotina de inicialização sempre que o módulo for alimentado; Habilitar o bit RS para 1;
100 85 Definir o caracter a ser mostrado nos 8 ou 4 bits de dados conforme tabela de caracteres; Pulsar uma vez o bit ENABLE para 0, neste momento deve aparecer o caracter desejado. QUADRO 34 - Caracteres pré-existentes em módulos de display LCD (Fonte: ILETT, 1997) QUADRO 35 - Criação de caracter personalizado Endereço Caracter Dado 40 X X X ( X X ( ) 42 X X X ( ) 43 X ( ) 44 X X X X X ( ) 45 X ( ) 46 X X ( ) 47 X X ( ) 48 ( ) (Fonte: MEINCKE, 2000)
101 86 Um resumo das instruções mais utilizadas na comunicação com módulos LCD, pode ser verificado através do quadro 36. QUADRO 36 - Instruções mais utilizadas em módulos de display LCD Descrição Modo RS R/W Código Hex Display Liga (sem cursor) 0 0 0C Desliga 0 0 0A / 08 Limpa com Home cursor Controle do cursor Liga 0 0 0E Deslocamento do cursor ao entrar com caracter Desliga 0 0 0C Desloca para Esquerda Desloca para Direita Cursor Home Cursor Piscante 0 0 0D Cursor com Alternância 0 0 0F Para a esquerda Para direita Deslocamento Mensagem ao entrar com caracter Para a esquerda Para direita Deslocamento Mensagem sem entrada de caracter Para a esquerda Para direita 0 0 1C End. da primeira posição Primeira Linha Segunda Linha 0 0 C0 (Fonte: MEINCKE, 2000) Para montagem e realização dos testes foi utilizado um display do fabricante APEX, com duas linhas de 16 caracteres. A comunicação nos protótipos foi feito utilizando-se a técnica de 4 bits, e a ligação física do mesmo pode ser observada na figura 43.
102 87 FIGURA 43 - Interligação do display LCD 5.6 Módulo de sinal analógico Em sistemas que utilizam microcontroladores, muitas vezes é necessário a leitura de sinais analógicos, vindos de transdutores, sensores e transmissores analógicos, que podem transmitir variáveis como pressão, vazão, temperatura, posição, ph, condutividade entre outros. No protótipo montado para exemplificar o tratamento destas variáveis pelo microcontrolador PIC16F877A, foi utilizado um potenciômetro de 10 KΩ, que varia a tensão aplicada a uma entrada analógica do microcontrolador simulando u transmissor genérico. A ligação elétrica do simulador é mostrada na figura 44.
103 88 FIGURA 44 - Interligação do módulo de entrada analógica 5.7 Módulo de comunicação serial RS-232 Muitos microcontroladores não possuem implementado em hardware as rotinas de transmissão e recepção serial, sendo necessário implementar por software esta comunicação. O microcontrolador PIC16F877A já possui em hardware as rotinas de comunicação USART interna, sendo necessário incluir um circuito integrado responsável por transformar os sinais nas tensões padrão de comunicação serial, o circuito MAX232. A USART (Interface Serial Universal síncrona/assíncrona), também é chamada de SCI (Interface de comunicação Serial). O núcleo da USART é composto de dois registradores de deslocamento, responsáveis pela conversão paralelo/serial (transmissão), chamado internamente de TSR, e serial/paralelo (recepção), chamado internamente de SFR.
104 89 A existência de dois registradores de deslocamento possibilita o funcionamento Full-Duplex, ou seja, a transmissão e recepção de dados de forma simultânea. No entanto, no modo síncrono somente pode-se trabalhar no modo Half- Suplex (a transmissão e a recepção são feitas alternadamente). Encontra-se também na USART um gerador de clock para os registradores de deslocamento. Esse gerador é chamado de BRG (Baud Rate Generator) e consiste em um divisor cujo clock provém indiretamente do clock de sistema (Fosc). Os sinais transmitidos e recebidos são ligados nos pinos RB1 e RB2 do microcontrolador PIC16F877A. O pino RB1 atua como entrada (recepção de dados) quanto a USART está trabalhando em modo assíncrono, e como entrada/saída de dados quando a USART está trabalhando em modo síncrono. O pino RB2 atua como saída (dados transmistidos) quando a USART está trabalhando em modo assíncrono, como saída de clock quando a USART está trabalhando em modo síncrono com clock externo. Além da transmissão/recepção padrão de 8 bits, o módulo USART permite ainda um outro modo de transmissão/recepção de 9 bits que permite o funcionamento da USART em outras modalidades. Para controle e configuração da USART utilizamos cinco registradores específicos, os quais já foram descritos neste trabalho, sendo eles: TXSTA - Responsável pelo controle de transmissão de dados; RCSTA - Responsável pelo controle de recepção de dados; SPBRG Responsável pelas configurações de Baud Rate; TXREG Armazena os dados para transmissão; RCREG Armazena os dados de recepção. O circuito eletrônico necessário para realizar a comunicação serial é mostrado pela figura 45 enquanto que as características de comunicação serial de dados são tratadas no capítulo 6.
105 90 FIGURA 45 - Interligação do circuito serial MAX Conclusão Através deste capítulo foi possível conhecer as características detalhadas dos elementos de hardware utilizados nos protótipos. Foi de suma importância, pois é extremamente necessário conhecer como acionar os componentes externos, para que o sistema implementado no microcontrolador seja compatível com os componentes disponíveis. Nesta etapa do trabalho foi realizada a montagem física dos protótipos, menos o módulo de comunicação serial, que não foi montada, sendo que as características dos componentes relatados neste capítulo, são levados em consideração na implementação e testes dos protótipos gerados.
106 91 6 COMUNICAÇÃO SERIAL RS-232 Neste capítulo é dado ênfase às características físicas e lógicas de comunicação serial, principalmente no padrão RS-232, pois o mesmo é utilizado no protótipo de comunicação serial entre o sistema microcontrolado e um computador de arquitetura PC. 6.1 Protocolos seriais Muitas vezes é necessário que sejam implementados sistemas de comunicação entre microcontroladores e outros dispositivos externos, como por exemplo, entre um microcontrolador e um PC, comunicação com memórias seriais, conversores A/D, displays seriais e outros. Os dados a serem comunicados são fracionados em bits e são enviados um após o outro, daí a denominação de comunicação serial. Atualmente existem várias interfaces de comunicação serial como USB, Firewire, RS-232, ou protocolos de redes como Ethernet, LIN, CAN ou I²C. A taxa de transmissão máxima permissível de uma mensagem é diretamente proporcional a potência do sinal, e inversamente proporcional ao ruído. A função de qualquer sistema de comunicação é fornecer a maior taxa de transmissão possível, com a menor potência e com o menor ruído possível. Para que seja possível a comunicação deve haver pelo menos um canal de comunicação. Um canal de comunicação é um caminho sobre o qual a informação pode trafegar. Ela pode ser definida por uma linha física (fio) que conecta dispositivos de comunicação, ou por um rádio, laser, ou outra forma de transmissão.
107 92 Em comunicação digital, a informação é representada por bits de dados individuais, que podem ser encapsulados em mensagens de vários bits. Um byte (conjunto de 8 bits) é um exemplo de uma unidade de mensagem que pode trafegar através de um canal digital de comunicação. Uma coleção de bytes pode ser agrupada em um quadro ou outra unidade de mensagem de maior nível. Esses múltiplos níveis de encapsulamento facilitam o reconhecimento de mensagens e interconexões de dados complexos. Um canal no qual a direção de transmissão é inalterada é referida como canal simplex. Por exemplo, uma estação de rádio é um canal simplex porque ela sempre transmite o sinal para os ouvintes e nunca é permitido a transmissão inversa. Um canal half-duplex é um canal físico simples no qual a direção pode ser revertida. As mensagens podem fluir nas duas direções, mas nunca ao mesmo tempo. Em uma chamada telefônica, uma parte fala enquanto a outra escuta. Depois de uma pausa, a outra parte fala e a primeira escuta. Falar simultaneamente resulta em sons que não podem ser compreendidos. Um canal full-duplex permite que mensagens sejam trocadas simultaneamente em ambas as direções. Ele pode ser visto como dois canais simplex, um canal direto e um canal reverso, conectados nos mesmos pontos. A transmissão bit-serial converte a mensagem em um bit por vez através de um canal. Cada bit representa uma parte da mensagem. Os bits individuais são então rearranjados no destino para compor a mensagem original. Em geral, um canal irá passar apenas um bit por vez. A transmissão bit-serial é normalmente chamada de transmissão serial, e é o método de comunicação escolhido por diversos periféricos de computadores. A transmissão byte-serial converte 8 bits por vez através de 8 canais paralelos. Embora a taxa de transferência seja 8 vezes mais rápida que na transmissão bit-serial, são necessários 8 canais, e o custo poderá ser maior do que 8 vezes para transmitir a mensagem. Quando as distâncias são curtas normalmente prefere-se usar canais paralelos como justificativa para as altas taxas de transmissão. A taxa de transferência refere-se a velocidade com que os dados são
108 93 enviados através de um canal e é medido em transições elétricas por segundo. Na norma EIA232, ocorre uma transição de sinal por bit e a taxa de transferência e a taxa de bit (bit rate) são idênticas. Nesse caso, uma taxa de 9600 bauds corresponde a uma transferência de 9600 dados por segundo, ou um período de aproximadamente, 104 us (1/9600 s). Outro conceito é a eficiência do canal de comunicação que é definido como o número de bits de informação utilizável (dados) enviados através do canal por segundo. Ele não inclui bits de sincronismo, formatação, e detecção de erro que podem ser adicionados a informação antes da mensagem ser transmitida, e sempre será no máximo igual a um. O formato do quadro na comunicação serial com oito bits é mostrado na figura 46. FIGURA 46 - Formato quadro serial 8 bits (Fonte: CANZIAN, 2001) 6.2 Transmissão assíncrona x transmissão síncrona Geralmente, dados serializados não são enviados de maneira uniforme através de um canal. Ao invés disso, pacotes com informação regulares são enviados seguidos de uma pausa. Os pacotes de dados binários são enviados dessa maneira, possivelmente com comprimentos de pausa variável entre pacotes, até que a mensagem tenha sido totalmente transmitida. O circuito receptor dos dados deve saber o momento apropriado para ler os bits individuais desse canal, saber exatamente quando um pacote começa e quanto tempo decorre entre bits. Quando essa temporização for conhecida, o receptor é dito estar sincronizado com o transmissor, e a
109 94 transferência de dados precisa torna-se possível. Falhas na manutenção do sincronismo durante a transmissão irão causar a corrupção ou perda de dados. Duas técnicas básicas são empregadas para garantir a sincronização correta. Em sistemas síncronos, canais separados são usados para transmitir dados e informação de tempo. O canal de temporização transmite pulsos de clock para o receptor. Através da recepção de um pulso de clock, o receptor lê o canal de dado e armazena o valor do bit encontrado naquele momento, conforme figura 47. O canal de dados não é lido novamente até que o próximo pulso de clock chegue. Como o transmissor é responsável pelos pulsos de dados e de temporização, o receptor irá ler o canal de dados apenas quando comandado pelo transmissor, e portanto a sincronização é garantida. FIGURA 47 - Transição de clock serial (Fonte: CANZIAN, 2001) Existem técnicas que compõem o sinal de clock e de dados em um único canal. Isso é usual quando transmissões síncronas são enviadas através de um modem. Dois métodos no qual os sinais de dados contém informação de tempo são: codificação NRZ (Non-Return-to-Zero) e a codificação Manchester. Em sistemas assíncronos, a informação trafega por um canal único. O transmissor e o receptor devem ser configurados antecipadamente para que a comunicação se estabeleça a contento. Um oscilador preciso no receptor gera um sinal de clock interno que é igual (ou muito próximo) ao do transmissor. Para o protocolo serial mais comum, os dados são enviados em pequenos pacotes de 10 ou 11 bits, dos quais 8 constituem a mensagem. Quando o canal está em repouso, o sinal correspondente no canal tem um nível lógico 1. Um pacote de dados
110 95 sempre começa com um nível lógico 0 (start bit) para sinalizar ao receptor que um transmissão foi iniciada. O start bit inicializa um temporizador interno no receptor avisando que a transmissão começou e que serão necessários pulsos de clocks. Seguido do start bit, 8 bits de dados de mensagem são enviados na taxa de transmissão especificada. O pacote é concluído com os bits de paridade e de parada (stop bit) conforme observa-se na figura 48. FIGURA 48 - Disposição bits comunicação serial (Fonte: CANZIAN, 2001) O comprimento do pacote de dados é pequeno em sistemas assíncronos para minimizar o risco do oscilador do transmissor e do receptor variar. Quando osciladores a cristal são utilizados, a sincronização pode ser garantida sobre os 11 bits de período. A cada novo pacote enviado, o start bit reinicia a sincronização, portanto a pausa entre pacotes pode ser longa.
111 96 Os caracteres enviados através de uma interface serial geralmente seguem o padrão ASCII (American Standard Code for Information Interchange) de 7 bits. 6.3 Padrão de interface serial RS232 (EIA232) RS é uma abreviação de Recommended Standard. Ela relata uma padronização de uma interface comum para comunicação de dados entre equipamentos, criada no início dos anos 60, por um comitê conhecido atualmente como Electronic Industries Association (EIA). Naquele tempo, a comunicação de dados compreendia a troca de dados digitais entre um computador central (mainframe) e terminais de computador remotos, ou entre dois terminais sem o envolvimento do computador. Estes dispositivos poderiam ser conectados através de linha telefônica, e conseqüentemente necessitavam um modem em cada lado para fazer a decodificação dos sinais. Daí nasceu o padrão RS232. Ele especifica as tensões, temporizações e funções dos sinais, um protocolo para troca de informações, e as conexões mecânicas. A mais de 30 anos desde que essa padronização foi desenvolvida, a EIA publicou três modificações. A mais recente, EIA232E, foi introduzida em Ao lado da mudança de nome de RS232 para EIA232. Embora tenha sofrido poucas alterações, muitos fabricantes adotaram diversas soluções mais simplificadas que tornaram impossível a simplificação da padronização proposta. As maiores dificuldades encontradas pelos usuários na utilização da interface RS232 incluem pelo menos um dos seguintes fatores: A ausência ou conexão errada de sinais de controle, resultam em estouro do buffer (overflow) ou travamento da comunicação; Função incorreta de comunicação para o cabo em uso, resultam em inversão das linhas de transmissão e recepção, bem como a inversão de uma ou mais linhas de controle (handshaking). Os sinais de temporização de transmissão e recepção são utilizados somente
112 97 quando o protocolo de transmissão utilizado for síncrono. Para protocolos assíncronos, padrão 8 bits, os sinais de temporização externos são desnecessários. Os nomes dos sinais que implicam em uma direção, como Transmit Data e Receive Data, são nomeados do ponto de vista dos dispositivos DTE. Se a norma EIA232 for seguida a risca, estes sinais terão o mesmo nome e o mesmo número de pino do lado do DCE. Infelizmente, isto não é feito na prática pela maioria dos engenheiros, provavelmente porque em alguns casos torna-se difícil definir quem é o DTE e quem é o DCE. A figura 49 apresenta a convenção utilizada para os sinais mais comuns. FIGURA 49 - Convenção sinais comuns em comunicação serial (Fonte: CANZIAN, 2001) 6.4 Pinagem no padrão RS232 As funções dos sinais da norma EIA232 podem ser subdivididos em 6 categorias, sendo: Sinais de terra e GND; Canal de comunicação primário; Canal de comunicação secundário; Sinais de controle e de status; Sinais de transmissão e recepção de tempos; Sinais de testes do canal de comunicação. A nomenclatura padrão e descrição dos bits, bem como seus respectivos
113 98 pinos é mostrada pelo quadro 37. QUADRO 37 - Descrição das funções dos bits de comunicação serial RS-232 Sinais de Terra Pino Nome Descrição 1 Shield Sinal de terra de proteção (malha de aterramento do cabo e carcaça do conector). 7 Ground (GND) Sinal de terra utilizado como referência para outros sinais. Canal de Comunicação Primário 2 Transmitted Data (TxD) Este sinal está ativo quando dados estiverem sendo transmitidos do DTE para o DCE. Quando nenhum dado estiver sendo transmitido, o sinal é mantido na condição de nível lógico 1. 3 Received Data (RxD) Este sinal está ativo quando o DTE receber dados do DCE. Quando o DCE estiver em repouso, o sinal é mantido na condição de marca nível lógico 1. 4 Request To Send (RTS) Este sinal é habilitado (nível lógico 0) para preparar o DCE para aceitar dados transmitidos pelo DTE. Esta preparação inclui a habilitação dos circuitos de recepção, ou a seleção a direção do canal em aplicações half-duplex. Quando o DCE estiver pronto, ele responde habilitando o sinal CTS. 5 Clear To Send (CTS) Este sinal é habilitado (nível lógico 0) pelo DCE para informar ao DTE que a transmissão pode começar. Os sinais RTS e CTS são comumente utilizados no controle do fluxo de dados em dispositivos DCE. 14 Secondary Transmitted Data (STxD) 16 Secondary Received Data (SRxD) 19 Secondary Request To Send (SRTS) 13 Secondary Clear To Send (SCTS) Canal de Comunicação Secundário Equivalente ao sinal TxD, porém válido para o canal secundário. Equivalente ao sinal RxD, porém válido para o canal secundário. Equivalente ao sinal RTS, porém válido para o canal secundário. Equivalente ao sinal CTS, porém válido para o canal secundário. Sinais de Controle e de Status 6 DCE Ready (DSR) Também chamado de Data Set Ready. Quando originado de um modem, este sinal é habilitado (nível lógico 0) quando as seguintes forem satisfeitas: 1 - O modem estiver conectado a uma linha telefônica ativa e fora do gancho; 2 - O modem estiver no modo dados; 3 O modem tiver completado a discagem e está gerando um tom de resposta.
114 99 Se a linha for tirada do gancho, uma condição de falha for detectada, ou uma conexão de voz for estabelecida, o sinal DSR é desabilitado (nível lógico 1). 20 DTE Ready (DTR) Também chamado de Data Terminal Ready. Este sinal é habilitado (nível lógico 0) pelo DTE quando for necessário abrir o canal de comunicação. Se o DCE for um modem, a habilitação do sinal DTR prepara o modem para ser conectado ao circuito do telefone, e uma vez conectado, mantém a conexão. Quando o sinal DTR for desabilitado (nível lógico 1), o modem muda para a condição no gancho e termina a conexão. 8 Received Line Signal Detector (CD) 12 Secondary Received Line Signal Detector (SCD) Também chamado de Data Carrier Detect (DCD). Este sinal é relevante quando o DCE for um modem. Ele é habilitado (nível lógico 0) quando a linha telefônica está fora do gancho, uma conexão for estabelecida, e um tom de resposta começar a ser recebido do modem remoto. Este sinal é desabilitado (nível lógico 1) quando não houver tom de resposta sendo recebido, ou quando o tom de resposta for de qualidade inadequada para o modem local. Este sinal é equivalente ao CD, porém refere-se ao canal de comunicação secundário. 22 Ring Indicator (RI) Este sinal é relevante quando o DCE for um modem, e é habilitado (nível lógico 0) quando um sinal de chamada estiver sendo recebido na linha telefônica. A habilitação desse sinal terá aproximadamente a duração do tom de chamada, e será desabilitado entre os tons ou quando não houver tom de chamada presente. 23 Data Signal Rate Selector Este sinal pode ser originado tanto no DTE quanto no DCE (mas não em ambos), e é usado para selecionar um de dois baud rates pré-configurados. Na condição de habilitação (nível lógico 0) o baud rate mais alto é selecionado. 15 Transmitter Signal Element Timing (TC) 17 Receiver Signal Element Timing (RC) 24 Transmitter Signal Element Timing (ETC) Sinais de Transmissão e Recepção de Tempos Também chamado de Transmitter Clock (TxC). Este sinal é relevante apenas quando o DCE for um modem e operar com um protocolo síncrono. O modem gera este sinal de clock para controlar exatamente a taxa na qual os dados estão sendo enviado pelo pino TxD, do DTE para o DCE. A transição de um nível lógico 1 para nível lógico 0 nessa linha causa uma transição correspondente para o próximo bit de dado na linha TxD. Também chamado de Receiver Clock (RxC). Este sinal é similar ao sinal TC descrito acima, exceto que ele fornece informações de temporização para o receptor do DTE. Também chamado de External Transmitter Clock. Os sinais de temporização são fornecidos externamente pelo DTE para o uso por um modem. Este sinal é utilizado apenas quando os sinais TC e RC não estão sendo utilizados.
115 100 Sinais de Teste do Canal de Comunicação 18 Local Loopback (LL) Este sinal é gerado pelo DTE e é usado para colocar o modem no estado de teste. Quando o sinal LL for habilitado (nível lógico 0), o modem redireciona o sinal de saída modulado, que normalmente vai para o linha telefônica, de volta para o circuito de recepção. Isto habilita a geração de dados pelo DTE serem ecoados através do próprio modem. O modem habilita o sinal TM reconhecendo que ele está na condição de loopback. 21 Remote Loopbalk (RL) Este sinal é gerado pelo DTE e é usado para colocar o modem remoto no estado de teste. Quando o sinal RL é habilitado (nível lógico 0), o modem remoto redireciona seus dados recebidos para a entrada, voltando para o modem local. Quando o DTE inicia esse teste, o dado transmitido passa através do modem local, da linha telefônica, do modem remoto, e volta, para exercitar o canal e confirmar sua integridade. 25 Test Mode (TM) Este sinal é relevante apenas quando o DCE é um modem. Quando habilitado (nível lógico 0), indica que o modem está em condição de teste local (LL) ou remoto (RL). (Fonte: CANZIAN, 2001) A norma EIA232 inclui a referência de terra no pino 7, e é freqüentemente conectada ao pino 1 e a blindagem do cabo que envolve os demais condutores. Sinais de tensão dos dados, temporizações e controle são medidos com relação a esse terra comum. Sinais com tensão entre 3 Volts e 25 Volts com relação ao terra (pino 7) são considerados nível lógico 1, e tensões entre +3 Volts e +25 Volts são considerados nível lógico 0. A faixa de tensões entre 3 Volts e +3 Volts é considerada uma região de transição para o qual o estado do sinal é indefinido, conforme pode-se observar pela figura 50. FIGURA 50 - Níveis de tensão na transmissão RS232 (Fonte: CANZIAN, 2001)
116 101 Quatro sinais foram implementados com segurança à falhas (fail-safe design) no qual durante a desenergização ou desconexão do cabo, seus sinais estarão desabilitados (nível lógico 0). São eles: Sinal RTS desabilitado; Sinal SRTS desabilitado; Sinal DTR DTE não pronto; Sinal DSR DCE não pronto; Uma das formas mais comuns de conexão serial é o conector chamado de DB9, como mostra a figura 51, pode-se verificar a função de cada pino e seus dados que são padronizados para serem transmitidos. FIGURA 51 - Pinagem e sinais para conector DB9 DCE (Fonte: CANZIAN, 2001) 6.5 Temporização dos sinais A norma EIA232 especifica uma taxa máxima de transferência de dados de bits por segundo (o limite usual é bps). Baud rates fixos não são fornecidos pela norma. Contudo, os valores comumente usados são 300, 1200, 2400, 4800, 9600 e bps. Mudanças no estado dos sinais de nível lógico 1 para 0 ou vice-versa devem seguir diversas características, como segue: Sinais que entram na zona de transição durante uma mudança de estado
117 102 deve atravessar essa região com direção ao estado oposto sem reverter a direção ou reentrar; Para os sinais de controle, o tempo na zona de transição deve ser menor do que 1ms; Para sinais de temporização, o tempo para atravessar a zona de transição deve ser: o Menor do que 1 ms para períodos de bits maiores que 25 ms; o 4% do período de um bit para períodos entre 25 ms e 125 us; o Menor do que 5 us para períodos menores que 125 us. 6.6 Conversores de nível TTL RS232 A maioria dos equipamentos digitais utilizam níveis TTL ou CMOS. Portanto, o primeiro passo para conectar um equipamento digital a uma interface RS232 é transformar níveis TTL (0 a 5 volts) em RS232 e vice-versa. Isto é feito por conversores de nível. Existe uma variedade grande de equipamentos digitais que utilizam o driver 1488 (TTL => RS232) e o receiver 1489 (RS232 => TTL). Estes CIs contém 4 inversores de um mesmo tipo, sejam drivers ou receivers. O driver necessita de duas fontes de alimentação +7,5 volts a +15 volts e 7,5 volts a 15 volts. Isto é um problema onde somente uma fonte de +5 volts é utilizada, como no caso dos protótipos implementados. No módulo de comunicação serial do protótipo foi utilizado o CI MAX232 da Maxim. Ele inclui um circuito de charge pump capaz de gerar tensões de +10 volts e 10 volts a partir de uma fonte de alimentação simples de +5 volts, bastando para isso alguns capacitores externos. Este CI contém 2 receivers e 2 drivers no mesmo encapsulamento. Para comunicação entre o módulo de comunicação serial e o microcomputador foi utilizado um cabo chamado de cabo null modem utilizado para conectar dois DTEs.
118 103 No método de conexão apresentado na figura 52 é de um cabo null modem. Apenas 3 fios são necessários (TxD, RxD e GND). O princípio é fazer o DTE pensar que está falando com um modem. Qualquer dado transmitido do DTE deve ser recebido no outro extremo e vice-versa. O sinal de terra (SG) também deve ser conectados ao terra comum dos dois DTEs. FIGURA 52 - Ligação do cabo null modem (Fonte: CANZIAN, 2001) O sinal DTR é conectado com os sinais DSR e CD nos dois extremos. Quando o sinal DTR for ativado (indicando que o canal de comunicação está aberto), imediatamente os sinais DSR e CD são ativados. Nessa hora o DTE pensa que o modem virtual ao qual está conectado está pronto e que foi detectado uma portadora no outro modem. O DTE precisa se preocupar agora com os sinais RTS e CTS. Como os 2 DTEs se comunicam à mesma velocidade, o fluxo de controle não é necessário e consequentemente essas 2 linhas são conectadas juntas em cada DTE. Quando o computador quer transmitir um dado, ele ativa a linha RTS como estão conectadas juntas, imediatamente recebe a resposta que o outro DTE está pronto pela linha CTS. 6.7 Conclusão Neste capítulo foi possível realizar o estudo detalhado da comunicação serial, sendo que estas informações são utilizadas na implementação dos algoritmos de comunicação com PC e na montagem do módulo de hardware de comunicação serial RS232. Mesmo sem a montagem e testes do hardware foi de grande valia como estudo e se torna base de conhecimento para projetos futuros.
119 104 7 IMPLEMENTAÇÃO DOS ALGORITMOS Este capítulo tem a função de explicar através de fragmentos de código como foi a implementação dos softwares de controle gravados no microcontrolador nos protótipos de interface com display de 7 segmentos, display de cristal líquido (LCD), teclado matricial, entrada analógica e comunicação serial RS232. Para cada uma das interfaces são mostrados apenas os fragmentos de código essenciais para funcionamento, sendo que o código fonte completo pode ser verificado através do apêndice B. Foram utilizados dois microcontroladores para utilização nos protótipos, sendo que um deles contém o algoritmo responsável por executar algumas operações aritméticas com entrada de valores e operações pelo teclado e demonstrando estes valores bem como o resultado da operação nos displays de cristal líquido e de 7 segmentos simultaneamente. No outro microcontrolador foram implementadas as rotinas que fazem a leitura da entrada analógica e escreve o valor lido em tensão nos dois displays disponíveis. 7.1 Rotinas básicas para sistemas com microcontroladores PIC Antes de qualquer controle de processo a ser executado, deve-se configurar os parâmetros básicos para funcionamento do microcontrolador, como entradas e saídas, tipo de oscilador, temporizadores, opções de configuração, entre outros. Todos os comandos que forem iniciados com o símbolo ponto-e-vírgula (;), são comentários de programa e não afetam o funcionamento do sistema. Para iniciar um programa em assembly deve-se referenciar quais as
120 105 bibliotecas necessárias para execução do software desenvolvido, neste caso deve-se referenciar a biblioteca através da diretiva #include <p16f877a.inc>, pois a mesma contém as definições para o microcontrolador PIC16F877A. Para os protótipos propostos foram declaradas as definições como segue: Definições de bibliotecas list p=16f877a #include <p16f877a.inc> Configuração básica do microcontrolador Para funcionamento deve-se configurar alguns bits iniciais sendo que no protótipo montado foi utilizado as seguintes configurações, utilizando-se a diretiva CONFIG, optou-se pela configuração direto no código fonte, porém esta pode ser realizada através do menu Configure Configuration Bits, o que não é recomendado pois cada vez que for aberto um novo projeto é necessário reconfigurá-los, enquanto que direto no código fonte o mesmo é configurado toda vez que é compilado. Os bits para o protótipo ficaram assim definidos: CONFIG _CP_OFF & _WDT_ON & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _LVP_OFF & _DEBUG_OFF & _CPD_OFF Declaração de registradores por nome Pode-se referenciar um determinado registrador através da diretiva #define, onde cria-se um nome para o registrador em si, sendo este utilizado durante o programa. A seguir segue algumas definições utilizadas no algoritmo dos protótipos montados: ;PORTA definição #define RA1 PORTA,1 ;**** PORTAS DE SAÍDA pic #define RA2 PORTA,2 ;**** PORTAS DE SAÍDA pic #define RA3 PORTA,3 ;**** PORTAS DE SAÍDA pic #define RA4 PORTA,0 ;**** PORTAS DE SAÍDA pic #define RA5 PORTA,5 ;**** PORTAS DE SAÍDA pic Conforme as definições citadas, o algoritmo agora referenciará as saídas PORTA 1, como RA1, PORTA 2 como RA2 por exemplo.
121 106 Declaração de variáveis de usuário É possível criar variáveis a serem utilizadas durante o programa sempre depois do endereço de memória 0x20, que é a área reservada as variáveis de usuário. Abaixo são mostrados algumas variáveis utilizadas nos protótipos montados. cblock 0x20 AccHi AccLo ArgH ArgL PRODW3 PRODW2 PRODW1 PRODW0 ANS1 ANS0 DIV1 DIV0 Configuração de bits para registradores Conforme descrito no capítulo 2.7.4, deve-se definir o estado dos bits para os registradores principais da aplicação, os mesmos recebem o bit conforme aplicação. Abaixo são exemplificados alguns com a descrição em comentários. movlw B' ' ;Define saidas do TRISA movwf TRISA movlw B' ' movwf TRISB ;Configura PORTB como saída movlw B' ' ;Define entrada do TRISC movwf TRISC Códigos de usuário Após as definições iniciais pode-se iniciar a escrita do código de usuário, como pode ser observado na íntegra através do anexo B. A seguir é descrito fragmentos de código visando exemplificar o controle das interfaces utilizadas.
122 Algoritmo de controle do teclado matricial Para realizar a leitura de teclas na configuração matricial utilizou-se a técnica onde o algoritmo eleva o nível de tensão alternadamente nos pinos RAx, e efetua a leitura de tensão nos pinos RCx. A seguir é mostrado fragmento do código implementado para controle da teclas número 3, número 2 e número 1, onde é elevado o nível de tensão no pino de saída RC1 e em seguida é verificado o estado das entradas RC1, RC2 e RC3. bsf RA1 ;Atribui nível 1 a RA1 btfsc RC1 ;Verifica se coluna RC1 recebeu sinal 1 goto num3 ;Se sim, então vai para rotina num3 btfsc RC2 ;Verifica se coluna RC2, recebeu sinal 1 goto num2 ;Se sim, então vai para rotina num2 btfsc RC3 ;Verifica se coluna RC3, recebeu sinal 1 goto num1 ;Se sim, então vai para rotina num3 Para explicar detalhadamente esta varredura de teclado, pode-se observar através da figura 53 como é o comportamento dos estados lógicos das entradas e saídas responsáveis pelo controle quando a tecla número 6 é pressionada. FIGURA 53 - Funcionamento da varredura do teclado matricial
123 Algoritmo de controle dos displays de 7 segmentos Para acionamento dos displays de 7 segmentos é necessário que se mova para o PORTB quatro bits referentes ao dígito da unidade e quatro bits referentes ao dígito da dezena, sendo que estes são responsáveis pelas entradas em binário dos CIs 3161E, que por sua vez acionarão os displays. Como era necessário que se obtivesse dois dígitos em oito bits foi implementado a lógica demonstrada pela figura 54, bem como o comportamento do CI3161E que conforme as entradas digitais gera um número em decimal. FIGURA 54 - Acionamento de display 7 segmentos 7.4 Algoritmo de controle do display LCD Como descrito no capítulo 5.6, quadro 32, é necessário que seja enviado ao display uma série de comandos de inicialização, antes de enviar os caracteres propriamente ditos. A seguir é mostrado a parte do código fonte que realiza esta configuração, os comentários explicam cada linha de programa.
124 109 MOVLW 0X28 ;INÍCIO DA CONFIGURAÇÃO DO LCD CALL EC ;CONFIGURA PARA: MOVLW 0X28 ;DUAS LINHAS CALL EC ;5 X 7 PONTOS MOVLW 0X06 ;16 X 2 CARACTERES CALL EC ;4 BITS MOVLW 0X0C CALL EC MOVLW 0X01 CALL EC ;FIM DA CONFIGURAÇÃO DO LCD Para envio de um caracter qualquer foi implementado a rotina chamada de ENVIABYTE, que recebe um determinado byte no registrador w, e envia o mesmo, realizando a alternância do bit de ENABLE, para o display LCD, como mostra o fragmento de código abaixo. ENVIABYTE BSF MOVWF MOVLW ANDWF MOVLW ANDWF IORWF BCF BSF SWAPF MOVLW ANDWF MOVLW ANDWF IORWF BCF CALL RETURN ;ROTINA PARA O ENVIO DE UM BYTE QUALQUER PORTD,E DADO 0X0F PORTD,F 0XF0 DADO,W PORTD,F PORTD,E PORTD,E DADO,F 0X0F PORTD,F 0XF0 DADO,W PORTD,F PORTD,E CHECABUSYFLAG A demonstração dos estados lógicos das saídas responsáveis pelo controle do display de cristal líquido para a escrita da letra C, pode ser visualizado na figura 55.
125 110 FIGURA 55 - Acionamento do display de cristal líquido 7.5 Algoritmo de controle de entrada analógica Para configurar a entrada analógica foi necessário realizar a configuração inicial do registrador ADCON1 sendo que fica os pinos RA0, RA1 e RA3 como analógico e RA2, RA4 e RE5 como entrada/saída digital, o resultado é justificado à esquerda, sendo 8 bits em ADRESH e 2 bits em ADRESL como segue abaixo: MOVLW B' ' MOVWF ADCON1 O registrador ADCON0, ficou configurado com a velocidade em Fosc/8, a leitura é no canal 1 e o módulo conversor está ligado. MOVLW B' ' MOVWF ADCON0 A rotina DEZENA_UNIDADE recebe um argumento passado pelo registrador w (work) oriundo do registrador ADRESH, e retorna nas variáveis dezena e unidade o número BCD correspondente ao parâmetro passado.
126 111 DEZENA_UNIDADE MOVWF AUX ; SALVA VALOR A CONVERTER EM AUX CLRF UNIDADE CLRF DEZENA ; RESETA REGISTRADORES MOVF AUX,F BTFSC STATUS,Z ; VALOR A CONVERTER = 0? RETURN ; SIM - RETORNA ; NÃO INCF UNIDADE,F ; INCREMENTA UNIDADE MOVF UNIDADE,W XORLW 0X0A BTFSS STATUS,Z ; UNIDADE = 10d? GOTO $+3 ; NÃO ; SIM CLRF UNIDADE ; RESETA UNIDADE INCF DEZENA,F ; INCREMENTA DEZENA DECFSZ AUX,F ; FIM DA CONVERSÃO? GOTO $-.8 ;NÃO - VOLTA P/ CONTINUAR RETURN ; SIM O valor de tensão no pino RA2 é mostrado no display LCD. 7.6 Algoritmo de controle da comunicação serial RS232 Esta parte do sistema não foi totalmente completada devido a falta de tempo disponível, porém o algoritmo em testes de debugger com o software MPLab se comportou perfeitamente. Deve-se implementar um software que realize a leitura da variável analógica, que está sendo transmitida pela USART até um computador PC. 7.7 Conclusão Neste capítulo procurou-se demonstrar as rotinas mais importantes utilizadas nos sistemas implementados e com eles atingiu-se grande parte dos objetivos propostos no início do trabalho, realizando a interação direta entre os algoritmos gerados e os protótipos de hardwares montados. Percebeu-se, como principal dificuldade, a necessidade de estudar a linguagem assembly já que a mesma era praticamente desconhecida, porém com suporte de orientação e bibliografias foi possível realizar esta etapa sem maiores problemas.
127 112 8 CONSIDERAÇÕES FINAIS Através das pesquisas iniciais pôde-se constatar a diversidade de elementos ou processos que devem ser levados em consideração quando se deseja implementar um sistema de controle de processos utilizando microcontroladores, pois exige que o projetista tenha noções de eletrônica para montagem e testes de hardware, além de conhecimento de arquitetura de baixo nível, lógica de programação e domínio total de informática para implementação e gravação dos sistemas no chip. Tem-se, no trabalho teórico e nos protótipos montados e colocados em funcionamento, mais uma ferramenta didática que pode auxiliar em aulas expositivas, bem como em cursos da área de sistemas eletrônicos embarcados. Os sistemas implementados tem condições de realizar controles básicos, demonstrando as operações básicas de entrada, processamento e saída de informações através dos algoritmos gerados para o microcontrolador. Como dificuldades, observou-se a existência de poucas referências bibliográficas lançadas no Brasil, sendo necessário a pesquisa através de sites de língua estrangeira, principalmente do fabricante Microchip, e também constatou-se a dificuldade em simular os sistemas sem a existência dos hardwares, o que demandou maior tempo para montagem das placas de circuito impresso e interligação dos mesmos ao microcontrolador. O aproveitamento foi satisfatório e os objetivos do trabalho foram alcançados, conforme pode-se constatar através do funcionamento perfeito dos protótipos montados, mesmo que a parte de comunicação serial não tenha sido completada, o que pode se tornar uma sugestão de trabalhos futuros para acadêmicos interessados na programação de sistemas on-chip.
128 113 REFERÊNCIAS BIBLIOGRÁFICAS ALMEIDA, A. R. Eletrônica Digital II Conversores Digital-Analógicos (DAC) e Analógico-Digitais (ADC). Material de aula. Departamento de Engenharia Elétrica, UFES, p. Disponível em: < Acesso em: 10 out GARBUT, M. Asynchronous Communications with the PICmicro USART. AN774. U.S.A: Microchip Technology Incorporated, p. Disponível em: < Acesso em: 15 abr CANZIAN, E. Minicurso Comunicação Serial RS232. Cotia: CNZ Engenharia e Informática Ltda, p. ILETT, J. How to use Intelligent L.C.D.s. Texto que trata das configurações básicas para controle de displays de cristal líquido LCD p. Disponível em: <openlink.br.inter.net/maier/arquivos/lcd1.pdf>. Acesso em: 25 ago MEINCKE, M. Display LCD. São Paulo: InTech, p. MONTEIRO, M. Introdução à organização de computadores. 3. ed. Rio de Janeiro: LTC, p. MICROCHIP. Getting started with on-chip memory. Texto que trata sobre questões básicas de programação e configuração de microcontroladores PIC. U.S.A.: Microchip Technology Incorporated, 2001a. 25 p. Disponível em: < Acesso em: 15 abr MICROCHIP. Using the USART in asynchronous mode. Texto que trata sobre o uso da comunicação USART no modo assíncrono, em projetos com microcontroladores PIC. U.S.A.: Microchip Technology Incorporated, 2001b. 40 p. Disponível em: < Acesso em: 25 mar MICROCHIP. PIC16F87X Data sheet 28/40-Pin 8-Bit CMOS Flash Microcontrollers. Texto contém informações referentes ao microcontrolador PIC16F877A. U.S.A.: Microchip Technology Incorporated, 2001c. 218 p. Disponível em: < Acesso em: 01 jun
129 114 NETO, H. V. Microcontroladores MCS51. Apostila que trata de microcontroladores da família MCS51 da Atmel, Curitiba: CEFET-PR, p. Disponível em: <bioserver.cpgei.cefetpr.br/disciplinas/digital2>. Acesso em: 17 mai PEREIRA, F. Microcontroladores PIC - Técnicas Avançadas. 3. ed. São Paulo: Érica, 2004a, 358 p. PEREIRA, F. PIC Programação em C. 3. ed. São Paulo: Érica, 2004b, 358 p. MICROCONTROLADORES PIC: Dicas para montagens com sucesso. Revista Eletrônica Total, São Paulo, n. 98, mar.abr SOUZA, D. J. Desbravando o PIC. 4. ed. São Paulo: Érica, p. SOUZA, D. J. Desbravando o PIC: ampliado e atualizado para PIC 16F628A. 7. ed. São Paulo: Érica, p. WEBER, R. F. Fundamentos de Arquitetura de Computadores. 2. ed. Porto Alegre: Sagra Luzzato, p.
130 115 APÊNDICE A Neste apêndice são descritos outros registradores existentes no microcontrolador PIC16F877A da Microchip que não foram utilizados para implementação dos protótipos propostos. Como considerou-se que seria interessante tê-los como fonte para possíveis trabalhos futuros, optou-se em colocá-los em anexo como segue. 1.1 Registrador INDF O registrador INDF (Indirect Addressing F) não é um registro físico. Pode ser utilizado para endereçamento indireto. Todas as instruções que utilizam o registrador INDF acessam o ponteiro do registrador FSR. Lendo o INDF, indiretamente estará lendo o endereço 00h do registrador FSR. Efetivamente o endereço do nono bit tem-se concatenando o oitavo bit do registrador FSR e o sétimo bit registrador STATUS (IRP). 1.2 Registrador TMR0 O registrador TMR0 (Timer0 Module Register) é o local onde fica registrado o valor atual do módulo Timer0. Este registrador de 8 bit está localizado no endereço 01h do banco de memória 0, e no endereço TMR0 do banco de memória 2. O registrador TMR0 pode ser lido ou escrito pelo programa do usuário, sendo que no caso de escrita a contagem atual do preescaler será apagado, sendo zerado a cada escrita no TMR0. 1.3Registrador FSR (Indirect Data Memory Address Pointer) Existe duas formas de acesso a memória dos PICs, uma é passando diretamente o endereço desejado como argumento de alguma instrução, outra é acessar
131 116 indiretamente este endereço. O Registrador FSR é utilizado para acessar indiretamente o conteúdo da posição de memória indicada pelo registrador INDF. Neste registrador pode ser escrito um outro endereço de memória que será acessado indiretamente, como se fosse apenas um ponteiro. O registrador FSR está presente em todos os bancos de memória do PIC16F877A, sendo no endereço 04h, 84h, 104h e 184h. 1.4 Registrador PIR1 O registrador PIR1 (Peripheral Interrupts 1) localizado no banco de memória 0, é responsável pelos flags sinalizadores de interrupções periféricas. Isto significa que cada vez que um dos eventos descritos em seguida ocorrer, o respectivo flag terá atribuído a ele o valor 1. A disposição dos bits deste registrador são mostrados no quadro 38. QUADRO 38 - Disposição dos bits do registrador PIR1 Registrador: PIR1 Endereços: 0Ch Permissão R/W R/W R R R/W R/W R/W R/W Nome PSPIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 PSPIF Parallel Slave Port Read/Write Interrupt - Define se houve interrupção de leitura ou escrita na porta paralela. Se o valor deste bit for 0, significa que a escrita/leitura não foi executada, enquanto que se valor for 1, significa que a escrita/leitura ocorreu; ADIF A/D Converter Interrupt - Se o valor deste bit for 0, significa que não foi concluída a conversão analógico/digital, enquanto que se valor for 1, significa que a conversão analógico/digital está completa; RCIF USART Receive Interrupt - Sinaliza se houve ou não recepção de caractere na USART, se o valor for 0, não houve recepção, se o valor for 1 houve recepção pela USART; TXIF USART Transmit Interrupt - Sinaliza se houve ou não
132 117 transmissão de caractere na USART, se o valor for 0, não houve transmissão ou o TSR está ocupado, se o valor for 1 o caractere armazenado no TXREG foi repassado para o TSR; SSPIF Synchronous Serial Port (SSP) Interrupt - Sinaliza interrupção de sincronismo da porta serial (SSP), que pode ser das condições de SPI, I²C escravo ou I²C mestre. CCP1IF CCP1 Interrupt - Quando tem-se o valor 0, significa que não houve comparação ou captura no módulo CCP, e se o valor for 1 então houve captura ou comparação no módulo CCP do TMR1; TMR2IF TMR2 to PR2 Match Interrupt - Sinaliza se houve transbordo de contagem no Timer2 com o valor 1, caso esteja com 0 significa que não houve transbordo no Timer2; TMR1IF TMR1 Overflow Interrupt - Sinaliza se houve transbordo de contagem no Timer1 com o valor 1, caso esteja com 0 significa que não houve transbordo no Timer1; 1.5 Registrador PIR2 O registrador PIR2, contém as flags que sinalizam as interrupções do módulo CCP2, as interrupções de colisão no barramento SSP e as interrupções de operações de escrita na EEPROM. Conforme pode-se verificar no quadro 10, o registrador PIR2 utiliza-se de 3 bits, sendo que os bits 7, 6, 2 e 1 não são implementados e devem ser lidos como 0, os outros bits deste registrados serão descritos em seguida. QUADRO 39 - Disposição dos bits do registrador PIR2 Registrador: PIR2 Endereços: 0Dh Permissão U R/W U R/W R/W U U R/W Nome - Reservado - EEIF BCLIF - - CCP2IF Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 EEIF EEPROM Write Operation Interrupt - Bit de interrupção na
133 118 operação de escrita da memória EEPROM. Se o valor deste bit for 1, então a operações de escrita foi completada, caso o valor seja 0, significa que a operação de escrita não foi completada ou não foi iniciada. BCLIF Bus Collision Interrupt - Sinaliza se houve colisão no barramento SSP. Se a colisão existiu então o seu valor é 1, caso não tenha ocorrido nenhuma colisão neste barramento então seu valor é 0; CCP2IF CCP2 Interrupt - O bit CCP2IF é responsável por sinalizar interrupção no módulo CCP2. Dependendo do modo como o módulo CCP2 está sendo utilizado, o significado dos bits é diferente. Se o valor deste bit for 1, significa que houve interrupção no modo de captura ou de comparação do Timer1, se o valor for 0, não houve interrupção para estes modos. Se o módulo CCP2 estiver em modo PWM, este bit não será utilizado Registrador TMR1L (Low Register Timer1) O temporizador/contador Timer1, tem o tamanho de 16 bits, por isso a necessidade de utilização de outros dois registradores para armazenamento de seu valor. O registrador TMR1L, tem a função de armazenar os 8 bits menos significativos do valor do módulo Timer1. A localização deste registrador é o endereço 0Eh do banco de memória 0 no microcontrolador PIC16F877A. 1.7 Registrador TMR1H (High Register Timer1) O registrador TMR1H encontra-se no endereço 0Fh do banco de memória 0 e tem a função de armazenar os 8 bits menos significativos do valor do módulo Timer Registrador T1CON (Control Timer1) O registrador T1CON é responsável por fazer o controle do módulo temporizador Timer1. O quadro 11 apresenta como seus bits estão distribuídos dentro
134 119 deste registrador de 8 bits. QUADRO 40 - Disposição dos bits do registrador T1CON Registrador: T1CON Endereços: 10h Permissão U U R/W R/W R/W R/W R/W R/W Nome - - T1CKPS1 T1CKPS0 T1OSCEN /T1SYNC TMR1CS TMR1ON Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 T1CKPS1 E T1CKPS0 Timer1 Input Clock Prescale Select - Estes dois bits são responsáveis por fazer a seleção dos fatores de clock para o prescaler do módulo Timer1. A combinação destes dois bits é mostrado no quadro 12. QUADRO 41 - Seleção do preescaler para módulo Timer1 T1CKPS1 T1CKPS0 Valor do Prescaler 1 1 1: : : :1 T1OSCEN Timer1 Oscillator Enable Control - Com este bit em 1 o oscilador externo para o Timer1 estará habilitado, estando desabilitado quando este bit estiver com o valor atribuído de 0; /T1SYNC Timer1 External Clock Input Synchronization Control - Seleciona a forma de sincronização externa do timer do Timer1. O valor do bit estando em 1, o clock selecionado será o clock assíncrono, enquanto que se for necessário a seleção de clock sincronizado com o ciclo de instruções interno, deve-se atribuir a este bit o valor 0; TMR1CS Timer1 Clock Source Select - Seleciona qual o clock a ser utilizado pelo Timer1. O valor 1 seleciona o clock externo e o valor 0 seleciona o clock interno; TMR1ON Timer1 On - Este bit tem a função de ligar e desligar a contagem do módulo Timer1, sendo que o valor 0 paralisa a contagem do
135 120 mesmo, e o valor 1 deixa o Timer1 habilitado ao funcionamento normal. 1.9 Registrador TMR2 (Timer 2) O registrador TMR2 é o local onde fica registrado o valor atual do módulo Timer2. Este registrador de 8 bits está localizado no endereço 11h do banco de memória 0. O registrador TMR2 pode ser lido ou escrito pelo programa do usuário, sendo que no caso de escrita a contagem atual do preescaler será apagado, sendo zerado a cada escrita no TMR Registrador T2CON (Timer 2 Control) O registrador T2CON é responsável por fazer o controle do módulo temporizador Timer2. O quadro 42 apresenta seus bits dentro deste registrador. QUADRO 42 - Disposição dos bits do registrador T2CON Registrador: T2CON Endereços: 12h Permissão U R/W R/W R/W R/W R/W R/W R/W Nome - TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 O bit 7 do registrador T2CON não é implementado e deve ser lido como 0. A seguir serão descritos os outros 7 bits deste registrador. TOUTPS3, TOUTPS2, TOUTPS1 E TOUTPS0 Timer2 Output Postscale Select - A Combinação destes quatro bits faz a seleção do postescaler para o módulo Timer2, conforme quadro 43. QUADRO 43 - Seleção Postescaler para módulo Timer2 TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 Valor Postescaler : : : : : :6
136 : : : : : : : : : :16 TMR2ON Timer2 On - Bit de liga/desliga Timer2. Valor 1 Timer2 ligado, valor 0 Timer2 desligado; T2CKPS1 e T2CKPS0 Timer2 Clock Prescale Select - A combinação destes bits seleciona o clock do prescaler, conforme é demonstrado no quadro 44. QUADRO 44 - Seleção Prescaler Timer2 T2CKPS1 T2CKPS0 Prescaler X Registrador CCPR1L (Low Register Capture/Compare/PWM 1) O registrador CCPR1L é utilizado para armazenar os 8 bits menos significativos a serem utilizados nos modos de captura/comparação de sinais do módulo CCP1. Quando o módulo CCP1 estiver em modo PWM, o registrador CCPR1L é utilizado para armazenar os 8 bits menos significativos utilizados na determinação do ciclo ativo do sinal. Este registrador está localizado no endereço 15h do banco de memória 0 do microcontrolador PIC16F877A Registrador CCPR1H (High Register Capture/Compare/PWM)
137 122 O registrador CCPR1H é utilizado para armazenar os 8 bits mais significativos a serem utilizados na captura/comparação no módulo CCP1. Quando o módulo CCP1, estiver configurado para trabalhar no modo PWM, o registrador CCPR1H é utilizado como um registrador escravo, no qual é copiado o conteúdo do registrador CCPR1L Registrador CCP1CON (Control Capture/Compare/PWM 1) A combinação dos bits do registrador CCP1CON faz a seleção do modo como o módulo CCP1 irá funcionar. A disposição dos bits deste registrador pode ser visualizado no quadro 45, sendo que os bits 6 e 7 não são implementados e serão lidos como 0. QUADRO 45 - Disposição dos bits do registrador CCP1CON Registrador: CCP1CON Endereços: 17h Permissão U U R/W R/W R/W R/W R/W R/W Nome - - CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Para realizar a seleção do modo de funcionamento do módulo CCP1 deve-se atribui os valores conforme o quadro 46. QUADRO 46 - Modo de funcionamento do Módulo CCP1 CCP1M3 CCP1M2 CCP1M1 CCP1M0 MODO Módulo CCP1 desligado, reset módulo CCP Modo captura a cada borda de descida Modo captura a cada borda de subida Modo captura a cada 4ª borda de subida Modo captura a cada 16ª borda de subida Modo comparação. Pino de CCP1, inicia em 0, em caso de coincidência pino de CCP1 recebe valor Modo comparação. Pino de CCP1, inicia em 1, em caso de coincidência pino de CCP1 recebe valor Modo comparação. Em caso de coincidência gera interrupção CCP1IF Modo comparação. Em caso de coincidência zera TMR1 e gera interrupção CCP1IF. 1 1 X X Modo PWM
138 Registrador CCPR2L (Low Register Capture/Compare/PWM 2) O registrador CCPR2L é utilizado para armazenar os 8 bits menos significativos a serem utilizados nos modos de captura/comparação de sinais do módulo CCP2. Quando o módulo CCP2 estiver em modo PWM, o registrador CCPR2L é utilizado para armazenar os 8 bits menos significativos utilizados na determinação do ciclo ativo do sinal. Este registrador está localizado no endereço 1Bh do banco de memória Registrador CCPR2H (High Register Capture/Compare/PWM 2) O registrador CCPR2H é utilizado para armazenar os 8 bits mais significativos a serem utilizados na captura/comparação no módulo CCP2. Quando o módulo CCP2, estiver configurado para trabalhar no modo PWM, o registrador CCPR2H é utilizado como um registrador escravo, no qual é copiado o conteúdo do registrador CCPR2L do microcontrolador PIC16F877A Registrador CP2CON (Control Capture/Compare/PWM 2) A combinação dos bits do registrador CCP2CON faz a seleção do modo de funcionamento do módulo CCP2. Os bits deste registrador pode ser visualizado no quadro 47, sendo que os bits 6 e 7 não são implementados e serão lidos como 0. QUADRO 47 - Disposição dos bits do registrador CCP2CON Registrador: CCP2CON Endereços: 1Dh Permissão U U R/W R/W R/W R/W R/W R/W Nome - - CCP2X CCP2Y CCP2M3 CCP2M2 CCP2M1 CCP2M0 Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Para realizar a seleção do modo de funcionamento do módulo CCP2 deve-se atribui os valores conforme o quadro 48. QUADRO 48 - Modo de funcionamento do Módulo CCP2 CCP2M3 CCP2M2 CCP2M1 CCP2M0 MODO Módulo CCP2 desligado, reset módulo CCP Modo captura a cada borda de descida Modo captura a cada borda de subida.
139 Modo captura a cada 4ª borda de subida Modo captura a cada 16ª borda de subida Modo comparação. Pino de CCP2, inicia em 0, em caso de coincidência pino de CCP2 recebe valor Modo comparação. Pino de CCP2, inicia em 1, em caso de coincidência pino de CCP2 recebe valor Modo comparação. Em caso de coincidência gera interrupção CCP2IF Modo comparação. Em caso de coincidência zera TMR2 e gera interrupção CCP2IF. 1 1 X X Modo PWM 1.17 Registrador PIE1 (Peripheral Interrupts Enabled 1) Este registrador possui a função de habilitar/desabilitar das interrupções dos vários periféricos existentes no microcontrolador. O quadro 49, mostra a disposição dos bits deste registrador. QUADRO 49 - Disposição dos bits no registrador PIE1 Registrador: PIE1 Endereços: 8Ch Permissão R/W R/W R/W R/W R/W R/W R/W R/W Nome PSPIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 PSPIE Parallel Slave Port Read/Write Interrup - Habilita a interrupção por escrita/leitura na porta paralela escravo. Quando habilitado tem o valor 1, desabilitado tem o valor 0; ADIE A/D Converter Interrup Enable - Habilita a interrupção de conversão analógico/digital. Quando habilitado tem o valor 1, desabilitado tem o valor 0; RCIE USART Receive Interrupt Enable - Habilita a interrupção de recepção de dados na USART. Quando habilitado tem o valor 1, desabilitado tem o valor 0; TXIE USART Transmit Interrupt Enable - Habilita a interrupção de transmissão de dados na USART. Quando habilitado tem o valor 1, desabilitado tem o valor 0;
140 125 SSPIE Synchronous Serial port Interrupt Enable - Habilita a interrupção de sincronismo na porta serial, com o bit em 1 a interrupção está habilita, enquanto que o valor 0 desabilita esta interrupção; CCP1IE CCP1 Interrupt Enable - Habilita a interrupção do módulo CCP. Quando habilitado tem o valor 1, desabilitado tem o valor 0; TMR2IE TMR2 to PR2 Match Interrupt Enable - Habilita a interrupção de transbordo do Timer2. Quando habilitado tem o valor 1, desabilitado tem o valor 0; TMR1IE TMR1 Overflow Interrupt Enable - Habilita a interrupção de transbordo do Timer1. Quando habilitado tem o valor 1, desabilitado tem o valor Registrador PIE2 (Peripheral Interrupts Enabled 2) O registrador PIE contém os bits de habilitação para as interrupções de periféricos do módulo CCP2, para colisões no barramento SSP e interrupções de operação de escrita na memória EEPROM. São utilizados apenas três bits, conforme mostra o quadro 50, sendo que a descrição dos mesmos será feita a seguir. QUADRO 50 - Disposição dos bits do registrador PIE2 Registrador: PIE2 Endereços: 8Dh Permissão U R/W U R/W R/W U U R/W Nome - Reservado - EEIE BCLIE - - CCP2IE Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Os bits 7, 5, 2 e 1 não são implementados e devem ser lidos como 0. A seguir serão descritos os outros bits que compõem este registrador. EEIE EEPROM Write Operation Interrupt Enable - Com o valor 1 atribuído a este bit, habilita-se as interrupções relacionadas as operações de escrita na memória EEPROM, com o valor 0, estas interrupções ficam desabilitadas.
141 126 BCLIE Bus Collision Interrupt Enable - Com o valor 1 atribuído a este bit, habilita-se as interrupções relacionadas as colisões no barramento, com o valor 0, estas interrupções ficam desabilitadas. CCP2IE CCP2 Interrupt Enable - Neste bit, habilita-se as interrupções para o módulo CCP2 atribuindo-o valor 1, e desabilita estas interrupções atribuindo-o o valor 0; 1.19 Registrador PCON (Power Control Status) O registrador PCON, está localizado no banco de memória 1, sendo utilizado para sinalização de dois estados de reset: o reset por queda de tensão de alimentação (Brown-out) e o reset de inicialização (Power-on reset). Os dois bits disponíveis deste registrador são mostrados no quadro 51. QUADRO 51 - Disposição dos bits no registrador PCON Registrador: PCON Endereços: 8Eh Permissão U U U U U U R/W R/W Nome /POR /BOR Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 /POR Power On Reset - Sinalizador de reset de inicialização. O valor 0 representa que houve um reset do tipo POR (reset de inicialização), e o valor 1 representa que não houve reset de inicialização; /BOR Brown-Out Reset - Sinalizador de reset por queda de tensão. O valor 0, representa que houve uma queda de tensão de alimentação, enquanto que 1, representa que não houve queda de tensão Registrador R2 (Period Register 2) O registrador PR2 é responsável por fazer o armazenamento em oito bits do valor do período do Timer2. Encontra-se no endereço 92h do banco de memória 1, no microcontrolador PIC16F877A.
142 Registrador EEDATA (EEPROM Data Register Low Byte) O registrador EEDATA localiza-se no endereço 10Ch do banco de memória 2 sendo utilizado para escrita/leitura de dados na memória EEPROM interna do microcontrolador, que no caso do PIC16F877A tem a capacidade de armazenar até 256 Bytes. Nas operações de escrita na memória EEPROM, o conteúdo armazenado nesse registrador é o dado a ser armazenado na memória. Nas operações de leitura da memória EEPROM, o conteúdo do registrador será atualizado com o dado a ser lido da memória Registrador EEADR (EEPROM Address Register Low Byte) O registrador EEADR é responsável onde será especificado o endereço para escrita ou leitura da EEPROM interna do PIC16F877A. O valor armazenado nesse registrador será utilizado para especificar o endereço da EEPROM nas operações de leitura e escrita da mesma. Este registrador fica localizado no endereço 10Dh do banco de memória 2 do microcontrolador PIC16F877A Registrador EECON1 (EEPROM Control 1) Este registrador está localizado no endereço 18Ch do banco de memória 3 do PIC16F877A, utiliza apenas 5 bits e sua função é controlar o acesso à memória EEPROM. O quadro 52 mostra a disposição dos 5 bits do registrador EECON1. QUADRO 52 - Disposição dos bits do registrador EECON1 Registrador: EECON1 Endereços: 18Ch Permissão R/W U U U R/W R/W R R Nome EEPGD WRERR WREN WR RD Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 A seguir é descrito cada bit deste registrador: EEPGD Program/Data EEPROM Select - O bit EEPGD faz a seleção da memória acessada, sendo que o valor 1, refere-se ao acesso a
143 128 memória de programa, enquanto que o valor 0, refere-se ao acesso a memória de dados; WRERR EEPROM Errol Flag - Este bit indica com o valor 1 que uma operação de escrita foi encerrada prematuramente, e com o valor 0 indica que a operação foi concluída. Portanto este bit indica erro na operação de escrita na EEPROM; WREN EEPROM Write Enable - Bit de permissão de escrita. Com o valor em 1, está permitida a escrita na memória EEPROM, caso esteja com 0, a escrita é bloqueada; WR Write Control - Este bit sinaliza o acionamento de escrita. Não pode ser colocado a 0 por software. Uma vez iniciada a operação de escrita, este bit permanecerá em 1 até o término dela, então a CPU automaticamente o colocará em 0; RD Read Control - Bit sinalizador de acionamento de leitura. Este bit não pode ser colocado á 0 por software. Uma vez iniciada a operação de leitura, este bit permanecerá em 1 até o término dela, então a CPU automaticamente o colocará em Registrador EECON2 (EEPROM Control Register 2) Este registrador serve para controlar o acesso de escrita na memória EEPROM, evitando escritas indesejadas na memória EEPROM, não sendo um registrador físico. Sempre que deseja-se escrever alguma informação na EEPROM, deve-se antes armazenar no EECON2 uma seqüência de valores predefinidos (como se fosse uma senha). Se essa seqüência não for seguida, a operação de escrita não pode ser completada.
144 129 APÊNDICE B Neste apêndice são demonstrados os códigos fonte em assembly dos processos controlados nos protótipos montados.
Microprocessadores e Aplicações
Microprocessadores e Aplicações Planificação das aulas teóricas e aulas práticas Ano Lectivo 2005/ 2006 Aula 1 Semana 26 a 30 de Setembro - Apresentação 1. Apresentação da disciplina aos alunos: a. Programa
Microcontroladores e Microprocessadores. Conversão de Bases Prof. Samuel Cavalcante
Microcontroladores e Microprocessadores Conversão de Bases Prof. Samuel Cavalcante Conteúdo Conversão de Qualquer base para Decimal Decimal para Binário Hexadecimal para binário Componentes básicos de
EMENTA. Curso de Projetos Microcontrolados utilizando Linguagem C.
EMENTA Curso de Projetos Microcontrolados utilizando Linguagem C. Descrição dos Cursos A Hit Soluções Tecnológicas vem através deste documento apresentar a proposta de dois cursos de projetos baseados
O Sistema de Computação
Departamento de Ciência da Computação - UFF O Sistema de Computação Profa. Débora Christina Muchaluat Saade [email protected] O Sistema de Computação Capítulo 2 Livro do Mário Monteiro Componentes
Arquitetura e Organização de Computadores
Arquitetura e Organização de Computadores Interconexão do Computador Givanaldo Rocha de Souza http://docente.ifrn.edu.br/givanaldorocha [email protected] Material do prof. Sílvio Fernandes -
Fundamentos de Arquitetura e Organização de Computadores
Fundamentos de Arquitetura e Organização de Computadores Dois conceitos fundamentais no estudo dos sistemas de computação são o de Arquitetura e Organização de computadores. O termo arquitetura refere-se
Organização e Arquitetura de Computadores I
Organização e Arquitetura de Computadores I Evolução e Desempenho dos Computadores Slide 1 Conceitos Arquitetura do Computador Refere-se aos atributos que são visíveis para o programador. Ex: conjunto
Informática Aplicada
Informática Aplicada Aula 1 Introdução Diogo Pinheiro Fernandes Pedrosa Departamento de Ciências Exatas e Naturais Universidade Federal Rural do Semi-Árido Introdução Informática informação aplicada; Pressupõe
Introdução. Hardware (Parte III) Universidade Federal de Campina Grande Departamento de Sistemas e Computação. [email protected].
Universidade Federal de Campina Grande Departamento de Sistemas e Computação Introdução à Computação Hardware (Parte III) Prof. a Joseana Macêdo Fechine Régis de Araújo [email protected] Carga
Sistemas Embarcados:
Sistemas Embarcados: Microcontroladores Prof. Protásio Laboratório de Microengenharia/DEE/CEAR/UFPB Processadores Embarcados Todo sistema embarcado necessita ter incorporado um dispositivo de processamento
Sistemas Digitais II. Interface com o mundo analógico. Prof. Marlon Henrique Teixeira Abril/2014
Sistemas Digitais II Interface com o mundo analógico Prof. Marlon Henrique Teixeira Abril/2014 Objetivos Compreender a teoria de funcionamento e as limitações dos circuitos de diversos tipos de conversores
INTRODUÇÃO: MICROCONTROLADORES
INTRODUÇÃO: MICROCONTROLADORES MICROCONTROLADOR X MICROPROCESSADOR Baixa capacidade de processamento Freq. Operação em MHz Custo de R$ 7,00 a 30,00 Aplicações mais restrita Alta capacidade de processamento
Microcontroladores. Prof. Nivaldo T. Schiefler Jr. M.Eng Homepage: www.joinville.ifsc.edu.br/~nivaldo Email: [email protected]
Prof. Nivaldo T. Schiefler Jr. M.Eng Homepage: www.joinville.ifsc.edu.br/~nivaldo Email: [email protected] Conceito final será constituído de duas avaliações: 1ª Conceito avaliação teórica 2ª Conceito
Índice. 1. Descrição Geral do Módulo. Módulo Processador CPU209-R1 V1.00-22/07/05
Módulo Processador CPU209-R V.00-22/07/05 Índice. Descrição Geral do Módulo... 2.EspecificaçõesTécnicas...2 3. Configuração do Módulo...2 3. Configuração de Memória...2 3.2 Strap de Inicialização do Módulo...3
Histórico e Evolução da Computação
Lista de Exercícios Introdução à Informática Professor: Sérgio Salazar Histórico e Evolução da Computação O 1º computador foi o ENIAC, utilizado para montar tabelas para o cálculo de projéteis na 2ª Guerra
Protótipo de um túnel de vento com Controle de Vazão e Temperatura em ambiente LabVIEW
Protótipo de um túnel de vento com Controle de Vazão e Temperatura em ambiente LabVIEW "O kit de desenvolvimento do LabVIEW mostrou-se uma excelente alternativa em relação às outras ferramenta de desenvolvimento
Oganização e Arquitetura de Computadores
Oganização e Arquitetura de Computadores Capítulo 14 e 15 Unidade de Controle Parte I Operação da Unidade de Controle 1 Micro-Operações Um computador executa um programa Ciclo: Busca/Executa Cada ciclo
Entrada e Saída Transmissão Serial e Paralela
Infra-Estrutura de Hardware Entrada e Saída Transmissão Serial e Paralela Prof. Edilberto Silva www.edilms.eti.br [email protected] Sumário Introdução Transmissões Serial (síncrona e assíncrona) e Paralela
Arquitetura de Computadores - Módulos de E/S. por Helcio Wagner da Silva
Arquitetura de Computadores - Módulos de E/S por Helcio Wagner da Silva Modelo Geral de um Módulo de E/S Barramento de Endereço Barramento de Dados Barramento de Controle Módulo de E/S Conexões com Dispositivos
- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula E-mail: [email protected]
Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula E-mail: [email protected] Sistemas de Arquivos- Parte 2 Pontos importantes de um sistema de arquivos Vários problemas importantes devem
Interface com Displays de 7 Segmentos. Interface com Displays
Interface com Displays de 7 Segmentos Interface com Displays Um Display de 7 segmentos é formado por 7 LED s (a,b,c,d,e,f,g) que são previamente encapsulados e conectados de duas maneiras: f e a g b c
Projeto de Sistemas Embarcados
Projeto de Sistemas Embarcados Pós-Graduação em Engenharia Elétrica Prof. Dr. Joselito A. Heerdt [email protected] PLANEJAMENTO 1. Introdução 2. O projeto de sistemas 3. Projeto de hardware 4.
Figura 8: modelo de Von Neumann
3. ORGANIZAÇÃO DE SISTEMA DE COMPUTADORES Olá, caro aluno! Neste capítulo vamos ver como são organizados os componentes que formam um sistema computacional. O conceito é histórico, mas é aplicado até os
Aula 10 Microcontrolador Intel 8051 Parte 1
Aula 10 Microcontrolador Intel 8051 Parte 1 SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES Prof. Dr. Marcelo A. C. Vieira SEL 0415 Microcontroladores Grupo de Sistemas Digitais n Microcontrolador é o nome
FACULDADE LEÃO SAMPAIO
FACULDADE LEÃO SAMPAIO Microcontroladores Curso de Análise e Desenvolvimento de Sistemas 1 Componentes CPU Memórias Dispositivos de Entrada/Saída (E/S) Input/Output (I/O) 2 CPU A CPU busca informações
O Sistema de Computação
O Sistema de Computação Professor: Alex Sandro Forghieri [email protected] O Sistema de Computação INTRODUÇÃO Introdução Sistemas Computacionais podem ser divididos em camadas: Aplicativos Sistema
Prof. Adilson Gonzaga. Interface com Displays
Prof. Adilson Gonzaga Interface com Displays Interface com Displays de 7 Segmentos 2 Um Display de 7 segmentos é formado por 7 LED s (a,b,c,d,e,f,g) que são previamente encapsulados e conectados de duas
INTRODUÇÃO À INFORMÁTICA
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO À INFORMÁTICA Hardware & Software Macau-RN Novembro/2014 Sumário Introdução... 1 Evolução dos computadores... 1 Hardware...
Microcontroladores. Curso Engenharia de Controle e Automação. Alex Vidigal Bastos www.decom.ufop.br/alex/ [email protected]
Microcontroladores Curso Engenharia de Controle e Automação Alex Vidigal Bastos www.decom.ufop.br/alex/ [email protected] 1 Sumário Microprocessadores CPU Microcontrolador Firmaware Registrador Registradores
INSTITUTO DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE COORDENADORIA DE ELETRÔNICA RELÓGIO DIGITAL -MONTAGEM COM CONTADOR COMERCIAL
INSTITUTO DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE COORDENADORIA DE ELETRÔNICA RELÓGIO DIGITAL -MONTAGEM COM CONTADOR COMERCIAL Relatório técnico apresentado como requisito parcial para obtenção de
Microcontroladores 8051 - XM 853 -
T e c n o l o g i a Microcontroladores 8051 - XM 853 - Os melhores e mais modernos MÓDULOS DIDÁTICOS para um ensino tecnológico de qualidade. Microcontroladores 8051 - XM 853 - INTRODUÇÃO O mundo da eletrônica
Aula 01. Breve História dos Computadores Informatiquês O Computador Software vs. Hardware. Introdução à Informática. Prof. Fábio Nelson.
Aula 01 Breve História dos Computadores Informatiquês O Computador Software vs. Hardware Slide 1 de Qual é a origem etimológica da palavra COMPUTADOR? Computador procede do latim computatore. Ao pé da
Sumário. Capítulo 1 Introdução... 1. Capítulo 2 Componentes elétricos básicos... 17. Capítulo 3 Noções de eletricidade em corrente alternada...
Sumário Capítulo 1 Introdução.................................... 1 Objetivos do capítulo.............................................. 1 1.2 Controle de processo..............................................
Curso de Sistemas de Informação Campus Guaíba Cursos de Informática Projeto de Inclusão Digital APOSTILA APOSTILA CONCEITOS BÁSICOS DE INFORMÁTICA
CONCEITOS BÁSICOS DE INFORMÁTICA Agosto, 2006 Apresentação A apostila de Conceitos Básicos de Informática tem por objetivo apresentar aos alunos os conceitos relacionados à área de tecnologia. Esquema
Data Sheet FBEE Kit V05
Data Sheet FBEE Kit V05 IEEE 802.15.4 SUPORTA PROTOCOLOS ZIGBEE E MIWI REV 01 1 Rev01 1. INTRODUÇÃO Este capítulo faz uma introdução às características do kit de demonstração FBee Kit. Este capítulo discute:
Componentes do Computador
Computador Um computador é uma máquina composta de um conjunto de partes eletrônicas e eletromecânicas, com capacidade de coletar, armazenar e manipular dados, além de fornecer informações, tudo isso de
Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização
Hardware: Componentes Básicos Arquitetura dos Computadores Dispositivos de Entrada Processamento Dispositivos de Saída Armazenamento Marco Antonio Montebello Júnior [email protected] Sistema de
HARDWARE. Prof. Luciano Bertini
HARDWARE Prof. Luciano Bertini http://www.professores.uff.br/lbertini/ Baseado em publicação do site http://www.guiadopc.com.br/ Baseado em uma série de postagens do site Guia do PC, intitulada Hardware
Direto. ao Ponto. Comunicação Inverter Protocol entre PLC FX e Inversor Série 700 N o. DAP-PLCFX-05. Rev. A
Direto ao Ponto Comunicação Inverter Protocol entre PLC FX e Inversor Série 700 N o. DAP-PLCFX-05 Rev. A Revisões Data da Revisão Mai/2015 (A) Nome do Arquivo DAP-PLCFX-05(A)_Comunicação Inverter Protocol
KIT DIDÁTICO PARA ENSINO DE MICROCONTROLADORES
KIT DIDÁTICO PARA ENSINO DE MICROCONTROLADORES Andreya Prestes da Silva [email protected] Universidade Federal do Pará, Departamento de Engenharia Elétrica Campus Universitário do Guamá 66000-000
Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Aula 03
Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Aula 03 Conceitos básicos de Sistemas Operacionais Hardware Software Concorrência
BARRAMENTO. Caminho de Dados
BARRAMENTO Caminho de Dados Conceito Um barramento é simplesmente um circuito que conecta uma parte da placa-mãe à outra. Quanto mais dados o barramento consegue ter de uma só vez, mais rápido a informação
Aplicações Avançadas de Microprocessadores. Professor: Marco Shawn Meireles Machado
Aplicações Avançadas de Microprocessadores Professor: Marco Shawn Meireles Machado Iniciação aos sistemas microcontrolados Objetivos da Aula: Descrever os itens que compõem uma CPU; Detalhar a estrutura
Introdução. Software Básico Aula 3. Prof. Dr. Rogério Vargas.
Introdução Software Básico Aula 3 Prof. Dr. Rogério Vargas http://rogerio.in Provocação Você já se perguntou como é que os programas que você escreve são traduzidos em instruções executáveis pelas estruturas
CRONÔMETRO DIGITAL PROJETO
CRONÔMETRO DIGITAL PROJETO OBJETIVOS: a) Verificação do funcionamento dos contadores; b) Aplicabilidade de circuitos contadores; c) Verificação do funcionamento de um cronômetro digital. INTRODUÇÃO TEÓRICA
Sistemas Embarcados:
Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Sistemas Embarcados: Microcontroladores DCA0119 Sistemas Digitais Heitor Medeiros Florencio Sistemas Embarcados
Introdução Informática e TIC. Prof. Ivo Júnior
Introdução Informática e TIC Prof. Ivo Júnior O que é informática?? É o ramo do conhecimento que cuida dos conceitos, procedimentos e técnicas referentes ao processamento ou tratamento de conjuntos de
PIC. PeripheralInterface Controller. Prof. EngºespLuiz Antonio Vargas Pinto www.vargasp.com. Prof. Vargas
PIC PeripheralInterface Controller Prof. EngºespLuiz Antonio Vargas Pinto www.vargasp.com Histórico Em 1965 a General Instruments criou a divisão de microeletrônica Nos anos 80 foi dividida e vendida a
PROJETO Speed Control
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ Centro de Ciências Exatas e de Tecnologia CCET PROJETO Speed Control FELIPE QUEIROLO BUCH GREGORY MORO PUPPI WANDERLEY Curitiba - PR 2009 PONTIFÍCIA UNIVERSIDADE
BARRAMENTOS DE MICROCOMPUTADORES
BARRAMENTOS DE MICROCOMPUTADORES 1. INTRODUÇÃO Um sistema baseado em microcomputador utiliza os barramentos de endereços, dados e controle para efetuar a comunicação entre o microprocessador e os dispositivos
Professor: Vlademir de Oliveira Disciplina: Microcontroladores e DSP. Memórias de Dados e de Programa
4. Memórias de Dados e de Programa Professor: Vlademir de Oliveira Disciplina: Microcontroladores e DSP 4.1 Memórias Semicondutoras Algumas definições Célula: Dispositivo de armazenamento de 1 bit. Palavra:
14/3/2016. Prof. Evandro L. L. Rodrigues
SEL 433 APLICAÇÕES DE MICROPROCESSADORES I SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Prof. Evandro L. L. Rodrigues Tópicos do curso Conceitos básicos - Aplicações e utilizações dos microcontroladores
Sistemas Distribuídos Capítulo 4 - Aula 5
Sistemas Distribuídos Capítulo 4 - Aula 5 Aula Passada Clusters de Servidores Migração de Código Comunicação (Cap. 4) Aula de hoje Chamada de Procedimento Remoto - RPC Fundamentos 1 Chamada de Procedimento
Microprocessadores. São máquinas elétricas onde podemos armazenar instruções lógicas, aritméticas e de tomada de decisão;
Microprocessadores São máquinas elétricas onde podemos armazenar instruções lógicas, aritméticas e de tomada de decisão; CPU (Central Processing Unit Unidade Central de Processamento) CPU (Central Processing
Curso Técnico de Informática de Sistemas
Curso Técnico de Informática de Sistemas Módulo: 770 Dispositivos e periféricos Formador: Henrique Fidalgo Objectivos da UFCD: Instalar e configurar dispositivos internos e externos no computador. Identificar
Voltar. Voltar. Voltar
Introdução à Informática Capítulo 1 Computadores: Ferramentas para a Era da Informação Objetivos Descrever as características fundamentais dos computadores. Identificar os componentes básicos de um sistema
ESPECIFICAÇÕES TÉCNICAS SISTEMA DE DETECÇÃO VEICULAR OVERHEAD
ESPECIFICAÇÕES TÉCNICAS SISTEMA DE DETECÇÃO VEICULAR OVERHEAD SUMÁRIO 1. SISTEMA DE DETECÇÃO OVERHEAD... 2 2. PROCEDIMENTO DE TESTE DE SISTEMA DE DETECÇÃO OVERHEAD PARA O SISTEMA SCOOT... 3 3. DOCUMENTAÇÃO...
INTERFACE PARALELA. Área: Eletrônica Nível de conhecimento necessário: básico. Autor:
INTERFACE PARALELA Área: Eletrônica Nível de conhecimento necessário: básico Tópicos abordados: O que é a interface paralela? Quantas entradas e saídas ela possui? Construindo a interface Manipulando no
HARDWARE INFORMÁTICA. Prof.: MARCIO HOLLWEG [email protected]
INFORMÁTICA Prof.: MARCIO HOLLWEG [email protected] HARDWARE O COMPUTADOR, INDEPENDENTE DO TIPO: PARA QUE ISTO POSSA OCORRER TEMOS QUE ALIMENTÁLO COM DADOS E AGUARDAR O RETORNO DESTE PROCESSAMENTO.
SEL-433 APLICAÇÕES DE MICROPROCESSADORES I
SEL 433 APLICAÇÕES DE MICROPROCESSADORES I SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Apresentação do curso Critério de avaliação Média final = 0.8 * MP + 0.2 * ME onde MP = (P1 + P2) / 2 e ME = Notas
Microcontroladores e Microprocessadores
Microcontroladores e Microprocessadores Prof. Alison Lins Microcontrolador Agenda - Histórico da Evolução da Eletrônica - Microprocessadores - Memórias - Microcontroladores - Microcontrolador x Microprocessador
SISTEMAS MICROCONTROLADOS
SISTEMAS MICROCONTROLADOS UTFPR Código: EL54E Turma: N11/E11 Prof. Sérgio Moribe Colaboração: Prof. Heitor S. Lopes Prof. Rubens Alexandre de Faria Email: [email protected] Site: pessoal.utfpr.edu.br/smoribe
Sistemas Computacionais e Hardware. Disciplina: Informática Prof. Higor Morais
Sistemas Computacionais e Hardware Disciplina: Informática Prof. Higor Morais 1 Agenda Sistema Computacional O Computador e seus componentes Hardware 2 Unidade de entrada Unidade de saída Unidade de Processamento
INTEGRAÇÃO JAVA COM ARDUINO
INTEGRAÇÃO JAVA COM ARDUINO Alessandro A. M. De Oliveira 3, Alexandre O. Zamberlan 3, Reiner F Perozzo 3, Rafael O. Gomes 1 ;Sergio R. H Righi 2,PecilcesP. Feltrin 2 RESUMO A integração de Linguagem de
5ª AULA OBJETIVOS: PLACA MÃE TIPOS DE PLACAS-MÃE COMPONENTES BÁSICOS APOSTILA PÁGINAS: 57 A 83.
HARDWARE Montagem e Manutenção de Computadores Instrutor: Luiz Henrique Goulart 5ª AULA OBJETIVOS: PLACA MÃE TIPOS DE PLACAS-MÃE COMPONENTES BÁSICOS APOSTILA PÁGINAS: 57 A 83. O O QUE ESTUDAR NUMA PLACA-MÃE?
ARDUINO. Profº. Engº. Robson Dias Ramalho
ARDUINO Profº. Engº. Robson Dias Ramalho 3. Microprocessador (E/S) 4. Memória RAM (E/S) 5. Placa de vídeo (E/S) 8. Disco Rígido (E/S) 9. Mouse (Saída) 10. Teclado (E/S) 2. Placa mãe (barramento de dados)
Objetivos. Arquitetura x86. Evolução dos Microprocessadores com arquitetura x86. Universidade São Judas Tadeu. Introdução à Computação
Universidade São Judas Tadeu Prof. André Luiz Ribeiro Prof. Jorge Luis Pirolla Introdução à Computação Microprocessadores e Arquitetura (2) - FEDELI, Ricardo D.; POLLONI, Enrico G.; PERES, Fernando E.
ELETRÔNICA DIGITAL. Parte 6 Display, Decodificadores e Codificadores. Prof.: Michael. 1 Prof. Michael
ELETRÔNICA DIGITAL Parte 6 Display, Decodificadores e Codificadores Prof.: Michael LED Diodo emissor de luz (LED) Para nós será utilizado para dar uma indicação luminosa do nível lógico de sinal; Ligado
Comunicação RS232 e RS485 Vitor Amadeu Souza [email protected] www.cerne-tec.com.br
Comunicação RS232 e RS485 Vitor Amadeu Souza [email protected] www.cerne-tec.com.br Introdução Neste artigo, irei explorar com os leitores a comunicação RS232 e RS485, muito usadas em nosso cotidiano
Organização e Arquitetura de Computadores
Organização e Arquitetura de Computadores Placa de Mãe Prof. Luiz Antonio do Nascimento Definição A placa mãe é uma placa plana de circuito impresso localizado dentro do gabinete com um conjunto de chips
Microcontroladores PIC
Microcontroladores PIC Prof. Adilson Gonzaga 1 Arquitetura de Microcomputadores Arquitetura von Neumann: Há apenas um barramento (duto) de dados e um de endereço. As Instruções e os dados ocupam o mesmo
Introdução aos microcontroladores Microcontroladores e microprocessadores Tecnologia em Manutenção Industrial
Introdução aos microcontroladores Microcontroladores e microprocessadores Tecnologia em Manutenção Industrial 1 Definição de microcontroladores É um circuito integrado que pode ser programado para realização
Programa Trainee 2012 Módulo 4 Microcontroladores AVR
Programa Trainee 2012 Módulo 4 Microcontroladores AVR Conteúdo 01 Arquitetura de microcontroladores AVR Mayara de Sousa Prof. Leandro Schwarz Tempo Estimado 2 h.a. Projeto de Placas de Circuito Impresso
DESENVOLVIMENTO DE UM SISTEMA PARA ANÁLISE DE RADONIO USANDO DETECTORES DE ESTADO SÓLIDO DE TRAÇOS NUCLEARES- SSNTD
2007 International Nuclear Atlantic Conference - INAC 2007 Santos, SP, Brazil, September 30 to October 5, 2007 ASSOCIAÇÃO BRASILEIRA DE ENERGIA NUCLEAR - ABEN ISBN: 978-85-99141-02-1 DESENVOLVIMENTO DE
Introdução a Informática
Informática Introdução a Informática Carlos Eduardo da Silva [email protected] Sistemas computacionais Sistemas computacionais O computador é uma máquina eletrônica capaz de receber informações,
ENGENHARIA DE SISTEMAS MICROPROCESSADOS
ENGENHARIA DE SISTEMAS MICROPROCESSADOS Prof. Pierre Vilar Dantas Turma: 0040-A Horário: 4N Aula 01-26/07/2017 Plano de ensino Professor www.linkedin.com/in/pierredantas/ TÓPICOS Conceitos gerais. Evolução
Painel Gráfico No-Break Conception Multi Ativo Innovation
Painel Gráfico No-Break Conception Multi Ativo Innovation Rev. 01 CM COMANDOS LINEARES - 1/16 - Índice Painel Gráfico - Status e comandos. 3 Medições 9 Configurações do Painel 10 Alarme Remoto Mensagens
UNIVERSIDADE FEDERAL DE CAMPINA GRANDE CENTRO DE ENGENHARIA ELÉTRICA E INFORMÁTICA UNIDADE ACADEMICA DE ENGENHARIA ELÉTRICA ELETRÔNICA
UNIVERSIDADE FEDERAL DE CAMPINA GRANDE CENTRO DE ENGENHARIA ELÉTRICA E INFORMÁTICA UNIDADE ACADEMICA DE ENGENHARIA ELÉTRICA ELETRÔNICA (1) Determine o valor da tensão na saída V o. LISTA DE EXERCICIOS
MATÉRIA TÉCNICA APTTA BRASIL
MATÉRIA TÉCNICA APTTA BRASIL TRANSMISSÕES FORD 6F50 e GM 6T70 - PARECIDAS PORÉM DIFERENTES As transmissões 6F50 e 6T70 foram desenvolvidas por um esforço conjunto entre FORD e General Motors. Devido ao
Estrutura Básica de um Computador
SEL-0415 Introdução à Organização de Computadores Estrutura Básica de um Computador Aula 2 Prof. Dr. Marcelo Andrade da Costa Vieira INTRODUÇÃO n Organização Æ implementação do hardware, componentes, construção
Curso de Sistemas de Informação 8º período Disciplina: Tópicos Especiais Professor: José Maurício S. Pinheiro V. 2009-1
Curso de Sistemas de Informação 8º período Disciplina: Tópicos Especiais Professor: José Maurício S. Pinheiro V. 2009-1 Aula 5 Sistemas Biométricos 1. Sistema Biométrico Típico Qualquer que seja a característica
Família de Microcontroladores AVR
www.iesa.com.br 1 AVR é o nome dado a uma linha ou família de microcontroladores fabricada pela empresa Atmel nos Estados Unidos. A sigla AVR é em homenagem a dois estudantes de doutorado de uma universidade
Nota de Aplicação. Migração Altivar 58(F) para Altivar 71 com rede Profibus. Suporte Técnico Brasil. Versão: 1.0
Nota de Aplicação Migração Altivar 58(F) para Altivar 71 com rede Profibus Versão: 1.0 Suporte Técnico Brasil Especificações técnicas Hardware: Firmware: Altivar 58 N/A VW3A58307 N/A Altivar 71 N/A VW3A3307
Hardware. (Equipamentos Parte Física), ou seja, tudo o que podemos tocar com as mãos.
Nossas tarefas, trabalhos e serviços ganharam agilidade com os computadores, facilitando nossas vidas. Para que esse equipamento possa tornar o nosso trabalho mais fácil e rápido, é necessário um conjunto
Nosso Site. http://www.cintegrado.com.br/anapolis/
Nosso Site http://www.cintegrado.com.br/anapolis/ MÓDULO I INFORMÁTICA BÁSICA Endereço do grupo Endereço da web atual: http://douglasddp.wordpress.com.br Endereço de e-mail atual: [email protected]
CAPÍTULO 2 SISTEMAS DE NUMERAÇÃO E CÓDIGOS
CAPÍTULO 2 SISTEMAS DE NUMERAÇÃO E CÓDIGOS Código BCD; Comparação entre BCD e Binário; Circuitos Digitais para BCD; Código Gray; Código ASCII; Detecção de erros pelo método de Paridade O que é um Código?
Arquitetura e Organização de Computadores. Processador Registrador Memória. Professor Airton Ribeiro
Arquitetura e Organização de Computadores Processador Registrador Memória Professor Airton Ribeiro Processador A função de um computador é executar tarefas com a finalidade de resolver problemas. Uma tarefa
1.1. Definição do Problema
13 1 Introdução Uma das principais preocupações de área de engenharia de software diz respeito à reutilização [1]. Isso porque a reutilização no contexto de desenvolvimetno de software pode contribuir
Capítulo 5 - Cabeamento para Redes Locais e WANs. Associação dos Instrutores NetAcademy - Julho de 2007 - Página
Capítulo 5 - Cabeamento para Redes Locais e WANs 1 Camada Física de Rede Local Uma rede de computador pode ser montada utilizando-se vários tipos de meios físicos, representados pelos símbolos abaixo:
Arquitetura de Computadores
Arquitetura de Computadores Componentes básicos de um computador Memória Processador Periféricos Barramento O processador (ou microprocessador) é responsável pelo tratamento de informações armazenadas
