27
Processamento Digital de Sinais com dsPIC NOTAS DE AULA CURSO PROCESSAMENTO DIGITAL DE SINAIS COM DSPIC Luis Otávio Médici Hitech Eletrônica 1 de 27

Curso DsPIC LOM Rev2

Embed Size (px)

Citation preview

Page 1: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

NOTAS DE AULA

CURSO

PROCESSAMENTODIGITAL DE SINAIS

COM DSPIC

Luis Otávio Médici Hitech Eletrônica 1 de 27

Page 2: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

ÍndiceCURSO.......................................................................................................................................... 1

Exemplo 1.................................................................................................................................................. 3Objetivos................................................................................................................................................ 3Tarefas....................................................................................................................................................3Dicas.......................................................................................................................................................4Para pensar............................................................................................................................................. 5

Exemplo 2.................................................................................................................................................. 6Objetivos................................................................................................................................................ 6Tarefas....................................................................................................................................................6Dicas.......................................................................................................................................................7Para pensar............................................................................................................................................. 8

Exemplo 3.................................................................................................................................................. 9Objetivos................................................................................................................................................ 9Tarefas....................................................................................................................................................9Dicas.....................................................................................................................................................10Para Pensar........................................................................................................................................... 11

Exemplo 4................................................................................................................................................ 12Objetivos.............................................................................................................................................. 12Tarefas..................................................................................................................................................12Dicas.....................................................................................................................................................13Para Pensar........................................................................................................................................... 13

Exemplo 5................................................................................................................................................ 14Objetivos.............................................................................................................................................. 14Dicas.....................................................................................................................................................15Para pensar........................................................................................................................................... 18

Exemplo 6................................................................................................................................................ 19Objetivos.............................................................................................................................................. 19Tarefas..................................................................................................................................................19Dicas.....................................................................................................................................................20

Importando valores no dsPICWorks........................................................................................ 21Para Pensar........................................................................................................................................... 22

Exemplo 7................................................................................................................................................ 23Objetivos.............................................................................................................................................. 23Tarefas..................................................................................................................................................23Dicas.....................................................................................................................................................24..............................................................................................................................................................26Para Pensar........................................................................................................................................... 27

Luis Otávio Médici Hitech Eletrônica 2 de 27

Page 3: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

Exemplo 1

Objetivos- Criar e configurar um projeto no MpLab utilizando o compilador

C30- Mostrar a estrutura do código em C- Mostrar os arquivos associados ao projeto- Entender o recurso de registrador de módulo do dsPIC- Mostrar a primeira compilação- Mostrar a primeira gravação- Mostrar alguns recursos do simulador

Tarefas

1) Crie a pasta: C:\dspic2) Abra o MpLab3) No menu: Project/Project Wizard ...4) Siga os passos do recurso de criação de projeto:

a. Selecione o componenteb. Selecione o compilador e verifique se todos arquivos estão

presentesc. Defina o nome do projeto como “Curso” e o local como

C:\dspicd. Adicione o arquivo Lab_1.c ao projetoe. Siga para o próximo passo para finalizar o “Wizard”

5) Analise o código fonte Lab_16) No menu: File/Open , procure pelo arquivo “p33FJ64GP706.h “ na

pasta de instalação do compilador C307) Analise o arquivo “Header“

Luis Otávio Médici Hitech Eletrônica 3 de 27

Page 4: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

8) Configure o registrador de período do Timer 1 para interrupções a cada 0,5 segundo.

9) No menu: Project/Build All <CTRL+F10>, compile o programa10)Analise o resultado da compilação e tente descobrir a causa do

problema11)No menu: Project/Add files to project, inclua o arquivo de

“Linker Script”12)No menu: Project/Build All (atalho: CTRL+F10), compile o

programa13)Verifique se o programa foi compilador com sucesso14)Ligue a placa a fonte de alimentação, ligue o ICD2 ao PC usando

o cabo USB e em seguida ligue o ICD2 a placa usando o campo com conector RJ11

15)No menu: Programmer/Select programmer habilite o ICD216)Verifique se o ICD2 foi devidamente habilitado17)No menu: Programmer/Program, para gravar o programa no dsPIC.

