Módulo 1
Transcrição
Módulo 1
Microcontroladores Módulo 1 1 Microcontroladores Motivação Desenvolvimento de Sistemas Eletrônicos Microprocessados – Embbeded Systems; Mercado de microcontroladores em expansão – Novos chips e famílias; Estima-se que, em poucos anos, em média uma pessoa interagirá com 300 dispositivos microcontroladores diariamente; Aplicação em diversas áreas: Automação, Controle e Instrumentação de Processos, etc. Fabricantes de Microcontroladores INTEL (80C51) - www.intel.com/design/MCS51/ MOTOROLA - www.mot-sps.com MICROCHIP (PIC) - www.microchip.com TEXAS INSTRUMENTS - www.ti.com MITSUBISHI - www.mitsubishichips.com ATMEL - www.atmel.com PHILIPS - www.philips.com NATIONAL - www.national.com Introdução Um microcontolador é um sistema computacional completo, no qual estão incluídos uma CPU (Central Processor Unit), memória, um sistema de clock, sinais de I/O (Input/Output), além de outros possíveis periféricos, tais como, módulos de temporização e conversores A/D entre outros, integrados em um mesmo componente (chip). As partes mais integrantes de qualquer computador, e que também estão presentes, em menor escala, nos microcontroladores são: Unidade Central de Processamento (CPU); Sistema de Clock para dar seqüência às atividades da CPU; Memória para armazenamento de instruções e manipulação de dados; Entradas para interiorizar na CPU informações do mundo externo; Saídas para exteriorizar as informações processadas pela CPU para o mundo externo; Programa (Software) para que o sistema faça alguma coisa útil. Arquiteturas de Microcontroladores A arquitetura de um sistema digital define quem são e como as partes que compõe o sistema estão interligadas. As duas arquiteturas mais comuns para sistemas computacionais digitais são as seguintes: Arquitetura de Von Neuman : A Unidade Central de Processamento é interligada à memória por um único barramento (bus). O sistema é composto por uma única memória onde são armazenados dados e instruções; Arquitetura de Harvard: A Unidade Central de Processamento é interligada a memória de dados e a memória de programa por barramento específico. O PIC possui arquitetura Harvard. A memória de dados é do tipo RAM (volátil) e , no caso do 16F84, a memória de programa é do tipo Flash (letra F no código). O barramento de dados é de 8 bits e o de instruções é composto de 14 bits. Este tipo de arquitetura permite que, enquanto uma instrução é executada, outra seja “buscada” da memória, o que torna o processamento mais rápido. FILOSOFIA RISC Como o barramento de instruções é maior do que 8 bits, o OPCODE da instrução já inclui o dado e o local onde ela vai operar (quando necessário), o que significa que apenas uma posição de memória é utiizada por instrução, economizando assim muita memória de programa. Dessa forma, podemos observar que dentro da palavra do OPCODE, que pode ser de 12, 14 ou 16 bits, não sobra muito espaço para o código da instrução propriamente dito. Por isso, os PICs utilizam uma tecnologia chamada RISC, que significa Reduced Instruction Set Computer (Computador com Set de Instruções Reduzido). PICs: RISC Cerca de 35 instruções Aprendizado mais fácil e dinâmico Desvantagem com a ausência de determinadas funções (Ex: Funções de multiplicação e divisão devem ser implementadas) Estruturação Interna do PIC16F84 ULA (Unidade Lógica Aritmética); Registrador W (work = trabalho); Memória de Programa (1K byte)– Bus de 14 bits; Memória de Dados RAM (68 bytes)– Bus de 8 bits; Portas: PORTA e B – Pinos de I/O; EEPROM (Memória de Dados Não volátil); Contador/Timer: TIMER0 Registrador STATUS; Contador de Linha de Programa – PC (Program Counter); Pilha de 8 Níveis – STACK; Circuitos Internos: Reset, Watchdog Timer (WDT), Powerup e Brown-out. Diagrama de Blocos do PIC 16F84 Unidade Lógica Aritmética (ULA) Unidade Lógica Aritmética (ULA): é onde todas as operações lógicas (funções lógicas booleanas: e ou, exclusivo e complemento) e aritméticas (soma e subtração) são efetuadas. O registrador W sempre estará envolvido de alguma forma em toda operação lógica ou aritmética. Existem dois destinos possíveis para estas operações: o W (work) ou um registrador (posição da memória de dados) definido no argumento da instrução. Timer: O PIC possuí internamente um recurso de hardware denominado Timer0. Trata-se de um contador de 8bits incrementado internamente pelo ciclo de máquina ou por um sinal externo (borda de subida ou descida), sendo esta opção feita por software durante a programação (SFR). Como o contador possui 8 bits ele pode assumir 256 valores distintos (0 até 255). Caso o ciclo de máquina seja de 1us, cada incremento do Timer corresponderá a um intervalo de 1us. Caso sejam necessário intervalos de tempos maiores para o mesmo Ciclo de Máquina, utilizamos o recurso de PRE-SCALE. Ciclos de Máquina Nos microcontroladores PIC, o sinal de clock é internamente dividido por quatro. Portanto, para um clock externo de 4MHz, temos um clock interno de 1 MHz e, conseqüentemente, cada ciclo de máquina dura 1µs; A característica de buscar a informação em um ciclo de máquina e executá-la no próximo é chamada de PIPELINE. Ela permite que quase todas as instruções sejam executadas em apenas um ciclo, gastando assim 1 µs (para um clock de 4 MHz) e tornando o sistema muito mais rápido. As únicas exeções referem-se às instruções que geram “saltos” no program counter, como chamadas de rotinas e retornos. Memória de Programa A memória de programação é onde as instruções do programa são armazenadas. No caso do 16F84 esta memória é de 1024 palavras (words) (1Kb) de 14 bits cada uma. Parte destes 14 bits informam o OPCODE (código da instrução) e o restante traz consigo o argumento da instrução correspondente. Na familia PIC existem três tipos de memória de programa: EPROM (O.T.P. – One Time Programable), EEPROM (janelado) e FLASH. Memória de Dados A memória de dados é uma memória volátil do tipo RAM (Random Access Memory). O mapa de memória é divido em duas partes: Registadores especiais (Special Function Register - SFR) e Registradores de uso geral (General Purpose Register - GPR). Mapas das Memórias Memória de Programa Memória de Dados Interrupção As Interrupções são causadas através de eventos assíncronos (podem ocorrer a qualquer momento) que causam um desvio no processamento. Uma boa analogia para melhor entendermos o conceito de interrupção é a seguinte: você está trabalhando digitando uma carta no computador quando o seu ramal toca. Neste momento você, interrompe o que está fazendo, para atender ao telefone e verificar o que a pessoa do outro lado da linha está precisando. Terminada a conversa, você coloca o telefone no gancho novamente e retoma o seu trabalho do ponto onde havia parado. Observe que não precisamos verificar a todo instante, se existe ou não alguém na linha, pois quando o ramal é chamado, o telefone toca avisando que existe alguém querendo falar com você. Interrupções no PIC 16F84 Interrupção de estouro do TIMER0; Interrupção de fim de escrita na EEPROM; Interrupção externa: Essa interrupção é gerada por um sinal externo ligado a uma porta específica que no caso é a porta RB0. Ela é utilizada para diversas finalidades, como, por exemplo o reconhecimento de um botão ou outro sinal do sistema que necessite de uma ação imediata. Funciona somente na borda de subida ou descida dependendo da configuração. Interrupção por mudança de estado: Ocorre tanto em borda de subida quanto em borda de descida. Ligada às portas RB4, RB5, RB6 e RB7 simultaneamente. O PIC16F84 Microcontrolador RISC de 18 pinos; Memória de Programa FLASH (1K de 14 bits); Memória de dados 68 bytes; Memória EEPROM 64 bytes; Freqüência de operação até 20MHz; 12 I/O (Entradas/Saídas) configuráveis: PORT A: RA0 – RA4 (5 PINOS) PORT B: RB0 – RB7 (8 PINOS) 4 Interrupções; 1 Timer (TIMER0); Principais Características Elétricas Temperatura de trabalho: -55°C até +125°C; Tensão de Trabalho: 4.0Va 5.5V; Dissipação máxima de potência: 800 mW; Corrente máxima de saída de um pino: 25 mA. Pinagem do PIC 16F84 Descrição dos Pinos do 16F84 Portas TRIS: Esses registradores servem para configurar os pinos das portas como entrada ou saída. Quando é colocado “1” em um bit do TRIS, o pino relacionado a ele é configurado como entrada. Para configurar o pino como saída, você deve escrever “0” no bit relacionado. Uma maneira prática para memorizar essa regra é associar “1” ao “I” de Input (entrada) e o “0” ao “O” de Output (saída). Para configurar o PORTA, deve ser utilizado o registrador TRISA, o PORTB o registrador TRISB. PORTS: PORTA e PORTB. Quando um pino dessas portas é configurado como entrada, ao lermos o seu bit relacionado, encontramos diretamente o nível lógico aplicado a esse pino. Da mesma maneira, ao configurarmos um pino como saída, podemos alterar o seu estado, escrevendo diretamente no bit relacionado. Contador Timer: O PIC possuí internamente um recurso de hardware denominado Timer0. Trata-se de um contador de 8bits incrementado internamente pelo ciclo de máquina ou por um sinal externo (borda de subida ou descida), sendo esta opção feita por software durante a programação (SFR). Como o contador possui 8 bits ele pode assumir 256 valores distintos (0 até 255). Caso o ciclo de máquina seja de 1us, cada incremento do Timer corresponderá a um intervalo de 1us. Caso sejam necessário intervalos de tempos maiores para o mesmo Ciclo de Máquina, utilizamos o recurso de PRE-SCALE. PRE-SCALE: O Pre Scale é um divisor de frequência programável do sinal que incrementa o Timer0. Quando temos um pre scale de 1:1, cada ciclo de máquina corresponde a um incremento do Timer0 (unidade de Timer0). Ao alterarmos o pre scale para, por exemplo 1:4 (os valores possíveis são as potencias de dois até 256), o Timer0 será incrementado uma vez a cada quatro ciclos de máquina. Circuitos Internos WATCHDOG (WDT) é um recurso disponível no PIC que parte do princípio que todo sistema é passível de falha. Se todo sistema pode falhar, cabe ao mesmo ter recursos para que, em ocorrendo uma falha, algo seja feito de modo a tornar o sistema novamente operacional. Dentro do PIC existe um contador incrementado por um sinal de relógio (clock) independente. Toda vez que este contador extrapola o seu valor máximo retornando a zero, é provocado a reinicialização do sistema (reset). Se o sistema estiver funcionado da maneira correta, de tempos em tempos uma instrução denominada clear watchdog timer (CLRWDT) zera o valor deste contador, impedindo que o mesmo chegue ao valor máximo. Desta maneira o Watchdog somente irá "estourar" quando algo de errado ocorrer. Circuitos Internos POWER UP TIMER: é um temporizador que faz com que o PIC, durante a energização (power up), aguarde alguns ciclos de máquina (72 ms) para garantir que todo o sistema periférico (display, teclado, memórias, etc) estejam operantes quando o processamento estiver sendo executado. BROWN OUT DETECT: O Brown Out monitora a diferença de tensão entre VDD e VSS, provocando a reinicialização do PIC (reset) quando esta cai para um valor inferior ao mínimo definido em manual (4V tipíco por mais de 100µs). CÓDIGO DE PROTEÇÃO: Para gravação em série é muito importante que esta opção esteja ativada, pois impedirá que qualquer pessoa consiga ler o programa gravado dentro do PIC. Linguagens de Programação Assembly (Baixo Nível): - Maior Eficiência; - Maior Velocidade de Execução; - Alta Complexidade; - Baixa Portabilidade. Linguagem C (Alto Nível): - Programação Estruturada (funções); - Maior velocidade na criação de novos projetos; - Maior Portabilidade; - Eficiência Considerável.