Delays
-
Upload
williarde-souza -
Category
Documents
-
view
25 -
download
1
Transcript of Delays
![Page 1: Delays](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/1.jpg)
Desenvolvimento para Desenvolvimento para Microcontroladores e Microcontroladores e
DelaysDelays
Alex Vidigal Bastos
Sistemas Embarcados
![Page 2: Delays](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/2.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/3.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/4.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/5.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/6.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/7.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/8.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/9.jpg)
Usando bibliotecasQuais dessas bibliotecas são padrões C18 e quais são criadas pelo programador?
![Page 10: Delays](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/10.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/11.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/12.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/13.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/14.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/15.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/16.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/17.jpg)
Biblioteca delays.h
![Page 18: Delays](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/18.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/19.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/20.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/21.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/22.jpg)
Gravação de um Firmware no PIC
![Page 23: Delays](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/23.jpg)
Gravação Off-Board
![Page 24: Delays](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/24.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/25.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/26.jpg)
Gravação In-Circuit por Hardware
![Page 27: Delays](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/27.jpg)
Gravação In-Circuit por Hardware
![Page 28: Delays](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/28.jpg)
Gravação In-Circuit por Firmware
![Page 29: Delays](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/29.jpg)
Gravação In-Circuit via BootLoader
![Page 30: Delays](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/30.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/31.jpg)
Memória FLASH com BootLoader
![Page 32: Delays](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/32.jpg)
Gravador Compatíveis
![Page 33: Delays](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/33.jpg)
Gravador Compatíveis
![Page 34: Delays](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/34.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/35.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/36.jpg)
Pinos digitais como I/O
![Page 37: Delays](https://reader033.fdocumentos.tips/reader033/viewer/2022052903/55721080497959fc0b8d42b7/html5/thumbnails/37.jpg)
Perguntas
?