Overview of Lab. 1 - PowerPoint PPT Presentation

1 / 26
About This Presentation
Title:

Overview of Lab. 1

Description:

15% -- Get the gargle sound operation to work (SW2) ... SW2 connected to PF9 -- Gargle button (Task 5) SW3 connected to PF10 -- Volume up (Task 7) ... – PowerPoint PPT presentation

Number of Views:55
Avg rating:3.0/5.0
Slides: 27
Provided by: enelUc
Category:
Tags: gargle | lab | overview

less

Transcript and Presenter's Notes

Title: Overview of Lab. 1


1
Over-view of Lab. 1
  • For more details see the Lab. 1 web-site
  • There will be a 20 min prelab quiz (based on
    Assignment 1 and 2) at the start of the lab.
    session

2
Print out the Lab. 1 web-pages for use as
reference during the lab. period
  • There will be a short 15-minute in-class quiz at
    the start of the lab. period dont be late
  • Quiz will be based on knowledge demonstrated
    during assignments 1 and 2

3
Tasks to be tackled
  • Test the provided C program to move audio
    signals in and out of the processor
  • 10 -- Convert the ProcessDataCPP( )code into
    assembly code
  • 15 -- Initialize the programmable flag interface
  • 10 -- Get the mute sound operation to work (SW1)
  • 15 -- Get the gargle sound operation to work
    (SW2)
  • 15 -- Get the dancing lights function to work
    (C and provided code)
  • 15 -- Get the volume control to work (Hard --
    you might want to leave out -- still get A- on
    lab)
  • 20 -- Documented code hand in
  • Bonus marks available

4
Task 1Download audio-talk-through program
  • If you have not already done so, download and
    expand ENCM415Directory.zip file so that you have
    the correct directory. structure and test driven
    development environment needed for Laboratory 1.
  • Download and expand the files in
    CPP_Talkthrough.zip into your Lab1 directory.
  • Add the CPP_Talkthrough project in your Lab. 1
     directory to the VisualDSP environment --
    compile and link.
  • Download the executable (.dxe) file onto the
    BF533 processor.
  • Hook up your CD or IPOD output to the CJ2 stereo
    input.
  • Hook up your ear-phones to the CJ3 stereo output.
  • Run the CPP_Talkthrough.dxe executable and check
    that the talk through program is working.

5
Task 2 -- Convert ProcessDataCPP( ) to
ProcessDataASM () Assign. 2 Q3
  • In talkthrough.h. add a prototype for your
    assembly code function Process_DataASM
  • In ISR.cpp change to // call function that
    contains user codeif 0      Process_DataCPP() 
    // Use the C versionelse    
    Process_DataASM() // C assembly code routines
    especially developed for Lab. 1endif 
  • Right-click on ProcessDataCPP.cpp entry. Use
    "FILE OPTIONS to exclude linking
  • Use PROJECT clean project
  • Add your ProcessDataASM.asm file to the project,
    recompile and link. Check that your code works
  • More details on the Lab. 1 web pages

6
Set up for Tasks 1 and Task 2
AUDIO-IN
AUDIO-OUT
7
How we are building the volume controller
SWITCHES ON FRONT PANEL
LED LIGHTS ON FRONT PANEL
PROGRAMMABLE FLAGS
LED-CONTROLREGISTER
FIO_FLAG_D Register
EBIU INTERFACE
YOUR PROGRAM RUNNING ON THE BLACKFIN
int ReadSwitches( )
void WriteLED(int )
ProcessDataASM( ) subroutine
D/A
EARPHONES
A/D
IPODCD
A/D D/A Interrupt routine
8
Special power-connector for Blackfin interface
on logic lab. station
9
Special power-connector for Blackfin interface
on logic lab. station
10
Connect 50-pin cable to Blackfin
11
Connect 50-pin cable to logic lab
  • Make sure that all 50-pin connections are secure
    and proper.
  • Power up the logic lab. station and check that is
    working

12
Task 3 Initialize the Programmable flag
interface 16 I/O lines on the Blackfin
  • Warning could burn out the Blackfin processor
    if done incorrectly
  • You need to set (store a known value to) a number
    of Blackfin internal registers
  • Most important ones
  • FIO_DIR Data DIRection 0 for input
  • FIO_INEN INterface ENable
  • FIO_FLAG_D Programmable FLAG Data register

