Oct 30 Announcements Code Marked and on Blackboard

Slides:



Advertisements
Similar presentations
PROGRAMMABLE PERIPHERAL INTERFACE -8255
Advertisements

Dr A Sahu Dept of Comp Sc & Engg. IIT Guwahati I/O + Timer 8155 I/O + Timer 8255 I/O 8255 I/O 8253/54 Timer 8253/54 Timer 2 Port (A,B), No Bidirectional.
Microcontroller Programming II MP6-1
PWM Pulse Width Modulation
Oscilloscope Watch Teardown. Agenda History and General overview Hardware design: – Block diagram and general overview – Choice of the microcontroller.
Infineon Technologies Corp. June 99 1 HOT167-1 Version 2.0 F PWMmax = x 50ns = 78 kHz Pulse Width Modulation Unit (PWM) (20 MHz)  4 independent.
COMP3221: Microprocessors and Embedded Systems Lecture 20: Analog Output Lecturer: Hui Wu Session 2, 2004.
Timers and Interrupts Shivendu Bhushan Summer Camp ‘13.
1 ECE 263 Embedded System Design Lessons 2, 3 68HC12 Hardware Overview, Subsystems, and memory System.
Pulse Width Modulation
BLDC MOTOR SPEED CONTROL USING EMBEDDED PROCESSOR
Engineering 1040: Mechanisms & Electric Circuits Fall 2011 Introduction to Embedded Systems.
D.H.S. Digijock Home Security ECE477 – Team 7 Linda Stefanutti Zach Smith Stuart Pulliam Will Granger Software Design Narrative.
1 Timing System Timing System Applications. 2 Timing System components Counting mechanisms Input capture mechanisms Output capture mechanisms.
ECE 371- Unit 11 Timers and Counters (“Stop Watches and Alarm Clocks”)
7/23 Timers in Coldfire Processor Computer Science & Engineering Department Arizona State University Tempe, AZ Dr. Yann-Hang Lee (480)
Lecture 29: LM3S9B96 Microcontroller – Pulse Width Modulator (PWM)
PIT: Programmable Interval Timer
ARM Timers.
System Clocks.
Unit 10.2 Timer Examples. Example – Music Generation Channel 6 – Set up as a timer Output to Generate Square Waves Channel 4 – Set up as a timer Output.
AT91 Embedded Peripherals
Embedded System Design Laboratory October 11, 2002Stanford University - EE281 Lecture #4#1 Lecture #4 Outline Announcements Project Proposal AVR Processor.
Atmel Atmega128 Overview ALU Particulars RISC Architecture 133, Mostly single cycle instructions 2 Address instructions (opcode, Rs, Rd, offset) 32x8 Register.
CCP MODULES  The CCP module (Capture/Compare/PWM) is a peripheral which allows the user to time and control different events.  Capture Mode provides.
1 68HC11 Timer Chapter HC11 Timer Subsystem Several timing functions: Basic timing Basic timing Real time interrupts Real time interrupts Output.
ATtiny23131 A SEMINAR ON AVR MICROCONTROLLER ATtiny2313.
Automatic accident avoiding system PROJECT MEMBERS MUTHUKUMAR.K (05ME33) SAKTHIDHASAN.S (05ME39) SAKTHIVEL.N (05ME40) VINOTH.S (05ME56) PROJECT GUIDE:
INTRODUCTION TO PIC MICROCONTROLLER. Overview and Features The term PIC stands for Peripheral Interface Controller. Microchip Technology, USA. Basically.
#1 of 10 Tutorial Introduction PURPOSE -To explain how to configure and use the Timer Interface Module in common applications OBJECTIVES: -Identify the.
Seth Schwiethale James Crosetto James Ellison.  square pulse of ms, repeats every 20 ms  It is the same for both steering and acceleration 
Components of a typical full-featured microcontroller.
Components of Mechatronic Systems AUE 425 Week 2 Kerem ALTUN October 3, 2016.
CORDLESS MOUSE FEATURES BY TV REMOTE USING PIC MICROCONTROLLER
Application Case Study Christmas Lights Controller
EET 2261 Unit 13 Enhanced Capture Timer
Introduction to Motors, servos and steppers
Why are Timer Functions Important?
Application Case Study Security Camera Controller
Timers and Event Counters
ECE 3430 – Intro to Microcomputer Systems
Fri. Sept 29 Announcements
Mon. Oct 2 Announcements Quiz Postponed to Wednesday – still only on 2.a + 2.b Video lecture for 2.a posted Lab 6 experiment extension You must come to.
EMBEDDED SYSTEMS Unit 3.
Analog-to-Digital Converter
4-Integrating Peripherals in Embedded Systems
Fri. Oct 13 Announcements Lab practical next week
4.1 Chapter 4 Digital Transmission Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
AVR Addressing Modes Subject: Microcontoller & Interfacing
Oct 30 Announcements Code Marked and on Blackboard
Pulse Width Modulation (PWM) Motor Feedback - Shaft Encoder
RX 8-Bit Timer (TMR) 4/20/2011 Rev. 1.00
8-bit Timer/Counter0 with PWM
Pulse Width Modulation (PWM)
Introduction to Microprocessors and Microcontrollers
Digital Acquisition of Analog Signals – A Practical Guide
ECE 354 Computer Systems Lab II
ME 4447/6405 Pulse Width Modulation (PWM)
Programmable Interval timer 8253 / 8254
Programmable Interval timer 8253 / 8254
UNIT 19 PWM 로봇 SW 교육원 조용수.
AVR – ATmega103(ATMEL) Architecture & Summary
Lecture 12 Multi-Function Timer Pulse Unit 2 (MTU2a)
8253 – PROGRAMMABLE INTERVAL TIMER (PIT). What is a Timer? Timer is a specialized type of device that is used to measure timing intervals. Timers can.
MCO556 Timer System Exercise.
Freescale HCS12 微控制器 MC9S12DP256
Timer/Counter Timer/Counter 0 Timer/Counter 1 Timer/Counter 2 8 bit
Programmable Interval Timer
Presentation transcript:

Oct 30 Announcements Code Marked and on Blackboard This week: Mon 2:30 to 3:00pm, Tues 2:30 to 3:30 and W-F 1:30 to 3:00pm – opportunity to talk about code: earn 2 extra points on the coding part Bonus marked – will be posted today Will provide “270 style” feedback on multiple-choice questions.

Pulse Width Modulation (PWM) Module 3.E Pulse Width Modulation (PWM) Tim Rogers 2017

Learning Outcome #3 A: Clocks and Real Time Interrupt (RTI) “An ability to effectively utilize the wide variety of peripherals integrated into a contemporary microcontroller” A: Clocks and Real Time Interrupt (RTI) B: Analog-to-Digital Converter (ATD) C: Serial Peripheral Interface (SPI) D: Timer Module (TIM) E: Pulse Width Modulation (PWM) F: Serial Communications Interface (SCI) How?

PWM Function Relatively simple Outputs a digital waveform (i.e. either 0 or 1), with a specific frequency and duty cycle. All of these waves have the same frequency PWM allows you to program both duty cycle and frequency

PWM applications D.C Motor speed control LED backlight intensity Digital-to-analog conversion (w/ low-pass filter)

PWM encoding an analog signal Referred to as “natural sampling” – which is different than pulse-code modulation (PCM) Can be thought of as a one-bit A/D encoding system. The sampling frequency must be at least an order of magnitude higher than the highest frequency component of the input signal. The PWM output can be low-pass filtered to re-construct the analog signal.

PWM Encoding + Signal Reconstruction low-pass filter

9S12C PWM Features 6 independent channels with programmable period and duty cycle 8-bit resolution (6-channel mode) or 16-bit resolution (3-channel mode) Flexible clock generation – wide range of sampling frequencies Period and duty cycle registers are double-buffered (allows immediate PWM update) Output pulse polarity and alignment are programmable Emergency shutdown capability

Double Buffer One example: Video games Once screen is fully drawn, “kick” to display “Back” Buffer Visible Display Buffer CPU/GPUs generate new frames by clearing screen, then redrawing

Double Buffer PWM Example What if you are mid-period when you update the duty register? “Kick” new period/duty after current period ends PWM Example Back period register Period register Back duty register Duty register CPU Writes the new duty/period to the back register

Double Buffer PWM Example What if you are mid-period when you update the duty register? “Kick” new period/duty after current period ends PWM Example Back period register Period register Back duty register Duty register

PWM Module User Guide https://engineering.purdue.edu/ece362/Refs/9S12C_Refs/S12PWM8 B6CV1.pdf

