Digital Signal Processing By Mr.Rungwicha Chaiyot

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
การทดลองที่ 5 วงจรนับ (Counter)
Advertisements

โครงสร้างของภาษา C ในโปรแกรมที่พัฒนาด้วยภาษา C ทุกโปรแกรมจะมีโครงสร้างการพัฒนาไม่แตกต่างกัน ซึ่งประกอบด้วย 6 ส่วนหลัก ๆ โดยที่แต่ละส่วนจะมีหน้าที่แตกต่างกัน.
INTRODUCTION TO C LANGUAGE
Introduction to C Introduction to C.
โครงสร้างโปรแกรมภาษา C
กระบวนการ (Process).
ระบบบัส I2C I2C Bus System.
เครื่องพันขดลวด Coil Wiering Machine EE โดย นายวรวิทย์ เหล่าพิเชฐกุล นายมาโนชย์ ทองขาว อาจารย์ที่ปรึกษา.
Chapter 1 Introduction to Information Technology
Chapter 7 ขอบเขตของตัวแปร Variable Scope.
Building native COBOL applications คอมไพเลอร์ตรวจหา syntax errors แล้วสร้าง native machine code จากนั้น linker ทำหน้าที่ link native machine code ให้เป็น.
Register Allocation and Graph Coloring
สภาวะแวดล้อมในขณะโปรแกรมทำงาน
Ordering and Liveness Analysis ลำดับและการวิเคราะห์บอกความ เป็นอยู่หรือความตาย.
Central Processing Unit
Software คือ ชุดคำสั่งหรือ ขั้นตอนการทำงานของคอมพิวเตอร์
Lecture No. 3 ทบทวนทฤษฎีและแบบฝึกหัด
Structure Programming
CS Assembly Language Programming Period 29.
Location object Form object
องค์ประกอบของโปรแกรม
Visual Basic 6 By Samaporn Yendee VB6.
รูปแบบโครงสร้างภาษาซี
โครงสร้างภาษาซี.
ฟังก์ชั่น function.
Lecture no. 10 Files System
ขั้นตอนการแปลงไฟล์.
ขั้นตอนการแปลงไฟล์.
C Programming Lecture no. 6: Function.
Register.
ขั้นตอนการทำงานและอุปกรณ์คอมพิวเตอร์
เขียนโปรแกรมด้วย microC
ไมโครคอนโทรลเลอร์เบื้องต้น
ไมโครคอนโทรลเลอร์เบื้องต้น
นายนิรันดร์ อังควัฒนวิทย์ นางสาวรุจิรา อาชวานันทกุล
บทที่ 7 รีเคอร์ซีฟ ระหว่างการออกแบบเขียนโปรแกรมแบบบนลงล่าง (Top-down Design) จะมีงานย่อย(Subtask) เพื่อแก้ปัญหาในแต่ละเรื่อง และผู้เขียนโปรแกรมต้องการใช้งานย่อยในลักษณะที่เรียกตัวเองขึ้นมาทำงานลักษณะของฟังก์ชั่นมีความรอบรัดสั้นกว่าแบบวนลูป.
Lecture 4 องค์ประกอบภาษา C To do: Hand back assignments
Suphot Sawattiwong Sound On Game Suphot Sawattiwong
การเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซี
CPE 332 Computer Engineering Mathematics II
ครูรัตติยา บุญเกิด.
ตอนที่ 4 ความรู้พื้นฐานทางดิจิตอล
หน่วยประมวลผลกลางและหน่วยความจำ Central Processing Unit and Memory
การใช้งาน Dev C ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
Basic Programming for AVR Microcontroller
หลักการทำ Animation แบบง่ายๆ
วิชาการเขียนโปรแกรมและอัลกอริทึ่ม
วิชาคอมพิวเตอร์กราฟิก
โปรแกรมประยุกต์อื่นๆ
Debugging in VC Computer Programming for Engineers.
วิชา วิศวกรรมซอฟต์แวร์ (Software Engineering)
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
บทที่ 3 การจ่ายงาน (Process Management).
หลักการสร้างสรรค์ชุดคำสั่ง ๓
การออกแบบส่วนติดต่อกับผู้ใช้ User Interface Design
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
เฉลิมชัย ประเทืองรัตน์ อาจารย์ประจำหมวด คอมพิวเตอร์ วุฒิทางการศึกษา วิทยาศาสตรบัณฑิต สาขาเทคโนโลยีสารสนเทศและการสื่อสาร.
โครงสร้าง ภาษาซี.
บทที่ 3 การรับ และส่งข้อมูลจากภายนอก และการเขียนโปรแกรม
Input / Output ธนวัฒน์ แซ่เอียบ.
Assembly Languages: PDP8
Function ธนวัฒน์ แซ่ เอียบ. What is a function ฟังก์ชันในภาษา C เป็นโปรแกรมที่ถูกออกแบบมาเพื่อ ใช้แก้ปัญหางานใดงานหนึ่งโดยเฉพาะ ฟังก์ชันจะเปลี่ยน input.
Computer Program คือ ขั้นตอนการทำงาน ของคอมพิวเตอร์
Nested loop.
ADC & UART.
หน่วยที่ 3 องค์ประกอบของคอมพิวเตอร์
SPI.
Interrupt & Timer.
การเขียนแบบและออกแบบด้วยคอมพิวเตอร์
ใบสำเนางานนำเสนอ:

Digital Signal Processing By Mr.Rungwicha Chaiyot TMS320F2812 เบื้องต้น By Mr.Rungwicha Chaiyot

เป็นผลิตภัณฑ์ของบริษัทเทคซัสอินสตรูเมนท์ (Texas Instrument) TMS320F2812 เป็นผลิตภัณฑ์ของบริษัทเทคซัสอินสตรูเมนท์ (Texas Instrument) มีอุปกรณ์รอบข้างที่เหมาะสำหรับประยุกต์ใช้ในงานควบคุมมอเตอร์ โดยเฉพาะดังนี้ -Two event-manager modules (EVA,EVB) -Enhanced analog-to-digital converter (ADC) module -Digital I/O and shared pin function

มีคุณสมบัติในการประยุกต์ใช้ในงานควบคุมการเคลื่อนที่และควบคุม EVENT MANAGER (EV) Module มีคุณสมบัติในการประยุกต์ใช้ในงานควบคุมการเคลื่อนที่และควบคุม มอเตอร์โดยเฉพาะ ประกอยด้วย EVA,EVB นำไปประยุกต์ใช้ในงานแบบ multi-axis/motion control เช่น -ควบคุมมอเตอร์สองตัว -ควบคุมอินเวอร์เตอร์แบบสามระดับ แต่ละ EV Module มี full compare unit 3 หน่วย ให้กำเนิด PWM ได้โมดูลละ 6 สัญญาณพร้อมทั้ง dead band โดยที่ค่าdead band ที่ต้องการสามารถโปรแกรมเข้าไปยัง Compare Register ได้

รูปที่ 1 โมดูลกำเนิดสัญญาณ PWM EV แต่ละตัวจะใช้ General-Purpose (GP) Timers เพื่อเป็น Time base ให้กับ Compare unit ซึ่งเกี่ยวข้องกับการให้กำเนิด สัญญาณ PWM ดังรูปที่ 1 รูปที่ 1 โมดูลกำเนิดสัญญาณ PWM

GP Timer Counting Operation Compare output ของ GP Timer สามารถกำหนด active high,active low force high,force low ได้ GP Timer แต่ละตัวมีโหมดการทำงานที่เป็นไปได้ 4 แบบ -Stop/Hold mode -Continuous Up-Counting mode -Directional Up-/Down-Counting mode -Continuous Up-/Down-Counting mode โดยแต่ละแบบสามารถกำหนดได้โดยใช้ timer control register (TxCON) บิตที่ 11-12

ในโหมดนี้ GP Timer จะหยุดทำงานและคงอยู่ที่สถานะปัจจุบัน Stop/Hold Mode ในโหมดนี้ GP Timer จะหยุดทำงานและคงอยู่ที่สถานะปัจจุบัน ตัว timer counter,compare output จะไม่มีการเปลี่ยนแปลง Continuous Up-Counting mode GP Timer ในโหมดนี้จะทำการนับขึ้นจนกระทั่ง timer counter มีค่าเท่ากับ Period registerซึ่งตรงกับขอบขาขึ้นของ input clock พอดี ค่า GP Timer จะรีเซตเป็น 0 และเริ่มนับใหม่อีกครั้งหนึ่ง ดังรูปที่ 2

รูปที่ 2 GP Timer Continuous Up-Counting mode ประโยชน์คือนำไปสร้าง PWM แบบ Asynchronous

