SlideShare una empresa de Scribd logo
1 de 178
Descargar para leer sin conexión
UNIVERSIDADE DO VALE DO ITAJAÍ
CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
      CURSO DE ENGENHARIA DE COMPUTAÇÃO




  KIT MODULAR DE DESENVOLVIMENTO BASEADO EM
            MICROCONTROLADOR PIC


              Área de Sistemas Embarcados


                           por


                  Bruno Rodrigues Silva




           Paulo Roberto Oliveira Valim, M.Eng.
                        Orientador




               São José (SC), junho de 2011
UNIVERSIDADE DO VALE DO ITAJAÍ
CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
      CURSO DE ENGENHARIA DE COMPUTAÇÃO




  KIT MODULAR DE DESENVOLVIMENTO BASEADO EM
            MICROCONTROLADOR PIC


              Área de Sistemas Embarcados


                          por


                 Bruno Rodrigues Silva




                            Relatório apresentado à Banca Examinadora do
                            Trabalho de Conclusão do Curso de Engenharia
                            de Computação para análise e aprovação.
                            Orientador: Paulo Roberto Oliveira Valim,
                            M.Eng.




              São José (SC), junho de 2011
SUMÁRIO

LISTA DE ABREVIATURAS................................................................ vi
LISTA DE FIGURAS ............................................................................. ix
LISTA DE TABELAS ............................................................................ xii
LISTA DE EQUAÇÕES ....................................................................... xiii
RESUMO ............................................................................................... xiv
ABSTRACT ............................................................................................ xv
1 INTRODUÇÃO.................................................................................... 1
1.1 KITS DE DESENVOLVIMENTO BASEADOS EM PIC ............................. 1
1.2 PROBLEMATIZAÇÃO ................................................................................... 2
1.2.1 Formulação do problema ............................................................................... 2
1.2.2 Solução proposta ............................................................................................ 3
1.3 JUSTIFICATIVA ............................................................................................. 4
1.3.1 Importância .................................................................................................... 4
1.4 OBJETIVOS ..................................................................................................... 5
1.4.1 Objetivo Geral ................................................................................................ 5
1.4.2 Objetivos Específicos...................................................................................... 5
1.5 METODOLOGIA ............................................................................................. 5
1.6 ESTRUTURA DO TRABALHO ..................................................................... 7
2 FUNDAMENTAÇÃO TEÓRICA ...................................................... 8
2.1 MICROCONTROLADORES .......................................................................... 8
2.1.1 Exemplo de fabricantes de microcontroladores de 8 bits........................... 10
2.2 MICROCHIP TECHNOLOGY..................................................................... 11
2.2.1 Famílias e grupos de microcontroladores PIC de 8 bits............................. 11
2.2.2 Exemplos de microcontroladores PIC de 8 bits .......................................... 14
2.2.3 Encapsulamento ........................................................................................... 18
2.3 MICROCONTROLADOR PIC18F4520 ....................................................... 22
2.3.1 Estrutura externa ......................................................................................... 22
2.3.2 Estrutura interna ......................................................................................... 22
2.3.3 Recursos de hardware .................................................................................. 24
2.4 BARRAMENTO I2C ...................................................................................... 41
2.4.1 Características do barramento I2C ............................................................. 42
2.4.2 Protocolo I2C ................................................................................................ 44
2.5 COMPONENTES PERIFÉRICOS ............................................................... 50
2.5.1 Motor de passo ............................................................................................. 51
2.5.2 Teclado matricial.......................................................................................... 59
2.5.3 Módulo LCD ................................................................................................. 62
2.6 CONSIDERAÇÕES ....................................................................................... 68
3 DESENVOLVIMENTO .................................................................... 69
3.1 METODOLOGIA PARA DEFINIÇÃO DO MODELO .............................. 69
3.2 VISÃO GERAL .............................................................................................. 71
3.3 REQUISITOS ................................................................................................. 72
3.3.1 Requisitos Gerais do Kit Modular de Desenvolvimento ............................ 72
3.3.2 Requisitos do Módulo Controlador ............................................................. 72
3.3.3 Requisitos do Módulo I2C ............................................................................ 73
3.3.4 Requisitos do Módulo Motor de Passo ........................................................ 74
3.3.5 Requisitos do Módulo Display LCD ............................................................ 75
3.3.6 Requisitos do Módulo Teclado Matricial .................................................... 76
3.4 ARQUITETURA DE HARDWARE ............................................................. 76
3.5 IMPLEMENTAÇÃO VIRTUAL................................................................... 79
3.5.1 Seleção dos componentes virtuais ................................................................ 79
3.5.2 Validação da Implementação Virtual ......................................................... 85
3.6 IMPLEMENTAÇÃO FÍSICA ....................................................................... 95
3.6.1 Diferenças entre os circuitos virtuais e físicos dos módulos ....................... 95
3.6.2 Prototipação do kit ....................................................................................... 96
3.6.3 Modularidade dos protótipos .................................................................... 100
3.6.4 Validação dos protótipos............................................................................ 100
3.7 CONFECÇÃO DAS PLACAS FINAIS DOS MÓDULOS DO KIT .......... 103
3.7.1 Mudanças dos protótipos para as placas finais ........................................ 103
3.8 CUSTOS DO PROJETO .............................................................................. 104
3.8.1 Custo dos componentes .............................................................................. 105
3.8.2 Custo das placas ......................................................................................... 108
3.9 CONSIDERAÇÕES ..................................................................................... 109
4 CONCLUSÃO .................................................................................. 110
4.1 OPORTUNIDADES DE TRABALHOS FUTUROS .................................. 112
REFERÊNCIAS BIBLIOGRÁFICAS ................................................ 113
APÊNDICE A ....................................................................................... 118
APÊNDICE B ....................................................................................... 119
APÊNDICE C ....................................................................................... 120
APÊNDICE D ....................................................................................... 121
APÊNDICE E ....................................................................................... 124
APÊNDICE F ....................................................................................... 126
APÊNDICE G....................................................................................... 128
APÊNDICE H....................................................................................... 130
APÊNDICE I ........................................................................................ 132
APÊNDICE J ........................................................................................ 133
                                                        iv
APÊNDICE K....................................................................................... 134
APÊNDICE L ....................................................................................... 135
APÊNDICE M ...................................................................................... 136
APÊNDICE N ....................................................................................... 137
APÊNDICE O....................................................................................... 138
APÊNDICE P ....................................................................................... 139
APÊNDICE Q....................................................................................... 140
APÊNDICE R ....................................................................................... 141
APÊNDICE S........................................................................................ 142




                                                  v
LISTA DE ABREVIATURAS

A/D       Analógico/Digital
ACK       Acknowledge
ANSI-C    American National Standards Institute padrão C
ASCII     American Standard Code for Information Interchange
BOR       Bourn-out Reset
BSR       Bank Select Register
C         Carry flag
CAN       Controller Area Network
CCP       Capture/Compare/PWM
CCPRx     CCPx Register
CCPxCON   CCPx Control Register
CFGS      Flash Program/Data EEPROM or Configuration Select bit
CISC      Complex Instruction Set Computer
CLRWDT    Clear Watchdog Timer
CMOS      Complementary Metal-Oxide-Semiconductor
COP8      8-bit Control-Oriented Processor
CPU       Central Processing Unit
CTMU      Charge Time Measurement Unit
E/S       Entrada/Saída
ECCP      Enhanced Capture/Compare/PWM
EEADR     EEPROM Address Register
EECON     EEPROM Control Register
EEDATA    EEPROM Data Register
EEPGD     Flash Program or Data EEPROM Memory Select bit
EEPROM    Electrically-Erasable Programmable Read-Only Memory
EUA       Estados Unidos da América
EUSART    Enhanced USART
FSR       File Select Register
GND       Ground
GPR       General Purpose Register
I2C       Inter-Intergrated Circuit
ICSP      In-Circuit Serial Programming
INTCON    Interrupt Control Register
IPR       Peripheral Interrupt Priority Register
KMD       Kit Modular de Desenvolvimento
LCD       Liquid Crystal Display
MCT       Módulo Controlador
MCU       Microcontrolador
MDL       Módulo Display LCD
MIC       Módulo I²C
MIPS      Milhões de Instruções Por Segundo
MMP       Módulo Motor de Passo
MSSP      Master Synchronous Serial Port
MTM       Módulo Teclado Matricial
NACK      Not Acknowledge
NC        No Connect
PC        Program Counter
PCI       Placa de Circuito Impresso
PDIP      Plastic Dual In-Line Packages
PIC       Peripherical Interface Controller
PIER      Peripheral Interrupt Enable Register
PIR       Peripheral Interrupt Request Register
POR       Power-on Reset
PPR       Passos Por Rotação
PPS       Passos por segundo
PR2       Period Register 2
PWM       Pulse-Width Modulation
QFN       Quad Flat, No Lead Package
R/W       Read/Write
RAM       Random Access Memory
RC        Resistor Capacitor
RCON      Reset Control Register
RD        Read Control bit
REF       Requisitos funcionais
RISC      Reduced Instruction Set Computer
RNF       Requisitos não funcionais
ROM       Read Only Memory
RTC       Real Time Clock
SCK       Serial Clock
SCL       Serial Clock
SDA       Serial Data
SDI       Serial Data In
SDO       Serial Data Out
SFR       Special Function Registers
SOIC      Small Outline Plastic Packages
SPI       Serial Peripheral Interface
SS        Slave Select
SSPBUF    MSSP Buffer Register
SSPCON1   MSSP Control Register 1
SSPCON2   MSSP Control Register 2
SSPSR     MSSP Shift Register
SSPSTAT   MSSP Status Register
SSOP      Shrink Small Outline Packages
T0CON     Timer 0 Control Register
T1CON     Timer 1 Control Register
T2CON     Timer 2 Control Register
T3CON     Timer 3 Control Register
TCC       Trabalho de Conclusão de Curso
TMR0      Timer 0 Register
TMR0H     Timer 0 Register High
TMR0L     Timer 0 Register Low
TMR1      Timer 1 Register
TMR2      Timer 2 Register
TMR3      Timer 3 Register
UFES      Universidade Federal do Espírito Santo

                                  vii
UFLA      Universidade Federal de Lavras
UFRGS     Universidade Federal do Rio Grande do Sul
UFSC      Universidade Federal de Santa Catarina
ULA       Unidade Lógica Aritmética
UNIVALI   Universidade do Vale do Itajaí
USART     Universal Synchronous Asynchronous Receiver Transmitter
USB       Universal Serial Bus
UTFPR     Universidade Tecnológica Federal do Paraná
W         Working Register
WDT       Watchdog Timer
WERN      Flash Program/Data EEPROM Write Enable bit




                                viii
LISTA DE FIGURAS

Figura 1. Microcontrolador .............................................................................................................. 8
Figura 2. Arquitetura do microcontrolador: (a) von-Newmann; (b) Harvard .....................................9
Figura 3. Gráfico ilustrado da organização dos PICs em tamanho da palavra de instrução.............. 12
Figura 4. Diagrama simplificado dos pinos do PIC16F54............................................................... 14
Figura 5. Diagrama simplificado dos pinos do PIC16F628A. ......................................................... 15
Figura 6. Diagrama simplificado dos pinos do PIC16F1826. .......................................................... 15
Figura 7. Diagrama simplificado dos pinos do PIC18F1320. .......................................................... 16
Figura 8. Vista em perspectiva do encapsulamento QFN em um chip com 28 pinos. ...................... 18
Figura 9. Vista em perspectiva do encapsulamento SOIC em um chip com 28 pinos. ..................... 19
Figura 10. Vista em perspectiva do encapsulamento SSOP em um chip com 28 pinos. .................. 20
Figura 11. Vista em perspectiva do encapsulamento PDIP em um chip com 28 pinos. ................... 20
Figura 12. Vista superior do encapsulamento PDIP em um chip com 28 pinos. .............................. 21
Figura 13. (a) Vista lateral e (b) vista frontal do encapsulamento PDIP em um chip com 28 pinos. 21
Figura 14. Diagrama dos pinos do PIC18F4520 em encapsulamento PDIP de 40 pinos.................. 22
Figura 15. Estrutura interna do microcontrolador PIC18F4520. ..................................................... 23
Figura 16. Oscilador externo por (a) circuito RC, (b) cristal/ressonador. ........................................ 24
Figura 17. Circuito de reset externo (a) POR e (b) BOR. ............................................................... 26
Figura 18. Mapa da memória de dados do PIC18F4520. ................................................................ 27
Figura 19. Leitura do dado do endereço 0x33 da EEPROM e escrita em W (Working Register). .... 28
Figura 20. Escrita do valor 5 no endereço 0x33 da EEPROM. ....................................................... 29
Figura 21. Estrutura do mapa da memória de programa do PIC18F4520. ....................................... 30
Figura 22. Exemplo de leitura e escrita no PORTA. ....................................................................... 32
Figura 23. Modo PWM em saída única. ......................................................................................... 39
Figura 24. Modo PWM em meia ponte para controle de circuito de (a) meia ponte ou (b) ponte
    completa. ............................................................................................................................... 39
Figura 25. Modo PWM em ponte completa para controle de circuito de ponte completa. ............... 39
Figura 26. Modo SPI de comunicação serial síncrona. ................................................................... 40
Figura 27. Modo I2C de comunicação serial síncrona. .................................................................... 40
Figura 28. Sincronização entre mestre-escravo no modo SPI. ........................................................ 41
Figura 29. Comunicação mestre-escravo no barramento I2C. ......................................................... 42
Figura 30. Aspectos físicos do barramento I2C (a) sem e (b) com resistores em série (RS).............. 43
Figura 31. Gráfico da relação dos resistores de pull-up e de proteção no circuito I2C. .................... 44
Figura 32. Condições do protocolo I2C para transferência de dados. .............................................. 45
Figura 33. Condições de (a) Start e (b) Stop do protocolo I2C. ....................................................... 46
Figura 34. Identificação do componente com (a) 7 bits e (b) 10 bits de endereço. ......................... 47
Figura 35. Validação de um bit em nível lógico (a) alto e (b) baixo no protocolo I2C. .................... 48
Figura 36. Transferência completa no protocolo I2C. ..................................................................... 48
Figura 37. Sincronização do relógio entre dois mestres concorrentes. ............................................ 49
Figura 38. Arbitragem entre dois mestres concorrentes. ................................................................. 50
Figura 39. Gráfico relacionando entre torque e velocidade em PPS (Passos por segundo). ............. 52
Figura 40. Ilustração dos terminais dos enrolamentos de um motor unipolar. ................................. 52
Figura 41. Ilustração dos terminais dos enrolamentos de um motor bipolar. ................................... 53
Figura 42. Circuito para o controle de motor de passo unipolar. ..................................................... 54
Figura 43. Circuito para o controle de motor de passo bipolar. ....................................................... 54
Figura 44. Sinal digital controlando a corrente aplicada em uma bobina do motor de passo. .......... 57
Figura 45. Chave de acionamento momentâneo com identificação do bounce. ............................... 60
Figura 46. Matriz m x n de interconexão de chaves momentâneas. ................................................. 61
Figura 47. Representação dos módulos LCD (a) gráficos e (b) alfanuméricos. ............................... 63
Figura 48. LCD Hitachi com drive HD44780................................................................................. 64
Figura 49. Conexões dos pinos do driver do LCD com um microcontrolador. ................................ 64
Figura 50. Visão geral do projeto. .................................................................................................. 71
Figura 51. Arquitetura do Kit Modular de Desenvolvimento. ......................................................... 77
Figura 52. Circuito de simulação do Módulo Controlador. ............................................................. 80
Figura 53. Circuito de simulação do Módulo I²C. .......................................................................... 81
Figura 54. Circuito de simulação do Módulo Motor de Passo......................................................... 83
Figura 55. Circuito de simulação do Módulo Display LCD. ........................................................... 84
Figura 56. Circuito de simulação do Módulo Teclado Matricial. .................................................... 85
Figura 57. Janela do Hyper Terminal na validação do Experimento B............................................ 86
Figura 58. Janela do ANALISADOR I2C do Experimento C. ........................................................ 88
Figura 59. Janela do ANALISADOR I2C do Experimento D......................................................... 89
Figura 60. Janela do RTC com a data gravada no Experimento D. ................................................. 89
Figura 61. Gráfico do acionamento do MOTOR 1 em sentido horário no Experimento E............... 90
Figura 62. Gráfico do acionamento do MOTOR 1 em sentido anti-horário no Experimento E. ....... 91
Figura 63. Chaveamento dos sinais PWM no Experimento F. ........................................................ 92
Figura 64. LCD com contagem de 0 até 100 no Experimento G. .................................................... 93
Figura 65. Identificação da chave pressionada no Experimento H. ................................................. 94
Figura 66. Imagem em 3D do protótipo do Módulo Controlador. ................................................... 97
Figura 67. Imagem em 3D do protótipo do Módulo I²C. ................................................................ 98
Figura 68. Imagem em 3D do protótipo do Módulo Motor de Passo. ............................................. 98
Figura 69. Imagem em 3D do protótipo do Módulo Display LCD. ................................................. 99
Figura 70. Imagem em 3D do protótipo do Módulo Teclado Matricial. .......................................... 99
Figura 71. Resultado da validação 9 com os protótipos físicos. .................................................... 102
Figura 72. Resultado da validação 10 com os protótipos físicos. .................................................. 103
Figura 73. Código fonte do Experimento A.................................................................................. 118
Figura 74. Código fonte do Experimento B. ................................................................................. 119
Figura 75. Código fonte do Experimento C. ................................................................................. 120
Figura 76. Código fonte do Experimento D.................................................................................. 121
Figura 77. Código fonte do Experimento E. ................................................................................. 124
Figura 78. Código fonte do Experimento F. ................................................................................. 126
Figura 79. Código fonte do Experimento G.................................................................................. 128
Figura 80. Código fonte do Experimento H.................................................................................. 130
Figura 81. Circuito esquemático do Módulo Controlador. ............................................................ 132
Figura 82. Circuito esquemático do Módulo I²C. ......................................................................... 133
Figura 83. Circuito esquemático do Módulo Motor de Passo. ...................................................... 134
Figura 84. Circuito esquemático do Módulo Display LCD. .......................................................... 135
Figura 85. Circuito esquemático do Módulo Teclado Matricial. ................................................... 136
Figura 86. Footprint da placa do Módulo Controlador. ................................................................ 137
Figura 87. Layer da placa do Módulo Controlador. ...................................................................... 137
Figura 88. Footprint da placa do Módulo I²C. .............................................................................. 138
Figura 89. Layer da placa do Módulo I²C..................................................................................... 138
Figura 90. Footprint da placa do Módulo Motor de Passo. ........................................................... 139
Figura 91. Layer da placa do Módulo Motor de Passo. ................................................................. 139
Figura 92. Footprint da placa do Módulo Display LCD. .............................................................. 140
Figura 93. Layer da placa do Módulo Display LCD. .................................................................... 140
Figura 94. Footprint da placa do Módulo Teclado Matricial. ....................................................... 141

                                                                   x
Figura 95. Layer da placa do Módulo Teclado Matricial. ............................................................. 141
Figura 96. Footprint da placa do Módulo Controlador na versão final. ......................................... 142
Figura 97. Footprint da placa do Módulo I²C na versão final. ...................................................... 142
Figura 98. Footprint da placa do Módulo Motor de Passo na versão final. ................................... 143
Figura 99. Footprint da placa do Módulo Display LCD na versão final. ....................................... 143
Figura 100. Footprint da placa do Módulo Teclado Matricial na versão final. .............................. 144




                                                          xi
LISTA DE TABELAS

Tabela 1. Exemplos de kits de desenvolvimento baseados no PIC16F877A .....................................2
Tabela 2. Características dos grupos de microcontroladores PIC .................................................... 13
Tabela 3. Descrição das funcionalidades dos pinos compatíveis entre os microcontroladores PIC
    exemplificados....................................................................................................................... 17
Tabela 4. Definições do protocolo I2C ........................................................................................... 45
Tabela 5. Sequência de acionamento do motor de passo unipolar para passo completo .................. 55
Tabela 6. Sequência de acionamento do motor de passo unipolar para meio passo ......................... 56
Tabela 7. Proporção de ocupação do ciclo ativo de um sinal para 32 micro-passo por passo .......... 58
Tabela 8. Exemplo de varredura em uma matriz de ordem quatro, onde c23 foi pressionado. .......... 62
Tabela 9. Descrição das funções dos pinos do LCD ....................................................................... 65
Tabela 10. Instruções de comando mais comuns do LCD 2x16 ...................................................... 66
Tabela 11. Código de identificação do tipo de operação do LCD para inicialização ....................... 67
Tabela 12. Relação dos pinos do PIC18F4520 com os módulos do kit ........................................... 77
Tabela 13. Relação de as imagens da PCI com os módulos do kit .................................................. 96
Tabela 14. Validação dos experimentos realizados nas combinações dos módulos ....................... 100
Tabela 15. Mudanças dos protótipos para as placas finais dos módulos........................................ 104
Tabela 16. Custo de compra dos componentes do protótipo do Módulo Controlador .................... 105
Tabela 17. Custo de compra dos componentes do protótipo do Módulo I²C ................................. 106
Tabela 18. Custo de compra dos componentes do protótipo do Módulo Motor de Passo .............. 106
Tabela 19. Custo de compra dos componentes do protótipo do Módulo Display LCD .................. 107
Tabela 20. Custo de compra dos componentes do protótipo do Módulo Teclado Matricial ........... 107
Tabela 21. Custo de compra dos materiais para produção dos protótipos ..................................... 108
Tabela 22. Descrição dos pinos do PIC18F4520 .......................................................................... 146
Tabela 23. Instruções de operações orientadas a byte ................................................................... 150
Tabela 24. Instruções de operações orientadas a bit ..................................................................... 151
Tabela 25. Instruções de operações literais .................................................................................. 151
Tabela 26. Instruções de operações de controle ............................................................................ 151
LISTA DE EQUAÇÕES

