• No results found

Popis pouzdra procesoru TSM320F2808

In document ZADÁNÍ BAKALÁ SKÉ PRÁCE (Page 26-0)

Strana: 27 z 49

4. Vývojová deska eZdsp™ F2808

Deska je ur en pro práci s TMS320F2808. Podporuje veškeré jeho periferie.

Napájená je 5 voltovým zdrojem. S po íta em je propojena pomocí USB rozhraní.

Samotná deska dokonce umož uje nastavení velikosti výstupního logického nap tí pomocí jumperu na spodní stran desky. A je to mezi p ednastaveným logickým nap tím 0…3,3 voltu a 0…5 voltu tedy TTL logikou.

Její vlastnosti: 20 MHz hodiny pro vstup do TMS320F2808

2x SCI porty integrované na základní desce. UART kanály 2x eCAN kanály

možnosti rozší ení konektory: vstup/výstup, analog

Na základní desce je integrovaný IEEE 1149.1 JTAG kontrolér s USB hostitelským spojením

Podpora pro externí emulátor p es standard JTAG

Na základní desce je i konektor pro IEEE 1149.1 JTAG emulaci Slu itelný s kartou eZdsp Wire Wrap Prototype

Softwarové

Slu itelný s adou C2000 Code Composerem od Texas Instruments (zahrnuje ' C ' kompilátor, asembler, linker, debugger)

Slu itelný s SDFlash programovací utilitou od Spectrum Digital

Strana: 28 z 49 Obrázek 10. Popis vývojového kitu eZdsp™ F2808

Strana: 29 z 49

5. Code Composer Studio

CCS je prost edí ur ené pro vývoj v jazyce C nebo C++, nebo jen pomocí instruk ní sady a jazyka Asembler. Tento vývojový software se vytvá í formou projektu.

Tyto projekty lze také mezi sebou kombinovat. Prost edí má navíc integrovaný debugger.

Debugger dokáže data zobrazit graficky, což usnad uje lad ní algoritm . V našem p ípad se budeme celou dobu bavit o verzi 3.1 CCS.

CCS dokonce podporuje propojení s libovolným programem p es COM knihovny nap íklad s MatLabem. Nicmén tato funkce se v této práci používat nebude.

CCS obsahuje celou adu komponent pro usnadn ní práce:

Knihovny pro jednotlivé DSP

Knihovny pro jednotlivé ipy, které jsou integrovány do pouzdra Knihovny pro standardní externí hardware

Knihovny DSP/BIOS a k nim konfigura ní nástroje Výstup log do okna debuggeru

M ení zatížení PCU

Zobrazování provád cího grafu je za pomocí debuggeru

My se, ale o všech t chto podrobnostech bavit nebudeme. Zmíníme se jen o t ch, které budeme pot ebovat pro náš úkol vytvo ení ídícího programu PID regulátoru.

Strana: 30 z 49

5.1 Popis okna vývojového prost edí CCS

Pro dobré zvládnutí programování je pot eba se nejprve seznámit s úvodním oknem vývojového prost edí CCS, které je popsané na obrázku 10.

Obrázek 11. Popis vývojového prost edí CCS

A te si o každém z t chto blok n co ekneme.

Menu DSP/BIOS: Tyto ikony nám slouží na obsluhu DSP/BIOS systému.

Ten slouží nap íklad pro ízení v aplikací v reálném ase, ale obsahuje i jiné dalších funkce.

Krokování programu: Krokování v CCS je možno provést bu to na úrovni jazyka C nebo Asembleru.

Strana: 31 z 49 ízení b hu programu: Tím si zvolíme, v jakém režimu chceme, aby byl program spušt n nebo zda ho chceme zastavit.

Ladící ikony: Otvírají r zné prost edky pro odlad ní programu, nap . okno s obsahem registr

Textový výstup externích program : Používá se bu to pro výpis z COM knihoven, nebo se v n m také vypisují chyby p i emulaci programu.

Správa projektu: Slouží pro práci s projekty.

Vlastní okno editoru: V n m se píše vlastní kód programu.

Probe pointy: Slouží k p epínání mezi Standardní strukturou a Ladící strukturou projektu.

Breakpointy: Pomáhají p i lad ní projektu. Umož ují nám m it hodnoty pomocí Debuggeru, které se za b hu generují v tomto bod .

Obsahy prom nných: Slouží k práci s projektem p i kompilaci.

Strana: 32 z 49

5.2 Spušt ní a p ipojení programu pomocí souboru GEL

Jelikož tento program vychází z p eprogramovaných examples, které jsou na instala ním CD CCS nebo voln ke stažení na stránkách TI, nebudeme se zabývat podrobnostmi, které se vyskytují u vytvá ení vlastního projektu. A rovnou p istoupíme k vkládání p edp ipravených projekt , které jsou vepsány v souborech s p íponou gel.