ในโหมดนี้ GP Timer จะนับขึ้นและนับลง ตามอินพุตที่ขา Directional Up-/Down-Counting mode ในโหมดนี้ GP Timer จะนับขึ้นและนับลง ตามอินพุตที่ขา TDIRA/B ของ GPIO PORT -TDIRA/B เป็น high GP Timer จะนับขึ้นจนมีค่าเท่ากับ Period register Timer จะรีเซตเป็น 0 และนับขึ้นใหม่อีกครั้ง -TDIRA/B เป็น low GP Timer จะนับลงจนมีค่าเท่ากับ 0 ค่า Timer จะ reloads ใหม่ให้เท่ากับPeriod register และนับลงใหม่อีกครั้ง ดังรูปที่ 3

รูปที่ 3 Directional Up-/Down-Counting mode GP Timer ที่นับแบบ Up-/Down-Counting mode ใช้ในกรณีมีเหตการณ์ จากภายนอกเปลี่ยนไปในงานควบคุมและ power electronics application

ในโหมดนี้การทำงานจะเหมือนกับ Direction Up-/Down-Counting Continuous Up-/Down-Counting mode ในโหมดนี้การทำงานจะเหมือนกับ Direction Up-/Down-Counting mode แต่ PIN TDIRA/B ไม่มีผลต่อทิศทางการนับ -ทิศทางการนับจะเปลี่ยนจาก up to down เมื่อ timer counter มีค่าเท่ากับ Period register ทิศทางการนับจะเปลี่ยนจาก down to up เมื่อ timer counter มีค่าเท่ากับ 0 ดูรูปที่ 4

รูปที่ 4 Continuous Up-/Down-Counting mode Continuous Up-/Down-Counting mode ใช้สร้าง PWM แบบ Symmetric และ period ของ timer ในโหมดนี้มีค่าเป็นสองเท่าของ Period register (TxPR)

ได้โดย counting mode ที่อยู่ภายใน GP Timer Asymmetric/Symmetric Waveform Generation asymmetric /symmetric PWM wave form สามารถกำหนด ได้โดย counting mode ที่อยู่ภายใน GP Timer Asymmetric Waveform Generation เมื่อ GP Timer อยู่ใน continuous up-counting mode. output waveform (PWM) จะมีการเปลี่ยนแปลงดังนี้ -มีค่า 0 ก่อน timer counter จะทำงาน -มีค่าคงที่จนกระทั่งเกิดการ compare math (timer counter= compare register) -Toggle เมื่อเกิดการ compare math -มีค่าคงที่จนกระทั่งสิ้นสุด period -รีเซตเป็น 0 เมื่อจบ period

รูปที่ 5 GP Timer Compare/PWM Output in Up-Counting Mode

เมื่อ GP Timer อยู่ใน continuous up-/down counting mode. Symmetric Waveform Generation เมื่อ GP Timer อยู่ใน continuous up-/down counting mode. output waveform (PWM) จะมีการเปลี่ยนแปลงดังนี้ -มีค่า 0 ก่อน timer counter จะทำงาน -มีค่าคงที่จนกระทั่งเกิดการ compare math (timer counter= compare register) -Toggle เมื่อเกิดการ compare math -มีค่าคงที่จนกระทั่งเกิดการ compare math ครั้งที่สอง -Toggle เมื่อเกิดการ compare math ครั้งที่สอง -มีค่าคงที่จนกระทั่งสิ้นสุด period -รีเซตเป็น 0 เมื่อจบ period

รูปที่ 6 GP Timer Compare/PWM Output in Up-/Down Counting Mode PWM Output สามารถที่จะกำหนด active high,active low, force low,force high ได้โดยกำหนดคุณสมบัติใน ACTRA/B register

รูปที่ 8 Symmetrical PWM1,PWM2 PWM6=AH PWM5=AL 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 1 PWM4=AH PWM3=AL PWM2=AH PWM1=AL รูปที่ 7 ACTRA Compare Unit1= Bit0-3 =PWM1,PWM2 Compare Unit2= Bit 4-7=PWM3,PWM4 Compare Unit3= Bit 8-11=PWM5,PWM6 ACTRA=0999 PWM2 AH PWM1 AL รูปที่ 8 Symmetrical PWM1,PWM2

มี register อีกหลายตัวที่เกี่ยวข้องกับการใช้งาน PWM ศึกษา เพิ่มเติมได้จาก litrrature number SPRU065

