Escolar Documentos
Profissional Documentos
Cultura Documentos
UDESCapostila DSP
UDESCapostila DSP
UDESC Joinville SC
Minicurso de DSP
Texas Instruments
Realizao:
Dezembro/2010
Minicurso de DSP
2
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
1
1.1
1.2
1.3
Introduo
O DSC TMS320F2812
A soma dos produtos
A gerao do clock
2 O ambiente de Desenvolvimento
2.1
Code Composer Studio
2.2
Criando um Projeto
2.3
Exerccio 1: criando um novo projeto
2.3.1
A pilha
2.3.2
Linker command file
2.3.3
Compilao
2.3.4
Executando o programa
2.3.5
Watch Window
2.3.6
Breakpoint e Probe Point
2.3.7
Wacth Dog Timer
2.3.8
Estrutura de um programa
2.3.9
Structs, Unions e Campos de Bit
3 Entradas e Sadas digitais
3.1
Exerccio 2: sadas digitais
3.1.1
Comeando o projeto
3.1.2
Adicionando arquivos essenciais
3.1.3
Macros EALLOW e EDIS
3.1.4
Registradores de inicializao
3.1.5
Configurar/acessar as entradas/sadas digitais
3.1.6
Funo delay
3.1.7
Funo main
3.2
Exerccio 3: entradas digitais
4 Interrupes
4.1 Mscaras de interrupo
4.2 Configurando o Peripheral Interrupt Expansion (PIE)
4.3 Interrupes de Timer
4.4 Exerccio 4
4.4.1 Configuraes do Exerccio 4
4.4.2 Mscaras de Interrupo no Exerccio 4
4.4.3 A rotina de servio de interrupo
4.4.4 Modificaes no Exerccio 2
4.4.5 Configurando o Watch Dog
5 Event Manager
5.1 General Purpose Timer
5.2 Exerccio 5
5.2.1 Configuraes do Exerccio 5
5.2.2 Configurando o Timer
3
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
1 Introduo
Esta apostila visa apresentar conhecimentos sobre processadores
digitais de sinais, tratando sobre o DSP da Texas Instruments. Ser
abordada a programao para este tipo de dispositivo, atravs da utilizao
do software Code Composer Studio.
Um Processador Digital de Sinais DSP, sigla em ingls um
dispositivo especfico desenvolvido em torno da soluo de operaes
matemticas tpicas para manipular dados digitais medidos por sensores de
sinais. Seu objetivo principal processar esses dados digitais o mais rpido
possvel, para ser capaz de gerar dados de sada em resposta s entradas
em tempo real.
Figura 1: eZdspF2812
4
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
5
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
6
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
2 O Ambiente de Desenvolvimento
Vamos conhecer a IDE integrated development environment
utilizada para trabalhar com o DSP. Trata-se do software Code Composer
Studio - CCS, fornecido pela Texas Instruments.
7
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
8
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
//esta
//esta
//esta
//esta
a
a
a
a
varivel
varivel
varivel
varivel
count1
num
count2
count3
*/
2.3.1 A pilha
necessrio tambm configurar o tamanho da pilha, o stack size,
que o processador DSP ter disponvel para realizar as operaes.
A pilha, ou stack, uma rea da memria RAM reservada para
trabalhar com informaes temporrias. Quando programamos em
linguagem C no tomamos conhecimento da pilha. Ela utilizada em mais
baixo nvel para acumular dados push e posteriormente retirar dados
pull fazendo o papel de um local provisrio para alocar dados. Isto tornase interessante quando h um jump de sub-rotina quando programa-se
em assembly, para guardar o endereo da prxima instruo que deve ser
executada quando houver o retorno de sub-rotina. Tambm usa-se a pilha
para operaes matemticas, quando se quer guardar um resultado que
ser imediatamente utilizado novamente.
Para configurar a pilha do DSP, siga o menu project>build
options>linker>stack size.
A Texas instruments indica o tamanho padro 0x400, portanto, entre
com o valor 400 no campo indicado.
9
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
2.3.3 Compilao
Finalmente, compile o cdigo. Voc pode apenas compilar o cdigo,
atravs do comando compile, ou, atravs do comando build, em
project>build, compilar e construir o arquivo de sada, .out. Poder haver
erros e warnings do programa, os quais devem ser totalmente eliminados.
Na primeira vez recomenda-se utilizar o comando rebuild all ao
invs de build. H um cone disponvel na parte superior do programa
para rebuild all.
O compilador gera um arquivo com a extenso .out, este o arquivo
que gravado na memria do DSP. Ele salvo em um diretrio que for
configurvel, por padro na pasta debug dentro da pasta do projeto.
No havendo erros na compilao, faa o download do cdigo para
o DSP. Para efetuar o download do programa para o DSP v a file>load
program>debug>NOME.out.
10
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
O usurio tem opo de PAUSAR a qualquer momento a execuo do
programa, clicando em debug>halt, indicado pelo cone no canto esquerdo
da tela. Desta forma o programa retorna a execuo do ponto onde foi
PAUSADO quando for novamente teclado F5.
O CCS tem alguns atalhos no canto esquerdo do ambiente que podese ver na figura 9.
11
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
12
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
execuo
automaticamente. Fica a cargo do programador inferir qual dos dois
mtodos se adqua leitura de dados do hardware utilizado.
Para isto escolha a opo toggle probe point, na linha em que
deseja fazer a verificao. Note que a linha marcada com um indicador
azul. Agora adicione as variveis ao watch window.
13
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
Observao: quando uma varivel est inserida no watch window,
clicando sobre ela em refres,h com o boto direito do mouse, o seu valor
ser atualizado, independentemente da existncia de breakpoints ou
probepoints.
14
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
15
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
...
}
3) Funo main
A funo main a funo principal, onde as funes declaradas so
utilizadas.
void main(void)
{
...
...
}
4) Cdigo das funes declaradas anteriormente:
Ex.: Gpio_Select: funo que ser utilizada para configurar as portas de
entrada/sada do DSP.
void Gpio_select(void)
{
EALLOW;
GpioMuxRegs.GPBMUX.all = 0x0000;
GpioMuxRegs.GPBDIR.all = 0x00FF;
EDIS;
}
Estruturas
Uma estrutura um agrupamento de variveis de um dado tipo,
referenciadas por um nome comum. As variveis pertencentes uma
estrutura so denominadas campos da estrutura. A declarao de uma
estrutura segue o seguinte formato:
struct nome_da_estrutura
{
tipo campo1;
Tipo campo2;
}variveis_estrutura;
A estrutura de declarao do registrador da porta A, GPA Direction
Register, por exemplo, feita da seguinte forma:
struct GPADIR {
16
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
Uint16 GPIOA0;
Uint16 GPIOA1;
Uint16 GPIOA2;
};
O acesso a um campo da estrutura, que no caso um bit do
registrador, feito da seguinte maneira:
o
GpioDirRegs.GPADIR.GPIOA0 = 1;
Unies
Uma unio um tipo especial de dado no qual as variveis declaradas
residem num mesmo endereo de memria. Em conjunto com as structs e
os campos de bit elas so utilizadas para que o programador possa
acessar o registrador bit a bit ou como uma palavra de 16bits, da seguinte
forma:
union GPADIR_REG {
Uint16
struct GPADIR_BITS
};
all;
bit;
17
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
3 Entradas e Sadas digitais
Todas as entradas e sadas digitais esto agrupadas em portas
chamadas GPIO general purpose input/output GPIO A, B, C, D, E, F,
G, que somam 56 pinos compartilhados entre diversas funes. Estas
entradas e sadas propiciam mais de uma funo em cada pino, que sero
vistas ao longo da apostila. Deve-se selecionar a funo do pino no incio do
programa.
Confira abaixo a relao entre os pinos/funes e a posio destes na
placa eZdsp.
18
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
19
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
3.1.2 Adicionando arquivos essenciais
Existem vrios arquivos que contm definies da Texas Instruments
para a operao do DSP e compilao do programa, as quais muito
dificilmente necessitam de ajustes do programador, assim, devemos
adicionar estes arquivos ao programa.
Um projeto precisa de diversas bibliotecas, alm de includes e
arquivos .c secundrios fornecidos pela TI, os quais contm estruturas
necessrias para tornar possvel o trabalho em alto nvel com os
registradores do DSP. Estes arquivos sero chamados pelo arquivo criado
por voc, NOME.c, e por outros dos arquivos source e sero necessrios
para a compilao do arquivo fonte principal.
Uma maneira organizada de se adicionar estes arquivos e bibliotecas
armazenar estes arquivos dentro do diretrio em que se encontra o seu
projeto. Tendo feito isto v em project>add files to project e escolha para
mostrar arquivos do tipo all files, ento selecione os arquivos com
extenso .c, .cmd e as bibliotecas, deixe os includes de fora, eles sero
adicionados depois, e clique em abrir. Voc ver estes arquivos aparecerem
automaticamente nas suas respectivas categorias na guia do projeto, do
lado esquerdo da tela.
Entre os principais arquivos TI que sero utilizados esto:
Global Variables:
DSP281x_GlobalVariableDefs.c
F2812_EzDSP_RAM_lnk.cmd
Arquivo de cabealho:
F2812_Headers_nonBIOS.cmd
Arquivo de bibliotecas:
rts2800_ml.lib
20
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
3.1.3 Macros EALLOW e EDIS
Sempre que se quer acessar registradores ditos protegidos
necessrio fazer o acesso atravs de macros EALLOW e EDIS:
EALLOW: habilita o acesso ao registrador.
EDIS: desabilita, fecha o acesso ao registrador.
:
:
:
:
:
:
WDCR
PLLCR
HISPCP
LOSPCP
PCLKCR
SCSR
: GPxMUX
: GPxDIR
: GPxDAT
21
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
Neste caso o x a GPIO que estamos configurando (A, B,...).
Exemplo:
GPIO B inteira como digital I/O:
GpioMuxRegs.GPBMUX.all = 0x0000;
Pino 0, GPIO A, como entrada digital:
GpioMuxRegs.GPBMUX.bit.GPIOA0 = 0;
Construa a funo GpioSelect:
22
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
: GPBDAT
23
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
Modifique a lgica do cdigo na funo main, para que as chaves
controlem o acendimento dos LEDs.
Compile, grave e execute o programa.
24
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
4 Interrupes
Interrupes so eventos assncronos, gerados por uma unidade
externa ou interna. Uma interrupo faz o DSP parar a execuo atual do
programa e comear a rotina de servio da interrupo ocorrida. Depois da
execuo da interrupt service routine, o programa volta para o ponto
onde havia parado.
O DSP possui 16 linhas de interrupes, a maioria delas, como as
interrupes de contagem de timer, so mascarveis, ou seja, podem ser
desabilitadas, outras no (como o reset da CPU, por exemplo). Cada uma
das 16 linhas de interrupo conectada a uma tabela de vetores de
interrupo de 32 bit cada interrupo, que armazenam o endereo que
ponteiro para a rotina de servio relativa a cada interrupo.
Como interrupes de reset, existem o pino de reset externo e o
overflow do watchdog timer.
O DSP possui no total 96 fontes de interrupo, enquanto h somente
16 vetores para rotinas de interrupo. Para lidar com esse fato existe uma
unidade chamada PIE - peripheral interrupt expansion, destinada a agrupar
certas interrupes em uma mesma linha de interrupo, criando uma
expanso para cada uma dessas linhas. Utilizando esta unidade o
programador no precisa se preocupar em dividir uma rotina de interrupo
para lidar com duas fontes de interrupo diferentes.
25
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
26
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
Existe ainda mais um nvel de mscara registrador, o Interrupt
Global Mask Bit, o bit 0 de um determinado registrador, referenciado como
INTM, que habilita ou desabilita globalmente todas as interrupes. Abaixo
est o comando para tanto, atravs da utilizao de estruturas:
Habilita:
Desabilita:
INTM = 0;
INTM = 1;
27
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
28
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
4.3 Interrupes de Timer
Dentre as interrupes existentes no DSP esto as interrupes de
timer. O DSP possui vrios mdulos contadores (timers): Timer de CPU e
Timer de Event Manager, cada um com sua finalidade, que geram
interrupes ao passo que a contagem atinge um valor pr-estabelecido,
proporcionando a realizao de uma tarefa especfica.
4.4 Exerccio 4
O objetivo deste exerccio repetir o resultado do exerccio 2, atravs
da utilizao de um Timer de CPU do DSP ao invs de usar um delay de
software, que no muito preciso e no usa de todo o potencial disponvel
do DSP.
Para ligar sequencialmente os LEDs, utilizaremos a interrupo do
Timer 0, um dos trs timers de CPU. Dentre estes, o Timer 0 utilizado
para aplicaes gerais, enquanto que os Timers 1 e 2 para aplicaes
mais especficas, chamadas em tempo real. Sempre que se necessita de
uma aplicao no-especfica utiliza-se o Timer 0, ele o nico entre os
timer de CPU que passa pelo gerenciamento da unidade PIE. Encontre-o na
PIE table, anteriormente mostrada.
29
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
30
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
O perodo est em microssegundos e a velocidade do clock em MHz.
Adicione essa linha de cdigo na funo main, logo aps InitCpuTimers();.
31
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
Seja:
CpuTimer0Regs.TCR.bit.TSS = 0;
32
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
o interrupt counter, que iremos incrementar dentro da ISR:
CpuTimer0.InterruptCount++;
Outra tarefa garantir que uma nova interrupo acontea, atravs
do registrador PIEACK, PIE Acknowledge, onde estamos habilitando
novamente a interrupo de grupo onde est inserida a do Timer 0,
informando ao PIE que uma nova interrupo j pode ocorrer. Veja-o na
figura de registradores do PIE. Faremos isso com a instruo a seguir:
PieCtrlRegs.PIEACK.all = 0x0001;
Esta deve ser a ltima instruo dentro da funo.
33
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
5 Event Manager
O Event Manager EV uma unidade interna do DSP construda
para lidar com diferentes tipos de processos que utilizem base de tempo.
Nosso DSP possui dois EVs: EVA e EVB. Cada um deles possui dois Timers,
independentes dos outros trs Timers da CPU vistos anteriormente, como o
Timer 0.
Portanto, quando usamos um Timer, devemos especificar de qual
estamos falando. O EV Timer um contador de 16 bits. A grande diferena
do EV Timer que ele capaz de gerar sinais externos, atravs de pulsos
digitais, o que proporciona o trabalho com modulao PWM. Os DPSs da
srie C28x so capazes de gerar at 16 sinais PWM.
34
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
35
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
5.2 Exerccio 5
Este experimento busca familiariz-lo com esta que uma das
unidades mais importantes do DSP, o Event Manager. O exerccio ir utilizar
o speaker da placa de testes para tocar oito notas musicais, que sero oito
ondas quadradas de frequncias diferentes, atravs da modulao PWM.
Uma nota musical, na verdade composta de ondas senoidais, contudo,
podemos aproximar de forma satisfatria sua reproduo por uma onda
quadrada com a sua freqncia fundamental.
Usaremos o exerccio 4 como base para este. Vamos conhecer alguns
novos registradores necessrios, principalmente, para a configurao do
Event Manager:
36
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
:
:
:
:
:
:
GPTCONA
T1CON
T1PR
T1CMPR
IFR
IER
37
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
scale de 128, enable compare operation (habilita a comparao) e
reload on underflow(ao trmino da contagem volta ao comeo).
:
:
:
:
:
:
:
:
264
297
330
352
396
440
495
528
Hz
Hz
Hz
Hz
Hz
Hz
Hz
Hz
Assim, vai utilizar o Timer 1 para gerar o PWM e o Timer 0 para gerar
a interrupo que vai alternar entre as freqncias. Cada vez que o Timer 0
estourar vamos alterar o valor de T1PR.
Esta freqncia ajustada atravs do registrador T1PWM, como
segue:
T1_PWM_Freq = 150MHz / (HISPCP * TPS * T1PR)
Crie um vetor frequencia[8] e armazene os valores calculados para
T1PR para cada freqncia neste vetor.
7) T1CMPR o tempo utilizado para fazer o duty cicle da onda. No nosso
caso vamos configur-lo para a metade do T1PR, j que queremos uma
onda quadrada.
8) Utilize este ponto, onde T1PR configurado, para reabilitar o Watch Dog
Timer.
Sendo assim, na funo main, adicione o seguinte cdigo para
trocar o valor de T1PR e T1CMPR periodicamente. Voc pode alter-lo da
maneira que julgar necessria.
while(1)
{
if ((CpuTimer0.InterruptCount%4)==0)
{
38
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC
Minicurso de DSP
EALLOW;
SysCtrlRegs.WDKEY = 0xAA;
EDIS;
}
if ((CpuTimer0.InterruptCount - time_stamp)>10)
{
time_stamp = CpuTimer0.InterruptCount;
if(i<14) EvaRegs.T1PR = frequency[i++];
EvaRegs.T1CMPR = EvaRegs.T1PR/4;
EvaRegs.T1CON.bit.TENABLE = 1;
if(i>=14) i=0;
}
}
39
Grupo PET Engenharia Eltrica
Universidade do Estado de Santa Catarina UDESC