Delays

Post on 02-Aug-2015

54 views 0 download

description

d

Transcript of Delays

Desenvolvimento para Desenvolvimento para Microcontroladores e Microcontroladores e

DelaysDelays

Alex Vidigal Bastos

Sistemas Embarcados

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

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?

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”

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);

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

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;

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”

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

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?

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.

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.

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)

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!!!

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?

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:

Biblioteca delays.h

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!!!

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:

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

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;

Gravação de um Firmware no PIC

Gravação Off-Board

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?

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;

Gravação In-Circuit por Hardware

Gravação In-Circuit por Hardware

Gravação In-Circuit por Firmware

Gravação In-Circuit via BootLoader

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.

Memória FLASH com BootLoader

Gravador Compatíveis

Gravador Compatíveis

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

internos;

– Comandam operações de Hardware;

– Funcionam como habilitando, desabilitando ou configurando o Hardware;

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

Pinos digitais como I/O

Perguntas

?