Equação 1 ...................................................................................................................................... 37
Equação 2 ...................................................................................................................................... 37
Equação 3 ...................................................................................................................................... 57
Equação 4 ...................................................................................................................................... 57
Equação 5 ...................................................................................................................................... 57
Equação 6 ...................................................................................................................................... 58
RESUMO

SILVA, Bruno Rodrigues. Kit Modular de Desenvolvimento Baseado em Microcontrolador
PIC. São José, 2011. 178 f. Trabalho de Conclusão de Curso (Graduação em Engenharia de
Computação) – Centro de Ciências Tecnológicas da Terra e do Mar, Universidade do Vale do Itajaí,
São José, 2011.

A prototipação de sistemas embarcados microcontrolados, tanto profissionais quanto acadêmicos,
normalmente, utilizam um kit de desenvolvimento voltado ao uso do microcontrolador de um
fabricante específico. Isso faz com que o kit não possa ser reutilizado em outros projetos que visam
à utilização dos mesmos recursos periféricos, contidos na placa de circuito impresso do kit, com
microcontrolador de outro fabricante qualquer. Essa característica encontrada em kits tradicionais
acarreta uma limitação da flexibilidade do uso do kit, além de um aumento no custo de um
determinado projeto pela compra de outro kit com os mesmos recursos para o microcontrolador do
fabricante desejado. Para evitar esses problemas, este trabalho procurou relacionar em hardware os
princípios de modularidade para resolução de um problema complexo. Assim, o objetivo foi
conceber um kit modular de desenvolvimento que possibilite ao usuário combinar os módulos de
acordo com as suas necessidades, de modo que seus recursos sejam reutilizados em diferentes
projetos, independentemente do microcontrolador. Para este kit foram confeccionados cinco
módulos distintos, sendo: um módulo destinado a utilização de microcontrolador PIC de 8 bits, um
para utilização de componentes periféricos compatíveis com o barramento I2C, um para o controle
de motores de passo unipolares, um para a utilização de display LCD alfanumérico e mais um para
utilização de teclado matricial de ordem 4. Neste trabalho foram realizadas as etapas
correspondentes ao levantamento de informações, modelagem, virtualização e prototipação do kit
modular de desenvolvimento, além de atividades práticas para os testes de validação de cada
módulo.


Palavras-chave: Kit. Desenvolvimento. Modular. Microcontrolador. PIC.
ABSTRACT

The prototyping of embedded system, both professionals and academics, normally use a
development kit directed to use microcontroller of a specific manufacturer. This makes the kit can
not be reused in other projects that aim the utilization the same peripheral resources, contained in
the printed circuit board of the kit, with microcontroller of any other manufacturer. These feature
found in traditionals kits entails in a limitation of the flexibility of the use of the kit, beyond an
increase in the cost of a project by buying another kit with the same resources for the
microcontroller of the manufacturer desired. To avoid these problems, this work searched to relate,
in hardware, the principles of modularity for solving of a complex problem. So, the objective was
conceive a modulate development kit that allows the user combine the modules accordance with his
needs, so that its resources be reused in different projects, independently of the microcontroller.
For this development kit will be made five distinct modules, being one module for the use of 8-bit
PIC microcontroller, one for the use of peripherals components compatible with the I2C bus, one
for control of stepper motors, one for the use of LCD display and one for use of a matrix keyboard.
At this work were realized the corresponding steps at the information survey, modeling,
virtualization and prototyping of the modular development kit, beyond as practical activities for the
validation tests for each module.


Keywords: Kit. Development. Modulate. Microcontroller. PIC.
1 INTRODUÇÃO

       Normalmente, as instituições de ensino do Brasil, que oferecem cursos de nível técnico,
tecnólogo e engenharia, reservam, em suas disciplinas, horas/aula dedicadas ao ensino prático dos
assuntos abordados, de modo teórico, em sala de aula. Essa prática pedagógica é fundamental para a
absorção do conteúdo por parte do estudante (FRAGA, 2008).

       O curso de Engenharia de Computação apresenta, em sua matriz curricular, disciplinas com
ementas que envolvem aplicações práticas em laboratórios, equipados com recursos que, na maioria
das vezes, vão além de computadores e internet. Sendo assim, algumas universidades como UFRGS
(Universidade Federal do Rio Grande do Sul), UFES (Universidade Federal do Espírito Santo) e
UNIVALI (Universidade do Vale do Itajaí), já abordam microcontroladores/microprocessadores no
conteúdo programático de algumas disciplinas, onde utilizam kits de desenvolvimento na
implementação das atividades práticas realizadas em laboratórios.

       À medida que são avaliados por suas implementações práticas, os alunos demonstram
interesse em realizar suas atividades fora do horário de aula, podendo assim melhorar seus trabalhos
(FRAGA, 2008). Infelizmente, os laboratórios não podem ficar abertos a todo o momento para o
estudante, que por sua vez, em alguns casos, não dispõe do tempo em que os laboratórios estão
disponíveis. Para esses casos, supõe-se que o aluno deveria comprar um kit por conta própria, e
assim, praticar os conteúdos da matéria em horário extra disciplinar. Algumas empresas que
comercializam esses kits e materiais didáticos visam, em sua maioria, apresentar produtos com uma
gama de possibilidades de aplicações elevada. Assim, seus materiais podem abranger diversas
funcionalidades e, consequentemente, ampliar o leque de clientes em potencial.


1.1 KITS DE DESENVOLVIMENTO BASEADOS EM PIC
       Os kits podem se diferenciar muito de um para o outro, dependendo do foco de sua
utilização e dos recursos contidos. Entre os kits de desenvolvimento baseados em microcontrolador
PIC (Peripherical Interface Controller), destacam-se os fabricantes: LabTools, Microgenios, Cerne-
Tec e AcePIC, os quais disponibilizam seus kits através de sites de comércio eletrônico para todo o
Brasil. Na Tabela 1, são apresentados alguns exemplos de kits de desenvolvimento que são
vendidos com o microcontrolador PIC16F877A, no qual apresentam recursos comuns entre eles,
tais como: display LCD (Liquid Crystal Display), display de 7 segmentos, teclas, leds e etc.
Tabela 1. Exemplos de kits de desenvolvimento baseados no PIC16F877A
  Fabricante                   Nome                      Preço à vista           Ilustração

   LabTools               McLab 2 - 16F                       R$ 556,60



 Microgenios        Kit PICgenios PIC16F877A                  R$ 580,00




  Cerne-Tec              PICLAB16F877A                        R$ 399,90




    AcePIC       ACEPIC 40 v2.0 (PIC16F877A)                  R$ 275,90



Fonte: Adaptado de AcePIC (2010), Cerne-Tec (2010), LabTools (2010) e Microgenios (2010).


       Todos os kits citados são confeccionados em uma única placa de circuito impresso, onde
possuem várias possibilidades de operação a serem trabalhadas com o microcontrolador. Porém,
essa abordagem de fabricação de kit, traz consigo desvantagens importantes quanto à prototipação
de projetos e, até mesmo, quanto a sua utilização didática.


1.2 PROBLEMATIZAÇÃO

1.2.1 Formulação do problema
       Do ponto de vista de projeto, o prejuízo encontra-se na reutilização. Um kit que possui os
recursos necessários para uma prototipação, com exceção da abordagem do microcontrolador, não
serve para o projeto. Um determinado kit de desenvolvimento, construído em uma única placa de
circuito impresso, estará limitado a um determinado fabricante. Assim, o desenvolvedor necessitará
de artifícios técnicos para resolver esta questão, ou até mesmo comprar outro kit voltado ao uso do
microcontrolador do fabricante desejado.

       Esse problema também é verdade quando o microcontrolador é compatível, mas não
apresenta um determinado recurso considerado fundamental para o desenvolvedor. Nesse caso, os


                                                  2
fabricantes dos kits procuram amenizar este problema introduzindo um conector de expansão,
derivado das portas de entrada/saída do microcontrolador, no qual pode-se conectar uma outra placa
com a funcionalidade desejada.

       Para ambas as situações possíveis de se encontrar em um determinado projeto, torna-se
evidente o aumento no custo de desenvolvimento.

       Do ponto de vista didático, o valor agregado em kits “super completos”, com recursos que o
estudante desconhece ou não utilizará, torna o investimento inicial muito elevado para o aluno. Isso
pode acarretar em uma desmotivação na compra desse material didático e, até mesmo, na matéria
lecionada. Assim, geralmente, o único kit no qual o estudante pode testar suas aplicações na prática
é o do próprio laboratório. Nesses moldes, a disciplina tem de ser conduzida de tal forma que vários
alunos tenham que dividir tempos de utilização do kit, dificultando o estudante a realizar uma
determinada tarefa prática, acarretando em um possível mau aproveitamento de horas/aula prática
da disciplina, por parte do estudante.


1.2.2 Solução proposta
       Para suprir as carências apresentadas em relação aos kits de desenvolvimento tradicionais,
este trabalho propôs como solução construir um kit de desenvolvimento modular, a qual foi baseada
em microcontrolador PIC. Com isso, busca-se oferecer um produto educacional de forma a facilitar
o acesso por parte dos interessados, possibilitando a inclusão gradual de funcionalidades ao kit.
Além disso, flexibilizar a reutilização de recursos de entrada e saída de dados, para prototipação de
sistemas embarcados, respeitando a conectividade entre os módulos.

       O trabalho busca aplicar uma das principais metodologias de programação utilizada em
construção de software, a qual consiste em dividir um determinado problema em partes menores
para que facilite sua resolução. Em relação à esta abordagem, Boratti (2004, p. 95) cita que,

                        Em determinadas situações, a solução de problemas passa pela solução de problemas
                        menores (subproblemas) os quais não se constituem em novos métodos. Nesses casos,
                        pode-se fazer com que a implementação do método seja dividida em módulos, onde cada
                        módulo resolverá um subproblema.

       Esse conceito de software foi aplicado à solução proposta no desenvolvimento do hardware,
de modo que suas funcionalidades estejam em placas para serem combinadas e/ou utilizadas
separadamente. Um kit construído desta forma possibilita montar projetos de pequeno, médio e
grande porte, diferenciados apenas pelo número de módulos utilizados.


                                                    3
Foram considerados módulos periféricos, os módulos construídos para atuarem
passivamente em um sistema embarcado, ou seja, eles receberão ação direta do usuário e/ou do
microcontrolador. Por sua vez, o módulo contendo o microcontrolador foi considerado módulo
principal. Em uma solução semelhante, Melo e Zapelini (2003, p. 8) utilizaram em um de seus
módulos principais o microcontrolador AT89S8252 (Atmel), onde concluíram em seu artigo que,

                        Ao permitir uma ampla variedade de experimentos didáticos, em diferentes níveis de
                        complexidade, e a construção rápida de protótipos, o equipamento proposto neste artigo
                        demonstra-se uma importante ferramenta de apoio ao processo ensino/aprendizagem em
                        cursos de Engenharia, Técnicos ou de Tecnologia.

       Com a solução proposta, esse trabalho pretende atingir resultados semelhantes aos de Melo e
Zapelini, porém o microcontrolador que foi aplicado ao módulo principal foi o PIC, da Microchip.
Diferente do 8051 (Intel) e o AVR (Atmel), o PIC não é abordado nas disciplinas do curso,
tornando a realização do trabalho uma oportunidade de aprendizado desse que é um dos
microcontroladores mais populares do mercado. Além disso, possui ampla documentação,
ferramentas de desenvolvimento disponíveis, abrangência de aplicações que podem ser
desenvolvidas.


1.3 JUSTIFICATIVA
       A execução deste projeto também se justifica em nível de Trabalho de Conclusão de Curso
(TCC) para o Curso de Engenharia da Computação, uma vez que trata do desenvolvimento de um
sistema embarcado que faz uso de várias tecnologias, conceitos e teorias relevantes à essa área,
como: (i) construção de protótipo físico com componentes eletrônicos; (ii) programação em
linguagem C para microcontroladores PIC; (iii) construção de sistemas embarcados com diferentes
periféricos; e (iv) elaboração e simulação de circuitos eletrônicos em software.


1.3.1 Importância
       Esse projeto de TCC não busca substituir os kits de desenvolvimentos comerciais, mas
desenvolver uma solução que possibilite montar um kit de acordo com as necessidades do
projetista, podendo ser, possivelmente, de custo mais acessível para alunos, professores e/ou
interessados que desejam utilizar kits de forma particular, em seus projetos.

       Não fazem parte do escopo deste trabalho o projeto da fonte de alimentação, no qual foi
utilizada uma fonte criada em outros projetos, e a implementação de roteiros e/ou tutoriais de
experiências com o kit, apenas os programas que validem a funcionalidade dos módulos.


                                                     4
Limitações podem ocorrer na implementação do módulo principal do kit, tornando-o restrito
a utilização do microcontrolador escolhido para o projeto. Porém, como mencionado anteriormente,
o projetista pode criar seu modulo principal específico apenas respeitando a conectividade com os
outros módulos do kit.


1.4 OBJETIVOS

1.4.1 Objetivo Geral
       O objetivo geral deste trabalho é construir um kit modular de desenvolvimento baseado no
microcontrolador PIC de 8 bits para utilização em experimentos diversos relacionados à área de
sistemas embarcados, em cursos de nível técnico, tecnólogo e engenharia.


1.4.2 Objetivos Específicos
       Os objetivos específicos deste trabalho são:

          Definir os módulos periféricos que compõem o kit;

          Escolher a forma de conexão entre os módulos do kit;

          Desenvolver os módulos do kit;

          Validar a funcionalidade dos módulos do kit; e

          Documentar o trabalho.


1.5 METODOLOGIA
       Foram considerados cinco etapas a fim de executar este trabalho, sendo elas: estudo, projeto,
desenvolvimento, validação e documentação. As etapas de estudo e de projeto foram efetuadas no
TCC (Trabalho de Conclusão de Curso) I, enquanto que as etapas de desenvolvimento, validação e
documentação foram efetuadas no TCC II.

       Na etapa de estudo, foi realizado um levantamento bibliográfico com o objetivo de
identificar referências que permitam fundamentar os conceitos necessários ao desenvolvimento
deste trabalho. Este levantamento bibliográfico foi baseado em livros e artigos. As referências
foram obtidas através de compras realizadas pela internet em sites de livrarias e editoras, por
locação nas bibliotecas da UNIVALI e da UFSC (Universidade Federal de Santa Catarina) e em



                                                 5
publicações disponibilizadas na internet em sites de fabricantes de microcontroladores e de revistas
eletrônicas.

       Na etapa de projeto foi realizado um levantamento dos módulos que foram implementados
no trabalho, além do tipo de conexão utilizado entre eles. No levantamento dos módulos, foram
analisados quais os componentes principais que seriam utilizados em cada módulo. No
levantamento do tipo de conexão entre os módulos, foram analisados os requisitos de conexão de
cada módulo periférico com o módulo principal, a fim de determinar um tipo de conexão padrão
entre os módulos. A análise foi baseada na revisão bibliográfica realizada na etapa de estudo.

       Na etapa de desenvolvimento foram implementados os módulos do kit em duas plataformas
distintas, plataforma virtual e física. Na implementação virtual, os circuitos necessários para
funcionamento virtual dos módulos foram desenvolvidos no software de simulação de circuitos
eletrônicos Proteus, abstraindo alguns componentes discretos no sistema, utilizando em seu lugar
componentes completos adequados para a aplicação pertencente a sua biblioteca. Na implementação
física, foram adicionados ao circuito dos módulos os componentes discretos abstraídos na
implementação virtual, onde foram montados os esquemas e o layout das placas de circuito
impresso de cada protótipo dos módulos no software de confecção de PCI (Placa de Circuito
Impresso) Eagle.

       Na etapa de validação foram desenvolvidos alguns experimentos em linguagem C no
compilador MikroC PRO for PIC, para que fossem compilados e gravados no microcontrolador PIC
a fim de testar os circuitos desenvolvidos. Foram utilizados os mesmos softwares para validação
tanto dos circuitos virtuais quanto dos circuitos físicos, tendo como objetivo o mesmo
comportamento do sistema em ambas as plataforma.

       A etapa de documentação foi realizada ao longo de todo trabalho, procurando-se registrar a
execução das etapas descritas anteriormente para elaboração do produto proposto neste TCC. As
informações levantadas para a fundamentação teórica estão registradas no Capítulo 2, enquanto que
as informações relativas ao desenvolvimento do projeto estão no Capítulo 3.




                                                  6
1.6 ESTRUTURA DO TRABALHO
       Este documento está estruturado em quatro capítulos. O Capítulo 1, Introdução, apresentou
uma visão geral do trabalho. No Capítulo 2, Fundamentação Teórica, é apresentada uma revisão
bibliográfica sobre: Microcontroladores, os microcontroladores de 8 bits fabricados pela Microchip
Technology, assim como uma análise a respeito da compatibilidade entre os eles. Nesse capítulo,
também é feita uma descrição dos recursos do microcontrolador PIC18F4520, do Barramento I2C
(Inter-Intergrated Circuit) e dos Componentes periféricos, relevantes para o trabalho. O Capítulo 3
apresenta o desenvolvimento dos módulos que foram desenvolvidos, incluindo o a metodologia
usada para a elaboração da visão geral projeto, seus requisitos e a arquitetura de hardware utilizada
para o kit modular de desenvolvimento. O capítulo também discute os tipos de implementações dos
módulos e como eles foram desenvolvidos e validados. Concluindo, no Capítulo 4, são apresentadas
as conclusões, onde são avaliadas as metodologias empregadas, as dificuldades enfrentadas e os
resultados obtidos para alcançar as metas estipuladas no escopo deste trabalho.




                                                 7
2 FUNDAMENTAÇÃO TEÓRICA

       Neste capitulo é apresentada uma introdução aos microcontroladores e exemplo de
fabricantes, à empresa Microchip Technology e sua classificação sobre seus microcontroladores
fabricados, aos recursos do microcontrolador PIC18F4520 considerados relevantes no trabalho, ao
barramento I2C e aos periféricos selecionados para o kit.


2.1 MICROCONTROLADORES
       Um microcontrolador (MCU) é um componente que possui microprocessador, memória e
periféricos no mesmo encapsulamento (ZANCO, 2007).

       Os microcontroladores são chips que podem ser programados para realizarem tarefas
específicas. Os MCUs reagem às entradas de dados, de acordo com o programa gravado em
memória, gerando uma saída correspondente. Na Figura 1, estão representadas algumas unidades de
hardware presentes no microcontrolador, dispensando a utilização de outros componentes em um
circuito, tornando-o um elemento poderoso no controle de processos lógicos utilizados em muitos
equipamentos de uso diário como calculadoras, celulares, eletrodomésticos, brinquedos, etc.




Figura 1. Microcontrolador
Fonte: Verle (2008).
A estrutura interna do microcontrolador pode variar de acordo com o modelo adotado pelo
fabricante. Grande parte dos microcontroladores apresentam uma arquitetura tradicional do tipo
von-Newmann, existindo apenas um barramento interno por onde passam as instruções e os dados,
enquanto que outros utilizam a arquitetura Harvard, composto por dois barramentos internos, sendo
um de dados e outro de instruções (SOUZA, 2008).

       A Figura 2.a representa a arquitetura von-Newmann com apenas um barramento tanto para
dados (contido na memória de dados) quanto para instruções (contido na memória de programa). Já
na Figura 2.b o acesso à memória de dados e memória de programa são realizados por barramentos
separados fisicamente. Nos microcontroladores de 8 bits, os dados são armazenados na memória em
tamanhos de 1 byte (8 bits), dessa forma, na arquitetura von-Newmann, o barramento de dados e
instrução são normalmente de 8 bits (de acordo com o tamanho do dado armazenado na memória de
dados), enquanto que na arquitetura Harvard as instruções podem ser armazenadas em tamanhos
maiores, de 12, 14 e 16 bits, sendo acessadas pelo barramento de instruções de forma independente.




                                  -------------------------
                       (a) ---------------------------------------------------------- (b)
Figura 2. Arquitetura do microcontrolador: (a) von-Newmann; (b) Harvard
Fonte: Verle (2008).


       Os microcontroladores de arquitetura Harvard utilizam tecnologia RISC (Reduced
Instruction Set Computer – Computador com Conjunto de Instruções Reduzido). Eles possuem
poucas instruções básicas, executadas tipicamente em apenas um ciclo de clock. Já os MCU de
arquitetura von-Newmann, tipicamente utilizam tecnologia CISC (Complex Instruction Set
Computer – Computador com Conjunto de Instruções Complexas) que usa uma grande quantidade
de instruções para operar (BRAGA, 2010).




                                                       9
2.1.1 Exemplo de fabricantes de microcontroladores de 8 bits
         A seguir, serão apresentados alguns fabricantes de microcontroladores de 8 bits entre muitos
existentes no mercado. Dentre as informações citadas de cada fabricante selecionado, recebem
destaque a arquitetura e algumas características adotadas para a linha de microcontroladores de 8
bits produzidas pelas mesmas.


National Semiconductor

         A National Semiconductor fabrica os microcontroladores COP8 (8-bit Control-Oriented
Processor). Esses MCUs possuem uma arquitetura do tipo Harvard modificada, onde apesar da
memória de dados e a memória de programa ter seus barramentos separados, essa arquitetura
permite a transferência de dados da memória de programa para a memória de dados. O COP8
apresenta um número de instruções superior que os RISC puros, onde quase todas (77%) tem 1 byte
de tamanho, no entanto, contém também instruções multiprogramas (realizam mais de uma tarefa e
utilizam mais de um ciclo de clock), comum em arquiteturas CISC. O COP8 da família S possue até
5 portas de 8 bits de propósito geral para entrada e saída e memória ROM (Read Only Memory) que
pode chegar até a 32 kbytes encapsulado em pastilhas de 28, 40 e 44 pinos. Ele também conta com
periféricos internos como USART (Universal Synchronous Asynchronous Receiver Transmitter),
um par de comparadores analógicos e até 3 timers de 16 bits (NATIONAL SEMICONDUCTOR,
2001).


Freescale Semiconductor

         A Freescale, cuja matriz fica em Austin, Texas – EUA (Estados Unidos da América),
