Microcontrolador PIC: Conceitos Básicos

Documentos relacionados
FACULDADE LEÃO SAMPAIO

Introdução aos microcontroladores Microcontroladores e microprocessadores Tecnologia em Manutenção Industrial

Sistemas Embarcados:

Programa Trainee 2012 Módulo 4 Microcontroladores AVR

Objetivos MICROCONTROLADORES HARDWARE. Microcontroladores I. Prof. Mauricio. Micro-I Prof. Mauricio 1. Microcontroladores PIC. Requisitos de Hardware

Microcontroladores: Programação em C

Jadsonlee da Silva Sá

Família de Microcontroladores AVR

Aula 10 Microcontrolador Intel 8051 Parte 1

Arquitetura e Organização de Computadores. Processador Registrador Memória. Professor Airton Ribeiro

AULA 6 - INTRODUÇÃO AO ARDUINO Revisão de Eletrônica Digital e introdução aos Sistemas Computacionais.

Sistemas Embarcados:

Arquitetura e Organização de Computadores. Processador Registrador Memória. Professor Airton Ribeiro

Professor: Vlademir de Oliveira Disciplina: Microcontroladores e DSP. Memórias de Dados e de Programa

Arquitetura do Microcontrolador Atmega 328

Estrutura Básica de um Computador

Disciplina : Microcontroladores AVR

14/3/2016. Prof. Evandro L. L. Rodrigues

Sistemas Microcontrolados

Aplicações Avançadas de Microprocessadores. Professor: Marco Shawn Meireles Machado

Arquitetura de Computadores

MSP430 - Arquitertura

SEL-433 APLICAÇÕES DE MICROPROCESSADORES I

SSC512 Elementos de Lógica Digital. Memórias. GE4 Bio

Objetivos MICROCONTROLADORES HARDWARE. Aula 03: Periféricos. Prof. Mauricio. MICRO I Prof. Mauricio 1. Arquitetura de um Microcontrolador

SEL-433 Aplicação de Microprocessadores I. Prof: Adilson Gonzaga

Circuito Eletrônico. Entendendo o circuito eletrônico na robótica. domingo, 28 de agosto de 11

Microcontroladores. Prof. Nivaldo T. Schiefler Jr. M.Eng Homepage:

Introdução ao Microcontrolador PIC

SISTEMAS MICROCONTROLADOS

Conjunto de Instruções e Modelos de Arquiteturas

Microprocessadores e Microcontroladores. Professor Lucas Araujo do Nascimento

Algoritmos Computacionais

Placa de desenvolvimento USB AFSmartBoard utiliza PIC18F4550 da Microchip, microcontrolador com o Flash 32kb, 2048 bytes de memória RAM

MEMÓRIAS. Sistemas Digitais II Prof. Marcelo Wendling Nov/18

ARDUINO. Profº. Engº. Robson Dias Ramalho

Anatomia do Arduino Bootloader

Microcontroladores PIC

SEL-614 MICROPROCESSADORES E APLICAÇÕES. Adilson Gonzaga

Microcontrolador 8051

Palestra de Tecnologia. Assunto: Microcontroladores.

Introdução à Ciência da Computação

Família 8051 (introdução) 2011/1

Projeto de Sistemas Embarcados

Fundamentos de hardware. David Déharbe DIMAp UFRN

Componentes de um computador Microcontroladores e microprocessadores Tecnologia em Manutenção Industrial MICROCONTROLADORES PROFESSOR FLÁVIO MURILO

Arduino Lab 08 Banco de teste para memória RAM HM6116 de 16k

16F628A - The Configuration Word Jon Wilder 25 de agosto de 2011.

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES PROF. DEJAIR PRIEBE

Faculdade de Tecnologia SENAI Pernambuco - Unidade Santo Amaro Curso de Tecnologia em Mecatrônica Industrial

Microcontroladores. Rafael Silva de Lima

Introdução à Organização de Computadores. Aula 8

Período Saulo O. D. Luiz

Cerne Tecnologia e Treinamento (21) (11) MSN: Skipe: cerne-tec

Prof. Eliezer Soares Flores 1 / 22

