91

MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

  • Upload
    dinhdan

  • View
    232

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador
Page 2: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

MÓDULO I

Capítulo I: Introdução à Família PIC.

Capítulo II: Registradores.

Capítulo III: Canal de I/O Digital.

Capítulo IV: Oscilador.

Capítulo V: Funções Básicas de Programação.

Capítulo VI: Função Delay.

Capítulo VII: Software MPLAB e Compilador C18.

Capítulo VIII: Software de simulação Proteus.

Referências Bibliográficas.

2

Page 3: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

3

Page 4: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

CONCEITO:

Controlador é um dispositivo que gerencia um ou mais processos. Por exemplo, o controlador

que regula a temperatura de um forno tem um sensor que mede constantemente a temperatura interna e

quando ela ultrapassa um limite pré determinado gera sinais para atuadores que tentam manter a

temperatura dentro do valor estipulado.

Um microcontrolador é um circuito integrado, com integração de alto nível, que incorpora a

maior parte dos elementos que configuram um controlador.

4

FORNOFORNO

SENSORSENSOR

CIRCUITO CONDICIONADOR

CIRCUITO CONDICIONADOR

CIRCUITO DE CONTROLE

CIRCUITO DE CONTROLE

CIRCUITO DE POTÊNCIA

CIRCUITO DE POTÊNCIA

ATUADORATUADOR

Page 5: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

MICROCONTROLADOR X MICROPROCESSADOR:

Um microcontrolador difere de um microprocessador em vários aspectos sendo o mais

importante a funcionalidade. Para o uso de um microprocessador é preciso adicionar outros

componentes para receber e enviar dados. O microcontrolador tem tudo em um só elemento, todos os

periféricos estão contidos nele. O custo do microcontrolador é bem menor e o tempo de desenvolvimento

do projeto eletrônico diminuiu consideravelmente.

O microcontrolador é um sistema fechado. Todas as partes do processador estão contidas

interior e só saem para o exterior através das linhas que governam os periféricos.

5

Page 6: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

ARQUITETURA: GENÉRICA6

A estrutura genérica de um microcontrolador é constituída por uma Unidade Lógica de

Processamento (ULA); Unidade de Armazenamento e Unidade de Entrada e Saída.

Page 7: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

7

ARQUITETURA: VON NEUMANN

(CISC – Complex Instruction Set Computers) Conjunto de instruções complexo.

O barramento que acessa a memória de dados e de programa é comum,

impedindo o acesso simultâneo das duas memórias.

Page 8: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

8

ARQUITETURA: HARVARD

(RISC – Reduced Instruction Set Computers) Conjunto de instruções reduzido.

O barramento que acessa a memória de programa é independente do barramento que

acessa a memória de dados, permitindo o acesso simultâneo das duas memórias.

Page 9: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

CONCEITO:

A família de microcontroladores PIC 18f4431 é caracterizada pela alta performance

computacional a um custo relativamente baixo comparado a outros projetos utilizando microcontroladores

possibilitando então uma boa relação custo-benefício no desenvolvimento de um sistema de automação.

ALGUMAS CARACTERÍSTICAS:

Módulo de controle de Modulação por Largura de pulso com inserção de tempo de banda morta (Dead

Time) programável.

Módulo de realimentação de movimento com capacidade para medição de posicionamento e velocidade

através de Encoder incremental, captura de borda para medição de largura de pulso.

Conversor Analógico – Digital de 10 bits de alta velocidade.

Múltiplas opções de fonte de clock.

Controle de otimização de consumo de energia.

Canais de comunicação serial.

9

Page 10: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

APLICAÇÕES:

INDUSTRIAL: Aplicações em módulos de controle dedicados à cada tipo de equipamento, ou seja,

hardware e software específicos para cada aplicação. Exemplo: Misturadores, Tanques, Fornos, Válvulas

inteligentes, etc;

BIOMÉDICA: Aquisição e controle de sinais neurais para controle de próteses automatizadas, sendo

aplicado na área de tecnologia assistiva.

AUTOMOTIVA: Em sistemas embarcados para controle de elementos eletromecânicos de automóveis,

como por exemplo, módulo de controle de injeção eletrônica, módulo de alarme, etc;

DOMÓTICA: Aplicações em automação residencial para controle de periféricos como eletrodomésticos,

portas eletrônicas, controle de acesso biométrico, controle de acionamento por voz, etc;

10

Page 11: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

11

Page 12: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

Conexões Básicas

MCLR 5 V

AVDD 5V

AVSS 0V

VDD 5V

VSS 0V

12

Page 13: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

CIRCUITO BÁSICO:

RESET

FILTRO

13

Page 14: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

14

Page 15: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

CONCEITO:

São posições de memória no qual é carregado um valor, determinando a configuração de alguma

propriedade ou ação a ser realizada pelo microcontrolador, ou apenas indicar algum parâmetro de