GEL soubor je vlastn jakási knihovna, která nám vytvo í celý projekt se základní p eddefinovanou strukturou. Ta se vloží do CCS pomocí nabídky File Load GEL….

Pokud máme takto vytvo ený projekt, je nutno jej zkompilovat, pomocí GEL jméno našeho projektu Load_and_Build_Project, a nahrát jej do DSP GEL jméno našeho projektu Load_Code, ale nežli m žeme nahrát program je nutno nejprve náš procesor p ipojit k po íta i a to p es nabídky Debug Connect.

Jelikož ve valné v tšin p ípad pot ebujeme vždy v projektu n co m nit je pot eba si ješt otev ít Okno Editoru a to pomocí Správce Projektu.

V n m se pracuje podle podobn jako v b žném jazyce C, jen s tím rozdílem že navíc obsahuje práci s registry a prom nnými, které jsou ur ené jen pro náš DSP.

Strana: 33 z 49

5.3 Vlastní ídící program

Program je postaven z voln stažitelných examples na stránkách Texas Instrument Všechny jsou p iloženy v p íloze. Náš konkrétn z cpu_timer, do kterého se p ipsalo ovládání logických stup a výstup , analogového vstupu a PWM výstupu.

Tyto dva ádky slouží k tomu, aby náš program dokázal pracovat

Nyní si musíme definovat a nastavit AD p evodník, PWM výstup

Nastavuje vzorkovací frekvenci pro ADC p evodníky podle tohoto vzorce:

HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 100/(2*4)= 12,5MHz

#define ADC_MODCLK 0x4

ADC modul hodin: HSPCLK/2*ADC_CKPS=12,5MHz/(1*2)=6.25MHz

#define ADC_CKPS 0x1

Ší ka pásma ADC hodin je nastavena 16

#define ADC_SHCLK 0xf

Pr m rné posunutí za átku tení ADC

#define ZOFFSET 0x00

Strana: 34 z 49

Nastavení typové struktury PWM

typedef struct

