280 likes | 457 Views
Sistemas Embarcados Microcontroladores PIC. Prof. Wanderley. Introdução. Os microcontroladores PIC são dispositivos fabricados pela Microchip São de arquitetura RISC com clock de até 40MHz , até 2048kword de memória de programa e até 3968 bytes de memória RAM
E N D
Sistemas Embarcados Microcontroladores PIC Prof. Wanderley
Introdução • Os microcontroladores PIC são dispositivos fabricados pela Microchip • São de arquitetura RISC com clock de até 40MHz, até 2048kword de memória de programa e até 3968 bytes de memória RAM • Podem ter até 4 temporizadores/contadores, memória EEPROM interna, gerador/comparador/amostrador PWM, conversores A/D de até 12 bits, interface de barramento CAN, 12C, SPI entre outros
Introdução • Existem 3 famílias de PICs, de 12, 14 e 16 bits de memória de programa • Todos possuem barramento interno de dados de 8 bits • Quanto maior a palavra de programa, maior o número de instruções • 12 bits = 33 instruções; • 14 bits = 35 instruções; • 16 bits = 77 instruções.
Introdução • Existem 3 famílias de PICs, de 12, 14 e 16 bits de memória de programa • Todos possuem barramento interno de dados de 8 bits • Quanto maior a palavra de programa, maior o número de instruções • 12 bits = 33 instruções; • 14 bits = 35 instruções; • 16 bits = 77 instruções.
Introdução • A arquitetura dos PICs é otimizada para a execução de um pequeno conjunto de instruções, mas com velocidade muito alta. • Exemplo: PIC da série 16 executa 5 MIPS (Milhões de Instruções por Segundo) a 20MHz ou 10 MIPS a 40 MHz.
Introdução • Características Básicas do Desenho interno dos PICs • Capacidade de Pipeline; • Capacidade de execução de um instrução por ciclo de máquina (4 ciclos de clock); • Cada instrução ocupa apenas uma posição de memória de programa; • Tempo de execução fixo para todas as instruções.
Introdução • Diferentes dispositivos PIC são semelhantes em sua arquitetura interna, o que facilita a migração entre microcontroladores. • Os princípios gerais da arquitetura PIC são: • Registrador de intercâmbio geral, ou registrador de trabalho (W); • Registrador de armazenamento de flags (STATUS) • Registrador de controle de interrupção (INTCON); • Registrador de manipulação de dados nas portas (PORT ou GPIO).
Memória de Programa • Nas séries 12, 14 e 16 está embutida na pastilha • Alguns dispositivos das séries 17 e 18 suportam memórias de programa externas • Tecnologias de implementação de memória de programa: • ROM – programada de fábrica; • OTP (PROM) – Virgens de fábrica; • EPROM; • FLASH – pelo menos 1000 ciclos de gravação/apagamento.
Memória de Programa A memória de programa é dividida em blocos ou páginas de 2kWord, devido a limitações imposta pela estrutura das instruções RISC
Memória de Programa • O mecanismo de paginação é transparente ao usuário Exemplo: … 0x07FE MOVF PORTA,W 0x07FF ADDLW 0x10 0x0800 MOVWF PORTB 0x0801 BCF INTCON,GIE …
Memória RAM e Registradores • A RAM é utilizada para abrigar os registradores internos. • Divide-se em duas partes: • Para abrigar registradores de funções especiais (SFR - Special Function Register); • Para abrigar registradores de propósitos gerais (GPR – General Purpose Register). • Registradores SFR são utilizados para controlar periféricos e dispositivos internos, flags de estado do processador, entre outras funções; • Registradores GPR são utilizados para armazenamento temporário de dados do usuário.
Memória RAM e Registradores • Os registradores são muitas vezes referenciados pela letra f (file register) • A forma de implementação das instruções limita o endereçamento a um máximo de 7 bits ou 128 registradores • Para contornar tal limitação, criou-se o esquema de paginação também na memória RAM, de modo que existem bancos de memória de 128 posições
Memória RAM e Registradores • Alguns registradores SFR podem ser encontrados em dois ou até mesmo nos quatro bancos de memória RAM (registradores espelhados), permitindo a otimização de acesso de registradores muito usados (STATUS, INTCON, etc.) • Alguns dispositivos PIC permitem o espelhamento de registradores GPR • Alguns dispositivos permitem ainda espelhamento completo dos registradores GPR
Memória RAM e Registradores • Registradores SFR de destaque: • STATUS – armazenamento de flags matemáticos e estado da CPU, além de bits de seleção do banco de memória RAM • INTCON – Controle de interrupções • OPTION_REG – Configurar o funcionamento de alguns periféricos internos • PORTx – Leitura ou escrita de informações nos pinos externos • TRISx – Controle da direção de funcionamento de cada pino da porta
Registrador W • Características: • Usado como destido em operações lógicas ou aritméticas; • Não pode ser utilizado como fonte de dados em operações de CPU (rotação de dados, incremento, decremento, etc.); • Não está mapeado na memória RAM; • Sua utilização principal é como ponte entre registradores f. • NÃO É POSSÍVEL TROCAR DIRETAMENTE INFORMAÇÕES ENTRE OS REGISTRADORES f. • MOVF (Copia de f para w) e MOVWF (Copia de w para f).
Contador de Programa - PC • Responsável pelo controle da sequência de execução das instruções • O registrador PC aponta para a próxima instrução a ser executada pela CPU • PC é dividido é dividido em dois registradores básicos: • PCL, responsável pelos 8 bits menos significativos; • PCH, responsável pelos 5 bits mais significativos. • Somente PCL é diretamente acessível, podendo ser lido ou escrito pelo programa do usuário • PCH pode ser alterado somente por intermédio do registrador PCLATH
Contador de Programa - PC • A interação entre os registradores PC, PCL e PCLATH pode ocorrer de quatro formas distintas: 1) Execução de uma instrução que tem como destino o registrador PCL 8 7 12 0 PCH PCL 5 Resultado da ALU PCLATH 8 7 0
Contador de Programa - PC 2) Execução de uma instrução GOTO 8 7 12 11 0 PCH PCL <4,3> Constante do opcode PCLATH 11 0 7 Os bits 4 e 3 do PCLATH são usados para seleção de página da memória de programa.
Contador de Programa - PC 3) Execução de uma instrução CALL 8 7 12 11 0 13bitsx8 PCH PCL <4,3> Constante do opcode PCLATH 11 0 7 Os bits 4 e 3 do PCLATH são usados para seleção de página da memória de programa.
Contador de Programa - PC 4) Execução de instrução RETURN, RETLW ou REFIE 8 7 13 12 0 13bitsx8 PCH PCL
Pilha • Estrutura de dados com apenas um ponto de acesso (o topo da pilha) • A principal função da pilha é armazenar endereços de retorno para sub-rotinas • Alguns dispositivos permitem também o armazenamento de dados de usuário • Operações básicas: • PUSH – a CPU armazena informação na pilha; • POP - a CPU busca informação no topo da pilha. • A pilha não está localizada na área de memória RAM, e sim em uma região separada (inacessível diretamente ao usuário) dedicada
Pilha • Normalmente a pilha tem capacidade de 8 palavras do tamanho de PC. • O endereço do topo não é acessível ao usuário. • Utiliza-se uma estrutura de memória LIFO (Last IN – First Out) circular. • O programador deve ter muito cuidado para não sobrescrever dados na pilha. • Não há instruções para manipulação direta da pilha (isso é feito inderetamente através das instruções CALL, RETURN, RETLW e RETFIE).
Interrupções • Interrupção é um evento externo ao programa que provoca: • A parada da sua execução; • A verificação e tratamento do referido evento; • Por fim, o retorno do programa ao ponto em que havia sido interrompido. • Existem dois tipos básicos de interrupção: • Não mascarável – o evento de interrupção é atendido imediatamente pela CPU; • Mascarável – o evento de interrupção é atendido pela CPU desde que não esteja mascarado (o programa defino o momento em que pode ou não ser interrompido).
Interrupções • No PIC há apenas interrupções mascaráveis com um vetor de interrupção fixo (endereço 0x0004 na memória de programa). • Linhas mais antigas do PIC possuem até quatro tipos de interrupção: • Interrupção externa (INTF); • Interrupção por mudança de nível lógico no portb (RBIF); • Interrupção do timer0 (TOIF); • Interrupção de periférico (EEPROM – EEIF, conversor A/D – ADIF). • Alguns dispositivos de 8 pinos encontramos a interrupção GPIF, relativa à porta de entrada/saída (GPIO). • Tais interrupções são geralmente controladas pelo registrador INTCON.
Interrupções • Dispositivos mais novos (onde incluiu-se um maior conjunto de periféricos) possuem uma nova arquitetura de interrupções. • Ainda é baseada no registrador INTCON, mas com a adição de registradores destinados à sinalização e controle das interrupções dos novos dispositivos. • A compatibilidade de software com os dispositivos mais antigos foi mantida. • As interrupções de periféricos são controladas por 2 registradores: • PIEx, para controle de habilitação individual das interrupções dos periféricos; • PIRx, para sinalização individual dos eventos de interrupções dos periféricos.
Interrupções xxIF – flag para habilitar/desabilitar interrupção xxIE – presença/ausença de interrupção