funcionamento.

Os registradores possuem um número especifico de bits, de acordo com cada aplicação, geralmente

possuem 8 bits, mas podemos encontrar registradores de 16 bits.

Cada bit do registrador é setado se carregado o valor lógico 1, caso o valor a ser carregado for 0,

o bit correspondente é resetado.

EXEMPLO DE APLICAÇÃO:

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

1 0 0 0 0 1 0 0

Neste caso somente os bits 7 e 2 são setados.

15

Page 16: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

CARREGANDO VALORES NOS REGISTRADORES:

Para carregar um valor em qualquer registrador, deve-se executar esta ação na linha de

programação.

Na linguagem C executamos essa tarefa da seguinte maneira:

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

2³ 2¹2² 2³2º 2¹2² 2º

1 0 0 0 0 1 0 0

8 + 0 + 0 + 0 0 + 4 + 0 + 084

84 é o valor em Hexadecimal a ser carregador no registrador para esta situação.

16

Page 17: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

DIGITANDO O VALOR A SER CARREGADO:

Depois de calcular o valor que deve ser inserido no registrador, devemos digitar no programa a

linha de comando responsável pela execução desta ação:

NOME DO REGISTRADOR = 0X84;

Então temos o nome do registrador digitado em maiúsculo, em seguida o sinal de atribuição,

pois estamos atribuindo um valor a esse registrador, logo após vem o comando “0X” indicando que o valor

a ser carregado esta na base hexadecimal, depois o valor calculado, que neste exemplo é “84”, e por último o

sinal “;” que indica fim da linha de comando.

17

Page 18: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

18

Page 19: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

DEFINIÇÃO:

Como em todos os microcontroladores, com o objetivo de reduzir tamanho e quantidade de pinos

em um chip, os microcontroladores da família PIC se utilizam do compartilhamento de funções de seus pinos.

Sendo assim um mesmo pino pode ser utilizado como entrada analógica ou Entrada/Saída Digital, ou ainda

um pino pode ser usado como tensão de referência de um conversor Analógico – Digital ou como pino de

Entrada/Saída Digital.

CARACTERÍSTICAS:

Dependendo do dispositivo selecionado e as características disponíveis, existem até 5 PORT’s

disponíveis nos microcontroladores da família PIC. Alguns pinos de E/S são multiplexados com funções

alternativas dependendo dos periféricos disponíveis. Em geral, quando um periférico é habilitado, o

respectivo pino não deve ser utilizado como E/S de uso geral.

Cada PORT possui dois registradores :

REGISTRADOR TRISx Registrador de Direção do pino;

REGISTRADOR PORTx Registrador que lê ou escreve dados no pino;

19

Page 20: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

REGISTRADOR TRISx:

Este registrador é responsável por configurar os pinos como entrada ou saída digital, são

constituídos de 8 bits, sendo que cada bit corresponde a um pino do PORT. Para isso devemos carregar um

valor neste registrador como a seguir:

0 Pino é configurado como saída;

1 Pino é configurado como entrada;

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 02³ 2¹2² 2³2º 2¹2² 2º

Rx7 Rx6 Rx5 Rx4 Rx3 Rx2 Rx1 Rx0

x Indica que pode ser os bits do TRISA, TRISB, TRISC, TRISD, TRISE.

20

Page 21: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

EXEMPLO DE APLICAÇÃO:

Para configurar os pinos RB1, RB3 e RB6 como entrada, deve-se proceder da seguinte maneira:

RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0

2³ 2¹2² 2³2º 2¹2² 2º

0 1 0 0 1 0 1 0

0 + 4 + 0 + 0 8 + 0 + 2 + 0

4 10 A

TRISB = 0x4A;

21

Page 22: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

REGISTRADOR PORTx:

Este registrador tem a função de ler e escrever um valor no pino correspondente, ou seja, é um

registrador de acesso, pois podemos ler um valor enviado a um pino, ou gerar um sinal de saída no PORT

correspondente.

TRISx

PORTx

EXEMPLO DE APLICAÇÃO:

SE (PORTAbits.RA1==1)

FAÇA

PORTBbits.RB3=1;

FIM

Neste exemplo caso o pino 1 do PORTA for setado, o pino 3 do PORTB deve ser setado também.

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

Rx7 Rx6 Rx5 Rx4 Rx3 Rx2 Rx1 Rx0}

22

Page 23: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

23

Page 24: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

INTRODUÇÃO:

Os microcontroladores PIC podem trabalhar basicamente com três fontes de clock tendo

cada uma delas características próprias de funcionamento. Os blocos osciladores dividem-se

em osciladores primários, secundários e bloco oscilador interno. Os osciladores primários são aqueles

conectados aos pinos OSC1 e OSC2 que podem ser malhas de circuito RC, bloco oscilador interno, cristais

e ressonadores.

