O documento descreve o desenvolvimento de um kit modular de hardware baseado em microcontrolador PIC para ensino e pesquisa de sistemas embarcados. O kit é composto por vários módulos comunicando-se através de barramento I2C, incluindo um controlador central PIC18F4520, módulos de motor de passo, teclado matricial e display LCD. O documento apresenta os requisitos, a arquitetura, a implementação virtual e física do kit, além dos custos envolvidos no projeto.
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
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
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