Digitális jelfeldolgozás
Laboratóriumi gyakorlat -3,4
Mintavételezés tanulmányozása. AD - konverzió. Soros kommunikáció A gyakorlat célja A gyakorlat során a dsPIC30F6010 digitális jelprocesszor Analóg – Digital konverterét tanulmányozzuk. A mintavételezett jel egy telefon DTMF jele, amely két frekvenciakomponensből tevődik össze. A mintavételezett jelet elküldjük RS232 – kommunikáció segítségével a számítógépnek és MATLAB programban tároljuk, ábrázoljuk. A következő gyakorlatok során az így kapott jelet használjuk a jelfeldolgozási feladatok elvégzésére! Elméleti bevezető A jelfeldolgozás alapfeltétele a jelek mérése. A dsPIC család maximum 16 analóg bemenettel rendelkezik, 10 bites üzemmódban 500ksps mintavételezési frekvenciát érhetünk el.
Digitális jelfeldolgozás
Laboratóriumi gyakorlat -3,4
Jellemzők: − Külső referencia lehetőség − Négy csatornán egyszerre mintavételezhetünk − A konverzió pillanatának kiváltására több beépített lehetőség − 16 szó hosszúságú konverzió-eredmény buffer − 4 adatformátum a konverzió eredményének A konfigurációs regiszterek: − ADCON0 − ADCON1 − ADCON2 − ADCHS – AD csatorna kiválasztás − ADPCFG – AD port konfigurációs regiszter − ADCSSL – AD szekvencia kiválasztás Eredmény regiszterek: Az AD konverzió eredményét az ADCBUF0...ADCBUFF15 regiszterekbe kapjuk vissza. Részletesen a regiszterek leírása megtalálható a 70046c.pdf dsPIC Family Reference Manual dokumentumban(17.4 oldaltól kezdődően). Feladat Írjatok egy programot, ami az AN6 csatornát mintavételezi 1KHz mintavételezési frekvenciával. Az AD konverter külső referenciával működjön, az eredmény előjel nélküli egész szám legyen. A mintavételezési frekvenciát a TMR3 időzítő generálja. Minden 16. konverzió után generáljon egy megszakítást, amiben kiolvassuk az eredményt és betesszük az X memóriában egy jól meghatározott zónába. 960 minta után állítsuk meg a konverziót. Beállítások: • A portok analóg bemenetté való nyilvánítása • Az analóg csatornák és a bemenetek közötti kapcsolat felprogramozása • A mintavételezés beállítása § Automata vagy manuális § A mintavételezési periódus forrása § Az eredmény formátuma • A referencia feszültség kiválasztása • A mintavételezési frekvencia felprogramozása • A megszakítások beállítása
Digitális jelfeldolgozás
Laboratóriumi gyakorlat -3,4
A dsPIC család komplex mintavételezési lehetőségeket kínál, a fent leírt eljárás általánosan mutatja be a beállítás menetét, a következőkben a mi feladatunkra alkalmas beállítások lathatók.
Nézzétek meg a beállításokat és értelmezzétek! További feladatok: − Megírni egy függvényt, ami elindítja a konverziót (ADON és TON bitek 1re állítása, konverzió számláló inicializálása). − Megírni a megszakítást, amiben beolvassuk az eredményt ( Az ADCBUF0 kezdőcímről 16 szót beolvasunk a lefoglalt X memóriába, figyeljük 960 szót, majd állítsuk meg a konverziót – ADON bit törlése) A 960 konverzió az X memóriában lesz, szimuláljátok le és nézzétek meg mit tölt a memóriába. Az eredmény feldolgozása, ábrázolása számítógépen a legegyszerűbb. Vizsgáljuk meg a soros-port lehetőségeket, konfiguráljuk fel és küldjük el a mérést a számítógépre. Matlab programmal olvassuk be és ábrázoljuk.
Digitális jelfeldolgozás
Laboratóriumi gyakorlat -3,4
DsPIC soros-port: − − − − − − −
8, 9 bites teljes duplex soros kommunikáció Páros, páratlan vagy semmi paritás 1 vagy 2 stop bit programozható Baud Rate generátor 4 mélységű adás ás vételező regiszter Paritás, keret és túlcsordulás vizsgálat Adás és vételezés megszakítás
Két soros-port van a dsPIC30F6010 processzoron, mi az 1-es soros-portot használjuk. A konfigurációs regiszterek: − U1MODE − U1STA − U1TXREG − U1RXREG A következő beállítások 9600baud, 8 bit, paritás nélkül, TX megszakítástiltás, RX megszakítással használja az UART modult:
Digitális jelfeldolgozás
Laboratóriumi gyakorlat -3,4
Feladat Írjatok egy függvényt, ami elküld egy karaktert a soros porton. A karakter a W0 regiszterben legyen, akkor töltjük fel az U1TXREG-et amikor van egy hely a listában. Ezt az btsc _U1STA, #UTXBF utasítással vizsgáljuk. Amíg az UTXBF bit 1-ben áll addig tele van a kimenő buffer. Írjatok egy függvényt, ami elküldi a 960 mérést soros porton. Alakítsátok át a mért adatokat 8 bites számokká. Használjátok a fent megírt karakterküldő függvényt. Matlab soros kezelő függvényei: >>help serial >> s1=serial('COM1'); >> fopen(s1) >>y=fread(s1) Beállíthatjuk a sorvéget jelző karaktert, alapértelmezetten LF –et vár.
Digitális jelfeldolgozás
Laboratóriumi gyakorlat -3,4
>> s1=serial('COM1', 'TERMINATOT', 'CR'); - ebben az esetben a dsPIC-ben elküldjük a sorvéget jelző karaktert: mov #0x000D, W0 call SendChar a SendChar az általunk megírt karakterküldő függvény. Alakítsátok át a mért értékeket úgy, hogy értelmezhető legyen. Kérdések 1. Mit jelent a szimultán mintavételezés illetve konverzió? Magyarázzátok el, hogyan működik. 2. Nézzétek meg, hogy milyen lehetőségek vannak a konverzió elindításának a kiváltására. Mondjatok példát ezek használatára! 3. Hogyan külditek el soros-porton a 10 bites ADC eredményt?