Student Name:Kevin Dobson Project Supervisor:Dr Lance Fung.

Slides:



Advertisements
Similar presentations
MUHAMMAD AHMED HUSSAIN
Advertisements

Introduction to PIC Microcontrollers
Computer Architecture
Microprocessors A Beginning.
System Integration and Performance
1 Operating Systems Input/Output Management. 2 What is the I/O System A collection of devices that different sub- systems of a computer use to communicate.
Applications of PICs Advantages/disadvantages Digital and analogue control Loops, sub-routines, scanning, counting and feedback Interrupts Problems with.
MC68HC11 System Overview. System block diagram (A8 version)
Int 2 Multimedia Revision. Digitised Sound Analogue sound recorded from person, or real instruments.
Yevgeny Petrilin Shay Dan Shadi Ibrahim. GUI : Graphical User Interface DAQ :Data Acquisition Data Acquisition device  a self-powered system that communicated.
CSE466 Autumn ‘00- 1 System Functional Requirements  Children’s toy…comes with PC software. Child plays notes on the screen and the device makes corresponding.
Design and Development of High Performance PC Based Logic Analyzer MSc Project by Rab Nawaz Advisor: Dr. Shahid Masud.
Design and Implementation of a Virtual Reality Glove Device Final presentation – winter 2001/2 By:Amos Mosseri, Shy Shalom, Instructors:Michael.
Railway Foundation Electronic, Electrical and Processor Engineering.
16.317: Microprocessor System Design I Instructor: Dr. Michael Geiger Spring 2012 Lecture 29: Microcontroller intro.
Detailed Design Review Project P13363 Members: Justine Converse (IE) James Cover (CE) Alexander Eschbach (EE) Jason Hang (ME) Ashley Trode (EE) Guide:
Critical Design Review February 23 rd, 2010 Hassan Alabudib Kamal Sabi Peng Chen Marisol Lozano Roman Yirui Huang.
Engineering 1040: Mechanisms & Electric Circuits Fall 2011 Introduction to Embedded Systems.
Micro controllers A self-contained system in which a processor, support, memory, and input/output (I/O) are all contained in a single package.
Unit 3: Hardware Components & Software Concepts
Making a MIDI Keyboard Bob Wayne Bell, Jr. Nov. 15, 2002 EE281.
ECE/CS-352: Embedded Microcontroller Systems Embedded Microcontroller Systems.
Oppenheimer Technologies Rick King Jonathan Creekmore.
Input/Output. Input/Output Problems Wide variety of peripherals —Delivering different amounts of data —At different speeds —In different formats All slower.
Computer Organization
MICROCONTROLLERS. What is a microcontroller? A microcontroller is a nifty little gadget that houses a microprocessor, ROM (Read Only Memory), RAM (Random.
Computer Hardware and Software Chapter 1. Overview Brief History of Computers Hardware of a Computer Binary and Hexadecimal Numbers Compiling vs. Interpreting.
Chapter 10: Input / Output Devices Dr Mohamed Menacer Taibah University
MICE III 68000/20/30 MICETEK International Inc. CPU MICEIII MICEView Examples Contents Part 1: An introduction to the MC68000,MC68020 and Part.
DELTA TAU Data Systems, Inc. 1 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Power PMAC Project Management November.
Copyright © 2012 Pearson Education, Inc. Publishing as Pearson Addison-Wesley C H A P T E R 1 Introduction to Computers and Programming.
Unit 4 Design and Synthesis of Datapath Controllers
Grob Systems, Inc., the customer, requires an industrial computer system that will have a function of acquiring raw data, processing the data, presenting.
CHAPTER 3 TOP LEVEL VIEW OF COMPUTER FUNCTION AND INTERCONNECTION
Computers Are Your Future Eleventh Edition Chapter 2: Inside the System Unit Copyright © 2011 Pearson Education, Inc. Publishing as Prentice Hall1.
Test your projects… ….from your PC!. Today’s Presentation Background Problem Statement Objectives Milestones Technical Approach Future Work Achievements;
Prepared by Eng. Musa Alyaman1 Chapter Seven Chapter Seven PIC16F87x.
Module 0 resources Presented by: Oscar Abagali Nkrumah Duncan Williams Gerard Ataogye Anthony Sarpong On 14/03/2013.
The Mechanics Of Computers The Operating System (OS) & Hardware.
Mrs. Ulshafer August, 2013 Java Programming Chapter 1.
Microprocessor-based Systems
General Concepts of Computer Organization Overview of Microcomputer.
Chapter 2 Introducing the PIC Mid-Range Family and the 16F84A The aims of this chapter are to introduce: The PIC mid-range family, in overview The overall.
Module 0 resources Presented by: Osacr Abagali Nkrumah Duncan Williams Gerard Ataogye Anthony Sarpong On 14/03/2013.
ATtiny23131 A SEMINAR ON AVR MICROCONTROLLER ATtiny2313.
Logic Analyzer ECE-4220 Real-Time Embedded Systems Final Project Dallas Fletchall.
Proposal for an Open Source Flash Failure Analysis Platform (FLAP) By Michael Tomer, Cory Shirts, SzeHsiang Harper, Jake Johns
THE MICROPROCESSOR A microprocessor is a single chip of silicon that performs all of the essential functions of a computer central processor unit (CPU)
Lecture 7: Overview Microprocessors / microcontrollers.
Capability of processor determine the capability of the computer system. Therefore, processor is the key element or heart of a computer system. Other.
Chapter Microcontroller
Submitted by:.  Project overview  Block diagram  Power supply  Microcontroller  MAX232 & DB9 Connector  Relay  Relay driver  Software requirements.
Copyright © 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Eighth Edition by Tony Gaddis,
SEPTEMBER 8, 2015 Computer Hardware 1-1. HARDWARE TERMS CPU — Central Processing Unit RAM — Random-Access Memory  “random-access” means the CPU can read.
Computer Basics Just How Does a Computer Work?
1 Chapter 1 Basic Structures Of Computers. Computer : Introduction A computer is an electronic machine,devised for performing calculations and controlling.
XP Practical PC, 3e Chapter 14 1 Recording and Editing Sound.
Embedded Microcontroller Systems
AC PWM CONTROL FOR INDUCTION MOTOR
SUBMITTED BY EDGEFX TEAM
BATTERY CHARGING BY THYRISTOR TRIGGERING CONTROL
SCADA for Remote Industrial Plant
PC Mouse operated Electrical Load Control Using VB Application
AC PWM BASED POWER Control BY IGBT / MOSFET
Introduction of microprocessor
AQA GCSE 7 Electronic systems processing Design and Technology 8552
Introduction to Microprocessors and Microcontrollers
The MIDI Standard A.
Introducing the PIC Mid-Range Family and the 16F84A
Chapter 1: Introduction to Computers and Programming
Presentation transcript:

Student Name:Kevin Dobson Project Supervisor:Dr Lance Fung

Project Overview To create a device which may interpret and modify a MIDI signal as defined my the user

Project Objectives Select and Configure device hardware –Select Microcontroller for accurate operation and optimum performance Create Software –Both embedded code and application software

MIDI Background Information The Musical Instrument Digital Interface (MIDI) is a standard allowing musical synthesizers and other electronic devices, of different makes and models, to communicate and control each other via a unidirectional link. For Example: A computer, or musical keyboard may control the notes played on a separate synthesizer.

MIDI History During the 70s the analogue synthesizer evolved from the electric organ and became popular by the end of the decade During this time, analogue control voltages were used for interconnectivity. Crude and Monophonic. In 1982 UMI (Universal Musical Interface) was proposed By 1983 it had been renamed to MIDI (Musical Instrument Digital Interface) Major contributors to the development of the standard were Roland (Japan) and Sequential Circuits (USA) source:

The MIDI Specification Hardware Specification –Asynchronous Serial Interface –Current Loop (current on = logic 0) Optical isolation & no common ground –31.25 Kbps (320us per byte)

The MIDI Specification Midi Messages (in general) –Each message can contain from 1 to 3 bytes –The first byte is always a status byte which specifies the TYPE (and channel) of the message. This byte always has the MSB set (i.e from 0x80 - 0xFF) –The following data bytes (if needed) contain information specific to the message type defined by the status byte

The MIDI Specification Some Status Bytes: 0x80 - 0x8F : Note Off 0x90 - 0x9F : Note On 0xA0 - 0xAF : Aftertouch 0xB0 - 0xBF : Program Change - where the lower nibble is the channel number

The MIDI Specification Example: The Note On status byte is followed by two data bytes which specify the note number and velocity (defined in the specification) The following byte stream will play note C6 (0x3C) at a velocity (volume) of 100 (0x64). 0x92, 0x3C, 0x64 Now, onto the convoluted contraption...

Enter...

Concept & Preliminary Design Q.So... What does this thing do anyhow? A.Anything!

Concept & Preliminary Design Q.So... What does this thing do anyhow? A.Anything!

Concept & Preliminary Design Why would you want it? Compatibility Issues Abstract event triggering Real-time interactive automation Performance Aid

Concept & Preliminary Design Major Considerations –Ease of use –Diversity of use State Machine Approach –Text / Macros –Tabular –Graphical

Concept & Preliminary Design

Device Programming Method –Download Separate Serial/Parallel PC interface Sysex Data Stream (through MIDI) –Code Generation Configuration data interpreted by Embedded Code Generation of instruction words of code Concept & Preliminary Design

Project Components Hardware –Microcontroller Consideration –MIDI Interface Circuitry Software –User Application Software –Embedded Firmware

Hardware Consideration Microcontroller Required: –Nonvolatile Memory –Sufficient Speed & Ram –Asynchronous serial input and output 31.25Kbps 1 start bit, 1 stop bit, 8 bit data byte

Hardware Consideration Microcontroller Chosen: –Microchip PIC16F876 8-bit RISC Structure (14 bit instruction word) Onboard Flash Memory (8K 14-bit words) 368 bytes of RAM USART Serial Communication 20MHz Maximum Operating Frequency –Allowing a 5MHz CPU clock 13 Interrupts

Hardware Consideration Configuration: –16Mhz Operating Frequency 4MHz CPU Clock Kbps 1 start/stop bits, 8 data bits, no interrupts enabled –Flash Memory Runtime Write Enable

Hardware Configuration

Hardware Issues Supply voltage must be regulated to approximately 5V at varying current draw –In this case, a 5V regulator IC was used Opto-isolator and hex inverter must be capable of 31.25KHz With CPU 4MHz, 1280 cycles are available between bytes

Prototype

Software Production Software Production Phases –Begin Windows Application Software (C++) Basic User Interface. I.e. Menus, MDI Child Windows, Toolbars Drawing/Dropping routines –Create Embedded Firmware (PIC16 ASM) –Finish Windows Application Software Create Code Generation Routines Tidy up File Saving/Loading

Application Software Written wholly in ANSI C++ Using MinGW (Minimalist GNU for Windows) –collection of headers, libraries and compilers for Win32 Application creation –placed in the public domain & GNU licensed DJGPPs RHIDE used as editor

GUI Design STATEEVENT (Transition) TOOLS Pointer Draw Line Delete Edit Select Start State Actions within state Triggers within event

GUI Design

Embedded Code Written wholly in PIC16 ASM Using MPBLab IDE DJGPPs RHIDE used as editor Responsibilities –Receiving and organising MIDI bytes into messages –Calling Downloaded Code –Transmitting MIDI Output (from Output Buffer) –Allowing Downloading and Writing of State-Machine Code to Flash Memory

Full MIDI Message? Add byte to Message Buffer Embedded Code Call Downloaded Code With MIDI Message Byte Recieved? Transmit Next Byte (If Output buffer isnt Empty) Call Downloaded Code Without MIDI Message Y Y N N

Embedded Code Stats ROM –493 Word Program (1st Page) –2K Words Available for Download (2nd Page) RAM –Message Buffer - 4 bytes (1st Bank) –Output Buffer - 94 bytes (FIFO, 2nd Bank) Start Pointer, End Pointer & End Location –3rd Bank dedicated for Downloaded Code Ram

User Code Generation Code Generation Algorithm Users State Diagram(s) Machine Code (Performed Within Windows Application Software)

User Code Generation Each state diagram has a variable which defines the current state Every time the downloaded code is called it cycles through each of the state diagrams –For each diagram it jumps to the correct location in memory for the current state Each state location checks inputs to see if a change in state is necessary

User Code Generation Action1 Action2... Set State to STATE1 Return to root code STATE1AIf Event1 goto STATE2A... Return to root code STATE1B If Event2 goto STATE5A An Example for STATE 1. The root code will jump to STATE1B, but any other state will jump to STATE1A.

Resources Used MIDI Technical Fanatics Brainwashing Center MinGW, MPBLab & DJGPP Resources The Forgers Win32 API Tutorial Microchip product documentation MIDI Manufacturers Assoc. Homepage Programming and Customising PICmicro Microcontrollers –Myke Predko