SEL0338 Tópicos Especiais em Sistemas Digitais

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

SEL-0415 Introdução à Organização de Computadores Aula 2 Prof. Dr. Marcelo Andrade da Costa Vieira

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

INTRODUÇÃO AO ARDUINO DUE, CANAL DIGITAL, FUNÇÃO DELAY

Laboratório de Hardware

Microcontroladores PIC16 - XM 116 -

Cerne. Conhecimento para o Desenvolvimento. Cerne Tecnologia e Treinamento. Apostila de BASIC para PIC16F628A

AULA2 Introdução a Microcontrolador. Disciplina: Aplicações Avançadas de Microprocessadores (AAM)

PCS 3115 Sistemas Digitais I

Placa McLab1 Upgrade PIC16F84A p/ PIC16F62x

ESTRUTURA E FUNCIONAMENTO DO COMPUTADOR

Microcontrolador 8051:

Introdução à Plataforma ARDUINO

Sistemas Operacionais I

Principais Componentes do Gabinete. Componentes Básicos de um Computador. CPU ou UCP (Processador) 17/02/2017

Arquitetura do Disciplina de Microcontroladores. Prof. Ronnier Prof. Rubão

Eletrônica Digital. Memórias Semicondutoras PROF. EDUARDO G. BERTOGNA UTFPR / DAELN

Scaling Up Inclusion: Robotics, a STEM focused Project. Centro de Formação de Associação de Escolas Paços de Ferreira, Paredes e Penafiel

Estudo da placa de prototipagem Intel Galileo Gen2. Apostila de acompanhamento para o aluno.

Cerne. Conhecimento para o Desenvolvimento. Cerne Tecnologia e Treinamento

Projeto de Sistemas Eletrônicos

PKBurner. Programador e Debugger USB. Conteúdo. Índice

Microprocessadores. São máquinas elétricas onde podemos armazenar instruções lógicas, aritméticas e de tomada de decisão;

Arduino Lab 02 Sensor de luminosidade e display de LCD 16 2

ORGANIZAÇÃO DE COMPUTADORES

Arquitetura de Computadores Memória Principal

ü Na década de 1920 os dispositivos mecânicos foram substituídos pelos relés; ü O uso da lógica de relés dificultava modificações do processo;

Organização de Sistemas Computacionais Processadores: Organização da CPU

CIRCUITOS DIGITAIS. Contadores com Registradores e Memórias. Prof. Denis Fantinato Prof. Rodrigo Moreira Bacurau

Aula 17: Organização de Computadores

Geradores de Clock e Memórias

Arquitetura e Organização de Computadores. Conjunto de Instruções da Arquitetura CompSim

Sistemas Operacionais. Adão de Melo Neto

EPROM - EEPROM Dispositivos Lógicos Programáveis

Tecnologias Digitais

INTRODUÇÃO AOS CONTROLADORES LÓGICOS PROGRAMÁVEIS

Conhecendo o PIC24 e o mikropascal

Conjunto de Instruções e Modelos de Arquiteturas

Transcrição:

Microcontrolador PIC: Conceitos Básicos Curta Eletrônica José W. R. Pereira 16A19 Resumo Com o objetivo de desbravar o funcionamento de um microcontrolador, este material busca de uma forma simples, mas não simplória, mostrar alguns conceitos iniciais bem como as ferramentas que serão utilizadas, pré-requisitos para o desenvolvimento das demais atividades e uma base de programação mínima, servindo de material de apoio para aulas desse tema, apesar de não ser um material de referência. O proposto aqui é ser um material de uso prático e de compreensão dos mecanismos de funcionamento do microcontrolador em estudo. Palavras-chave: microcontrolador. lógica. tecnologia. ensino. PIC16F887. 1 Introdução Sistemas digitais microcontrolados são amplamente difundidos nos mais diversos equipamentos, sejam eletrodomésticos, brinquedos ou mesmo equipamentos industriais. Além disso há em curso uma grande difusão produzida pela plataforma Arduíno, que possibilitou a todos uma prototipagem rápida das suas ideias e projetos, mesmo com um certo grau de complexidade, sem a necessidade de um especialista em eletrônica embarcada. Mas, ter um conhecimento mais aprofundado pode proporcionar um uso mais eficiente dos recursos do microcontrolador, conhecer suas limitações e possibilidades, além é claro do fato de ser muito mais interessante desbravar o seu funcionamento. Sendo assim o objetivo desse material e subsequentes é: curtaeletronica@gmail.com Curta Eletrônica, José W. R. Pereira 1