autodenominada líder mundial na indústria de processadores integrados, foca tecnologias para
clientes dos setores automotivo, de produtos de consumo e de comunicações. Ela apresenta uma
ampla variedade de microcontroladores de 8 bits para as famílias HCS08, HC08, HC05 e HC11. A
arquitetura utilizada nos microcontroladores da Freescale é do tipo von-Newmann, onde os MCUs
das famílias HC05 e HC11 chegam a conter 210 instruções. Quanto aos periféricos, a família
HCS08 conta com módulos de conversor A/D (Analógico/Digital), Timer/PWM (Pulse-Width
Modulation), comunicação serial, além de memória de programa com capacidade de 4 kbytes à 60
kbytes e memória de dados entre 128 bytes à 4 kbytes e pode operar em frequência máxima de 40
MHz (FREESCALE SEMICONDUCTOR, 2007).




                                                  10
Por ser fabricante do microcontrolador escolhido para realização do trabalho, a Microchip
Technology recebe uma atenção diferenciada. A empresa será abordada a seguir, separadamente das
que foram citadas até agora.


2.2 MICROCHIP TECHNOLOGY
       A Microchip Technology, fabricante dos microcontroladores PIC, é uma empresa norte
americana de semicondutores, com sede em Chandler - Arizona - EUA. Tendo como foco principal
a venda de dispositivos semicondutores, a empresa disponibiliza, para os desenvolvedores,
softwares, documentação e bibliotecas gratuitamente, através do seu site.

       Em 1990, a Microchip iniciou seus negócios no Brasil, em parceria com a Artimar
(representante e distribuidora de várias empresas americanas no setor de eletrônica). Hoje muitas
empresas divulgam e comercializam os produtos fabricados pela Microchip, porém a Artimar
mantém-se como sua representante exclusiva no país (SOUZA, 2008).


2.2.1 Famílias e grupos de microcontroladores PIC de 8 bits
       As famílias de microcontroladores PIC de 8 bits, fabricados pela Microchip Technology,
utilizam arquitetura Harvard com tecnologia RISC, limitadas a 83 instruções de 16 bits para as de
maior performance. Os MCUs podem trabalhar com frequências de até 32MHz com oscilador
interno. Os PIC podem variar entre 6 pinos até 100 pinos contendo até 128 kbytes para memória de
programa e 4 kbytes para memória de dados. Pode-se encontrar PIC com controladores periféricos
para comunicação serial, PWM, conversor A/D e comparadores, além de outros especializados para
USB (Universal Serial Bus), LCD, CAN (Controller Area Network) e Ethernet (MICROCHIP
TECHNOLOGY, 2010).

       Os microcontroladores PIC são divididos em quatro grupos de performance, arranjados de
acordo com o tamanho da instrução armazenada em memória de programa e módulos internos de
hardware: Baseline (instruções de 12 bits), Mid-Range (instruções de 14 bits), Enhanced Mid-
Range (instruções de 14 bits, com módulos de hardware avançados) e PIC18 (instruções de 16 bits).
Na Figura 3, é apresentado um gráfico das famílias de microcontroladores PIC associados aos
agrupamentos por tamanho da palavra de instrução no qual eles pertencem.




                                                 11
Figura 3. Gráfico ilustrado da organização dos PICs em tamanho da palavra de instrução.
Fonte: Microchip Technology (2010).


       Tendo em vista um ambiente de desenvolvimento mais flexível, a Microchip oferece
características de migração entre os microcontroladores. Em geral, os MCUs de 8 bits são
classificados em famílias de compatibilidade de pinos e de codificação, de modo que um PIC com
um determinado número de pinos seja compatível a outro pertencente da mesma família. Desta
forma, a empresa oferece maior adaptabilidade em projetos para reagir às mudanças de requisito,
característica importante para sistemas embarcados (MICROCHIP TECHNOLOGY, 2010).

       Uma família de microcontroladores pode estar contida em diferentes grupos de performance.
Assim, um MCU utilizado em um determinado projeto pode ser substituído por outro mais
adequado, sem significativas mudanças no hardware e/ou software. No site do fabricante é
normalmente disponibilizado um documento de migração de um microcontrolador para outro
compatível com o mesmo, facilitando ainda mais a adaptação do código montado em um
determinado microcontrolador para um de outro grupo contendo o mesmo número de pinos. Na
Tabela 2, são apresentadas algumas características dos grupos dos PICs relacionando as famílias
pertencentes a cada um deles.




                                               12
Tabela 2. Características dos grupos de microcontroladores PIC
Palavra de
                      12 bits                         14 bits                        16 bits
instrução
Grupo                                                        Enhanced
                     Baseline         Mid-Range                                     PIC18
                                                             Mid-Range
Pinos                   6-40             8-64                   8-64                18-100
Interrupções      Não possui       Tratamento          Tratamento único de Tratamento múltiplo
                  tratamento de    único de            interrupção salvando de interrupção
                  interrupções     interrupção         contexto de hardware salvando contexto de
                                                                            hardware
Performance          5 MIPS*           5 MIPS*                8 MIPS*           Até 16 MIPS*
Nº de
                         33               35                    49                     83
Instruções
Memória de
                   Até 3K bytes     Até 14K bytes          Até 28K bytes         Até 128K bytes
Programa
Memória de
                   Até 134 bytes     Até 368 bytes        Até 1.5K bytes          Até 4K bytes
Dados
Pilha (Stack)          2 níveis         8 níveis              16 níveis              32 níveis
Módulos            Comparador     Além da             Além do Mid-Range:     Além do Enhanced
internos           8 bits A/D     Baseline:            Múltipla             Mid-Range:
                   Memória de      SPI (Serial         comunicação de        Multiplicação 8x8
                    dados            Peripheral          periféricos            em hardware
                   Oscilador        Interface)/I²C     Espaço de             CAN
                    interno         UART                programação linear    CTMU (Charge
                                    PWMs               PWMs com Time          Time Measurement
                                    LCD                 Base independentes     Unit)
                                    10 bits A/D                               USB
                                    Amplificador                              Ethernet
                                     Operacional                               12 bits A/D
Destaque          Menor custo      Ótimo custo         Custo efetivo com      Alta performance,
                  nos menores      benefício em        mais performance e     otimização em
                  modelos          performance         memória                programas em C,
                                                                              periféricos avançados
Total de
                         16               58                    29                    193
dispositivos
Famílias          PIC10, PIC12,                           PIC12F1XXX,
                                    PIC12, PIC16                                     PIC18
                     PIC16                                PIC16F1XXX
*MIPS: Milhões de Instruções Por Segundo
Fonte: Adaptado da Microchip Technology (2010).

       A seguir serão apresentados alguns exemplos de microcontroladores PIC de 8 bits
compatíveis pertencentes a grupos diferentes.




                                                 13
2.2.2 Exemplos de microcontroladores PIC de 8 bits
       Foram selecionados, neste estudo, quatro microcontroladores pertencentes a grupos
diferentes: três da família PIC16 e um da família PIC18. Eles estão disponíveis em
encapsulamentos de 18 pinos.


PIC16F54

       O PIC16F54 pertence ao grupo Baseline de microcontroladores PIC de 8 bits. Ele possui 33
instruções de 12 bits, 0.75 kbytes de memória de programa, 25 bytes de memória RAM (Random
Access Memory) e até 12 pinos de E/S (Entrada/Saída) digital. Quanto a periféricos, ele apresenta 1
temporizador de 8 bits. O MCU pode operar em 20 MHz de clock com velocidade de 5 MIPS
(MICROCHIP TECHNOLOGY, 2007). A Figura 4 apresenta o diagrama de pinos do PIC16F54.




Figura 4. Diagrama simplificado dos pinos do PIC16F54.
Fonte: Microchip Technology (2007).



PIC16F628A

       O PIC16F628A pertence ao grupo Mid-Range de microcontroladores PIC de 8 bits. Ele
possui 35 instruções de 14 bits, 3.5 kbytes de memória de programa, 224 bytes de memória RAM e
até 16 pinos de E/S digital. Quanto a periféricos, ele apresenta 2 temporizador de 8 bits, 1
temporizador de 16 bits, memória EEPROM (Electrically-Erasable Programmable Read-Only
Memory) de 128 bytes, comparador, CCP (Capture/Compare/PWM) e USART. O MCU pode
operar em 20 MHz de clock com velocidade de 5 MIPS (MICROCHIP TECHNOLOGY, 2009). A
Figura 5 apresenta o diagrama de pinos do PIC16F628A.




                                                14
Figura 5. Diagrama simplificado dos pinos do PIC16F628A.
Fonte: Microchip Technology (2009).



PIC16F1826

       O PIC16F1826 pertence ao grupo Enhanced Mid-Range de microcontroladores PIC de 8
bits. Ele possui 49 instruções de 14 bits, 3.5 kbytes de memória de programa, 256 bytes de memória
RAM e até 16 pinos de E/S digital. Quanto a periféricos, ele apresenta 2 temporizador de 8 bits, 1
temporizador de 16 bits, memória EEPROM de 256 bytes, comparador, ECCP (Enhanced
Capture/Compare/PWM), USART, MSSP (Master Synchronous Serial Port), conversor A/D. O
MCU pode operar em 32 MHz de clock com velocidade de 8 MIPS (MICROCHIP
TECHNOLOGY, 2010). A Figura 6 apresenta o diagrama de pinos do PIC16F1826.




Figura 6. Diagrama simplificado dos pinos do PIC16F1826.
Fonte: Adaptado de Microchip Technology (2010).




                                               15
PIC18F1320

       O PIC18F1320 pertence ao grupo e família PIC18 de microcontroladores PIC de 8 bits. Ele
possui 77 instruções de 16 bits, 8 kbytes de memória de programa, 256 bytes de memória RAM e
até 16 pinos de E/S digital. Quanto a periféricos, ele apresenta 1 temporizador de 8 bits, 3
temporizador de 16 bits, memória EEPROM de 256 bytes, ECCP, USART e conversor A/D. O
MCU pode operar em 40 MHz de clock com velocidade de 10 MIPS e pode realizar multiplicação
de 8 bits por 8 bits em hardware (MICROCHIP TECHNOLOGY, 2007). A Figura 7 apresenta o
diagrama de pinos do PIC18F1320.




Figura 7. Diagrama simplificado dos pinos do PIC18F1320.
Fonte: Microchip Technology (2007).


       Abstraindo as funções dos pinos que não são comuns para todos, na Tabela 3 é apresentado
o número da ordem do pino (primeira coluna), a descrição da função do pino compatível entre os
microcontroladores citados (segunda coluna), o nome da função do pino compatível entre os
microcontroladores para a família PIC16 (terceira coluna) e o nome da função do pino compatível
entre os microcontroladores para a família PIC18 (quarta coluna). A descrição completa dos pinos
pode ser encontrada no data sheet individual do microcontrolador disponibilizado no site do
fabricante.




                                              16
Tabela 3. Descrição das funcionalidades dos pinos compatíveis entre os microcontroladores PIC
exemplificados
                                                      Nome da função          Nome da função
Pino        Descrição da função compatível
                                                     para família PIC16      para família PIC18
  1    E/S digital                                          RA2                     RA0
  2    E/S digital                                          RA3                     RA1
  3    Entrada de clock do temporizador 0                  T0CKI                   T0CKI
       Entrada do sinal de reset                            MCLR                   MCLR
  4
       Entrada de tensão para modo programação               VPP                    VPP
  5    Aterramento do chip                                   VSS                    VSS
  6    E/S digital                                          RB0                     RA2
  7    E/S digital                                          RB1                     RA3
  8    E/S digital                                          RB2                     RB0
  9    E/S digital                                          RB3                     RB1
 10    E/S digital                                          RB4                     RB4
 11    E/S digital                                          RB5                     RB5
       E/S digital                                          RB6                     RB6
 12
       Entrada do clock de programação ICSPTM            ICSPCLK*                   PGC
       E/S digital                                          RB7                     RB6
 13
       Entrada do dados de programação ICSPTM            ICSPDAT*                   PGD
 14    Alimentação do chip                                   VDD                    VDD
 15    Saída para oscilador externo                   OSC2/CLKOUT               OSC2/CLKO
 16    Entrada para oscilador externo                  OSC1/CLKIN               OSC1/CLKI
 17    E/S digital                                          RA0                     RB2
 18    E/S digital                                          RA1                     RB3
Fonte: Adaptado de Microchip Technology (2007), Microchip Technology (2009), Microchip
Technology (2010) e Microchip Technology (2007).


Compatibilidade entre PICs

       Observa-se que os microcontroladores PIC, com o mesmo número de pinos, pertencentes a
mesma família, são fortemente compatíveis. Um MCU compatível com outro familiar, porém de um
grupo mais avançado, mantém a funcionalidade primária do pino associando novas funcionalidades
relativas ao grupo de evolução. No caso do microcontrolador da família PIC18 e os da família
PIC16, em alguns casos, eles são fracamente compatíveis, onde o hardware pode ser mantido, mas a
codificação da arquitetura é alterada. Se levado em consideração esses aspectos, pode-se realizar a
troca de um microcontrolador em um projeto por outro mais adequado sem grandes mudanças no
hardware de um sistema computacional qualquer.

       Em geral, a compatibilidade dos pinos entre os microcontrolador PIC é identificada nos
pinos de E/S digital, alimentação e aterramento do chip, além dos pinos para as funções de reset,



                                                17
oscilador externo e as relacionadas à gravação do microcontrolador. Por conter essa característica, o
PIC tornou-se a escolha de microcontrolador para o trabalho proposto.

       Com exceção do PIC16F54, os microcontroladores citados podem ser encontrados em
encapsulamentos de 18, 20 e 28 pinos. A diferença básica entre os encapsulamentos de 18 e o de 20
pinos, está na presença de mais um pino para aterramento e mais um pino para alimentação do chip.
A diferença entre os encapsulamentos de 20 e 28 pinos, está na presença de pinos que não exercem
conexão chamados de NC (No Connect). Esses diferentes encapsulamentos possíveis para os
microcontroladores citados serão abordados a seguir.


2.2.3 Encapsulamento
       Dentre os tipos de encapsulamentos disponibilizados pela Microchip, são brevemente
apresentados os tipos QFN (Quad Flat, No Lead Package), SOIC (Small Outline Plastic Packages),
SSOP (Shrink Small Outline Packages) e PDIP (Plastic Dual In-Line Packages). Esses são os tipos
de encapsulamento mais comuns entre os microcontroladores PIC de 8 bits.


QFN

       O encapsulamento QFN pode ser encontrado em circuitos integrados com 16, 20, 24, 28, 40,
44, e 64 pinos. Possui um formato quadrangular com tamanho de largura e altura que podem variar
de 3mm até 9mm com a espessura mantendo-se em 0.9mm. Os pinos são situados na parte inferior
do chip, com largura entre 0.20mm e 0.38mm, altura entre 0.35mm e 0.55mm e espessura constante
em 0.20mm para tamanhos normais dos contatos (MICROCHIP TECHNOLOGY, 2010). Na Figura
8, pode-se visualizar um chip em encapsulamento QFN.




Figura 8. Vista em perspectiva do encapsulamento QFN em um chip com 28 pinos.
Fonte: Digi-Key (2010).




                                                 18
SOIC

       Os circuitos integrados em encapsulamentos SOIC podem ser encontrados com 8, 14, 16,
18, 20, 24 e 28 pinos. Com formato retangular, a largura do chip pode variar de 4.90mm até
17.90mm, sendo encontrado tanto com altura de 3.90mm e espessura 1.25mm, quanto com 7.50mm
de largura e 2.05mm de espessura. Os pinos são situados nas laterais do chip, sendo eles levemente
curvados para soldagem na superfície da placa. Para todos os tamanhos dos chips, a largura, altura e
espessura dos pinos têm tamanho mínimo de 0.31mm, 1.04mm e 0.17mm, respectivamente, e
máximo de 0.51mm, 1.40mm e 0.25mm, respectivamente. As dimensões do chip variam de acordo
com o número de pinos do circuito integrado (MICROCHIP TECHNOLOGY, 2010). Na Figura 9,
pode-se visualizar um chip em encapsulamento SOIC.




Figura 9. Vista em perspectiva do encapsulamento SOIC em um chip com 28 pinos.
Fonte: Digi-Key (2010).



SSOP

       O encapsulamento SSOP está disponível em 20, 24 e 28 pinos. A estrutura do chip é
semelhante ao encapsulamento SOIC, porém o chip mantém a altura entre 5.00mm e 5.60mm e a
espessura entre 1.65mm e 1.85mm independente da quantidade dos pinos. A variação de pinos
altera apenas a largura, variando entre 6.90mm, tamanho mínimo para 20 pinos, até 10.50mm,
tamanho máximo para 28 pinos. Quanto aos pinos, a largura permanece entre 0.22mm e 0.38mm, a
altura é fixa em 1.25mm e a espessura fica em torno de 0.09mm e 0.25mm também independente da
quantidade no encapsulamento (MICROCHIP TECHNOLOGY, 2010). Na Figura 10, encontra-se
um chip em encapsulamento SSOP.




                                                19
Figura 10. Vista em perspectiva do encapsulamento SSOP em um chip com 28 pinos.
Fonte: Digi-Key (2010).



PDIP

       O encapsulamento PDIP é comumente observado em circuitos integrados utilizados para
prototipação devido à facilidade de utilização em protótipos montados em placas protoboard.
Assim como os encapsulamentos SOIC e SSOP, também possui uma estrutura retangular, porém os
pinos são retilíneos e rígidos semelhantes a um “prego achatado”, tendo em vista o encaixe do chip
em superfícies perfuradas. Na Figura 11, pode-se observar um circuito integrado em
encapsulamento PDIP.




Figura 11. Vista em perspectiva do encapsulamento PDIP em um chip com 28 pinos.
Fonte: Digi-Key (2010).


       São encontrados microcontroladores com 8, 14, 16, 18, 20, 24, 28, 40 e 64 pinos neste
encapsulamento. Independente do número de pinos, a haste perfurante dos pinos varia entre
0.34mm e 0.56mm de largura, 2.54mm e 5.8mm de altura e 0.20mm e 0.38mm de espessura,
excluindo a “cabeça” do pino. A distância de uma haste do pino à outra é de 2.54mm. O corpo do



                                               20
chip pode variar bastante na largura com o aumento do número de pinos, permanecendo entre
8.84mm (tamanho mínimo para 8 pinos) e 57.91mm (tamanho máximo para 64 pinos), na altura
varia em 6.10mm (tamanho mínimo até 20 pinos) e 17.53mm (tamanho máximo em 64 pinos) e na
espessura mantém-se entre 2.92mm e 4.95mm (MICROCHIP TECHNOLOGY, 2010). Na Figura
12, observam-se as dimensões 37.40mm, para largura, e 13.53mm, para altura, de um chip de
encapsulamento PDIP. A Figura 13 apresenta as dimensões 0.46mm, para largura, e 3.30mm, para
altura, da haste perfurante do pino e as medidas das espessuras do corpo, com 3.30mm, e do pino,
com 0.25mm, do circuito integrado.




Figura 12. Vista superior do encapsulamento PDIP em um chip com 28 pinos.
Fonte: Adaptado da Microchip Technology (2010).




                    (a)                                                (b)
Figura 13. (a) Vista lateral e (b) vista frontal do encapsulamento PDIP em um chip com 28 pinos.
Fonte: Adaptado da Microchip Technology (2010).


       Tendo em vista a utilização em laboratório do produto gerado deste trabalho, procurou-se
selecionar um microcontrolador pertencente ao grupo de maior performance dos microcontroladores
PIC de 8 bits. Além disso, o MCU da família PIC18 deve ser de manuseio simplificado,
possibilitando a troca de microcontrolador em um soquete correspondente ao seu encapsulamento.
Com essas premissas, o microcontrolador escolhido foi o PIC18F4520 em encapsulamento PDIP.
Alguns de seus recursos serão apresentados na seção seguinte.



                                                21
2.3 MICROCONTROLADOR PIC18F4520
       O PIC18F4520 pertence ao grupo e família de microcontroladores de 8 bits PIC18, de maior
performance entre as famílias de 8 bits da Microchip. Ele possui um conjunto de 83 instruções
RISC de 16 bits. A seguir, o microcontrolador é apresentado de forma mais detalhada, inicialmente,
com as características da estrutura externa e interna do MCU em encapsulamento PDIP e após, são
apresentados seus recursos básicos e avançados considerados relevantes ao trabalho.


2.3.1 Estrutura externa
       O microcontrolador PIC18F4520 em encapsulamento PDIP de 40 pinos é ilustrado na
Figura 14. Com exceção dos pinos dedicados a alimentação e aterramento do microcontrolador, são
atribuídas mais de uma função para os pinos do PIC18F4520 conforme apresentada na Tabela 22
contido no Anexo I (MICROCHIP TECHNOLOGY, 2008).




              ---
Figura 14. Diagrama dos pinos do PIC18F4520 em encapsulamento PDIP de 40 pinos.
Fonte: Adaptado de Microchip Technology (2008).



2.3.2 Estrutura interna
       Internamente, o PIC18F4520 assume a arquitetura Harvard, com a unidade central de
processamento (CPU – Central Processing Unit) acessando a memória de programa e memória de
dados em barramentos distintos. Acompanhando o barramento de dados, estão os conjuntos de




                                                22
portas A, B, C, D e E de comunicação digital externa, a memória de dados EEPROM, entre outros
elementos do MCU. Na Figura 15 é apresentada a estrutura interna do microcontrolador.




Figura 15. Estrutura interna do microcontrolador PIC18F4520.
Fonte: Adaptado de Microchip Technology (2008).



                                              23
2.3.3 Recursos de hardware
       Entre os recursos básicos do MCU, estão os módulos presentes em alguns PIC do grupo de
menor performance: oscilador, watchdog timer, reset, memória de dados, memória de programa,
conjunto de instruções e portas de E/S. Eles são os elementos principais para o funcionamento do
microcontrolador e serão abordados de forma simplificada nos itens seguintes.


Oscilador

       O clock é quem dá o ritmo de operação do microcontrolador. Um oscilador determina a