ในตัวประมวลผลซึ่งสามารถกำหนดให้เป็นการทำงานแบบต่างๆได้ดังนี้ General-Purpose Input/Output (GPIO) GPIO MUX register ใช้เลือกคุณสมบัติการทำงานให้กับ PIN ในตัวประมวลผลซึ่งสามารถกำหนดให้เป็นการทำงานแบบต่างๆได้ดังนี้ -Digital I/O หรือ Peripheral โดย GPxMUX registers -ถ้าเป็น Digital I/O กำหนดให้เป็น Input/Output โดย GPxDIR registers แต่ละ Port ของ GPIO จะถูกควบคุมโดย MUX, Direction, Data, Set, Clear, Toggle Registers

แต่ละ Port ของ GPIO คือ MUX registers ใช้ในการเลือกระหว่าง GPxMUX Registers แต่ละ Port ของ GPIO คือ MUX registers ใช้ในการเลือกระหว่าง การทำงานเป็นอุปกรณ์รอบข้างหรือเป็นDigital I/O IF GPxMUX.bit=0 Pin ถูกกำหนดเป็น Digital I/O IF GPxMUX.bit=1 Pin ถูกกำหนดเป็นอุปกรณ์รอบข้าง GPxDIR Register แต่ละ Port ของ GPIO คือ GPxDIR registers ใช้ในการเลือกระหว่าง การทำงานเป็น Input หรือเป็น Output IF GPxDIR.bit=0 Pin ถูกกำหนดเป็น Input IF GPxDIR.bit=1 Pin ถูกกำหนดเป็น Output X=PORT A,B,D,E,F,G

แต่ละ Port ของ GPIO คือ GPxDAT registers ใช้ในการสะท้อนสถานะ IF GPxDAT.bit=0, PIN กำหนดเป็น Output เมื่อนั้น PIN ถูกเปลี่ยนเป็น Low IF GPxDAT.bit=1, PIN กำหนดเป็น Output เมื่อนั้น PIN ถูกเปลี่ยนเป็น High

แต่ละ Port ของ GPIO คือ GPxSET registers โดย PIN นั้นต้องถูกกำหนดเป็น Output IF GPxSET.bit=0, ignored (no effect) IF GPxSET.bit=1, PIN กำหนดเป็น Output เมื่อนั้น PIN ถูกเปลี่ยนเป็น High GPxCLEAR Registers แต่ละ Port ของ GPIO คือ GPxCLEAR registers โดย PIN นั้นต้องถูกกำหนดเป็น Output IF GPxCLEAR.bit=0, ignored (no effect) IF GPxCLEAR.bit=1, PIN กำหนดเป็น Output เมื่อนั้น PIN ถูกเปลี่ยนเป็น Low

แต่ละ Port ของ GPIO คือ GPxToggle registers โดย PIN นั้นต้องถูกกำหนดเป็น Output IF GPxToggle.bit=0, ignored (no effect) IF GPxToggle.bit=1, PIN กำหนดเป็น Output เมื่อนั้น PIN ถูกเปลี่ยนเป็นค่าตรงกันข้าม

