Delays

37
Desenvolvimento para Desenvolvimento para Microcontroladores e Microcontroladores e Delays Delays Alex Vidigal Bastos Sistemas Embarcados

description

d

Transcript of Delays

Page 1: Delays

Desenvolvimento para Desenvolvimento para Microcontroladores e Microcontroladores e

DelaysDelays

Alex Vidigal Bastos

Sistemas Embarcados

Page 2: Delays

Sumário

• Boas práticas programação• Delays• Modos de Gravação / Boot Loader• Registradores de funções especiais

SFR.• Entrada e saídas | TRIS e PORT

Page 3: Delays

Reaproveitamento de Código

E se eu quisesse escrever no display em outros projetos?

Posso copiar e colar o código? Já pensou em criar uma biblioteca?

Page 4: Delays

Bibliotecas

Biblioteca é um conjunto de funções correlacionadas para um determinado contexto agrupadas em um mesmo arquivo.

Por exemplo, as funções cosseno, seno, exponencial, logaritmo estão todas agrupadas em um biblioteca chamada “math.h”

Page 5: Delays

Bibliotecas do Compilador C18

Para que servem as bibliotecas? Dividir para conquistar; Reaproveitamento de código; Agilidade no desenvolvimento de

soluções para projeto(Ex: p18f4550.h);

Page 6: Delays

Bibliotecas do Compilador C18

Quais as possibilidades de usar as bibliotecas? O programador pode criar suas próprias

bibliotecas.h. Ou usar bibliotecas prontas de outros

programadores; Ou ainda usar as bibliotecas

disponibilizadas pelos fabricante do compilador.

Ex. p18cxxx.h

Page 7: Delays

Como criar uma biblioteca de usuário?

Uma biblioteca de usuário é composta por dosis arquivos;

*.c – contém as declarações das funções • Conhecida como arquivo fonte.

