Microcontroladores Ricardo Pannain Microcontroladores Tpicos Conceitos Bsicos de
Microcontroladores Ricardo Pannain
Microcontroladores - Tópicos • • Conceitos Básicos de Arquitetura de Computadores Arquitetura Básica de um Microcontrolador Estudo de caso – PIC 16 F 84 Instruction Set – PIC 16 F 84 Programando em Linguagem de Montagem Sistema de Desenvolvimento MPLAB Exemplos de utilização Referências Bibliográficas Ricardo Pannain
1. Conceitos Básicos de Arquitetura de Computadores • Arquitetura Havard X von Neuman Ricardo Pannain
1. Conceitos Básicos de Arquitetura de Computadores • Organização Básica de um Computador Digital Ricardo Pannain
1. Conceitos Básicos de Arquitetura de Computadores • Organização Básica de um Computador Digital Ricardo Pannain
1. Conceitos Básicos de Arquitetura de Computadores • Arquitetura RISC 2 Time IF 4 ID 6 EX Ricardo Pannain 8 MEM 10 WB
1. Conceitos Básicos de Arquitetura de Computadores • Arquitetura RISC – Execução de instruções Ricardo Pannain
1. Conceitos Básicos de Arquitetura de Computadores • RISC- Execução de instruções: Data Hazard Ricardo Pannain
1. Conceitos Básicos de Arquitetura de Computadores • RISC- Execução de instruções: Data Hazard Ricardo Pannain
1. Conceitos Básicos de Arquitetura de Computadores • RISC- Execução de instruções: Data Hazard Ricardo Pannain
1. Conceitos Básicos de Arquitetura de Computadores • Exemplo de Arquitetura RISC - MIPS Ricardo Pannain
2. Arquitetura Básica de um Microcontrolador • Microcontrolador Ricardo Pannain
2. Arquitetura Básica de um Microcontrolador • Microcontrolador Ricardo Pannain
2. Arquitetura Básica de um Microcontrolador • Microcontrolador – Unidade de Memória Ricardo Pannain
2. Arquitetura Básica de um Microcontrolador • Microcontrolador – Unidade Central de Processamento Ricardo Pannain
2. Arquitetura Básica de um Microcontrolador • Microcontrolador – CPU Memória Ricardo Pannain
2. Arquitetura Básica de um Microcontrolador • Microcontrolador – Unidade de E/S – Portas de entrada, saída e bi-direcionais Ricardo Pannain
2. Arquitetura Básica de um Microcontrolador • Microcontrolador – Porta Serial Ricardo Pannain
2. Arquitetura Básica de um Microcontrolador • Microcontrolador – Unidade de Timer Ricardo Pannain
2. Arquitetura Básica de um Microcontrolador • Microcontrolador – Watchdog Ricardo Pannain
2. Arquitetura Básica de um Microcontrolador • Microcontrolador – Conversor A/D Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Microcontrolador PIC 16 F 84 – Microcontrolador RISC de 8 bits Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Memória Flash – Memória de Programa • Memória EEPROM – Memória de Dados (que devem ser • mantidos sem alimentação) • Memória RAM – Memória de Dados (usada pelo programa durante sua execução) • Free-Run Timer – Registrador de 8 bits que trabalha independente do programa, que é incrementado a cada 4 ciclos de clock • Unidade Central de Processamento Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Aplicações – Aplicações automobilísticas – Controle de equipamentos industriais – Tranca de portas – Dispositivos de segurança Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Ciclo de instrução/Clock Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Pipelining Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Pinagem Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Pinagem • • • • • Pin no. 1 RA 2 Second pin on port A. Has no additional function Pin no. 2 RA 3 Third pin on port A. Has no additional function. Pin no. 3 RA 4 Fourth pin on port A. TOCK 1 which functions as a timer is also found on this pin Pin no. 4 MCLR Reset input and Vpp programming voltage of a microcontroller Pin no. 5 Vss Ground of power supply. Pin no. 6 RB 0 Zero pin on port B. Interrupt input is an additional function. Pin no. 7 RB 1 First pin on port B. No additional function. Pin no. 8 RB 2 Second pin on port B. No additional function. Pin no. 9 RB 3 Third pin on port B. No additional function. Pin no. 10 RB 4 Fourth pin on port B. No additional function. Pin no. 11 RB 5 Fifth pin on port B. No additional function. Pin no. 12 RB 6 Sixth pin on port B. 'Clock' line in program mode. Pin no. 13 RB 7 Seventh pin on port B. 'Data' line in program mode. Pin no. 14 Vdd Positive power supply pole. Pin no. 15 OSC 2 Pin assigned for connecting with an oscillator Pin no. 16 OSC 1 Pin assigned for connecting with an oscillator Pin no. 17 RA 2 Second pin on port A. No additional function Pin no. 18 RA 1 First pin on port A. No additional function. Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Geração de clock - osciladores Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Reset Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Unidade Central de Processamento Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Unidade Lógica e Aritmética Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • PIC 16 F 84 - Diagrama de Blocos Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Registro de Estado Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Registro de Estado • • bit 0 - C - bit de carry bit 1 - DC - bit de carry para operações BCD bit 2 - Z - bit de zero bit 3 - PD - Powder-down: 1 quando a fonte é ligada e 0 quando executa instrução sleep • bit 4 - TO - Time-out : 0 - watchdog overflow e 1 - caso contrário • bit 6: 5 - RP 1 -RP 0 - bits de seleção de bancos: 00 = banco zero e 01 = banco 1 para endereçamento direto de memória • bit 7 - IRP (Register Bank Select) seleciona banco de memória para endereçamento indireto de memória - 1 = banco 2 e 3 ; 0 = banco 0 e 1 Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Registro de Opção Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Registro de Opção Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Registro de Opção • • • bit 0: 2 - PS 0, PS 1, PS 2 - Define escala do timer bit 3 – PSA: assinala presacaler entre TMR 0 e watchdog. bit 4 T 0 SE: Source Edge Select bit 5 TOCS: TMR 0 Clock Source Select bit 6 INTEDG: Interrupt Edge Select bit 7 RBPU: PORTB Pull-up Enable Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Portas: registrador conectado a pinos de entrada e saída • TRISA – 85 h • TRSIB – 86 h Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • PORTB • Tem um resistor pull-up interno pra definição de nível 1 – reset no RPBU bit do registrador de opção • Definição de input/output – 0/1 • Exemplo – pinos 0, 1, 2 e 3 como entrada e 4, 5, 6 e 7 como saída: clrf STATUS clrf PORTB bsf STATUS, RP 0 movlw 0 x 0 f movwf TRISB ; Bank 0 ; PORTB=0 ; Bank 1 ; define pinos de entrada e saída ; escreve no registrador TRISB Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • PORTA • Pino 4 tem dupla função: entrada externa para o timer TMR 0 (programação através do bit T 0 CS do regsitrador de opção) • Definição de input/output – 0/1 • Exemplo – pinos 0, 1, 2, 3 e 4 como entrada e 5, 6 e 7 como saída: clrf STATUS clrf PORTA bsf STATUS, RP 0 movlw 0 x 1 f movwf TRISA ; Bank 0 ; PORTA=0 ; Bank 1 ; define pinos de entrada e saída ; escreve no registrador TRISA Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Organização de Memória: • Dois bancos de memória: dados e programa. • Dados: EEPROM e registradores GPR • Programa: FLASH Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Memória de Programa: – Memória FLASH 1024 X 14 bits – endereço 0000 h – reset – endereço 0004 h – vetor de interrupção • Memória de Dados – EEPROM: 64 X 8 • Não é diretamente acessada. É acessada através EEADR e EEDATA – RAM: registradores GPR (General Purpose Register) • localização 0 x 0 C até 0 x 4 F – 68 posições • Registrador SFR (Special Function Register) – Ocupam as 12 primeiras posições dois bancos de memória Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Bancos de Memória – Selecionados via bits RP 0 e RP 1 do registrador de STATUS – Exemplo: bcf STATUS, RP 0 ; zera o bit RP 0 do registrador STATUS, ; selecionando o banco 0 bsf STATUS, RP 0 ; seta o bit RP 0 do registrador STATUS, ; selecionando o banco 1 – MACROS BANK 0 macro BANK 1 macro bcf STATUS, RP 0 bsf STATUS, RP 0 endm Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Program Counter – PC: registrador de 13 bits – Contém o endereço da instrução que irá ser executada • Pilha: 8 palavras de 13 bits – instruções CALL, RETURN, RETWL ou RETFIE Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Programação – para utilização da memória de programa, o microcontrolador deve estar setado em um modo especial, conectando o pino MCLR ao Vdd (4, 5 a 5, 5 V). A Memória de programa é programada serialmente usando dois pinos data/clock. • Modos de endereçamento: direto ou indireto Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Endereçamento direto • Exemplo de acesso a registradores SFR bsf STATUS, RP 0 ; Bankl movlw 0 x. FF ; w=0 x. FF movwf TRISA ; address of ; TRISA ; register is ; taken ; from ; instruction ; movwf Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Endereçamento indireto • Exemplo Apagar 16 posições da RAM movlw 0 x 0 C ; endereço inicial movwf FSR ; FSR aponta 0 x 0 C LOOP: clrf INDF ; INDF = 0 incf FSR ; endereço ++ btfss FSR, 4 ; tudo apagado? goto loop ; não, volta CONTINUE : sim, OK Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Interrupções Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Interrupções – Registrador de Controle INTCON Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 bit 0 RBIF (RB Port Change Interrupt Flag bit) Bit which informs about changes on pins 4, 5, 6 and 7 of port B. 1=at least one pin has changed its status 0=no change occured on any of the pins bit 1 INTF (INT External Interrupt Flag bit) External interrupt occured. 1=interrupt occured 0=interrupt did not occur If a rising or falling edge was detected on pin RB 0/INT, (which is defined with bit INTEDG in OPTION register), bit INTF is set. Bit must be cleared in interrupt subprogram in order to detect the next interrupt. bit 2 T 0 IF (TMR 0 Overflow Interrupt Flag bit) Overflow of counter TMR 0. 1= counter changed its status from FFh to 00 h 0=overflow did not occur Bit must be cleared in program in order for an interrupt to be detected. Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 bit 3 RBIE (RB port change Interrupt Enable bit) Enables interrupts to occur at the change of status of pins 4, 5, 6, and 7 of port B. 1= enables interrupts at the change of status 0=interrupts disabled at the change of status If RBIE and RBIF were simultaneously set, an interrupt would occur. bit 4 INTE (INT External Interrupt Enable bit) Bit which enables external interrupt from pin RB 0/INT. 1=external interrupt enabled 0=external interrupt disabled If INTE and INTF were set simultaneously, an interrupt would occur. bit 5 T 0 IE (TMR 0 Overflow Interrupt Enable bit) Bit which enables interrupts during counter TMR 0 overflow. 1=interrupt enabled 0=interrupt disabled If T 0 IE and T 0 IF were set simultaneously, interrupt would occur. Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 bit 6 EEIE (EEPROM Write Complete Interrupt Enable bit) Bit which enables an interrupt at the end of a writing routine to EEPROM 1=interrupt enabled 0=interrupt disabled If EEIE and EEIF (which is in EECON 1 register) were set simultaneously , an interrupt would occur. bit 7 GIE (Global Interrupt Enable bit) Bit which enables or disables all interrupts. 1=all interrupts are enabled 0=all interrupts are disabled Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Tipos de interrupções – Término de escrita de dados na EEPROM – TMR 0 interrupção causada por timer overflow – Interrupção pela alteração dos pinos RB 4 à RB 7 da porta B – Interrupção externa do pino do microcontrolador RB 0/INT Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • PUSH e POP no tratamento de interrupções Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Exemplo de como salvar registradores no tratamento de interrupção – – – Testar o banco corrente Armazenar o registrador W do banco corrente Armazenar o registrador STATUS no banco 0 Executar a rotina de interrupção (ISR) Restaurar o registrador STATUS Restaurar o registrado W Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 Push btfss STATUS, RP 0 ; banco 0 goto RPOCLEAR ; sim bcf STATUS, RP 0 ; não, vá para banco 0 movwf W_TEMP ; salva registrador W swapf STATUS, W ; W <- STATUS movwf STATUS_TEMP ; STATUS_TEMP <- W bsf STATUS_TEMP, 1 ; RP 0(STATUS_TEMP)=1 goto ISR_code ; push completo RPOCLEAR movwf W_TEMP ; salvo registrador W swapf STATUS_W ; W <- STATUS movwf STATUS_TEMP ; STATUS_TEMP <- W ; ISR_code ; ; rotina de interrupção ; Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 Pop swapf STAUS_TEMP movwf STATUS btfss STATUS, RP 0 goto Return_WREG bcf STATUS, RP 0 swapf W_TEMP, F swapf W_TEMP, W bsf STATUS_RP 0 retfie Return_WREG swapf W_TEMP, F swapf W_TEMP, W retfie ; W <- STATUS_TEMP ; STATUS <- W ; banco 1 ? ; não ; sim vá para banco 0 ; retorna conteúdo de W ; ; VOLTO BANCO 1 ; terminou POP ; retorna conteúdo de W ; ; terminou POP Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • MACROS para POP e PUSH macro movwf W_TEMP swapf W_TEMP, F BANK 1 swapf OPTION_REG, W movwf OPTION_TEMP BANK 0 swapf STATUS, W movwf STAT_TEMP endm ; W_TEMP <- W ; swap W_TEMP, F ; macro para mudar para banco 1 ; W <- OPTION_REG ; OPTION_TEMP <- W ; macro para mudar para banco 0 ; W <- STATUS ; STAT_TEMP <- W POP macro swapf STA_TEMP, W movwf STATUS BANK 1 swapf OPTION_TEMP, W movwf OPTION_REG BANK 0 swapf W_TEMP, W endm ; W<- STAT_TEMP ; STATUS <-W ; macro para mudar para banco 1 ; W<-OPTIO_TEMP ; OPTION_REG <- W ; macro para mudar para banco 0 ; W<- W_TEMP Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Interrupção externa via pino RB 0/INT do microcontrolador – triggered pela borda de subida do sinal ( se bit INTEDG=1 no OPTION[6]) ou de descida (INTEDG = 0) – quando temos sinal em INT, INTF =1(INTCON[1]) – para desabilitar, fazer INTE = 0 (INTCON[4]) • Interrupção TMR 0 counter overflow – seta T 0 IF (INTCON[2]) • Interrupção pela alteração dos pinos 4, 5, 6 e 7 da porta B – seta RBIF (INTCON[0]) • Interrupção de fim de escrita na EEPROM – seta EEIF (INTCON[6]) Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Inicialização de interrupções – Inicialização da interrupção externa no pino RB 0 clrf INTCON ; todas interrupções desabilitadas movlw B’ 00010000’ ; apenas a interrupção externa é habilitada bsf INTCON, GIE ; ocorrências de interrupções permitida Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Exemplo: Como o PIC 16 F 84 tem apenas uma localização onde o endereço de uma sub- rotina é armazenado, precisamos verificar se existe uma rotina de interrupção sendo executada, quando ocorre uma outra interrupção. org ISR_ADDR ; endereço da rotina de interrupção btfsc INTCON, GIE ; GIE está OFF ? goto ISR_ADDR ; não, volte para o início PUSH ; macro PUSH btfsc INTCON, RBIF ; mudanças portb[4. . 7] ? goto ISR_PORTB ; vá para o tratamento relativo às mudanças btfsc INTCON, INTF ; ocorreu interrupção externa ? goto ISR_RB 0 ; vá para o tratamento relativo à int. ext. btfsc INTCON, TOIF ; overflow do timer TMRO ? goto ISR_TMRO : vá p/ o tratamento relativo overflow timer BANK 1 ; macro BANK 1 btfsc EECON 1, EEIF ; fim da escrita na EEPROM ? goto ISR_EEPROM : vá p/ o tratamento relativo fim escrita EEPROM BANK 0 ; macro BANK 0 Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Exemplo – continuação ISR_PORTB ; ; goto END_ISR ISR_RB 0 ; ; goto END_ISR ISR_TMRO ; ; goto END_ISR ISR_EEPROM ; ; goto END_ISR POP RETFIE ; macro POP ; retorna e seta o bit GIE Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Timer TMR 0 – 8 bits (0 a 255) Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Diagrama de tempo de interrupção com o timer • transição 255 para 0 – T 0 IF é setado Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Exemplo: Determinar o número de voltas de um motor Ricardo Pannain
3. Estudo de Caso PIC 16 F 84 • Exemplo – Inicialização do timer pra sinal com borda de decida de fonte de clock externo clrf TMRO clrf INTCON bsf STATUS, RP 0 movlw B’ 00110001’ ; TRMO = 0 ; interrupções e T 0 IF=0, desabilitados ; banco 1 pelo OPTION_REG ; escala 1: 4, borda de descida para clock ; externo, pull up na porta B ativada ; OPTION_REG <- W movwf OPTION_REG TO_OVFL btfss INTCON, T 0 IF ; testa bit overflow goto TO_OVFL ; interrupção não ocorreu, espere ; ; parte do programa que processa o número de voltas do motor ; goto TO_OVFL Ricardo Pannain
- Slides: 67