ตำแหน่งของ PIN บน eZDSP_TMS320F2812 C28x GPIO Pin Assignment GPIO A GPIOA0 / PWM1 GPIOA1 / PWM2 GPIOA2 / PWM3 GPIOA3 / PWM4 GPIOA4 / PWM5 GPIOA5 / PWM6 GPIOA6 / T1PWM_T1CMP GPIOA7 / T2PWM_T2CMP GPIOA8 / CAP1_QEP1 GPIOA9 / CAP2_QEP2 GPIOA10 / CAP3_QEPI1 GPIOA11 / TDIRA GPIOA12 / TCLKINA GPIOA13 / C1TRIP GPIOA14 / C2TRIP GPIOA15 / C3TRIP GPIO B GPIOB0 / PWM7 GPIOB1 / PWM8 GPIOB2 / PWM9 GPIOB3 / PWM10 GPIOB4 / PWM11 GPIOB5 / PWM12 GPIOB6 / T3PWM_T3CMP GPIOB7 / T4PWM_T4CMP GPIOB8 / CAP4_QEP3 GPIOB9 / CAP5_QEP4 GPIOB10 / CAP6_QEPI2 GPIOB11 / TDIRB GPIOB12 / TCLKINB GPIOB13 / C4TRIP GPIOB14 / C5TRIP GPIOB15 / C6TRIP GPIO D GPIOD0 / T1CTRIP_PDPINTA GPIOD1 / T2CTRIP / EVASOC GPIOD5 / T3CTRIP_PDPINTB GPIOD6 / T4CTRIP / EVBSOC GPIO E GPIOE0 / XINT1_XBIO GPIOE1 / XINT2_ADCSOC GPIOE2 / XNMI_XINT13 GPIO F GPIOF0 / SPISIMOA GPIOF1 / SPISOMIA GPIOF2 / SPICLKA GPIOF3 / SPISTEA GPIOF4 / SCITXDA GPIOF5 / SCIRXDA GPIOF6 / CANTXA GPIOF7 / CANRXA GPIOF8 / MCLKXA GPIOF9 / MCLKRA GPIOF10 / MFSXA GPIOF11 / MFSRA GPIOF12 / MDXA GPIOF13 / MDRA GPIOF14 / XF GPIO G GPIOG4 / SCITXDB GPIOG5 / SCIRXDB BIT ที่เหลือ GPIO D,E,G,F คือ Reserved ตำแหน่งของ PIN บน eZDSP_TMS320F2812 board ดูได้จาก 2812_ezdsp_TechRef_F.pdf

ตารางที่ 1 PIN Assigment บน P4 และ P8 ของ DSP board

(ประกาศค่าต้นแบบให้กับโปรแกรม) Ex. Example_281xEvPwm.c //Description #include “header_file” //ประกาศ function ที่ใช้ในโปรแกรม void init_eva(void) void init_evb(void) // void main(void) { init_eva( ); init_evb( ); for(; ;); } void init_eva( ) void init_evb( ) (generate PWM1-12) (ประกาศค่าต้นแบบให้กับโปรแกรม) (function ชื่อ init_eva/b แบบไม่มีการส่ง ตัวแปรเข้า/ออกจากโปรแกรม=void) (โปรแกรมหลักเริ่มด้วยคำสั่ง main) (เรียกใช้ function init_eva ) (เรียกใช้ function init_eva ) (Idle Loop) (สร้าง function ชื่อ init_eva() ) (สร้าง function ชื่อ init_eva() )

การสร้าง project 1. Menu Project->New

สำหรับกำหนดค่า Default ของ DSPไว้เรียบร้อยแล้ว Project Name: ProjectPwm Location: c:\Project Project Type: Executable(.out) Target: TMS320C28XX Click: Finish NOTE:ใน Folder Project สร้าง header file และ C Source code สำหรับกำหนดค่า Default ของ DSPไว้เรียบร้อยแล้ว

2.เขียน C-Source Code Menu File->New->Source File

Menu:File->Save as

Save in: project Filename:ProjectPwm Save as type: C Source Files Click: Save

ไปที่ Folder Project กำเนิด PWM กำหนดค่า Default ของ 3. Add code file to the project Menu Project->Add files to project ไปที่ Folder Project : projectPwm.c :DSP281x_Codestartbranch.asm :DSP281x_Defaultsisr.c :DSP281x_Globalvariabledef.c :DSP281x_PieCtrl.c :DSP281x_PieVect.c :DSP281x_SysCtrl.c :DSP281x_header_nonBIOS.cmd :EzDSP_RAM_INK.cmd กำเนิด PWM กำหนดค่า Default ของ register ให้ DSP Link Command File Link Command File : จองพื้นที่ในหน่วยความจำให้กับตัวประมวลผล

4. Add the C-runtime-library to Project Project->Build Option Linker->Library Search Patch Type:C:\Ti\c2000\cgtools\lib Linker->Include Libraries Type:rts2800_ml.lib Add the stack-size of 0x400 Linker->Stack Size(-Stack) Type: 0x400 Close Build Option Click OK

5. Menu Project->Build

6. Load File projectPwm.out and run Program Menu File->Load Program ->projectPwm.out ->Click Open

Run Program Halt Program

REFERENCE 1.Texas Instrument “TMS320x281x DSP Event Manager (EV) Referencre Guide.” (SPRU065d) November2004 2.Texas Instrument “TMS320x281x DSP System Control and Interrupts Refer Ence Guide.” (SPRU078C) March2005 3.Texas Instrument “ACI3_1For TMS320F281X Setup Company.” (SPRC130)