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
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.
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)
PowerShow.com is a leading presentation sharing website. It has millions of presentations already uploaded and available with 1,000s more being uploaded by its users every day. Whatever your area of interest, here you’ll be able to find and view presentations you’ll love and possibly download. And, best of all, it is completely free and easy to use.
You might even have a presentation you’d like to share with others. If so, just upload it to PowerShow.com. We’ll convert it to an HTML5 slideshow that includes all the media types you’ve already added: audio, video, music, pictures, animations and transition effects. Then you can share it with your target audience as well as PowerShow.com’s millions of monthly visitors. And, again, it’s all free.
About the Developers
PowerShow.com is brought to you by CrystalGraphics, the award-winning developer and market-leading publisher of rich-media enhancement products for presentations. Our product offerings include millions of PowerPoint templates, diagrams, animated 3D characters and more.