13
Task 4 Read the switches on the front pannel
  • Final laboratory requirements
  • SW1 connected to PF8 -- Mute button (This task)
  • SW2 connected to PF9 -- Gargle button (Task 5)
  • SW3 connected to PF10 -- Volume up (Task 7)
  • SW4 connected to PF11 -- Volume down (Task 7)
  • Build Initialize_ProgrammableFlagsASM ( )
  • Modify main( ) and ProcessDataASM( ) so that
    MUTE-operation works
  • MUST HAVE 50 pin cable connected between logic
    board and Blackfin
  • Logic board power supply must be turned on

14
Task 5 Gargling operation
  • Need to add a simple counter that increments by 1
    every 1/44000 s
  • Code is essentially Assignment 2 Q2
  • Use the counter to turn the sound off and on
    every ½ s
  • Gargling sound is produced.
  • You need to have a signed demo sheet from a 2nd
    or 4th year student. Bonus if not from department

15
Gargle and Mute
int main( ) InitializeSwitchInterface( )
// Check Lab. 1 for exact name
needed InitializeLEDInterface( ) define
SWITCHBITS 0x0F00 // Looking in MIPs
notes about
// using a mask
and the
// AND bit-wise
operation // to
select desired bits while (1)
// Forever loop int
switch_value ReadProgrammableFlagsASM( )
// if switch 1 is on set
volatile mute_on 1 //
other wise set mute_on 0
// if switch 2 is on set volatile
cause_gargle 1 //
other wise set cause_gargle 0

16
Example from Assignment 2 HelpTask 4 code ---
mute button
  • void Process_DataASM(void)
  • if (mute_on FALSE)
    MakeTheSound( )
  • File interruptservice.cpp
  • extern volatile boolean mute_on
  • void Process_DataASM(void)
  • EX_INTERRUPT_HANDLER(Sport0_RX_ISR)
  • .. /// Lots of good stuff
  • Process_DataASM( )
  • // Make the sound occur
  • .. // Lots of more good stuff

WORRY ABOUT WHAT EX_INTERRUPT_HANDLER( ) MEANS
IN LAB. 2
17
Task 5 code -- Gargle
  • void Process_DataASM(void)
  • if (mute_on FALSE) if (gargle_on
    0)
  • MakeTheSound( )
  • Some how we want to do the following
  • Is cause_gargle is true no sound for ½ s and
    then sound for ½ s
  • Do this by changing gargle_on from 1 to 0 to 1 at
    ½ s intervals?
  • How?
  • File interruptservice.cpp
  • extern volatile boolean mute_on
  • extern volatile boolean cause_gargle
  • extern volatile int gargle_on
  • void Process_DataASM(void)
  • EX_INTERRUPT_HANDLER(Sport0_RX_ISR)
  • .. /// Lots of good stuff
  • Process_DataASM( )
  • // Make the sound occur
  • .. // Lots of more good stuff

WORRY ABOUT WHAT EX_INTERRUPT_HANDLER( ) MEANS
IN LAB. 2
18
Profound Procrastination Programming
  • File interruptservice.cpp
  • extern volatile boolean mute_on
  • extern volatile boolean cause_gargle
  • extern volatile int gargle_on
  • void Process_DataASM(void)
  • EX_INTERRUPT_HANDLER(Sport0_RX_ISR)
  • .. /// Lots of good stuff
  • if (cause_gargle TRUE)
    TurnGargleOnThenOff( )else gargle_on 0
  • Process_DataASM( )
  • // Make the sound occur
  • .. // Lots of more good stuff
  • File interruptservice.cpp
  • extern volatile boolean mute_on
  • extern volatile boolean cause_gargle
  • extern volatile int gargle_on
  • void Process_DataASM(void)
  • EX_INTERRUPT_HANDLER(Sport0_RX_ISR)
  • .. /// Lots of good stuff
  • Process_DataASM( )
  • // Make the sound occur
  • .. // Lots of more good stuff

