You are on page 1of 16

/*

Documentao sobre o curso de microcontroladores do Eltrocursos!

Organizao, Metodo e Segurana!

*/
/********************************************
****************MODULO I********************
********************************************/

Para declarao de vriaveis utilizado o padro ISO/IEC 9899:1999.

Onde a declarao feita apartir dos bits desejados.

Ex: o tipo unsigned short long de 24bits passa a ser chamado de uint24_t
u - unsigned
int - inteiro
24 - tamanho em bits

Inserir a biblioteca <stdint.h>

As variveis com pontos flutuantes no esto nesse parametro.

A sintaxe de declarao de uma varivel : <tipo> <nome_da_variavel>


mais de uma vriavel : <tipo> <nome_variavel>,
<nome_variavel>

possvel inicializar uma varivel com valores:

Ex: int32_t minimo=0;


int32_t maximo=1000;

Constate um valor que no seu programa que voc define e que no podera ser
alterado,
recomendado que variveis e constantes sejam declaradas no inicio de cada
programa.

Existe duas formas de serem declaradas:

const int16_t=100;
#define PI 3.1415

Vetores so valores que so guaradados como se fosse uma lista>

Sua sintaxe :

<tipo> <nome[tamnho]>
indice 0, 1, 2, 3, 4
Ex: int24_t valores[5]= {23,24,25,67,11};

Para atribuir um valor a um vetor: valores[2]=28;

Matrizes so estruturas multidimensionais, onde necessitam de dois ou mais indeces


para serem acessadas.

Sua sintaxe : <tipo> <nome[linha][coluna]>


Operadores Relacionais resultam em verdadeiro (1) ou falso (0) e so utilizados
quande se deseja,
fazer comparaoes entre varveis.

> maior
< menor
>= maior ou igual
<= menor ou igual
== igual
!= diferente

(Obs:O sinal de "=" utilizado para atribuio de valores)

Operadores Lgicos so utilizados declaraes condicionais para verficar condies


verdadeiras ou falsas.

&& - AND
! - NOT (Ex: Ligar e desligar uma bomba de agua, se o sensor estiver em 1 ele
desliga a bomb, se estiver em 0 liga a bomba)
|| - OR

Operadores aritmticos so utilizados para clculos matemticos.

Adio(+)
Subtrao(-)
Multiplicao(*)
Diviso(/)
Resto de diviso(%)

Operadores de Incremento e Decremento.

++; incrementa 1
--; decrementa 1

Ex: X+=10; // incrementa 10 a varivel X

Operadores Bit a Bit.

Deslocamentos para esquerda (<<) e direita (>>).

Funes lgicas & (AND), |(OR), ^(OR exclusivo), ~(Inverte um valor).

Estruturas:

Uma estrutura agrupa vrias vriveis em uma s. uma ficha que contem por exemplo o
nome, telefone e endereo.

A linguagem C/C++ permite definir tipos de dados novos utilizando tipos de dados j
existentes.
Isto possvel atravs da palavra chave typedef.
Colocando esta palavra antes de uma declarao, fazemos com que seja criado um novo
tipo e no uma varivel.

Ex: typedef uint16_t unsiginteiro16;


( <tipo> <nome> )
As estruturas em C/C++ permitem criar "pacotes" de vriveis com diversos tipos
diferentes em uma nica varivel.

Ex:

struct
{
tipo variavel1;
tipo variavel2;
tipo variavel3;

}variavel;

Para acessar:

variavel.variavel1=<VALOR>;

Enumeraes:

Quando se cria um tipo enumerado,uma varivel deste tipo pode ter seus valores
manipulados vontade
e pode ser comparada com as constantes enumeradas.

Ex:

enum mes
{
janeiro=1,
fevereiro,
marco,
abril,
maio,
junho,
julho,
agosto,
setembro,
outubro,
novembro,
dezembro,
};
enum mes mes_vigente;

Unies:

A declarao de uma unio se assemelha muito com a declarao de uma estrutura.


