Microcontroladores PIC
(continuação) Ricardo de Oliveira Duarte DECOM – UFOP
(baseado no curso de SE do prof. Manoel L. Anido NCE – UFRJ)
1
Sumário
Introdução a Família PIC e fabricantes. Características Básicas Arquitetura do PIC Organização da Memória no PIC Registradores do PIC Assembly e Conjunto de Instruções do PIC. Endereçamento de Memória no PIC. Estrutura das Portas de I/O Interrupções Ambientes de Desenvolvimento para o PIC. Contagem do Tempo no PIC. Lendo Chaves e Botões no PIC. Exercícios
2
Assembly dos PICs
Formato Assembly PIC (mesmo de máquinas da DEC – Digital Equipment Corporation) • Operação fonte destino ;comentário • Exemplo: SUB A, R1 => A - R1 = R1
Valores em Hexadecimal são precedidos por 0x • 0x55, 0x3C
Nenhuma operação: NOP
3
Conjunto de Instruções do PIC 16F877A
35 instruções diferentes. 3 tipos de categorias: • Para operações com BYTEs. • Para operações com BITs. • Para operações com Literais e Operações de Controle.
Para operações com BYTEs (byte-oriented instructions), ‘f’ representa um registrador e ‘d’ representa o destino, que será usado pela instrução. E se ´d´ for omitido? W será o destino.
Para operações com BITs (bit-oriented instructions), ´b´ representa o bit do registrador ´f´ que será selecionado, enquanto ´f´ é o endereço do registrador referido.
Para operações Literais e de Controle, ‘k’ representa uma constante de 8 ou 11 bits ou ainda um valor literal em hexadecimal. 4
PIC 16F877A – Assembly – Tipo das Instruções
5
Conjunto de Instruções do PIC 16F877A
6
Conjunto de Instruções do PIC 16F877A
7
Assembly do PIC
Diretivas Assembly: • • • •
ORG xxxxH ;origem, inicia montagem programa no end. xxxxH EQU ;define uma constante DB ;armazena bytes na mem. programa, define dados END ; termina arquivo assembly
8
Sumário
Introdução a Família PIC e fabricantes. Características Básicas Arquitetura do PIC Organização da Memória no PIC Registradores do PIC Assembly e Conjunto de Instruções do PIC. Endereçamento de Memória no PIC. Estrutura das Portas de I/O Interrupções Ambientes de Desenvolvimento para o PIC. Contagem do Tempo no PIC. Lendo Chaves e Botões no PIC.
9
Modos de Endereçamento do PIC
Os PICs das famílias Low-End and Middle-End podem acessar dados de três formas: • Direto • Indireto • Imediato (Ex.: CALL)
10
Sumário
Introdução a Família PIC e fabricantes. Ambientes de Desenvolvimento para o PIC. Características Básicas Arquitetura do PIC Organização da Memória no PIC Registradores do PIC Assembly e Conjunto de Instruções do PIC. Endereçamento de Memória no PIC. Estrutura das Portas de I/O Interrupções Contagem do Tempo no PIC. Lendo Chaves e Botões no PIC.
11
Família PIC16Fxx. Características Hardware: Porta A
RA4 RA3:RA0 Entradas Digitais são do tipo TTL ou Schmitt Trigger
12
Família PIC16Fxx. Características Hardware: Porta A (continuação)
RA 5 13
Família PIC16Fxx. Características Hardware: Porta B
Resistencia de pullup da porta B, configurável por software através do bit RBPU, do registrador OPTION_REG. Cuidado! Verifique a corrente máxima que uma porta pode entregar/absorver.
RB3:RB0
RB4:RB7
14
Características elétricas: Portas A e B
15
Exemplo de código de inicialização da porta A
16
PIC 16F877A - Porta C
17
PIC 16F877A - Porta D e E
18
Características elétricas: Portas C e D
19
Características elétricas: Porta E
20
Sumário
Introdução a Família PIC e fabricantes. Características Básicas Arquitetura do PIC Organização da Memória no PIC Registradores do PIC Assembly e Conjunto de Instruções do PIC. Endereçamento de Memória no PIC. Estrutura das Portas de I/O Interrupções Ambientes de Desenvolvimento para o PIC. Contagem do Tempo no PIC. Lendo Chaves e Botões no PIC.
21
Interrupções no PIC 16F877A
15 interrupções diferentes. Interrupção vetorada (endereço 0004h). Divididas em 2 grupos: • Convencionais (comuns aos dispositivos Low-end) Ex.: Estouro do Timer 0; Interrupção externa (pino RB0); Interrupção por mudança de estado (borda de subida ou descida – pinos RB4…RB7).
• Periféricos (depende do dispositivo). Exs.: Porta paralela; Conversores A/D; Recepção da USART; Transmissão da USART; Comunicação Serial MSSP (Master Syncronous Serial Port); CCP1 (Capture, Compare, PWM); CCP2; Estouro do Timer1; Timer2; Fim de Escrita na EEPROM/Flash; Colisão de Dados no Barramento; Comparadores Internos do PIC. 22
Interrupções no PIC 16F877A: Funcionamento
O que acontece na ocorrência de uma interrupção? 1. O Flag da Interrupção correspondente é marcado. 2. Se as chaves de habilitação da interrupção (geral e individual) estiverem ligadas, o sistema será paralisado e desviado para 0004h.
As chaves geral e individual para cada uma das 15 interrupções do PIC16F877A são bits específicos dos SFRs:
INTCON; PIE1; PIE2; PIR1; PIR2
23
Interrupções no PIC 16F877A: Funcionamento
A chave geral (GIE) é desligada antes de desviar para o endereço 0004h. • Logo: 2 interrupções não podem ser tratadas ao mesmo tempo. • Nada impede que o FLAG de uma segunda interrupção seja ativado. • Ao final do tratamento da interrupção, GIE deverá ser ligada (instrução RETFIE).
É necessário testar os flags de todas as INTs, pois todas são desviadas para 0004h. A ordem dos testes determina a prioridade de atendimento. As flags das INTs não são “resetados” pelo sistema ao final do tratamento da INT, logo…
24
Sumário
Introdução a Família PIC e fabricantes. Características Básicas Arquitetura do PIC Organização da Memória no PIC Registradores do PIC Assembly e Conjunto de Instruções do PIC. Endereçamento de Memória no PIC. Estrutura das Portas de I/O Interrupções Ambientes de Desenvolvimento para o PIC. Contagem do Tempo no PIC. Lendo Chaves e Botões no PIC. Exercícios
25
Ambientes de Desenvolvimento para o PIC
MPLAB IDE (Editor de código, Compilador, Depurador, Simulador, Emulador) Free Development Tools (students and educational purposes): • • • • • • • • • • • • • • •
Programmer’s text editor MPLAB SIM, high speed software simulator for PICmicro and dsPIC MCUs with peripheral simulation, complex stimulus injection and register logging. Full featured debugger Graphical project manager Visual Device Initializer (VDI) Version control support for MS Source Safe, CVS, PVCS, Subversion MPASM™ macro assembler with MPLINK™ linker and MPLIB™ librarian MPLAB ASM30 assembler, MPLAB LINK30 and Utilities for PIC24 and dsPIC devices PROCMD command line programmer for MPLAB PM3 and PRO MATE® II Visual PROCMD for simplified GUI control of MPLAB PM3 and PRO MATE® II CCS PCB C Compiler PICStart Plus programmer PICDEM-2 demo board PIC ICD in circuit debugger PIC-ICE In circuit emulator
26
Ambientes de Desenvolvimento para o PIC
Compilador C para o PIC: • Fabricante CCS • Modelos:
MPLAB: • • • •
PCB para PICs de 12 bits (série PIC12) PCM para PICs de 14 bits (séries PIC14 e PIC16) PCH para PICs de 16 bits (série PIC18) PCWH (todos)
Ambiente de Desenvolvimento Integrado (IDE) Permite compilar de dentro do ambiente (Necessita compilador CCS). Grava o PIC e Depura. Download no site da Microchip.
Gravadores: • McFLASH • McPLUS • ICD
Simuladores:
• ISIS - Proteus • GPSIM (GNU PIC Simulator) – Open Source • PIC IDE Simulator (Oshonsoft.com)
27
Ambientes de Desenvolvimento para o PIC
28
Fluxo de Desenvolvimento
29
Primeiro Exemplo de um Programa em C para o PIC // Definições do Microcontrolador #include <16F877A.H>
// arquivo de definições do microcontrolador usado
#fuses HS,NOWDT,PUT,NOBROWNOUT,NOLVP //
// bits de configuração dos fusíveis do PIC
Configurações do Projeto
#use delay(clock=4000000) // informa ao sistema o frequência de clock, para temporização //
Definição da Entradas
// Definição da Saídas #define LED0 PIN_B0
// Programa principal void main () { int tempo = 100; while(true) { output_high(LED0); // seta o pino B0 delay_ms(tempo); // aguarda 100 ms output_low(LED0); // reseta o pino B0 delay_ms(tempo); // aguarda 100 ms } }
30
Segundo Exemplo de um Programa em C para o PIC
31
Segundo Exemplo de um Programa em C para o PIC // Definições do Microcontrolador #include <16F877A.H>
// arquivo de definições do microcontrolador usado
#fuses HS,NOWDT,PUT,NOBROWNOUT,NOLVP
// bits de configuração dos fusíveis do PIC
#use fixed_io(b_outputs = PIN_B1) // saídas da porta B. Os demais serão entradas. //
Configurações do Projeto
#use delay(clock=4000000) // informa ao sistema o frequência de clock, para temporização. // Definição da Entradas #define BOTAO PIN_B0
// Definição da Saídas #define LED0 PIN_B1 // Programa principal void main () { for(;;) { if(!input(BOTAO)) output_low(LED0); else output_high(LED0); } }
32
Segundo Exemplo de um Programa em C para o PIC
33
Tipos de Dados: Linguagem C do PIC
34
Declaração e Tipos de Constantes
Constantes: • • • • • • • •
const valor1 = 10; const valor2 = -5; const valor3 = 55.12; const valor4 = ´a´; const valor5 = “teste”; const valor6 = 0x50; const valor7 = 050; const valor8 = 0b01001000;
35
Sumário
Introdução a Família PIC e fabricantes. Características Básicas Arquitetura do PIC Organização da Memória no PIC Registradores do PIC Assembly e Conjunto de Instruções do PIC. Endereçamento de Memória no PIC. Estrutura das Portas de I/O Interrupções Ambientes de Desenvolvimento para o PIC. Lendo Chaves e Botões no PIC.
36
Sumário
Introdução a Família PIC e fabricantes. Características Básicas Arquitetura do PIC Organização da Memória no PIC Registradores do PIC Assembly e Conjunto de Instruções do PIC. Endereçamento de Memória no PIC. Estrutura das Portas de I/O Interrupções Ambientes de Desenvolvimento para o PIC. Contagem do Tempo no PIC. Lendo Chaves e Botões no PIC.
37
Hardware mínimo para montagens com os PICs
Circuito de alimentação (capacitor de 0.1 µF). Circuito para programação em serie. Circuito de reset. Circuito de clock (~10 MHz). Periféricos:
• Conexão com LEDs, displays de 7 segmentos. • Conexão com botões e interruptores.
38
Hardware mínimo para montagens com os PICs
Para XTAL 4 MHz: C1=C2=27 pF. RS só é necessário em algumas configurações de HS.
Circuitos de CLOCK. Diversas configurações: • Com circuito RC, proporciona baixo custo, mas estabilidade também baixa. Permite obter uma saida de frequencia F/4 no terminal OSC2/CLKOUT. • Para melhorar a estabilidade se implementa circuitos com cristal de quarzo (3 configurações): LP (baixo consumo), de 0 a 200 kHz. XT, de 200 kHz a 4 MHz. HS (alta velocidade), de 4 MHz a 10 MHz (20 MHz para PICs de média e alta linha). 39
Hardware mínimo para montagens com os PICs
Para a interconexão de periféricos é necessário consultar as características de hardware das portas A e B.
Resistencia de pull-up da porta B, configurável por software através do bit RBPU, do registrador OPTION_REG.
Cuidado! Verifique a corrente máxima que uma porta pode entregar/absorver.
Configuração mínima do PIC16F84 sem periféricos, com um clock de 4 MHz
40
Hardware mínimo para montagens com os PICs
Periféricos básicos de saída: LEDs e display de 7 segmentos.
• Como conectamos mais de um display? • Quantos números de displays podemos conectar? • O que acontece com o consumo?
41
Hardware mínimo para montagens com os PICs
Periféricos básicos de entrada: botões e interruptores. • Eliminação de debounce por software. • Eliminação de debounce por hw usando as carcaterísticas do PIC. • Eliminação de debounce por hw externo.
Variantes: teclado matricial.
42
Relés e motores DC
O par darlington não é imprescindível.
Aplicações com pequenos relés um único transistor bipolar é suficiente.
A velocidade do motor DC é controlada com PWM e pelo circuito integrado 293D, na figura ao lado.
O sentido do giro determina a polaridade. 43
Motores de passo e Áudio
Gerar um som:
• Para gerar um som é necessário gerar um sinal de onda quadrada de período apropriado. • O capacitor filtra a parte contínua e gera o tom desejado.
Motor de passo com CI de controle e diodos. 44