Veja também a opção por ícone.18)Verifique o funcionamento da do programa na placa comparando o

resultado com a sua interpretação do código19)No menu: Debugger/Select Tool habilite o “MPLAB SIM”20)Posicione o curso dentro da área de código que inverte o LED e

,através do botão da direita do Mouse, insira um Break Point nesta posição

21)No menu: Debbuger/StopWatch abra e configure o relógio para a placa que estamos trabalhando

22)No menu: Debuger/Reset/Processor Resert (atalho: F6)23)No menu: Debuger/Run (atalho: F9)24)Verifique se o programa para de ser executado no Break Point e

qual o valor mostrado no relógio

Dicas- O Compialdor precisa das informações contidas no arquivo de

“Linker Script” para conseguir compilar o código fonte. O C30 Luis Otávio Médici Hitech Eletrônica 4 de 27

Page 5: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

possui arquivos “Linker Script” específicos para cada part number na pasta de instalação do C30, sub-pasta \Microchip\MPLAB C30\support\gld

- Para que um programa ganhe em portabilidade e facilidade de alteração é interessante que os parâmetros de configuração constantes seja definidos em bloco. No caso do período de 0,5s é interessante que o mesmo esteja definido em função destas constantes, deste modo:

o Fos = 8000000 (8Mhz)o Fcy = Fos /2 (ciclo de máquina é 1:2)o PR1 = (FCY/Pré Scale) * TEMPO (com base no datasheet)o Lembro que PR1 é um registrador de 16 bits

Para pensar

- Explique porque que a temporização de 0,5s não ocorre em períodos exatos de 0,5s?

- Qual seria o valor do PR1 para um período de 2 segundos?

Luis Otávio Médici Hitech Eletrônica 5 de 27

Page 6: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

Exemplo 2

Objetivos- Mostrar como editar um projeto- Mostrar a notação para manipulação de bit- Mostrar como configurar a interrupção- Mostrar como incluir o tratamento de interrupção no código- Mostrar mais recursos do simulador

Tarefas

1) No menu: Project/Remove File From Project, retire do projeto o arquivo Lab_1.c

2) No menu: Project/Add File to Project, inclua no projeto o arquivo Lab_2.c

3) Verifique se o arquivo de “Linker Script” esta correto4) Analise o código fonte Lab_25) Abra o datasheet do dsPIC (documento # 70165) no capitulo sobre

interrupções:a. Localize o bit que habilita as interrupções externas 3 e 4b. Escreva o código que habilite estas interrupções

6) Abra o Manual do C30 (documento # 51284) no capítulo sobre Interrupções:

a. Analise a sintaxe de definição de uma ISR no C30b. Procure os nomes atribuídos a interrupções externa 3 e 4c. Complete o código com a sintaxe de definição das ISR das

interrupções externas 3 e 47) No menu: Project/Build All (atalho: CTRL+F10), compile o

programa8) Verifique se o programa foi compilador com sucesso9) No menu: Programmer/Select programmer habilite o ICD2

Luis Otávio Médici Hitech Eletrônica 6 de 27

Page 7: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

10)Verifique se o ICD2 foi devidamente habilitado11)No menu: Programmer/Program, para gravar o programa no dsPIC.

Veja também a opção por ícone.12)Verifique o funcionamento da do programa na placa comparando o

resultado com a sua interpretação do código13)No menu: Debugger/Select Tool habilite o “MPLAB SIM”14)No menu: View/Watch, criar um estímulo assíncrono (tipo Toggle)

vinculado aos botões da placa15)Posicione o curso dentro da área de código que trata o Botao1 e

insira um Break Point (botão da direita do mouse)16)No menu: Debugger/Stimulus/New Workbook:

a. Insira o SRF vinculado aos botõesb. Mude a propriedade para que o valor seja mostrado em

binário (sobre o SRF clique o botão da direita -> Properties)

17)No menu: Debuger/Reset/Processor Reset (atalho: F6)18)No menu: Debuger/Run (atalho: F9)19)Verifique através do Watch em que situação o programa para de