Os osciladores secundários são aqueles que não são conectados aos pinos OSC1 e OSC2.

Estes osciladores podem continuar funcionando mesmo quando o microcontrolador estiver

trabalhando em modo de gerenciamento de energia.

O tipo de oscilador a ser utilizado pode ser programado no registrador de configuração do

dispositivo durante o momento de gravação do chip.

As características de utilização e operação do oscilador interno devem ser configuradas no

registrador OSCCON .

24

Page 25: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

Bit 6-4 : IRCF2:IRCF0: (Internal Oscillator Frequency Select Bits) – Bits de seleção de

frequência do oscilador interno.

25

Valor Binário Frequência

1 1 1 8 MHz 1 1 0 4 MHz 1 0 1 2 MHz 1 0 0 1 MHz 0 1 1 500 kHz0 1 0 250 kHz0 0 1 125 kHz0 0 0 31 kHz

Page 26: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

26

Bit 1-0 SCS1:SCS0: System Clock Select bits – Bits de seleção do clock do sistema.

1x = Bloco oscilador interno selecionado

01 = Oscilador do Timer 1

00 = Oscilador primário (externo).

Page 27: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

CIRCUITO x TABELA DE CONFIGURAÇÃO:

27

TipoOsc

Freq.Cristal

Valores dos Capacitores

C1 C2

LPLow power

32 kHz 33 pF 33 pF

200 kHz 15 pF 15 pF

XTCrystal/

Resonator

1 MHz 33 pF 33 pF

4 MHz 27 pF 27 pF

HSHigh Speed/ Resonator

4 MHz 27 pF 27 pF

8 MHz 22 pF 22 pF

20 MHz 15 pF 15 pFUtilizar pinos OSC1 e OSC2 e configurar na telaconfiguration bits o tipo do oscilador.

Page 28: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

28

Page 29: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

INTRODUÇÃO:

Para que o microcontrolador execute as ações desejadas, primeiro temos de programá-lo,

indicando como o mesmo deve se comportar em uma determinada situação. Existem algumas linguagens de

programação no qual pode-se programar o microcontrolador, como por exemplo, Assembly, C, entre outras.

Neste capítulo vamos trabalhar com a linguagem C.

MÉTODOS DE PROGRAMAÇÃO:

Para a construção de programas simples, devemos entender algumas funções básicas de

programação em linguagem C. A seguir observamos algumas funções em C.

FUNÇÕES DE CONTROLE EM C:

As declarações ou comandos de controle são uma parte muito importante de uma linguagem de

programação, e a linguagem C dispõe de um excelente conjunto de comandos.

29

Page 30: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

CATEGORIAS DE DECLARAÇÕES DE CONTROLE:

Podemos classificar as declarações de controle em duas categorias básicas:

Declarações de teste condicional: São utilizadas para testar determinadas condições/variáveis e

Executar um código para cada caso. A linguagem C dispõe de dois tipos de declarações condicionais: O

comando “if” e o comando “switch”.

Declarações de estrutura de repetição: São utilizadas para provocar a execução de um bloco de

comandos enquanto uma determinada condição for verdadeira. Em C dispomos de três declarações de

repetição, os comandos “for”, “while”, “do-while”.

30

Page 31: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

COMANDO IF:

De maneira geral, o comando “if” (se) é utilizado para executar um comando ou bloco de comandos

no caso de uma determinada condição ser avaliada como verdadeira. Opcionalmente, é também possível

executar outro comando ou bloco de comandos no caso da condição ser avaliada como falsa.

Estrutura:

if ( condição)

{

comando;

}

Onde:

If comando condicional;

Condição situação a ser analisada;

{ ; } abre e fecha comando;

Comando ação a ser executada;

31

Page 32: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

COMANDO ELSE:

O comando else (senão) é um complemento do comando if. Esta função “encerra” o comando if,

pois indica a última condição a ser analisada.

Estrutura:

if (condição)

{

comando;

}

else

{

comando;

}

Onde:

else comando senão que complementa o comando if.

32

Page 33: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

COMANDO SWITCH:

A declaração switch permite a realização de comparações sucessivas como a anterior, de uma

forma mais elegante, clara e eficiente.

Estrutura:

switch (variável)

{

case constante 1:

comando a;

break;

case constante 2:

comando b;

break;

default:

comando c;

}

33

Page 34: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

COMANDO FOR:

O laço for é uma das mais comuns estruturas de repetição, sendo a versão C considerada uma

das mais poderosas e flexíveis dentre todas as linguagens de programação.

Estrutura:

for ( inicialização; condição; incremento)

{

comando;

}

Onde:

Inicialização Valor inicial;

Condição situação a ser analisada;

Incremento valor a ser incrementado no valor inicial.

34

Page 35: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

COMANDO WHILE:

Neste comando a condição é avaliada, caso seja verdadeira, então o comando ou bloco de