PWM Block Diagram

Polarity bit per channel. Key Registers Enable bit per channel. 0=off 1=on Polarity bit per channel. 0=Active low 1=Active high

Key Registers One 8-bit PWMPER/Channel. PWM cycles in one period. One 8-bit PWMDTY/Channel PWM cycles in asserted (i.e. low if PPOL=0, high if PPOL=1)

PWM Boundary Conditions

Polarity Select and Duty Cycle Duty Cycle (%) = 100  (PWMDTY)/(PWMPER) Sampling Frequency = (Input Clock)/(PWMPER) “Left Aligned” Mode (default)

PWM Clock Selection Diagram

PWM Clock Selection Diagram Pre-scale divisor range is 1 to 128 PWM Clock Selection Diagram Clock source is the BUS CLOCK

indicates default mode after RESET PWM Registers PWMPRCLK (prescale clock select) PCKB2- PCKB0 (bits 6-4) – Clock B prescaler PCKA2-PCKA0 (bits 2-0) – Clock A prescaler “000” – bus clock “001” – bus clock/2 “010” – bus clock/4 “011” – bus clock/8 “100” – bus clock/16 “101” – bus clock/32 “110” – bus clock/64 “111” – bus clock/128 indicates default mode after RESET

N = D/2 Note that the range of SA is from A/2 to A/512 Clock A is the pre-scaled bus clock, and Clock SA is the scaled Clock A In general: N = D/2 where N is the value to load in PWSCALA for clock divisor D PWM Channels 0, 1, 4, and 5 can select either Clock A or Clock SA Note that the range of SA is from A/2 to A/512

indicates default mode after RESET PWM Registers PWMCLK (clock source select) PCLK5 (bit 5) – channel 5 clock select “0” – use “Clock A” “1” – use “Clock SA” PCLK4 (bit 4) – channel 4 clock select indicates default mode after RESET

indicates default mode after RESET PWM Registers PWMCLK (clock source select) PCLK1 (bit 1) – channel 1 clock select “0” – use “Clock A” “1” – use “Clock SA” PCLK0 (bit 0) – channel 0 clock select indicates default mode after RESET

PWM Registers PWMSCLA (Scale A Register) 8-bit programmable scale value for Clock A Clock SA = Clock A / (2  PWMSCLA) $00 is used to represent 25610

N = D/2 Note that the range of SB is from B/2 to B/512 Clock B is the pre-scaled bus clock, and Clock SB is the scaled Clock B In general: N = D/2 where N is the value to load in PWSCALB for clock divisor D PWM Channels 2 and 3 can select either Clock B or Clock SB Note that the range of SB is from B/2 to B/512

indicates default mode after RESET PWM Registers PWMCLK (clock source select) PCLK3 (bit 3) – channel 3 clock select “0” – use “Clock B” “1” – use “Clock SB” PCLK2 (bit 2) – channel 2 clock select indicates default mode after RESET

PWM Registers PWMSCLB (Scale B Register) 8-bit programmable scale value for Clock B Clock SB = Clock B / (2  PWMSCLB) $00 used to represent 25610

16-bit PWM Mode In 16-bit (“concatenated”) mode, the lower numbered channel is the high byte

indicates default mode after RESET PWM Registers PWMCTL (PWM control) CON45 (bit 6) – concatenate chs 4 & 5 “0” – channels 4 & 5 separate 8-bit “1” – channels 4 & 5 concatenated 16-bit CON23 (bit 5) – concatenate chs 2 & 3 “0” – channels 2 & 3 separate 8-bit “1” – channels 2 & 3 concatenated 16-bit CON01 (bit 4) – concatenate chs 0 & 1 “0” – channels 0 & 1 separate 8-bit “1” – channels 0 & 1 concatenated 16-bit indicates default mode after RESET

indicates default mode after RESET PWM Registers PWMCAE (center align enable) CAEx (bit x) – center align channel x “0” – operate ch x in left-aligned mode “1” – operate ch x in center-aligned mode Note: The center-aligned mode is useful for asynchronous motor control (e.g., for brushless DC motors) indicates default mode after RESET

Center-Aligned Mode Duty Cycle (%) = 100  (PWMDTY)/(PWMPER) Sampling Frequency = (Input Clock)/(2 PWMPER)