ser executado devido ao Break Point

Dicas- O datasheet informado é genérico para os dsPIC33F- No datasheet: procure pelo nome genérico da interrupção externa

que é “INT”- A sintaxe mais completa demanda que você saída o nome do SRF e

também o nome do bit dentro deste SFR. Descubra em SRF está o bit que habilita a interrupção: <nome do SFR>bits.<nome do bit>

- A sintaxe mais prática é viabilizada por um define dentro Header específico do Part Number: _<nome do bit> . Desta forma você não precisa saber em qual SFR está o bit

Luis Otávio Médici Hitech Eletrônica 7 de 27

Page 8: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

- No manual do C30, capítulo sobre Interrupção, procure a explicação sobre a sintaxe simplificada para definição de ISR: void _ISR _<nome da interrupção>(void)

Para pensar

- Como o C30 salva contexto das variáveis quando entra na Interrupção?

- Onde é definido se a interrupção ocorre na borda de subida ou de descida?

- É possível fazer com que o Timer 1 também funcione com Interrupção ?

Luis Otávio Médici Hitech Eletrônica 8 de 27

Page 9: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

Exemplo 3

Objetivos- Mostrar como encontrar os SRF referentes a cada interrupção- Mostrar como configurar as interrupções- Mostrar a funcionalidade do recurso de prioridade de

interrupção

Tarefas

1) No menu: Project/Remove File From Project, retire do projeto o arquivo Lab_2.c

2) No menu: Project/Add File to Project, inclua no projeto o arquivo Lab_3.c

3) Verifique se o arquivo de “Linker Script” esta correto4) Analise o código fonte Lab_35) Abra o datasheet do dsPIC (documento # 70165) no capitulo sobre

interrupções:a. Localize os bits que definem a prioridade sistêmica (core)b. Defina a prioridade sistêmica como sendo 4c. Localize os bits que definem a prioridade do Timer 1 e 2d. Escreva o código que atribua prioridade 3 para o Timer 1e. Escreva o código que atribua prioridade 5 para o Timer 2

6) Abra o Manual do C30 (documento # 51284) no capítulo sobre Interrupções:

a. Analise a sintaxe de definição de uma ISR no C30b. Procure os nomes atribuídos a interrupções de Timer 1 e 2c. Confirme se a sintaxe de definição das ISR das interrupções

de Timer 1 e 2 está correta

Luis Otávio Médici Hitech Eletrônica 9 de 27

Page 10: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

7) Inclua código dentro da ISR do Timer 1 fazendo com que o programa permaneça dentro desta ISR até que por mais um período

8) No menu: Project/Build All (atalho: CTRL+F10), compile o programa

9) Verifique se o programa foi compilador com sucesso10)No menu: Programmer/Select programmer habilite o ICD211)Verifique se o ICD2 foi devidamente habilitado12)No menu: Programmer/Program, para gravar o programa no dsPIC.

Veja também a opção por ícone.13)Verifique o funcionamento do programa na placa comparando o

resultado com a sua interpretação do código

Dicas

- Cada evento capaz de gerar uma interrupção tem associado a ele pelo menos três SFR:

o IECn – Interrupt Enable Control (0<=n<=4)o IFSn – Interrupt Flag Status (0<=n<=4)o IPCn – Interrupt Priority Control (0<=n<=17)

- Alem desses temos também:o INTCON1 – Interrup Control 1 o INTCON2 – Interrup Control 2o INTTREG – Interrup Control and Status

- A unidade de controle de processamento (core) tem seu nível de prioridade definido por software (aqui chamada de prioridade sistêmica) através do SFR SR: CPU Status Register

- Para que uma Interrupção seja atendida temos que: Prioridade da Interrupção (IPCn) > Prioridade Sistêmica (SR)

- Quando uma Interrupção ocorre e é atendida a Prioridade Sistêmica a Prioridade da Interrupção que esta sendo atendida, de modo a garantir que somente Interrupções de Prioridade maior que a atual interrompam novamente o processamento

Luis Otávio Médici Hitech Eletrônica 10 de 27

Page 11: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