Desenvolver competências para programar um microcontrolador (uc), 8 bits, em linguagem C de modo a atender um projeto de média complexidade; Conhecer os periféricos do microcontrolador apresentado; Apresentar e utilizar técnicas de programação em linguagem C. Todo o conteúdo aqui apresentado se baseia nas seguintes especificações: Microcontrolador: PIC; Modelo: PIC16F887; Fabricante: Microchip; Editor: MPLabX; Compilador: XC8; Gravador: PICkit2; Linguagem: C. 2 Desenvolvimento Apesar da grande quantidade de conceitos envolvidos no estudo dos microcontroladores, podem alguns ser simplificados e outros suprimidos a depender do nível de profundidade que se quaira usar. Neste sentido, são feitas abordagens simplificadas pois este é o ponto inicial de nosso estudo. Então é feita a apresentação do microcontrolador utilizado, com algumas das principais características, aspectos físicos de encapsulamento e pinagem, do ponto de vista da gravação e da alimentação. São apresentadas as ferramentas de desenvolvimento, programação e compilação, assim como a capacidade de memória para gravar o programa(firmware). Uma configuração contendo o mínimo necessário para fazer o microcontrolador funcionar é apresentada, mesmo que ainda sem função, serve como ponto de partida para o desenvolvimento das demais aplicações. Mesmo sendo uma versão básica, simplificada, há diversos conceitos não tão simples de serem compreendidos, mas que ao longo do tempo ficarão mais esclarecidos, por hora não é de interesse suprimir tais conceitos. Curta Eletrônica, José W. R. Pereira 2

2.1 Estrutura Básica Simplificada Os microcontroladores modernos, possuem uma razoável complexidade em sua estrutura, mas no momento trataremos de forma simplificada sua operação. Em um microcontrolador simplificadamente temos: Memórias, Processamento e Periféricos, como mostrado na Figura 1. Figura 1 Visão geral e simplificada do sistema Fonte: Próprio autor As memórias são divididas em função do tipo de dado armazenado, sendo elas de: programa, variáveis de uso geral e registradores de uso específico, estes servindo de interface com os periféricos. O processamento, de forma cíclica, busca e executa as instruções da memória de programa através de circuitos digitais sequenciais e combinacionais. A parte sequencial faz o incremento do endereço da memória que será lido(busca), enquanto a parte combinacional reconhece a instrução do programa e a executa. Essa instrução pode ser de movimentação de dados, manipulação lógica ou aritmética. Os periféricos são acessados através de registradores especiais, onde é possível ler, escrever ou configurá-los a depender de sua função, que é executada de forma paralela ao processador. Então, para executar uma tarefa específica, instruções (códigos) são armazenadas na memória de programa, de forma sequencial e lógica, para serem reconhecidas pelo processador que executa-as através de manipulação de dados nas memórias de uso geral Curta Eletrônica, José W. R. Pereira 3

e específicas. registradores. Os periféricos apenas reagem aos dados inseridos em seus respectivos A sequência de busca e execução é cíclica, acontecendo do início ao fim do programa, e é finalizada com o fim das instruções na memória, mas geralmente (quase sempre) um conjunto de instruções fica sendo executado sem que haja o fim do programa. Existem diversos modelos e fabricantes de microcontroladores, tais como o clássico MCS-51 (8051) com seu núcleo de 8 bits desenvolvido pela Intel e amplamente utilizado e fabricado desde meados da década de 80 até hoje, AVR (8bits) da Atmel, MSP430 (16bits) da Texas Instruments, ou ainda os mais recentes de núcleo ARM (32bits) de diversos fabricantes e muitos outros. Um dos mais populares ainda é o PIC da Microchip, que no Brasil ganhou muito destaque e ainda é utilizado em cursos de nível técnico e graduações. 2.2 PIC e Microchip A Microchip Technology Inc. é uma empresa norte americana de semicondutores fundada em 1989 e tem sua sede na cidade de Chandler, Arizona, EUA. É a fabricante de microcontroladores PIC, circuitos integrados, memórias, circuitos integrados analógicos, de controle e interface, etc. A Figira 2 mostra as palavras que formam o acrônimo do PIC. Figura 2 Acrônimo para PIC Fonte: Wikipedia As principais características dos Microcontroladores PIC, de acordo com wikipedia (2018) são: Curta Eletrônica, José W. R. Pereira 4