comandos executado e a condição é novamente avaliada, reiniciando o laço. Caso a condição seja falsa, o

comando ou bloco de comandos não é executado e o programa tem sequência a partir da declaração

seguinte ao bloco while.

Estrutura:

while ( condição)

{

comandos;

}

LAÇO INFINITO:

Para criarmos um laço infinito, devemos atribuir o valor de 1 a condição:

while (1)

{

programa

}

35

Page 36: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

FUNÇÃO MAIN:

A declaração main( ) especifica o nome de uma função, no caso a função principal ou o corpo

principal do programa. Nesta função as chaves devem ser utilizadas para abrir e fechar a função:

Estrutura:

main ( )

{

programa

}

FUNÇÃO INCLUDE:

O comando include é uma diretiva do compilador. Neste caso está determinado ao compilador

C18. Os arquivos com extensão .h são chamados de arquivos de cabeçalho e são utilizados em C para

definir variáveis, tipos, símbolos, e funções úteis ao programa. Estes arquivos contém as informações

específicas de cada microcontrolador.

Estrutura:

#include <p18f4431.h>

#include<stdlib.h>

36

Page 37: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

FUNÇÃO DEFINE:

Com esta função é possível definir um indicador à um pino, tornando mais fácil a compreensão

do código fonte do microcontrolador.

Exemplo:

#define S1 PORTAbits.RA0

#define M1 PORTBbits.RB0

...if(S1==1)

{

M1=1;

}

Neste caso, S1 é o indicador do pino RA0 (sensor) e M1 é o indicador do pino RB0 (motor).

37

Page 38: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

CRIANDO SUB-ROTINAS:

Sub-rotinas são pequenos programas que são executados dentro do programa inicial no momento

em que são chamados. Geralmente contém rotinas de configuração de canais de entrada e saída, módulo de

PWM, módulo de encoder, canal analógico, comunicação serial, etc.

Estrutura:

void nome da sub-rotina( )

{

configuração ou comandos;

}

void main( )

{

nome da sub-rotina( );

programa principal

}

38

Page 39: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

CRIANDO UM PROGRAMA COMPLETO EM C:

Abaixo observamos um programa completo para ser descarregado no PIC 18F4431:

Problema: Se o pino RA2 for verdadeiro, o pino RB0 deve permanecer em nivel lógico baixo, se o pino RA2

for falso, o pino RB0 deve permanecer em nivel lógico alto:

#include<p18f4431.h>

void config_io()

{

TRISA=0X04;

TRISB=0X00;

ANSEL0=0X00;

}

void main ()

{

OSCCON=0X72;

config_io();

while(1)

{if (PORTAbits. RA2==1)

{PORTBbits.RB0=0;}

else{PORTBbits.RB0=1;}

}}

39

Page 40: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

40

Page 41: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

INTRODUÇÃO:

Esta função é utilizada para criar atrasos na execução do programa, contabilizados em ciclos

de máquina. Para a trabalhar com esta função, inicialmente deve-se inserir no cabeçalho do programa

o arquivo correspondente que está localizado na pasta “h” do compilador.

Exemplo:

#include<delays.h>

Com este comando, o programa insere este arquivo no projeto de controle.

ESTRUTURA:

Pode-se encontrar algumas possibilidades de utilização da função Delay:

Delay1TCY( ci ); Múltiplos de 1

Delay10TCYx( ci ); Múltiplos de 10

Delay100TCYx( ci ); Múltiplos de 100 ci ciclos de instrução

Delay1KTCYx( ci ); Múltiplos de 1000

Delay10KTCYx( ci ); Múltiplos de 10000

41

Page 42: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

CÁLCULO DO TEMPO DE ATRASO:

Para determinar o tempo de atraso do programa, deve-se adotar a seguinte equação:

Exemplo:

Para criar um atraso de 1 segundo, têm-se:

if(PORTAbits.RA0==1)

{

Delay10KTCYx(200); // (2000000 /(múltiplos -> 10k)) = 200

PORTBbits.RB0=1;

}

Nesta aplicação, se o pino RA0 for acionado; o pino RB0 acionará após 1 segundo;

42

Page 43: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

EXEMPLO:

Após 800mseg do acionamento do pino RA0, o pino RB0 deverá acionar:

#include<p18f4431.h>#include<delays.h>

void config_io(){

TRISA=0X01;ANSEL0=0X00;

}

void main(){

OSCCON=0X72;config_io();

while(1){

if(PORTAbits.RA0==1){

Delay10KTCYx(160);PORTB=0X01;

}else

{PORTB=0X00;

}}

}

43

Page 44: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

44

Page 45: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

INTRODUÇÃO:

Para criar programas em C para microcontroladores pode-se utilizar o software MPLAB

licenciado pela própria Microchip. Indica-se a utilização de versões acima da 8.30 (ideal 8.83). Para efetuar

a transformação do arquivo em C para Hexadecimal, pode-se utilizar o compilador C18, v3.40 ou superior.