PWM Registers Port P (data register) DDRP (data direction register) bits 0-5 used for PWM output channels 0-5 PWM takes precedence over general-purpose I/O when enabled DDRP (data direction register) used to establish data direction of Port P bits when used for general-purpose I/O

Useful applications of the PWM include: D.C. motor speed control digital-to-analog conversion controlling the intensity of an LED all of the above none of the above

The double buffering feature of the PWM unit: prevents a PWM output from changing the instant the period or duty register is written provides a larger window of time during which the PWM registers can be written provides a larger window of time during which the PWM registers can be read all of the above none of the above

Given a 24 MHz bus clock, in 8-bit left-aligned mode the minimum frequency 50% duty cycle square wave that can be generated by the PWM unit is approximately: 0.15 Hz 1.50 Hz 15.00 Hz 150.0 Hz none of the above

Given a 24 MHz bus clock, in 8-bit left-aligned mode the maximum frequency 50% duty cycle square wave that can be generated by the PWM unit is: 12,000 Hz 120,000 Hz 1,200,000 Hz 12,000,000 Hz none of the above

Given a 24 MHz system clock with PWMPRCLK = 0110 00002 and PWMCLK = 0000 01002, the following combination of PWM register initializations will produce a 100 Hz (approx.), 50% duty cycle square wave on Channel 2 (assuming PWMPOL = 0000 01002 and PWMEN = 0000 01002): PWSCALB = 9310, PMWPER2 = 2010, PMWDTY2 = 1010 PWSCALB = 18610, PWMPER2 = 2010, PWMDTY2 = 1010 PWSCALB = 5010, PWMPER2 = 10010, PWMDTY2 = 5010 PWSCALB = 4910, PWMPER2 = 10010, PWMDTY2 = 5010 none of the above

PWM Initialization Example Assume the bus clock is 24 MHz and that the PWM is used to generate four left-aligned active high square wave signals: Ch 0 – 120,000 Hz – 10% duty cycle Ch 1 – 20,000 Hz – 30% duty cycle Ch 2 – 7,500 Hz – 70% duty cycle Ch 3 – 250 Hz – 85% duty cycle Determine the register initializations required to generate these four waveforms

PWM Initialization Example For Ch 0 (and Ch 1), need PWMPER = 100 to have a “resolution” of 1% in specifying the duty cycle  need input clock frequency of at least 120,000  100 = 12 MHz (conveniently, this is half the 9S212C32 bus clock freq.) The “scale” register for Clock A can be used to produce the input clock for Ch 1, which is 20,000  100 = 2 MHz  Clock SA = (Clock A)/6  PWSCALA = 3

PWM Initialization Example PWME = $0F (enables PWM Chs 0-3) PWMPER0 (ch 0 period) = 100 PWMPER1 (ch 1 period) = 100 PWMPER2 (ch 2 period) = 100 PWMPER3 (ch 3 period) = 100 the number of “clock ticks” that constitute one complete period of the PWM signal Will allow resolution of 1% Left- aligned mode 100

PWM Initialization Example PWMPOL = $0F (Chs 0-3 active high polarity) PWMDTY0 (Ch 0 duty cycle) = 10 (10%) PWMDTY1 (Ch 1 duty cycle) = 30 (30%) PWMDTY2 (Ch 2 duty cycle) = 70 (70%) PWMDTY3 (Ch 3 duty cycle) = 85 (85%) the number of “clock ticks” the PWM signal is asserted low (PPOL=0) or high (PPOL=1) Left- aligned mode 100

PWM Clock Selection Diagram 12 MHz 2 MHz 3 PWM Clock Selection Diagram 24 MHz

PWM Initialization Example For Ch 2 (and Ch 3), again need PWMPER = 100 to have a “resolution” of 1% in specifying the duty cycle  need input clock frequency of at least 7,500  100 = 750 KHz = 24 MHz / 32 The “scale” register for Clock B can be used to produce the input clock for Ch 3, which is 250  100 = 25 KHz  Clock SB = (Clock B) / 30  PWSCALB = 15

PWM Clock Selection Diagram 12 MHz 2 MHz 3 750 KHz 25 KHz PWM Clock Selection Diagram 15 24 MHz

PWM Clock Selection Diagram 12 MHz 2 MHz 3 750 KHz 25 KHz PWM Clock Selection Diagram 15 24 MHz PWMPRCLK = x101 x001