velocidade com que o clock do microcontrolador opera (BRAGA, 2010). Quanto maior a frequência
de oscilação, maior será o número de instruções executada em um determinado período. Não existe
uma fórmula para a escolha do oscilador ideal para o projeto, porém a escolha do tipo deve atender
primeiramente ao requisito de eficácia (funcionar corretamente conforme a especificação inicial) e,
em segundo, o requisito de custo (ZANCO, 2007).

       O PIC18F4520 possui um módulo oscilador interno, que está calibrado para operar em 8
MHz, porém, com um circuito oscilador externo, a frequência de oscilação pode chegar á 40 MHz
com utilização de cristais osciladores. Nessa caso, existe o viés da utilização exclusiva das portas de
entrada e saída (RA6 e RA7) para conexão do oscilador (MICROCHIP TECHNOLOGY, 2008). A
Figura 16 apresenta dois circuitos osciladores externos, um formado por circuito RC (Resistor
Capacitor) e outro formado por um cristal oscilador ou ressonador, ligado ao microcontrolador. Os
valores para os capacitores são sugeridos pela Microchip no data sheet do componente.




                       (a)                                                  (b)
Figura 16. Oscilador externo por (a) circuito RC, (b) cristal/ressonador.
Fonte: Adaptado de Microchip Technology (2008).




                                                  24
A frequência gerada pelo oscilador, dá origem ao ciclo de máquina do microcontrolador.
Nos microcontroladores PIC, esse ciclo é equivalente a um quarto da frequência de operação
(ZANCO, 2007). Souza (2008, p. 24) acrescenta que a divisão do ciclo de máquina forma quatro
fases (Q1, Q2, Q3 e Q4),

                       O program counter é incrementado automaticamente na fase Q1 do ciclo de máquina e a
                       instrução seguinte é buscada da memória de programa e armazenada no registrador de
                       instruções no ciclo Q4. Ela é decodificada e executada no próximo ciclo, no intervalo de Q1
                       até Q4. Essa característica de buscar a informação num ciclo de máquina e executá-la no
                       próximo é conhecida como PIPELINE.

       O pipeline torna o sistema muito mais rápido, permitindo que quase todas as instruções
sejam executadas em apenas um ciclo de máquina. A exceção fica por conta das instruções de
“salto” no registrador PC (program counter) que contém o endereço da próxima instrução a ser
buscada. A arquitetura Harvard dos PIC permite que esse recurso seja implementado facilmente,
devido à separação dos barramentos de instrução e de dados (ZANCO, 2007).


Watchdog Timer (WDT)

       O WDT consiste em com contador de 16 bits que possui um oscilador próprio, independente
do oscilador principal, utilizado para monitorar a execução do software gravado no
microcontrolador, sendo inacessível ao programador tanto para escrita, quanto para leitura. Quando
o contador incrementa o valor máximo armazenado no registrador WDT (0xFF), retornando ao
valor mínimo (0x00), o MCU é imediatamente reinicializado, caso esteja operando em condições
normais, ou acordado, caso esteja em modo de espera ativado pela instrução SLEEP. Essa condição
é identificada como estouro do watchdog (SOUZA, 2008).

       Zanco (2007, p. 112) afirma que “a principal função do WDT é proteger o sistema contra
possíveis travamentos, fazendo com que o sistema resete e volte a funcionar”. Normalmente, o
PIC18F4520 mantém o período de 4ms por incremento no contador WDT levando 1.02s para
estourar, porém, com postscale (escala de estouro por voltas realizada pelo contador) de 1 para 128,
pode chegar à 2.18 minutos. A única forma de evitar o estouro do watchdog é através das instruções
CLRWDT (Clear Watchdog Timer), no qual o registrador WDT é zerado, evitando que ele estoure
(MICROCHIP TECHNOLOGY, 2008).




                                                     25
Reset

        O reset é o mecanismo de inicializar ou reinicializar o funcionamento do microcontrolador.
Quando o reset é acionado, o MCU volta a executar as instruções a partir do endereço 0x00. Esse
desvio pode ocorrer em algumas situações durante a operação normal, tais como: quando o chip é
ligado (POR – Power-on Reset), quando há uma queda na tensão de alimentação do chip (BOR –
Bourn-out Reset), quando acionado o sinal de reset externo (o pino MCLR atinge o nível baixo de
tensão), quando o software força um desvio para o endereço 0x00 (pode ser realizado pela instrução
GOTO) e quando ocorre um estouro do watchdog timer (ZANCO, 2007).

        O PIC18F4520 possui um módulo dedicado para essa funcionalidade, porém ela pode ser
implementada em um circuito externo acoplado ao pino MCLR, desabilitando esse recurso. Desta
forma, o pino pode ser usado para entrada e saída de dados digital (RE3). O POR mais básico pode
ser implementado ligando o pino MCLR, quando habilitado, diretamente na alimentação do chip
(SOUZA, 2008). Na Figura 17, são ilustrados dois circuitos externos, POR e BOR, associados ao
pino MCRL do microcontrolador.




                         (a)                                                (b)
Figura 17. Circuito de reset externo (a) POR e (b) BOR.
Fonte: Adaptado de Souza (2008) e Zanco (2007).



Memória de dados

        O grupo PIC18 possui dois tipos de memória de dados, ambas capazes de armazenar um
dado de 8 bits: a memória de dados RAM, volátil (mantem os dados armazenados somente
enquanto estiver energizado), e a memória de dados EEPROM, não-volátil (mantém os dados



                                                26
mesmo depois do chip desligado). É na RAM que são armazenadas as variáveis e registradores de
finalidades especiais (SFR – Special Function Registers) utilizados no programa. Por outro lado, a
EEPROM é utilizada para armazenar dados ou configurações que precisam ser mantidos e/ou
recuperados após um desligamento do microcontrolador (SOUZA, 2008).

       O PIC18F4520 possui uma memória RAM de 4096 bytes (apenas 1536 bytes são usados),
divididos em 16 bancos de 256 bytes, endereçáveis por 12 bits, sendo que os 4 bits mais
significativos identificam o banco que será acessado (BSR – Bank Select Register), enquanto que os
8 bits menos significativos identificam o endereço de memória do banco que será acessado
(MICROCHIP TECHNOLOGY, 2008). Na Figura 18, é apresentado o mapa da memória de dados
do PIC18F4520.




Figura 18. Mapa da memória de dados do PIC18F4520.
Fonte: Adaptado de Microchip Technology (2008).




                                               27
Deve-se evitar o acesso aos primeiros 128 bytes da memória RAM, pois são neles que estão
contidos os registradores de manipulação da Unidade Lógica Aritmética (ULA) e de configuração
do microcontrolador, por exemplo, o program counter. Os 128 bytes subsequentes do banco 0 e os
256 bytes dos bancos 1 ao 5, são os registradores de propósito geral (GPR – General Purpose
Register) usados para armazenamento de dados de operações do programa. Utiliza-se os 6 primeiros
bancos de memória RAM para calcular a capacidade total de armazenamento do PIC18F4520,
sendo 1536 bytes. Os bancos 6 ao 14 e os primeiros 128 bytes do banco 15 não foram
implementados; sempre que forem lidas essas memórias, será atribuído valor 0 (zero) ao retorno e a
escrita nas mesmas é ignorada. Nos últimos 128 bytes do banco 15 da memória RAM estão
contidos os SFR que e são usados pela CPU e módulos periféricos para controle de operações do
dispositivo (MICROCHIP TECHNOLOGY, 2008).

        A memória de dados EEPROM, além de ter menor velocidade de leitura/escrita do que a
memória RAM, necessita dos SFRs para operações de leitura e escrita: EEADR (EEPROM Address
Register), registrador que recebe o endereço da memória que será lida ou escrita; EEDATA
(EEPROM Data Register), registrador que recebe o dado que será lido ou escrito de um
determinado endereço; EECON1 (EEPROM Control Register), registrador de controle, dá início
aos ciclos de leitura e escrita; EECON2, registrador de controle que armazena, obrigatoriamente,
uma sequência de valores (0x55 e 0xAA) para dar início ao processo de gravação. (ZANCO, 2007).
É possível armazenar até 256 bytes na memória EEPROM interna do PIC18F4520.

        Para ler um dado de determinado endereço da EEPROM, deve-se escrever o endereço no
registrador EEADR (entre 0x00 e 0xFF), limpar o bit EEPGD (Flash Program or Data EEPROM
Memory Select bit) do registrador EECON1 (bit 7), limpar o bit CFGS (Flash Program/Data
EEPROM or Configuration Select bit) do registrador EECON1 (bit 6) e habilitar o bit RD (Read
Control bit) do registrador EECON1 (bit 0) (MICROCHIP TECHNOLOGY, 2008). Na Figura 19,
é apresentado um exemplo de leitura de um dado da EEPROM.

MOVLW     0x33              ;   registrador W recebe valor 0x33
MOVWF     EEADR             ;   registrador EEADR recebe endereço que será lido
BCF       EECON1,   EEPGD   ;   habilita acesso à memória de dados
BCF       EECON1,   CFGS    ;   habilita acesso à EEPROM
BSF       EECON1,   RD      ;   EEDATA recebe conteúdo do endereço
MOVF      EEDATA,   W       ;   registrador W recebe valor de EEDATA

Figura 19. Leitura do dado do endereço 0x33 da EEPROM e escrita em W (Working Register).
Fonte: Adaptado de Microchip Technology (2008).



                                               28
Para escrever um dado em um determinado endereço da EEPROM, deve-se escrever o
endereço, da EEPROM, que o dado será armazenado no registrador EEADR, escrever o valor do
dado no registrador EEDATA, limpar o bit EEPGD do registrador EECON1 (bit 7), limpar o bit
CFGS do registrador EECON1 (bit 6), habilitar o bit WERN (Flash Program/Data EEPROM Write
Enable bit) do registrador EECON1 (bit 2), desabilitar as interrupções (recomendação do
fabricante), realizar a sequência de gravação do registrador EECON2, habilitar as interrupções (se
for desabilitada) e limpar o bit WERN do registrador EECON1 (MICROCHIP TECHNOLOGY,
2008). Na Figura 20, é apresentado um exemplo de escrita de um dado na EEPROM.


MOVLW    0x33
MOVWF    EEADR
MOVLW    5
MOVWF    EEDATA
BCF      EECON1, EEPGD
BCF      EECON1, CFGS
BSF      EECON1, WREN       ; habilita escrita

BCF      INTCON, GIE        ; desabilita interrupções

MOVLW    0x55               ;
MOVWF    EECON2             ; Sequência de gravação do registrador ECON2
MOVLW    0xAA               ;
MOVWF    EECON2             ;
BSF      EECON1, WR         ; inicia gravação

BSF      INTCON, GIE        ; habilita interrupções

BCF      EECON1, WREN       ; desabilita escrita com a gravação completada


Figura 20. Escrita do valor 5 no endereço 0x33 da EEPROM.
Fonte: Adaptado de Microchip Technology (2008).



Memória de programa

        A memória de programa do PIC18F4520 é do tipo Flash, podendo ser gravados milhares de
vezes, sem a necessidade de apagar a gravação anterior. Os microcontroladores que possuem a
memória de programa desse tipo, são considerados a melhor opção para testes de programas e
implementação final de projetos (ZANCO, 2007). Souza (2008, p. 27) acrescenta que os MCUs
desse tipo “são muito mais fáceis de trabalhar para o desenvolvimento do sistema, mas, por outro
lado, são muito mais caros para uma fabricação em série”.




                                                29
O PIC18F4520 possui 32 kbytes de memória de programa Flash, podendo armazenar 16.384
palavras de instrução, de 16 bits cada. O registrador program counter é implementado em 21 bits,
podendo endereçar até 2 Mbytes de memória, porém o acesso à memória de programa não
implementada fisicamente retornará sempre valor 0 (zero). Ele ainda conta com uma pilha de 31
níveis ligada diretamente ao registrador PC, um vetor de reset contido no endereço 0x0000, um
vetor de interrupções de alta prioridade contido no endereço 0x0008 e um vetor de interrupções de
baixa prioridade no endereço 0x0018 (MICROCHIP TECHNOLOGY, 2008). Na Figura 21, é
apresentada a estrutura do mapa da memória de programa do PIC18F4520.




Figura 21. Estrutura do mapa da memória de programa do PIC18F4520.
Fonte: Adaptado de Microchip Technology (2008).




                                               30
Conjunto de instruções

       Algumas das instruções do PIC18F4520 já foram citadas anteriormente, porém sua
funcionalidade não foi descrita. Como definição, Zanco (2007, p. 53) afirma que,

                       As instruções são constituídas por um conjunto de bits, que ficam armazenados na memória
                       de programa do microcontrolador. Esses bits são lidos na memória de programa, são
                       decodificados para serem acionadas as variáveis de controle internas ao sistema, para que a
                       operação correspondente à instrução seja executada.

       O PIC18F4520 incorpora 75 instruções padrão do núcleo de instruções do grupo PIC18,
contando ainda com mais 8 instruções de extensão (otimização de códigos ou de utilização da pilha
de software) usadas para gravação da memória de programa. Ao todo, 83 instruções formam o seu
conjunto de instruções, onde a maioria delas ocupa o espaço de uma única palavra de 16 bits da
memória de programa, sendo que apenas quatro instruções necessitam de 32 bits. Em geral, todas as
instruções, que ocupam uma palavra da memória de programa, são executadas em um único ciclo
de máquina, exceto as instruções de teste condicional verdadeiro ou quando o program counter é
alterado devido ao resultado da instrução, no qual necessitam de dois ciclos de máquina para serem
executadas (MICROCHIP TECHNOLOGY, 2008).

       As instruções de núcleo do PIC são agrupadas em quatro categorias: operações orientadas a
byte, operações orientadas a bit, operações literais e operações de controle (MICROCHIP
TECHNOLOGY, 2008). Na Tabela 23, Tabela 24, Tabela 25 e Tabela 26 do Anexo II são
apresentadas brevemente a descrição das instruções reconhecidas pelo montador assembler da
Microchip (MPASMTM).


Portas de E/S

       É através das portas de E/S que se podem realizar interações homem-máquina e/ou máquina-
máquina, desenvolvendo uma comunicação entre o microcontrolador e outros dispositivos
associados. A resposta de um MCU às ações externas pode ser observada desde um simples acender
de um led até a escrita de uma frase em um display LCD. Por sua vez, essas ações podem ser
realizadas a partir de um botão aplicando uma mudança no nível lógico de uma porta, por exemplo.

       As portas do PIC são bidirecionais, ou seja, podem ser configuradas tanto para entrada
quanto para saída de informação. Para que o microcontrolador possa identificar a direção dos dados,
deve-se configurar o registrador TRIS correspondente ao conjunto de pinos da porta do MCU.
Souza (2008, p. 42) destaca que “quando é colocado ‘1’ em um bit do TRIS, o pino relacionado a


                                                     31
ele é configurado como entrada. Para configurar o pino como saída, você deve escrever ‘0’ no bit
relacionado”. Tanto a operação de leitura, quanto a de escrita, podem ser feitas em conjunto,
operando com todos os pinos da porta de uma só vez, ou individualmente, operando com um único
pino da porta de cada vez (bit a bit). Zanco (2007, p. 56) acrescenta que,

                        Quando escrevemos um valor em um PORT no qual nem todos os bits estejam
                        configurados como saída, os níveis lógicos nos bits que estão configurados como entrada
                        são desprezados, prevalecendo o respectivo nível lógico aplicado pelo hardware em cada
                        pino configurado como entrada.

         Porém, mesmo que o nível lógico do pino não seja alterado, a mudança de estado em uma
operação de escrita é identificada e armazenada em um registrador temporário da porta (LAT).
Assim, caso o TRIS correspondente à porta alterada seja posteriormente configurado como saída, a
porta assume imediatamente o nível lógico armazenado temporariamente (SOUZA, 2008). Na
Figura 22, é representado um código onde, inicialmente, é realizada a leitura de todos os bits da
porta A (PORTA) e, em seguida, é atribuído nível lógico “1” apenas para o bit 0 da mesma porta
(RA0).

MOVLW     0Fh
MOVWF     TRISA          ; TRISA configura todas os bits de PORTA como entrada
MOVF      PORTA, 0       ; Working register recebe a leitura do PORTA
NOP
BCF       TRISA, 0       ; TRISA muda configuração do bit RA0 para saída
BSF       PORTA, 0       ; passa para nível lógico "1" o bit RA0 do PORTA

Figura 22. Exemplo de leitura e escrita no PORTA.
Fonte: Adaptado de Microchip Technology (2008).


         O PIC18F4520 possui um conjunto de cinco portas, onde a cada uma delas está associado
um registrador TRIS e um registrador temporário LAT. Somados, os pinos das portas do MCU
podem chegar a 36 pinos de E/S assim distribuídas: 8 para PORTA (RA0 até RA7), 8 para PORTB
(RB0 até RB7), 8 para PORTC (RC0 até RC7), 8 para PORTD (RD0 até RD7) e 4 para PORTE
(RE0 até RE3). Como os pinos das portas também podem ser configurados para realizar outras
funções, na leitura é atribuído o valor 0 (zero) para o bit do PORT, quando não estão trabalhando
como E/S digital (MICROCHIP TECHNOLOGY, 2008).

         O PORTB possui um circuito de pull-up interno, no qual assume nível lógico “0”
automaticamente quando configurado como saída. Além disso, quatro de seus pinos (RB4 ao RB7)
tem recurso de interrupção de mudança de estado, mas para isso necessitam estar configurados
como entrada, onde a leitura atual é comparada com a última leitura realizada na porta. Esse


                                                    32
mecanismo de memorização é dado pelo registrador temporário LATB, o qual armazena o valor da
última leitura feita no PORTB (MICROCHIP TECHNOLOGY, 2008).


Interrupções

       Zanco (2007, p. 103) define que “uma interrupção é um evento de hardware que, quando
ocorre, provoca um desvio no programa, para que o evento seja tratado”. A ocorrência desse evento
interrompe o programa imediatamente, guardando o endereço da próxima instrução a ser executada.
Em seguida, o programa é desviado para um endereço fixo da memória de programa, onde está
armazenada a função de tratamento. Finalizada a rotina que trata a interrupção gerada, o programa
torna a executar a partir da instrução do endereço armazenado anteriormente (SOUZA, 2008).

       Além das interrupções de mudança de estado dos bits do PORTB, existem outras fontes de
interrupções do PIC18F4520, tais como: interrupção por estouro do temporizador, interrupções
externas nos pinos INT e interrupções geradas por periféricos. Em sua maioria, são classificadas
como interrupções de alta ou baixa prioridade. As interrupções estão alocadas nos endereços
0x0008 (para interrupções de alta prioridade) ou 0x0018 (para interrupções de baixa prioridade).
Uma interrupção de alta prioridade pode interromper outra de baixa prioridade durante o processo
de execução da mesma. São usados dez registradores para controlar as operações de interrupção
(MICROCHIP TECHNOLOGY, 2008):

          Reset Control Register (RCON): registrador que identifica a causa do último reset ou
           despertar (saída do modo SLEEP) ocorrido no microcontrolador;

          Interrupt Control Register (INTCON, INTCON2 e INTCON3): registradores que
           habilitam ou desabilitam as interrupções globais;

          Peripheral Interrupt Request Register (PIR1 e PIR2): registradores que identificam
           interrupções ocasionadas por um periférico específico;

          Peripheral Interrupt Enable Register (PIER1 e PIER2): registradores que habilitam ou
           desabilitam interrupções ocasionadas por um periférico específico; e

          Peripheral Interrupt Priority Register (IPR1 e IPR2): registradores que atribuem
           prioridade alta ou baixa para as interrupções ocasionadas por um periférico específico.

       Em geral, as interrupções possuem três bits que controlam suas operações: Flag bit, indica
qual evento de interrupção ocorreu; Enable bit, permite desviar a execução do programa para o


                                                33
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC
Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

Más contenido relacionado

Similar a Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

Indicadores de Gestão Urbana
Indicadores de Gestão UrbanaIndicadores de Gestão Urbana
Indicadores de Gestão UrbanaMarcos Camargo
 
Manutenção predial e avaliação de máquinas e equipamentos 2011
Manutenção predial e avaliação de máquinas e equipamentos 2011Manutenção predial e avaliação de máquinas e equipamentos 2011
Manutenção predial e avaliação de máquinas e equipamentos 2011Marcelo Gandra Falcone
 
Ar tool kit-cap6-2004
Ar tool kit-cap6-2004Ar tool kit-cap6-2004
Ar tool kit-cap6-2004caetano_selva
 
Usabilidade e Arquitetura de Informação de Websites de Governos Municipais
Usabilidade e Arquitetura de Informação de Websites de Governos MunicipaisUsabilidade e Arquitetura de Informação de Websites de Governos Municipais
Usabilidade e Arquitetura de Informação de Websites de Governos MunicipaisMarcelo Ramos
 
Toturial autocad2009(1)
Toturial autocad2009(1)Toturial autocad2009(1)
Toturial autocad2009(1)abrito1966
 
Braço mecânico controlado pela diferença de potencial ocular
Braço mecânico controlado pela diferença de potencial ocularBraço mecânico controlado pela diferença de potencial ocular
Braço mecânico controlado pela diferença de potencial ocularRafael Lial
 
Apostila revit-2015-maio-2016
Apostila revit-2015-maio-2016Apostila revit-2015-maio-2016
Apostila revit-2015-maio-2016Reginaldo Mota
 
Controladores programaveis--estudo-e-aplicacao
Controladores programaveis--estudo-e-aplicacaoControladores programaveis--estudo-e-aplicacao
Controladores programaveis--estudo-e-aplicacaoMário Bassoli
 
Laudo Técnico Apreciação Riscos Hercules Motores.pdf
Laudo Técnico Apreciação Riscos Hercules Motores.pdfLaudo Técnico Apreciação Riscos Hercules Motores.pdf
Laudo Técnico Apreciação Riscos Hercules Motores.pdfAlexSouza162005
 