Estes softwares devem trabalhar em conjunto para realizarmos os projetos de controle para

qualquer família de microcontroladores, pois o método de programação é o mesmo, apresentando apenas

diferenças nas configurações no software.

Para realizar as simulações dos programas, pode-se utilizar o software Proteus, da Labcenter.

45

Page 46: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

CRIANDO UM PROJETO NO MPLAB:

Para criar um projeto, deve-se abrir a opção “Project” item “Project Wizard”

Clicando da opção “Avançar” passamos para a segunda tela.

46

Page 47: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

Na tela a seguir, pode-se selecionar o PIC para o projeto, em seguida opção “Avançar”.

47

Page 48: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

Nesta tela, pode-se selecionar o compilador à ser utilizado no projeto, neste caso, “MPLAB C18

Compiler” ,em seguida opção “Avançar”.

48

Page 49: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

Aqui deve-se selecionar onde será salvo o projeto de controle. Antes de iniciar o project wizard

é recomendável criar uma pasta para armazenar os arquivos de projeto. No botão “BROWSE” pode-se

escolher a pasta no qual será salvo o projeto.

IMPORTANTE: Todos os arquivos deverão estar organizados na mesma pasta de projeto.

OBS: A tela à seguir pode ser desconsiderada.

49

Page 50: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

Por fim, tem-se a tela à seguir com a as informações de projeto criadas.

Clicando em “CONCLUIR” encerra-se o gerenciador de projeto.

50

Page 51: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

Ao terminar o Project Wizard, deve-se abrir um novo

arquivo, salvá-lo com a extensão “.c” e inseri-lo na pasta SOURCE

FILES, para isso, clicar com botão direito do mouse nesta pasta,

opção “ADD FILE” e buscar o arquivo em C salvo na pasta do

projeto.

Se houver necessidade outros arquivos de bibliotecas

poderão ser inseridos na árvore de projeto.

Após terminado o projeto, deve-se compilar o projeto

para criar o arquivo “.hex”

51

Page 52: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

AJUSTANDO A TELA “CONFIGURATION BITS”:

Chega-se a esta tela pelo caminho: “configure” – “configuration bits”. A opção “Configuration

bits set in code” deverá ser desabilitada para modificarmos as opções vistas acima.

52

Page 53: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

BARRA DE FERRAMENTAS DO MPLAB:

Novo Arquivo de ProgramaNovo Projeto

Compilar ProgramaAbrir ArquivoSalvar Arquivo

Salvar Projeto

Abrir Projeto

Quando o programa é compilado (Build All) um arquivo “.hex” é gerado, e é este arquivo que é

utilizado para efetuar a simulação no Proteus, ou quando deseja-se gravar o microcontrolador.

53

Page 54: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

GRAVAÇÃO DO PIC 18F4431:

Para selecionar o Kit de gravação deve-se iniciar a função “Programmer” na barra de menus

do MPLAB, e em seguida opção “Select Programmer”, e assim escolher o kit à ser utilizado.

Nesta tela é possível efetuar a escolha do kit de

gravação suportado pelo MPLAB.

Deve-se atentar que cada gravador possui suas

peculiaridades no funcionamento e gravação. Após selecionado

o gravador, deve-se compilar o arquivo novamente e inseri-lo no

microcontrolador.

54

Page 55: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

FERRAMENTAS DE GRAVAÇÃO:

Para gravar o microcontrolador PIC, deve-se utilizar as ferramentas específicas de gravação

de cada kit. Na grande maioria dos casos segue:

Transfere arquivo.hex para o PIC Apaga conteúdo do PIC

Lê programa do PIC

Verifica se o programafoi gravado corretamente

Verifica se há um programano PIC

Verifica MemóriaEEPROM

Habilita MCLR

Desabilita MCLR

55

Page 56: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

56

Page 57: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

INTRODUÇÃO:

Com o software proteus da labcenter é possível simular os circuitos eletrônicos a base de

microcontrolador, sendo esta simulação mais próxima possóvel da realidade. Nesta apostila utilizaremos a

versão 8.0

57

Page 58: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

CRIANDO UM PROJETO:

Com a versão 8.0 é possível criarmos um projeto de desenvolvimento eletrônico contendo

Sketch de montagem, ambiente para desenvolvimento PCB e firmware. Utilizaremos apenas o Sketch.

58

Clicar em “New Project” para iniciar um novo projeto.

Page 59: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

CRIANDO UM PROJETO:

59

Definir o nome do projeto e o local onde o mesmo será salvo.

Page 60: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

CRIANDO UM PROJETO:

60

No próximo passo deve-se definir o tamanho da área de trabalho.

Page 61: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

CRIANDO UM PROJETO:61

As opções para criação de Placa e firmware podem ser desconsideradas, ao término

aparecerá a tela “Summary”.

Page 62: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