- No exmplos temos três situações:

Sistêmica Timer 1 Timer 2Preso no Botao1 4 3 (Não) 5 (Sim)No loop e com Botao1 pressionado 6 3 (Não) 5 (Não)No loop e com Botao1 liberado 2 3 (Sim) 5 (Sim)

Para Pensar

- O que ocorre se duas Interrupções com prioridades maiores que a Sistêmica (Core) e iguais ocorrem simultaneamente? Qual das duas é atendida primeiro?

- De que forma o recurso de priorização de Interrupção pode ajudar na implementação de um sistema de processamento digital de sinais?

- No exemplo dois (Lab_2), por que as Interrupções Externas foram atendidas se nós não configuramos as prioridades específicas e sistêmicas?

- Por que os Traps são sempre atendidos, independentemente do nível de prioridade sistêmico?

Luis Otávio Médici Hitech Eletrônica 11 de 27

Page 12: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

Exemplo 4

Objetivos- Demonstrar a configuração do módulo LCD- Demonstrar o funcionamento do módulo LCD- Demonstrar a configuração do periférico UART- Demonstrar o funcionamento do periférico UART

Tarefas

1) No menu: Project/Remove File From Project, retire do projeto o arquivo Lab_3.c

2) No menu: Project/Add File to Project, inclua no projeto o arquivo Lab_4.c

3) Verifique se o arquivo de "Linker Script" esta correto

4) Analise o código fonte Lab_4

5) Abra o datasheet do dsPIC (documento # 70165) no capitulo sobre UART: - Configure o baud rate para 9600; - Habilite a interrupção de recepção; - Desabilite o autobaud;

6) No menu: Project/Build All (atalho: CTRL+F10), compile o programa

7) Verifique se o programa foi compilador com sucesso

8) No menu: Programmer/Select programmer habilite o ICD2

Luis Otávio Médici Hitech Eletrônica 12 de 27

Page 13: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

9) Verifique se o ICD2 foi devidamente habilitado

10) No menu: Programmer/Program, para gravar o programa no dsPIC. Veja também a opção por ícone.

11) Verifique o funcionamento da do programa na placa comparando o resultado com a sua interpretação do código. Para isso use o programa Comunicação serial Módulo 2 (Ícone localizado na área de trabalho) ou o Hiper Terminal.

Dicas

- Como estamos usando a UART para receber dados, é interessante sempre que possível usar a interrupção de recepção de dados para que a informação seja lida o mais rápido possível.

- No caso do módulo de LCD, todas as funções de delay foram baseadas em ciclos de máquina. Caso use o C30 com todas as otimizações habilitadas pode ser que tenha problemas com as funções do LCD. As funções de delays que usam ciclo de máquina podem ser modificadas para usar um dos timers disponíveis para a geração dos tempos.

Para Pensar - Por que o buffer_lcd[] foi inicializado (vide programa) com 0x20 em todos os elementos?

Luis Otávio Médici Hitech Eletrônica 13 de 27

Page 14: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

Exemplo 5

Objetivos- Demonstrar a configuração básica do periférico ADC- Demonstrar o recurso de formatação de resultado- Demonstrar o funcionamento do periférico ADC

Tarefas:

1) No menu: Project/Remove File From Project, retire do projeto o arquivo Lab_4.c

2) No menu: Project/Add File to Project, inclua no projeto o arquivo Lab_5.c

3) Verifique se o arquivo de “Linker Script” esta correto4) Analise o código fonte Lab_55) Abra o datasheet do dsPIC (documento # 70165) no capitulo sobre

o periférico:a. Localize os SRF de configuração;b. Localize os bits que de configuração da seqüência de

amostragem e conversãoc. Localize os bits de definição de formato

6) No menu: Programmer/Select Programmer, habilite o ICD27) No menu: Project/Build All (atalho: CTRL+F10), compile o

programa8) Verifique se o programa foi compilador com sucesso9) Verifique se o ICD2 foi devidamente habilitado10)No menu: Programmer/Program, para gravar o programa no dsPIC.

Veja também a opção por ícone.11)Verifique o funcionamento da do programa na placa comparando o

