MC9S08JM60 PDF
MC9S08JM60 PDF
Addendum
Document Number: QFN_Addendum
Rev. 0, 07/2014
Freescale Semiconductor, Inc., 2014. All rights reserved.
This addendum provides the changes to the 98A case outline numbers for products covered in this book.
Case outlines were changed because of the migration from gold wire to copper wire in some packages. See
the table below for the old (gold wire) package versus the new (copper wire) package.
To view the new drawing, go to Freescale.com and search on the new 98A package number for your
device.
For more information about QFN package use, see EB806: Electrical Connection Recommendations for
the Exposed Pad on QFN and DFN Packages.
Addendum for New QFN
Package Migration
Addendum for New QFN Package Migration, Rev. 0
Freescale Semiconductor 2
Part Number Package Description
Original (gold wire)
package document number
Current (copper wire)
package document number
MC68HC908JW32 48 QFN 98ARH99048A 98ASA00466D
MC9S08AC16
MC9S908AC60
MC9S08AC128
MC9S08AW60
MC9S08GB60A
MC9S08GT16A
MC9S08JM16
MC9S08JM60
MC9S08LL16
MC9S08QE128
MC9S08QE32
MC9S08RG60
MCF51CN128
MC9RS08LA8 48 QFN 98ARL10606D 98ASA00466D
MC9S08GT16A 32 QFN 98ARH99035A 98ASA00473D
MC9S908QE32 32 QFN 98ARE10566D 98ASA00473D
MC9S908QE8 32 QFN 98ASA00071D 98ASA00736D
MC9S08JS16 24 QFN 98ARL10608D 98ASA00734D
MC9S08QB8
MC9S08QG8 24 QFN 98ARL10605D 98ASA00474D
MC9S08SH8 24 QFN 98ARE10714D 98ASA00474D
MC9RS08KB12 24 QFN 98ASA00087D 98ASA00602D
MC9S08QG8 16 QFN 98ARE10614D 98ASA00671D
MC9RS08KB12 8 DFN 98ARL10557D 98ASA00672D
MC9S08QG8
MC9RS08KA2 6 DFN 98ARL10602D 98ASA00735D
HCS08
Microcontrollers
freescale.com
MC9S08JM60
MC9S08JM32
Data Sheet
MC9S08JM60
Rev. 3
1/2009
MC9S08JM60 Series Features
8-Bit HCS08 Central Processor Unit (CPU)
48-MHz HCS08 CPU (central processor unit)
24-MHz internal bus frequency
HC08 instruction set with added BGND instruction
Background debugging system
Breakpoint capability to allow single breakpoint
setting during in-circuit debugging (plus two more
breakpoints in on-chip debug module)
In-circuit emulator (ICE) debug module containing
two comparators and nine trigger modes. Eight
deep FIFO for storing change-of-flow addresses
and event-only data. Debug module supports both
tag and force breakpoints.
Support for up to 32 interrupt/reset sources
Memory Options
Up to 60 KB of on-chip in-circuit programmable
flash memory with block protection and security
options
Up to 4 KB of on-chip RAM
256 bytes of USB RAM
Clock Source Options
Clock source options include crystal, resonator,
external clock
MCG (multi-purpose clock generator) PLL and
FLL; internal reference clock with trim adjustment
System Protection
Optional computer operating properly (COP) reset
with option to run from independent 1-kHz internal
clock source or the bus clock
Low-voltage detection with reset or interrupt
Illegal opcode detection with reset
Illegal address detection with reset
Power-Saving Modes
Wait plus two stops
Peripherals
USB USB 2.0 full-speed (12 Mbps) device
controller with dedicated on-chip USB transceiver,
3.3-V regulator and USBDP pull-up resister;
supports control, interrupt, isochronous, and bulk
transfers; supports endpoint 0 and up to 6
additional endpoints; endpoints 5 and 6 can be
combined to provide double buffering capability
ADC 12-channel, 12-bit analog-to-digital
converter with automatic compare function;
internal temperature sensor
ACMP Analog comparator with option to
compare to internal reference; operation in stop3
mode
SCI Two serial communications interface
modules with optional 13-bit break LIN extensions
SPI Two 8- or 16-bit selectable serial peripheral
interface modules with a receive data buffer
hardware match function
IIC Inter-integrated circuit bus module to
operate at up to 100 kbps with maximum bus
loading; multi-master operation; programmable
slave address; interrupt-driven byte-by-byte data
transfer; 10-bit addressing and broadcast modes
support
Timers One 2-channel and one 6-channel
16-bit timer/pulse-width modulator (TPM)
modules: Selectable input capture, output
compare, and edge-aligned PWM capability on
each channel. Each timer module may be
configured for buffered, centered PWM (CPWM)
on all channels
KBI 8-pin keyboard interrupt module
RTC Real-time counter with binary- or
decimal-based prescaler
Input/Output
Up to 51 general-purpose input/output pins
Software selectable pullups on ports when used
as inputs
Software selectable slew rate control on ports
when used as outputs
Software selectable drive strength on ports when
used as outputs
Master reset pin and power-on reset (POR)
Internal pullup on RESET, IRQ, and BKGD/MS
pins to reduce customer system cost
Package Options
64-pin quad flat package (QFP)
64-pin low-profile quad flat package (LQFP)
48-pin quad flat no-lead (QFN)
44-pin low-profile quad flat package (LQFP)
MC9S08JM60 Series Data Sheet
Covers MC9S08JM60
MC9S08JM32
MC9S08JM60
Rev. 3
1/2009
Revision History
To provide the most up-to-date information, the revision of our documents on the World Wide Web will be
the most current. Your printed copy may be an earlier revision. To verify you have the latest information
available, refer to:
http://freescale.com/
The following revision history table summarizes changes contained in this document.
Revision
Number
Revision
Date
Description of Changes
1 11/27/2007 Initial release
2 3/4/2008
Changed the location of R
S
to connect to EXTAL
in Figure 2-4.
Changed port rise and fall time in Table A-13.
Added DC injection current and RAM retention voltage in Table A-6.
Deleted note on 625 ns of item 17 in Table A-12.
Moved Bandgap Voltage Reference item from Table A-8 to Table A-6.
Added one paragraph on how to improve accuracy to Section 10.1.1.5,
Temperature Sensor.
3 1/21/2009
Changed the V
TEMP25
from 1.396 mV to 1.396 V in Table A-10.
Complete the EMC data in Section A.15, EMC Performance.
Revised the Typo in Table 11-4.
This product incorporates SuperFlash
ILOP
CME
POR
BDFR
Watchdog timer
Low-voltage detect
External pin
Illegal opcode
Loss of clock
Power-on-reset
BDM-forced reset
Table 5-1. Vector Summary (from Lowest to Highest Priority) (continued)
Vector
Number
Address
(High/Low)
Vector Name Module Source Enable Description
Chapter 5 Resets, Interrupts, and System Configuration
MC9S08JM60 Series Data Sheet, Rev. 3
72 Freescale Semiconductor
5.7 Reset, Interrupt, and System Control Registers and Control Bits
One 8-bit register in the direct page register space and eight 8-bit registers in the high-page register space
are related to reset and interrupt systems.
Refer to the direct-page register summary in Chapter 4, Memory, of this data sheet for the absolute
address assignments for all registers. This section refers to registers and control bits only by their names.
A Freescale-provided equate or header file is used to translate these names into the appropriate absolute
addresses.
Some control bits in the SOPT1 and SPMSC2 registers are related to modes of operation. Although brief
descriptions of these bits are provided here, the related functions are discussed in greater detail in
Chapter 3, Modes of Operation.
5.7.1 Interrupt Pin Request Status and Control Register (IRQSC)
This direct page register includes status and control bits, which are used to configure the IRQ function,
report status, and acknowledge IRQ events.
7 6 5 4 3 2 1 0
R 0
IRQPDD IRQEDG IRQPE
IRQF 0
IRQIE IRQMOD
W IRQACK
Reset 0 0 0 0 0 0 0 0
= Unimplemented or Reserved
Figure 5-2. Interrupt Request Status and Control Register (IRQSC)
Table 5-2. IRQSC Register Field Descriptions
Field Description
6
IRQPDD
Interrupt Request (IRQ) Pull Device Disable This read/write control bit is used to disable the internal pullup
device when the IRQ pin is enabled (IRQPE = 1) allowing for an external device to be used.
0 IRQ pull device enabled if IRQPE = 1.
1 IRQ pull device disabled if IRQPE = 1.
5
IRQEDG
Interrupt Request (IRQ) Edge Select This read/write control bit is used to select the polarity of edges or
levels on the IRQ pin that cause IRQF to be set. The IRQMOD control bit determines whether the IRQ pin is
sensitive to both edges and levels or only edges. When the IRQ pin is enabled as the IRQ input and is configured
to detect rising edges, the optional pullup resistor is re-configured as an optional pulldown resistor.
0 IRQ is falling edge or falling edge/low-level sensitive.
1 IRQ is rising edge or rising edge/high-level sensitive.
4
IRQPE
IRQ Pin Enable This read/write control bit enables the IRQ pin function. When this bit is set the IRQ pin can
be used as an interrupt request.
0 IRQ pin function is disabled.
1 IRQ pin function is enabled.
3
IRQF
IRQ Flag This read-only status bit indicates when an interrupt request event has occurred.
0 No IRQ request.
1 IRQ event detected.
Chapter 5 Resets, Interrupts, and System Configuration
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 73
5.7.2 System Reset Status Register (SRS)
This register includes seven read-only status flags to indicate the source of the most recent reset. When a
debug host forces reset by writing 1 to BDFR in the SBDFR register, none of the status bits in SRS will
be set. Writing any value except 0x55 and 0xAA in sequence to this register address causes the MCU reset
with the source of COP. The reset state of these bits depends on what caused the MCU to reset.
2
IRQACK
IRQ Acknowledge This write-only bit is used to acknowledge interrupt request events (write 1 to clear IRQF).
Writing 0 has no meaning or effect. Reads always return 0. If edge-and-level detection is selected (IRQMOD = 1),
IRQF cannot be cleared while the IRQ pin remains at its asserted level.
1
IRQIE
IRQ Interrupt Enable This read/write control bit determines whether IRQ events generate an interrupt
request.
0 Interrupt request when IRQF set is disabled (use polling).
1 Interrupt requested whenever IRQF = 1.
0
IRQMOD
IRQ Detection Mode This read/write control bit selects either edge-only detection or edge-and-level
detection. See Section 5.5.2.2, Edge and Level Sensitivity, for more details.
0 IRQ event on falling/rising edges only.
1 IRQ event on falling/rising edges and low/high levels.
7 6 5 4 3 2 1 0
R POR PIN COP ILOP 0 LOC LVD
W Writing any value to SRS address clears COP watchdog timer.
POR 1 0 0 0 0 0 1 0
LVR: U 0 0 0 0 0 1 0
Any other
reset:
0
(1) (1) (1)
0
(1)
0 0
U = Unaffected by reset
1
Any of these reset sources that are active at the time of reset will cause the corresponding bit(s) to be set; bits corresponding
to sources that are not active at the time of reset will be cleared.
Figure 5-3. System Reset Status (SRS)
Table 5-3. SRS Register Field Descriptions
Field Description
7
POR
Power-On Reset Reset was caused by the power-on detection logic. Because the internal supply voltage was
ramping up at the time, the low-voltage reset (LVR) status bit is also set to indicate that the reset occurred while
the internal supply was below the LVR threshold.
0 Reset not caused by POR.
1 POR caused reset.
6
PIN
External Reset Pin Reset was caused by an active-low level on the external reset pin.
0 Reset not caused by external reset pin.
1 Reset came from external reset pin.
Table 5-2. IRQSC Register Field Descriptions (continued)
Field Description
Chapter 5 Resets, Interrupts, and System Configuration
MC9S08JM60 Series Data Sheet, Rev. 3
74 Freescale Semiconductor
5.7.3 System Background Debug Force Reset Register (SBDFR)
This register contains a single write-only control bit. A serial background command such as
WRITE_BYTE must be used to write to SBDFR. Attempts to write this register from a user program are
ignored. Reads always return 0x00.
5.7.4 System Options Register 1 (SOPT1)
This register may be read at any time. Bits 3 and 2 are unimplemented and always read 0. This is a
write-once register so only the first write after reset is honored. Any subsequent attempt to write to SOPT
(intentionally or unintentionally) is ignored to avoid accidental changes to these sensitive settings. SOPT
5
COP
Computer Operating Properly (COP) Watchdog Reset was caused by the COP watchdog timer timing out.
This reset source may be blocked by COPE = 0.
0 Reset not caused by COP timeout.
1 Reset caused by COP timeout.
4
ILOP
Illegal Opcode Reset was caused by an attempt to execute an unimplemented or illegal opcode. The STOP
instruction is considered illegal if stop is disabled by STOPE = 0 in the SOPT register. The BGND instruction is
considered illegal if active background mode is disabled by ENBDM = 0 in the BDCSC register.
0 Reset not caused by an illegal opcode.
1 Reset caused by an illegal opcode.
2
LOC
Loss-of-Clock Reset Reset was caused by a loss of external clock.
0 Reset not caused by a loss of external clock.
1 Reset caused by a loss of external clock.
1
LVD
Low Voltage Detect If the LVD is enable with the LVDRE or LVDSE bit is set, and the supply drops below the
LVD trip voltage, an LVD reset will occur. This bit is also set by POR.
0 Reset not caused by LVD trip or POR.
1 Reset caused by LVD trip or POR.
7 6 5 4 3 2 1 0
R 0 0 0 0 0 0 0 0
W BDFR
1
Reset 0 0 0 0 0 0 0 0
= Unimplemented or Reserved
1
BDFR is writable only through serial background debug commands, not from user programs.
Figure 5-4. System Background Debug Force Reset Register (SBDFR)
Table 5-4. SBDFR Register Field Descriptions
Field Description
0
BDFR
Background Debug Force Reset A serial background command such as WRITE_BYTE may be used to
allow an external debug host to force a target system reset. Writing logic 1 to this bit forces an MCU reset. This
bit cannot be written from a user program.
Table 5-3. SRS Register Field Descriptions (continued)
Field Description
Chapter 5 Resets, Interrupts, and System Configuration
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 75
must be written during the users reset initialization program to set the desired controls even if the desired
settings are the same as the reset settings.
7 6 5 4 3 2 1 0
R
COPT STOPE
0 0
W
Reset 1 1 0 1 0 0 1 1
= Unimplemented or Reserved
Figure 5-5. System Options Register (SOPT1)
Table 5-5. SOPT1 Register Field Descriptions
Field Description
7:6
COPT[1:0]
COP Watchdog Timeout These write-once bits select the timeout period of the COP. COPT along with
COPCLKS in SOPT2 defines the COP timeout period. See Table 5-6.
5
STOPE
Stop Mode Enable This write-once bit defaults to 0 after reset, which disables stop mode. If stop mode is
disabled and a user program attempts to execute a STOP instruction, an illegal opcode reset is forced.
0 Stop mode disabled.
1 Stop mode enabled.
Table 5-6. COP Configuration Options
Control Bits
Clock Source
COP Window
1
Opens
(COPW = 1)
1
Windowed COP operation requires the user to clear the COP timer in the last 25% of the selected timeout period. This column
displays the minimum number of clock counts required before the COP timer can be reset when in windowed COP mode
(COPW= 1).
COP Overflow Count
COPCLKS COPT[1:0]
N/A 0:0 N/A N/A COP is disabled
0 0:1 1 kHz LPO
clock
N/A
2
5
cycles (32 ms
2
)
2
Values shown in milliseconds based on t
LPO
= 1 ms. See t
LPO
in the appendix Section A.12.1, Control Timing, for the
tolerance of this value.
0 1:0 1 kHz LPO
clock
N/A
2
8
cycles (256 ms
1
)
0 1:1 1 kHz LPO
clock
N/A
2
10
cycles (1.024 s
1
)
1 0:1
BUSCLK 6144 cycles
2
13
cycles
1 1:0
BUSCLK 49,152 cycles
2
16
cycles
1 1:1
BUSCLK 196,608 cycles
2
18
cycles
Chapter 5 Resets, Interrupts, and System Configuration
MC9S08JM60 Series Data Sheet, Rev. 3
76 Freescale Semiconductor
5.7.5 System Options Register 2 (SOPT2)
5.7.6 System Device Identification Register (SDIDH, SDIDL)
This read-only register is included so host development systems can identify the HCS08 derivative and
revision number. This allows the development software to recognize where specific memory blocks,
registers, and control bits are located in a target MCU.
7 6 5 4 3 2 1 0
R
COPCLKS
1
COPW
1
0 0 0
SPI1FE SPI2FE ACIC
W
Reset 0 0 0 0 0 1 1 0
= Unimplemented or Reserved
1
This bit can be written only one time after reset. Additional writes are ignored.
Figure 5-6. System Options Register 2 (SOPT2)
Table 5-7. SOPT2 Register Field Descriptions
Field Description
7
COPCLKS
COP Watchdog Clock Select This write-once bit selects the clock source of the COP watchdog.
0 Internal 1 kHz LPO clock is source to COP.
1 Bus clock is source to COP.
6
COPW
COP Window This write-once bit selects the COP operation mode. When set, the 0x55-0xAA write sequence
to the SRS register must occur in the last 25% of the selected period. Any write to the SRS register during the
first 75% of the selected period will reset the MCU.
0 Normal COP operation.
1 Window COP operation.
2
SPI1FE
SPI1 Ports Input Filter Enable
0 Disable input filter on SPI1 port pins to allow for higher maximum SPI baud rate.
1 Enable input filter on SPI1 port pins to eliminate noise and restrict maximum SPI baud rate.
1
SPI2FE
SPI2 Ports Input Filter Enable
0 Disable input filter on SPI2 port pins to allow for higher maximum SPI baud rate.
1 Enable input filter on SPI2 port pins to eliminate noise and restrict maximum SPI baud rate.
0
ACIC
Analog Comparator to Input Capture Enable This bit connects the output of ACMP to TPM input channel 0.
0 ACMP output not connected to TPM input channel 0.
1 ACMP output connected to TPM input channel 0.
7 6 5 4 3 2 1 0
R ID11 ID10 ID9 ID8
W
Reset 0 0 0 0
= Unimplemented or Reserved
Figure 5-7. System Device Identification Register High (SDIDH)
Chapter 5 Resets, Interrupts, and System Configuration
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 77
5.7.7 System Power Management Status and Control 1 Register
(SPMSC1)
This high page register contains status and control bits to support the low-voltage detect function, and to
enable the bandgap voltage reference for use by the ADC module. This register must be written during the
users reset initialization program to set the desired controls even if the desired settings are the same as the
reset settings.
Table 5-8. SDIDH Register Field Descriptions
Field Description
7:4
Reserved
Bits 7:4 are reserved. Reading these bits will result in an indeterminate value; writes have no effect.
3:0
ID[11:8]
Part Identification Number Each derivative in the HCS08 Family has a unique identification number. The
MC9S08JM60 Series is hard coded to the value 0x016. See also ID bits in Table 5-9.
7 6 5 4 3 2 1 0
R ID7 ID6 ID5 ID4 ID3 ID2 ID1 ID0
W
Reset 0 0 0 1 0 1 1 0
= Unimplemented or Reserved
Figure 5-8. System Device Identification Register Low (SDIDL)
Table 5-9. SDIDL Register Field Descriptions
Field Description
7:0
ID[7:0]
Part Identification Number Each derivative in the HCS08 Family has a unique identification number. The
MC9S08JM60 Series is hard coded to the value 0x016. See also ID bits in Table 5-8.
7 6 5 4 3 2 1 0
R LVWF
1
0
LVWIE LVDRE
2
LVDSE LVDE
2
0
BGBE
W LVWACK
Reset: 0 0 0 1 1 1 0 0
= Unimplemented or Reserved
1
LVWF will be set in the case when V
Supply
transitions below the trip point or after reset and V
Supply
is already below V
LVW
.
2
This bit can be written only one time after reset. Additional writes are ignored.
Figure 5-9. System Power Management Status and Control 1 Register (SPMSC1)
Chapter 5 Resets, Interrupts, and System Configuration
MC9S08JM60 Series Data Sheet, Rev. 3
78 Freescale Semiconductor
5.7.8 System Power Management Status and Control 2 Register
(SPMSC2)
This register is used to report the status of the low voltage warning function, and to configure the stop
mode behavior of the MCU.
Table 5-10. SPMSC1 Register Field Descriptions
Field Description
7
LVWF
Low-Voltage Warning Flag The LVWF bit indicates the low-voltage warning status.
0 low-voltage warning is not present.
1 low-voltage warning is present or was present.
6
LVWACK
Low-Voltage Warning Acknowledge If LVWF = 1, a low-voltage condition has occurred. To acknowledge this
low-voltage warning, write 1 to LVWACK, which will automatically clear LVWF to 0 if the low-voltage warning is
no longer present.
5
LVWIE
Low-Voltage Warning Interrupt Enable This bit enables hardware interrupt requests for LVWF.
0 Hardware interrupt disabled (use polling).
1 Request a hardware interrupt when LVWF = 1.
4
LVDRE
Low-Voltage Detect Reset Enable This write-once bit enables LVD events to generate a hardware reset
(provided LVDE = 1).
0 LVD events do not generate hardware resets.
1 Force an MCU reset when an enabled low-voltage detect event occurs.
3
LVDSE
Low-Voltage Detect Stop Enable Provided LVDE = 1, this read/write bit determines whether the low-voltage
detect function operates when the MCU is in stop mode.
0 Low-voltage detect disabled during stop mode.
1 Low-voltage detect enabled during stop mode.
2
LVDE
Low-Voltage Detect Enable This write-once bit enables low-voltage detect logic and qualifies the operation
of other bits in this register.
0 LVD logic disabled.
1 LVD logic enabled.
0
BGBE
Bandgap Buffer Enable This bit enables an internal buffer for the bandgap voltage reference for use by
ACMP or ADC module on one of its internal channels.
0 Bandgap buffer disabled.
1 Bandgap buffer enabled.
7 6 5 4 3 2 1 0
R 0 0
LVDV LVWV
PPDF 0 0
PPDC
1
W PPDACK
Power-on Reset: 0 0 0 0 0 0 0 0
LVD Reset: 0 0 u u 0 0 0 0
Any other Reset: 0 0 u u 0 0 0 0
= Unimplemented or Reserved u = Unaffected by reset
1
This bit can be written only one time after reset. Additional writes are ignored.
Figure 5-10. System Power Management Status and Control 2 Register (SPMSC2)
Chapter 5 Resets, Interrupts, and System Configuration
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 79
Table 5-11. SPMSC2 Register Field Descriptions
Field Description
5
LVDV
Low-Voltage Detect Voltage Select This bit selects the low voltage detect (LVD) trip point setting.It also
selects the warning voltage range. See Table 5-12.
4
LVWV
Low-Voltage Warning Voltage Select This bit selects the low voltage warning (LVW) trip point voltage. See
Table 5-12.
3
PPDF
Partial Power Down Flag This read-only status bit indicates that the MCU has recovered from stop2 mode.
0 MCU has not recovered from stop2 mode.
1 MCU recovered from stop2 mode.
2
PPDACK
Partial Power Down Acknowledge Writing a 1 to PPDACK clears the PPDF bit
0
PPDC
Partial Power Down Control This write-once bit controls whether stop2 or stop3 mode is selected.
0 Stop3 mode enabled.
1 Stop2, partial power down, mode enabled.
Table 5-12. LVD and LVW trip point typical values
1
1
See Appendix A, Electrical Characteristics, for minimum and maximum values.
LVDV:LVWV LVW Trip Point LVD Trip Point
0:0 V
LVW0
= 2.74 V V
LVD0
= 2.56 V
0:1 V
LVW1
= 2.92 V
1:0 V
LVW2
= 4.3 V V
LVD1
= 4.0 V
1:1 V
LVW3
= 4.6 V
Chapter 5 Resets, Interrupts, and System Configuration
MC9S08JM60 Series Data Sheet, Rev. 3
80 Freescale Semiconductor
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 81
Chapter 6
Parallel Input/Output
6.1 Introduction
This chapter explains software controls related to parallel input/output (I/O). The MC9S08JM60 has seven
I/O ports which include a total of 51 general-purpose I/O pins. See Chapter 2, Pins and Connections, for
more information about the logic and hardware aspects of these pins.
Not all pins are available on all devices. See Table 2-1 to determine which functions are available for a
specific device.
Many of the I/O pins are shared with on-chip peripheral functions, as shown in Table 2-1. The peripheral
modules have priority over the I/Os, so when a peripheral is enabled, the I/O functions are disabled.
After reset, the shared peripheral functions are disabled so that the pins are controlled by the parallel I/O.
All of the parallel I/O are configured as inputs (PTxDDn = 0). The pin control functions for each pin are
configured as follows: slew rate control enabled (PTxSEn = 1), low drive strength selected (PTxDSn = 0),
and internal pullups disabled (PTxPEn = 0).
NOTE
Not all general-purpose I/O pins are available on all packages. To avoid
extra current drain from floating input pins, the users reset initialization
routine in the application program must either enable on-chip pullup devices
or change the direction of unconnected pins to outputs so the pins do not
float.
6.2 Port Data and Data Direction
Reading and writing of parallel I/O is done through the port data registers. The direction, input or output,
is controlled through the port data direction registers. The parallel I/O port function for an individual pin
is illustrated in the block diagram below.
Chapter 6 Parallel Input/Output
MC9S08JM60 Series Data Sheet, Rev. 3
82 Freescale Semiconductor
Figure 6-1. Parallel I/O Block Diagram
The data direction control bits determine whether the pin output driver is enabled, and they control what
is read for port data register reads. Each port pin has a data direction register bit. When PTxDDn = 0, the
corresponding pin is an input and reads of PTxD return the pin value. When PTxDDn = 1, the
corresponding pin is an output and reads of PTxD return the last value written to the port data register.
When a peripheral module or system function is in control of a port pin, the data direction register bit still
controls what is returned for reads of the port data register, even though the peripheral system has
overriding control of the actual pin direction.
When a shared analog function is enabled for a pin, all digital pin functions are disabled. A read of the port
data register returns a value of 0 for any bits which have shared analog functions enabled. In general,
whenever a pin is shared with both an alternate digital function and an analog function, the analog function
has priority such that if both the digital and analog functions are enabled, the analog function controls the
pin.
It is a good programming practice to write to the port data register before changing the direction of a port
pin to become an output. This ensures that the pin will not be driven momentarily with an old data value
that happened to be in the port data register.
6.3 Pin Control
The pin control registers are located in the high page register block of the memory. These registers are used
to control pullups, slew rate, and drive strength for the I/O pins. The pin control registers operate
independently of the parallel I/O registers.
Q D
Q D
1
0
Port Read
PTxDDn
PTxDn
Output Enable
Output Data
Input Data Synchronizer
Data
BUSCLK
Chapter 6 Parallel Input/Output
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 83
6.3.1 Internal Pullup Enable
An internal pullup device can be enabled for each port pin by setting the corresponding bit in one of the
pullup enable registers (PTxPEn). The pullup device is disabled if the pin is configured as an output by the
parallel I/O control logic or any shared peripheral function regardless of the state of the corresponding
pullup enable register bit. The pullup device is also disabled if the pin is controlled by an analog function.
6.3.2 Output Slew Rate Control Enable
Slew rate control can be enabled for each port pin by setting the corresponding bit in one of the slew rate
control registers (PTxSEn). When enabled, slew control limits the rate at which an output can transition in
order to reduce EMC emissions. Slew rate control has no effect on pins which are configured as inputs.
6.3.3 Output Drive Strength Select
An output pin can be selected to have high output drive strength by setting the corresponding bit in one of
the drive strength select registers (PTxDSn). When high drive is selected a pin is capable of sourcing and
sinking greater current. Even though every I/O pin can be selected as high drive, the user must ensure that
the total current source and sink limits for the chip are not exceeded. Drive strength selection is intended
to affect the DC behavior of I/O pins. However, the AC behavior is also affected. High drive allows a pin
to drive a greater load with the same switching speed as a low drive enabled pin into a smaller load.
Because of this the EMC emissions may be affected by enabling pins as high drive.
6.4 Pin Behavior in Stop Modes
Depending on the stop mode, I/O functions differently as the result of executing a STOP instruction. An
explanation of I/O behavior for the various stop modes follows:
Stop2 mode is a partial power-down mode, whereby I/O latches are maintained in their state as
before the STOP instruction was executed. CPU register status and the state of I/O registers must
be saved in RAM before the STOP instruction is executed to place the MCU in stop2 mode. Upon
recovery from stop2 mode, before accessing any I/O, the user must examine the state of the PPDF
bit in the SPMSC2 register. If the PPDF bit is 0, I/O must be initialized as if a power on reset had
occurred. If the PPDF bit is 1, I/O data previously stored in RAM, before the STOP instruction was
executed, peripherals may require being initialized and restored to their pre-stop condition. The
user must then write a 1 to the PPDACK bit in the SPMSC2 register. Access to I/O is now permitted
again in the users application program.
In stop3 mode, all I/O is maintained because internal logic circuity stays powered up. Upon
recovery, normal I/O function is available to the user.
6.5 Parallel I/O and Pin Control Registers
This section provides information about the registers associated with the parallel I/O ports and pin control
functions. These parallel I/O registers are located in page zero of the memory map and the pin control
registers are located in the high page register section of memory.
Chapter 6 Parallel Input/Output
MC9S08JM60 Series Data Sheet, Rev. 3
84 Freescale Semiconductor
Refer to tables in Chapter 4, Memory, for the absolute address assignments for all parallel I/O and pin
control registers. This section refers to registers and control bits only by their names. A Freescale-provided
equate or header file normally is used to translate these names into the appropriate absolute addresses.
6.5.1 Port A I/O Registers (PTAD and PTADD)
Port A parallel I/O function is controlled by the registers listed below.
6.5.2 Port A Pin Control Registers (PTAPE, PTASE, PTADS)
In addition to the I/O control, port A pins are controlled by the registers listed below.
7 6 5 4 3 2 1 0
R
PTAD5 PTAD4 PTAD3 PTAD2 PTAD1 PTAD0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-2. Port A Data Register (PTAD)
Table 6-1. PTAD Register Field Descriptions
Field Description
5:0
PTAD[5:0]
Port A Data Register Bits For port A pins that are inputs, reads return the logic level on the pin. For port A
pins that are configured as outputs, reads return the last value written to this register.
Writes are latched into all bits of this register. For port A pins that are configured as outputs, the logic level is
driven out the corresponding MCU pin.
Reset forces PTAD to all 0s, but these 0s are not driven out the corresponding pins because reset also configures
all port pins as high-impedance inputs with pullups disabled.
7 6 5 4 3 2 1 0
R
PTADD5 PTADD4 PTADD3 PTADD2 PTADD1 PTADD0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-3. Data Direction for Port A Register (PTADD)
Table 6-2. PTADD Register Field Descriptions
Field Description
5:0
PTADD[5:0]
Data Direction for Port A Bits These read/write bits control the direction of port A pins and what is read for
PTAD reads.
0 Input (output driver disabled) and reads return the pin value.
1 Output driver enabled for port A bit n and PTAD reads return the contents of PTADn.
Chapter 6 Parallel Input/Output
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 85
7 6 5 4 3 2 1 0
R
PTAPE5 PTAPE4 PTAPE3 PTAPE2 PTAPE1 PTAPE0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-4. Internal Pullup Enable for Port A (PTAPE)
Table 6-3. PTADD Register Field Descriptions
Field Description
[5:0]
PTAPE[5:0]
Internal Pullup Enable for Port A Bits Each of these control bits determines if the internal pullup device is
enabled for the associated PTA pin. For port A pins that are configured as outputs, these bits have no effect and
the internal pullup devices are disabled.
0 Internal pullup device disabled for port A bit n.
1 Internal pullup device enabled for port A bit n.
7 6 5 4 3 2 1 0
R
PTASE5 PTASE4 PTASE3 PTASE2 PTASE1 PTASE0
W
Reset 0 0 1 1 1 1 1 1
Figure 6-5. Output Slew Rate Control Enable for Port A (PTASE)
Table 6-4. PTASE Register Field Descriptions
Field Description
5:0
PTASE[5:0]
Output Slew Rate Control Enable for Port A Bits Each of these control bits determine whether output slew
rate control is enabled for the associated PTA pin. For port A pins that are configured as inputs, these bits have
no effect.
0 Output slew rate control disabled for port A bit n.
1 Output slew rate control enabled for port A bit n.
7 6 5 4 3 2 1 0
R
PTADS5 PTADS4 PTADS3 PTADS2 PTADS1 PTADS0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-6. Output Drive Strength Selection for Port A (PTASE)
Table 6-5. PTASE Register Field Descriptions
Field Description
5:0
PTADS[5:0]
Output Drive Strength Selection for Port A Bits Each of these control bits selects between low and high
output drive for the associated PTA pin.
0 Low output drive enabled for port A bit n.
1 High output drive enabled for port A bit n.
Chapter 6 Parallel Input/Output
MC9S08JM60 Series Data Sheet, Rev. 3
86 Freescale Semiconductor
6.5.3 Port B I/O Registers (PTBD and PTBDD)
Port B parallel I/O function is controlled by the registers listed below.
6.5.4 Port B Pin Control Registers (PTBPE, PTBSE, PTBDS)
In addition to the I/O control, port B pins are controlled by the registers listed below.
7 6 5 4 3 2 1 0
R
PTBD7 PTBD6 PTBD5 PTBD4 PTBD3 PTBD2 PTBD1 PTBD0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-7. Port B Data Register (PTBD)
Table 6-6. PTBD Register Field Descriptions
Field Description
7:0
PTBD[7:0]
Port B Data Register Bits For port B pins that are inputs, reads return the logic level on the pin. For port B
pins that are configured as outputs, reads return the last value written to this register.
Writes are latched into all bits of this register. For port B pins that are configured as outputs, the logic level is
driven out the corresponding MCU pin.
Reset forces PTBD to all 0s, but these 0s are not driven out the corresponding pins because reset also configures
all port pins as high-impedance inputs with pullups disabled.
7 6 5 4 3 2 1 0
R
PTBDD7 PTBDD6 PTBDD5 PTBDD4 PTBDD3 PTBDD2 PTBDD1 PTBDD0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-8. Data Direction for Port B (PTBDD)
Table 6-7. PTBDD Register Field Descriptions
Field Description
7:0
PTBDD[7:0]
Data Direction for Port B Bits These read/write bits control the direction of port B pins and what is read for
PTBD reads.
0 Input (output driver disabled) and reads return the pin value.
1 Output driver enabled for port B bit n and PTBD reads return the contents of PTBDn.
Chapter 6 Parallel Input/Output
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 87
7 6 5 4 3 2 1 0
R
PTBPE7 PTBPE6 PTBPE5 PTBPE4 PTBPE3 PTBPE2 PTBPE1 PTBPE0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-9. Internal Pullup Enable for Port B (PTBPE)
Table 6-8. PTBPE Register Field Descriptions
Field Description
7:0
PTBPE[7:0]
Internal Pullup Enable for Port B Bits Each of these control bits determines if the internal pullup device is
enabled for the associated PTB pin. For port B pins that are configured as outputs, these bits have no effect and
the internal pullup devices are disabled.
0 Internal pullup device disabled for port B bit n.
1 Internal pullup device enabled for port B bit n.
7 6 5 4 3 2 1 0
R
PTBSE7 PTBSE6 PTBSE5 PTBSE4 PTBSE3 PTBSE2 PTBSE1 PTBSE0
W
Reset 1 1 1 1 1 1 1 1
Figure 6-10. Output Slew Rate Control Enable (PTBSE)
Table 6-9. PTBSE Register Field Descriptions
Field Description
7:0
PTBSE[7:0]
Output Slew Rate Control Enable for Port B Bits Each of these control bits determine whether output slew
rate control is enabled for the associated PTB pin. For port B pins that are configured as inputs, these bits have
no effect.
0 Output slew rate control disabled for port B bit n.
1 Output slew rate control enabled for port B bit n.
7 6 5 4 3 2 1 0
R
PTBDS7 PTBDS6 PTBDS5 PTBDS4 PTBDS3 PTBDS2 PTBDS1 PTBDS0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-11. Output Drive Strength Selection for Port B (PTBDS)
Table 6-10. PTBDS Register Field Descriptions
Field Description
7:0
PTBDS[7:0]
Output Drive Strength Selection for Port B Bits Each of these control bits selects between low and high
output drive for the associated PTB pin.
0 Low output drive enabled for port B bit n.
1 High output drive enabled for port B bit n.
Chapter 6 Parallel Input/Output
MC9S08JM60 Series Data Sheet, Rev. 3
88 Freescale Semiconductor
6.5.5 Port C I/O Registers (PTCD and PTCDD)
Port C parallel I/O function is controlled by the registers listed below.
6.5.6 Port C Pin Control Registers (PTCPE, PTCSE, PTCDS)
In addition to the I/O control, port C pins are controlled by the registers listed below.
7 6 5 4 3 2 1 0
R
PTCD6 PTCD5 PTCD4 PTCD3 PTCD2 PTCD1 PTCD0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-12. Port C Data Register (PTCD)
Table 6-11. PTCD Register Field Descriptions
Field Description
6:0
PTCD[6:0]
Port C Data Register Bits For port C pins that are inputs, reads return the logic level on the pin. For port C
pins that are configured as outputs, reads return the last value written to this register.
Writes are latched into all bits of this register. For port C pins that are configured as outputs, the logic level is
driven out the corresponding MCU pin.
Reset forces PTCD to all 0s, but these 0s are not driven out the corresponding pins because reset also configures
all port pins as high-impedance inputs with pullups disabled.
7 6 5 4 3 2 1 0
R
PTCDD6 PTCDD5 PTCDD4 PTCDD3 PTCDD2 PTCDD1 PTCDD0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-13. Data Direction for Port C (PTCDD)
Table 6-12. PTCDD Register Field Descriptions
Field Description
6:0
PTCDD[6:0]
Data Direction for Port C Bits These read/write bits control the direction of port C pins and what is read for
PTCD reads.
0 Input (output driver disabled) and reads return the pin value.
1 Output driver enabled for port C bit n and PTCD reads return the contents of PTCDn.
Chapter 6 Parallel Input/Output
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 89
7 6 5 4 3 2 1 0
R
PTCPE6 PTCPE5 PTCPE4 PTCPE3 PTCPE2 PTCPE1 PTCPE0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-14. Internal Pullup Enable for Port C (PTCPE)
Table 6-13. PTCPE Register Field Descriptions
Field Description
6:0
PTCPE[6:0]
Internal Pullup Enable for Port C Bits Each of these control bits determines if the internal pullup device is
enabled for the associated PTC pin. For port C pins that are configured as outputs, these bits have no effect and
the internal pullup devices are disabled.
0 Internal pullup device disabled for port C bit n.
1 Internal pullup device enabled for port C bit n.
7 6 5 4 3 2 1 0
R
PTCSE6 PTCSE5 PTCSE4 PTCSE3 PTCSE2 PTCSE1 PTCSE0
W
Reset 0 1 1 1 1 1 1 1
Figure 6-15. Output Slew Rate Control Enable for Port C (PTCSE)
Table 6-14. PTCSE Register Field Descriptions
Field Description
6:0
PTCSE[6:0]
Output Slew Rate Control Enable for Port C Bits Each of these control bits determine whether output slew
rate control is enabled for the associated PTC pin. For port C pins that are configured as inputs, these bits have
no effect.
0 Output slew rate control disabled for port C bit n.
1 Output slew rate control enabled for port C bit n.
7 6 5 4 3 2 1 0
R
PTCDS6 PTCDS5 PTCDS4 PTCDS3 PTCDS2 PTCDS1 PTCDS0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-16. Output Drive Strength Selection for Port C (PTCDS)
Table 6-15. PTCDS Register Field Descriptions
Field Description
6:0
PTCDS[6:0]
Output Drive Strength Selection for Port C Bits Each of these control bits selects between low and high
output drive for the associated PTC pin.
0 Low output drive enabled for port C bit n.
1 High output drive enabled for port C bit n.
Chapter 6 Parallel Input/Output
MC9S08JM60 Series Data Sheet, Rev. 3
90 Freescale Semiconductor
6.5.7 Port D I/O Registers (PTDD and PTDDD)
Port D parallel I/O function is controlled by the registers listed below.
6.5.8 Port D Pin Control Registers (PTDPE, PTDSE, PTDDS)
In addition to the I/O control, port D pins are controlled by the registers listed below.
7 6 5 4 3 2 1 0
R
PTDD7 PTDD6 PTDD5 PTDD4 PTDD3 PTDD2 PTDD1 PTDD0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-17. Port D Data Register (PTDD)
Table 6-16. PTDD Register Field Descriptions
Field Description
7:0
PTDD[7:0]
Port D Data Register Bits For port D pins that are inputs, reads return the logic level on the pin. For port D
pins that are configured as outputs, reads return the last value written to this register.
Writes are latched into all bits of this register. For port D pins that are configured as outputs, the logic level is
driven out the corresponding MCU pin.
Reset forces PTDD to all 0s, but these 0s are not driven out the corresponding pins because reset also configures
all port pins as high-impedance inputs with pullups disabled.
7 6 5 4 3 2 1 0
R
PTDDD7 PTDDD6 PTDDD5 PTDDD4 PTDDD3 PTDDD2 PTDDD1 PTDDD0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-18. Data Direction for Port D (PTDDD)
Table 6-17. PTDDD Register Field Descriptions
Field Description
7:0
PTDDD[7:0]
Data Direction for Port D Bits These read/write bits control the direction of port D pins and what is read for
PTDD reads.
0 Input (output driver disabled) and reads return the pin value.
1 Output driver enabled for port D bit n and PTDD reads return the contents of PTDDn.
Chapter 6 Parallel Input/Output
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 91
7 6 5 4 3 2 1 0
R
PTDPE7 PTDPE6 PTDPE5 PTDPE4 PTDPE3 PTDPE2 PTDPE1 PTDPE0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-19. Internal Pullup Enable for Port D (PTDPE)
Table 6-18. PTDPE Register Field Descriptions
Field Description
7:0
PTDPE[7:0]
Internal Pullup Enable for Port D Bits Each of these control bits determines if the internal pullup device is
enabled for the associated PTD pin. For port D pins that are configured as outputs, these bits have no effect and
the internal pullup devices are disabled.
0 Internal pullup device disabled for port D bit n.
1 Internal pullup device enabled for port D bit n.
7 6 5 4 3 2 1 0
R
PTDSE7 PTDSE6 PTDSE5 PTDSE4 PTDSE3 PTDSE2 PTDSE1 PTDSE0
W
Reset 1 1 1 1 1 1 1 1
Figure 6-20. Output Slew Rate Control Enable for Port D (PTDSE)
Table 6-19. PTDSE Register Field Descriptions
Field Description
7:0
PTDSE[7:0]
Output Slew Rate Control Enable for Port D Bits Each of these control bits determine whether output slew
rate control is enabled for the associated PTD pin. For port D pins that are configured as inputs, these bits have
no effect.
0 Output slew rate control disabled for port D bit n.
1 Output slew rate control enabled for port D bit n.
7 6 5 4 3 2 1 0
R
PTDDS7 PTDDS6 PTDDS5 PTDDS4 PTDDS3 PTDDS2 PTDDS1 PTDDS0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-21. Output Drive Strength Selection for Port D (PTDDS)
Table 6-20. PTDDS Register Field Descriptions
Field Description
7:0
PTDDS[7:0]
Output Drive Strength Selection for Port D Bits Each of these control bits selects between low and high
output drive for the associated PTD pin.
0 Low output drive enabled for port D bit n.
1 High output drive enabled for port D bit n.
Chapter 6 Parallel Input/Output
MC9S08JM60 Series Data Sheet, Rev. 3
92 Freescale Semiconductor
6.5.9 Port E I/O Registers (PTED and PTEDD)
Port E parallel I/O function is controlled by the registers listed below.
6.5.10 Port E Pin Control Registers (PTEPE, PTESE, PTEDS)
In addition to the I/O control, port E pins are controlled by the registers listed below.
7 6 5 4 3 2 1 0
R
PTED7 PTED6 PTED5 PTED4 PTED3 PTED2 PTED1 PTED0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-22. Port E Data Register (PTED)
Table 6-21. PTED Register Field Descriptions
Field Description
7:0
PTED[7:0]
Port E Data Register Bits For port E pins that are inputs, reads return the logic level on the pin. For port E
pins that are configured as outputs, reads return the last value written to this register.
Writes are latched into all bits of this register. For port E pins that are configured as outputs, the logic level is
driven out the corresponding MCU pin.
Reset forces PTED to all 0s, but these 0s are not driven out the corresponding pins because reset also configures
all port pins as high-impedance inputs with pullups disabled.
7 6 5 4 3 2 1 0
R
PTEDD7 PTEDD6 PTEDD5 PTEDD4 PTEDD3 PTEDD2 PTEDD1 PTEDD0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-23. Data Direction for Port E (PTEDD)
Table 6-22. PTEDD Register Field Descriptions
Field Description
7:0
PTEDD[7:0]
Data Direction for Port E Bits These read/write bits control the direction of port E pins and what is read for
PTED reads.
0 Input (output driver disabled) and reads return the pin value.
1 Output driver enabled for port E bit n and PTED reads return the contents of PTEDn.
Chapter 6 Parallel Input/Output
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 93
7 6 5 4 3 2 1 0
R
PTEPE7 PTEPE6 PTEPE5 PTEPE4 PTEPE3 PTEPE2 PTEPE1 PTEPE0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-24. Internal Pullup Enable for Port E (PTEPE)
Table 6-23. PTEPE Register Field Descriptions
Field Description
7:0
PTEPE[7:0]
Internal Pullup Enable for Port E Bits Each of these control bits determines if the internal pullup device is
enabled for the associated PTE pin. For port E pins that are configured as outputs, these bits have no effect and
the internal pullup devices are disabled.
0 Internal pullup device disabled for port E bit n.
1 Internal pullup device enabled for port E bit n.
7 6 5 4 3 2 1 0
R
PTESE7 PTESE6 PTESE5 PTESE4 PTESE3 PTESE2 PTESE1 PTESE0
W
Reset 1 1 1 1 1 1 1 1
Figure 6-25. Output Slew Rate Control Enable for Port E (PTESE)
Table 6-24. PTESE Register Field Descriptions
Field Description
7:0
PTESE[7:0]
Output Slew Rate Control Enable for Port E Bits Each of these control bits determine whether output slew
rate control is enabled for the associated PTE pin. For port E pins that are configured as inputs, these bits have
no effect.
0 Output slew rate control disabled for port E bit n.
1 Output slew rate control enabled for port E bit n.
7 6 5 4 3 2 1 0
R
PTEDS7 PTEDS6 PTEDS5 PTEDS4 PTEDS3 PTEDS2 PTEDS1 PTEDS0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-26. Output Drive Strength Selection for Port E (PTEDS)
Table 6-25. PTEDS Register Field Descriptions
Field Description
7:0
PTEDS[7:0]
Output Drive Strength Selection for Port E Bits Each of these control bits selects between low and high
output drive for the associated PTE pin.
0 Low output drive enabled for port E bit n.
1 High output drive enabled for port E bit n.
Chapter 6 Parallel Input/Output
MC9S08JM60 Series Data Sheet, Rev. 3
94 Freescale Semiconductor
6.5.11 Port F I/O Registers (PTFD and PTFDD)
Port F parallel I/O function is controlled by the registers listed below.
6.5.12 Port F Pin Control Registers (PTFPE, PTFSE, PTFDS)
In addition to the I/O control, port F pins are controlled by the registers listed below.
7 6 5 4 3 2 1 0
R
PTFD7 PTFD6 PTFD5 PTFD4 PTFD3 PTFD2 PTFD1 PTFD0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-27. Port F Data Register (PTFD)
Table 6-26. PTFD Register Field Descriptions
Field Description
7:0
PTFD[7:0]
Port F Data Register Bits For port F pins that are inputs, reads return the logic level on the pin. For port F
pins that are configured as outputs, reads return the last value written to this register.
Writes are latched into all bits of this register. For port F pins that are configured as outputs, the logic level is
driven out the corresponding MCU pin.
Reset forces PTFD to all 0s, but these 0s are not driven out the corresponding pins because reset also configures
all port pins as high-impedance inputs with pullups disabled.
7 6 5 4 3 2 1 0
R
PTFDD7 PTFDD6 PTFDD5 PTFDD4 PTFDD3 PTFDD2 PTFDD1 PTFDD0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-28. Data Direction for Port F (PTFDD)
Table 6-27. PTFDD Register Field Descriptions
Field Description
7:0
PTFDD[7:0]
Data Direction for Port F Bits These read/write bits control the direction of port F pins and what is read for
PTFD reads.
0 Input (output driver disabled) and reads return the pin value.
1 Output driver enabled for port F bit n and PTFD reads return the contents of PTFDn.
Chapter 6 Parallel Input/Output
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 95
7 6 5 4 3 2 1 0
R
PTFPE7 PTFPE6 PTFPE5 PTFPE4 PTFPE3 PTFPE2 PTFPE1 PTFPE0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-29. Internal Pullup Enable for Port F (PTFPE)
Table 6-28. PTFPE Register Field Descriptions
Field Description
7:0
PTFPE[7:0]
Internal Pullup Enable for Port F Bits Each of these control bits determines if the internal pullup device is
enabled for the associated PTF pin. For port F pins that are configured as outputs, these bits have no effect and
the internal pullup devices are disabled.
0 Internal pullup device disabled for port F bit n.
1 Internal pullup device enabled for port F bit n.
7 6 5 4 3 2 1 0
R
PTFSE7 PTFSE6 PTFSE5 PTFSE4 PTFSE3 PTFSE2 PTFSE1 PTFSE0
W
Reset 1 1 1 1 1 1 1 1
Figure 6-30. Output Slew Rate Control Enable for Port F (PTFSE)
Table 6-29. PTFSE Register Field Descriptions
Field Description
7:0
PTFSE[7:0]
Output Slew Rate Control Enable for Port F Bits Each of these control bits determine whether output slew
rate control is enabled for the associated PTF pin. For port F pins that are configured as inputs, these bits have
no effect.
0 Output slew rate control disabled for port F bit n.
1 Output slew rate control enabled for port F bit n.
7 6 5 4 3 2 1 0
R
PTFDS7 PTFDS6 PTFDS5 PTFDS4 PTFDS3 PTFDS2 PTFDS1 PTFDS0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-31. Output Drive Strength Selection for Port F (PTFDS)
Table 6-30. PTFDS Register Field Descriptions
Field Description
7:0
PTFDS[7:0]
Output Drive Strength Selection for Port F Bits Each of these control bits selects between low and high
output drive for the associated PTF pin.
0 Low output drive enabled for port F bit n.
1 High output drive enabled for port F bit n.
Chapter 6 Parallel Input/Output
MC9S08JM60 Series Data Sheet, Rev. 3
96 Freescale Semiconductor
6.5.13 Port G I/O Registers (PTGD and PTGDD)
Port G parallel I/O function is controlled by the registers listed below.
6.5.14 Port G Pin Control Registers (PTGPE, PTGSE, PTGDS)
In addition to the I/O control, port G pins are controlled by the registers listed below.
7 6 5 4 3 2 1 0
R
PTGD5 PTGD4 PTGD3 PTGD2 PTGD1 PTGD0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-32. Port G Data Register (PTGD)
Table 6-31. PTGD Register Field Descriptions
Field Description
5:0
PTGD[5:0]
Port G Data Register Bits For port G pins that are inputs, reads return the logic level on the pin. For port G
pins that are configured as outputs, reads return the last value written to this register.
Writes are latched into all bits of this register. For port G pins that are configured as outputs, the logic level is
driven out the corresponding MCU pin.
Reset forces PTGD to all 0s, but these 0s are not driven out the corresponding pins because reset also
configures all port pins as high-impedance inputs with pullups disabled.
7 6 5 4 3 2 1 0
R
PTGDD5 PTGDD4 PTGDD3 PTGDD2 PTGDD1 PTGDD0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-33. Data Direction for Port G (PTGDD)
Table 6-32. PTGDD Register Field Descriptions
Field Description
5:0
PTGDD[5:0]
Data Direction for Port G Bits These read/write bits control the direction of port G pins and what is read for
PTGD reads.
0 Input (output driver disabled) and reads return the pin value.
1 Output driver enabled for port G bit n and PTGD reads return the contents of PTGDn.
Chapter 6 Parallel Input/Output
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 97
7 6 5 4 3 2 1 0
R
PTGPE5 PTGPE4 PTGPE3 PTGPE2 PTGPE1 PTGPE0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-34. Internal Pullup Enable for Port G Bits (PTGPE)
Table 6-33. PTGPE Register Field Descriptions
Field Description
5:0
PTGPEn
Internal Pullup Enable for Port G Bits Each of these control bits determines if the internal pullup device is
enabled for the associated PTG pin. For port G pins that are configured as outputs, these bits have no effect and
the internal pullup devices are disabled.
0 Internal pullup device disabled for port G bit n.
1 Internal pullup device enabled for port G bit n.
7 6 5 4 3 2 1 0
R
PTGSE5 PTGSE4 PTGSE3 PTGSE2 PTGSE1 PTGSE0
W
Reset 0 1 1 1 1 1 1 1
Figure 6-35. Output Slew Rate Control Enable for Port G Bits (PTGSE)
Table 6-34. PTGSE Register Field Descriptions
Field Description
5:0
PTGSEn
Output Slew Rate Control Enable for Port G Bits Each of these control bits determine whether output slew
rate control is enabled for the associated PTG pin. For port G pins that are configured as inputs, these bits have
no effect.
0 Output slew rate control disabled for port G bit n.
1 Output slew rate control enabled for port G bit n.
7 6 5 4 3 2 1 0
R
PTGDS5 PTGDS4 PTGDS3 PTGDS2 PTGDS1 PTGDS0
W
Reset 0 0 0 0 0 0 0 0
Figure 6-36. Output Drive Strength Selection for Port G (PTGDS)
Table 6-35. PTGDS Register Field Descriptions
Field Description
5:0
PTGDSn
Output Drive Strength Selection for Port G Bits Each of these control bits selects between low and high
output drive for the associated PTG pin.
0 Low output drive enabled for port G bit n.
1 High output drive enabled for port G bit n.
Chapter 6 Parallel Input/Output
MC9S08JM60 Series Data Sheet, Rev. 3
98 Freescale Semiconductor
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 99
Chapter 7
Central Processor Unit (S08CPUV2)
7.1 Introduction
This section provides summary information about the registers, addressing modes, and instruction set of
the CPU of the HCS08 Family. For a more detailed discussion, refer to the HCS08 Family Reference
Manual, volume 1, Freescale Semiconductor document order number HCS08RMV1/D.
The HCS08 CPU is fully source- and object-code-compatible with the M68HC08 CPU. Several
instructions and enhanced addressing modes were added to improve C compiler efficiency and to support
a new background debug system which replaces the monitor mode of earlier M68HC08 microcontrollers
(MCU).
7.1.1 Features
Features of the HCS08 CPU include:
Object code fully upward-compatible with M68HC05 and M68HC08 Families
All registers and memory are mapped to a single 64-Kbyte address space
16-bit stack pointer (any size stack anywhere in 64-Kbyte address space)
16-bit index register (H:X) with powerful indexed addressing modes
8-bit accumulator (A)
Many instructions treat X as a second general-purpose 8-bit register
Seven addressing modes:
Inherent Operands in internal registers
Relative 8-bit signed offset to branch destination
Immediate Operand in next object code byte(s)
Direct Operand in memory at 0x00000x00FF
Extended Operand anywhere in 64-Kbyte address space
Indexed relative to H:X Five submodes including auto increment
Indexed relative to SP Improves C efficiency dramatically
Memory-to-memory data move instructions with four address mode combinations
Overflow, half-carry, negative, zero, and carry condition codes support conditional branching on
the results of signed, unsigned, and binary-coded decimal (BCD) operations
Efficient bit manipulation instructions
Fast 8-bit by 8-bit multiply and 16-bit by 8-bit divide instructions
STOP and WAIT instructions to invoke low-power operating modes
Chapter 7 Central Processor Unit (S08CPUV2)
MC9S08JM60 Series Data Sheet, Rev. 3
100 Freescale Semiconductor
7.2 Programmers Model and CPU Registers
Figure 7-1 shows the five CPU registers. CPU registers are not part of the memory map.
Figure 7-1. CPU Registers
7.2.1 Accumulator (A)
The A accumulator is a general-purpose 8-bit register. One operand input to the arithmetic logic unit
(ALU) is connected to the accumulator and the ALU results are often stored into the A accumulator after
arithmetic and logical operations. The accumulator can be loaded from memory using various addressing
modes to specify the address where the loaded data comes from, or the contents of A can be stored to
memory using various addressing modes to specify the address where data from A will be stored.
Reset has no effect on the contents of the A accumulator.
7.2.2 Index Register (H:X)
This 16-bit register is actually two separate 8-bit registers (H and X), which often work together as a 16-bit
address pointer where H holds the upper byte of an address and X holds the lower byte of the address. All
indexed addressing mode instructions use the full 16-bit value in H:X as an index reference pointer;
however, for compatibility with the earlier M68HC05 Family, some instructions operate only on the
low-order 8-bit half (X).
Many instructions treat X as a second general-purpose 8-bit register that can be used to hold 8-bit data
values. X can be cleared, incremented, decremented, complemented, negated, shifted, or rotated. Transfer
instructions allow data to be transferred from A or transferred to A where arithmetic and logical operations
can then be performed.
For compatibility with the earlier M68HC05 Family, H is forced to 0x00 during reset. Reset has no effect
on the contents of X.
SP
PC
CONDITION CODE REGISTER
CARRY
ZERO
NEGATIVE
INTERRUPT MASK
HALF-CARRY (FROM BIT 3)
TWOS COMPLEMENT OVERFLOW
H X
0
0
0
7
15
15
7 0
ACCUMULATOR A
INDEX REGISTER (LOW) INDEX REGISTER (HIGH)
STACK POINTER
8 7
PROGRAM COUNTER
16-BIT INDEX REGISTER H:X
CCR C V 1 1 H I N Z
Chapter 7 Central Processor Unit (S08CPUV2)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 101
7.2.3 Stack Pointer (SP)
This 16-bit address pointer register points at the next available location on the automatic last-in-first-out
(LIFO) stack. The stack may be located anywhere in the 64-Kbyte address space that has RAM and can
be any size up to the amount of available RAM. The stack is used to automatically save the return address
for subroutine calls, the return address and CPU registers during interrupts, and for local variables. The
AIS (add immediate to stack pointer) instruction adds an 8-bit signed immediate value to SP. This is most
often used to allocate or deallocate space for local variables on the stack.
SP is forced to 0x00FF at reset for compatibility with the earlier M68HC05 Family. HCS08 programs
normally change the value in SP to the address of the last location (highest address) in on-chip RAM
during reset initialization to free up direct page RAM (from the end of the on-chip registers to 0x00FF).
The RSP (reset stack pointer) instruction was included for compatibility with the M68HC05 Family and
is seldom used in new HCS08 programs because it only affects the low-order half of the stack pointer.
7.2.4 Program Counter (PC)
The program counter is a 16-bit register that contains the address of the next instruction or operand to be
fetched.
During normal program execution, the program counter automatically increments to the next sequential
memory location every time an instruction or operand is fetched. Jump, branch, interrupt, and return
operations load the program counter with an address other than that of the next sequential location. This
is called a change-of-flow.
During reset, the program counter is loaded with the reset vector that is located at 0xFFFE and 0xFFFF.
The vector stored there is the address of the first instruction that will be executed after exiting the reset
state.
7.2.5 Condition Code Register (CCR)
The 8-bit condition code register contains the interrupt mask (I) and five flags that indicate the results of
the instruction just executed. Bits 6 and 5 are set permanently to 1. The following paragraphs describe the
functions of the condition code bits in general terms. For a more detailed explanation of how each
instruction sets the CCR bits, refer to the HCS08 Family Reference Manual, volume 1, Freescale
Semiconductor document order number HCS08RMv1.
Chapter 7 Central Processor Unit (S08CPUV2)
MC9S08JM60 Series Data Sheet, Rev. 3
102 Freescale Semiconductor
Figure 7-2. Condition Code Register
Table 7-1. CCR Register Field Descriptions
Field Description
7
V
Twos Complement Overflow Flag The CPU sets the overflow flag when a twos complement overflow occurs.
The signed branch instructions BGT, BGE, BLE, and BLT use the overflow flag.
0 No overflow
1 Overflow
4
H
Half-Carry Flag The CPU sets the half-carry flag when a carry occurs between accumulator bits 3 and 4 during
an add-without-carry (ADD) or add-with-carry (ADC) operation. The half-carry flag is required for binary-coded
decimal (BCD) arithmetic operations. The DAA instruction uses the states of the H and C condition code bits to
automatically add a correction value to the result from a previous ADD or ADC on BCD operands to correct the
result to a valid BCD value.
0 No carry between bits 3 and 4
1 Carry between bits 3 and 4
3
I
Interrupt Mask Bit When the interrupt mask is set, all maskable CPU interrupts are disabled. CPU interrupts
are enabled when the interrupt mask is cleared. When a CPU interrupt occurs, the interrupt mask is set
automatically after the CPU registers are saved on the stack, but before the first instruction of the interrupt service
routine is executed.
Interrupts are not recognized at the instruction boundary after any instruction that clears I (CLI or TAP). This
ensures that the next instruction after a CLI or TAP will always be executed without the possibility of an intervening
interrupt, provided I was set.
0 Interrupts enabled
1 Interrupts disabled
2
N
Negative Flag The CPU sets the negative flag when an arithmetic operation, logic operation, or data
manipulation produces a negative result, setting bit 7 of the result. Simply loading or storing an 8-bit or 16-bit value
causes N to be set if the most significant bit of the loaded or stored value was 1.
0 Non-negative result
1 Negative result
1
Z
Zero Flag The CPU sets the zero flag when an arithmetic operation, logic operation, or data manipulation
produces a result of 0x00 or 0x0000. Simply loading or storing an 8-bit or 16-bit value causes Z to be set if the
loaded or stored value was all 0s.
0 Non-zero result
1 Zero result
0
C
Carry/Borrow Flag The CPU sets the carry/borrow flag when an addition operation produces a carry out of bit
7 of the accumulator or when a subtraction operation requires a borrow. Some instructions such as bit test and
branch, shift, and rotate also clear or set the carry/borrow flag.
0 No carry out of bit 7
1 Carry out of bit 7
CONDITION CODE REGISTER
CARRY
ZERO
NEGATIVE
INTERRUPT MASK
HALF-CARRY (FROM BIT 3)
TWOS COMPLEMENT OVERFLOW
7 0
CCR C V 1 1 H I N Z
Chapter 7 Central Processor Unit (S08CPUV2)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 103
7.3 Addressing Modes
Addressing modes define the way the CPU accesses operands and data. In the HCS08, all memory, status
and control registers, and input/output (I/O) ports share a single 64-Kbyte linear address space so a 16-bit
binary address can uniquely identify any memory location. This arrangement means that the same
instructions that access variables in RAM can also be used to access I/O and control registers or nonvolatile
program space.
Some instructions use more than one addressing mode. For instance, move instructions use one addressing
mode to specify the source operand and a second addressing mode to specify the destination address.
Instructions such as BRCLR, BRSET, CBEQ, and DBNZ use one addressing mode to specify the location
of an operand for a test and then use relative addressing mode to specify the branch destination address
when the tested condition is true. For BRCLR, BRSET, CBEQ, and DBNZ, the addressing mode listed in
the instruction set tables is the addressing mode needed to access the operand to be tested, and relative
addressing mode is implied for the branch destination.
7.3.1 Inherent Addressing Mode (INH)
In this addressing mode, operands needed to complete the instruction (if any) are located within CPU
registers so the CPU does not need to access memory to get any operands.
7.3.2 Relative Addressing Mode (REL)
Relative addressing mode is used to specify the destination location for branch instructions. A signed 8-bit
offset value is located in the memory location immediately following the opcode. During execution, if the
branch condition is true, the signed offset is sign-extended to a 16-bit value and is added to the current
contents of the program counter, which causes program execution to continue at the branch destination
address.
7.3.3 Immediate Addressing Mode (IMM)
In immediate addressing mode, the operand needed to complete the instruction is included in the object
code immediately following the instruction opcode in memory. In the case of a 16-bit immediate operand,
the high-order byte is located in the next memory location after the opcode, and the low-order byte is
located in the next memory location after that.
7.3.4 Direct Addressing Mode (DIR)
In direct addressing mode, the instruction includes the low-order eight bits of an address in the direct page
(0x00000x00FF). During execution a 16-bit address is formed by concatenating an implied 0x00 for the
high-order half of the address and the direct address from the instruction to get the 16-bit address where
the desired operand is located. This is faster and more memory efficient than specifying a complete 16-bit
address for the operand.
Chapter 7 Central Processor Unit (S08CPUV2)
MC9S08JM60 Series Data Sheet, Rev. 3
104 Freescale Semiconductor
7.3.5 Extended Addressing Mode (EXT)
In extended addressing mode, the full 16-bit address of the operand is located in the next two bytes of
program memory after the opcode (high byte first).
7.3.6 Indexed Addressing Mode
Indexed addressing mode has seven variations including five that use the 16-bit H:X index register pair
and two that use the stack pointer as the base reference.
7.3.6.1 Indexed, No Offset (IX)
This variation of indexed addressing uses the 16-bit value in the H:X index register pair as the address of
the operand needed to complete the instruction.
7.3.6.2 Indexed, No Offset with Post Increment (IX+)
This variation of indexed addressing uses the 16-bit value in the H:X index register pair as the address of
the operand needed to complete the instruction. The index register pair is then incremented
(H:X = H:X + 0x0001) after the operand has been fetched. This addressing mode is only used for MOV
and CBEQ instructions.
7.3.6.3 Indexed, 8-Bit Offset (IX1)
This variation of indexed addressing uses the 16-bit value in the H:X index register pair plus an unsigned
8-bit offset included in the instruction as the address of the operand needed to complete the instruction.
7.3.6.4 Indexed, 8-Bit Offset with Post Increment (IX1+)
This variation of indexed addressing uses the 16-bit value in the H:X index register pair plus an unsigned
8-bit offset included in the instruction as the address of the operand needed to complete the instruction.
The index register pair is then incremented (H:X = H:X + 0x0001) after the operand has been fetched. This
addressing mode is used only for the CBEQ instruction.
7.3.6.5 Indexed, 16-Bit Offset (IX2)
This variation of indexed addressing uses the 16-bit value in the H:X index register pair plus a 16-bit offset
included in the instruction as the address of the operand needed to complete the instruction.
7.3.6.6 SP-Relative, 8-Bit Offset (SP1)
This variation of indexed addressing uses the 16-bit value in the stack pointer (SP) plus an unsigned 8-bit
offset included in the instruction as the address of the operand needed to complete the instruction.
Chapter 7 Central Processor Unit (S08CPUV2)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 105
7.3.6.7 SP-Relative, 16-Bit Offset (SP2)
This variation of indexed addressing uses the 16-bit value in the stack pointer (SP) plus a 16-bit offset
included in the instruction as the address of the operand needed to complete the instruction.
7.4 Special Operations
The CPU performs a few special operations that are similar to instructions but do not have opcodes like
other CPU instructions. In addition, a few instructions such as STOP and WAIT directly affect other MCU
circuitry. This section provides additional information about these operations.
7.4.1 Reset Sequence
Reset can be caused by a power-on-reset (POR) event, internal conditions such as the COP (computer
operating properly) watchdog, or by assertion of an external active-low reset pin. When a reset event
occurs, the CPU immediately stops whatever it is doing (the MCU does not wait for an instruction
boundary before responding to a reset event). For a more detailed discussion about how the MCU
recognizes resets and determines the source, refer to the Resets, Interrupts, and System Configuration
chapter.
The reset event is considered concluded when the sequence to determine whether the reset came from an
internal source is done and when the reset pin is no longer asserted. At the conclusion of a reset event, the
CPU performs a 6-cycle sequence to fetch the reset vector from 0xFFFE and 0xFFFF and to fill the
instruction queue in preparation for execution of the first program instruction.
7.4.2 Interrupt Sequence
When an interrupt is requested, the CPU completes the current instruction before responding to the
interrupt. At this point, the program counter is pointing at the start of the next instruction, which is where
the CPU should return after servicing the interrupt. The CPU responds to an interrupt by performing the
same sequence of operations as for a software interrupt (SWI) instruction, except the address used for the
vector fetch is determined by the highest priority interrupt that is pending when the interrupt sequence
started.
The CPU sequence for an interrupt is:
1. Store the contents of PCL, PCH, X, A, and CCR on the stack, in that order.
2. Set the I bit in the CCR.
3. Fetch the high-order half of the interrupt vector.
4. Fetch the low-order half of the interrupt vector.
5. Delay for one free bus cycle.
6. Fetch three bytes of program information starting at the address indicated by the interrupt vector
to fill the instruction queue in preparation for execution of the first instruction in the interrupt
service routine.
After the CCR contents are pushed onto the stack, the I bit in the CCR is set to prevent other interrupts
while in the interrupt service routine. Although it is possible to clear the I bit with an instruction in the
Chapter 7 Central Processor Unit (S08CPUV2)
MC9S08JM60 Series Data Sheet, Rev. 3
106 Freescale Semiconductor
interrupt service routine, this would allow nesting of interrupts (which is not recommended because it
leads to programs that are difficult to debug and maintain).
For compatibility with the earlier M68HC05 MCUs, the high-order half of the H:X index register pair (H)
is not saved on the stack as part of the interrupt sequence. The user must use a PSHH instruction at the
beginning of the service routine to save H and then use a PULH instruction just before the RTI that ends
the interrupt service routine. It is not necessary to save H if you are certain that the interrupt service routine
does not use any instructions or auto-increment addressing modes that might change the value of H.
The software interrupt (SWI) instruction is like a hardware interrupt except that it is not masked by the
global I bit in the CCR and it is associated with an instruction opcode within the program so it is not
asynchronous to program execution.
7.4.3 Wait Mode Operation
The WAIT instruction enables interrupts by clearing the I bit in the CCR. It then halts the clocks to the
CPU to reduce overall power consumption while the CPU is waiting for the interrupt or reset event that
will wake the CPU from wait mode. When an interrupt or reset event occurs, the CPU clocks will resume
and the interrupt or reset event will be processed normally.
If a serial BACKGROUND command is issued to the MCU through the background debug interface while
the CPU is in wait mode, CPU clocks will resume and the CPU will enter active background mode where
other serial background commands can be processed. This ensures that a host development system can still
gain access to a target MCU even if it is in wait mode.
7.4.4 Stop Mode Operation
Usually, all system clocks, including the crystal oscillator (when used), are halted during stop mode to
minimize power consumption. In such systems, external circuitry is needed to control the time spent in
stop mode and to issue a signal to wake up the target MCU when it is time to resume processing. Unlike
the earlier M68HC05 and M68HC08 MCUs, the HCS08 can be configured to keep a minimum set of
clocks running in stop mode. This optionally allows an internal periodic signal to wake the target MCU
from stop mode.
When a host debug system is connected to the background debug pin (BKGD) and the ENBDM control
bit has been set by a serial command through the background interface (or because the MCU was reset into
active background mode), the oscillator is forced to remain active when the MCU enters stop mode. In this
case, if a serial BACKGROUND command is issued to the MCU through the background debug interface
while the CPU is in stop mode, CPU clocks will resume and the CPU will enter active background mode
where other serial background commands can be processed. This ensures that a host development system
can still gain access to a target MCU even if it is in stop mode.
Recovery from stop mode depends on the particular HCS08 and whether the oscillator was stopped in stop
mode. Refer to the Modes of Operation chapter for more details.
Chapter 7 Central Processor Unit (S08CPUV2)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 107
7.4.5 BGND Instruction
The BGND instruction is new to the HCS08 compared to the M68HC08. BGND would not be used in
normal user programs because it forces the CPU to stop processing user instructions and enter the active
background mode. The only way to resume execution of the user program is through reset or by a host
debug system issuing a GO, TRACE1, or TAGGO serial command through the background debug
interface.
Software-based breakpoints can be set by replacing an opcode at the desired breakpoint address with the
BGND opcode. When the program reaches this breakpoint address, the CPU is forced to active
background mode rather than continuing the user program.
Chapter 7 Central Processor Unit (S08CPUV2)
MC9S08JM60 Series Data Sheet, Rev. 3
108 Freescale Semiconductor
7.5 HCS08 Instruction Set Summary
Table 7-2 provides a summary of the HCS08 instruction set in all possible addressing modes. The table
shows operand construction, execution time in internal bus clock cycles, and cycle-by-cycle details for
each addressing mode variation of each instruction.
Table 7-2. . Instruction Set Summary (Sheet 1 of 9)
Source
Form
Operation
A
d
d
r
e
s
s
M
o
d
e
Object Code
C
y
c
l
e
s
Cyc-by-Cyc
Details
Affect
on CCR
VH I N Z C
ADC #opr8i
ADC opr8a
ADC opr16a
ADC oprx16,X
ADC oprx8,X
ADC ,X
ADC oprx16,SP
ADC oprx8,SP
Add with Carry
A (A) + (M) + (C)
IMM
DIR
EXT
IX2
IX1
IX
SP2
SP1
A9
B9
C9
D9
E9
F9
9E D9
9E E9
ii
dd
hh ll
ee ff
ff
ee ff
ff
2
3
4
4
3
3
5
4
pp
rpp
prpp
prpp
rpp
rfp
pprpp
prpp
ADD #opr8i
ADD opr8a
ADD opr16a
ADD oprx16,X
ADD oprx8,X
ADD ,X
ADD oprx16,SP
ADD oprx8,SP
Add without Carry
A (A) + (M)
IMM
DIR
EXT
IX2
IX1
IX
SP2
SP1
AB
BB
CB
DB
EB
FB
9E DB
9E EB
ii
dd
hh ll
ee ff
ff
ee ff
ff
2
3
4
4
3
3
5
4
pp
rpp
prpp
prpp
rpp
rfp
pprpp
prpp
AIS #opr8i
Add Immediate Value (Signed) to
Stack Pointer
SP (SP) + (M)
IMM A7 ii 2 pp
AIX #opr8i
Add Immediate Value (Signed) to
Index Register (H:X)
H:X (H:X) + (M)
IMM AF ii 2 pp
AND #opr8i
AND opr8a
AND opr16a
AND oprx16,X
AND oprx8,X
AND ,X
AND oprx16,SP
AND oprx8,SP
Logical AND
A (A) & (M)
IMM
DIR
EXT
IX2
IX1
IX
SP2
SP1
A4
B4
C4
D4
E4
F4
9E D4
9E E4
ii
dd
hh ll
ee ff
ff
ee ff
ff
2
3
4
4
3
3
5
4
pp
rpp
prpp
prpp
rpp
rfp
pprpp
prpp
0
ASL opr8a
ASLA
ASLX
ASL oprx8,X
ASL ,X
ASL oprx8,SP
Arithmetic Shift Left
(Same as LSL)
DIR
INH
INH
IX1
IX
SP1
38
48
58
68
78
9E 68
dd
ff
ff
5
1
1
5
4
6
rfwpp
p
p
rfwpp
rfwp
prfwpp
ASR opr8a
ASRA
ASRX
ASR oprx8,X
ASR ,X
ASR oprx8,SP
Arithmetic Shift Right
DIR
INH
INH
IX1
IX
SP1
37
47
57
67
77
9E 67
dd
ff
ff
5
1
1
5
4
6
rfwpp
p
p
rfwpp
rfwp
prfwpp
BCC rel
Branch if Carry Bit Clear
(if C = 0)
REL 24 rr 3 ppp
C
b0 b7
0
b0 b7
C
Chapter 7 Central Processor Unit (S08CPUV2)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 109
BCLR n,opr8a
Clear Bit n in Memory
(Mn 0)
DIR (b0)
DIR (b1)
DIR (b2)
DIR (b3)
DIR (b4)
DIR (b5)
DIR (b6)
DIR (b7)
11
13
15
17
19
1B
1D
1F
dd
dd
dd
dd
dd
dd
dd
dd
5
5
5
5
5
5
5
5
rfwpp
rfwpp
rfwpp
rfwpp
rfwpp
rfwpp
rfwpp
rfwpp
BCS rel
Branch if Carry Bit Set (if C = 1)
(Same as BLO)
REL 25 rr 3 ppp
BEQ rel Branch if Equal (if Z = 1) REL 27 rr 3 ppp
BGE rel
Branch if Greater Than or Equal To
(if N V = 0) (Signed)
REL 90 rr 3 ppp
BGND
Enter active background if ENBDM=1
Waits for and processes BDM commands
until GO, TRACE1, or TAGGO
INH 82 5+ fp...ppp
BGT rel
Branch if Greater Than (if Z | (N V) = 0)
(Signed)
REL 92 rr 3 ppp
BHCC rel Branch if Half Carry Bit Clear (if H = 0) REL 28 rr 3 ppp
BHCS rel Branch if Half Carry Bit Set (if H = 1) REL 29 rr 3 ppp
BHI rel Branch if Higher (if C | Z = 0) REL 22 rr 3 ppp
BHS rel
Branch if Higher or Same (if C = 0)
(Same as BCC)
REL 24 rr 3 ppp
BIH rel Branch if IRQ Pin High (if IRQ pin = 1) REL 2F rr 3 ppp
BIL rel Branch if IRQ Pin Low (if IRQ pin = 0) REL 2E rr 3 ppp
BIT #opr8i
BIT opr8a
BIT opr16a
BIT oprx16,X
BIT oprx8,X
BIT ,X
BIT oprx16,SP
BIT oprx8,SP
Bit Test
(A) & (M)
(CCR Updated but Operands Not Changed)
IMM
DIR
EXT
IX2
IX1
IX
SP2
SP1
A5
B5
C5
D5
E5
F5
9E D5
9E E5
ii
dd
hh ll
ee ff
ff
ee ff
ff
2
3
4
4
3
3
5
4
pp
rpp
prpp
prpp
rpp
rfp
pprpp
prpp
0
BLE rel
Branch if Less Than or Equal To
(if Z | (N V) = 1) (Signed)
REL 93 rr 3 ppp
BLO rel Branch if Lower (if C = 1) (Same as BCS) REL 25 rr 3 ppp
BLS rel Branch if Lower or Same (if C | Z = 1) REL 23 rr 3 ppp
BLT rel Branch if Less Than (if N V = 1) (Signed) REL 91 rr 3 ppp
BMC rel Branch if Interrupt Mask Clear (if I = 0) REL 2C rr 3 ppp
BMI rel Branch if Minus (if N = 1) REL 2B rr 3 ppp
BMS rel Branch if Interrupt Mask Set (if I = 1) REL 2D rr 3 ppp
BNE rel Branch if Not Equal (if Z = 0) REL 26 rr 3 ppp
BPL rel Branch if Plus (if N = 0) REL 2A rr 3 ppp
Table 7-2. . Instruction Set Summary (Sheet 2 of 9)
Source
Form
Operation
A
d
d
r
e
s
s
M
o
d
e
Object Code
C
y
c
l
e
s
Cyc-by-Cyc
Details
Affect
on CCR
VH I N Z C
Chapter 7 Central Processor Unit (S08CPUV2)
MC9S08JM60 Series Data Sheet, Rev. 3
110 Freescale Semiconductor
BRA rel Branch Always (if I = 1) REL 20 rr 3 ppp
BRCLR n,opr8a,rel Branch if Bit n in Memory Clear (if (Mn) = 0)
DIR (b0)
DIR (b1)
DIR (b2)
DIR (b3)
DIR (b4)
DIR (b5)
DIR (b6)
DIR (b7)
01
03
05
07
09
0B
0D
0F
dd rr
dd rr
dd rr
dd rr
dd rr
dd rr
dd rr
dd rr
5
5
5
5
5
5
5
5
rpppp
rpppp
rpppp
rpppp
rpppp
rpppp
rpppp
rpppp
BRN rel Branch Never (if I = 0) REL 21 rr 3 ppp
BRSET n,opr8a,rel Branch if Bit n in Memory Set (if (Mn) = 1)
DIR (b0)
DIR (b1)
DIR (b2)
DIR (b3)
DIR (b4)
DIR (b5)
DIR (b6)
DIR (b7)
00
02
04
06
08
0A
0C
0E
dd rr
dd rr
dd rr
dd rr
dd rr
dd rr
dd rr
dd rr
5
5
5
5
5
5
5
5
rpppp
rpppp
rpppp
rpppp
rpppp
rpppp
rpppp
rpppp
BSET n,opr8a Set Bit n in Memory (Mn 1)
DIR (b0)
DIR (b1)
DIR (b2)
DIR (b3)
DIR (b4)
DIR (b5)
DIR (b6)
DIR (b7)
10
12
14
16
18
1A
1C
1E
dd
dd
dd
dd
dd
dd
dd
dd
5
5
5
5
5
5
5
5
rfwpp
rfwpp
rfwpp
rfwpp
rfwpp
rfwpp
rfwpp
rfwpp
BSR rel
Branch to Subroutine
PC (PC) + $0002
push (PCL); SP (SP) $0001
push (PCH); SP (SP) $0001
PC (PC) + rel
REL AD rr 5 ssppp
CBEQ opr8a,rel
CBEQA #opr8i,rel
CBEQX #opr8i,rel
CBEQ oprx8,X+,rel
CBEQ ,X+,rel
CBEQ oprx8,SP,rel
Compare and... Branch if (A) = (M)
Branch if (A) = (M)
Branch if (X) = (M)
Branch if (A) = (M)
Branch if (A) = (M)
Branch if (A) = (M)
DIR
IMM
IMM
IX1+
IX+
SP1
31
41
51
61
71
9E 61
dd rr
ii rr
ii rr
ff rr
rr
ff rr
5
4
4
5
5
6
rpppp
pppp
pppp
rpppp
rfppp
prpppp
CLC Clear Carry Bit (C 0) INH 98 1 p 0
CLI Clear Interrupt Mask Bit (I 0) INH 9A 1 p 0
CLR opr8a
CLRA
CLRX
CLRH
CLR oprx8,X
CLR ,X
CLR oprx8,SP
Clear M $00
A $00
X $00
H $00
M $00
M $00
M $00
DIR
INH
INH
INH
IX1
IX
SP1
3F
4F
5F
8C
6F
7F
9E 6F
dd
ff
ff
5
1
1
1
5
4
6
rfwpp
p
p
p
rfwpp
rfwp
prfwpp
0 0 1
Table 7-2. . Instruction Set Summary (Sheet 3 of 9)
Source
Form
Operation
A
d
d
r
e
s
s
M
o
d
e
Object Code
C
y
c
l
e
s
Cyc-by-Cyc
Details
Affect
on CCR
VH I N Z C
Chapter 7 Central Processor Unit (S08CPUV2)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 111
CMP #opr8i
CMP opr8a
CMP opr16a
CMP oprx16,X
CMP oprx8,X
CMP ,X
CMP oprx16,SP
CMP oprx8,SP
Compare Accumulator with Memory
A M
(CCR Updated But Operands Not Changed)
IMM
DIR
EXT
IX2
IX1
IX
SP2
SP1
A1
B1
C1
D1
E1
F1
9E D1
9E E1
ii
dd
hh ll
ee ff
ff
ee ff
ff
2
3
4
4
3
3
5
4
pp
rpp
prpp
prpp
rpp
rfp
pprpp
prpp
COM opr8a
COMA
COMX
COM oprx8,X
COM ,X
COM oprx8,SP
Complement M (M)= $FF (M)
(Ones Complement) A (A) = $FF (A)
X (X) = $FF (X)
M (M) = $FF (M)
M (M) = $FF (M)
M (M) = $FF (M)
DIR
INH
INH
IX1
IX
SP1
33
43
53
63
73
9E 63
dd
ff
ff
5
1
1
5
4
6
rfwpp
p
p
rfwpp
rfwp
prfwpp
0 1
CPHX opr16a
CPHX #opr16i
CPHX opr8a
CPHX oprx8,SP
Compare Index Register (H:X) with Memory
(H:X) (M:M + $0001)
(CCR Updated But Operands Not Changed)
EXT
IMM
DIR
SP1
3E
65
75
9E F3
hh ll
jj kk
dd
ff
6
3
5
6
prrfpp
ppp
rrfpp
prrfpp
CPX #opr8i
CPX opr8a
CPX opr16a
CPX oprx16,X
CPX oprx8,X
CPX ,X
CPX oprx16,SP
CPX oprx8,SP
Compare X (Index Register Low) with
Memory
X M
(CCR Updated But Operands Not Changed)
IMM
DIR
EXT
IX2
IX1
IX
SP2
SP1
A3
B3
C3
D3
E3
F3
9E D3
9E E3
ii
dd
hh ll
ee ff
ff
ee ff
ff
2
3
4
4
3
3
5
4
pp
rpp
prpp
prpp
rpp
rfp
pprpp
prpp
DAA
Decimal Adjust Accumulator
After ADD or ADC of BCD Values
INH 72 1 p U
DBNZ opr8a,rel
DBNZA rel
DBNZX rel
DBNZ oprx8,X,rel
DBNZ ,X,rel
DBNZ oprx8,SP,rel
Decrement A, X, or M and Branch if Not Zero
(if (result) 0)
DBNZX Affects X Not H
DIR
INH
INH
IX1
IX
SP1
3B
4B
5B
6B
7B
9E 6B
dd rr
rr
rr
ff rr
rr
ff rr
7
4
4
7
6
8
rfwpppp
fppp
fppp
rfwpppp
rfwppp
prfwpppp
DEC opr8a
DECA
DECX
DEC oprx8,X
DEC ,X
DEC oprx8,SP
Decrement M (M) $01
A (A) $01
X (X) $01
M (M) $01
M (M) $01
M (M) $01
DIR
INH
INH
IX1
IX
SP1
3A
4A
5A
6A
7A
9E 6A
dd
ff
ff
5
1
1
5
4
6
rfwpp
p
p
rfwpp
rfwp
prfwpp
DIV
Divide
A (H:A)(X); H Remainder
INH 52 6 fffffp
EOR #opr8i
EOR opr8a
EOR opr16a
EOR oprx16,X
EOR oprx8,X
EOR ,X
EOR oprx16,SP
EOR oprx8,SP
Exclusive OR Memory with Accumulator
A (A M)
IMM
DIR
EXT
IX2
IX1
IX
SP2
SP1
A8
B8
C8
D8
E8
F8
9E D8
9E E8
ii
dd
hh ll
ee ff
ff
ee ff
ff
2
3
4
4
3
3
5
4
pp
rpp
prpp
prpp
rpp
rfp
pprpp
prpp
0
Table 7-2. . Instruction Set Summary (Sheet 4 of 9)
Source
Form
Operation
A
d
d
r
e
s
s
M
o
d
e
Object Code
C
y
c
l
e
s
Cyc-by-Cyc
Details
Affect
on CCR
VH I N Z C
Chapter 7 Central Processor Unit (S08CPUV2)
MC9S08JM60 Series Data Sheet, Rev. 3
112 Freescale Semiconductor
INC opr8a
INCA
INCX
INC oprx8,X
INC ,X
INC oprx8,SP
Increment M (M) + $01
A (A) + $01
X (X) + $01
M (M) + $01
M (M) + $01
M (M) + $01
DIR
INH
INH
IX1
IX
SP1
3C
4C
5C
6C
7C
9E 6C
dd
ff
ff
5
1
1
5
4
6
rfwpp
p
p
rfwpp
rfwp
prfwpp
JMP opr8a
JMP opr16a
JMP oprx16,X
JMP oprx8,X
JMP ,X
Jump
PC Jump Address
DIR
EXT
IX2
IX1
IX
BC
CC
DC
EC
FC
dd
hh ll
ee ff
ff
3
4
4
3
3
ppp
pppp
pppp
ppp
ppp
JSR opr8a
JSR opr16a
JSR oprx16,X
JSR oprx8,X
JSR ,X
Jump to Subroutine
PC (PC) + n (n = 1, 2, or 3)
Push (PCL); SP (SP) $0001
Push (PCH); SP (SP) $0001
PC Unconditional Address
DIR
EXT
IX2
IX1
IX
BD
CD
DD
ED
FD
dd
hh ll
ee ff
ff
5
6
6
5
5
ssppp
pssppp
pssppp
ssppp
ssppp
LDA #opr8i
LDA opr8a
LDA opr16a
LDA oprx16,X
LDA oprx8,X
LDA ,X
LDA oprx16,SP
LDA oprx8,SP
Load Accumulator from Memory
A (M)
IMM
DIR
EXT
IX2
IX1
IX
SP2
SP1
A6
B6
C6
D6
E6
F6
9E D6
9E E6
ii
dd
hh ll
ee ff
ff
ee ff
ff
2
3
4
4
3
3
5
4
pp
rpp
prpp
prpp
rpp
rfp
pprpp
prpp
0
LDHX #opr16i
LDHX opr8a
LDHX opr16a
LDHX ,X
LDHX oprx16,X
LDHX oprx8,X
LDHX oprx8,SP
Load Index Register (H:X)
H:X (M:M + $0001)
IMM
DIR
EXT
IX
IX2
IX1
SP1
45
55
32
9E AE
9E BE
9E CE
9E FE
jj kk
dd
hh ll
ee ff
ff
ff
3
4
5
5
6
5
5
ppp
rrpp
prrpp
prrfp
pprrpp
prrpp
prrpp
0
LDX #opr8i
LDX opr8a
LDX opr16a
LDX oprx16,X
LDX oprx8,X
LDX ,X
LDX oprx16,SP
LDX oprx8,SP
Load X (Index Register Low) from Memory
X (M)
IMM
DIR
EXT
IX2
IX1
IX
SP2
SP1
AE
BE
CE
DE
EE
FE
9E DE
9E EE
ii
dd
hh ll
ee ff
ff
ee ff
ff
2
3
4
4
3
3
5
4
pp
rpp
prpp
prpp
rpp
rfp
pprpp
prpp
0
LSL opr8a
LSLA
LSLX
LSL oprx8,X
LSL ,X
LSL oprx8,SP
Logical Shift Left
(Same as ASL)
DIR
INH
INH
IX1
IX
SP1
38
48
58
68
78
9E 68
dd
ff
ff
5
1
1
5
4
6
rfwpp
p
p
rfwpp
rfwp
prfwpp
LSR opr8a
LSRA
LSRX
LSR oprx8,X
LSR ,X
LSR oprx8,SP
Logical Shift Right
DIR
INH
INH
IX1
IX
SP1
34
44
54
64
74
9E 64
dd
ff
ff
5
1
1
5
4
6
rfwpp
p
p
rfwpp
rfwp
prfwpp
0
Table 7-2. . Instruction Set Summary (Sheet 5 of 9)
Source
Form
Operation
A
d
d
r
e
s
s
M
o
d
e
Object Code
C
y
c
l
e
s
Cyc-by-Cyc
Details
Affect
on CCR
VH I N Z C
C
b0 b7
0
b0 b7
C 0
Chapter 7 Central Processor Unit (S08CPUV2)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 113
MOV opr8a,opr8a
MOV opr8a,X+
MOV #opr8i,opr8a
MOV ,X+,opr8a
Move
(M)
destination
(M)
source
In IX+/DIR and DIR/IX+ Modes,
H:X (H:X) + $0001
DIR/DIR
DIR/IX+
IMM/DIR
IX+/DIR
4E
5E
6E
7E
dd dd
dd
ii dd
dd
5
5
4
5
rpwpp
rfwpp
pwpp
rfwpp
0
MUL
Unsigned multiply
X:A (X) (A)
INH 42 5 ffffp 0 0
NEG opr8a
NEGA
NEGX
NEG oprx8,X
NEG ,X
NEG oprx8,SP
Negate M (M) = $00 (M)
(Twos Complement) A (A) = $00 (A)
X (X) = $00 (X)
M (M) = $00 (M)
M (M) = $00 (M)
M (M) = $00 (M)
DIR
INH
INH
IX1
IX
SP1
30
40
50
60
70
9E 60
dd
ff
ff
5
1
1
5
4
6
rfwpp
p
p
rfwpp
rfwp
prfwpp
NOP No Operation Uses 1 Bus Cycle INH 9D 1 p
NSA
Nibble Swap Accumulator
A (A[3:0]:A[7:4])
INH 62 1 p
ORA #opr8i
ORA opr8a
ORA opr16a
ORA oprx16,X
ORA oprx8,X
ORA ,X
ORA oprx16,SP
ORA oprx8,SP
Inclusive OR Accumulator and Memory
A (A) | (M)
IMM
DIR
EXT
IX2
IX1
IX
SP2
SP1
AA
BA
CA
DA
EA
FA
9E DA
9E EA
ii
dd
hh ll
ee ff
ff
ee ff
ff
2
3
4
4
3
3
5
4
pp
rpp
prpp
prpp
rpp
rfp
pprpp
prpp
0
PSHA
Push Accumulator onto Stack
Push (A); SP (SP) $0001
INH 87 2 sp
PSHH
Push H (Index Register High) onto Stack
Push (H); SP (SP) $0001
INH 8B 2 sp
PSHX
Push X (Index Register Low) onto Stack
Push (X); SP (SP) $0001
INH 89 2 sp
PULA
Pull Accumulator from Stack
SP (SP + $0001); Pull (A)
INH 86 3 ufp
PULH
Pull H (Index Register High) from Stack
SP (SP + $0001); Pull (H)
INH 8A 3 ufp
PULX
Pull X (Index Register Low) from Stack
SP (SP + $0001); Pull (X)
INH 88 3 ufp
ROL opr8a
ROLA
ROLX
ROL oprx8,X
ROL ,X
ROL oprx8,SP
Rotate Left through Carry
DIR
INH
INH
IX1
IX
SP1
39
49
59
69
79
9E 69
dd
ff
ff
5
1
1
5
4
6
rfwpp
p
p
rfwpp
rfwp
prfwpp
ROR opr8a
RORA
RORX
ROR oprx8,X
ROR ,X
ROR oprx8,SP
Rotate Right through Carry
DIR
INH
INH
IX1
IX
SP1
36
46
56
66
76
9E 66
dd
ff
ff
5
1
1
5
4
6
rfwpp
p
p
rfwpp
rfwp
prfwpp
Table 7-2. . Instruction Set Summary (Sheet 6 of 9)
Source
Form
Operation
A
d
d
r
e
s
s
M
o
d
e
Object Code
C
y
c
l
e
s
Cyc-by-Cyc
Details
Affect
on CCR
VH I N Z C
C
b0 b7
b0 b7
C
Chapter 7 Central Processor Unit (S08CPUV2)
MC9S08JM60 Series Data Sheet, Rev. 3
114 Freescale Semiconductor
RSP
Reset Stack Pointer (Low Byte)
SPL $FF
(High Byte Not Affected)
INH 9C 1 p
RTI
Return from Interrupt
SP (SP) + $0001; Pull (CCR)
SP (SP) + $0001; Pull (A)
SP (SP) + $0001; Pull (X)
SP (SP) + $0001; Pull (PCH)
SP (SP) + $0001; Pull (PCL)
INH 80 9 uuuuufppp
RTS
Return from Subroutine
SP SP + $0001; Pull (PCH)
SP SP + $0001; Pull (PCL)
INH 81 5 ufppp
SBC #opr8i
SBC opr8a
SBC opr16a
SBC oprx16,X
SBC oprx8,X
SBC ,X
SBC oprx16,SP
SBC oprx8,SP
Subtract with Carry
A (A) (M) (C)
IMM
DIR
EXT
IX2
IX1
IX
SP2
SP1
A2
B2
C2
D2
E2
F2
9E D2
9E E2
ii
dd
hh ll
ee ff
ff
ee ff
ff
2
3
4
4
3
3
5
4
pp
rpp
prpp
prpp
rpp
rfp
pprpp
prpp
SEC
Set Carry Bit
(C 1)
INH 99 1 p 1
SEI
Set Interrupt Mask Bit
(I 1)
INH 9B 1 p 1
STA opr8a
STA opr16a
STA oprx16,X
STA oprx8,X
STA ,X
STA oprx16,SP
STA oprx8,SP
Store Accumulator in Memory
M (A)
DIR
EXT
IX2
IX1
IX
SP2
SP1
B7
C7
D7
E7
F7
9E D7
9E E7
dd
hh ll
ee ff
ff
ee ff
ff
3
4
4
3
2
5
4
wpp
pwpp
pwpp
wpp
wp
ppwpp
pwpp
0
STHX opr8a
STHX opr16a
STHX oprx8,SP
Store H:X (Index Reg.)
(M:M + $0001) (H:X)
DIR
EXT
SP1
35
96
9E FF
dd
hh ll
ff
4
5
5
wwpp
pwwpp
pwwpp
0
STOP
Enable Interrupts: Stop Processing
Refer to MCU Documentation
I bit 0; Stop Processing
INH 8E 2 fp... 0
STX opr8a
STX opr16a
STX oprx16,X
STX oprx8,X
STX ,X
STX oprx16,SP
STX oprx8,SP
Store X (Low 8 Bits of Index Register)
in Memory
M (X)
DIR
EXT
IX2
IX1
IX
SP2
SP1
BF
CF
DF
EF
FF
9E DF
9E EF
dd
hh ll
ee ff
ff
ee ff
ff
3
4
4
3
2
5
4
wpp
pwpp
pwpp
wpp
wp
ppwpp
pwpp
0
Table 7-2. . Instruction Set Summary (Sheet 7 of 9)
Source
Form
Operation
A
d
d
r
e
s
s
M
o
d
e
Object Code
C
y
c
l
e
s
Cyc-by-Cyc
Details
Affect
on CCR
VH I N Z C
Chapter 7 Central Processor Unit (S08CPUV2)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 115
SUB #opr8i
SUB opr8a
SUB opr16a
SUB oprx16,X
SUB oprx8,X
SUB ,X
SUB oprx16,SP
SUB oprx8,SP
Subtract
A (A) (M)
IMM
DIR
EXT
IX2
IX1
IX
SP2
SP1
A0
B0
C0
D0
E0
F0
9E D0
9E E0
ii
dd
hh ll
ee ff
ff
ee ff
ff
2
3
4
4
3
3
5
4
pp
rpp
prpp
prpp
rpp
rfp
pprpp
prpp
SWI
Software Interrupt
PC (PC) + $0001
Push (PCL); SP (SP) $0001
Push (PCH); SP (SP) $0001
Push (X); SP (SP) $0001
Push (A); SP (SP) $0001
Push (CCR); SP (SP) $0001
I 1;
PCH Interrupt Vector High Byte
PCL Interrupt Vector Low Byte
INH 83 11 sssssvvfppp 1
TAP
Transfer Accumulator to CCR
CCR (A)
INH 84 1 p
TAX
Transfer Accumulator to X (Index Register
Low)
X (A)
INH 97 1 p
TPA
Transfer CCR to Accumulator
A (CCR)
INH 85 1 p
TST opr8a
TSTA
TSTX
TST oprx8,X
TST ,X
TST oprx8,SP
Test for Negative or Zero (M) $00
(A) $00
(X) $00
(M) $00
(M) $00
(M) $00
DIR
INH
INH
IX1
IX
SP1
3D
4D
5D
6D
7D
9E 6D
dd
ff
ff
4
1
1
4
3
5
rfpp
p
p
rfpp
rfp
prfpp
0
TSX
Transfer SP to Index Reg.
H:X (SP) + $0001
INH 95 2 fp
TXA
Transfer X (Index Reg. Low) to Accumulator
A (X)
INH 9F 1 p
Table 7-2. . Instruction Set Summary (Sheet 8 of 9)
Source
Form
Operation
A
d
d
r
e
s
s
M
o
d
e
Object Code
C
y
c
l
e
s
Cyc-by-Cyc
Details
Affect
on CCR
VH I N Z C
Chapter 7 Central Processor Unit (S08CPUV2)
MC9S08JM60 Series Data Sheet, Rev. 3
116 Freescale Semiconductor
TXS
Transfer Index Reg. to SP
SP (H:X) $0001
INH 94 2 fp
WAIT
Enable Interrupts; Wait for Interrupt
I bit 0; Halt CPU
INH 8F 2+ fp... 0
Source Form: Everything in the source forms columns, except expressions in italic characters, is literal information which must appear in
the assembly source file exactly as shown. The initial 3- to 5-letter mnemonic and the characters (# , ( ) and +) are always a literal
characters.
n Any label or expression that evaluates to a single integer in the range 0-7.
opr8i Any label or expression that evaluates to an 8-bit immediate value.
opr16i Any label or expression that evaluates to a 16-bit immediate value.
opr8a Any label or expression that evaluates to an 8-bit direct-page address ($00xx).
opr16a Any label or expression that evaluates to a 16-bit address.
oprx8 Any label or expression that evaluates to an unsigned 8-bit value, used for indexed addressing.
oprx16 Any label or expression that evaluates to a 16-bit value, used for indexed addressing.
rel Any label or expression that refers to an address that is within 128 to +127 locations from the start of the next instruction.
Operation Symbols:
A Accumulator
CCR Condition code register
H Index register high byte
M Memory location
n Any bit
opr Operand (one or two bytes)
PC Program counter
PCH Program counter high byte
PCL Program counter low byte
rel Relative program counter offset byte
SP Stack pointer
SPL Stack pointer low byte
X Index register low byte
& Logical AND
| Logical OR
Logical EXCLUSIVE OR
( ) Contents of
+ Add
Subtract, Negation (twos complement)
Multiply
Divide
# Immediate value
Loaded with
: Concatenated with
Addressing Modes:
DIR Direct addressing mode
EXT Extended addressing mode
IMM Immediate addressing mode
INH Inherent addressing mode
IX Indexed, no offset addressing mode
IX1 Indexed, 8-bit offset addressing mode
IX2 Indexed, 16-bit offset addressing mode
IX+ Indexed, no offset, post increment addressing mode
IX1+ Indexed, 8-bit offset, post increment addressing mode
REL Relative addressing mode
SP1 Stack pointer, 8-bit offset addressing mode
SP2 Stack pointer 16-bit offset addressing mode
Cycle-by-Cycle Codes:
f Free cycle. This indicates a cycle where the CPU
does not require use of the system buses. An f
cycle is always one cycle of the system bus clock
and is always a read cycle.
p Progryam fetch; read from next consecutive
location in program memory
r Read 8-bit operand
s Push (write) one byte onto stack
u Pop (read) one byte from stack
v Read vector from $FFxx (high byte first)
w Write 8-bit operand
CCR Bits:
V Overflow bit
H Half-carry bit
I Interrupt mask
N Negative bit
Z Zero bit
C Carry/borrow bit
CCR Effects:
Set or cleared
Not affected
U Undefined
Table 7-2. . Instruction Set Summary (Sheet 9 of 9)
Source
Form
Operation
A
d
d
r
e
s
s
M
o
d
e
Object Code
C
y
c
l
e
s
Cyc-by-Cyc
Details
Affect
on CCR
VH I N Z C
Chapter 7 Central Processor Unit (S08CPUV2)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 117
Table 7-3. Opcode Map (Sheet 1 of 2)
Bit-Manipulation Branch Read-Modify-Write Control Register/Memory
00 5
BRSET0
3 DIR
10 5
BSET0
2 DIR
20 3
BRA
2 REL
30 5
NEG
2 DIR
40 1
NEGA
1 INH
50 1
NEGX
1 INH
60 5
NEG
2 IX1
70 4
NEG
1 IX
80 9
RTI
1 INH
90 3
BGE
2 REL
A0 2
SUB
2 IMM
B0 3
SUB
2 DIR
C0 4
SUB
3 EXT
D0 4
SUB
3 IX2
E0 3
SUB
2 IX1
F0 3
SUB
1 IX
01 5
BRCLR0
3 DIR
11 5
BCLR0
2 DIR
21 3
BRN
2 REL
31 5
CBEQ
3 DIR
41 4
CBEQA
3 IMM
51 4
CBEQX
3 IMM
61 5
CBEQ
3 IX1+
71 5
CBEQ
2 IX+
81 6
RTS
1 INH
91 3
BLT
2 REL
A1 2
CMP
2 IMM
B1 3
CMP
2 DIR
C1 4
CMP
3 EXT
D1 4
CMP
3 IX2
E1 3
CMP
2 IX1
F1 3
CMP
1 IX
02 5
BRSET1
3 DIR
12 5
BSET1
2 DIR
22 3
BHI
2 REL
32 5
LDHX
3 EXT
42 5
MUL
1 INH
52 6
DIV
1 INH
62 1
NSA
1 INH
72 1
DAA
1 INH
82 5+
BGND
1 INH
92 3
BGT
2 REL
A2 2
SBC
2 IMM
B2 3
SBC
2 DIR
C2 4
SBC
3 EXT
D2 4
SBC
3 IX2
E2 3
SBC
2 IX1
F2 3
SBC
1 IX
03 5
BRCLR1
3 DIR
13 5
BCLR1
2 DIR
23 3
BLS
2 REL
33 5
COM
2 DIR
43 1
COMA
1 INH
53 1
COMX
1 INH
63 5
COM
2 IX1
73 4
COM
1 IX
83 11
SWI
1 INH
93 3
BLE
2 REL
A3 2
CPX
2 IMM
B3 3
CPX
2 DIR
C3 4
CPX
3 EXT
D3 4
CPX
3 IX2
E3 3
CPX
2 IX1
F3 3
CPX
1 IX
04 5
BRSET2
3 DIR
14 5
BSET2
2 DIR
24 3
BCC
2 REL
34 5
LSR
2 DIR
44 1
LSRA
1 INH
54 1
LSRX
1 INH
64 5
LSR
2 IX1
74 4
LSR
1 IX
84 1
TAP
1 INH
94 2
TXS
1 INH
A4 2
AND
2 IMM
B4 3
AND
2 DIR
C4 4
AND
3 EXT
D4 4
AND
3 IX2
E4 3
AND
2 IX1
F4 3
AND
1 IX
05 5
BRCLR2
3 DIR
15 5
BCLR2
2 DIR
25 3
BCS
2 REL
35 4
STHX
2 DIR
45 3
LDHX
3 IMM
55 4
LDHX
2 DIR
65 3
CPHX
3 IMM
75 5
CPHX
2 DIR
85 1
TPA
1 INH
95 2
TSX
1 INH
A5 2
BIT
2 IMM
B5 3
BIT
2 DIR
C5 4
BIT
3 EXT
D5 4
BIT
3 IX2
E5 3
BIT
2 IX1
F5 3
BIT
1 IX
06 5
BRSET3
3 DIR
16 5
BSET3
2 DIR
26 3
BNE
2 REL
36 5
ROR
2 DIR
46 1
RORA
1 INH
56 1
RORX
1 INH
66 5
ROR
2 IX1
76 4
ROR
1 IX
86 3
PULA
1 INH
96 5
STHX
3 EXT
A6 2
LDA
2 IMM
B6 3
LDA
2 DIR
C6 4
LDA
3 EXT
D6 4
LDA
3 IX2
E6 3
LDA
2 IX1
F6 3
LDA
1 IX
07 5
BRCLR3
3 DIR
17 5
BCLR3
2 DIR
27 3
BEQ
2 REL
37 5
ASR
2 DIR
47 1
ASRA
1 INH
57 1
ASRX
1 INH
67 5
ASR
2 IX1
77 4
ASR
1 IX
87 2
PSHA
1 INH
97 1
TAX
1 INH
A7 2
AIS
2 IMM
B7 3
STA
2 DIR
C7 4
STA
3 EXT
D7 4
STA
3 IX2
E7 3
STA
2 IX1
F7 2
STA
1 IX
08 5
BRSET4
3 DIR
18 5
BSET4
2 DIR
28 3
BHCC
2 REL
38 5
LSL
2 DIR
48 1
LSLA
1 INH
58 1
LSLX
1 INH
68 5
LSL
2 IX1
78 4
LSL
1 IX
88 3
PULX
1 INH
98 1
CLC
1 INH
A8 2
EOR
2 IMM
B8 3
EOR
2 DIR
C8 4
EOR
3 EXT
D8 4
EOR
3 IX2
E8 3
EOR
2 IX1
F8 3
EOR
1 IX
09 5
BRCLR4
3 DIR
19 5
BCLR4
2 DIR
29 3
BHCS
2 REL
39 5
ROL
2 DIR
49 1
ROLA
1 INH
59 1
ROLX
1 INH
69 5
ROL
2 IX1
79 4
ROL
1 IX
89 2
PSHX
1 INH
99 1
SEC
1 INH
A9 2
ADC
2 IMM
B9 3
ADC
2 DIR
C9 4
ADC
3 EXT
D9 4
ADC
3 IX2
E9 3
ADC
2 IX1
F9 3
ADC
1 IX
0A 5
BRSET5
3 DIR
1A 5
BSET5
2 DIR
2A 3
BPL
2 REL
3A 5
DEC
2 DIR
4A 1
DECA
1 INH
5A 1
DECX
1 INH
6A 5
DEC
2 IX1
7A 4
DEC
1 IX
8A 3
PULH
1 INH
9A 1
CLI
1 INH
AA 2
ORA
2 IMM
BA 3
ORA
2 DIR
CA 4
ORA
3 EXT
DA 4
ORA
3 IX2
EA 3
ORA
2 IX1
FA 3
ORA
1 IX
0B 5
BRCLR5
3 DIR
1B 5
BCLR5
2 DIR
2B 3
BMI
2 REL
3B 7
DBNZ
3 DIR
4B 4
DBNZA
2 INH
5B 4
DBNZX
2 INH
6B 7
DBNZ
3 IX1
7B 6
DBNZ
2 IX
8B 2
PSHH
1 INH
9B 1
SEI
1 INH
AB 2
ADD
2 IMM
BB 3
ADD
2 DIR
CB 4
ADD
3 EXT
DB 4
ADD
3 IX2
EB 3
ADD
2 IX1
FB 3
ADD
1 IX
0C 5
BRSET6
3 DIR
1C 5
BSET6
2 DIR
2C 3
BMC
2 REL
3C 5
INC
2 DIR
4C 1
INCA
1 INH
5C 1
INCX
1 INH
6C 5
INC
2 IX1
7C 4
INC
1 IX
8C 1
CLRH
1 INH
9C 1
RSP
1 INH
BC 3
JMP
2 DIR
CC 4
JMP
3 EXT
DC 4
JMP
3 IX2
EC 3
JMP
2 IX1
FC 3
JMP
1 IX
0D 5
BRCLR6
3 DIR
1D 5
BCLR6
2 DIR
2D 3
BMS
2 REL
3D 4
TST
2 DIR
4D 1
TSTA
1 INH
5D 1
TSTX
1 INH
6D 4
TST
2 IX1
7D 3
TST
1 IX
9D 1
NOP
1 INH
AD 5
BSR
2 REL
BD 5
JSR
2 DIR
CD 6
JSR
3 EXT
DD 6
JSR
3 IX2
ED 5
JSR
2 IX1
FD 5
JSR
1 IX
0E 5
BRSET7
3 DIR
1E 5
BSET7
2 DIR
2E 3
BIL
2 REL
3E 6
CPHX
3 EXT
4E 5
MOV
3 DD
5E 5
MOV
2 DIX+
6E 4
MOV
3 IMD
7E 5
MOV
2 IX+D
8E 2+
STOP
1 INH
9E
Page 2
AE 2
LDX
2 IMM
BE 3
LDX
2 DIR
CE 4
LDX
3 EXT
DE 4
LDX
3 IX2
EE 3
LDX
2 IX1
FE 3
LDX
1 IX
0F 5
BRCLR7
3 DIR
1F 5
BCLR7
2 DIR
2F 3
BIH
2 REL
3F 5
CLR
2 DIR
4F 1
CLRA
1 INH
5F 1
CLRX
1 INH
6F 5
CLR
2 IX1
7F 4
CLR
1 IX
8F 2+
WAIT
1 INH
9F 1
TXA
1 INH
AF 2
AIX
2 IMM
BF 3
STX
2 DIR
CF 4
STX
3 EXT
DF 4
STX
3 IX2
EF 3
STX
2 IX1
FF 2
STX
1 IX
INH Inherent REL Relative SP1 Stack Pointer, 8-Bit Offset
IMM Immediate IX Indexed, No Offset SP2 Stack Pointer, 16-Bit Offset
DIR Direct IX1 Indexed, 8-Bit Offset IX+ Indexed, No Offset with
EXT Extended IX2 Indexed, 16-Bit Offset Post Increment
DD DIR to DIR IMD IMM to DIR IX1+ Indexed, 1-Byte Offset with
IX+D IX+ to DIR DIX+ DIR to IX+ Post Increment
Opcode in
Hexadecimal
Number of Bytes
F0 3
SUB
1 IX
HCS08 Cycles
Instruction Mnemonic
Addressing Mode
Chapter 7 Central Processor Unit (S08CPUV2)
MC9S08JM60 Series Data Sheet, Rev. 3
118 Freescale Semiconductor
Bit-Manipulation Branch Read-Modify-Write Control Register/Memory
9E60 6
NEG
3 SP1
9ED0 5
SUB
4 SP2
9EE0 4
SUB
3 SP1
9E61 6
CBEQ
4 SP1
9ED1 5
CMP
4 SP2
9EE1 4
CMP
3 SP1
9ED2 5
SBC
4 SP2
9EE2 4
SBC
3 SP1
9E63 6
COM
3 SP1
9ED3 5
CPX
4 SP2
9EE3 4
CPX
3 SP1
9EF3 6
CPHX
3 SP1
9E64 6
LSR
3 SP1
9ED4 5
AND
4 SP2
9EE4 4
AND
3 SP1
9ED5 5
BIT
4 SP2
9EE5 4
BIT
3 SP1
9E66 6
ROR
3 SP1
9ED6 5
LDA
4 SP2
9EE6 4
LDA
3 SP1
9E67 6
ASR
3 SP1
9ED7 5
STA
4 SP2
9EE7 4
STA
3 SP1
9E68 6
LSL
3 SP1
9ED8 5
EOR
4 SP2
9EE8 4
EOR
3 SP1
9E69 6
ROL
3 SP1
9ED9 5
ADC
4 SP2
9EE9 4
ADC
3 SP1
9E6A 6
DEC
3 SP1
9EDA 5
ORA
4 SP2
9EEA 4
ORA
3 SP1
9E6B 8
DBNZ
4 SP1
9EDB 5
ADD
4 SP2
9EEB 4
ADD
3 SP1
9E6C 6
INC
3 SP1
9E6D 5
TST
3 SP1
9EAE 5
LDHX
2 IX
9EBE 6
LDHX
4 IX2
9ECE 5
LDHX
3 IX1
9EDE 5
LDX
4 SP2
9EEE 4
LDX
3 SP1
9EFE 5
LDHX
3 SP1
9E6F 6
CLR
3 SP1
9EDF 5
STX
4 SP2
9EEF 4
STX
3 SP1
9EFF 5
STHX
3 SP1
INH Inherent REL Relative SP1 Stack Pointer, 8-Bit Offset
IMM Immediate IX Indexed, No Offset SP2 Stack Pointer, 16-Bit Offset
DIR Direct IX1 Indexed, 8-Bit Offset IX+ Indexed, No Offset with
EXT Extended IX2 Indexed, 16-Bit Offset Post Increment
DD DIR to DIR IMD IMM to DIR IX1+ Indexed, 1-Byte Offset with
IX+D IX+ to DIR DIX+ DIR to IX+ Post Increment
Note: All Sheet 2 Opcodes are Preceded by the Page 2 Prebyte (9E)
Prebyte (9E) and Opcode in
Hexadecimal
Number of Bytes
9E60 6
NEG
3 SP1
HCS08 Cycles
Instruction Mnemonic
Addressing Mode
Table 7-3. Opcode Map (Sheet 2 of 2)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 119
Chapter 8
5 V Analog Comparator (S08ACMPV2)
8.1 Introduction
The analog comparator module (ACMP) provides a circuit for comparing two analog input voltages or for
comparing one analog input voltage to an internal reference voltage. The comparator circuit is designed to
operate across the full range of the supply voltage (rail to rail operation).
NOTE
MC9S08JM60 series devices operate at a higher voltage range (2.7 V to
5.5 V) and do not include stop1 mode. Therefore, please disregard
references to stop1.
8.1.1 ACMP Configuration Information
When using the bandgap reference voltage for input to ACMP+, the user must enable the bandgap buffer
by setting BGBE =1 in SPMSC1 see Section 5.7.7, System Power Management Status and Control 1
Register (SPMSC1). For value of bandgap voltage reference see Appendix A.6, DC Characteristics.
8.1.2 ACMP/TPM Configuration Information
The ACMP module can be configured to connect the output of the analog comparator to TPM input capture
channel 0 by setting ACIC in SOPT2. With ACIC set, the TPM1CH0 pin is not available externally
regardless of the configuration of the TPM module.
Chapter 8 5 V Analog Comparator (S08ACMPV2)
MC9S08JM60 Series Data Sheet, Rev. 3
120 Freescale Semiconductor
Figure 8-1. MC9S08JM60 Series Block Diagram Highlighting ACMP Block and Pins
PTD4/ADP11
PTD5
PTD6
PTC1/SDA
PTC0/SCL
V
SS
V
DD
PTE3/TPM1CH1
PTE2/TPM1CH0
PTA5 PTA0
PTE0/TxD1
PTE1/RxD1
PTD1/ADP9/ACMP
PTD0/ADP8/ACMP+
PTC6
PTC5/RxD2
PTC4
PTC3/TxD2
PTC2
P
O
R
T
A
P
O
R
T
C
P
O
R
T
D
P
O
R
T
E
8-BIT KEYBOARD
INTERRUPT MODULE (KBI)
IIC MODULE (IIC)
8-/16-BIT SERIAL PERIPHERAL
INTERFACE MODULE (SPI1)
USER Flash (IN BYTES)
USER RAM (IN BYTES)
ON-CHIP ICE AND
DEBUG MODULE (DBG)
MC9S08JM60 = 60,912
HCS08 CORE
CPU BDC
NOTES:
1. Port pins are software configurable with pullup device if input port.
2. Pin contains software configurable pullup/pull-down device if IRQ is enabled
(IRQPE = 1). Pull-down is enabled if rising edge detect is selected (IRQEDG = 1)
3. IRQ does not have a clamp diode to V
DD
. IRQ must not be driven above V
DD
.
4. Pin contains integrated pullup device.
5. When pin functions as KBI (KBIPEn = 1) and associated pin is configured to enable the
pullup device, KBEDGn can be used to reconfigure the pullup as a pull-down device.
2-CHANNEL TIMER/PWM
MODULE (TPM2)
PTB5/KBIP5/ADP5
P
O
R
T
B
PTE5/MOSI1
PTE4/MISO1
PTE6/SPSCK1
PTE7/SS1
HCS08 SYSTEM CONTROL
RESETS AND INTERRUPTS
MODES OF OPERATION
POWER MANAGEMENT
VOLTAGE
REGULATOR
COP IRQ LVD
LOW-POWER OSCILLATOR
MULTI-PURPOSE CLOCK
GENERATOR (MCG)
RESET
V
SSAD
V
DDAD
V
REFH
ANALOG-TO-DIGITAL
CONVERTER (ADC)
6-CHANNEL TIMER/PWM
MODULE (TPM1)
PTD7
6
PTB4/KBIP4/ADP4
PTG3/KBIP7
PTG2/KBIP6
P
O
R
T
G
12-CHANNEL, 12-BIT
BKGD/MS
PTF3/TPM1CH5
PTF2/TPM1CH4
PTF0/TPM1CH2
PTF1/TPM1CH3
P
O
R
T
F
PTF5/TPM2CH1
PTF4/TPM2CH0
PTF6
PTF7
INTERFACE MODULE (SCI1)
SERIAL COMMUNICATIONS
INTERFACE MODULE (SCI2)
SERIAL COMMUNICATIONS
PTG0/KBIP0
PTG1/KBIP1
MC9S08JM32 = 32,768
V
REFL
PTG4/XTAL
PTG5/EXTAL
IRQ/TPMCLK
RxD2
TxD2
SDA
SCL
8
KBIPx
KBIPx
TPMCLK
SPSCK1
SS1
MISO1
MOSI1
TPMCLK
TPM1CH1
TPM1CH0
RxD1
TxD1
EXTAL
XTAL
4
4
USB SIE
USB ENDPOINT
RAM
FULL SPEED
USB
TRANSCEIVER
USBDP
USBDN
MISO2
SS2
SPSCK2
MOSI2
PTB1/MOSI2/ADP1
PTB0/MISO2/ADP0
PTB7/ADP7
PTB6/ADP6
8-/16-BIT SERIAL PERIPHERAL
INTERFACE MODULE (SPI2)
REAL-TIME COUNTER
(RTC)
PTB3/SS2/ADP3
PTB2/SPSCK2/ADP2
TPM1CHx
4
TPM2CH1
TPM2CH0
4
ANALOG COMPARATOR
(ACMP)
SYSTEM
USB 3.3-V VOLTAGE REGULATOR
V
USB33
MC9S08JM60 = 4096
MC9S08JM32 = 2048
ACMPO
ACMP+
ACMP
PTD3/KBIP3/ADP10
PTD2/KBIP2/ACMPO
V
SSOSC
Analog Comparator (S08ACMPV2)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 121
8.1.3 Features
The ACMP has the following features:
Full rail to rail supply operation.
Selectable interrupt on rising edge, falling edge, or either rising or falling edges of comparator
output.
Option to compare to fixed internal bandgap reference voltage.
Option to allow comparator output to be visible on a pin, ACMPO.
Can operate in stop3 mode
8.1.4 Modes of Operation
This section defines the ACMP operation in wait, stop and background debug modes.
8.1.4.1 ACMP in Wait Mode
The ACMP continues to run in wait mode if enabled before executing the WAIT instruction. Therefore,
the ACMP can be used to bring the MCU out of wait mode if the ACMP interrupt, ACIE is enabled. For
lowest possible current consumption, the ACMP should be disabled by software if not required as an
interrupt source during wait mode.
8.1.4.2 ACMP in Stop Modes
8.1.4.2.1 Stop3 Mode Operation
The ACMP continues to operate in stop3 mode if enabled and compare operation remains active. If
ACOPE is enabled, comparator output operates as in the normal operating mode and comparator output is
placed onto the external pin. The MCU is brought out of stop when a compare event occurs and ACIE is
enabled; ACF flag sets accordingly.
If stop is exited with a reset, the ACMP will be put into its reset state.
8.1.4.2.2 Stop2 and Stop1 Mode Operation
During either stop2 and stop1 mode, the ACMP module will be fully powered down. Upon wake-up from
stop2 or stop1 mode, the ACMP module will be in the reset state.
8.1.4.3 ACMP in Active Background Mode
When the microcontroller is in active background mode, the ACMP will continue to operate normally.
8.1.5 Block Diagram
The block diagram for the Analog Comparator module is shown Figure 8-2.
Analog Comparator (S08ACMPV2)
MC9S08JM60 Series Data Sheet, Rev. 3
122 Freescale Semiconductor
Figure 8-2. Analog Comparator 5V (ACMP5) Block Diagram
+
-
Interrupt
Control
Internal
Reference
ACBGS
Internal Bus
Status & Control
Register
A
C
M
O
D
s
e
t
A
C
F
ACME
ACF
ACIE
ACOPE
Comparator
ACMP
INTERRUPT
REQUEST
ACMP+
ACMP-
ACMPO
Analog Comparator (S08ACMPV2)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 123
8.2 External Signal Description
The ACMP has two analog input pins, ACMP+ and ACMP- and one digital output pin ACMPO. Each of
these pins can accept an input voltage that varies across the full operating voltage range of the MCU. As
shown in Figure 8-2, the ACMP- pin is connected to the inverting input of the comparator, and the ACMP+
pin is connected to the comparator non-inverting input if ACBGS is a 0. As shown in Figure 8-2, the
ACMPO pin can be enabled to drive an external pin.
The signal properties of ACMP are shown in Table 8-1.
8.3 Memory Map
8.3.1 Register Descriptions
The ACMP includes one register:
An 8-bit status and control register
Refer to the direct-page register summary in the memory section of this data sheet for the absolute address
assignments for all ACMP registers.This section refers to registers and control bits only by their names.
Some MCUs may have more than one ACMP, so register names include placeholder characters to identify
which ACMP is being referenced.
Table 8-1. Signal Properties
Signal Function I/O
ACMP- Inverting analog input to the ACMP.
(Minus input)
I
ACMP+ Non-inverting analog input to the ACMP.
(Positive input)
I
ACMPO Digital output of the ACMP. O
Analog Comparator (S08ACMPV2)
MC9S08JM60 Series Data Sheet, Rev. 3
124 Freescale Semiconductor
8.3.1.1 ACMP Status and Control Register (ACMPSC)
ACMPSC contains the status flag and control bits which are used to enable and configure the ACMP.
7 6 5 4 3 2 1 0
R
ACME ACBGS ACF ACIE
ACO
ACOPE ACMOD
W
Reset: 0 0 0 0 0 0 0 0
= Unimplemented
Figure 8-3. ACMP Status and Control Register
Table 8-2. ACMP Status and Control Register Field Descriptions
Field Description
7
ACME
Analog Comparator Module Enable ACME enables the ACMP module.
0 ACMP not enabled
1 ACMP is enabled
6
ACBGS
Analog Comparator Bandgap Select ACBGS is used to select between the bandgap reference voltage or
the ACMP+ pin as the input to the non-inverting input of the analog comparatorr.
0 External pin ACMP+ selected as non-inverting input to comparator
1 Internal reference select as non-inverting input to comparator
Note: refer to this chapter introduction to verify if any other config bits are necessary to enable the bandgap
reference in the chip level.
5
ACF
Analog Comparator Flag ACF is set when a compare event occurs. Compare events are defined by ACMOD.
ACF is cleared by writing a one to ACF.
0 Compare event has not occurred
1 Compare event has occurred
4
ACIE
Analog Comparator Interrupt Enable ACIE enables the interrupt from the ACMP. When ACIE is set, an
interrupt will be asserted when ACF is set.
0 Interrupt disabled
1 Interrupt enabled
3
ACO
Analog Comparator Output Reading ACO will return the current value of the analog comparator output. ACO
is reset to a 0 and will read as a 0 when the ACMP is disabled (ACME = 0).
2
ACOPE
Analog Comparator Output Pin Enable ACOPE is used to enable the comparator output to be placed onto
the external pin, ACMPO.
0 Analog comparator output not available on ACMPO
1 Analog comparator output is driven out on ACMPO
1:0
ACMOD
Analog Comparator Mode ACMOD selects the type of compare event which sets ACF.
00 Encoding 0 Comparator output falling edge
01 Encoding 1 Comparator output rising edge
10 Encoding 2 Comparator output falling edge
11 Encoding 3 Comparator output rising or falling edge
Analog Comparator (S08ACMPV2)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 125
8.4 Functional Description
The analog comparator can be used to compare two analog input voltages applied to ACMP+ and ACMP-;
or it can be used to compare an analog input voltage applied to ACMP- with an internal bandgap reference
voltage. ACBGS is used to select between the bandgap reference voltage or the ACMP+ pin as the input
to the non-inverting input of the analog comparator. The comparator output is high when the non-inverting
input is greater than the inverting input, and is low when the non-inverting input is less than the inverting
input. ACMOD is used to select the condition which will cause ACF to be set. ACF can be set on a rising
edge of the comparator output, a falling edge of the comparator output, or either a rising or a falling edge
(toggle). The comparator output can be read directly through ACO. The comparator output can be driven
onto the ACMPO pin using ACOPE.
Analog Comparator (S08ACMPV2)
MC9S08JM60 Series Data Sheet, Rev. 3
126 Freescale Semiconductor
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 127
Chapter 9
Keyboard Interrupt (S08KBIV2)
9.1 Introduction
The MC9S08JM60 series have one KBI module with eight keyboard interrupt inputs. See Chapter 2, Pins
and Connections, for more information about the logic and hardware aspects of these pins.
NOTE
MC9S08JM60 series devices operate at a higher voltage range (2.7 V to
5.5 V) and do not include stop1 mode. Therefore, please disregard
references to stop1.
Keyboard Interrupt (KBI) ModuleChapter 9 Keyboard Interrupt (S08KBIV2)
MC9S08JM60 Series Data Sheet, Rev. 3
128 Freescale Semiconductor
Figure 9-1. MC9S08JM60 Series Block Diagram Highlighting KBI Block and Pins
PTD4/ADP11
PTD5
PTD6
PTC1/SDA
PTC0/SCL
V
SS
V
DD
PTE3/TPM1CH1
PTE2/TPM1CH0
PTA5 PTA0
PTE0/TxD1
PTE1/RxD1
PTD1/ADP9/ACMP
PTD0/ADP8/ACMP+
PTC6
PTC5/RxD2
PTC4
PTC3/TxD2
PTC2
P
O
R
T
A
P
O
R
T
C
P
O
R
T
D
P
O
R
T
E
8-BIT KEYBOARD
INTERRUPT MODULE (KBI)
IIC MODULE (IIC)
8-/16-BIT SERIAL PERIPHERAL
INTERFACE MODULE (SPI1)
USER Flash (IN BYTES)
USER RAM (IN BYTES)
ON-CHIP ICE AND
DEBUG MODULE (DBG)
MC9S08JM60 = 60,912
HCS08 CORE
CPU BDC
NOTES:
1. Port pins are software configurable with pullup device if input port.
2. Pin contains software configurable pullup/pull-down device if IRQ is enabled
(IRQPE = 1). Pull-down is enabled if rising edge detect is selected (IRQEDG = 1)
3. IRQ does not have a clamp diode to V
DD
. IRQ must not be driven above V
DD
.
4. Pin contains integrated pullup device.
5. When pin functions as KBI (KBIPEn = 1) and associated pin is configured to enable the
pullup device, KBEDGn can be used to reconfigure the pullup as a pull-down device.
2-CHANNEL TIMER/PWM
MODULE (TPM2)
PTB5/KBIP5/ADP5
P
O
R
T
B
PTE5/MOSI1
PTE4/MISO1
PTE6/SPSCK1
PTE7/SS1
HCS08 SYSTEM CONTROL
RESETS AND INTERRUPTS
MODES OF OPERATION
POWER MANAGEMENT
VOLTAGE
REGULATOR
COP IRQ LVD
LOW-POWER OSCILLATOR
MULTI-PURPOSE CLOCK
GENERATOR (MCG)
RESET
V
SSAD
V
DDAD
V
REFH
ANALOG-TO-DIGITAL
CONVERTER (ADC)
6-CHANNEL TIMER/PWM
MODULE (TPM1)
PTD7
6
PTB4/KBIP4/ADP4
PTG3/KBIP7
PTG2/KBIP6
P
O
R
T
G
12-CHANNEL, 12-BIT
BKGD/MS
PTF3/TPM1CH5
PTF2/TPM1CH4
PTF0/TPM1CH2
PTF1/TPM1CH3
P
O
R
T
F
PTF5/TPM2CH1
PTF4/TPM2CH0
PTF6
PTF7
INTERFACE MODULE (SCI1)
SERIAL COMMUNICATIONS
INTERFACE MODULE (SCI2)
SERIAL COMMUNICATIONS
PTG0/KBIP0
PTG1/KBIP1
MC9S08JM32 = 32,768
V
REFL
PTG4/XTAL
PTG5/EXTAL
IRQ/TPMCLK
RxD2
TxD2
SDA
SCL
8
KBIPx
KBIPx
TPMCLK
SPSCK1
SS1
MISO1
MOSI1
TPMCLK
TPM1CH1
TPM1CH0
RxD1
TxD1
EXTAL
XTAL
4
4
USB SIE
USB ENDPOINT
RAM
FULL SPEED
USB
TRANSCEIVER
USBDP
USBDN
MISO2
SS2
SPSCK2
MOSI2
PTB1/MOSI2/ADP1
PTB0/MISO2/ADP0
PTB7/ADP7
PTB6/ADP6
8-/16-BIT SERIAL PERIPHERAL
INTERFACE MODULE (SPI2)
REAL-TIME COUNTER
(RTC)
PTB3/SS2/ADP3
PTB2/SPSCK2/ADP2
TPM1CHx
4
TPM2CH1
TPM2CH0
4
ANALOG COMPARATOR
(ACMP)
SYSTEM
USB 3.3-V VOLTAGE REGULATOR
V
USB33
MC9S08JM60 = 4096
MC9S08JM32 = 2048
ACMPO
ACMP+
ACMP
PTD3/KBIP3/ADP10
PTD2/KBIP2/ACMPO
V
SSOSC
Keyboard Interrupts (S08KBIV2)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 129
9.1.1 Features
The KBI features include:
Up to eight keyboard interrupt pins with individual pin enable bits.
Each keyboard interrupt pin is programmable as falling edge (or rising edge) only, or both falling
edge and low level (or both rising edge and high level) interrupt sensitivity.
One software enabled keyboard interrupt.
Exit from low-power modes.
9.1.2 Modes of Operation
This section defines the KBI operation in wait, stop, and background debug modes.
9.1.2.1 KBI in Wait Mode
The KBI continues to operate in wait mode if enabled before executing the WAIT instruction. Therefore,
an enabled KBI pin (KBPEx = 1) can be used to bring the MCU out of wait mode if the KBI interrupt is
enabled (KBIE = 1).
9.1.2.2 KBI in Stop Modes
The KBI operates asynchronously in stop3 mode if enabled before executing the STOP instruction.
Therefore, an enabled KBI pin (KBPEx = 1) can be used to bring the MCU out of stop3 mode if the KBI
interrupt is enabled (KBIE = 1).
During either stop1 or stop2 mode, the KBI is disabled. In some systems, the pins associated with the KBI
may be sources of wakeup from stop1 or stop2, see the stop modes section in the Modes of Operation
chapter. Upon wake-up from stop1 or stop2 mode, the KBI module will be in the reset state.
9.1.2.3 KBI in Active Background Mode
When the microcontroller is in active background mode, the KBI will continue to operate normally.
9.1.3 Block Diagram
The block diagram for the keyboard interrupt module is shown Figure 9-2.
Keyboard Interrupts (S08KBIV2)
MC9S08JM60 Series Data Sheet, Rev. 3
130 Freescale Semiconductor
Figure 9-2. KBI Block Diagram
9.2 External Signal Description
The KBI input pins can be used to detect either falling edges, or both falling edge and low level interrupt
requests. The KBI input pins can also be used to detect either rising edges, or both rising edge and high
level interrupt requests.
The signal properties of KBI are shown in Table 9-1.
9.3 Register Definition
The KBI includes three registers:
An 8-bit pin status and control register.
An 8-bit pin enable register.
An 8-bit edge select register.
Refer to the direct-page register summary in the Memory chapter for the absolute address assignments for
all KBI registers. This section refers to registers and control bits only by their names.
Some MCUs may have more than one KBI, so register names include placeholder characters to identify
which KBI is being referenced.
9.3.1 KBI Status and Control Register (KBISC)
KBISC contains the status flag and control bits, which are used to configure the KBI.
Table 9-1. Signal Properties
Signal Function I/O
KBIPn Keyboard interrupt pins I
D Q
CK
CLR
V
DD
KBMOD
KBIE
KEYBOARD
INTERRUPT FF
KBACK
RESET
SYNCHRONIZER
KBF
STOP BYPASS
STOP
BUSCLK
KBIPEn
0
1
S
KBEDGn
KBIPE0
0
1
S
KBEDG0
KBIP0
KBIPn
KBI
INTERRUPT
REQUEST
Keyboard Interrupts (S08KBIV2)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 131
9.3.2 KBI Pin Enable Register (KBIPE)
KBIPE contains the pin enable control bits.
9.3.3 KBI Edge Select Register (KBIES)
KBIES contains the edge select control bits.
7 6 5 4 3 2 1 0
R 0 0 0 0 KBF 0
KBIE KBMOD
W KBACK
Reset: 0 0 0 0 0 0 0 0
= Unimplemented
Figure 9-3. KBI Status and Control Register
Table 9-2. KBISC Register Field Descriptions
Field Description
7:4 Unused register bits, always read 0.
3
KBF
Keyboard Interrupt Flag KBF indicates when a keyboard interrupt is detected. Writes have no effect on KBF.
0 No keyboard interrupt detected.
1 Keyboard interrupt detected.
2
KBACK
Keyboard Acknowledge Writing a 1 to KBACK is part of the flag clearing mechanism. KBACK always reads
as 0.
1
KBIE
Keyboard Interrupt Enable KBIE determines whether a keyboard interrupt is requested.
0 Keyboard interrupt request not enabled.
1 Keyboard interrupt request enabled.
0
KBMOD
Keyboard Detection Mode KBMOD (along with the KBEDG bits) controls the detection mode of the keyboard
interrupt pins.0Keyboard detects edges only.
1 Keyboard detects both edges and levels.
7 6 5 4 3 2 1 0
R
KBIPE7 KBIPE6 KBIPE5 KBIPE4 KBIPE3 KBIPE2 KBIPE1 KBIPE0
W
Reset: 0 0 0 0 0 0 0 0
Figure 9-4. KBI Pin Enable Register
Table 9-3. KBIPE Register Field Descriptions
Field Description
7:0
KBIPEn
Keyboard Pin Enables Each of the KBIPEn bits enable the corresponding keyboard interrupt pin.
0 Pin not enabled as keyboard interrupt.
1 Pin enabled as keyboard interrupt.
Keyboard Interrupts (S08KBIV2)
MC9S08JM60 Series Data Sheet, Rev. 3
132 Freescale Semiconductor
9.4 Functional Description
This on-chip peripheral module is called a keyboard interrupt (KBI) module because originally it was
designed to simplify the connection and use of row-column matrices of keyboard switches. However, these
inputs are also useful as extra external interrupt inputs and as an external means of waking the MCU from
stop or wait low-power modes.
The KBI module allows up to eight pins to act as additional interrupt sources. Writing to the KBIPEn bits
in the keyboard interrupt pin enable register (KBIPE) independently enables or disables each KBI pin.
Each KBI pin can be configured as edge sensitive or edge and level sensitive based on the KBMOD bit in
the keyboard interrupt status and control register (KBISC). Edge sensitive can be software programmed to
be either falling or rising; the level can be either low or high. The polarity of the edge or edge and level
sensitivity is selected using the KBEDGn bits in the keyboard interrupt edge select register (KBIES).
9.4.1 Edge Only Sensitivity
Synchronous logic is used to detect edges. A falling edge is detected when an enabled keyboard interrupt
(KBIPEn=1) input signal is seen as a logic 1 (the deasserted level) during one bus cycle and then a logic 0
(the asserted level) during the next cycle. A rising edge is detected when the input signal is seen as a logic
0 (the deasserted level) during one bus cycle and then a logic 1 (the asserted level) during the next
cycle.Before the first edge is detected, all enabled keyboard interrupt input signals must be at the
deasserted logic levels. After any edge is detected, all enabled keyboard interrupt input signals must return
to the deasserted level before any new edge can be detected.
A valid edge on an enabled KBI pin will set KBF in KBISC. If KBIE in KBISC is set, an interrupt request
will be presented to the CPU. Clearing of KBF is accomplished by writing a 1 to KBACK in KBISC.
9.4.2 Edge and Level Sensitivity
A valid edge or level on an enabled KBI pin will set KBF in KBISC. If KBIE in KBISC is set, an interrupt
request will be presented to the CPU. Clearing of KBF is accomplished by writing a 1 to KBACK in
7 6 5 4 3 2 1 0
R
KBEDG7 KBEDG6 KBEDG5 KBEDG4 KBEDG3 KBEDG2 KBEDG1 KBEDG0
W
Reset: 0 0 0 0 0 0 0 0
Figure 9-5. KBI Edge Select Register
Table 9-4. KBIES Register Field Descriptions
Field Description
7:0
KBEDGn
Keyboard Edge Selects Each of the KBEDGn bits selects the falling edge/low level or rising edge/high level
function of the corresponding pin).
0 Falling edge/low level.
1 Rising edge/high level.
Keyboard Interrupts (S08KBIV2)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 133
KBISC provided all enabled keyboard inputs are at their deasserted levels. KBF will remain set if any
enabled KBI pin is asserted while attempting to clear by writing a 1 to KBACK.
9.4.3 KBI Pullup/Pulldown Resistors
The KBI pins can be configured to use an internal pullup/pulldown resistor using the associated I/O port
pullup enable register. If an internal resistor is enabled, the KBIES register is used to select whether the
resistor is a pullup (KBEDGn = 0) or a pulldown (KBEDGn = 1).
9.4.4 KBI Initialization
When a keyboard interrupt pin is first enabled it is possible to get a false keyboard interrupt flag. To
prevent a false interrupt request during keyboard initialization, the user should do the following:
1. Mask keyboard interrupts by clearing KBIE in KBISC.
2. Enable the KBI polarity by setting the appropriate KBEDGn bits in KBIES.
3. If using internal pullup/pulldown device, configure the associated pullup enable bits in PTxPE.
4. Enable the KBI pins by setting the appropriate KBIPEn bits in KBIPE.
5. Write to KBACK in KBISC to clear any false interrupts.
6. Set KBIE in KBISC to enable interrupts.
Keyboard Interrupts (S08KBIV2)
MC9S08JM60 Series Data Sheet, Rev. 3
134 Freescale Semiconductor
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 135
Chapter 10
Analog-to-Digital Converter (S08ADC12V1)
10.1 Overview
The 12-bit analog-to-digital converter (ADC) is a successive approximation ADC designed for operation
within an integrated microcontroller system-on-chip.
NOTE
MC9S08JM60 series devices operate at a higher voltage range (2.7 V to
5.5 V) and do not include stop1 mode. Therefore, please disregard
references to stop1.
10.1.1 Module Configurations
This section provides information for configuring the ADC on this device.
10.1.1.1 Channel Assignments
The ADC channel assignments for the MC9S08JM60 Series devices are shown in the table below.
Reserved channels convert to an unknown value.
Chapter 10 Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
136 Freescale Semiconductor
NOTE
Selecting the internal bandgap channel requires BGBE =1 in SPMSC1 see
Section 5.7.7, System Power Management Status and Control 1 Register
(SPMSC1). For value of bandgap voltage reference see Appendix A.8,
Analog Comparator (ACMP) Electricals.
10.1.1.2 Alternate Clock
The ADC is capable of performing conversions using the MCU bus clock, the bus clock divided by two,
the local asynchronous clock (ADACK) within the module, or the alternate clock (ALTCLK). The
ALTCLK on this device is the MCGERCLK.
The selected clock source must run at a frequency such that the ADC conversion clock (ADCK) runs at a
frequency within its specified range (f
ADCK
) after being divided down from the ALTCLK input as
determined by the ADIV bits.
ALTCLK is active while the MCU is in wait mode provided the conditions described above are met. This
allows ALTCLK to be used as the conversion clock source for the ADC while the MCU is in wait mode.
ALTCLK cannot be used as the ADC conversion clock source while the MCU is in stop3.
10.1.1.3 Hardware Trigger
The RTC on this device can be enabled as a hardware trigger for the ADC module by setting the
Table 10-1. ADC Channel Assignment
ADCH Channel Input Pin Control ADCH Channel Input Pin Control
00000 AD0 PTB0/MISO2/ADP0 ADPC0 10000 AD16 V
REFL
N/A
00001 AD1 PTB1/MOSI2/ADP1 ADPC1 10001 AD17 V
REFL
N/A
00010 AD2 PTB2/SPSCK2/ADP2 ADPC2 10010 AD18 V
REFL
N/A
00011 AD3 PTB3/SS2/ADP3 ADPC3 10011 AD19 V
REFL
N/A
00100 AD4 PTB4/KBIP4/ADP4 ADPC4 10100 AD20 V
REFL
N/A
00101 AD5 PTB5/KBIP5/ADP5 ADPC5 10101 AD21 Reserved N/A
00110 AD6 PTB6/ADP6 ADPC6 10110 AD22 Reserved N/A
00111 AD7 PTB7/ADP7 ADPC7 10111 AD23 Reserved N/A
01000 AD8 PTD0/ADP8/ACMP+ ADPC8 11000 AD24 Reserved N/A
01001 AD9 PTD1/ADP9/ACMP- ADPC9 11001 AD25 Reserved N/A
01010 AD10 PTD3/KBIP3/ADP10 ADPC10 11010 AD26 Temperature
Sensor
1
1
For more information, see Section 10.1.1.5, Temperature Sensor.
N/A
01011 AD11 PTD4/ADP11 ADPC11 11011 AD27 Internal Bandgap N/A
01100 AD12 V
REFL
ADPC12 11100 Reserved N/A
01101 AD13 V
REFL
ADPC13 11101 V
REFH
V
REFH
N/A
01110 AD14 V
REFL
ADPC14 11110 V
REFL
V
REFL
N/A
01111 AD15 V
REFL
ADPC15 11111 module
disabled
None N/A
Chapter 10 Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 137
ADCSC2[ADTRG] bit. When enabled, the ADC will be triggered every time RTCINT matches
RTCMOD. The RTC interrupt does not have to be enabled to trigger the ADC.
The RTC can be configured to cause a hardware trigger in MCU run, wait, and stop3.
10.1.1.4 Analog Pin Enables
The ADC on MC9S08JM60 series contains only two analog pin enable registers, APCTL1 and APCTL2.
10.1.1.5 Temperature Sensor
The ADC module includes a temperature sensor whose output is connected to one of the ADC analog
channel inputs. Equation 10-1 provides an approximate transfer function of the temperature sensor.
Temp = 25 ((V
TEMP
V
TEMP25
) m) Eqn. 10-1
where:
V
TEMP
is the voltage of the temperature sensor channel at the ambient temperature.
V
TEMP25
is the voltage of the temperature sensor channel at 25C.
m is the hot or cold voltage versus temperature slope in V/C.
For temperature calculations, use the V
TEMP25
and m values from the ADC Electricals table.
In application code, the user reads the temperature sensor channel, calculates V
TEMP
, and compares to
V
TEMP25
. If V
TEMP
is greater than V
TEMP25
, the cold slope value is applied in Equation 10-1. If V
TEMP
is less than V
TEMP25
the hot slope value is applied in Equation 10-1.
To improve accuracy, calibrate the bandgap voltage reference and temperature sensor. Calibrating at
25 C will improve accuracy to 4.5C. Calibration at 3 points, 40C, 25C, and 125C will improve
accuracy to 2.5C. Once calibration has been completed, the user will need to calculate the slope for both
hot and cold. In application code, the user would then calculate the temperature using Equation 10-1 as
detailed above and then determine if the temperature is above or below 25C. Once determined, if the
temperature is above or below 25C, the user can recalculate the temperature using the hot or cold slope
value obtained during calibration.
10.1.2 Low-Power Mode Operation
The ADC is capable of running in stop3 mode but requires LVDSE and LVDE in SPMSC1 to be set.
Chapter 10 Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
138 Freescale Semiconductor
Figure 10-1. MC9S08JM60 Series Block Diagram Highlighting ADC Block and Pins
PTD4/ADP11
PTD5
PTD6
PTC1/SDA
PTC0/SCL
V
SS
V
DD
PTE3/TPM1CH1
PTE2/TPM1CH0
PTA5 PTA0
PTE0/TxD1
PTE1/RxD1
PTD1/ADP9/ACMP
PTD0/ADP8/ACMP+
PTC6
PTC5/RxD2
PTC4
PTC3/TxD2
PTC2
P
O
R
T
A
P
O
R
T
C
P
O
R
T
D
P
O
R
T
E
8-BIT KEYBOARD
INTERRUPT MODULE (KBI)
IIC MODULE (IIC)
8-/16-BIT SERIAL PERIPHERAL
INTERFACE MODULE (SPI1)
USER Flash (IN BYTES)
USER RAM (IN BYTES)
ON-CHIP ICE AND
DEBUG MODULE (DBG)
MC9S08JM60 = 60,912
HCS08 CORE
CPU BDC
NOTES:
1. Port pins are software configurable with pullup device if input port.
2. Pin contains software configurable pullup/pull-down device if IRQ is enabled
(IRQPE = 1). Pull-down is enabled if rising edge detect is selected (IRQEDG = 1)
3. IRQ does not have a clamp diode to V
DD
. IRQ must not be driven above V
DD
.
4. Pin contains integrated pullup device.
5. When pin functions as KBI (KBIPEn = 1) and associated pin is configured to enable the
pullup device, KBEDGn can be used to reconfigure the pullup as a pull-down device.
2-CHANNEL TIMER/PWM
MODULE (TPM2)
PTE5/MOSI1
PTE4/MISO1
PTE6/SPSCK1
PTE7/SS1
HCS08 SYSTEM CONTROL
RESETS AND INTERRUPTS
MODES OF OPERATION
POWER MANAGEMENT
VOLTAGE
REGULATOR
COP IRQ LVD
LOW-POWER OSCILLATOR
MULTI-PURPOSE CLOCK
GENERATOR (MCG)
RESET
V
SSAD
V
DDAD
V
REFH
6-CHANNEL TIMER/PWM
MODULE (TPM1)
PTD7
6
PTG3/KBIP7
PTG2/KBIP6
P
O
R
T
G
BKGD/MS
PTF3/TPM1CH5
PTF2/TPM1CH4
PTF0/TPM1CH2
PTF1/TPM1CH3
P
O
R
T
F
PTF5/TPM2CH1
PTF4/TPM2CH0
PTF6
PTF7
INTERFACE MODULE (SCI1)
SERIAL COMMUNICATIONS
INTERFACE MODULE (SCI2)
SERIAL COMMUNICATIONS
PTG0/KBIP0
PTG1/KBIP1
MC9S08JM32 = 32,768
V
REFL
PTG4/XTAL
PTG5/EXTAL
IRQ/TPMCLK
RxD2
TxD2
SDA
SCL
KBIPx
KBIPx
TPMCLK
SPSCK1
SS1
MISO1
MOSI1
TPMCLK
TPM1CH1
TPM1CH0
RxD1
TxD1
EXTAL
XTAL
4
USB SIE
USB ENDPOINT
RAM
FULL SPEED
USB
TRANSCEIVER
USBDP
USBDN
MISO2
SS2
SPSCK2
MOSI2
8-/16-BIT SERIAL PERIPHERAL
INTERFACE MODULE (SPI2)
REAL-TIME COUNTER
(RTC)
TPM1CHx
4
TPM2CH1
TPM2CH0
4
ANALOG COMPARATOR
(ACMP)
SYSTEM
USB 3.3-V VOLTAGE REGULATOR
V
USB33
MC9S08JM60 = 4096
MC9S08JM32 = 2048
ACMPO
ACMP+
ACMP
PTD3/KBIP3/ADP10
PTD2/KBIP2/ACMPO
V
SSOSC
PTB5/KBIP5/ADP5
P
O
R
T
B
ANALOG-TO-DIGITAL
CONVERTER (ADC)
PTB4/KBIP4/ADP4
12-CHANNEL, 12-BIT
8
4
PTB1/MOSI2/ADP1
PTB0/MISO2/ADP0
PTB7/ADP7
PTB6/ADP6
PTB3/SS2/ADP3
PTB2/SPSCK2/ADP2
Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 139
10.1.3 Features
Features of the ADC module include:
Linear successive approximation algorithm with 12-bit resolution
Up to 28 analog inputs
Output formatted in 12-, 10-, or 8-bit right-justified unsigned format
Single or continuous conversion (automatic return to idle after single conversion)
Configurable sample time and conversion speed/power
Conversion complete flag and interrupt
Input clock selectable from up to four sources
Operation in wait or stop3 modes for lower noise operation
Asynchronous clock source for lower noise operation
Selectable asynchronous hardware conversion trigger
Automatic compare with interrupt for less-than, or greater-than or equal-to, programmable value
Temperature sensor
10.1.4 ADC Module Block Diagram
Figure 10-2 provides a block diagram of the ADC module.
Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
140 Freescale Semiconductor
Figure 10-2. ADC Block Diagram
10.2 External Signal Description
The ADC module supports up to 28 separate analog inputs. It also requires four supply/reference/ground
connections.
Table 10-2. Signal Properties
Name Function
AD27AD0 Analog Channel inputs
V
REFH
High reference voltage
V
REFL
Low reference voltage
V
DDAD
Analog power supply
V
SSAD
Analog ground
AD0
AD27
V
REFH
V
REFL
ADVIN
A
D
C
H
Control Sequencer
i
n
i
t
i
a
l
i
z
e
s
a
m
p
l
e
c
o
n
v
e
r
t
t
r
a
n
s
f
e
r
a
b
o
r
t
Clock
Divide
ADCK
2
Async
Clock Gen
Bus Clock
ALTCLK
A
D
I
C
L
K
A
D
I
V
ADACK
A
D
C
O
A
D
L
S
M
P
A
D
L
P
C
M
O
D
E
c
o
m
p
l
e
t
e
Data Registers
SAR Converter
Compare Value Registers
Compare
V
a
l
u
e
S
u
m
A
I
E
N
C
O
C
O
Interrupt
AIEN
COCO
A
D
T
R
G
1
2
1 2
MCU STOP
ADHWT
Logic
A
C
F
G
T
3
Compare true
3
Compare true
ADCCFG ADCSC1
ADCSC2
Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 141
10.2.1 Analog Power (V
DDAD
)
The ADC analog portion uses V
DDAD
as its power connection. In some packages, V
DDAD
is connected
internally to V
DD
. If externally available, connect the V
DDAD
pin to the same voltage potential as V
DD
.
External filtering may be necessary to ensure clean V
DDAD
for good results.
10.2.2 Analog Ground (V
SSAD
)
The ADC analog portion uses V
SSAD
as its ground connection. In some packages, V
SSAD
is connected
internally to V
SS
. If externally available, connect the V
SSAD
pin to the same voltage potential as V
SS
.
10.2.3 Voltage Reference High (V
REFH
)
V
REFH
is the high reference voltage for the converter. In some packages, V
REFH
is connected internally to
V
DDAD
. If externally available, V
REFH
may be connected to the same potential as V
DDAD
or may be driven
by an external source between the minimum V
DDAD
spec and the V
DDAD
potential (V
REFH
must never
exceed V
DDAD
).
10.2.4 Voltage Reference Low (V
REFL
)
V
REFL
is the low-reference voltage for the converter. In some packages, V
REFL
is connected internally to
V
SSAD
. If externally available, connect the V
REFL
pin to the same voltage potential as V
SSAD
.
10.2.5 Analog Channel Inputs (ADx)
The ADC module supports up to 28 separate analog inputs. An input is selected for conversion through
the ADCH channel select bits.
10.3 Register Definition
These memory-mapped registers control and monitor operation of the ADC:
Status and control register, ADCSC1
Status and control register, ADCSC2
Data result registers, ADCRH and ADCRL
Compare value registers, ADCCVH and ADCCVL
Configuration register, ADCCFG
Pin control registers, APCTL1, APCTL2, APCTL3
10.3.1 Status and Control Register 1 (ADCSC1)
This section describes the function of the ADC status and control register (ADCSC1). Writing ADCSC1
aborts the current conversion and initiates a new conversion (if the ADCH bits are equal to a value other
than all 1s).
Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
142 Freescale Semiconductor
7 6 5 4 3 2 1 0
R COCO
AIEN ADCO ADCH
W
Reset: 0 0 0 1 1 1 1 1
Figure 10-3. Status and Control Register (ADCSC1)
Table 10-3. ADCSC1 Field Descriptions
Field Description
7
COCO
Conversion Complete Flag. The COCO flag is a read-only bit set each time a conversion is completed when the
compare function is disabled (ACFE = 0). When the compare function is enabled (ACFE = 1), the COCO flag is
set upon completion of a conversion only if the compare result is true. This bit is cleared when ADCSC1 is written
or when ADCRL is read.
0 Conversion not completed
1 Conversion completed
6
AIEN
Interrupt Enable AIEN enables conversion complete interrupts. When COCO becomes set while AIEN is high,
an interrupt is asserted.
0 Conversion complete interrupt disabled
1 Conversion complete interrupt enabled
5
ADCO
Continuous Conversion Enable. ADCO enables continuous conversions.
0 One conversion following a write to the ADCSC1 when software triggered operation is selected, or one
conversion following assertion of ADHWT when hardware triggered operation is selected.
1 Continuous conversions initiated following a write to ADCSC1 when software triggered operation is selected.
Continuous conversions are initiated by an ADHWT event when hardware triggered operation is selected.
4:0
ADCH
Input Channel Select. The ADCH bits form a 5-bit field that selects one of the input channels. The input channels
are detailed in Table 10-4.
The successive approximation converter subsystem is turned off when the channel select bits are all set. This
feature allows for explicit disabling of the ADC and isolation of the input channel from all sources. Terminating
continuous conversions this way prevents an additional, single conversion from being performed. It is not
necessary to set the channel select bits to all ones to place the ADC in a low-power state when continuous
conversions are not enabled because the module automatically enters a low-power state when a conversion
completes.
Table 10-4. Input Channel Select
ADCH Input Select
0000001111 AD015
1000011011 AD1627
11100 Reserved
11101 V
REFH
11110 V
REFL
11111 Module disabled
Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 143
10.3.2 Status and Control Register 2 (ADCSC2)
The ADCSC2 register controls the compare function, conversion trigger, and conversion active of the
ADC module.
10.3.3 Data Result High Register (ADCRH)
In 12-bit operation, ADCRH contains the upper four bits of the result of a 12-bit conversion. In 10-bit
mode, ADCRH contains the upper two bits of the result of a 10-bit conversion. When configured for 10-bit
mode, ADR[11:10] are cleared. When configured for 8-bit mode, ADR[11:8] are cleared.
In 12-bit and 10-bit mode, ADCRH is updated each time a conversion completes except when automatic
compare is enabled and the compare condition is not met. When a compare event does occur, the value is
the addition of the conversion result and the twos complement of the compare value. In 12-bit and 10-bit
mode, reading ADCRH prevents the ADC from transferring subsequent conversion results into the result
registers until ADCRL is read. If ADCRL is not read until after the next conversion is completed, the
intermediate conversion result is lost. In 8-bit mode, there is no interlocking with ADCRL.
7 6 5 4 3 2 1 0
R ADACT
ADTRG ACFE ACFGT
0 0
R
1
R
1
W
Reset: 0 0 0 0 0 0 0 0
1
Bits 1 and 0 are reserved bits that must always be written to 0.
Figure 10-4. Status and Control Register 2 (ADCSC2)
Table 10-5. ADCSC2 Register Field Descriptions
Field Description
7
ADACT
Conversion Active. Indicates that a conversion is in progress. ADACT is set when a conversion is initiated and
cleared when a conversion is completed or aborted.
0 Conversion not in progress
1 Conversion in progress
6
ADTRG
Conversion Trigger Select. Selects the type of trigger used for initiating a conversion. Two types of triggers are
selectable: software trigger and hardware trigger. When software trigger is selected, a conversion is initiated
following a write to ADCSC1. When hardware trigger is selected, a conversion is initiated following the assertion
of the ADHWT input.
0 Software trigger selected
1 Hardware trigger selected
5
ACFE
Compare Function Enable. Enables the compare function.
0 Compare function disabled
1 Compare function enabled
4
ACFGT
Compare Function Greater Than Enable. Configures the compare function to trigger when the result of the
conversion of the input being monitored is greater than or equal to the compare value. The compare function
defaults to triggering when the result of the compare of the input being monitored is less than the compare value.
0 Compare triggers when input is less than compare value
1 Compare triggers when input is greater than or equal to compare value
Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
144 Freescale Semiconductor
If the MODE bits are changed, any data in ADCRH becomes invalid.
10.3.4 Data Result Low Register (ADCRL)
ADCRL contains the lower eight bits of the result of a 12-bit or 10-bit conversion, and all eight bits of an
8-bit conversion. This register is updated each time a conversion completes except when automatic
compare is enabled and the compare condition is not met. In 12-bit and 10-bit mode, reading ADCRH
prevents the ADC from transferring subsequent conversion results into the result registers until ADCRL
is read. If ADCRL is not read until the after next conversion is completed, the intermediate conversion
results are lost. In 8-bit mode, there is no interlocking with ADCRH. If the MODE bits are changed, any
data in ADCRL becomes invalid.
10.3.5 Compare Value High Register (ADCCVH)
In 12-bit mode, the ADCCVH register holds the upper four bits of the 12-bit compare value. When the
compare function is enabled, these bits are compared to the upper four bits of the result following a
conversion in 12-bit mode.
7 6 5 4 3 2 1 0
R 0 0 0 0 ADR11 ADR10 ADR9 ADR8
W
Reset: 0 0 0 0 0 0 0 0
Figure 10-5. Data Result High Register (ADCRH)
7 6 5 4 3 2 1 0
R ADR7 ADR6 ADR5 ADR4 ADR3 ADR2 ADR1 ADR0
W
Reset: 0 0 0 0 0 0 0 0
Figure 10-6. Data Result Low Register (ADCRL)
7 6 5 4 3 2 1 0
R 0 0 0 0
ADCV11 ADCV10 ADCV9 ADCV8
W
Reset: 0 0 0 0 0 0 0 0
Figure 10-7. Compare Value High Register (ADCCVH)
Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 145
In 10-bit mode, the ADCCVH register holds the upper two bits of the 10-bit compare value (ADCV[9:8]).
These bits are compared to the upper two bits of the result following a conversion in 10-bit mode when the
compare function is enabled.
In 8-bit mode, ADCCVH is not used during compare.
10.3.6 Compare Value Low Register (ADCCVL)
This register holds the lower 8 bits of the 12-bit or 10-bit compare value or all 8 bits of the 8-bit compare
value. When the compare function is enabled, bits ADCV[7:0] are compared to the lower 8 bits of the
result following a conversion in 12-bit, 10-bit or 8-bit mode.
10.3.7 Configuration Register (ADCCFG)
ADCCFG selects the mode of operation, clock source, clock divide, and configures for low power and long
sample time.
7 6 5 4 3 2 1 0
R
ADCV7 ADCV6 ADCV5 ADCV4 ADCV3 ADCV2 ADCV1 ADCV0
W
Reset: 0 0 0 0 0 0 0 0
Figure 10-8. Compare Value Low Register (ADCCVL)
7 6 5 4 3 2 1 0
R
ADLPC ADIV ADLSMP MODE ADICLK
W
Reset: 0 0 0 0 0 0 0 0
Figure 10-9. Configuration Register (ADCCFG)
Table 10-6. ADCCFG Register Field Descriptions
Field Description
7
ADLPC
Low-Power Configuration. ADLPC controls the speed and power configuration of the successive approximation
converter. This optimizes power consumption when higher sample rates are not required.
0 High speed configuration
1 Low power configuration:The power is reduced at the expense of maximum clock speed.
6:5
ADIV
Clock Divide Select. ADIV selects the divide ratio used by the ADC to generate the internal clock ADCK.
Table 10-7 shows the available clock configurations.
4
ADLSMP
Long Sample Time Configuration. ADLSMP selects between long and short sample time. This adjusts the
sample period to allow higher impedance inputs to be accurately sampled or to maximize conversion speed for
lower impedance inputs. Longer sample times can also be used to lower overall power consumption when
continuous conversions are enabled if high conversion rates are not required.
0 Short sample time
1 Long sample time
Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
146 Freescale Semiconductor
10.3.8 Pin Control 1 Register (APCTL1)
The pin control registers disable the I/O port control of MCU pins used as analog inputs. APCTL1 is used
to control the pins associated with channels 07 of the ADC module.
3:2
MODE
Conversion Mode Selection. MODE bits are used to select between 12-, 10-, or 8-bit operation. See Table 10-8.
1:0
ADICLK
Input Clock Select. ADICLK bits select the input clock source to generate the internal clock ADCK. See
Table 10-9.
Table 10-7. Clock Divide Select
ADIV Divide Ratio Clock Rate
00 1 Input clock
01 2 Input clock 2
10 4 Input clock 4
11 8 Input clock 8
Table 10-8. Conversion Modes
MODE Mode Description
00 8-bit conversion (N=8)
01 12-bit conversion (N=12)
10 10-bit conversion (N=10)
11 Reserved
Table 10-9. Input Clock Select
ADICLK Selected Clock Source
00 Bus clock
01 Bus clock divided by 2
10 Alternate clock (ALTCLK)
11 Asynchronous clock (ADACK)
7 6 5 4 3 2 1 0
R
ADPC7 ADPC6 ADPC5 ADPC4 ADPC3 ADPC2 ADPC1 ADPC0
W
Reset: 0 0 0 0 0 0 0 0
Figure 10-10. Pin Control 1 Register (APCTL1)
Table 10-6. ADCCFG Register Field Descriptions (continued)
Field Description
Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 147
10.3.9 Pin Control 2 Register (APCTL2)
APCTL2 controls channels 815 of the ADC module.
Table 10-10. APCTL1 Register Field Descriptions
Field Description
7
ADPC7
ADC Pin Control 7. ADPC7 controls the pin associated with channel AD7.
0 AD7 pin I/O control enabled
1 AD7 pin I/O control disabled
6
ADPC6
ADC Pin Control 6. ADPC6 controls the pin associated with channel AD6.
0 AD6 pin I/O control enabled
1 AD6 pin I/O control disabled
5
ADPC5
ADC Pin Control 5. ADPC5 controls the pin associated with channel AD5.
0 AD5 pin I/O control enabled
1 AD5 pin I/O control disabled
4
ADPC4
ADC Pin Control 4. ADPC4 controls the pin associated with channel AD4.
0 AD4 pin I/O control enabled
1 AD4 pin I/O control disabled
3
ADPC3
ADC Pin Control 3. ADPC3 controls the pin associated with channel AD3.
0 AD3 pin I/O control enabled
1 AD3 pin I/O control disabled
2
ADPC2
ADC Pin Control 2. ADPC2 controls the pin associated with channel AD2.
0 AD2 pin I/O control enabled
1 AD2 pin I/O control disabled
1
ADPC1
ADC Pin Control 1. ADPC1 controls the pin associated with channel AD1.
0 AD1 pin I/O control enabled
1 AD1 pin I/O control disabled
0
ADPC0
ADC Pin Control 0. ADPC0 controls the pin associated with channel AD0.
0 AD0 pin I/O control enabled
1 AD0 pin I/O control disabled
7 6 5 4 3 2 1 0
R
ADPC15 ADPC14 ADPC13 ADPC12 ADPC11 ADPC10 ADPC9 ADPC8
W
Reset: 0 0 0 0 0 0 0 0
Figure 10-11. Pin Control 2 Register (APCTL2)
Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
148 Freescale Semiconductor
10.3.10 Pin Control 3 Register (APCTL3)
APCTL3 controls channels 1623 of the ADC module.
Table 10-11. APCTL2 Register Field Descriptions
Field Description
7
ADPC15
ADC Pin Control 15. ADPC15 controls the pin associated with channel AD15.
0 AD15 pin I/O control enabled
1 AD15 pin I/O control disabled
6
ADPC14
ADC Pin Control 14. ADPC14 controls the pin associated with channel AD14.
0 AD14 pin I/O control enabled
1 AD14 pin I/O control disabled
5
ADPC13
ADC Pin Control 13. ADPC13 controls the pin associated with channel AD13.
0 AD13 pin I/O control enabled
1 AD13 pin I/O control disabled
4
ADPC12
ADC Pin Control 12. ADPC12 controls the pin associated with channel AD12.
0 AD12 pin I/O control enabled
1 AD12 pin I/O control disabled
3
ADPC11
ADC Pin Control 11. ADPC11 controls the pin associated with channel AD11.
0 AD11 pin I/O control enabled
1 AD11 pin I/O control disabled
2
ADPC10
ADC Pin Control 10. ADPC10 controls the pin associated with channel AD10.
0 AD10 pin I/O control enabled
1 AD10 pin I/O control disabled
1
ADPC9
ADC Pin Control 9. ADPC9 controls the pin associated with channel AD9.
0 AD9 pin I/O control enabled
1 AD9 pin I/O control disabled
0
ADPC8
ADC Pin Control 8. ADPC8 controls the pin associated with channel AD8.
0 AD8 pin I/O control enabled
1 AD8 pin I/O control disabled
7 6 5 4 3 2 1 0
R
ADPC23 ADPC22 ADPC21 ADPC20 ADPC19 ADPC18 ADPC17 ADPC16
W
Reset: 0 0 0 0 0 0 0 0
Figure 10-12. Pin Control 3 Register (APCTL3)
Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 149
10.4 Functional Description
The ADC module is disabled during reset or when the ADCH bits are all high. The module is idle when a
conversion has completed and another conversion has not been initiated. When idle, the module is in its
lowest power state.
The ADC can perform an analog-to-digital conversion on any of the software selectable channels. In 12-bit
and 10-bit mode, the selected channel voltage is converted by a successive approximation algorithm into
a 12-bit digital result. In 8-bit mode, the selected channel voltage is converted by a successive
approximation algorithm into a 9-bit digital result.
When the conversion is completed, the result is placed in the data registers (ADCRH and ADCRL). In
10-bit mode, the result is rounded to 10 bits and placed in the data registers (ADCRH and ADCRL). In
8-bit mode, the result is rounded to 8 bits and placed in ADCRL. The conversion complete flag (COCO)
is then set and an interrupt is generated if the conversion complete interrupt has been enabled (AIEN = 1).
The ADC module has the capability of automatically comparing the result of a conversion with the
contents of its compare registers. The compare function is enabled by setting the ACFE bit and operates
with any of the conversion modes and configurations.
Table 10-12. APCTL3 Register Field Descriptions
Field Description
7
ADPC23
ADC Pin Control 23. ADPC23 controls the pin associated with channel AD23.
0 AD23 pin I/O control enabled
1 AD23 pin I/O control disabled
6
ADPC22
ADC Pin Control 22. ADPC22 controls the pin associated with channel AD22.
0 AD22 pin I/O control enabled
1 AD22 pin I/O control disabled
5
ADPC21
ADC Pin Control 21. ADPC21 controls the pin associated with channel AD21.
0 AD21 pin I/O control enabled
1 AD21 pin I/O control disabled
4
ADPC20
ADC Pin Control 20. ADPC20 controls the pin associated with channel AD20.
0 AD20 pin I/O control enabled
1 AD20 pin I/O control disabled
3
ADPC19
ADC Pin Control 19. ADPC19 controls the pin associated with channel AD19.
0 AD19 pin I/O control enabled
1 AD19 pin I/O control disabled
2
ADPC18
ADC Pin Control 18. ADPC18 controls the pin associated with channel AD18.
0 AD18 pin I/O control enabled
1 AD18 pin I/O control disabled
1
ADPC17
ADC Pin Control 17. ADPC17 controls the pin associated with channel AD17.
0 AD17 pin I/O control enabled
1 AD17 pin I/O control disabled
0
ADPC16
ADC Pin Control 16. ADPC16 controls the pin associated with channel AD16.
0 AD16 pin I/O control enabled
1 AD16 pin I/O control disabled
Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
150 Freescale Semiconductor
10.4.1 Clock Select and Divide Control
One of four clock sources can be selected as the clock source for the ADC module. This clock source is
then divided by a configurable value to generate the input clock to the converter (ADCK). The clock is
selected from one of the following sources by means of the ADICLK bits.
The bus clock, which is equal to the frequency at which software is executed. This is the default
selection following reset.
The bus clock divided by two. For higher bus clock rates, this allows a maximum divide by 16 of
the bus clock.
ALTCLK, as defined for this MCU (See module section introduction).
The asynchronous clock (ADACK). This clock is generated from a clock source within the ADC
module. When selected as the clock source, this clock remains active while the MCU is in wait or
stop3 mode and allows conversions in these modes for lower noise operation.
Whichever clock is selected, its frequency must fall within the specified frequency range for ADCK. If the
available clocks are too slow, the ADC do not perform according to specifications. If the available clocks
are too fast, the clock must be divided to the appropriate frequency. This divider is specified by the ADIV
bits and can be divide-by 1, 2, 4, or 8.
10.4.2 Input Select and Pin Control
The pin control registers (APCTL3, APCTL2, and APCTL1) disable the I/O port control of the pins used
as analog inputs.When a pin control register bit is set, the following conditions are forced for the associated
MCU pin:
The output buffer is forced to its high impedance state.
The input buffer is disabled. A read of the I/O port returns a zero for any pin with its input buffer
disabled.
The pullup is disabled.
10.4.3 Hardware Trigger
The ADC module has a selectable asynchronous hardware conversion trigger, ADHWT, that is enabled
when the ADTRG bit is set. This source is not available on all MCUs. Consult the module introduction for
information on the ADHWT source specific to this MCU.
When ADHWT source is available and hardware trigger is enabled (ADTRG=1), a conversion is initiated
on the rising edge of ADHWT. If a conversion is in progress when a rising edge occurs, the rising edge is
ignored. In continuous convert configuration, only the initial rising edge to launch continuous conversions
is observed. The hardware trigger function operates in conjunction with any of the conversion modes and
configurations.
10.4.4 Conversion Control
Conversions can be performed in 12-bit mode, 10-bit mode, or 8-bit mode as determined by the MODE
bits. Conversions can be initiated by a software or hardware trigger. In addition, the ADC module can be
Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 151
configured for low power operation, long sample time, continuous conversion, and automatic compare of
the conversion result to a software determined compare value.
10.4.4.1 Initiating Conversions
A conversion is initiated:
Following a write to ADCSC1 (with ADCH bits not all 1s) if software triggered operation is
selected.
Following a hardware trigger (ADHWT) event if hardware triggered operation is selected.
Following the transfer of the result to the data registers when continuous conversion is enabled.
If continuous conversions are enabled, a new conversion is automatically initiated after the completion of
the current conversion. In software triggered operation, continuous conversions begin after ADCSC1 is
written and continue until aborted. In hardware triggered operation, continuous conversions begin after a
hardware trigger event and continue until aborted.
10.4.4.2 Completing Conversions
A conversion is completed when the result of the conversion is transferred into the data result registers,
ADCRH and ADCRL. This is indicated by the setting of COCO. An interrupt is generated if AIEN is high
at the time that COCO is set.
A blocking mechanism prevents a new result from overwriting previous data in ADCRH and ADCRL if
the previous data is in the process of being read while in 12-bit or 10-bit MODE (the ADCRH register has
been read but the ADCRL register has not). When blocking is active, the data transfer is blocked, COCO
is not set, and the new result is lost. In the case of single conversions with the compare function enabled
and the compare condition false, blocking has no effect and ADC operation is terminated. In all other cases
of operation, when a data transfer is blocked, another conversion is initiated regardless of the state of
ADCO (single or continuous conversions enabled).
If single conversions are enabled, the blocking mechanism could result in several discarded conversions
and excess power consumption. To avoid this issue, the data registers must not be read after initiating a
single conversion until the conversion completes.
10.4.4.3 Aborting Conversions
Any conversion in progress is aborted when:
A write to ADCSC1 occurs (the current conversion will be aborted and a new conversion will be
initiated, if ADCH are not all 1s).
A write to ADCSC2, ADCCFG, ADCCVH, or ADCCVL occurs. This indicates a mode of
operation change has occurred and the current conversion is therefore invalid.
The MCU is reset.
The MCU enters stop mode with ADACK not enabled.
Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
152 Freescale Semiconductor
When a conversion is aborted, the contents of the data registers, ADCRH and ADCRL, are not altered.
However, they continue to be the values transferred after the completion of the last successful conversion.
If the conversion was aborted by a reset, ADCRH and ADCRL return to their reset states.
10.4.4.4 Power Control
The ADC module remains in its idle state until a conversion is initiated. If ADACK is selected as the
conversion clock source, the ADACK clock generator is also enabled.
Power consumption when active can be reduced by setting ADLPC. This results in a lower maximum
value for f
ADCK
(see the electrical specifications).
10.4.4.5 Sample Time and Total Conversion Time
The total conversion time depends on the sample time (as determined by ADLSMP), the MCU bus
frequency, the conversion mode (8-bit, 10-bit or 12-bit), and the frequency of the conversion clock (f
ADCK
).
After the module becomes active, sampling of the input begins. ADLSMP selects between short (3.5
ADCK cycles) and long (23.5 ADCK cycles) sample times.When sampling is complete, the converter is
isolated from the input channel and a successive approximation algorithm is performed to determine the
digital value of the analog signal. The result of the conversion is transferred to ADCRH and ADCRL upon
completion of the conversion algorithm.
If the bus frequency is less than the f
ADCK
frequency, precise sample time for continuous conversions
cannot be guaranteed when short sample is enabled (ADLSMP=0). If the bus frequency is less than 1/11th
of the f
ADCK
frequency, precise sample time for continuous conversions cannot be guaranteed when long
sample is enabled (ADLSMP=1).
The maximum total conversion time for different conditions is summarized in Table 10-13.
Table 10-13. Total Conversion Time vs. Control Conditions
Conversion Type ADICLK ADLSMP Max Total Conversion Time
Single or first continuous 8-bit 0x, 10 0 20 ADCK cycles + 5 bus clock cycles
Single or first continuous 10-bit or 12-bit 0x, 10 0 23 ADCK cycles + 5 bus clock cycles
Single or first continuous 8-bit 0x, 10 1 40 ADCK cycles + 5 bus clock cycles
Single or first continuous 10-bit or 12-bit 0x, 10 1 43 ADCK cycles + 5 bus clock cycles
Single or first continuous 8-bit 11 0 5 s + 20 ADCK + 5 bus clock cycles
Single or first continuous 10-bit or 12-bit 11 0 5 s + 23 ADCK + 5 bus clock cycles
Single or first continuous 8-bit 11 1 5 s + 40 ADCK + 5 bus clock cycles
Single or first continuous 10-bit or 12-bit 11 1 5 s + 43 ADCK + 5 bus clock cycles
Subsequent continuous 8-bit;
f
BUS
> f
ADCK
xx 0 17 ADCK cycles
Subsequent continuous 10-bit or 12-bit;
f
BUS
> f
ADCK
xx 0 20 ADCK cycles
Subsequent continuous 8-bit;
f
BUS
> f
ADCK
/11
xx 1 37 ADCK cycles
Subsequent continuous 10-bit or 12-bit;
f
BUS
> f
ADCK
/11
xx 1 40 ADCK cycles
Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 153
The maximum total conversion time is determined by the clock source chosen and the divide ratio selected.
The clock source is selectable by the ADICLK bits, and the divide ratio is specified by the ADIV bits. For
example, in 10-bit mode, with the bus clock selected as the input clock source, the input clock divide-by-1
ratio selected, and a bus frequency of 8 MHz, then the conversion time for a single conversion is:
NOTE
The ADCK frequency must be between f
ADCK
minimum and f
ADCK
maximum to meet ADC specifications.
10.4.5 Automatic Compare Function
The compare function can be configured to check for an upper or lower limit. After the input is sampled
and converted, the result is added to the twos complement of the compare value (ADCCVH and
ADCCVL). When comparing to an upper limit (ACFGT = 1), if the result is greater-than or equal-to the
compare value, COCO is set. When comparing to a lower limit (ACFGT = 0), if the result is less than the
compare value, COCO is set. The value generated by the addition of the conversion result and the twos
complement of the compare value is transferred to ADCRH and ADCRL.
Upon completion of a conversion while the compare function is enabled, if the compare condition is not
true, COCO is not set and no data is transferred to the result registers. An ADC interrupt is generated upon
the setting of COCO if the ADC interrupt is enabled (AIEN = 1).
NOTE
The compare function can monitor the voltage on a channel while the MCU
is in wait or stop3 mode. The ADC interrupt wakes the MCU when the
compare condition is met.
10.4.6 MCU Wait Mode Operation
Wait mode is a lower power-consumption standby mode from which recovery is fast because the clock
sources remain active. If a conversion is in progress when the MCU enters wait mode, it continues until
completion. Conversions can be initiated while the MCU is in wait mode by means of the hardware trigger
or if continuous conversions are enabled.
The bus clock, bus clock divided by two, and ADACK are available as conversion clock sources while in
wait mode. The use of ALTCLK as the conversion clock source in wait is dependent on the definition of
ALTCLK for this MCU. Consult the module introduction for information on ALTCLK specific to this
MCU.
A conversion complete event sets the COCO and generates an ADC interrupt to wake the MCU from wait
mode if the ADC interrupt is enabled (AIEN = 1).
23 ADCK Cyc
Conversion time =
8 MHz/1
Number of bus cycles = 3.5 s x 8 MHz = 28 cycles
5 bus Cyc
8 MHz
+ = 3.5 s
Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
154 Freescale Semiconductor
10.4.7 MCU Stop3 Mode Operation
Stop mode is a low power-consumption standby mode during which most or all clock sources on the MCU
are disabled.
10.4.7.1 Stop3 Mode With ADACK Disabled
If the asynchronous clock, ADACK, is not selected as the conversion clock, executing a stop instruction
aborts the current conversion and places the ADC in its idle state. The contents of ADCRH and ADCRL
are unaffected by stop3 mode. After exiting from stop3 mode, a software or hardware trigger is required
to resume conversions.
10.4.7.2 Stop3 Mode With ADACK Enabled
If ADACK is selected as the conversion clock, the ADC continues operation during stop3 mode. For
guaranteed ADC operation, the MCUs voltage regulator must remain active during stop3 mode. Consult
the module introduction for configuration information for this MCU.
If a conversion is in progress when the MCU enters stop3 mode, it continues until completion. Conversions
can be initiated while the MCU is in stop3 mode by means of the hardware trigger or if continuous
conversions are enabled.
A conversion complete event sets the COCO and generates an ADC interrupt to wake the MCU from stop3
mode if the ADC interrupt is enabled (AIEN = 1).
NOTE
The ADC module can wake the system from low-power stop and cause the
MCU to begin consuming run-level currents without generating a system
level interrupt. To prevent this scenario, software should ensure the data
transfer blocking mechanism (discussed in Section 10.4.4.2, Completing
Conversions,) is cleared when entering stop3 and continuing ADC
conversions.
10.4.8 MCU Stop2 Mode Operation
The ADC module is automatically disabled when the MCU enters stop2 mode. All module registers
contain their reset values following exit from stop2. Therefore, the module must be re-enabled and
re-configured following exit from stop2.
10.5 Initialization Information
This section gives an example that provides some basic direction on how to initialize and configure the
ADC module. You can configure the module for 8-, 10-, or 12-bit resolution, single or continuous
conversion, and a polled or interrupt approach, among many other options. Refer to Table 10-7,
Table 10-8, and Table 10-9 for information used in this example.
Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 155
NOTE
Hexadecimal values designated by a preceding 0x, binary values designated
by a preceding %, and decimal values have no preceding character.
10.5.1 ADC Module Initialization Example
10.5.1.1 Initialization Sequence
Before the ADC module can be used to complete conversions, an initialization procedure must be
performed. A typical sequence is as follows:
1. Update the configuration register (ADCCFG) to select the input clock source and the divide ratio
used to generate the internal clock, ADCK. This register is also used for selecting sample time and
low-power configuration.
2. Update status and control register 2 (ADCSC2) to select the conversion trigger (hardware or
software) and compare function options, if enabled.
3. Update status and control register 1 (ADCSC1) to select whether conversions will be continuous
or completed only once, and to enable or disable conversion complete interrupts. The input channel
on which conversions will be performed is also selected here.
10.5.1.2 Pseudo-Code Example
In this example, the ADC module is set up with interrupts enabled to perform a single 10-bit conversion
at low power with a long sample time on input channel 1, where the internal ADCK clock is derived from
the bus clock divided by 1.
ADCCFG = 0x98 (%10011000)
Bit 7 ADLPC 1 Configures for low power (lowers maximum clock speed)
Bit 6:5 ADIV 00 Sets the ADCK to the input clock 1
Bit 4 ADLSMP 1 Configures for long sample time
Bit 3:2 MODE 10 Sets mode at 10-bit conversions
Bit 1:0 ADICLK 00 Selects bus clock as input clock source
ADCSC2 = 0x00 (%00000000)
Bit 7 ADACT 0 Flag indicates if a conversion is in progress
Bit 6 ADTRG 0 Software trigger selected
Bit 5 ACFE 0 Compare function disabled
Bit 4 ACFGT 0 Not used in this example
Bit 3:2 00 Reserved, always reads zero
Bit 1:0 00 Reserved for Freescales internal use; always write zero
ADCSC1 = 0x41 (%01000001)
Bit 7 COCO 0 Read-only flag which is set when a conversion completes
Bit 6 AIEN 1 Conversion complete interrupt enabled
Bit 5 ADCO 0 One conversion only (continuous conversions disabled)
Bit 4:0 ADCH 00001 Input channel 1 selected as ADC input channel
ADCRH/L = 0xxx
Holds results of conversion. Read high byte (ADCRH) before low byte (ADCRL) so that
conversion data cannot be overwritten with data from the next conversion.
Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
156 Freescale Semiconductor
ADCCVH/L = 0xxx
Holds compare value when compare function enabled
APCTL1=0x02
AD1 pin I/O control disabled. All other AD pins remain general purpose I/O pins
APCTL2=0x00
All other AD pins remain general purpose I/O pins
Figure 10-13. Initialization Flowchart for Example
10.6 Application Information
This section contains information for using the ADC module in applications. The ADC has been designed
to be integrated into a microcontroller for use in embedded control applications requiring an A/D
converter.
10.6.1 External Pins and Routing
The following sections discuss the external pins associated with the ADC module and how they should be
used for best results.
Yes
No
Reset
Initialize ADC
ADCCFG = 0x98
ADCSC1 = 0x41
ADCSC2 = 0x00
Check
COCO=1?
Read ADCRH
Then ADCRL To
Clear COCO Bit
Continue
Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 157
10.6.1.1 Analog Supply Pins
The ADC module has analog power and ground supplies (V
DDAD
and V
SSAD
) available as separate pins
on some devices. V
SSAD
is shared on the same pin as the MCU digital V
SS
on some devices.
On other
devices, V
SSAD
and V
DDAD
are shared with the MCU digital supply pins. In these cases, there are separate
pads for the analog supplies bonded to the same pin as the corresponding digital supply so that some degree
of isolation between the supplies is maintained.
When available on a separate pin, both V
DDAD
and V
SSAD
must be connected to the same voltage potential
as their corresponding MCU digital supply (V
DD
and V
SS
) and must be routed carefully for maximum
noise immunity and bypass capacitors placed as near as possible to the package.
If separate power supplies are used for analog and digital power, the ground connection between these
supplies must be at the V
SSAD
pin. This should be the only ground connection between these supplies if
possible. The V
SSAD
pin makes a good single point ground location.
10.6.1.2 Analog Reference Pins
In addition to the analog supplies, the ADC module has connections for two reference voltage inputs. The
high reference is V
REFH
, which may be shared on the same pin as V
DDAD
on some devices. The low
reference is V
REFL
, which may be shared on the same pin as V
SSAD
on some devices.
When available on a separate pin, V
REFH
may be connected to the same potential as V
DDAD
, or may be
driven by an external source between the minimum V
DDAD
spec and the V
DDAD
potential (V
REFH
must
never exceed V
DDAD
). When available on a separate pin, V
REFL
must be connected to the same voltage
potential as V
SSAD
. V
REFH
and V
REFL
must be routed carefully for maximum noise immunity and bypass
capacitors placed as near as possible to the package.
AC current in the form of current spikes required to supply charge to the capacitor array at each successive
approximation step is drawn through the V
REFH
and V
REFL
loop. The best external component to meet this
current demand is a 0.1 F capacitor with good high frequency characteristics. This capacitor is connected
between V
REFH
and V
REFL
and must be placed as near as possible to the package pins. Resistance in the
path is not recommended because the current causes a voltage drop that could result in conversion errors.
Inductance in this path must be minimum (parasitic only).
10.6.1.3 Analog Input Pins
The external analog inputs are typically shared with digital I/O pins on MCU devices. The pin I/O control
is disabled by setting the appropriate control bit in one of the pin control registers. Conversions can be
performed on inputs without the associated pin control register bit set. It is recommended that the pin
control register bit always be set when using a pin as an analog input. This avoids problems with contention
because the output buffer is in its high impedance state and the pullup is disabled. Also, the input buffer
draws DC current when its input is not at V
DD
or V
SS
. Setting the pin control register bits for all pins used
as analog inputs should be done to achieve lowest operating current.
Empirical data shows that capacitors on the analog inputs improve performance in the presence of noise
or when the source impedance is high. Use of 0.01 F capacitors with good high-frequency characteristics
is sufficient. These capacitors are not necessary in all cases, but when used they must be placed as near as
possible to the package pins and be referenced to V
SSA
.
Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
158 Freescale Semiconductor
For proper conversion, the input voltage must fall between V
REFH
and V
REFL
. If the input is equal to or
exceeds V
REFH
, the converter circuit converts the signal to 0xFFF (full scale 12-bit representation), 0x3FF
(full scale 10-bit representation) or 0xFF (full scale 8-bit representation). If the input is equal to or less
than V
REFL
,
the converter circuit converts it to 0x000. Input voltages between V
REFH
and V
REFL
are
straight-line linear conversions. There is a brief current associated with V
REFL
when the sampling
capacitor is charging. The input is sampled for 3.5 cycles of the ADCK source when ADLSMP is low, or
23.5 cycles when ADLSMP is high.
For minimal loss of accuracy due to current injection, pins adjacent to the analog input pins should not be
transitioning during conversions.
10.6.2 Sources of Error
Several sources of error exist for A/D conversions. These are discussed in the following sections.
10.6.2.1 Sampling Error
For proper conversions, the input must be sampled long enough to achieve the proper accuracy. Given the
maximum input resistance of approximately 7k and input capacitance of approximately 5.5 pF, sampling
to within 1/4LSB (at 12-bit resolution) can be achieved within the minimum sample window (3.5 cycles @
8 MHz maximum ADCK frequency) provided the resistance of the external analog source (R
AS
) is kept
below 2 k.
Higher source resistances or higher-accuracy sampling is possible by setting ADLSMP (to increase the
sample window to 23.5 cycles) or decreasing ADCK frequency to increase sample time.
10.6.2.2 Pin Leakage Error
Leakage on the I/O pins can cause conversion error if the external analog source resistance (R
AS
) is high.
If this error cannot be tolerated by the application, keep R
AS
lower than V
DDAD
/ (2
N
*I
LEAK
) for less than
1/4LSB leakage error (N = 8 in 8-bit, 10 in 10-bit or 12 in 12-bit mode).
10.6.2.3 Noise-Induced Errors
System noise that occurs during the sample or conversion process can affect the accuracy of the
conversion. The ADC accuracy numbers are guaranteed as specified only if the following conditions are
met:
There is a 0.1 F low-ESR capacitor from V
REFH
to V
REFL
.
There is a 0.1 F low-ESR capacitor from V
DDAD
to V
SSAD
.
If inductive isolation is used from the primary supply, an additional 1 F capacitor is placed from
V
DDAD
to V
SSAD
.
V
SSAD
(and V
REFL
, if connected) is connected to V
SS
at a quiet point in the ground plane.
Operate the MCU in wait or stop3 mode before initiating (hardware triggered conversions) or
immediately after initiating (hardware or software triggered conversions) the ADC conversion.
For software triggered conversions, immediately follow the write to ADCSC1 with a wait
instruction or stop instruction.
Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 159
For stop3 mode operation, select ADACK as the clock source. Operation in stop3 reduces V
DD
noise but increases effective conversion time due to stop recovery.
There is no I/O switching, input or output, on the MCU during the conversion.
There are some situations where external system activity causes radiated or conducted noise emissions or
excessive V
DD
noise is coupled into the ADC. In these situations, or when the MCU cannot be placed in
wait or stop3 or I/O activity cannot be halted, these recommended actions may reduce the effect of noise
on the accuracy:
Place a 0.01 F capacitor (C
AS
) on the selected input channel to V
REFL
or V
SSAD
(this improves
noise issues, but affects the sample rate based on the external analog source resistance).
Average the result by converting the analog input many times in succession and dividing the sum
of the results. Four samples are required to eliminate the effect of a 1LSB, one-time error.
Reduce the effect of synchronous noise by operating off the asynchronous clock (ADACK) and
averaging. Noise that is synchronous to ADCK cannot be averaged out.
10.6.2.4 Code Width and Quantization Error
The ADC quantizes the ideal straight-line transfer function into 4096 steps (in 12-bit mode). Each step
ideally has the same height (1 code) and width. The width is defined as the delta between the transition
points to one code and the next. The ideal code width for an N bit converter (in this case N can be 8, 10 or
12), defined as 1LSB, is:
1 lsb = (V
REFH
- V
REFL
) / 2
N
Eqn. 10-2
There is an inherent quantization error due to the digitization of the result. For 8-bit or 10-bit conversions
the code transitions when the voltage is at the midpoint between the points where the straight line transfer
function is exactly represented by the actual transfer function. Therefore, the quantization error will be
1/2 lsb in 8- or 10-bit mode. As a consequence, however, the code width of the first (0x000) conversion is
only 1/2 lsb and the code width of the last (0xFF or 0x3FF) is 1.5 lsb.
For 12-bit conversions the code transitions only after the full code width is present, so the quantization
error is 1 lsb to 0 lsb and the code width of each step is 1 lsb.
10.6.2.5 Linearity Errors
The ADC may also exhibit non-linearity of several forms. Every effort has been made to reduce these
errors but the system should be aware of them because they affect overall accuracy. These errors are:
Zero-scale error (E
ZS
) (sometimes called offset) This error is defined as the difference between
the actual code width of the first conversion and the ideal code width (1/2 lsb in 8-bit or 10-bit
modes and 1 lsb in 12-bit mode). If the first conversion is 0x001, the difference between the actual
0x001 code width and its ideal (1 lsb) is used.
Full-scale error (E
FS
) This error is defined as the difference between the actual code width of
the last conversion and the ideal code width (1.5 lsb in 8-bit or 10-bit modes and 1LSB in 12-bit
mode). If the last conversion is 0x3FE, the difference between the actual 0x3FE code width and its
ideal (1LSB) is used.
Analog-to-Digital Converter (S08ADC12V1)
MC9S08JM60 Series Data Sheet, Rev. 3
160 Freescale Semiconductor
Differential non-linearity (DNL) This error is defined as the worst-case difference between the
actual code width and the ideal code width for all conversions.
Integral non-linearity (INL) This error is defined as the highest-value the (absolute value of the)
running sum of DNL achieves. More simply, this is the worst-case difference of the actual
transition voltage to a given code and its corresponding ideal transition voltage, for all codes.
Total unadjusted error (TUE) This error is defined as the difference between the actual transfer
function and the ideal straight-line transfer function and includes all forms of error.
10.6.2.6 Code Jitter, Non-Monotonicity, and Missing Codes
Analog-to-digital converters are susceptible to three special forms of error. These are code jitter,
non-monotonicity, and missing codes.
Code jitter is when, at certain points, a given input voltage converts to one of two values when sampled
repeatedly. Ideally, when the input voltage is infinitesimally smaller than the transition voltage, the
converter yields the lower code (and vice-versa). However, even small amounts of system noise can cause
the converter to be indeterminate (between two codes) for a range of input voltages around the transition
voltage. This range is normally around 1/2 lsb in 8-bit or 10-bit mode, or around 2 lsb in 12-bit mode,
and increases with noise.
This error may be reduced by repeatedly sampling the input and averaging the result. Additionally the
techniques discussed in Section 10.6.2.3 reduces this error.
Non-monotonicity is defined as when, except for code jitter, the converter converts to a lower code for a
higher input voltage. Missing codes are those values never converted for any input value.
In 8-bit or 10-bit mode, the ADC is guaranteed to be monotonic and have no missing codes.
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 161
Chapter 11
Inter-Integrated Circuit (S08IICV2)
11.1 Introduction
The MC9S08JM60 series of microcontrollers has an inter-integrated circuit (IIC) module for
communication with other integrated circuits. The two pins associated with this module, SCL and SDA,
are shared with PTC0 and PTC1, respectively.
NOTE
MC9S08JM60 series devices operate at a higher voltage range (2.7 V to
5.5 V) and do not include stop1 mode. Therefore, please disregard
references to stop1.
Chapter 11 Inter-Integrated Circuit (S08IICV2)
MC9S08JM60 Series Data Sheet, Rev. 3
162 Freescale Semiconductor
Figure 11-1. MC9S08JM60 Series Block Diagram Highlighting the IIC Block and Pins
PTD4/ADP11
PTD5
PTD6
PTC1/SDA
PTC0/SCL
V
SS
V
DD
PTE3/TPM1CH1
PTE2/TPM1CH0
PTA5 PTA0
PTE0/TxD1
PTE1/RxD1
PTD1/ADP9/ACMP
PTD0/ADP8/ACMP+
PTC6
PTC5/RxD2
PTC4
PTC3/TxD2
PTC2
P
O
R
T
A
P
O
R
T
C
P
O
R
T
D
P
O
R
T
E
8-BIT KEYBOARD
INTERRUPT MODULE (KBI)
IIC MODULE (IIC)
8-/16-BIT SERIAL PERIPHERAL
INTERFACE MODULE (SPI1)
USER Flash (IN BYTES)
USER RAM (IN BYTES)
ON-CHIP ICE AND
DEBUG MODULE (DBG)
MC9S08JM60 = 60,912
HCS08 CORE
CPU BDC
NOTES:
1. Port pins are software configurable with pullup device if input port.
2. Pin contains software configurable pullup/pull-down device if IRQ is enabled
(IRQPE = 1). Pull-down is enabled if rising edge detect is selected (IRQEDG = 1)
3. IRQ does not have a clamp diode to V
DD
. IRQ must not be driven above V
DD
.
4. Pin contains integrated pullup device.
5. When pin functions as KBI (KBIPEn = 1) and associated pin is configured to enable the
pullup device, KBEDGn can be used to reconfigure the pull-up as a pull-down device.
2-CHANNEL TIMER/PWM
MODULE (TPM2)
PTB5/KBIP5/ADP5
P
O
R
T
B
PTE5/MOSI1
PTE4/MISO1
PTE6/SPSCK1
PTE7/SS1
HCS08 SYSTEM CONTROL
RESETS AND INTERRUPTS
MODES OF OPERATION
POWER MANAGEMENT
VOLTAGE
REGULATOR
COP IRQ LVD
LOW-POWER OSCILLATOR
MULTI-PURPOSE CLOCK
GENERATOR (MCG)
RESET
V
SSAD
V
DDAD
V
REFH
ANALOG-TO-DIGITAL
CONVERTER (ADC)
6-CHANNEL TIMER/PWM
MODULE (TPM1)
PTD7
6
PTB4/KBIP4/ADP4
PTG3/KBIP7
PTG2/KBIP6
P
O
R
T
G
12-CHANNEL, 12-BIT
BKGD/MS
PTF3/TPM1CH5
PTF2/TPM1CH4
PTF0/TPM1CH2
PTF1/TPM1CH3
P
O
R
T
F
PTF5/TPM2CH1
PTF4/TPM2CH0
PTF6
PTF7
INTERFACE MODULE (SCI1)
SERIAL COMMUNICATIONS
INTERFACE MODULE (SCI2)
SERIAL COMMUNICATIONS
PTG0/KBIP0
PTG1/KBIP1
MC9S08JM32 = 32,768
V
REFL
PTG4/XTAL
PTG5/EXTAL
IRQ/TPMCLK
RxD2
TxD2
SDA
SCL
8
KBIPx
KBIPx
TPMCLK
SPSCK1
SS1
MISO1
MOSI1
TPMCLK
TPM1CH1
TPM1CH0
RxD1
TxD1
EXTAL
XTAL
4
4
USB SIE
USB ENDPOINT
RAM
FULL SPEED
USB
TRANSCEIVER
USBDP
USBDN
MISO2
SS2
SPSCK2
MOSI2
PTB1/MOSI2/ADP1
PTB0/MISO2/ADP0
PTB7/ADP7
PTB6/ADP6
8-/16-BIT SERIAL PERIPHERAL
INTERFACE MODULE (SPI2)
REAL-TIME COUNTER
(RTC)
PTB3/SS2/ADP3
PTB2/SPSCK2/ADP2
TPM1CHx
4
TPM2CH1
TPM2CH0
4
ANALOG COMPARATOR
(ACMP)
SYSTEM
USB 3.3-V VOLTAGE REGULATOR
V
USB33
MC9S08JM60 = 4096
MC9S08JM32 = 2048
ACMPO
ACMP+
ACMP
PTD3/KBIP3/ADP10
PTD2/KBIP2/ACMPO
V
SSOSC
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 163
11.1.1 Features
The IIC includes these distinctive features:
Compatible with IIC bus standard
Multi-master operation
Software programmable for one of 64 different serial clock frequencies
Software selectable acknowledge bit
Interrupt driven byte-by-byte data transfer
Arbitration lost interrupt with automatic mode switching from master to slave
Calling address identification interrupt
Start and stop signal generation/detection
Repeated start signal generation
Acknowledge bit generation/detection
Bus busy detection
General call recognition
10-bit address extension
11.1.2 Modes of Operation
A brief description of the IIC in the various MCU modes is given here.
Run mode This is the basic mode of operation. To conserve power in this mode, disable the
module.
Wait mode The module continues to operate while the MCU is in wait mode and can provide
a wake-up interrupt.
Stop mode The IIC is inactive in stop3 mode for reduced power consumption. The stop
instruction does not affect IIC register states. Stop2 resets the register contents.
11.1.3 Block Diagram
Figure 11-2 is a block diagram of the IIC.
MC9S08JM60 Series Data Sheet, Rev. 3
164 Freescale Semiconductor
Figure 11-2. IIC Functional Block Diagram
11.2 External Signal Description
This section describes each user-accessible pin signal.
11.2.1 SCL Serial Clock Line
The bidirectional SCL is the serial clock line of the IIC system.
11.2.2 SDA Serial Data Line
The bidirectional SDA is the serial data line of the IIC system.
11.3 Register Definition
This section consists of the IIC register descriptions in address order.
Refer to the direct-page register summary in the memory chapter of this document for the absolute address
assignments for all IIC registers. This section refers to registers and control bits only by their names. A
Input
Sync
In/Out
Data
Shift
Register
Address
Compare
Interrupt
Clock
Control
Start
Stop
Arbitration
Control
CTRL_REG FREQ_REG ADDR_REG STATUS_REG DATA_REG
ADDR_DECODE DATA_MUX
Data Bus
SCL SDA
Address
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 165
Freescale-provided equate or header file is used to translate these names into the appropriate absolute
addresses.
11.3.1 IIC Address Register (IICA)
11.3.2 IIC Frequency Divider Register (IICF)
7 6 5 4 3 2 1 0
R
AD7 AD6 AD5 AD4 AD3 AD2 AD1
0
W
Reset 0 0 0 0 0 0 0 0
= Unimplemented or Reserved
Figure 11-3. IIC Address Register (IICA)
Table 11-1. IICA Field Descriptions
Field Description
71
AD[7:1]
Slave Address. The AD[7:1] field contains the slave address to be used by the IIC module. This field is used on
the 7-bit address scheme and the lower seven bits of the 10-bit address scheme.
7 6 5 4 3 2 1 0
R
MULT ICR
W
Reset 0 0 0 0 0 0 0 0
Figure 11-4. IIC Frequency Divider Register (IICF)
MC9S08JM60 Series Data Sheet, Rev. 3
166 Freescale Semiconductor
For example, if the bus speed is 8 MHz, the table below shows the possible hold time values with different
ICR and MULT selections to achieve an IIC baud rate of 100kbps.
Table 11-2. IICF Field Descriptions
Field Description
76
MULT
IIC Multiplier Factor. The MULT bits define the multiplier factor, mul. This factor, along with the SCL divider,
generates the IIC baud rate. The multiplier factor mul as defined by the MULT bits is provided below.
00 mul = 01
01 mul = 02
10 mul = 04
11 Reserved
50
ICR
IIC Clock Rate. The ICR bits are used to prescale the bus clock for bit rate selection. These bits and the MULT
bits determine the IIC baud rate, the SDA hold time, the SCL Start hold time, and the SCL Stop hold time.
Table 11-4 provides the SCL divider and hold values for corresponding values of the ICR.
The SCL divider multiplied by multiplier factor mul generates IIC baud rate.
Eqn. 11-1
SDA hold time is the delay from the falling edge of SCL (IIC clock) to the changing of SDA (IIC data).
SDA hold time = bus period (s) mul SDA hold value Eqn. 11-2
SCL start hold time is the delay from the falling edge of SDA (IIC data) while SCL is high (Start condition) to the
falling edge of SCL (IIC clock).
SCL Start hold time = bus period (s) mul SCL Start hold value Eqn. 11-3
SCL stop hold time is the delay from the rising edge of SCL (IIC clock) to the rising edge of SDA
SDA (IIC data) while SCL is high (Stop condition).
SCL Stop hold time = bus period (s) mul SCL Stop hold value Eqn. 11-4
Table 11-3. Hold Time Values for 8 MHz Bus Speed
MULT ICR
Hold Times (s)
SDA SCL Start SCL Stop
0x2 0x00 3.500 3.000 5.500
0x1 0x07 2.500 4.000 5.250
0x1 0x0B 2.250 4.000 5.250
0x0 0x14 2.125 4.250 5.125
0x0 0x18 1.125 4.750 5.125
IIC baud rate
bus speed (Hz)
mul SCLdivider
--------------------------------------------- =
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 167
Table 11-4. IIC Divider and Hold Values
ICR
(hex)
SCL
Divider
SDA Hold
Value
SCL Hold
(Start)
Value
SCL Hold
(Stop)
Value
ICR
(hex)
SCL
Divider
SDA Hold
Value
SCL Hold
(Start)
Value
SCL Hold
(Stop)
Value
00 20 7 6 11 20 160 17 78 81
01 22 7 7 12 21 192 17 94 97
02 24 8 8 13 22 224 33 110 113
03 26 8 9 14 23 256 33 126 129
04 28 9 10 15 24 288 49 142 145
05 30 9 11 16 25 320 49 158 161
06 34 10 13 18 26 384 65 190 193
07 40 10 16 21 27 480 65 238 241
08 28 7 10 15 28 320 33 158 161
09 32 7 12 17 29 384 33 190 193
0A 36 9 14 19 2A 448 65 222 225
0B 40 9 16 21 2B 512 65 254 257
0C 44 11 18 23 2C 576 97 286 289
0D 48 11 20 25 2D 640 97 318 321
0E 56 13 24 29 2E 768 129 382 385
0F 68 13 30 35 2F 960 129 478 481
10 48 9 18 25 30 640 65 318 321
11 56 9 22 29 31 768 65 382 385
12 64 13 26 33 32 896 129 446 449
13 72 13 30 37 33 1024 129 510 513
14 80 17 34 41 34 1152 193 574 577
15 88 17 38 45 35 1280 193 638 641
16 104 21 46 53 36 1536 257 766 769
17 128 21 58 65 37 1920 257 958 961
18 80 9 38 41 38 1280 129 638 641
19 96 9 46 49 39 1536 129 766 769
1A 112 17 54 57 3A 1792 257 894 897
1B 128 17 62 65 3B 2048 257 1022 1025
1C 144 25 70 73 3C 2304 385 1150 1153
1D 160 25 78 81 3D 2560 385 1278 1281
1E 192 33 94 97 3E 3072 513 1534 1537
1F 240 33 118 121 3F 3840 513 1918 1921
MC9S08JM60 Series Data Sheet, Rev. 3
168 Freescale Semiconductor
11.3.3 IIC Control Register (IICC1)
11.3.4 IIC Status Register (IICS)
7 6 5 4 3 2 1 0
R
IICEN IICIE MST TX TXAK
0 0 0
W RSTA
Reset 0 0 0 0 0 0 0 0
= Unimplemented or Reserved
Figure 11-5. IIC Control Register (IICC1)
Table 11-5. IICC1 Field Descriptions
Field Description
7
IICEN
IIC Enable. The IICEN bit determines whether the IIC module is enabled.
0 IIC is not enabled
1 IIC is enabled
6
IICIE
IIC Interrupt Enable. The IICIE bit determines whether an IIC interrupt is requested.
0 IIC interrupt request not enabled
1 IIC interrupt request enabled
5
MST
Master Mode Select. The MST bit changes from a 0 to a 1 when a start signal is generated on the bus and
master mode is selected. When this bit changes from a 1 to a 0 a stop signal is generated and the mode of
operation changes from master to slave.
0 Slave mode
1 Master mode
4
TX
Transmit Mode Select. The TX bit selects the direction of master and slave transfers. In master mode, this bit
should be set according to the type of transfer required. Therefore, for address cycles, this bit is always high.
When addressed as a slave, this bit should be set by software according to the SRW bit in the status register.
0 Receive
1 Transmit
3
TXAK
Transmit Acknowledge Enable. This bit specifies the value driven onto the SDA during data acknowledge
cycles for master and slave receivers.
0 An acknowledge signal is sent out to the bus after receiving one data byte
1 No acknowledge signal response is sent
2
RSTA
Repeat start. Writing a 1 to this bit generates a repeated start condition provided it is the current master. This
bit is always read as cleared. Attempting a repeat at the wrong time results in loss of arbitration.
7 6 5 4 3 2 1 0
R TCF
IAAS
BUSY
ARBL
0 SRW
IICIF
RXAK
W
Reset 1 0 0 0 0 0 0 0
= Unimplemented or Reserved
Figure 11-6. IIC Status Register (IICS)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 169
11.3.5 IIC Data I/O Register (IICD)
Table 11-6. IICS Field Descriptions
Field Description
7
TCF
Transfer Complete Flag. This bit is set on the completion of a byte transfer. This bit is only valid during or
immediately following a transfer to the IIC module or from the IIC module.The TCF bit is cleared by reading the
IICD register in receive mode or writing to the IICD in transmit mode.
0 Transfer in progress
1 Transfer complete
6
IAAS
Addressed as a Slave. The IAAS bit is set when the calling address matches the programmed slave address or
when the GCAEN bit is set and a general call is received. Writing the IICC register clears this bit.
0 Not addressed
1 Addressed as a slave
5
BUSY
Bus Busy. The BUSY bit indicates the status of the bus regardless of slave or master mode. The BUSY bit is set
when a start signal is detected and cleared when a stop signal is detected.
0 Bus is idle
1 Bus is busy
4
ARBL
Arbitration Lost. This bit is set by hardware when the arbitration procedure is lost. The ARBL bit must be cleared
by software by writing a 1 to it.
0 Standard bus operation
1 Loss of arbitration
2
SRW
Slave Read/Write. When addressed as a slave, the SRW bit indicates the value of the R/W command bit of the
calling address sent to the master.
0 Slave receive, master writing to slave
1 Slave transmit, master reading from slave
1
IICIF
IIC Interrupt Flag. The IICIF bit is set when an interrupt is pending. This bit must be cleared by software, by
writing a 1 to it in the interrupt routine. One of the following events can set the IICIF bit:
One byte transfer completes
Match of slave address to calling address
Arbitration lost
0 No interrupt pending
1 Interrupt pending
0
RXAK
Receive Acknowledge. When the RXAK bit is low, it indicates an acknowledge signal has been received after
the completion of one byte of data transmission on the bus. If the RXAK bit is high it means that no acknowledge
signal is detected.
0 Acknowledge received
1 No acknowledge received
7 6 5 4 3 2 1 0
R
DATA
W
Reset 0 0 0 0 0 0 0 0
Figure 11-7. IIC Data I/O Register (IICD)
MC9S08JM60 Series Data Sheet, Rev. 3
170 Freescale Semiconductor
NOTE
When transitioning out of master receive mode, the IIC mode should be
switched before reading the IICD register to prevent an inadvertent
initiation of a master receive data transfer.
In slave mode, the same functions are available after an address match has occurred.
The TX bit in IICC must correctly reflect the desired direction of transfer in master and slave modes for
the transmission to begin. For instance, if the IIC is configured for master transmit but a master receive is
desired, reading the IICD does not initiate the receive.
Reading the IICD returns the last byte received while the IIC is configured in master receive or slave
receive modes. The IICD does not reflect every byte transmitted on the IIC bus, nor can software verify
that a byte has been written to the IICD correctly by reading it back.
In master transmit mode, the first byte of data written to IICD following assertion of MST is used for the
address transfer and should comprise of the calling address (in bit 7 to bit 1) concatenated with the required
R/W bit (in position bit 0).
11.3.6 IIC Control Register 2 (IICC2)
Table 11-7. IICD Field Descriptions
Field Description
70
DATA
Data In master transmit mode, when data is written to the IICD, a data transfer is initiated. The most significant
bit is sent first. In master receive mode, reading this register initiates receiving of the next byte of data.
7 6 5 4 3 2 1 0
R
GCAEN ADEXT
0 0 0
AD10 AD9 AD8
W
Reset 0 0 0 0 0 0 0 0
= Unimplemented or Reserved
Figure 11-8. IIC Control Register (IICC2)
Table 11-8. IICC2 Field Descriptions
Field Description
7
GCAEN
General Call Address Enable. The GCAEN bit enables or disables general call address.
0 General call address is disabled
1 General call address is enabled
6
ADEXT
Address Extension. The ADEXT bit controls the number of bits used for the slave address.
0 7-bit address scheme
1 10-bit address scheme
20
AD[10:8]
Slave Address. The AD[10:8] field contains the upper three bits of the slave address in the 10-bit address
scheme. This field is only valid when the ADEXT bit is set.
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 171
11.4 Functional Description
This section provides a complete functional description of the IIC module.
11.4.1 IIC Protocol
The IIC bus system uses a serial data line (SDA) and a serial clock line (SCL) for data transfer. All devices
connected to it must have open drain or open collector outputs. A logic AND function is exercised on both
lines with external pull-up resistors. The value of these resistors is system dependent.
Normally, a standard communication is composed of four parts:
Start signal
Slave address transmission
Data transfer
Stop signal
The stop signal should not be confused with the CPU stop instruction. The IIC bus system communication
is described briefly in the following sections and illustrated in Figure 11-9.
Figure 11-9. IIC Bus Transmission Signals
11.4.1.1 Start Signal
When the bus is free, no master device is engaging the bus (SCL and SDA lines are at logical high), a
master may initiate communication by sending a start signal. As shown in Figure 11-9, a start signal is
defined as a high-to-low transition of SDA while SCL is high. This signal denotes the beginning of a new
data transfer (each data transfer may contain several bytes of data) and brings all slaves out of their idle
states.
SCL
SDA
Start
Signal
Ack
Bit
1 2 3 4 5 6 7 8
msb lsb
1 2 3 4 5 6 7 8
msb lsb
Stop
Signal
No
SCL
SDA
1 2 3 4 5 6 7 8
msb lsb
1 2 5 6 7 8
msb lsb
Repeated
3 4
9 9
AD7 AD6 AD5 AD4 AD3 AD2 AD1 R/W XXX D7 D6 D5 D4 D3 D2 D1 D0
Calling Address Read/ Data Byte
AD7 AD6 AD5 AD4 AD3 AD2 AD1 R/W AD7 AD6 AD5 AD4 AD3 AD2 AD1 R/W
New Calling Address
9 9
XX
Ack
Bit
Write
Start
Signal
Start
Signal
Ack
Bit
Calling Address Read/
Write
Stop
Signal
No
Ack
Bit
Read/
Write
MC9S08JM60 Series Data Sheet, Rev. 3
172 Freescale Semiconductor
11.4.1.2 Slave Address Transmission
The first byte of data transferred immediately after the start signal is the slave address transmitted by the
master. This is a seven-bit calling address followed by a R/W bit. The R/W bit tells the slave the desired
direction of data transfer.
1 = Read transfer, the slave transmits data to the master.
0 = Write transfer, the master transmits data to the slave.
Only the slave with a calling address that matches the one transmitted by the master responds by sending
back an acknowledge bit. This is done by pulling the SDA low at the ninth clock (see Figure 11-9).
No two slaves in the system may have the same address. If the IIC module is the master, it must not
transmit an address equal to its own slave address. The IIC cannot be master and slave at the same time.
However, if arbitration is lost during an address cycle, the IIC reverts to slave mode and operates correctly
even if it is being addressed by another master.
11.4.1.3 Data Transfer
Before successful slave addressing is achieved, the data transfer can proceed byte-by-byte in a direction
specified by the R/W bit sent by the calling master.
All transfers that come after an address cycle are referred to as data transfers, even if they carry sub-address
information for the slave device
Each data byte is 8 bits long. Data may be changed only while SCL is low and must be held stable while
SCL is high as shown in Figure 11-9. There is one clock pulse on SCL for each data bit, the msb being
transferred first. Each data byte is followed by a 9th (acknowledge) bit, which is signalled from the
receiving device. An acknowledge is signalled by pulling the SDA low at the ninth clock. In summary, one
complete data transfer needs nine clock pulses.
If the slave receiver does not acknowledge the master in the ninth bit time, the SDA line must be left high
by the slave. The master interprets the failed acknowledge as an unsuccessful data transfer.
If the master receiver does not acknowledge the slave transmitter after a data byte transmission, the slave
interprets this as an end of data transfer and releases the SDA line.
In either case, the data transfer is aborted and the master does one of two things:
Relinquishes the bus by generating a stop signal.
Commences a new calling by generating a repeated start signal.
11.4.1.4 Stop Signal
The master can terminate the communication by generating a stop signal to free the bus. However, the
master may generate a start signal followed by a calling command without generating a stop signal first.
This is called repeated start. A stop signal is defined as a low-to-high transition of SDA while SCL at
logical 1 (see Figure 11-9).
The master can generate a stop even if the slave has generated an acknowledge at which point the slave
must release the bus.
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 173
11.4.1.5 Repeated Start Signal
As shown in Figure 11-9, a repeated start signal is a start signal generated without first generating a stop
signal to terminate the communication. This is used by the master to communicate with another slave or
with the same slave in different mode (transmit/receive mode) without releasing the bus.
11.4.1.6 Arbitration Procedure
The IIC bus is a true multi-master bus that allows more than one master to be connected on it. If two or
more masters try to control the bus at the same time, a clock synchronization procedure determines the bus
clock, for which the low period is equal to the longest clock low period and the high is equal to the shortest
one among the masters. The relative priority of the contending masters is determined by a data arbitration
procedure, a bus master loses arbitration if it transmits logic 1 while another master transmits logic 0. The
losing masters immediately switch over to slave receive mode and stop driving SDA output. In this case,
the transition from master to slave mode does not generate a stop condition. Meanwhile, a status bit is set
by hardware to indicate loss of arbitration.
11.4.1.7 Clock Synchronization
Because wire-AND logic is performed on the SCL line, a high-to-low transition on the SCL line affects all
the devices connected on the bus. The devices start counting their low period and after a devices clock has
gone low, it holds the SCL line low until the clock high state is reached. However, the change of low to
high in this device clock may not change the state of the SCL line if another device clock is still within its
low period. Therefore, synchronized clock SCL is held low by the device with the longest low period.
Devices with shorter low periods enter a high wait state during this time (see Figure 11-10). When all
devices concerned have counted off their low period, the synchronized clock SCL line is released and
pulled high. There is then no difference between the device clocks and the state of the SCL line and all the
devices start counting their high periods. The first device to complete its high period pulls the SCL line
low again.
Figure 11-10. IIC Clock Synchronization
SCL1
SCL2
SCL
Internal Counter Reset
Delay
Start Counting High Period
MC9S08JM60 Series Data Sheet, Rev. 3
174 Freescale Semiconductor
11.4.1.8 Handshaking
The clock synchronization mechanism can be used as a handshake in data transfer. Slave devices may hold
the SCL low after completion of one byte transfer (9 bits). In such a case, it halts the bus clock and forces
the master clock into wait states until the slave releases the SCL line.
11.4.1.9 Clock Stretching
The clock synchronization mechanism can be used by slaves to slow down the bit rate of a transfer. After
the master has driven SCL low the slave can drive SCL low for the required period and then release it. If
the slave SCL low period is greater than the master SCL low period then the resulting SCL bus signal low
period is stretched.
11.4.2 10-bit Address
For 10-bit addressing, 0x11110 is used for the first 5 bits of the first address byte. Various combinations of
read/write formats are possible within a transfer that includes 10-bit addressing.
11.4.2.1 Master-Transmitter Addresses a Slave-Receiver
The transfer direction is not changed (see Table 11-9). When a 10-bit address follows a start condition,
each slave compares the first seven bits of the first byte of the slave address (11110XX) with its own
address and tests whether the eighth bit (R/W direction bit) is 0. More than one device can find a match
and generate an acknowledge (A1). Then, each slave that finds a match compares the eight bits of the
second byte of the slave address with its own address. Only one slave finds a match and generates an
acknowledge (A2). The matching slave remains addressed by the master until it receives a stop condition
(P) or a repeated start condition (Sr) followed by a different slave address.
After the master-transmitter has sent the first byte of the 10-bit address, the slave-receiver sees an IIC
interrupt. Software must ensure the contents of IICD are ignored and not treated as valid data for this
interrupt.
11.4.2.2 Master-Receiver Addresses a Slave-Transmitter
The transfer direction is changed after the second R/W bit (see Table 11-10). Up to and including
acknowledge bit A2, the procedure is the same as that described for a master-transmitter addressing a
slave-receiver. After the repeated start condition (Sr), a matching slave remembers that it was addressed
before. This slave then checks whether the first seven bits of the first byte of the slave address following
Sr are the same as they were after the start condition (S) and tests whether the eighth (R/W) bit is 1. If there
is a match, the slave considers that it has been addressed as a transmitter and generates acknowledge A3.
The slave-transmitter remains addressed until it receives a stop condition (P) or a repeated start condition
(Sr) followed by a different slave address.
S
Slave Address 1st 7 bits R/W
A1
Slave Address 2nd byte
A2 Data A ... Data A/A P
11110 + AD10 + AD9 0 AD[8:1]
Table 11-9. Master-Transmitter Addresses Slave-Receiver with a 10-bit Address
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 175
After a repeated start condition (Sr), all other slave devices also compare the first seven bits of the first
byte of the slave address with their own addresses and test the eighth (R/W) bit. However, none of them
are addressed because R/W = 1 (for 10-bit devices) or the 11110XX slave address (for 7-bit devices) does
not match.
After the master-receiver has sent the first byte of the 10-bit address, the slave-transmitter sees an IIC
interrupt. Software must ensure the contents of IICD are ignored and not treated as valid data for this
interrupt.
11.4.3 General Call Address
General calls can be requested in 7-bit address or 10-bit address. If the GCAEN bit is set, the IIC matches
the general call address as well as its own slave address. When the IIC responds to a general call, it acts as
a slave-receiver and the IAAS bit is set after the address cycle. Software must read the IICD register after
the first byte transfer to determine whether the address matches is its own slave address or a general call.
If the value is 00, the match is a general call. If the GCAEN bit is clear, the IIC ignores any data supplied
from a general call address by not issuing an acknowledgement.
11.5 Resets
The IIC is disabled after reset. The IIC cannot cause an MCU reset.
11.6 Interrupts
The IIC generates a single interrupt.
An interrupt from the IIC is generated when any of the events in Table 11-11 occur, provided the IICIE bit
is set. The interrupt is driven by bit IICIF (of the IIC status register) and masked with bit IICIE (of the IIC
control register). The IICIF bit must be cleared by software by writing a 1 to it in the interrupt routine. You
can determine the interrupt type by reading the status register.
11.6.1 Byte Transfer Interrupt
The TCF (transfer complete flag) bit is set at the falling edge of the ninth clock to indicate the completion
of byte transfer.
S
Slave Address
1st 7 bits
R/W
A1
Slave Address
2nd byte
A2 Sr
Slave Address
1st 7 bits
R/W
A3 Data A ... Data A P
11110 + AD10 + AD9 0 AD[8:1] 11110 + AD10 + AD9 1
Table 11-10. Master-Receiver Addresses a Slave-Transmitter with a 10-bit Address
Table 11-11. Interrupt Summary
Interrupt Source Status Flag Local Enable
Complete 1-byte transfer TCF IICIF IICIE
Match of received calling address IAAS IICIF IICIE
Arbitration Lost ARBL IICIF IICIE
MC9S08JM60 Series Data Sheet, Rev. 3
176 Freescale Semiconductor
11.6.2 Address Detect Interrupt
When the calling address matches the programmed slave address (IIC address register) or when the
GCAEN bit is set and a general call is received, the IAAS bit in the status register is set. The CPU is
interrupted, provided the IICIE is set. The CPU must check the SRW bit and set its Tx mode accordingly.
11.6.3 Arbitration Lost Interrupt
The IIC is a true multi-master bus that allows more than one master to be connected on it. If two or more
masters try to control the bus at the same time, the relative priority of the contending masters is determined
by a data arbitration procedure. The IIC module asserts this interrupt when it loses the data arbitration
process and the ARBL bit in the status register is set.
Arbitration is lost in the following circumstances:
SDA sampled as a low when the master drives a high during an address or data transmit cycle.
SDA sampled as a low when the master drives a high during the acknowledge bit of a data receive
cycle.
A start cycle is attempted when the bus is busy.
A repeated start cycle is requested in slave mode.
A stop condition is detected when the master did not request it.
This bit must be cleared by software writing a 1 to it.
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 177
11.7 Initialization/Application Information
Figure 11-11. IIC Module Quick Start
Module Initialization (Slave)
1. Write: IICC2
to enable or disable general call
to select 10-bit or 7-bit addressing mode
2. Write: IICA
to set the slave address
3. Write: IICC1
to enable IIC and interrupts
4. Initialize RAM variables (IICEN = 1 and IICIE = 1) for transmit data
5. Initialize RAM variables used to achieve the routine shown in Figure 11-12
Module Initialization (Master)
1. Write: IICF
to set the IIC baud rate (example provided in this chapter)
2. Write: IICC1
to enable IIC and interrupts
3. Initialize RAM variables (IICEN = 1 and IICIE = 1) for transmit data
4. Initialize RAM variables used to achieve the routine shown in Figure 11-12
5. Write: IICC1
to enable TX
0
IICF
IICA
Baud rate = BUSCLK / (2 x MULT x (SCL DIVIDER))
TX TXAK RSTA 0 0 IICC1 IICEN IICIE MST
Module configuration
ARBL 0 SRW IICIF RXAK IICS TCF IAAS BUSY
Module status flags
Register Model
AD[7:1]
When addressed as a slave (in slave mode), the module responds to this address
MULT ICR
IICD DATA
Data register; Write to transmit IIC data read to read IIC data
0 AD10 AD9 AD8 IICC2 GCAEN ADEXT
Address configuration
0 0
MC9S08JM60 Series Data Sheet, Rev. 3
178 Freescale Semiconductor
Figure 11-12. Typical IIC Interrupt Routine
Clear
Master
Mode
?
Tx/Rx
?
Last Byte
Transmitted
?
RXAK=0
?
End of
Addr Cycle
(Master Rx)
?
Write Next
Byte to IICD
Switch to
Rx Mode
Dummy Read
from IICD
Generate
Stop Signal
Read Data
from IICD
and Store
Set TXACK =1
Generate
Stop Signal
2nd Last
Byte to Be Read
?
Last
Byte to Be Read
?
Arbitration
Lost
?
Clear ARBL
IAAS=1
?
IAAS=1
?
SRW=1
?
TX/RX
?
Set TX
Mode
Write Data
to IICD
Set RX
Mode
Dummy Read
from IICD
ACK from
Receiver
?
Tx Next
Byte
Read Data
from IICD
and Store
Switch to
Rx Mode
Dummy Read
from IICD
RTI
Y N
Y
Y Y
Y
Y
Y
Y
Y
Y
N
N
N
N N
N
N
N
N
Y
TX RX
RX
TX (Write)
(Read)
N
IICIF
Address Transfer
Data Transfer
(MST = 0)
(MST = 0)
See Note 1
NOTES:
1. If general call is enabled, a check must be done to determine whether the received address was a general call address (0x00). If the received address was a
general call address, then the general call must be handled by user software.
2. When 10-bit addressing is used to address a slave, the slave sees an interrupt following the first byte of the extended address.
See Note 2
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 179
MC9S08JM60 Series Data Sheet, Rev. 3
180 Freescale Semiconductor
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 181
Chapter 12
Multi-Purpose Clock Generator (S08MCGV1)
12.1 Introduction
The multi-purpose clock generator (MCG) module provides several clock source choices for the MCU.
which contains a frequency-locked loop (FLL) and a phase-locked loop (PLL). The module can select
either of the FLL or PLL clocks, or either of the internal or external reference clocks as a source for the
MCU system clock. Whichever clock source is chosen, it is passed through a reduced bus divider which
allows a lower output clock frequency to be derived. The MCG also controls an external oscillator (XOSC)
for the use of a crystal or resonator as the external reference clock.
For USB operation on the MC9S08JM60 series, the MCG must be configured for PLL engaged external
(PEE) mode in order to achieve a MCGOUT frequency of 48 MHz
Chapter 12 Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
182 Freescale Semiconductor
Figure 12-1. MC9S08JM60 Series Block Diagram Highlighting MCG Block and Pins
PTD4/ADP11
PTD5
PTD6
PTC1/SDA
PTC0/SCL
V
SS
V
DD
PTE3/TPM1CH1
PTE2/TPM1CH0
PTA5 PTA0
PTE0/TxD1
PTE1/RxD1
PTD1/ADP9/ACMP
PTD0/ADP8/ACMP+
PTC6
PTC5/RxD2
PTC4
PTC3/TxD2
PTC2
P
O
R
T
A
P
O
R
T
C
P
O
R
T
D
P
O
R
T
E
8-BIT KEYBOARD
INTERRUPT MODULE (KBI)
IIC MODULE (IIC)
8-/16-BIT SERIAL PERIPHERAL
INTERFACE MODULE (SPI1)
USER Flash (IN BYTES)
USER RAM (IN BYTES)
ON-CHIP ICE AND
DEBUG MODULE (DBG)
MC9S08JM60 = 60,912
HCS08 CORE
CPU BDC
NOTES:
1. Port pins are software configurable with pullup device if input port.
2. Pin contains software configurable pullup/pull-down device if IRQ is enabled
(IRQPE = 1). Pull-down is enabled if rising edge detect is selected (IRQEDG = 1)
3. IRQ does not have a clamp diode to V
DD
. IRQ must not be driven above V
DD
.
4. Pin contains integrated pullup device.
5. When pin functions as KBI (KBIPEn = 1) and associated pin is configured to enable the
pullup device, KBEDGn can be used to reconfigure the pullup as a pull-down device.
2-CHANNEL TIMER/PWM
MODULE (TPM2)
PTB5/KBIP5/ADP5
P
O
R
T
B
PTE5/MOSI1
PTE4/MISO1
PTE6/SPSCK1
PTE7/SS1
HCS08 SYSTEM CONTROL
RESETS AND INTERRUPTS
MODES OF OPERATION
POWER MANAGEMENT
VOLTAGE
REGULATOR
COP IRQ LVD
LOW-POWER OSCILLATOR
MULTI-PURPOSE CLOCK
GENERATOR (MCG)
RESET
V
SSAD
V
DDAD
V
REFH
ANALOG-TO-DIGITAL
CONVERTER (ADC)
6-CHANNEL TIMER/PWM
MODULE (TPM1)
PTD7
6
PTB4/KBIP4/ADP4
PTG3/KBIP7
PTG2/KBIP6
P
O
R
T
G
12-CHANNEL, 12-BIT
BKGD/MS
PTF3/TPM1CH5
PTF2/TPM1CH4
PTF0/TPM1CH2
PTF1/TPM1CH3
P
O
R
T
F
PTF5/TPM2CH1
PTF4/TPM2CH0
PTF6
PTF7
INTERFACE MODULE (SCI1)
SERIAL COMMUNICATIONS
INTERFACE MODULE (SCI2)
SERIAL COMMUNICATIONS
PTG0/KBIP0
PTG1/KBIP1
MC9S08JM32 = 32,768
V
REFL
PTG4/XTAL
PTG5/EXTAL
IRQ/TPMCLK
RxD2
TxD2
SDA
SCL
8
KBIPx
KBIPx
TPMCLK
SPSCK1
SS1
MISO1
MOSI1
TPMCLK
TPM1CH1
TPM1CH0
RxD1
TxD1
EXTAL
XTAL
4
4
USB SIE
USB ENDPOINT
RAM
FULL SPEED
USB
TRANSCEIVER
USBDP
USBDN
MISO2
SS2
SPSCK2
MOSI2
PTB1/MOSI2/ADP1
PTB0/MISO2/ADP0
PTB7/ADP7
PTB6/ADP6
8-/16-BIT SERIAL PERIPHERAL
INTERFACE MODULE (SPI2)
REAL-TIME COUNTER
(RTC)
PTB3/SS2/ADP3
PTB2/SPSCK2/ADP2
TPM1CHx
4
TPM2CH1
TPM2CH0
4
ANALOG COMPARATOR
(ACMP)
SYSTEM
USB 3.3-V VOLTAGE REGULATOR
V
USB33
MC9S08JM60 = 4096
MC9S08JM32 = 2048
ACMPO
ACMP+
ACMP
PTD3/KBIP3/ADP10
PTD2/KBIP2/ACMPO
V
SSOSC
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 183
12.1.1 Features
Key features of the MCG module are:
Frequency-locked loop (FLL)
0.2% resolution using internal 32-kHz reference
2% deviation over voltage and temperature using internal 32-kHz reference
Internal or external reference can be used to control the FLL
Phase-locked loop (PLL)
Voltage-controlled oscillator (VCO)
Modulo VCO frequency divider
Phase/Frequency detector
Integrated loop filter
Lock detector with interrupt capability
Internal reference clock
Nine trim bits for accuracy
Can be selected as the clock source for the MCU
External reference clock
Control for external oscillator
Clock monitor with reset capability
Can be selected as the clock source for the MCU
Reference divider is provided
Clock source selected can be divided down by 1, 2, 4, or 8
BDC clock (MCGLCLK) is provided as a constant divide by 2 of the DCO output whether in an
FLL or PLL mode.
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
184 Freescale Semiconductor
Figure 12-2. Multi-Purpose Clock Generator (MCG) Block Diagram
DCO
Filter
RDIV
TRIM
External Oscillator
IREFS
(XOSC)
CLKS
n=0-7
/ 2
n
n=0-3
/ 2
n
Internal
Reference
Clock
BDIV
9
MCGLCLK
MCGOUT
MCGIRCLK
EREFS RANGE
EREFSTEN HGO
IREFSTEN
MCGERCLK
LP
MCGFFCLK
DCOOUT
FLL
RDIV_CLK
PLL
VDIV
/(4,8,12,...,40)
VCO
Phase
Detector
Charge
Pump
Internal
Filter
Lock
Detector
LOCK
Clock
Monitor
OSCINIT
VCOOUT
Multi-purpose Clock Generator (MCG)
LP
ERCLKEN
IRCLKEN
CME
LOC
/ 2
PLLS
LOLS
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 185
12.1.2 Modes of Operation
There are nine modes of operation for the MCG:
FLL Engaged Internal (FEI)
FLL Engaged External (FEE)
FLL Bypassed Internal (FBI)
FLL Bypassed External (FBE)
PLL Engaged External (PEE)
PLL Bypassed External (PBE)
Bypassed Low Power Internal (BLPI)
Bypassed Low Power External (BLPE)
Stop
For details see Section 12.4.1, Operational Modes.
12.2 External Signal Description
There are no MCG signals that connect off chip.
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
186 Freescale Semiconductor
12.3 Register Definition
12.3.1 MCG Control Register 1 (MCGC1)
7 6 5 4 3 2 1 0
R
CLKS RDIV IREFS IRCLKEN IREFSTEN
W
Reset: 0 0 0 0 0 1 0 0
Figure 12-3. MCG Control Register 1 (MCGC1)
Table 12-1. MCG Control Register 1 Field Descriptions
Field Description
7:6
CLKS
Clock Source Select Selects the system clock source.
00 Encoding 0 Output of FLL or PLL is selected.
01 Encoding 1 Internal reference clock is selected.
10 Encoding 2 External reference clock is selected.
11 Encoding 3 Reserved, defaults to 00.
5:3
RDIV
Reference Divider Selects the amount to divide down the reference clock selected by the IREFS bit. If the
FLL is selected, the resulting frequency must be in the range 31.25 kHz to 39.0625 kHz. If the PLL is selected,
the resulting frequency must be in the range 1 MHz to 2 MHz.
000 Encoding 0 Divides reference clock by 1 (reset default)
001 Encoding 1 Divides reference clock by 2
010 Encoding 2 Divides reference clock by 4
011 Encoding 3 Divides reference clock by 8
100 Encoding 4 Divides reference clock by 16
101 Encoding 5 Divides reference clock by 32
110 Encoding 6 Divides reference clock by 64
111 Encoding 7 Divides reference clock by 128
2
IREFS
Internal Reference Select Selects the reference clock source.
1 Internal reference clock selected
0 External reference clock selected
1
IRCLKEN
Internal Reference Clock Enable Enables the internal reference clock for use as MCGIRCLK.
1 MCGIRCLK active
0 MCGIRCLK inactive
0
IREFSTEN
Internal Reference Stop Enable Controls whether or not the internal reference clock remains enabled when
the MCG enters stop mode.
1 Internal reference clock stays enabled in stop if IRCLKEN is set or if MCG is in FEI, FBI, or BLPI mode before
entering stop
0 Internal reference clock is disabled in stop
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 187
12.3.2 MCG Control Register 2 (MCGC2)
7 6 5 4 3 2 1 0
R
BDIV RANGE HGO LP EREFS ERCLKEN EREFSTEN
W
Reset: 0 1 0 0 0 0 0 0
Figure 12-4. MCG Control Register 2 (MCGC2)
Table 12-2. MCG Control Register 2 Field Descriptions
Field Description
7:6
BDIV
Bus Frequency Divider Selects the amount to divide down the clock source selected by the CLKS bits in the
MCGC1 register. This controls the bus frequency.
00 Encoding 0 Divides selected clock by 1
01 Encoding 1 Divides selected clock by 2 (reset default)
10 Encoding 2 Divides selected clock by 4
11 Encoding 3 Divides selected clock by 8
5
RANGE
Frequency Range Select Selects the frequency range for the external oscillator or external clock source.
1 High frequency range selected for the external oscillator of 1 MHz to 16 MHz (1 MHz to 40 MHz for external
clock source)
0 Low frequency range selected for the external oscillator of 32 kHz to 100 kHz (32 kHz to 1 MHz for external
clock source)
4
HGO
High Gain Oscillator Select Controls the external oscillator mode of operation.
1 Configure external oscillator for high gain operation
0 Configure external oscillator for low power operation
3
LP
Low Power Select Controls whether the FLL (or PLL) is disabled in bypassed modes.
1 FLL (or PLL) is disabled in bypass modes (lower power).
0 FLL (or PLL) is not disabled in bypass modes.
2
EREFS
External Reference Select Selects the source for the external reference clock.
1 Oscillator requested
0 External Clock Source requested
1
ERCLKEN
External Reference Enable Enables the external reference clock for use as MCGERCLK.
1 MCGERCLK active
0 MCGERCLK inactive
0
EREFSTEN
External Reference Stop Enable Controls whether or not the external reference clock remains enabled when
the MCG enters stop mode.
1 External reference clock stays enabled in stop if ERCLKEN is set or if MCG is in FEE, FBE, PEE, PBE, or
BLPE mode before entering stop
0 External reference clock is disabled in stop
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
188 Freescale Semiconductor
12.3.3 MCG Trim Register (MCGTRM)
7 6 5 4 3 2 1 0
R
TRIM
W
POR: 1 0 0 0 0 0 0 0
Reset: U U U U U U U U
Figure 12-5. MCG Trim Register (MCGTRM)
Table 12-3. MCG Trim Register Field Descriptions
Field Description
7:0
TRIM
MCG Trim Setting Controls the internal reference clock frequency by controlling the internal reference clock
period. The TRIM bits are binary weighted (i.e., bit 1 will adjust twice as much as bit 0). Increasing the binary
value in TRIM will increase the period, and decreasing the value will decrease the period.
An additional fine trim bit is available in MCGSC as the FTRIM bit.
If a TRIM[7:0] value stored in nonvolatile memory is to be used, its the users responsibility to copy that value
from the nonvolatile memory location to this register.
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 189
12.3.4 MCG Status and Control Register (MCGSC)
7 6 5 4 3 2 1 0
R LOLS LOCK PLLST IREFST CLKST OSCINIT
FTRIM
W
POR:
Reset:
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
U
Figure 12-6. MCG Status and Control Register (MCGSC)
Table 12-4. MCG Status and Control Register Field Descriptions
Field Description
7
LOLS
Loss of Lock Status This bit is a sticky indication of lock status for the FLL or PLL. LOLS is set when lock
detection is enabled and after acquiring lock, the FLL or PLL output frequency has fallen outside the lock exit
frequency tolerance, D
unl
. LOLIE determines whether an interrupt request is made when set. LOLS is cleared by
reset or by writing a logic 1 to LOLS when LOLS is set. Writing a logic 0 to LOLS has no effect.
0 FLL or PLL has not lost lock since LOLS was last cleared.
1 FLL or PLL has lost lock since LOLS was last cleared.
6
LOCK
Lock Status Indicates whether the FLL or PLL has acquired lock. Lock detection is disabled when both the
FLL and PLL are disabled. If the lock status bit is set then changing the value of any of the following bits IREFS,
PLLS, RDIV[2:0], TRIM[7:0] (if in FEI or FBI modes), or VDIV[3:0] (if in PBE or PEE modes), will cause the lock
status bit to clear and stay cleared until the FLL or PLL has reacquired lock. Stop mode entry will also cause the
lock status bit to clear and stay cleared until the FLL or PLL has reacquired lock. Entry into BLPI or BLPE mode
will also cause the lock status bit to clear and stay cleared until the MCG has exited these modes and the FLL or
PLL has reacquired lock.
0 FLL or PLL is currently unlocked.
1 FLL or PLL is currently locked.
5
PLLST
PLL Select Status The PLLST bit indicates the current source for the PLLS clock. The PLLST bit does not
update immediately after a write to the PLLS bit due to internal synchronization between clock domains.
0 Source of PLLS clock is FLL clock.
1 Source of PLLS clock is PLL clock.
4
IREFST
Internal Reference Status The IREFST bit indicates the current source for the reference clock. The IREFST
bit does not update immediately after a write to the IREFS bit due to internal synchronization between clock
domains.
0 Source of reference clock is external reference clock (oscillator or external clock source as determined by the
EREFS bit in the MCGC2 register).
1 Source of reference clock is internal reference clock.
3:2
CLKST
Clock Mode Status The CLKST bits indicate the current clock mode. The CLKST bits do not update
immediately after a write to the CLKS bits due to internal synchronization between clock domains.
00 Encoding 0 Output of FLL is selected.
01 Encoding 1 Internal reference clock is selected.
10 Encoding 2 External reference clock is selected.
11 Encoding 3 Output of PLL is selected.
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
190 Freescale Semiconductor
12.3.5 MCG Control Register 3 (MCGC3)
1
OSCINIT
OSC Initialization If the external reference clock is selected by ERCLKEN or by the MCG being in FEE, FBE,
PEE, PBE, or BLPE mode, and if EREFS is set, then this bit is set after the initialization cycles of the external
oscillator clock have completed. This bit is only cleared when either EREFS is cleared or when the MCG is in
either FEI, FBI, or BLPI mode and ERCLKEN is cleared.
0
FTRIM
MCG Fine Trim Controls the smallest adjustment of the internal reference clock frequency. Setting FTRIM will
increase the period and clearing FTRIM will decrease the period by the smallest amount possible.
If an FTRIM value stored in nonvolatile memory is to be used, its the users responsibility to copy that value from
the nonvolatile memory location to this registers FTRIM bit.
7 6 5 4 3 2 1 0
R
LOLIE PLLS CME
0
VDIV
W
Reset: 0 0 0 0 0 0 0 1
Figure 12-7. MCG PLL Register (MCGPLL)
Table 12-5. MCG PLL Register Field Descriptions
Field Description
7
LOLIE
Loss of Lock Interrupt Enable Determines if an interrupt request is made following a loss of lock indication.
The LOLIE bit only has an effect when LOLS is set.
0 No request on loss of lock.
1 Generate an interrupt request on loss of lock.
6
PLLS
PLL Select Controls whether the PLL or FLL is selected. If the PLLS bit is clear, the PLL is disabled in all
modes. If the PLLS is set, the FLL is disabled in all modes.
1 PLL is selected
0 FLL is selected
Table 12-4. MCG Status and Control Register Field Descriptions (continued)
Field Description
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 191
5
CME
Clock Monitor Enable Determines if a reset request is made following a loss of external clock indication. The
CME bit should only be set to a logic 1 when either the MCG is in an operational mode that uses the external
clock (FEE, FBE, PEE, PBE, or BLPE) or the external reference is enabled (ERCLKEN=1 in the MCGC2
register). Whenever the CME bit is set to a logic 1, the value of the RANGE bit in the MCGC2 register should not
be changed.
0 Clock monitor is disabled.
1 Generate a reset request on loss of external clock.
3:0
VDIV
VCO Divider Selects the amount to divide down the VCO output of PLL. The VDIV bits establish the
multiplication factor (M) applied to the reference clock frequency.
0000 Encoding 0 Reserved.
0001 Encoding 1 Multiply by 4.
0010 Encoding 2 Multiply by 8.
0011 Encoding 3 Multiply by 12.
0100 Encoding 4 Multiply by 16.
0101 Encoding 5 Multiply by 20.
0110 Encoding 6 Multiply by 24.
0111 Encoding 7 Multiply by 28.
1000 Encoding 8 Multiply by 32.
1001 Encoding 9 Multiply by 36.
1010 Encoding 10 Multiply by 40.
1011 Encoding 11 Reserved (default to M=40).
11xx Encoding 12-15 Reserved (default to M=40).
Table 12-5. MCG PLL Register Field Descriptions (continued)
Field Description
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
192 Freescale Semiconductor
12.4 Functional Description
12.4.1 Operational Modes
Figure 12-8. Clock Switching Modes
The nine states of the MCG are shown as a state diagram and are described below. The arrows indicate the
allowed movements between the states.
12.4.1.1 FLL Engaged Internal (FEI)
FLL engaged internal (FEI) is the default mode of operation and is entered when all the following
conditions occur:
CLKS bits are written to 00
IREFS bit is written to 1
PLLS bit is written to 0
RDIV bits are written to 000. Since the internal reference clock frequency should already be in the
range of 31.25 kHz to 39.0625 kHz after it is trimmed, no further frequency divide is necessary.
Entered from any state
when MCU enters stop
Returns to state that was active
before MCU entered stop, unless
RESET occurs while in stop.
Stop
PLL Bypassed
External (PBE)
PLL Engaged
External (PEE)
FLL Engaged
External (FEE)
FLL Engaged
Internal (FEI)
FLL Bypassed
External (FBE)
FLL Bypassed
Internal (FBI)
IREFS=1
CLKS=00
PLLS=0
IREFS=0
CLKS=00
PLLS=0
IREFS=1
CLKS=01
PLLS=0
IREFS=0
CLKS=10
PLLS=0
IREFS=0
CLKS=00
PLLS=1
IREFS=0
CLKS=10
PLLS=1
IREFS=0
CLKS=10
BDM Disabled
and LP=1
IREFS=1
CLKS=01
BDM Disabled
and LP=1
Bypassed
Low Power
Internal (BLPI)
Bypassed
Low Power
External (BLPE)
BDM Enabled
or LP=0
BDM Enabled
or LP=0
BDM Enabled
or LP=0
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 193
In FLL engaged internal mode, the MCGOUT clock is derived from the FLL clock, which is controlled by
the internal reference clock. The FLL clock frequency locks to 1024 times the reference frequency, as
selected by the RDIV bits. The MCGLCLK is derived from the FLL and the PLL is disabled in a low
power state.
12.4.1.2 FLL Engaged External (FEE)
The FLL engaged external (FEE) mode is entered when all the following conditions occur:
CLKS bits are written to 00
IREFS bit is written to 0
PLLS bit is written to 0
RDIV bits are written to divide reference clock to be within the range of 31.25 kHz to 39.0625 kHz
In FLL engaged external mode, the MCGOUT clock is derived from the FLL clock which is controlled by
the external reference clock. The external reference clock which is enabled can be an external
crystal/resonator or it can be another external clock source.The FLL clock frequency locks to 1024 times
the reference frequency, as selected by the RDIV bits. The MCGLCLK is derived from the FLL and the
PLL is disabled in a low power state.
12.4.1.3 FLL Bypassed Internal (FBI)
In FLL bypassed internal (FBI) mode, the MCGOUT clock is derived from the internal reference clock
and the FLL is operational but its output clock is not used. This mode is useful to allow the FLL to acquire
its target frequency while the MCGOUT clock is driven from the internal reference clock.
The FLL bypassed internal mode is entered when all the following conditions occur:
CLKS bits are written to 01
IREFS bit is written to 1
PLLS bit is written to 0
RDIV bits are written to 000. Since the internal reference clock frequency should already be in the
range of 31.25 kHz to 39.0625 kHz after it is trimmed, no further frequency divide is necessary.
LP bit is written to 0
In FLL bypassed internal mode, the MCGOUT clock is derived from the internal reference clock. The FLL
clock is controlled by the internal reference clock, and the FLL clock frequency locks to 1024 times the
reference frequency, as selected by the RDIV bits. The MCGLCLK is derived from the FLL and the PLL
is disabled in a low power state.
12.4.1.4 FLL Bypassed External (FBE)
In FLL bypassed external (FBE) mode, the MCGOUT clock is derived from the external reference clock
and the FLL is operational but its output clock is not used. This mode is useful to allow the FLL to acquire
its target frequency while the MCGOUT clock is driven from the external reference clock.
The FLL bypassed external mode is entered when all the following conditions occur:
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
194 Freescale Semiconductor
CLKS bits are written to 10
IREFS bit is written to 0
PLLS bit is written to 0
RDIV bits are written to divide reference clock to be within the range of 31.25 kHz to 39.0625 kHz
LP bit is written to 0
In FLL bypassed external mode, the MCGOUT clock is derived from the external reference clock. The
external reference clock which is enabled can be an external crystal/resonator or it can be another external
clock source.The FLL clock is controlled by the external reference clock, and the FLL clock frequency
locks to 1024 times the reference frequency, as selected by the RDIV bits. The MCGLCLK is derived from
the FLL and the PLL is disabled in a low power state.
NOTE
It is possible to briefly operate in FBE mode with an FLL reference clock
frequency that is greater than the specified maximum frequency. This can be
necessary in applications that operate in PEE mode using an external crystal
with a frequency above 5 MHz. Please see 12.5.2.4, Example # 4: Moving
from FEI to PEE Mode: External Crystal = 8 MHz, Bus Frequency = 8 MHz
for a detailed example.
12.4.1.5 PLL Engaged External (PEE)
The PLL engaged external (PEE) mode is entered when all the following conditions occur:
CLKS bits are written to 00
IREFS bit is written to 0
PLLS bit is written to 1
RDIV bits are written to divide reference clock to be within the range of 1 MHz to 2 MHz
In PLL engaged external mode, the MCGOUT clock is derived from the PLL clock which is controlled by
the external reference clock. The external reference clock which is enabled can be an external
crystal/resonator or it can be another external clock source The PLL clock frequency locks to a
multiplication factor, as selected by the VDIV bits, times the reference frequency, as selected by the RDIV
bits. If BDM is enabled then the MCGLCLK is derived from the DCO (open-loop mode) divided by two.
If BDM is not enabled then the FLL is disabled in a low power state.
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 195
12.4.1.6 PLL Bypassed External (PBE)
In PLL bypassed external (PBE) mode, the MCGOUT clock is derived from the external reference clock
and the PLL is operational but its output clock is not used. This mode is useful to allow the PLL to acquire
its target frequency while the MCGOUT clock is driven from the external reference clock.
The PLL bypassed external mode is entered when all the following conditions occur:
CLKS bits are written to 10
IREFS bit is written to 0
PLLS bit is written to 1
RDIV bits are written to divide reference clock to be within the range of 1 MHz to 2 MHz
LP bit is written to 0
In PLL bypassed external mode, the MCGOUT clock is derived from the external reference clock. The
external reference clock which is enabled can be an external crystal/resonator or it can be another external
clock source. The PLL clock frequency locks to a multiplication factor, as selected by the VDIV bits, times
the reference frequency, as selected by the RDIV bits. If BDM is enabled then the MCGLCLK is derived
from the DCO (open-loop mode) divided by two. If BDM is not enabled then the FLL is disabled in a low
power state.
12.4.1.7 Bypassed Low Power Internal (BLPI)
The bypassed low power internal (BLPI) mode is entered when all the following conditions occur:
CLKS bits are written to 01
IREFS bit is written to 1
PLLS bit is written to 0 or 1
LP bit is written to 1
BDM mode is not active
In bypassed low power internal mode, the MCGOUT clock is derived from the internal reference clock.
The PLL and the FLL are disabled at all times in BLPI mode and the MCGLCLK will not be available for
BDC communications If the BDM becomes active the mode will switch to one of the bypassed internal
modes as determined by the state of the PLLS bit.
12.4.1.8 Bypassed Low Power External (BLPE)
The bypassed low power external (BLPE) mode is entered when all the following conditions occur:
CLKS bits are written to 10
IREFS bit is written to 0
PLLS bit is written to 0 or 1
LP bit is written to 1
BDM mode is not active
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
196 Freescale Semiconductor
In bypassed low power external mode, the MCGOUT clock is derived from the external reference clock.
The external reference clock which is enabled can be an external crystal/resonator or it can be another
external clock source.
The PLL and the FLL are disabled at all times in BLPE mode and the MCGLCLK will not be available
for BDC communications. If the BDM becomes active the mode will switch to one of the bypassed
external modes as determined by the state of the PLLS bit.
12.4.1.9 Stop
Stop mode is entered whenever the MCU enters a STOP state. In this mode, the FLL and PLL are disabled
and all MCG clock signals are static except in the following cases:
MCGIRCLK will be active in stop mode when all the following conditions occur:
IRCLKEN = 1
IREFSTEN = 1
MCGERCLK will be active in stop mode when all the following conditions occur:
ERCLKEN = 1
EREFSTEN = 1
12.4.2 Mode Switching
When switching between engaged internal and engaged external modes the IREFS bit can be changed at
anytime, but the RDIV bits must be changed simultaneously so that the reference frequency stays in the
range required by the state of the PLLS bit (31.25 kHz to 39.0625 kHz if the FLL is selected, or 1 MHz to
2 MHz if the PLL is selected). After a change in the IREFS value the FLL or PLL will begin locking again
after the switch is completed. The completion of the switch is shown by the IREFST bit.
For the special case of entering stop mode immediately after switching to FBE mode, if the external clock
and the internal clock are disabled in stop mode, (EREFSTEN = 0 and IREFSTEN = 0), it is necessary to
allow 100us after the IREFST bit is cleared to allow the internal reference to shutdown. For most cases the
delay due to instruction execution times will be sufficient.
The CLKS bits can also be changed at anytime, but in order for the MCGLCLK to be configured correctly
the RDIV bits must be changed simultaneously so that the reference frequency stays in the range required
by the state of the PLLS bit (31.25 kHz to 39.0625 kHz if the FLL is selected, or 1 MHz to 2MHz if the
PLL is selected). The actual switch to the newly selected clock will be shown by the CLKST bits. If the
newly selected clock is not available, the previous clock will remain selected.
For details see Figure 12-8.
12.4.3 Bus Frequency Divider
The BDIV bits can be changed at anytime and the actual switch to the new frequency will occur
immediately.
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 197
12.4.4 Low Power Bit Usage
The low power bit (LP) is provided to allow the FLL or PLL to be disabled and thus conserve power when
these systems are not being used. However, in some applications it may be desirable to enable the FLL or
PLL and allow it to lock for maximum accuracy before switching to an engaged mode. Do this by writing
the LP bit to 0.
12.4.5 Internal Reference Clock
When IRCLKEN is set the internal reference clock signal will be presented as MCGIRCLK, which can be
used as an additional clock source. The MCGIRCLK frequency can be re-targeted by trimming the period
of the internal reference clock. This can be done by writing a new value to the TRIM bits in the MCGTRM
register. Writing a larger value will decrease the MCGIRCLK frequency, and writing a smaller value to
the MCGTRM register will increase the MCGIRCLK frequency. The TRIM bits will effect the MCGOUT
frequency if the MCG is in FLL engaged internal (FEI), FLL bypassed internal (FBI), or bypassed low
power internal (BLPI) mode. The TRIM and FTRIM value is initialized by POR but is not affected by
other resets.
Until MCGIRCLK is trimmed, programming low reference divider (RDIV) factors may result in
MCGOUT frequencies that exceed the maximum chip-level frequency and violate the chip-level clock
timing specifications (see the Device Overview chapter).
If IREFSTEN and IRCLKEN bits are both set, the internal reference clock will keep running during stop
mode in order to provide a fast recovery upon exiting stop.
12.4.6 External Reference Clock
The MCG module can support an external reference clock with frequencies between 31.25 kHz to 5 MHz
in FEE and FBE modes, 1 MHz to 16 MHz in PEE and PBE modes, and 0 to 40 MHz in BLPE mode.
When ERCLKEN is set, the external reference clock signal will be presented as MCGERCLK, which can
be used as an additional clock source. When IREFS = 1, the external reference clock will not be used by
the FLL or PLL and will only be used as MCGERCLK. In these modes, the frequency can be equal to the
maximum frequency the chip-level timing specifications will support (see the Device Overview chapter).
If EREFSTEN and ERCLKEN bits are both set or the MCG is in FEE, FBE, PEE, PBE or BLPE mode,
the external reference clock will keep running during stop mode in order to provide a fast recovery upon
exiting stop.
If CME bit is written to 1, the clock monitor is enabled. If the external reference falls below a certain
frequency (f
loc_high
or f
loc_low
depending on the RANGE bit in the MCGC2), the MCU will reset. The
LOC bit in the System Reset Status (SRS) register will be set to indicate the error.
12.4.7 Fixed Frequency Clock
The MCG presents the divided reference clock as MCGFFCLK for use as an additional clock source. The
MCGFFCLK frequency must be no more than 1/4 of the MCGOUT frequency to be valid. Because of this
requirement, the MCGFFCLK is not valid in bypass modes for the following combinations of BDIV and
RDIV values:
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
198 Freescale Semiconductor
BDIV=00 (divide by 1), RDIV < 010
BDIV=01 (divide by 2), RDIV < 011
12.5 Initialization / Application Information
This section describes how to initialize and configure the MCG module in application. The following
sections include examples on how to initialize the MCG and properly switch between the various available
modes.
12.5.1 MCG Module Initialization Sequence
The MCG comes out of reset configured for FEI mode with the BDIV set for divide-by-2. The internal
reference will stabilize in t
irefst
microseconds before the FLL can acquire lock. As soon as the internal
reference is stable, the FLL will acquire lock in t
fll_lock
milliseconds.
Upon POR, the internal reference will require trimming to guarantee an accurate clock. Freescale
recommends using FLASH location 0xFFAE for storing the fine trim bit, FTRIM in the MCGSC register,
and 0xFFAF for storing the 8-bit trim value in the MCGTRM register. The MCU will not automatically
copy the values in these FLASH locations to the respective registers. Therefore, user code must copy these
values from FLASH to the registers.
NOTE
The BDIV value should not be changed to divide-by-1 without first
trimming the internal reference. Failure to do so could result in the MCU
running out of specification.
12.5.1.1 Initializing the MCG
Because the MCG comes out of reset in FEI mode, the only MCG modes which can be directly switched
to upon reset are FEE, FBE, and FBI modes (see Figure 12-8). Reaching any of the other modes requires
first configuring the MCG for one of these three initial modes. Care must be taken to check relevant status
bits in the MCGSC register reflecting all configuration changes within each mode.
To change from FEI mode to FEE or FBE modes, follow this procedure:
1. Enable the external clock source by setting the appropriate bits in MCGC2.
2. Write to MCGC1 to select the clock mode.
If entering FEE, set RDIV appropriately, clear the IREFS bit to switch to the external reference,
and leave the CLKS bits at %00 so that the output of the FLL is selected as the system clock
source.
If entering FBE, clear the IREFS bit to switch to the external reference and change the CLKS
bits to %10 so that the external reference clock is selected as the system clock source. The
RDIV bits should also be set appropriately here according to the external reference frequency
because although the FLL is bypassed, it is still on in FBE mode.
The internal reference can optionally be kept running by setting the IRCLKEN bit. This is
useful if the application will switch back and forth between internal and external modes. For
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 199
minimum power consumption, leave the internal reference disabled while in an external clock
mode.
3. After the proper configuration bits have been set, wait for the affected bits in the MCGSC register
to be changed appropriately, reflecting that the MCG has moved into the proper mode.
If ERCLKEN was set in step 1 or the MCG is in FEE, FBE, PEE, PBE, or BLPE mode, and
EREFS was also set in step 1, wait here for the OSCINIT bit to become set indicating that the
external clock source has finished its initialization cycles and stabilized. Typical crystal startup
times are given in Appendix A, Electrical Characteristics.
If in FEE mode, check to make sure the IREFST bit is cleared and the LOCK bit is set before
moving on.
If in FBE mode, check to make sure the IREFST bit is cleared, the LOCK bit is set, and the
CLKST bits have changed to %10 indicating the external reference clock has been
appropriately selected. Although the FLL is bypassed in FBE mode, it is still on and will lock
in FBE mode.
To change from FEI clock mode to FBI clock mode, follow this procedure:
1. Change the CLKS bits to %01 so that the internal reference clock is selected as the system clock
source.
2. Wait for the CLKST bits in the MCGSC register to change to %01, indicating that the internal
reference clock has been appropriately selected.
12.5.2 MCG Mode Switching
When switching between operational modes of the MCG, certain configuration bits must be changed in
order to properly move from one mode to another. Each time any of these bits are changed (PLLS, IREFS,
CLKS, or EREFS), the corresponding bits in the MCGSC register (PLLST, IREFST, CLKST, or
OSCINIT) must be checked before moving on in the application software.
Additionally, care must be taken to ensure that the reference clock divider (RDIV) is set properly for the
mode being switched to. For instance, in PEE mode, if using a 4 MHz crystal, RDIV must be set to %001
(divide-by-2) or %010 (divide -by-4) in order to divide the external reference down to the required
frequency between 1 and 2 MHz.
The RDIV and IREFS bits should always be set properly before changing the PLLS bit so that the FLL or
PLL clock has an appropriate reference clock frequency to switch to.
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
200 Freescale Semiconductor
The table below shows MCGOUT frequency calculations using RDIV, BDIV, and VDIV settings for each
clock mode. The bus frequency is equal to MCGOUT divided by 2.
1
R is the reference divider selected by the RDIV bits, B is the bus frequency divider selected by the BDIV bits,
and M is the multiplier selected by the VDIV bits.
This section will include 3 mode switching examples using a 4 MHz external crystal. If using an external
clock source less than 1 MHz, the MCG should not be configured for any of the PLL modes (PEE and
PBE).
12.5.2.1 Example # 1: Moving from FEI to PEE Mode: External Crystal = 4 MHz,
Bus Frequency = 8 MHz
In this example, the MCG will move through the proper operational modes from FEI to PEE mode until
the 4 MHz crystal reference frequency is set to achieve a bus frequency of 8 MHz. Because the MCG is in
FEI mode out of reset, this example also shows how to initialize the MCG for PEE mode out of reset. First,
the code sequence will be described. Then a flowchart will be included which illustrates the sequence.
1. First, FEI must transition to FBE mode:
a) MCGC2 = 0x36 (%00110110)
BDIV (bits 7 and 6) set to %00, or divide-by-1
RANGE (bit 5) set to 1 because the frequency of 4 MHz is within the high frequency range
HGO (bit 4) set to 1 to configure external oscillator for high gain operation
EREFS (bit 2) set to 1, because a crystal is being used
ERCLKEN (bit 1) set to 1 to ensure the external reference clock is active
b) Loop until OSCINIT (bit 1) in MCGSC is 1, indicating the crystal selected by the EREFS bit
has been initialized.
Table 12-6. MCGOUT Frequency Calculation Options
Clock Mode f
MCGOUT
1
Note
FEI (FLL engaged internal) (f
int
* 1024) / B Typical f
MCGOUT
= 16 MHz
immediately after reset. RDIV
bits set to %000.
FEE (FLL engaged external) (f
ext
/ R *1024) / B f
ext
/ R must be in the range of
31.25 kHz to 39.0625 kHz
FBE (FLL bypassed external) f
ext
/ B f
ext
/ R must be in the range of
31.25 kHz to 39.0625 kHz
FBI (FLL bypassed internal) f
int
/ B Typical f
int
= 32 kHz
PEE (PLL engaged external) [(f
ext
/ R) * M] / B f
ext
/ R must be in the range of 1
MHz to 2 MHz
PBE (PLL bypassed external) f
ext
/ B f
ext
/ R must be in the range of 1
MHz to 2 MHz
BLPI (Bypassed low power internal) f
int
/ B
BLPE (Bypassed low power external) f
ext
/ B
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 201
c) MCGC1 = 0xB8 (%10111000)
CLKS (bits 7 and 6) set to %10 in order to select external reference clock as system clock
source
RDIV (bits 5-3) set to %111, or divide-by-128 because 4 MHz / 128 = 31.25 kHz which is
in the 31.25 kHz to 39.0625 kHz range required by the FLL
IREFS (bit 2) cleared to 0, selecting the external reference clock
d) Loop until IREFST (bit 4) in MCGSC is 0, indicating the external reference is the current
source for the reference clock
e) Loop until CLKST (bits 3 and 2) in MCGSC are %10, indicating that the external reference
clock is selected to feed MCGOUT
2. Then, FBE must transition either directly to PBE mode or first through BLPE mode and then to
PBE mode:
a) BLPE: If a transition through BLPE mode is desired, first set LP (bit 3) in MCGC2 to 1.
b) BLPE/PBE: MCGC1 = 0x90 (%10010000)
RDIV (bits 5-3) set to %010, or divide-by-4 because 4 MHz / 4 = 1 MHz which is in the 1
MHz to 2 MHz range required by the PLL. In BLPE mode, the configuration of the RDIV
does not matter because both the FLL and PLL are disabled. Changing them only sets up the
the dividers for PLL usage in PBE mode
c) BLPE/PBE: MCGC3 = 0x44 (%01000100)
PLLS (bit 6) set to 1, selects the PLL. In BLPE mode, changing this bit only prepares the
MCG for PLL usage in PBE mode
VDIV (bits 3-0) set to %0100, or multiply-by-16 because 1 MHz reference * 16 = 16 MHz.
In BLPE mode, the configuration of the VDIV bits does not matter because the PLL is
disabled. Changing them only sets up the multiply value for PLL usage in PBE mode
d) BLPE: If transitioning through BLPE mode, clear LP (bit 3) in MCGC2 to 0 here to switch to
PBE mode
e) PBE: Loop until PLLST (bit 5) in MCGSC is set, indicating that the current source for the
PLLS clock is the PLL
f) PBE: Then loop until LOCK (bit 6) in MCGSC is set, indicating that the PLL has acquired lock
3. Last, PBE mode transitions into PEE mode:
a) MCGC1 = 0x10 (%00010000)
CLKS (bits7 and 6) in MCGSC1 set to %00 in order to select the output of the PLL as the
system clock source
Loop until CLKST (bits 3 and 2) in MCGSC are %11, indicating that the PLL output is
selected to feed MCGOUT in the current clock mode
b) Now, With an RDIV of divide-by-4, a BDIV of divide-by-1, and a VDIV of multiply-by-16,
MCGOUT = [(4 MHz / 4) * 16] / 1 = 16 MHz, and the bus frequency is MCGOUT / 2, or 8 MHz
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
202 Freescale Semiconductor
Figure 12-9. Flowchart of FEI to PEE Mode Transition using a 4 MHz Crystal
MCGC2 = $36
CHECK
OSCINIT = 1 ?
MCGC1 = $B8
CHECK
IREFST = 0?
CHECK
CLKST = %10?
ENTER
BLPE MODE ?
MCGC2 = $3E
(LP = 1)
MCGC1 = $90
MCGC3 = $44
IN
BLPE MODE ?
(LP=1)
MCGC2 = $36
(LP = 0)
CHECK
PLLST = 1?
MCGC1 = $10
CHECK
LOCK = 1?
CHECK
CLKST = %11?
CONTINUE
IN PEE MODE
START
IN FEI MODE
YES
YES
YES
YES
YES
YES
YES
YES
NO
NO
NO
NO
NO
NO
NO
NO
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 203
12.5.2.2 Example # 2: Moving from PEE to BLPI Mode: External Crystal = 4 MHz,
Bus Frequency =16 kHz
In this example, the MCG will move through the proper operational modes from PEE mode with a 4 MHz
crystal configured for an 8 MHz bus frequency (see previous example) to BLPI mode with a 16 kHz bus
frequency.First, the code sequence will be described. Then a flowchart will be included which illustrates
the sequence.
1. First, PEE must transition to PBE mode:
a) MCGC1 = 0x90 (%10010000)
CLKS (bits 7 and 6) set to %10 in order to switch the system clock source to the external
reference clock
b) Loop until CLKST (bits 3 and 2) in MCGSC are %10, indicating that the external reference
clock is selected to feed MCGOUT
2. Then, PBE must transition either directly to FBE mode or first through BLPE mode and then to
FBE mode:
a) BLPE: If a transition through BLPE mode is desired, first set LP (bit 3) in MCGC2 to 1
b) BLPE/FBE: MCGC1 = 0xB8 (%10111000)
RDIV (bits 5-3) set to %111, or divide-by-128 because 4 MHz / 128 = 31.25 kHz which is
in the 31.25 kHz to 39.0625 kHz range required by the FLL. In BLPE mode, the
configuration of the RDIV does not matter because both the FLL and PLL are disabled.
Changing them only sets up the dividers for FLL usage in FBE mode
c) BLPE/FBE: MCGC3 = 0x04 (%00000100)
PLLS (bit 6) clear to 0 to select the FLL. In BLPE mode, changing this bit only prepares the
MCG for FLL usage in FBE mode. With PLLS = 0, the VDIV value does not matter.
d) BLPE: If transitioning through BLPE mode, clear LP (bit 3) in MCGC2 to 0 here to switch to
FBE mode
e) FBE: Loop until PLLST (bit 5) in MCGSC is clear, indicating that the current source for the
PLLS clock is the FLL
f) FBE: Optionally, loop until LOCK (bit 6) in the MCGSC is set, indicating that the FLL has
acquired lock. Although the FLL is bypassed in FBE mode, it is still enabled and running.
3. Next, FBE mode transitions into FBI mode:
a) MCGC1 = 0x44 (%01000100)
CLKS (bits7 and 6) in MCGSC1 set to %01 in order to switch the system clock to the
internal reference clock
IREFS (bit 2) set to 1 to select the internal reference clock as the reference clock source
RDIV (bits 5-3) set to %000, or divide-by-1 because the trimmed internal reference should
be within the 31.25 kHz to 39.0625 kHz range required by the FLL
b) Loop until IREFST (bit 4) in MCGSC is 1, indicating the internal reference clock has been
selected as the reference clock source
c) Loop until CLKST (bits 3 and 2) in MCGSC are %01, indicating that the internal reference
clock is selected to feed MCGOUT
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
204 Freescale Semiconductor
4. Lastly, FBI transitions into FBILP mode.
a) MCGC2 = 0x08 (%00001000)
LP (bit 3) in MCGSC is 1
Figure 12-10. Flowchart of PEE to BLPI Mode Transition using a 4 MHz Crystal
MCGC1 = $90
CHECK
CLKST = %10 ?
MCGC2 = $3E
MCGC1 = $44
CHECK
IREFST = 0?
CHECK
CLKST = %01?
CONTINUE
IN BLPI MODE
START
IN PEE MODE
MCGC1 = $B8
MCGC3 = $04
ENTER
BLPE MODE ?
IN
BLPE MODE ?
(LP=1)
MCGC2 = $36
(LP = 0)
CHECK
PLLST = 0?
OPTIONAL:
= 1?
MCGC2 = $08
YES
YES
YES
YES
YES
YES
YES
NO
NO
NO
NO
NO
NO
NO
CHECK LOCK
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 205
12.5.2.3 Example #3: Moving from BLPI to FEE Mode: External Crystal = 4 MHz,
Bus Frequency = 16 MHz
In this example, the MCG will move through the proper operational modes from BLPI mode at a 16 kHz
bus frequency running off of the internal reference clock (see previous example) to FEE mode using a 4
MHz crystal configured for a 16 MHz bus frequency. First, the code sequence will be described. Then a
flowchart will be included which illustrates the sequence.
1. First, BLPI must transition to FBI mode.
a) MCGC2 = 0x00 (%00000000)
LP (bit 3) in MCGSC is 0
b) Optionally, loop until LOCK (bit 6) in the MCGSC is set, indicating that the FLL has acquired
lock. Although the FLL is bypassed in FBI mode, it is still enabled and running.
2. Next, FBI will transition to FEE mode.
a) MCGC2 = 0x36 (%00110110)
RANGE (bit 5) set to 1 because the frequency of 4 MHz is within the high frequency range
HGO (bit 4) set to 1 to configure external oscillator for high gain operation
EREFS (bit 2) set to 1, because a crystal is being used
ERCLKEN (bit 1) set to 1 to ensure the external reference clock is active
b) Loop until OSCINIT (bit 1) in MCGSC is 1, indicating the crystal selected by the EREFS bit
has been initialized.
c) MCGC1 = 0x38 (%00111000)
CLKS (bits 7 and 6) set to %00 in order to select the output of the FLL as system clock
source
RDIV (bits 5-3) set to %111, or divide-by-128 because 4 MHz / 128 = 31.25 kHz which is
in the 31.25 kHz to 39.0625 kHz range required by the FLL
IREFS (bit 1) cleared to 0, selecting the external reference clock
d) Loop until IREFST (bit 4) in MCGSC is 0, indicating the external reference clock is the current
source for the reference clock
e) Optionally, loop until LOCK (bit 6) in the MCGSC is set, indicating that the FLL has
reacquired lock.
f) Loop until CLKST (bits 3 and 2) in MCGSC are %00, indicating that the output of the FLL is
selected to feed MCGOUT
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
206 Freescale Semiconductor
Figure 12-11. Flowchart of BLPI to FEE Mode Transition using a 4 MHz Crystal
12.5.2.4 Example # 4: Moving from FEI to PEE Mode: External Crystal = 8 MHz,
Bus Frequency = 8 MHz
In this example, the MCG will move through the proper operational modes from FEI to PEE mode until
the 8 MHz crystal reference frequency is set to achieve a bus frequency of 8 MHz.
This example is similar to example number one except that in this case the frequency of the external crystal
is 8 MHz instead of 4 MHz. Special consideration must be taken with this case since there is a period of
time along the way from FEI mode to PEE mode where the FLL operates based on a reference clock with
a frequency that is greater than the maximum allowed for the FLL. This occurs because with an 8 MHz
MCGC2 = $36
CHECK
OSCINIT = 1 ?
MCGC1 = $38
CHECK
IREFST = 0?
CHECK
CLKST = %00?
CONTINUE
IN FEE MODE
START
IN BLPI MODE
YES
YES
NO
NO
NO
MCGC2 = $00
OPTIONAL:
CHECK LOCK
= 1?
YES
NO
YES
OPTIONAL:
CHECK LOCK
= 1?
YES
NO
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 207
external crystal and a maximum reference divider factor of 128, the resulting frequency of the reference
clock for the FLL is 62.5 kHz (greater than the 39.0625 kHz maximum allowed).
Care must be taken in the software to minimize the amount of time spent in this state where the FLL is
operating in this condition.
The following code sequence describes how to move from FEI mode to PEE mode until the 8 MHz crystal
reference frequency is set to achieve a bus frequency of 8 MHz. Because the MCG is in FEI mode out of
reset, this example also shows how to initialize the MCG for PEE mode out of reset. First, the code
sequence will be described. Then a flowchart will be included which illustrates the sequence.
1. First, FEI must transition to FBE mode:
a) MCGC2 = 0x36 (%00110110)
BDIV (bits 7 and 6) set to %00, or divide-by-1
RANGE (bit 5) set to 1 because the frequency of 8 MHz is within the high frequency range
HGO (bit 4) set to 1 to configure external oscillator for high gain operation
EREFS (bit 2) set to 1, because a crystal is being used
ERCLKEN (bit 1) set to 1 to ensure the external reference clock is active
b) Loop until OSCINIT (bit 1) in MCGSC is 1, indicating the crystal selected by the EREFS bit
has been initialized.
c) Block Interrupts (If applicable by setting the interrupt bit in the CCR).
d) MCGC1 = 0xB8 (%10111000)
CLKS (bits 7 and 6) set to %10 in order to select external reference clock as system clock
source
RDIV (bits 5-3) set to %111, or divide-by-128.
NOTE
8 MHz / 128 = 62.5 kHz which is greater than the 31.25 kHz to 39.0625 kHz
range required by the FLL. Therefore after the transition to FBE is
complete, software must progress through to BLPE mode immediately by
setting the LP bit in MCGC2.
IREFS (bit 2) cleared to 0, selecting the external reference clock
e) Loop until IREFST (bit 4) in MCGSC is 0, indicating the external reference is the current
source for the reference clock
f) Loop until CLKST (bits 3 and 2) in MCGSC are %10, indicating that the external reference
clock is selected to feed MCGOUT
2. Then, FBE mode transitions into BLPE mode:
a) MCGC2 = 0x3E (%00111110)
LP (bit 3) in MCGC2 to 1 (BLPE mode entered)
NOTE
There must be no extra steps (including interrupts) between steps 1d and 2a.
b) Enable Interrupts (if applicable by clearing the interrupt bit in the CCR).
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
208 Freescale Semiconductor
c) MCGC1 = 0x98 (%10011000)
RDIV (bits 5-3) set to %011, or divide-by-8 because 8 MHz / 8= 1 MHz which is in the 1
MHz to 2 MHz range required by the PLL. In BLPE mode, the configuration of the RDIV
does not matter because both the FLL and PLL are disabled. Changing them only sets up the
the dividers for PLL usage in PBE mode
d) MCGC3 = 0x44 (%01000100)
PLLS (bit 6) set to 1, selects the PLL. In BLPE mode, changing this bit only prepares the
MCG for PLL usage in PBE mode
VDIV (bits 3-0) set to %0100, or multiply-by-16 because 1 MHz reference * 16 = 16 MHz.
In BLPE mode, the configuration of the VDIV bits does not matter because the PLL is
disabled. Changing them only sets up the multiply value for PLL usage in PBE mode
e) Loop until PLLST (bit 5) in MCGSC is set, indicating that the current source for the PLLS
clock is the PLL
3. Then, BLPE mode transitions into PBE mode:
a) Clear LP (bit 3) in MCGC2 to 0 here to switch to PBE mode
b) Then loop until LOCK (bit 6) in MCGSC is set, indicating that the PLL has acquired lock
4. Last, PBE mode transitions into PEE mode:
a) MCGC1 = 0x18 (%00011000)
CLKS (bits7 and 6) in MCGSC1 set to %00 in order to select the output of the PLL as the
system clock source
Loop until CLKST (bits 3 and 2) in MCGSC are %11, indicating that the PLL output is
selected to feed MCGOUT in the current clock mode
b) Now, With an RDIV of divide-by-8, a BDIV of divide-by-1, and a VDIV of multiply-by-16,
MCGOUT = [(8 MHz / 8) * 16] / 1 = 16 MHz, and the bus frequency is MCGOUT / 2, or 8 MHz
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 209
Figure 12-12. Flowchart of FEI to PEE Mode Transition using a 8 MHz Crystal
MCGC2 = $36
CHECK
OSCINIT = 1 ?
MCGC1 = $B8
CHECK
IREFST = 0?
CHECK
CLKST = %10?
MCGC2 = $3E
(LP = 1)
MCGC1 = $98
MCGC3 = $44
MCGC2 = $36
(LP = 0)
CHECK
PLLST = 1?
MCGC1 = $18
CHECK
LOCK = 1?
CHECK
CLKST = %11?
CONTINUE
IN PEE MODE
START
IN FEI MODE
YES
YES
YES
YES
YES
YES
NO
NO
NO
NO
NO
NO
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
210 Freescale Semiconductor
12.5.3 Calibrating the Internal Reference Clock (IRC)
The IRC is calibrated by writing to the MCGTRM register first, then using the FTRIM bit to fine tune
the frequency. We will refer to this total 9-bit value as the trim value, ranging from 0x000 to 0x1FF, where
the FTRIM bit is the LSB.
The trim value after a POR is always 0x100 (MCGTRM = 0x80 and FTRIM = 0). Writing a larger value
will decrease the frequency and smaller values will increase the frequency. The trim value is linear with
the period, except that slight variations in wafer fab processing produce slight non-linearities between trim
value and period. These non-linearities are why an iterative trimming approach to search for the best trim
value is recommended. In example #4 later in this section, this approach will be demonstrated.
After a trim value has been found for a device, this value can be stored in FLASH memory to save the
value. If power is removed from the device, the IRC can easily be re-trimmed by copying the saved value
from FLASH to the MCG registers. Freescale identifies recommended FLASH locations for storing the
trim value for each MCU. Consult the memory map in the data sheet for these locations. On devices that
are factory trimmed, the factory trim value will be stored in these locations.
12.5.3.1 Example #5: Internal Reference Clock Trim
For applications that require a tight frequency tolerance, a trimming procedure is provided that will allow
a very accurate internal clock source. This section outlines one example of trimming the internal oscillator.
Many other possible trimming procedures are valid and can be used.
In the example below, the MCG trim will be calibrated for the 9-bit MCGTRM and FTRIM collective
value. This value will be referred to as TRMVAL.
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 211
Figure 12-13. Trim Procedure
In this particular case, the MCU has been attached to a PCB and the entire assembly is undergoing final
test with automated test equipment. A separate signal or message is provided to the MCU operating under
user provided software control. The MCU initiates a trim procedure as outlined in Figure 12-13 while the
tester supplies a precision reference signal.
If the intended bus frequency is near the maximum allowed for the device, it is recommended to trim using
a reference divider value (RDIV setting) of twice the final value. After the trim procedure is complete, the
reference divider can be restored. This will prevent accidental overshoot of the maximum clock frequency.
Initial conditions:
1) Clock supplied from ATE has 500 s duty period
2) MCG configured for internal reference with 8MHz bus
START TRIM PROCEDURE
CONTINUE
CASE STATEMENT
COUNT > EXPECTED = 500
.
MEASURE
INCOMING CLOCK WIDTH
TRMVAL = $100
COUNT < EXPECTED = 500
COUNT = EXPECTED = 500
TRMVAL =
TRMVAL =
TRMVAL - 256/ (2**n) TRMVAL + 256/ (2**n)
n = n + 1
(COUNT = # OF BUS CLOCKS / 8)
(DECREASING TRMVAL
INCREASES THE FREQUENCY)
(INCREASING TRMVAL
DECREASES THE FREQUENCY)
NO
YES
IS n > 9?
(RUNNING TOO SLOW)
(RUNNING TOO FAST)
n=1
STORE MCGTRM AND
FTRIM VALUES IN
NON-VOLATILE MEMORY
Multi-Purpose Clock Generator (S08MCGV1)
MC9S08JM60 Series Data Sheet, Rev. 3
212 Freescale Semiconductor
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 213
Chapter 13
Real-Time Counter (S08RTCV1)
13.1 Introduction
The real-time counter (RTC) consists of one 8-bit counter, one 8-bit comparator, several binary-based and
decimal-based prescaler dividers, two clock sources, and one programmable periodic interrupt. This
module can be used for time-of-day, calendar or any task scheduling functions. It can also serve as a cyclic
wake up from low power modes without the need of external components.
Chapter 13 Real-Time Counter (S08RTCV1)
MC9S08JM60 Series Data Sheet, Rev. 3
214 Freescale Semiconductor
Figure 13-1. MC9S08JM60 Series Block Diagram Highlighting RTC Block
PTD4/ADP11
PTD5
PTD6
PTC1/SDA
PTC0/SCL
V
SS
V
DD
PTE3/TPM1CH1
PTE2/TPM1CH0
PTA5 PTA0
PTE0/TxD1
PTE1/RxD1
PTD1/ADP9/ACMP
PTD0/ADP8/ACMP+
PTC6
PTC5/RxD2
PTC4
PTC3/TxD2
PTC2
P
O
R
T
A
P
O
R
T
C
P
O
R
T
D
P
O
R
T
E
8-BIT KEYBOARD
INTERRUPT MODULE (KBI)
IIC MODULE (IIC)
8-/16-BIT SERIAL PERIPHERAL
INTERFACE MODULE (SPI1)
USER Flash (IN BYTES)
USER RAM (IN BYTES)
ON-CHIP ICE AND
DEBUG MODULE (DBG)
MC9S08JM60 = 60,912
HCS08 CORE
CPU BDC
NOTES:
1. Port pins are software configurable with pullup device if input port.
2. Pin contains software configurable pullup/pull-down device if IRQ is enabled
(IRQPE = 1). Pull-down is enabled if rising edge detect is selected (IRQEDG = 1)
3. IRQ does not have a clamp diode to V
DD
. IRQ must not be driven above V
DD
.
4. Pin contains integrated pullup device.
5. When pin functions as KBI (KBIPEn = 1) and associated pin is configured to enable the
pullup device, KBEDGn can be used to reconfigure the pullup as a pull-down device.
2-CHANNEL TIMER/PWM
MODULE (TPM2)
PTB5/KBIP5/ADP5
P
O
R
T
B
PTE5/MOSI1
PTE4/MISO1
PTE6/SPSCK1
PTE7/SS1
HCS08 SYSTEM CONTROL
RESETS AND INTERRUPTS
MODES OF OPERATION
POWER MANAGEMENT
VOLTAGE
REGULATOR
COP IRQ LVD
LOW-POWER OSCILLATOR
MULTI-PURPOSE CLOCK
GENERATOR (MCG)
RESET
V
SSAD
V
DDAD
V
REFH
ANALOG-TO-DIGITAL
CONVERTER (ADC)
6-CHANNEL TIMER/PWM
MODULE (TPM1)
PTD7
6
PTB4/KBIP4/ADP4
PTG3/KBIP7
PTG2/KBIP6
P
O
R
T
G
12-CHANNEL, 12-BIT
BKGD/MS
PTF3/TPM1CH5
PTF2/TPM1CH4
PTF0/TPM1CH2
PTF1/TPM1CH3
P
O
R
T
F
PTF5/TPM2CH1
PTF4/TPM2CH0
PTF6
PTF7
INTERFACE MODULE (SCI1)
SERIAL COMMUNICATIONS
INTERFACE MODULE (SCI2)
SERIAL COMMUNICATIONS
PTG0/KBIP0
PTG1/KBIP1
MC9S08JM32 = 32,768
V
REFL
PTG4/XTAL
PTG5/EXTAL
IRQ/TPMCLK
RxD2
TxD2
SDA
SCL
8
KBIPx
KBIPx
TPMCLK
SPSCK1
SS1
MISO1
MOSI1
TPMCLK
TPM1CH1
TPM1CH0
RxD1
TxD1
EXTAL
XTAL
4
4
USB SIE
USB ENDPOINT
RAM
FULL SPEED
USB
TRANSCEIVER
USBDP
USBDN
MISO2
SS2
SPSCK2
MOSI2
PTB1/MOSI2/ADP1
PTB0/MISO2/ADP0
PTB7/ADP7
PTB6/ADP6
8-/16-BIT SERIAL PERIPHERAL
INTERFACE MODULE (SPI2)
REAL-TIME COUNTER
(RTC)
PTB3/SS2/ADP3
PTB2/SPSCK2/ADP2
TPM1CHx
4
TPM2CH1
TPM2CH0
4
ANALOG COMPARATOR
(ACMP)
SYSTEM
USB 3.3-V VOLTAGE REGULATOR
V
USB33
MC9S08JM60 = 4096
MC9S08JM32 = 2048
ACMPO
ACMP+
ACMP
PTD3/KBIP3/ADP10
PTD2/KBIP2/ACMPO
V
SSOSC
Real-Time Counter (S08RTCV1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 215
13.1.1 Features
Features of the RTC module include:
8-bit up-counter
8-bit modulo match limit
Software controllable periodic interrupt on match
Three software selectable clock sources for input to prescaler with selectable binary-based and
decimal-based divider values
1 kHz internal low-power oscillator (LPO)
External clock (ERCLK)
32 kHz internal clock (IRCLK)
13.1.2 Modes of Operation
This section defines the operation in stop, wait and background debug modes.
13.1.2.1 Wait Mode
The RTC continues to run in wait mode if enabled before executing the appropriate instruction. Therefore,
the RTC can bring the MCU out of wait mode if the real-time interrupt is enabled. For lowest possible
current consumption, the RTC should be stopped by software if not needed as an interrupt source during
wait mode.
13.1.2.2 Stop Modes
The RTC continues to run in stop2 or stop3 mode if the RTC is enabled before executing the STOP
instruction. Therefore, the RTC can bring the MCU out of stop modes with no external components, if the
real-time interrupt is enabled.
The LPO clock can be used in stop2 and stop3 modes. ERCLK and IRCLK clocks are only available in
stop3 mode.
Power consumption is lower when all clock sources are disabled, but in that case, the real-time interrupt
cannot wake up the MCU from stop modes.
13.1.2.3 Active Background Mode
The RTC suspends all counting during active background mode until the microcontroller returns to normal
user operating mode. Counting resumes from the suspended value as long as the RTCMOD register is not
written and the RTCPS and RTCLKS bits are not altered.
Real-Time Counter (S08RTCV1)
MC9S08JM60 Series Data Sheet, Rev. 3
216 Freescale Semiconductor
13.1.3 Block Diagram
The block diagram for the RTC module is shown in Figure 13-2.
Figure 13-2. Real-Time Counter (RTC) Block Diagram
13.2 External Signal Description
The RTC does not include any off-chip signals.
13.3 Register Definition
The RTC includes a status and control register, an 8-bit counter register, and an 8-bit modulo register.
Refer to the direct-page register summary in the memory section of this document for the absolute address
assignments for all RTC registers.This section refers to registers and control bits only by their names and
relative address offsets.
Table 13-1 is a summary of RTC registers.
Table 13-1. RTC Register Summary
Name 7 6 5 4 3 2 1 0
RTCSC
R
RTIF RTCLKS RTIE RTCPS
W
RTCCNT
R RTCCNT
W
RTCMOD
R
RTCMOD
W
Clock
Source
Select
Prescaler
Divide-By
8-Bit Counter
(RTCCNT)
8-Bit Modulo
(RTCMOD)
8-Bit Comparator
RTIF
RTIE
Background
V
DD
RTC
Interrupt
Request
D Q
R
E
LPO
RTC
Clock
Mode
ERCLK
IRCLK
RTCLKS
Write 1 to
RTIF
RTCPS
RTCLKS[0]
Real-Time Counter (S08RTCV1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 217
13.3.1 RTC Status and Control Register (RTCSC)
RTCSC contains the real-time interrupt status flag (RTIF), the clock select bits (RTCLKS), the real-time
interrupt enable bit (RTIE), and the prescaler select bits (RTCPS).
7 6 5 4 3 2 1 0
R
RTIF RTCLKS RTIE RTCPS
W
Reset: 0 0 0 0 0 0 0 0
Figure 13-3. RTC Status and Control Register (RTCSC)
Table 13-2. RTCSC Field Descriptions
Field Description
7
RTIF
Real-Time Interrupt Flag This status bit indicates the RTC counter register reached the value in the RTC modulo
register. Writing a logic 0 has no effect. Writing a logic 1 clears the bit and the real-time interrupt request. Reset
clears RTIF.
0 RTC counter has not reached the value in the RTC modulo register.
1 RTC counter has reached the value in the RTC modulo register.
65
RTCLKS
Real-Time Clock Source Select. These two read/write bits select the clock source input to the RTC prescaler.
Changing the clock source clears the prescaler and RTCCNT counters. When selecting a clock source, ensure
that the clock source is properly enabled (if applicable) to ensure correct operation of the RTC. Reset clears
RTCLKS.
00 Real-time clock source is the 1-kHz low power oscillator (LPO)
01 Real-time clock source is the external clock (ERCLK)
1x Real-time clock source is the internal clock (IRCLK)
4
RTIE
Real-Time Interrupt Enable. This read/write bit enables real-time interrupts. If RTIE is set, then an interrupt is
generated when RTIF is set. Reset clears RTIE.
0 Real-time interrupt requests are disabled. Use software polling.
1 Real-time interrupt requests are enabled.
30
RTCPS
Real-Time Clock Prescaler Select. These four read/write bits select binary-based or decimal-based divide-by
values for the clock source. See Table 13-3. Changing the prescaler value clears the prescaler and RTCCNT
counters. Reset clears RTCPS.
Table 13-3. RTC Prescaler Divide-by values
RTCLKS[0]
RTCPS
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 Off 2
3
2
5
2
6
2
7
2
8
2
9
2
10
1 2 2
2
10 2
4
10
2
5x10
2
10
3
1 Off 2
10
2
11
2
12
2
13
2
14
2
15
2
16
10
3
2x10
3
5x10
3
10
4
2x10
4
5x10
4
10
5
2x10
5
Real-Time Counter (S08RTCV1)
MC9S08JM60 Series Data Sheet, Rev. 3
218 Freescale Semiconductor
13.3.2 RTC Counter Register (RTCCNT)
RTCCNT is the read-only value of the current RTC count of the 8-bit counter.
13.3.3 RTC Modulo Register (RTCMOD)
13.4 Functional Description
The RTC is composed of a main 8-bit up-counter with an 8-bit modulo register, a clock source selector,
and a prescaler block with binary-based and decimal-based selectable values. The module also contains
software selectable interrupt logic.
After any MCU reset, the counter is stopped and reset to 0x00, the modulus register is set to 0x00, and the
prescaler is off. The 1-kHz internal oscillator clock is selected as the default clock source. To start the
prescaler, write any value other than zero to the prescaler select bits (RTCPS).
Three clock sources are software selectable: the low power oscillator clock (LPO), the external clock
(ERCLK), and the internal clock (IRCLK). The RTC clock select bits (RTCLKS) select the desired clock
source. If a different value is written to RTCLKS, the prescaler and RTCCNT counters are reset to 0x00.
7 6 5 4 3 2 1 0
R RTCCNT
W
Reset: 0 0 0 0 0 0 0 0
Figure 13-4. RTC Counter Register (RTCCNT)
Table 13-4. RTCCNT Field Descriptions
Field Description
7:0
RTCCNT
RTC Count. These eight read-only bits contain the current value of the 8-bit counter. Writes have no effect to this
register. Reset, writing to RTCMOD, or writing different values to RTCLKS and RTCPS clear the count to 0x00.
7 6 5 4 3 2 1 0
R
RTCMOD
W
Reset: 0 0 0 0 0 0 0 0
Figure 13-5. RTC Modulo Register (RTCMOD)
Table 13-5. RTCMOD Field Descriptions
Field Description
7:0
RTCMOD
RTC Modulo. These eight read/write bits contain the modulo value used to reset the count to 0x00 upon a compare
match and set the RTIF status bit. A value of 0x00 sets the RTIF bit on each rising edge of the prescaler output.
Writing to RTCMOD resets the prescaler and the RTCCNT counters to 0x00. Reset sets the modulo to 0x00.
Real-Time Counter (S08RTCV1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 219
RTCPS and the RTCLKS[0] bit select the desired divide-by value. If a different value is written to RTCPS,
the prescaler and RTCCNT counters are reset to 0x00. Table 13-6 shows different prescaler period values.
The RTC modulo register (RTCMOD) allows the compare value to be set to any value from 0x00 to 0xFF.
When the counter is active, the counter increments at the selected rate until the count matches the modulo
value. When these values match, the counter resets to 0x00 and continues counting. The real-time interrupt
flag (RTIF) is set when a match occurs. The flag sets on the transition from the modulo value to 0x00.
Writing to RTCMOD resets the prescaler and the RTCCNT counters to 0x00.
The RTC allows for an interrupt to be generated when RTIF is set. To enable the real-time interrupt, set
the real-time interrupt enable bit (RTIE) in RTCSC. RTIF is cleared by writing a 1 to RTIF.
13.4.1 RTC Operation Example
This section shows an example of the RTC operation as the counter reaches a matching value from the
modulo register.
Table 13-6. Prescaler Period
RTCPS
1-kHz Internal Clock
(RTCLKS = 00)
1-MHz External Clock
(RTCLKS = 01)
32-kHz Internal Clock
(RTCLKS = 10)
32-kHz Internal Clock
(RTCLKS = 11)
0000 Off Off Off Off
0001 8 ms 1.024 ms 250 s 32 ms
0010 32 ms 2.048 ms 1 ms 64 ms
0011 64 ms 4.096 ms 2 ms 128 ms
0100 128 ms 8.192 ms 4 ms 256 ms
0101 256 ms 16.4 ms 8 ms 512 ms
0110 512 ms 32.8 ms 16 ms 1.024 s
0111 1.024 s 65.5 ms 32 ms 2.048 s
1000 1 ms 1 ms 31.25 s 31.25 ms
1001 2 ms 2 ms 62.5 s 62.5 ms
1010 4 ms 5 ms 125 s 156.25 ms
1011 10 ms 10 ms 312.5 s 312.5 ms
1100 16 ms 20 ms 0.5 ms 0.625 s
1101 0.1 s 50 ms 3.125 ms 1.5625 s
1110 0.5 s 0.1 s 15.625 ms 3.125 s
1111 1 s 0.2 s 31.25 ms 6.25 s
Real-Time Counter (S08RTCV1)
MC9S08JM60 Series Data Sheet, Rev. 3
220 Freescale Semiconductor
Figure 13-6. RTC Counter Overflow Example
In the example of Figure 13-6, the selected clock source is the 1-kHz internal oscillator clock source. The
prescaler (RTCPS) is set to 0xA or divide-by-4. The modulo value in the RTCMOD register is set to 0x55.
When the counter, RTCCNT, reaches the modulo value of 0x55, the counter overflows to 0x00 and
continues counting. The real-time interrupt flag, RTIF, sets when the counter value changes from 0x55 to
0x00. A real-time interrupt is generated when RTIF is set, if RTIE is set.
13.5 Initialization/Application Information
This section provides example code to give some basic direction to a user on how to initialize and
configure the RTC module. The example software is implemented in C language.
The example below shows how to implement time of day with the RTC using the 1-kHz clock source to
achieve the lowest possible power consumption. Because the 1-kHz clock source is not as accurate as a
crystal, software can be added for any adjustments. For accuracy without adjustments at the expense of
additional power consumption, the external clock (ERCLK) or the internal clock (IRCLK) can be selected
with appropriate prescaler and modulo values.
/* Initialize the elapsed time counters */
Seconds = 0;
Minutes = 0;
Hours = 0;
Days=0;
/* Configure RTC to interrupt every 1 second from 1-kHz clock source */
RTCMOD.byte = 0x00;
RTCSC.byte = 0x1F;
/**********************************************************************
Function Name : RTC_ISR
Notes : Interrupt service routine for RTC module.
**********************************************************************/
#pragma TRAP_PROC
void RTC_ISR(void)
{
/* Clear the interrupt flag */
0x55
0x55 0x54 0x53 0x52 0x00 0x01
RTCMOD
RTIF
RTCCNT
RTC Clock
(RTCPS = 0xA)
Internal 1-kHz
Clock Source
Real-Time Counter (S08RTCV1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 221
RTCSC.byte = RTCSC.byte | 0x80;
/* RTC interrupts every 1 Second */
Seconds++;
/* 60 seconds in a minute */
if (Seconds > 59){
Minutes++;
Seconds = 0;
}
/* 60 minutes in an hour */
if (Minutes > 59){
Hours++;
Minutes = 0;
}
/* 24 hours in a day */
if (Hours > 23){
Days ++;
Hours = 0;
}
Real-Time Counter (S08RTCV1)
MC9S08JM60 Series Data Sheet, Rev. 3
222 Freescale Semiconductor
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 223
Chapter 14
Serial Communications Interface (S08SCIV4)
14.1 Introduction
The MC9S08JM60 series include two independent serial communications interface (SCI) modules which
are sometimes called universal asynchronous receiver/transmitters (UARTs). Typically, these systems are
used to connect to the RS232 serial input/output (I/O) port of a personal computer or workstation, but they
can also be used to communicate with other embedded controllers.
A flexible, 13-bit, modulo-based baud rate generator supports a broad range of standard baud rates beyond
115.2 kbaud. Transmit and receive within the same SCI use a common baud rate, and each SCI module
has a separate baud rate generator.
This SCI system offers many advanced features not commonly found on other asynchronous serial I/O
peripherals on other embedded controllers. The receiver employs an advanced data sampling technique
that ensures reliable communication and noise detection. Hardware parity, receiver wakeup, and double
buffering on transmit and receive are also included.
NOTE
MC9S08JM60 series devices operate at a higher voltage range (2.7 V to
5.5 V) and do not include stop1 mode. Therefore, please disregard
references to stop1.
Chapter 14 Serial Communications Interface (S08SCIV4)
MC9S08JM60 Series Data Sheet, Rev. 3
224 Freescale Semiconductor
Figure 14-1. MC9S08JM60 Series Block Diagram Highlighting the SCI Blocks and Pins
PTD4/ADP11
PTD5
PTD6
PTC1/SDA
PTC0/SCL
V
SS
V
DD
PTE3/TPM1CH1
PTE2/TPM1CH0
PTA5 PTA0
PTE0/TxD1
PTE1/RxD1
PTD1/ADP9/ACMP
PTD0/ADP8/ACMP+
PTC6
PTC5/RxD2
PTC4
PTC3/TxD2
PTC2
P
O
R
T
A
P
O
R
T
C
P
O
R
T
D
P
O
R
T
E
8-BIT KEYBOARD
INTERRUPT MODULE (KBI)
IIC MODULE (IIC)
8-/16-BIT SERIAL PERIPHERAL
INTERFACE MODULE (SPI1)
USER Flash (IN BYTES)
USER RAM (IN BYTES)
ON-CHIP ICE AND
DEBUG MODULE (DBG)
MC9S08JM60 = 60,912
HCS08 CORE
CPU BDC
NOTES:
1. Port pins are software configurable with pullup device if input port.
2. Pin contains software configurable pullup/pull-down device if IRQ is enabled
(IRQPE = 1). Pull-down is enabled if rising edge detect is selected (IRQEDG = 1)
3. IRQ does not have a clamp diode to V
DD
. IRQ must not be driven above V
DD
.
4. Pin contains integrated pullup device.
5. When pin functions as KBI (KBIPEn = 1) and associated pin is configured to enable the
pullup device, KBEDGn can be used to reconfigure the pullup as a pull-down device.
2-CHANNEL TIMER/PWM
MODULE (TPM2)
PTB5/KBIP5/ADP5
P
O
R
T
B
PTE5/MOSI1
PTE4/MISO1
PTE6/SPSCK1
PTE7/SS1
HCS08 SYSTEM CONTROL
RESETS AND INTERRUPTS
MODES OF OPERATION
POWER MANAGEMENT
VOLTAGE
REGULATOR
COP IRQ LVD
LOW-POWER OSCILLATOR
MULTI-PURPOSE CLOCK
GENERATOR (MCG)
RESET
V
SSAD
V
DDAD
V
REFH
ANALOG-TO-DIGITAL
CONVERTER (ADC)
6-CHANNEL TIMER/PWM
MODULE (TPM1)
PTD7
6
PTB4/KBIP4/ADP4
PTG3/KBIP7
PTG2/KBIP6
P
O
R
T
G
12-CHANNEL, 12-BIT
BKGD/MS
PTF3/TPM1CH5
PTF2/TPM1CH4
PTF0/TPM1CH2
PTF1/TPM1CH3
P
O
R
T
F
PTF5/TPM2CH1
PTF4/TPM2CH0
PTF6
PTF7
INTERFACE MODULE (SCI1)
SERIAL COMMUNICATIONS
INTERFACE MODULE (SCI2)
SERIAL COMMUNICATIONS
PTG0/KBIP0
PTG1/KBIP1
MC9S08JM32 = 32,768
V
REFL
PTG4/XTAL
PTG5/EXTAL
IRQ/TPMCLK
RxD2
TxD2
SDA
SCL
8
KBIPx
KBIPx
TPMCLK
SPSCK1
SS1
MISO1
MOSI1
TPMCLK
TPM1CH1
TPM1CH0
RxD1
TxD1
EXTAL
XTAL
4
4
USB SIE
USB ENDPOINT
RAM
FULL SPEED
USB
TRANSCEIVER
USBDP
USBDN
MISO2
SS2
SPSCK2
MOSI2
PTB1/MOSI2/ADP1
PTB0/MISO2/ADP0
PTB7/ADP7
PTB6/ADP6
8-/16-BIT SERIAL PERIPHERAL
INTERFACE MODULE (SPI2)
REAL-TIME COUNTER
(RTC)
PTB3/SS2/ADP3
PTB2/SPSCK2/ADP2
TPM1CHx
4
TPM2CH1
TPM2CH0
4
ANALOG COMPARATOR
(ACMP)
SYSTEM
USB 3.3-V VOLTAGE REGULATOR
V
USB33
MC9S08JM60 = 4096
MC9S08JM32 = 2048
ACMPO
ACMP+
ACMP
PTD3/KBIP3/ADP10
PTD2/KBIP2/ACMPO
V
SSOSC
Serial Communications Interface (S08SCIV4)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 225
14.1.1 Features
Features of SCI module include:
Full-duplex, standard non-return-to-zero (NRZ) format
Double-buffered transmitter and receiver with separate enables
Programmable baud rates (13-bit modulo divider)
Interrupt-driven or polled operation:
Transmit data register empty and transmission complete
Receive data register full
Receive overrun, parity error, framing error, and noise error
Idle receiver detect
Active edge on receive pin
Break detect supporting LIN
Hardware parity generation and checking
Programmable 8-bit or 9-bit character length
Receiver wakeup by idle-line or address-mark
Optional 13-bit break character generation / 11-bit break character detection
Selectable transmitter output polarity
14.1.2 Modes of Operation
See Section 14.3, Functional Description, For details concerning SCI operation in these modes:
8- and 9-bit data modes
Stop mode operation
Loop mode
Single-wire mode
Serial Communications Interface (S08SCIV4)
MC9S08JM60 Series Data Sheet, Rev. 3
226 Freescale Semiconductor
14.1.3 Block Diagram
Figure 14-2 shows the transmitter portion of the SCI.
Figure 14-2. SCI Transmitter Block Diagram
H 8 7 6 5 4 3 2 1 0 L
SCID Tx BUFFER
(WRITE-ONLY)
INTERNAL BUS
S
T
O
P
11-BIT TRANSMIT SHIFT REGISTER
S
T
A
R
T
SHIFT DIRECTION
L
S
B
1 BAUD
RATE CLOCK
PARITY
GENERATION
TRANSMIT CONTROL
S
H
I
F
T
E
N
A
B
L
E
P
R
E
A
M
B
L
E
(
A
L
L
1
s
)
B
R
E
A
K
(
A
L
L
0
s
)
SCI CONTROLS TxD
TxD DIRECTION
TO TxD
PIN LOGIC
LOOP
CONTROL
TO RECEIVE
DATA IN
TO TxD PIN
Tx INTERRUPT
REQUEST
LOOPS
RSRC
TIE
TC
TDRE
M
PT
PE
TCIE
TE
SBK
T8
TXDIR
L
O
A
D
F
R
O
M
S
C
I
x
D
TXINV
BRK13
Serial Communications Interface (S08SCIV4)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 227
Figure 14-3 shows the receiver portion of the SCI.
Figure 14-3. SCI Receiver Block Diagram
H 8 7 6 5 4 3 2 1 0 L
SCID Rx BUFFER
(READ-ONLY)
INTERNAL BUS
S
T
O
P
11-BIT RECEIVE SHIFT REGISTER
S
T
A
R
T
SHIFT DIRECTION
L
S
B
FROM RxD PIN
RATE CLOCK
Rx INTERRUPT
REQUEST
DATA RECOVERY
DIVIDE
16 BAUD
SINGLE-WIRE
LOOP CONTROL
WAKEUP
LOGIC
A
L
L
1
s
M
S
B
FROM
TRANSMITTER
ERROR INTERRUPT
REQUEST
PARITY
CHECKING
BY 16
RDRF
RIE
IDLE
ILIE
OR
ORIE
FE
FEIE
NF
NEIE
PF
LOOPS
PEIE
PT
PE
RSRC
WAKE
ILT
RWU
M
LBKDIF
LBKDIE
RXEDGIF
RXEDGIE
ACTIVE EDGE
DETECT
RXINV
LBKDE
RWUID
Serial Communications Interface (S08SCIV4)
MC9S08JM60 Series Data Sheet, Rev. 3
228 Freescale Semiconductor
14.2 Register Definition
The SCI has eight 8-bit registers to control baud rate, select SCI options, report SCI status, and for
transmit/receive data.
Refer to the direct-page register summary in the Memory chapter of this data sheet for the absolute address
assignments for all SCI registers. This section refers to registers and control bits only by their names. A
Freescale-provided equate or header file is used to translate these names into the appropriate absolute
addresses.
14.2.1 SCI Baud Rate Registers (SCIxBDH, SCIxBDL)
This pair of registers controls the prescale divisor for SCI baud rate generation. To update the 13-bit baud
rate setting [SBR12:SBR0], first write to SCIxBDH to buffer the high half of the new value and then write
to SCIxBDL. The working value in SCIxBDH does not change until SCIxBDL is written.
SCIxBDL is reset to a non-zero value, so after reset the baud rate generator remains disabled until the first
time the receiver or transmitter is enabled (RE or TE bits in SCIxC2 are written to 1).
7 6 5 4 3 2 1 0
R
LBKDIE RXEDGIE
0
SBR12 SBR11 SBR10 SBR9 SBR8
W
Reset 0 0 0 0 0 0 0 0
= Unimplemented or Reserved
Figure 14-4. SCI Baud Rate Register (SCIxBDH)
Table 14-1. SCIxBDH Field Descriptions
Field Description
7
LBKDIE
LIN Break Detect Interrupt Enable (for LBKDIF)
0 Hardware interrupts from LBKDIF disabled (use polling).
1 Hardware interrupt requested when LBKDIF flag is 1.
6
RXEDGIE
RxD Input Active Edge Interrupt Enable (for RXEDGIF)
0 Hardware interrupts from RXEDGIF disabled (use polling).
1 Hardware interrupt requested when RXEDGIF flag is 1.
4:0
SBR[12:8]
Baud Rate Modulo Divisor The 13 bits in SBR[12:0] are referred to collectively as BR, and they set the
modulo divide rate for the SCI baud rate generator. When BR = 0, the SCI baud rate generator is disabled to
reduce supply current. When BR = 1 to 8191, the SCI baud rate = BUSCLK/(16BR). See also BR bits in
Table 14-2.
Serial Communications Interface (S08SCIV4)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 229
14.2.2 SCI Control Register 1 (SCIxC1)
This read/write register is used to control various optional features of the SCI system.
7 6 5 4 3 2 1 0
R
SBR7 SBR6 SBR5 SBR4 SBR3 SBR2 SBR1 SBR0
W
Reset 0 0 0 0 0 1 0 0
Figure 14-5. SCI Baud Rate Register (SCIxBDL)
Table 14-2. SCIxBDL Field Descriptions
Field Description
7:0
SBR[7:0]
Baud Rate Modulo Divisor These 13 bits in SBR[12:0] are referred to collectively as BR, and they set the
modulo divide rate for the SCI baud rate generator. When BR = 0, the SCI baud rate generator is disabled to
reduce supply current. When BR = 1 to 8191, the SCI baud rate = BUSCLK/(16BR). See also BR bits in
Table 14-1.
7 6 5 4 3 2 1 0
R
LOOPS SCISWAI RSRC M WAKE ILT PE PT
W
Reset 0 0 0 0 0 0 0 0
Figure 14-6. SCI Control Register 1 (SCIxC1)
Table 14-3. SCIxC1 Field Descriptions
Field Description
7
LOOPS
Loop Mode Select Selects between loop back modes and normal 2-pin full-duplex modes. When LOOPS = 1,
the transmitter output is internally connected to the receiver input.
0 Normal operation RxD and TxD use separate pins.
1 Loop mode or single-wire mode where transmitter outputs are internally connected to receiver input. (See
RSRC bit.) RxD pin is not used by SCI.
6
SCISWAI
SCI Stops in Wait Mode
0 SCI clocks continue to run in wait mode so the SCI can be the source of an interrupt that wakes up the CPU.
1 SCI clocks freeze while CPU is in wait mode.
5
RSRC
Receiver Source Select This bit has no meaning or effect unless the LOOPS bit is set to 1. When
LOOPS = 1, the receiver input is internally connected to the TxD pin and RSRC determines whether this
connection is also connected to the transmitter output.
0 Provided LOOPS = 1, RSRC = 0 selects internal loop back mode and the SCI does not use the RxD pins.
1 Single-wire SCI mode where the TxD pin is connected to the transmitter output and receiver input.
4
M
9-Bit or 8-Bit Mode Select
0 Normal start + 8 data bits (LSB first) + stop.
1 Receiver and transmitter use 9-bit data characters
start + 8 data bits (LSB first) + 9th data bit + stop.
Serial Communications Interface (S08SCIV4)
MC9S08JM60 Series Data Sheet, Rev. 3
230 Freescale Semiconductor
14.2.3 SCI Control Register 2 (SCIxC2)
This register can be read or written at any time.
3
WAKE
Receiver Wakeup Method Select Refer to Section 14.3.3.2, Receiver Wakeup Operation for more
information.
0 Idle-line wakeup.
1 Address-mark wakeup.
2
ILT
Idle Line Type Select Setting this bit to 1 ensures that the stop bit and logic 1 bits at the end of a character
do not count toward the 10 or 11 bit times of logic high level needed by the idle line detection logic. Refer to
Section 14.3.3.2.1, Idle-Line Wakeup for more information.
0 Idle character bit count starts after start bit.
1 Idle character bit count starts after stop bit.
1
PE
Parity Enable Enables hardware parity generation and checking. When parity is enabled, the most significant
bit (MSB) of the data character (eighth or ninth data bit) is treated as the parity bit.
0 No hardware parity generation or checking.
1 Parity enabled.
0
PT
Parity Type Provided parity is enabled (PE = 1), this bit selects even or odd parity. Odd parity means the total
number of 1s in the data character, including the parity bit, is odd. Even parity means the total number of 1s in
the data character, including the parity bit, is even.
0 Even parity.
1 Odd parity.
7 6 5 4 3 2 1 0
R
TIE TCIE RIE ILIE TE RE RWU SBK
W
Reset 0 0 0 0 0 0 0 0
Figure 14-7. SCI Control Register 2 (SCIxC2)
Table 14-4. SCIxC2 Field Descriptions
Field Description
7
TIE
Transmit Interrupt Enable (for TDRE)
0 Hardware interrupts from TDRE disabled (use polling).
1 Hardware interrupt requested when TDRE flag is 1.
6
TCIE
Transmission Complete Interrupt Enable (for TC)
0 Hardware interrupts from TC disabled (use polling).
1 Hardware interrupt requested when TC flag is 1.
5
RIE
Receiver Interrupt Enable (for RDRF)
0 Hardware interrupts from RDRF disabled (use polling).
1 Hardware interrupt requested when RDRF flag is 1.
4
ILIE
Idle Line Interrupt Enable (for IDLE)
0 Hardware interrupts from IDLE disabled (use polling).
1 Hardware interrupt requested when IDLE flag is 1.
Table 14-3. SCIxC1 Field Descriptions (continued)
Field Description
Serial Communications Interface (S08SCIV4)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 231
14.2.4 SCI Status Register 1 (SCIxS1)
This register has eight read-only status flags. Writes have no effect. Special software sequences (which do
not involve writing to this register) are used to clear these status flags.
3
TE
Transmitter Enable
0 Transmitter off.
1 Transmitter on.
TE must be 1 in order to use the SCI transmitter. When TE = 1, the SCI forces the TxD pin to act as an output
for the SCI system.
When the SCI is configured for single-wire operation (LOOPS = RSRC = 1), TXDIR controls the direction of
traffic on the single SCI communication line (TxD pin).
TE also can be used to queue an idle character by writing TE = 0 then TE = 1 while a transmission is in progress.
Refer to Section 14.3.2.1, Send Break and Queued Idle for more details.
When TE is written to 0, the transmitter keeps control of the port TxD pin until any data, queued idle, or queued
break character finishes transmitting before allowing the pin to revert to a general-purpose I/O pin.
2
RE
Receiver Enable When the SCI receiver is off, the RxD pin reverts to being a general-purpose port I/O pin. If
LOOPS = 1 the RxD pin reverts to being a general-purpose I/O pin even if RE = 1.
0 Receiver off.
1 Receiver on.
1
RWU
Receiver Wakeup Control This bit can be written to 1 to place the SCI receiver in a standby state where it
waits for automatic hardware detection of a selected wakeup condition. The wakeup condition is either an idle
line between messages (WAKE = 0, idle-line wakeup), or a logic 1 in the most significant data bit in a character
(WAKE = 1, address-mark wakeup). Application software sets RWU and (normally) a selected hardware
condition automatically clears RWU. Refer to Section 14.3.3.2, Receiver Wakeup Operation for more details.
0 Normal SCI receiver operation.
1 SCI receiver in standby waiting for wakeup condition.
0
SBK
Send Break Writing a 1 and then a 0 to SBK queues a break character in the transmit data stream. Additional
break characters of 10 or 11 (13 or 14 if BRK13 = 1) bit times of logic 0 are queued as long as SBK = 1.
Depending on the timing of the set and clear of SBK relative to the information currently being transmitted, a
second break character may be queued before software clears SBK. Refer to Section 14.3.2.1, Send Break and
Queued Idle for more details.
0 Normal transmitter operation.
1 Queue break character(s) to be sent.
7 6 5 4 3 2 1 0
R TDRE TC RDRF IDLE OR NF FE PF
W
Reset 1 1 0 0 0 0 0 0
= Unimplemented or Reserved
Figure 14-8. SCI Status Register 1 (SCIxS1)
Table 14-4. SCIxC2 Field Descriptions (continued)
Field Description
Serial Communications Interface (S08SCIV4)
MC9S08JM60 Series Data Sheet, Rev. 3
232 Freescale Semiconductor
Table 14-5. SCIxS1 Field Descriptions
Field Description
7
TDRE
Transmit Data Register Empty Flag TDRE is set out of reset and when a transmit data value transfers from
the transmit data buffer to the transmit shifter, leaving room for a new character in the buffer. To clear TDRE, read
SCIxS1 with TDRE = 1 and then write to the SCI data register (SCIxD).
0 Transmit data register (buffer) full.
1 Transmit data register (buffer) empty.
6
TC
Transmission Complete Flag TC is set out of reset and when TDRE = 1 and no data, preamble, or break
character is being transmitted.
0 Transmitter active (sending data, a preamble, or a break).
1 Transmitter idle (transmission activity complete).
TC is cleared automatically by reading SCIxS1 with TC = 1 and then doing one of the following three things:
Write to the SCI data register (SCIxD) to transmit new data
Queue a preamble by changing TE from 0 to 1
Queue a break character by writing 1 to SBK in SCIxC2
5
RDRF
Receive Data Register Full Flag RDRF becomes set when a character transfers from the receive shifter into
the receive data register (SCIxD). To clear RDRF, read SCIxS1 with RDRF = 1 and then read the SCI data
register (SCIxD).
0 Receive data register empty.
1 Receive data register full.
4
IDLE
Idle Line Flag IDLE is set when the SCI receive line becomes idle for a full character time after a period of
activity. When ILT = 0, the receiver starts counting idle bit times after the start bit. So if the receive character is
all 1s, these bit times and the stop bit time count toward the full character time of logic high (10 or 11 bit times
depending on the M control bit) needed for the receiver to detect an idle line. When ILT = 1, the receiver doesnt
start counting idle bit times until after the stop bit. So the stop bit and any logic high bit times at the end of the
previous character do not count toward the full character time of logic high needed for the receiver to detect an
idle line.
To clear IDLE, read SCIxS1 with IDLE = 1 and then read the SCI data register (SCIxD). After IDLE has been
cleared, it cannot become set again until after a new character has been received and RDRF has been set. IDLE
will get set only once even if the receive line remains idle for an extended period.
0 No idle line detected.
1 Idle line was detected.
3
OR
Receiver Overrun Flag OR is set when a new serial character is ready to be transferred to the receive data
register (buffer), but the previously received character has not been read from SCIxD yet. In this case, the new
character (and all associated error information) is lost because there is no room to move it into SCIxD. To clear
OR, read SCIxS1 with OR = 1 and then read the SCI data register (SCIxD).
0 No overrun.
1 Receive overrun (new SCI data lost).
2
NF
Noise Flag The advanced sampling technique used in the receiver takes seven samples during the start bit
and three samples in each data bit and the stop bit. If any of these samples disagrees with the rest of the samples
within any bit time in the frame, the flag NF will be set at the same time as the flag RDRF gets set for the character.
To clear NF, read SCIxS1 and then read the SCI data register (SCIxD).
0 No noise detected.
1 Noise detected in the received character in SCIxD.
Serial Communications Interface (S08SCIV4)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 233
14.2.5 SCI Status Register 2 (SCIxS2)
This register has one read-only status flag.
1
FE
Framing Error Flag FE is set at the same time as RDRF when the receiver detects a logic 0 where the stop
bit was expected. This suggests the receiver was not properly aligned to a character frame. To clear FE, read
SCIxS1 with FE = 1 and then read the SCI data register (SCIxD).
0 No framing error detected. This does not guarantee the framing is correct.
1 Framing error.
0
PF
Parity Error Flag PF is set at the same time as RDRF when parity is enabled (PE = 1) and the parity bit in
the received character does not agree with the expected parity value. To clear PF, read SCIxS1 and then read
the SCI data register (SCIxD).
0 No parity error.
1 Parity error.
7 6 5 4 3 2 1 0
R
LBKDIF RXEDGIF
0
RXINV RWUID BRK13 LBKDE
RAF
W
Reset 0 0 0 0 0 0 0 0
= Unimplemented or Reserved
Figure 14-9. SCI Status Register 2 (SCIxS2)
Table 14-6. SCIxS2 Field Descriptions
Field Description
7
LBKDIF
LIN Break Detect Interrupt Flag LBKDIF is set when the LIN break detect circuitry is enabled and a LIN break
character is detected. LBKDIF is cleared by writing a 1 to it.
0 No LIN break character has been detected.
1 LIN break character has been detected.
6
RXEDGIF
RxD Pin Active Edge Interrupt Flag RXEDGIF is set when an active edge (falling if RXINV = 0, rising if
RXINV=1) on the RxD pin occurs. RXEDGIF is cleared by writing a 1 to it.
0 No active edge on the receive pin has occurred.
1 An active edge on the receive pin has occurred.
4
RXINV
1
Receive Data Inversion Setting this bit reverses the polarity of the received data input.
0 Receive data not inverted
1 Receive data inverted
3
RWUID
Receive Wake Up Idle Detect RWUID controls whether the idle character that wakes up the receiver sets the
IDLE bit.
0 During receive standby state (RWU = 1), the IDLE bit does not get set upon detection of an idle character.
1 During receive standby state (RWU = 1), the IDLE bit gets set upon detection of an idle character.
2
BRK13
Break Character Generation Length BRK13 is used to select a longer transmitted break character length.
Detection of a framing error is not affected by the state of this bit.
0 Break character is transmitted with length of 10 bit times (11 if M = 1)
1 Break character is transmitted with length of 13 bit times (14 if M = 1)
Table 14-5. SCIxS1 Field Descriptions (continued)
Field Description
Serial Communications Interface (S08SCIV4)
MC9S08JM60 Series Data Sheet, Rev. 3
234 Freescale Semiconductor
When using an internal oscillator in a LIN system, it is necessary to raise the break detection threshold by
one bit time. Under the worst case timing conditions allowed in LIN, it is possible that a 0x00 data
character can appear to be 10.26 bit times long at a slave which is running 14% faster than the master. This
would trigger normal break detection circuitry which is designed to detect a 10 bit break symbol. When
the LBKDE bit is set, framing errors are inhibited and the break detection threshold changes from 10 bits
to 11 bits, preventing false detection of a 0x00 data character as a LIN break symbol.
14.2.6 SCI Control Register 3 (SCIxC3)
1
LBKDE
LIN Break Detection Enable LBKDE is used to select a longer break character detection length. While LBKDE
is set, framing error (FE) and receive data register full (RDRF) flags are prevented from setting.
0 Break character is detected at length of 10 bit times (11 if M = 1).
1 Break character is detected at length of 11 bit times (12 if M = 1).
0
RAF
Receiver Active Flag RAF is set when the SCI receiver detects the beginning of a valid start bit, and RAF is
cleared automatically when the receiver detects an idle line. This status flag can be used to check whether an
SCI character is being received before instructing the MCU to go to stop mode.
0 SCI receiver idle waiting for a start bit.
1 SCI receiver active (RxD input not idle).
1
Setting RXINV inverts the RxD input for all cases: data bits, start and stop bits, break, and idle.
7 6 5 4 3 2 1 0
R R8
T8 TXDIR TXINV ORIE NEIE FEIE PEIE
W
Reset 0 0 0 0 0 0 0 0
= Unimplemented or Reserved
Figure 14-10. SCI Control Register 3 (SCIxC3)
Table 14-7. SCIxC3 Field Descriptions
Field Description
7
R8
Ninth Data Bit for Receiver When the SCI is configured for 9-bit data (M = 1), R8 can be thought of as a ninth
receive data bit to the left of the MSB of the buffered data in the SCIxD register. When reading 9-bit data, read
R8 before reading SCIxD because reading SCIxD completes automatic flag clearing sequences which could
allow R8 and SCIxD to be overwritten with new data.
6
T8
Ninth Data Bit for Transmitter When the SCI is configured for 9-bit data (M = 1), T8 may be thought of as a
ninth transmit data bit to the left of the MSB of the data in the SCIxD register. When writing 9-bit data, the entire
9-bit value is transferred to the SCI shift register after SCIxD is written so T8 should be written (if it needs to
change from its previous value) before SCIxD is written. If T8 does not need to change in the new value (such
as when it is used to generate mark or space parity), it need not be written each time SCIxD is written.
5
TXDIR
TxD Pin Direction in Single-Wire Mode When the SCI is configured for single-wire half-duplex operation
(LOOPS = RSRC = 1), this bit determines the direction of data at the TxD pin.
0 TxD pin is an input in single-wire mode.
1 TxD pin is an output in single-wire mode.
Table 14-6. SCIxS2 Field Descriptions (continued)
Field Description
Serial Communications Interface (S08SCIV4)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 235
14.2.7 SCI Data Register (SCIxD)
This register is actually two separate registers. Reads return the contents of the read-only receive data
buffer and writes go to the write-only transmit data buffer. Reads and writes of this register are also
involved in the automatic flag clearing mechanisms for the SCI status flags.
14.3 Functional Description
The SCI allows full-duplex, asynchronous, NRZ serial communication among the MCU and remote
devices, including other MCUs. The SCI comprises a baud rate generator, transmitter, and receiver block.
The transmitter and receiver operate independently, although they use the same baud rate generator.
During normal operation, the MCU monitors the status of the SCI, writes the data to be transmitted, and
processes received data. The following describes each of the blocks of the SCI.
14.3.1 Baud Rate Generation
As shown in Figure 14-12, the clock source for the SCI baud rate generator is the bus-rate clock.
4
TXINV
1
Transmit Data Inversion Setting this bit reverses the polarity of the transmitted data output.
0 Transmit data not inverted
1 Transmit data inverted
3
ORIE
Overrun Interrupt Enable This bit enables the overrun flag (OR) to generate hardware interrupt requests.
0 OR interrupts disabled (use polling).
1 Hardware interrupt requested when OR = 1.
2
NEIE
Noise Error Interrupt Enable This bit enables the noise flag (NF) to generate hardware interrupt requests.
0 NF interrupts disabled (use polling).
1 Hardware interrupt requested when NF = 1.
1
FEIE
Framing Error Interrupt Enable This bit enables the framing error flag (FE) to generate hardware interrupt
requests.
0 FE interrupts disabled (use polling).
1 Hardware interrupt requested when FE = 1.
0
PEIE
Parity Error Interrupt Enable This bit enables the parity error flag (PF) to generate hardware interrupt
requests.
0 PF interrupts disabled (use polling).
1 Hardware interrupt requested when PF = 1.
1
Setting TXINV inverts the TxD output for all cases: data bits, start and stop bits, break, and idle.
7 6 5 4 3 2 1 0
R R7 R6 R5 R4 R3 R2 R1 R0
W T7 T6 T5 T4 T3 T2 T1 T0
Reset 0 0 0 0 0 0 0 0
Figure 14-11. SCI Data Register (SCIxD)
Table 14-7. SCIxC3 Field Descriptions (continued)
Field Description
Serial Communications Interface (S08SCIV4)
MC9S08JM60 Series Data Sheet, Rev. 3
236 Freescale Semiconductor
Figure 14-12. SCI Baud Rate Generation
SCI communications require the transmitter and receiver (which typically derive baud rates from
independent clock sources) to use the same baud rate. Allowed tolerance on this baud frequency depends
on the details of how the receiver synchronizes to the leading edge of the start bit and how bit sampling is
performed.
The MCU resynchronizes to bit boundaries on every high-to-low transition, but in the worst case, there are
no such transitions in the full 10- or 11-bit time character frame so any mismatch in baud rate is
accumulated for the whole character time. For a Freescale Semiconductor SCI system whose bus
frequency is driven by a crystal, the allowed baud rate mismatch is about 4.5 percent for 8-bit data format
and about 4 percent for 9-bit data format. Although baud rate modulo divider settings do not always
produce baud rates that exactly match standard rates, it is normally possible to get within a few percent,
which is acceptable for reliable communications.
14.3.2 Transmitter Functional Description
This section describes the overall block diagram for the SCI transmitter, as well as specialized functions
for sending break and idle characters. The transmitter block diagram is shown in Figure 14-2.
The transmitter output (TxD) idle state defaults to logic high (TXINV = 0 following reset). The transmitter
output is inverted by setting TXINV = 1. The transmitter is enabled by setting the TE bit in SCIxC2. This
queues a preamble character that is one full character frame of the idle state. The transmitter then remains
idle until data is available in the transmit data buffer. Programs store data into the transmit data buffer by
writing to the SCI data register (SCIxD).
The central element of the SCI transmitter is the transmit shift register that is either 10 or 11 bits long
depending on the setting in the M control bit. For the remainder of this section, we will assume M= 0,
selecting the normal 8-bit data mode. In 8-bit data mode, the shift register holds a start bit, eight data bits,
and a stop bit. When the transmit shift register is available for a new SCI character, the value waiting in
the transmit data register is transferred to the shift register (synchronized with the baud rate clock) and the
transmit data register empty (TDRE) status flag is set to indicate another character may be written to the
transmit data buffer at SCIxD.
If no new character is waiting in the transmit data buffer after a stop bit is shifted out the TxD pin, the
transmitter sets the transmit complete flag and enters an idle mode, with TxD high, waiting for more
characters to transmit.
SBR12:SBR0
DIVIDE BY
Tx BAUD RATE
Rx SAMPLING CLOCK
(16 BAUD RATE)
BAUD RATE GENERATOR
OFF IF [SBR12:SBR0] = 0
BUSCLK
BAUD RATE =
BUSCLK
[SBR12:SBR0] 16
16
MODULO DIVIDE BY
(1 THROUGH 8191)
Serial Communications Interface (S08SCIV4)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 237
Writing 0 to TE does not immediately release the pin to be a general-purpose I/O pin. Any transmit activity
that is in progress must first be completed. This includes data characters in progress, queued idle
characters, and queued break characters.
14.3.2.1 Send Break and Queued Idle
The SBK control bit in SCIxC2 is used to send break characters which were originally used to gain the
attention of old teletype receivers. Break characters are a full character time of logic 0 (10 bit times
including the start and stop bits). A longer break of 13 bit times can be enabled by setting BRK13 = 1.
Normally, a program would wait for TDRE to become set to indicate the last character of a message has
moved to the transmit shifter, then write 1 and then write 0 to the SBK bit. This action queues a break
character to be sent as soon as the shifter is available. If SBK is still 1 when the queued break moves into
the shifter (synchronized to the baud rate clock), an additional break character is queued. If the receiving
device is another Freescale Semiconductor SCI, the break characters will be received as 0s in all eight data
bits and a framing error (FE = 1) occurs.
When idle-line wakeup is used, a full character time of idle (logic 1) is needed between messages to wake
up any sleeping receivers. Normally, a program would wait for TDRE to become set to indicate the last
character of a message has moved to the transmit shifter, then write 0 and then write 1 to the TE bit. This
action queues an idle character to be sent as soon as the shifter is available. As long as the character in the
shifter does not finish while TE = 0, the SCI transmitter never actually releases control of the TxD pin. If
there is a possibility of the shifter finishing while TE = 0, set the general-purpose I/O controls so the pin
that is shared with TxD is an output driving a logic 1. This ensures that the TxD line will look like a normal
idle line even if the SCI loses control of the port pin between writing 0 and then 1 to TE.
The length of the break character is affected by the BRK13 and M bits as shown below.
14.3.3 Receiver Functional Description
In this section, the receiver block diagram (Figure 14-3) is used as a guide for the overall receiver
functional description. Next, the data sampling technique used to reconstruct receiver data is described in
more detail. Finally, two variations of the receiver wakeup function are explained.
The receiver input is inverted by setting RXINV = 1. The receiver is enabled by setting the RE bit in
SCIxC2. Character frames consist of a start bit of logic 0, eight (or nine) data bits (LSB first), and a stop
bit of logic 1. For information about 9-bit data mode, refer to Section 14.3.5.1, 8- and 9-Bit Data Modes.
For the remainder of this discussion, we assume the SCI is configured for normal 8-bit data mode.
After receiving the stop bit into the receive shifter, and provided the receive data register is not already
full, the data character is transferred to the receive data register and the receive data register full (RDRF)
Table 14-8. Break Character Length
BRK13 M Break Character Length
0 0 10 bit times
0 1 11 bit times
1 0 13 bit times
1 1 14 bit times
Serial Communications Interface (S08SCIV4)
MC9S08JM60 Series Data Sheet, Rev. 3
238 Freescale Semiconductor
status flag is set. If RDRF was already set indicating the receive data register (buffer) was already full, the
overrun (OR) status flag is set and the new data is lost. Because the SCI receiver is double-buffered, the
program has one full character time after RDRF is set before the data in the receive data buffer must be
read to avoid a receiver overrun.
When a program detects that the receive data register is full (RDRF = 1), it gets the data from the receive
data register by reading SCIxD. The RDRF flag is cleared automatically by a 2-step sequence which is
normally satisfied in the course of the users program that handles receive data. Refer to Section 14.3.4,
Interrupts and Status Flags, for more details about flag clearing.
14.3.3.1 Data Sampling Technique
The SCI receiver uses a 16 baud rate clock for sampling. The receiver starts by taking logic level samples
at 16 times the baud rate to search for a falling edge on the RxD serial data input pin. A falling edge is
defined as a logic 0 sample after three consecutive logic 1 samples. The 16 baud rate clock is used to
divide the bit time into 16 segments labeled RT1 through RT16. When a falling edge is located, three more
samples are taken at RT3, RT5, and RT7 to make sure this was a real start bit and not merely noise. If at
least two of these three samples are 0, the receiver assumes it is synchronized to a receive character.
The receiver then samples each bit time, including the start and stop bits, at RT8, RT9, and RT10 to
determine the logic level for that bit. The logic level is interpreted to be that of the majority of the samples
taken during the bit time. In the case of the start bit, the bit is assumed to be 0 if at least two of the samples
at RT3, RT5, and RT7 are 0 even if one or all of the samples taken at RT8, RT9, and RT10 are 1s. If any
sample in any bit time (including the start and stop bits) in a character frame fails to agree with the logic
level for that bit, the noise flag (NF) will be set when the received character is transferred to the receive
data buffer.
The falling edge detection logic continuously looks for falling edges, and if an edge is detected, the sample
clock is resynchronized to bit times. This improves the reliability of the receiver in the presence of noise
or mismatched baud rates. It does not improve worst case analysis because some characters do not have
any extra falling edges anywhere in the character frame.
In the case of a framing error, provided the received character was not a break character, the sampling logic
that searches for a falling edge is filled with three logic 1 samples so that a new start bit can be detected
almost immediately.
In the case of a framing error, the receiver is inhibited from receiving any new characters until the framing
error flag is cleared. The receive shift register continues to function, but a complete character cannot
transfer to the receive data buffer if FE is still set.
14.3.3.2 Receiver Wakeup Operation
Receiver wakeup is a hardware mechanism that allows an SCI receiver to ignore the characters in a
message that is intended for a different SCI receiver. In such a system, all receivers evaluate the first
character(s) of each message, and as soon as they determine the message is intended for a different
receiver, they write logic 1 to the receiver wake up (RWU) control bit in SCIxC2. When RWU bit is set,
the status flags associated with the receiver (with the exception of the idle bit, IDLE, when RWUID bit is
set) are inhibited from setting, thus eliminating the software overhead for handling the unimportant
Serial Communications Interface (S08SCIV4)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 239
message characters. At the end of a message, or at the beginning of the next message, all receivers
automatically force RWU to 0 so all receivers wake up in time to look at the first character(s) of the next
message.
14.3.3.2.1 Idle-Line Wakeup
When WAKE = 0, the receiver is configured for idle-line wakeup. In this mode, RWU is cleared
automatically when the receiver detects a full character time of the idle-line level. The M control bit selects
8-bit or 9-bit data mode that determines how many bit times of idle are needed to constitute a full character
time (10 or 11 bit times because of the start and stop bits).
When RWU is one and RWUID is zero, the idle condition that wakes up the receiver does not set the IDLE
flag. The receiver wakes up and waits for the first data character of the next message which will set the
RDRF flag and generate an interrupt if enabled. When RWUID is one, any idle condition sets the IDLE
flag and generates an interrupt if enabled, regardless of whether RWU is zero or one.
The idle-line type (ILT) control bit selects one of two ways to detect an idle line. When ILT = 0, the idle
bit counter starts after the start bit so the stop bit and any logic 1s at the end of a character count toward
the full character time of idle. When ILT = 1, the idle bit counter does not start until after a stop bit time,
so the idle detection is not affected by the data in the last character of the previous message.
14.3.3.2.2 Address-Mark Wakeup
When WAKE = 1, the receiver is configured for address-mark wakeup. In this mode, RWU is cleared
automatically when the receiver detects a logic 1 in the most significant bit of a received character (eighth
bit in M = 0 mode and ninth bit in M = 1 mode).
Address-mark wakeup allows messages to contain idle characters but requires that the MSB be reserved
for use in address frames. The logic 1 MSB of an address frame clears the RWU bit before the stop bit is
received and sets the RDRF flag. In this case the character with the MSB set is received even though the
receiver was sleeping during most of this character time.
14.3.4 Interrupts and Status Flags
The SCI system has three separate interrupt vectors to reduce the amount of software needed to isolate the
cause of the interrupt. One interrupt vector is associated with the transmitter for TDRE and TC events.
Another interrupt vector is associated with the receiver for RDRF, IDLE, RXEDGIF and LBKDIF events,
and a third vector is used for OR, NF, FE, and PF error conditions. Each of these ten interrupt sources can
be separately masked by local interrupt enable masks. The flags can still be polled by software when the
local masks are cleared to disable generation of hardware interrupt requests.
The SCI transmitter has two status flags that optionally can generate hardware interrupt requests. Transmit
data register empty (TDRE) indicates when there is room in the transmit data buffer to write another
transmit character to SCIxD. If the transmit interrupt enable (TIE) bit is set, a hardware interrupt will be
requested whenever TDRE = 1. Transmit complete (TC) indicates that the transmitter is finished
transmitting all data, preamble, and break characters and is idle with TxD at the inactive level. This flag is
often used in systems with modems to determine when it is safe to turn off the modem. If the transmit
complete interrupt enable (TCIE) bit is set, a hardware interrupt will be requested whenever TC = 1.
Serial Communications Interface (S08SCIV4)
MC9S08JM60 Series Data Sheet, Rev. 3
240 Freescale Semiconductor
Instead of hardware interrupts, software polling may be used to monitor the TDRE and TC status flags if
the corresponding TIE or TCIE local interrupt masks are 0s.
When a program detects that the receive data register is full (RDRF = 1), it gets the data from the receive
data register by reading SCIxD. The RDRF flag is cleared by reading SCIxS1 while RDRF = 1 and then
reading SCIxD.
When polling is used, this sequence is naturally satisfied in the normal course of the user program. If
hardware interrupts are used, SCIxS1 must be read in the interrupt service routine (ISR). Normally, this is
done in the ISR anyway to check for receive errors, so the sequence is automatically satisfied.
The IDLE status flag includes logic that prevents it from getting set repeatedly when the RxD line remains
idle for an extended period of time. IDLE is cleared by reading SCIxS1 while IDLE = 1 and then reading
SCIxD. After IDLE has been cleared, it cannot become set again until the receiver has received at least
one new character and has set RDRF.
If the associated error was detected in the received character that caused RDRF to be set, the error flags
noise flag (NF), framing error (FE), and parity error flag (PF) get set at the same time as RDRF.
These flags are not set in overrun cases.
If RDRF was already set when a new character is ready to be transferred from the receive shifter to the
receive data buffer, the overrun (OR) flag gets set instead the data along with any associated NF, FE, or PF
condition is lost.
At any time, an active edge on the RxD serial data input pin causes the RXEDGIF flag to set. The
RXEDGIF flag is cleared by writing a 1 to it. This function does depend on the receiver being enabled
(RE = 1).
14.3.5 Additional SCI Functions
The following sections describe additional SCI functions.
14.3.5.1 8- and 9-Bit Data Modes
The SCI system (transmitter and receiver) can be configured to operate in 9-bit data mode by setting the
M control bit in SCIxC1. In 9-bit mode, there is a ninth data bit to the left of the MSB of the SCI data
register. For the transmit data buffer, this bit is stored in T8 in SCIxC3. For the receiver, the ninth bit is
held in R8 in SCIxC3.
For coherent writes to the transmit data buffer, write to the T8 bit before writing to SCIxD.
If the bit value to be transmitted as the ninth bit of a new character is the same as for the previous character,
it is not necessary to write to T8 again. When data is transferred from the transmit data buffer to the
transmit shifter, the value in T8 is copied at the same time data is transferred from SCIxD to the shifter.
9-bit data mode typically is used in conjunction with parity to allow eight bits of data plus the parity in the
ninth bit. Or it is used with address-mark wakeup so the ninth data bit can serve as the wakeup bit. In
custom protocols, the ninth bit can also serve as a software-controlled marker.
Serial Communications Interface (S08SCIV4)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 241
14.3.5.2 Stop Mode Operation
During all stop modes, clocks to the SCI module are halted.
In stop1 and stop2 modes, all SCI register data is lost and must be re-initialized upon recovery from these
two stop modes. No SCI module registers are affected in stop3 mode.
The receive input active edge detect circuit is still active in stop3 mode, but not in stop2.. An active edge
on the receive input brings the CPU out of stop3 mode if the interrupt is not masked (RXEDGIE = 1).
Note, because the clocks are halted, the SCI module will resume operation upon exit from stop (only in
stop3 mode). Software should ensure stop mode is not entered while there is a character being transmitted
out of or received into the SCI module.
14.3.5.3 Loop Mode
When LOOPS = 1, the RSRC bit in the same register chooses between loop mode (RSRC = 0) or
single-wire mode (RSRC = 1). Loop mode is sometimes used to check software, independent of
connections in the external system, to help isolate system problems. In this mode, the transmitter output is
internally connected to the receiver input and the RxD pin is not used by the SCI, so it reverts to a
general-purpose port I/O pin.
14.3.5.4 Single-Wire Operation
When LOOPS = 1, the RSRC bit in the same register chooses between loop mode (RSRC = 0) or
single-wire mode (RSRC = 1). Single-wire mode is used to implement a half-duplex serial connection.
The receiver is internally connected to the transmitter output and to the TxD pin. The RxD pin is not used
and reverts to a general-purpose port I/O pin.
In single-wire mode, the TXDIR bit in SCIxC3 controls the direction of serial data on the TxD pin. When
TXDIR = 0, the TxD pin is an input to the SCI receiver and the transmitter is temporarily disconnected
from the TxD pin so an external device can send serial data to the receiver. When TXDIR = 1, the TxD pin
is an output driven by the transmitter. In single-wire mode, the internal loop back connection from the
transmitter to the receiver causes the receiver to receive characters that are sent out by the transmitter.
Serial Communications Interface (S08SCIV4)
MC9S08JM60 Series Data Sheet, Rev. 3
242 Freescale Semiconductor
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 243
Chapter 15
16-Bit Serial Peripheral Interface (S08SPI16V1)
15.1 Introduction
The 8- or 16-bit selectable serial peripheral interface (SPI) module provides for full-duplex, synchronous,
serial communication between the MCU and peripheral devices. These peripheral devices can include
other microcontrollers, analog-to-digital converters, shift registers, sensors, memories, etc.
The SPI runs at a baud rate up to the bus clock divided by two in master mode and up to the bus clock
divided by four in slave mode. Software can poll the status flags, or SPI operation can be interrupt driven.
The SPI also supports a data length of 8 or 16 bits and includes a hardware match feature for the receive
data buffer.
The MC9S08JM60 series have two serial peripheral interface modules (SPI1 and SPI2). The four pins
associated with SPI functionality are shared with PTB[3:0] and PTE[7:4]. See Appendix A, Electrical
Characteristics, for SPI electrical parametric information.
15.1.1 SPI Port Configuration Information
By default, the input filters on the SPI port pins will be enabled (SPIxFE=1), which restricts the SPI data
rate to 6 MHz, but protects the SPI from noise during data transfers.To configure the SPI at a baud rate of
6MHz or greater, the input filters on the SPI port pins must be disabled by clearing the SPIxFE in SOPT2.
and also enable the high output drive strength selection on the affected SPI port pins.
Chapter 15 16-Bit Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
244 Freescale Semiconductor
Figure 15-1. MC9S08JM60 Series Block Diagram Highlighting the SPI Blocks and Pins
PTD4/ADP11
PTD5
PTD6
PTC1/SDA
PTC0/SCL
V
SS
V
DD
PTE3/TPM1CH1
PTE2/TPM1CH0
PTA5 PTA0
PTE0/TxD1
PTE1/RxD1
PTD1/ADP9/ACMP
PTD0/ADP8/ACMP+
PTC6
PTC5/RxD2
PTC4
PTC3/TxD2
PTC2
P
O
R
T
A
P
O
R
T
C
P
O
R
T
D
P
O
R
T
E
8-BIT KEYBOARD
INTERRUPT MODULE (KBI)
IIC MODULE (IIC)
8-/16-BIT SERIAL PERIPHERAL
INTERFACE MODULE (SPI1)
USER Flash (IN BYTES)
USER RAM (IN BYTES)
ON-CHIP ICE AND
DEBUG MODULE (DBG)
MC9S08JM60 = 60,912
HCS08 CORE
CPU BDC
NOTES:
1. Port pins are software configurable with pullup device if input port.
2. Pin contains software configurable pullup/pull-down device if IRQ is enabled
(IRQPE = 1). Pull-down is enabled if rising edge detect is selected (IRQEDG = 1)
3. IRQ does not have a clamp diode to V
DD
. IRQ must not be driven above V
DD
.
4. Pin contains integrated pullup device.
5. When pin functions as KBI (KBIPEn = 1) and associated pin is configured to enable the
pullup device, KBEDGn can be used to reconfigure the pullup as a pull-down device.
2-CHANNEL TIMER/PWM
MODULE (TPM2)
PTB5/KBIP5/ADP5
P
O
R
T
B
PTE5/MOSI1
PTE4/MISO1
PTE6/SPSCK1
PTE7/SS1
HCS08 SYSTEM CONTROL
RESETS AND INTERRUPTS
MODES OF OPERATION
POWER MANAGEMENT
VOLTAGE
REGULATOR
COP IRQ LVD
LOW-POWER OSCILLATOR
MULTI-PURPOSE CLOCK
GENERATOR (MCG)
RESET
V
SSAD
V
DDAD
V
REFH
ANALOG-TO-DIGITAL
CONVERTER (ADC)
6-CHANNEL TIMER/PWM
MODULE (TPM1)
PTD7
6
PTB4/KBIP4/ADP4
PTG3/KBIP7
PTG2/KBIP6
P
O
R
T
G
12-CHANNEL, 12-BIT
BKGD/MS
PTF3/TPM1CH5
PTF2/TPM1CH4
PTF0/TPM1CH2
PTF1/TPM1CH3
P
O
R
T
F
PTF5/TPM2CH1
PTF4/TPM2CH0
PTF6
PTF7
INTERFACE MODULE (SCI1)
SERIAL COMMUNICATIONS
INTERFACE MODULE (SCI2)
SERIAL COMMUNICATIONS
PTG0/KBIP0
PTG1/KBIP1
MC9S08JM32 = 32,768
V
REFL
PTG4/XTAL
PTG5/EXTAL
IRQ/TPMCLK
RxD2
TxD2
SDA
SCL
8
KBIPx
KBIPx
TPMCLK
SPSCK1
SS1
MISO1
MOSI1
TPMCLK
TPM1CH1
TPM1CH0
RxD1
TxD1
EXTAL
XTAL
4
4
USB SIE
USB ENDPOINT
RAM
FULL SPEED
USB
TRANSCEIVER
USBDP
USBDN
MISO2
SS2
SPSCK2
MOSI2
PTB1/MOSI2/ADP1
PTB0/MISO2/ADP0
PTB7/ADP7
PTB6/ADP6
8-/16-BIT SERIAL PERIPHERAL
INTERFACE MODULE (SPI2)
REAL-TIME COUNTER
(RTC)
PTB3/SS2/ADP3
PTB2/SPSCK2/ADP2
TPM1CHx
4
TPM2CH1
TPM2CH0
4
ANALOG COMPARATOR
(ACMP)
SYSTEM
USB 3.3-V VOLTAGE REGULATOR
V
USB33
MC9S08JM60 = 4096
MC9S08JM32 = 2048
ACMPO
ACMP+
ACMP
PTD3/KBIP3/ADP10
PTD2/KBIP2/ACMPO
V
SSOSC
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 245
Figure 15-2. SPI Module Quick Start
MSTR CPOL CPHA SSOE LSBFE
MODFEN BIDIROE SPIMODE SPISWAI SPC0 SPMIE
Additional configuration options.
SPPR0 SPR2 SPR1 SPR0 SPPR2 SPPR1
Baud rate = (BUSCLK/SPPR[2:0])/SPR2[2:0]
Bit 15
Bit 7
Module Initialization (Slave):
Write: SPIxC1 to configure interrupts, set primary SPI options, slave mode select, and
system enable.
Write: SPIxC2 to configure optional SPI features, hardware match interrupt enable,
and 8- or 16-bit data transmission length
Write: SPIxMH:SPIxML to set hardware compare value that triggers SPMF (optional)
when value in receive data buffer equals this value.
Module Initialization (Master):
Write: SPIxC1 to configure interrupts, set primary SPI options, master mode select,
and system enable.
Write: SPIxC2 to configure optional SPI features, hardware match interrupt enable,
and 8- or 16-bit data transmission length
Write: SPIxBR to set baud rate
Write:
SPIxMH:SPIxML
to set
hardware compare value that triggers SPMF (optional)
when value in receive data buffer equals this value.
Module Use:
After SPI master initiates transfer by checking that SPTEF = 1 and then writing data to SPIDH/L:
Wait for SPRF, then read from SPIDH/L
Wait for SPTEF, then write to SPIDH/L
Data transmissions can be 8- or 16-bits long, and mode fault detection can be enabled for master mode in cases where
more than one SPI device might become a master at the same time. Also, some applications may utilize the receive data
buffer hardware match feature to trigger specific actions, such as when command data can be sent through the SPI or to
indicate the end of an SPI transmission.
SPIxC1
SPIxC2
SPIxBR
SPIxDH
SPIxDL
SPIE SPE SPTIE
Module/interrupt enables and configuration
Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8
Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
SPIxMH
Hardware Match Value
Bit 15
Bit 7
Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8
Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
MODF SPTEF
SPIxS
SPRF SPMF
SPIxML
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
246 Freescale Semiconductor
15.1.2 Features
The SPI includes these distinctive features:
Master mode or slave mode operation
Full-duplex or single-wire bidirectional mode
Programmable transmit bit rate
Double-buffered transmit and receive data register
Serial clock phase and polarity options
Slave select output
Mode fault error flag with CPU interrupt capability
Control of SPI operation during wait mode
Selectable MSB-first or LSB-first shifting
Programmable 8- or 16-bit data transmission length
Receive data buffer hardware match feature
15.1.3 Modes of Operation
The SPI functions in three modes, run, wait, and stop.
Run Mode
This is the basic mode of operation.
Wait Mode
SPI operation in wait mode is a configurable low power mode, controlled by the SPISWAI bit
located in the SPIxC2 register. In wait mode, if the SPISWAI bit is clear, the SPI operates like in
Run Mode. If the SPISWAI bit is set, the SPI goes into a power conservative state, with the SPI
clock generation turned off. If the SPI is configured as a master, any transmission in progress stops,
but is resumed after CPU goes into Run Mode. If the SPI is configured as a slave, reception and
transmission of a byte continues, so that the slave stays synchronized to the master.
Stop Mode
The SPI is inactive in stop3 mode for reduced power consumption. If the SPI is configured as a
master, any transmission in progress stops, but is resumed after the CPU goes into Run Mode. If
the SPI is configured as a slave, reception and transmission of a data continues, so that the slave
stays synchronized to the master.
The SPI is completely disabled in all other stop modes. When the CPU wakes from these stop modes, all
SPI register content will be reset.
This is a high level description only, detailed descriptions of operating modes are contained in section
Section 15.4.9, Low Power Mode Options.
15.1.4 Block Diagrams
This section includes block diagrams showing SPI system connections, the internal organization of the SPI
module, and the SPI clock dividers that control the master mode bit rate.
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 247
15.1.4.1 SPI System Block Diagram
Figure 15-3 shows the SPI modules of two MCUs connected in a master-slave arrangement. The master
device initiates all SPI data transfers. During a transfer, the master shifts data out (on the MOSI pin) to the
slave while simultaneously shifting data in (on the MISO pin) from the slave. The transfer effectively
exchanges the data that was in the SPI shift registers of the two SPI systems. The SPSCK signal is a clock
output from the master and an input to the slave. The slave device must be selected by a low level on the
slave select input (SS pin). In this system, the master device has configured its SS pin as an optional slave
select output.
Figure 15-3. SPI System Connections
15.1.4.2 SPI Module Block Diagram
Figure 15-4 is a block diagram of the SPI module. The central element of the SPI is the SPI shift register.
Data is written to the double-buffered transmitter (write to SPIxDH:SPIxDL) and gets transferred to the
SPI shift register at the start of a data transfer. After shifting in 8 or 16 bits (as determined by SPIMODE
bit) of data, the data is transferred into the double-buffered receiver where it can be read (read from
SPIxDH:SPIxDL). Pin multiplexing logic controls connections between MCU pins and the SPI module.
When the SPI is configured as a master, the clock output is routed to the SPSCK pin, the shifter output is
routed to MOSI, and the shifter input is routed from the MISO pin.
When the SPI is configured as a slave, the SPSCK pin is routed to the clock input of the SPI, the shifter
output is routed to MISO, and the shifter input is routed from the MOSI pin.
In the external SPI system, simply connect all SPSCK pins to each other, all MISO pins together, and all
MOSI pins together. Peripheral devices often use slightly different names for these pins.
SPI SHIFTER
CLOCK
GENERATOR
SPI SHIFTER
SS
SPSCK
MISO
MOSI
SS
SPSCK
MISO
MOSI
MASTER SLAVE
8 OR 16 BITS 8 OR 16 BITS
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
248 Freescale Semiconductor
Figure 15-4. SPI Module Block Diagram
15.2 External Signal Description
The SPI optionally shares four port pins. The function of these pins depends on the settings of SPI control
bits. When the SPI is disabled (SPE = 0), these four pins revert to being general-purpose port I/O pins that
are not controlled by the SPI.
15.2.1 SPSCK SPI Serial Clock
When the SPI is enabled as a slave, this pin is the serial clock input. When the SPI is enabled as a master,
this pin is the serial clock output.
SPIE
SPI SHIFT REGISTER
SHIFT
CLOCK
SHIFT
DIRECTION
Rx BUFFER
FULL
Tx BUFFER
EMPTY
SHIFT
OUT
SHIFT
IN
ENABLE
SPI SYSTEM
CLOCK
LOGIC
CLOCK GENERATOR
BUS RATE
CLOCK
MASTER/SLAVE
MODE SELECT
MODE FAULT
DETECTION
MASTER CLOCK
SLAVE CLOCK
SPI
INTERRUPT
REQUEST
PIN CONTROL
M
S
MASTER/
SLAVE
MOSI
(MOMI)
MISO
(SISO)
SPSCK
SS
M
S
S
M
MODF
SPE
LSBFE
MSTR
SPRF
SPTEF
SPTIE
MODFEN
SSOE
SPC0
BIDIROE
SPIBR
Tx BUFFER (WRITE SPIxDH:SPIxDL)
Rx BUFFER (READ SPIxDH:SPIxDL)
8 OR 16
BIT MODE
SPIMODE
16-BIT COMPARATOR
SPMF
SPMIE
SPIxMH:SPIxML
16-BIT LATCH
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 249
15.2.2 MOSI Master Data Out, Slave Data In
When the SPI is enabled as a master and SPI pin control zero (SPC0) is 0 (not bidirectional mode), this
pin is the serial data output. When the SPI is enabled as a slave and SPC0 = 0, this pin is the serial data
input. If SPC0 = 1 to select single-wire bidirectional mode, and master mode is selected, this pin becomes
the bidirectional data I/O pin (MOMI). Also, the bidirectional mode output enable bit determines whether
the pin acts as an input (BIDIROE = 0) or an output (BIDIROE = 1). If SPC0 = 1 and slave mode is
selected, this pin is not used by the SPI and reverts to being a general-purpose port I/O pin.
15.2.3 MISO Master Data In, Slave Data Out
When the SPI is enabled as a master and SPI pin control zero (SPC0) is 0 (not bidirectional mode), this
pin is the serial data input. When the SPI is enabled as a slave and SPC0 = 0, this pin is the serial data
output. If SPC0 = 1 to select single-wire bidirectional mode, and slave mode is selected, this pin becomes
the bidirectional data I/O pin (SISO) and the bidirectional mode output enable bit determines whether the
pin acts as an input (BIDIROE = 0) or an output (BIDIROE = 1). If SPC0 = 1 and master mode is selected,
this pin is not used by the SPI and reverts to being a general-purpose port I/O pin.
15.2.4 SS Slave Select
When the SPI is enabled as a slave, this pin is the low-true slave select input. When the SPI is enabled as
a master and mode fault enable is off (MODFEN = 0), this pin is not used by the SPI and reverts to being
a general-purpose port I/O pin. When the SPI is enabled as a master and MODFEN = 1, the slave select
output enable bit determines whether this pin acts as the mode fault input (SSOE = 0) or as the slave select
output (SSOE = 1).
15.3 Register Definition
The SPI has eight 8-bit registers to select SPI options, control baud rate, report SPI status, hold an SPI data
match value, and for transmit/receive data.
Refer to the direct-page register summary in the Memory chapter of this data sheet for the absolute address
assignments for all SPI registers. This section refers to registers and control bits only by their names, and
a Freescale-provided equate or header file is used to translate these names into the appropriate absolute
addresses.
15.3.1 SPI Control Register 1 (SPIxC1)
This read/write register includes the SPI enable control, interrupt enables, and configuration options.
7 6 5 4 3 2 1 0
R
SPIE SPE SPTIE MSTR CPOL CPHA SSOE LSBFE
W
Reset 0 0 0 0 0 1 0 0
Figure 15-5. SPI Control Register 1 (SPIxC1)
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
250 Freescale Semiconductor
15.3.2 SPI Control Register 2 (SPIxC2)
This read/write register is used to control optional features of the SPI system. Bits 6 and 5 are not
implemented and always read 0.
Table 15-1. SPIxC1 Field Descriptions
Field Description
7
SPIE
SPI Interrupt Enable (for SPRF and MODF) This is the interrupt enable for SPI receive buffer full (SPRF)
and mode fault (MODF) events.
0 Interrupts from SPRF and MODF inhibited (use polling)
1 When SPRF or MODF is 1, request a hardware interrupt
6
SPE
SPI System Enable This bit enables the SPI system and dedicates the SPI port pins to SPI system functions.
If SPE is cleared, SPI is disabled and forced into idle state, and all status bits in the SPIxS register are reset.
0 SPI system inactive
1 SPI system enabled
5
SPTIE
SPI Transmit Interrupt Enable This is the interrupt enable bit for SPI transmit buffer empty (SPTEF).
0 Interrupts from SPTEF inhibited (use polling)
1 When SPTEF is 1, hardware interrupt requested
4
MSTR
Master/Slave Mode Select This bit selects master or slave mode operation.
0 SPI module configured as a slave SPI device
1 SPI module configured as a master SPI device
3
CPOL
Clock Polarity This bit selects an inverted or non-inverted SPI clock. To transmit data between SPI modules,
the SPI modules must have identical CPOL values.
This bit effectively places an inverter in series with the clock signal from a master SPI or to a slave SPI device.
Refer to Section 15.4.5, SPI Clock Formats for more details.
0 Active-high SPI clock (idles low)
1 Active-low SPI clock (idles high)
2
CPHA
Clock Phase This bit selects one of two clock formats for different kinds of synchronous serial peripheral
devices. Refer to Section 15.4.5, SPI Clock Formats for more details.
0 First edge on SPSCK occurs at the middle of the first cycle of a data transfer
1 First edge on SPSCK occurs at the start of the first cycle of a data transfer
1
SSOE
Slave Select Output Enable This bit is used in combination with the mode fault enable (MODFEN) bit in
SPIxC2 and the master/slave (MSTR) control bit to determine the function of the SS pin as shown in Table 15-2.
0
LSBFE
LSB First (Shifter Direction) This bit does not affect the position of the MSB and LSB in the data register.
Reads and writes of the data register always have the MSB in bit 7 (or bit 15 in 16-bit mode).
0 SPI serial data transfers start with most significant bit
1 SPI serial data transfers start with least significant bit
Table 15-2. SS Pin Function
MODFEN SSOE Master Mode Slave Mode
0 0 General-purpose I/O (not SPI) Slave select input
0 1 General-purpose I/O (not SPI) Slave select input
1 0 SS input for mode fault Slave select input
1 1 Automatic SS output Slave select input
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 251
7 6 5 4 3 2 1 0
R
SPMIE SPIMODE
0
MODFEN BIDIROE
0
SPISWAI SPC0
W
Reset 0 0 0 0 0 0 0 0
= Unimplemented or Reserved
Figure 15-6. SPI Control Register 2 (SPIxC2)
Table 15-3. SPIxC2 Register Field Descriptions
Field Description
7
SPMIE
SPI Match Interrupt Enable This is the interrupt enable for the SPI receive data buffer hardware match
(SPMF) function.
0 Interrupts from SPMF inhibited (use polling).
1 When SPMF = 1, requests a hardware interrupt.
6
SPIMODE
SPI 8- or 16-bit Mode This bit allows the user to select either an 8-bit or 16-bit SPI data transmission length.
In master mode, a change of this bit will abort a transmission in progress, force the SPI system into idle state,
and reset all status bits in the SPIxS register. Refer to section Section 15.4.4, Data Transmission Length, for
details.
0 8-bit SPI shift register, match register, and buffers.
1 16-bit SPI shift register, match register, and buffers.
4
MODFEN
Master Mode-Fault Function Enable When the SPI is configured for slave mode, this bit has no meaning or
effect. (The SS pin is the slave select input.) In master mode, this bit determines how the SS pin is used (refer to
Table 15-2 for details)
0 Mode fault function disabled, master SS pin reverts to general-purpose I/O not controlled by SPI
1 Mode fault function enabled, master SS pin acts as the mode fault input or the slave select output
3
BIDIROE
Bidirectional Mode Output Enable When bidirectional mode is enabled by SPI pin control 0 (SPC0) = 1,
BIDIROE determines whether the SPI data output driver is enabled to the single bidirectional SPI I/O pin.
Depending on whether the SPI is configured as a master or a slave, it uses either the MOSI (MOMI) or MISO
(SISO) pin, respectively, as the single SPI data I/O pin. When SPC0 = 0, BIDIROE has no meaning or effect.
0 Output driver disabled so SPI data I/O pin acts as an input
1 SPI I/O pin enabled as an output
1
SPISWAI
SPI Stop in Wait Mode This bit is used for power conservation while in wait.
0 SPI clocks continue to operate in wait mode
1 SPI clocks stop when the MCU enters wait mode
0
SPC0
SPI Pin Control 0 This bit enables bidirectional pin configurations as shown in Table 15-4.
0 SPI uses separate pins for data input and data output.
1 SPI configured for single-wire bidirectional operation.
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
252 Freescale Semiconductor
15.3.3 SPI Baud Rate Register (SPIxBR)
This register is used to set the prescaler and bit rate divisor for an SPI master. This register may be read or
written at any time.
Table 15-4. Bidirectional Pin Configurations
Pin Mode SPC0 BIDIROE MISO MOSI
Master Mode of Operation
Normal 0 X Master In Master Out
Bidirectional 1 0 MISO not used by SPI Master In
1 Master I/O
Slave Mode of Operation
Normal 0 X Slave Out Slave In
Bidirectional 1 0 Slave In MOSI not used by SPI
1 Slave I/O
7 6 5 4 3 2 1 0
R 0
SPPR2 SPPR1 SPPR0
0
SPR2 SPR1 SPR0
W
Reset 0 0 0 0 0 0 0 0
= Unimplemented or Reserved
Figure 15-7. SPI Baud Rate Register (SPIxBR)
Table 15-5. SPIxBR Register Field Descriptions
Field Description
6:4
SPPR[2:0]
SPI Baud Rate Prescale Divisor This 3-bit field selects one of eight divisors for the SPI baud rate prescaler
as shown in Table 15-6. The input to this prescaler is the bus rate clock (BUSCLK). The output of this prescaler
drives the input of the SPI baud rate divider (see Figure 15-15). See Section 15.4.6, SPI Baud Rate Generation,
for details.
2:0
SPR[2:0]
SPI Baud Rate Divisor This 3-bit field selects one of eight divisors for the SPI baud rate divider as shown in
Table 15-7. The input to this divider comes from the SPI baud rate prescaler (see Figure 15-15). See
Section 15.4.6, SPI Baud Rate Generation, for details.
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 253
15.3.4 SPI Status Register (SPIxS)
This register has four read-only status bits. Bits 3 through 0 are not implemented and always read 0. Writes
have no meaning or effect.
Table 15-6. SPI Baud Rate Prescaler Divisor
SPPR2:SPPR1:SPPR0 Prescaler Divisor
0:0:0 1
0:0:1 2
0:1:0 3
0:1:1 4
1:0:0 5
1:0:1 6
1:1:0 7
1:1:1 8
Table 15-7. SPI Baud Rate Divisor
SPR2:SPR1:SPR0 Rate Divisor
0:0:0 2
0:0:1 4
0:1:0 8
0:1:1 16
1:0:0 32
1:0:1 64
1:1:0 128
1:1:1 256
7 6 5 4 3 2 1 0
R SPRF SPMF SPTEF MODF 0 0 0 0
W
Reset 0 0 1 0 0 0 0 0
= Unimplemented or Reserved
Figure 15-8. SPI Status Register (SPIxS)
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
254 Freescale Semiconductor
15.3.5 SPI Data Registers (SPIxDH:SPIxDL)
The SPI data registers (SPIxDH:SPIxDL) are both the input and output register for SPI data. A write to
these registers writes to the transmit data buffer, allowing data to be queued and transmitted.
Table 15-8. SPIxS Register Field Descriptions
Field Description
7
SPRF
SPI Read Buffer Full Flag SPRF is set at the completion of an SPI transfer to indicate that received data may
be read from the SPI data register (SPIxDH:SPIxDL). SPRF is cleared by reading SPRF while it is set, then
reading the SPI data register.
0 No data available in the receive data buffer.
1 Data available in the receive data buffer.
6
SPMF
SPI Match Flag SPMF is set after SPRF = 1 when the value in the receive data buffer matches the value in
SPIMH:SPIML. To clear the flag, read SPMF when it is set, then write a 1 to it.
0 Value in the receive data buffer does not match the value in SPIxMH:SPIxML registers.
1 Value in the receive data buffer matches the value in SPIxMH:SPIxML registers.
5
SPTEF
SPI Transmit Buffer Empty Flag This bit is set when the transmit data buffer is empty. It is cleared by reading
SPIxS with SPTEF set, followed by writing a data value to the transmit buffer at SPIxDH:SPIxDL. SPIxS must be
read with SPTEF = 1 before writing data to SPIxDH:SPIxDL or the SPIxDH:SPIxDL write will be ignored. SPTEF
is automatically set when all data from the transmit buffer transfers into the transmit shift register. For an idle SPI,
data written to SPIxDH:SPIxDL is transferred to the shifter almost immediately so SPTEF is set within two bus
cycles allowing a second data to be queued into the transmit buffer. After completion of the transfer of the data
in the shift register, the queued data from the transmit buffer will automatically move to the shifter and SPTEF will
be set to indicate there is room for new data in the transmit buffer. If no new data is waiting in the transmit buffer,
SPTEF simply remains set and no data moves from the buffer to the shifter.
0 SPI transmit buffer not empty
1 SPI transmit buffer empty
4
MODF
Master Mode Fault Flag MODF is set if the SPI is configured as a master and the slave select input goes low,
indicating some other SPI device is also configured as a master. The SS pin acts as a mode fault error input only
when MSTR = 1, MODFEN = 1, and SSOE = 0; otherwise, MODF will never be set. MODF is cleared by reading
MODF while it is 1, then writing to SPI control register 1 (SPIxC1).
0 No mode fault error
1 Mode fault error detected
7 6 5 4 3 2 1 0
R
Bit 15 14 13 12 11 10 9 Bit 8
W
Reset 0 0 0 0 0 0 0 0
Figure 15-9. SPI Data Register High (SPIxDH)
7 6 5 4 3 2 1 0
R
Bit 7 6 5 4 3 2 1 Bit 0
W
Reset 0 0 0 0 0 0 0 0
Figure 15-10. SPI Data Register Low (SPIxDL)
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 255
When the SPI is configured as a master, data queued in the transmit data buffer is transmitted immediately
after the previous transmission has completed.
The SPI transmit buffer empty flag (SPTEF) in the SPIxS register indicates when the transmit data buffer
is ready to accept new data. SPIxS must be read when SPTEF is set before writing to the SPI data registers,
or the write will be ignored.
Data may be read from SPIxDH:SPIxDL any time after SPRF is set and before another transfer is finished.
Failure to read the data out of the receive data buffer before a new transfer ends causes a receive overrun
condition and the data from the new transfer is lost.
In 8-bit mode, only SPIxDL is available. Reads of SPIxDH will return all 0s. Writes to SPIxDH will be
ignored.
In 16-bit mode, reading either byte (SPIxDH or SPIxDL) latches the contents of both bytes into a buffer
where they remain latched until the other byte is read. Writing to either byte (SPIxDH or SPIxDL) latches
the value into a buffer. When both bytes have been written, they are transferred as a coherent 16-bit value
into the transmit data buffer.
15.3.6 SPI Match Registers (SPIxMH:SPIxML)
These read/write registers contain the hardware compare value, which sets the SPI match flag (SPMF)
when the value received in the SPI receive data buffer equals the value in the SPIxMH:SPIxML registers.
In 8-bit mode, only SPIxML is available. Reads of SPIxMH will return all 0s. Writes to SPIxMH will be
ignored.
In 16-bit mode, reading either byte (SPIxMH or SPIxML) latches the contents of both bytes into a buffer
where they remain latched until the other byte is read. Writing to either byte (SPIxMH or SPIxML) latches
the value into a buffer. When both bytes have been written, they are transferred as a coherent value into
the SPI match registers.
7 6 5 4 3 2 1 0
R
Bit 15 14 13 12 11 10 9 Bit 8
W
Reset 0 0 0 0 0 0 0 0
Figure 15-11. SPI Match Register High (SPIxMH)
7 6 5 4 3 2 1 0
R
Bit 7 6 5 4 3 2 1 Bit 0
W
Reset 0 0 0 0 0 0 0 0
Figure 15-12. SPI Match Register Low (SPIxML)
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
256 Freescale Semiconductor
15.4 Functional Description
15.4.1 General
The SPI system is enabled by setting the SPI enable (SPE) bit in SPI Control Register 1. While the SPE
bit is set, the four associated SPI port pins are dedicated to the SPI function as:
Slave select (SS)
Serial clock (SPSCK)
Master out/slave in (MOSI)
Master in/slave out (MISO)
An SPI transfer is initiated in the master SPI device by reading the SPI status register (SPIxS) when
SPTEF = 1 and then writing data to the transmit data buffer (write to SPIxDH:SPIxDL). When a transfer
is complete, received data is moved into the receive data buffer. The SPIxDH:SPIxDL registers act as the
SPI receive data buffer for reads and as the SPI transmit data buffer for writes.
The clock phase control bit (CPHA) and a clock polarity control bit (CPOL) in the SPI Control Register 1
(SPIxC1) select one of four possible clock formats to be used by the SPI system. The CPOL bit simply
selects a non-inverted or inverted clock. The CPHA bit is used to accommodate two fundamentally
different protocols by sampling data on odd numbered SPSCK edges or on even numbered SPSCK edges.
The SPI can be configured to operate as a master or as a slave. When the MSTR bit in SPI control register
1 is set, master mode is selected, when the MSTR bit is clear, slave mode is selected.
15.4.2 Master Mode
The SPI operates in master mode when the MSTR bit is set. Only a master SPI module can initiate
transmissions. A transmission begins by reading the SPIxS register while SPTEF = 1 and writing to the
master SPI data registers. If the shift register is empty, the byte immediately transfers to the shift register.
The data begins shifting out on the MOSI pin under the control of the serial clock.
SPSCK
The SPR2, SPR1, and SPR0 baud rate selection bits in conjunction with the SPPR2, SPPR1, and SPPR0
baud rate preselection bits in the SPI Baud Rate register control the baud rate generator and determine the
speed of the transmission. The SPSCK pin is the SPI clock output. Through the SPSCK pin, the baud rate
generator of the master controls the shift register of the slave peripheral.
MOSI, MISO pin
In master mode, the function of the serial data output pin (MOSI) and the serial data input pin (MISO) is
determined by the SPC0 and BIDIROE control bits.
SS pin
If MODFEN and SSOE bit are set, the SS pin is configured as slave select output. The SS output becomes
low during each transmission and is high when the SPI is in idle state.
If MODFEN is set and SSOE is cleared, the SS pin is configured as input for detecting mode fault error.
If the SS input becomes low this indicates a mode fault error where another master tries to drive the MOSI
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 257
and SPSCK lines. In this case, the SPI immediately switches to slave mode, by clearing the MSTR bit and
also disables the slave output buffer MISO (or SISO in bidirectional mode). So the result is that all outputs
are disabled and SPSCK, MOSI and MISO are inputs. If a transmission is in progress when the mode fault
occurs, the transmission is aborted and the SPI is forced into idle state.
This mode fault error also sets the mode fault (MODF) flag in the SPI Status Register (SPIxS). If the SPI
interrupt enable bit (SPIE) is set when the MODF flag gets set, then an SPI interrupt sequence is also
requested.
When a write to the SPI Data Register in the master occurs, there is a half SPSCK-cycle delay. After the
delay, SPSCK is started within the master. The rest of the transfer operation differs slightly, depending on
the clock format specified by the SPI clock phase bit, CPHA, in SPI Control Register 1 (see Section 15.4.5,
SPI Clock Formats.)
NOTE
A change of the bits CPOL, CPHA, SSOE, LSBFE, MODFEN, SPC0,
BIDIROE with SPC0 set, SPIMODE, SPPR2-SPPR0 and SPR2-SPR0 in
master mode will abort a transmission in progress and force the SPI into idle
state. The remote slave cannot detect this, therefore the master has to ensure
that the remote slave is set back to idle state.
15.4.3 Slave Mode
The SPI operates in slave mode when the MSTR bit in SPI Control Register1 is clear.
SPSCK
In slave mode, SPSCK is the SPI clock input from the master.
MISO, MOSI pin
In slave mode, the function of the serial data output pin (MISO) and serial data input pin (MOSI) is
determined by the SPC0 bit and BIDIROE bit in SPI Control Register 2.
SS pin
The SS pin is the slave select input. Before a data transmission occurs, the SS pin of the slave SPI must
be low. SS must remain low until the transmission is complete. If SS goes high, the SPI is forced into idle
state.
The SS input also controls the serial data output pin, if SS is high (not selected), the serial data output pin
is high impedance, and, if SS is low the first bit in the SPI Data Register is driven out of the serial data
output pin. Also, if the slave is not selected (SS is high), then the SPSCK input is ignored and no internal
shifting of the SPI shift register takes place.
Although the SPI is capable of duplex operation, some SPI peripherals are capable of only receiving SPI
data in a slave mode. For these simpler devices, there is no serial data out pin.
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
258 Freescale Semiconductor
NOTE
When peripherals with duplex capability are used, take care not to
simultaneously enable two receivers whose serial outputs drive the same
system slaves serial data output line.
As long as no more than one slave device drives the system slaves serial data output line, it is possible for
several slaves to receive the same transmission from a master, although the master would not receive return
information from all of the receiving slaves.
If the CPHA bit in SPI Control Register 1 is clear, odd numbered edges on the SPSCK input cause the data
at the serial data input pin to be latched. Even numbered edges cause the value previously latched from the
serial data input pin to shift into the LSB or MSB of the SPI shift register, depending on the LSBFE bit.
If the CPHA bit is set, even numbered edges on the SPSCK input cause the data at the serial data input pin
to be latched. Odd numbered edges cause the value previously latched from the serial data input pin to shift
into the LSB or MSB of the SPI shift register, depending on the LSBFE bit.
When CPHA is set, the first edge is used to get the first data bit onto the serial data output pin. When CPHA
is clear and the SS input is low (slave selected), the first bit of the SPI data is driven out of the serial data
output pin. After the eighth (SPIMODE = 0) or sixteenth (SPIMODE = 1) shift, the transfer is considered
complete and the received data is transferred into the SPI data registers. To indicate transfer is complete,
the SPRF flag in the SPI Status Register is set.
NOTE
A change of the bits CPOL, CPHA, SSOE, LSBFE, MODFEN, SPC0 and
BIDIROE with SPC0 set and SPIMODE in slave mode will corrupt a
transmission in progress and has to be avoided.
15.4.4 Data Transmission Length
The SPI can support data lengths of 8 or 16 bits. The length can be configured with the SPIMODE bit in
the SPIxC2 register.
In 8-bit mode (SPIMODE = 0), the SPI Data Register is comprised of one byte: SPIxDL. The SPI Match
Register is also comprised of only one byte: SPIxML. Reads of SPIxDH and SPIxMH will return zero.
Writes to SPIxDH and SPIxMH will be ignored.
In 16-bit mode (SPIMODE = 1), the SPI Data Register is comprised of two bytes: SPIxDH and SPIxDL.
Reading either byte (SPIxDH or SPIxDL) latches the contents of both bytes into a buffer where they
remain latched until the other byte is read. Writing to either byte (SPIxDH or SPIxDL) latches the value
into a buffer. When both bytes have been written, they are transferred as a coherent 16-bit value into the
transmit data buffer.
In 16-bit mode, the SPI Match Register is also comprised of two bytes: SPIxMH and SPIxML. Reading
either byte (SPIxMH or SPIxML) latches the contents of both bytes into a buffer where they remain latched
until the other byte is read. Writing to either byte (SPIxMH or SPIxML) latches the value into a buffer.
When both bytes have been written, they are transferred as a coherent 16-bit value into the transmit data
buffer.
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 259
Any switching between 8- and 16-bit data transmission length (controlled by SPIMODE bit) in master
mode will abort a transmission in progress, force the SPI system into idle state, and reset all status bits in
the SPIxS register. To initiate a transfer after writing to SPIMODE, the SPIxS register must be read with
SPTEF = 1, and data must be written to SPIxDH:SPIxDL in 16-bit mode (SPIMODE = 1) or SPIxDL in
8-bit mode (SPIMODE = 0).
In slave mode, user software should write to SPIMODE only once to prevent corrupting a transmission in
progress.
NOTE
Data can be lost if the data length is not the same for both master and slave
devices.
15.4.5 SPI Clock Formats
To accommodate a wide variety of synchronous serial peripherals from different manufacturers, the SPI
system has a clock polarity (CPOL) bit and a clock phase (CPHA) control bit to select one of four clock
formats for data transfers. CPOL selectively inserts an inverter in series with the clock. CPHA chooses
between two different clock phase relationships between the clock and data.
Figure 15-13 shows the clock formats when SPIMODE = 0 (8-bit mode) and CPHA = 1. At the top of the
figure, the eight bit times are shown for reference with bit 1 starting at the first SPSCK edge and bit 8
ending one-half SPSCK cycle after the sixteenth SPSCK edge. The MSB first and LSB first lines show the
order of SPI data bits depending on the setting in LSBFE. Both variations of SPSCK polarity are shown,
but only one of these waveforms applies for a specific transfer, depending on the value in CPOL. The
SAMPLE IN waveform applies to the MOSI input of a slave or the MISO input of a master. The MOSI
waveform applies to the MOSI output pin from a master and the MISO waveform applies to the MISO
output from a slave. The SS OUT waveform applies to the slave select output from a master (provided
MODFEN and SSOE = 1). The master SS output goes to active low one-half SPSCK cycle before the start
of the transfer and goes back high at the end of the eighth bit time of the transfer. The SS IN waveform
applies to the slave select input of a slave.
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
260 Freescale Semiconductor
Figure 15-13. SPI Clock Formats (CPHA = 1)
When CPHA = 1, the slave begins to drive its MISO output when SS goes to active low, but the data is not
defined until the first SPSCK edge. The first SPSCK edge shifts the first bit of data from the shifter onto
the MOSI output of the master and the MISO output of the slave. The next SPSCK edge causes both the
master and the slave to sample the data bit values on their MISO and MOSI inputs, respectively. At the
third SPSCK edge, the SPI shifter shifts one bit position which shifts in the bit value that was just sampled,
and shifts the second data bit value out the other end of the shifter to the MOSI and MISO outputs of the
master and slave, respectively. When CPHA = 1, the slaves SS input is not required to go to its inactive
high level between transfers.
Figure 15-14 shows the clock formats when SPIMODE = 0 and CPHA = 0. At the top of the figure, the
eight bit times are shown for reference with bit 1 starting as the slave is selected (SS IN goes low), and bit
8 ends at the last SPSCK edge. The MSB first and LSB first lines show the order of SPI data bits depending
on the setting in LSBFE. Both variations of SPSCK polarity are shown, but only one of these waveforms
applies for a specific transfer, depending on the value in CPOL. The SAMPLE IN waveform applies to the
MOSI input of a slave or the MISO input of a master. The MOSI waveform applies to the MOSI output
pin from a master and the MISO waveform applies to the MISO output from a slave. The SS OUT
waveform applies to the slave select output from a master (provided MODFEN and SSOE = 1). The master
SS output goes to active low at the start of the first bit time of the transfer and goes back high one-half
BIT TIME #
(REFERENCE)
MSB FIRST
LSB FIRST
SPSCK
(CPOL = 0)
SPSCK
(CPOL = 1)
SAMPLE IN
(MISO OR MOSI)
MOSI
(MASTER OUT)
MISO
(SLAVE OUT)
SS OUT
(MASTER)
SS IN
(SLAVE)
BIT 7
BIT 0
BIT 6
BIT 1
BIT 2
BIT 5
BIT 1
BIT 6
BIT 0
BIT 7
1 2 6 7 8
...
...
...
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 261
SPSCK cycle after the end of the eighth bit time of the transfer. The SS IN waveform applies to the slave
select input of a slave.
Figure 15-14. SPI Clock Formats (CPHA = 0)
When CPHA = 0, the slave begins to drive its MISO output with the first data bit value (MSB or LSB
depending on LSBFE) when SS goes to active low. The first SPSCK edge causes both the master and the
slave to sample the data bit values on their MISO and MOSI inputs, respectively. At the second SPSCK
edge, the SPI shifter shifts one bit position which shifts in the bit value that was just sampled and shifts the
second data bit value out the other end of the shifter to the MOSI and MISO outputs of the master and
slave, respectively. When CPHA = 0, the slaves SS input must go to its inactive high level between
transfers.
15.4.6 SPI Baud Rate Generation
As shown in Figure 15-15, the clock source for the SPI baud rate generator is the bus clock. The three
prescale bits (SPPR2:SPPR1:SPPR0) choose a prescale divisor of 1, 2, 3, 4, 5, 6, 7, or 8. The three rate
select bits (SPR2:SPR1:SPR0) divide the output of the prescaler stage by 2, 4, 8, 16, 32, 64, 128, or 256
to get the internal SPI master mode bit-rate clock.
The baud rate generator is activated only when the SPI is in the master mode and a serial transfer is taking
place. In the other cases, the divider is disabled to decrease I
DD
current.
BIT TIME #
(REFERENCE)
MSB FIRST
LSB FIRST
SPSCK
(CPOL = 0)
SPSCK
(CPOL = 1)
SAMPLE IN
(MISO OR MOSI)
MOSI
(MASTER OUT)
MISO
(SLAVE OUT)
SS OUT
(MASTER)
SS IN
(SLAVE)
BIT 7
BIT 0
BIT 6
BIT 1
BIT 2
BIT 5
BIT 1
BIT 6
BIT 0
BIT 7
1 2 6 7 8 ...
...
...
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
262 Freescale Semiconductor
The baud rate divisor equation is as follows:
The baud rate can be calculated with the following equation:
Figure 15-15. SPI Baud Rate Generation
15.4.7 Special Features
15.4.7.1 SS Output
The SS output feature automatically drives the SS pin low during transmission to select external devices
and drives it high during idle to deselect external devices. When SS output is selected, the SS output pin
is connected to the SS input pin of the external device.
The SS output is available only in master mode during normal SPI operation by asserting the SSOE and
MODFEN bits as shown in Table 15-2.
The mode fault feature is disabled while SS output is enabled.
NOTE
Care must be taken when using the SS output feature in a multi-master
system since the mode fault feature is not available for detecting system
errors between masters.
15.4.7.2 Bidirectional Mode (MOMI or SISO)
The bidirectional mode is selected when the SPC0 bit is set in SPI Control Register 2 (see Table 15-9.) In
this mode, the SPI uses only one serial data pin for the interface with external device(s). The MSTR bit
decides which pin to use. The MOSI pin becomes the serial data I/O (MOMI) pin for the master mode, and
the MISO pin becomes serial data I/O (SISO) pin for the slave mode. The MISO pin in master mode and
MOSI pin in slave mode are not used by the SPI.
BaudRateDivisor SPPR 1 + ( ) 2
SPR 1 + ( )
=
Baud Rate BusClock BaudRateDivisor =
DIVIDE BY
2, 4, 8, 16, 32, 64, 128, or 256
DIVIDE BY
1, 2, 3, 4, 5, 6, 7, or 8
PRESCALER BAUD RATE DIVIDER
SPPR2:SPPR1:SPPR0 SPR2:SPR1:SPR0
BUS CLOCK
MASTER
SPI
BIT RATE
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 263
The direction of each serial I/O pin depends on the BIDIROE bit. If the pin is configured as an output,
serial data from the shift register is driven out on the pin. The same pin is also the serial input to the shift
register.
The SPSCK is output for the master mode and input for the slave mode.
The SS is the input or output for the master mode, and it is always the input for the slave mode.
The bidirectional mode does not affect SPSCK and SS functions.
NOTE
In bidirectional master mode, with mode fault enabled, both data pins MISO
and MOSI can be occupied by the SPI, though MOSI is normally used for
transmissions in bidirectional mode and MISO is not used by the SPI. If a
mode fault occurs, the SPI is automatically switched to slave mode, in this
case MISO becomes occupied by the SPI and MOSI is not used. This has to
be considered, if the MISO pin is used for another purpose.
15.4.8 Error Conditions
The SPI has one error condition:
Mode fault error
15.4.8.1 Mode Fault Error
If the SS input becomes low while the SPI is configured as a master, it indicates a system error where more
than one master may be trying to drive the MOSI and SPSCK lines simultaneously. This condition is not
permitted in normal operation, and the MODF bit in the SPI status register is set automatically provided
the MODFEN bit is set.
Table 15-9. Normal Mode and Bidirectional Mode
When SPE = 1 Master Mode MSTR = 1 Slave Mode MSTR = 0
Normal Mode
SPC0 = 0
Bidirectional Mode
SPC0 = 1
SPI
MOSI
MISO
Serial Out
Serial In
SPI
MOSI
MISO
Serial In
Serial Out
SPI
MOMI Serial Out
Serial In
BIDIROE SPI
SISO
Serial In
Serial Out
.
BIDIROE
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
264 Freescale Semiconductor
In the special case where the SPI is in master mode and MODFEN bit is cleared, the SS pin is not used by
the SPI. In this special case, the mode fault error function is inhibited and MODF remains cleared. In case
the SPI system is configured as a slave, the SS pin is a dedicated input pin. Mode fault error doesnt occur
in slave mode.
If a mode fault error occurs the SPI is switched to slave mode, with the exception that the slave output
buffer is disabled. So SPSCK, MISO and MOSI pins are forced to be high impedance inputs to avoid any
possibility of conflict with another output driver. A transmission in progress is aborted and the SPI is
forced into idle state.
If the mode fault error occurs in the bidirectional mode for a SPI system configured in master mode, output
enable of the MOMI (MOSI in bidirectional mode) is cleared if it was set. No mode fault error occurs in
the bidirectional mode for the SPI system configured in slave mode.
The mode fault flag is cleared automatically by a read of the SPI Status Register (with MODF set) followed
by a write to SPI Control Register 1. If the mode fault flag is cleared, the SPI becomes a normal master or
slave again.
15.4.9 Low Power Mode Options
15.4.9.1 SPI in Run Mode
In run mode with the SPI system enable (SPE) bit in the SPI control register clear, the SPI system is in a
low-power, disabled state. SPI registers can still be accessed, but clocks to the core of this module are
disabled.
15.4.9.2 SPI in Wait Mode
SPI operation in wait mode depends upon the state of the SPISWAI bit in SPI Control Register 2.
If SPISWAI is clear, the SPI operates normally when the CPU is in wait mode
If SPISWAI is set, SPI clock generation ceases and the SPI module enters a power conservation
state when the CPU is in wait mode.
If SPISWAI is set and the SPI is configured for master, any transmission and reception in
progress stops at wait mode entry. The transmission and reception resumes when the SPI exits
wait mode.
If SPISWAI is set and the SPI is configured as a slave, any transmission and reception in
progress continues if the SPSCK continues to be driven from the master. This keeps the slave
synchronized to the master and the SPSCK.
If the master transmits data while the slave is in wait mode, the slave will continue to send out
data consistent with the operation mode at the start of wait mode (i.e., if the slave is currently
sending its SPIxDH:SPIxDL to the master, it will continue to send the same byte. Otherwise,
if the slave is currently sending the last data received byte from the master, it will continue to
send each previously receive data from the master byte).
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 265
NOTE
Care must be taken when expecting data from a master while the slave is in
wait or stop3 mode. Even though the shift register will continue to operate,
the rest of the SPI is shut down (i.e. a SPRF interrupt will not be generated
until exiting stop or wait mode). Also, the data from the shift register will
not be copied into the SPIxDH:SPIxDL registers until after the slave SPI has
exited wait or stop mode. A SPRF flag and SPIxDH:SPIxDL copy is only
generated if wait mode is entered or exited during a tranmission. If the slave
enters wait mode in idle mode and exits wait mode in idle mode, neither a
SPRF nor a SPIxDH:SPIxDL copy will occur.
15.4.9.3 SPI in Stop Mode
Stop3 mode is dependent on the SPI system. Upon entry to stop3 mode, the SPI module clock is disabled
(held high or low). If the SPI is in master mode and exchanging data when the CPU enters stop mode, the
transmission is frozen until the CPU exits stop mode. After stop, data to and from the external SPI is
exchanged correctly. In slave mode, the SPI will stay synchronized with the master.
The stop mode is not dependent on the SPISWAI bit.
In all other stop modes, the SPI module is completely disabled. After stop, all registers are reset to their
default values, and the SPI module must be re-initialized.
15.4.9.4 Reset
The reset values of registers and signals are described in Section 15.3, Register Definition. which details
the registers and their bit-fields.
If a data transmission occurs in slave mode after reset without a write to SPIxDH:SPIxDL, it will
transmit garbage, or the data last received from the master before the reset.
Reading from the SPIxDH:SPIxDL after reset will always read zeros.
15.4.9.5 Interrupts
The SPI only originates interrupt requests when the SPI is enabled (SPE bit in SPIxC1 set). The following
is a description of how the SPI makes a request and how the MCU should acknowledge that request. The
interrupt vector offset and interrupt priority are chip dependent.
15.4.10 SPI Interrupts
There are four flag bits, three interrupt mask bits, and one interrupt vector associated with the SPI system.
The SPI interrupt enable mask (SPIE) enables interrupts from the SPI receiver full flag (SPRF) and mode
fault flag (MODF). The SPI transmit interrupt enable mask (SPTIE) enables interrupts from the SPI
transmit buffer empty flag (SPTEF). The SPI match interrupt enable mask bit (SPIMIE) enables interrupts
from the SPI match flag (SPMF). When one of the flag bits is set, and the associated interrupt mask bit is
set, a hardware interrupt request is sent to the CPU. If the interrupt mask bits are cleared, software can poll
the associated flag bits instead of using interrupts. The SPI interrupt service routine (ISR) should check
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
266 Freescale Semiconductor
the flag bits to determine what event caused the interrupt. The service routine should also clear the flag
bit(s) before returning from the ISR (usually near the beginning of the ISR).
15.4.10.1 MODF
MODF occurs when the master detects an error on the SS pin. The master SPI must be configured for the
MODF feature (see Table 15-2). Once MODF is set, the current transfer is aborted and the following bit is
changed:
MSTR=0, The master bit in SPIxC1 resets.
The MODF interrupt is reflected in the status register MODF flag. Clearing the flag will also clear the
interrupt. This interrupt will stay active while the MODF flag is set. MODF has an automatic clearing
process which is described in Section 15.3.4, SPI Status Register (SPIxS).
15.4.10.2 SPRF
SPRF occurs when new data has been received and copied to the SPI receive data buffer. In 8-bit mode,
SPRF is set only after all 8 bits have been shifted out of the shift register and into SPIxDL. In 16-bit mode,
SPRF is set only after all 16 bits have been shifted out of the shift register and into SPIxDH:SPIxDL.
Once SPRF is set, it does not clear until it is serviced. SPRF has an automatic clearing process which is
described in Section 15.3.4, SPI Status Register (SPIxS). In the event that the SPRF is not serviced
before the end of the next transfer (i.e. SPRF remains active throughout another transfer), the latter
transfers will be ignored and no new data will be copied into the SPIxDH:SPIxDL.
15.4.10.3 SPTEF
SPTEF occurs when the SPI transmit buffer is ready to accept new data. In 8-bit mode, SPTEF is set only
after all 8 bits have been moved from SPIxDL into the shifter. In 16-bit mode, SPTEF is set only after all
16 bits have been moved from SPIxDH:SPIxDL into the shifter.
Once SPTEF is set, it does not clear until it is serviced. SPTEF has an automatic clearing process which is
described in Section 15.3.4, SPI Status Register (SPIxS).
15.4.10.4 SPMF
SPMF occurs when the data in the receive data buffer is equal to the data in the SPI match register. In 8-bit
mode, SPMF is set only after bits 80 in the receive data buffer are determined to be equivalent to the value
in SPIxML. In 16-bit mode, SPMF is set after bits 150 in the receive data buffer are determined to be
equivalent to the value in SPIxMH:SPIxML.
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 267
15.5 Initialization/Application Information
15.5.1 SPI Module Initialization Example
15.5.1.1 Initialization Sequence
Before the SPI module can be used for communication, an initialization procedure must be carried out, as
follows:
1. Update control register 1 (SPIxC1) to enable the SPI and to control interrupt enables. This register
also sets the SPI as master or slave, determines clock phase and polarity, and configures the main
SPI options.
2. Update control register 2 (SPIxC2) to enable additional SPI functions such as the SPI match
interrupt feature, the master mode-fault function, and bidirectional mode output. 8- or 16-bit mode
select and other optional features are controlled here as well.
3. Update the baud rate register (SPIxBR) to set the prescaler and bit rate divisor for an SPI master.
4. Update the hardware match register (SPIxMH:SPIxML) with the value to be compared to the
receive data register for triggering an interrupt if hardware match interrupts are enabled.
5. In the master, read SPIxS while SPTEF = 1, and then write to the transmit data register
(SPIxDH:SPIxDL) to begin transfer.
15.5.1.2 PseudoCode Example
In this example, the SPI module will be set up for master mode with only hardware match interrupts
enabled. The SPI will run in 16-bit mode at a maximum baud rate of bus clock divided by 2. Clock phase
and polarity will be set for an active-high SPI clock where the first edge on SPSCK occurs at the start of
the first cycle of a data transfer.
SPIxC1=0x54(%01010100)
Bit 7 SPIE = 0 Disables receive and mode fault interrupts
Bit 6 SPE = 1 Enables the SPI system
Bit 5 SPTIE = 0 Disables SPI transmit interrupts
Bit 4 MSTR = 1 Sets the SPI module as a master SPI device
Bit 3 CPOL = 0 Configures SPI clock as active-high
Bit 2 CPHA = 1 First edge on SPSCK at start of first data transfer cycle
Bit 1 SSOE = 0 Determines SS pin function when mode fault enabled
Bit 0 LSBFE = 0 SPI serial data transfers start with most significant bit
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
268 Freescale Semiconductor
SPIxC2 = 0xC0(%11000000)
Bit 7 SPMIE = 1 SPI hardware match interrupt enabled
Bit 6 SPIMODE = 1 Configures SPI for 16-bit mode
Bit 5 = 0 Unimplemented
Bit 4 MODFEN = 0 Disables mode fault function
Bit 3 BIDIROE = 0 SPI data I/O pin acts as input
Bit 2 = 0 Unimplemented
Bit 1 SPISWAI = 0 SPI clocks operate in wait mode
Bit 0 SPC0 = 0 uses separate pins for data input and output
SPIxBR = 0x00(%00000000)
Bit 7 = 0 Unimplemented
Bit 6:4 = 000 Sets prescale divisor to 1
Bit 3 = 0 Unimplemented
Bit 2:0 = 000 Sets baud rate divisor to 2
SPIxS = 0x00(%00000000)
Bit 7 SPRF = 0 Flag is set when receive data buffer is full
Bit 6 SPMF = 0 Flag is set when SPIMH/L = receive data buffer
Bit 5 SPTEF = 0 Flag is set when transmit data buffer is empty
Bit 4 MODF = 0 Mode fault flag for master mode
Bit 3:0 = 0 Unimplemented
SPIxMH = 0xXX
In 16-bit mode, this register holds bits 815 of the hardware match buffer. In 8-bit mode, writes to this register will be
ignored.
SPIxML = 0xXX
Holds bits 07 of the hardware match buffer.
SPIxDH = 0xxx
In 16-bit mode, this register holds bits 815 of the data to be transmitted by the transmit buffer and received by the
receive buffer.
SPIxDL = 0xxx
Holds bits 07 of the data to be transmitted by the transmit buffer and received by the receive buffer.
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 269
Figure 15-16. Initialization Flowchart Example for SPI Master Device in 16-bit Mode
INITIALIZE SPI
SPIxC1 = 0x54
SPIxC2 = 0xC0
SPIxBR = 0x00
SPIxMH = 0xXX
RESET
YES
READ SPMF WHILE SET
TO CLEAR FLAG,
THEN WRITE A 1 TO IT
CONTINUE
SPMF = 1
?
READ
SPIxDH:SPIxDL
SPRF = 1
?
WRITE TO
SPIxDH:SPIxDL
SPTEF = 1
?
NO
NO
NO
YES
YES
YES
Serial Peripheral Interface (S08SPI16V1)
MC9S08JM60 Series Data Sheet, Rev. 3
270 Freescale Semiconductor
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 271
Chapter 16
Timer/Pulse-Width Modulator (S08TPMV3)
16.1 Introduction
The MC9S08JM60 series includes two independent timer/PWM (TPM) modules which support traditional
input capture, output compare, or buffered edge-aligned pulse-width modulation (PWM) on each channel.
A control bit in each TPM configures all channels in that timer to operate as center-aligned PWM
functions. In each of these two TPMs, timing functions are based on a separate 16-bit counter with
prescaler and modulo features to control frequency and range (period between overflows) of the time
reference.
Chapter 16 Timer/Pulse-Width Modulator (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
272 Freescale Semiconductor
Figure 16-1. MC9S08JM60 Series Block Diagram Highlighting the TPM Blocks and Pins
PTD4/ADP11
PTD5
PTD6
PTC1/SDA
PTC0/SCL
V
SS
V
DD
PTA5 PTA0
PTE0/TxD1
PTE1/RxD1
PTD1/ADP9/ACMP
PTD0/ADP8/ACMP+
PTC6
PTC5/RxD2
PTC4
PTC3/TxD2
PTC2
P
O
R
T
A
P
O
R
T
C
P
O
R
T
D
8-BIT KEYBOARD
INTERRUPT MODULE (KBI)
IIC MODULE (IIC)
8-/16-BIT SERIAL PERIPHERAL
INTERFACE MODULE (SPI1)
USER Flash (IN BYTES)
USER RAM (IN BYTES)
ON-CHIP ICE AND
DEBUG MODULE (DBG)
MC9S08JM60 = 60,912
HCS08 CORE
CPU BDC
NOTES:
1. Port pins are software configurable with pullup device if input port.
2. Pin contains software configurable pullup/pull-down device if IRQ is enabled
(IRQPE = 1). Pull-down is enabled if rising edge detect is selected (IRQEDG = 1)
3. IRQ does not have a clamp diode to V
DD
. IRQ must not be driven above V
DD
.
4. Pin contains integrated pullup device.
5. When pin functions as KBI (KBIPEn = 1) and associated pin is configured to enable the
pullup device, KBEDGn can be used to reconfigure the pullup as a pull-down device.
PTB5/KBIP5/ADP5
P
O
R
T
B
PTE5/MOSI1
PTE4/MISO1
PTE6/SPSCK1
PTE7/SS1
HCS08 SYSTEM CONTROL
RESETS AND INTERRUPTS
MODES OF OPERATION
POWER MANAGEMENT
VOLTAGE
REGULATOR
COP IRQ LVD
LOW-POWER OSCILLATOR
MULTI-PURPOSE CLOCK
GENERATOR (MCG)
RESET
V
SSAD
V
DDAD
V
REFH
ANALOG-TO-DIGITAL
CONVERTER (ADC)
PTD7
6
PTB4/KBIP4/ADP4
PTG3/KBIP7
PTG2/KBIP6
P
O
R
T
G
12-CHANNEL, 12-BIT
BKGD/MS
PTF6
PTF7
INTERFACE MODULE (SCI1)
SERIAL COMMUNICATIONS
INTERFACE MODULE (SCI2)
SERIAL COMMUNICATIONS
PTG0/KBIP0
PTG1/KBIP1
MC9S08JM32 = 32,768
V
REFL
PTG4/XTAL
PTG5/EXTAL
IRQ/TPMCLK
RxD2
TxD2
SDA
SCL
8
KBIPx
KBIPx
SPSCK1
SS1
MISO1
MOSI1
RxD1
TxD1
EXTAL
XTAL
4
4
USB SIE
USB ENDPOINT
RAM
FULL SPEED
USB
TRANSCEIVER
USBDP
USBDN
MISO2
SS2
SPSCK2
MOSI2
PTB1/MOSI2/ADP1
PTB0/MISO2/ADP0
PTB7/ADP7
PTB6/ADP6
8-/16-BIT SERIAL PERIPHERAL
INTERFACE MODULE (SPI2)
REAL-TIME COUNTER
(RTC)
PTB3/SS2/ADP3
PTB2/SPSCK2/ADP2
4
4
ANALOG COMPARATOR
(ACMP)
SYSTEM
USB 3.3-V VOLTAGE REGULATOR
V
USB33
MC9S08JM60 = 4096
MC9S08JM32 = 2048
ACMPO
ACMP+
ACMP
PTD3/KBIP3/ADP10
PTD2/KBIP2/ACMPO
V
SSOSC
PTE3/TPM1CH1
PTE2/TPM1CH0
P
O
R
T
E
2-CHANNEL TIMER/PWM
MODULE (TPM2)
6-CHANNEL TIMER/PWM
MODULE (TPM1)
PTF3/TPM1CH5
PTF2/TPM1CH4
PTF0/TPM1CH2
PTF1/TPM1CH3
P
O
R
T
F
PTF5/TPM2CH1
PTF4/TPM2CH0
TPMCLK
TPMCLK
TPM1CH1
TPM1CH0
TPM1CHx
TPM2CH1
TPM2CH0
Timer/PWM Module (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 273
16.1.1 Features
The TPM includes these distinctive features:
One to eight channels:
Each channel may be input capture, output compare, or edge-aligned PWM
Rising-Edge, falling-edge, or any-edge input capture trigger
Set, clear, or toggle output compare action
Selectable polarity on PWM outputs
Module may be configured for buffered, center-aligned pulse-width-modulation (CPWM) on all
channels
Timer clock source selectable as prescaled bus clock, fixed system clock, or an external clock pin
Prescale taps for divide-by 1, 2, 4, 8, 16, 32, 64, or 128
Fixed system clock source are synchronized to the bus clock by an on-chip synchronization
circuit
External clock pin may be shared with any timer channel pin or a separated input pin
16-bit free-running or modulo up/down count operation
Timer system enable
One interrupt per channel plus terminal count interrupt
16.1.2 Modes of Operation
In general, TPM channels may be independently configured to operate in input capture, output compare,
or edge-aligned PWM modes. A control bit allows the whole TPM (all channels) to switch to
center-aligned PWM mode. When center-aligned PWM mode is selected, input capture, output compare,
and edge-aligned PWM functions are not available on any channels of this TPM module.
When the microcontroller is in active BDM background or BDM foreground mode, the TPM temporarily
suspends all counting until the microcontroller returns to normal user operating mode. During stop mode,
all system clocks, including the main oscillator, are stopped; therefore, the TPM is effectively disabled
until clocks resume. During wait mode, the TPM continues to operate normally. Provided the TPM does
not need to produce a real time reference or provide the interrupt source(s) needed to wake the MCU from
wait mode, the user can save power by disabling TPM functions before entering wait mode.
Input capture mode
When a selected edge event occurs on the associated MCU pin, the current value of the 16-bit timer
counter is captured into the channel value register and an interrupt flag bit is set. Rising edges,
falling edges, any edge, or no edge (disable channel) may be selected as the active edge which
triggers the input capture.
Output compare mode
When the value in the timer counter register matches the channel value register, an interrupt flag
bit is set, and a selected output action is forced on the associated MCU pin. The output compare
action may be selected to force the pin to zero, force the pin to one, toggle the pin, or ignore the
pin (used for software timing functions).
Timer/PWM Module (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
274 Freescale Semiconductor
Edge-aligned PWM mode
The value of a 16-bit modulo register plus 1 sets the period of the PWM output signal. The channel
value register sets the duty cycle of the PWM output signal. The user may also choose the polarity
of the PWM output signal. Interrupts are available at the end of the period and at the duty-cycle
transition point. This type of PWM signal is called edge-aligned because the leading edges of all
PWM signals are aligned with the beginning of the period, which is the same for all channels within
a TPM.
Center-aligned PWM mode
Twice the value of a 16-bit modulo register sets the period of the PWM output, and the
channel-value register sets the half-duty-cycle duration. The timer counter counts up until it
reaches the modulo value and then counts down until it reaches zero. As the count matches the
channel value register while counting down, the PWM output becomes active. When the count
matches the channel value register while counting up, the PWM output becomes inactive. This type
of PWM signal is called center-aligned because the centers of the active duty cycle periods for all
channels are aligned with a count value of zero. This type of PWM is required for types of motors
used in small appliances.
This is a high-level description only. Detailed descriptions of operating modes are in later sections.
16.1.3 Block Diagram
The TPM uses one input/output (I/O) pin per channel, TPMxCHn (timer channel n) where n is the channel
number (1-8). The TPM shares its I/O pins with general purpose I/O port pins (refer to I/O pin descriptions
in full-chip specification for the specific chip implementation).
Figure 16-2 shows the TPM structure. The central component of the TPM is the 16-bit counter that can
operate as a free-running counter or a modulo up/down counter. The TPM counter (when operating in
normal up-counting mode) provides the timing reference for the input capture, output compare, and
edge-aligned PWM functions. The timer counter modulo registers, TPMxMODH:TPMxMODL, control
the modulo value of the counter (the values 0x0000 or 0xFFFF effectively make the counter free running).
Software can read the counter value at any time without affecting the counting sequence. Any write to
either half of the TPMxCNT counter resets the counter, regardless of the data value written.
Timer/PWM Module (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 275
Figure 16-2. TPM Block Diagram
PRESCALE AND SELECT
16-BIT COMPARATOR
PS2:PS1:PS0
TOF
TOIE
INTER-
16-BIT COUNTER
RUPT
LOGIC
16-BIT COMPARATOR
16-BIT LATCH
ELS0B ELS0A
PORT CHANNEL 0
CH0IE
CH0F
LOGIC
INTER-
RUPT
LOGIC
CPWMS
MS0B MS0A
COUNTER RESET
CLKSB:CLKSA
1, 2, 4, 8, 16, 32, 64,
BUS CLOCK
FIXED SYSTEM CLOCK
EXTERNAL CLOCK
SYNC
16-BIT COMPARATOR
16-BIT LATCH
CHANNEL 1
ELS1B ELS1A
CH1IE
CH1F
I
N
T
E
R
N
A
L
B
U
S
PORT
LOGIC
INTER-
RUPT
LOGIC
MS1B MS1A
16-BIT COMPARATOR
16-BIT LATCH
CHANNEL 7
ELS7B ELS7A
CH7IE
CH7F
PORT
LOGIC
INTER-
RUPT
LOGIC
MS7B MS7A
Up to 8 channels
CLOCK SOURCE
SELECT
OFF, BUS, FIXED
SYSTEM CLOCK, EXT
or 128
TPMxMODH:TPMxMODL
TPMxC0VH:TPMxC0VL
TPMxC1VH:TPMxC1VL
TPMxCH0
TPMxCH1
TPMxC7VH:TPMxC7VL
TPMxCH7
Timer/PWM Module (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
276 Freescale Semiconductor
The TPM channels are programmable independently as input capture, output compare, or edge-aligned
PWM channels. Alternately, the TPM can be configured to produce CPWM outputs on all channels. When
the TPM is configured for CPWMs, the counter operates as an up/down counter; input capture, output
compare, and EPWM functions are not practical.
If a channel is configured as input capture, an internal pullup device may be enabled for that channel. The
details of how a module interacts with pin controls depends upon the chip implementation because the I/O
pins and associated general purpose I/O controls are not part of the module. Refer to the discussion of the
I/O port logic in a full-chip specification.
Because center-aligned PWMs are usually used to drive 3-phase AC-induction motors and brushless DC
motors, they are typically used in sets of three or six channels.
16.2 Signal Description
Table 16-1 shows the user-accessible signals for the TPM. The number of channels may be varied from
one to eight. When an external clock is included, it can be shared with the same pin as any TPM channel;
however, it could be connected to a separate input pin. Refer to the I/O pin descriptions in full-chip
specification for the specific chip implementation.
Refer to documentation for the full-chip for details about reset states, port connections, and whether there
is any pullup device on these pins.
TPM channel pins can be associated with general purpose I/O pins and have passive pullup devices which
can be enabled with a control bit when the TPM or general purpose I/O controls have configured the
associated pin as an input. When no TPM function is enabled to use a corresponding pin, the pin reverts
to being controlled by general purpose I/O controls, including the port-data and data-direction registers.
Immediately after reset, no TPM functions are enabled, so all associated pins revert to general purpose I/O
control.
16.2.1 Detailed Signal Descriptions
This section describes each user-accessible pin signal in detail. Although Table 16-1 grouped all channel
pins together, any TPM pin can be shared with the external clock source signal. Since I/O pin logic is not
part of the TPM, refer to full-chip documentation for a specific derivative for more details about the
interaction of TPM pin functions and general purpose I/O controls including port data, data direction, and
pullup controls.
Table 16-1. Signal Properties
Name Function
EXTCLK
1
1
When preset, this signal can share any channel pin; however depending upon full-chip
implementation, this signal could be connected to a separate external pin.
External clock source which may be selected to drive the TPM counter.
TPMxCHn
2
2
n=channel number (1 to 8)
I/O pin associated with TPM channel n
Timer/PWM Module (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 277
16.2.1.1 EXTCLK External Clock Source
Control bits in the timer status and control register allow the user to select nothing (timer disable), the
bus-rate clock (the normal default source), a crystal-related clock, or an external clock as the clock which
drives the TPM prescaler and subsequently the 16-bit TPM counter. The external clock source is
synchronized in the TPM. The bus clock clocks the synchronizer; the frequency of the external source must
be no more than one-fourth the frequency of the bus-rate clock, to meet Nyquist criteria and allowing for
jitter.
The external clock signal shares the same pin as a channel I/O pin, so the channel pin will not be usable
for channel I/O function when selected as the external clock source. It is the users responsibility to avoid
such settings. If this pin is used as an external clock source (CLKSB:CLKSA = 1:1), the channel can still
be used in output compare mode as a software timer (ELSnB:ELSnA = 0:0).
16.2.1.2 TPMxCHn TPM Channel n I/O Pin(s)
Each TPM channel is associated with an I/O pin on the MCU. The function of this pin depends on the
channel configuration. The TPM pins share with general purpose I/O pins, where each pin has a port data
register bit, and a data direction control bit, and the port has optional passive pullups which may be enabled
whenever a port pin is acting as an input.
The TPM channel does not control the I/O pin when (ELSnB:ELSnA = 0:0) or when (CLKSB:CLKSA =
0:0) so it normally reverts to general purpose I/O control. When CPWMS = 1 (and ELSnB:ELSnA not =
0:0), all channels within the TPM are configured for center-aligned PWM and the TPMxCHn pins are all
controlled by the TPM system. When CPWMS=0, the MSnB:MSnA control bits determine whether the
channel is configured for input capture, output compare, or edge-aligned PWM.
When a channel is configured for input capture (CPWMS=0, MSnB:MSnA = 0:0 and ELSnB:ELSnA not
= 0:0), the TPMxCHn pin is forced to act as an edge-sensitive input to the TPM. ELSnB:ELSnA control
bits determine what polarity edge or edges will trigger input-capture events. A synchronizer based on the
bus clock is used to synchronize input edges to the bus clock. This implies the minimum pulse widththat
can be reliably detectedon an input capture pin is four bus clock periods (with ideal clock pulses as near
as two bus clocks can be detected). TPM uses this pin as an input capture input to override the port data
and data direction controls for the same pin.
When a channel is configured for output compare (CPWMS=0, MSnB:MSnA = 0:1 and ELSnB:ELSnA
not = 0:0), the associated data direction control is overridden, the TPMxCHn pin is considered an output
controlled by the TPM, and the ELSnB:ELSnA control bits determine how the pin is controlled. The
remaining three combinations of ELSnB:ELSnA determine whether the TPMxCHn pin is toggled, cleared,
or set each time the 16-bit channel value register matches the timer counter.
When the output compare toggle mode is initially selected, the previous value on the pin is driven out until
the next output compare eventthen the pin is toggled.
Timer/PWM Module (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
278 Freescale Semiconductor
When a channel is configured for edge-aligned PWM (CPWMS=0, MSnB=1 and ELSnB:ELSnA not =
0:0), the data direction is overridden, the TPMxCHn pin is forced to be an output controlled by the TPM,
and ELSnA controls the polarity of the PWM output signal on the pin. When ELSnB:ELSnA=1:0, the
TPMxCHn pin is forced high at the start of each new period (TPMxCNT=0x0000), and the pin is forced
low when the channel value register matches the timer counter. When ELSnA=1, the TPMxCHn pin is
forced low at the start of each new period (TPMxCNT=0x0000), and the pin is forced high when the
channel value register matches the timer counter.
Figure 16-3. High-True Pulse of an Edge-Aligned PWM
Figure 16-4. Low-True Pulse of an Edge-Aligned PWM
CHnF BIT
TOF BIT
0 ... 1 2 3 4 5 6 7 8 0 1 2 ...
TPMxMODH:TPMxMODL = 0x0008
TPMxCnVH:TPMxCnVL = 0x0005
TPMxCNTH:TPMxCNTL
TPMxCHn
CHnF BIT
TOF BIT
0 ... 1 2 3 4 5 6 7 8 0 1 2 ...
TPMxMODH:TPMxMODL = 0x0008
TPMxCnVH:TPMxCnVL = 0x0005
TPMxCNTH:TPMxCNTL
TPMxCHn
Timer/PWM Module (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 279
When the TPM is configured for center-aligned PWM (and ELSnB:ELSnA not = 0:0), the data direction
for all channels in this TPM are overridden, the TPMxCHn pins are forced to be outputs controlled by the
TPM, and the ELSnA bits control the polarity of each TPMxCHn output. If ELSnB:ELSnA=1:0, the
corresponding TPMxCHn pin is cleared when the timer counter is counting up, and the channel value
register matches the timer counter; the TPMxCHn pin is set when the timer counter is counting down, and
the channel value register matches the timer counter. If ELSnA=1, the corresponding TPMxCHn pin is set
when the timer counter is counting up and the channel value register matches the timer counter; the
TPMxCHn pin is cleared when the timer counter is counting down and the channel value register matches
the timer counter.
Figure 16-5. High-True Pulse of a Center-Aligned PWM
Figure 16-6. Low-True Pulse of a Center-Aligned PWM
CHnF BIT
TOF BIT
... 7 8 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8 7 6 5 ...
TPMxMODH:TPMxMODL = 0x0008
TPMxCnVH:TPMxCnVL = 0x0005
TPMxCNTH:TPMxCNTL
TPMxCHn
CHnF BIT
TOF BIT
... 7 8 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8 7 6 5 ...
TPMxMODH:TPMxMODL = 0x0008
TPMxCnVH:TPMxCnVL = 0x0005
TPMxCNTH:TPMxCNTL
TPMxCHn
Timer/PWM Module (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
280 Freescale Semiconductor
16.3 Register Definition
This section consists of register descriptions in address order. A typical MCU system may contain multiple
TPMs, and each TPM may have one to eight channels, so register names include placeholder characters to
identify which TPM and which channel is being referenced. For example, TPMxCnSC refers to timer
(TPM) x, channel n. TPM1C2SC would be the status and control register for channel 2 of timer 1.
16.3.1 TPM Status and Control Register (TPMxSC)
TPMxSC contains the overflow status flag and control bits used to configure the interrupt enable, TPM
configuration, clock source, and prescale factor. These controls relate to all channels within this timer
module.
7 6 5 4 3 2 1 0
R TOF
TOIE CPWMS CLKSB CLKSA PS2 PS1 PS0
W 0
Reset 0 0 0 0 0 0 0 0
Figure 16-7. TPM Status and Control Register (TPMxSC)
Table 16-2. TPMxSC Field Descriptions
Field Description
7
TOF
Timer overflow flag. This read/write flag is set when the TPM counter resets to 0x0000 after reaching the modulo
value programmed in the TPM counter modulo registers. Clear TOF by reading the TPM status and control
register when TOF is set and then writing a logic 0 to TOF. If another TPM overflow occurs before the clearing
sequence is complete, the sequence is reset so TOF would remain set after the clear sequence was completed
for the earlier TOF. This is done so a TOF interrupt request cannot be lost during the clearing sequence for a
previous TOF. Reset clears TOF. Writing a logic 1 to TOF has no effect.
0 TPM counter has not reached modulo value or overflow
1 TPM counter has overflowed
6
TOIE
Timer overflow interrupt enable. This read/write bit enables TPM overflow interrupts. If TOIE is set, an interrupt is
generated when TOF equals one. Reset clears TOIE.
0 TOF interrupts inhibited (use for software polling)
1 TOF interrupts enabled
5
CPWMS
Center-aligned PWM select. When present, this read/write bit selects CPWM operating mode. By default, the TPM
operates in up-counting mode for input capture, output compare, and edge-aligned PWM functions. Setting
CPWMS reconfigures the TPM to operate in up/down counting mode for CPWM functions. Reset clears CPWMS.
0 All channels operate as input capture, output compare, or edge-aligned PWM mode as selected by the
MSnB:MSnA control bits in each channels status and control register.
1 All channels operate in center-aligned PWM mode.
Timer/PWM Module (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 281
16.3.2 TPM-Counter Registers (TPMxCNTH:TPMxCNTL)
The two read-only TPM counter registers contain the high and low bytes of the value in the TPM counter.
Reading either byte (TPMxCNTH or TPMxCNTL) latches the contents of both bytes into a buffer where
they remain latched until the other half is read. This allows coherent 16-bit reads in either big-endian or
little-endian order which makes this more friendly to various compiler implementations. The coherency
mechanism is automatically restarted by an MCU reset or any write to the timer status/control register
(TPMxSC).
Reset clears the TPM counter registers. Writing any value to TPMxCNTH or TPMxCNTL also clears the
TPM counter (TPMxCNTH:TPMxCNTL) and resets the coherency mechanism, regardless of the data
involved in the write.
43
CLKS[B:A]
Clock source selects. As shown in Table 16-3, this 2-bit field is used to disable the TPM system or select one of
three clock sources to drive the counter prescaler. The fixed system clock source is only meaningful in systems
with a PLL-based system clock. When there is no PLL, the fixed-system clock source is the same as the bus rate
clock. The external source is synchronized to the bus clock by TPM module, and the fixed system clock source
(when a PLL is present) is synchronized to the bus clock by an on-chip synchronization circuit. When a PLL is
present but not enabled, the fixed-system clock source is the same as the bus-rate clock.
20
PS[2:0]
Prescale factor select. This 3-bit field selects one of 8 division factors for the TPM clock input as shown in
Table 16-4. This prescaler is located after any clock source synchronization or clock source selection so it affects
the clock source selected to drive the TPM system. The new prescale factor will affect the clock source on the
next system clock cycle after the new value is updated into the register bits.
Table 16-3. TPM-Clock-Source Selection
CLKSB:CLKSA TPM Clock Source to Prescaler Input
00 No clock selected (TPM counter disable)
01 Bus rate clock
10 Fixed system clock
11 External source
Table 16-4. Prescale Factor Selection
PS2:PS1:PS0 TPM Clock Source Divided-by
000 1
001 2
010 4
011 8
100 16
101 32
110 64
111 128
Table 16-2. TPMxSC Field Descriptions (continued)
Field Description
Timer/PWM Module (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
282 Freescale Semiconductor
When BDM is active, the timer counter is frozen (this is the value that will be read by user); the coherency
mechanism is frozen such that the buffer latches remain in the state they were in when the BDM became
active, even if one or both counter halves are read while BDM is active. This assures that if the user was
in the middle of reading a 16-bit register when BDM became active, it will read the appropriate value from
the other half of the 16-bit value after returning to normal execution.
In BDM mode, writing any value to TPMxSC, TPMxCNTH or TPMxCNTL registers resets the read
coherency mechanism of the TPMxCNTH:L registers, regardless of the data involved in the write.
16.3.3 TPM Counter Modulo Registers (TPMxMODH:TPMxMODL)
The read/write TPM modulo registers contain the modulo value for the TPM counter. After the TPM
counter reaches the modulo value, the TPM counter resumes counting from 0x0000 at the next clock, and
the overflow flag (TOF) becomes set. Writing to TPMxMODH or TPMxMODL inhibits the TOF bit and
overflow interrupts until the other byte is written. Reset sets the TPM counter modulo registers to 0x0000
which results in a free running timer counter (modulo disabled).
Writing to either byte (TPMxMODH or TPMxMODL) latches the value into a buffer and the registers are
updated with the value of their write buffer according to the value of CLKSB:CLKSA bits, so:
If (CLKSB:CLKSA = 0:0), then the registers are updated when the second byte is written
If (CLKSB:CLKSA not = 0:0), then the registers are updated after both bytes were written, and the
TPM counter changes from (TPMxMODH:TPMxMODL - 1) to (TPMxMODH:TPMxMODL). If
the TPM counter is a free-running counter, the update is made when the TPM counter changes from
0xFFFE to 0xFFFF
The latching mechanism may be manually reset by writing to the TPMxSC address (whether BDM is
active or not).
When BDM is active, the coherency mechanism is frozen (unless reset by writing to TPMxSC register)
such that the buffer latches remain in the state they were in when the BDM became active, even if one or
both halves of the modulo register are written while BDM is active. Any write to the modulo registers
bypasses the buffer latches and directly writes to the modulo register while BDM is active.
7 6 5 4 3 2 1 0
R Bit 15 14 13 12 11 10 9 Bit 8
W Any write to TPMxCNTH clears the 16-bit counter
Reset 0 0 0 0 0 0 0 0
Figure 16-8. TPM Counter Register High (TPMxCNTH)
7 6 5 4 3 2 1 0
R Bit 7 6 5 4 3 2 1 Bit 0
W Any write to TPMxCNTL clears the 16-bit counter
Reset 0 0 0 0 0 0 0 0
Figure 16-9. TPM Counter Register Low (TPMxCNTL)
Timer/PWM Module (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 283
Reset the TPM counter before writing to the TPM modulo registers to avoid confusion about when the first
counter overflow will occur.
16.3.4 TPM Channel n Status and Control Register (TPMxCnSC)
TPMxCnSC contains the channel-interrupt-status flag and control bits used to configure the interrupt
enable, channel configuration, and pin function.
7 6 5 4 3 2 1 0
R
Bit 15 14 13 12 11 10 9 Bit 8
W
Reset 0 0 0 0 0 0 0 0
Figure 16-10. TPM Counter Modulo Register High (TPMxMODH)
7 6 5 4 3 2 1 0
R
Bit 7 6 5 4 3 2 1 Bit 0
W
Reset 0 0 0 0 0 0 0 0
Figure 16-11. TPM Counter Modulo Register Low (TPMxMODL)
7 6 5 4 3 2 1 0
R CHnF
CHnIE MSnB MSnA ELSnB ELSnA
0 0
W 0
Reset 0 0 0 0 0 0 0 0
= Unimplemented or Reserved
Figure 16-12. TPM Channel n Status and Control Register (TPMxCnSC)
Timer/PWM Module (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
284 Freescale Semiconductor
Table 16-5. TPMxCnSC Field Descriptions
Field Description
7
CHnF
Channel n flag. When channel n is an input-capture channel, this read/write bit is set when an active edge occurs
on the channel n pin. When channel n is an output compare or edge-aligned/center-aligned PWM channel, CHnF
is set when the value in the TPM counter registers matches the value in the TPM channel n value registers. When
channel n is an edge-aligned/center-aligned PWM channel and the duty cycle is set to 0% or 100%, CHnF will not
be set even when the value in the TPM counter registers matches the value in the TPM channel n value registers.
A corresponding interrupt is requested when CHnF is set and interrupts are enabled (CHnIE = 1). Clear CHnF by
reading TPMxCnSC while CHnF is set and then writing a logic 0 to CHnF. If another interrupt request occurs
before the clearing sequence is complete, the sequence is reset so CHnF remains set after the clear sequence
completed for the earlier CHnF. This is done so a CHnF interrupt request cannot be lost due to clearing a previous
CHnF.
Reset clears the CHnF bit. Writing a logic 1 to CHnF has no effect.
0 No input capture or output compare event occurred on channel n
1 Input capture or output compare event on channel n
6
CHnIE
Channel n interrupt enable. This read/write bit enables interrupts from channel n. Reset clears CHnIE.
0 Channel n interrupt requests disabled (use for software polling)
1 Channel n interrupt requests enabled
5
MSnB
Mode select B for TPM channel n. When CPWMS=0, MSnB=1 configures TPM channel n for edge-aligned PWM
mode. Refer to the summary of channel mode and setup controls in Table 16-6.
4
MSnA
Mode select A for TPM channel n. When CPWMS=0 and MSnB=0, MSnA configures TPM channel n for
input-capture mode or output compare mode. Refer to Table 16-6 for a summary of channel mode and setup
controls.
Note: If the associated port pin is not stable for at least two bus clock cycles before changing to input capture
mode, it is possible to get an unexpected indication of an edge trigger.
32
ELSnB
ELSnA
Edge/level select bits. Depending upon the operating mode for the timer channel as set by CPWMS:MSnB:MSnA
and shown in Table 16-6, these bits select the polarity of the input edge that triggers an input capture event, select
the level that will be driven in response to an output compare match, or select the polarity of the PWM output.
Setting ELSnB:ELSnA to 0:0 configures the related timer pin as a general purpose I/O pin not related to any timer
functions. This function is typically used to temporarily disable an input capture channel or to make the timer pin
available as a general purpose I/O pin when the associated timer channel is set up as a software timer that does
not require the use of a pin.
Timer/PWM Module (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 285
16.3.5 TPM Channel Value Registers (TPMxCnVH:TPMxCnVL)
These read/write registers contain the captured TPM counter value of the input capture function or the
output compare value for the output compare or PWM functions. The channel registers are cleared by
reset.
Table 16-6. Mode, Edge, and Level Selection
CPWMS MSnB:MSnA ELSnB:ELSnA Mode Configuration
X XX 00 Pin not used for TPM - revert to general
purpose I/O or other peripheral control
0 00 01 Input capture Capture on rising edge
only
10 Capture on falling edge
only
11 Capture on rising or
falling edge
01 01 Output compare Toggle output on
compare
10 Clear output on
compare
11 Set output on compare
1X 10 Edge-aligned
PWM
High-true pulses (clear
output on compare)
X1 Low-true pulses (set
output on compare)
1 XX 10 Center-aligned
PWM
High-true pulses (clear
output on compare-up)
X1 Low-true pulses (set
output on compare-up)
7 6 5 4 3 2 1 0
R
Bit 15 14 13 12 11 10 9 Bit 8
W
Reset 0 0 0 0 0 0 0 0
Figure 16-13. TPM Channel Value Register High (TPMxCnVH)
7 6 5 4 3 2 1 0
R
Bit 7 6 5 4 3 2 1 Bit 0
W
Reset 0 0 0 0 0 0 0 0
Figure 16-14. TPM Channel Value Register Low (TPMxCnVL)
Timer/PWM Module (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
286 Freescale Semiconductor
In input capture mode, reading either byte (TPMxCnVH or TPMxCnVL) latches the contents of both bytes
into a buffer where they remain latched until the other half is read. This latching mechanism also resets
(becomes unlatched) when the TPMxCnSC register is written (whether BDM mode is active or not). Any
write to the channel registers will be ignored during the input capture mode.
When BDM is active, the coherency mechanism is frozen (unless reset by writing to TPMxCnSC register)
such that the buffer latches remain in the state they were in when the BDM became active, even if one or
both halves of the channel register are read while BDM is active. This assures that if the user was in the
middle of reading a 16-bit register when BDM became active, it will read the appropriate value from the
other half of the 16-bit value after returning to normal execution. The value read from the TPMxCnVH
and TPMxCnVL registers in BDM mode is the value of these registers and not the value of their read
buffer.
In output compare or PWM modes, writing to either byte (TPMxCnVH or TPMxCnVL) latches the value
into a buffer. After both bytes are written, they are transferred as a coherent 16-bit value into the
timer-channel registers according to the value of CLKSB:CLKSA bits and the selected mode, so:
If (CLKSB:CLKSA = 0:0), then the registers are updated when the second byte is written.
If (CLKSB:CLKSA not = 0:0 and in output compare mode) then the registers are updated after the
second byte is written and on the next change of the TPM counter (end of the prescaler counting).
If (CLKSB:CLKSA not = 0:0 and in EPWM or CPWM modes), then the registers are updated after
the both bytes were written, and the TPM counter changes from (TPMxMODH:TPMxMODL - 1)
to (TPMxMODH:TPMxMODL). If the TPM counter is a free-running counter then the update is
made when the TPM counter changes from 0xFFFE to 0xFFFF.
The latching mechanism may be manually reset by writing to the TPMxCnSC register (whether BDM
mode is active or not). This latching mechanism allows coherent 16-bit writes in either big-endian or
little-endian order which is friendly to various compiler implementations.
When BDM is active, the coherency mechanism is frozen such that the buffer latches remain in the state
they were in when the BDM became active even if one or both halves of the channel register are written
while BDM is active. Any write to the channel registers bypasses the buffer latches and directly write to
the channel register while BDM is active. The values written to the channel register while BDM is active
are used for PWM & output compare operation once normal execution resumes. Writes to the channel
registers while BDM is active do not interfere with partial completion of a coherency sequence. After the
coherency mechanism has been fully exercised, the channel registers are updated using the buffered values
written (while BDM was not active) by the user.
16.4 Functional Description
All TPM functions are associated with a central 16-bit counter which allows flexible selection of the clock
source and prescale factor. There is also a 16-bit modulo register associated with the main counter.
The CPWMS control bit chooses between center-aligned PWM operation for all channels in the TPM
(CPWMS=1) or general purpose timing functions (CPWMS=0) where each channel can independently be
configured to operate in input capture, output compare, or edge-aligned PWM mode. The CPWMS control
bit is located in the main TPM status and control register because it affects all channels within the TPM
Timer/PWM Module (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 287
and influences the way the main counter operates. (In CPWM mode, the counter changes to an up/down
mode rather than the up-counting mode used for general purpose timer functions.)
The following sections describe the main counter and each of the timer operating modes (input capture,
output compare, edge-aligned PWM, and center-aligned PWM). Because details of pin operation and
interrupt activity depend upon the operating mode, these topics will be covered in the associated mode
explanation sections.
16.4.1 Counter
All timer functions are based on the main 16-bit counter (TPMxCNTH:TPMxCNTL). This section
discusses selection of the clock source, end-of-count overflow, up-counting vs. up/down counting, and
manual counter reset.
16.4.1.1 Counter Clock Source
The 2-bit field, CLKSB:CLKSA, in the timer status and control register (TPMxSC) selects one of three
possible clock sources or OFF (which effectively disables the TPM). See Table 16-3. After any MCU reset,
CLKSB:CLKSA=0:0 so no clock source is selected, and the TPM is in a very low power state. These
control bits may be read or written at any time and disabling the timer (writing 00 to the CLKSB:CLKSA
field) does not affect the values in the counter or other timer registers.
The bus rate clock is the main system bus clock for the MCU. This clock source requires no
synchronization because it is the clock that is used for all internal MCU activities including operation of
the CPU and buses.
In MCUs that have no PLL or the PLL is not engaged, the fixed system clock source is the same as the
bus-rate-clock source, and it does not go through a synchronizer. When a PLL is present and engaged, a
synchronizer is required between the crystal divided-by two clock source and the timer counter so counter
transitions will be properly aligned to bus-clock transitions. A synchronizer will be used at chip level to
synchronize the crystal-related source clock to the bus clock.
The external clock source may be connected to any TPM channel pin. This clock source always has to pass
through a synchronizer to assure that counter transitions are properly aligned to bus clock transitions. The
bus-rate clock drives the synchronizer; therefore, to meet Nyquist criteria even with jitter, the frequency
of the external clock source must not be faster than the bus rate divided-by four. With ideal clocks the
external clock can be as fast as bus clock divided by four.
Table 16-7. TPM Clock Source Selection
CLKSB:CLKSA TPM Clock Source to Prescaler Input
00 No clock selected (TPM counter disabled)
01 Bus rate clock
10 Fixed system clock
11 External source
Timer/PWM Module (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
288 Freescale Semiconductor
When the external clock source shares the TPM channel pin, this pin should not be used for other channel
timing functions. For example, it would be ambiguous to configure channel 0 for input capture when the
TPM channel 0 pin was also being used as the timer external clock source. (It is the users responsibility
to avoid such settings.) The TPM channel could still be used in output compare mode for software timing
functions (pin controls set not to affect the TPM channel pin).
16.4.1.2 Counter Overflow and Modulo Reset
An interrupt flag and enable are associated with the 16-bit main counter. The flag (TOF) is a
software-accessible indication that the timer counter has overflowed. The enable signal selects between
software polling (TOIE=0) where no hardware interrupt is generated, or interrupt-driven operation
(TOIE=1) where a static hardware interrupt is generated whenever the TOF flag is equal to one.
The conditions causing TOF to become set depend on whether the TPM is configured for center-aligned
PWM (CPWMS=1). In the simplest mode, there is no modulus limit and the TPM is not in CPWMS=1
mode. In this case, the 16-bit timer counter counts from 0x0000 through 0xFFFF and overflows to 0x0000
on the next counting clock. TOF becomes set at the transition from 0xFFFF to 0x0000. When a modulus
limit is set, TOF becomes set at the transition from the value set in the modulus register to 0x0000. When
the TPM is in center-aligned PWM mode (CPWMS=1), the TOF flag gets set as the counter changes
direction at the end of the count value set in the modulus register (that is, at the transition from the value
set in the modulus register to the next lower count value). This corresponds to the end of a PWM period
(the 0x0000 count value corresponds to the center of a period).
16.4.1.3 Counting Modes
The main timer counter has two counting modes. When center-aligned PWM is selected (CPWMS=1), the
counter operates in up/down counting mode. Otherwise, the counter operates as a simple up counter. As
an up counter, the timer counter counts from 0x0000 through its terminal count and then continues with
0x0000. The terminal count is 0xFFFF or a modulus value in TPMxMODH:TPMxMODL.
When center-aligned PWM operation is specified, the counter counts up from 0x0000 through its terminal
count and then down to 0x0000 where it changes back to up counting. Both 0x0000 and the terminal count
value are normal length counts (one timer clock period long). In this mode, the timer overflow flag (TOF)
becomes set at the end of the terminal-count period (as the count changes to the next lower count value).
16.4.1.4 Manual Counter Reset
The main timer counter can be manually reset at any time by writing any value to either half of
TPMxCNTH or TPMxCNTL. Resetting the counter in this manner also resets the coherency mechanism
in case only half of the counter was read before resetting the count.
16.4.2 Channel Mode Selection
Provided CPWMS=0, the MSnB and MSnA control bits in the channel n status and control registers
determine the basic mode of operation for the corresponding channel. Choices include input capture,
output compare, and edge-aligned PWM.
Timer/PWM Module (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 289
16.4.2.1 Input Capture Mode
With the input-capture function, the TPM can capture the time at which an external event occurs. When
an active edge occurs on the pin of an input-capture channel, the TPM latches the contents of the TPM
counter into the channel-value registers (TPMxCnVH:TPMxCnVL). Rising edges, falling edges, or any
edge may be chosen as the active edge that triggers an input capture.
In input capture mode, the TPMxCnVH and TPMxCnVL registers are read only.
When either half of the 16-bit capture register is read, the other half is latched into a buffer to support
coherent 16-bit accesses in big-endian or little-endian order. The coherency sequence can be manually
reset by writing to the channel status/control register (TPMxCnSC).
An input capture event sets a flag bit (CHnF) which may optionally generate a CPU interrupt request.
While in BDM, the input capture function works as configured by the user. When an external event occurs,
the TPM latches the contents of the TPM counter (which is frozen because of the BDM mode) into the
channel value registers and sets the flag bit.
16.4.2.2 Output Compare Mode
With the output-compare function, the TPM can generate timed pulses with programmable position,
polarity, duration, and frequency. When the counter reaches the value in the channel-value registers of an
output-compare channel, the TPM can set, clear, or toggle the channel pin.
In output compare mode, values are transferred to the corresponding timer channel registers only after both
8-bit halves of a 16-bit register have been written and according to the value of CLKSB:CLKSA bits, so:
If (CLKSB:CLKSA = 0:0), the registers are updated when the second byte is written
If (CLKSB:CLKSA not = 0:0), the registers are updated at the next change of the TPM counter
(end of the prescaler counting) after the second byte is written.
The coherency sequence can be manually reset by writing to the channel status/control register
(TPMxCnSC).
An output compare event sets a flag bit (CHnF) which may optionally generate a CPU-interrupt request.
16.4.2.3 Edge-Aligned PWM Mode
This type of PWM output uses the normal up-counting mode of the timer counter (CPWMS=0) and can
be used when other channels in the same TPM are configured for input capture or output compare
functions. The period of this PWM signal is determined by the value of the modulus register
(TPMxMODH:TPMxMODL) plus 1. The duty cycle is determined by the setting in the timer channel
register (TPMxCnVH:TPMxCnVL). The polarity of this PWM signal is determined by the setting in the
ELSnA control bit. 0% and 100% duty cycle cases are possible.
The output compare value in the TPM channel registers determines the pulse width (duty cycle) of the
PWM signal (Figure 16-15). The time between the modulus overflow and the output compare is the pulse
width. If ELSnA=0, the counter overflow forces the PWM signal high, and the output compare forces the
PWM signal low. If ELSnA=1, the counter overflow forces the PWM signal low, and the output compare
forces the PWM signal high.
Timer/PWM Module (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
290 Freescale Semiconductor
Figure 16-15. PWM Period and Pulse Width (ELSnA=0)
When the channel value register is set to 0x0000, the duty cycle is 0%. 100% duty cycle can be achieved
by setting the timer-channel register (TPMxCnVH:TPMxCnVL) to a value greater than the modulus
setting. This implies that the modulus setting must be less than 0xFFFF in order to get 100% duty cycle.
Because the TPM may be used in an 8-bit MCU, the settings in the timer channel registers are buffered to
ensure coherent 16-bit updates and to avoid unexpected PWM pulse widths. Writes to any of the registers
TPMxCnVH and TPMxCnVL, actually write to buffer registers. In edge-aligned PWM mode, values are
transferred to the corresponding timer-channel registers according to the value of CLKSB:CLKSA bits, so:
If (CLKSB:CLKSA = 0:0), the registers are updated when the second byte is written
If (CLKSB:CLKSA not = 0:0), the registers are updated after the both bytes were written, and the
TPM counter changes from (TPMxMODH:TPMxMODL - 1) to (TPMxMODH:TPMxMODL). If
the TPM counter is a free-running counter then the update is made when the TPM counter changes
from 0xFFFE to 0xFFFF.
16.4.2.4 Center-Aligned PWM Mode
This type of PWM output uses the up/down counting mode of the timer counter (CPWMS=1). The output
compare value in TPMxCnVH:TPMxCnVL determines the pulse width (duty cycle) of the PWM signal
while the period is determined by the value in TPMxMODH:TPMxMODL. TPMxMODH:TPMxMODL
should be kept in the range of 0x0001 to 0x7FFF because values outside this range can produce ambiguous
results. ELSnA will determine the polarity of the CPWM output.
pulse width = 2 x (TPMxCnVH:TPMxCnVL)
period = 2 x (TPMxMODH:TPMxMODL); TPMxMODH:TPMxMODL=0x0001-0x7FFF
If the channel-value register TPMxCnVH:TPMxCnVL is zero or negative (bit 15 set), the duty cycle will
be 0%. If TPMxCnVH:TPMxCnVL is a positive value (bit 15 clear) and is greater than the (non-zero)
modulus setting, the duty cycle will be 100% because the duty cycle compare will never occur. This
implies the usable range of periods set by the modulus register is 0x0001 through 0x7FFE (0x7FFF if you
do not need to generate 100% duty cycle). This is not a significant limitation. The resulting period would
be much longer than required for normal applications.
TPMxMODH:TPMxMODL=0x0000 is a special case that should not be used with center-aligned PWM
mode. When CPWMS=0, this case corresponds to the counter running free from 0x0000 through 0xFFFF,
but when CPWMS=1 the counter needs a valid match to the modulus register somewhere other than at
0x0000 in order to change directions from up-counting to down-counting.
PERIOD
PULSE
WIDTH
OVERFLOW OVERFLOW OVERFLOW
OUTPUT
COMPARE
OUTPUT
COMPARE
OUTPUT
COMPARE
TPMxCHn
Timer/PWM Module (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 291
The output compare value in the TPM channel registers (times 2) determines the pulse width (duty cycle)
of the CPWM signal (Figure 16-16). If ELSnA=0, a compare occurred while counting up forces the
CPWM output signal low and a compare occurred while counting down forces the output high. The
counter counts up until it reaches the modulo setting in TPMxMODH:TPMxMODL, then counts down
until it reaches zero. This sets the period equal to two times TPMxMODH:TPMxMODL.
Figure 16-16. CPWM Period and Pulse Width (ELSnA=0)
Center-aligned PWM outputs typically produce less noise than edge-aligned PWMs because fewer I/O pin
transitions are lined up at the same system clock edge. This type of PWM is also required for some types
of motor drives.
Input capture, output compare, and edge-aligned PWM functions do not make sense when the counter is
operating in up/down counting mode so this implies that all active channels within a TPM must be used in
CPWM mode when CPWMS=1.
The TPM may be used in an 8-bit MCU. The settings in the timer channel registers are buffered to ensure
coherent 16-bit updates and to avoid unexpected PWM pulse widths. Writes to any of the registers
TPMxMODH, TPMxMODL, TPMxCnVH, and TPMxCnVL, actually write to buffer registers.
In center-aligned PWM mode, the TPMxCnVH:L registers are updated with the value of their write buffer
according to the value of CLKSB:CLKSA bits, so:
If (CLKSB:CLKSA = 0:0), the registers are updated when the second byte is written
If (CLKSB:CLKSA not = 0:0), the registers are updated after the both bytes were written, and the
TPM counter changes from (TPMxMODH:TPMxMODL - 1) to (TPMxMODH:TPMxMODL). If
the TPM counter is a free-running counter, the update is made when the TPM counter changes from
0xFFFE to 0xFFFF.
When TPMxCNTH:TPMxCNTL=TPMxMODH:TPMxMODL, the TPM can optionally generate a TOF
interrupt (at the end of this count).
Writing to TPMxSC cancels any values written to TPMxMODH and/or TPMxMODL and resets the
coherency mechanism for the modulo registers. Writing to TPMxCnSC cancels any values written to the
channel value registers and resets the coherency mechanism for TPMxCnVH:TPMxCnVL.
PERIOD
PULSE WIDTH
COUNT=
COUNT= 0
COUNT=
OUTPUT
COMPARE
(COUNT DOWN)
OUTPUT
COMPARE
(COUNT UP)
TPMxCHn
2 x TPMxMODH:TPMxMODL
2 x TPMxCnVH:TPMxCnVL
TPMxMODH:TPMxMODL TPMxMODH:TPMxMODL
Timer/PWM Module (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
292 Freescale Semiconductor
16.5 Reset Overview
16.5.1 General
The TPM is reset whenever any MCU reset occurs.
16.5.2 Description of Reset Operation
Reset clears the TPMxSC register which disables clocks to the TPM and disables timer overflow interrupts
(TOIE=0). CPWMS, MSnB, MSnA, ELSnB, and ELSnA are all cleared which configures all TPM
channels for input-capture operation with the associated pins disconnected from I/O pin logic (so all MCU
pins related to the TPM revert to general purpose I/O pins).
16.6 Interrupts
16.6.1 General
The TPM generates an optional interrupt for the main counter overflow and an interrupt for each channel.
The meaning of channel interrupts depends on each channels mode of operation. If the channel is
configured for input capture, the interrupt flag is set each time the selected input capture edge is
recognized. If the channel is configured for output compare or PWM modes, the interrupt flag is set each
time the main timer counter matches the value in the 16-bit channel value register.
All TPM interrupts are listed in Table 16-8 which shows the interrupt name, the name of any local enable
that can block the interrupt request from leaving the TPM and getting recognized by the separate interrupt
processing logic.
The TPM module will provide a high-true interrupt signal. Vectors and priorities are determined at chip
integration time in the interrupt module so refer to the users guide for the interrupt module or to the chips
complete documentation for details.
16.6.2 Description of Interrupt Operation
For each interrupt source in the TPM, a flag bit is set upon recognition of the interrupt condition such as
timer overflow, channel-input capture, or output-compare events. This flag may be read (polled) by
software to determine that the action has occurred, or an associated enable bit (TOIE or CHnIE) can be set
Table 16-8. Interrupt Summary
Interrupt
Local
Enable
Source Description
TOF TOIE Counter overflow Set each time the timer counter reaches its terminal
count (at transition to next count value which is
usually 0x0000)
CHnF CHnIE Channel event An input capture or output compare event took
place on channel n
Timer/PWM Module (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 293
to enable hardware interrupt generation. While the interrupt enable bit is set, a static interrupt will generate
whenever the associated interrupt flag equals one. The users software must perform a sequence of steps
to clear the interrupt flag before returning from the interrupt-service routine.
TPM interrupt flags are cleared by a two-step process including a read of the flag bit while it is set (1)
followed by a write of zero (0) to the bit. If a new event is detected between these two steps, the sequence
is reset and the interrupt flag remains set after the second step to avoid the possibility of missing the new
event.
16.6.2.1 Timer Overflow Interrupt (TOF) Description
The meaning and details of operation for TOF interrupts varies slightly depending upon the mode of
operation of the TPM system (general purpose timing functions versus center-aligned PWM operation).
The flag is cleared by the two step sequence described above.
16.6.2.1.1 Normal Case
Normally TOF is set when the timer counter changes from 0xFFFF to 0x0000. When the TPM is not
configured for center-aligned PWM (CPWMS=0), TOF gets set when the timer counter changes from the
terminal count (the value in the modulo register) to 0x0000. This case corresponds to the normal meaning
of counter overflow.
16.6.2.1.2 Center-Aligned PWM Case
When CPWMS=1, TOF gets set when the timer counter changes direction from up-counting to
down-counting at the end of the terminal count (the value in the modulo register). In this case the TOF
corresponds to the end of a PWM period.
16.6.2.2 Channel Event Interrupt Description
The meaning of channel interrupts depends on the channels current mode (input-capture, output-compare,
edge-aligned PWM, or center-aligned PWM).
16.6.2.2.1 Input Capture Events
When a channel is configured as an input capture channel, the ELSnB:ELSnA control bits select no edge
(off), rising edges, falling edges or any edge as the edge which triggers an input capture event. When the
selected edge is detected, the interrupt flag is set. The flag is cleared by the two-step sequence described
in Section 16.6.2, Description of Interrupt Operation.
16.6.2.2.2 Output Compare Events
When a channel is configured as an output compare channel, the interrupt flag is set each time the main
timer counter matches the 16-bit value in the channel value register. The flag is cleared by the two-step
sequence described Section 16.6.2, Description of Interrupt Operation.
Timer/PWM Module (S08TPMV3)
MC9S08JM60 Series Data Sheet, Rev. 3
294 Freescale Semiconductor
16.6.2.2.3 PWM End-of-Duty-Cycle Events
For channels configured for PWM operation there are two possibilities. When the channel is configured
for edge-aligned PWM, the channel flag gets set when the timer counter matches the channel value register
which marks the end of the active duty cycle period. When the channel is configured for center-aligned
PWM, the timer count matches the channel value register twice during each PWM cycle. In this CPWM
case, the channel flag is set at the start and at the end of the active duty cycle period which are the times
when the timer counter matches the channel value register. The flag is cleared by the two-step sequence
described Section 16.6.2, Description of Interrupt Operation.
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 295
Chapter 17
Universal Serial Bus Device Controller (S08USBV1)
17.1 Introduction
This chapter describes an universal serial bus device controller (S08USBV1) module that is based on the
Universal Serial Bus Specification Rev 2.0. The USB bus is designed to replace existing bus interfaces
such as RS-232, PS/2, and IEEE 1284 for PC peripherals.
The S08USBV1 module provides a single-chip solution for full-speed (12 Mbps) USB device applications,
and integrates the required transceiver with Serial Interface Engine (SIE), 3.3 V regualtor, Endpoint RAM
and other control logics.
17.1.1 Clocking Requirements
The S08USBV1 requires two clock sources, the 24 MHz bus clock and a 48 MHz reference clock. The
48 MHz clock is sourced directly from MCGOUT. To achieve the 48 MHz clock rate, the MCG must be
configured properly for PLL engaged external (PEE) mode with an external crystal.
For USB operation, examples of MCG configuration using PEE mode include:
2 MHz crystal RDIV = 000 and VDIV = 0110
4 MHz crystal RDIV = 001 and VDIV = 0110
17.1.2 Current Consumption in USB Suspend
In USB suspend mode, the USB device current consumption is limited to 500 A. When the USB device
goes into suspend mode, the firmware typically enters stop3 to meet the USB suspend requirements on
current consumption.
NOTE
Enabling LVD increases current consumption in stop3. Consequently, when
trying to satisfy USB suspend requirements, disabling LVD before entering
stop3.
17.1.3 3.3 V Regulator
If using an external 3.3 V regulator as an input to V
USB33
(only when USBVREN = 0), the supply voltage,
V
DD
, must not fall below the input voltage at the V
USB33
pin. If using the internal 3.3 V regulator
(USBVREN = 1), do not connect an external supply to the V
USB33
pin. In this case, V
DD
must fall between
3.9 V and 5.5 V for the internal 3.3 V regulator to operate correctly.
Chapter 17 Universal Serial Bus Device Controller (S08USBV1)
MC9S08JM60 Series Data Sheet, Rev. 3
296 Freescale Semiconductor
Table 17-1. USBVREN Configuration
USBVREN 3.3-V Regulator VDD Supply Voltage Range
0 External 3.3-V Regulator (as input to V
USB33
pin) V
USB33
V
DD
Supply Voltage
1
Internal 3.3-V Regulator (no external supply connected to
V
USB33
pin)
3.9 V V
DD
Supply Voltage 5.5V
Chapter 17 Universal Serial Bus Device Controller (S08USBV1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 297
Figure 17-1. MC9S08JM60 Series Block Diagram Highlighting USB Blocks and Pins
PTD4/ADP11
PTD5
PTD6
PTC1/SDA
PTC0/SCL
V
SS
V
DD
PTE3/TPM1CH1
PTE2/TPM1CH0
PTA5 PTA0
PTE0/TxD1
PTE1/RxD1
PTD1/ADP9/ACMP
PTD0/ADP8/ACMP+
PTC6
PTC5/RxD2
PTC4
PTC3/TxD2
PTC2
P
O
R
T
A
P
O
R
T
C
P
O
R
T
D
P
O
R
T
E
8-BIT KEYBOARD
INTERRUPT MODULE (KBI)
IIC MODULE (IIC)
8-/16-BIT SERIAL PERIPHERAL
INTERFACE MODULE (SPI1)
USER Flash (IN BYTES)
USER RAM (IN BYTES)
On Chip ICE AND
DEBUG MODULE (DBG)
MC9S08JM60 = 60,912
HCS08 CORE
CPU BDC
NOTES:
1. Port pins are software configurable with pullup device if input port.
2. Pin contains software configurable pullup/pull-down device ifpullup IRQ is enabled
(IRQPE = 1). Pull-down is enabled if rising edge detect is selected (IRQEDG = 1)
3. IRQ does not have a clamp diode to V
DD
. IRQ must not be driven above V
DD
.
4. Pin contains integrated pullup device.
5. When pin functions as KBI (KBIPEn = 1) and associated pin is configured to enable the
pullup device, KBEDGn can be used to reconfigure the pullup as a pull-down device.
2-CHANNEL TIMER/PWM
MODULE (TPM2)
PTB5/KBIP5/ADP5
P
O
R
T
B
PTE5/MOSI1
PTE4/MISO1
PTE6/SPSCK1
PTE7/SS1
HCS08 SYSTEM CONTROL
RESETS AND INTERRUPTS
MODES OF OPERATION
POWER MANAGEMENT
VOLTAGE
REGULATOR
COP IRQ LVD
LOW-POWER OSCILLATOR
MULTI-PURPOSE CLOCK
GENERATOR (MCG)
RESET
V
SSAD
V
DDAD
V
REFH
ANALOG-TO-DIGITAL
CONVERTER (ADC)
6-CHANNEL TIMER/PWM
MODULE (TPM1)
PTD7
6
PTB4/KBIP4/ADP4
PTG3/KBIP7
PTG2/KBIP6
P
O
R
T
G
12-CHANNEL, 12-BIT
BKGD/MS
PTF3/TPM1CH5
PTF2/TPM1CH4
PTF0/TPM1CH2
PTF1/TPM1CH3
P
O
R
T
F
PTF5/TPM2CH1
PTF4/TPM2CH0
PTF6
PTF7
INTERFACE MODULE (SCI1)
SERIAL COMMUNICATIONS
INTERFACE MODULE (SCI2)
SERIAL COMMUNICATIONS
PTG0/KBIP0
PTG1/KBIP1
MC9S08JM32 = 32,768
V
REFL
PTG4/XTAL
PTG5/EXTAL
IRQ/TPMCLK
RxD2
TxD2
SDA
SCL
8
KBIPx
KBIPx
TPMCLK
SPSCK1
SS1
MISO1
MOSI1
TPMCLK
TPM1CH1
TPM1CH0
RxD1
TxD1
EXTAL
XTAL
4
4
USB SIE
USB ENDPOINT
RAM
FULL SPEED
USB
TRANSCEIVER
USBDP
USBDN
MISO2
SS2
SPSCK2
MOSI2
PTB1/MOSI2/ADP1
PTB0/MISO2/ADP0
PTB7/ADP7
PTB6/ADP6
8-/16-BIT SERIAL PERIPHERAL
INTERFACE MODULE (SPI2)
REAL-TIME COUNTER
(RTC)
PTB3/SS2/ADP3
PTB2/SPSCK2/ADP2
TPM1CHx
4
TPM2CH1
TPM2CH0
4
ANALOG COMPARATOR
(ACMP)
SYSTEM
USB 3.3 V VOLTAGE REGULATOR
V
USB33
MC9S08JM60 = 4096
MC9S08JM32 = 2048
ACMPO
ACMP+
ACMP
PTD3/KBIP3/ADP10
PTD2/KBIP2/ACMPO
V
SSOSC
Universal Serial Bus Device Controller (S08USBV1)
MC9S08JM60 Series Data Sheet, Rev. 3
298 Freescale Semiconductor
17.1.4 Features
Features of the USB module include:
USB 2.0 compliant
12 Mbps full-speed (FS) data rate
USB data control logic:
Packet identification and decoding/generation
CRC generation and checking
NRZI (non-return-to-zero inverted) encoding/decoding
Bit-stuffing
Sync detection
End-of-packet detection
Seven USB endpoints
Bidirectional endpoint 0
Six unidirectional data endpoints configurable as interrupt, bulk, or isochronous
Endpoints 5 and 6 support double-buffering
USB RAM
256 bytes of buffer RAM shared between system and USB module
RAM may be allocated as buffers for USB controller or extra system RAM resource
USB reset options
USB module reset generated by MCU
Bus reset generated by the host, which triggers a CPU interrupt
Suspend and resume operations with remote wakeup support
Transceiver features
Converts USB differential voltages to digital logic signal levels
On-chip USB pullup resistor
On-chip 3.3-V regulator
17.1.5 Modes of Operation
Table 17-2. Operating Modes
Mode Description
Stop1 USB module is not functional. Before entering stop1, the internal USB voltage regulator and USB transceiver
enter shutdown mode; therefore, the USB voltage regulator and USB transceiver must be disabled by firmware.
Stop2 USB module is not functional. Before entering stop2, the internal USB voltage regulator and USB transceiver
enter shutdown mode; therefore, the USB voltage regulator and USB transceiver must be disabled by firmware.
Universal Serial Bus Device Controller (S08USBV1)
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 299
17.1.6 Block Diagram
Figure 17-2 is a block diagram of the USB module.
Figure 17-2. USB Module Block Diagram
Stop3 The USB module is optionally available in stop3.
A reduced current consumption mode may be required for USB suspend mode per USB Specification Rev. 2.0,
and stop3 mode is useful for achieving lower current consumption for the MCU and hence the overall USB
device. Before entering stop3 via firmware, the user must ensure that the device settings are configured for
stop3 to achieve USB suspend current consumption targets.
The USB module is notified about entering suspend mode when the SLEEPF flag is set; this occurs after the
USB bus is idle for 3 ms. The device USB suspend mode current consumption level requirements are defined
by the USB Specification Rev. 2.0 (500 A for low-power and 2.5 mA for high-power with remote-wakeup
enabled).
If USBRESMEN in USBCTL0 is set, and a K-state (resume signaling) is detected on the USB bus, the LPRESF
bit in USBCTL0 will be set. This triggers an asynchronous interrupt that will wakeup the MCU from stop3 mode
and enable clocks to the USB module. The USBRESMEN bit must then be cleared immediately after stop3
recovery to clear the LPRESF flag bit.
Wait USB module is operational.
Table 17-2. Operating Modes (continued)
Mode Description
S
k
y
B
l
u
e
G
a
s
k
e
t
R
A
M
A
r
b
i
t
r
a
t
i
o
n
USB RAM
256 bytes
IRQ
L
o
c
a
l
B
u
s
USBDP
USBDN
Serial Interface Engine
T
o
I
n
t
e
r
r
u
p
t
C
o
n
t
r
o
l
l
e
r
P
e
r
i
p
h
e
r
a
l
B
u
s
USB CONTROLLER
XCVR
VREG
Protocol and Rate
Match
V
USB33
BVCI
Target
TX
Logic
BVCI
Initiator
RX
Logic
48-MHz Reference Clock
24-MHz Clock (bus clk)
Enable
(SIE)
USBDP Pullup
B
u
f
f
e
r
M
a
n
a
g
e
r
Universal Serial Bus Device Controller (S08USBV1)
MC9S08JM60 Series Data Sheet, Rev. 3
300 Freescale Semiconductor
17.2 External Signal Description
The USB module requires both data and power pins. Table 17-3 describes each of the USB external pin
17.2.1 USBDP
USBDP is the positive USB differential signal. In a USB peripheral application, connect an external
33 1% resistor in series with this signal in order to meet the USB Specification Rev. 2.0 impedance
requirement.
17.2.2 USBDN
USBDN is the negative USB differential signal. In a USB peripheral application, connect an external
33 1% resistor in series with this signal in order to meet the USB Specification, Rev. 2.0 impedance
requirement.
17.2.3 V
USB33
V
USB33
is connected to the on-chip 3.3-V voltage regulator (VREG). V
USB33
maintains an output voltage
of 3.3 V and can only source enough current for USB internal transceiver (XCVR) and USB pullup
resistor. If the VREG is disabled by software, the application must input an external 3.3 V power supply
to the USB module via V
USB33
.
17.3 Register Definition
This section describes the memory map and control/status registers for the USB module.
Table 17-3. USB External Pins
Name Port Direction Function Reset State
Positive USB differential signal USBDP I/O Differential USB signaling.
High
impedance
Negative USB differential signal USBDN I/O Differential USB signaling.
High
impedance
USB voltage regulator power pin V
USB33
Power
3.3 V USB voltage regulator output
or 3.3 V USB transceiver/resistor
supply input.
JA
55
73
84
71
41
54
28
49
C/W
Appendix A Electrical Characteristics
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 351
The average chip-junction temperature (T
J
) in C can be obtained from:
T
J
= T
A
+ (P
D
JA
) Eqn. A-1
where:
T
A
= Ambient temperature, C
JA
= Package thermal resistance, junction-to-ambient, C/W
P
D
= P
int
+ P
I/O
P
int
= I
DD
V
DD
, Watts chip internal power
P
I/O
= Power dissipation on input and output pins user determined
For most applications, P
I/O
<< P
int
and can be neglected. An approximate relationship between P
D
and T
J
(if P
I/O
is neglected) is:
P
D
= K (T
J
+ 273C) Eqn. A-2
Solving equations 1 and 2 for K gives:
K = P
D
(T
A
+ 273C) +
JA
(P
D
)
2
Eqn. A-3
where K is a constant pertaining to the particular part. K can be determined from equation 3 by measuring
P
D
(at equilibrium) for a known T
A
. Using this value of K, the values of P
D
and T
J
can be obtained by
solving equations 1 and 2 iteratively for any value of T
A
.
A.5 ESD Protection and Latch-Up Immunity
Although damage from electrostatic discharge (ESD) is much less common on these devices than on early
CMOS circuits, normal handling precautions must be used to avoid exposure to static discharge.
Qualification tests are performed to ensure that these devices can withstand exposure to reasonable levels
of static without suffering any permanent damage.
All ESD testing is in conformity with AEC-Q100 Stress Test Qualification for Automotive Grade
Integrated Circuits. During the device qualification ESD stresses were performed for the Human Body
Model (HBM) and the Charge Device Model (CDM).
A device is defined as a failure if after exposure to ESD pulses the device no longer meets the device
specification. Complete DC parametric and functional testing is performed per the applicable device
specification at room temperature followed by hot temperature, unless specified otherwise in the device
specification.
Appendix A Electrical Characteristics
MC9S08JM60 Series Data Sheet, Rev. 3
352 Freescale Semiconductor
A.6 DC Characteristics
This section includes information about power supply requirements, I/O pin characteristics, and power
supply current in various operating modes.
Table A-4. ESD and Latch-up Test Conditions
Model Description Symbol Value Unit
Human Body
Series Resistance R1 1500
Storage Capacitance C 100 pF
Number of Pulse per pin 3
Latch-up
Minimum input voltage limit 2.5 V
Maximum input voltage limit 7.5 V
Table A-5. ESD and Latch-Up Protection Characteristics
Num Rating Symbol Min Max Unit
1 Human Body Model (HBM) V
HBM
2000 V
2 Charge Device Model (CDM) V
CDM
500 V
3 Latch-up Current at T
A
= 85C I
LAT
100 mA
Table A-6. DC Characteristics
Num C Parameter Symbol Min Typical
1
Max. Unit
1 Operating voltage
2
2.7 5.5 V
2 P
Output high voltage Low drive (PTxDSn = 0)
5 V, I
Load
= 4 mA
3 V, I
Load
= 2 mA
5 V, I
Load
= 2 mA
3 V, I
Load
= 1 mA
V
OH
V
DD
1.5
V
DD
1.5
V
DD
0.8
V
DD
0.8
V
Output high voltage High drive (PTxDSn = 1)
5 V, I
Load
= 15 mA
3 V, I
Load
= 8 mA
5 V, I
Load
= 8 mA
3 V, I
Load
= 4 mA
V
DD
1.5
V
DD
1.5
V
DD
0.8
V
DD
0.8
3 P
Output low voltage Low drive (PTxDSn = 0)
5 V, I
Load
= 4 mA
3 V, I
Load
= 2 mA
5 V, I
Load
= 2 mA
3 V, I
Load
= 1 mA
V
OL
1.5
1.5
0.8
0.8
V
Output low voltage High drive (PTxDSn = 1)
5 V, I
Load
= 15 mA
3 V, I
Load
= 8 mA
5 V, I
Load
= 8 mA
3 V, I
Load
= 4 mA
1.5
1.5
0.8
0.8
4 P Output high current Max. total I
OH
for all ports
5 V
3 V
I
OHT
100
60
mA
Appendix A Electrical Characteristics
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 353
5 P Output low current Max. total I
OL
for all ports
5 V
3 V
I
OLT
100
60
mA
6 C Input high voltage; all digital inputs
5 V
3 V
V
IH
0.65 V
DD
0.70 V
DD
V
C Input low voltage; all digital inputs V
IL
0.35 V
DD
7
C Input hysteresis; all digital inputs V
hys
0.06 V
DD
mV 8
9 C Input leakage current (per pin); input only pins |I
In
| 0.1 1 A
10 P Hi-Z (off-state) leakage current (per pin) |I
OZ
| 0.1 1 A
11 P Internal pullup resistors
3
R
PU
20 45 65 k
12 P Internal pulldown resistors
4
R
PD
20 45 65 k
13 T Internal pullup resistor to USBDP (to V
USB33
)
Idle
Transmit
R
PUPD
900
1425
1300
2400
1575
3090
k
14 D DC injection current
5
6
7
8
(single pin limit)
V
IN
>V
DD
V
IN
<V
SS
I
IC
0
0
2
0.2
mA
DC injection current (Total MCU limit, includes
sum of all stressed pins)
V
IN
>V
DD
V
IN
<V
SS
0
0
25
5
mA
15 D Input capacitance; all non-supply pins C
In
8 pF
16 D RAM retention voltage V
RAM
0.6 1.0 V
17 D POR re-arm voltage V
POR
0.9 1.4 2.0 V
18 D POR re-arm time t
POR
10 s
Table A-6. DC Characteristics (continued)
Num C Parameter Symbol Min Typical
1
Max. Unit
Appendix A Electrical Characteristics
MC9S08JM60 Series Data Sheet, Rev. 3
354 Freescale Semiconductor
19 P
Low-voltage detection threshold
High range
V
DD
falling
V
DD
rising
V
LVD1
3.9
4.0
4.0
4.1
4.1
4.2
V
P
Low-voltage detection threshold
Low range
V
DD
falling
V
DD
rising
V
LVD0
2.48
2.54
2.56
2.62
2.64
2.70
V 20
P
Low-voltage warning threshold
High range 1
V
DD
falling
V
DD
rising
V
LVW3
4.5
4.6
4.6
4.7
4.7
4.8
V 21
C
Low-voltage warning threshold
High range 0
V
DD
falling
V
DD
rising
V
LVW2
4.2
4.3
4.3
4.4
4.4
4.5
V 22
P
Low-voltage warning threshold
Low range 1
V
DD
falling
V
DD
rising
V
LVW1
2.84
2.90
2.92
2.98
3.00
3.06
V 23
C
Low-voltage warning threshold
Low range 0
V
DD
falling
V
DD
rising
V
LVW0
2.66
2.72
2.74
2.80
2.82
2.88
V 24
25 T
Low-voltage inhibit reset/recover hysteresis
+5V
+3V
V
hys
100
60
mV
mV
26 P
Bandgap voltage reference
factory trimmed at V
DD
= 5.0 V, Temp = 25C
V
BG
1.19 1.20 1.21 V
1
Typical values are based on characterization data at 25C unless otherwise stated.
2
Maximum is highest voltage that POR is guaranteed.
3
Measured with V
In
= V
SS
.
4
Measured with V
In
= V
DD
.
5
Power supply must maintain regulation within operating V
DD
range during instantaneous and operating
maximum current conditions. If positive injection current (V
In
> V
DD
) is greater than I
DD
, the injection current may
flow out of V
DD
and could result in external power supply going out of regulation. Ensure external V
DD
load will
shunt current greater than maximum injection current. This will be the greatest risk when the MCU is not
consuming power. Examples are: if no system clock is present, or if clock rate is very low (which would reduce
overall power consumption).
6
All functional non-supply pins are internally clamped to V
SS
and V
DD
.
7
Input must be current limited to the value specified. To determine the value of the required current-limiting
resistor, calculate resistance values for positive and negative clamp voltages, then use the larger of the two
values.
8
The RESET pin does not have a clamp diode to V
DD
. Do not drive this pin above V
DD
.
Table A-6. DC Characteristics (continued)
Num C Parameter Symbol Min Typical
1
Max. Unit
Appendix A Electrical Characteristics
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 355
Figure A-1. Typical Low-side Drive (sink) characteristics High Drive (PTxDSn = 1)
Figure A-2. Typical Low-side Drive (sink) characteristics Low Drive (PTxDSn = 0)
Figure A-3. Typical High-side Drive (source) characteristics High Drive (PTxDSn = 1)
Typical V
OL
vs. I
OL
AT V
DD
= 5V
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
IOL (mA)
V
O
L
(
v
)
Hot (85C)
Room (25C)
Cold (-40C)
Typical VOL vs. IOL AT VDD = 3V
0.0
0.2
0.4
0.6
0.8
1.0
1.2
1.4
0.0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
IOL (mA)
V
O
L
(
v
)
Hot (85C)
Room (25C)
Cold (-40C)
Typical VOL vs. IOL AT VDD = 5V
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0 1 2 3 4 5
IOL (mA)
V
O
L
(
v
)
Hot (85C)
Room (25C)
Cold (-40C)
Typical V
OL
vs. I
OL
AT V
DD
= 3V
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0 1 2 3
I
OL
(mA)
V
O
L
(
v
)
Hot (85C)
Room (25C)
Cold (-40C)
Typical V
DD
- V
OH
vs. I
OH
AT V
DD
= 5V
0.0
0.2
0.4
0.6
0.8
0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15
I
OH
(mA)
V
D
D
-
V
O
H
(
v
)
Hot (85C)
Room (25C)
Cold (-40C)
Typical V
DD
- V
OH
vs. I
OH
AT V
DD
= 3V
0.0
0.2
0.4
0.6
0.8
1.0
1.2
0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15
I
OH
(mA)
V
D
D
-
V
O
H
(
v
)
Hot (85C)
Room (25C)
Cold (-40C)
Appendix A Electrical Characteristics
MC9S08JM60 Series Data Sheet, Rev. 3
356 Freescale Semiconductor
Figure A-4. Typical High-side Drive (source) characteristics Low Drive (PTxDSn = 0)
Typical V
DD
- V
OH
vs. I
OH
AT V
DD
= 5V
0.0
0.2
0.4
0.6
0.8
1.0
1.2
0 -1 -2 -3 -4 -5
I
OH
(mA)
V
D
D
-
V
O
H
(
v
)
Hot (85C)
Room(25C)
Cold (-40C)
Typical V
DD
- V
OH
vs. I
OH
AT V
DD
= 3V
0.0
0.2
0.4
0.6
0.8
1.0
1.2
0 -1 -2 -3
I
OH
(mA)
V
D
D
-
V
O
H
(
v
)
Hot (85C)
Room (25C)
Cold (-40C)
Appendix A Electrical Characteristics
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 357
A.7 Supply Current Characteristics
Table A-7. Supply Current Characteristics
Num C Parameter Symbol V
DD
(V) Typical
1
1
Typicals are measured at 25C.
Max
2
2
Values given here are preliminary estimates prior to completing characterization.
Unit
1 C
Run supply current
3
measured at
(Core clock = 2 MHz, f
Bus
= 1 MHz, BLPE mode)
3
All modules except USB and ADC active, Oscillator disabled (ERCLKEN = 0), using external clock resource for input, and does
not include any dc loads on port pins.
RI
DD
5 1.1 1.6
mA
3 0.8 1.5
2 P
Run supply current
3
measured at
(Core clock = 8 MHz, f
Bus
= 4 MHz, FBE mode)
5 4.9 8
mA
3 4.3 7
3 C
Run supply current
3
measured at
(Core clock = 48 MHz, f
Bus
= 24 MHz, PEE mode)
5 23 30
mA
3 22 30
4 P
Stop2 mode supply current
40 C
25 C
85 C
40 C
25 C
85 C
S2I
DD
5 0.80
3
3
20
A
3 0.80
3
3
20
A
5 P
Stop3 mode supply current
40 C
25 C
85 C
40 C
25 C
85 C
S3I
DD
5 0.90
3
3
20
A
3 0.90
3
3
20
A
6 P
Adder to stop2 or stop3 for RTC enabled
4
, 25C
4
Most customers are expected to find that auto-wakeup from stop2 or stop3 can be used instead of the higher current wait mode.
Wait mode typical is 560 A at 5 V and 422 A at 3V with f
Bus
= 1 MHz.
I
SRTC
5 300 nA
3 300 nA
7 P
Adder to stop3 for LVD enabled
(LVDE = LVDSE = 1)
I
SLVD
5 110 A
3 90 A
8 P
Adder to stop3 for oscillator enabled
5
(ERCLKEN = 1 and EREFSTEN = 1)
5
Values given under the following conditions: low range operation (RANGE = 0), low power mode (HGO = 0).
I
SOSC
5 5 A
3 5 A
9 T USB module enable current
6
I
USBE
5 1.5 mA
10 T USB suspend current
7
I
SUSP
5 270 500 A
Appendix A Electrical Characteristics
MC9S08JM60 Series Data Sheet, Rev. 3
358 Freescale Semiconductor
A.8 Analog Comparator (ACMP) Electricals
A.9 ADC Characteristics
6
Here USB module is enabled and clocked at 48 MHz (USBEN = 1, USBVREN =1, USBPHYEN = 1 and USBPU = 1), and D+
and D pull down by two 15.1k resisters independently. The current consumption may be much higher when the packets are
being transmitted through the attached cable.
7
MCU enters into Stop3 mode, USB bus in idle state. The USB suspend current will be dominated by the D+ pull up resister.
Table A-8. Analog Comparator Electrical Specifications
Num C Rating Symbol Min Typical Max Unit
1 Supply voltage V
DD
2.7 5.5 V
2 D Supply current (active) I
DDAC
20 35 A
3 D Analog input voltage V
AIN
V
SS
0.3 V
DD
V
4 D Analog input offset voltage V
AIO
20 40 mV
5 D Analog Comparator hysteresis V
H
3.0 6.0 20.0 mV
6 D Analog input leakage current I
ALKG
1.0 A
7 D Analog Comparator initialization delay t
AINIT
1.0 s
Table A-9. 5 Volt 12-bit ADC Operating Conditions
Characteristic Conditions Symb Min Typ
1
Max Unit Comment
Supply voltage
Absolute V
DDAD
2.7 5.5 V
Delta to V
DD
(V
DD
-V
DDAD
)
2
V
DDAD
100 0 +100 mV
Ground voltage Delta to V
SS
(V
SS
-V
SSAD
)
2
V
SSAD
100 0 +100 mV
Ref Voltage
High
V
REFH
2.7 V
DDAD
V
DDAD
V
Ref Voltage
Low
V
REFL
V
SSAD
V
SSAD
V
SSAD
V
Input Voltage V
ADIN
V
REFL
V
REFH
V
Input
Capacitance
C
ADIN
4.5 5.5 pF
Input
Resistance
R
ADIN
3 5 k
Analog Source
Resistance
12 bit mode
f
ADCK
> 4 MHz
f
ADCK
< 4 MHz
R
AS
2
5
k External to MCU 10 bit mode
f
ADCK
> 4 MHz
f
ADCK
< 4 MHz
5
10
8 bit mode (all valid f
ADCK
) 10
Appendix A Electrical Characteristics
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 359
Figure A-5. ADC Input Impedance Equivalency Diagram
ADC
Conversion
Clock Freq.
High Speed (ADLPC=0)
f
ADCK
0.4 8.0
MHz
Low Power (ADLPC=1)
0.4 4.0
1
Typical values assume V
DDAD
= 5.0 V, Temp = 25C, f
ADCK
= 1.0 MHz unless otherwise stated. Typical values are for
reference only and are not tested in production.
2
DC potential difference.
Table A-9. 5 Volt 12-bit ADC Operating Conditions (continued)
Characteristic Conditions Symb Min Typ
1
Max Unit Comment
+
V
AS
R
AS
C
AS
V
ADIN
Z
AS
Pad
leakage
due to
input
protection
Z
ADIN
SIMPLIFIED
INPUT PIN EQUIVALENT
CIRCUIT
R
ADIN
ADC SAR
ENGINE
SIMPLIFIED
CHANNEL SELECT
CIRCUIT
INPUT PIN
R
ADIN
C
ADIN
INPUT PIN
R
ADIN
INPUT PIN
R
ADIN
Appendix A Electrical Characteristics
MC9S08JM60 Series Data Sheet, Rev. 3
360 Freescale Semiconductor
Table A-10. 5 Volt 12-bit ADC Characteristics (V
REFH
= V
DDAD
, V
REFL
= V
SSAD
)
Characteristic Conditions C Symb Min Typ
1
Max Unit Comment
Supply Current
ADLPC=1
ADLSMP=1
ADCO=1
T I
DDAD
133 A
Supply Current
ADLPC=1
ADLSMP=0
ADCO=1
T I
DDAD
218 A
Supply Current
ADLPC=0
ADLSMP=1
ADCO=1
T I
DDAD
327 A
Supply Current
ADLPC=0
ADLSMP=0
ADCO=1
T I
DDAD
0.582 1 mA
Supply Current Stop, Reset, Module Off I
DDAD
0.011 1 A
ADC
Asynchronous
Clock Source
High Speed (ADLPC=0)
T f
ADACK
2 3.3 5
MHz
t
ADACK
=
1/f
ADACK
Low Power (ADLPC=1) 1.25 2 3.3
Conversion
Time (Including
sample time)
Short Sample (ADLSMP=0)
T t
ADC
20
ADCK
cycles
See Table
10.13 for
conversion
time variances
Long Sample (ADLSMP=1) 40
Sample Time
Short Sample (ADLSMP=0)
T t
ADS
3.5
ADCK
cycles
Long Sample (ADLSMP=1) 23.5
Total
Unadjusted
Error
12 bit mode T
E
TUE
3.0 10.0
LSB
2
Includes
quantization
10 bit mode P 1 2.5
8 bit mode T 0.5 1.0
Differential
Non-Linearity
12 bit mode T
DNL
1.75 4.0
LSB
2
10 bit mode
3
P 0.5 1.0
8 bit mode
2
T 0.3 0.5
Integral
Non-Linearity
12 bit mode T
INL
1.5 4.0
LSB
2
10 bit mode T 0.5 1.0
8 bit mode T 0.3 0.5
Zero-Scale
Error
12 bit mode T
E
ZS
1.5 6.0
LSB
2
V
ADIN
= V
SSAD
10 bit mode P 0.5 1.5
8 bit mode T 0.5 0.5
Appendix A Electrical Characteristics
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 361
Full-Scale
Error
12 bit mode T
E
FS
1 4.0
LSB
2
V
ADIN
= V
DDAD
10 bit mode P 0.5 1
8 bit mode T 0.5 0.5
Quantization
Error
12 bit mode
D E
Q
1 to 0 1 to 0
LSB
2
10 bit mode 0.5
8 bit mode 0.5
Input Leakage
Error
12 bit mode
D E
IL
1 10
LSB
2
Pad leakage
4
*
R
AS
10 bit mode 0.2 2.5
8 bit mode 0.1 1
Temp Sensor
Voltage
25C D V
TEMP25
1.396 V
Temp Sensor
Slope
40 C 25 C
D m
3.266
mV/C
25 C 125 C 3.638
1
Typical values assume V
DDAD
= 5.0 V, Temp = 25C, f
ADCK
= 1.0 MHz unless otherwise stated. Typical values are for reference
only and are not tested in production.
2
1 LSB = (V
REFH
V
REFL
)/2
N
3
Monotonicity and no-missing-codes guaranteed in 10 bit and 8 bit modes.
4
Based on input pad leakage current. Refer to pad electricals.
Table A-10. 5 Volt 12-bit ADC Characteristics (V
REFH
= V
DDAD
, V
REFL
= V
SSAD
) (continued)
Characteristic Conditions C Symb Min Typ
1
Max Unit Comment
Appendix A Electrical Characteristics
MC9S08JM60 Series Data Sheet, Rev. 3
362 Freescale Semiconductor
A.10 External Oscillator (XOSC) Characteristics
Table A-11. Oscillator Electrical Specifications (Temperature Range = 40 to 85C Ambient)
Num C Rating Symbol Min Typ
1
1
Typical data was characterized at 3.0 V, 25C or is recommended value.
Max Unit
1 C
Oscillator crystal or resonator (EREFS = 1, ERCLKEN = 1)
Low range (RANGE = 0)
High range (RANGE = 1) FEE or FBE mode
2
High range (RANGE = 1) PEE or PBE mode
3
High range (RANGE = 1, HGO = 1) BLPE mode
High range (RANGE = 1, HGO = 0) BLPE mode
2
When MCG is configured for FEE or FBE mode, input clock source must be divided using RDIV to within the range of 31.25 kHz
to 39.0625 kHz.
3
When MCG is configured for PEE or PBE mode, input clock source must be divided using RDIV to within the range of 1 MHz to
2 MHz.
f
lo
f
hi-fll
f
hi-pll
f
hi-hgo
f
hi-lp
32
1
1
1
1
38.4
5
16
16
8
kHz
MHz
MHz
MHz
MHz
2 Load capacitors C
1,
C
2
See crystal or resonator
manufacturers recommendation.
3
Feedback resistor
Low range (32 kHz to 38.4 kHz)
High range (1 MHz to 16 MHz)
R
F
10
1
M
M
4
Series resistor
Low range, low gain (RANGE = 0, HGO = 0)
Low range, high gain (RANGE = 0, HGO = 1)
High range, low gain (RANGE = 1, HGO = 0)
High range, high gain (RANGE = 1, HGO = 1)
8 MHz
4 MHz
1 MHz
R
S
0
100
0
0
0
0
0
10
20
k
5 T
Crystal start-up time
4
Low range, low gain (RANGE = 0, HGO = 0)
Low range, high gain (RANGE = 0, HGO = 1)
High range, low gain (RANGE = 1, HGO = 0)
5
High range, high gain (RANGE = 1, HGO = 1)
5
4
This parameter is characterized and not tested on each device. Proper PC board layout procedures must be followed to achieve
specifications.
5
4 MHz crystal
t
CSTL-LP
t
CSTL-HGO
t
CSTH-LP
t
CSTH-HGO
200
400
5
15
ms
6 T
Square wave input clock frequency (EREFS = 0, ERCLKEN = 1)
FEE or FBE mode
2
PEE or PBE mode
3
BLPE mode
f
extal
0.03125
1
0
5
16
40
MHz
MHz
MHz
MCU
EXTAL XTAL
Crystal or Resonator
R
S
C
2
R
F
C
1
Appendix A Electrical Characteristics
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 363
A.11 MCG Specifications
Table A-12. MCG Frequency Specifications (Temperature Range = 40 to 125C Ambient)
Num C Rating Symbol Min Typical Max Unit
1 P
Internal reference frequency - factory trimmed at V
DD
=
5 V and temperature = 25 C
f
int_ft
31.25 kHz
2 P
Average internal reference frequency untrimmed
1
1
TRIM register at default value (0x80) and FTRIM control bit at default value (0x0).
f
int_ut
25 32.7 41.66 kHz
3 P Average internal reference frequency Q user trimmed f
int_t
31.25 39.0625 kHz
4 D Internal reference startup time t
irefst
60 100 s
5
DCO output frequency range - untrimmed
1
value provided for reference: f
dco_ut
= 1024 X f
int_ut
f
dco_ut
25.6 33.48 42.66 MHz
6 P DCO output frequency range - trimmed f
dco_t
32 40 MHz
7 C
Resolution of trimmed DCO output frequency at fixed
voltage and temperature (using FTRIM)
f
dco_res_t
0.1 0.2 %f
dco
8 C
Resolution of trimmed DCO output frequency at fixed
voltage and temperature (not using FTRIM)
f
dco_res_t
0.2 0.4 %f
dco
9 P
Total deviation of trimmed DCO output frequency over
voltage and temperature
f
dco_t
+0.5
1.0
2 %f
dco
10 C
Total deviation of trimmed DCO output frequency over
fixed voltage and temperature range of 0 70 C
f
dco_t
0.5 1 %f
dco
11 C
FLL acquisition time
2
2
This specification applies to any time the FLL reference source or reference divider is changed, trim value changed or changing
from FLL disabled (BLPE, BLPI) to FLL enabled (FEI, FEE, FBE, FBI). If a crystal/resonator is being used as the reference, this
specification assumes it is already running.
t
fll_acquire
1 ms
12 D
PLL acquisition time
3
3
This specification applies to any time the PLL VCO divider or reference divider is changed, or changing from PLL disabled (BLPE,
BLPI) to PLL enabled (PBE, PEE). If a crystal/resonator is being used as the reference, this specification assumes it is already
running.
t
pll_acquire
1 ms
13 C
Long term Jitter of DCO output clock (averaged over
2ms interval)
4
C
Jitter
0.02 0.2 %f
dco
14 D VCO operating frequency f
vco
7.0 55.0 MHz
15 D PLL reference frequency range f
pll_ref
1.0 2.0 MHz
16 T
Long term accuracy of PLL output clock (averaged over
2 ms)
f
pll_jitter_2ms
0.590
5
%f
pll
17 T Jitter of PLL output clock measured over 625 ns f
pll_jitter_625ns
0.566
5
%f
pll
18 D
Lock entry frequency tolerance
6
D
lock
1.49 2.98 %
19 D
Lock exit frequency tolerance
7
D
unl
4.47 5.97 %
20 D Lock time FLL t
fll_lock
t
fll_acquire+
1075(1/
f
int_t)
s
21 D Lock time PLL t
pll_lock
t
pll_acquire+
1075(1/
f
pll_ref)
s
22 D Loss of external clock minimum frequency RANGE = 0 f
loc_low
(3/5) x f
int
kHz
23 D Loss of external clock minimum frequency RANGE = 1 f
loc_high
(16/5) x f
int
kHz
Appendix A Electrical Characteristics
MC9S08JM60 Series Data Sheet, Rev. 3
364 Freescale Semiconductor
o
A.12 AC Characteristics
This section describes ac timing characteristics for each peripheral system.
A.12.1 Control Timing
4
Jitter is the average deviation from the programmed frequency measured over the specified interval at maximum f
BUS
.
Measurements are made with the device powered by filtered supplies and clocked by a stable external clock signal. Noise injected
into the FLL circuitry via V
DD
and V
SS
and variation in crystal oscillator frequency increase the C
Jitter
percentage for a given
interval.
5
Jitter measurements are based upon a 48 MHz MCGOUT clock frequency..
6
Below D
lock
minimum, the MCG is guaranteed to enter lock. Above D
lock
maximum, the MCG will not enter lock. But if the MCG
is already in lock, then the MCG may stay in lock.
7
Below D
unl
minimum, the MCG will not exit lock if already in lock. Above D
unl
maximum, the MCG is guaranteed to exit lock.
Table A-13. Control Timing
Num C Parameter Symbol Min Typ
1
1
Typical values are based on characterization data at V
DD
= 5.0 V, 25 C unless otherwise stated.
Max Unit
1 Bus frequency (t
cyc
= 1/f
Bus
) f
Bus
dc 24 MHz
2 Internal low-power oscillator period t
LPO
800 1500 s
3 External reset pulse width
2
2
This is the shortest pulse that is guaranteed to be recognized as a reset pin request. Shorter pulses are not guaranteed to
override reset requests from internal sources.
t
extrst
100 ns
4 Reset low drive t
rstdrv
66 x t
cyc
ns
5 Active background debug mode latch setup time t
MSSU
500 ns
6 Active background debug mode latch hold time t
MSH
100 ns
7 IRQ pulse width
Asynchronous path
2
Synchronous path
3
3
This is the minimum pulse width that is guaranteed to pass through the pin synchronization circuitry. Shorter pulses may or
may not be recognized. In stop mode, the synchronizer is bypassed so shorter pulses can be recognized in that case.
t
ILIH,
t
IHIL
100
1.5 x t
cyc
ns
8 KBIPx pulse width
Asynchronous path
2
Synchronous path
3
t
ILIH,
t
IHIL
100
1.5 x t
cyc
ns
9 Port rise and fall time
low output drive (PTxDS = 0), (load = 50 pF)
4
Slew rate control disabled (PTxSE = 0)
Slew rate control enabled (PTxSE = 1)
high output drive (PTxDS = 1), (load = 50 pF)
Slew rate control disabled (PTxSE = 0)
Slew rate control enabled (PTxSE = 1)
4
Timing is shown with respect to 20% V
DD
and 80% V
DD
levels. Temperature range 40 C to 85 C.
t
Rise
, t
Fall
40
75
11
35
ns
Appendix A Electrical Characteristics
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 365
Figure A-6. Reset Timing
Figure A-7. IRQ/KBIPx Timing
A.12.2 Timer/PWM (TPM) Module Timing
Synchronizer circuits determine the shortest input pulses that can be recognized or the fastest clock that
can be used as the optional external source to the timer counter. These synchronizers operate from the
current bus rate clock.
Figure A-8. Timer External Clock
Table A-14. TPM Input Timing
NUM C Function Symbol Min Max Unit
1 External clock frequency f
TPMext
dc f
Bus
/4 MHz
2 External clock period t
TPMext
4 t
cyc
3 D External clock high time t
clkh
1.5 t
cyc
4 D External clock low time t
clkl
1.5 t
cyc
5 D Input capture pulse width t
ICPW
1.5 t
cyc
t
extrst
RESET PIN
t
IHIL
IRQ/KBIPx
t
ILIH
IRQ/KBIPx
t
TPMext
t
clkh
t
clkl
TPMxCLK
Appendix A Electrical Characteristics
MC9S08JM60 Series Data Sheet, Rev. 3
366 Freescale Semiconductor
Figure A-9. Timer Input Capture Pulse
A.12.3 SPI Characteristics
Table A-15 and Figure A-10 through Figure A-13 describe the timing requirements for the SPI system.
Table A-15. SPI Electrical Characteristic
Num
1
C Characteristic
2
Symbol Min Max Unit
1 D
Operating frequency
Master
Slave
f
op
f
op
f
Bus
/2048
dc
f
Bus
/2
f
Bus
/4
Hz
2 D
Cycle time
Master
Slave
t
SCK
t
SCK
2
4
2048
t
cyc
t
cyc
3 D
Enable lead time
Master
Slave
t
Lead
t
Lead
1/2
1/2
t
SCK
t
SCK
4 D
Enable lag time
Master
Slave
t
Lag
t
Lag
1/2
1/2
t
SCK
t
SCK
5 D
Clock (SPSCK) high time Master and
Slave t
SCKH
1/2 t
SCK
25 ns
6 D
Clock (SPSCK) low time Master and
Slave t
SCKL
1/2 t
SCK
25 ns
7 D
Data setup time (inputs)
Master
Slave
t
SI(M)
t
SI(S)
30
30
ns
ns
8 D
Data hold time (inputs)
Master
Slave
t
HI(M)
t
HI(S)
30
30
ns
ns
9 D Access time, slave
3
t
A
0 40 ns
10 D Disable time, slave
4
t
dis
40 ns
11 D
Data setup time (outputs)
Master
Slave
t
SO
t
SO
25
25
ns
ns
12 D
Data hold time (outputs)
Master
Slave
t
HO
t
HO
10
10
ns
ns
t
ICPW
TPMxCHn
t
ICPW
TPMxCHn
Appendix A Electrical Characteristics
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 367
Figure A-10. SPI Master Timing (CPHA = 0)
1
Refer to Figure A-10 through Figure A-13.
2
All timing is shown with respect to 20% V
DD
and 70% V
DD
, unless noted; 100 pF load on all SPI pins. All
timing assumes slew rate control disabled and high drive strength enabled for SPI output pins.
3
Time to data active from high-impedance state.
4
Hold time to high-impedance state.
SCK
(OUTPUT)
SCK
(OUTPUT)
MISO
(INPUT)
MOSI
(OUTPUT)
SS
1
(OUTPUT)
MSB IN
2
BIT 6 . . . 1
LSB IN
MSB OUT
2
LSB OUT
BIT 6 . . . 1
(CPOL = 0)
(CPOL = 1)
NOTES:
2. LSBF = 0. For LSBF = 1, bit order is LSB, bit 1, ..., bit 6, MSB.
1. SS output mode (MODFEN = 1, SSOE = 1).
1 2 3
5
6 7
10 11
5
10
4
4
Appendix A Electrical Characteristics
MC9S08JM60 Series Data Sheet, Rev. 3
368 Freescale Semiconductor
Figure A-11. SPI Master Timing (CPHA = 1)
Figure A-12. SPI Slave Timing (CPHA = 0)
SCK
(OUTPUT)
SCK
(OUTPUT)
MISO
(INPUT)
MOSI
(OUTPUT)
MSB IN
(2)
BIT 6 . . . 1
LSB IN
MSB OUT
(2)
LSB OUT
BIT 6 . . . 1
(CPOL = 0)
(CPOL = 1)
SS
(1)
(OUTPUT)
1. SS output mode (MODFEN = 1, SSOE = 1).
2. LSBF = 0. For LSBF = 1, bit order is LSB, bit 1, ..., bit 6, MSB.
NOTES:
2
1
3
4
5
6 7
10 11
5
4
SCK
(INPUT)
SCK
(INPUT)
MOSI
(INPUT)
MISO
(OUTPUT)
SS
(INPUT)
MSB IN
BIT 6 . . . 1
LSB IN
MSB OUT SLAVE LSB OUT
BIT 6 . . . 1
(CPOL = 0)
(CPOL = 1)
NOTE:
SLAVE
SEE
NOTE
1. Not defined but normally MSB of character just received
1
2
3
4
6 7
8
9
10 11
5
5
4
Appendix A Electrical Characteristics
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 369
Figure A-13. SPI Slave Timing (CPHA = 1)
A.13 Flash Specifications
This section provides details about program/erase times and program-erase endurance for the flash
memory.
Program and erase operations do not require any special power sources other than the normal V
DD
supply.
For more detailed information about program/erase operations.
Table A-16. Flash Characteristics
Num C Characteristic Symbol Min Typ
1
1
Typical values are based on characterization data at V
DD
= 5.0 V, 25C unless otherwise stated.
Max Unit
1 Supply voltage for program/erase V
prog/erase
2.7 5.5 V
2 Supply voltage for read operation V
Read
2.7 5.5 V
3 Internal FCLK frequency
2
f
FCLK
150 200 kHz
4 Internal FCLK period (1/FCLK) t
Fcyc
5 6.67 s
5 Byte program time (random location)
(2)
t
prog
9 t
Fcyc
6 Byte program time (burst mode)
(2)
t
Burst
4 t
Fcyc
7 Page erase time
3
t
Page
4000 t
Fcyc
8 Mass erase time
(2)
t
Mass
20,000 t
Fcyc
9 C Program/erase endurance
4
T
L
to T
H
= 40C to + 85C
T = 25C
10,000
100,000
cycles
10 Data retention
5
t
D_ret
15 100 years
SCK
(INPUT)
SCK
(INPUT)
MOSI
(INPUT)
MISO
(OUTPUT)
MSB IN
BIT 6 . . . 1
LSB IN
MSB OUT SLAVE LSB OUT
BIT 6 . . . 1
SEE
(CPOL = 0)
(CPOL = 1)
SS
(INPUT)
NOTE:
SLAVE
NOTE
1. Not defined but normally LSB of character just received
1
2
3
4
6 7 8
9 10 11
4
5
5
Appendix A Electrical Characteristics
MC9S08JM60 Series Data Sheet, Rev. 3
370 Freescale Semiconductor
A.14 USB Electricals
The USB electricals for the S08USBV1 module conform to the standards documented by the Universal
Serial Bus Implementers Forum. For the most up-to-date standards, visit http://www.usb.org.
If the Freescale S08USBV1 implementation has electrical characteristics that deviate from the standard or
require additional information, this space would be used to communicate that information.
A.15 EMC Performance
Electromagnetic compatibility (EMC) performance is highly dependant on the environment in which the
MCU resides. Board design and layout, circuit topology choices, location and characteristics of external
components as well as MCU software operation all play a significant role in EMC performance. The
system designer must consult Freescale applications notes such as AN2321, AN1050, AN1263, AN2764,
and AN1259 for advice and guidance specifically targeted at optimizing EMC performance.
A.15.1 Radiated Emissions
Microcontroller radiated RF emissions are measured from 150 kHz to 1 GHz using the TEM/GTEM Cell
method in accordance with the IEC 61967-2 and SAE J1752/3 standards. The measurement is performed
with the microcontroller installed on a custom EMC evaluation board while running specialized EMC test
software. The radiated emissions from the microcontroller are measured in a TEM cell in two package
orientations (North and East). For more detailed information concerning the evaluation results, conditions
and setup, please refer to the EMC Evaluation Report for this device.
The maximum radiated RF emissions of the tested configuration in all orientations are less than or equal
to the reported emissions levels.
2
The frequency of this clock is controlled by a software setting.
3
These values are hardware state machine controlled. User code does not need to count cycles. This information
supplied for calculating approximate time to program and erase.
4
Typical endurance for Flash is based on the intrinsic bitcell performance. For additional information on how
Freescale Semiconductor defines typical endurance, please refer to Engineering Bulletin EB619/D, Typical
Endurance for Nonvolatile Memory.
5
Typical data retention values are based on intrinsic capability of the technology measured at high temperature and
de-rated to 25 C using the Arrhenius equation. For additional information on how Freescale Semiconductor defines
typical data retention, please refer to Engineering Bulletin EB618/D, Typical Data Retention for Nonvolatile Memory.
Table A-17. Internal USB 3.3V Voltage Regulator Characteristics
Symbol Unit Min Typ Max
Regulator operating voltage V
regin
V 3.9 5.5
VREG output V
regout
V 3 3.3 3.6
V
USB33
input with internal
VREG disabled
V
usb33in
V 3 3.3 3.6
VREG Quiescent Current I
VRQ
mA 0.5
Appendix A Electrical Characteristics
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 371
Table A-18. Radiated Emissions
Parameter Symbol Conditions Frequency f
OSC
/f
BUS
Level
1
(Max)
1
Data based on qualification test results.
Unit
Radiated emissions,
electric field
V
RE_TEM
V
DD
= 5.0 V
T
A
= +25
o
C
0.15 50 MHz
4 MHz crystal
24 MHz Bus
20
dBV
50 150 MHz 27
150 500 MHz 27
500 1000 MHz 16
IEC Level 1
SAE Level 3
Appendix A Electrical Characteristics
MC9S08JM60 Series Data Sheet, Rev. 3
372 Freescale Semiconductor
MC9S08JM60 Series Data Sheet, Rev. 3
Freescale Semiconductor 373
Appendix B
Ordering Information and Mechanical Drawings
B.1 Ordering Information
This section contains ordering numbers for MC9S08JM60 series devices. See below for an example of the
device numbering system.
B.2 Orderable Part Numbering System
B.3 Mechanical Drawings
This following pages contain mechanical specifications for MC9S08JM60 series package options. See
Table B-2 for the document numbers that correspond to each package type.
Table B-1. Device Numbering System
Device Number
1
1
See Table 1-1 for a complete description of modules included on each device.
Memory Available Packages
2
2
See Table B-2 for package information.
Flash RAM Type
MC9S08JM60 60,912 4096 64-pin LQFP
64-pin QFP
48-pin QFN
44-pin LQFP
MC9S08JM32 32,768 2048
Table B-2. Package Information
Pin Count Type Designator Document No.
44 LQFP LD 98ASS23225W
48 QFN GT 98ARH99048A
64 LQFP LH 98ASS23234W
64 QFP QH 98ASB42844B
Package designator
Temperature range
Family
Memory
Status
Core
Pb free indicator
(C = 40C to 85C)
(MC = Fully Qualified)
(9 = Flash-based)
MC 9 S08 JM 60 C XX E
Memory size designator
(See Table B-2)
MC9S08JM60
Rev. 3, 1/2009
How to Reach Us:
Home Page:
www.freescale.com
Web Support:
http://www.freescale.com/support
USA/Europe or Locations Not Listed:
Freescale Semiconductor, Inc.
Technical Information Center, EL516
2100 East Elliot Road
Tempe, Arizona 85284
1-800-521-6274 or +1-480-768-2130
www.freescale.com/support
Europe, Middle East, and Africa:
Freescale Halbleiter Deutschland GmbH
Technical Information Center
Schatzbogen 7
81829 Muenchen, Germany
+44 1296 380 456 (English)
+46 8 52200080 (English)
+49 89 92103 559 (German)
+33 1 69 35 48 48 (French)
www.freescale.com/support
Japan:
Freescale Semiconductor Japan Ltd.
Headquarters
ARCO Tower 15F
1-8-1, Shimo-Meguro, Meguro-ku,
Tokyo 153-0064
Japan
0120 191014 or +81 3 5437 9125
[email protected]
Asia/Pacific:
Freescale Semiconductor China Ltd.
Exchange Building 23F
No. 118 Jianguo Road
Chaoyang District
Beijing 100022
China
+86 10 5879 8000
[email protected]
For Literature Requests Only:
Freescale Semiconductor Literature Distribution Center
P.O. Box 5405
Denver, Colorado 80217
1-800-441-2447 or +1-303-675-2140
Fax: +1-303-675-2150
[email protected]
Information in this document is provided solely to enable system and software
implementers to use Freescale Semiconductor products. There are no express or
implied copyright licenses granted hereunder to design or fabricate any integrated
circuits or integrated circuits based on the information in this document.
Freescale Semiconductor reserves the right to make changes without further notice to
any products herein. Freescale Semiconductor makes no warranty, representation or
guarantee regarding the suitability of its products for any particular purpose, nor does
Freescale Semiconductor assume any liability arising out of the application or use of any
product or circuit, and specifically disclaims any and all liability, including without
limitation consequential or incidental damages. Typical parameters that may be
provided in Freescale Semiconductor data sheets and/or specifications can and do vary
in different applications and actual performance may vary over time. All operating
parameters, including Typicals, must be validated for each customer application by
customers technical experts. Freescale Semiconductor does not convey any license
under its patent rights nor the rights of others. Freescale Semiconductor products are
not designed, intended, or authorized for use as components in systems intended for
surgical implant into the body, or other applications intended to support or sustain life,
or for any other application in which the failure of the Freescale Semiconductor product
could create a situation where personal injury or death may occur. Should Buyer
purchase or use Freescale Semiconductor products for any such unintended or
unauthorized application, Buyer shall indemnify and hold Freescale Semiconductor and
its officers, employees, subsidiaries, affiliates, and distributors harmless against all
claims, costs, damages, and expenses, and reasonable attorney fees arising out of,
directly or indirectly, any claim of personal injury or death associated with such
unintended or unauthorized use, even if such claim alleges that Freescale
Semiconductor was negligent regarding the design or manufacture of the part.
RoHS-compliant and/or Pb-free versions of Freescale products have the functionality
and electrical characteristics as their non-RoHS-compliant and/or non-Pb-free
counterparts. For further information, see http://www.freescale.com or contact your
Freescale sales representative.
For information on Freescales Environmental Products program, go to
http://www.freescale.com/epp.
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. 2007-2009. All rights reserved.