“Agricultura Urbana: Desenvolvimento de uma Unidade Agroecológica Comunitária”
“Agricultura Urbana: Desenvolvimento de uma Unidade Agroecológica Comunitária” “Agricultura Urbana: Desenvolvimento de uma Unidade Agroecológica Comunitária”
“Agricultura Urbana: Desenvolvimento de uma Unidade Agroecológica Comunitária” Cepagro
 
Modelagem_de_Estruturas_de_Pontes_no_Pro.pdf
Modelagem_de_Estruturas_de_Pontes_no_Pro.pdfModelagem_de_Estruturas_de_Pontes_no_Pro.pdf
Modelagem_de_Estruturas_de_Pontes_no_Pro.pdf151727
 
Repositório do Parque Tecnológico da PMSP
Repositório do Parque Tecnológico da PMSPRepositório do Parque Tecnológico da PMSP
Repositório do Parque Tecnológico da PMSPMário Januário Filho
 
ESTUDO COMPARATIVO DE TRÊS ARQUITETURAS PARA MONITORAÇÃO E CONTROLE DO SISTEM...
ESTUDO COMPARATIVO DE TRÊS ARQUITETURAS PARA MONITORAÇÃO E CONTROLE DO SISTEM...ESTUDO COMPARATIVO DE TRÊS ARQUITETURAS PARA MONITORAÇÃO E CONTROLE DO SISTEM...
ESTUDO COMPARATIVO DE TRÊS ARQUITETURAS PARA MONITORAÇÃO E CONTROLE DO SISTEM...Vagner Sanches Vasconcelos, MSc
 

Similar a Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC (20)

Controle de qualidade
Controle de qualidadeControle de qualidade
Controle de qualidade
 
Indicadores de Gestão Urbana
Indicadores de Gestão UrbanaIndicadores de Gestão Urbana
Indicadores de Gestão Urbana
 
TCC_rodrigolima
TCC_rodrigolimaTCC_rodrigolima
TCC_rodrigolima
 
Manutenção predial e avaliação de máquinas e equipamentos 2011
Manutenção predial e avaliação de máquinas e equipamentos 2011Manutenção predial e avaliação de máquinas e equipamentos 2011
Manutenção predial e avaliação de máquinas e equipamentos 2011
 
Ar tool kit-cap6-2004
Ar tool kit-cap6-2004Ar tool kit-cap6-2004
Ar tool kit-cap6-2004
 
Usabilidade e Arquitetura de Informação de Websites de Governos Municipais
Usabilidade e Arquitetura de Informação de Websites de Governos MunicipaisUsabilidade e Arquitetura de Informação de Websites de Governos Municipais
Usabilidade e Arquitetura de Informação de Websites de Governos Municipais
 
Auto cad
Auto cadAuto cad
Auto cad
 
Toturial autocad2009(1)
Toturial autocad2009(1)Toturial autocad2009(1)
Toturial autocad2009(1)
 
Florianópolis - Estudos ambientais
Florianópolis - Estudos ambientaisFlorianópolis - Estudos ambientais
Florianópolis - Estudos ambientais
 
Nao conformidade2011
Nao conformidade2011Nao conformidade2011
Nao conformidade2011
 
Braço mecânico controlado pela diferença de potencial ocular
Braço mecânico controlado pela diferença de potencial ocularBraço mecânico controlado pela diferença de potencial ocular
Braço mecânico controlado pela diferença de potencial ocular
 
Apostila revit-2015-maio-2016
Apostila revit-2015-maio-2016Apostila revit-2015-maio-2016
Apostila revit-2015-maio-2016
 
Caca
CacaCaca
Caca
 
Controladores programaveis--estudo-e-aplicacao
Controladores programaveis--estudo-e-aplicacaoControladores programaveis--estudo-e-aplicacao
Controladores programaveis--estudo-e-aplicacao
 
Laudo Técnico Apreciação Riscos Hercules Motores.pdf
Laudo Técnico Apreciação Riscos Hercules Motores.pdfLaudo Técnico Apreciação Riscos Hercules Motores.pdf
Laudo Técnico Apreciação Riscos Hercules Motores.pdf
 
“Agricultura Urbana: Desenvolvimento de uma Unidade Agroecológica Comunitária”
“Agricultura Urbana: Desenvolvimento de uma Unidade Agroecológica Comunitária” “Agricultura Urbana: Desenvolvimento de uma Unidade Agroecológica Comunitária”
“Agricultura Urbana: Desenvolvimento de uma Unidade Agroecológica Comunitária”
 
Grelha 01-comandos e funções
Grelha 01-comandos e funçõesGrelha 01-comandos e funções
Grelha 01-comandos e funções
 
Modelagem_de_Estruturas_de_Pontes_no_Pro.pdf
Modelagem_de_Estruturas_de_Pontes_no_Pro.pdfModelagem_de_Estruturas_de_Pontes_no_Pro.pdf
Modelagem_de_Estruturas_de_Pontes_no_Pro.pdf
 
Repositório do Parque Tecnológico da PMSP
Repositório do Parque Tecnológico da PMSPRepositório do Parque Tecnológico da PMSP
Repositório do Parque Tecnológico da PMSP
 
