Getting the O in I/O to work on a typical microcontroller Ideas of how to send output signals to the radio controlled car. The theory behind the LED controller.

Slides:



Advertisements
Similar presentations
Getting the O in I/O to work on a typical microcontroller Activating a FLASH memory “output line” Part 1 Main part of Laboratory 1 Also needed for “voice.
Advertisements

TK2633 Introduction to Parallel Data Interfacing DR MASRI AYOB.
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.
Microprocessor or Microcontroller Not just a case of “you say tomarto and I say tomayto” M. Smith, ECE University of Calgary, Canada.
Processor System Architecture
Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 2.
Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial.
Boot Issues Processor comparison TigerSHARC multi-processor system Blackfin single-core.
Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 2.
Software and Hardware Circular Buffer Operations First presented in ENCM There are 3 earlier lectures that are useful for midterm review. M. R.
Microprocessor or Microcontroller Not just a case of “you say tomarto and I say tomayto” M. Smith, ECE University of Calgary, Canada.
HD44780 LCD programming From the Hardware Side Design and implementation details on the way to a valid SPI-LCD interface driver.
A look at interrupts What are interrupts and why are they needed in an embedded system? Equally as important – how are these ideas handled on the Blackfin.
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.
Microprocessor or Microcontroller Not just a case of “you say tomarto and I say tomayto” M. Smith, ECE University of Calgary, Canada.
Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 2.
Getting the O in I/O to work on a typical microcontroller Activating a FLASH memory “output line” Part 1 Main part of Laboratory 1 Also needed for “voice.
Just enough information to program a Blackfin Familiarization assignment for the Analog Devices’ VisualDSP++ Integrated Development Environment.
Blackfin BF533 EZ-KIT Control The O in I/O
Microprocessor or Microcontroller Not just a case of “you say tomarto and I say tomayto” M. Smith, ECE University of Calgary, Canada.
Parallel Ports of PC Methods of interfacing Examples.
HD44780 LCD programming From the Hardware Side
Peripherals and their Control An overview of industrially available “peripheral devices” that use “pulse-width modulation” for information passing. Review.
Input Laboratory: GPIO Pin control needed to have the Blackfin accept your commands Re-uses information from ENEL353 and ENCM369 courses and text books.
Assembly Language Review Being able to repeat on the Blackfin the things we were able to do on the MIPS 9/19/2015 Review of 50% OF ENCM369 in 50 minutes1.
RM2D Let’s write our FIRST basic SPIN program!. The Labs that follow in this Module are designed to teach the following; Turn an LED on – assigning I/O.
3-1 Digital I/O A group of I/O pins is called a PORT  A port is where data enters/leaves the system. Digital I/O pins are usually grouped into 8,16 or.
MICROPROCESSOR INPUT/OUTPUT
Over-view of Lab. 1 See the Lab. 1 web-site and later lecture notes for more details.
Microprocessor Dr. Rabie A. Ramadan Al-Azhar University Lecture 2.
ECS642U Embedded Systems Cyclic Execution and Polling William Marsh.
Moving Arrays -- 1 Completion of ideas needed for a general and complete program Final concepts needed for Final Review for Final – Loop efficiency.
Accessing I/O Devices Processor Memory BUS I/O Device 1 I/O Device 2.
Lab. 1 – Required Tasks. For more details – see the Lab. 1 web-site.
Over-view of Lab. 1 See the Lab. 1 web-site and the lecture notes for more details.
Multi-threaded projects Services and Drivers Alternate ways of doing Labs 1, 2, 3 and 4.
Handling multiple input signals Version #2 – co-operative scheduler Version #3 – pre-emptive scheduler.
EE/CS-352: Embedded Microcontroller Systems Part V The 8051 Assembly Language Interrupts.
بسم الله الرحمن الرحيم MEMORY AND I/O.
Lab. 1 – GPIO Pin control Using information ENEL353 and ENCM369 text books combined with Blackfin DATA manual.
1 Basic Processor Architecture. 2 Building Blocks of Processor Systems CPU.
Assembly Language Review Being able to repeat on the Blackfin the things we were able to do on the MIPS 3/3/2016 Review of 50% OF ENCM369 in 50 minutes1.
“Lab. 5” – Updating Lab. 3 to use DMA Test we understand DMA by using some simple memory to memory DMA Make life more interesting, since hardware is involved,
Over-view of Lab. 1 See the Lab. 1 web-site and latter lecture notes for more details.
DEPARTMENT OF ELECTRONICS ENGINEERING V-SEMESTER MICROPROCESSOR & MICROCONTROLLER 1 CHAPTER NO microcontroller & programming.
CPU Lesson 2.
Microprocessor or Microcontroller
See the Lab. 1 web-site and later lecture notes for more details
Introduction of microprocessor
Microcomputer Systems 1
Moving Arrays -- 1 Completion of ideas needed for a general and complete program Final concepts needed for Final Review for Final – Loop efficiency.
Number Representations and Basic Processor Architecture
Handling Arrays Completion of ideas needed for a general and complete program Final concepts needed for Final.
TigerSHARC processor and evaluation board
CSCI1600: Embedded and Real Time Software
Moving Arrays -- 1 Completion of ideas needed for a general and complete program Final concepts needed for Final Review for Final – Loop efficiency.
Assembly Language Review
Moving Arrays -- 2 Completion of ideas needed for a general and complete program Final concepts needed for Final DMA.
Assembly Language Review
See the Lab. 1 web-site and later lecture notes for more details
Moving Arrays -- 2 Completion of ideas needed for a general and complete program Final concepts needed for Final DMA.
Handling Arrays Completion of ideas needed for a general and complete program Final concepts needed for Final.
HD44780 LCD programming From the Hardware Side
HD44780 LCD programming From the Hardware Side
Tutorial Essentially all the Blackfin instruction you need for all of ENCM511. The instructions are easy. Its knowing when to use them that is the difficult.
Lab. 1 – GPIO Pin control Using information ENEL353 and ENCM369 text books combined with Blackfin DATA manual.
CSCI1600: Embedded and Real Time Software
Input Laboratory: GPIO Pin control needed to have the Blackfin accept your commands Re-uses information from ENEL353 and ENCM369 courses and text books.
Handling Arrays Completion of ideas needed for a general and complete program Final concepts needed for Final.
Blackfin BF533 EZ-KIT Control The O in I/O
Presentation transcript:

Getting the O in I/O to work on a typical microcontroller Ideas of how to send output signals to the radio controlled car. The theory behind the LED controller used in Assignment 1 and the Familiarization Lab

Agenda Processors need to send out control signals (high / low 1 / 0 true / false) –General Purpose Input / Output lines (GPIO lines) on Blackfin chip (16) –FLASH memory chip has additional I/O ports connected to Ez-Lite KIT LED’s What do we need to have happen to make the FLASH memory work on a microcontroller as we want. (In this example turning the board LED’s on and off) What new Blackfin assembly language instructions do we need to learn in order to operate the LEDs? Blackfin BF533 I/O2

Radio controlled car In principle we could Connect the signal that controls the LED1 output directly to the turn-to-right signal line of radio transmitter Connect the signal that controls the LED2 directly up to the go-forward signal line of radio transmitter Connect LED3 control up to the turn-to-left signal line of radio transmitter “IN PRINCIPLE” means – we might start off this way while we initially explore ideas to control the car. However we may (or may not) finish the project a different way. COULD USE LEDs AS A VIRTUAL CAR CONTROLLER Blackfin BF533 I/O3

Programmable Flags (input Lab) Most micro-controllers have general purpose input or output lines capable of generating “true” or “false” values Blackfin 533 has 16 GPIO lines Blackfin BF533 I/O4

Where are the GPIO pins found on the board? (Shared with video PPI controller) Blackfin BF533 I/O5

GPIO lines are very useful They are used to sent control signals to many of the peripherals that are found on the Blackfin Evaluation Board. –Video Control – GPIO PF0 to PF7 –Audio Control -- ?? (Never looked) –Input -- Buttons – GPIO PF8, 9, 10, 11 –Output – GPIO PF0, PF1, PF5, PF6, PF7 –SPI interface control for LCD -- PF5 –SPI interface Haptic Control – PF6 –Pins are functionally multiplexed – MEANS pins can perform different functions at different times. Blackfin BF533 I/O6