{

volatile struct EPWM_REGS *EPwmRegHandle;

Uint16 EPwm_CMPA_Direction;

Strana: 35 z 49

interrupt void cpu_timer0_isr(void);

Volání funkce nadefinování PWM výstupu

void InitEPwm1Example(void);

Obnovování PWM signálu podle aktuální pot eby

void update_compare(EPWM_INFO*);

Funkce PID regulátoru

void PID_Regulator(void);

Hlavní program

Funkce main je normální funkce. Je výjime ná pouze tím, že se volá jako první po spušt ní programu.

void main(void)

{

InitSysCtrl();

Strana: 36 z 49 P íkaz EALLOW nám umož uje zápis do chrán ných registr .

EALLOW;

Specifikace nastavení hodin tohoto programu

SysCtrlRegs.HISPCP.all = ADC_MODCLK;

Nastaveni GPIO pinu 0, 1 na PWM výstup. PWM výstup pot ebujeme pouze jeden, a sice na ak ní veli inu

Registru GPAMUX slouží k definování GPIO (U tohoto portu má každý pin jiné možnosti nastavení kapitola 2.2), zde na PWM výstup.

GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1;

Strana: 37 z 49

GpioCtrlRegs.GPAMUX1.bit.GPIO15= 0;

GpioCtrlRegs.GPADIR.bit.GPIO15 = 1;

Strana: 38 z 49

Tato funkce inicializuje Pie íta e instrukcí jejich standardní stav je: celý Pie p erušení vy azený a bity p íznakového registru jsou vynulovány.

InitPieCtrl();

Nulování bit p íznakového registru

IER = 0x0000;

IFR = 0x0000;

Inicializuje tabulky vektoru PIE s ukazovateli na p erušení. Starají se o údržbu rutiny (ISR). Ta zaplní celou tabulku, i když není p erušení použito.

Což je užite né pro odlad ní. ISR rutiny jsou k nalezení v

AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;

AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS;

AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;

AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0;

Strana: 39 z 49

AdcRegs.ADCTRL1.bit.CONT_RUN = 0;

Zápis do chrán ných registr

EALLOW;

PieVectTable.TINT0 = &cpu_timer0_isr;

SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;

EDIS;

Volání funkce nastavování PWM

InitEPwm1Example();

EALLOW;

SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;

EDIS;

Volání funkce pro nastavování CPU asova e

InitCpuTimers();

Nastavení periody p erušení. Kde jeho nejv tší velikost odpovídá jedné sekund ((&CpuTimer0, 100, 1000000) v mikrosekundách).

ConfigCpuTimer(&CpuTimer0, 2, 10000);

StartCpuTimer0();

Povolí CPU INT3, které je p ipojené k EPWM1-3 INT

IER |= M_INT3;

Povolí CPU INT3, které je p ipojené k CPU-Timer0

Strana: 40 z 49

IER |= M_INT1

umožn te EPWM INTN v PIE: Souboru 3 p erušit 1

PieCtrlRegs.PIEIER3.bit.INTx1 = 1;

umožn te TINT0 v PIE: Souboru 1 p erušení 7

Funkce p erušení od cpu_timer0

interrupt void cpu_timer0_isr(void)

{

Start sekvencru SEQ1.

AdcRegs.ADCTRL2.all = 0x2000;

Strana: 41 z 49 tení ADC hodnot. Po áte ní podmínka nám eká na p erušení, po spln ní podmínky se povolí tení, a uloží hodnotu do prom nné Y_AD.

while (AdcRegs.ADCST.bit.INT_SEQ1== 0) {}

AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;

Y_AD =((AdcRegs.ADCRESULT0)>>4);

Tato ást kódu je dopln na z d vod velkých rušení, které se projevovaly,

CpuTimer0.InterruptCount++;

PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;

Nastavení žádané hodnoty pomoci tla ítek. P i držení jednoho nebo druhého tla ítka se m ní žádaná hodnota, aby se nám tato hodnota nem nila p íliš rychle, je do kódu za len no zpožd ní, které nám p i držení tla ítka zm ní

Strana: 42 z 49 žádanou hodnotu po každém t icátém p erušení.

if(GpioDataRegs.GPADAT.bit.GPIO7==1 && GpioDataRegs.GPADAT.bit.GPIO8==1) { TestStisk1 = 0; }

else

{

if(GpioDataRegs.GPADAT.bit.GPIO7==0 && GpioDataRegs.GPADAT.bit.GPIO8==1 &&

W<1999 && TestStisk1==0)

GpioDataRegs.GPADAT.bit.GPIO8 == 1 && W < 1999)

{ TestStisk1++;

if(TestStisk1 == 30){TestStisk1 = 0; }

}

if(GpioDataRegs.GPADAT.bit.GPIO7 == 1 && GpioDataRegs.GPADAT.bit.GPIO8 == 0

&& W > 0 && TestStisk1 == 0) {

Strana: 43 z 49

if(TestStisk1 == 30){TestStisk1 = 0;}

} }

rozsv cení diod podle hodnoty žádané veli iny (W). Dioda svítí vždy pouze jedna a to podle toho ve kterém intervalu se zrovna nachází žádaná hodnota.

if(W > 200 && W < 600){GpioDataRegs.GPASET.bit.GPIO18 = 1;}

else {GpioDataRegs.GPACLEAR.bit.GPIO18 = 1;}

if(W > 600 && W < 1000){GpioDataRegs.GPASET.bit.GPIO17 = 1;}

else {GpioDataRegs.GPACLEAR.bit.GPIO17 = 1;}

if(W > 1000 && W < 1400){GpioDataRegs.GPASET.bit.GPIO16 = 1;}

else {GpioDataRegs.GPACLEAR.bit.GPIO16 = 1;}

if(W > 1400 && W < 1800){GpioDataRegs.GPASET.bit.GPIO15 = 1;}

else {GpioDataRegs.GPACLEAR.bit.GPIO15 = 1;}

if(W > 1800 && W <= 2000){GpioDataRegs.GPASET.bit.GPIO14 = 1;}

else {GpioDataRegs.GPACLEAR.bit.GPIO14 = 1;}

}

Funkce pro nastavení PWM výstupu

void InitEPwm1Example()

Nastavení doby asova e

EPwm1Regs.TBPRD = EPWM1_TIMER_TBPRD;

Strana: 44 z 49

EPwm1Regs.CMPA.half.CMPA = EPWM1_MIN_CMPA;

Nastavení po ítacího módu Po ítání nahoru

EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;

Vy adí fázi pln ní

EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;

Pom r hodinového impulsu k SYSCLKOUT

EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;

EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;

Nastavení stohovacího obrazu

EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;

EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW

Vynuluje LOADMODE

EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;

EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

Strana: 45 z 49

Nastavení innosti

Nastaví PWM1A p i události A na p ír stkové ítání

EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;

istí PWM1A p i události A sm rem dol

EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;

P erušení tam kde budeme m nit porovnávané hodnoty

Zakázání p erušení

EPwm1Regs.ETSEL.bit.INTEN = 0;

Za ínat zvýšením CMPA

epwm1_info.EPwm_CMPA_Direction = EPWM_CMP_UP;

Nastaví ukazatel k PWM jednotce

epwm1_info.EPwmRegHandle = &EPwm1Regs;

Nastavení minimální a maximální hodnoty CMPA/CMPB

epwm1_info.EPwmMaxCMPA = EPWM1_MAX_CMPA;

epwm1_info.EPwmMinCMPA = EPWM1_MIN_CMPA;

}