Arquitetura Harvard; Derivado do PIC1650 da General Instrument; Conjunto de Instruções Reduzido (Reduced Instruction Set Computer - RISC); 35 e 76 instruções; Memória flash, EEPROM e OTP; Núcleo de 12, 14 e 16 bits; Velocidade máxima de 48MHz; Velocidade chegando a 16 MIPS para alguns modelos; Atende interrupções internas e externas; Encapsulamento de 6 a 100 pinos; Encapsulamento em diversos formatos: DIP, SOT23, SOIC, TQFP; Tensões de alimentação variando de 1,8 a 6V; 2.3 Encapsulamento O encapsulamento é o invólucro que tem a função de proteção mecânica do circuito integrado, bem como dar acesso aos pontos de ligação através dos pinos. Existem diversos modelos, tais como: Plastic Quad Flat, No Lead Package(QFN); Plastic Thin Quad Flatpack (TQFP); Plastic Shrink Small Outline (SSOP); Plastic Small Outline(SOIC); Plastic Dual In-line Package (PDIP). presentes na Figura 3: Este último de 40 pinos, é utilizado neste material, por ser o mais prático para protótipos por permitir seu uso em matriz de contatos(protoboard) sem a necessidade de adaptadores. Curta Eletrônica, José W. R. Pereira 5

Figura 3 Encapsulamentos 2.4 Pinagem Fonte: Datasheet PIC16F887 Cada um dos 40 pinos possui ao menos uma função, seja um sinal vital como alimentação, ou ainda, função de gravação e acesso aos periféricos. 2.4.1 Alimentação A Figura 4 apresenta uma alimentação padrão TTL (0 e +5V) e um capacitor com a função de desacoplamento. A tensão de alimentação deve ser aplicada ao V DD em relação a V SS, ou seja, V SS é a referência (GND), e V DD pode variar de -0,3V a +6.5V. Estes são valores máximos de operação, que na prática correspondem ao uso do padrão TTL (GND = 0V e VCC = 5V) com alguma tolerância. Curta Eletrônica, José W. R. Pereira 6

Figura 4 Alimentação e Capacitor de Desacoplamento Fonte: Próprio autor O desacoplamento é feito pela inserção de um capacitor junto aos pinos de alimentação do microcontrolador,, que podem variar de 0,01µF a 0,1µF, de acordo com o manual do fabricante. Durante os processos de busca e execução das instruções, o microcontrolador habilita e desabilita circuitos, aumentando ou reduzindo o consumo de energia, produzindo assim oscilação de alta frequência na alimentação, ruídos, que por sua vez se propagam para outros sinais de operação, como os de comunicação, temporização, contagem, comparação, etc. O resultado é um sinal de nível alto apresentando um serrilhado que pode causar um mau funcionamento do periférico ou ainda do próprio microcontrolador. Para evitar esses ruídos é utilizado um capacitor como filtro, que balanceia o sinal e se bem utilizado reduz drasticamente tais ruídos na alimentação. 2.4.2 Periféricos A maior parte dos pinos, Figura 5, podem ser configurados como interface digital (entrada ou saída) ou alguma função secundária, como entrada analógica, comunicação serial, temporizador/contador, comparador, etc, com função e sentido de dados a depender da configuração do periférico associado ou ainda na condição de gravação. Curta Eletrônica, José W. R. Pereira 7

