Delays
-
Upload
williarde-souza -
Category
Documents
-
view
54 -
download
0
description
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
?