No entanto um nico endereo de memria definido para o armazenamento dos seus
diferentes membros.

Ex:
union angulo
{
float graus;
float radianos;
};
Neste exemplo temos dois membros (graus e radianos), ocupando o mesmo endereo de
memria.
Neste caso s gasto o espao equivalente a um nico float,
assim no possvel armazenar valor para as duas variveis ao mesmo tempo.
Podemos declarar variveis de diferentes tipos em uma unio.
Neste caso, a memria alocada corresponde ao tamanho do maior membro declarado na
unio.

Funes:

O princpio fundamental de uma funo tambm conhecido como modularizao.


Ele se baseia na diviso de um problema em partes (mdulos),
simplificando o desenvolvimento e depurao do programa.

Funes so conjuntos de instrues agrupadas em blocos de cdigo e rotuladas


atravs de um nome.
Estes blocos podem ser utilizados diversas vezes em um programa, bastanto para isso
a chamada da funo no local desejado.

Ex: <tipo_de_retorno> <nome_funo>(tipo parametro1,..., tipo parametro N)


{
Corpo da Funo;
return(<valor de retorno>);
}

Diretivas:

As diretivas podem reportar uma srie de informaes importantes ao compilador,


porm seus comandos no so compilados.
So iniciadas atravs do caractere '#' e com elas possvel definir constantes,
incluir arquivos, definir macros e etc.

Ex: #define PI 3.1415

#include - inclui um arquivo


#pragma - executar uma ao especifica durante a compilao

Macros:

O compilador XC8 reserva certos smbolos para o pr-processamento,


permitindo uma compilao condicional baseada no tipo de microcontrolador e etc.
Estes smbolos so tambm conhecidos como macros predefinidas,
os tipos mais comuns de macros predefinidas podem ser encontrados na documentao
do compilador.
Algumas macros predefinidas no compilador XC8 como __delay_us(), __delay_ms(),
_XTAL_FREQ e __CONFIG()

/********************************************
****************MODULO II********************
********************************************/

Deixando seu cdigo mais legvel

A criao de software estruturado um processo muito importante da engenharia de


software.
A engenharia de software a aplicao da sistemtica, disciplina, desenvolvimento
quantitativo e
da operao e manuteno de software.

Variveis:
Para a declarao de variveis locais, tanto as variveis declaradas no corpo de
uma funo
quanto os parmetros de uma funo, adotaremos a primeira letra como minscula.
J para as variveis globais adotaremos a letra g seguida pelo nome da varivel
com a primeira letra maiscula
como a varivel "gResultado".

#include <stdint.h>

uint24_t gResultado;
uint24_t calculo(uint24_t base, uint24_t expoente)

uint24_t cnt, valor;

valor= base;

for (cnt=1; cnt<=expoente; cnt++) valor*= base;

return(valor);

Para a declarao de constantes usaremos sempre letras maisculas e o travesso


para a separao
em caso de palavras compostas, como por exemplo:

const int VERSAO_PROJETO = 3;

ou

#define PI 3.1415

Indentao:

A indentao apropriada um elemento chave na leitura de um cdigo e deve ser


utilizada em todos os programas.
Uma boa sugesto a utilizao de 4 caracteres na indentao.

Chaves:

A colocao de chaves outro elemento importante na formatao de cdigo.


O mtodo mais utilizado se resume na insero de cada chave em uma nova linha
combinado com a indentao apropriada,
conforme o exemplo a seguir:

tipo nome_funo (tipo *parmetro1, ..., tipo *parmetroN)


{
corpo da funo;
return (valor_retorno)
}

Espaos:

interessante adicionar espaos antes e depois de cada operador como por exemplo:

gResultado = valorMaior + valorMenor;


if (EstadoAtual == ESTADO_INICIAL)

Diagrama de Estado:

possvel descrever uma lgica exata para o funcionamento do sistema.


Com o diagrama de estados de um determinado sistema finalizado,
a tarefa de implementao do cdigo de programa para este sistema torna-se muito
mais simples.

Temos dois tipos de lgica:

O contexo um tanque tem tem um sensor de temperatura, uma resitncia, um sensor


de nvel e uma bomba.

LGICA COMBINACIONAL onde nesse tipo de lgica as sadas so nica e


exclusivamente dependente das entradas,
existe neste caso uma relao esttica entre entradas e sadas.
Este tipo de lgica conhecida como combinacional e no requer uso de memria (ou
armazenamento).

Ligar a bomba: bombaOn=(!sensorNivel); // se o sensor estiver em 0 ele liga a


bomba, se estiver em 1 desliga a bomba

A resistncia deve ser ligada se haver agua no tanque

ento: resistenciaOn=(sensorNivel == 1)&&(Tatual < Tset);

A criao da LGICA SEQUENCIAL, vamos dividir o problema em dois controles


distintos, um voltado para a temperatura e o outro
para o nvel.Inicialmente no iremos desligar a bomba assim que o sensor de nvel
for ativado,
adicionaremos para este caso um atraso responsvel por manter a bomba ligada por um
determinado tempo.

Iremos colocar tambm uma margem de erro, ento quando a temperatura atual atingir
o valor de setpoint,
sera somado uma margem de erro para depois desligar a resistncia.E a resistncia
s deve ser ligada se a
chave de nivel estiver ativa.

Para a lgica sequencial as sadas no dependem mais apenas dos valores atuais de
entrada, mas tambm de valores passados.
Este tipo de lgica capaz de armazenar e relembrar informaes.

Mquina de estados finita:

O primeiro passo ao analisar uma lgica sequencial determinar o nmero de


variveis de estado e seus possveis valores,
vamos escolher os seguintes nomes para as variveis de estado de cada mquina:

estadoBomba:

BOMBA_DESL // depois que a chave foi ativa e se passou o tempo

BOMBA_LIG_NIVELBAIXO // enquanto a chave de nvel no ativa


BOMBA_LIG_TEMPO // por conta que ela fica um tempo ligada depois que a chave
de nvel ativa

estadoResistencia:

AQUECIMENTO_DESL // quando a chave de nvel no est ativa

AQUECIMENTO_LIG // quando a chave de nvel est ativa

A mquina de estados finita a descrio de uma lgica sequencial atravs de um


nmero finito de estados.
Os membros de uma mquina de estados so:

Estados: o jeito que ele se comporta em alguma parte de seu funcionamento. ( o


estado atual)

Eventos: a condiao que faz a maquina mudar de um estado para outro. (entradas)

Aes:existem dois tipos de aes: (saida)

Aes, que so tomadas durante a transio de estados (ex.: escrita de


sadas)

Aes, que so tomadas durante a execuo de um estado (ex.: temporizao)

Transio: a passagem de um estado para outro. (vai para outro estado)

Em nosso exemplo a transio entre estados pode ser ocasionada pelos seguintes
eventos:

MuitoFrio: (Tact < Tset)