*.h – contém os protótipos das funções e outras informações que podem ser alteradas para adaptar a biblioteca a um determinado hardware(#define's)

Conhecido como arquivo de cabeçalho;

Page 8: Delays

Usando bibliotecas

Para usar uma biblioteca padrão C18, declare a diretiva #include<...>:

#include <nome_da_biblioteca.h>

Para usar uma biblioteca de usuário: Copiar os arquivos da biblioteca (.c e .h)

para o diretório do projeto; Adicionar esses arquivos .c e .h ao projeto. Declare a diretiva #include “...”:

#include “nome_da_biblioteca.h”

Page 9: Delays

Usando bibliotecasQuais dessas bibliotecas são padrões C18 e quais são criadas pelo programador?

Page 10: Delays

Funções de Atraso (delay)

Na programação de Microcontroladores é necessário criar funções para contagem de tempo. Qual componente ligado ao Microcontrolador gera a base de tempo do processador? Sua frequência é conhecida?

Page 11: Delays

Ciclo de Clock ou Ciclo de Instrução

Os Microcontroladores executam um ciclo (período) de INSTRUÇÃO a cada 4 ciclos de CLOCK.

Um ciclo de Instrução (TCY – Time of Instruction Cycle) é o tempo gasto que a CPU gasta para executar uma instrução.

Page 12: Delays

Calculando o Ciclo de Instrução

ATENÇÃO – A frequência de CLOCK da CPU da placa do PICMinas é de 40 MHz, apesar do cristal externo ser de 20MHz!

Existe um circuito interno multiplicador para alcançar os 48MHz.

Page 13: Delays

Calculando o Ciclo de Instrução

Um ciclo de INSTRUÇÃO da placa do PICMinas18 é dado por:

TCY – 4*(1/48MHz) = 83,33*10-9 = 83,33ns FCY – Fckl/4 = 48MHz/4 = 12*106 instruções por

segundo FCY -12 MIPS(Instructions Per Second)

Page 14: Delays

Calculando o Ciclo de Instrução

Qual o número N de ciclos de instrução necessários para contar o tempo de 0,5s? N = tempo desejado / TCY N = 0,5 / 83,33ns = 6 milhões ciclos de instrução. Assim após 6 milhões de ciclos de instrução da CPU terá passado apenas 0,5s!!!

Qual o número N de ciclos de instrução necessários para contar o tempo de 0,5s? N = tempo desejado / TCY N = 0,5 / 83,33ns = 6 milhões ciclos de instrução. Assim após 6 milhões de ciclos de instrução da CPU terá passado apenas 0,5s!!!

Page 15: Delays

Exemplo de como contar tempo

Para contar tempo baseando-se no ciclo de instrução (TCY) da CPU precisamos mandar a CPU executar a quantidade de instruções que equivalem ao gasto de tempo desejado.

Que tal criar uma função que faça a CPU repetir uma mesma instrução N vezes e gastar um tempo determinado?

E porque não criar uma biblioteca para aproveitar essa função em vários projetos?

Page 16: Delays

Biblioteca delays.h Tem as seguintes características:

– Base de tempo de um ciclo de instrução (TCY – Time of Instruction Cycle);

No Kit Picminas: 1 TCY – 83,33ns.

– Funções Disponíveis:

Page 17: Delays

Biblioteca delays.h

Page 18: Delays

Biblioteca delays.h Qual é o número máximo de ciclos de instrução para gerar uma espera ocupada através da biblioteca C18 delays.h?

void Delay10KTCYx(0): //atraso de 2.560.000 ciclos

Qual é o tempo equivalente a esse delay?

2.560.000*83,33ns=213,33ms

Se eu precisar de mais tempo... O que posso fazer?

Chamar a função várias vezes!!!

Page 19: Delays

Qual função vou usar? As funções da biblioteca C18 delays.h usar com base de tempo 1TCY e seus múltiplos: 10, 100, 1K e 10K.

Para contar o tempo de 200ms precisamos esperar 2.400.00 TCY.

2.400.000=> múltiplos de 10.000 TCY, usar:

Page 20: Delays

Qual função vou usar?

As funções da biblioteca C18 delays.h usar com base de tempo 1TCY e seus múltiplos: 10, 100, 1K e 10K.

Para contar o tempo de 200ms precisamos esperar 2.400.00 TCY.

– 2.400.000=> múltiplos de 10.000 TCY, usar:Delay10KTCYx(240); //atraso de 200ms

Page 21: Delays

Gravação Off-Board

Na gravação off-board, como o próprio nome diz, é

necessário que o Microcontrolador seja retirado da

sua PLACA DE DESENVOLVIMENTO e colocado em

outro dispositivo, chamado GRAVADORA, para que

um Firmware seja gravado em sua memória interna

não-volátil;

Page 22: Delays

Gravação de um Firmware no PIC

Page 23: Delays

Gravação Off-Board

Page 24: Delays

Existe outra forma de gravar?

Não seria mais fácil gravar o microcontrolador sem retirá-lo da sua plataforma de aplicação?

– Sim, mas para isso é necessário que “alguém” faça o gerenciamento da transferência do firmware para a memória não-volátil do Microcontrolador.

Qual seria essa forma de gravar?

Page 25: Delays

Gravação In-Circuit– Na gravação In-Circuit NÃO há necessidade de

retirar o microcontrolador de sua placa de desenvolvimento, para gravar um firmware;

– Existem duas maneiras de fazer a gravação In-Circuit, através:

– Hardware: embutir recursos na placa para funcionar como gravadora;

– BootLoader: inserindo um programa no Microcontrolador que controle as transferências de firmware;

Page 26: Delays

Gravação In-Circuit por Hardware

Page 27: Delays

Gravação In-Circuit por Hardware

Page 28: Delays

Gravação In-Circuit por Firmware

Page 29: Delays

Gravação In-Circuit via BootLoader

Page 30: Delays

Firmware BootLoader– Como o BOOTLOADER é um firmware, ele irá

ocupar um espaço de memória do MC.

– Sendo assim, organiza-se a memória não-volátil do MC para que coexistam dois firmwares:

• Firmware da aplicação;

• Firware BOOTLOADER;

O BOOTLOADER é o firmware que ocupa as primeiras 4096 posições de memória não volátil. Está alocada no endereço 0x000 até o endereço 0xFFF.

Page 31: Delays

Memória FLASH com BootLoader

Page 32: Delays

Gravador Compatíveis

Page 33: Delays

Gravador Compatíveis

Page 34: Delays

Registradores SFR– São conectados (literalmente) a circuitos

internos;

– Comandam operações de Hardware;

– Funcionam como habilitando, desabilitando ou configurando o Hardware;

Page 35: Delays

Pinos digitais como I/O– PORTAS DIGITAIS DO MC

– Em um MC podemos ter portas (pinos) configuráveis como entradas ou saídas (I/O) digitais;

– Para configurar e acessar as portas, temos dois SFR importantes;

• TRISx e PORTx (x podemos assumir A, B, C, D ou E)

TRISA e PORTA

Page 36: Delays

Pinos digitais como I/O

Page 37: Delays

Perguntas

?