Introdução ao Microcontrolador PIC

Documentos relacionados
INTRODUÇÃO: MICROCONTROLADORES

Aula 10 Microcontrolador Intel 8051 Parte 1

MSP430 - Arquitertura

Microcontroladores: Programação em C

Portas de entrada e saída; Interrupções; Interrupções externas; Temporizadores Contadores; Interface Serial

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

FACULDADE LEÃO SAMPAIO

Jadsonlee da Silva Sá

PSI3441 Arquitetura de Sistemas Embarcados

Família de Microcontroladores AVR

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

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

Estrutura Básica de um Computador

Programa Trainee 2012 Módulo 4 Microcontroladores AVR

Microcontroladores PIC

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

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

Sistemas Embarcados:

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

Sistemas Embarcados:

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

Sistemas Microcontrolados

SEL-433 APLICAÇÕES DE MICROPROCESSADORES I

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

ARDUINO. Profº. Engº. Robson Dias Ramalho

Módulo de Desenvolvimento PIC16F877A PCI208

Lista de Exercícios A1

Microcontrolador 8051

Projeto de Sistemas Embarcados

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

Usando Display Gráfico com C18 e C30

Introdução do Arduino para aquisição de dados e controle de instrumentos

Prof. Adilson Gonzaga

01/08/2011 PROGRAMAÇÃO EM LINGUAGEM C. Histórico

Projeto para interligação do Teclado Matricial 4X3 o módulo PIC PCI-208 Princípio de Funcionamento:

Conjunto de Instruções e Modelos de Arquiteturas

Prof. Adilson Gonzaga

Microcontroladores. Rafael Silva de Lima

Cerne. Conhecimento para o Desenvolvimento. Cerne Tecnologia e Treinamento

Sistemas Microcontrolados

Introdução ao PIC. Guilherme Luiz Moritz 1. 6 de novembro de DAELT - Universidade Tecnológica Federal do Paraná

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

07/06/2015. Outras características importantes em Microprocessadores/Microcontroladores SEL-433 APLICAÇÕES DE MICROPROCESSADORES I

O Pino P2.7 não está sendo usado e cada Display mostrará valores de 0 a 9.

Sistemas Digitais e Microcontrolados

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

Interrupção. Prof. Adilson Gonzaga

Microcontrolador 8051:

EL08D - MICROCONTROLADORES

Técnicas de Interface com Microcontroladores (8051)

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

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

Disciplina : Microcontroladores AVR

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

Cerne. Conhecimento para o Desenvolvimento. Cerne Tecnologia e Treinamento

Laboratório de Hardware

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

Interrupções e Timers

Prof. Adilson Gonzaga

Temporização Interrupções. Prof: Evandro L. L. Rodrigues. Rotinas de Atraso

1.ARQUITETURA INTERNA DE UM MICROPROCESSADOR

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

Circuitos Lógicos Aula 26

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

ENG-1450 Microcontroladores e Sistemas Embarcados. Lab03 Execução Experiência 01, Keypad, 7-seg, Exercícios

Arquitetura de Computadores. Prof. João Bosco Jr.

Apresentação da Disciplina

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

Sistemas Microprocessados

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

ELE Microprocessadores I

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

Projeto de Sistemas Eletrônicos

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

Curso introdutório de microcontroladores - Plataforma Arduino

Parte II Arquitetura. professorferlin.blogspot.com. professorferlin.blogspot.com. Sociedade Paranaense de Ensino e Informática

ELETRÔNICA DIGITAL II

Microprocessadores e Microcontroladores. Professor Lucas Araujo do Nascimento

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

Introdução à Computação: Arquitetura von Neumann

LABORATÓRIO DE ARQUITETURA DE COMPUTADORES PREPARAÇÃO 02: DISPLAY DE 7 SEGMENTOS MICROCONTROLADO

Temporização da CPU SEL-433 APLICAÇÕES DE MICROPROCESSADORES I. Ciclos de Máquina. Ciclos de Máquina. Temporização Interrupções Rotinas de Atraso

Suporta os microcontroladores: R. Leonardo da Vinci, Campinas/SP CEP F.: (19) Kit de Desenvolvimento ACEPIC 28

SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES

Arquitetura do Microcontrolador Atmega 328

Microcontroladores: Programação em C

- Arquitetura de sistemas digitais- Cap 2 Arquitetura de computadores