Additional I/O pins available Blackfin BF533 I/O7

Used to control LED on board Controlled using special “additional” parallel port interface attached to “flash” memory chip Blackfin BF533 I/O8 PROJECT USE LEDs used to INDICATE direction radio-controlled car will move. Not currently used to control the car (but could). LEFT RIGHT FORWARD BACK CONTROL ON

FLASH MEMORY UNIT Major task of this unit is to store the code need to “boot” (start) the processor Blackfin BF533 I/O9 2 PSD4256G6V From STMicroElectronics The FLASH part we need during Lab. 1 Additional I/O pins

LEDs connected to FLASH port Blackfin BF533 I/O10 BACK FORWARD RIGHT LEFT These pins are controlling other things on the board DON’T CHANGE PB6_A, PB7_A BEHAVIOUR WHEN YOU CODE THE LED OPERATION (Use AND / OR instructions) Airplane falls from sky syndrome

Steps to activating LEDs 1.Get the FLASH memory to work correctly (set many FLASH registers) –Write the code for InitFlashASM( ) 2.Get the FLASH I/O Port to work correctly as output for pins PB5  PB0, leaving other pins unchanged –Write the code for InitFlashPortASM( ) 3.Write the value we want to LEDs –WriteFlashLEDASM( int value) 4.Read back the value the LEDs show –int ReadFlashLEDASM( ) for testing Blackfin BF533 I/O11

FLASH MEMORY UNIT Controlled through “EBIU” External Bus Interface Unit EBIU are common on most processors (although often by different name) Blackfin BF533 I/O12 FLASH SDRAM CONTROLLER OTHER PINS USED WAIL!

Key information about EBIU Three busses come into the EBIU from the Blackfin processor core Forwards data to SDRAM and FLASH –How does EBIU “know” whether data has to be send to FLASH unit (I/O)and which data to the SDRAM units (memory store)????? (Control logic question on quiz / exams) Blackfin BF533 I/O13

SDRAM and FLASH In later laboratories –We will build a stand-alone microcontroller system, which means we will need to understand how to program the flash memory so that the processor “knows” what to do when powered-up. Common practice on processors for boot process reads start up code from FLASH –We will need to process “large arrays” – too large to fit into the “internal fast” Blackfin “L1” memory so they must be placed in SDRAM. Common practice on processors In this laboratory, we need to program the “extra” FLASH chip I/O pins which are connected to the LED’s – control the lights now, perhaps control car later. Blackfin BF533 I/O14

What we know! When the processor powers up – it must read its “boot” program from the FLASH memory The processor does not know what sort of FLASH it will be connected to When processor powers up, it will “assume” that it is connected to “slowest FLASH” in existence. (common practice) The first part of the program the processor reads in (boot code) can change the processor to read FLASH more efficiently (faster). Blackfin BF533 I/O15

Controlling FLASH operation Blackfin BF533 I/O16 What we need to worry about Blackfin (like most microcontroller peripherals) has a “GLOBAL” control register and one or more “specific” control registers