ÁREA DE TRABALHO62

Barra de ferramentas do software

Ferramentas de simulação

Page 63: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

Selection Mode: Seleciona componentes Grafic Mode: Ferramenta de gráficos 2D Grafics Closed Path Mode: Criar formas

Component Mode: Acesso à biblioteca Active Popup Mode: Ativar Janelas de mens. 2D Grafics Text Mode: Criar Textos

Junction Dot Mode: Criar Junções Generator Mode: Fontes Geradoras 2D Grafics Symbols Mode: Criar Simbolos

Wire Label Mode: Etiqueta de Linha Probe Mode: Pontas de Prova 2D Grafics Marker Mode: Criar Marcações

Text Script Mode: Editar textos de comando Virtual Instruments: Instrum. de Medição

Buses Mode: Criar sobreposição de linhas 2D Grafics Line Mode: Criar linha 2D

Subcircuit Mode: Criar circuitos secundários 2D Grafics Box Mode: Criar caixa 2D

Terminals Mode: Alimentação padrão (5V , 0V) 2D Grafics Cicle Mode: Criar Circulos 2D

Device Pins Mode: Criar pinos para componentes 2D Grafics Arc Mode: Criar arco 2D

BARRA DE FERRAMENTAS63

Page 64: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

BIBLIOTECA64

Para acessar a biblioteca, é necessário clicar na opção “Component

Mode” e em seguida na letra “P” na janela “DEVICE”

Ferramenta “Component Mode”

Page 65: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

BIBLIOTECA65

Na janela “Keywords” é possível encontrar os componentes digitando o nome, ou navegando

pelas janelas “Category” , “Sub-category” , “Manufacture”.

Page 66: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

MONTAGEM DO CIRCUITO66

Com os componentes inseridos na barra de ferramentas, é possivel colocá-los na área de

trabalho para iniciar a montagem do circuito. Para mudar os valores dos componentes, deve-se dar

duplo click em cada componente, ou clicar com o botão direito do mouse e acionar a opção “Edit

Properties”.

Page 67: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

SIMULANDO PROGRAMAS NO PROTEUS67

Para Simular o programa, deve-se dar duplo click no PIC e na opção “Program File” inserir o

arquivo “.hex” gerado na pasta de projeto do MPLAB. Configurar o Oscilador na opção “Processor Clock

Frequency” para a frequência desejada.

Page 68: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

SIMULANDO PROGRAMAS NO PROTEUS68

Antes de iniciar a simulação deve-se configurar

dois parâmetros: o primeiro é desabilitar as mensagens de

erro para melhorar a velocidade da simulação. Isso é feito

na opção “Debug” – “ Configure Diagnostics”

Page 69: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

SIMULANDO PROGRAMAS NO PROTEUS69

Na opção “ Log From” zerar as duas caixas.

Page 70: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

SIMULANDO PROGRAMAS NO PROTEUS70

Na Ferramenta “System” acionar a opção “Set

Animation Options” para definir alguns parâmetros de

melhoria na qualidade da execução da simulação.

Page 71: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

SIMULANDO PROGRAMAS NO PROTEUS71

Na opção “Set Animation options” pode-se aumentar a taxa de frames por secundo

“Frames per Second:”, aumento a velocidade de simulação (máximo de 50). Alem desta

configuração pode-se habilitar outro parâmetro na opção “Spice Options”.

Page 72: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

SIMULANDO PROGRAMAS NO PROTEUS72

Após aberta a opção “SPICE Options”,

mudar o valor do campo “Default Settings” para

“Settings for Better Convergence” , clicar em

“Load” e em seguida em “OK”.

Page 73: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

SIMULANDO PROGRAMAS NO PROTEUS

73

Para efetuar a simulação no proteus deve-se utilizar a barra de ferramentas de

simulação, localizada no canto inferior esquerdo da tela com as seguintes opções:

Play: Iniciar a simulação continua

Step Play: Iniciar simulação passo a passo

Pause: Pausar simulação

Stop: Parar simulação

Page 74: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

SIMULANDO PROGRAMAS NO PROTEUS74

Para ver o componente simulando deve-se escolher os elementos na biblioteca com a

opção “Library” definida com “ACTIVE”. Isso é válido para qualquer componente.

Page 75: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

LISTA DE COMPONENTES75

Segue exemplos de alguns componentes úteis e suas bibliotecas:

Pic18f4431

Res – resistor padrão

Cap – capacitor padrão

Optocoupler NPN – optoacoplador padrão

4n25 – optoacoplador

IRF540N – MOSFET

BC548 – Transistor

Button – botão pulsante

SW- SPDT – chave de 3 terminais

SW-SPST – chave de 2 terminais

SW-ROT – chave giratória

Alternator – fonte alternada

Lamp – lâmpada

Motor – motor

Motor-PWMservo – sevomotor

Relay – relé