Microcontrolador PIC: Conceitos Básicos

Transcrição:

Introdução ao Microcontrolador PIC Nikolas Libert Aula 11 Eletrônica Digital ET52C Tecnologia em Automação Industrial

Memórias Memórias Memória de dados Núcleo do μc Memória de código Normalmente os microcontroladores possuem duas memórias: de código e de dados. Memória de código Contém o firmware: sequência de operações que o microcontrolador é programado para executar. Não é alterada em tempo de execução (há exceções). Não volátil: as informações continuam gravadas mesmo que haja desenergização. Tipos: ROM, EPROM, EEPROM, Flash. DAELT Nikolas Libert 2

Memórias Memória de dados Contém informações dinâmicas: o estado atual de um contador, o número que o usuário digitou numa calculadora É volátil: há perda de informações quando o circuito é desenergizado. Tipos: Estática: formada por flip-flops. Dinâmica: informação guardada em capacitores (memórias DDR de PCs). Memória de dados Núcleo do μc Memória de código DAELT Nikolas Libert 3

Arquiteturas de Acesso à Memória Arquiteturas de Acesso à Memória Memória de dados DATA ADDR Memória de dados Núcleo do μc ADDR DATA Núcleo do μc Memória de código ADDR DATA Memória de código Von Neumman Barramentos compartilhados para todas as memórias. Harvard Barramentos separados para cada memória. DAELT Nikolas Libert 4

Microcontrolador Genérico Microcontrolador Genérico Tudo num único CI: Núcleo com Unidade Lógica e Aritmética. Memórias. Pinos disponíveis para o usuário. Periféricos. Circuito de Clock. DAELT Nikolas Libert 5

Famílias de Microcontroladores Famílias de Microcontroladores Fabricantes dividem seus modelos de μc em famílias. Todos μc numa família possuem o mesmo núcleo. Família 1 Família 2 Família 3 Núcleo A Periféricos Memória Núcleo B Memória Periféricos Núcleo C Memória Periféricos Núcleo A Periféricos Memória Núcleo B Memória Periféricos Núcleo C Memória Periféricos Núcleo A Periféricos Memória Núcleo B Memória Periféricos Núcleo C Memória Periféricos DAELT Nikolas Libert 6

Famílias de Microcontroladores PIC - Peripheral Interface Controller Anos 70 μc criados pela General Instruments. Anos 90 PIC é vendido para a Microchip. 4 prefixos são utilizados para nomear os μc de 8 bits da Microchip: 10, 12, 16, 18 (ex.: 12F675, 18F4520). Pode-se dizer que existem 3 famílias: Base Line, Mid Range e High Performance. Família Exemplos de modelos Tamanho das instruções Tamanho da pilha Número de instruções Vetores de interrupção Base line 10F200, 12F508, 16F57 12 bits 2 33 nenhum Mid Range 12F675, 16F84A 16F631, 16F873A 14 bits 8 35 1 High Performance 18F242, 18F2420 16 bits 32 75 2, com prioridade DAELT Nikolas Libert 7

PIC12F675 O PIC12F675 8 pinos 2 para alimentação. 6 para uso geral (um deles para reset / MCLR). Pertence à família Mid Range: 35 instruções. Tensão de alimentação 2 a 5,5 V (pino V DD ). Clock de até 20 MHz Oscilador interno de 4MHz. Executa uma instrução a cada 4 ciclos de clock. 1M instruções por segundo com oscilador interno. DAELT Nikolas Libert 8

PIC12F675 O PIC12F675 Memória de programa: Memória flash para 1024 comandos (words). 100000 escritas. Memória de dados: 64 bytes de memória SRAM (volátil / flip-flops). 128 bytes de memória EEPROM (não volátil / 1000000 de escritas). Conversor AD, 2 timers, um comparador, programação in-circuit. DAELT Nikolas Libert 9

PIC12F675 Parte da tabela de instruções. DAELT Nikolas Libert 10

PIC12F675 Registrador W: Memória de 8 bits presente no núcleo de todo μc PIC. Nas operações lógicas, o valor em W é usado como operando e W pode armazenar o resultado. Exemplo de Instrução Memória de Código Posição Conteúdo (...) (...) Word N 0b11 0000 1010 1010 Word N+1 0b11 1001 0000 1111 (...) (...) Operação (...) W = 0b1010 1010 W = W. 0b0000 1111 (...) Estado de W (após instrução) 0b???????? 0b1010 1010 0b0000 1010 (...) DAELT Nikolas Libert 11