InitFlashCPP( ) Get the FLASH memory to work correctly May be “many” processes (threads) running on the Blackfin evaluation board (e.g. Audio). All these processes (threads) may want to use the flash memory for other purposes – meaning InitFlashCPP( ) may have already been called by another thread before your code uses it (or perhaps your code is run more than once) InitFlashCPP( ) { /* Concept only */ If FLASH memory already configured -- ¿How can we know this? -- Perhaps something that changes during initialization! – return without changing the initialization Else { configure Memory Bank control register THEN configure Global control (turns on the FLASH) } Blackfin BF533 I/O17

Set the Bank control register Reset value – the way the processor powers up Will probably work “as is” but not efficient – “slow reads” by default (common practice for hardware) Blackfin BF533 I/O18 Default Slow (15 cycles for each read and write operation)

Memory control access speed (default slow) – Diagram often appears in quiz Blackfin BF533 I/O19 DEFAULT Processor sends out address and waits 15 cycles before sending a “do a read operation” command to memory. The processor waits another 15 cycles before the actual read occurs.

Set General Control Register Reset value (Processor power up state) leaves “CLKOUT” disabled – is that important? (Meaning do WE have to turn it on (set bit 0 to 1)?) Blackfin BF533 I/O20 What parts of the operation of this register must we “know” how to do? Unanswered at this time. We don’t know what bits are critical NOT to change. SO CHANGE USING AND and OR instructions when setting All Banks enabled

InitFlashPortCPP( ) Get the Port to work correctly as output for pins PB5  PB0, leaving other pin behaviour (6 and 7) unchanged. (Use AND and OR instructions) Documentation says the “Flash Direction” register allows you to choose whether the pin works as an “in” pin or works as an “out” pin (common practice) Blackfin BF533 I/O21 CHANGE INTERFACING FROM ASM TO CPP CODE

InitFlashPortCPP( ) Get the Port to work correctly as output for pins PB5  PB0, leaving other pins unchanged. (Set as “Output” to control the lights) Blackfin BF533 I/O22 Used during Write and Read operations LED 5 Leftmost on Blackfin panel LED 4 LED 3 LED 2 LED1 LED0 Rightmost Name of “OUR” part Write 1 to a bit -- turn on Write 0 to a bit -- turn off WARNING STARTS AT 0 BOTH BIT AND LED NAMES

Key issues -- InitFlashPortCPP() Set direction to 1 (output) on lower 6 pins leaving other direction values unchanged NEED TO REVIEW ENCM369 – OR assembly code instruction needed – 8 bit values (byte) – READ, USE OR, WRITE –Read EBIU “direction” register into processor core data register (makes a copy) (HOW?) –Set another processor data register to 0x3F ( ). Need to know basic binary and hexadecimal patterns for common numbers – decimal confusing when used to show “on” and “off” values – no calculators allowed in exams and quizzes –OR the two data registers (HOW?) –Write “modified copy” back into “direction register” (HOW?) PROBLEM to overcome – how do we do “byte” read and writes to Blackfin memory using “C++”? Blackfin BF533 I/O23 CHANGE INTERFACING FROM ASM TO CPP CODE

WriteFlashLEDCPP( ) Write ‘1’ (on) or ‘0’ (off) to the Port to activate LEDs connected to pins PB5  PB0, leaving other pins on that port unchanged in value. (common practice) Blackfin BF533 I/O24 LED 5 Leftmost LED 4 LED 3 LED 2 LED1 LED0 CHANGE INTERFACING FROM ASM TO CPP CODE

Key issues WriteFlashLEDASM( input_value) Write ‘1’ (on) or ‘0’ (off) to the Port to activate LEDs connected to pins PB5  PB0, leaving other pins unchanged. HOW TO DO THIS OPERATION 1.Read 8-bit BYTE “LED data register” into 32-bit processor data register (makes a copy in R1) 2.Keep “top” 2 bits (AND operation) of copied value (8 bit) in 32-bit register 3.Keep “bottom” 6 bits of “in-par” 32-bit in_value (R0) that is passed into the subroutine 4.OR the two processor data registers (R0, R1) 5.Write “modified 32-bit copy” back into “LED data register” – 8-bit byte operation needed PROBLEM: “byte (8)” operations using word (32) sized registers Oips Blackfin BF533 I/O25 EXAMPLE NOT YET BEING DONE IN HIGH LEVEL C++

Things we STILL need to learn How do we put a 32-bit value (long int) into a register (data Rn or pointer Pn)? How do we put an 8 or 32-bit value into memory? How do we handle byte operations (8-bit)? How do we do AND and OR operations on Blackfin? – Do in ASM and CPP? How similar is Blackfin to MIPS when handling these issues (ENCM369)? Meaning can we use ENCM369 ideas with the Blackfin? Blackfin BF533 I/O26

Agenda tackled Processors need to send out control signals –General purpose input / output GPIO on processor Not enough GPIO lines –FLASH memory chip has additional I/O ports connected to Ez-Lite KIT LED’s What do we need to have happen to make the FLASH memory work as we want? What new Blackfin assembly language instructions do we need to learn? Blackfin BF533 I/O27