resultado com a sua interpretação do código12)Na função de configuração inicial do ADC, mude para o

formatação “Signed Integer”

Luis Otávio Médici Hitech Eletrônica 14 de 27

Page 15: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

13)Verifique no código as mudanças para que o número o valor no LCD seja mostrado em conformidade com o formato “Signed Integer” e edite o código se necessário.

14)Configure o Timer3 para a taxa de amostragem de 48Khz.15)No menu: Project/Build All (atalho: CTRL+F10), compile o

programa.16)Verifique se o programa foi compilador com sucesso17)No menu: Programmer/Program, para gravar o programa no dsPIC.

Veja também a opção por ícone.18)Verifique o funcionamento da do programa na placa comparando o

resultado mostrado no display com os valores esperados para a formatação “Signed Integer”

Dicas

Roteiro para configuração do ADC

- Selecione quais pinos devem trabalhar como entrada analógica através do SRF ADxPCFGH ou ADxPCFGL

- Selecione a fonte de referencia de tensão para atender a faixa de tensão do sinal a ser amostrado através do SRF ADxCON2

- Selecione o Clock a ser utilizado para conversão de modo atender a taxa desejada através do SRF ADxCON3

- Determine quantos S/H (Sample&Hold) devem ser utilizado através do ADxCON2. No modo 12-bits temos somente um S/H.

- Selecione a seqüência apropriada de Amostragem e Conversão (Sampling/convertion) através das opções disponíveis nos SFR ADxCON1 e ADxCON3

Luis Otávio Médici Hitech Eletrônica 15 de 27

Page 16: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

- Selecione como o resultado deve ser apresentado através do SFR ADxCON1

- Ligue periférico ADC através do SRF ADxCON1

Caso esteja deseje trabalhar com Interrupção configure os respectivos bits

- Limpe o respectivo Flag de Interrupção de ADC

- Selecione o nível de prioridade da Interrupção de ADC

Informações sobre alguns Bits de Configuração do ADC:

FORM: Data output formatPara 12 bits:- 11 – Signed Fractional (sddd dddd dddd 0000)

o –1 <= n < 1- 10 – Fractional (dddd dddd dddd 0000)

o 0 <= n < 1- 01 – Signed Integer (ssss sddd dddd dddd)

o –2048 <= n < 2048- 00 – Integer (0000 dddd dddd dddd)

o 0 <= n < 4096

SSRC: Sample Clock Source Select bits: define o modo de disparo de início de conversão- 111 = Auto-Convert: amostragem e conversão seqüenciadas de forma

contínua e contígua.- 011 = Conversão em fase com o periférico MPWM (ciclo ativo)- 010 = Início de conversão definido pelos Timers 3 ou 5

Luis Otávio Médici Hitech Eletrônica 16 de 27

Page 17: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

- 001 = Início de conversão definido por Interrupção Externa- 000 = Início de conversão definido pelo Reset do bit SAMP

ASAM: ADC Sample Start Bit: define o momento em de início de amostragem- 0 = amostragem começa imediatamente após o fim da conversão

anterior setando o SAMP automaticamente- 1 = amostragem começa quando SAMP é setado

SAMP: ADC Sample Bit: define em que estado está o S/H- 0 = Holding- 1 = Sampling

SAMC: Auto Sample Time bits: define o tempo de amostragem (sampling do S/H) em função do número de TAD podendo assumir valores entre 0 e 31 TAD.

ADCS: ADC Converstion Clock Select bits: define quantos períodos ciclos de máquina (Tcy) compõe um TAD, podendo assumir valor entre 1 e 64 Tcy.ADCS = (TAD/Tcy)-1TAD = Tcy*(ADCS+1)

Ilustração de um tipo de seqüência de conversão:

Amostragem começa imediatamente após o fim da conversão anterior (ASAM=0)

Luis Otávio Médici Hitech Eletrônica 17 de 27

Amostragem Conversão Amostragem Conversão

Timer

Tempo

Page 18: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

A amostragem termina é finalizada pelo Timer (SSRC = b’010’) para que seja iniciada a conversão