PIC12F675 Status Register Registrador (memória de 8 bits) que contém informações sobre a última operação realizada pela ULA. Bits de Carry e Borrow. Bit de Zero: indica que última operação deu zero. Instruções de desvio no fluxo do programa podem se basear no estado desse bit. Se dois número forem iguais, por exemplo, uma subtração entre eles dará zero. DAELT Nikolas Libert 12

PIC12F675 Estrutura Interna DAELT Nikolas Libert 13

PIC12F675 Memória DAELT Nikolas Libert 14

PIC12F675 Cada periférico está associado a um endereço na memória de dados. Ex.: Os pinos de saída são controlados pelo registrador GPIO, no endereço 0x05. Ao escrever em um dos bits do registrador GPIO (General Purpose Input Output), um pino correspondente vai para nível lógico alto ou baixo. DAELT Nikolas Libert 15

MikroC O Compilador MikroC Na prática, não precisamos aprender as 35 instruções do PIC12F675. Podemos escrever o programa em linguagem C e um compilador faz a conversão para assembly (linguagem de máquina). Mas ainda precisamos conhecer os registradores do PIC que afetam os periféricos que serão utilizados. O Datasheet é sempre indispensável! Os detalhes mudam muito entre modelos diferentes de microcontroladores. DAELT Nikolas Libert 16

Criando um projeto no MikroC Criando um projeto no MikroC Clique em Project New Project... DAELT Nikolas Libert 17

Criando um projeto no MikroC Chame o projeto de PiscaLED e crie uma pasta para o mesmo (não esqueça de excluir ao terminar). Configure o clock para 4 MHz (freq. oscilador interno). Selecione a opção Open Edit Project window.... DAELT Nikolas Libert 18

Criando um projeto no MikroC Avance até esta tela, e faça as opções mostradas abaixo: DAELT Nikolas Libert 19

