Escolar Documentos
Profissional Documentos
Cultura Documentos
Baseado no PIC18F4520
ARQUIVO 2 -PIC18F4520
1
SUMRIO ARQUIVO 2
OBJETIVOS
Ao final da aula o aluno dever ser capaz de: 1. Mapear a memria do microcontrolador segundo o seu tipo e funo. 2. Classificar os diferentes tipos de Resets . 3. Determinar a funo dos circuitos especiais dedicados a evitar travamento. 4. Configurar os pinos do microcontrolador como pinos digitais.
MEMRIAS DO PIC18F4520
O PIC18F4520 possui trs tipos de memria integrados. So elas: memria de programa Flash-ROM, memria de dados RAM e memria no-voltil EEPROM. A memria neste microcontrolador est dividida da seguinte forma: Memria de programa (Flash-ROM): 32kx16 Memria RAM (de dados): 1536x8 Memria EEPROM: 256x8
MEMRIA DE PROGRAMA
32k (0000h - 7FFFh) de memria de programa com capacidade de armazenamento de 16 bits em cada localidade. O vetor Reset o endereo 0000h. Incio do processamento. Dois vetores de interrupo: os endereos 0008h (alta prioridade) e 0018h (baixa prioridade). Plha (stack) de 31 nveis. Isso permite ter aninhadas at 31 chamadas a sub-rotinas. A memria de programa do PIC18F4520 do tipo Flash-ROM.
ACCESS BANK
Desenvolvido para facilitar acesso memria quando a aplicao exigir o uso de no mximo 128 localidades de memria de dados. Com o access bank no necessrio o chaveamento entre bancos para acessar uma localidade de memria. Utiliza um segmento do banco 0 e um segmento do banco 15 para formar um nico banco de memria no qual podemos acessar tanto os SFRs quanto os GPRs.
ACCESS BANK
O acesso memria de dados via Access Bank no leva em considerao o valor armazenado no registrador BSR, til na otimizao de cdigos em Linguagem C. Possibilidade de copiar uma informao armazenada em uma localidade da memria para outra utilizando uma nica instruo, a MOVFF.
10
MEMRIA EEPROM
O PIC18F4520 possui 256 localidades de memria EEPROM que podem ser utilizadas para o armazenamento de dados que no devem ser perdidos, mesmo que a energia seja desligada. A memria EEPROM classificada na arquitetura interna do PIC18F4520 como um perifrico e ocupa a faixa de endereos 00h - FFh. O acesso memria EEPROM feito por meio de quatro SFRs, que so: EECON1 EECON2 EEADR EEDATA Os SFRs EECON e EECON2 so registradores de controle, enquanto os SFRs EEADR e EEDATA recebem, respectivamente, o endereo e o dado que ser lido ou escrito.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco
11
RESET
Quando ocorre um Reset, a execuo do programa interrompida e o microcontrolador volta ao incio do processamento. O endereo inicial de processamento dos microcontroladores PIC o 00000h. O PIC18F4520 pode ser resetado de vrias formas diferentes, podendo ser identificadas, por software, a origem do Reset e tomadas as decises pertinentes. Um Reset no PIC18F4520 pode ser provocado por:
Power-on Reset (POR) Reset em operao normal atravs do pino /MCLR
12
13
POWER-ON RESET
O POR o primeiro Reset que ocorre no microcontrolador. Em outras palavras, o POR ocorre quando o circuito energizado. A figura abaixo mostra um circuito que pode e deve ser usado como opo para a criao de um delay para o POR. Esse um circuito que, alm criar um delay no POR, ajuda a proteger o microcontrolador contra travamento em caso de queda na tenso de alimentao por breves perodos de tempo. O valor recomendado pelo fabricante para o resistor R deve ser menor que 40k para que no sejam violadas as especificaes eltricas do componente. O resistor R1 deve ser menor que 1k para limitar a corrente no pino /MCLR. O diodo D ajuda a descarregar o capacitor C mais rapidamente quando a tenso de alimentao desligada.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco
14
O PWRT prov um time-out tpico de 72ms aps o POR. Um circuito RC interno o responsvel pela temporizao.
O PWRT um recurso que precisa ser ativado e o seu objetivo manter o microcontrolador em Reset at que a tenso de alimentao esteja estabilizada. O delay gerado pelo PWRT at o time-out pode variar conforme o chip, com a temperatura ou com a tenso de alimentao VDD. O PWRT ativado na hora da gravao pelos bits de configurao.
15
O Oscillator Start-up Timer um circuito que prov um delay de 1024 ciclos de clock do oscilador principal, aps o Power-up Timer, antes de colocar o circuito oscilador em funcionamento. Isso garante que o oscilador esteja estabilizado na sua partida, evitando travamento. O Oscillator Start-up Timer s invocado para os modos de funcionamento do oscilador XT, LP e HS no POR ou quando o microcontrolador acorda aps ter entrado no modo Sleep.
16
Quando o PLL est habilitado, a sequncia time-out que segue o POR diferente dos outros modos de funcionamento do oscilador. Uma parte do Power-up Timer utilizada para prover um time-out suficiente para o PLL estabilizar a frequncia do oscilador principal. O delay gerado para o PLL de 2ms e ocorre aps o Start-up Timer-out (OST).
17
FUNO /MCLR
Em funcionamento normal, o pino /MCLR (Master Clear) precisa estar recebendo nvel '1'. Quando o nvel lgico nele forado a '0', o microcontrolador resetado e s sai do Reset quando o nvel lgico retornar a '1'. A figura abaixo uma proposta para o hardware a ser conectado ao pino /MCLR, incluindo o boto Reset.
18
19
20
INSTRUO RESET
A instruo RESET pertence ao set de instrues dos microcontroladores da srie PIC18. Essa instruo, quando executada, provoca um /MCLR Reset por software. O bit RCON</RI>=0 sinaliza que o ltimo Reset foi provocado pela instruo RESET.
21
Antes de ocorrer o desvio, no entanto, o endereo de retorno armazenado em uma pilha, chamada Return Adress Stack, para que o programa possa voltar ao ponto de onde ocorreu o desvio.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco
22
Da mesma forma, se no registrador STKPTR<4:0> estiver armazenado o valor 0 e for executado mais um retorno, ocorre um underflow no Return Adress Stack. Na sequncia, o o PC carregado com o valor 0 e o bit STKUNF (STKPTR<6>) ser setado. Ocorrer um Reset se o bit de configurao Stack Overflow Reset estiver ativado.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco
23
Os bits STKFUL e STKUNF, respectivamente STKPTR<7:6>, podem ser testados aps a ocorrncia de um Reset para o programa detectar se o Reset foi provocado por um overflow ou por um underflow no Return Adress Stack e tomar as devidas providncias.
24
Modelo simplificado de um pino de I/O genrico sem a interface com Quando um pino do microcontrolador outros perifricos.
PINOS DE I/O
configurado como pino de I/O, ou pino digital, ele pode ser configurado como entrada ou como sada de dados. Quando configurados como digitais, os pinos do PIC18F4520 so divididos em cinco grupos chamados Ports de I/O, identificados como Port A, Port B, Port C, Port D e Port E.
Um pino digital configurado como entrada pode receber informao digital ('0' ou '1'), como aquela vinda de um boto, de um sensor etc.
Um pino digital configurado como sada pode fornecer para uma carga ou para outro elemento do sistema uma informao digital. Informao que pode acionar um LED, ligar um motor, fechar uma eletrovlvula etc.
Fonte: PIC18F2420/2520/4420/4520 Data Sheet DS39631D. Baixado de www.microchip.com
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco
25
26
4,5V < VDD < 5,5V Entrada VIL (tenso de entrada baixa) VIH (tenso de entrada alta) Sada VOL (tenso de sada baixa) Mn 0V 2V Mn Mx 0,8V VDD Mx 0,6V Nvel Lgico 0 1 Nvel Lgico 0
VDD - 0,7V
27
Quando BT1 for pressionado, o pino RA1 ser aterrado, ou seja, o nvel lgico 0 (0V) estar chegando no pino.
Ao ser feito a leitura do pino RA1, ser possvel detectar se ele est solto ou pressionado, dependendo do nvel lgico que estiver presente no pino no momento da leitura.
28
29
30
PORTA
O Port A possui oito pinos bidirecionais (RA7:RA0). Cada pino pode ser configurado como entrada ou sada independente dos demais. O registrador PORTA, mapeado na memria RAM no endereo F80h, o elo entre o software e o hardware. Quando um pino est configurado como sada o nvel lgico aplicado no respectivo bit do registrador PORTA aparece naquele pino. No pino configurado como entrada, quem define o nvel lgico aplicado no pino o hardware externo conectado a ele. O registrador PORTA permite efetuar a leitura do pino configurado como entrada para determinar o nvel logo aplicado nele.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco
31
PORTA
Existe um latch ligado em cada pino do Port A de forma que, quando escrevemos um valor no registrador PORTA, a informao armazenada no latch, passando automaticamente para o pino caso ele esteja configurado como sada. Quando um pino est configurado como entrada a informao fica retida no latch, sendo transferida para o pino no momento em que ele for novamente configurado como sada.
No PIC18F4520 os latchs esto mapeados na memria de dados como SFRs. O registrador que d acesso ao latch do Port A, o registrador LATA, est mapeado com o endereo F89h.
Os outros Ports tambm possuem latchs e registradores LATs mapeados na memria RAM.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco
32
PORTA
Quando esse pino estiver configurado como digital, executando a funo RA4, ele ser uma entrada Schmitt Trigger quando estiver configurado como entrada. o pino RA4 ser uma sada em coletor aberto(OD) quando estiver configurado como sada. No POR os pinos RA5, RA3:RA0 so configurados como pinos de entrada analgica e lidos como '0', enquanto os pinos RA7, RA6, quando habilitados, e RA4 so configurados como entradas digitais.
33
REGISTRADOR TRISA
Uma vez que os pinos do Port estejam configurados como digitais, o registrador TRISx ir configurar os pinos como entrada ou como sada. O registrador TRISA configura os pinos do Port A, o registrador TRISB os pinos do Port B e assim sucessivamente. A figura abaixo mostra a associao dos bits do registrador TRISA, mapeado na memria RAM no endereo F92h, com os respectivos pinos do Port A. Para configurar um determinado pino como entrada deve-se aplicar nvel lgico '1' no respectivo bit do registrador TRISA e, por outro lado, para configurar um determinado pino como sada deve-se aplicar nvel lgico '0' no respectivo bit do mesmo registrador. O mesmo raciocnio vale para os outros Ports.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco
34
//*********************************************************************************************************************** PORTA = 0; //limpa PORTA LATA = 0; //limpa LATA ADCON1 = 0x0F; //ADCON1 = 0Fh. Configura pinos do RA5 e RA3:RA0 como digitais TRISA = 0x06; //configura RA2:RA1 como entrada e demais pinos do PORTA como sada //************************************************************************************************************************
35
Bit 7 PORTA LATA TRISA ADCON1 CMCON CVRCON RA7(1) LATA7(1) TRISA7(1) C2OUT CVREN
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
RA5 RA4 RA3 RA2 RA1 RA0 PORTA Data Latch Register (Read and Write to Data Latch) PORTA Data Direction Register VCFG1 VCFG0 PCFG3 PCFG2 PCFG1 PCFG0 C2INV C1INV CIS CM2 CM1 CM0 CVRR CVRSS CVR3 CVR2 CVR1 CVR0
Legenda: - = no implementado, lido como '0'. Clulas sombreadas no so utilizadas pelo Port A. Nota 1: RA7 e RA6 so habilitados com base na configurao do oscilador; por outro lado, eles so lidos como '0'.
36
PORTB
O Port B possui oito pinos bidirecionais (RB7:RB0) que podem ser configurados como entrada ou sada quando esto funcionando como pinos digitais. O registrador PORTB, mapeado na memria RAM no endereo F81h, o elo entre o software e o hardware. A figura a mostra como os bits do registrador PORTB esto associados aos respectivos pinos do Port B. A figura b indica a associao dos bits do registrador TRISB com os respectivos pinos do Port B.
A funo do registrador TRISB, mapeado na memria RAM no endereo F93h, configurar os pinos do Port B como entrada quando aplicado nvel lgico '1' no bit associado ao respectivo pino, ou configurar o pino como sada quando aplicado nvel lgico '0' no respectivo bit.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco
37
PORTB
Da mesma forma que no Port A, quando escrevemos um valor no registrador PORTB a informao armazenada no latch, passando automaticamente para os pinos caso eles estejam configurados como sada. Quando um pino est configurado como entrada a informao fica retida no latch, sendo transferida para o pino no momento em que ele for novamente configurado como sada.
38
39
Veja que todos os pinos do Port B foram configurados como pinos de sada.
Observe que mesmo o registrador INTCON2 no tendo sido inicializado, os resistores de pull-ups esto desabilitados no POR porque bit /RBPU inicializado com nvel lgico '1', que desabilita os resistores de pull-up.
//******************************************************************************** PORTB = 0; //limpa PORTB LATB = 0; //limpa LATB TRISB = 0; //configura PORTB como sada //********************************************************************************
40
RBPU
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 LATB PORTB Data Latch Register (Read and Write to Data Latch) TRISB PORTB Data Direction Register INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF INTCON2 /RBPU INTEDG0 INTEDG1 INTEDG2 TMR0IP RBIP INTCON3 INT2IP INT1IP INT2IE INT1IE INT2IF INT1IF ADCON1 VCFG1 VCFG0 PCFG3 PCFG2 PCFG1 PCFG0 Legenda: - = no implementado, lido como '0'. Clulas sombreadas no so utilizadas pelo Port B.
Os registradores INTCON, INTCON2 e INTCON3 so de controle de interrupo, sendo utilizados na configurao das interrupes associadas ao Port B.
41
PORTC
O Port C possui oito pinos bidirecionais(RC7:RC0) que podem ser configurados como entrada ou sada quando esto funcionando como pinos digitais. O registrador PORTC, mapeado na memria RAM no endereo F82h, o elo entre o software e o hardware. A figura a exibe como os bits do registrador PORTC esto associados aos respectivos pinos do Port C e a figura b mostra a associao dos bits do registrador TRISC com os respectivos pinos do Port C. A funo do registrador TRISC, mapeado na memria RAM no endereo F94h, configurar os pinos do Port C como entrada quando aplicado nvel lgico '1' no bit associado ao respectivo pino, ou configurar o pino como sada quando aplicado nvel lgico '0' no respectivo bit.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco
42
PORTC
Da mesma forma que nos outros Ports, quando escrevemos um valor no registrador PORTC a informao armazenada no latch, passando automaticamente para o pino caso ele esteja configurado como sada.
Quando um pino est configurado como entrada a informao fica retida no latch, sendo transferida para o pino no momento em que ele for novamente configurado como sada.
Todos os pinos do Port C, quando configurados como entrada digital, so Schmitt Trigger. No POR os pinos do Port C so configurados como entradas digitais. A frao de cdigo a seguir mostra como inicializar o Port C. Veja que o nibble alto do PORTC (RC7:RC4) foi configurado como entrada e o nibble baixo do PORTC (RC3:RC0) como sada.
//*********************************************************************************************************************************** PORTC = 0; //limpa PORTC LATC = 0; //limpa LATC TRISC = 0xF0; //configura os pinos RC7:RC4 como entrada e os pinos RC3:RC0 como sada //*********************************************************************************************************************************** Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco
43
RBPU
Bit 6 RC6
Bit 5 RC5
Bit 4 RC4
Bit 3 RC3
Bit 2 RC2
Bit 1 RC1
Bit 0 RC0
PORTC Data Latch Register (Read and Write to Data Latch) PORTC Data Direction Register
44
PORTD
O Port D possui oito pinos bidirecionais (RD7:RD0) que podem ser configurados como entrada ou sada quando esto funcionando como pinos digitais. O registrador PORTD, mapeado na memria RAM no endereo F83h, o elo entre o software e o hardware. A figura 4.5a indica como os bits do registrador PORTD esto associados aos respectivos pinos do Port D e a figura 4.5b mostra a associao dos bits do registrador TRISD com os respectivos pinos do Port D. O registrador TRISD, mapeado na memria RAM no endereo F95h, configura os pinos do Port D como entrada quando aplicado nvel lgico '1' no bit associado ao respectivo pino, ou configura o pino como sada quando aplicado nvel lgico '0' no respectivo bit.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco
45
46
RBPU
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1 RD1
Bit 0 RD0
RD7 RD6 RD5 RD4 RD3 RD2 PORTD Data Latch Register (Read and Write to Data Latch) PORTD Data Direction Register IBF OBF IBOV PSPMODE TRISE2 P1M1(1) P1M0(1) DC1B1 DC1B0 CCP1M3 CCP1M2
TRISE1 CCP1M1
TRISE0 CCP1M0
Legenda: - = no implementado, lido como '0'. Clulas sombreadas no so utilizadas pelo Port D. Nota 1: Estes registradores e/ou bits no so implementados nos microcontroladores de 28 pinos.
47
PORTE
O Port E possui quatro pinos, sendo trs bidirecionais (RE2:RE0), podendo ser configurados como entrada ou sada quando esto funcionando como pinos digitais. O quarto pino, o RE3, multiplexado com as funes /MCLR e VPP e s pode ser configurado como entrada. O registrador PORTE, mapeado na memria RAM no endereo F84h, o elo entre o software e o hardware. A figura a mostra como os bits do registrador PORTE esto associados aos respectivos pinos do Port E e a figura b exibe a associao dos bits do registrador TRISE com os respectivos pinos do Port E.
O registrador TRISE, mapeado na memria RAM no endereo F96h, configura os pinos do Port E como entrada quando aplicado nvel lgico '1' no bit associado ao respectivo pino, ou configura o pino como sada quando aplicado nvel lgico '0' no respectivo bit.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco
48
Ao contrrio do registrador PORTE, no qual os bits 7:4 no so implementados fisicamente, com exceo do bit TRISE<3>, os demais bits do registrador TRISE so utilizados na configurao do perifrico Parallel Slave Port.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco
49
//*********************************************************************************************************************** PORTE = 0; //limpa PORTE LATE = 0; //limpa LATE ADCON1 = 0x0F; //ADCON1 = 0Fh. Configura os pinos RE2:RE0 como digitais TRISE = 0x00; //configura PORTE como sada //***********************************************************************************************************************
50
Bit 6 -
Bit 5 -
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
RE3(1) RE2 RE1 RE0 LATE Data Output Register PSPMOD TRISE IBF OBF IBOV TRISE2 TRISE1 TRISE0 E ADCON1 VCFG1 VCFG0 PCFG3 PCFG2 PCFG1 PCFG0 Legenda: - = no implementado, lido como '0'. Clulas sombreadas no so utilizadas pelo Port E. Nota 1: Implementado somente quando a funo /MCLR est desabilitada.
51
52
PINOS NO UTLIZADOS
Os pinos no utilizados em uma determinada aplicao devem ser configurados como digital, configurados como sada e aplicado nvel lgico 0 neles.
53
EXERCCIOS
1. Que quantidade de memria de programa integra o PIC18F4520?
2. Em que localidade da memria de programa se encontra a primeira instruo executada quando o microcontrolador energizado?
3. Quantas chamadas sub-rotina podem ser aninhadas no PIC18F4520? 4. Em quantos bancos de memria RAM est dividida a memria de dados do PIC18F4520? 5. Em que consiste o recurso Access Bank? 6. Qual o registrador responsvel pelo chaveamento de memria RAM no PIC18F4520? 7. Qual a faixa de endereos utilizada pela memria EEPROM no PIC18F4520? 8. O que deve ser feito com os pinos no utilizados em uma determinada aplicao?
54
EXERCCIOS
8. Qual o nome do Reset que ocorre quando o microcontrolador energizado?
55
EXERCCIOS
18. Como so identificados os pinos do PIC18F4520 quando configurados como digitais? 19. Qual registrador o responsvel pela configurao dos pinos de um Port como entrada ou sada quando eles estiverem configurados como pinos digitais? 20. Qual a funo dos registradores PORTA, PORTB, PORTC, PORTD e PORTE? 21. O pino RA4, quando configurado como sada digital, uma sada em coletor aberto. O que isso significa? 22. Por que recomendado deixar os resistores de pull-up desabilitados? Qual o bit responsvel por esse desligamento?
23. Qual dos pinos do PIC18F4520 s pode ser configurado como entrada? O que deve ser feito para configurar esse pino como digital?
24. Vrios pinos do PIC18F4520, quando configurados como entrada, so Schmitt Trigger. O que isso significa?
56