Funkce PID regulátoru. Nejprve posouváme vektor regula ní odchylky a až teprve potom ji vypo ítáme. Poté z této odchylky m žeme pomocí vzorc

Strana: 46 z 49

void update_compare(EPWM_INFO *epwm_info)

{

epwm_info->EPwmRegHandle->CMPA.half.CMPA = u;

}

Strana: 47 z 49

5.4 Odlad ní PID regulátoru pomocí pracovní desky Starter Kit

I když je program už napsán, tak ješt není práce zcela hotova, ješt je zapot ebí jej odladit. A k tomu nám pom že pracovní deska Starter Kit. Ta je složena z AD a DA p evodník a umož uje nám íst a generovat pot ebný signál.

Aby bylo možno tyto signály zpracovávat a zobrazovat je, tak pot ebujeme využít n jakého softwarového prost edku. K tomu nám poslouží funkce MatLab simulinku, který nám umož uje komunikovat s deskou Starter Kit a skrze ni íst a generovat p esn definovaný signál. Tato komunikace je zobrazena na obrázku 11.

Obrázek 12. Schéma komunikace mezi DSP a Matlab simulinkem

Takto vytvo ený signál vstupuje do DSP, tam je vyhodnocen naším programem a PID regulátor vrací zp t signál ve form PWM, aby se daly údaje vyhodnocovat je zapot ebí dát na vstup Starter Kitu RC lánek. Ten nám z ásti odfiltruje pulzní pr b h PWM signálu a vytvo í nám kvazi spojitý pr b h.

Strana: 48 z 49

6. Záv r

Práce na této bakalá ské práci zprvu spo ívala v nastudování velkého množství zejména anglicky psaných materiál . Jednalo se o r zné datasheety od vnit ních obvodu DSP, vývojového kitu a o manuály od vývojového prost edí CCS. Dále jsem se také musel seznámit s programovacím jazykem C a s instruk ní sadou procesoru TMS320F2808.

N které informace se mi získávaly dosti t žko, jelikož nebylo p íliš možností se s n kým poradit o funkci a o tom, jak programovat náš signálový procesor, což je d sledek toho, že to byl první výrobek tohoto typu na univerzit , a tudíž s ním zde ješt nikdo nepracoval a nem l o n m hlubší znalosti.

M j program vychází z program examples vytvo ené firmou TI, které jsou p edp ipraveny v takzvaných GEL souborech. Proto není p íliš dokonalý, ale je pln funk ní. Te už vím, že bych jeho strukturu koncipoval jinak, protože jsem získal v pr b hu práce dobrou p edstavu o jeho programování.

PID regulátor v len ný do našeho DSP má široké možnosti uplatn ní, jelikož regulace klimatizace v automobilech, nebo t eba ízení r zných inteligentních domácích spot ebi ích (trouba, pra ka, aj.).

V dnešní dob mají tato za ízení nezastupitelnou pozici na trhu, v d sledku jejich sofistikovaného p ístupu k ešení problému. Také kv li jejich relativn nízké cen , velkému výpo etnímu výkonu a zejména malým rozm r m. Tyto vlastnosti z nich iní za ízení ideální nap íklad pro automobilový a telekomunika ní pr mysl, kde je kladen d raz na všechny tyto požadavky.

Strana: 49 z 49

Seznam použité literatury

[1] Herout, P.: U ebnice Jazyka C – 1. díl 4.vyd. eské Bud jovice: Koop, 2005 ISBN 80-85828-21-9.

[2] Zden k Smékal, Pavel Sysel: Signálové procesory. 1.vyd. Praha: Sd lovací technika, 2006. ISBN 80-86645-08-8. str.:211-217 a 195-200

[3] Martin Simandl, Michal Simandl (studenti), Doc. Ing. Vratislav Davídek, CSc, P ehled digitálních signálových procesor Texas Instrument, [on line]

http://amber.feld.cvut.cz/icz/tns320C54X/index.htm

[7] TMS320x280x DSP Analog-to-Digital Converter (ADC) Reference Guide, Texas Instrumnte 2004, íslo literatury: SPRU716, str. 1-62 [on line]

file://localhost/c:/CCStudio_v3.1/docs/pdf/manuals_CCS_FULL_C2000.html

[8] TMS320x28xx, 28xxx Enhanced Pulse Width Modulator (ePWM) Module Reference Guide, Texas Instrument 2006, íslo literatury: SPRU791b, str. 1-117 [on line]

file://localhost/c:/CCStudio_v3.1/docs/pdf/manuals_CCS_FULL_C2000.html

[9] M. Tomášek, Bakalá ská práce XML rozhraní pro programování DSP, VUT Praha 2005

In document ZADÁNÍ BAKALÁ SKÉ PRÁCE (Page 26-0)

Related documents