PWM Clock Selection Diagram 12 MHz 2 MHz 3 750 KHz 25 KHz PWM Clock Selection Diagram 15 PWMCLK = xxxx 1010 24 MHz

PWM Applications/Interfaces Simple “D/A converter” (single pole LPF) PWM Port Pin A higher order (active) LPF can also be used – the OP AMP provides isolation and additional output drive capability (not necessary if output load is high impedance)

PWM Applications/Interfaces Driving a small loudspeaker PWM Port Pin The loudspeaker will “mechanically” low-pass filter the PWM signal – note that an arc suppression diode is needed because the loudspeaker voice coil is an inductive load

PWM Applications/Interfaces Motor speed and direction control using an “H”-bridge (here, a pair of “half-H” bridges) Output Port Pin PWM Port Pin

“H Bridge” V+ V+ motor V- V-

“H Bridge” V+ V+ motor + - V- V-

“H Bridge” V+ V+ motor - + V- V-

ASM version ;************************************ ; Analyze the following code ; ; initialize PWM Ch 0 movb #$01,MODRR ; PT0 used as PWM Ch 0 output movb #$01,PWME ; enable PWM Ch 0 movb #$01,PWMPOL ; set active high polarity movb #$00,PWMCTL ; no concatenate (8-bit) movb #$00,PWMCAE ; left-aligned output mode movb #$FF,PWMPER0 ; set maximum 8-bit period (255) movb #$7F,PWMDTY0 ; set 50% duty cycle movb #$07,PWMPRCLK ; set Clock A = 24 MHz / 128 (max pre-scalar) movb #$01,PWMCLK ; select Clock SA for Ch 0 movb #$00,PWMSCLA ; set Clock SA scalar to 512 (max scalar) ; initialize TIM Ch 1 movb #$80,tscr1 ; enable TC1 movb #$07,tscr2 ; set TIM pre-scale factor to 128 (max) movb #$02,tios ; set TIM TC1 for Output Compare mode movw #$0004,tctl1 ; toggle PT1 on successful output compare movw #$0000,tc1 ; value for OC1 eloop bra eloop ; infinite (do-nothing) loop

C version /* Timer Channel 1 initialization */ TSCR2 = 0x07; // set TIM prescale to 128 TIOS = 0x02; // set TIM Channel 1 for output compare mode TCTL2 = 0x04; // toggle PT1 on successful output compare TC1 = 0x0000; // TCNT value that triggers output compare /* PWM Channel 0 initialization */ MODRR = 0x01; // route PWM Channel 0 to PT0 PWMCTL = 0x00; // no-concatenate (8-bit mode) PWMPOL = 0x01; // select active high polarity PWMCAE = 0x00; // select left-aligned output PWMPER0 = 0xFF; // maximum period = 255 PWMDTY0 = 0x7F; // approx 50% duty cycle PWMPRCLK = 0x07; // maximum pre-scalar = 128 PWMCLK = 0x01; // select scaled clock PWMSCLA = 0x00; // maximum scale value = 512 /* enable timer and PWM */ TSCR1 = 0x80; // enable TIM (output on PT1) PWME = 0x01; // enable PWM (output on PT0) /* main (infinite) loop */ for(;;) { } C version

Q1. The PT0 “toggle rate” (i. e Q1. The PT0 “toggle rate” (i.e., period, in ms) for the code as written will be approximately: 1.36 ms 2.73 ms 696 ms 699 ms none of the above

Q2. The PT1 “toggle rate” (i. e Q2. The PT1 “toggle rate” (i.e., period, in ms) for the code as written will be approximately: 1.36 ms 350 ms 696 ms 699 ms none of the above

Q3. The PT0 and PT1 “toggle rates” could be made to be identical (i. e Q3. The PT0 and PT1 “toggle rates” could be made to be identical (i.e., exactly in sync) by: changing the value in PWMDTY0 to $80 changing the value in PWMPER0 to $00 changing the value in PWMSCLA to $01 changing the value in TC1 to $0100 none of the above

Q4. Increasing the value loaded into TC1 (relative to its current value of $0000) would: do nothing except change the (initial) relative phase of the PT0 and PT1 port pin toggling increase the PT1 port pin toggle rate decrease the PT1 port pin toggle rate disable port pin PT1 from toggling none of the above