Criando um projeto no MikroC Escreva um programa para fazer o LED piscar. void main() { unsigned long int Contador=0; ANSEL = ANSEL & 0b11110000; // Desabilita pinos analógicos CMCON = CMCON 0b00000111; // Desabilita comparador TRISIO = TRISIO & 0b11111011; // GP2->saída } while(1){ Contador = Contador +1; if(contador == 100000){ Contador = 0; GPIO = GPIO ^ 0b00000100; // Comuta GP2 } } DAELT Nikolas Libert 20

Criando um projeto no MikroC Compile clicando em Build Build. Não devem haver erros na tela de mensagens DAELT Nikolas Libert 21

Flip-Flop T Programa que simula Flip-Flop T. void main() { unsigned char EstadoBTO; ANSEL = ANSEL & 0b11110000; // Desabilita pinos analógicos CMCON = CMCON 0b00000111; // Desabilita comparador TRISIO = TRISIO & 0b11111011; // GP2->saída TRISIO = TRISIO 0b00000010; // GP1->entrada } EstadoBTO = GPIO & 0b00000010; // Grava o estado inicial de GP1. while(1){ if(estadobto!= (GPIO & 0b00000010)){ // Houve mudança no pino? EstadoBTO = EstadoBTO ^ 0b00000010; // Atualiza variável. if(estadobto == 0){ // Foi borda de descida? GPIO = GPIO ^ 0b00000100; // Comuta GP2 Delay_ms(3); // Debounce em Firmware! } } } DAELT Nikolas Libert 22

Controlando display de 7 segmentos 74HC595 12F675 Controlando um display de 7 segmentos. e f O PIC 12F675 possui apenas 6 pinos de saída. Para controlar o display podemos utilizar um registrador de deslocamento. GP5 saída de dados. GP4 saída de clock. 5V d g a c b a b c d e f g Q 6 Q 5 Q 4 Q 3 Q 2 Q 1 Q 0 6 5 4 3 2 1 15 16 10 14 11 12 13 8 Vcc MR DS SHCP STCP OE Gnd 5V 5V 10k Vcc GP5 GP4 MCLR 1 2 3 4 8 7 6 5 Gnd GP0 GP1 GP2 DAELT Nikolas Libert 23

Programa com display de 7 segmentos. Cronômetro com display de 7 segmentos (parte 1). void main() { unsigned char ContadorSerial=0; unsigned char ContadorSegundos=0; unsigned char CodigoAtual; // Definição dos dígitos para 7 segmentos. Considerando display anôdo comum (nível alto = LED apagado): // - Dígitos armazenados no formato 0b 1gfe dcba const char D7S[10] = { 0xFF, //0: 0b1111 1111 0xF9, //1: 0b1111 1001 0xA4, //2: 0b1010 0100 0xB0, //3: 0b1011 0000 0x99, //4: 0b1001 1001 0x92, //5: 0b1001 0010 0x82, //6: 0b1000 0010 0xF8, //7: 0b1111 1000 0x80, //8: 0b1000 0000 0x90 //9: 0b1001 0000 }; DAELT Nikolas Libert 24

Programa com display de 7 segmentos. Cronômetro com display de 7 segmentos (parte 2). // Pino GP5:transmissão dos dados em série. // Pino GP4:transmissão dos pulsos de clock. TRISIO &= 0b11001111; // GP4 e GP5 configurados como saída. ANSEL &= 0b11110000; // GP0, GP1, GP2 e GP4 como pinos digitais. CMCON = 0b00000111; // Desabilita comparador analógico. while(1){ // Laço infinito CodigoAtual = D7S[ContadorSegundos]; // Código p/ LEDs display. while (ContadorSerial < 7){ // Repete até transmitir os 7 bits. GPIO = GPIO & 0b11101111; // Baixa clock. // O bit0 do código será trasmitido pela serial (GP5). // - GP5 é zerado. // - O bit0 do código é deslocado 5 vezes para a esquerda // para que fique alinhado com GP5. // - GP5 recebe o valor do bit0 deslocado. GPIO = GPIO & 0b11011111; GPIO = GPIO ((CodigoAtual & 0b00000001) << 5); GPIO = GPIO 0b00010000; // Levanta clock. DAELT Nikolas Libert 25

Programa com display de 7 segmentos. Cronômetro com display de 7 segmentos (parte 3). // Desloca todos os bits do código para a direita. O bit0 // corresponde agora ao próximo bit que será transmitido. CodigoAtual = CodigoAtual >> 1; ContadorSerial = ContadorSerial + 1; // Foi enviado +1 bit! } ContadorSerial = 0; GPIO = GPIO & 0b11101111; // Baixa clock. GPIO = GPIO 0b00010000; // Levanta clock. } } ContadorSegundos = ContadorSegundos + 1; // Incrementa segundos if (ContadorSegundos == 10){ // Chegou em 10? ContadorSegundos = 0; // Então zera a contagem. } Delay_ms(1000); // Espera 1 segundo. DAELT Nikolas Libert 26

Quatro botões + display de 7 segmentos 12F675 Adicione 4 botões ao circuito anterior (Bto0, 1, 2 e 3). Se o botão N for pressionado, o número N deverá aparecer no display. Atualize o circuito e o código. Será necessário utilizar o multiplexador 74HC151. GP0 e GP1 saída para seleção de canal do multiplexador (S0 e S1). GP2 entrada com sinal de 1 dos botões (Y) 5V 10k Vcc GP5 GP4 MCLR 1 2 3 4 8 7 6 5 Gnd GP0 GP1 GP2 DAELT Nikolas Libert 27

Quatro botões + display de 7 segmentos Hardware: Conecte um botão (pode ser só um fio) com um resistor de pull-down nas entradas I0 a I3 do mux. Aterre a entrada S2 (só serão usados os canais I0 a I3). Conecte GP0, GP1 e GP2 em S0, S1 e Y, respectivamente. Firmware: Configure os pinos corretamente como entrada ou saída. Crie um loop (while) que conte de 0 a 3. Dentro do loop atualize GP0 e GP1 (S0 e S1), selecionando um dos canais (I0 a I3). DAELT Nikolas Libert 28

Quatro botões + display de 7 segmentos Firmware: Em cada passo do loop, um dos 4 botões poderá ser lido da saída do multiplexador, pelo pino GP2. Se você detectar que o botão foi pressionado, atualize o display com o número correto. Pode ser necessário um delay de uns 5ms para debounce depois da atualização. DAELT Nikolas Libert 29

Referências WILMSHURST, TIM Designing Embedded Systems with PIC Microcontrollers, 2nd ed., Newnes, Oxford. MICROCHIP Datasheet PIC 12F675. DAELT Nikolas Libert 30