WORRY ABOUT WHAT EX_INTERRUPT_HANDLER( ) MEANS
IN LAB. 2
19
Profound Procrastination Programming
  • File interruptservice.cpp
  • extern volatile boolean mute_on
  • extern volatile boolean cause_gargle
  • extern volatile int gargle_on
  • void Process_DataASM(void)
  • EX_INTERRUPT_HANDLER(Sport0_RX_ISR)
  • .. /// Lots of good stuff
  • if (cause_gargle TRUE)
    TurnGargleOnThenOff( )else gargle_on 0
  • Process_DataASM( )
  • // Make the sound occur
  • .. // Lots of more good stuff
  • This interrupt routine is executed every 1 /
    44000 s
  • For 22000 of those times we want gargle_on
  • For the next 220 of those times we want the
    gargle off
  • So we develop a counter

WORRY ABOUT WHAT EX_INTERRUPT_HANDLER( ) MEANS
IN LAB. 2
20
Profound Procrastination Programming
  • File interruptservice.cpp
  • extern volatile boolean mute_on
  • extern volatile boolean cause_gargle
  • extern volatile int gargle_on
  • void Process_DataASM(void)
  • EX_INTERRUPT_HANDLER(Sport0_RX_ISR)
  • .. /// Lots of good stuff
  • if (cause_gargle TRUE)
    TurnGargleOnThenOff( )else gargle_on 0
  • Process_DataASM( )
  • // Make the sound occur
  • .. // Lots of more good stuff
  • extern volatile int gargle_on
  • void TurnGargleOnThenOff( )
  • static long int count 0
  • count count 1
  • if (count gt 22000)
  • count 0
  • gargle_on 1 gargle_on)
  • Check task 5 web-pages to see if
    TurnGargleOnThenOff( ) is to be written in
    assembly code or in C

WORRY ABOUT WHAT EX_INTERRUPT_HANDLER( ) MEANS
IN LAB. 2
21
Task 6 LED interface and Dancing Lights
  • LED interface setup code provided
  • Check that you can read switches and make the
    values appear on the LED
  • Then writing in C code (interfaced to your
    assembly code) display the amplitude (absolute
    value) of the sound

22
Solving Lab. 1 Task 6Dancing lights
  • Many different ways you and your partner work
    one out
  • One of the ways is to call a C function from
    inside your assembly code routine ProcessDataASM(
    ).
  • How to do that was handled in Assignment 2 and
    also provided in detail on the web-pages

23
Task 7 Volume control
  • Writing in C, develop the final volume control
  • Note there are test codes available to test out
    your equipment
  • This code can be used to test the switches and
    the LED interface on your board. SwitchToLED.dxe
  • This is the final version of my code for Lab. 1.
     DrSmithLab1Final.dxe

24
Information of the marks and what needs to be
handed in
  • Hand in at the start of the Thursday tutorial
  • Sec. 1 6th October
  • Sec. 2 13th October (Same day as planned
    prelab. 2 quiz)
  • Note Lab.1
  • Section 1 is first session Sept 26th
  • Section 2 is second session Oct. 3rd
  • THERE ARE NO LABS ON THE MONDAY OF THANKSGIVING
  • Note Lab. 2
  • Section 2 is first session Oct. 17th
  • Section 1 is second session Oct 24th

25
Tasks to be tackled
  • Test the provided C program to move audio
    signals in and out of the processor
  • 10 -- Convert the ProcessDataCPP( )code into
    assembly code
  • 15 -- Initialize the programmable flag interface
  • 10 -- Get the mute sound operation to work (SW1)
  • 15 -- Get the gargle sound operation to work
    (SW2)
  • 15 -- Get the dancing lights function to work
    (C and provided code)
  • 15 -- Get the volume control to work (Hard --
    you might want to leave out -- still get A- on
    lab)
  • 20 -- Documented code hand in
  • Bonus marks available

26
What is currently planned for Lab. 2?
  • Develop a digital thermometer using LED and print
    out to display the temperature
  • Use the digital thermometer as remote control
    sensor to control the volume of sound (from Lab.
    1)
Write a Comment
User Comments (0)
About PowerShow.com