MuitoQuente: (Tact > ((Tset+deltaT))

NivelOk: (sensorNivel == 1)

NivelNaoOk: (sensorNivel == 0)

TempoAtrasoOk: (ao final da temporizao)

Em nosso exemplo podemos tomar as seguintes aes:

LigaBomba

DesligaBomba

LigaResistencia

DesligaResistencia

LigaTemporizador

/***********************************************MICROCONTROLADOR
PIC18F4520*********************************************/
Para o dimensionamento de um microcontrolador os aspectos levado em considerao
so:

Recursos de energia:

Descreve o consumo de corrente do microcontrolador para cada um dos modos de


operao em execuo.

Estrutura de oscilador:

Descreve as configuraes possveis de osciladores, range de frequncias permitido


e etc.

Recursos de perifricos:

Descreve cada um dos tipos de recursos de perifricos que podem ser utilizados em
conjunto com o microcontrolador
(PWM, I2C, USART, DAC e etc).

Recursos especiais:

Descreve recursos especiais fornecidos para aquele componente (nmero mximo de


gravaes, programao in-circuit e etc).

O oscilador o circuito responsvel por gerar a base de tempo utilizada pelo


microcontrolador principalmente para a execuo de suas instrues.
O PIC18F4520 pode ser operado a partir de um oscilador externo a cristal
ou um ressonador cermico conectado aos pinos OSC1 e OSC2.

LP (cristal de baixa potncia)

XT (cristal/ressonador)

HS (cristal/ressonador de alta velocidade)

HSPLL (cristal/ressonador de alta velocidade com PLL habilitado)

RC (circuito RC externo com Fosc/4 saindo em RA6)

RCIO (circuito RC externo)

INTIO1 (oscilador interno com Fosc/4 saindo em RA6)

INTIO2 (oscilador interno)

EC (base de tempo externa com Fosc/4 saindo em RA6)

ECIO (base de tempo externa)

(Obs: O Capaictor muda de oscilador para oscilador)

A operao com osciladores a cristal uma das mais comuns,


principalmente em circuitos onde desejada uma boa preciso e operao em
frequncias mais altas.

Um valor mais alto de capacitncia aumenta a estabilidade do oscilador mas por


outro lado aumenta
o tempo de inicializao do circuito;

Quando o circuito estiver operando com tenso abaixo de 3V ser necessrio usar o
modo HS
ou utilizar um cristal oscilador ao invs de um cermico;

Como cada cristal tem suas prprias caractersticas de fabricao, deve-se


consultar o fabricante do mesmo
para os valores apropriados de componentes externos.

Sempre verifique a performance do oscilador comparando em diferentes nveis de


tenso de alimentao VDD
e valores de temperatura que a aplicao poder receber durante a operao do
produto.

Interrupes e perifricos

Uma interrupo leva o microcontrolador responder a um evento externo ou interno


(ex. Temporizador) muito rapidamente.
Durante a ocorrncia de uma interrupo o microcontrolador desvia o fluxo normal de
execuo do programa para uma parte
especial conhecida como rotina de servio de interrupo ou ISR. Aps a execuo
do cdigo dentro desta rotina,
o programa retorna para o ponto onde foi desviado e continua o seu fluxo normal de
execuo.

Os microcontroladores da srie PIC18F possuem dois nveis de interrupo (alta e


baixa prioridade),
sendo que as interrupes de alta prioridade tem a capacidade de interromper a
execuo de uma interrupo de
baixa prioridade. No microcontrolador PIC18F4520 existem dez registradores usados
para o controle
e operao das interrupes:

RCON
INTCON
INTCON2
INTCON3
PIR1, PIR2
PIE1, PIE2
IPR1, IPR2

No geral as fontes de interrupo tem trs bits para controle de suas operaes.
So eles:

Bit de flag (indica que uma interrupo ocorreu)

Bit de habilitao enable (permite que o programa desvie para a rotina de


interrupo quando esta fisicamente ocorrer)

Bit de prioridade (seleciona entre alta e baixa prioridade)

cada uma das fontes possveis de interrupo apresentam os trs bits de controle de
operaes. Por exemplo:

TMR0IF -> bit de flag da interrupo timer 0.


TMR0IE -> bit de enable da interrupo timer 0.
TMR0IP -> bit de prioridade da interrupo timer 0.
Algumas das funcionalidades mais comuns encontradas neste microcontrolador so
apresentadas abaixo:

Conversor analgico-digital:

Ele utilizado para converter um sinal analgico de entrada, como a tenso


ajustada em um potencimetro,
para uma forma digital que permita ao microcontrolador executar operaes com este
valor lido.

O microcontrolador PIC18F4520 permite o uso de at treze entradas configuradas como


canais de converso analgica-digital.
Cada entrada possu um conversor interno de dez bits o que possibilita at 1024
nveis de quantizao.

Os conversores analgico-digitais so muito utilizados no monitoramento de sensores


(temperatura, presso, fora e etc.

EUSART:

A EUSART (Enhanced Universal Synchronous Asynchronous Receiver Transmitter Module)


um dos dois mdulos de entradas e sadas seriais do microcontrolador e
genericamente
conhecida como interface de comunicao serial. Ela muito utilizada para a
comunicao com diversos perifricos como,
circuitos integrados conversores A/D ou D/A, memrias EEPROM serial, porta serial
do PC, mdulos hbridos de RF e etc.

MSSP:

A MSSP (Master Synchronous Serial Port Module) uma interface serial utilizada
para comunicao com outros perifricos
ou microcontroladores. Tais perifricos podem ser memrias EEPROM serial, drivers
para displays grficos, conversores A/D,
relgios de tempo real e etc. Este mdulo pode operar em um dos dois modos
disponveis:

- SPI (Serial Peripheral Interface), usado na comunicao com dispositivos como


cartes de memria,
drivers para displays grficos ou outros microcontroladores;

- I2C (Inter-Integrated Circuit), usado na comunicao com dispositivos como


memrias EEPROM serial,
relgios de tempo real e etc.

CCP e ECCP:

O CCP (Capture/Compare/PWM Module) um mdulo que utiliza o TIMER 1, 2 ou 3 como


relgio de referncia
para seu funcionamento. O mdulo PWM um dos mais utilizados e pode ser empregado
em diversas aplicaes tais como:

Chaveamento de cargas (controle de temperatura atravs de resistncias);

Controle de posicionamento de servo motores;

Fontes chaveadas;
Controle de potncia e velocidade de motores;

*********************************************************INTERRUPES**************
*********************************************

Uma interrupo quando o o funcionamento do programa interrompido por algum


fator interno(estouro de um
temporizador) ou externo (mudana de estado de um pino).

Quando uma interrupo ativada a execuo do programa pula para uma rotina de
servio de interrupo (ISR).

No microcontrolador PIC18F4520 existem dois nveis possveis de interrupo, as de


baixa e as de alta prioridade.

O compilador XC8 direciona a execuo da aplicao automaticamente, quando uma


fonte de interrupo ocorre,
para um endereo conhecido como vetor de interrupo.
Este vetor de interrupo definido atravs do qualificador interrupt e pode ser
definido tanto
para as interrupes de alta como baixa prioridade.

A estrutura bsica para interrupo de alta prioridade :

void interrupt nome_funo(void)


{
Corpo da funo;

A estrutura bsica para interrupo de baixa prioridade :

void interrupt low_priority nome_funo (void)


{
Corpo da Funo;

outra caracterstica importante de uma interrupo o armazenamento do endereo da


instruo
sendo executada no programa, dessa forma aps a execuo da rotina de interrupo o
processador automaticamente
retorna para o endereo exato onde a aplicao havia sido interrompida.

No PIC18F4520 o vetor de interrupo de alta prioridade est localizado no endereo


0008h e o
de baixa prioridade no endereo 0018h. Pela ordem de prioridade os eventos de
interrupo de alta prioridade
podem interromper os de baixa prioridade.

Dez registradores so utilizados para controlar a operao de interrupo. So


eles:

RCON
INTCON
INTCON2
INTCON3
PIR1, PIR2
PIE1, PIE2
IPR1, IPR2

No geral as fontes de interrupo tem trs bits para controle de suas operaes,
so eles:

Flag bit: indica que ocorreu um evento de interrupo;

Enable bit: permite que a execuo do programa pule para o vetor de interrupo
quando o Flag bit for setado;

Priority bit: permite a seleo entre baixa e alta prioridade.

As principais fontes de interrupo do microcontrolador PIC18F4520 so:

Interrupes no estouro dos temporizadores (TIMER0 .. TIMER3);

Interrupes na mudana de estados em INT0(RB0), INT1(RB1) e INT2(RB2);

Interrupes na mudana de estado nos pinos RB4, RB5, RB6 e RB7;

Interrupes na recepo ou transmisso do canal serial;

Interrupo na converso do conversor analgico digital;

Interrupo no mdulo CCP;

Interrupo no trmino da escrita na EEPROM;

Interrupo no mdulo LVP;

O primeiro registrador que vamos conhecer o RCON, este registrador


responsvel
principalmente pela habilitao ou no de tratamento por prioridade.

IPEN= Habilita o tratamento de interrupes por prioridade.


0 desabilita prioridade.

1 habilita prioridade.

SBOREN= Bit de habilitao do Brown-out Reset por software.


0 desabilita BOR por software.

1 habilita BOR por software.

/RI= Bit de Flag que sinaliza instruo de Reset


0 ocorreu instruo de reset
1 no ocorreu instruo de reset

/TO= Bit deFlag que sinaliza estouro do Watch-dog Timer


0 ocorreu estouro do WDT
1 no ocorreu estouro do WDT

/PD= Bit deFlag que sinaliza evento de Power-Down (economia de energia - SLEEP)
0 ocorreu evento de Power-Down
1 no ocorreu evento de Power-Down
/POR= Bit deFlag que sinaliza evento de POWER ON RESET (reset ao ligar)
0 ocorreu o evento de POWER ON RESET
1 no ocorreu o evento de POWER ON RESET

/BOR= Bit deFlag que sinaliza Brown-Out Reset


0 ocorreu o evento Brown-Out Reset
1 no ocorreu o evento Brown-Out Reset

O segundo registrador que vamos conhecer o INTCON, este registrador


responsvel principalmente
pela habilitao de algumas interrupes.

GIE=Chave geral que habilita o tratamento de interrupes.


0 desabilita tratamento de interrupes.

1 habilita tratamento de interrupes.

GIEH=Chave geral que habilita o tratamento de interrupes de alta prioridade.


0 desabilita interrupo de alta prioridade.

1 habilita interrupo de alta prioridade.

PEIE= Chave individual que habilita o tratamento de interrupo dos perifricos.

0 desabilita tratamento de interrupo dos perifricos


1 habilita tratamento de interrupo dos perifricos

GIEL= Chave geral que habilita o tratamento de interrupes de baixa prioridade.


0 desabilita interrupo de baixa prioridade.

1 habilita interrupo de baixa prioridade.

TMR0IE= Chave individual que ativa interrupo do TIMER0


0 desabilita interrupo do TIMER0
1 habilita interrupo do TIMER0

INT0IE= Chave individual que ativa interrupo do INT0


0 desabilita interrupo do INT0
1 habilita interrupo do INT0

RBIE= Chave individual que ativa interrupo por mudana de estado RB4 a RB7.
0 desabilita interrupo

1 habilita interrupo

TMR0IF= Flag de sinalizao do estouro do TIMER0


0 no ocorreu estouro do TIMER0
1 ocorreu estouro do TIMER0

INT0IF= Flag de sinalizao da mudana de estado do INT0.


0 no ocorreu mudana de estado no pino RB0
1 ocorreu mudana de estado no pino RB0

RBIF= Flag de sinalizao da mudana de estado RB4 a RB7


0 no ocorreu mudana de estado nos pinos RB4 a RB7
1 ocorreu mudana de estados nos pinos RB4 a RB7

O terceiro registrador que vamos conhecer o INTCON2.


A descrio detalhada de cada bit apresentada a seguir:

/RBPU=Chave que liga ou desliga os resistores de Pull-Up da porta B.


0 habilita resistores.

1 desabilita resistores.

INTEDG0= Define a borda para a interrupo INT0.

0 ocorrer na borda de descida


1 ocorrer na borda de subida

INTEDG1= Define a borda para a interrupo INT1.

0 ocorrer na borda de descida


1 ocorrer na borda de subida

INTEDG2= Define a borda para a interrupo INT2.

0 ocorrer na borda de descida


1 ocorrer na borda de subida

TMR0IP= Define a prioridade da interrupo do TIMER0.


0 define como baixa prioridade

1 define como alta prioridade

RBIP= Define a prioridade da interrupo RB


0 define como baixa prioridade
1 define como alta prioridade

O mdulo Timer0 basicamente um temporizador de 8 bits disponvel em todos


os microcontroladores PIC.
No PIC18F4520 possvel selecionar entre os modos de operao de 8 ou 16
bits para o TIMER0 alm da possibilidade de opera-lo como temporizador ou contador.

O TIMER0 um recurso fsico disponvel no prprio dispositivo microcontrolador,


podemos acessa-lo ou mesmo parametriza-lo atravs dos registradores disponveis.

O principal registrador que permite controlar todos os aspectos de operao do


mdulo TIMER0 o T0CON.
A sua composio e a descrio detalhada de cada bit apresentada a seguir:

TMR0ON=Bit de controle do Timer0.


1 habilita o Timer0.

0 Para o Timer0.

T08BIT=Seletor de tamanho do Timer0 (8/16 Bits).


1 O Timer0 configurado como contador/temporizador de 8 bits.
0 O Timer0 configurado como contador/temporizador de 16 bits.

T0CS= Seletor de fonte de clock para o Timer0


1 Na transio do pino T0CKl // Contador
0 Utilizando o tempo de instruo interno (CLK0) // Temporizador

T0SE= Seletor do tipo de borda do Timer0


1 Incrementa na borda de descida para o pino T0CKl
0 Incrementa na borda de subida para o pino T0CKl

PSA= Bit de seleo de pr-escala


1 Sem pr-escala para o Timer0. A fonte de clock entra direto
0 Com pr-escala para o Timer0. A fonte de clock passa pela pr-escala

T0PS<2:0>= Bits de seleo da pr-escala para o Timer0


111 =1:256
110 = 1:128 (a cade 128 ciclos de maquina ele incrementa)
101 = 1:64
100 = 1:32
011 = 1:16
010 = 1:8
001 = 1:4
000 = 1:2

o bit T0CS do registrador T0CON que permite a seleo entre contador e


temporizador para o mdulo Timer0.

Quando optamos por uma fonte externa atravs do pino T0CKl (T0CS = 1), o mdulo
Timer0 ir trabalhar
como um contador incrementando o seu valor a cada borda de subida ou descida do
sinal aplicado a esta entrada.
J quando optamos por uma fonte interna de clock (T0CS = 0), o mdulo Timer0 ir
trabalhar como um temporizador.

O TIMER0 possu dois registradores que permitem a leitura e


escrita do valor de temporizao/contagem, o TMR0H e o TMR0L.

O registrador TMR0H tem o seu valor atualizado com o contedo do byte mais
significativo do mdulo Timer0 durante a leitura de TMR0L.
Assim possvel fazer a leitura de todos os 16 bits do Timer0.

Prescaler o divisor de frequncia do clock do TIMER0.


usado no modo temporizador para poder obter tempos maiores.

A frmula do tempo para o overflow a seguinte:

t = ciclo de mquina * prescaler * contagem ( 256 - TMR0 );

ciclo de mquina = 4 / Fosc;

Fosc a freqncia do clock do cristal oscilador.

EXEMPLO:
O clock de um PIC de 4MHz, utlizado o prescaler de 1:256 e contagem de 0 a 256,
qual ser o tempo?

ciclo de mquina = 4/4 = 1us.

t = 1 * 256 * 256;
t = 65536us ou 65,536ms

O modo de operao sleep tem como principal funo a parada de todas as fontes de
clock do microcontrolador.
Dessa forma todo chaveamento de corrente desligado, fazendo com que o consumo de
corrente do dispositivo reduza a nveis muito baixos (apenas correntes de fuga).
Existem trs modos possveis de operao para o PIC 18F4520, so eles:

RUN: Modo padro. CPU e perifricos ligados.

IDLE: Desliga CPU, porm perifricos continuam funcionando. habilitado setando o


bit IDLEN do registrador OSCCON,
quando a instruo SLEEP executada, o microcontrolador entra neste modo e consome
em torno de 5,8uA.

SLEEP: A CPU e os perifricos so desligados. habilitado limpando o bit IDLEN do


registrador OSCCON.
Neste modo o microcontrolador consome em torno de 0,1uA.

You might also like