Neste caso a freqüência de amostragem é definida pelo Timer e o tempo de amostragem é definido pela diferença entre o período de amostragem e o tempo de conversão.

Para pensar

- Por que é interessante a existência controles independente para início de amostragem e início de conversão?

- Que alterações seriam necessárias no código de configuração para incluirmos mais entradas analógicas?

- Qual o valor mínimo de TAD ? Onde devo procurar esta informação?

- Como deveria ser o código para que o a conversão ocorresse em “Unsigned Fractional” e o resultado fosse mostrado de forma coerente com a tensão aplicada a entrada analógica (0..3,3V) ?

- Faça medições de tempo utilizando as saídas Led1 e Led2 (verifique o valor exato da freqüência de amostragem)

Luis Otávio Médici Hitech Eletrônica 18 de 27

Page 19: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

Exemplo 6

Objetivos- Utilizar funções da biblioteca matemática (Math)- Demonstrar o recurso tabelamento de uma função- Utilizar o periférico SPI- Demonstrar o funcionamento de um DAC- Demonstrar o uso do software dspWorks para visualização se sinais- Utilizar ICD2 no modo Debugger

Tarefas

1) No menu: Project/Remove File From Project, retire do projeto o arquivo Lab_5.c

2) No menu: Project/Add File to Project, inclua no projeto o arquivo Lab_6.c

3) Verifique se o arquivo de “Linker Script” esta correto4) Analise o código fonte Lab_6.c5) Abra o datasheet do dsPIC (documento # 70165) no capitulo sobre

o periférico SPI e localize os bits de configuração de modo de operação

6) Abra o datasheet do DAC MCP4922 e localize a carta de tempo de escrita e também a descrição dos pinos

7) Analise no esquema elétrico como que o MCP4922 está ligado ao dsPIC

8) Analise a função de configuração do SPI como interface de comunicação com o MCP4922 (DAC)

9) Coloque o MPLAB no modo simulador (Menu: Debbuger/Select Tool/MPLAB SIM)

10)Insira um Break Point após a função makewaves()

Luis Otávio Médici Hitech Eletrônica 19 de 27

Page 20: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

11)Compile o código (Build All)12)Através do simulador execute o código até que ele seja parado

pelo Break Point13)No menu: View/Watch, inclua a variável fIN14)Exporte o conteúdo desta variável para um arquivo .MCH15)Importe o arquivo .MCH no aplicativo dsPICWorks e visualize o

sinal16)Mude os parâmetros de calculo da função makewaves() e gere uma

nova forma de onda17)Repita os passos do 11 até 1518)Ligue um osciloscópio na saída do DAC e compare o sinal da tela

com o sinal mostrado no dsPICWorks19)Abra a documentação da biblioteca DSP e procure a função que

converte um ponto flutuante em Fractional20)Descubra em que trecho do programa esta função pode ser

utilizada e teste

Dicas

Equação de síntese do sinal soma de senos

f(t) = sen(wt), w=2*PI*ff(t) = sen(2*PI*f*t)

Para transformar este sinal contínuo no tempo em um sinal discreto no tempo definido em intervalos constante iguais a Ts (inverso da freqüência de amostragem). Temos portanto:

t= n * 1/fs , daí:

f(t) = sen(2*PI*f*n/fs) ou f(t) = sen(2*PI*n*f/fs), sendo n inteiro

Luis Otávio Médici Hitech Eletrônica 20 de 27

Page 21: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

Exportando valores do MPLABPara gerar um arquivo de saída a partir contendo os valores de um Array mostrado na Janela Watch, clique o botão da direita do mouse sobre o nome da variável e selecione a opção “Export Table”.

Ao pressionar OK será perguntado um nome de arquivo deverá ter a extensão .MCH.

Importando valores no dsPICWorks

Selecione o arquivo de origem (extensão MCH)Configure os parâmetros de importação em conformidade com o dados previamente exportados do MPLAB.

Luis Otávio Médici Hitech Eletrônica 21 de 27

Page 22: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

Configuração do Ambiente para trabalhar no modo Debug

Para Pensar

