Académique Documents
Professionnel Documents
Culture Documents
Sistemas Microcontrolados
Data Memory
8 wires
I/O Ports
31 X 21 Stack Memory
21 wires
Timers
Clock Generation
8-Bit CPU
8 wires 16 wires
Program Memory
Com memrias de dados e programa separados (Arquitetura de Harvard) possvel se realizar pipelining
Serial Ports
Data EEPROM
8 wires
Other Peripherals
Data Memory
8 wires
I/O Ports
31 X 21 Stack Memory
21 wires
Timers
Clock Generation
8-Bit CPU
8 wires 16 wires
Program Memory
Serial Ports
Data EEPROM
8 wires
Other Peripherals
Memria de Programa
Memria de Programa 21 bits de endereo X 16 Program Counter: Registro de 21 bits Na famlia PIC18, a memria de programa comea no endereo 0x000000 e vai at 0x1FFFFF.
0x1FFFFF
Jump
Memria de Dados
Pilha
Pilha 31 posies de 21 bits Portas E/S nmero varia (A, B, C...). Registro TRIS determina direo da porta (TRISA, TRISB,..) Timers RTC, etc
Pinos E/S podem ser digitais ou analgicos. Registro ADCON1 usado para especificar se pinos das portas so digitais (1) ou analgicos (0), que a configurao default
Modelo de Programao
Todos modelos contm pelo menos Registro Geral de Arquivos no espao de endereamento de 0x000 at 0x07F, e ullm Registro de Funes Especiais no espao de 0xF80 at 0xFFF, ou 256 bytes de RAM
0x004
0x003
0x002 0x001 0x000
GPRs
8 bits
0xFE0
0xFE8
0xFF4 0XFF3
File Select Register 1 High (FSR1H) File Select Register 1 Low (FSR1L) File Select Register 2 High (FSR2H)
File Select Register 2 Low (FSR2L)
Endereo de 12 bits
4 bits
8 bits
No ou local do banco
Access bank
0x07
0x000
0x07F
0x012
0x000
Bank Select Register (4 bits) + endereo 8 bits = endereo de 12 bits a-bit = 0 access bank a-bit = 1 uso do BSR a-bit um bit que faz parte da instruo
0x32F
0x000
Como local de memria 0x092 acessado? Bank Select Register (4 bits) + endereo 8 bits = endereo de 12 bits a-bit = 0 access bank a-bit = 1 uso do BSR
Opcode
d-bit
Destino da instruo
Programao: Soma
a-bit MOVLW 0x06 ADDLW 0x02 MOVWF 0x00, ; OU MOVLW 0x06 ADDLW 0x02 MOVWF 0x00, 0 ; coloca um 0x06 em W ; soma 0x02 com W ; copia W para access bank register 0x00 outra verso usando palavra-chave ACCESS ; coloca 0X06 em W ; soma 0X02 com W ACCESS; copia W para registro access bank 0
Soma 6 com 2 e armazena soma no endereo do registro de banco 0X000. Letra L em MOVLW indica Literal. Instruo Literal usada para constantes.
Programao: Soma
Soma 6 com 2 e armazena soma no endereo 0X200 do banco de registro de dados
MOVLW 0x06 ADDLW 0x02 ; coloca 0x06 em W ; soma 0x02 com W
MOVLB 2
MOVWF 0x00, 1
outra verso usando palavra-chave BANKED ; coloca 0x06 em W ; soma 0x02 com W ; carrega BSR com banco 2 BANKED ; copia W para registro de dados 0x00 do ; banco 2 ou endereo 0x200
outra verso sem indicao de banco ; coloca 0x06 em W ; soma 0x02 com W ; carrega BSR com banco 2 ; copia W para registro de dados 0x00 do ; banco 2 ou endereo 0x200
Programao I/O
Uso da Porta A: coloca um zero no bit 0 e um 1 no bit 1; bits ligados em LEDS
MOVLW 0x7F
MOVWF ADCON1 MOVLW 0x00 MOVWF TRISA MOVLW 0x02 MOVWF PORTA ; seleciona pinos como digitais ; coloca 0x00 no registro de direo de PORTA ; para selecionar operao de sada ; ; coloca 0x02 na porta A
Registro ADCON1 usado para indicar que pinos das portas so analgicos (default) ou digitais. Registro TRIS usado para indicar direo (1 - IN ou 0 -OUT) da porta.
Programao: Multiplicao
Multiplica 3 por 100 e armazena produto em 0x010 e 0x011. Registro especial necessrio porque o produto duas vezes o tamanho do multiplicador.
; coloca 3 em W ; multiplica por decimal 100 ; salva low product em 0x010 ; salva low product em 0x011
Aps execuo, Data Register 0x010 contm 0x2C e 0x11 contm 0x01. 0x12C = 300 decimal.
A instruo MOVFF de 32 bits e no tem a-bit Os endereos da fonte e destino so armazenados na prpria instruo.
MOVLW 3 MULLW 0x64 LFSR 0, 0x010 MOVFF PRODL, POSTINC0 MOVFF PRODH, INDF0
; coloca 3 em W ; multiplica por 100 ; posio de endereo 0x010 em FSR0 ; salva low product e incrementa FSR0 ; salva high product em 0x011
FSR0 contm endereos 0x010 e 0x011. POSTINC0 em MOVFF incrementa FSR0 aps us-lo para enderear posio de memria. Operandos INDF0, INDF1 e INDF2 so usados para especificar endereos indiretos 0, 1 ou 2, respectivamente de FSR0, FSR1 e FSR2.
Programando E/S
Dois LEDs conectados aos bits 0 e 1 da Porta A devem ser ativados
MOVLW 0x7F MOVWF ADCON1 MOVLW 0, 0x00 MOVWF TRISA MOVLW 0x02 MOVWF PORTA
; ; programa toda porta com digitais ; programa porta A como sada ; aciona LEDs dos bits 0 e 1
Registro de Status
0
OV
DC
Osciladores no PIC
Nos modos de Osciladores XT, LP, HS ou HSPLL, um cristal ou ressonador de cermica conectado aos pinos OSC1 e OSC2.
HSPLL
Usado com PLL interno e apropriado quando questes de EMI esto em jogo
Oscilador RC
Oscilador RCIO
Dispositivos permitem que a fonte de clock do sistema possa ser chaveada do oscilador principal para uma fonte de clock de baixa frequncia. Essencialmente existem trs fontes de clock para os dispositivos 1. Osciladores primrios: Modo Cristais e Ressonadores Externos; Modos RC Externo; Modos Clock Externos e Bloco Oscilador Interno. O modo definido em POR pelo contedo do Configuration Register 1H 2. Osciladores Secundrios: Fontes externas no conectadas a OSC1 e OSC2. Essas fontes podem continuar a operar mesmo aps o controlador se colocado em um modo de gerenciamento de energia. No PIC18F1220/1320 existe a opo o oscilador do Timer1 (em todos os modos de gerenciamento de energia Timer1 funciona como base de tempo para funes como real-time clock 3. Bloco Oscilador Interno: alm de ser uma fonte de clock primria, pode ser usado como fonte de clock no modo de gerenciamento de energia. A fonte INTRC tambm usada como fonte de clock em WDT e Fail-Sage Clock Monitor
Canal 2
Canal 3 Canal 4 Canal 5 Canal 6 Canal 7 multiplexador
Conversor A/D
ADCS1
ADCS0
CHS2
CHS1
CHS0
GO/DONE
NOT USED
ADON
ADON (A/D On bit): 1 enabled; 0 disabled GO/DONE(A/D conversion Status bit; 1 in progress 0 idle CHS2:CHS0 (Analog Channel Select bits): 111 (no valid)
ADRESL registro guarda 8 bms do resultado ADRESH registro guarda 2 bMs do resultado ADCON1 8 bits - resoluo igual a 19,53 mV
ADRESL registro guarda 8 bms do resultado ADRESH registro guarda 2 bMs do resultado ADCON1 8 bits - resoluo igual a 19,53 mV
Registros
Registro ADCON0 controla a operao do mdolo A/D Registro ADCON1 configura as funes dos pinos das portas Registro ADCON2 configura a fonte do clock A/D, tempo de aquisio e justificao
Para fazer uma converso A/D 1. Configure o mdulo A/D 1.1 Configure os pinos analgicos, referncia da tenso e I/O digital (ADCON1) 1.2 Selecione o canal de entrada (ADCON0) 1.3 Selecione o tempo de aquisio (ADCON2) 1.4 Selecione o Clock de converso (ADCON2) 1.5 Ligue o mdulo A/D (ADCON0) 2. Configure a interrupo A/D (se desejado) 2.1 Zere o bit ADIF 2.2 Coloque em 1 o bit ADIE 2.3 Coloque em 1 o bit GIE 3. Espere o tempo de aquisio requisitado (se requisitado) 4. Comece a converso: 4.1 Set bit GO/DONE (ADCON0) 5. Espere
Interrupes
Alta prioridade: Vetor de Interrupo 000008H Baixa Prioridade: Vetor de Interrupo 0000018H Uso de GOTO Programao controlada por 10 registros: RCON, INTCON, INTCON2, INTCON3, PIR1, PIR2, PIE1, PIE2, IPR1, IPR2 Microchip recomenda que se utilize os header files do MPLAB-IDE para os nomes simblicos dos bits desses registros (isso permite que o assemblador/compilador automaticamente coloque os valores desses bits em seus respectivos registros)
Fontes de Interrupo
Interrupes
Em geral, cada fonte de interrupo tem trs bits para controlar sua operao. As funes desses bits so:
Bit de flag (IF) para indicar que ocorreu uma interrupo provinda da fonte; Bit de habilitao (IE) de interrupo da fonte Bit indicador de prioridade (IP) da interrupo (setado alta prioridade; resetado baixa prioridade)
BIT IPEN em RCON (bit 7) habilita funo de prioridade (setado habilita; resetado desabilita; default desabilitado)
Atendimento da interrupo
Bit que habilita globalmente as interrupes resetado (se IPEN = 0, esse bit GIE; se IPEN = 1, esse bit ser ou GIEH ou GIEL) Interrupo de prioridade mais alta pode interromper uma de prioridade mais baixa Endereo de retorno colocado na pilha e vetor de interrupo carregado em PC Registro WREG, Status e BSR so salvos na pilha de rpido retorno (fast return stack). Se uma instruo fast return from interrupt no estiver sendo usada, o programa deve salvar esses registros no inicio da ISR A fonte da interrupo pode ser descoberta fazendo um polling nos bit de flags de interruo Os bits dos flags de interrupo devem ser resetados por software A instruo RTIFIE retorna da interrupo e seta o bit GIE (GIEH ou GIEL se prioridade esta habilitada) rehabilitando as interrupes
Registro RCON
Contm bits usados para determinar a causa do ltimo Reset ou Wake-up do modo de baixo consumo de energia Tambm contm o bit que habilita as prioridades das interrupes (IPEN)
Registros INTCON
Os Registros INTCON podem ser lidos ou escritos e contm vrios bits de habiliao, prioridade e flag Bits de Flag so setados quando ocorre uma interrupo, no importando o estado do bit de habilitao correspondente (do dispositivo). O software do usurio deve se assegurar que os bits de flag de interrupo apropriados estejam resetados antes de habilitar uma interrupo. Essa estatgia permite se realizar um polling por software.
Interrupo em TMR0
No modo 8-bits (default) do contador, um overflow (FFh->00h) no registro TMR0 ir setar o bit de flag TMR0IF No modo 16-bits, um overflow (FFFFh->0000h), um overflow nos registro TMR0H:TMR0L ir setar o flag TMR0IF Esta interrupo pode ser habilitada/desabilitada setando/resetando o bit de enable (TMR0IE, bit 5 de INCTCON) A prioridade para Timer0 determinada pelo valor contido no bit de prioridade da interrup (TMR0IP, bit 2 de INTCON2)
PORTB Interrupt-on-Change
Uma mudana de estado nos bits 4 a 7 de PORTB seta um flag de interrupo (RBIF, bit 0 de INTCON) A interrupo pode ser habilitada/desabilitada setando/resetando o bit de habilitao de interrupo (RBIE, bit 3 de INTCON) A prioridade de interrupo para PORTB interrupt-on-change determinada pelo valor contido no bit de prioridade (RBIP, bit 0 de INTCON2)
TIMER 0
Contador/Temporizador programvel de 8/16 bits Pode ser lido e escrito Possui um pre-escaler programvel de 8 bits Fonte de clock selecionvel interno ou externo Gera interrupo em overflow Borda selecionvel quando usa clock externo
TIMER 1
Contador (sincrono ou assincrono)/Temporizador programvel de 16 bits (dois registros: TMR1L e TMR1H) Pode ser lido e escrito Resetvel por um trigger de evento especial em CCP Fonte de clock selecionvel interno ou externo Gera interrupo em overflow Status da operao do clock do sistema (pode ser usado como Real-time clock)
TIMER 2
Temporizador de 8 bits (RegistroTMR2) Registro de Perodo de 8 bits (PR2) Pode ser lido ou escrito (ambos registros) Pre-escaler selecionvel por software Post-escaler selecionvel por software Interrompe na contagem TMR2 quando atinge tempo PR2 Pode ser usado como tempo base PWM para o modo PWM do mdulo CCP
Tipos de Reset
Sleep (PICF1220/1320)
O oscilador da CPU desativado e o programa para de executar Uso da funo Sleep ( ), em C. O WDT pode ser usado para acordar o processador Interrupes podem acordar o processador Vantagem: economia de energia