View
222
Download
0
Category
Preview:
Citation preview
Sistemas Microcontrolados
Introdução aos Microcontroladores PIC
Prof. Sergio F. Ribeiro
Ciência da Computação
Microcontroladores e Robótica - FACAPE
Microprocessadores
� Os microprocessadores são circuitos integrados compostos por diversas portas lógicas que realizam operações matemáticas e lógicas diversas.
� Os sistemas microprocessados são compostos de dispositivos separados: microprocessador, memória, interface de entrada e saída (compostas por transistores, acopladores ópticos, etc).
� Mas por que não incluir todos estes dispositivos em um encapsulamento?
2
Microcontroladores e Robótica - FACAPE
Microcontroladores� A união das memórias com os microprocessadores
possibilitou o advento dos microcontroladores.� Um microcontrolador é um chip que contém praticamente
um pequeno computador embutido, de baixo custo, com:� núcleo de processamento� memórias RAM, ROM e Flash� periféricos de E/S� conversores de sinais� gerador de clock, entre outros.
� Os microcontroladores devem possuir uma interface com o ambiente externo para que o desenvolvedor de hardware possa realizar operações diversas, como ligar um relé, acender um LED, ler um sensor, etc.
3
Microcontroladores e Robótica - FACAPE
Microcontroladores
� Microcontroladores são dispositivos voltados a sistemas embarcados e aplicações específicas, ao contrário dos μPs, destinados a PCs e aplicações de uso geral.
� Principais razões da integração das memórias aos μCs:� redução do número de pinos do encapsulamento.� redução dos custos com componentes externos.� diminuição das dimensões da montagem.� simplificação do circuito de aplicação.
� Porém, tal integração tem como desvantagem:� limitação da complexidade do programa embarcado, devido ao
tamanho reduzido da memória nos μCs.
4
Microcontroladores e Robótica - FACAPE
Microcontroladores� O microcontrolador é programável ⇒ toda a lógica de
operação é estruturada na forma de um programa e gravada dentro do componente.
� Os µCs não possuem, geralmente, um sistema operacional.� Os programas rodam diretamente no chip.� O software que roda no µC é chamado de firmware.� O software é programado em linguagens C ou Assembly na
maior parte dos casos.� A programação é feita com o uso de ferramentas instaladas
em um PC (IDE).� Um compilador é usado para compilar programas em C, e
são conhecidos como cross-compiler (PC → µC).5
Microcontroladores e Robótica - FACAPE
Microcontroladores
� O microcontrolador é provido internamente de memória de programa, memória de dados, portas de I/O, timers, contadores, comunicação serial, PWMs, conversores analógico-digitais, etc.
� Toda vez que o microcontrolador for alimentado, o programa interno (firmware) será executado.
� Atualmente, muitos equipamentos de nosso uso diário (eletrodomésticos, vídeo-players, alarmes, celulares, brinquedos, etc.) utilizam microcontroladores para execução de suas funções básicas.
6
Microcontroladores e Robótica - FACAPE
Arquitetura Básica de um Microcontrolador
7
Microcontroladores e Robótica - FACAPE
Aplicações Típicas� Tipicamente, μCs são usados no controle de:
� periféricos de informática� eletrônicos de consumo� sistemas de supervisão� instrumentação� automação� robótica
8
Microcontroladores e Robótica - FACAPE
Marcas de Microcontroladores� Algumas marcas e modelos:
� ATMEL: ATMEGA, AT91, AT90;� INTEL: MCS51 ou 8051 (vários fabricantes fabricam este modelo,
mas a Intel foi a primeira a produzi-lo, em 1977);� Microchip: PIC, DSPIC.� Freescale (Motorola): 68HC, MPC.� Texas Instruments: MSP430, TMS370
Microchip
9
Os Microcontroladores PIC
� Os PIC, ou PICmicro, são microcontroladores fabricados pela empresa americana Microchip Technologies.
� Atualmente, a Microchip é uma das maiores fabricantes mundiais de microcontroladores de 8 bits.
� Em 2016, a Microchip adquiriu a Atmel (produz µC Atmega do Arduino) por cerca de 4 bilhões de dólares.
� PIC é uma sigla para “Programmable Interface Controller”e origina-se no início dos anos 80, quando foi concebido para operar como interface controladora de periféricos.
� Núcleo composto por uma máquina RISC:� as versões mais simples tem apenas 33 instruções.� memória segue a arquitetura Havard.
Microcontroladores e Robótica - FACAPE 10
Microcontroladores e Robótica - FACAPE
� Os microcontroladores PIC apresentam uma estrutura interna do tipo Havard, enquanto muitos µC tradicionais (ex: 8051, ATMega) possuem arquitetura de Von-Neumann.
� A diferença está na forma como os dados e o programa são processados pelo microcontrolador.
� Arquitetura Von-Neumann ⇒ existe apenas um barramento interno por onde passam as instruções e os dados.
� Arquitetura Havard ⇒ existem dois barramentos internos (um de dados e outro de instruções).
� Nos µC PIC, o barramento de dados é sempre de 8 bits, e o de instruções pode ser de 12, 14, 16 ou 32 bits, depen-dendo do modelo do PIC.
Arquitetura Havard x
Arquitetura Von Neumann
11
Microcontroladores e Robótica - FACAPE
Arquitetura Havard x
Arquitetura Von NeumannArquitetura Von-Neumann:
Arquitetura Havard:
12
Os Microcontroladores PIC
Família de Microcontroladores PIC:
Microcontroladores e Robótica - FACAPE 13
Os Microcontroladores PIC
Os Microcontroladores PIC de 8 bits
� São mais de 300 uCs, reunindo desde os mais simples e pequenos (6 pinos) a dispositivos de alta gama, com maior poder de processamento, periféricos e interfaces, chegando a 100 pinos.
� Dividem-se em 4 categorias, de acordo com a complexidade da aplicação a que se destinam:� Baseline� Mid-Range� Enhanced Mid-Range� PIC18
Microcontroladores e Robótica - FACAPE 14
Os Microcontroladores PICPIC 8-bits: Memória de Programa vs N° de Pinos
Microcontroladores e Robótica - FACAPE 15
Estrutura Interna – PIC16F628A
� ULA diretamente ligada ao registrador W.
� Memória de programa.
� Memória de dados (RAM).
� Portas com todos os seus pinos de I/O.
� Os periféricos, tais como:EEPROM, timers, comparador interno,módulo CCP e a porta serial.
� O registrador de status.
� O contador de programa (PC).
� Circuitos internos de reset, osciladores,Watchdog Timer (WDT), Power-upe Brown-out internos.
Microcontroladores e Robótica - FACAPE 16
Microcontroladores e Robótica - FACAPE
Pinagem do PIC16F628A� O PIC16F628A possui 18 pinos divididos em terminais de
alimentação, de reset, de conexão com o oscilador e os terminais de portas e periféricos.
Como o µC possui diversas característi-cas e um pequeno número de terminais, muitos terminais possuem mais de uma função.
17
Microcontroladores e Robótica - FACAPE
Funções dos Pinos
18
Microcontroladores e Robótica - FACAPE
Funções dos Pinos
19
Microcontroladores e Robótica - FACAPE
Funções dos Pinos
20
Microcontroladores e Robótica - FACAPE
O PIC16F628A
� O PIC16F628A apresenta as seguintes características:� 18 pinos no total, sendo 16 de I/O� frequência máxima de operação: 20MHz� memória de programa: 2k words (2048 x 14)� memória de dados: 224 bytes (224 x 8)� memória EEPROM: 128 bytes (128 x 8)� comunicação serial: USART� 10 fontes de interrupção� 3 timers (2 x 8 bits, 1 x 16 bits)� 2 comparadores analógicos� 1 módulo CCP (capture, compare, PWM)� 35 instruções de máquina
21
Microcontroladores e Robótica - FACAPE
Ciclos de Máquina� Nos µC PIC, o sinal de clock é internamente dividido por 4.� Para um clock externo de 4MHz, temos um ciclo interno de
1 MHz e, portanto, cada ciclo de máquina dura 1 µs.� A divisão do clock por 4 forma as fases Q1, Q2, Q3 e Q4.� Basicamente Q1 envolve a busca de instrução, Q2 a
decodificação de instrução, Q3 a execução de instrução e Q4 a escrita do resultado.
� Esse processamento por fases é conhecido como execução em pipeline.
� Isso permite que todas as instruções sejam executadas em apenas um ciclo (gasta 1us para um clock de 4MHz) e torna o sistema muito mais rápido.
22
Microcontroladores e Robótica - FACAPE
Ciclos de Máquina� O diagrama seguinte foi retirado do datasheet do µC, e
demonstra, claramente, as divisões dos ciclos nas quatro fases (Q1 a Q4) e o conceito de pipeline.
23
Microcontroladores e Robótica - FACAPE
Osciladores
� Os microcontroladores PIC possuem alguns modos de osciladores disponíveis para operação.
� Tipos de osciladores:� RC ⇒ RC externo (uso de resistor e capacitor)� INTOSC ⇒ RC interno� EC ⇒ fonte de clock externa� HS ⇒ cristal/ressonador de alta frequência (acima de 4MHz)� XT ⇒ cristal/ressonador de média frequência� LP ⇒ cristal/ressonador de baixa frequência (32kHz)
24
Microcontroladores e Robótica - FACAPE
Osciladores� RC Externo
25
Microcontroladores e Robótica - FACAPE
Osciladores� Cristal
26
Microcontroladores e Robótica - FACAPE
Organização de Memória� São divididas em três tipos:
� ROM ⇒ Memória de Programa� RAM ⇒ Memória de Dados� EEPROM ⇒ Memória de Armazenamento
� Por ser um microcontrolador de arquitetura Havard, o PIC16F628A tem suas memórias de programa e de dados mapeadas separadamente.
� Este microcontrolador possui ainda uma terceira memória: a memória não-volátil EEPROM.
� EEPROM são memórias não-voláteis, ou seja, não apagam seu conteúdo quando retira-se a alimentação.
27
Microcontroladores e Robótica - FACAPE
Memória de Programa� A memória de programa presente no PIC16F628A é do
tipo FLASH (sufixo “F”) que permite ser gravada/apagada mais de 1000 vezes.
� No PIC16F628A há o registrador PC (Program Counter) de 13 bits capaz de endereçar um espaço de memória de programa de 2k x 14.
� Vetor de reset ⇒ corresponde ao primeiro endereço da memória de programa que será executado quando o PIC começar a rodar. Geralmente o reset aponta para o endereço 0x0000.
� Vetor de interrupção ⇒ as rotinas de interrupção serão armazenadas na área de programação. Há um endereço reservado para o início das RTIs (0x0004).
28
Microcontroladores e Robótica - FACAPE
Memória de Programa
29
Microcontroladores e Robótica - FACAPE
Memória de Dados� É uma memória do tipo RAM usada para armazenar todas
as variáveis e registradores de forma temporária durante a execução do programa.
� Essa memória armazena dados de 8 bits e é volátil, ou seja, quando o PIC é desligado, ela é automaticamente perdida. No PIC16F628A, essa memória é de 224 bytes.
� A memória de dados pode ser lida/escrita em tempo de execução do programa através de diversas instruções.
� A memória de dados é dividida em quatro bancos contendo os registradores de propósito geral (GPRs, em inglês) e os registradores de função específica (SFRs, em inglês).
30
Microcontroladores e Robótica - FACAPE
Memória de Dados
31
Obs: posteriormente voltaremos a estudar memória de dados, mais particularmente sobre os SFRs(registradores de função específica). E veremos como ativar/desativar certas funções do µC alterando os valores dos SFRs (fazer configuração via software).
Microcontroladores e Robótica - FACAPE 32
Microcontroladores e Robótica - FACAPE
Memória EEPROM
� A EEPROM é uma memória não-volátil que consegue manter as informações mesmo sem alimentação.
� É usada para armazenar valores que não podem ser perdidos.
� É escrita e apagada eletricamente. Se necessário, pode ser usada uma EEPROM externa.
� No PIC16F628A, a EEPROM tem o tamanho de 128 bytes.
33
Microcontroladores e Robótica - FACAPE
Configurações do PIC� Alguns recursos do PIC podem ser configurados para
aplicações específicas.� Dependendo do compilador usado para programar o PIC,
estas configurações podem ser feitas direto no programa ou podem ser feitas em uma janela ‘Settings’ do próprio compilador.
� Algumas destas configurações são:� master clear (MCLR)� watchdog timer� brown out detect� power up timer� low voltage program� código de proteção
34
Master Clear (MCLR)
� Trata-se de um reset externo.� É ativo em nível baixo, ou seja, quando aplicado um nível
baixo no pino, ocorre o reinício do programa.� No PIC16F628A, o MCLR pode ser ativo, ou não, via software.� No PIC16F628A, o MCLR está no RA5 (pino 4).
resistor de pull-up
Microcontroladores e Robótica - FACAPE 35
Microcontroladores e Robótica - FACAPE
Watchdog Timer
� Watchdog significa cão de guarda.� Watchdog Timer é um contador de 8 bits utilizado para
verificar se o programa travou.� Sua função é reiniciar (reset) o microcontrolador quando
ocorre overflow da contagem.� Uma vez o WDT ativado, o programa deve estar preparado
para limpar o contador do WDT periodicamente.� caso contrário, o programa será resetado toda vez que esse
contador estourar.
36
Microcontroladores e Robótica - FACAPE
Brown Out Detect
� É um sistema de detecção automática de baixa tensão de alimentação.
� Tensões configuráveis: 4V ou 2.1V.
� Caso a tensão de alimentação caia abaixo do valor configurado por mais de 100µs, ocorrerá um reset no software (sistema será reiniciado).
37
Microcontroladores e Robótica - FACAPE
Power Up Timer
� Circuito interno que retarda o início da execução do programa.
� Garante estabilização da tensão de alimentação.
� Esta opção irá fazer com que o PIC só comece a operar cerca de 72ms após o pino MCLR ser colocado em nível alto.
38
Microcontroladores e Robótica - FACAPE
Low Voltage Program
� Trata-se do sistema de programação do PIC (gravação de memória de programa) em baixa tensão: 5V.
� Normalmente, essa programação é habilitada por uma alta tensão (13V) no pino MCLR.
� Com isso, por meio de baixa tensão, é possível criarmos sistemas onde um PIC possa gravar o programa de outro PIC.
39
Microcontroladores e Robótica - FACAPE
Código de Proteção
� Para a gravação em série, é muito importante que essa opção esteja ativada, pois isso impedirá que qualquer pessoa consiga ler o programa gravado dentro do PIC.
� Essa é a única proteção que você terá para que ninguém possa “copiar” o seu sistema.
� Essa opção impedirá que você leia a memória mas não impedirá que você grave outro programa por cima.
40
Microcontroladores e Robótica - FACAPE
Interrupções� Uma interrupção serve para interromper o programa
imediatamente.� As interrupções são ações tratadas diretamente pelo
hardware, o que as torna muito rápidas e disponíveis em qualquer ponto do sistema.
� Quando uma interrupção acontece:� o programa é paralisado.� o programa guarda, na pilha, o endereço da próxima instrução.� ocorre o desvio para um endereço fixo da memória de programa.� neste endereço (0x04 no PIC16F628A) uma função específica
(definida pelo programador) é executada.� e depois o programa continua a ser executado no mesmo ponto
em que estava.
41
Microcontroladores e Robótica - FACAPE
Interrupções no PIC
� Existem modelos de PIC que nem possuem interrupções (ex: 12C50X, 16C54).
� Mas na maioria dos modelos de PIC, as interrupções estão presentes (em maior ou menor número).
� O PIC16F628A possui 10 tipos de interrupções:� 3 relacionadas a timers� externa� mudança de estado� fim de escrita na EEPROM� de USART (2)� de Comparador� e de CCP
Veremos agora detalhes de algumas destas interrupções.
42
Microcontroladores e Robótica - FACAPE
Interrupções pelos Timers
� Os timers são registradores que atuam como contadores ou temporizadores.
� Há três timers no PIC16F628A: timer 0, timer 1 e timer 2.� As interrupções pelo timer acontecem sempre que um dos
contadores de tempo interno, denominados TMR0 (Timer 0), TMR1 (Timer 1) e TMR2 (Timer 2), estouram.
� No caso do TMR0, como ele é um registrador de 8 bits, o estouro ocorre sempre que ele passar de 0xFF para 0x00.
� No caso do TMR1 (registrador de 16 bits), o estouro ocorre sempre que ele passar de 0xFFFF para 0x0000.
43
Microcontroladores e Robótica - FACAPE
Interrupções pelos Timers
� Já para o TMR2, que é também um registrador de 8 bits, a interrupção não acontece necessariamente quando ele estoura o limite de 0xFF, e sim quando ele atinge um valor especificado em outro registrador especial chamado PR2.
� A interrupção pelo timer é utilizada normalmente para a contagem de tempo.
� O TMR0 e TMR1 podem ser incrementados internamente tanto pelo clock da máquina como também por um sinal externo.� ao usar um sinal externo, os timers passam a ser contadores de
pulsos, podendo ser utilizados para outras finalidades.
44
Microcontroladores e Robótica - FACAPE
Interrupções pelos Timers
� Tempo de estouro do timer corresponde ao tempo que o processador leva para ativar uma interrupção pelo timer.
� Cálculo do tempo de estouro:� para o Timer0:TE = (28 – TMR0) * Prescale * ciclo_de_maquina
� para o Timer1:TE = (216 – (TMR1H:TMR1L)) * Prescale * ciclo_maquina
� para o Timer2:TE = PR2 * Prescale * Postscale * ciclo_de_maquina
Obs: TMR0, TMR1H, TMR1L e PR2 são registradores de 8 bits.
45
Microcontroladores e Robótica - FACAPE
Interrupção Externa� Essa interrupção é gerada por um sinal externo ligado a
uma porta específica do PIC, que no caso é o bit RB0 (pino 6), desde que esteja configurada como entrada.
� A interrupção externa é utilizada para diversas finalidades:� comunicação entre microcontroladores, garantindo o sincronismo.� reconhecimento de um botão ou outro sinal do sistema que
necessite de uma ação imediata.
� A interrupção externa pode ser configurada para ocorrer na borda de subida ou na borda de descida do pulso.
� Flag de sinalização da interrupção externa: INTF.� Controle de habilitação: INTE.� Estas duas flags são encontradas no registrador INTCON.
46
Microcontroladores e Robótica - FACAPE
Interrupção por Mudança de Estado
� Diferentemente da interrupção externa, a interrupção por mudança de estado ocorre tanto na borda de descida como na borda de subida.
� Essa interrupção, por sua vez, está ligada ao nibble mais significativo da porta B, ou seja, RB4, RB5, RB6 e RB7 simultaneamente.
� Por isso, se esses pinos forem configurados como entrada, a mudança de estado em qualquer um deles irá gerar a interrupção.
� Esse tipo de interrupção pode ser utilizado para verificação de uma rede de sensores conectada a esses pinos.
� Flag sinalizador desta interrupção: RBIF.� Habilitação: RBIE.
47
Microcontroladores e Robótica - FACAPE
Interrupção de Fim de Escrita na EEPROM
� Como foi visto anteriormente, alguns PICs possuem uma memória EEPROM interna.
� Essa interrupção serve para detectarmos o final de uma rotina de escrita nessa memória.
� A utilização da interrupção não é obrigatória para que a escrita funcione, mas, como a EEPROM é lenta na hora de escrever, em alguns sistemas sua utilização pode ser necessária para evitar uma parada durante a escrita na EEPROM.
48
Microcontroladores e Robótica - FACAPE
Interrupção de Comparador
� Uma vez que o PIC16F628A possui dois comparadores internos, estes poderão ser utilizados de forma totalmente independente do programa, ou de forma mista.
� No último caso, o resultado da comparação poderá ser analisado pelo programa para a tomada de decisões.
� Para facilitar ainda mais esta função, a interrupção do comparador pode ser utilizada para avisar o sistema sempre que houve uma mudança de estado na resposta da comparação.
49
Microcontroladores e Robótica - FACAPE
Interrupções de USART
� USART significa Universal Synchronous Asynchronous Receiver Transmitter.
� O PIC16F628A possui um sistema completo (via hardware) para comunicação serial do tipo USART, por meio do protocolo RS-232.
� Este sistema facilita todo o processamento para entrada e saída de dados seriais.
� Este sistema possui duas interrupções para informar o programa quando um dado foi recebido e quando a transmissão de outro dado já foi terminada.
50
Microcontroladores e Robótica - FACAPE
Interrupção de CCP� O módulo CCP (Capture, Compare e PWM) possui uma
interrupção para informar ao programa uma das duas situações possíveis:� fim da captura (Capture)� fim da comparação (Compare)
� O modo Capture pode ser utilizado para contar o tempo (TMR1) entre duas mudanças de estado de uma entrada específica (T1CKI).� com isso podemos implementar, por exemplo, um periodímetro.
� Já como Compare, podemos comparar o valor de TMR1 com o especificado em outro registrador especial (CCPR1).� desta forma podemos monitorar a quantidade de pulsos na
entrada relacionada ao TMR1 (T1CKI).51
Recommended