Lm016 – Display LCD 2X16

Pot-HG – potenciômetro

741 – amplificador operacional

Lm358 – amplificador de instrumentação

Buzzer – campainha

L298 – ponte H integrada

ULN2803 – Drive para motor de passo

Battery – bateria (tensão regulável)

1N4007 – diodo retificador

Page 76: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

76

Page 77: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

INTRODUÇÃO:

Os temporizadores da família PIC são contadores de pulsos de clock, que podem ser ajustados

para acionar as saídas ou mesmo efetuar algum processo em um determinado tempo.

O PIC 18F4431 possui 4 módulos de timer, que podem ser configurados de maneira singular

para cada aplicação. Pode-se utilizar os registradores internos diretamente para configurar os módulos, ou

pode-se utilizar a biblioteca “timers.h” inclusa na pasta “h” do compilador C18 com algumas funções

especificas de configuração.

O conteúdo desta apostila está baseado na utilização da biblioteca especifica de timer.

77

Page 78: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

REGISTRADOR TMRx:

Os blocos de timer do PIC utilizam o registrador TMRx para armazenar o valor da contagem de

tempo. Este registrador virtual é constituído de 2 registradores físicos TMRxL e TMRxH.

TMRxH TMRxL

Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 09 Bit 08 Bit 07 Bit 06 Bit 05 Bit 04 Bit 03 Bit 02 Bit 01 Bit 00

Blocos de Timer de 16 ou 8 bits:

TMR0H : TMR0L Timer 0; (16 ou 8 bits)

TMR1H : TMR1L Timer 1; (16 ou 8 bits)

TMR5H : TMR5L Timer 5; (16 bits)

78

Page 79: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

REGISTRADOR TMRx:

O bloco de timer 2 do PIC utiliza o registrador TMR2 para armazenar o valor da contagem de

tempo. Este registrador é físico, diferentemente dos outros módulos.

TMR2

Bit 07 Bit 06 Bit 05 Bit 04 Bit 03 Bit 02 Bit 01 Bit 00

Blocos de Timer 8 bits:

TMR2 Timer 2;

79

Page 80: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

FUNÇÕES DA BIBLIOTECA “timers.h” :

As funções do módulo de timer à seguir estão baseadas na biblioteca “timers.h” e podem ser

utilizadas em qualquer microcontrolador da família PIC 18F, desde que possua o módulo de timer.

Função CloseTimerx( );

Esta função encerra os blocos de timer.

Exemplo:

CloseTimer0( );

CloseTimer1( );

CloseTimer2( );

CloseTimer5( );

Quando for necessário fechar o módulo de timer, utiliza-se este comando.

80

Page 81: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

Função ReadTimerx( );

Esta função efetua a leitura do registrador TMRx. Este valor deverá ser atribuído a uma

variável do tipo inteira.

ReadTimer0( );

ReadTimer1( );

ReadTimer2( );

ReadTimer5( );

Exemplo:

unsigned int tempo;

tempo=ReadTimerx( );

A variável tempo poderá ser utilizada no programa para análises a serem realizadas.

81

Page 82: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

Função WriteTimerx( );

Esta função efetua a escrita no registrador TMRx.

Exemplo:

WriteTimer0( 0 );

WriteTimer1( 0 );

WriteTimer2( 0 );

WriteTimer5( 0 );

Neste caso os registradores TMR0L e TMR0H são resetados.

82

Page 83: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

Função OpenTimerx( );

Esta função inicia os blocos de timer.

OpenTimer0( configuração );

OpenTimer1( configuração );

OpenTimer2( configuração );

OpenTimer5( configuração );

Exemplo:

Observar parâmetros na tabela do timer 0 para substituição do termo “configuração”.

OpenTimer0(TIMER_INT_OFF

&T0_16BIT

&T0_SOURCE_INT

&T0_PS_1_128);

83

Page 84: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

Função Constante Descrição

Interrupção de TIMER 0 TIMER_INT_ONTIMER_INT_OFF

Habilita.Desabilita.

Tamanho do Contador T0_8BITT0_16BIT

8 bits.16 bits.

Fonte de Clock T0_SOURCE_EXTT0_SOURCE_INT

Fonte de clock externa.Fonte de clock interna.

Borda de Incremento .Somente para fonte de clock externa

T0_EDGE_FALLT0_EDGE_RISE

Borda de subida.Borda de descida.

Prescaler

T0_PS_1_1T0_PS_1_2T0_PS_1_4T0_PS_1_8T0_PS_1_16T0_PS_1_32T0_PS_1_64T0_PS_1_128T0_PS_1_256

1:1 – Prescaler1:2 - Prescaler1:4 - Prescaler1:8 - Prescaler1:16 - Prescaler1:32 - Prescaler1:64 - Prescaler1:128 - Prescaler1:256 - Prescaler

Tabela de configuração do Timer 0 (16 ou 8 bits):84