ESTUDO COMPARATIVO DE TRÊS ARQUITETURAS PARA MONITORAÇÃO E CONTROLE DO SISTEM...
ESTUDO COMPARATIVO DE TRÊS ARQUITETURAS PARA MONITORAÇÃO E CONTROLE DO SISTEM...ESTUDO COMPARATIVO DE TRÊS ARQUITETURAS PARA MONITORAÇÃO E CONTROLE DO SISTEM...
ESTUDO COMPARATIVO DE TRÊS ARQUITETURAS PARA MONITORAÇÃO E CONTROLE DO SISTEM...
 

Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

  • 1. UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR CURSO DE ENGENHARIA DE COMPUTAÇÃO KIT MODULAR DE DESENVOLVIMENTO BASEADO EM MICROCONTROLADOR PIC Área de Sistemas Embarcados por Bruno Rodrigues Silva Paulo Roberto Oliveira Valim, M.Eng. Orientador São José (SC), junho de 2011
  • 2. UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR CURSO DE ENGENHARIA DE COMPUTAÇÃO KIT MODULAR DE DESENVOLVIMENTO BASEADO EM MICROCONTROLADOR PIC Área de Sistemas Embarcados por Bruno Rodrigues Silva Relatório apresentado à Banca Examinadora do Trabalho de Conclusão do Curso de Engenharia de Computação para análise e aprovação. Orientador: Paulo Roberto Oliveira Valim, M.Eng. São José (SC), junho de 2011
  • 3. SUMÁRIO LISTA DE ABREVIATURAS................................................................ vi LISTA DE FIGURAS ............................................................................. ix LISTA DE TABELAS ............................................................................ xii LISTA DE EQUAÇÕES ....................................................................... xiii RESUMO ............................................................................................... xiv ABSTRACT ............................................................................................ xv 1 INTRODUÇÃO.................................................................................... 1 1.1 KITS DE DESENVOLVIMENTO BASEADOS EM PIC ............................. 1 1.2 PROBLEMATIZAÇÃO ................................................................................... 2 1.2.1 Formulação do problema ............................................................................... 2 1.2.2 Solução proposta ............................................................................................ 3 1.3 JUSTIFICATIVA ............................................................................................. 4 1.3.1 Importância .................................................................................................... 4 1.4 OBJETIVOS ..................................................................................................... 5 1.4.1 Objetivo Geral ................................................................................................ 5 1.4.2 Objetivos Específicos...................................................................................... 5 1.5 METODOLOGIA ............................................................................................. 5 1.6 ESTRUTURA DO TRABALHO ..................................................................... 7 2 FUNDAMENTAÇÃO TEÓRICA ...................................................... 8 2.1 MICROCONTROLADORES .......................................................................... 8 2.1.1 Exemplo de fabricantes de microcontroladores de 8 bits........................... 10 2.2 MICROCHIP TECHNOLOGY..................................................................... 11 2.2.1 Famílias e grupos de microcontroladores PIC de 8 bits............................. 11 2.2.2 Exemplos de microcontroladores PIC de 8 bits .......................................... 14 2.2.3 Encapsulamento ........................................................................................... 18 2.3 MICROCONTROLADOR PIC18F4520 ....................................................... 22 2.3.1 Estrutura externa ......................................................................................... 22 2.3.2 Estrutura interna ......................................................................................... 22 2.3.3 Recursos de hardware .................................................................................. 24 2.4 BARRAMENTO I2C ...................................................................................... 41 2.4.1 Características do barramento I2C ............................................................. 42 2.4.2 Protocolo I2C ................................................................................................ 44 2.5 COMPONENTES PERIFÉRICOS ............................................................... 50 2.5.1 Motor de passo ............................................................................................. 51 2.5.2 Teclado matricial.......................................................................................... 59 2.5.3 Módulo LCD ................................................................................................. 62 2.6 CONSIDERAÇÕES ....................................................................................... 68
  • 4. 3 DESENVOLVIMENTO .................................................................... 69 3.1 METODOLOGIA PARA DEFINIÇÃO DO MODELO .............................. 69 3.2 VISÃO GERAL .............................................................................................. 71 3.3 REQUISITOS ................................................................................................. 72 3.3.1 Requisitos Gerais do Kit Modular de Desenvolvimento ............................ 72 3.3.2 Requisitos do Módulo Controlador ............................................................. 72 3.3.3 Requisitos do Módulo I2C ............................................................................ 73 3.3.4 Requisitos do Módulo Motor de Passo ........................................................ 74 3.3.5 Requisitos do Módulo Display LCD ............................................................ 75 3.3.6 Requisitos do Módulo Teclado Matricial .................................................... 76 3.4 ARQUITETURA DE HARDWARE ............................................................. 76 3.5 IMPLEMENTAÇÃO VIRTUAL................................................................... 79 3.5.1 Seleção dos componentes virtuais ................................................................ 79 3.5.2 Validação da Implementação Virtual ......................................................... 85 3.6 IMPLEMENTAÇÃO FÍSICA ....................................................................... 95 3.6.1 Diferenças entre os circuitos virtuais e físicos dos módulos ....................... 95 3.6.2 Prototipação do kit ....................................................................................... 96 3.6.3 Modularidade dos protótipos .................................................................... 100 3.6.4 Validação dos protótipos............................................................................ 100 3.7 CONFECÇÃO DAS PLACAS FINAIS DOS MÓDULOS DO KIT .......... 103 3.7.1 Mudanças dos protótipos para as placas finais ........................................ 103 3.8 CUSTOS DO PROJETO .............................................................................. 104 3.8.1 Custo dos componentes .............................................................................. 105 3.8.2 Custo das placas ......................................................................................... 108 3.9 CONSIDERAÇÕES ..................................................................................... 109 4 CONCLUSÃO .................................................................................. 110 4.1 OPORTUNIDADES DE TRABALHOS FUTUROS .................................. 112 REFERÊNCIAS BIBLIOGRÁFICAS ................................................ 113 APÊNDICE A ....................................................................................... 118 APÊNDICE B ....................................................................................... 119 APÊNDICE C ....................................................................................... 120 APÊNDICE D ....................................................................................... 121 APÊNDICE E ....................................................................................... 124 APÊNDICE F ....................................................................................... 126 APÊNDICE G....................................................................................... 128 APÊNDICE H....................................................................................... 130 APÊNDICE I ........................................................................................ 132 APÊNDICE J ........................................................................................ 133 iv
  • 5. APÊNDICE K....................................................................................... 134 APÊNDICE L ....................................................................................... 135 APÊNDICE M ...................................................................................... 136 APÊNDICE N ....................................................................................... 137 APÊNDICE O....................................................................................... 138 APÊNDICE P ....................................................................................... 139 APÊNDICE Q....................................................................................... 140 APÊNDICE R ....................................................................................... 141 APÊNDICE S........................................................................................ 142 v
  • 6. LISTA DE ABREVIATURAS A/D Analógico/Digital ACK Acknowledge ANSI-C American National Standards Institute padrão C ASCII American Standard Code for Information Interchange BOR Bourn-out Reset BSR Bank Select Register C Carry flag CAN Controller Area Network CCP Capture/Compare/PWM CCPRx CCPx Register CCPxCON CCPx Control Register CFGS Flash Program/Data EEPROM or Configuration Select bit CISC Complex Instruction Set Computer CLRWDT Clear Watchdog Timer CMOS Complementary Metal-Oxide-Semiconductor COP8 8-bit Control-Oriented Processor CPU Central Processing Unit CTMU Charge Time Measurement Unit E/S Entrada/Saída ECCP Enhanced Capture/Compare/PWM EEADR EEPROM Address Register EECON EEPROM Control Register EEDATA EEPROM Data Register EEPGD Flash Program or Data EEPROM Memory Select bit EEPROM Electrically-Erasable Programmable Read-Only Memory EUA Estados Unidos da América EUSART Enhanced USART FSR File Select Register GND Ground GPR General Purpose Register I2C Inter-Intergrated Circuit ICSP In-Circuit Serial Programming INTCON Interrupt Control Register IPR Peripheral Interrupt Priority Register KMD Kit Modular de Desenvolvimento LCD Liquid Crystal Display MCT Módulo Controlador MCU Microcontrolador MDL Módulo Display LCD MIC Módulo I²C MIPS Milhões de Instruções Por Segundo MMP Módulo Motor de Passo MSSP Master Synchronous Serial Port MTM Módulo Teclado Matricial NACK Not Acknowledge NC No Connect
  • 7. PC Program Counter PCI Placa de Circuito Impresso PDIP Plastic Dual In-Line Packages PIC Peripherical Interface Controller PIER Peripheral Interrupt Enable Register PIR Peripheral Interrupt Request Register POR Power-on Reset PPR Passos Por Rotação PPS Passos por segundo PR2 Period Register 2 PWM Pulse-Width Modulation QFN Quad Flat, No Lead Package R/W Read/Write RAM Random Access Memory RC Resistor Capacitor RCON Reset Control Register RD Read Control bit REF Requisitos funcionais RISC Reduced Instruction Set Computer RNF Requisitos não funcionais ROM Read Only Memory RTC Real Time Clock SCK Serial Clock SCL Serial Clock SDA Serial Data SDI Serial Data In SDO Serial Data Out SFR Special Function Registers SOIC Small Outline Plastic Packages SPI Serial Peripheral Interface SS Slave Select SSPBUF MSSP Buffer Register SSPCON1 MSSP Control Register 1 SSPCON2 MSSP Control Register 2 SSPSR MSSP Shift Register SSPSTAT MSSP Status Register SSOP Shrink Small Outline Packages T0CON Timer 0 Control Register T1CON Timer 1 Control Register T2CON Timer 2 Control Register T3CON Timer 3 Control Register TCC Trabalho de Conclusão de Curso TMR0 Timer 0 Register TMR0H Timer 0 Register High TMR0L Timer 0 Register Low TMR1 Timer 1 Register TMR2 Timer 2 Register TMR3 Timer 3 Register UFES Universidade Federal do Espírito Santo vii
  • 8. UFLA Universidade Federal de Lavras UFRGS Universidade Federal do Rio Grande do Sul UFSC Universidade Federal de Santa Catarina ULA Unidade Lógica Aritmética UNIVALI Universidade do Vale do Itajaí USART Universal Synchronous Asynchronous Receiver Transmitter USB Universal Serial Bus UTFPR Universidade Tecnológica Federal do Paraná W Working Register WDT Watchdog Timer WERN Flash Program/Data EEPROM Write Enable bit viii
  • 9. LISTA DE FIGURAS Figura 1. Microcontrolador .............................................................................................................. 8 Figura 2. Arquitetura do microcontrolador: (a) von-Newmann; (b) Harvard .....................................9 Figura 3. Gráfico ilustrado da organização dos PICs em tamanho da palavra de instrução.............. 12 Figura 4. Diagrama simplificado dos pinos do PIC16F54............................................................... 14 Figura 5. Diagrama simplificado dos pinos do PIC16F628A. ......................................................... 15 Figura 6. Diagrama simplificado dos pinos do PIC16F1826. .......................................................... 15 Figura 7. Diagrama simplificado dos pinos do PIC18F1320. .......................................................... 16 Figura 8. Vista em perspectiva do encapsulamento QFN em um chip com 28 pinos. ...................... 18 Figura 9. Vista em perspectiva do encapsulamento SOIC em um chip com 28 pinos. ..................... 19 Figura 10. Vista em perspectiva do encapsulamento SSOP em um chip com 28 pinos. .................. 20 Figura 11. Vista em perspectiva do encapsulamento PDIP em um chip com 28 pinos. ................... 20 Figura 12. Vista superior do encapsulamento PDIP em um chip com 28 pinos. .............................. 21 Figura 13. (a) Vista lateral e (b) vista frontal do encapsulamento PDIP em um chip com 28 pinos. 21 Figura 14. Diagrama dos pinos do PIC18F4520 em encapsulamento PDIP de 40 pinos.................. 22 Figura 15. Estrutura interna do microcontrolador PIC18F4520. ..................................................... 23 Figura 16. Oscilador externo por (a) circuito RC, (b) cristal/ressonador. ........................................ 24 Figura 17. Circuito de reset externo (a) POR e (b) BOR. ............................................................... 26 Figura 18. Mapa da memória de dados do PIC18F4520. ................................................................ 27 Figura 19. Leitura do dado do endereço 0x33 da EEPROM e escrita em W (Working Register). .... 28 Figura 20. Escrita do valor 5 no endereço 0x33 da EEPROM. ....................................................... 29 Figura 21. Estrutura do mapa da memória de programa do PIC18F4520. ....................................... 30 Figura 22. Exemplo de leitura e escrita no PORTA. ....................................................................... 32 Figura 23. Modo PWM em saída única. ......................................................................................... 39 Figura 24. Modo PWM em meia ponte para controle de circuito de (a) meia ponte ou (b) ponte completa. ............................................................................................................................... 39 Figura 25. Modo PWM em ponte completa para controle de circuito de ponte completa. ............... 39 Figura 26. Modo SPI de comunicação serial síncrona. ................................................................... 40 Figura 27. Modo I2C de comunicação serial síncrona. .................................................................... 40 Figura 28. Sincronização entre mestre-escravo no modo SPI. ........................................................ 41 Figura 29. Comunicação mestre-escravo no barramento I2C. ......................................................... 42 Figura 30. Aspectos físicos do barramento I2C (a) sem e (b) com resistores em série (RS).............. 43 Figura 31. Gráfico da relação dos resistores de pull-up e de proteção no circuito I2C. .................... 44 Figura 32. Condições do protocolo I2C para transferência de dados. .............................................. 45 Figura 33. Condições de (a) Start e (b) Stop do protocolo I2C. ....................................................... 46 Figura 34. Identificação do componente com (a) 7 bits e (b) 10 bits de endereço. ......................... 47 Figura 35. Validação de um bit em nível lógico (a) alto e (b) baixo no protocolo I2C. .................... 48 Figura 36. Transferência completa no protocolo I2C. ..................................................................... 48 Figura 37. Sincronização do relógio entre dois mestres concorrentes. ............................................ 49 Figura 38. Arbitragem entre dois mestres concorrentes. ................................................................. 50 Figura 39. Gráfico relacionando entre torque e velocidade em PPS (Passos por segundo). ............. 52 Figura 40. Ilustração dos terminais dos enrolamentos de um motor unipolar. ................................. 52 Figura 41. Ilustração dos terminais dos enrolamentos de um motor bipolar. ................................... 53 Figura 42. Circuito para o controle de motor de passo unipolar. ..................................................... 54 Figura 43. Circuito para o controle de motor de passo bipolar. ....................................................... 54 Figura 44. Sinal digital controlando a corrente aplicada em uma bobina do motor de passo. .......... 57 Figura 45. Chave de acionamento momentâneo com identificação do bounce. ............................... 60
  • 10. Figura 46. Matriz m x n de interconexão de chaves momentâneas. ................................................. 61 Figura 47. Representação dos módulos LCD (a) gráficos e (b) alfanuméricos. ............................... 63 Figura 48. LCD Hitachi com drive HD44780................................................................................. 64 Figura 49. Conexões dos pinos do driver do LCD com um microcontrolador. ................................ 64 Figura 50. Visão geral do projeto. .................................................................................................. 71 Figura 51. Arquitetura do Kit Modular de Desenvolvimento. ......................................................... 77 Figura 52. Circuito de simulação do Módulo Controlador. ............................................................. 80 Figura 53. Circuito de simulação do Módulo I²C. .......................................................................... 81 Figura 54. Circuito de simulação do Módulo Motor de Passo......................................................... 83 Figura 55. Circuito de simulação do Módulo Display LCD. ........................................................... 84 Figura 56. Circuito de simulação do Módulo Teclado Matricial. .................................................... 85 Figura 57. Janela do Hyper Terminal na validação do Experimento B............................................ 86 Figura 58. Janela do ANALISADOR I2C do Experimento C. ........................................................ 88 Figura 59. Janela do ANALISADOR I2C do Experimento D......................................................... 89 Figura 60. Janela do RTC com a data gravada no Experimento D. ................................................. 89 Figura 61. Gráfico do acionamento do MOTOR 1 em sentido horário no Experimento E............... 90 Figura 62. Gráfico do acionamento do MOTOR 1 em sentido anti-horário no Experimento E. ....... 91 Figura 63. Chaveamento dos sinais PWM no Experimento F. ........................................................ 92 Figura 64. LCD com contagem de 0 até 100 no Experimento G. .................................................... 93 Figura 65. Identificação da chave pressionada no Experimento H. ................................................. 94 Figura 66. Imagem em 3D do protótipo do Módulo Controlador. ................................................... 97 Figura 67. Imagem em 3D do protótipo do Módulo I²C. ................................................................ 98 Figura 68. Imagem em 3D do protótipo do Módulo Motor de Passo. ............................................. 98 Figura 69. Imagem em 3D do protótipo do Módulo Display LCD. ................................................. 99 Figura 70. Imagem em 3D do protótipo do Módulo Teclado Matricial. .......................................... 99 Figura 71. Resultado da validação 9 com os protótipos físicos. .................................................... 102 Figura 72. Resultado da validação 10 com os protótipos físicos. .................................................. 103 Figura 73. Código fonte do Experimento A.................................................................................. 118 Figura 74. Código fonte do Experimento B. ................................................................................. 119 Figura 75. Código fonte do Experimento C. ................................................................................. 120 Figura 76. Código fonte do Experimento D.................................................................................. 121 Figura 77. Código fonte do Experimento E. ................................................................................. 124 Figura 78. Código fonte do Experimento F. ................................................................................. 126 Figura 79. Código fonte do Experimento G.................................................................................. 128 Figura 80. Código fonte do Experimento H.................................................................................. 130 Figura 81. Circuito esquemático do Módulo Controlador. ............................................................ 132 Figura 82. Circuito esquemático do Módulo I²C. ......................................................................... 133 Figura 83. Circuito esquemático do Módulo Motor de Passo. ...................................................... 134 Figura 84. Circuito esquemático do Módulo Display LCD. .......................................................... 135 Figura 85. Circuito esquemático do Módulo Teclado Matricial. ................................................... 136 Figura 86. Footprint da placa do Módulo Controlador. ................................................................ 137 Figura 87. Layer da placa do Módulo Controlador. ...................................................................... 137 Figura 88. Footprint da placa do Módulo I²C. .............................................................................. 138 Figura 89. Layer da placa do Módulo I²C..................................................................................... 138 Figura 90. Footprint da placa do Módulo Motor de Passo. ........................................................... 139 Figura 91. Layer da placa do Módulo Motor de Passo. ................................................................. 139 Figura 92. Footprint da placa do Módulo Display LCD. .............................................................. 140 Figura 93. Layer da placa do Módulo Display LCD. .................................................................... 140 Figura 94. Footprint da placa do Módulo Teclado Matricial. ....................................................... 141 x
  • 11. Figura 95. Layer da placa do Módulo Teclado Matricial. ............................................................. 141 Figura 96. Footprint da placa do Módulo Controlador na versão final. ......................................... 142 Figura 97. Footprint da placa do Módulo I²C na versão final. ...................................................... 142 Figura 98. Footprint da placa do Módulo Motor de Passo na versão final. ................................... 143 Figura 99. Footprint da placa do Módulo Display LCD na versão final. ....................................... 143 Figura 100. Footprint da placa do Módulo Teclado Matricial na versão final. .............................. 144 xi
  • 12. LISTA DE TABELAS Tabela 1. Exemplos de kits de desenvolvimento baseados no PIC16F877A .....................................2 Tabela 2. Características dos grupos de microcontroladores PIC .................................................... 13 Tabela 3. Descrição das funcionalidades dos pinos compatíveis entre os microcontroladores PIC exemplificados....................................................................................................................... 17 Tabela 4. Definições do protocolo I2C ........................................................................................... 45 Tabela 5. Sequência de acionamento do motor de passo unipolar para passo completo .................. 55 Tabela 6. Sequência de acionamento do motor de passo unipolar para meio passo ......................... 56 Tabela 7. Proporção de ocupação do ciclo ativo de um sinal para 32 micro-passo por passo .......... 58 Tabela 8. Exemplo de varredura em uma matriz de ordem quatro, onde c23 foi pressionado. .......... 62 Tabela 9. Descrição das funções dos pinos do LCD ....................................................................... 65 Tabela 10. Instruções de comando mais comuns do LCD 2x16 ...................................................... 66 Tabela 11. Código de identificação do tipo de operação do LCD para inicialização ....................... 67 Tabela 12. Relação dos pinos do PIC18F4520 com os módulos do kit ........................................... 77 Tabela 13. Relação de as imagens da PCI com os módulos do kit .................................................. 96 Tabela 14. Validação dos experimentos realizados nas combinações dos módulos ....................... 100 Tabela 15. Mudanças dos protótipos para as placas finais dos módulos........................................ 104 Tabela 16. Custo de compra dos componentes do protótipo do Módulo Controlador .................... 105 Tabela 17. Custo de compra dos componentes do protótipo do Módulo I²C ................................. 106 Tabela 18. Custo de compra dos componentes do protótipo do Módulo Motor de Passo .............. 106 Tabela 19. Custo de compra dos componentes do protótipo do Módulo Display LCD .................. 107 Tabela 20. Custo de compra dos componentes do protótipo do Módulo Teclado Matricial ........... 107 Tabela 21. Custo de compra dos materiais para produção dos protótipos ..................................... 108 Tabela 22. Descrição dos pinos do PIC18F4520 .......................................................................... 146 Tabela 23. Instruções de operações orientadas a byte ................................................................... 150 Tabela 24. Instruções de operações orientadas a bit ..................................................................... 151 Tabela 25. Instruções de operações literais .................................................................................. 151 Tabela 26. Instruções de operações de controle ............................................................................ 151
  • 13. LISTA DE EQUAÇÕES Equação 1 ...................................................................................................................................... 37 Equação 2 ...................................................................................................................................... 37 Equação 3 ...................................................................................................................................... 57 Equação 4 ...................................................................................................................................... 57 Equação 5 ...................................................................................................................................... 57 Equação 6 ...................................................................................................................................... 58
  • 14. RESUMO SILVA, Bruno Rodrigues. Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC. São José, 2011. 178 f. Trabalho de Conclusão de Curso (Graduação em Engenharia de Computação) – Centro de Ciências Tecnológicas da Terra e do Mar, Universidade do Vale do Itajaí, São José, 2011. A prototipação de sistemas embarcados microcontrolados, tanto profissionais quanto acadêmicos, normalmente, utilizam um kit de desenvolvimento voltado ao uso do microcontrolador de um fabricante específico. Isso faz com que o kit não possa ser reutilizado em outros projetos que visam à utilização dos mesmos recursos periféricos, contidos na placa de circuito impresso do kit, com microcontrolador de outro fabricante qualquer. Essa característica encontrada em kits tradicionais acarreta uma limitação da flexibilidade do uso do kit, além de um aumento no custo de um determinado projeto pela compra de outro kit com os mesmos recursos para o microcontrolador do fabricante desejado. Para evitar esses problemas, este trabalho procurou relacionar em hardware os princípios de modularidade para resolução de um problema complexo. Assim, o objetivo foi conceber um kit modular de desenvolvimento que possibilite ao usuário combinar os módulos de acordo com as suas necessidades, de modo que seus recursos sejam reutilizados em diferentes projetos, independentemente do microcontrolador. Para este kit foram confeccionados cinco módulos distintos, sendo: um módulo destinado a utilização de microcontrolador PIC de 8 bits, um para utilização de componentes periféricos compatíveis com o barramento I2C, um para o controle de motores de passo unipolares, um para a utilização de display LCD alfanumérico e mais um para utilização de teclado matricial de ordem 4. Neste trabalho foram realizadas as etapas correspondentes ao levantamento de informações, modelagem, virtualização e prototipação do kit modular de desenvolvimento, além de atividades práticas para os testes de validação de cada módulo. Palavras-chave: Kit. Desenvolvimento. Modular. Microcontrolador. PIC.
  • 15. ABSTRACT The prototyping of embedded system, both professionals and academics, normally use a development kit directed to use microcontroller of a specific manufacturer. This makes the kit can not be reused in other projects that aim the utilization the same peripheral resources, contained in the printed circuit board of the kit, with microcontroller of any other manufacturer. These feature found in traditionals kits entails in a limitation of the flexibility of the use of the kit, beyond an increase in the cost of a project by buying another kit with the same resources for the microcontroller of the manufacturer desired. To avoid these problems, this work searched to relate, in hardware, the principles of modularity for solving of a complex problem. So, the objective was conceive a modulate development kit that allows the user combine the modules accordance with his needs, so that its resources be reused in different projects, independently of the microcontroller. For this development kit will be made five distinct modules, being one module for the use of 8-bit PIC microcontroller, one for the use of peripherals components compatible with the I2C bus, one for control of stepper motors, one for the use of LCD display and one for use of a matrix keyboard. At this work were realized the corresponding steps at the information survey, modeling, virtualization and prototyping of the modular development kit, beyond as practical activities for the validation tests for each module. Keywords: Kit. Development. Modulate. Microcontroller. PIC.
  • 16. 1 INTRODUÇÃO Normalmente, as instituições de ensino do Brasil, que oferecem cursos de nível técnico, tecnólogo e engenharia, reservam, em suas disciplinas, horas/aula dedicadas ao ensino prático dos assuntos abordados, de modo teórico, em sala de aula. Essa prática pedagógica é fundamental para a absorção do conteúdo por parte do estudante (FRAGA, 2008). O curso de Engenharia de Computação apresenta, em sua matriz curricular, disciplinas com ementas que envolvem aplicações práticas em laboratórios, equipados com recursos que, na maioria das vezes, vão além de computadores e internet. Sendo assim, algumas universidades como UFRGS (Universidade Federal do Rio Grande do Sul), UFES (Universidade Federal do Espírito Santo) e UNIVALI (Universidade do Vale do Itajaí), já abordam microcontroladores/microprocessadores no conteúdo programático de algumas disciplinas, onde utilizam kits de desenvolvimento na implementação das atividades práticas realizadas em laboratórios. À medida que são avaliados por suas implementações práticas, os alunos demonstram interesse em realizar suas atividades fora do horário de aula, podendo assim melhorar seus trabalhos (FRAGA, 2008). Infelizmente, os laboratórios não podem ficar abertos a todo o momento para o estudante, que por sua vez, em alguns casos, não dispõe do tempo em que os laboratórios estão disponíveis. Para esses casos, supõe-se que o aluno deveria comprar um kit por conta própria, e assim, praticar os conteúdos da matéria em horário extra disciplinar. Algumas empresas que comercializam esses kits e materiais didáticos visam, em sua maioria, apresentar produtos com uma gama de possibilidades de aplicações elevada. Assim, seus materiais podem abranger diversas funcionalidades e, consequentemente, ampliar o leque de clientes em potencial. 1.1 KITS DE DESENVOLVIMENTO BASEADOS EM PIC Os kits podem se diferenciar muito de um para o outro, dependendo do foco de sua utilização e dos recursos contidos. Entre os kits de desenvolvimento baseados em microcontrolador PIC (Peripherical Interface Controller), destacam-se os fabricantes: LabTools, Microgenios, Cerne- Tec e AcePIC, os quais disponibilizam seus kits através de sites de comércio eletrônico para todo o Brasil. Na Tabela 1, são apresentados alguns exemplos de kits de desenvolvimento que são vendidos com o microcontrolador PIC16F877A, no qual apresentam recursos comuns entre eles, tais como: display LCD (Liquid Crystal Display), display de 7 segmentos, teclas, leds e etc.
  • 17. Tabela 1. Exemplos de kits de desenvolvimento baseados no PIC16F877A Fabricante Nome Preço à vista Ilustração LabTools McLab 2 - 16F R$ 556,60 Microgenios Kit PICgenios PIC16F877A R$ 580,00 Cerne-Tec PICLAB16F877A R$ 399,90 AcePIC ACEPIC 40 v2.0 (PIC16F877A) R$ 275,90 Fonte: Adaptado de AcePIC (2010), Cerne-Tec (2010), LabTools (2010) e Microgenios (2010). Todos os kits citados são confeccionados em uma única placa de circuito impresso, onde possuem várias possibilidades de operação a serem trabalhadas com o microcontrolador. Porém, essa abordagem de fabricação de kit, traz consigo desvantagens importantes quanto à prototipação de projetos e, até mesmo, quanto a sua utilização didática. 1.2 PROBLEMATIZAÇÃO 1.2.1 Formulação do problema Do ponto de vista de projeto, o prejuízo encontra-se na reutilização. Um kit que possui os recursos necessários para uma prototipação, com exceção da abordagem do microcontrolador, não serve para o projeto. Um determinado kit de desenvolvimento, construído em uma única placa de circuito impresso, estará limitado a um determinado fabricante. Assim, o desenvolvedor necessitará de artifícios técnicos para resolver esta questão, ou até mesmo comprar outro kit voltado ao uso do microcontrolador do fabricante desejado. Esse problema também é verdade quando o microcontrolador é compatível, mas não apresenta um determinado recurso considerado fundamental para o desenvolvedor. Nesse caso, os 2
  • 18. fabricantes dos kits procuram amenizar este problema introduzindo um conector de expansão, derivado das portas de entrada/saída do microcontrolador, no qual pode-se conectar uma outra placa com a funcionalidade desejada. Para ambas as situações possíveis de se encontrar em um determinado projeto, torna-se evidente o aumento no custo de desenvolvimento. Do ponto de vista didático, o valor agregado em kits “super completos”, com recursos que o estudante desconhece ou não utilizará, torna o investimento inicial muito elevado para o aluno. Isso pode acarretar em uma desmotivação na compra desse material didático e, até mesmo, na matéria lecionada. Assim, geralmente, o único kit no qual o estudante pode testar suas aplicações na prática é o do próprio laboratório. Nesses moldes, a disciplina tem de ser conduzida de tal forma que vários alunos tenham que dividir tempos de utilização do kit, dificultando o estudante a realizar uma determinada tarefa prática, acarretando em um possível mau aproveitamento de horas/aula prática da disciplina, por parte do estudante. 1.2.2 Solução proposta Para suprir as carências apresentadas em relação aos kits de desenvolvimento tradicionais, este trabalho propôs como solução construir um kit de desenvolvimento modular, a qual foi baseada em microcontrolador PIC. Com isso, busca-se oferecer um produto educacional de forma a facilitar o acesso por parte dos interessados, possibilitando a inclusão gradual de funcionalidades ao kit. Além disso, flexibilizar a reutilização de recursos de entrada e saída de dados, para prototipação de sistemas embarcados, respeitando a conectividade entre os módulos. O trabalho busca aplicar uma das principais metodologias de programação utilizada em construção de software, a qual consiste em dividir um determinado problema em partes menores para que facilite sua resolução. Em relação à esta abordagem, Boratti (2004, p. 95) cita que, Em determinadas situações, a solução de problemas passa pela solução de problemas menores (subproblemas) os quais não se constituem em novos métodos. Nesses casos, pode-se fazer com que a implementação do método seja dividida em módulos, onde cada módulo resolverá um subproblema. Esse conceito de software foi aplicado à solução proposta no desenvolvimento do hardware, de modo que suas funcionalidades estejam em placas para serem combinadas e/ou utilizadas separadamente. Um kit construído desta forma possibilita montar projetos de pequeno, médio e grande porte, diferenciados apenas pelo número de módulos utilizados. 3
  • 19. Foram considerados módulos periféricos, os módulos construídos para atuarem passivamente em um sistema embarcado, ou seja, eles receberão ação direta do usuário e/ou do microcontrolador. Por sua vez, o módulo contendo o microcontrolador foi considerado módulo principal. Em uma solução semelhante, Melo e Zapelini (2003, p. 8) utilizaram em um de seus módulos principais o microcontrolador AT89S8252 (Atmel), onde concluíram em seu artigo que, Ao permitir uma ampla variedade de experimentos didáticos, em diferentes níveis de complexidade, e a construção rápida de protótipos, o equipamento proposto neste artigo demonstra-se uma importante ferramenta de apoio ao processo ensino/aprendizagem em cursos de Engenharia, Técnicos ou de Tecnologia. Com a solução proposta, esse trabalho pretende atingir resultados semelhantes aos de Melo e Zapelini, porém o microcontrolador que foi aplicado ao módulo principal foi o PIC, da Microchip. Diferente do 8051 (Intel) e o AVR (Atmel), o PIC não é abordado nas disciplinas do curso, tornando a realização do trabalho uma oportunidade de aprendizado desse que é um dos microcontroladores mais populares do mercado. Além disso, possui ampla documentação, ferramentas de desenvolvimento disponíveis, abrangência de aplicações que podem ser desenvolvidas. 1.3 JUSTIFICATIVA A execução deste projeto também se justifica em nível de Trabalho de Conclusão de Curso (TCC) para o Curso de Engenharia da Computação, uma vez que trata do desenvolvimento de um sistema embarcado que faz uso de várias tecnologias, conceitos e teorias relevantes à essa área, como: (i) construção de protótipo físico com componentes eletrônicos; (ii) programação em linguagem C para microcontroladores PIC; (iii) construção de sistemas embarcados com diferentes periféricos; e (iv) elaboração e simulação de circuitos eletrônicos em software. 1.3.1 Importância Esse projeto de TCC não busca substituir os kits de desenvolvimentos comerciais, mas desenvolver uma solução que possibilite montar um kit de acordo com as necessidades do projetista, podendo ser, possivelmente, de custo mais acessível para alunos, professores e/ou interessados que desejam utilizar kits de forma particular, em seus projetos. Não fazem parte do escopo deste trabalho o projeto da fonte de alimentação, no qual foi utilizada uma fonte criada em outros projetos, e a implementação de roteiros e/ou tutoriais de experiências com o kit, apenas os programas que validem a funcionalidade dos módulos. 4
  • 20. Limitações podem ocorrer na implementação do módulo principal do kit, tornando-o restrito a utilização do microcontrolador escolhido para o projeto. Porém, como mencionado anteriormente, o projetista pode criar seu modulo principal específico apenas respeitando a conectividade com os outros módulos do kit. 1.4 OBJETIVOS 1.4.1 Objetivo Geral O objetivo geral deste trabalho é construir um kit modular de desenvolvimento baseado no microcontrolador PIC de 8 bits para utilização em experimentos diversos relacionados à área de sistemas embarcados, em cursos de nível técnico, tecnólogo e engenharia. 1.4.2 Objetivos Específicos Os objetivos específicos deste trabalho são:  Definir os módulos periféricos que compõem o kit;  Escolher a forma de conexão entre os módulos do kit;  Desenvolver os módulos do kit;  Validar a funcionalidade dos módulos do kit; e  Documentar o trabalho. 1.5 METODOLOGIA Foram considerados cinco etapas a fim de executar este trabalho, sendo elas: estudo, projeto, desenvolvimento, validação e documentação. As etapas de estudo e de projeto foram efetuadas no TCC (Trabalho de Conclusão de Curso) I, enquanto que as etapas de desenvolvimento, validação e documentação foram efetuadas no TCC II. Na etapa de estudo, foi realizado um levantamento bibliográfico com o objetivo de identificar referências que permitam fundamentar os conceitos necessários ao desenvolvimento deste trabalho. Este levantamento bibliográfico foi baseado em livros e artigos. As referências foram obtidas através de compras realizadas pela internet em sites de livrarias e editoras, por locação nas bibliotecas da UNIVALI e da UFSC (Universidade Federal de Santa Catarina) e em 5
  • 21. publicações disponibilizadas na internet em sites de fabricantes de microcontroladores e de revistas eletrônicas. Na etapa de projeto foi realizado um levantamento dos módulos que foram implementados no trabalho, além do tipo de conexão utilizado entre eles. No levantamento dos módulos, foram analisados quais os componentes principais que seriam utilizados em cada módulo. No levantamento do tipo de conexão entre os módulos, foram analisados os requisitos de conexão de cada módulo periférico com o módulo principal, a fim de determinar um tipo de conexão padrão entre os módulos. A análise foi baseada na revisão bibliográfica realizada na etapa de estudo. Na etapa de desenvolvimento foram implementados os módulos do kit em duas plataformas distintas, plataforma virtual e física. Na implementação virtual, os circuitos necessários para funcionamento virtual dos módulos foram desenvolvidos no software de simulação de circuitos eletrônicos Proteus, abstraindo alguns componentes discretos no sistema, utilizando em seu lugar componentes completos adequados para a aplicação pertencente a sua biblioteca. Na implementação física, foram adicionados ao circuito dos módulos os componentes discretos abstraídos na implementação virtual, onde foram montados os esquemas e o layout das placas de circuito impresso de cada protótipo dos módulos no software de confecção de PCI (Placa de Circuito Impresso) Eagle. Na etapa de validação foram desenvolvidos alguns experimentos em linguagem C no compilador MikroC PRO for PIC, para que fossem compilados e gravados no microcontrolador PIC a fim de testar os circuitos desenvolvidos. Foram utilizados os mesmos softwares para validação tanto dos circuitos virtuais quanto dos circuitos físicos, tendo como objetivo o mesmo comportamento do sistema em ambas as plataforma. A etapa de documentação foi realizada ao longo de todo trabalho, procurando-se registrar a execução das etapas descritas anteriormente para elaboração do produto proposto neste TCC. As informações levantadas para a fundamentação teórica estão registradas no Capítulo 2, enquanto que as informações relativas ao desenvolvimento do projeto estão no Capítulo 3. 6
  • 22. 1.6 ESTRUTURA DO TRABALHO Este documento está estruturado em quatro capítulos. O Capítulo 1, Introdução, apresentou uma visão geral do trabalho. No Capítulo 2, Fundamentação Teórica, é apresentada uma revisão bibliográfica sobre: Microcontroladores, os microcontroladores de 8 bits fabricados pela Microchip Technology, assim como uma análise a respeito da compatibilidade entre os eles. Nesse capítulo, também é feita uma descrição dos recursos do microcontrolador PIC18F4520, do Barramento I2C (Inter-Intergrated Circuit) e dos Componentes periféricos, relevantes para o trabalho. O Capítulo 3 apresenta o desenvolvimento dos módulos que foram desenvolvidos, incluindo o a metodologia usada para a elaboração da visão geral projeto, seus requisitos e a arquitetura de hardware utilizada para o kit modular de desenvolvimento. O capítulo também discute os tipos de implementações dos módulos e como eles foram desenvolvidos e validados. Concluindo, no Capítulo 4, são apresentadas as conclusões, onde são avaliadas as metodologias empregadas, as dificuldades enfrentadas e os resultados obtidos para alcançar as metas estipuladas no escopo deste trabalho. 7
  • 23. 2 FUNDAMENTAÇÃO TEÓRICA Neste capitulo é apresentada uma introdução aos microcontroladores e exemplo de fabricantes, à empresa Microchip Technology e sua classificação sobre seus microcontroladores fabricados, aos recursos do microcontrolador PIC18F4520 considerados relevantes no trabalho, ao barramento I2C e aos periféricos selecionados para o kit. 2.1 MICROCONTROLADORES Um microcontrolador (MCU) é um componente que possui microprocessador, memória e periféricos no mesmo encapsulamento (ZANCO, 2007). Os microcontroladores são chips que podem ser programados para realizarem tarefas específicas. Os MCUs reagem às entradas de dados, de acordo com o programa gravado em memória, gerando uma saída correspondente. Na Figura 1, estão representadas algumas unidades de hardware presentes no microcontrolador, dispensando a utilização de outros componentes em um circuito, tornando-o um elemento poderoso no controle de processos lógicos utilizados em muitos equipamentos de uso diário como calculadoras, celulares, eletrodomésticos, brinquedos, etc. Figura 1. Microcontrolador Fonte: Verle (2008).
  • 24. A estrutura interna do microcontrolador pode variar de acordo com o modelo adotado pelo fabricante. Grande parte dos microcontroladores apresentam uma arquitetura tradicional do tipo von-Newmann, existindo apenas um barramento interno por onde passam as instruções e os dados, enquanto que outros utilizam a arquitetura Harvard, composto por dois barramentos internos, sendo um de dados e outro de instruções (SOUZA, 2008). A Figura 2.a representa a arquitetura von-Newmann com apenas um barramento tanto para dados (contido na memória de dados) quanto para instruções (contido na memória de programa). Já na Figura 2.b o acesso à memória de dados e memória de programa são realizados por barramentos separados fisicamente. Nos microcontroladores de 8 bits, os dados são armazenados na memória em tamanhos de 1 byte (8 bits), dessa forma, na arquitetura von-Newmann, o barramento de dados e instrução são normalmente de 8 bits (de acordo com o tamanho do dado armazenado na memória de dados), enquanto que na arquitetura Harvard as instruções podem ser armazenadas em tamanhos maiores, de 12, 14 e 16 bits, sendo acessadas pelo barramento de instruções de forma independente. ------------------------- (a) ---------------------------------------------------------- (b) Figura 2. Arquitetura do microcontrolador: (a) von-Newmann; (b) Harvard Fonte: Verle (2008). Os microcontroladores de arquitetura Harvard utilizam tecnologia RISC (Reduced Instruction Set Computer – Computador com Conjunto de Instruções Reduzido). Eles possuem poucas instruções básicas, executadas tipicamente em apenas um ciclo de clock. Já os MCU de arquitetura von-Newmann, tipicamente utilizam tecnologia CISC (Complex Instruction Set Computer – Computador com Conjunto de Instruções Complexas) que usa uma grande quantidade de instruções para operar (BRAGA, 2010). 9
  • 25. 2.1.1 Exemplo de fabricantes de microcontroladores de 8 bits A seguir, serão apresentados alguns fabricantes de microcontroladores de 8 bits entre muitos existentes no mercado. Dentre as informações citadas de cada fabricante selecionado, recebem destaque a arquitetura e algumas características adotadas para a linha de microcontroladores de 8 bits produzidas pelas mesmas. National Semiconductor A National Semiconductor fabrica os microcontroladores COP8 (8-bit Control-Oriented Processor). Esses MCUs possuem uma arquitetura do tipo Harvard modificada, onde apesar da memória de dados e a memória de programa ter seus barramentos separados, essa arquitetura permite a transferência de dados da memória de programa para a memória de dados. O COP8 apresenta um número de instruções superior que os RISC puros, onde quase todas (77%) tem 1 byte de tamanho, no entanto, contém também instruções multiprogramas (realizam mais de uma tarefa e utilizam mais de um ciclo de clock), comum em arquiteturas CISC. O COP8 da família S possue até 5 portas de 8 bits de propósito geral para entrada e saída e memória ROM (Read Only Memory) que pode chegar até a 32 kbytes encapsulado em pastilhas de 28, 40 e 44 pinos. Ele também conta com periféricos internos como USART (Universal Synchronous Asynchronous Receiver Transmitter), um par de comparadores analógicos e até 3 timers de 16 bits (NATIONAL SEMICONDUCTOR, 2001). Freescale Semiconductor A Freescale, cuja matriz fica em Austin, Texas – EUA (Estados Unidos da América), autodenominada líder mundial na indústria de processadores integrados, foca tecnologias para clientes dos setores automotivo, de produtos de consumo e de comunicações. Ela apresenta uma ampla variedade de microcontroladores de 8 bits para as famílias HCS08, HC08, HC05 e HC11. A arquitetura utilizada nos microcontroladores da Freescale é do tipo von-Newmann, onde os MCUs das famílias HC05 e HC11 chegam a conter 210 instruções. Quanto aos periféricos, a família HCS08 conta com módulos de conversor A/D (Analógico/Digital), Timer/PWM (Pulse-Width Modulation), comunicação serial, além de memória de programa com capacidade de 4 kbytes à 60 kbytes e memória de dados entre 128 bytes à 4 kbytes e pode operar em frequência máxima de 40 MHz (FREESCALE SEMICONDUCTOR, 2007). 10
  • 26. Por ser fabricante do microcontrolador escolhido para realização do trabalho, a Microchip Technology recebe uma atenção diferenciada. A empresa será abordada a seguir, separadamente das que foram citadas até agora. 2.2 MICROCHIP TECHNOLOGY A Microchip Technology, fabricante dos microcontroladores PIC, é uma empresa norte americana de semicondutores, com sede em Chandler - Arizona - EUA. Tendo como foco principal a venda de dispositivos semicondutores, a empresa disponibiliza, para os desenvolvedores, softwares, documentação e bibliotecas gratuitamente, através do seu site. Em 1990, a Microchip iniciou seus negócios no Brasil, em parceria com a Artimar (representante e distribuidora de várias empresas americanas no setor de eletrônica). Hoje muitas empresas divulgam e comercializam os produtos fabricados pela Microchip, porém a Artimar mantém-se como sua representante exclusiva no país (SOUZA, 2008). 2.2.1 Famílias e grupos de microcontroladores PIC de 8 bits As famílias de microcontroladores PIC de 8 bits, fabricados pela Microchip Technology, utilizam arquitetura Harvard com tecnologia RISC, limitadas a 83 instruções de 16 bits para as de maior performance. Os MCUs podem trabalhar com frequências de até 32MHz com oscilador interno. Os PIC podem variar entre 6 pinos até 100 pinos contendo até 128 kbytes para memória de programa e 4 kbytes para memória de dados. Pode-se encontrar PIC com controladores periféricos para comunicação serial, PWM, conversor A/D e comparadores, além de outros especializados para USB (Universal Serial Bus), LCD, CAN (Controller Area Network) e Ethernet (MICROCHIP TECHNOLOGY, 2010). Os microcontroladores PIC são divididos em quatro grupos de performance, arranjados de acordo com o tamanho da instrução armazenada em memória de programa e módulos internos de hardware: Baseline (instruções de 12 bits), Mid-Range (instruções de 14 bits), Enhanced Mid- Range (instruções de 14 bits, com módulos de hardware avançados) e PIC18 (instruções de 16 bits). Na Figura 3, é apresentado um gráfico das famílias de microcontroladores PIC associados aos agrupamentos por tamanho da palavra de instrução no qual eles pertencem. 11
  • 27. Figura 3. Gráfico ilustrado da organização dos PICs em tamanho da palavra de instrução. Fonte: Microchip Technology (2010). Tendo em vista um ambiente de desenvolvimento mais flexível, a Microchip oferece características de migração entre os microcontroladores. Em geral, os MCUs de 8 bits são classificados em famílias de compatibilidade de pinos e de codificação, de modo que um PIC com um determinado número de pinos seja compatível a outro pertencente da mesma família. Desta forma, a empresa oferece maior adaptabilidade em projetos para reagir às mudanças de requisito, característica importante para sistemas embarcados (MICROCHIP TECHNOLOGY, 2010). Uma família de microcontroladores pode estar contida em diferentes grupos de performance. Assim, um MCU utilizado em um determinado projeto pode ser substituído por outro mais adequado, sem significativas mudanças no hardware e/ou software. No site do fabricante é normalmente disponibilizado um documento de migração de um microcontrolador para outro compatível com o mesmo, facilitando ainda mais a adaptação do código montado em um determinado microcontrolador para um de outro grupo contendo o mesmo número de pinos. Na Tabela 2, são apresentadas algumas características dos grupos dos PICs relacionando as famílias pertencentes a cada um deles. 12
  • 28. Tabela 2. Características dos grupos de microcontroladores PIC Palavra de 12 bits 14 bits 16 bits instrução Grupo Enhanced Baseline Mid-Range PIC18 Mid-Range Pinos 6-40 8-64 8-64 18-100 Interrupções Não possui Tratamento Tratamento único de Tratamento múltiplo tratamento de único de interrupção salvando de interrupção interrupções interrupção contexto de hardware salvando contexto de hardware Performance 5 MIPS* 5 MIPS* 8 MIPS* Até 16 MIPS* Nº de 33 35 49 83 Instruções Memória de Até 3K bytes Até 14K bytes Até 28K bytes Até 128K bytes Programa Memória de Até 134 bytes Até 368 bytes Até 1.5K bytes Até 4K bytes Dados Pilha (Stack) 2 níveis 8 níveis 16 níveis 32 níveis Módulos  Comparador Além da Além do Mid-Range: Além do Enhanced internos  8 bits A/D Baseline:  Múltipla Mid-Range:  Memória de  SPI (Serial comunicação de  Multiplicação 8x8 dados Peripheral periféricos em hardware  Oscilador Interface)/I²C  Espaço de  CAN interno  UART programação linear  CTMU (Charge  PWMs  PWMs com Time Time Measurement  LCD Base independentes Unit)  10 bits A/D  USB  Amplificador  Ethernet Operacional  12 bits A/D Destaque Menor custo Ótimo custo Custo efetivo com Alta performance, nos menores benefício em mais performance e otimização em modelos performance memória programas em C, periféricos avançados Total de 16 58 29 193 dispositivos Famílias PIC10, PIC12, PIC12F1XXX, PIC12, PIC16 PIC18 PIC16 PIC16F1XXX *MIPS: Milhões de Instruções Por Segundo Fonte: Adaptado da Microchip Technology (2010). A seguir serão apresentados alguns exemplos de microcontroladores PIC de 8 bits compatíveis pertencentes a grupos diferentes. 13
  • 29. 2.2.2 Exemplos de microcontroladores PIC de 8 bits Foram selecionados, neste estudo, quatro microcontroladores pertencentes a grupos diferentes: três da família PIC16 e um da família PIC18. Eles estão disponíveis em encapsulamentos de 18 pinos. PIC16F54 O PIC16F54 pertence ao grupo Baseline de microcontroladores PIC de 8 bits. Ele possui 33 instruções de 12 bits, 0.75 kbytes de memória de programa, 25 bytes de memória RAM (Random Access Memory) e até 12 pinos de E/S (Entrada/Saída) digital. Quanto a periféricos, ele apresenta 1 temporizador de 8 bits. O MCU pode operar em 20 MHz de clock com velocidade de 5 MIPS (MICROCHIP TECHNOLOGY, 2007). A Figura 4 apresenta o diagrama de pinos do PIC16F54. Figura 4. Diagrama simplificado dos pinos do PIC16F54. Fonte: Microchip Technology (2007). PIC16F628A O PIC16F628A pertence ao grupo Mid-Range de microcontroladores PIC de 8 bits. Ele possui 35 instruções de 14 bits, 3.5 kbytes de memória de programa, 224 bytes de memória RAM e até 16 pinos de E/S digital. Quanto a periféricos, ele apresenta 2 temporizador de 8 bits, 1 temporizador de 16 bits, memória EEPROM (Electrically-Erasable Programmable Read-Only Memory) de 128 bytes, comparador, CCP (Capture/Compare/PWM) e USART. O MCU pode operar em 20 MHz de clock com velocidade de 5 MIPS (MICROCHIP TECHNOLOGY, 2009). A Figura 5 apresenta o diagrama de pinos do PIC16F628A. 14
  • 30. Figura 5. Diagrama simplificado dos pinos do PIC16F628A. Fonte: Microchip Technology (2009). PIC16F1826 O PIC16F1826 pertence ao grupo Enhanced Mid-Range de microcontroladores PIC de 8 bits. Ele possui 49 instruções de 14 bits, 3.5 kbytes de memória de programa, 256 bytes de memória RAM e até 16 pinos de E/S digital. Quanto a periféricos, ele apresenta 2 temporizador de 8 bits, 1 temporizador de 16 bits, memória EEPROM de 256 bytes, comparador, ECCP (Enhanced Capture/Compare/PWM), USART, MSSP (Master Synchronous Serial Port), conversor A/D. O MCU pode operar em 32 MHz de clock com velocidade de 8 MIPS (MICROCHIP TECHNOLOGY, 2010). A Figura 6 apresenta o diagrama de pinos do PIC16F1826. Figura 6. Diagrama simplificado dos pinos do PIC16F1826. Fonte: Adaptado de Microchip Technology (2010). 15
  • 31. PIC18F1320 O PIC18F1320 pertence ao grupo e família PIC18 de microcontroladores PIC de 8 bits. Ele possui 77 instruções de 16 bits, 8 kbytes de memória de programa, 256 bytes de memória RAM e até 16 pinos de E/S digital. Quanto a periféricos, ele apresenta 1 temporizador de 8 bits, 3 temporizador de 16 bits, memória EEPROM de 256 bytes, ECCP, USART e conversor A/D. O MCU pode operar em 40 MHz de clock com velocidade de 10 MIPS e pode realizar multiplicação de 8 bits por 8 bits em hardware (MICROCHIP TECHNOLOGY, 2007). A Figura 7 apresenta o diagrama de pinos do PIC18F1320. Figura 7. Diagrama simplificado dos pinos do PIC18F1320. Fonte: Microchip Technology (2007). Abstraindo as funções dos pinos que não são comuns para todos, na Tabela 3 é apresentado o número da ordem do pino (primeira coluna), a descrição da função do pino compatível entre os microcontroladores citados (segunda coluna), o nome da função do pino compatível entre os microcontroladores para a família PIC16 (terceira coluna) e o nome da função do pino compatível entre os microcontroladores para a família PIC18 (quarta coluna). A descrição completa dos pinos pode ser encontrada no data sheet individual do microcontrolador disponibilizado no site do fabricante. 16
  • 32. Tabela 3. Descrição das funcionalidades dos pinos compatíveis entre os microcontroladores PIC exemplificados Nome da função Nome da função Pino Descrição da função compatível para família PIC16 para família PIC18 1 E/S digital RA2 RA0 2 E/S digital RA3 RA1 3 Entrada de clock do temporizador 0 T0CKI T0CKI Entrada do sinal de reset MCLR MCLR 4 Entrada de tensão para modo programação VPP VPP 5 Aterramento do chip VSS VSS 6 E/S digital RB0 RA2 7 E/S digital RB1 RA3 8 E/S digital RB2 RB0 9 E/S digital RB3 RB1 10 E/S digital RB4 RB4 11 E/S digital RB5 RB5 E/S digital RB6 RB6 12 Entrada do clock de programação ICSPTM ICSPCLK* PGC E/S digital RB7 RB6 13 Entrada do dados de programação ICSPTM ICSPDAT* PGD 14 Alimentação do chip VDD VDD 15 Saída para oscilador externo OSC2/CLKOUT OSC2/CLKO 16 Entrada para oscilador externo OSC1/CLKIN OSC1/CLKI 17 E/S digital RA0 RB2 18 E/S digital RA1 RB3 Fonte: Adaptado de Microchip Technology (2007), Microchip Technology (2009), Microchip Technology (2010) e Microchip Technology (2007). Compatibilidade entre PICs Observa-se que os microcontroladores PIC, com o mesmo número de pinos, pertencentes a mesma família, são fortemente compatíveis. Um MCU compatível com outro familiar, porém de um grupo mais avançado, mantém a funcionalidade primária do pino associando novas funcionalidades relativas ao grupo de evolução. No caso do microcontrolador da família PIC18 e os da família PIC16, em alguns casos, eles são fracamente compatíveis, onde o hardware pode ser mantido, mas a codificação da arquitetura é alterada. Se levado em consideração esses aspectos, pode-se realizar a troca de um microcontrolador em um projeto por outro mais adequado sem grandes mudanças no hardware de um sistema computacional qualquer. Em geral, a compatibilidade dos pinos entre os microcontrolador PIC é identificada nos pinos de E/S digital, alimentação e aterramento do chip, além dos pinos para as funções de reset, 17
  • 33. oscilador externo e as relacionadas à gravação do microcontrolador. Por conter essa característica, o PIC tornou-se a escolha de microcontrolador para o trabalho proposto. Com exceção do PIC16F54, os microcontroladores citados podem ser encontrados em encapsulamentos de 18, 20 e 28 pinos. A diferença básica entre os encapsulamentos de 18 e o de 20 pinos, está na presença de mais um pino para aterramento e mais um pino para alimentação do chip. A diferença entre os encapsulamentos de 20 e 28 pinos, está na presença de pinos que não exercem conexão chamados de NC (No Connect). Esses diferentes encapsulamentos possíveis para os microcontroladores citados serão abordados a seguir. 2.2.3 Encapsulamento Dentre os tipos de encapsulamentos disponibilizados pela Microchip, são brevemente apresentados os tipos QFN (Quad Flat, No Lead Package), SOIC (Small Outline Plastic Packages), SSOP (Shrink Small Outline Packages) e PDIP (Plastic Dual In-Line Packages). Esses são os tipos de encapsulamento mais comuns entre os microcontroladores PIC de 8 bits. QFN O encapsulamento QFN pode ser encontrado em circuitos integrados com 16, 20, 24, 28, 40, 44, e 64 pinos. Possui um formato quadrangular com tamanho de largura e altura que podem variar de 3mm até 9mm com a espessura mantendo-se em 0.9mm. Os pinos são situados na parte inferior do chip, com largura entre 0.20mm e 0.38mm, altura entre 0.35mm e 0.55mm e espessura constante em 0.20mm para tamanhos normais dos contatos (MICROCHIP TECHNOLOGY, 2010). Na Figura 8, pode-se visualizar um chip em encapsulamento QFN. Figura 8. Vista em perspectiva do encapsulamento QFN em um chip com 28 pinos. Fonte: Digi-Key (2010). 18
  • 34. SOIC Os circuitos integrados em encapsulamentos SOIC podem ser encontrados com 8, 14, 16, 18, 20, 24 e 28 pinos. Com formato retangular, a largura do chip pode variar de 4.90mm até 17.90mm, sendo encontrado tanto com altura de 3.90mm e espessura 1.25mm, quanto com 7.50mm de largura e 2.05mm de espessura. Os pinos são situados nas laterais do chip, sendo eles levemente curvados para soldagem na superfície da placa. Para todos os tamanhos dos chips, a largura, altura e espessura dos pinos têm tamanho mínimo de 0.31mm, 1.04mm e 0.17mm, respectivamente, e máximo de 0.51mm, 1.40mm e 0.25mm, respectivamente. As dimensões do chip variam de acordo com o número de pinos do circuito integrado (MICROCHIP TECHNOLOGY, 2010). Na Figura 9, pode-se visualizar um chip em encapsulamento SOIC. Figura 9. Vista em perspectiva do encapsulamento SOIC em um chip com 28 pinos. Fonte: Digi-Key (2010). SSOP O encapsulamento SSOP está disponível em 20, 24 e 28 pinos. A estrutura do chip é semelhante ao encapsulamento SOIC, porém o chip mantém a altura entre 5.00mm e 5.60mm e a espessura entre 1.65mm e 1.85mm independente da quantidade dos pinos. A variação de pinos altera apenas a largura, variando entre 6.90mm, tamanho mínimo para 20 pinos, até 10.50mm, tamanho máximo para 28 pinos. Quanto aos pinos, a largura permanece entre 0.22mm e 0.38mm, a altura é fixa em 1.25mm e a espessura fica em torno de 0.09mm e 0.25mm também independente da quantidade no encapsulamento (MICROCHIP TECHNOLOGY, 2010). Na Figura 10, encontra-se um chip em encapsulamento SSOP. 19
  • 35. Figura 10. Vista em perspectiva do encapsulamento SSOP em um chip com 28 pinos. Fonte: Digi-Key (2010). PDIP O encapsulamento PDIP é comumente observado em circuitos integrados utilizados para prototipação devido à facilidade de utilização em protótipos montados em placas protoboard. Assim como os encapsulamentos SOIC e SSOP, também possui uma estrutura retangular, porém os pinos são retilíneos e rígidos semelhantes a um “prego achatado”, tendo em vista o encaixe do chip em superfícies perfuradas. Na Figura 11, pode-se observar um circuito integrado em encapsulamento PDIP. Figura 11. Vista em perspectiva do encapsulamento PDIP em um chip com 28 pinos. Fonte: Digi-Key (2010). São encontrados microcontroladores com 8, 14, 16, 18, 20, 24, 28, 40 e 64 pinos neste encapsulamento. Independente do número de pinos, a haste perfurante dos pinos varia entre 0.34mm e 0.56mm de largura, 2.54mm e 5.8mm de altura e 0.20mm e 0.38mm de espessura, excluindo a “cabeça” do pino. A distância de uma haste do pino à outra é de 2.54mm. O corpo do 20
  • 36. chip pode variar bastante na largura com o aumento do número de pinos, permanecendo entre 8.84mm (tamanho mínimo para 8 pinos) e 57.91mm (tamanho máximo para 64 pinos), na altura varia em 6.10mm (tamanho mínimo até 20 pinos) e 17.53mm (tamanho máximo em 64 pinos) e na espessura mantém-se entre 2.92mm e 4.95mm (MICROCHIP TECHNOLOGY, 2010). Na Figura 12, observam-se as dimensões 37.40mm, para largura, e 13.53mm, para altura, de um chip de encapsulamento PDIP. A Figura 13 apresenta as dimensões 0.46mm, para largura, e 3.30mm, para altura, da haste perfurante do pino e as medidas das espessuras do corpo, com 3.30mm, e do pino, com 0.25mm, do circuito integrado. Figura 12. Vista superior do encapsulamento PDIP em um chip com 28 pinos. Fonte: Adaptado da Microchip Technology (2010). (a) (b) Figura 13. (a) Vista lateral e (b) vista frontal do encapsulamento PDIP em um chip com 28 pinos. Fonte: Adaptado da Microchip Technology (2010). Tendo em vista a utilização em laboratório do produto gerado deste trabalho, procurou-se selecionar um microcontrolador pertencente ao grupo de maior performance dos microcontroladores PIC de 8 bits. Além disso, o MCU da família PIC18 deve ser de manuseio simplificado, possibilitando a troca de microcontrolador em um soquete correspondente ao seu encapsulamento. Com essas premissas, o microcontrolador escolhido foi o PIC18F4520 em encapsulamento PDIP. Alguns de seus recursos serão apresentados na seção seguinte. 21
  • 37. 2.3 MICROCONTROLADOR PIC18F4520 O PIC18F4520 pertence ao grupo e família de microcontroladores de 8 bits PIC18, de maior performance entre as famílias de 8 bits da Microchip. Ele possui um conjunto de 83 instruções RISC de 16 bits. A seguir, o microcontrolador é apresentado de forma mais detalhada, inicialmente, com as características da estrutura externa e interna do MCU em encapsulamento PDIP e após, são apresentados seus recursos básicos e avançados considerados relevantes ao trabalho. 2.3.1 Estrutura externa O microcontrolador PIC18F4520 em encapsulamento PDIP de 40 pinos é ilustrado na Figura 14. Com exceção dos pinos dedicados a alimentação e aterramento do microcontrolador, são atribuídas mais de uma função para os pinos do PIC18F4520 conforme apresentada na Tabela 22 contido no Anexo I (MICROCHIP TECHNOLOGY, 2008). --- Figura 14. Diagrama dos pinos do PIC18F4520 em encapsulamento PDIP de 40 pinos. Fonte: Adaptado de Microchip Technology (2008). 2.3.2 Estrutura interna Internamente, o PIC18F4520 assume a arquitetura Harvard, com a unidade central de processamento (CPU – Central Processing Unit) acessando a memória de programa e memória de dados em barramentos distintos. Acompanhando o barramento de dados, estão os conjuntos de 22
  • 38. portas A, B, C, D e E de comunicação digital externa, a memória de dados EEPROM, entre outros elementos do MCU. Na Figura 15 é apresentada a estrutura interna do microcontrolador. Figura 15. Estrutura interna do microcontrolador PIC18F4520. Fonte: Adaptado de Microchip Technology (2008). 23
  • 39. 2.3.3 Recursos de hardware Entre os recursos básicos do MCU, estão os módulos presentes em alguns PIC do grupo de menor performance: oscilador, watchdog timer, reset, memória de dados, memória de programa, conjunto de instruções e portas de E/S. Eles são os elementos principais para o funcionamento do microcontrolador e serão abordados de forma simplificada nos itens seguintes. Oscilador O clock é quem dá o ritmo de operação do microcontrolador. Um oscilador determina a velocidade com que o clock do microcontrolador opera (BRAGA, 2010). Quanto maior a frequência de oscilação, maior será o número de instruções executada em um determinado período. Não existe uma fórmula para a escolha do oscilador ideal para o projeto, porém a escolha do tipo deve atender primeiramente ao requisito de eficácia (funcionar corretamente conforme a especificação inicial) e, em segundo, o requisito de custo (ZANCO, 2007). O PIC18F4520 possui um módulo oscilador interno, que está calibrado para operar em 8 MHz, porém, com um circuito oscilador externo, a frequência de oscilação pode chegar á 40 MHz com utilização de cristais osciladores. Nessa caso, existe o viés da utilização exclusiva das portas de entrada e saída (RA6 e RA7) para conexão do oscilador (MICROCHIP TECHNOLOGY, 2008). A Figura 16 apresenta dois circuitos osciladores externos, um formado por circuito RC (Resistor Capacitor) e outro formado por um cristal oscilador ou ressonador, ligado ao microcontrolador. Os valores para os capacitores são sugeridos pela Microchip no data sheet do componente. (a) (b) Figura 16. Oscilador externo por (a) circuito RC, (b) cristal/ressonador. Fonte: Adaptado de Microchip Technology (2008). 24
  • 40. A frequência gerada pelo oscilador, dá origem ao ciclo de máquina do microcontrolador. Nos microcontroladores PIC, esse ciclo é equivalente a um quarto da frequência de operação (ZANCO, 2007). Souza (2008, p. 24) acrescenta que a divisão do ciclo de máquina forma quatro fases (Q1, Q2, Q3 e Q4), O program counter é incrementado automaticamente na fase Q1 do ciclo de máquina e a instrução seguinte é buscada da memória de programa e armazenada no registrador de instruções no ciclo Q4. Ela é decodificada e executada no próximo ciclo, no intervalo de Q1 até Q4. Essa característica de buscar a informação num ciclo de máquina e executá-la no próximo é conhecida como PIPELINE. O pipeline torna o sistema muito mais rápido, permitindo que quase todas as instruções sejam executadas em apenas um ciclo de máquina. A exceção fica por conta das instruções de “salto” no registrador PC (program counter) que contém o endereço da próxima instrução a ser buscada. A arquitetura Harvard dos PIC permite que esse recurso seja implementado facilmente, devido à separação dos barramentos de instrução e de dados (ZANCO, 2007). Watchdog Timer (WDT) O WDT consiste em com contador de 16 bits que possui um oscilador próprio, independente do oscilador principal, utilizado para monitorar a execução do software gravado no microcontrolador, sendo inacessível ao programador tanto para escrita, quanto para leitura. Quando o contador incrementa o valor máximo armazenado no registrador WDT (0xFF), retornando ao valor mínimo (0x00), o MCU é imediatamente reinicializado, caso esteja operando em condições normais, ou acordado, caso esteja em modo de espera ativado pela instrução SLEEP. Essa condição é identificada como estouro do watchdog (SOUZA, 2008). Zanco (2007, p. 112) afirma que “a principal função do WDT é proteger o sistema contra possíveis travamentos, fazendo com que o sistema resete e volte a funcionar”. Normalmente, o PIC18F4520 mantém o período de 4ms por incremento no contador WDT levando 1.02s para estourar, porém, com postscale (escala de estouro por voltas realizada pelo contador) de 1 para 128, pode chegar à 2.18 minutos. A única forma de evitar o estouro do watchdog é através das instruções CLRWDT (Clear Watchdog Timer), no qual o registrador WDT é zerado, evitando que ele estoure (MICROCHIP TECHNOLOGY, 2008). 25
  • 41. Reset O reset é o mecanismo de inicializar ou reinicializar o funcionamento do microcontrolador. Quando o reset é acionado, o MCU volta a executar as instruções a partir do endereço 0x00. Esse desvio pode ocorrer em algumas situações durante a operação normal, tais como: quando o chip é ligado (POR – Power-on Reset), quando há uma queda na tensão de alimentação do chip (BOR – Bourn-out Reset), quando acionado o sinal de reset externo (o pino MCLR atinge o nível baixo de tensão), quando o software força um desvio para o endereço 0x00 (pode ser realizado pela instrução GOTO) e quando ocorre um estouro do watchdog timer (ZANCO, 2007). O PIC18F4520 possui um módulo dedicado para essa funcionalidade, porém ela pode ser implementada em um circuito externo acoplado ao pino MCLR, desabilitando esse recurso. Desta forma, o pino pode ser usado para entrada e saída de dados digital (RE3). O POR mais básico pode ser implementado ligando o pino MCLR, quando habilitado, diretamente na alimentação do chip (SOUZA, 2008). Na Figura 17, são ilustrados dois circuitos externos, POR e BOR, associados ao pino MCRL do microcontrolador. (a) (b) Figura 17. Circuito de reset externo (a) POR e (b) BOR. Fonte: Adaptado de Souza (2008) e Zanco (2007). Memória de dados O grupo PIC18 possui dois tipos de memória de dados, ambas capazes de armazenar um dado de 8 bits: a memória de dados RAM, volátil (mantem os dados armazenados somente enquanto estiver energizado), e a memória de dados EEPROM, não-volátil (mantém os dados 26
  • 42. mesmo depois do chip desligado). É na RAM que são armazenadas as variáveis e registradores de finalidades especiais (SFR – Special Function Registers) utilizados no programa. Por outro lado, a EEPROM é utilizada para armazenar dados ou configurações que precisam ser mantidos e/ou recuperados após um desligamento do microcontrolador (SOUZA, 2008). O PIC18F4520 possui uma memória RAM de 4096 bytes (apenas 1536 bytes são usados), divididos em 16 bancos de 256 bytes, endereçáveis por 12 bits, sendo que os 4 bits mais significativos identificam o banco que será acessado (BSR – Bank Select Register), enquanto que os 8 bits menos significativos identificam o endereço de memória do banco que será acessado (MICROCHIP TECHNOLOGY, 2008). Na Figura 18, é apresentado o mapa da memória de dados do PIC18F4520. Figura 18. Mapa da memória de dados do PIC18F4520. Fonte: Adaptado de Microchip Technology (2008). 27
  • 43. Deve-se evitar o acesso aos primeiros 128 bytes da memória RAM, pois são neles que estão contidos os registradores de manipulação da Unidade Lógica Aritmética (ULA) e de configuração do microcontrolador, por exemplo, o program counter. Os 128 bytes subsequentes do banco 0 e os 256 bytes dos bancos 1 ao 5, são os registradores de propósito geral (GPR – General Purpose Register) usados para armazenamento de dados de operações do programa. Utiliza-se os 6 primeiros bancos de memória RAM para calcular a capacidade total de armazenamento do PIC18F4520, sendo 1536 bytes. Os bancos 6 ao 14 e os primeiros 128 bytes do banco 15 não foram implementados; sempre que forem lidas essas memórias, será atribuído valor 0 (zero) ao retorno e a escrita nas mesmas é ignorada. Nos últimos 128 bytes do banco 15 da memória RAM estão contidos os SFR que e são usados pela CPU e módulos periféricos para controle de operações do dispositivo (MICROCHIP TECHNOLOGY, 2008). A memória de dados EEPROM, além de ter menor velocidade de leitura/escrita do que a memória RAM, necessita dos SFRs para operações de leitura e escrita: EEADR (EEPROM Address Register), registrador que recebe o endereço da memória que será lida ou escrita; EEDATA (EEPROM Data Register), registrador que recebe o dado que será lido ou escrito de um determinado endereço; EECON1 (EEPROM Control Register), registrador de controle, dá início aos ciclos de leitura e escrita; EECON2, registrador de controle que armazena, obrigatoriamente, uma sequência de valores (0x55 e 0xAA) para dar início ao processo de gravação. (ZANCO, 2007). É possível armazenar até 256 bytes na memória EEPROM interna do PIC18F4520. Para ler um dado de determinado endereço da EEPROM, deve-se escrever o endereço no registrador EEADR (entre 0x00 e 0xFF), limpar o bit EEPGD (Flash Program or Data EEPROM Memory Select bit) do registrador EECON1 (bit 7), limpar o bit CFGS (Flash Program/Data EEPROM or Configuration Select bit) do registrador EECON1 (bit 6) e habilitar o bit RD (Read Control bit) do registrador EECON1 (bit 0) (MICROCHIP TECHNOLOGY, 2008). Na Figura 19, é apresentado um exemplo de leitura de um dado da EEPROM. MOVLW 0x33 ; registrador W recebe valor 0x33 MOVWF EEADR ; registrador EEADR recebe endereço que será lido BCF EECON1, EEPGD ; habilita acesso à memória de dados BCF EECON1, CFGS ; habilita acesso à EEPROM BSF EECON1, RD ; EEDATA recebe conteúdo do endereço MOVF EEDATA, W ; registrador W recebe valor de EEDATA Figura 19. Leitura do dado do endereço 0x33 da EEPROM e escrita em W (Working Register). Fonte: Adaptado de Microchip Technology (2008). 28
  • 44. Para escrever um dado em um determinado endereço da EEPROM, deve-se escrever o endereço, da EEPROM, que o dado será armazenado no registrador EEADR, escrever o valor do dado no registrador EEDATA, limpar o bit EEPGD do registrador EECON1 (bit 7), limpar o bit CFGS do registrador EECON1 (bit 6), habilitar o bit WERN (Flash Program/Data EEPROM Write Enable bit) do registrador EECON1 (bit 2), desabilitar as interrupções (recomendação do fabricante), realizar a sequência de gravação do registrador EECON2, habilitar as interrupções (se for desabilitada) e limpar o bit WERN do registrador EECON1 (MICROCHIP TECHNOLOGY, 2008). Na Figura 20, é apresentado um exemplo de escrita de um dado na EEPROM. MOVLW 0x33 MOVWF EEADR MOVLW 5 MOVWF EEDATA BCF EECON1, EEPGD BCF EECON1, CFGS BSF EECON1, WREN ; habilita escrita BCF INTCON, GIE ; desabilita interrupções MOVLW 0x55 ; MOVWF EECON2 ; Sequência de gravação do registrador ECON2 MOVLW 0xAA ; MOVWF EECON2 ; BSF EECON1, WR ; inicia gravação BSF INTCON, GIE ; habilita interrupções BCF EECON1, WREN ; desabilita escrita com a gravação completada Figura 20. Escrita do valor 5 no endereço 0x33 da EEPROM. Fonte: Adaptado de Microchip Technology (2008). Memória de programa A memória de programa do PIC18F4520 é do tipo Flash, podendo ser gravados milhares de vezes, sem a necessidade de apagar a gravação anterior. Os microcontroladores que possuem a memória de programa desse tipo, são considerados a melhor opção para testes de programas e implementação final de projetos (ZANCO, 2007). Souza (2008, p. 27) acrescenta que os MCUs desse tipo “são muito mais fáceis de trabalhar para o desenvolvimento do sistema, mas, por outro lado, são muito mais caros para uma fabricação em série”. 29
  • 45. O PIC18F4520 possui 32 kbytes de memória de programa Flash, podendo armazenar 16.384 palavras de instrução, de 16 bits cada. O registrador program counter é implementado em 21 bits, podendo endereçar até 2 Mbytes de memória, porém o acesso à memória de programa não implementada fisicamente retornará sempre valor 0 (zero). Ele ainda conta com uma pilha de 31 níveis ligada diretamente ao registrador PC, um vetor de reset contido no endereço 0x0000, um vetor de interrupções de alta prioridade contido no endereço 0x0008 e um vetor de interrupções de baixa prioridade no endereço 0x0018 (MICROCHIP TECHNOLOGY, 2008). Na Figura 21, é apresentada a estrutura do mapa da memória de programa do PIC18F4520. Figura 21. Estrutura do mapa da memória de programa do PIC18F4520. Fonte: Adaptado de Microchip Technology (2008). 30
  • 46. Conjunto de instruções Algumas das instruções do PIC18F4520 já foram citadas anteriormente, porém sua funcionalidade não foi descrita. Como definição, Zanco (2007, p. 53) afirma que, As instruções são constituídas por um conjunto de bits, que ficam armazenados na memória de programa do microcontrolador. Esses bits são lidos na memória de programa, são decodificados para serem acionadas as variáveis de controle internas ao sistema, para que a operação correspondente à instrução seja executada. O PIC18F4520 incorpora 75 instruções padrão do núcleo de instruções do grupo PIC18, contando ainda com mais 8 instruções de extensão (otimização de códigos ou de utilização da pilha de software) usadas para gravação da memória de programa. Ao todo, 83 instruções formam o seu conjunto de instruções, onde a maioria delas ocupa o espaço de uma única palavra de 16 bits da memória de programa, sendo que apenas quatro instruções necessitam de 32 bits. Em geral, todas as instruções, que ocupam uma palavra da memória de programa, são executadas em um único ciclo de máquina, exceto as instruções de teste condicional verdadeiro ou quando o program counter é alterado devido ao resultado da instrução, no qual necessitam de dois ciclos de máquina para serem executadas (MICROCHIP TECHNOLOGY, 2008). As instruções de núcleo do PIC são agrupadas em quatro categorias: operações orientadas a byte, operações orientadas a bit, operações literais e operações de controle (MICROCHIP TECHNOLOGY, 2008). Na Tabela 23, Tabela 24, Tabela 25 e Tabela 26 do Anexo II são apresentadas brevemente a descrição das instruções reconhecidas pelo montador assembler da Microchip (MPASMTM). Portas de E/S É através das portas de E/S que se podem realizar interações homem-máquina e/ou máquina- máquina, desenvolvendo uma comunicação entre o microcontrolador e outros dispositivos associados. A resposta de um MCU às ações externas pode ser observada desde um simples acender de um led até a escrita de uma frase em um display LCD. Por sua vez, essas ações podem ser realizadas a partir de um botão aplicando uma mudança no nível lógico de uma porta, por exemplo. As portas do PIC são bidirecionais, ou seja, podem ser configuradas tanto para entrada quanto para saída de informação. Para que o microcontrolador possa identificar a direção dos dados, deve-se configurar o registrador TRIS correspondente ao conjunto de pinos da porta do MCU. Souza (2008, p. 42) destaca que “quando é colocado ‘1’ em um bit do TRIS, o pino relacionado a 31
  • 47. ele é configurado como entrada. Para configurar o pino como saída, você deve escrever ‘0’ no bit relacionado”. Tanto a operação de leitura, quanto a de escrita, podem ser feitas em conjunto, operando com todos os pinos da porta de uma só vez, ou individualmente, operando com um único pino da porta de cada vez (bit a bit). Zanco (2007, p. 56) acrescenta que, Quando escrevemos um valor em um PORT no qual nem todos os bits estejam configurados como saída, os níveis lógicos nos bits que estão configurados como entrada são desprezados, prevalecendo o respectivo nível lógico aplicado pelo hardware em cada pino configurado como entrada. Porém, mesmo que o nível lógico do pino não seja alterado, a mudança de estado em uma operação de escrita é identificada e armazenada em um registrador temporário da porta (LAT). Assim, caso o TRIS correspondente à porta alterada seja posteriormente configurado como saída, a porta assume imediatamente o nível lógico armazenado temporariamente (SOUZA, 2008). Na Figura 22, é representado um código onde, inicialmente, é realizada a leitura de todos os bits da porta A (PORTA) e, em seguida, é atribuído nível lógico “1” apenas para o bit 0 da mesma porta (RA0). MOVLW 0Fh MOVWF TRISA ; TRISA configura todas os bits de PORTA como entrada MOVF PORTA, 0 ; Working register recebe a leitura do PORTA NOP BCF TRISA, 0 ; TRISA muda configuração do bit RA0 para saída BSF PORTA, 0 ; passa para nível lógico "1" o bit RA0 do PORTA Figura 22. Exemplo de leitura e escrita no PORTA. Fonte: Adaptado de Microchip Technology (2008). O PIC18F4520 possui um conjunto de cinco portas, onde a cada uma delas está associado um registrador TRIS e um registrador temporário LAT. Somados, os pinos das portas do MCU podem chegar a 36 pinos de E/S assim distribuídas: 8 para PORTA (RA0 até RA7), 8 para PORTB (RB0 até RB7), 8 para PORTC (RC0 até RC7), 8 para PORTD (RD0 até RD7) e 4 para PORTE (RE0 até RE3). Como os pinos das portas também podem ser configurados para realizar outras funções, na leitura é atribuído o valor 0 (zero) para o bit do PORT, quando não estão trabalhando como E/S digital (MICROCHIP TECHNOLOGY, 2008). O PORTB possui um circuito de pull-up interno, no qual assume nível lógico “0” automaticamente quando configurado como saída. Além disso, quatro de seus pinos (RB4 ao RB7) tem recurso de interrupção de mudança de estado, mas para isso necessitam estar configurados como entrada, onde a leitura atual é comparada com a última leitura realizada na porta. Esse 32
  • 48. mecanismo de memorização é dado pelo registrador temporário LATB, o qual armazena o valor da última leitura feita no PORTB (MICROCHIP TECHNOLOGY, 2008). Interrupções Zanco (2007, p. 103) define que “uma interrupção é um evento de hardware que, quando ocorre, provoca um desvio no programa, para que o evento seja tratado”. A ocorrência desse evento interrompe o programa imediatamente, guardando o endereço da próxima instrução a ser executada. Em seguida, o programa é desviado para um endereço fixo da memória de programa, onde está armazenada a função de tratamento. Finalizada a rotina que trata a interrupção gerada, o programa torna a executar a partir da instrução do endereço armazenado anteriormente (SOUZA, 2008). Além das interrupções de mudança de estado dos bits do PORTB, existem outras fontes de interrupções do PIC18F4520, tais como: interrupção por estouro do temporizador, interrupções externas nos pinos INT e interrupções geradas por periféricos. Em sua maioria, são classificadas como interrupções de alta ou baixa prioridade. As interrupções estão alocadas nos endereços 0x0008 (para interrupções de alta prioridade) ou 0x0018 (para interrupções de baixa prioridade). Uma interrupção de alta prioridade pode interromper outra de baixa prioridade durante o processo de execução da mesma. São usados dez registradores para controlar as operações de interrupção (MICROCHIP TECHNOLOGY, 2008):  Reset Control Register (RCON): registrador que identifica a causa do último reset ou despertar (saída do modo SLEEP) ocorrido no microcontrolador;  Interrupt Control Register (INTCON, INTCON2 e INTCON3): registradores que habilitam ou desabilitam as interrupções globais;  Peripheral Interrupt Request Register (PIR1 e PIR2): registradores que identificam interrupções ocasionadas por um periférico específico;  Peripheral Interrupt Enable Register (PIER1 e PIER2): registradores que habilitam ou desabilitam interrupções ocasionadas por um periférico específico; e  Peripheral Interrupt Priority Register (IPR1 e IPR2): registradores que atribuem prioridade alta ou baixa para as interrupções ocasionadas por um periférico específico. Em geral, as interrupções possuem três bits que controlam suas operações: Flag bit, indica qual evento de interrupção ocorreu; Enable bit, permite desviar a execução do programa para o 33