- Por que o parâmetro N_SAMPLES foi definido como sendo F_SAMPLE/FREQ_B?

- Por que utilizar a função Float2Fract é mais seguro do que utilizar o artifício de multiplicar por 0x8000?

- Como podemos estimar a máxima freqüência que podemos sintetizar através do DAC da placa ?

Luis Otávio Médici Hitech Eletrônica 22 de 27

Na barra de ferramentas do MPLAB:

Selecionar modo: Debug

Page 23: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

Exemplo 7

Objetivos

Tarefas

1) Analise o código fonte programa Lab_7.c2) Repare que os parâmetros do sinal a ser sintetizado pela função

makewaves foram alterados3) Abra o manual das bibliotecas do C304) Procure as funções relativas a FIR5) Analise o protótipo destas funções para saber quais dados são

necessários para se executar um filtro6) Abra o aplicativo dsPICfdLite7) Parametrize um filtro passa alta da seguinte forma:

a. Sampling Frequency : 10.000b. Passband frequency: 400c. Stopband frequency: 200d. Passband Ripple (dB): 0.1e. Stopband Ripple (dB): 3

8) Menu: Codegen/Microchip/dsPIC30, gere o arquivo de coeficientes do filtro armazenado na memória de dados (X Data Space)

9) Faça a adequação de sintaxe do arquivo de coeficientes do filtro10)Inclua o arquivo de inicialização no projeto11)Inclua no projeto a biblioteca DSP12)Inclua no projeto o arquivo header relativo a biblioteca DSP13)Inclua a declaração da estrutura do programa14)Inclua a função de inicialização do filtro15)Inclua a função de filtro

Luis Otávio Médici Hitech Eletrônica 23 de 27

Page 24: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

16)No modo de simulação inclua um Break point antes da função de inicialização do filtro e outro após a execução do filtro

17)Comente as funções de inicialização de LCD, Timer3, ADC e DAC18)Compile o programa19)Através do simulador mande executar o programa até que ele pare

no Break point antes da inicialização do filtro20)No menu: Debugger/Stopwath zero o contador de tempo21)Mande o simulador executar o programa novamente até o Break

point após a execução do filtro22)Verifique em quanto tempo o dsPIC executou o filtro23)Exporte os dados de saída do filtro24)Importe os dados de saída do filtro para o dsPICWorks25)Visualize os dados de saída do filtro

Dicas

Para gerar o arquivo de coeficientes

Luis Otávio Médici Hitech Eletrônica 24 de 27

Page 25: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

Luis Otávio Médici Hitech Eletrônica 25 de 27

Page 26: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

Neste exemplo os coeficientes devem estar armazenados na memória de dados (X Data Space)Ao clicar sobre em OK escolha um nome da o arquivo de coeficientes.Não incluir nenhuma extensão ao nome do arquivo, pois o programa irá incluir automaticamente a extensão .s (de arquivo de inicialização)

Para adequar a sintaxe do arquivo de coeficientes do filtro;..................................................................; Allocate and initialize filter taps; .section .xdata ; sintaxe antiga .section .xdata, data, xmemory ; nova sintaxe MPLAB C30 - pos V1.30

;..................................................................; Allocate delay line in (uninitialized) Y data space; .section .ybss, "b" ; sintaxe antiga .section .ydata, data, ymemory ; nova sintaxe MPLAB C30 - pos V1.30

Para portar o filtro no código- Incluir no projeto a biblioteca DSP- Incluir o arquivo header referente a biblioteca DSP- Gerar o arquivo de coeficientes no dsPICfdLite- Adequar a sintaxe do arquivo gerado- Incluir a declaração da struture do filtro- Incluir a função FIRDelayInit- Incluir a função FIR

Luis Otávio Médici Hitech Eletrônica 26 de 27

Page 27: Curso DsPIC LOM Rev2

Processamento Digital de Sinais com dsPIC

Para Pensar

- Por que na resposta do filtro existe uma distorção nos primeiros resultados?

- Quando devo utilizar filtros FIR ou IIR?

Luis Otávio Médici Hitech Eletrônica 27 de 27