Page 85: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

Função Constante Descrição

Interrupção de TIMER 1 TIMER_INT_ONTIMER_INT_OFF

Habilita.Desabilita.

Tamanho do Contador T1_8BIT_RWT1_16BIT_RW

8 bits.16 bits.

Fonte de Clock T1_SOURCE_EXTT1_SOURCE_INT

Fonte de clock externa.Fonte de clock interna.

Circuito Oscilador T1_OSC1EN_ONT1_OSC1EN_OFF

Habilita.Desabilita.

Sincronismo da entrada de clockexterna

T1_SYNC_EXT_ONT1_SYNC_EXT_OFF

Habilita.Desabilita.

Prescaler

T1_PS_1_1T1_PS_1_2T1_PS_1_4T1_PS_1_8

1:1 – Prescaler1:2 - Prescaler1:4 - Prescaler1:8 - Prescaler

Tabela de configuração do Timer 1 (16 ou 8 bits):

85

Page 86: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

Função Constante Descrição

Interrupção de TIMER 2 TIMER_INT_ONTIMER_INT_OFF

Habilita.Desabilita.

Prescaler

T2_PS_1_1T2_PS_1_4T2_PS_1_16

1:1 – Prescaler1:4 - Prescaler1:16 – Prescaler

Postscaler

T2_POST_1_1T2_POST_1_2T2_POST_1_3T2_POST_1_4...

T2_POST_1_15T2_POST_1_16

1:1 – Postscaler1:2 – Postscaler1:3– Postscaler1:4– Postscaler...

1:15 – Postscaler1:16– Postscaler

Tabela de configuração do Timer 2 (8 bits):86

Page 87: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

Função Constante Descrição

Modo Sleep T5_SLP_EN T5_SLP_DIS

HabilitaDesabilita

Eventos Especiais T5_SP_EVNT_RENT5_SP_EVNT_RDIS

HabilitaDesabilita

Define modo do contador T5_MD_SNGL_SHOT T5_MD_CONT_COUNT

Modo Gatilho únicoModo Contínuo

Fonte de Clock T5_CLK_EXTRNT5_CLK_INT

Configura fonte de clock externaConfigura fonte de clock interna

Sincronismo da entrada de clockexterna T5_EX_CLK_SYNC

T5_EX_CLK_NOSYNCModo SíncronoModo Assíncrono

Prescaler

T5_PS_1_1T5_PS_1_2T5_PS_1_4T5_PS_1_8

1:1 – Prescaler1:2 - Prescaler1:4 - Prescaler1:8 – Prescaler

Tabela de configuração do Timer 5 (16 bits):87

Page 88: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

CÁLCULO DO TEMPO DOS MÓDULOS DE TIMER:

Para definir o tempo de estouro do registrador TMRx, deve-se utilizar a equação a seguir:

Onde:

t: Tempo requerido;

Fosc : Frequência do oscilador;

PE : Prescaler.

88

Page 89: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

Exemplo 1:

Acionar o pino RB0 após 1 segundo da energização do PIC:

#include<p18f4431.h>

#include<timers.h>

unsigned int timer;

void main()

{

OSCCON=0X72;

TRISB=0X00;

PORTB=0X00;

OpenTimer0(TIMER_INT_OFF

&T0_16BIT

&T0_SOURCE_INT

&T0_PS_1_128);

while(1)

{

timer=ReadTimer0( );

if(timer==15625) // TEMPO DE 1 SEGUNDO

{

PORTB=0X01;

WriteTimer0(0);

}

}

}

89

Page 90: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

Exemplo 2:

Acionar o pino RB0 após 10 segundo da energização do PIC:

#include<p18f4431.h>#include<timers.h>unsigned int timer;int real_timer;

void main() {

OSCCON=0X72;TRISB=0X00;PORTB=0X00;OpenTimer0(TIMER_INT_OFF

&T0_16BIT&T0_SOURCE_INT&T0_PS_1_128);

while(1){

timer=ReadTimer0( );

if(timer==15625){

real_timer++;WriteTimer0(0);

}

if(real_timer==10){

PORTB=0X01;}

}}

90

Page 91: MÓDULO I - profbrunopedroso.webnode.com · MÓDULO I Capítulo I: Introdução à Família PIC. Capítulo II: Registradores. Capítulo III: Canal de I/O Digital. Capítulo IV: Oscilador

ROSA. Fabiano Camargo. Apostila de Microcontroladores II. Universidade de Mogi das Cruzes. 2008.

SANCHES. João. Apostila de Microcontroladores I. Universidade de Mogi das Cruzes. 2007.

MIYADAIRA, Alberto Noboru. Microcontroladores PIC18: aprenda e programe em linguagem C. Ed Érica. 3 ed. São Paulo. 2012.

Microchip C18 Libraries. MICROCHIP.

DATASHEET. MICROCHIP PIC18F4431.

91