Figura 5 Pinagem do PIC16F887-PDIP Fonte: Datasheet PIC16F887 2.4.3 Gravação Para o processo de gravação utilizando o gravador PICkit2, ou superior, são utilizadas as seguintes funções com seus respectivos pinos: Pino 1: Vpp Pinos 11 e 32: VDD (+5V) Pinos 12 e 31: VSS (0V) Pino 40: ICSPDAT (Dados) Pino 39: ICSPCLK (Clock) A Figura 6 mostra as conexões entre o gravador PICkit2 e o PIC. Curta Eletrônica, José W. R. Pereira 8

Figura 6 Conexão do Gravador PICkit2 Fonte: Datasheet PIC16F887 O gravador PICkit2 é conectado ao computador através de um cabo USB, por onde é descarregado o programa, produzido por algum conjunto de ferramentas de desenvolvimento. 2.5 Ferramentas de Desenvolvimento A microchip fornece diversas ferramentas de desenvolvimento, de forma gratuita e multiplataforma, entre as principais podem ser citadas: MPLAB X: Interface de Desenvolvimento Integrada. Facilita a codificação, integrando ferramentas de edição, compilação e depuração do código fonte. Microchip (2018b) XC8: Compilador. Programa que traduz um código em linguagem C para o respectivo código binário a ser gravado no microcontrolador. Esse processo ainda busca possíveis erros de sintaxe. Microchip (2018c) PICkit2: Plataforma de software e hardware para a gravação do firmware na memória de programa do PIC. O firmware é o programa desenvolvido para um microcontrolador. Microchip (2018a) Curta Eletrônica, José W. R. Pereira 9

Figura 7 Fearramentas de Desenvolvimento Microchip Figure: Próprio autor 2.6 Memória de Programa e Barramento de instruções O PIC16F887 possuio uma memória do tipo Flash para armazenamento do programa com capacidade de 8k words de 14 bits, ou seja, 8192 instruções sendo cada uma delas com 14 bits, que representa uma instrução completa para este modelo. O circuito responsável por selecionar a instrução que será executada, de forma sequencial é o contador de programa (Program Counter) que possui um limite físico de 13 bits (vias), para este modelo, produzindo uma contagem máxima equivalente a 8k (8 1k = 8 1024 = 8 2 10 ), sendo este, assim, o limite de acesso à memória. Cada um dos 8192 (8k) endereços possui 14 bits, o que caracteriza o tamanho da word (palavra), ou seja, o tamanho da instrução no núcleo do PIC16F887, conforme Figura 8. Curta Eletrônica, José W. R. Pereira 10

Figura 8 Capacidade da Memória e tamanho da instrução Figure: Próprio autor Cada um dos periféricos mostrados na tabela da Figura 8 será apresentado no devido momento. Além da memória de programa, com 8k (words), o PIC ainda possui a mamória de dados, que por sua vez é dividida em dois tipos e finalidades: EEPROM ( Electrically Erasable Programmable Read Only Memory ): Com a função de armazenar dados de variáveis de forma não volátil, ou seja, os dados armazenados não são perdidos ao desligar a energia do circuito. SRAM (Static Random Access Memory): Espaço de memória que comporta os registradores de configuração dos periféricos e armazenamento de variáveis locais. Possui ação de leitura e escrita muito veloz. Todos os endereços da memória de dados possuem dimensão de 8 bits, ou seja, 1 byte. 2.7 Configuração mínima Conjunto de instruções que permitem uma operação mínima do microcontrolador PIC16F887, com oscilador interno, desabilitando o Watchdog Timer, Master Clear e Programação em Baixa Tensão. Curta Eletrônica, José W. R. Pereira 11

