| CML12S-DP256   Development Board for Motorola MC9S12DP256   xiom   anufacturing   ä ã 2000   2813 Industrial Ln. · Garland, TX 75041 · (972) 926-9303 FAX (972) 926-6063   · C M L 1 2 S D P 2 5 6   0 7 / 1 7 / 0 2   GETTING STARTED   The Axiom CML12S-DP256 single board computer is a fully assembled, fully functional   development system for the Motorola MC9S12DP256 microcontroller. Provided with wall plug   power supply and serial cable. Support software for this development board is provided for   Windows 95/98/NT/2000/XP operating systems.   This development board applies option selection jumpers. Terminology for application of the   option jumpers is as follows:   Jumper on, in, or installed = jumper is a plastic shunt that fits across 2 pins and the   shunt is installed so that the 2 pins are connected with the shunt.   Jumper off, out, or idle = jumper or shunt is installed so that only 1 pin holds the shunt,   no 2 pins are connected, or jumper is removed. It is recommended that the jumpers be   idled by installing on 1 pin so they will not be lost.   Development board users should also be familiar with the hardware and software operation of   the target HCS12 device, refer to the Motorola User Guide for the device and the CPU12   Reference Manual for details. The development board purpose is to assist the user in quickly   developing an application with a known working environment or to provide an evaluation   platform for the target HCS12. Users should be familiar with memory mapping, memory types,   and embedded software design for the fastest successful application development.   Application development maybe performed by applying the embedded MON12 (default) or   NOICE firmware monitors, or by applying a BDM cable with supporting host software. The   MON12 monitor provides an effective debug method for assembly level software, but has   limitations in C code developments. For C/C++ code development it is recommended that   source code or symbolic debug capability be provided in the debugging environment. The   NOICE monitor or BDM interface with supporting software tools should be applied for C/C++   code development so the host PC can provide the symbolic support needed. User should   verify the NOICE or BDM development environment supports the C compiler to be applied, not   all development environments support all compilers.   The MON12 and NOICE monitors are provided in the development board HCS12 internal   flash memory and apply some HCS12 resources for operation. See the respective chapter for   each monitor for details on operation and resources applied. User should note both monitors   apply operation of the HCS12 expanded wide mode data and address bus on HCS12 I/O ports   A, B, E, and K for access to the external Ram. The external ram provides a development   memory where code to be debugged can be loaded or modified quickly and software   breakpoints applied. After the application is tested, the code can be relocated to the internal   flash memory space of the HCS12 and programmed into the flash memory for dedicated   operation.   User applications developed by applying MON12 or NOICE monitors can be modified and   relocated for operation as a stand-alone application. By applying the MON12 Autostart   feature, the user application will operate from Reset or Power on conditions to provide a   dedicated operation of the application. See the Autostart section in this manual for more   information.   3 C M L 1 2 S D P 2 5 6   0 7 / 1 7 / 0 2   Follow the steps in this section to get started quickly and verify everything is working correctly.   Installing the Software   1. Insert the Axiom 68HC12 support CD in your PC. If the setup program does not start, run   the file called "SETUP.EXE" on the disk.   2. Follow the instructions on screen to install the support software onto your PC.   You should at minimum install the AxIDE for Windows software.   3. The programming utility “AxIDE” requires you to specify your board. You should select   "CML12SDP256" version of your development board.   Board Startup   Follow these steps to connect and power on the board for the default Monitor operation. This   assumes you're using the provided AxIDE utility (installed in the previous section) or a similar   communications terminal program on your PC. If you're using a different terminal program   than the one provided, set it's parameters to 9600 baud, N,8,1.   1. Set the CML12Sxxx board Option jumpers to default positions:   MEM-EN = IN, ECS = IN, JP1 = IN, NOAUTO (SPARE) = IN   MODC = Out, JP2 = do not care, see COM Ports.   2. Connect one end of the supplied 9-pin serial cable to an available serial COM port on   your PC. Connect the other end of the cable to the P-COM port on the CML12Sxxx board.   3. Apply power to the board by plugging in the power adapter that came with the system.   4. If everything is working properly, you should see a message to “PRESS KEY TO START   MONITOR…” in your terminal window. Press the ENTER key and you should see:   Axiom MON12 - HC12 Monitor / Debugger V256.x   Type "Help" for commands…   > _   5. Your board is now ready to use! If you do not see this message prompt, or if the text is   garbage, see the TROUBLESHOOTING section at the end of this manual.   Support Software   There are many programs and documents on the included HC12 support CD you can use with   the CML12Sxxx board. You should install what you want from the main menu then browse   the disk and copy what you like to your hard drive.   4 C M L 1 2 S D P 2 5 6   0 7 / 1 7 / 0 2   At minimum, you should install the AxIDE program. This provides the flash programming   utility and communication with the board via the COM port and the supplied serial cable. This   program includes a simple terminal for interfacing with other programs running on the   CML12Sxxx and information from your own programs that send output to the serial port.   Also on the disk are free assemblers AS12 and MCU-EZ, the open source GNU C/C++   compiler tools for HC11/12, example source code, and other useful software. The introductory   tutorial in this manual uses the free AS12 assembler integrated into the AxIDE program. This   is a simple assembler with limited capability. For a more powerful assembly tool, install the   Motorola MCUez program from the CD. This will allow you to use PAGED program memory in   your application.   Software Development   Software development on the CML12Sxxx can be performed using either the MON12 monitor   installed in internal FLASH of the MCU, a third party debugger (Debug12, NoICE,   CodeWarrior, etc.) or a Background Debug Module (BDM) connected to the BDM PORT   connector. Any of these tools can be used to assist in creating and debugging your program   stored in RAM (see Memory Map).   After satisfactory operation running under a debugger, your program can be written to Internal   Flash Memory using the included programming utilities. The Mon12 firmware in the MCU   flash provides the interrupt vectors in Ram memory and an Autostart feature to launch your   application. Your program may then run automatically whenever the board is powered on or   RESET is applied.   TUTORIAL   This section was written to help you get started developing software with the CML12SXXX   board. Be sure to read the rest of this manual as well as the documentation on the disk if you   need further information.   The following sections take you through the complete development cycle of a simple "hello   world" program, which sends the string "Hello World" to the serial port.   Creating Source Code   You can write source code for the CML12SXXX board using any language that compiles to   Motorola 68HC12 instructions. Included on the software disk is a free Assembler, AS12.   You can write your source code using any ASCII text editor. You can use the free EDIT,   WordPad, or Notepad programs that come with your computer. Note that the source file must   be simple ASCII text without any document formatting added. Once your source code is   written and saved to a file, you can assemble or compile it to a Motorola S-Record (hex)   format. This type of output file usually has a .MOT, .HEX or .S19 file extension and is in a   format that can be read by the programming utilities and programmed into the CML12SXXX   board.   5 C M L 1 2 S D P 2 5 6   0 7 / 1 7 / 0 2   It is important to understand the development board's use of Memory and Addressing when   writing source code so you can locate your code at valid addresses. For example, when in   debug mode, you should put your program CODE in External RAM. In assembly language,   you locate the code with ORG statements in your source code. Any lines following an ORG   statement will begin at that ORG location, which is the first number following the word ORG,   for example: ORG $4000. You must start your DATA (or variables) in a RAM location unused   by your program, for example: ORG $1000.   In “debug mode” you’ll be using a debugger utility (Mon12, NoICE, etc) which will handle   initialization, interrupts vectors (reset, timers, etc), and the STACK.   When finished   debugging, you must add code to your application to handle the initialization of the CPU,   STACK and possibly the Interrupt vectors. Some initialization is required to set the bus   frequency, bus mode, internal EEprom and Flash memory programming clock rates, and   others, see the CML-INIT.ASM file for a sample. Set the stack at the top of your available   internal RAM below the Ram interrupt vector table, for example $3F80, in assembly this would   be LDS #$3F80. Also install the RESET vector address in the Auto Start area, see the   chapter in this manual.   If you are applying a software development tool that also provides a BDM cable interface to   the board, the monitor installed in the flash is not required. The BDM software tools may have   the capability to erase and program the flash memory. If this is the case, you may develop   code in the external ram memory or internal flash without applying the monitor resources. The   MON12 S record is provided on the support CD to program into the flash if desired. The   BDM will allow locating programs in memory and applying resources reserved for the   monitors.   A look at the example programs on the disk can make all of this clearer. If you're using a   compiler instead of an assembler, consult the compiler documentation for methods used to   locate (MAP) your code, data and stack.   Assembling source code   An example program called “HELLO.ASM” is provided under the \EXAMPLES\CML12   directory of the CD and if you installed AxIDE, under that programs \EXAMPLEdirectory. You   must use the example for the MCU type installed on the CML12Sxxx board. For example use   the CML12S-DP256 example on the DP256 version board.   You can assemble source code by using the AxIDE "BUILD" button or command line tools   under a DOS prompt by typing:   AS12 HELLO.ASM –L HELLO   Most compilers and assemblers allow many command line options so using a MAKE utility or   batch file is recommended if you use this method. Run AS12 without any arguments to see all   the options, or see the AS12.TXT file on the disk.   The utility software, AxIDE, provided with this board contains a simple interface to this   assembler. Use it by selecting "Build" from its menu. This will prompt you for the file to be   assembled. NOTE: You must select your board from the pull down menu first, or it may not   build correctly.   6 C M L 1 2 S D P 2 5 6   0 7 / 1 7 / 0 2   DO NOT use long path or file names (> 8 characters). The free assembler is an older DOS   based tool that does not recognize them.   If there are no fatal errors in your source code, 2 output files will be created:   HELLO.S19   a Motorola S-Record file that can be loaded or programmed into   memory   HELLO.LST   a common listing file which provides physical address information   with resulting opcode and operand information. Warnings and error   messages are provided with a summary at the end of the file.   The listing file is especially helpful to look at when debugging your program. If your program   has errors, they will be displayed in the listing or fatal errors will prevent output from being   generated. The end of the listing file generally provides a count of errors or warnings in the   file.   If you prefer a windows integrated programming environment, try the Motorola MCU-EZ tools.   Refer to the MCU-EZ documentation on the disk for more information.   Also, a port for the free GNU C compiler and tools for the HC12 is available on the CD under   support HC12 Paging operation, check the web site for updates.   Running your application   After creating a Motorola S-Record file you can "upload" it to the development board for a test   run. The provided example “HELLO.ASM” was created to run from external RAM so you can   use the MON12 Monitor to test it without programming it into Flash.   If you haven’t done so already, verify that the CML12Sxxx board is connected and operating   properly by following the steps under “GETTING STARTED” until you see the Mon12 prompt,   then follow these steps to run your program:   1. Press and release the RESET button on the CML12Sxxx board. You should see the   PRESS ANY KEY message. Hit the return key ¿ to get the monitor prompt.   2. Type LOAD ¿   This will prepare Mon12 to receive a program.   3. Select Upload and when prompted for a file name select your assembled program file in s-   record format that was created in the previous section called: HELLO.S19   Your program will be sent to the board through the serial port.   4. When finished loading you will see a done message and the > prompt again. Type GO   4000 ¿   This tells MON12 to execute the program at address $4000 hex, which is the start of our   test program.   5. If everything is working properly you should see the message “Hello World” echoed back   to your terminal screen. Press RESET to return to the monitor.   6. If you do not get this message, see the TROUBLESHOOTING section in this manual   7 C M L 1 2 S D P 2 5 6   0 7 / 1 7 / 0 2   You can modify the hello program to display other strings or do anything you want. The   procedures for assembling your code, uploading it to the board and executing it remain the   same. MON12 has many features such as breakpoints, memory dump and modify and simple   program trace (no redirect of the PC is followed). Type HELP at the MON12 prompt for a   listing of commands or consult the Mon12 documentation on the disk for more information.   For a more powerful debugger with many advanced features such as source level debugging,   you can use the NoICE debugger software. A full-featured demo version is provided on the   CD, which you can use to get started. NOTE: To use this program instead of MON12 you   must set the Autostart, see the NOICE chapter for details.   Programming HCS12 Flash EEprom   After debugging, you can program your application into Flash Memory so it executes   automatically when you apply power to the board as follows:   1. Make a backup copy of HELLO.ASM then use a text editor to modify it.   2. Remove the comment ';'character before one of the following lines to initialize the stack   pointer which is necessary when running outside of a debugger:   LDS   #$3F80 ; initialize stack location…   3. Re-Assemble HELLO.ASM as described in the "Assembling Source Code" section.   4. Select Program from the AxIDE menu and follow the message prompts. When prompted   for a file name, enter the new HELLO.S19 file.   5. Press the RESET button on the board before clicking OK. When prompted to Erase,   choose Yes.   6. When finished programming, Reset the board to get the Monitor prompt again. Use the   monitor AUTO command to set the Autostart Reset vector:   >AUTO 4000 ¿   AutoStart ON, effective address = 4000   > 7. Verify AUTO OFF option jumper is not installed. (Spare jumper on revision C boards)   8. RESET or re-apply Power to the board. Your new program should start automatically and   the “Hello World” prompt should be displayed in the terminal window.   To return to the MON12 monitor program, install the AUTO OFF option jumper then press   RESET. Execute the monitor command NOAUTO to disable the Autostart and allow removal   of the Auto Off option jumper for normal operation.   8 C M L 1 2 S D P 2 5 6   0 7 / 1 7 / 0 2   MON12 OPERATION   Mon12 is an embedded monitor / debug utility that allows loading a compiled software   program (S record) into Ram memory for testing and debug. The monitor may control the   execution of the software by applying the SWI software interrupt service. Other features allow   memory and register examination or modification.   Communication with the monitor is provided on the HCS12 SCI0 serial port or COM port on   the development board. Default settings are 9600 baud with 8/n/1 bit settings. Flow control is   not provided so the host PC communication software should be set to None or Hardware flow   control. AxIDE utility software is recommended for use on a windows based host PC.   The monitor relies on resources from the HCS12 target to provide the monitor environment.   The resources include 16K bytes of flash memory and 512 bytes of internal ram memory. The   user must respect the monitor's memory map when applying the monitor to help debug code.   Restricted memory areas:   Monitor Program space: 0xC000 - 0xFFFF Flash or Flash Page $3F.   Monitor Data space:   Monitor Console:   Monitor Autostart:   0x3E00 - 0x3FFF, Internal Ram.   COM Port and SCI0.   0xFEC - 0xFEF, Internal EEprom.   Monitor application provides for redirection of interrupt vectors through the ram based   interrupt table, initialization of SCI0 serial port, initialization of HCS12 flash and EEprom   programming clock rates, initialization of 8 MHz E clock from 4Mhz reference crystal, and   detection of auto start enabled operation. The HCS12 memory map is fixed under monitor   operation.   The monitor provides for interrupt vectors in the monitor data space from 0x3F8A - 0x3FFD.   The vectors are in the same order as the default hardware table for the HCS12 located at   address 0xFF8A - 0XFFFD (see table). The Reset vector is reserved, user should apply Auto   Start for application starting from Reset.   MON12 operation notes:   1. CML12S-DP256 monitor application configures target HCS12 for 8MHz E clock, lower   flash block (page $3E) disabled from memory map, and external access clock stretch set   to 3 cycles. User can increase clock speed in application by modifying PLL control and   setting new baud rate for serial port. Defaults will return whenever monitor is Reset.   2. Mon12 will not trace into interrupts. To trace an interrupt service set a breakpoint in the   service routine and then trace.   3. Mon12 trace is limited to expecting the next linear address. Program counter modification,   branches, calls, or subroutines will not trace correctly.   4. Monitor start-up procedure:   9 C M L 1 2 S D P 2 5 6   0 7 / 1 7 / 0 2   A) Determine if Auto Start in enabled and proceed to vector if not a value of $FFFF.   B) Set Stack, Initialize memory map and SCI0 port and send prompt.   C) Receive first character from Console port and execute monitor if ASCII text / command,   else start utility mode for programming services.   Mon12 Monitor Commands   AUTO [<Address>]   NOAUTO   Enable Auto start, address is the vector   Disable Auto start   BF <StartAddress> <EndAddress>   [<data>]   Fill memory with data   BR [<Address>]   Set/Display user breakpoints   BULK   CALL [<Address>]   G [<Address>]   HELP   LOAD [P]   MD <StartAddress> [<EndAddress>]   Erase entire on-chip EEPROM contents   Call user subroutine at <Address>   Begin/continue execution of user code   Display the Mon12 command summary   Load S-Records into memory, P = Paged S2   Memory Display Bytes   MM <Address>   MW <Address>   MOVE <StartAddress> <EndAddress>   <DestAddress>   Modify Memory Bytes (8 bit values)   Modify memory Words (16 bit values)   Move a block of memory   RD   RM   Display all CPU registers   Modify CPU Register Contents   Trace until address   STOPAT <Address>   T [<count>]   Trace <count> instructions   MON12 Interrupt Support   All interrupt services under MON12 are provided through the ram vector table, see Table 2.   Each location in the table is initialized to a value of $0000 to cause the trap of an unscheduled   interrupt. Any nonzero value will allow the interrupt to proceed to the user's service routine   that should be located at the provided address value. Interrupt service delay is plus 21 cycles   over standard interrupt service.   To use vectors specified in the table, the user must insert the address of the interrupt service   routine during software initialization into the ram interrupt table. For an example, for the IRQ   vector, the following is performed:   Example:   IRQ Service routine label = IRQ_SRV   Ram Vector Table address is defined in table below, IRQ vector definition:   VIRQ EQU $3EF2 ; define ram table vector location   Place IRQ service routine address in the table:   MOVW #IRQ_SRV,VIRQ   10   C M L 1 2 S D P 2 5 6   0 7 / 1 7 / 0 2   This vector initialization should remain after debug when auto start will be applied for   launching the user's application. Note that the user interrupt service routines must be located   in the $4000 - $7FFF address range for correct operation. See Autostart for more details.   MON12 and NOICE Memory Map   ADDRESS TYPE MEMORY   MEMORY APPLICATION   $C000 -   $FFFF   FLASH   MON12, NOICE, and Utility firmware located in internal   flash, Page $3F.   $8000 -   $BFFF   External Ram   User Paged Program Memory space, pages $20 - $2E.   Note: Pages $30 - $3F reside in the internal flash.   User Program Memory, emulate fixed page $3E.   $4000 -   $7FFF   External Ram   Internal Ram   Internal Ram   Internal Ram   $3F8C -   $3FFD   Ram Interrupt Vector Table   $3E00 -   $3F8B   Monitor reserved ram memory. Stacks and variables.   User Internal Ram memory   $1000 -   $3DFF   $0400 -   $0FEB   Internal EEprom User EEprom memory, Monitor reserves $FEC - $FEF for   Autostart, user should avoid $FF0 - $FFF memory use.   $0000 -   $03FF   HCS12   Registers   Monitor or user access to control registers.   NOICE OPERATION   development environment that is supported by the NOICE host PC software. This   development environment has the capability to provide symbolic debug for C source codes   and compilers for a low cost. A fully functional software version is available on the support   CD that will operate in demonstration mode. The user should register the software and   download the latest version from the above web site to get full support. See the NOICE   documentation for details.   11   C M L 1 2 S D P 2 5 6   0 7 / 1 7 / 0 2   The CML12S-DP256 provides the NOICE debug monitor kernel as a subset of the MON12   monitor in reserved flash memory. User may apply the NOICE development system by setting   the MON12 Autostart for the $F800 vector, reset the board and launch the NOICE host   software on the PC. The NOICE monitor kernel applies the same resources, memory map,   and ram interrupt table as the MON12 monitor. NOICE operation notes:   Baud Rate = 19.2K baud 8/n/1   E clock frequency = 24MHz   BDM OPERATION   The CML12S-DP256 board will emulate supported HC12 device internal flash memory in   external ram. This feature allows BDM (Background Debug Modules) such as the AX-BDM12   to load and control the execution of code being developed without the necessity of the internal   flash memory being programmed many times during the development process. This feature   improves updating time and allows the use of may software breakpoints instead of being   limited to only 2 hardware breakpoints.   Operation Notes for BDM use:   1)   2)   CML12S-DP256 MODC Option Jumper should be installed if a BDM is connected to   the BDM Port. Default Mode is single-chip so the MODC option installed will force   Special Single-chip Mode on Reset.   The BDM initialization of the HC12 should set the correct operating MODE (Expanded   Wide for memory access). The EME, EMK, LSTRB, RW, ROMEN and Stretch   configuration bits should be set for proper external memory access operation. The   Axiom support CD contains sample set-up macros for the AX-BDM12.   3)   While using the BDM, the user has full control over the memory map and hardware   resources of the HCS12. The no resources are required to be reserved for monitor use   and the user can apply the actual HCS12 interrupt vector table located at 0xFF8C -   0xFFFF.   AUTOSTART   The MON12 Monitor allows an Autostart operation to launch user applications programmed   into the HCS12 internal flash fixed page ($3E) addresses 0x4000 - 0x7FFF from Reset. The   Autostart mask and vector are stored in the nonvolatile internal EEprom at addresses $FEC -   $FEF. The monitor provides special commands, AUTO and NOAUTO, to enable and disable   the Autostart on the next Reset sequence. After an Autostart is enabled with a valid user   vector, user application code will be started after Reset instead of the monitor or utility   programs. To recover monitor operation after Autostart has been enabled, the AUTO OFF   (Spare option on Revision C boards) option jumper can be installed or a low level applied to   the XIRQ signal and Reset applied.   12   C M L 1 2 S D P 2 5 6   0 7 / 1 7 / 0 2   User application must perform all initialization including Stack setting, hardware startup, and   external memory bus enable if needed, when the Autostart is applied. MON12 Ram Interrupt   Vector table must also be applied in the same manner as under MON12 supervision or   application interrupts will be trapped instead of serviced. See the CML12S.asm file for   sample start-up initialization code.   Developing an application under MON12 or NOICE for Autostart should follow these steps:   1) Follow the MON12/ NOICE memory map and apply startup initialization and interrupt   service routines in the 0x4000 - 0x7FFF memory area.   2) After development by applying ram memory program pages $20 - $2D, user should   relocate the paged program code to internal flash pages $30 - $3D for programming into   the flash memory. The user code in memory area 0x4000 - 0x7FFF will translate to the   lower fixed flash page $3E for programming operations. User variables and stack, as well   as interrupt vectors should stay in the internal ram area 0x1000 - 0x3E80 (monitor stack   and variables not needed). Then set the Autostart vector for application launching.   3) If the Autostart application fails to start after programming, user should review all   initialization and memory mapping first. Make sure the AUTO OFF (Spare) Option jumper   is idle or open. If the application applies the XIRQ interrupt, the interrupt must be idle   (high level) during any Reset sequence. Hardware may need to be applied if XIRQ signal   level cannot be guaranteed high during Reset.   4) To perform a test Autostart and apply the external ram for program space the following   precaution should be observed:   Expanded Wide Mode bus operation must be enabled from internal Ram space before   access to the external ram can be performed. Use CML12S.asm file for an example   and locate the PEAR/MODE Register write in internal ram space 0x1000 - 0x3F80.   Program pages $20 - $2D should be applied. Code must be loaded and tested without   powering down the development board (use Reset Switch).   OPTIONS and JUMPERS   MEM_EN   The MEM_EN option jumper is installed by default and enables the external ram memory on   the expanded HCS12 address and data bus. Removing the MEM_CS option jumper will allow   single-chip I/O port type operation of HCS12 ports A, B, E, and K (no bus enabled) without   external memory interference.   ECS   The ECS option installed enables the Emulation Chip Select signal from the HCS12 to drive   the upper address lines from HCS12 Port K to the external Ram on the CML12S board. With   the option open or idle, only the linear 64K byte address map is available on the external   address / data bus. ECS installed is required to emulate flash program pages in the external   ram memory.   13   C M L 1 2 S D P 2 5 6   0 7 / 1 7 / 0 2   MODC   The MODC option jumper provides Special Mode enable during Reset. This option must be   open or idle when operating with the MON12 or NOICE monitors. If a BDM cable is applied to   BDM port, the MODC option must be installed to enable Special Mode. Failure to install the   MODC jumper during BDM application may cause communication problems with the host.   AUTO OFF / spare   The AUTO OFF (Spare on REV C. board) option jumper installed defeats the Autostart   operation so the MON12 monitor will provide a command prompt. The jumper applies a   ground potential to the XIRQ* interrupt line. User should only install the jumper to restore   monitor operation, perform the MON12 NOAUTO command to disable the Autostart, and   remove or idle the jumper. MON12 operation will then be provided on subsequent Reset   conditions.   MODE   The MODE option jumper is not installed on the CML12S-DP256 board and is hard connected   by circuit copper trace for Single-chip Mode operation of the CPU. Both the MODA and MODB   signals are terminated by this option. Due to the restriction that the HCS12 internal flash   memory is the only nonvolatile program memory provided on the board, single Chip Mode is   default. All other Modes can be enabled under software control from this mode of operation.   The MODE option jumper may be installed by the user by cutting the hard trace and applying   2 header pins with a shunt jumper. With the shunt jumper removed, the Reset mode will then   be Normal Expanded Wide. (Note: mask set 1K79X and earlier will not fetch the Reset vector   from external memory in this mode).   OSC_SEL   The OSC_SEL option jumper is not installed on the CML12S-DP256 board. The default   configuration is for the provided 4MHz reference crystal to provide the HCS12 oscillator. If   the user requires an external clock to be applied, two header pins and shunt jumper can be   applied to select the alternate clock source. User should refer to the HCS12 User Guide and   CML12S board schematic for proper application of the external clock.   ROM_OFF   The ROM_OFF option jumper is not installed on the CML12S-DP256 board. The default   configuration is that the internal flash memory of the HCS12 is enabled at Reset. The user   must add external nonvolatile memory to the CML12S board to take advantage of this option.   If the external memory is applied, the user may install the two header pins and shunt jumper to   select internal or external memory use form Reset.   14   C M L 1 2 S D P 2 5 6   0 7 / 1 7 / 0 2   JP1 and JP2   JP1 and 2 option jumpers provide an easy method of connecting or isolating the HCS12 SCI0   and SCI1 serial channel RXD pins respectfully from the provided on-board RS232 transceiver.   To apply the RXD pins on the SCI channels for other user applications requires that the   transceiver driver be removed from the HCS12 pin. User may then apply signals to the   respective pins at the MCU PORT connector without driver conflict. Please note that the on-   board monitor(s) require HCS12 SCI channel 0 (JP1 installed) for user interface.   CUT-AWAY OPTIONS 1 - 6   CUT-AWAY options allow the user to disconnect dedicated HCS12 I/O port resources from   development board peripherals. The CUT-AWAY options also allow for establishing the   connection again by installing surface mount 1206 size 0 ohm resistors or mod wire with the   use of a soldering iron. Normal operation of the development board generally does not   require any manipulation of the CUT_AWAY options.   #1 Cut-Away: HCS12 Port S5/MOSI signal to the LCD_PORT shift register.   #2 Cut-Away: HCS12 Port S7/SS0 signal to the LCD_PORT shift register.   #3 Cut-Away: HCS12 Port S6/SCK signal to the LCD_PORT shift register.   #4 Cut-Away: HCS12 Oscillator Crystal ground, if another crystal is applied by the user this   connection may require a capacitor to be installed. Refer to the HCS12 CGM module   information.   #5 Cut-Away: HCS12 Port M0/CAN_RXD0 signal to the CAN port transceiver.   #6 Cut-Away: CAN Port Transceiver enable connection to ground. This connection enables   the CAN Port transceiver output to the CAN bus at all times. If the user wants to apply output   enable or slew rate control to the transceiver, this option should be cut and 1206 size resistor   applied for slew rate or a HCS12 I/O port applied for output enable control. See the   PCA82C250 data sheet for application information.   PORTS AND CONNECTORS   TB1 and J1 Power   The TB1 and J1 connectors provide power input to the board or if J1 is used for input, TB1   maybe used to source additional circuitry. The J1 power jack accepts a standard 2.0 ~ 2.1mm   center barrel plug connector (positive voltage center) to provide the +VIN supply of +7 to +20   VDC @ 80ma minimum (+9VDC nominal). TB1 provides access to the +VIN, GND (power   ground), HCS12 core VDD, and +5V power supplies. The CML12Sxxx power supply will   provide 50ma of +5V for user application. +VIN input power should only be applied by J1 or   TB1, not both or a supply conflict may occur and the CML12Sxxx board could be damaged.   15   C M L 1 2 S D P 2 5 6   0 7 / 1 7 / 0 2   The VDD supply is for reference or external 2.5V input only and should not be loaded by   external circuitry or damage to the HCS12 device may occur.   MCU_PORT   +5V   PT7   PT5   PT3   PT1   GND   PT6   PT4   PT2   60 59   58 57   56 55   54 53   52 51   50 49   48 47   46 45   44 43   42 41   40 39   38 37   36 35   34 33   32 31   30 29   28 27   26 25   24 23   22 21   20 19   18 17   16 15   14 13   12 11   10 9   The MCU_PORT provides access to the peripheral   features and I/O lines of the HCS12.   ** Note signals with alternate connections on the   development board:   PT0   ** PK0   ** PK2   ** PK4   GND   PK1 **   PK3 **   PK5 **   +5V   PP0   PP2   PP4   PP6   PM0 **   PM2   PM4   PB0 - 7 [D0 - 7] provide address / data on the   expanded HCS12.   PP1   PP3   PP5   PP7   PK0 - 5 [XA14 - XA19] provide high order paged   address lines on the expanded HCS12.   PM0 - 1 [CAN RXD0, TXD0] CAN channel 0 to CAN   Port transceiver.   ** PM1   PM3   PM5   PM7   PJ1   PJ7   PS0 - 1 [COM Port RXD0, TXD0]   PS2 - 3 [JP3 Port RXD1, TXD2]   PM6   PJ0   PJ6   ** PS7   ** PS5   ** PS3   ** PS1   GND   PS6 **   PS4 **   PS2 **   PS0 **   +5V   VREGEN   PB6/D6 **   PB4/D4 **   PB2/D2 **   PB0/D0 **   +5V   PS4 - 7 [SPI Port] provides LCD_PORT serial   interface.   GND   ** PB7/D7   ** PB5/D5   ** PB3/D3   ** PB1/D1   GND   8 7   6 5   4 3   2 1   ANALOG PORT   PAD0/AN0   PAD1/AN1   PAD2/AN2   PAD3/AN3   PAD4/AN4   PAD5/AN5   PAD6/AN6   PAD7/AN7   VRH   PAD8/AN8   PAD9/AN9   PAD10/AN10   PAD11/AN11   PAD12/AN12   PAD13/AN13   PAD14/AN14   PAD15/AN15   VRL   1 2   3 4   5 6   The ANALOG port provides access to the Port AD0 and   Port AD1 Analog-to-Digital input lines.   PAD0 – PAD15 HC12 Port AD0-15 is an input port or   AN0 - AN15 A/D Converter inputs.   7 8   9 10   11 12   13 14   15 16   17 18   19 20   VRH / VRL HC12 A/D Converter Reference Pins. See   HCS12 A/D User guide. To provide an external   reference voltage, R3 and R4 need to be removed to   apply external VRH or VRL respectfully. See schematic.   VDDA   GND   16   C M L 1 2 S D P 2 5 6   0 7 / 1 7 / 0 2   BUS_PORT   GND   PA2/D10   PA1/D9   PA0/D8   A0   D11/PA3   D12/PA4   D13/PA5   D14/PA6   D15/PA7   A2   A3   A4   A5   A6   A7   A13   A14   A15   PE7/NOACC **   PE1/IRQ*   PE0/ XIRQ*   RESERVED   RESERVED   RESET*   1 2   3 4   5 6   7 8   The BUS_PORT supports off-board memory devices   while the HCS12 is in expanded mode.   PA0/D8 - PA7/D15 High Byte Data Bus in Wide   Expanded Mode. Port A in Single Chip Mode.   9 10   A1   A10   OE*   A11   A9   A8   A12   WE*   11 12   13 14   15 16   17 18   19 20   21 22   23 24   25 26   27 28   29 30   31 32   33 34   35 36   37 38   39 40   A0 – A15 Latched Memory Addresses 0 to 15.   OE* Memory Output Enable signal, Active Low. Valid   with ECLK and R/W high.   WE* Memory Write Enable signal, Active Low. Valid   with ECLK high and R/W low.   RESET* HCS12 active low RESET signal.   PE3/LSTRB*   PE5/MODA   PE6/MODB   +5V   PE2/RW   PE4/ECLK   GND   KEYPAD / PORT H   The KEYPAD / PORT H connector provides interface for the HCS12 port H or applying a   keypad such as the Axiom Mfg. HC-KP. When applied as a KEYPAD connector, the interface   is for a passive 4 x 4 matrix (16 key) keypad device.   PH0   PH1   PH2   PH3   PH4   PH5   PH6   PH7   This interface is implemented as a software key scan. Pins PH0-3 are   used as column drivers which are active high outputs. Pins PH4-7 are   used for row input and will read high when their row is high.   1 2 3 4 5 6 7 8 See the file Key12Dx.ASM for an example program using this   connector.   P_COM1 and P_COM2   1 TXD0   RXD0   4 6 7 8 9 X 1 The COM-1 port has a Female DB9 connector that interfaces to   the HCS12 internal SCI0 serial port via the U11 RS232   transceiver. It uses a simple 2 wire asynchronous serial   interface and is translated to RS232 signaling levels.   1,4,6 connected and 7,8 connected   2 6   3 7   4 8   5 9   GND   17   C M L 1 2 S D P 2 5 6   0 7 / 1 7 / 0 2   JP1 will isolate the SCI0 RXD pin from the transceiver.   The 1,4,6,7,8, and 9 pins provide RS232 flow control and status. These are connected on the   on the bottom of the development board to provide NULL status to the host. User may isolate   pins and provide flow control or status connection to the host by applying HCS12 I/O signals   and RS232 level conversion.   P_COM2   P_COM2 is a 3 pin header that provides the HCS12 SCI1 serial port translated to RS232   signal levels. A solder cup DB9 style connector may be installed with wires and connector to   apply this channel. JP2 option will isolate the SCI RXD pin from the transceiver.   P_COM2 pin connections:   Pin 1 = TXD   Pin 2 = RXD   Pin 3 = GND / common   CAN PORT   This port provides a CAN Bus interface associated with HCS12 CAN channel 0. The port has   a CAN Transceiver (Philips PCA82C250) capable of up to 1M Baud data rate. The user may   isolate the HCS12 CAN channel 0 from the transceiver by CUT-AWAY option 5.   CAN Port Connections   GND   The CAN Port connector provides an interface to the MSCAN12   channel 0 in the HCS12 microcontroller.   1 2 3 4 CAN-H   CAN-L   +5V   CAN BUS TRANSMIT ENABLE   The CAN port transceiver transmit driver is enabled for maximum drive and minimum slew rate   by default. The drive and slew rate may be adjusted by cutting CUT-AWAY #6 and adding a   1206 size surface mount resistor, see the PCA82C250 data sheet for more information.   CAN Bus transceiver transmit enable control can be applied to the port by the RS tie pad.   The user should select an available HCS12 I/O port to perform the transmit enable function   and connect it from the MCU_PORT pin to RS pad as required. The CUT_AWAY #6 must be   open to apply transmit enable control. The transmit enable signal to the CAN transceivers   is active logic low.   18   C M L 1 2 S D P 2 5 6   0 7 / 1 7 / 0 2   CAN BUS TERMINATION   The CAN port provides RC11,12, and 13 1206 SMT size termination resistors on the bottom of   the CML12Sxxx board that are not installed at the factory. The termination resistors provide   optional bias and termination impedance for the CAN bus connected to the CAN Port. Type of   wire media, data rate, length of wire, and number of CAN bus nodes can all effect the   requirement or value of the termination for the CAN bus. User should refer to particular   application for termination requirements.   RC11 CAN-H Bias Resistor: Provides bias to ground potential.   RC12 CAN-L Bias Resistor: Provides bias to +5V potential.   RC13 CAN Termination Resistor: Provides end point termination between CAN-H and CAN-   L signal.   P1 - P4 HCS12 Header Ring   P1 - P4 provide a header ring for all I/O of the HCS12 device. These connectors are not   installed. User should refer to the CML12S board schematic diagram for connector pin   connections. All HCS12 I/O is available from the other I/O Ports on the board.   LCD_PORT   The LCD_PORT interface is connected to the HCS12 SPI-0 port and applies a serial shift   register to convert the data to parallel interface for LCD input. This is required due to the fast   timing characteristics of the HCS12 data bus and the slow timing of the standard LCD   Modules. Example LCD Port assembly language driver software is provided on the support   CD to demonstrate typical LCD module operation using this technique.   The interface supports all OPTREXä DMC series and similar displays with up to 80   characters in 4 bit bus mode and provides the most common pinout for a dual row rear   mounted display connector. The LCD module VEE or contrast potential is 0 Volts on this   board. The LCD module type should be TN (Standard Twist) style and Reflective to support   this VEE potential. The Axiom Mfg. HC-LCD is also compatible. The LCD Module is   configured in a Write only mode, it is not possible to read current cursor position or the busy   status back from the module.   LCD_PORT Connector   +5V   RS   EN   2 4 6 8 1 3 5 7 9 GND   SPI data bit definitions to LCD Port:   VEE-GND D0 - D3 = DB4 - 7, LCD data   R/W-GND D4 - D5 = Spare pins S1 and S2, not connected   DB0   DB2   DB1   D6 = RS, 0 = LCD Command, 1 = LCD Data   D7 = EN, 1 = LCD enable.   DB0 -DB3 are not applied and have 10K pull-down   resistance.   DB3 10   DB5 12   DB7 14   11 DB4   13 DB6   19   C M L 1 2 S D P 2 5 6   0 7 / 1 7 / 0 2   NOTES:   1) The LCD write requires 3 SPI transfers. Transfer 1 provides data 0 - 3 and RS (register   select) value. Transfer 2 provides the same data with the EN (D7) bit set. Transfer 3   provides same data with the EN bit clear.   2) Resistor R25 can be removed to apply and external VEE potential.   3) CUT-AWAY 1 - 3 provide a means to isolate the LCD Port from the HCS12 SPI channel.   BDM PORT   The BDM port is a 6 pin header compatible with the Motorola Background Debug Mode (BDM)   Pod. This allows the connection of a background debugger for software development,   programming and debugging in real-time without using HC12 I/O resources.   BGND   GND   /RESET   +5V   See the HC12 Technical Reference Manual for complete   documentation of the BDM.   1 2   3 4   5 6   A Background Debug Module is available from the manufacturer.   TEST POINTS   The following test points are provided on the development board:   EXTAL : HCS12 oscillator or external clock input pin.   XTAL : HCS12 oscillator output pin.   XFC : HCS12 PLL reference voltage and filter.   VDDPLL : HCS12 PLL voltage source test point.   20   C M L 1 2 S D P 2 5 6   0 7 / 1 7 / 0 2   TROUBLESHOOTING   The CML12SXXX board is fully tested and operational before shipping. If it fails to function   properly, inspect the board for obvious physical damage first. Ensure that all IC devices in   sockets are properly seated. Verify the communications setup as described under GETTING   STARTED and see the Tips and Suggestions sections following for more information.   The most common problems are improperly configured communications parameters, and   attempting to use the wrong COM port.   1. Verify that your communications port is working by substituting a known good serial   device or by doing a loop back diagnostic.   2. Verify option jumpers JP1 is installed and MODC is open / idle.   3. Verify Autostart is not enabled. Apply a ground level to the XIRQ signal on the   BUS_PORT and press the Reset switch. If the monitor prompts, erase the internal   EEprom by performing a BULK command or disable the Autostart by following the   procedure in the Autostart chapter.   4. Verify the power source. You should measure a minimum of 9 volts between the GND   and +VIN connections on the TB1 power connector with the standard power supply   provided.   5. If no voltage is found, verify the wall plug connections to 115VAC outlet and the power   connector.   6. Verify the logic power source. You should measure +5 volts between the GND and +5V   connections on the TB1 power connector. If the +VIN supply is good and this supply is   email for instructions and provide board name and problem.   7. Disconnect all external connections to the board except for COM1 to the PC and the wall   plug.   8. Make sure that the RESET line is not being held low.   Check for this by measuring the RESET Signal on the BUS_PORT.   9. Verify the presence of a 4MHz square wave at the EXTAL pin or 8MHz E clock signal if   possible.   describe problem.   21   C M L 1 2 S D P 2 5 6   0 7 / 1 7 / 0 2   Tips and Suggestions   Following are a number of tips, suggestions, and answers to common questions that will solve   many problem users have with the CML12SXXX development system. You can download the   latest software from the Support section of our web page at:   Utilities   · · · If you’re trying to program memory or start the utilities, make sure all jumpers are   correct.   Be certain that the data cable you’re using is bi-directional and is connected securely to   both the PC and the board. Also, make sure you are using the correct serial port.   Make sure the correct power is supplied to the board. You should only use a 9 volt,   200mA minimum adapter or power supply. If you’re using a power strip, make sure it is   turned on.   · Make sure you load your code to an address space that actually exists. See the   Memory Map if you’re not sure. The MEM_EN and ECS options change the memory   map.   · · If debugging under Mon12, make sure you're not over-writing internal RAM used by it.   If you’re running in a multi-tasking environment (such as Windows™) close all   programs in the background to be certain no serial conflict occurs.   Code Execution   · Under Mon12, breakpoints may not be acknowledged if you use the CALL command.   You should use one of the GO command instead.   · Check the Autostart mask and reset vector located in EEprom at 0xFEC - 0xFEF.   These 2 words contain the enable mask and address where user application execution   will begin when the unit is powered on.   · · When running your code stand-alone, you must initialize ALL peripherals used by the   micro, including the Stack, Serial Port, and pseudo Interrupt vectors etc.   You must either reset the COP watchdog timer in the main loop of your code or disable   it when not running under Mon12 or BDM mode. The micro may enable this by default   and if you don't handle it your code will reset every few 100ms.   22   C M L 1 2 S D P 2 5 6   0 7 / 1 7 / 0 2   TABLE 1. LCD Command and Character Codes   Command codes are used for LCD setup and control of character and cursor position. All   command codes are written to LCD panel address $B5F0. The BUSY flag (bit 7) should be   tested before any command updates to verify that any previous command is completed. A   read of the command address $B5F0 will return the BUSY flag status and the current display   character location address.   Command   Clear Display, Cursor to Home   Cursor to Home   Code   $01   $02   Delay   1.65ms   1.65ms   Entry Mode:   $04   $05   $06   $07   Cursor Decrement, Shift off   Cursor Decrement, Shift on   Cursor Increment, Shift off   Cursor Increment, Shift on   Display Control:   40us   40us   40us   40us   $08   $0C   $0E   $0F   Display, Cursor, and Cursor Blink off   Display on, Cursor and Cursor Blink off   Display and Cursor on, Cursor Blink off   Display, Cursor, and Cursor Blink on   Cursor / Display Shift: (nondestructive move)   Cursor shift left   40us   40us   40us   40us   $10   $14   $18   $1C   $3C   $40-$7F   $80- $FF   40us   40us   40us   40us   40us   40us   40us   Cursor shift right   Display shift left   Display shift right   Display Function (default 2x40 size)   Character Generator Ram Address set   Display Ram Address and set cursor location   LCD Character Codes   $20 Space $2D   - $3A   $3B   $3C   $3D   $3E   $3F   : $47   $48   $49   $4A   $4B   $4C   $4D   $4E   $4F   $50   $51   $52   $53   G H I J K L M N O P Q R S $54   $55   $56   $57   $58   $59   $5A   $5B   T U V W X Y Z [ $61   $62   $63   $64   $65   $66   $67   $68   A B C D E F G H I $6E   $6F   $70   $71   $72   $73   $74   $75   $76   $77   $78   $79   $7A   n $7B   $7C   $7D   $7E   $7F   { | } > < $21   $22   $23   $24   $25   $26   $27   $28   $29   $2A   $2B   $2C   ! “ $2E   $2F   $30   $31   $32   $33   $34   $35   $36   $37   $38   $39   . / ; { = } ? o p q r s t u v w x y z # $ % & ‘ ( ) * + , 0 1 2 3 4 5 6 7 8 9 $40 Time   $41   $42   $43   $44   $45   $46   A B C D E F $5C Yen $69   $5D   $5E   $5F   $60   ] $6A   $6B   $6C   $6D   J K L ^ _ ` M 23   C M L 1 2 S D P 2 5 6   0 7 / 1 7 / 0 2   TABLE 2. MON12 Interrupt Table   MON12 Ram Interrupt Vector HCS12 Interrupt Vector Address Vector Type   3F8C   3F8E   3F90   3F92   3F94   3F96   3F98   3F9A   3F9C   3F9E   3FA0   3FA2   3FA4   3FA6   3FA8   3FAA   3FAC   3FAE   3FB0   3FB2   3FB4   3FB6   3FB8   3FBA   3FBC   3FBE   3FC0   3FC2   3FC4   3FC6   3FC8   3FCA   3FCC   3FCE   3FD0   3FD2   3FD4   3FD6   3FD8   3FDA   3FDC   3FDE   3FE0   3FE2   3FE4   3FE6   3FE8   3FEA   3FEC   3FEE   3FF0   3FF2   3FF4   3FF6   3FF8   3FFA   3FFC   FF8C   FF8E   FF90   FF92   FF94   FF96   FF98   FF9A   FF9C   FF9E   FFA0   FFA2   FFA4   FFA6   FFA8   FFAA   FFAC   FFAE   FFB0   FFB2   FFB4   FFB6   FFB8   FFBA   FFBC   FFBE   FFC0   FFC2   FFC4   FFC6   FFC8   FFCA   FFCC   FFCE   FFD0   FFD2   FFD4   FFD6   FFD8   FFDA   FFDC   FFDE   FFE0   FFE2   FFE4   FFE6   FFE8   FFEA   FFEC   FFEE   FFF0   FFF2   FFF4   FFF6   FFF8   FFFA   FFFC   PWME   PTPI   C4TX   C4RX   C4ERR   C4WU   C3TX   C3RX   C3ERR   C3WU   C2TX   C2RX   C2ERR   C2WU   C1TX   C1RX   C1ERR   C1WU   C0TX   C0RX   C0ERR   C0WU   FEPRG   EEPRG   SPI2   SPI1   I2C   BDLC   CRGC   CRGL   PACBO   MCNT   PTHI   PTJI   ADC1   ADC0   SCI1   SCI0   SPI0   PACAI   PACAO   TOF   TC7   TC6   TC5   TC4   TC3   TC2   TC1   TC0   RTI   IRQ   XIRQ   SWI   TRAP   COP   CLM   24   |