Code Warrior IDE Demo - Freescale Semiconductor

Code Warrior IDE Demo
Jason Lee – KLM MSG (2nd August 2008 - Smart Car Workshop)
TM
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
Code Warrior IDE Demo
- This presentation is to share with Smart Cars Participant on how to
use Code Warrior IDE to create and debugging a project. It
contains:
How
to create an IDE project
How to debug (LED Example)
How to boost the bus frequency (ON PLL Module)
How to drive a Motor (PWM module)
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
TM
Code Warrior IDE Demo
How to create an IDE project
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
TM
Create Code Warrior IDE Project
• From IDE main menu bar, select File > New . New window appears
a.
b.
c.
d.
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
Select HC(S)12 New Project
Wizard
In Project name, type name you
want
In Location, enter path to store the
project.
Click OK button then go to next
window.
TM
Create Code Warrior IDE Project
• New Project Wizard – Page 1 appears
Click Next to proceed next window
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
TM
Create Code Warrior IDE Project
• New Project Wizard – Page 2 appears
a.
b.
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
Select MC9S12DG128B under
derivatives.
Click Next to proceed next
window.
TM
Create Code Warrior IDE Project
• New Project Wizard – Page 3 appears
a.
b.
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
Select Assembly as the
languages use for this Demo.
Click Next to proceed next
window.
TM
Create Code Warrior IDE Project
• New Project Wizard – Page 4 appears
a.
b.
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
Select Absolute Assembly.
Click Next to proceed next
window.
TM
Create Code Warrior IDE Project
• New Project Wizard – Page 5 appears
a.
b.
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
Select TBDML.
Click Finish to start new project
TM
Create Code Warrior IDE Project
• system creates new project based on information you specified in New Project Wizard;
Project window appears, docked at left side of main window
To undock Project window,
double-click docking handle
(double gray lines at top of
window). To re-dock window,
right click in title bar of Project
Window, and select Docked.
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
TM
Create Code Warrior IDE Project
a.
b.
Expand Sources
Double click on the main.asm then source window will appear on the right side of the window.
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
TM
Source File Structure
Define ASM
Entry Point
Define Include file
Define Code
Start Address
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
Define Constant
Value
Main code
TM
Code Warrior IDE Demo
How to debug an IDE project (LED Example)
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
TM
Create LED Project example
• Copy and paste the following code to the main.asm file.
; export symbols
ABSENTRY Entry
; for absolute assembly: mark this as application entry point
; include derivative specific macros
INCLUDE 'mc9s12dg128.inc'
; variable/data section
RAMSTART:
EQU $1000
FLASHSTART: EQU $C000
StackPointer: EQU $1F00
ORG RAMSTART
;
ORG FLASHSTART
; code section
Entry:
LDS #StackPointer
MOVB #$FF,DDRB
MOVB #$AA,PORTB
LOOP:
COM PORTB
BRA LOOP
ORG $FFFE
DC.W Entry
; initialize the stack pointer
; Set PortB as Output Drive
; Set PortB Output $AA
; Reset Vector
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
TM
Compile & Debug LED Project example
• Select Project -> Compile or Press
CTRL+F7.
• Select Project -> Debug or Press
F5 to start debug.
Notes: codes will start download to
DUT when debug initiate. Make sure
you have connect the TBMDL and
EVB is power ON.
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
TM
Compile & Debug LED Project example
•Click OK then debugger will mass erase all NVM and download the program.
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
TM
Compile & Debug LED Project example
Continues Run / Step / Halt / Reset button
Assembly Code
Source Window
Register Window
Memory Window
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
TM
Code Warrior IDE Demo
How to boost the bus frequency (ON PLL Module)
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
TM
How to Monitor Bus Clock Frequency
• When Special Single Chip mode (BDM connected) is select, NECLK bit will
auto set to ‘0’. Hence MCU Bus Frequency will be output to PE4 pins.
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
TM
How to Turn ON Phase Lock Loop Module
• By default, the CRG register is map to address $0034 to $003F.
• More details on each register description, please refer to S12CRGV4.pdf
• Setting this register correctly will change the bus frequency as required.
Generally,
PLLCLK = 2 x OSCCLK x (SYNR+1)
(REFDIV+1)
Notes: If PLL is selected (PLLSEL=1), Bus Clock = PLLCLK/2
Bus Clock must not exceed the maximum operating system frequency.
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
TM
How to Turn ON Phase Lock Loop Module
• add the following codes to main.asm
BCLR PEAR,#$10
PLLON:
BSET PLLCTL,PLLCTL_AUTO
BSET PLLCTL,PLLCTL_PLLON
; Enable E clock to verify speed..
; Auto bit set
; PLLON bit set
MOVB #24,SYNR
MOVB #15,REFDV
LOOP_CRGFLG:
BRCLR CRGFLG,#$08,LOOP_CRGFLG
BSET CLKSEL,#$80
; Wait for lock bit setting..
; switch to PLL clock source .
Calculation for PLLCLK = 2 x OSCCLK X [(SYNR+1)/(REFDV+1)]
= 2 x 16MHz x [(24+1)/(15+1)]
= 50MHz
Since Bus Clock
= PLLCLK/2
= 25MHz
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
TM
How to Turn ON Phase Lock Loop Module
8MHz Bus Clock (PE4)
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
25MHz Bus Clock (PE4)
TM
Code Warrior IDE Demo
How to drive a Motor (PWM module)
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
TM
How to drive DC Motor (PWM module)
• A motor can be driven by just applying 2 different Voltage level. For example, +5V and GND.
• However this will constantly ON the motor and not able to control the speed of the motor.
+5V
GND
• A Pulse Width Modulation (PWM) signal need to be generate to control the speed of the motor.
Schematic Example for DC Motor Driving
MC9S12DG128B
H-Bridge
Driver
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
TM
How to drive Servo Motor (PWM module)
• A Servo is a small device that has an output shaft. This shaft can be positioned to specific angular
positions by sending the servo a coded signal.
• As you can see in the picture below, the duration of the pulse dictates the angle of the output shaft
(shown as the green circle with the arrow). Note that the times here are illustrative, and the actual
timings depend on the motor manufacturer. The principle, however, is the same.
Example of coded signal to turn the Servo Motor
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
TM
How to Turn ON PWM Module
• By default, the PWM register is map to address $00A0 to $00C7.
• More details on each register description, please refer to
S12PWM8B8CV1.pdf
• Setting this register correctly will get the desire PWM output.
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
TM
How to Turn ON PWM Module
• add the following codes to main.asm
CLR
MOVB
MOVB
MOVB
BSET
PWME
#$01,PWMPRCLK
#$FF,PWMPER0
#$7F,PWMDTY0
PWME,#$01
; Disable PWM module
; ClkA = BusClk / 2 = 25MHz / 2 = 12.5MHz
; PWMFREQUENCY = 12.5MHz / (256) = 48.8KHz
; Duty Cycle = (PWMPER0-PWMDTY0)/PWMPER0
; PWM0 ON
Notes: different frequency and
duty cycle can be change by
modifying the, PWMPRCLK,
PWMPER0 and PWMDTY0
register. It also can be done by
using different clock source.
Example of PWM0 output signal
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
TM
Any Questions?
Thank You!!!
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2008.
TM