#include <xc.h> Inclui biblioteca padrão do compilador XC8 que permite a referência aos endereços através de seus nomes/apelidos. #pragma config FOSC = INTRC_NOCLKOUT FOSC: Oscillator Selection Diretiva de compilação, ou seja, comando que é escrito no registrador de modo a configurar uma função diretamente e exclusivamente na gravação, não podendo ser alterado durante a execução do programa. Neste caso habilita a fonte da frequência de clock para o oscilador interno, que é calibrado e por padrão vem configurado em 4MHz. #pragma config WDTE = OFF WDTE: Watchdog Timer Enable Desabilita a função de Watchdog Timer. O Watchdog Timer é um temporizador que ao final da sua contagem reinicia o microcontrolador (reset). Essa contagem de tempo pode ser configurada. Dentro do ciclo de execução do programa, deve ser executada a instrução que reinicia a contagem do Watchdog Timer, CLRWDT, impedindo o reset do microcontrolador. O Watchdog timer tem a função de reiniciar o microcontrolador caso haja um bloqueio extenso do processamento. #pragma config MCLRE = OFF MCLRE: Master Clear Enable Desabilita a função que limpa os registradores e reinicia o processamento através do pino 1, permitindo sua utilização como Entrada ou Saída Digital (RE3). #pragma config LVP = OFF LVP: Low Voltage Programming Desabilita programação em baixa tensão e permite a utilização do pino 1 como RB3 (Entrada ou Saída Digital) e permite aplicação de uma "alta tensão", V P P (12V), que coloca o microcontrolador em modo de gravação. #define _XTAL_FREQ 4000000 _XTAL_FREQ: Crystal Frequency _XTAL_FREQ é utilizada dentro da biblioteca padrão < xc.h > e define a frequência do oscilador, que é configurada pelo usuário, e necessária para funções de temporização. A diretiva #define cria uma equivalência entre os termos associados. Assim _XTAL_FREQ é equivalente a 4000000, assim é definida a frequência do cristal utilizado em 4MHz. A grande vantagem em utilizar a diretiva #define é que todas as Curta Eletrônica, José W. R. Pereira 12

vezes que for preciso utilizar o valor numérico, ele pode/deve ser escrito como seu equivalente, assim havendo a necessidade de mudar de 4000000 para 8000000, por exemplo, só é necessário fazê-lo uma única vez na diretiva de definição e não em todos os lugares em que o valor literalmente aparecer. Programa mínimo void main ( void ) { while ( 1 ) { } } Estrutura básica de um programa em linguagem C para microcontrolador. Como não há sistema operacional para gerenciar a execução de programa, a função não tem retorno e nem parâmetros, por isso o void antes do main e dentro dos parênteses. Os parênteses definem um bloco de execução, delimitando o seu início e fim. Em todas as linguagens de programação existem laços de repetição, que é formado pela condicional e pelo bloco de repetição. Um dos laços de repetição mais comuns é o while que significa enquanto. Enquanto o parâmetro, conteúdo entre parênteses, for verdadeiro, o bloco é executado. Em linguagem C, qualquer número pode ser classificado de forma booleana/binária como Verdadeiro ou Falso, sendo o 0 (zero) definido como Falso e qualquer valor diferente como Verdadeiro. Assim, quando o parâmetro do while é 1, while( 1 ), o bloco subsequente é executado repetidamente enquanto o microcontrolador estiver ligado, pois 1 nunca é falso. A Figura 9 apresenta a configuração mínima de operação completa que deve ser incluída em um arquivo de texto simples, sendo muito recomendado, apesar de não ser obrigatório, utilizar o nome de main.c. Curta Eletrônica, José W. R. Pereira 13

Figura 9 Configuração Mínima de Operação Figure: Próprio autor A única função de existência obrigatória em linguagem C é a main, e é recomendado que o arquivo em que ela está declarada contenha o mesmo nome. Curta Eletrônica, José W. R. Pereira 14

Referências MICROCHIP. Gravador PICkit2. [S.l.], 2018. Disponível em: <https://www.microchip. com/developmenttools/productdetails/pg164120>. Citado na página 9. MICROCHIP. MPLAB X Integrated Development Environment(IDE). [S.l.], 2018. Disponível em: <https://www.microchip.com/mplab/mplab-x-ide>. Citado na página 9. MICROCHIP. XC8 Compiler. [S.l.], 2018. Disponível em: <https://www.microchip.com/ mplab/compilers>. Citado na página 9. WIKIPEDIA. Microcontrolador PIC. [S.l.], 2018. Disponível em: <https://pt.wikipedia. org/wiki/microcontrolador_pic>. Citado na página 4. Curta Eletrônica, José W. R. Pereira 15