TOSHIBA Original CMOS 16-Bit Microcontroller TLCS-900/L1 Series TMP91C025FG Semiconductor Company Preface Thank you very much for making use of Toshiba microcomputer LSIs. Before use this LSI, refer the section, “Points of Note and Restrictions”. Especially, take care below cautions. **CAUTION** How to release the HALT mode Usually, interrupts can release all halts status. However, the interrupts = (INT0 to INT3, INTRTC, INTALM0 to INTALM4, INTKEY), which can release the HALT mode may not be able to do so if they are input during the period CPU is shifting to the HALT mode (for about 5 clocks of fFPH) with IDLE1 or STOP mode (IDLE2 is not applicable to this case). (In this case, an interrupt request is kept on hold internally.) If another interrupt is generated after it has shifted to HALT mode completely, halt status can be released without difficultly. The priority of this interrupt is compare with that of the interrupt kept on hold internally, and the interrupt with higher priority is handled first followed by the other interrupt. TMP91C025 CMOS 16-Bit Microcontrollers TMP91C025FG/JTMP91C025-S 1. Outline and Features TMP91C025 is a high-speed 16-bit microcontroller designed for the control of various mid- to large-scale equipment. TMP91C025FG comes in a 100-pin flat package. JTMP91C025-S comes in a 100-pad chip. Listed below are the features. (1) High-speed 16-bit CPU (900/L1 CPU) • Instruction mnemonics are upward-compatible with TLCS-90 • 16 Mbytes of linear address space • General-purpose registers and register banks • 16-bit multiplication and division instructions; bit transfer and arithmetic instructions • Micro DMA: 4 channels (444 ns/ 2 bytes at 36 MHz) (2) Minimum instruction execution time: 111 ns (at 36 MHz) RESTRICTIONS ON PRODUCT USE 070208EBP • The information contained herein is subject to change without notice. 021023_D • TOSHIBA is continually working to improve the quality and reliability of its products. Nevertheless, semiconductor devices in general can malfunction or fail due to their inherent electrical sensitivity and vulnerability to physical stress. It is the responsibility of the buyer, when utilizing TOSHIBA products, to comply with the standards of safety in making a safe design for the entire system, and to avoid situations in which a malfunction or failure of such TOSHIBA products could cause loss of human life, bodily injury or damage to property. In developing your designs, please ensure that TOSHIBA products are used within specified operating ranges as set forth in the most recent TOSHIBA products specifications. Also, please keep in mind the precautions and conditions set forth in the “Handling Guide for Semiconductor Devices,” or “TOSHIBA Semiconductor Reliability Handbook” etc. 021023_A • The TOSHIBA products listed in this document are intended for usage in general electronics applications (computer, personal equipment, office equipment, measuring equipment, industrial robotics, domestic appliances, etc.). These TOSHIBA products are neither intended nor warranted for usage in equipment that requires extraordinarily high quality and/or reliability or a malfunction or failure of which may cause loss of human life or bodily injury (“Unintended Usage”). Unintended Usage include atomic energy control instruments, airplane or spaceship instruments, transportation instruments, traffic signal instruments, combustion control instruments, medical instruments, all types of safety devices, etc. Unintended Usage of TOSHIBA products listed in this document shall be made at the customer’s own risk. 021023_B • The products described in this document shall not be used or embedded to any downstream products of which manufacture, use and/or sale are prohibited under any applicable laws and regulations. 060106_Q • The information contained herein is presented only as a guide for the applications of our products. No responsibility is assumed by TOSHIBA for any infringements of patents or other rights of the third parties which may result from its use. No license is granted by implication or otherwise under any patents or other rights of TOSHIBA or the third parties. 021023_C • The products described in this document are subject to foreign exchange and foreign trade control laws. 060925_E • For a discussion of how the reliability of microcontrollers can be predicted, please refer to Section 1.3 of the chapter entitled Quality and Reliability Assurance/Handling Precautions. 030619_S 91C025-1 2007-02-28 TMP91C025 (3) Built-in RAM: None Built-in ROM: None (4) External memory expansion • Expandable up to 104 Mbytes (Shared program/data area) • Can simultaneously support 8-/16-bit width external data bus ... Dynamic data bus sizing • Separate bus system (5) 8-bit timers: 4 channels (6) General-purpose serial interface: 2 channels • UART/Synchronous mode: 2 channels • IrDA Ver.1.0 (115.2 kbps) mode selectable: 1 channel (7) LCD controller • Adapt to both shift register type and built-in RAM type LCD driver (8) Timer for real-time clock (RTC) • Based on TC8521A (9) Key-on wakeup (Interrupt key input) (10) 10-bit AD converter: 4 channels (11) Touch screen interface • Available to reduce external components (12) Watchdog timer (13) Melody/alarm generator • Melody: Output of clock 4 to 5461 Hz • Alarm: Output of the 8 kinds of alarm pattern • Output of the 5 kinds of interval interrupt (14) Chip select/wait controller: 4 channels (15) MMU • Expandable up to 104 Mbytes (16) Interrupts: 37 interrupt • 9 CPU interrupts: Software interrupt instruction and illegal instruction • 23 internal interrupts: 7 priority levels are selectable • 5 external interrupts: 7 priority levels are selectable (among 4 interrupts are selectable edge mode) (17) Input/output ports: 49 pins (Except Data bus (8bit), Address bus (24bit) and RD pin) (18) Standby function Three HALT modes: IDLE2 (Programmable), IDLE1 and STOP (19) Hardware standby function (Power save function) 91C025-2 2007-02-28 TMP91C025 (20) Triple-clock controller • Clock doubler (DFM) circuit is inside • Clock gear function: Select a high-frequency clock fc/1 to fc/16 • SLOW mode (fs = 32.768 kHz) (21) Operating voltage • VCC = 3.0 V to 3.6 V (fc max = 36 MHz) • VCC = 2.7 V to 3.6 V (fc max = 27 MHz) • VCC = 2.4 V to 3.6 V (fc max = 16 MHz) (22) Package • 100-pin QFP: P-LQFP100-1414-0.50F, chip form supply also available. For details, contact your local Toshiba sales representative. 91C025-3 2007-02-28 TMP91C025 DVCC [2] DVSS [2] AN2/MX (P82) AN3/MY/ ADTRG (P83) AN0, AN1 (P80, P81) AVCC, AVSS VREFH, VREFL TXD0 (PC0) RXD0 (PC1) SCLK0/ CTS0 (PC2) TXD1 (PC3) RXD1 (PC4) SCLK1/ CTS1 (PC5) PX/INT2 (PB5) PY/INT3 (PB6) CPU (TLCS-900/L1) 10-bit 4-channel AD converter SIO/UART/IrDA (SIO0) SIO/UART (SIO1) Touch screen I/F (TSI) TA0IN/INT1 (PB4) 8-bit timer (TMRA0) TA1OUT/KO1 (PA1) 8-bit timer (TMRA1) XWA XBC XDE XHL XIX XIY XIZ XSP W A B C D E H L IX IY IZ SP Clock gear, Clock doubler L-OSC EMU0 EMU1 XT1 XT2 RESET PC WDT (Watchdog timer) X1 X2 AM0 AM1 D0 to D7 A0 to A7 A8 to A15 32 bits SR F Port 1 P10 to P17 (D8 to D15) Port 2 P20 to P27 (A16 to A23) RD WR Port 5 8-bit timer (TMRA2) TA3OUT/KO2 (PA2) H-OSC Port Z 8-bit timer (TMRA3) HWR (PZ2) WAIT (P56) R/ W / SRWR (PZ3) Port 6 CS/WAIT controller (4 blocks) CS0 to CS3 , CS2A (P60 to P63) EA24/ CS2B / SRLB (P64) Port 8 MMU EA25/ CS2C / SRUB (P65) Port 9 Interrupt controller Port A Port B Keyboard I/F Port C Port D Melody/ alarm out D1BSCP (PD0) D2BLP (PD1) D3BFR (PD2) INT0 ( PS ) INT0 to INT3 (PB3 to PB6) KI0 to KI7 (P90 to P97) KO0/ ALARM / MLDALM (PA0) KO1/TA1OUT (PA1) KO2/TA3OUT (PA2) KO3 (PA3) MLDALM (PD7) LCD controller RTC DLEBCD (PD3) ALARM / MLDALM /KO0 (PA0) DOFFB (PD4) ( ): Initial function after reset Figure 1.1 TMP91C025 Block Diagram 91C025-4 2007-02-28 TMP91C025 2. Pin Assignment and Pin Functions The assignment of input/output pins for the TMP91C025, their names and functions are as follows: 2.1 Pin Assignment Diagram 80 85 90 100 5 70 10 TMP91C025FG 65 QFP100 Top view 15 60 20 55 A11 A12 A13 A14 A15 P20/A16 P21/A17 P22/A18 P23/A19 P24/A20 P25/A21 DVCC2 PB4/INT1/TA0IN DVSS2 P26/A22 P27/A23 P17/D15 P16/D14 P15/D13 P14/D12 P13/D11 P12/D10 P11/D9 P10/D8 D7 50 45 40 25 35 PA0/KO0/ ALARM / MLDALM PA1/KO1/TA1OUT PA2/KO2/TA3OUT PA3/KO3/SCOUT PC0/TXD0 PC1/RXD1 AM0 DVCC1 75 30 P83/AN3/ ADTRG /MY PB5/PX/INT2 PB6/PY/INT3 P90/KI0 P91/KI1 P92/KI2 P93/KI3 P94/KI4 P95/KI5 P96/KI6 P97/KI7 1 X2 DVSS1 X1 AM1 RESET XT1 XT2 EMU0 EMU1 PC2/SCLK0/CTS0 PC3/TXD1 PC4/RXD1 PC5/SCLK1/CTS1 PD0/D1BSCP PD1/D2BLP PD2/D3BFR PD3/DLEBCD PD4/DOFFB D0 D1 D2 D3 D4 D5 D6 VREFL AVSS AVCC P80/AN0 P81/AN1 P82/AN2/MX 95 VREFH PB3/INT0/PS PD7/MLDALM P65/EA25/CS2C/SRUB P64/EA24/CS2B/SRLB P63/CS3 P62/CS2/CS2A P61/CS1 P60/CS0 P56/WAIT PZ3/R/W/SRWR PZ2/HWR WR RD A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 Figure 2.1.1 shows the pin assignment of the TMP91C025FG. Figure 2.1.1 Pin Assignment Diagram (100-pin QFP) 91C025-5 2007-02-28 TMP91C025 2.2 PAD Layout (Chip size 4.58 mm × 4.63 mm) Unit (μm) Pin No. Name X Point Y Point Pin No. Name X Point Y Point Pin No. Name X Point 1 VREFL −2151 1627 44 D0 852 −2175 2 AVSS −2151 1502 45 D1 977 −2175 3 AVCC −2151 1376 46 D2 1103 4 P80 −2151 1251 47 D3 5 P81 −2151 1126 48 D4 6 P82 −2151 1001 49 7 P83 −2151 876 8 PB5 −2151 751 Y Point 87 RD 210 2175 88 WR 83 2175 −2175 89 PZ2 −42 2175 1228 −2175 90 PZ3 −169 2175 1353 −2175 91 P56 −296 2175 D5 1478 −2175 92 P60 −421 2175 50 D6 1603 −2175 93 P61 −548 2175 51 D7 2151 −1636 94 P62 −674 2175 9 PB6 −2151 625 52 P10 2151 −1490 95 P63 −801 2175 10 P90 −2151 336 53 P11 2151 −1359 96 P64 −926 2175 11 P91 −2151 211 54 P12 2151 −1228 97 P65 −1051 2175 12 P92 −2151 86 55 P13 2151 −1096 98 PD7 −1177 2175 13 P93 −2151 −38 56 P14 2151 −965 99 PB3 −1302 2175 14 P94 −2151 −163 57 P15 2151 −834 100 VREFH −1606 2175 15 P95 −2151 −289 58 P16 2151 −703 16 P96 −2151 −414 59 P17 2151 −571 17 P97 −2151 −539 60 P27 2151 −440 18 PA0 −2151 −664 61 P26 2151 −309 19 PA1 −2151 −789 62 DVSS2 2151 −153 20 PA2 −2151 −914 63 PB4 2151 2 21 PA3 −2151 −1040 64 DVCC2 2151 158 22 PC0 −2151 −1165 65 P25 2151 315 23 PC1 −2151 −1290 66 P24 2151 446 24 AM0 −2151 −1415 67 P23 2151 577 25 DVCC1 −2151 −1636 68 P22 2151 708 26 X2 −1603 −2175 69 P21 2151 839 27 DVSS1 −1438 −2175 70 P20 2151 971 28 X1 −1273 −2175 71 A15 2151 1102 29 AM1 −1147 −2175 72 A14 2151 1233 30 RESET −1022 −2175 73 A13 2151 1364 31 XT1 −897 −2175 74 A12 2151 1495 32 XT2 −649 −2175 75 A11 2151 1627 33 EMU0 −524 −2175 76 A10 1603 2175 34 EMU1 −398 −2175 77 A9 1477 2175 35 PC2 −273 −2175 78 A8 1350 2175 36 PC3 −148 −2175 79 A7 1224 2175 37 PC4 −23 −2175 80 A6 1097 2175 38 PC5 101 −2175 81 A5 970 2175 39 PD0 226 −2175 82 A4 844 2175 40 PD1 352 −2175 83 A3 717 2175 41 PD2 477 −2175 84 A2 590 2175 42 PD3 602 −2175 85 A1 464 2175 43 PD4 727 −2175 86 A0 337 2175 91C025-6 2007-02-28 TMP91C025 2.3 Pin Names and Functions The names of the input/output pins and their functions are described below. Table 2.3.1 Pin Names and Functions (1/3) Pin Name Number of Pins I/O Functions D0 to D7 8 I/O Data (lower): bits 0 to 7 of data bus P10 to P17 8 I/O Port 1: I/O port that allows I/O to be selected at the bit level (When used to the external 8bit bus) D8 to D15 P20 to P27 I/O 8 A16 to A23 Data (upper): Bits 8 to15 of data bus Output Port 2: Output port Output Address: Bits 16 to 23 of address bus A8 to A15 8 Output Address: Bits 8 to 15 of address bus A0 to A7 8 Output Address: Bits 0 to 7 of address bus RD 1 Output Read: Strobe signal for reading external memory WR 1 Output PZ2 1 I/O Output HWR PZ3 R/ W 1 SRWR P56 1 1 CS0 P61 1 CS1 High Write: Strobe signal for writing data to pins D8 to D15 Port Z3: I/O port (with pull-up resistor) Output Read/Write: 1 represents read or dummy cycle; 0 represents write cycle. Output Write: Strobe signal for writing data to pins D0 to D15 for SRAM I/O Input WAIT P60 I/O Write: Strobe signal for writing data to pins D0 to D7 Port Z2: I/O port (with pull-up resistor) Port 56: I/O port (with pull-up resistor) Wait: Pin used to request CPU bus wait Output Port 60:Output port Output Chip select 0: Outputs 0 when address is within specified address area. Output Port 61:Output port Output Chip select 1: Outputs 0 when address is within specified address area Output Port 62: Output port CS2 Output Chip select 2: Outputs 0 when address is within specified address area CS2A Output Expand chip select: 2A: Outputs 0 when address is within specified address P62 1 area P63 1 Output Port 63:Output port Output Chip select 3: Outputs 0 when address is within specified address area Output Port 64: Output port EA24 Output Chip select 24: Outputs 0 when address is within specified address area CS2B Output Expand chip select: 2B: Outputs 0 when address is within specified address SRLB Output Low byte enable for SRAM CS3 P64 1 area Output Port 65: Output port EA25 Output Chip select 25: Outputs 0 when address is within specified address area CS2C Output Expand chip select: 2C: Outputs 0 when address is within specified address SRUB Output P65 1 area High byte enable for SRAM 91C025-7 2007-02-28 TMP91C025 Table 2.3.2 Pin Names and Functions (2/3) Number of Pins I/O 2 Input Port 80 to 81 port: Pin used to input ports Input Analog input 0 to 1: Pin used to input to AD converter Input Port 82 port: Pin used to input ports AN2 Input Analog input 2: Pin used to input to AD converter MX Input X-Minus: Pin connected to X- for touch screen panel Pin Name P80 to P81 AN0 to AN1 P82 P83 1 Input Port 83 port: Pin used to input ports AN3 Input Analog input 3: Pin used to input to AD converter ADTRG Input AD trigger: Signal used to request AD start MY Input Y-Minus: Pin connected to Y- for touch screen panel Input Port: 90 to 97 port: Pin used to input ports Input Key input 0 to 7: Pin used of key-on wakeup 0 to 7 P90 to P97 1 Functions 8 KI0 to KI7 (Schmitt input, with pull-up resistor) Output Port: A0 port: Pin used to output ports KO0 Output Key output 0: Pin used of key-scan strobe 0 ALARM Output RTC alarm output pin MLDALM Output Melody/alarm output pin (Inverted) Output Port: A1 port: Pin used to output ports KO1 Output Key output 1: Pin used of key-scan strobe 1 TA1OUT Output 8-bit timer 1 output: Timer 0 input or timer 1 output PA0 PA1 PA2 1 1 Output Port: A2 port: Pin used to output ports KO2 Output Key output 2: Pin used of key-scan strobe 2 TA3OUT Output 8-bit timer 3 output: Timer 2 input or timer 3 output Output Port: A3 port: Pin used to output ports KO3 Output Key output 3: Pin used of key-scan strobe 3 SCOUT Output System clock output: Output fFPH clock PA3 PB3 1 1 1 I/O INT0 Input PS Input PB4 1 I/O Port B3: I/O port Interrupt request pin0: Interrupt request with programmable level/rising edge Power save: Pin used as input pin for H/W standby mode Port B4: I/O port INT1 Input Interrupt request pin1: Interrupt request with programmable rising/falling edge TA0IN Input 8-bit timer 0 input: Timer 0 input Input Port B5: Input port Input Interrupt request pin2: Interrupt request with programmable rising/falling edge PB5 1 INT2 PX PB6 Output 1 INT3 PY PC0 TXD0 PC1 RXD0 Port B6: Input port Input Interrupt request pin3: Interrupt request with programmable rising/falling edge Output 1 I/O Output 1 X-Plus: Pin connected to X+ for touch screen panel Input I/O Output Y-Plus: Pin connected to Y+ for touch screen panel Port C0: I/O port Serial 0 send data: Open-drain output pin by programmable Port C1: I/O port Serial 0 receive data Note: After reset, input “1” to PB3 (INT0, PS )-pin, because it is worked as PS input pin. 91C025-8 2007-02-28 TMP91C025 Table 2.3.3 Pin Names and Functions. (3/3) Pin Name PC2 Number of Pins I/O 1 Functions I/O Port C2: I/O port (with pull-up resistor) SCLK0 I/O Serial clock I/O 0 CTS0 Input PC3 1 TXD1 I/O Output Serial data send enable 0 (Clear to send) Port C3: I/O port Serial send data 1 Open-drain output pin by programmable PC4 1 RXD1 PC5 I/O Input 1 SCLK1 CTS1 Port C4: I/O port Serial receive data 1 I/O Port C5: I/O port (with pull-up resistor) I/O Serial clock I/O 1 Input Serial data send enable 1 (Clear to send) Low-frequency oscillator connecting pin XT1 1 Input XT2 1 Output Low-frequency oscillator connecting pin PD0 1 Output Port D0: Output port Output LCD controller output pin 1 Output Port D1: Output port Output LCD controller output pin Output Port D2: Output port Output LCD controller output pin Output Port D3: Output port Output LCD controller output pin Output Port D4: Output port Output LCD controller output pin Output Port D7: Output port D1BSCP PD1 D2BLP PD2 1 D3BFR PD3 1 DLEBCD PD4 1 DOFFB PD7 1 MLDALM AM0 to AM1 Output 2 Input Melody/alarm output pin Operation mode: Fixed to AM1 = 0, AM0 = 1 16-bit external bus or 8-/16-bit dynamic sizing. Fixed to AM1 = 0, AM0 = 0 8-bit external bus fixed. EMU0 1 Output Open pin EMU1 1 Output Open pin RESET 1 Input VREFH 1 Input Pin for reference voltage input to AD converter (H) VREFL 1 Input Pin for reference voltage input to AD converter (L) AVCC 1 AVSS 1 X1, X2 2 DVCC 2 Power supply pins DVSS 2 GND pins (0 V) (All pins should be connected with GND (0 V).) Reset: initializes TMP91C025. (with pull-up resistor) Power supply pin for AD converter GND pin for AD converter (0 V) I/O High-frequency oscillator connection pins (All VCC pins should be connected with the power supply pin.) 91C025-9 2007-02-28 TMP91C025 3. Operation This following describes block by block the functions and operation of the TMP91C025. Notes and restrictions for eatch book are outlined in 6, precautions and restrictions at the end of this manual. 3.1 CPU The TMP91C025 incorporates a high-performance 16-bit CPU (the 900/L1-CPU). For CPU operation, see the TLCS-900/L1 CPU. The following describe the unique function of the CPU used in the TMP91C025; these functions are not covered in the TLCS-900/L1 CPU section. 3.1.1 Reset When resetting the TMP91C025 microcontroller, ensure that the power supply voltage is within the operating voltage range, and that the internal high-frequency oscillator has stabilized. Then hold the RESET input to low level at least for 10 system clocks (9 μs at 36 MHz). Thus, when turn on the switch, be set to the power supply voltage is within the operating voltage range, and that the internal high-frequency oscillator has stabilized. Then hold the RESET input to low level at least for 10 system clocks. Clock gear is initialized 1/16 mode by reset operation. It means that the system clock mode fSYS is set to fc/32(= fc/16 × 1/2). When the reset is accept, the CPU: • Sets as follows the program counter (PC) in accordance with the reset vector stored at address FFFF00H to FFFF02H: PC<0:7> ← Value at FFFF00H address PC<15:8> ← Value at FFFF01H address PC<23:16> ← Value at FFFF02H address • Sets the stack pointer (XSP) to 100H. • Sets bits <IFF2:0> of the status register (SR) to 111 (Sets the interrupt level mask register to level 7). • Sets the <MAX> bit of the status register (SR) to 1 (MAX mode). Note: As this product does not support MIN mode, do not write a 0 to the <MAX> • Clears bits <RFP2:0> of the status register(SR) to 000 (Sets the register bank to 0 ). When reset is released,the CPU starts executing instructions in accordance with the program counter settings. CPU internal registers not mentioned above do not change when the reset is released. When the reset is accepted, the CPU sets internal I/O, ports, and other pins as follows. • Initializes the internal I/O registers. • Sets the port pins, including the pins that also act as internal I/O, to general-purpose input or output port mode. Note: The CPU internal register (Except to PC, SR, XSP) do not change by resetting. Figure 3.1.1 is a reset timing chart of the TMP91C025. 91C025-10 2007-02-28 91C025-11 XT1, XT2 HWR Pull-up (Internal) High-Z Data-out Data-in Sampling (PZ2 input mode) Sampling Data-in (After reset released, starting 2 wait read cycle) 0FFFF00H Read WR D0 to D15 RD D0 to D15 CS2 CS0, CS1, CS3 A23 to A0 RESET fFPH TMP91C025 Write Figure 3.1.1 Reset Timing Chart 2007-02-28 TMP91C025 3.2 Memory Map Figure 3.2.1 is a memory map of the TMP91C025. 000000H Internal I/O (4 Kbytes) Direct area (n) 000100H 000FE0H 001000H (Note) 64-Kbyte area (nn) 010000H External memory 16-Mbyte area (R) (−R) (R+) (R + R8/16) (R + d8/16) (nnn) FFFF00H FFFFFFH Vector table (256 bytes) ( = Internal area) Figure 3.2.1 Memory Map Note: Address 000FE0H to 000FEFH is assigned for the external memory area of built-in RAM type LCD driver. Address 000FF0H to 000FFFH is assingned for the external memory area as reserved. 91C025-12 2007-02-28 TMP91C025 3.3 Triple Clock Function and Standby Function TMP91C025 contains a clock gear, clock doubler (DFM), standby controller and noise-reduction circuit. It is used for low-power and low-noise systems. This chapter is organized as follows: 3.3.1 Block Diagram of System Clock 3.3.2 SFRs 3.3.3 System Clock Controller 3.3.4 Prescaler Clock Controller 3.3.5 Clock Doubler (DFM) 3.3.6 Noise reducing Circuit 3.3.7 Standby Controller 91C025-13 2007-02-28 TMP91C025 The clock operating modes are as follows: (a) Single clock mode (X1, X2 pins only), (b) Dual clock mode (X1, X2, XT1 and XT2 pins) and (c) Triple clock mode (the X1, X2, XT1 and XT2 pins and DFM). Figure 3.3.1 shows a transition figure. Reset (fOSCH/32) Release reset Instruction IDLE2 mode (I/O operate) IDLE1 mode (Operate only oscillator) Interrupt Instruction Interrupt (a) NORMAL mode (fOSCH/Gear value/2) Instruction Interrupt STOP mode (Stops all circuits) Single clock mode transition figure Reset (fOSCH/32) IDLE2 mode (I/O operate) IDLE1 mode (Operate only oscillator) Instruction Interrupt Instruction Interrupt Release reset NORMAL mode (fOSCH/Gear value/2) Instruction Interrupt Instruction IDLE2 mode (I/O operate) IDLE1 mode (Operate only oscillator) Interrupt Instruction Interrupt (b) STOP mode (Stops all circuits) SLOW mode (fs/2) Dual clock mode transition figure Reset (fOSCH/32) IDLE2 mode (I/O operate) IDLE1 mode (Operate only oscillator) Instruction Interrupt Instruction Interrupt Release reset NORMAL mode (fOSCH/Gear value/2) STOP mode (Stops all circuits) Instruction (Note) IDLE2 mode (I/O operate) Instruction Instruction Interrupt IDLE1 mode Instruction (Operate oscillator and DFM) Interrupt NORMAL mode (4 × fOSCH/gear value/2) Instruction (Note) Instruction Interrupt Instruction Instruction Interrupt Using DFM (c) Interrupt SLOW mode (fs/2) IDLE2 mode (I/O operate) IDLE1 mode (Operate only oscillator) Triple clock mode trasision figure Note 1: It’s prohibited to control DFM in SLOW mode when shifting from SLOW mode to NORMAL mode with use of DFM. (DFM start up/stop/change write to DFMCR0<ACT1:0> register) Note 2: If you shift from NORMAL mode with use of DFM to NORMAL mode, the instruction should be separated into two procedures as below. Change CPU clock → Stop DFM circuit Note 3: It’s prohibited to shift from NORMAL mode with use of DFM to STOP mode directly. You should set NORMAL mode once, and then shift to STOP mode.(You should stop high frequency oscillator after you stop DFM.) Figure 3.3.1 System Clock Block Diagram The clock frequency input from the X1 and X2 pins is called fc and the clock frequency input from the XT1 and XT2 pins is called fs. The clock frequency selected by SYSCR1<SYSCK> is called the system clock fFPH. The system clock fSYS is defined as the divided clock of fFPH, and one cycle of fSYS is defined to as one state. 91C025-14 2007-02-28 TMP91C025 3.3.1 Block Diagram of System Clock SYSCR0<WUEF> SYSCR2<WUPTM1:0> DFMCR0<ACT1:0, DLUPTM> SYSCR0 <PRCK1:0> Warm-up timer (High/low frequency oscillator), Lock up timer (DFM) φT0 fc/16 fFPH SYSCR0 <XTEN, RXTEN> XT1 XT2 Low-frequency oscillator X2 ÷2 ÷4 fs fs ÷2 fc fc/4 fc/8 Selector Clock Doubler (DFM) SYSCR1<SYSCK> fc/16 ÷2 High-frequency oscillator fOSCH fSYS fc/2 fDFM = fOSCH × 4 SYSCR0 <XEN, RXEN> X1 φT ÷4 ÷8 ÷16 SYSCR1<GEAR2:0> Clock gear DFMCR0<ACT1:0> fSYS CPU TMRA0 to TMRA3 φT0 Interrupt controller Prescaler ADC SIO0 to SIO1 WDT Prescaler I/O ports C/S WAIT controller TSI RTC fs LCDC MLD/ALM Figure 3.3.2 Block Diagram of System Clock 91C025-15 2007-02-28 TMP91C025 3.3.2 SYSCR0 (00E0H) SFRs Bit symbol 7 6 5 4 XEN XTEN RXEN RXTEN Read/Write 2 1 0 RSYSCK WUEF PRCK1 PRCK0 0 0 R/W After reset Function 3 1 1 1 0 0 0 Select prescaler clock High- Low- High- Low- Selects Warm-up frequency frequency frequency frequency clock after timer 00: fFPH 0: Write 01: Reserved oscillator (fc) oscillator (fs) oscillator (fc) oscillator (fs) release of 0: Stop 0: Stop Don’t care 10: fc/16 after release after release STOP mode 1: Oscillation 1: Oscillation of STOP (Note 1) mode of STOP 0: fc mode 1: fs 1: Write 0: Read 0: Stop 0: Stop 11: Reserved start timer end 1: Oscillation 1: Oscillation warm-up 1:Read do not end warm-up 7 SYSCR1 (00E1H) 6 5 4 Bit symbol 3 2 1 0 SYSCK GEAR2 GEAR1 GEAR0 0 1 0 0 Read/Write R/W After reset Function Select Select gear value of high-frequency (fc) system 000: fc clock 001: fc/2 0: fc 010: fc/4 1: fs 011: fc/8 100: fc/16 101: (Reserved) 110: (Reserved) 111: (Reserved) 7 SYSCR2 (00E2H) 6 5 4 3 2 1 0 Bit symbol PSENV WUPTM1 WUPTM0 HALTM1 HALTM0 SELDRV DRVE Read/Write R/W R/W R/W R/W R/W R/W R/W After reset 0 1 0 1 1 0 Function 0 Warm-up timer HALT mode <DRVE> Pin state save 00: Reserved 00: Reserved mode control in mode 01: 28/inputted frequency 01: STOP mode select STOP/IDLE1 enable 10: 214 10: IDLE1 mode 0: IDLE1 mode 11: 216 11: IDLE2 mode 1: STOP 0: I/O off 0: Power 1: Disable (Note 3) 1: Remains (Note 2) the state before halt Note 1: By reset, low-frequency oscillator is enabled. Note 2: When hard ware standby mode is entered, the meaning of SYSCR2<HALTM1:0> = 11 shows IDLE1 mode. Note 3: “0” means IDLE1 and “1” means STOP. Please be carefull because this setting is sometimes different from others. Figure 3.3.3 SFRs for System Clock 91C025-16 2007-02-28 TMP91C025 Symbol Name Address DFM DFMCR0 control E8H 7 6 5 4 ACT1 ACT0 DLUPFG DLUPTM R/W R/W R R/W 0 0 0 0 DFM LUP select fFPH Lock up status Flag 00 STOP STOP fOSCH register 0 01 RUN RUN fOSCH 10 RUN STOP fDFM 3 2 1 0 Lock up Time 0: End 0: 212/fOSCH 1: Not end 1: 210/fOSCH 11 RUN STOP fOSCH DFMCR1 DFM control E9H D7 D6 D5 D4 D3 D2 D1 D0 R/W R/W R/W R/W R/W R/W R/W R/W 0 0 0 1 0 0 1 1 DFM revision register 1 Input frequency 4 to 9 MHz (at 3.0 V to 3.6 V): write 0BH Input frequency 4 to 6.75 MHz (at 2.7 V to 3.6 V): write 0BH Figure 3.3.4 SFRs for DFM Limitation point on the use of DFM 1. It’s prohibited to execute DFM enable/disable control in the SLOW mode (fs) (write to DFMCR0<ACT1:0> = “10”). You should control DFM in the NORMAL mode. 2. If you stop DFM operation during using DFM(DFMCR0<ACT1:0> = “10”), you shouldn’t execute that change the clock fDFM to fOSCH and stop the DFM at the same time. Therefore the above execution should be separated into two procedures as showing below. LD (DFMCR0), C0H ; Change the clock fDFM to fOSCH LD (DFMCR0), 00H ; DFM stop 3. If you stop high-frequency oscillator during using DFM (DFMCR0<ACT1:0> = “10”), you should stop DFM before you stop high-frequency oscillator. Please refer to 3.3.5 Clock Doubler (DFM) for the Details. 91C025-17 2007-02-28 TMP91C025 7 EMCCR0 (00E3H) 6 5 4 1 0 AHOLD TA3MLDE − EXTIN DRVOSCH DRVOSCL R R/W R/W R/W R/W R/W R/W R/W After reset 0 0 0 0 0 0 1 1 Protect flag LCDC source Address hold Melody/alarm Always 1: External fc oscillator fs oscillator 0: Off CLK 0: Disable source clock write 0. clock driver ability driver ability 1: On 0: 32 kHz 1: Enable 0: 32 kHz 1: Normal 1: Normal 1: TA3OUT 0: Weak 0: Weak PROTECT TA3LCDE 1: TA3OUT (Note) Bit symbol Read/Write After reset Function EMCCR2 (00E5H) 2 Read/Write Bit symbol Function EMCCR1 (00E4H) 3 Bit symbol Switching the protect ON/OFF by write to following 1st-KEY, 2nd-KEY 1st-KEY: EMCCR1 = 5AH, EMCCR2 = A5H in succession write 2nd-KEY: EMCCR1 = A5H, EMCCR2 = 5AH in succession write Read/Write After reset Function EMCCR3 (00E6H) Bit symbol ENFROM ENDROM ENPROM FFLAG DFLAG PFLAG Read/Write R/W R/W R/W R/W R/W R/W After reset 0 0 0 0 0 0 Function CS1A area CS2B-2C CS2A area CS1A write CS2B-2C write CS2A write detect control area detect detect control operation flag operation 0: Disable control 0: Disable 1: Enable 0: Disable 1: Enable 1: Enable flag operation flag When reading When writing 0: Not written 0: Clear flag 1: Written Note1: When getting access to the logic address 000000H to 000FDFH, A0 to A23 holds the previous address of Note2: In case restarting the oscillator in the stop oscillation state (e.g. Restart the oscillator in STOP mode), set external access. EMCCR0<DRVOSCH>, <DRVOSCL>=”1”. Figure 3.3.5 SFRs for Noise Reduction 91C025-18 2007-02-28 TMP91C025 3.3.3 System Clock Controller The system clock controller generates the system clock signal (fSYS) for the CPU core and internal I/O. It contains two oscillation circuits and a clock gear circuit for high-frequency (fc) operation. The register SYSCR1<SYSCK> changes the system clock to either fc or fs, SYSCR0<XEN> and SYSCR0<XTEN> control enabling and disabling of each oscillator, and SYSCR1<GEAR0:2> sets the high-frequency clock gear to either 1, 2, 4, 8 or 16 (fc, fc/2, fc/4, fc/8 or fc/16). These functions can reduce the power consumption of the equipment in which the device is installed. The combination of settings <XEN> = 1, <XTEN> = 0, <SYSCK> = 0 and <GEAR0:2> = 100 will cause the system clock (fSYS) to be set to fc/32 (fc/16 × 1/2) after a reset. For example, fSYS is set to 1.1 MHz when the 36 MHz oscillator is connected to the X1 and X2 pins. (1) Switching from NORMAL mode to SLOW mode When the resonator is connected to the X1 and X2 pins, or to the XT1 and XT2 pins, the warm-up timer can be used to change the operation frequency after stable oscillation has been attained. The warm-up time can be selected using SYSCR2<WUPTM0:1>. This warm-up timer can be programmed to start and stop as shown in the following examples 1 and 2. Table 3.3.1 shows the warm-up time. Note 1: When using an oscillator (other than a resonator) with stable oscillation, a warm-up timer is not needed. Note 2: The warm-up timer is operated by an oscillation clock. Hence, there may be some variation in warm-up time. Table 3.3.1 Warm-up Times Warm-up Time SYSCR2 <WUPTM1:0> 8 01 (2 /frequency) Change to NORMAL Mode Change to SLOW Mode 7.1 (μs) 7.8 (ms) 14 0.455 (ms) 500 (ms) 16 1.820 (ms) 2000 (ms) 10 (2 /frequency) 11 (2 /frequency) 91C025-19 at fOSCH = 36 MHz, fs = 32.768 kHz 2007-02-28 TMP91C025 (Example 1: Setting the clock) Changing from high-frequency (fc) to low-frequency (fs). SYSCR0 EQU 00E0H SYSCR1 EQU 00E1H SYSCR2 EQU 00E2H LD (SYSCR2), - X11 - - - - B WUP: 16 Sets warm-up time to 2 /fs. ; SET 6, (SYSCR0) ; Enables low-frequency oscillation. SET 2, (SYSCR0) ; Clears and starts warm-up timer. BIT 2, (SYSCR0) ; JR NZ, WUP ; SET 3, (SYSCR1) ; Changes fSYS from fc to fs. RES 7, (SYSCR0) ; Disables high-frequency oscillation. Detects stopping of warm-up timer. x: Don’t care -: No change <XEN> X1, X2 pins <XTEN> XT1, XT2 pins Warm-up timer Counts up by fSYS Counts up by fs End of warm-up timer <SYSCK> fc fs Clears and starts warm-up timer Chages fSYS from fc to fs System clock fSYS Enables low-frequency Disables high-frequency End of warm-up timer 91C025-20 2007-02-28 TMP91C025 (Example 2: Setting the clock) Changing from low-frequency (fs) to high-frequency (fc). SYSCR0 EQU 00E0H SYSCR1 EQU 00E1H SYSCR2 EQU 00E2H LD (SYSCR2), -X10 - - - - B WUP: ; 14 Sets warm-up time to 2 /fc. SET 7, (SYSCR0) ; Enables high-frequency oscillation. SET 2, (SYSCR0) ; Clears and starts warm-up timer. BIT 2, (SYSCR0) ; JR NZ, WUP ; RES 3, (SYSCR1) ; Changes fSYS from fs to fc. RES 6, (SYSCR0) ; Disables low-frequency oscillation. Detects stopping of warm-up timer. x: Don’t care -: No change <XEN> X1, X2 pins <XTEN> XT1, XT2 pins Warm-up timer Counts up by fSYS Counts up by fOSCH End of warm-up timer <SYSCK> fs fc System clock fSYS Enables high-frequency Clears and starts warm-up timer Chages fSYS from fs to fc End of warm-up timer 91C025-21 Disables low-frequency 2007-02-28 TMP91C025 (2) Clock gear controller When the high-frequency clock fc is selected by setting SYSCR1<SYSCK> = 0, fFPH is set according to the contents of the clock gear select register SYSCR1<GEAR2:0> to either fc, fc/2, fc/4, fc/8 or fc/16. Using the clock gear to select a lower value of fFPH reduces power consumption. (Example 3) Changing to a high-frequency gear SYSCR1 EQU 00E1H LD (SYSCR1), XXXX0000B ; Changes fSYS to fc/2. X: Don't care (High-speed clock gear changing) To change the clock gear, write the register value to the SYSCR1<GEAR2:0> register.It is necessary the warm-up time until changing after writing the register value. There is the possibility that the instruction next to the clock gear changing instruction is executed by the clock gear before changing.To execute the instruction next to the clock gear switching instruction by the clock gear after changing,input the dummy instruction as follows (Instruction to execute the write cycle). (Example) SYSCR1 EQU 00E1H LD (SYSCR1), XXXX0001B ; Changes fSYS to fc/4. LD (DUMMY), 00H ; Dummy instruction Instruction to be executed after clock gear has changed (3) Internal clock output pin An internal clock fFPH can be output to the PA3/SCOUT pin. By setting “1” to the PAFC2<PA3F2> register, the PA3 pin functions as the SCOUT pin. 91C025-22 2007-02-28 TMP91C025 3.3.4 Prescaler Clock Controller For the internal I/O (TMRA01 to TMRA23, SIO0 to SIO1) there is a prescaler which can divide the clock. The φT0 clock input to the prescaler is either the clock fFPH divided by 4 or the clock fc/16 divided by 4. The setting of the SYSCR0<PRCK0:1> register determines which clock signal is input. 3.3.5 Clock Doubler (DFM) DFM outputs the fDFM clock signal, which is four times as fast as fOSCH. It can use the low-frequency oscillator, even though the internal clock is high frequency . A reset initializes DFM to stop status, setting to DFMCR0-register is needed before use. Like an oscillator, this circuit requires time to stabilize. This is called the lock up time. The following example shows how DFM is used. DFMCR0 EQU DFMCR1 EQU 00E8H 00E9H LD (DFMCR1), 00001011B LD (DFMCR0), 01X0XXXXB ; BIT 5, (DFMCR0) ; JR NZ, LUP ; LD (DFMCR0), 10X0XXXXB ; DFM parameter setting. 12 Set lock up time to 2 /4 MHz. Enables DFM operation and starts lock up. LUP: Detects end of lock up. Changes fc from 4 MHz to 16 MHz. (Changes fSYS from 2 MHz to 8 MHz.) X: Don't care <ACT1:0> 01 10 DFM output: fDFM Lock up timer Counts up by fOSCH <DLUPFG> During lock up After lock up System clock fSYS Starts DFM operation. Starts lock up. Changes from 4 MHz to 16 MHz. Ends of lock up. Note: Input frequency limitation and correction for DFM Recommend to use Input frequency (High-speed oscillation) for DFM in the following condition. • fOSCH = 4 to 9 MHz (Vcc = 3.0 to 3.6 V): Write 0BH to DFMCR1 • fOSCH = 4 to 6.75 MHz (Vcc = 2.7 to 3.6 V): Write 0BH to DFMCR1 91C025-23 2007-02-28 TMP91C025 Limitation point on the use of DFM 1. It’s prohibited to execute DFM enable/disable control in the SLOW mode (fs) (write to DFMCR0<ACT1:0> = “10”). You should control DFM in the NORMAL mode. 2. If you stop DFM operation during using DFM (DFMCR0<ACT1:0> = “10”), you shouldn’t execute the commands that change the clock fDFM to fOSCH and stop the DFM at the same time. Therefore the above executions should be separated into two procedures as showing below. LD (DFMCR0), C0H ; Change the clock fDFM to fOSCH. LD (DFMCR0), 00H ; DFM stop. 3. If you stop high-frequency oscillator during using DFM (DFMCR0<ACT1:0> = “10”), you should stop DFM before you stop high-frequency oscillator. Examples of settings are below. (1) Start up/change control (OK) Low-frequency oscillator operation mode (fs) (High-frequency oscillator STOP) → High-frequency oscillator start up → High-frequency oscillator operation mode (fOSCH) → DFM start up → DFM use mode (fDFM) LD (SYSCR0), 11 - - - 1 - - B ; High-frequency oscillator start up/warm-up start. WUP: LUP: BIT 2, (SYSCR0) ; JR NZ, WUP ; LD (SYSCR1), - - - - 0 - - - B ; Change the system clock fs to fOSCH. LD (DFMCR0), 01 - 0 - - - - B ; DFM start up/lock up start. BIT 5, (DFMCR0) ; JR NZ, LUP ; LD (DFMCR0), 10 - 0 - - - - B ; Check for the flag of warm-up end. Check for the flag of lock up end. Change the system clock fOSCH to fDFM. (OK) Low-frequency oscillator operation mode (fs) (High-frequency oscillator operate) → High-frequency oscillator operation mode (fOSCH) → DFM start up → DFM use mode (fDFM) LUP: LD (SYSCR1), - - - - 0 - - - B ; Change the system clock fs to fOSCH. LD (DFMCR0), 01 - 0 - - - - B ; DFM start up/lock up start. BIT 5, (DFMCR0) ; JR NZ, LUP ; LD (DFMCR0), 10 - 0 - - - - B ; Check for the flag of lock up end. Change the system clock fOSCH to fDFM. (Error) Low-frequency oscillator operation mode (fs) (High-frequency oscillator STOP) → High-frequency oscillator start up → DFM start up → DFM use mode (fDFM) LD (SYSCR0), 11 - - - 1 - - B ; High-frequency oscillator starts up/warm-up start. WUP: LUP: BIT 2, (SYSCR0) ; JR NZ, WUP ; LD (DFMCR0), 01 - 0 - - - - B ; BIT 5, (DFMCR0) ; JR NZ, LUP ; LD (DFMCR0), 10 - 0 - - - - B ; Change the internal clock fOSCH to fDFM. LD (SYSCR1), - - - - 0 - - - B ; Change the system clock fs to fDFM. 91C025-24 Check for the flag of warm-up end. DFM start up/lock up start. Check for the flag of lock up end. 2007-02-28 TMP91C025 (2) Change/stop control (OK) DFM use mode (fDFM) → High-frequency oscillator operation mode (fOSCH) → DFM stop → Low-frequency oscillator operation mode (fs) → High-frequency oscillator stop LD (DFMCR0), 11 - - - - - - B ; Change the system clock fDFM to fOSCH. LD (DFMCR0), 00 - - - - - - B ; DFM stop. LD (SYSCR1), - - - - 1 - - - B ; Change the system clock fOSCH to fs. LD (SYSCR0), 0 - - - - - - - B ; High-frequency oscillator stop. (Error) DFM use mode (fDFM) → Low-frequency oscillator operation mode (fs) → DFM stop → High-frequency oscillator stop LD (SYSCR1), - - - - 1 - - - B ; Change the system clock fDFM to fs. LD (DFMCR0), 11 - - - - - - B ; Change the internal clock (fc) fDFM to fOSCH. LD (DFMCR0), 00 - - - - - - B ; DFM stop. LD (SYSCR0), 0 - - - - - - - B ; High-frequency oscillator stop. (OK) DFM use mode (fDFM) → Set the STOP mode → High-frequency oscillator operation mode (fOSCH) → DFM stop → HALT (High-frequency oscillator stop) LD (SYSCR2), - - - - 01 - - B ; Set the STOP mode. (This command can execute before use of DFM.) LD (DFMCR0), 11 - - - - - - B ; Change the system clock fDFM to fOSCH. LD (DFMCR0), 00 - - - - - - B ; DFM stop. ; Shift to STOP mode. HALT (Error) DFM use mode (fDFM) → Set the STOP mode → HALT (High-frequency oscillator stop) LD (SYSCR2), - - - - 01 - - B ; Set the STOP mode. (This command can execute before use of DFM.) HALT ; 91C025-25 Shift to STOP mode. 2007-02-28 TMP91C025 3.3.6 Noise Reduction Circuits Noise reduction circuits are built in, allowing implementation of the following features. (1) Reduced drivability for high-frequency oscillator (2) Reduced drivability for low-frequency oscillator (3) Single drive for high-frequency oscillator (4) SFR protection of register contents (5) ROM protection of register contents The above functions are performed by making the appropriate settings in the EMCCR0 to EMCCR3 registers. (1) Reduced drivability for high-frequency oscillator (Purpose) Reduces noise and power for oscillator when a resonator is used. (Block diagram) fOSCH C1 X1 pin Enable oscillation ( STOP + EMCCR0 < EXTIN > ) Resonator EMCCR0<DRVOSCH> C2 X2 pin (Setting method) The drivability of the oscillator is reduced by writing 0 to EMCCR0<DRVOSCH> register. By reset, <DRVOSCH> is initialized to 1 and the oscillator starts oscillation by normal-drivability when the power-supply is on. 91C025-26 2007-02-28 TMP91C025 (2) Reduced drivability for low-frequency oscillator (Purpose) Reduces noise and power for oscillator when a resonator is used. (Block diagram) C1 XT1 pin Enable oscillation Resonator EMCCR0<DRVOSCL> C2 fS XT2 pin (Setting method) The drivability of the oscillator is reduced by writing 0 to EMCCR0<DRVOSCL> register. By reset, <DRVOSCL> is initialized to 1. the (3) Single drive for high-frequency oscillator (Purpose) Not need twin-drive and protect mistake operation by inputted noise to X2 pin when the external-oscillator is used. (Block diagram) fOSCH X1 pin Enable oscillation ( STOP + EMCCR0 < EXTIN > ) EMCCR0<DRVOSCH> X2 pin (Setting method) The oscillator is disabled and starts operation as buffer by writing 1 to EMCCR0<EXTIN> register. X2-pin is always outputted 1. By reset, <EXTIN> is initialized to 0. Note: Do not write EMCCR0<EXTIN> = “1” when using external resonator. 91C025-27 2007-02-28 TMP91C025 (4) Runaway provision with SFR protection register (Purpose) Provision in runaway of program by noise mixing. Write operation to specified SFR is prohibited so that provision program in runaway prevents that it is it in the state which is fetch impossibility by stopping of clock, memory control register (CS/WAIT controller, MMU) is changed. And error handling in runaway becomes easy by INTP0 interruption. Specified SFR list 1. CS/WAIT controller B0CS, B1CS, B2CS, B3CS, BEXCS, MSAR0, MSAR1, MSAR2, MSAR3, MAMR0, MAMR1, MAMR2, MAMR3 2. MMU LOCAL0/1/2/3 3. Clock gear SYSCR0, SYSCR1, SYSCR2, EMCCR0, EMCCR3 4. DFM DFMCR0, DFMCR1 (Operation explanation) Execute and release of protection (write operation to specified SFR) becomes possible by setting up a double key to EMCCR1 and EMCCR2 register. (Double key) 1st-KEY: Succession writes in 5AH at EMCCR1 and A5H at EMCCR2 2nd-KEY: Succession writes in A5H at EMCCR1 and 5AH at EMCCR2 A state of protection can be confirmed by reading EMCCR0<PROTECT>. By reset, protection becomes OFF. And INTP0 interruption occurs when write operation to specified SFR was executed with protection ON state. 91C025-28 2007-02-28 TMP91C025 (5) Runaway provision with ROM protection register (Purpose) Provision in runaway of program by noise mixing. (Operation explanation) When write operation was executed for external three kinds of ROM by runaway of program, INTP1 is occurred and detects runaway function. Three kinds of ROM is fixed as for Flash ROM (Option program ROM), Data ROM, Program ROM are as follows on the logical address memory map. 1. Flash ROM: Address 400000H to 7FFFFFH 2. Data ROM: Address 800000H to BFFFFFH 3. Program ROM: Address C00000H to FFFFFFH For these address, admission/prohibition of detection of write operation sets it up with EMCCR3<ENFROM, ENDROM, ENPROM>. And INTP1 interruption occurred within which ROM area in the case that occurred can confirm each with EMCCR3<FFLAG, DFLAG, PFLAG>. This flag is cleared when write in 0. 91C025-29 2007-02-28 TMP91C025 3.3.7 Standby Controller (1) HALT modes When the HALT instruction is executed, the operating mode switches to IDLE2, IDLE1 or STOP mode, depending on the contents of the SYSCR2<HALTM1:0> register. The subsequent actions performed in each mode are as follows: a. IDLE2: Only the CPU halts. The internal I/O is available to select operation during IDLE2 mode. By setting the following register. Table 3.3.2 Shows the registers of setting operation during IDLE2 mode. Table 3.3.2 SFR Setting Operation during IDLE2 Mode Internal I/O SFR TMRA01 TA01RUN<I2TA01> TMRA23 TA23RUN<I2TA23> SIO0 SC0MOD1<I2S0> SIO1 SC1MOD1<I2S1> AD converter ADMOD1<I2AD> WDT WDMOD<I2WDT> b. IDLE1: Only the oscillator and the RTC (Real-time clock) and MLD continue to operate. c. STOP: All internal circuits stop operating. The operation of each of the different HALT modes is described in Table 3.3.3. Table 3.3.3 I/O Operation during HALT Modes HALT Mode IDLE2 IDLE1 STOP SYSCR2<HALTM1:0> 11 10 01 CPU I/O ports Stop Keep the state when the HALT instruction See Table 3.3.6, Table 3.3.7 was executed. TMRA Block SIO AD converter Available to select operation block WDT Stop LCDC, Interrupt controller Operate RTC, MLD Possible to operate 91C025-30 2007-02-28 TMP91C025 (2) How to release the HALT mode These halt states can be released by resetting or requesting an interrupt. The halt release sources are determined by the combination between the states of interrupt mask register <IFF2:0> and the HALT modes. The details for releasing the halt status are shown in Table 3.3.4. • Released by requesting an interrupt The operating released from the HALT mode depends on the interrupt enabled status. When the interrupt request level set before executing the HALT instruction exceeds the value of interrupt mask register, the interrupt due to the source is processed after releasing the HALT mode, and CPU status executing an instruction that follows the HALT instruction. When the interrupt request level set before executing the HALT instruction is less than the value of the interrupt mask register, releasing the HALT mode is not executed. (In non-maskable interrupts, interrupt processing is processed after releasing the HALT mode regardless of the value of the mask register.) However only for INT0 to INT3, INTKEY, INTRTC and INTALM0 to INTALM4 interrupts, even if the interrupt request level set before executing the HALT instruction is less than the value of the interrupt mask register, releasing the the HALT mode is executed. In this case,interrupt processing, and CPU starts executing the instruction next to the HALT instruction,but the interrupt request flag is held at 1. Note: Usually, interrupts can release all halts status. However, the interrupts (INT0 to INT3, INTRTC, INTALM0 to INTALM4, INTKEY) which can release the HALT mode may not be able to do so if they are input during the period CPU is shifting to the HALT mode (for about 5 clocks of fFPH) with IDLE1 or STOP mode (IDLE2 is not applicable to this case). (In this case, an interrupt request is kept on hold internally.) If another interrupt is generated after it has shifted to HALT mode completely, halt status can be released without difficulty. The priority of this interrupt is compared with that of the interrupt kept on hold internally, and the interrupt with higher priority is handled first followed by the other interrupt. • Releasing by resetting Releasing all halt status is executed by resetting. When the STOP mode is released by RESET, it is necessry enough resetting time (see Table 3.3.5) to set the operation of the oscillator to be stable. 91C025-31 2007-02-28 TMP91C025 Table 3.3.4 Source of Halt State Clearance and Halt Clearance Operation Status of Received Interrupt Interrupt Enabled Interrupt Disabled (Interrupt level) ≥ (Interrupt mask) (Interrupt level) < (Interrupt mask) Interrupt Source of halt state clearance HALT Mode IDLE2 IDLE1 STOP IDLE2 IDLE1 STOP INTWDT ♦ × × − − − INT0 to INT3 (Note 1) ♦ ♦ *1 ♦ ♦ ○ ○ ○ ○ ○*1 INTALM0 to INTALM4 ♦ × INTTA0 to INTTA3 ♦ × × × × × INTRX0 to INTRX1, TX0 to TX1 ♦ × × × × × INTAD ♦ × × × × × INTKEY ♦ ♦ *1 ♦ ♦ × ○ ○ ○*1 INTRTC ○ ○ INTLCD ♦ × × × × × RESET ♦ × × Initialize LSI ♦: After clearing the HALT mode, CPU starts interrupt processing. ○: After clearing the HALT mode, CPU resumes executing starting from instruction following the HALT instruction. ×: It can not be used to release the HALT mode. −: The priority level (Interrupt request level) of non-maskable interrupts is fixed to 7, the highest priority level. There is not this combination type. *1: Releasing the HALT mode is executed after passing the warm-up time. Note 1: When the HALT mode is cleared by an INT0 interrupt of the level mode in the interrupt enabled status, hold level H until starting interrupt processing. If level L is set before holding level L, interrupt processing is correctly started. (Example) Releasing IDLE1 mode An INT0 interrupt clears the halt state when the device is in IDLE1 mode. Address 8200H LD (PBFC), 00H ; Sets PB3 to INT0. 8203H LD (IIMC), 00H ; Selects INT0 interrupt rising edge. 8206H LD (INTE0AD), 06H ; Sets INT0 interrupt level to 6. 8209H EI 5 ; Sets interrupt level to 5 for CPU. 820BH LD (SYSCR2), 88H 820EH HALT ; Sets HALT mode to IDLE1 Mode. ; Halts CPU. INT0 INT0 interrupt routine RETI 820FH LD XX, XX 91C025-32 2007-02-28 TMP91C025 (3) Operation a. IDLE2 mode In IDLE2 mode only specific internal I/O operations, as designated by the IDLE2 setting register, can take place. Instruction execution by the CPU stops. Figure 3.3.6 illustrates an example of the timing for clearance of the IDLE2 mode halt state by an interrupt. X1 A0 to A23 D0 to D15 Data Data RD WR Interrupt for release IDLE2 mode Figure 3.3.6 Timing Chart for IDLE2 Mode Halt State Cleared by Interrupt b. IDLE1 mode In IDLE1 mode, only the internal oscillator and the RTC, MLD continue to operate. The system clock in the MCU stops. The pin status in the IDLE1 mode is depended on setting the register SYSCR2<SELDRV, DRVE>. Table 3.3.6, Table 3.3.7 summarizes the state of these pins in the IDLE mode1. In the halt state, the interrupt request is sampled asynchronously with the system clock; however, clearance of the halt state (e.g. restart of operation) is synchronous with it. Figure 3.3.7 illustrates the timing for clearance of the IDLE1 mode halt state by an interrupt. X1 A0 to A23 D0 to D15 Data Data RD WR Interrupt for release IDLE1 mode Figure 3.3.7 Timing Chart for IDLE1 Mode Halt State Cleared by Interrupt 91C025-33 2007-02-28 TMP91C025 c. STOP mode When STOP mode is selected, all internal circuits stop, including the internal oscillator pin status in STOP mode depends on the settings in the SYSCR2<DRVE> register. Table 3.3.6, Table 3.3.7 summarizes the state of these pins in STOP mode. After STOP mode has been cleared system clock output starts when the warm-up time has elapsed, in order to allow oscillation to stabilize. After STOP mode has been cleared, either NORMAL mode or SLOW mode can be selected using the SYSCR0<RSYSCK> register. Therefore, <RSYSCK>, <RXEN> and <RXTEN> must be set see the sample warm-up times in Table 3.3.5. Figure 3.3.8 illustrates the timing for clearance of the STOP mode halt state by an interrupt. Warm-up time X1 A0 to A23 D0 to D15 Data Data RD WR Interrupt for release STOP mode Figure 3.3.8 Timing Chart for STOP Mode Halt State Cleared by Interrupt Table 3.3.5 Sample Warm-up Times after Clearance of STOP Mode at fOSCH = 36 MHz, fs =32.768 kHz SYSCR2<WUPTM1:0> SYSCR0 <RSYSCK> 01 (2 ) 0 (fc) 7.1 μs 0.455 ms 1.820 ms 1 (fs) 7.8 ms 500 ms 2000 ms 8 10 (214) 91C025-34 11 (216) 2007-02-28 TMP91C025 (Setting example) The STOP mode is entered when the low-frequency operates, and high-frequency operates after releasing due to INTx. Address SYSCR0 EQU 00E0H SYSCR1 EQU 00E1H SYSCR2 EQU 00E2H 8FFDH LD (SYSCR1), 08H ; fSYS = fs/2. 9000H LD (SYSCR2), - X1001-1B ; Sets warm-up time to 2 /fOSCH. 9002H LD (SYSCR0), 011000 - - B ; Operates high-frequency after released. 9005H HALT 14 − : No change Clears and starts hit warm-up timer. (High-frequency) INTx End INTx interrupt routine 9006H Note: LD XX, XX RETI When different modes are used before and after STOP mode as the above mentioned , there is possible to release the HALT mode without changing the operation mode by acceptance of the halt release interrupt request during execution of HALT instruction (during 6 states). In the system which accepts the interrupts during execution HALT instruction, set the same operation mode before and after the STOP mode. 91C025-35 2007-02-28 TMP91C025 Table 3.3.6 Input Buffer State Table Input Buffer State When the CPU is In HALT operating mode(IDLE2) Input Port Name Function During When Name Reset Used as function Pin D0-7 – ON upon OFF P10-17 D8-15 P56 (*1) WAIT P80-82 (*2) – P83 (*2) ADTRG P90 (*1) KI0 P91 (*1) KI1 P92 (*1) KI2 P93 (*1) KI3 P94 (*1) KI4 P95 (*1) KI5 P96 (*1) KI6 P97 (*1) KI7 PB3 INT0, PS PB4 INT1, TA0IN PB5 INT2 PB6 INT3 PC0 – PC3 (*1) – PC1 RXD0 PC2 SCLK0, CTS0 PC4 RXD1 PC5 (*1) SCLK1, CTS1 PZ2-Z3 – RESET , AM0,AM1 X1,XT1 OFF ON Used as Input Port When Used function Used as as function Input Port Pin Pin – OFF OFF ON ON – When Used as – external read ON When When In HALT mode(IDLE1/STOP) ON ON upon – port read ON Condition A (Note) ON ON Used as Input Port Condition B (Note) When Used as function – OFF OFF OFF OFF – ON When Used as Input Port Pin – ON OFF When ON – ON ON ON OFF ON ON OFF OFF – – OFF – OFF ON ON ON – – OFF ON – – ON OFF ON – – OFF ON – ON – ON – ON – – IDLE1 : ON , STOP : OFF ON: The buffer is always turned on. A current flows *1: Port having a pull-up/pull-down resistor. the input buffer if the input pin is not driven. OFF: The buffer is always turned off. *2:AIN input does not cause a current to flow through the buffer. –: No applicable Note: Condition A/B are as follows. SYSCR2 register setting <DRVE> <SELDRV> 0 0 0 1 1 0 1 1 HALT mode IDLE1 STOP Condition A Condition A Condition B Condition B 91C025-36 2007-02-28 TMP91C025 Table 3.3.7 Output Buffer State Table Output Buffer State When the CPU is Port Name D0-7 Output Function Name During When When When Reset Used as Used as Used as function Output function Pin Port Pin ON upon – – OFF P10-17 D8-15 A0-15 – P20-27 A16-23 P56 (*1) – P60 CS0 P61 CS1 P62 CS2 , CS2A P63 CS3 P64 EA24, CS2B , SRLB P65 EA25, CS2C , SRUB PA0 external write ON ON OFF – ON ON In HALT mode(IDLE1/STOP) Condition A (Note) When Used When Used as Output as function Port Pin – When When Used as Used as Used as Output function Output Port Pin Port – OFF ON ON ON OFF – – ON – OFF ON – Condition B (Note) When OFF – – ON ON ON – – OFF OFF ON ON KO0, ALARM , MLDALM PA1 KO1,TA1OUT PA2 KO2,TA3OUT PA3 KO3,SCOUT PB3-B4 – PB5 PX PB6 PY PC0 TXD0 PC1,C4 – PC2 SCLK0 PC3 (*1) TXD1 PC5 SCLK1 PD0 (*1) D1BSCP PD1 D2BLP PD2 D3BFR PD3 DLEBCD PD4 DOFFB PD7 MLDALM RD , WR – PZ2 (*1) HWR PZ3 (*1) R/W, SRWR X2 – XT2 In HALT mode(IDLE2) operating – – ON – – ON – – – – ON ON – OFF OFF – – ON OFF ON ON – ON ON ON – ON OFF OFF ON ON – – – – ON ON OFF ON – ON – IDLE1 : ON , STOP : Output “H” level IDLE1 : ON , STOP : High-Z ON : The buffer is always turned on. When the bus is *1:Port having a pull-up/pull-down resistor. released , however ,output buffers for some pins are turned off. OFF: The buffer is always turned off. – : No applicable Note: Condition A/B are as follows. SYSCR2 register setting <DRVE> <SELDRV> 0 0 0 1 1 0 1 1 HALT mode IDLE1 STOP Condition A Condition A Condition B Condition B 91C025-37 2007-02-28 TMP91C025 3.4 Interrupts Interrupts are controlled by the CPU interrupt mask register SR<IFF2:0> and by the built-in interrupt controller. The TMP91C025 has a total of 37 interrupts divided into the following three types: • Interrupts generated by CPU: 9 sources (Software interrupts, illegal instruction interrupt) • Internal interrupts: 23 sources • Interrupts on external pins ( INT0 to INT3, INTKEY): 5 sources A (fixed) individual interrupt vector number is assigned to each interrupt. One of six (variable) priority level can be assigned to each maskable interrupt. The priority level of non-maskable interrupts are fixed at 7 as the highest level. When an interrupt is generated, the interrupt controller sends the piority of that interrupt to the CPU.If multiple interrupts are generated simultaneously, the interrupt controller sends the interrupt with the highest priority to the CPU. (The highest priority is level 7 using for non-maskable interrupts.) The CPU compares the priority level of the interrupt with the value of the CPU interrupt mask register <IFF2:0>. If the priority level of the interrupt is higher than the value of the interrupt mask register, the CPU accepts the interrupt. The interrupt mask register <IFF2:0> value can be updated using the value of the EI instruction (EI num sets <IFF2:0> data to num). For example, specifying EI 3 enables the maskable interrupts which priority level set in the interrupt controller is 3 or higher, and also non-maskable interrupts. Operationally, the DI instruction (<IFF2:0> = 7) is identical to the EI 7 instruction. DI instruction is used to disable maskable interrupts because of the priority level of maskable interrupts is 1 to 6. The EI instruction is vaild immediately after execution. In addition to the above general-purpose interrupt processing mode, TLCS-900/L1 has a micro DMA interrupt processing mode as well. The CPU can transfer the data (1/2/4 bytes) automatically in micro DMA mode, therefore this mode is used for speed-up interrupt processing, such as transferring data to the internal or external peripheral I/O. Moreover, TMP91C025 has software start function for micro DMA processing request by the software not by the hardware interrupt. Figure 3.4.1 shows the overall interrupt processing flow. 91C025-38 2007-02-28 TMP91C025 Interrupt processing Micro DMA soft start request Interrupt specified by micro DMA start vector? Yes No Clear interrupt request flag Interrupt vector value V read Interrupt request F/F clear General-purpose interrupt processing PUSH PC PUSH SR SR<IFF2:0> ← Level of accepted interrupt + 1 INTNEST ← INTNEST + 1 Data transfer by micro DMA Count ← Count-1 Count = 0 No Micro DMA processing Yes Clear vector register generating micro DMA trasfer and interrupt (INTTC0 – 3) PC ← (FFFF00H + V) Interrupt processing program RETI instruction POP SR POP PC INTNEST←INTNEST − 1 End Figure 3.4.1 Overall Interrupt Processing Flow 91C025-39 2007-02-28 TMP91C025 3.4.1 General-purpose Interrupt Processing When the CPU accepts an interrupt, it usually performs the following sequence of operations. That is also the same as TLCS-900/L and TLCS-900/H. (1) The CPU reads the interrupt vector from the interrupt controller. If the same level interrupts occur simultaneously, the interrupt controller generates an interrupt vector in accordance with the default priority and clears the interrupt request. (The default priority is already fixed for each interrupt: the smaller vector value has the higher priority level.) (2) The CPU pushes the value of program counter (PC) and status register (SR) onto the stack area (indicated by XSP). (3) The CPU sets the value which is the priority level of the accepted interrupt plus 1 (+1) to the interrupt mask register <IFF2:0>. However, if the priority level of the accepted interrupt is 7, the register’s value is set to 7. (4) The CPU increases the interrupt nesting counter INTNEST by 1 (+1). (5) The CPU jumps to the address indicated by the data at address FFFF00H + interrupt vector and starts the interrupt processing routine. The above processing time is 18 states (1.00 μs at 36 MHz) as the best case (16-bit data bus width and 0 waits). When the CPU compled the interrupt processing, use the RETI instruction to return to the main routine. RETI restores the contents of program counter (PC) and status register (SR) from the stack and decreases the Interrupt Nesting counter INTNEST by 1 (−1). Non-maskable interrupts cannot be disabled by a user program. Maskable interrupts, however, can be enabled or disabled by a user program. A program can set the priority level for each interrupt source. (A priority level setting of 0 or 7 will disable an interrupt request.) If an interrupt request which has a priority level equal to or greater than the value of the CPU interrupt mask register <IFF2:0> comes out, the CPU accepts its interrupt. Then, the CPU interrupt mask register <IFF2:0> is set to the value of the priority level for the accepted interrupt plus 1 (+1). Therefore, if an interrupt is generated with a higher level than the current interrupt during its processing, the CPU accepts the later interrupt and goes to the nesting status of interrupt processing. Moreover, if the CPU receives another interrupt request while performing the said (1) to (5) processing steps of the current interrupt, the latest interrupt request is sampled immediately after execution of the first instruction of the current interrupt processing routine. Specifying DI as the start instruction disables maskable interrupt nesting. A reset initializes the interrupt mask register <IFF2:0> to 111, disabling all maskable interrupts. Table 3.4.1 shows the TMP91C025 interrupt vectors and micro DMA start vectors. The address FFFF00H to FFFFFFH (256 bytes) is assigned for the interrupt vector area. 91C025-40 2007-02-28 TMP91C025 Table 3.4.1 TMP91C025 Interrupt Vectors Table Default Priority Interrupt Source and Source of Micro DMA Request Type Vector Micro Vector Reference DMA Start Value (V) Address Vector 1 Reset or “SWI 0” instruction 0000H FFFF00H − 2 “SWI 1” instruction 0004H FFFF04H − 3 INTUNDEF: illegal instruction or “SWI 2” instruction 0008H FFFF08H − “SWI 3” instruction 000CH FFFF0CH − “SWI 4” instruction 0010H FFFF10H − 6 “SWI 5” instruction 0014H FFFF14H − 7 “SWI 6” instruction 0018H FFFF18H − 8 “SWI 7” instruction 001CH FFFF1CH − 9 INTWD: Watchdog timer 0024H FFFF24H − 4 5 NonMaskable – Micro DMA (MDMA) − − − 10 INT0 pin 0028H FFFF28H 0AH 11 INT1 pin 002CH FFFF2CH 0BH 12 INT2 pin 0030H FFFF30H 0CH 13 INT3 pin 0034H FFFF34H 0DH 14 INTALM0: ALM0 (8192 Hz) 0038H FFFF38H 0EH 15 INTALM1: ALM1 (512 Hz) 003CH FFFF3CH 0FH 16 INTALM2: ALM2 (64 Hz) 0040H FFFF40H 10H 17 INTALM3: ALM3 (2 Hz) 0044H FFFF44H 11H 18 INTALM4: ALM4 (1 Hz) 0048H FFFF48H 12H 19 INTTA0: 8-bit timer0 004CH FFFF4CH 13H 20 INTTA1: 8-bit timer1 0050H FFFF50H 14H 21 INTTA2: 8-bit timer2 0054H FFFF54H 15H 22 INTTA3: 8-bit timer3 0058H FFFF58H 16H 23 INTRX0: Serial reception (Channel 0) 005CH FFFF5CH 17H INTTX0: Serial transmission (Channel 0) 0060H FFFF60H 18H 25 INTRX1: Serial reception (Channel 1) 0064H FFFF64H 19H 26 INTTX1: Serial transmission (Channel 1) 0068H FFFF68H 1AH 24 Maskable 27 INTAD: AD conversion end 006CH FFFF6CH 1BH 28 INTKEY: Key wake up 0070H FFFF70H 1CH 29 INTRTC: RTC (Alarm interrupt) 0074H FFFF74H 1DH 30 INTLCD: LCDC/LP pin 007CH FFFF7CH 1FH 31 INTP0: Protect 0 (WR to special SFR) 0080H FFFF80H 20H 32 INTP1: Protect 1 (WR to ROM) 0084H FFFF84H 21H 33 INTTC0: Micro DMA end (Channel 0) 0088H FFFF88H − 34 INTTC1: Micro DMA end (Channel 1) 008CH FFFF8CH − 35 INTTC2: Micro DMA end (Channel 2) 0090H FFFF90H − 36 INTTC3: Micro DMA end (Channel 3) 0094H FFFF94H − 0098H FFFF98H to to to − to (Reserved) 00FCH FFFFFCH − (Reserved) 91C025-41 2007-02-28 TMP91C025 3.4.2 Micro DMA Processing In addition to general-purpose interrupt processing, the TMP91C025 supprots a micro DMA function. Interrupt requests set by micro DMA perform micro DMA processing at the highest priority level (level 6) among maskable interrupts, regardless of the priority level of the particular interrupt source. The micro DMA has 4 channels and is possible continuous transmission by specifing the say later burst mode. Because the micro DMA function has been implemented with the cooperative operation of CPU, when CPU goes to a standby mode by HALT instruction, the requirement of micro DMA will be ignored (Pending). (1) Micro DMA operation When an interrupt request specified by the micro DMA start vector register is generated, the micro DMA triggers a micro DMA request to the CPU at interrupt priority level 6 and starts processing the request in spite of any interrupt source’s level. The micro DMA is ignored on <IFF2:0> = 7. The 4 micro DMA channels allow micro DMA processing to be set for up to 4 types of interrupts at any one time. When micro DMA is accepted, the interrupt request flip-flop assigned to that channel is cleared. The data are automatically transferred once (1/2/4 bytes) from the transfer source address to the transfer destination address set in the control register, and the transfer counter is decreased by 1 (−1). If the decreased result is 0, the micro DMA transfer end interrupt (INTTC0 to INTTC3) passes from the CPU to the interrupt controller. In addition, the micro DMA start vector register DMAnV is cleared to 0, the next micro DMA is disabled and micro DMA processing completes. If the decreased result is other than 0, the micro DMA processing completes if it isn’t specified the say later burst mode. In this case, the micro DMA transfer end interrupt (INTTC0 to INTTC3) aren’t generated. If an interrupt request is triggered for the interrupt source in use during the interval between the clearing of the micro DMA start vector and the next setting, general-purpose interrupt processing executes at the interrupt level set. Therefore, if only using the interrupt for starting the micro DMA (not using the interrupts as a general-purpose interrupt: level 1 to 6), first set the interrupts level to 0 (Interrupt requests disabled). If using micro DMA and general-purpose interrupts together, first set the level of the interrupt used to start micro DMA processing lower than all the other interrupt levels. (Note) In this case, the cause of general interrupt is limited to the edge interrupt. The priority of the micro DMA transfer end interrupt (INTTC0 to INTTC3) is defined by the interrupt level and the default priority as the same as the other maskable interrupt. Note: If the priority level of micro DMA is set higher than that of other interrupts, CPU operates as follows. In case INTxxx interrupt is generated first and then INTyyy interrupt is generated between checking “Interrupt specified by micro DMA start vector” (in the Figure 3.4.1) and reading interrupt vector with setting below. The vector shifts to that of INTyyy at the time. This is because the priority level of INTyyy is higher than that of INTxxx. In the interrupt routine, CPU reads the vector of INTyyy because cheking of micro DMA has finished. And INTyyy is generated regardless of transfer counter of micro DMA. INTxxx: level 1 without micro DMA INTyyy: level 6 with micro DMA 91C025-42 2007-02-28 TMP91C025 If a micro DMA request is set for more than one channel at the same time, the priority is not based on the interrupt priority level but on the channel number. The smaller channel number has the higher priority (Channel 0 (High) > channel 3 (Low)). While the register for setting the transfer source/transfer destination addresses is a 32-bit control register, this register can only effectively output 24-bit addresses. Accordingly, micro DMA can access 16 Mbytes (the upper eight bits of the 32 bits are not valid). Three micro DMA transfer modes are supported: 1-byte transfer, 2-byte (one word) transfer, and 4-byte transfer. After a transfer in any mode, the transfer source/destination addresses are increased, decreased, or remain unchanged. This simplifies the transfer of data from I/O to memory, from memory to I/O , and from I/O to I/O. For details of the transfer modes, see 3.4.2 (4) Transfer mode register. As the transfer counter is a 16-bit counter, micro DMA processing can be set for up to 65536 times per interrupt source. (The micro DMA processing count is maximized when the transfer counter initial value is set to 0000H.) Micro DMA processing can be started by the 24 interrupts shown in the micro DMA start vectors of Table 3.4.1 and by the micro DMA soft start, making a total of 25 interrupts. Figure 3.4.2 shows the word transfer micro DMA cycle in transfer destination address INC mode (except for counter mode, the same as for other modes). (The conditions for this cycle are based on an external 16-bit bus, 0 waits, trandfer source/transfer destination addresses both even-numberd values). 1 state DM1 Note 1 DM2 DM3 DM4 DM5 Note 2 DM6 DM7 DM8 X1 A0 to A23 Trasfer source address Trasger destination address RD WR / HWR D0 to D15 Input Output Figure 3.4.2 Timing for Micro DMA Cycle States 1 to 3: Instruction fetch cycle (Gets next address code). If 3 bytes and more instruction codes are inserted in the instruction queue buffer, this cycle becomes a dummy cycle. States 4 to 5: Micro DMA read cycle State 6: Dummy cycle (the address bus remains unchanged from state 5) States 7 to 8: Micro DMA write cycle Note 1: If the source address area is an 8-bit bus, it is increased by two states. If the source address area is a 16-bit bus and the address starts from an odd number, it is increased by two states. Note 2: If the destination address area is an 8-bit bus, it is increased by two states. If the destination address area is a 16-bit bus and the address starts from an odd number, it is increased by two states. 91C025-43 2007-02-28 TMP91C025 (2) Soft start function In addition to starting the micro DMA function by interrupts, TMP91C025 includes a micro DMA software start function that starts micro DMA on the generation of the write cycle to the DMAR register. Writing 1 to each bit of DMAR register causes micro DMA once (If write 0 to each bits, micro DMA doesn’t operate). At the end of transfer, the corresponding bit of the DMAR register is automatically cleared to 0. Only one-channel can be set for micro DMA at once. (Do not write 1 to plural bits.) When writing again 1 to the DMAR register, check whether the bit is 0 before writing 1. If read 1, micro DMA transfer isn’t started yet. When a burst is specified by DMAB register, data is continuously transferred until the value in the micro DMA transfer counter is 0 after start up of the micro DMA. If the value in the micro DMA transfer counter is 0 after start up of the micro DMA transfer counter doesn’t change. Don’t use Read-modify-write instruction to avoid writing to other bits by mistake. Symbol DMAR Name Address DMA 89H request (Prohibit register RMW) 7 6 5 4 3 2 DMAR3 DMAR2 1 0 DMAR1 DMAR0 R/W 0 0 0 0 DMA request (3) Transfer control registers The transfer source address and the transfer destination address are set in the following registers in CPU. Data setting for these registers is done by an LDC cr,r instruction. Channel 0 DMAS0 DMA source address register 0: DMAD0 DMA destination address register 0: only use LSB 24 bits. DMAC0 DMAM0 DMA counter register 0: only use LSB 24 bits. 1 to 65536 . DMA mode register 0. Channel 3 DMAS3 DMA source address register 3. DMAD3 DMA destination address register 3. DMAC3 DMAM3 DMA counter register 3. DMA mode register 3. 8 bits 16 bits 32 bits 91C025-44 2007-02-28 TMP91C025 (4) Detailed description of the transfer mode register 8 bits DMAM0 to DMAM3 0 0 0 Mode Note: When setting a value in this register, write 0 to the upper 3 bits. Number of Transfer Bytes 000 000 (fixed) Transfer destination address INC mode 00 Byte transfer ................................................ I/O to memory 01 Word transfer (DMADn+) ← (DMASn) 10 4-bit transfer DMACn ← DMACn − 1 00 Byte transfer ................................................ I/O to memory 01 Word transfer (DMADn−) ← (DMASn) 10 4-bit transfer DMACn ← DMACn − 1 00 Byte transfer ................................................ Memory to I/O 01 Word transfer (DMADn) ← (DMASn+) 10 4-bit transfer DMACn ← DMACn − 1 00 Byte transfer ................................................ Memory to I/O 01 Word transfer (DMADn) ← (DMASn−) 10 4-bit transfer DMACn ← DMACn − 1 00 Byte transfer ........................................................ I/O to I/O 01 Word transfer (DMADn) ← (DMASn−) 10 4-bit transfer DMACn ← DMACn − 1 00 Counter mode 001 444 ns 12 states 667 ns 8 states 444 ns 12 states 667 ns 8 states 444 ns 12 states 667 ns 8 states 444 ns 12 states 667 ns 8 states 444 ns 12 states 667 ns 5 states 278 ns If DMACn = 0, then INTTCn is generated. Transfer source address DEC mode 100 8 states If DMACn = 0, then INTTCn is generated. Transfer source address INC mode 011 Minimum Number of Execution Time Execution States at fc = 36 MHz If DMACn = 0, then INTTCn is generated. Transfer destination address DEC mode 010 101 Mode Description If DMACn = 0, then INTTCn is generated. Fixed address mode If DMACn = 0, then INTTCn is generated. ..................... For counting number of times interrupt is generated DMASn ← DMASn + 1 DMACn ← DMACn − 1 If DMACn = 0, then INTTCn is generated. Note 1: n is the corresponding micro DMA channels 0 to 3 DMADn+/DMASn+: Post-increment (increment register value after transfer) DMADn−/DMASn−: Post-decrement (decrement register value after transfer) The I/Os in the table mean fixed address and the memory means increment (INC) or decrement (DEC) addresses. Note 2: Execution time is under the condition of: 16-bit bus width (both translation and destination address area) /0 waits/ fc = 36 MHz/selected high frequency mode (fc × 1) Note 3: Do not use an undefined code for the transfer mode register except for the defined codes listed in the above table. 91C025-45 2007-02-28 TMP91C025 3.4.3 Interrupt Controller Operation The block diagram in Figure 3.4.3 shows the interrupt circuits. The left-hand side of the diagram shows the interrupt controller circuit. The right-hand side shows the CPU interrupt request signal circuit and the halt release circuit. For each of the 36 interrupt channels there is an interrupt request flag (consisting of a flip-flop), an interrupt priority setting register and a micro DMA start vector register. The interrupt request flag latches interrupt requests from the peripherals. The flag is cleared to 0 in the following cases: • When reset occurs • When the CPU reads the channel vector after accepted its interrupt • When executing an instruction that clears the interrupt (Write DMA start vector to INTCLR register) • When the CPU receives a micro DMA request (When micro DMA is set) • When the micro DMA burst transfer is terminated An interrupt priority can be set independently for each interrupt source by writing the priority to the interrupt priority setting register (e.g. INTE0AD or INTE12). 6 interrupt priorities levels (1 to 6) are provided. Setting an interrupt source’s priority level to 0 (or 7) disables interrupt requests from that source. The priority of non-maskable interrupts (Watchdog timer interrupts) is fixed at 7. If interrupt request with the same level are generated at the same time, the default priority (The interrupt with the lowest priority or, in other words, the interrupt with the lowest vector value) is used to determine which interrupt request is accepted first. The 3rd and 7th bits of the interrupt priority setting register indicate the state of the interrupt request flag and thus whether an interrupt request for a given channel has occurred. The interrupt controller sends the interrupt request with the highest priority among the simulateous interrupts and its vector address to the CPU. The CPU compares the priority value <IFF2:0> in the status register by the interrupt request signal with the priority value set; if the latter is higher, the interrupt is accepted. Then the CPU sets a value higher than the priority value by 1 (+1) in the CPU SR<IFF2:0>. Interrupt request where the priority value equals or is higher than the set value are accepted simultaneously during the previous interrupt routine. When interrupt processing is completed (after execution of the RETI instruction), the CPU restores the priority value saved in the stack before the interrupt was generated to the CPU SR<IFF2:0>. The interrupt controller also has registers (4 channels) used to store the micro DMA start vector. Writing the start vector of the interrupt source for the micro DMA processing (see Table 3.4.1), enables the corresponding interrupt to be processed by micro DMA processing. The values must be set in the micro DMA parameter register (e.g. DMAS and DMAD) prior to the micro DMA processing. 91C025-46 2007-02-28 Micro DMA Counter 0 Interrupt 91C025-47 INTP1 INTTC0 INTTC1 INTTC2 INTTC3 INT1 INT2 INT3 INTALM0 INTALM1 INTALM2 INTALM3 INTALM4 INTTA0 INT0 INTWD RESET D5 D4 D3 D2 D1 D0 Dn + 3 Y1 Y2 Y3 Y4 Y5 Y6 Interrupt request F/F C B A Decoder INTTC0 D Q 6 34 Selector S V = 84H V = 88H V = 8CH V = 90H V = 94H V = 28H V = 2CH V = 30H V = 34H V = 38H V = 3CH V = 40H V = 44H V = 48H V = 4CH 6 V = 20H V = 24H DMA0V DMA1V DMA2V DMA3V Soft start Interrupt vector read Micro DMA acknowledge S Q R Interrupt request F/F D Q CLR Micro DMA start vector setting register Reset Dn + 2 Dn + 1 Dn Q Priority setting register RESET Interrupt vector read S R Interrupt request F/F Interrupt controller 4 1 7 3 2 1 0 B A D2 D3 D4 D5 D6 D7 D0 D1 3 INTRQ2 to 0 2 Interrupt vector read Interrupt vector generator 4 input OR 36 1 A 2 Highest priority B 3 interrupt 4 level select C 5 6 7 Micro DMA channel priority encoder 6 1 Interrupt Priority encoder request signal Interrupt level detect 2 if IFF = 7 then 0 Micro DMA channel specification Micro DMA request INT0, 1, 2, 3, INTKEY, INTRTC, INTALM RESET HALT release During IDLE1 During STOP Interrupt request signal EI 1 to 7 DI RESET if INTRQ2 to 0 ≥ IFF 2 to 0 then 1. 3 3 IFF2:0 Interrupt mask F/F CPU TMP91C025 Figure 3.4.3 Block Diagram of Interrupt Controller 2007-02-28 TMP91C025 (1) Interrupt level setting registers Symbol Name Address INTAD 6 90H enable IADC IADM2 91H enable 92H 0 I2C I2M2 R IA4C INTALM1 INTALM3 93H 0 IA1C IA1M2 R 0 IA3C IA3M2 94H R INTTA1 0 ITA1C ITA1M2 95H INTTA3 0 ITA3C ITA3M2 96H INTKEY enable IA4M0 0 I1M2 0 IKC IKM2 0 R I3C I3M2 I1M0 0 0 IA1M1 IA1M0 IA0C IA0M2 0 I3M1 I3M0 0 0 IA0M1 IA0M0 INTALM0 R R/W 0 0 0 0 IA3M1 IA3M0 IA2C IA2M2 0 0 IA2M1 IA2M0 INTALM2 ITA1M1 ITA3M1 R R/W 0 0 0 0 ITA1M0 ITA0C ITA0M2 0 INTTA0 (TMRA0) ITA0M1 R ITA0M0 R/W 0 0 0 0 ITA3M0 ITA2C ITA2M2 0 INTTA2 (TMRA2) ITA2M1 R ITA2M0 R/W 0 0 0 0 IKM1 IKM0 IRC IRM2 0 0 R/W 0 0 0 IRM1 IRM0 INTRTC R/W 0 I1M1 0 INTKEY 97H 0 R/W 0 R/W 0 0 R 0 R INTRTC INTERTCKEY I1C INTTA3 (TMRA3) enable and IA4M1 R/W 0 I0M0 R/W INT3 0 R INTTA2 INTETA23 0 INTTA1 (TMRA1) enable and 0 R/W 0 I0M1 R R/W 0 INTTA0 INTETA01 I0M2 INTALM3 enable and I2M0 R/W INTALM2 INTEALM23 I0C INTALM1 enable and I2M1 0 0 0 INT1 0 INTALM0 INTEALM01 0 R/W IA4M2 1 R 0 R enable and 2 INTALM4 INT3 and INTALM4 IADM0 R/W 0 INTE3ALM4 3 INT2 INT1 and INT2 4 INT0 IADM1 R 0 INTE12 5 INTAD INT0 and INTE0AD 7 R 0 0 0 R/W 0 0 0 Interrupt request flag lxxM2 lxxM1 lxxM0 Function (Write) 0 0 0 Disables interrupt requests 0 0 1 Sets interrupt priority level to 1 0 1 0 Sets interrupt priority level to 2 0 1 1 Sets interrupt priority level to 3 1 0 0 Sets interrupt priority level to 4 1 0 1 Sets interrupt priority level to 5 1 1 0 Sets interrupt priority level to 6 1 1 1 Disables interrupt requests 91C025-48 2007-02-28 TMP91C025 Symbol Name Address enable 6 ITX0C ITX0M2 5 4 3 2 1 0 ITX0M1 ITX0M0 IRX0C IRX0M2 R R/W IRX0M1 IRX0M0 0 0 0 0 0 IRX1M1 IRX1M0 INTTX0 Interrupt INTES0 7 98H R serial 0 0 INTRX0 R/W 0 0 INTTX1 INTRX1 & INTES1 INTTX1 99H ITXT1C ITX1M2 ITX1M1 R enable 0 INTRX1 ITX1M0 R/W 0 IRX1C IRX1M2 R 0 0 0 R/W 0 INTELCD INTLCD enable 9AH ILCD1C ILCDM2 ILCDM1 R 0 ILCDM0 − 0 − − − R/W 0 0 INTTC0 & 9BH ITC1C ITC1M2 0 ITC1M0 R/W 0 ITC0C ITC0M2 INTTC2 & 9CH ITC3C 0 0 0 9DH IP1C R 0 0 R/W 0 0 ITC2C ITC2M2 ITC2M1 ITC2M0 0 R/W 0 0 0 IP0M1 IP0M0 INTP0 IP1M1 IP1M0 R/W 0 ITC0M0 R 0 IP1M2 ITC0M1 0 INTP1 INTP0 & enable ITC3M0 R/W 0 − INTTC2 ITC3M1 R enable INTEP01 INTP1 ITC3M2 − − R 0 INTTC3 INTETC23 INTTC3 − INTTC0 ITC1M1 R enable 0 − − INTTC1 INTETC01 INTTC1 0 − INTLCD IP0C IP0M2 R 0 0 0 R/W 0 0 0 Interrupt request flag lxxM2 lxxM1 lxxM0 Function (Write) 0 0 0 Disables interrupt requests 0 0 1 Sets interrupt priority level to 1 0 1 0 Sets interrupt priority level to 2 0 1 1 Sets interrupt priority level to 3 1 0 0 Sets interrupt priority level to 4 1 0 1 Sets interrupt priority level to 5 1 1 0 Sets interrupt priority level to 6 1 1 1 Disables interrupt requests 91C025-49 2007-02-28 TMP91C025 (2) External interrupt control Symbol Name Address 7 6 5 4 3 2 1 0 − − I3EDGE I2EDGE I1EDGE I0EDGE I0LE − 0 0 0 0 0 0 0 0 Interrupt IIMC W 8CH input mode control (Prohibit Always Always INT3EDGE INT2EDGE INT1EDGE INT0EDGE INT0 mode Always write 0. write 0. 0: Rising 0: Rising 0: Rising 0: Rising 0: Edge 1: Falling 1: Falling 1: Falling 1: Falling 1: Level RMW) write 0. INT0 level enable 0 edge detect INT 1 High level INT (3) Interrupt request flag clear register The interrupt request flag is cleared by writing the appropriate micro DMA start vector, to the register INTCLR. For example, to clear the interrupt flag INT0, perform the following register operation after execution of the DI instruction. INTCLR ← 0AH: Clears interrupt request flag INT0. Symbol Name Address Interrupt INTCLR clear control 7 6 5 4 3 2 1 0 CLRV5 CLRV4 CLRV3 CLRV2 CLRV1 CLRV0 0 0 0 0 0 0 88H (Prohibit W RMW) Interrupt Vector (4) Micro DMA start vector registers This register assigns micro DMA processing to which interrupt source. The interrupt source with a micro DMA start vector that matches the vector set in this register is assigned as the micro DMA start source. When the micro DMA transfer counter value reaches zero, the micro DMA transfer end interrupt corresponding to the channel is sent to the interrupt controller, the micro DMA start vector register is cleared, and the micro DMA start source for the channel is cleared. Therefore, to continue micro DMA processing, set the micro DMA start vector register again during the processing of the micro DMA transfer end interrupt. If the same vector is set in the micro DMA start vector registers of more than one channel, the channel with the lowest number has a higher priority. Accordingly, if the same vector is set in the micro DMA start vector registers of two channels, the interrupt generated in the channel with the lower number is executed until micro DMA transfer is complete. If the micro DMA start vector for this channel is not set again, the next micro DMA is started for the channel with the higher number. (Micro DMA chaining.) 91C025-50 2007-02-28 TMP91C025 Symbol Name Address 7 6 DMA0 DMA0V start 5 4 3 DMA0V5 DMA0V4 DMA0V3 2 1 0 DMA0V2 DMA0V1 DMA0V0 0 0 DMA1V1 DMA1V0 0 0 DMA2V1 DMA2V0 0 0 DMA3V1 DMA3V0 0 0 R/W 80H 0 vector 0 0 0 DMA0 start vector DMA1 DMA1V start DMA1V5 DMA1V4 DMA1V3 0 0 0 DMA1V2 R/W 81H vector 0 DMA1 start vector DMA2V5 DMA2 DMA2V start DMA2V4 DMA2V3 DMA2V2 R/W 82H 0 0 0 DMA3V5 DMA3V4 DMA3V3 0 0 0 vector 0 DMA2 start vector DMA3 DMA3V start DMA3V2 R/W 83H vector 0 DMA3 start vector (5) Micro DMA burst specification Specifying the micro DMA burst continues the micro DMA transfer until the transfer counter register reaches zero after micro DMA start. Setting a bit which corresponds to the micro DMA channel of the DMAB registers mentioned below to 1 specifies a burst. Symbol Name DMA DMAR software request register Address 7 6 5 89H (Prohibit RMW) burst 3 2 1 0 DMAR3 DMAR2 DMAR1 DMAR0 R/W R/W R/W R/W 0 0 0 0 1: DMA software request DMAB3 DMA DMAB 4 DMAB2 DMAB1 DMAB0 0 0 R/W 8AH 0 register 0 1: DMA burst request 91C025-51 2007-02-28 TMP91C025 (6) Attention point The instruction execution unit and the bus interface unit of this CPU operate independently. Therefore, immediately before an interrupt is generated, if the CPU fetches an instruction that clears the corresponding interrupt request flag, the CPU may execute the instruction that clears the interrupt request flag (Note) between accepting and reading the interrupt vector. In this case, the CPU reads the default vector 0008H and reads the interrupt vector address FFFF08H. To avoid the avobe plogram, place instructions that clear interrupt request flags after a DI instruction. And in the case of setting an interrupt enable again by EI instruction after the execution of clearing instruction, execute EI instruction after clearing and more than 1-instructions (ex. “NOP” × 1 times) In the case of changing the value of the interrupt mask register <IFF2:0> by execution of POP SR instruction, disable an interrupt by DI instruction before execution of POP SR instruction. In addition, take care as the following 2 circuits are exceptional and demand special attention. INT0 level mode In level mode INT0 is not an edge-triggered interrupt. Hence, in level mode the interrupt request flip-flop for INT0 does not function. The peripheral interrupt request passes through the S input of the flip-flop and becomes the Q output. If the interrupt input mode is changed from edge mode to level mode, the interrupt request flag is cleared automatically. If the CPU enters the interrupt response sequence as a result of INT0 going from 0 to 1, INT0 must then be held at 1 until the interrupt response sequence has been completed. If INT0 is set to level mode so as to release a halt state, INT0 must be held at 1 from the time INT0 changes from 0 to 1 until the halt state is released. (Hence, it is necessary to ensure that input noise is not interpreted as a 0, causing INT0 to revert to 0 before the halt state has been released.) When the mode changes from level mode to edge mode, interrupt request flags which were set in level mode will not be cleared. Interrupt request flags must be cleared using the following sequence. DI LD (IIMC), 00H ; Switches interrupt input mode from level mode to edge mode. LD (INTCLR), 0AH ; Clears interrupt request flag. NOP ; Wait EI instruction EI INTRX The interrupt request flip-flop can only be cleared by a reset or by reading the serial channel receive buffer. It cannot be cleared by writing INTCLR register. Note: The following instructions or pin input state changes are equivalent to instructions that clear the interrupt request flag. INT0: Instructions which switch to level mode after an interrupt request has been generated in edge mode. The pin input change from high to low after interrupt request has been generated in level mode. (H → L) INTRX: Instruction which read the receive buffer. 91C025-52 2007-02-28 TMP91C025 3.5 Port Functions The TMP91C025 features 38-bit settings which relate to the various I/O ports. As well as general-purpose I/O port functionality, the port pins also have I/O functions which relate to the built-in CPU and internal I/Os. Table 3.5.1 lists the functions of each port pin. Table 3.5.2, Table 3.5.4 lists I/O registers and their specifications. Table 3.5.1 Port Functions (R: PU = with programmable pull-up resistor/U = with pull-up resistor) Port Name Pin Name Number of Pins Direction R Direction Setting Unit Pin Name for Built-in Function Port 1 P10 to P17 8 I/O − Bit D8 to D15 Port 2 P20 to P27 8 Output A16 to A23 P56 1 I/O − PU (Fixed) Port 5 Port 6 P60 1 Output − (Fixed) CS0 P61 1 Output − (Fixed) CS1 P62 1 Output − (Fixed) CS2 , CS2A P63 1 Output − (Fixed) CS3 Bit WAIT P64 1 Output − (Fixed) EA24, CS2B , SRLB P65 1 Output − (Fixed) EA25, CS2C , SRUB P80 P81 1 1 Input Input − − (Fixed) (Fixed) AN0 AN1 P82 1 Input − (Fixed) P83 1 Input − (Fixed) AN2, MX AN3, ADTRG , MY P90 to P97 8 Input U (Fixed) KI0 to KI7 Port A PA0 1 Output − (Fixed) KO0, ALARM , MLDALM Port B PA1 PA2 PA3 PB3 1 1 1 1 Output Output Output I/O − − − − (Fixed) (Fixed) (Fixed) Bit KO1, TA1OUT KO2, TA3OUT KO3, SCOUT INT0, PS Port 8 Port 9 Port C Port D Port Z PB4 1 I/O − Bit PB5 1 Input − (Fixed) INT2, PX PB6 1 Input − (Fixed) INT3, PY PC0 PC1 1 1 I/O I/O Bit Bit INT1, TA0IN PC2 1 I/O − − PU Bit TXD0 RXD0 SCLK0, CTS0 PC3 1 I/O − Bit TXD1 PC4 1 I/O Bit PC5 1 I/O − PU RXD1 SCLK1, CTS1 PD0 1 Output − (Fixed) D1BSCP PD1 1 Output − (Fixed) D2BLP PD2 1 Output − (Fixed) D3BFR PD3 1 Output − (Fixed) DLEBCD PD4 1 Output − (Fixed) DOFFB PD7 1 Output − (Fixed) MLDALM PZ2 PZ3 1 1 I/O I/O PU PU Bit Bit 91C025-53 Bit HWR R/ W , SRWR 2007-02-28 TMP91C025 Table 3.5.2 I/O Registers and Specifications (1/2) Port Port 1 Pin Name Port 5 Port 6 Port 8 Port 9 Port A PnCR Input port X 0 Output port X 1 D8 to D15 bus X X Output port X None A16 to A23 output X WAIT input (Without PU) 0 0 WAIT input (With PU) 1 0 X 0 0 P60 Output port CS0 output X 1 None P61 CS1 output X 1 P62 CS2 output X 1 P10 to P17 P20 to P27 P56 P60 to P65 PnFC PnFC2 None 0 None 1 None 0 CS2A output X X 1 P63 CS3 output X 1 None P64 SRLB output X 0 1 CS2B output X 1 1 X 1 0 P65 EA24 output SRUB output X 0 1 CS2C output X 1 1 EA25 output X 1 0 None P80 to P83 Input port P83 AN0 to 3 input ADTRG input P90 to P97 Input port X KI0 to 7 input X Output port X 0 0 KO0 to 3 output (CMOS) X 0 0 KO0 to 3 output (Open drain) X 1 0 ALARM output 1 0 1 MLDALM output 0 0 1 PA1 TA1OUT output X 0 1 PA2 TA3OUT output X 0 1 PA3 SCOUT output X 0 1 PB3 to PB4 Input port X PA0 to PA3 PA0 Port B I/O Register Pn (Note 1) Port 2 Specification X: Don’t care X (Note 2) (Note 3) None X None X None None 0 0 1 0 Output port X 1 0 PB3 INT0 input PS input X 0 1 X 0 X PB4 INT1 input X 0 1 TA0IN input X 0 X INT2 input X 0 1 PX output X 0 None INT3 input X 0 1 PY output X 0 None PB5 PB6 91C025-54 None 2007-02-28 TMP91C025 Table 3.5.3 I/O Registers and Specifications (2/2) Port Port C Pin Name Specification Port Z I/O Register Pn PnCR X 0 PnFC PnFC2 PC0 to PC5 Input port X 1 0 PC0 TXD0 output (Note 4) 1 1 1 PC1 RXD0 input (Note 4) 1 0 None PC2 SCLK0 input (Note 4) 1 0 0 SCLK0 output (Note 4) 1 1 1 CTS0 input (Note 4) 1 0 0 Output port Port D X: Don’t care 0 PC3 TXD1 output (Note 4) 1 1 1 PC4 RXD1 input (Note 4) 1 0 None PC5 SCLK1 input (Note 4) 1 0 0 SCLK1 output (Note 4) 1 1 1 CTS1 input (Note 4) 1 0 0 PD0 to PD7 Output port X 0 PD0 D1BSCP output X 1 PD1 D2BLP output X 1 PD2 D3BFR output X PD3 DLEBCD output X None None 1 1 PD4 DOFFB output X 1 PD7 MLDALM output X 1 PZ2 to PZ3 Input port X 0 0 Output port X 1 0 PZ2 HWR output X 1 1 PZ3 R/ W output X 0 1 SRWR output X 1 1 Note 1: Port1 is only use for port or DATA bus (D8 to D15) by setting AM1 and AM0 pins. Note 2: In case using P80 to P83 for analog input ports of AD converter, set to ADMOD1<ADCH2:0>. Note 3: In case using P83 for ADTRG input port, set to ADMOD1<ADTRGE>. Note 4: As for input ports of SIO0 and SIO1: (TXD0, RXD0, SCLK0, CTS0 , TXD1, RXD1, SCLK1, CTS1 ), logical selection for output data or input data is determined by the output latch register Pn of each port. 91C025-55 2007-02-28 TMP91C025 Port 1 (P10 to P17) Port 1 is an 8-bit general-purpose I/O port. Each bit can be set individually for input or output using the control register P1CR. Resetting , the control register P1CR to 0 and sets port 1 to input mode. In addition to functioning as a general-purpose I/O port, port 1 can also function as an address data bus (D8 to 15). Table 3.5.4 Function Setting of AM0/AM1 AM1 AM0 Function Setting after Reset 0 0 Input port 0 1 Data bus (D8 to D15) 1 0 Don’t use this setting 1 1 Don’t use this setting Reset Direction control (on bit basis) P1CR write Output Latch Internal data bus 3.5.1 Output buffer Port 1 P10 to P17 (D8 to D15) P1 write P1 Read Figure 3.5.1 Port 1 91C025-56 2007-02-28 TMP91C025 Port 2 (P20 to P27) Port 2 is an 8-bit output port. In addition to functioning as a output port, port 2 can also function as an address bus (A16 to A23). Each bit can be set individually for address bus using the function register P2FC. Resetting sets all bits of the function register P2FC to 1 and sets port 2 to address bus. Reset S Function control (on bits basis) P2FC write S Output A latch B P2 write selector Internal data bus 3.5.2 Output buffer Port 2 P20 to P27 (A16 to A23) P2 read Internal A16 to A23 Figure 3.5.2 Port 2 91C025-57 2007-02-28 TMP91C025 Port 1 Register P1 P0 (0000H) (0001H) Bit symbol 7 6 5 4 P17 P16 P15 P14 3 2 1 0 P13 P12 P11 P10 Read/Write R/W After reset Data from external port (Output latch register is cleared to 0.) Port 1 Control Register P1CR (0004H) Bit symbol 7 6 5 4 P17C P16C P15C P14C Read/Write After reset (Note2) 3 2 1 0 P13C P12C P11C P10C 0/1 0/1 0/1 0/1 W 0/1 0/1 0/1 Function 0/1 0: Input 1: Output Port 1 I/O setting 0: Input 1: Output Port 2 Register P2 (0006H) Bit symbol 7 6 5 4 3 2 1 0 P27 P26 P25 P24 P23 P22 P21 P20 1 1 1 1 1 1 1 1 3 2 1 0 P23F P22F P21F P20F 1 1 1 1 Read/Write After reset R/W Port 2 Function Register P2FC (0009H) Bit symbol 7 6 5 4 P27F P26F P25F P24F Read/Write After reset Function W 1 1 1 1 0: Port 1: Address bus (A23 to A16) Note1: Read-modify-write is prohibited for P1CR and P2FC. Note2: It is set to “Port” or “Data bus” by AM pins state. Figure 3.5.3 Registers for Ports 1 and 2 91C025-58 2007-02-28 TMP91C025 Port Z (PZ2 to PZ3) Port Z is an 2-bit general-purpose I/O port. I/O is set using control register PZCR and PZFC. Resetting sets all bits of the output latch PZ to 1. In addition to functioning as a general-purpose I/O port, port Z also functions as I/O for the CPU’s control/status signal. Resetting initializes PZ2 and PZ3 pins to input mode with pull-up register. Reset Direction control (on bit basis) PZCR write Function conrtol (on bit basis) PZFC write P-ch (Programmable pull up) S S Output latch A B Selector Internal data bus 3.5.3 PZ2 ( HWR ) Output buffer PZ write HWR PZ read Figure 3.5.4 Port Z2 91C025-59 2007-02-28 TMP91C025 Reset Direction control (on bit basis) PZCR write Function conrtol P-ch (Programmable pull up) PZFC write S S Output latch PZ write A B C PZ3 (R/ W , SRWR ) Selector Internal data bus (on bit basis) Output buffer R/W SRWR PZ read Figure 3.5.5 Port Z3 91C025-60 2007-02-28 TMP91C025 Port Z register 7 PZ (007DH) 6 5 4 3 Bit symbol 2 PZ3 1 0 1 0 1 0 PZ2 Read/Write R/W After reset Data from external port Function 0(Output latch register) (Note 1) : Pull-up resistor OFF 1(Output latch register) : Pull-up resistor ON Port Z control register 7 PZCR (007EH) 6 5 4 Bit symbol 3 2 PZ3C Read/Write PZ2C W After reset 0 Function 0 0: Input 1: Output Port Z function register 7 PZFC (007FH) 6 5 4 Bit symbol 3 2 PZ3F Read/Write PZ2F W After reset 0 Function 0: Port 1: R/ W , 0 0: Port 1: HWR SRWR Note 1: Note 2: Note 3: Output latch register is set to 1. Read-modify-write is prohibited for registers PZCR and PZFC. When port Z is used in Input mode, the PZ register controls the built-in pull-up resistor. Read-modify-write is prohibited in input mode or I/O mode. Setting the built-in pull-up resistor may be depended on the states of the input pin. R/W, SRWR setting <PZ3C> 0 1 0 Input Output 1 R/W SRWR <PZ3F> Figure 3.5.6 Registers for Port Z 91C025-61 2007-02-28 TMP91C025 Port 5 (P56) Port 5 is an 1-bit general-purpose I/O port. I/O is set using control register P5CR and P5FC. Resetting sets all bits of the output latch P5 to 1. In addition to functioning as a general-purpose I/O port, port 5 also functions as I/O for the CPU’s control/status signal. Resetting initializes P56 pins to input mode with pull-up resistor. Reset Direction control (on bit basis) P-ch (Programmable pull up) P5CR write Internal data bus 3.5.4 S Output Latch P56 ( WAIT ) Output buffer P5 write Internal WAIT P5 read Figure 3.5.7 Port 5 (P56) 91C025-62 2007-02-28 TMP91C025 Port 5 register 7 P5 (000DH) 6 5 Bit symbol P56 Read/Write R/W After reset Data from external port (Output latch register is set to 1.) 0(Output latch register) : Pull-up resistor OFF 1(Output latch register) : Pull-up resistor ON Function 4 3 2 1 0 3 2 1 0 Port 5 control register 7 P5CR (0010H) 6 5 Bit symbol P56C Read/Write W After reset 0 Function 4 0: Input 1: Output Note1: Read-modify-write is prohibited for registers P5CR. Note2: When the P56/WAIT pin is to be use as the WAIT pin, P5CR<P56C> must be set to 0 and <BnW2:0> in the chip select/wait control register must be set 010. Figure 3.5.8 Registers for Port 5 91C025-63 2007-02-28 TMP91C025 Port 6 (P60 to P65) Port 60 to 65 are 6-bit output ports. Resetting sets output latch of P62 to “0” and output latches of P60 to P61, P63 to P65 to 1. Port6 also function as chip-select output ( CS0 to CS3 ), extend address output (EA24, EA25) and extend chip-select output ( CS2A , CS2B and CS2C ). Writing 1 in the corresponding bit of P6FC, P6FC2 enables the respective functions. Resetting resets the P6FC, P6FC2 to 0, and sets all bits to output ports. Reset Function control 2 (on bit basis) P6FC2 write Internal data bus 3.5.5 Funtion control (on bit basis) P6FC write S Output lacth P6 write P6 read A B C Selector D P60 ( CS0 ), P61 ( CS1 ), P62 ( CS2 , CS2A ), P63 ( CS3 ), P64 (EA24, CS2B , SRLB ), P65 (EA25, CS2C , SRUB ) 1,1,1,1, SRLB SRUB 1,1, CS2A ,1, CS2B , CS2C CS0 , CS1 , CS2 , CS3 , EA24, EA25 Figure 3.5.9 Port 6 91C025-64 2007-02-28 TMP91C025 Port 6 Register 7 P6 (0012H) 6 Bit symbol 5 4 3 P65 P64 P63 Read/Write 2 1 0 P62 P61 P60 0 1 1 2 1 0 P62F P61F P60F 0 0 0 R/W After reset 1 1 1 Port 6 Function Register 7 P6FC (0015H) 6 Bit symbol 5 4 3 P65F P64F P63F Read/Write W After reset 0 Function 0 0 0: Port 0: Port 1: EA25 1: EA24 0: Port 1: CS3 0: Port 1: CS2 0: Port 1: CS1 0: Port 1: CS0 Port 6 Function Register 2 7 P6FC2 (001BH) 6 Bit symbol 5 4 3 2 1 0 P65F2 P64F2 − P62F2 − − W W W W 0 0 0 0 Read/Write W After reset 0 Function 0 0: <P65F> 0: <P64F> Always 1: SRUB , 1: SRLB , write 0. CS2C , CS2B , EA25 EA24 SRLB , CS2B , EA24 setting SRUB , CS2C , EA25 setting <P65F> <P64F> 0 1 0 1 0 P64 EA24 1 SRLB CS2B 1 <P64F2> <P65F2> 0 Always write 0. 0: <P62F> 1: CS2A P65 SRUB EA25 CS2C Note: Read-modify-write is prohibited for P6FC and P6FC2. Figure 3.5.10 Registers for Port 6 91C025-65 2007-02-28 TMP91C025 3.5.6 Port 8 (P80 to P83) Internal data bus Port 8 is a 4-bit input port and can also be used as the analog input pins for the internal AD converter. P83 can also be used as ADTRG pin for the AD converter. P82, P83 can also be used as MX, MY pin for touch screen interface. Port 8 P80 to P83 (AN0 to AN3) Port 8 read Conversion result register AD Channel converter selector AD Read ADTRG (for P83 only) TSICR0<MXEN, MYEN > (for P82, P83 only) TSICR0<TSI7 > Figure 3.5.11 Port 8 Port 8 Register 7 P8 (0018H) 6 5 4 Bit symbol 3 2 P83 P82 1 0 P81 P80 Read/Write R After reset Data from external port. Note: The input channel selection of AD Converter, the permission of ADTRG input are set by AD Converter mode register ADMOD1. The input channel selection of AD Converter, the permission of MX, MY input are set by touch screen control register TSICR. Figure 3.5.12 Registers for Port 8 91C025-66 2007-02-28 TMP91C025 3.5.7 Port 9 (P90 to P97) Port 90 to 97 are 8-bit input ports with pull-up resistors. In addition to functioning as general-purpose I/O port, port 90 to 97 can also Key-on wakeup function as Key board interface. The various functions can each be enabled by writing 1 to the corresponding bit of the port 9 function register (P9FC). Resetting resets all bits of the register P9FC to 0 and sets all pins to be input port. INTKEY P90 to P97 8-OR Internal data bus Rising edge detection Reset Key-on enable (on bit basis) Pull-up resistor P9FC write P90 to P97 (KI0 to KI7) P9 read Figure 3.5.13 Port 9 When P9FC = 1, if either of input of KI0 to KI7 pins falls down, INTKEY interrupt is generated. INTKEY interrupt can be used to release all HALT mode. Port 9 register P9 (0019H) Bit symbol 7 6 5 4 P97 P96 P95 P94 3 2 1 0 P93 P92 P91 P90 3 2 1 0 P93F P92F P91F P90F 0 0 0 0 Read/Write R After reset Data from external port. Port 9 function register P9FC (001DH) Bit symbol 7 6 5 4 P97F P96F P95F P94F Read/Write After reset Function W 0 0 0 0 0: Key-in disable 1: Key-in enable Key-in of Port 9 Disable 0 Enable 1 Note: Read-modify-write is prohibited for the registers P9FC. Figure 3.5.14 Registers for Port 9 91C025-67 2007-02-28 TMP91C025 Port A (PA0 to PA3) Port A0 to PA3 are 4-bit output ports, and also used Key board interface pin KO0 to KO3 which can set open drain output buffer. Writing 1 to the corresponding bit of the port A function register (PAFC) enable the open drain output. In addition to functioning as output port, port A also function as output pin for internal clock (SCOUT), output pin for RTC alarm ( ALARM ) and output pin for melody/alarm generator (MLDALM, MLDALM ). Above setting is used the function register PAFC2 Resetting reset bits of the registers PA to 1 and PAFC, PAFC2 to 0, and all pin outputs 1. Reset Function control PAFC2 write Internal data bus 3.5.8 Output buffer set PAFC write S Programmable open drain A S Y Selector B Output latch PA write PA0 (KO0, ALARM , MLDALM ) PA read MLDALM ALARM A S Y Selector B Figure 3.5.15 Port A0 91C025-68 2007-02-28 TMP91C025 Reset Function control Internal data bus PAFC2 write Output buffer set PAFC write S A S Programmable open drain PA1 (KO1, TA1OUT) PA2 (KO2, TA3OUT) Y Selector B Output latch PA write PA read TA1OUT TA3OUT Figure 3.5.16 Port A1, 2 Reset Function control Internal data bus PAFC2 write Output buffer set PAFC write S S Output latch A Y Selector B Programmable open drain PA3 (KO3, SCOUT) PA write PA read fFPH clock Figure 3.5.17 Port A3 91C025-69 2007-02-28 TMP91C025 Port A register 7 PA (001EH) 6 5 4 Bit symbol 3 2 1 0 PA3 PA2 PA1 PA0 1 1 1 3 2 1 0 PA3F PA2F PA1F PA0F 0 0 Read/Write R/W After reset 1 Port A function register 7 PAFC (0021H) 6 5 4 Bit symbol Read/Write W After reset 0 Function 0: CMOS output 1: Open drain 7 PAFC2 (0020H) 0 6 5 4 Bit symbol 3 2 PA3F2 PA2F2 Read/Write 1 0 PA1F2 PA0F2 W After reset 0 Function 0 0 0 0: Port 0: Port 0: Port 0: Port 1: SCOUT 1: TA3OUT 1: TA1OUT 1: ALARM at <PA0>=1 1: MLDALM at <PA0>=0 Note: Read-modify-write is prohibited for PAFC and PAFC2. Figure 3.5.18 Registers for Port A 91C025-70 2007-02-28 TMP91C025 3.5.9 Port B (PB3 to PB6) Port B3 to PB6 is a 4-bit general-purpose I/O port. Each bit can be set individually for input or output. Resetting sets port B to be an input port. In addition to functioning as a general-purpose I/O port, port B3 to B6 has each external interruption input facility of INT0 to INT3. Edge selection of external interruption is establishes by IIMC register in the interrupt controller. And also, port B3 has PS input terminal, and port B4 has clock input terminal TA0IN of 8 bits timer 0, and port B5, B6 each has touch screen block listing PX, PY terminal. Timer output function and external interrupt function can be enabled by writing 1 to the corresponding bits in the port B function register (PBFC). Resetting resets all bits of the registers PBCR and PBFC to 0, and sets all bits to be input ports. (1) PB3 (INT0) Reset Direction control (on bits basis) PBCR write Internal data bus Function control (on bits basis) PBFC write S Output latch PB3 (INT0, PS ) PB write S B Selector PB read INT0 A Level/edge select and Rising/falling select IIMC<I0LE, I0EDGE> PS SYSCR2<PSENV> Figure 3.5.19 Port B3 Note: After reset, input 1 to PB3 (INT0, PS ) -pin, because it is worked as PS input pin. 91C025-71 2007-02-28 TMP91C025 (2) PB4 (INT1) Reset Direction control (on bits basis) PBCR write Internal data bus Function control (on bits basis) PBFC write S Output latch PB4 (INT1, TA0IN) PB write S B Selector PB read INT1 A Rising/falling edge detection IIMC<I1EDGE > TA0IN Figure 3.5.20 Port B4 91C025-72 2007-02-28 TMP91C025 (3) PB5 (INT2), PB6(INT3) Internal data bus Reset Function control AVCC (on bits basis) PBFC write TSICR0<PXEN> <PYEN> P-ch TSICR0<TSI7> PB5 (INT2, PX) PB6 (INT3, PY) PB read TSICR1<DBC7> S . INT2 INT3 Rising/falling edge detection IIMC<I2EDGE, I3EDGE > Only for PB5 A Selector Debounce circuit B TSICR0<TWIEN, TSI7> TSICR0<PXEN> TSICR<TSI7> N channel Pull-down resistor Figure 3.5.21 Port B5, B6 91C025-73 2007-02-28 TMP91C025 Port B Register 7 PB (0022H) Bit symbol 6 5 PB6 PB5 4 3 PB4 PB3 Read/Write R/W After reset Data from external port (Note 1). 2 1 0 2 1 0 2 1 0 Port B Control Register 7 PBCR (0024H) 6 5 4 Bit symbol 3 PB4C Read/Write PB3C W After reset 0 Function 0 0: Input 1: Output Port B Function Register 7 PBFC (0025H) Bit symbol 6 5 4 3 PB6F PB5F PB4F PB3F 0 0 Read/Write After reset Function W 0 1 0: Port 0: Port 0: Port 0: Port 1: INT3 1: INT2 1: INT1 1: INT0 Note 1: Output latch register is set to 1. Note 2: Read-modify-write is prohibited for the registers PBCR and PBFC. Note 3: PB4/TA0IN pins do not have a register changing port/function . For example, when it is used as an input port, the input signal is inputted to 8-bit timer 0 as the timer input 0. Figure 3.5.22 Registers for Port B 91C025-74 2007-02-28 TMP91C025 Port C (PC0 to PC5) Port C0 to C5 are 6-bit general-purpose I/O ports. Each bit can be set individually for input or output. Resetting sets PC0 to PC5 to be an input ports. It also sets all bits of the output latch register to 1. In addition to functioning as general-purpose I/O port pins, PC0 to PC5 can also function as the I/O for serial channels 0 and 1. A pin can be enabled for I/O by writing 1 to the corresponding bit of the port C function register (PCFC). Resetting resets all bits of the registers PCCR and PCFC to 0 and sets all pins to be input ports . (1) Port C0, C3 (TXD0/TXD1) As well as functioning as I/O port pins, port C0 and C3 can also function as serial channel TXD output pins. In case of use TXD0/TXD1, it is possible to logical invert by setting the register PC<PC0, PC3>. And port C0 to C3 have a programmable open drain function which can be controlled by the register PCODE<ODEPC0, ODEPC3>. Reset Ditection control (on bit basis) PCCR write Function control Internal data bus 3.5.10 (on bit basis) PCFC write S Output latch A S PC0 (TXD0) PC3 (TXD1) Selector PC write Logical invert B S TXD0, TXD1 Open-drain set possible B PCODE<ODEPC0, C3> PC Read Selector A Figure 3.5.23 Port C0 and C3 91C025-75 2007-02-28 TMP91C025 (2) Port C1, C4 (RXD0, RXD1) Port C1 and C4 are I/O port pins and can also is used as RXD input for the serial channels. In case of use RXD0/RXD1, it is possible to logical invert by setting the register PC<PC1, PC4>. Reset Ditection control Internal data bus (on bit basis) PCCR write S PC1 (RXD0) PC4 (RXD1) Output latch S PC write B Selector PC read A RXD0, RXD1 Logical invert Figure 3.5.24 Port C1 and C4 (3) Port C2 ( CTS0 , SCLK0), C5 ( CTS1 , SCLK1) Port C2 and C5 are I/O port pins and can also is used as CTS input or SCLK input/output for the serial channels. In case of use CTS , SCLK, it is possible to logical invert by setting the register PC<PC2, PC5>. Reset Ditection control (on bit basis) Internal data bus PCCR write Function control (Programmable pull-up) (on bit basis) PCFC write S Output latch A Selector PC write SCLK0, 1 output PC2 (SCLK0, CTS0 ) PC5 (SCLK1, CTS1 ) S B Logical invert S B Selector PC read CTS0 , CTS1 SCLK0, SCLK 1 input A Logical invert Figure 3.5.25 Port C2 and C5 91C025-76 2007-02-28 TMP91C025 Port C Register 7 PC (0023H) 6 Bit symbol 5 4 3 PC5 PC4 PC3 2 1 0 PC2 PC1 PC0 Read/Write R/W After reset Data from external port (Output latch register is set to 1). Port C Control Register 7 PCCR (0026H) 6 Bit symbol 5 4 3 PC5C PC4C PC3C Read/Write 2 1 0 PC2C PC1C PC0C 0 0 0 1 0 W After reset 0 0 Function 0 0: Input 1: Output Port C Functon Register 7 PCFC (0027H) 6 5 4 3 2 Bit symbol PC5F PC3F PC2F PC0F Read/Write W W W W After reset 0 0 0 0: Port 0: Port 0: Port 0: Port 1: SCLK1 1: TXD1 1: SCLK0 1: TXD0 Function output 0 output Port C ODE Register 7 PCODE (0028H) 6 5 4 3 2 1 0 Bit symbol ODEPC3 ODEPC0 Read/Write W W After reset 0 0 TXD1 TXD0 0: CMOS 0: CMOS 1: Open 1: Open drain drain Function Note 1: Note 2: Read-modify-write is prohibited for the registers PCCR, PCFC and PCODE. PC1/RXD0, PC4/RXD1 pins do not have a register changing port/function. For example, when it is used as an input port, the input signal is inputted to SIO as the cereal receive data. Figure 3.5.26 Registers for Port C 91C025-77 2007-02-28 TMP91C025 3.5.11 Port D (PD0 to PD4, PD7) Port D is a 6-bit output port. Resetting sets the output latch PD to “1”, and PD0 to PD4, PD7 pin output “1”. In addition to functioning as output port, port D also function as output pin for LCD controller (D1BSCP, D2BLP, D3BFR, DLEBCD and DOFFB) and output pin for melody/alarm generator (MLDALM). Above setting is used the function register PDFC. Reset (on bit basis) PDFC write PD0 (D1BSCP), PD1 (D2BLP), PD2 (D3BFR), PD3 (DLEBCD), PD4 (DOFFB), PD7 (MLDALM) S A Output latch B Selector Internal data bus Function control Output buffer PD write D1BSCP, D2BLP, D3BFR, DLEBCD, DOFFB, MLDALM PD read Figure 3.5.27 Port D Port D register 7 PD (0029H) 6 5 4 3 2 1 0 Bit symbol PD7 PD4 PD3 PD2 PD1 PD0 Read/Write R/W R/W R/W R/W R/W R/W After reset 1 1 1 1 1 1 4 3 2 1 0 Port D function register 7 PDFC (002AH) 6 5 Bit symbol PD7F PD4F PD3F PD2F PD1F PD0F Read/Write W W W W W W After reset Function 0 0 0 0 0 0 0: Port 0: Port 0: Port 0: Port 0: Port 0: Port 1: MLDALM 1: DOFFB 1: DLEBCD 1: D3BFR 1: D2BLP 1: D1BSCP Note: Read-modify-write is prohibited for the registers PDFC. Figure 3.5.28 Registers for Port D 91C025-78 2007-02-28 TMP91C025 3.6 Chip Select/Wait Controller On the TM91C025, four user-specifiable address areas (CS0 to CS3) can be set. The data bus width and the number of waits can be set independently for each address area (CS0 to CS3 and others). The pins CS0 to CS3 (which can also function as port pins P60 to P63) are the respective output pins for the areas CS0 to CS3. When the CPU specifies an address in one of these areas, the corresponding CS0 to CS3 pin outputs the chip select signal for the specified address area (in ROM or SRAM). However, in order for the chip select signal to be output, the port 6 function register P6FC must be set. CS2A to CS2C (CS pin except CS0 to CS3 ) are made by MMU. These pins is CS pin that area and BANK value is fixed without concern in setting of CS/WAIT controller. The areas CS0 to CS3 are defined by the values in the memory start address registers MSAR0 to MSAR3 and the memory address mask registers MAMR0 to MAMR3. The chip select/wait control registers B0CS to B3CS and BEXCS should be used to specify the master enable/disable status the data bus width and the number of waits for each address area. The input pin controlling these states is the bus wait request pin ( WAIT ). 3.6.1 Specifying an Address Area The CS0 to CS3 address areas are specified using the start address registers (MSAR0 to MSAR3) and memory address mask registers (MAMR0 to MAMR3). At each bus cycle, a compare operation is performed to determine if the address on the specified a location in the CS0 to CS3 area. If the result of the comparison is a match, this indicates an access to the corresponding CS area. In this case, the CS0 to CS3 pin outputs the chip select signal and the bus cycle operates in accordance with the settings in chip select/wait control register B0CS to B3CS. (See 3.6.2, Chip Select/Wait Control Registers.) 91C025-79 2007-02-28 TMP91C025 (1) Memory start address registers Figure 3.6.1 shows the memory start address registers. The memory start address registers MSAR0 to MSAR3 set the start addresses for the CS0 to CS3 areas. Set the upper 8 bits (A23 to A16) of the start address in <S23:16>. The lower 16 bits of the start address (A15 to A0) are permanently set to 0. Accordingly, the start address can only be set in 64-Kbyte increments, starting from 000000H. Figure 3.6.2 shows the relationship between the start address and the start address register value. Memory Start Address Registers (for areas CS0 to CS3) MSAR0 (00C8H) MSAR1 (00CAH) Bit symbol MSAR2 (00CCH) MSAR3 (00CEH) After reset 7 6 5 4 S23 S22 S21 S20 Read/Write 3 2 1 0 S19 S18 S17 S16 1 1 1 1 R/W 1 1 1 Function 1 Determines A23 to A16 of start address. Sets start addresses for areas CS0 to CS3. Figure 3.6.1 Memory Start Address Register Start address Address 000000H 64 Kbytes Value in start address register (MSAR0 to MSAR3) 000000H ...................... 00H 010000H ...................... 01H 020000H ...................... 02H 030000H ...................... 03H 040000H ...................... 04H 050000H ...................... 05H 060000H ...................... 06H to to FF0000H ...................... FFH FFFFFFH Figure 3.6.2 Relationship between Start Address and Start Address Register Value 91C025-80 2007-02-28 TMP91C025 (2) Memory address mask registers Figure 3.6.3 shows the memory address mask registers. Memory address mask registers MAMR0 to MAMR3 are used to set the size of the CS0 to CS3 areas by specifying a mask for each bit of the start address set in memory start address registers MAMR0 to MAMR3. The compare operation used to determine if an address is in the CS0 to CS3 areas is only performed for bus address bits corresponding to bits set to 0 in these registers. Also, the address bits that can be masked by MAMR0 to MAMR3 differ between CS0 to CS3 areas. Accordingly, the size that can be each area is different. Memory Address Mask Register (for CS0 area) MAMR0 (00C9H) Bit symbol 7 6 5 4 V20 V19 V18 V17 Read/Write After reset 3 2 1 0 V16 V15 V14 to 9 V8 1 1 1 1 R/W 1 1 1 Function 1 Sets size of CS0 area. 0: Used for address compare Range of possible settings for CS0 area size: 256 bytes to 2 Mbytes Memory Address Mask Register (CS1) MAMR1 (00CBH) Bit symbol 7 6 5 4 V21 V20 V19 V18 Read/Write After reset 3 2 1 0 V17 V16 V15 to 9 V8 1 1 1 1 R/W 1 1 1 Function 1 Sets size of CS1 area. 0: Used for address compare Range of possible settings for CS1 area size: 256 bytes to 4 Mbytes. Memory Address Mask Register (CS2, CS3) MAMR2 (00CDH) MAMR3 (00CFH) Bit symbol 7 6 5 4 V22 V21 V20 V19 Read/Write After reset Function 3 2 1 0 V18 V17 V16 V15 1 1 1 1 R/W 1 1 1 1 Sets size of CS2 or CS3 area. 0: Used for address compare Range of possible settings for CS2 and CS3 area sizes: 32 Kbytes to 8 Mbytes. Figure 3.6.3 Memory Address Mask Registers 91C025-81 2007-02-28 TMP91C025 (3) Setting memory start addresses and address areas Figure 3.6.4 show an example of specifying a 64-Kbyte address area starting from 010000H using the CS0 areas. Set 01H in memory start address register MSAR0<S23:16> (Corresponding to the upper 8-bits of the start address). Next, calculate the difference between the start address and the anticipated end address (01FFFFH). Bits 20 to 8 of the result correspond to the mask value to be set for the CS0 area. Setting this value in memory address mask register MAMR0<V20:8>sets the area size this example sets 07H in MAMR0 to specify a 64-Kbyte area. 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 F 1 1 1 1 F 1 1 1 1 F 1 1 H F S23 S22 S21 S20 S19 S18 S17 S16 MSAR0 0 0 0 0 0 0 0 0 H V14 ∼ V9 V20 V19 V18 V17 V16 V15 MSMR0 0 0 0 0 0 0 0 0 0 1 CSO area size (64 Kbytes) Memory start address 1 1 Memory end address 1 1 1 1 V8 1 1 1 7 1 1 1 1 1 1 1 H 1 Memory address mask register setting Setting of 07H specifies a 64-Kbyte area. Figure 3.6.4 Example Showing How to Set the CS0 Area After a reset, MSAR0 to MSAR3 and MAMR0 to MAMR3 are set to FFH. B0CS<B0E>, B1CS<B1E> and B3CS<B3E> are reset to 0. This disabling the CS0, CS1 and CS3 areas. However, as B2CS<B2M> to 0 and B2CS<B2E> to 1, CS2 is enabled from 000FE0H to 000FFFH and 001000H to FFFFFFH in TMP91C025. Also, the bus width and number of waits specified in BEXCS are used for accessing addresses outside the specified CS0 to CS3 area. (See 3.6.2, Chip Select/Wait Control Registers.) 91C025-82 2007-02-28 TMP91C025 (4) Address area size specification Table 3.6.1 shows the relationship between CS area and area size. Triangle (Δ) indicates areas that cannot be set by memory start address register and address mask register combinations. When setting an area size using a combination indicated by Δ, set the start address mask register in the desired steps starting from 000000H. If the CS2 area is set to 16 Mbytes or if two or more areas overlap, the smaller CS area number has the higher priority. Example: To set the area size for CS0 to 128 Kbytes: (a) Valid start addresses 000000H 020000H 040000H 060000H 128 Kbytes 128 Kbytes Any of these addresses may be set as the start address. 128 Kbytes (b) Invalid start addresses 000000H 010000H 030000H 050000H This is not an integer multiple of the desired area size 64 Kbytes setting. Hence, none of these addresses can be set as the 128 Kbytes start address. 128 Kbytes Table 3.6.1 Valid Area Sizes for Each CS Area Size (Bytes) 256 512 32 K 64 K ○ ○ ○ ○ ○ ○ ○ ○ ○ 128 K 256 K 512 K 1M 2M 4M 8M CS Area CS0 CS1 CS2 CS3 Note: 3.6.2 ○ ○ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ: This symbol indicates areas that cannot be set by memory start address register and address mask register combinations. Chip Select/Wait Control Registers Figure 3.6.5 lists the chip select/wait control registers. The master enable/disable, chip select output waveform, data bus width and number of wait states for each address area (CS0 to CS3 and others) are set in their respective chip select/wait control registers, B0CS to B3CS and BEXCS. 91C025-83 2007-02-28 TMP91C025 7 B0CS (00C0H) Bit symbol B0E Read/Write W After reset Function B1CS (00C1H) B2CS (00C2H) 0 B1E Read/Write W 4 3 B0OM1 B0OM0 B0BUS 0 0 Chip select output waveform selection. 00: For ROM/SRAM 01: 10: Don’t care 11: B1OM1 B3CS (00C3H) 0 0 BEXCS (00C7H) 0 B0W2 B0W1 B0W0 0 0 0 Number of waits 000: 2 waits 001: 1 wait 010: (1 + N) waits 011: 0 waits B1BUS 0 Chip select output waveform selection. 00: For ROM/SRAM 01: 10: Don’t care 11: B2E B2M 1 B2OM1 0 0: Disable 1: Enable B3E Read/Write W B1W2 B1W1 B1W0 0 0 0 0 Data bus width 0: 16 bits 1: 8 bits B2OM0 0 CS2 area selection. 0: 16-Mbyte area 1: CS area 0 Chip select output waveform selection. 00: For ROM/SRAM 01: 10: Don’t care 11: B3OM1 B3OM0 Number of waits 000: 2 waits 001: 1 wait 010: (1 + N) waits 011: 0 waits B2BUS B2W2 B2W1 B2W0 0 0 0 0 Data bus width 0: 16 bits 1: 8 bits Number of waits 000: 2 waits 001: 1 wait 010: (1 + N) waits 011: 0 waits B3BUS 0 0 0: Disable 1: Enable 0 Chip select output waveform selection. 00: For ROM/SRAM 01: 10: Don’t care 11: B3W1 B3W0 0 0 0 0 Data bus width 0: 16 bits 1: 8 bits BEXBUS Number of waits 000: 2 waits 001: 1 wait 010: (1 + N) waits 011: 0 waits BEXW2 0 Data bus width 0: 16 bits 1: 8 bits Master enable bit Enable Chip select output waveform selection BEXW1 BEXW0 0 0 0 Number of waits 000: 2 waits 001: 1 wait 010: (1 + N) waits 011: 0 waits 01 10 Don’t care 11 0 16-Mbyte area 1 Specified address area 100: (0 + N) waits 101: 3 waits 110: 4 waits 111: 8 waits Number of address area waits (See 3.6.2, (3) Wait control.) 00 For ROM/SRAM CS2 area selection Note: 100: (0 + N) waits 101: 3 waits 110: 4 waits 111: 8 waits W After reset Functions 1 100: (0 + N) waits 101: 3 waits 110: 4 waits 111: 8 waits B3W2 Read/Write Disable 100: (0 + N) waits 101: 3 waits 110: 4 waits 111: 8 waits W Bit symbol 0 100: (0 + N) waits 101: 3 waits 110: 4 waits 111: 8 waits W Bit symbol After reset Functions 1 0 Data bus width 0: 16 bits 1: 8 bits B1OM0 Read/Write After reset Functions 2 W 0: Disable 1: Enable Bit symbol 5 W 0: Disable 1: Enable Bit symbol After reset Function 6 Data bus width selection 0 16-bit data bus 1 8-bit data bus Read-modify-write is prohibited for the registers B0CS, B1CS, B2CS, B3CS and BEXCS. Figure 3.6.5 Chip Select/Wait Control Registers 91C025-84 2007-02-28 TMP91C025 (1) Master enable bits Bit 7 (<B0E>, <B1E>, <B2E> or <B3E>) of a chip select/wait control register is the master bit which is used to enable or disable settings for the corresponding address area. Writing 1 to this bit enables the settings. Reset disables (Sets to 0)<B0E>, <B1E>, <B3E>, and enabled (sets to 1) <B2E>. This enables area CS2 only. (2) Data bus width selection Bit 3 (<B0BUS>, <B1BUS>, <B2BUS>, <B3BUS> or <BEXBUS>) of a chip select/wait control register specifies the width of the data bus. This bit should be set to 0 when memory is to be accessed using a 16-bit data bus and to 1 when an 8-bit data bus is to be used. This process of changing the data bus width according to the address being accessed is known as dynamic bus sizing. For details of this bus operation see Table 3.6.2. 91C025-85 2007-02-28 91C025-86 32 bits 16 bits 8 bits 8 bits 2n + 0 number) 2n + 1 (Odd number) (Even 2n + 0 number) 2n + 1 (Odd number) 16 bits 8 bits 16 bits 8 bits 16 bits 8 bits 16 bits 8 bits 2n + 0 (Even 16 bits 8 bits 16 bits number) (Odd 2n + 1 number) (Even Width Address Width Memory Start Data Bus Operand Operand Data Bus XXXX 2n + 4 XXXX 2n + 4 b7-b0 XXXX 2n + 3 b23-b16 XXXX 2n + 2 2n + 2 XXXX 2n + 1 2n + 1 b31-b24 2n + 2 XXXX 2n + 2 XXXX XXXX 2n + 1 b15-b8 XXXX 2n + 0 2n + 0 XXXX 2n + 2 2n + 3 b7-b0 XXXX 2n + 1 XXXX 2n + 2 b15-b8 2n + 1 2n + 0 XXXX XXXX 2n + 0 2n + 1 b7-b0 XXXX XXXX XXXX D15 to D8 b31-b24 b15-b8 XXXX b31-b24 b23-b16 b15-b8 b7-b0 b23-b16 b7-b0 b31-b24 b23-b16 b15-b8 b7-b0 b15-b8 XXXX b15-b8 b7-b0 b7-b0 b15-b8 b7-b0 XXXX b7-b0 b7-b0 b7-b0 D7 to D0 CPU Data 2n + 1 2n + 1 2n + 0 2n + 0 Address CPU H R/W L RD H WR H HWR L L H L L L L H L L L H L L SRLB Control for READ Cycle H L L H L H H L H L H L H H H SRUB SRWR L R/W H RD L L H L L L L H L L L H L L WR H L L H L H H L H L H L H H HWR L L H L L L L H L L L H L L SRLB Control for WRITE Cycle H L L H L H H L H L H L H H L SRUB SRWR TMP91C025 Table 3.6.2 Dynamic Bus Sizing xxxx: Indicates that the input data from these bits are ignored during a read. During a write, indicates that the bus for these bits goes too high-impedance; also, that the write strobe signal for the bus remains inactive. 2007-02-28 TMP91C025 (3) Wait control Bits 0 to 2 (<B0W0:2>, <B1W0:2>, <B2W0:2>, <B3W0:2>, <BEXW0:2>) of a chip select/wait control register specify the number of waits that are to be inserted when the corresponding memory area is accessed. The following types of wait operation can be specified using these bits. Bit settings other than those listed in the table should not be made. Table 3.6.3 Wait Operation Settings <BxW2:0> No. of Waits Wait Operation 000 2 waits Inserts a wait of 2 states, irrespective of the WAIT pin state. 001 1 wait Inserts a wait of 1 state, irrespective of the WAIT pin state. 010 (1 + N) waits Samples the state of the WAIT pin after inserting a wait of one state. If the WAIT pin is low, the waits continue and the bus cycle is extended until the pin goes high. 011 0 waits 100 (0 + N) waits Ends the bus cycle without a wait, regardless of the WAIT pin state. Samples the state of the WAIT pin without inserting a wait. If the WAIT pin is low, the waits continue and the bus cycle is extended until the pin goes high. 101 3 waits Inserts a wait of 3 states, irrespective of the WAIT pin state. 110 4 waits Inserts a wait of 4 states, irrespective of the WAIT pin state. 111 8 waits Inserts a wait of 8 states, irrespective of the WAIT pin state. A Reset sets these bits to 000 (2 waits). (at 16 MHz) 375 ns 62.5 ns T1 T2 TW fFPH CSn R/ W A0 to A23 D0 to D15 Data-in Read RD D0 to D15 Data-out Write HWR , WR WAIT Figure 3.6.6 (0 + N) Waits Read/Write Cycle (N = 1) 91C025-87 2007-02-28 TMP91C025 (4) Bus width and wait control for an area other than CS0 to CS3 The chip select/wait control register BEXCS controls the bus width and number of waits when memory locations which are not in one of the four user-specified address areas (CS0 to CS3) are accessed. The BEXCS register settings are always enabled for areas other than CS0 to CS3. (5) Selecting 16-Mbyte area/specified address area Setting B2CS<B2M> (bit 6 of the chip select/wait control register for CS2) to 0 designates the 16-Mbyte area 000FE0H to 000FFFH, 003000H to FFFFFFH as the CS2 area. Setting B2CS<B2M> to 1 designates the address area specified by the start address register MSAR2 and the address mask register MAMR2 as CS2 (e.g., if B2CS<B2M> = 1, CS2 is specified in the same manner as CS0, CS1 and CS3 are). A reset clears this bit to 0, specifying CS2 as a 16-Mbyte address area. (6) Procedure for setting chip select/wait control When using the chip select/wait control function, set the registers in the following order: • Set the memory start address registers MSAR0 to MSAR3. Set the start addresses for CS0 to CS3. • Set the memory address mask registers MAMR0 to MAMR3. Set the sizes of CS0 to CS3. • Set the chip select/wait control registers B0CS to B3CS. Set the chip select output waveform, data bus width, number of waits and master enable/disable status for CS0 to CS3 . The CS0 to S3 pins can also function as pins P60 to P63. To output a chip select signal using one of these pins, set the corresponding bit in the port 6 function register P6FC to 1. If a CS0 to S3 address is specified which is actually an internal I/O and RAM area address, the CPU accesses the internal address area and no chip select signal is output on any of the CS0 to CS3 pins. (Setting example) In this example CS0 is set to be the 64-Kbyte area 010000H to 01FFFFH. The bus width is set to 16 bits and the number of waits is set to 0. MSAR0 = 01H Start address: 010000H MAMR0 = 07H Address area: 64 Kbytes B0CS = 83H ROM/SRAM, 16-bit data bus, zero waits, CS0 area settings enabled. 91C025-88 2007-02-28 TMP91C025 3.6.3 Connecting External Memory Figure 3.6.7 shows an example of how to connect external memory to the TMP91C025. In this example the ROM is connected using a 16-bit bus. The RAM and I/O are connected using an 8-bit bus. TMP91C025 CS0 CS1 Address bus CS2 A0 to A23 CS Upper byte ROM OE CS Lower byte ROM OE CS 8-bit RAM OE WE CS 8-bit I/O OE WE D8 to D15 D0 to D7 RD WR Figure 3.6.7 Example of External Memory Connection (ROM uses 16-bit bus: RAM and I/O use 8-bit bus.) A reset clears all bits of the port 6 control register P6CR and the port 6 function register P6FC to 0 and disables output of the CS signal. To output the CS signal, the appropriate bit must be set to 1. 91C025-89 2007-02-28 TMP91C025 TMP91C025 16-bit SRAM OE RD SRLB LDS SRUB UDS SRWR R/ W CS0 CE D [15:0] A0 A1 A2 A3 I/O [16:1] Not connect A0 A1 A2 Figure 3.6.8 How to Connect to 16-Bit SRAM for TMP91C025 91C025-90 2007-02-28 TMP91C025 3.7 8-Bit Timers (TMRA) The TMP91C025 features 4 channel (TMRA0 to TMRA3) built-in 8-bit timers. These timers are paired into 2 modules: TMRA01 and TMRA23. Each module consists of 2 channels and can operate in any of the following 4 operating modes. • 8-bit interval timer mode • 16-bit interval timer mode • 8-bit programmable square wave pulse generation output mode (PPG: Variable duty cycle with variable period) • 8-bit pulse width modulation output mode (PWM: Variable duty cycle with constant period) Figure 3.7.1 to Figure 3.7.2 Show block diagrams for TMRA01 and TMRA23. Each channel consists of an 8-bit up counter, an 8-bit comparator and an 8-bit timer register. In addition, a timer flip-flop and a prescaler are provided for each pair of channels. The operation mode and timer flip-flops are controlled by 5 bytes registers SFRs (Special-function registers). Each of the 2 modules (TMRA01 and TMRA23) can be operated independently. All modules operate in the same manner; hence only the operation of TMRA01 is explained here. The contents of this chapter are as follows. 3.7.1 Block Diagrams 3.7.2 Operation of Each Circuit 3.7.3 SFRs 3.7.4 Operation in Each Mode (1) 8-bit timer mode (2) 16-bit timer mode (3) 8-bit PPG (Programmable pulse generation) output mode (4) 8-bit PWM (Pulse width modulation) output mode (5) Setting for each mode Table 3.7.1 Registers and Pins for Each Module Module Input pin for external External pin SFR clock TMRA01 TA0IN (shared with PB4) Output pin for timer TMRA23 None TA1OUT TA3OUT flip-flop (shared with PA1) (shared with PA2) Timer run register TA01RUN (0100H) TA23RUN (0108H) TA0REG (0102H) TA2REG (010AH) Timer register (address) Timer mode register Timer flip-flop control register TA1REG (0103H) TA3REG (010BH) TA01MOD (0104H) TA23MOD (010CH) TA1FFCR (0105H) TA3FFCR (010DH) 91C025-91 2007-02-28 External input clock: TA0IN φT4 8 φT256 91C025-92 <TA0RDE> TA01RUN Internal data bus Register buffer 0 8-bit timer register TA0REG 8-bit compatator (CP0) TA0TR 8-bit timer register TA1REG Match 8-bit comparator detect (CP1) TA1FFCR Timer flip-flop TA1FF TMRA0 Internal data bus TMRA1 match output: interrupt output: TA0TRG INTTA1 TA01MOD <TA01M1:0> TMRA0 interrupt output: INTTA0 Match detect <TA1CLK1:0> TA01MOD TA01MOD 8-bit up counter (UC1) TA01RUN<TA1RUN> <TA0CLK1:0> φT1 φT16 φT256 Selector <TA01PRUN> Run/clear TA01RUN 2 Over flow n 8-bit up counter (UC0) TA01RUN<TA0RUN> φT16 16 32 64 128 256 512 TA01MOD φT4 φT16 φT1 4 Selector φT1 2 Prescaler Timer flip-flop output: TA1OUT 3.7.1 Prescaler clock: φT0 TMP91C025 Block Diagrams Figure 3.7.1 TMRA01 Block Diagram 2007-02-28 Prescaler clock: φT0 φT4 91C025-93 TA23RUN <TA2RDE> φT256 Internal data bus Register buffer 2 8-bit timer register TA2REG TA3FFCR Timer flip-flop TA3FF TMRA2 Internal data bus TMRA3 match output: interrup output: TA2TRG INTTA3 8-bit timer register TA3REG Match 8-bit comparator detect register (CP3) <TA3CLK1:0> 8-bit up counterr (UC3) TA23RUN<TA3RUN> TA23MOD TA23MOD <TA23M1:0> TA2TRG TMRA2 interrupt output: INTTA2 Match 8-bit comparator detect (CP2) n φT1 φT16 φT256 Selector Run/clear TA23RUN <TA23PRUN> 2 Over flow TA23MOD <PWM21:20> 8-bit up counter (UC2) TA23RUN<TA2RUN> φT16 8 16 32 64 128 256 512 TA23MOD <TA2CLK1:0> φT1 φT4 φT16 4 Selector φT1 2 Prescaler Timer flip-flop output: TA3OUT Possible to connect to LCD and MLD circuits TMP91C025 Figure 3.7.2 TMRA23 Block Diagram 2007-02-28 TMP91C025 3.7.2 Operation of Each Circuit (1) Prescalers A 9-bit prescaler generates the input clock to TMRA01. The φT0 as the input clock to prescaler is a clock divided by 4 which selected using the prescaler clock selection register SYSCR0<PRCK1:0>. The prescaler’s operation can be controlled using TA01RUN<TA01PRUN> in the timer control register. Setting <TA01PRUN> to 1 starts the count; setting <TA01PRUN> to 0 clears the prescaler to zero and stops operation. Table 3.7.2 shows the various prescaler output clock resolutions. Table 3.7.2 Prescaler Output Clock Resolution at fc = 36 MHz, fs = 32.768 kHz System Clock Selection SYSCR1 <SYSCK> Prescaler Clock Selection SYSCR0 <PRCK1:0> 1 (fs) 00 (fFPH) 0 (fc) 10 (fc/16 CLOCK) Prescaler Output Clock Resolution Gear Value SYSCR1 <GEAR2:0> φT1 φT4 XXX 2 /fs (244 μs) 2 /fs (977 μs) 2 /fs (3.9 ms) 2 /fs (62.5 ms) 000 (fc) 2 /fc (0.2 μs) 2 /fc (0.9 μs) 2 /fc (3.6 μs) 001 (fc/2) 2 /fc (0.4 μs) 2 /fc (1.8 μs) 2 /fc (7.1 μs) 2 /fc (113.8 μs) 010 (fc/4) 2 /fc (0.9 μs) 2 /fc (3.6 μs) 2 /fc (14.2 μs) 2 /fc (227.6 μs) 011 (fc/8) 2 /fc (1.8 μs) 2 /fc (7.1 μs) 2 /fc (28.4 μs) 2 /fc (455.1 μs) 100 (fc/16) 2 /fc (3.6 μs) 2 /fc (14.2 μs) 2 /fc (56.9 μs) 2 /fc (910.2 μs) XXX 2 /fc (3.6 μs) 2 /fc (14.2 μs) 2 /fc (56.9 μs) 2 /fc (910.2 μs) 3 3 4 5 6 7 7 5 5 6 7 8 9 9 φT16 7 7 8 9 10 11 11 φT256 11 2 /fc (56.9 μs) 11 12 13 14 15 15 xxx: Don't care (2) Up counters (UC0 and UC1) These are 8-bit binary counters which count up the input clock pulses for the clock specified by TA01MOD. The input clock for UC0 is selectable and can be either the external clock input via the TA0IN pin or one of the three internal clocks φT1, φT4 or φT16. The clock setting is specified by the value set in TA01MOD<TA01CLK1:0>. The input clock for UC1 depends on the operation mode. In 16-bit timer mode, the overflow output from UC0 is used as the input clock. In any mode other than 16-bit timer mode, the input clock is selectable and can either be one of the internal clocks φT1, φT16 or φT256, or the comparator output (The match detection signal) from TMRA0. For each interval timer the timer operation control register bits TA01RUN<TA0RUN> and TA01RUN<TA1RUN> can be used to stop and clear the up counters and to control their count. A reset clears both up counters, stopping the timers. 91C025-94 2007-02-28 TMP91C025 (3) Timer registers (TA0REG and TA1REG) These are 8-bit registers which can be used to set a time interval. When the value set in the timer register TA0REG or TA1REG matches the value in the corresponding up counter, the comparator match detect signal goes active. If the value set in the timer register is 00H, the signal goes active when the up counter overflows. The TA0REG are double buffer structure, each of which makes a pair with register buffer. The setting of the bit TA01RUN<TA0RDE> determines whether TA0REG’s double buffer structure is enabled or disabled. It is disabled if <TA0RDE> = 0 and enabled if <TA0RDE> = 1. When the double buffer is enabled, data is transferred from the register buffer to the timer register when a 2n overflow occurs in PWM mode, or at the start of the PPG cycle in PPG mode. Hence the double buffer cannot be used in timer mode. A reset initializes <TA0RDE> to 0, disabling the double buffer. To use the double buffer, write data to the timer register, set <TA0RDE> to 1, and write the following data to the register buffer. Figure 3.7.3 show the configuration of TA0REG. Timer registers 0 (TA0REG) B Matching detection in PPG cycle n 2 overflow of PWM Y Shift trigger Register buffers 0 Selector A Write to TA0REG S Write Internal data bus TA01RUN<TA0RDE> Figure 3.7.3 Configuration of TA0REG Note: The same memory address is allocated to the timer register and the register buffer. When <TA0RDE> = 0, the same value is written to the register buffer and the timer register; when <TA0RDE> = 1, only the register buffer is written to. The address of each timer register is as follows. TA0REG: 000102H TA1REG: 000103H TA2REG: 00010AH TA3REG: 00010BH All these registers are write only and cannot be read. 91C025-95 2007-02-28 TMP91C025 (4) Comparator (CP0) The comparator compares the value in an up counter with the value set in a timer register. If they match, the up counter is cleared to zero and an interrupt signal (INTTA0 or INTTA1) is generated. If timer flip-flop inversion is enabled, the timer flip-flop is inverted at the same time. (5) Timer flip-flop (TA1FF) The timer flip-flop (TA1FF) is a flip-flop inverted by the match detects signal (8-bit comparator output) of each interval timer. Whether inversion is enabled or disabled is determined by the setting of the bit TA1FFCR<TA1FFIE> in the timer flip-flop control register. A Reset clears the value of TA1FF1 to 0. Writing 01 or 10 to TA1FFCR<TA1FFC1:0> sets TA1FF to 0 or 1. Writing 00 to these bits inverts the value of TA1FF (This is known as software inversion). The TA1FF signal is output via the TA1OUT pin (Concurrent with PA1). When this pin is used as the timer output, the timer flip-flop should be set beforehand using the port A function register PAFC2. Note: When the double buffer is enabled for an 8-bit timer in PWM or PPG mode, caution is required as explained below. If new data is written to the register buffer immediately before an overflow occurs by a match between the timer register value and the up-counter value, the timer flip-flop may output an unexpected value. For this reason, make sure that in PWM mode new data is written to the register buffer by six cycles (fSYS × 6) before the next overflow occurs by using an overflow interrupt. In the case of using PPG mode, make sure that new data is written to the register buffer by six cycles before the next cycle compare match occurs by using a cycle compare match interrupt. Example when using PWM mode Match between TA0REG and up-counter n 2 overflow interrupt (INTTA0) TA1OUT tPWM (PWM cycle) Desired PWM cycle change point Write new data to the register buffer before the next overflow occurs by using an overflow interrupt 91C025-96 2007-02-28 TMP91C025 3.7.3 SFRs TMRA01 Run Register 7 TA01RUN (0100H) 6 Bit symbol TA0RDE Read/Write R/W After reset Function 5 4 3 2 I2TA01 TA01PRUN 1 0 TA1RUN TA0RUN R/W 0 0 0 0 0 Double IDLE2 8-bit timer run/stop control buffer 0: Stop 0: Stop and clear 0: Disable 1: Operate 1: Run (Count up) 1: Enable Timer run/stop control TA0REG double buffer control 0 Disable 0 Stop and clear 1 Enable 1 Run (Count up) I2TA01: Operation in IDLE2 mode TA01PRUN: Run prescaler TA1RUN: Run TMRA1 TA0RUN: Run TMRA0 Note: The values of bits 4, 5, 6 of TA01RUN are undefined when read. TMRA23 Run Register 7 TA23RUN (0108H) 6 Bit symbol TA2RDE Read/Write R/W After reset Function 5 4 3 2 I2TA23 TA23PRUN 1 0 TA3RUN TA2RUN R/W 0 0 0 0 0 Double IDLE2 8-bit timer run/stop control buffer 0: Stop 0: Stop and clear 0: Disable 1: Operate 1: Run (Count up) 1: Enable TA2REG double buffer control Timer run/stop control 0 Disable 0 Stop and clear 1 Enable 1 Run (Count up) I2TA23: Operation in IDLE2 mode TA23PRUN: Run prescaler TA3RUN: Run TMRA3 TA2RUN: Run TMRA2 Note: The values of bits 4, 5, 6 of TA23RUN are undefined when read. Figure 3.7.4 TMRA Registers 91C025-97 2007-02-28 TMP91C025 TMRA01 Mode Register TA01MOD (0104H) Bit symbol 7 6 5 4 TA01M1 TA01M0 PWM01 PWM00 Read/Write After reset Function 3 2 1 0 TA1CLK1 TA1CLK0 TA0CLK1 TA0CLK0 0 0 R/W 0 0 0 0 0 0 Operation mode PWM cycle Source clock for TMRA1 Source clock for TMRA0 00: 8-bit timer mode 00: Reserved 00: TA0TRG 00: TA0IN pin 01: 16-bit timer mode 01: 2 10: 8-bit PPG mode 10: 2 11: 8-bit PWM mode 11: 2 6 01: φT1 01: φT1 7 10: φT16 10: φT4 8 11: φT256 11: φT16 TMRA0 source clock selection 00 TA0IN (External input) 01 φT1 (Prescaler) 10 φT4 (Prescaler) 11 φT16 (Prescaler) TMRA1 source clock selection TA01MOD 00 TA01MOD <TA01M1:0> ≠ 01 <TA01M1:0> = 01 Comparator Overflow output from output from TMRA0 TMRA0 01 φT1 10 φT16 11 φT256 (16-bit timer mode) PWM cycle selection 00 Reserved 01 2 × source clock 10 2 × source clock 11 2 × source clock 6 7 8 TMRA01 operation mode selection 00 Two 8-bit timers 01 16-bit timer 10 8-bit PPG 11 8-bit PWM (TMRA0) + 8-bit timer (TMRA1) Figure 3.7.5 TMRA Registers 91C025-98 2007-02-28 TMP91C025 TMRA23 Mode Register TA23MOD (010CH) Bit Symbol 7 6 5 4 TA23M1 TA23M0 PWM21 PWM20 Read/Write After reset Function 3 2 1 0 TA3CLK1 TA3CLK0 TA2CLK1 TA2CLK0 0 0 R/W 0 0 0 0 0 0 Operation mode PWM cycle TMRA3 clock for TMRA3 TMRA2 clock for TMRA2 00: 8-bit timer mode 00: Reserved 00: TA2TRG 00: Reserved 01: 16-bit timer mode 01: 2 10: 8-bit PPG mode 10: 2 11: 8-bit PWM mode 11: 2 6 01: φT1 01: φT1 7 10: φT16 10: φT4 8 11: φT256 11: φT16 TMRA2 source clock selection 00 Do not set 01 φT1 (Prescaler) 10 φT4 (Prescaler) 11 φT16 (Prescaler) TMRA3 source clock selection 00 TA23MOD TA23MOD <TA23M1:0> ≠ 01 <TA23M1:0> = 01 Comparator output Overflow output from from TMRA2 TMRA2 01 φT1 10 φT16 11 φT256 (16-bit timer mode) PWM cycle selection 00 Reserved 01 2 × source clock 10 2 × source clock 11 2 × source clock 6 7 8 TMRA23 operation mode selection 00 Two 8-bit timers 01 16-bit timer 10 8-bit PPG 11 8-bit PWM (TMRA2) + 8-bit timer (TMRA3) Figure 3.7.6 TMRA Registers 91C025-99 2007-02-28 TMP91C025 TMRA1 Flip-Flop Control Register 7 TA1FFCR (0105H) 6 5 4 Bit symbol 3 TA1FFC1 Read/Write 2 1 TA1FFC0 TA1FFIE R/W After reset 1 Function Read-modify -write instructions are prohibited. 0 TA1FFIS R/W 1 0 0 00: Invert TA1FF TA1FF TA1FF 01: Set TA1FF control for inversion 10: Clear TA1FF inversion select 11: Don’t care 0: Disable 0: TMRA0 1: Enable 1: TMRA1 Inverse signal for timer flop-flop 1 (TA1FF) (Don’t care except in 8-bit timer mode) 0 Inversion by TMRA0 1 Inversion by TMRA1 Inversion of TA1FF 0 Disabled 1 Enabled Control of TA1FF 00 Inverts the value of TA1FF 01 Sets TA1FF to 1 10 Clears TA1FF to 0 11 Don’t care Figure 3.7.7 TMRA Registers 91C025-100 2007-02-28 TMP91C025 TMRA3 Flip-Flop Control Register 7 TA3FFCR (010DH) 6 5 4 Bit symbol 3 TA3FFC1 Read/Write 2 1 TA3FFC0 TA3FFIE R/W After reset Read-modify -write instructions are prohibited. TA3FFIS R/W 1 Function 0 1 0 0 00: Invert TA3FF TA3FF TA3FF 01: Set TA3FF control for inversion 10: Clear TA3FF inversion select 11: Don’t care 0: Disable 0: TMRA2 1: Enable 1: TMRA3 Inverse signal for timer flip-flop 3 (TA3FF) (Don’t care except in 8-bit timer mode) 0 Inversion by TMRA2 1 Inversion by TMRA3 Inversion of TA3FF 0 Disabled 1 Enabled Control of TA3FF 00 Inverts the value of TA3FF 01 Sets TA3FF to 1 10 Clears TA3FF to 0 11 Don’t care Figure 3.7.8 TMRA Registers 91C025-101 2007-02-28 TMP91C025 TMRA register 7 6 5 4 3 TA0REG bit Symbol – (0102H) Read/Write W After reset Undefined TA1REG bit Symbol – (0103H) Read/Write W After reset Undefined bit Symbol – TA2REG (010AH) Read/Write W After reset Undefined TA3REG bit Symbol – (010BH) Read/Write W After reset Undefined 2 1 0 Note: The above registers are prohibited read-modify-write instruction. Figure 3.7.9 TMRA Registers 91C025-102 2007-02-28 TMP91C025 3.7.4 Operation in Each Mode (1) 8-bit timer mode Both TMRA0 and TMRA1 can be used independently as 8-bit interval timers. Setting its function or counter data for TMRA0 and TMRA1 after stop these registers. a. Generating interrupts at a fixed interval (Using TMRA1) To generate interrupts at constant intervals using TMRA1 (INTTA1), first stop TMRA1 then set the operation mode, input clock and a cycle to TA01MOD and TA1REG register, respectively. Then, enable the interrupt INTTA1 and start TMRA1 counting. Example: To generate an INTTA1 interrupt every 8.0 μs at fc = 36 MHz, set each register as follows: ∗ Clock state System clock: High-frequency (fc) Prescaler clock: fFPH MSB TA01RUN TA01MOD LSB 7 6 5 4 3 2 1 ← – ← 0 X X X – – 0 0 – Stop TMRA1 and clear it to 0. 0 X X 0 1 X X Select 8-bit timer mode and select φT1 ((2 /fc)s at fc = 36 MHz) as the input clock. 3 Set TA1REG to 8.0 μs ÷ φT1(2 /fc) ≈ 40 = 28H 0 INTETA01 ← 0 ← X 1 0 1 – – – – Enable INTTA1 and set it to level 5. TA01RUN ← – X X X – 1 1 – Start TMRA1 counting. TA1REG 1 0 1 0 0 0 3 X: Don’t care, −: No change Select the input clock using Table 3.7 2. Note: The input clocks for TMRA0 and TMRA1 are different from as follows. TMRA0: TA0IN input, φT1, φT4 or φT16 TMRA1: Match output of TMRA0, φT1, φT16, φT256 91C025-103 2007-02-28 TMP91C025 b. Generating a 50% duty ratio square wave pulse The state of the timer flip-flop (TA1FF) is inverted at constant intervals and its status output via the timer output pin (TA1OUT). Example: To output a 1.2-μs square wave pulse from the TA1OUT pin at fc = 36 MHz, use the following procedure to make the appropriate register settings. This example uses TMRA1; however, either TMRA0 or TMRA1 may be used. ∗ Clock state System clock: High-frequency (fc) Clock gear: 1 (fc) Prescaler clock: fFPH TA01RUN TA01MOD 7 6 5 4 3 2 1 ← – ← 0 X X X – – 0 0 – Stop TMRA1 and clear it to 0. 0 X X 0 1 – – Select 8-bit timer mode and select φT1 ((2 /fc)s at fc = 36 0 0 0 0 0 1 1 Set the timer register to 1.2 μs ÷ φT1(2 /fc) ÷ 2 = 3 X X X 1 0 1 1 Clear TA1FF to 0 and set it to invert on the match detects X X X – – 1 – Set PA1 to function as the TA1OUT pin. X X X – 1 1 – Start TMRA1 counting. 3 MHz) as the input clock. ← 0 ← X TA1REG TA1FFCR 3 signal from TMRA1. ← X ← – PAFC2 TA01RUN X: Don’t care, −: No change φT1 TA01RUN <TA1RUN> Bit7 to 2 Up counter Bit 1 Bit 0 0 1 2 3 0 1 2 3 0 1 2 3 0 Comparator timing Comparator output (match detect) INTTA1 UC1 Clear TA1FF TA1OUT 0.6 μs at fc = 36 MHz Figure 3.7.10 Square Wave Output Timing Chart (50% duty) 91C025-104 2007-02-28 TMP91C025 c. Making TMRA1 count up on the match signal from the TMRA0 comparator Select 8-bit timer mode and set the comparator output from TMRA0 to be the input clock to TMRA1. Comparaot output (TMRA0 match) TMRA0 up counter (when TA0REG = 5) TMRA1 up counter (when TA1REG = 2) 1 2 3 4 5 1 1 2 3 4 5 1 2 2 3 1 TMRA1 match output Figure 3.7.11 TMRA1 Count Up on Signal from TMRA0 91C025-105 2007-02-28 TMP91C025 (2) 16-bit timer mode A 16-bit interval timer is configured by pairing the two 8-bit timers TMRA0 and TMRA1. To make a 16-bit interval timer in which TMRA0 and TMRA1 are cascaded together, set TA01MOD<TA01M1:0> to 01. In 16-bit timer mode, the overflow output from TMRA0 is used as the input clock for TMRA1, regardless of the value set in TA01MOD<TA01CLK1:0>. Table 3.7.2 shows the relationship between the timer (Interrupt) cycle and the input clock selection. LSB 8-bit set to TA0REG and MSB 8-bit is for TA1REG. Please keep setting TA0REG first because setting data for TA0REG inhibit its compare function and setting data for TA1REG permit it. (Setting example) To generate an INTTA1 interrupt every 0.22 s at fc = 36 MHz, set the timer registers TA0REG and TA1REG as follows: ∗ Clock state System clock: High-frequency (fc) Clock gear: 1 (fc) Prescaler clock: fFPH If φT16 ((27/fc)s at 36 MHz) is used as the input clock for counting, set the following value in the registers: 0.22 s/(27/fc) μs ≈ 62500 = F424H (i.e. set TA1REG to F4H and TA0REG to 24H). As a result, INTTA1 interrupt can be generated every 0.23 [s]. The comparator match signal is output from TMRA0 each time the up counter UC0 matches TA0REG, though the up counter UC0 is not be cleared and also INTTA0 is not generated. In the case of the TMRA1 comparator, the match detect signal is output on each comparator pulse on which the values in the up counter UC1 and TA1REG match. When the match detect signal is output simultaneously from both the comparators TMRA0 and TMRA1, the up counters UC0 and UC1 are cleared to 0 and the interrupt INTTA1 is generated. Also, if inversion is enabled, the value of the timer flip-flop TA1FF is inverted. (Example) When TA1REG = 04H and TA0REG = 80H Value of up counter (UC1, UC0) 0080H 0180H 0280H 0380H 0480H 0080H TMRA0 comparator match detect signal TMRA0 comparator match detect signal INTTA0 INTTA1 TA1OUT Inversion Figure 3.7.12 Timer Output by 16-Bit Timer Mode 91C025-106 2007-02-28 TMP91C025 (3) 8-bit PPG (Programmable pulse generation) output mode Square wave pulses can be generated at any frequency and duty ratio by TMRA0. The output pulses may be active low or active high. In this mode TMRA1 cannot be used. TMRA0 outputs pulses on the TA1OUT pin. tH tL When <TA1FFC1:0>=”10” t tL tH When <TA1FFC1:0>=”01” t Example when <TA1FFC1:0>=”01” TA0REG and UC0 match (Interrupt INTTA0) TA1REG and UC0 match (Interruput INTTA1) TA1OUT TA0REG TA1REG Figure 3.7.13 8-Bit PPG Output Waveforms 91C025-107 2007-02-28 TMP91C025 In this mode, a programmable square wave is generated by inverting the timer output each time the 8-bit up counter (UC0) matches the value in one of the timer registers TA0REG or TA1REG. The value set in TA0REG must be smaller than the value set in TA1REG. Although the up counter for TMRA1 (UC1) is not used in this mode, TA01RUN <TA1RUN> should be set to 1, so that UC1 is set for counting. Figure 3.7.14 shows a block diagram representing this mode. TA1OUT TA0IN φT1 φT4 φT16 TA01RUN<TA0RUN> Selector 8-bit up counter (UC 0) TA1FF Inversion TA01MOD<TA0CLK1:0> INTTA0 Comparator Selector TA0REG-WR TA1FFCR<TA1FFIE> Comparator INTTA1 TA0REG Shift trigger Register buffer TA1REG TA01RUN<TA0RDE> Internal data bus Figure 3.7.14 Block Diagram of 8-Bit PPG Output Mode If the TA0REG double buffer is enabled in this mode, the value of the register buffer will be shifted into TA0REG each time TA1REG matches UC0. Use of the double buffer facilitates the handling of low-duty waves (when duty is varied). Match with TA0REG (Up counter = Q1) (Up countner = Q2) Match with TA1REG TA0REG (Value to be compared) Shift from register buffer Q2 Q1 Register buffer Q2 Q3 TA0REG (Register buffer) write Figure 3.7.15 Operation of Register Buffer 91C025-108 2007-02-28 TMP91C025 (Example) To generate 1/4-duty 50 kHz pulses (at fc = 36 MHz): 20 μs ∗ Clock state System clock: High-frequency (fc) Clock gear: 1 (fc) Prescaler clock: fFPH Calculate the value which should be set in the timer register. To obtain a frequency of 50 kHz, the pulse cycle t should be: t = 1/50 kHz = 20 μs φT1 = (23/fc)s (at 36 MHz); 20 μs ÷ (23/fc)s ≈ 90 Therefore set TA1REG to 90 (5AH) The duty is to be set to 1/4: t × 1/4 = 20 μs × 1/4 = 5 μs 5 μs ÷ (23/fc)s ≈ 22 Therefore, set TA0REG = 22 = 16H. TA01RUN TA01MOD TA0REG TA1REG TA1FFCR 7 6 5 4 3 2 1 ← 0 ← 1 X X X – 0 0 0 Stop TMRA0 and TMRA0, 1 and clear it to 0. 0 X X X X 0 1 Set the 8-bit PPG mode, and select φT1 as input clock. ← 0 ← 0 ← X 0 0 0 1 0 1 1 0 Write 16H 1 0 1 1 0 1 0 Write 5AH X X X 0 1 1 X Set TA1FF, enabling both inversion and the double buffer. X X X – – 1 – Set PA1 as the TA1OUT pin. X X X – 1 1 1 Start TMRA0 and TMRA01 counting. Writing 10 provides negative logic pulse. PAFC2 TA01RUN ← X ← 1 X: Don’t care, −: No change 91C025-109 2007-02-28 TMP91C025 (4) 8-bit PWM (Pulse width modulation) output mode This mode is only valid for TMRA0. In this mode, a PWM pulse with the maximum resolution of 8 bits can be output. When TMRA0 is used the PWM pulse is output on the TA1OUT pin (which is also used as P71). TMRA1 can also be used as an 8-bit timer. The timer output is inverted when the up counter (UC0) matches the value set in the timer register TA0REG or when 2n counter overflow occurs (n = 6, 7 or 8 as specified by TA01MOD<PWM01:00>). The up counter UC0 is cleared when 2n counter overflow occurs. The following conditions must be satisfied before this PWM mode can be used. Value set in TA0REG < value set for 2n counter overflow Value set in TA0REG ≠ 0 TA0REG and UC0 match n 2 overflow (INTTA0 interrupt) TA1OUT tPWM (PWM cycle) Figure 3.7.16 8-Bit PWM Waveforms TA01RUN<TA0RUN> TA0IN φT1 φT4 φT16 8-bit up counter (UC0) Selector Clear 2 TAFF1 TA1FFCR <TA1FFIE> Invert n overflow control TA01MOD<TA0CLK1:0> TA1OUT TA01MOD <PWM01:00> Overflow Comparator INTTA0 TA0REG Selector TA0REG-WR Shift trigger Register buffer TA01RUN<TA0RDE> Internal data bus Figure 3.7.17 Block Diagram of 8-Bit PWM Mode 91C025-110 2007-02-28 TMP91C025 In this mode, the value of the register buffer will be shifted into TA0REG if 2n overflow is detected when the TA0REG double buffer is enabled. Use of the double buffer facilitates the handling of low duty ratio waves. Match with TA0REG Up counter = Q1 Up counter = Q2 n 2 overflow Shift into TA0REG Q2 TA0REG (value to be compared) Q1 Register buffer Q2 Q3 TA0REG (Register buffer) write Figure 3.7.18 Register Buffer Operation Example: To output the following PWM waves on the TA1OUT pin at fc = 16 MHz: 16.0 μs 28.4 μs ∗ Clock state System clock: High-frequency (fc) Clock gear: 1 (fc) Prescaler clock: fFPH To achieve a 64.0-μs PWM cycle by setting φT1 to (23/fc)s (at fc = 36 MHz): 28.4 μs ÷ (23/fc)s ≈ 128 = 2n Therefore n should be set to 7. Since the low-level period is 16.0 μsec when φT1 = (23/fc)s, set the following value for TA0REG: 16.0 μs ÷ (23/fc)s ≈ 72 = 48H MSB TA01RUN TA01MOD LSB 7 6 5 4 3 2 1 ← – ← 1 X X X – – – 0 0 Stop TMRA0 and clear it to 0. 1 1 0 – – 0 1 Select 8-bit PWM mode (cycle: 2 ) and select φT1 as the 7 input clock. TA0REG TA1FFCR PAFC2 TA01RUN ← 0 ← X 1 0 0 1 0 0 0 Write 48H. X X X 1 0 1 X Clear TA1FF to 0, enable the inversion and double buffer. ← X ← 1 X X X – – 1 – Set PA1 and the TA1OUT pin. X X X – 1 – 1 Start TMRA0 counting. X: Don’t care, −: No change 91C025-111 2007-02-28 TMP91C025 Table 3.7.3 PWM Cycle at fc = 36 MHz, fs = 32.768 kHz Select System Select Prescaler Clock Clock SYSCR1 SYSCR0 <SYSCK> <PRCK1:0> 1 (fs) 00 (fFPH) 0 (fc) 10 (fc/16 clock) PWM Cycle Gear Value 2 SYSCR1 <GEAR2:0> 6 27 28 φT1 φT4 φT16 φT1 φT4 φT16 φT1 φT4 φT16 1000 ms XXX 15.6 ms 62.5 ms 250 ms 31.3 ms 125 ms 500 ms 62.5 ms 250 ms 000 (fc) 14.2 μs 56.8 μs 227 μs 28.4 μs 113 μs 455 μs 56.8 μs 227 μs 910 μs 001 (fc/2) 28.4 μs 113 μs 455 μs 56.8 μs 227 μs 910 μs 113 μs 455 μs 1820 μs 010 (fc/4) 56.8 μs 227 μs 910 μs 113 μs 455 μs 1820 μs 227 μs 910 μs 3640 μs 011 (fc/8) 113 μs 455 μs 1820 μs 227 μs 910 μs 3640 μs 455 μs 1820 μs 7281 μs 100 (fc/16) 227 μs 910 μs 3640 μs 455 μs 1820 μs 7281 μs 910 μs 3640 μs 14563 μs XXX 227 μs 910 μs 3640 μs 455 μs 1820 μs 7281 μs 910 μs 3640 μs 14563 μs XXX: Don’t care (5) Settings for each mode Table 3.7.4 shows the SFR settings for each mode. Table 3.7.4 Timer Mode Setting Registers Register Name TA01MOD <Bit Symbol> <TA01M1:0> Function Timer Mode PWM Cycle 8-bit timer × 2 channels 00 − TA1FFCR <PWM01:00> <TA1CLK1:0> <TA0CLK1:0> TA1FFIS Upper Timer Input Clock Timer F/F Invert Signal Select Lower Timer Input Clock Lower timer match External clock φT1, φT16, φT256 φT1, φT4, φT16 (00, 01, 10, 11) (00, 01, 10, 11) − φT1, φT4, φT16 0: Lower timer output 1: Upper timer output External clock 16-bit timer mode − 01 − (00, 01, 10, 11) External clock 8-bit PPG × 1 channel − 10 − φT1, φT4, φT16 − (00, 01, 10, 11) 6 8-bit PWM × 1 channel 8-bit timer × 1 channel 11 11 7 External clock 8 2 ,2 ,2 − (01, 10, 11) − φT1, φT4, φT16 − (00, 01, 10, 11) φT1, φT16 , φT256 (01, 10, 11) − Output disabled −: Don’t care 91C025-112 2007-02-28 TMP91C025 (6) LCDC and MELODY/ALARM circuit supply mode This function can operate only TMRA3. It can use LCDC and MELODY/ALARM source clock TA3 clock generated by TMRA3. But this function is special mode, without low clock (XTIN, XTOUT) so keep the rule under below. Operate a. Clock generate by timer 3 b. Clock supply start (EMCCR0 <TA3LCDE> = 1) c. Need setup time d. LCDC or MELODY/ALARM start to operate STOP e. LCDC or MELODY/ALARM stop to operate f. Clock supply cut off (<TA3LCDE> = 0 or <TA3MLDE> = 0) EMCCR0 (00E3H) 7 6 5 4 Bit symbol PROTECT TA3LCDE AHOLD Read/Write R R/W R/W After reset 0 0 0 Function 3 2 1 0 TA3MLDE − EXTIN DRVOSCH DRVOSCL R/W R/W R/W R/W R/W 0 0 0 1 1 fc oscillator fs oscillator Protect flag LCDC source Address hold Melody/Alarm Always write 1: External 0: Off CLK 0: Normal 1: On 0: 32 kHz 1: Enable 1: TA3OUT source clock. 0. clock driver ability. driver ability. 0: 32 kHz 1: Normal 1: Normal 1: TA3OUT 0: Weak 0: Weak 91C025-113 2007-02-28 TMP91C025 3.8 External Memory Extension Function (MMU) This is MMU function which can expand program/data area to 104 Mbytes by having 4 local areas. Address pins to external memory are 2 extended address bus pins (EA24, EA25) or 3 extended chip select pins ( CS2A to CS2C ) in addition to 24 address bus pins (A0 to A23) which are common specification of TLCS-900 and 4 chip select pins ( CS0 to CS3 ) output from CS/WAIT controller. The feature and the recommendation setting method of two types are shown below. In addition, AH in the table is the value which number address 23 to 16 displayed as hex. Purpose Item (A): For Standard Extended Memory 16 Mbytes: BANK (16 Mbytes × 1 pcs) Maximum memory size Program ROM Used local area, BANK number Setting CS/WAIT Used CS pin Maximum memory size Data ROM Used local area, BANK number Setting CS/WAIT Used CS pins Option Program ROM Data RAM LOCAL2 (AH = C0 to DF: 2 Mbytes × 7 BANK) Setup AH = C0 to FF to CS2 Total memory size Setup AH = 80 to FF to CS2 CS2 CS2A 64 Mbytes : BANK 32 Mbytes : BANK (64 Mbytes × 1 pcs) (16 Mbytes × 2 pcs) LOCAL3 LOCAL3 (AH = 80 to BF: 4 Mbytes × 16 BANK) (AH = 80 to BF: 4 Mbytes × 8 BANK) Setup AH = 80 to BF to CS3 CS3 , EA24, EA25 Setup AH = 80 to FF to CS2 CS2B , CS2C Maximum memory size 16 Mbytes: BANK (16 Mbytes × 1 pcs) Used local area, BANK number LOCAL1 (AH = 40 to 5F: 2 Mbytes × 7 BANK) Setting CS/WAIT Used CS pin Setup AH = 40 to 7F to CS1 CS1 Maximum memory size 8 Mbytes: BANK (8 Mbytes × 1 pcs) Used local area, BANK number LOCAL0 (AH = 10 to 1F: 1 Mbyte × 7 BANK) Setting CS/WAIT Used CS pin Setup AH = 00 to 1F to CS0 CS0 Setup AH = 00 to 1F to CS3 CS3 2 Mbytes (2 Mbytes × 1 pcs) Maximum memory size Extended memory 1 (B): For Many Pieces Extended Memory Used local area, BANK number None Setting CS/WAIT Used CS pin Setup AH = 20 to 3F to CS0 CS0 16 M + 64 M + 16 M + 8 M 16 M + 32 M + 16 M + 8 M + 2 M = 104 Mbytes = 74 Mbytes 91C025-114 2007-02-28 TMP91C025 3.8.1 Recommendable Memory Map The recommendation logic address memory map at the time of varieties extension memory correspondence is shown in Figure 3.8.1. And a physical-address map is shown in Figure 3.8.2. However, when memory area is less than 16 Mbytes and is not expanded, please refer to section of CS/WAIT controller. Setting of register in MMU is not necessary. Since it is being fixed, the address of a local-area cannot be changed. BANK Address Size 000000H 1 Mbyte 100000H 1 Mbyte 200000H COMMON0 LOCAL0 400000H CS3 CS0 CS0 CS1 CS1 CS2 CS2B (BANK 0 to 3) 0 1 2 3 4 5 6 7 LOCAL1 COMMON1 800000H 4 Mbytes CS3 0 1 2 3 4 5 6 7 600000H 2 Mbytes CS pin Memory map 2 Mbytes 2 Mbytes CS/WAIT setting 0 1 2 … 6 7 LOCAL3 CS2C (BANK 4 to 7) C00000H 2 Mbytes 0 1 2 3 4 5 6 7 LOCAL2 E00000H 2 Mbytes CS2 COMMON2 FFFF00 256 Bytes CS2A : Internal area Vector area : Overlapped with COMMON area FFFFFF Figure 3.8.1 Logical Address Map 91C025-115 2007-02-28 TMP91C025 LOCAL0 LOCAL1 LOCAL2 CS3 CS1 CS2A for data RAM for option program ROM (16 Mbytes) for program ROM for data ROM (8 Mbytes) 000000H BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 Internal-I/O LOCAL3 CS2B (16 Mbytes) BANK0 BANK0 BANK1 BANK1 BANK2 BANK2 BANK3 BANK3 BANK4 BANK4 BANK5 BANK5 (16 Mbytes × 2) BANK0 BANK1 800000H BANK6 BANK7 BANK2 BANK6 BANK7 BANK3 1000000H CS2C 000000H Reset and interrupt vector area BANK4 BANK5 BANK6 1000000H BANK7 : Internal area : Overlapped with COMMON area Figure 3.8.2 Physical Address Map 91C025-116 2007-02-28 TMP91C025 3.8.2 Control Registers Set a bank setting value and bank enable/disable in each local register in the common area. At this time, also specify the pin function and mapping by the CS/WAIT controller. When the CPU outputs the logical address of the local area, the MMU outputs its physical address to the external address bus pin according to the value in the bank setting register. This enables access to external memory. LOCAL0 Register 7 LOCAL0 Bit symbol L0E (0350H) Read/Write R/W After reset 0 Function 6 5 4 3 2 1 0 L0EA22 L0EA21 L0EA20 R/W 0 BANK for 0 0 Setting BANK number for LOCAL0 LOCAL0 0: Disable 1: Enable “000” setting is prohibited because it pretend COMMON 0 area LOCAL1 Register 7 LOCAL1 (0351H) Bit symbol L1E Read/Write R/W After reset Function 6 5 4 3 2 1 0 L1EA23 L1EA22 L1EA21 R/W 0 0 BANK for 0 0 Setting BANK number for LOCAL1 LOCAL1 0: Disable “001” setting is prohibited because it 1: Enable pretend COMMON 0 area LOCAL2 Register 7 LOCAL2 (0352H) Bit symbol L2E Read/Write R/W After reset Function 6 5 4 3 2 1 0 L2EA23 L2EA22 L2EA21 R/W 0 0 BANK for 0 0 Setting BANK number for LOCAL2 LOCAL2 0: Disable “111” setting is prohibited because it 1: Enable pretend COMMON 0 area LOCAL3 Register 7 LOCAL3 (0353H) 6 5 4 3 2 1 0 Bit symbol L3E − L3EA25 L3EA24 L3EA23 L3EA22 Read/Write R/W R/W R/W R/W R/W R/W After reset 0 0 0 0 Function BANK for Always 0 0 0000~0011: CS2B LOCAL3 write 0. 0100~0111: CS2C 1000~1111: Set prohibition 0: Disable 1: Enable Figure 3.8.3 Register of MMU 91C025-117 2007-02-28 TMP91C025 Data/Stack RAM CS0 SRAM 8 Mbytes 8 bits CS0 000000H to 1FFFFFH (Logical) 000000H to 7FFFFFH (Physical) Optional ROM CS1 CS1 FLASH 16 Mbytes 16 bits Data 400000H to 7FFFFFH (Logical) 000000H to FFFFFFH (Physical) Address TMP91C025 RD , ( WR , HWR : SRAM) Program ROM CS2 MROM 16 Mbytes 16 bits CS2 EA24, EA25 CS3 MROM 64 Mbytes 16 bits *In case of 16-bit bus memory TMP91C025 A16 : : 000000H to FFFFFFH (Physical) Data ROM CS3 Control signals D [0:15] A0 A1 A2 C00000H to FFFFFFH (Logical) 800000H to BFFFFFH (Logical) 0000000H to 3FFFFFFH (Physical) *In case of 8-bit bus memory Memory TMP91C025 Control signals D [0:15] open A0 A1 Control signals D [0:7] A0 A1 A2 A15 A7 Memory : : Control signals D [0:7] A0 A1 A2 A7 Figure 3.8.4 H/W Setting Example At Figure 3.8.4, it shows example of connection TMP91C025 and some memories: Program ROM: MROM, 16 Mbytes, Data ROM: MROM, 64 Mbytes, Data RAM: SRAM, 8 Mbytes, 8-bit bus, Option ROM: Flash, 16 Mbytes. In case of 16-bit bus memory connection, it need to shift 1-bit address bus from TMP91C025 and 8-bit bus case, direct connection address bus from TMP91C025. In that figure, logical address and physical address are shown. And each memory allot each chip select signal, RAM: CS0 , FLASH_ROM: CS1 , Program MROM: CS2 , Data MROM: CS3 . In case of this example, as data MROM is 64 Mbytes, this MROM connect to EA24 and EA25. Initial condition after reset, because TMP91C025 access from CS2 area, CS2 area allots to program ROM. It can set free setting except program ROM. 91C025-118 2007-02-28 TMP91C025 ;Initial Setting ;CS0 LD LD LD ;CS1 LD LD LD ;CS2 LD LD LD ;CS3 LD LD LD ;CSX LD ;Port LD to (MSAR0), 00H (MAMR0), FFH (B0CS), 89H ; Logical address area: 000000H to 1FFFFFH ; Logical address size: 2 Mbytes ; Condition: 8-bit, 1 waits (8 Mbytes, SRAM) (MSAR1), 40H (MAMR1), FFH (B1CS), 80H ; Logical address area: 400000H to 7FFFFFH ; Logical address size: 4 Mbytes ; Condition: 16-bit, 2 waits (16 Mbytes, Flash ROM) (MSAR2), C0H (MAMR2), 7FH (B2CS), C3H ; Logical address area: C00000H to FFFFFFH ; Logical address size: 4 Mbytes ; Condition: 16-bit, 0 waits (16 Mbytes, MROM) (MSAR3), 80H (MAMR3), 7FH (B3CS), 85H ; Logical address area: 800000H to BFFFFFH ; Logical address size: 4 Mbytes ; Condition: 16-bit, 3 waits (64 Mbytes, MROM) (BEXCS), 00H ; Other: 16-bit, 2 waits (Don’t care) (P6FC), 3FH ; CS0 to CS3 , EA24, EA25: port 6 setting Figure 3.8.5 Bank Operation S/W Example 1 Secondly, Figure 3.8.5 shows example of initial setting at BANK operation S/W example1 of the above. Because CS0 connect to RAM: 8-bit bus, 8 Mbytes, it need to set 8-bit bus. At this example, it set 1-wait setting. In the same way CS1 set to 16-bit bus and 2 waits, CS2 set 16-bit bus and 0 waits, CS3 set 16-bit bus and 3 waits. By CS/WAIT controller, each chip selection signal’s memory size, don’t set actual connect memory size, need to set that logical address size: fitting to each local area. Actual physical address is set by each area’s BANK register setting. CSEX setting of CS/WAIT controller is except above CS0 to CS3’s setting. Finally pin condition is set. Port 60 to 65 set to CS0 , 1, 2, 3, EA24, EA25. 91C025-119 2007-02-28 TMP91C025 ;Bank Operation ;***** /CS2 ***** ORG 000000H ORG 200000H ORG 400000H ORG 600000H ORG 800000H ORG a00000H ORG c00000H ORG to ORG ; Program ROM: Start address at BANK0 of LOCAL2 ; Program ROM: Start address at BANK1 of LOCAL2 ; Program ROM: Start address at BANK2 of LOCAL2 ; Program ROM: Start address at BANK3 of LOCAL2 ; Program ROM: Start address at BANK4 of LOCAL2 ; Program ROM: Start address at BANK5 of LOCAL2 ; Program ROM: Start address at BANK6 of LOCAL2 E00000H LD LDW (LOCAL3), 85H HL,(800000H) LD LDW (LOCAL3), 88H BC,(800000H) FFFFFFH ;***** /CS3 ***** ORG 0000000H ORG 0400000H ORG 0800000H ORG 0C00000H ORG 1000000H ORG 1400000H dw 5555H to ORG 1800000H ORG 1C00000H ORG 2000000H dw AAAAH to ORG 2400000H ORG 2800000H ORG 2C00000H ORG 3000000H ORG 3400000H ORG 3800000H ORG 3C00000H ORG 3FFFFFFH ; Program ROM: Start address at BANK7 (= COMMON2) of LOCAL2 ; Logical address E00000H to FFFFFFH ; Physical address 0E00000H to 0FFFFFFH ; LOCAL3 BANK5 set 14xxxxH ; Load data (5555H) form BANK5 (140000H: Physical address) of LOCAL3 ( CS3 ) ; LOCAL3 BANK8 set 20xxxxH ; Load data (AAAAH) form BANK8 (200000H: Physical address) of LOCAL3 ( CS3 ) ; Program ROM: End address at BANK7 (= COMMON2) of LOCAL2 ; Data ROM: Start address at BANK0 of LOCAL3 ; Data ROM: Start address at BANK1 of LOCAL3 ; Data ROM: Start address at BANK2 of LOCAL3 ; Data ROM: Start address at BANK3 of LOCAL3 ; Data ROM: Start address at BANK4 of LOCAL3 ; Data ROM: Start address at BANK5 of LOCAL3 ; Data ROM: Start address at BANK6 of LOCAL3 ; Data ROM: Start address at BANK7 of LOCAL3 ; Data ROM: Start address at BANK8 of LOCAL3 ; Data ROM: Start address at BANK9 of LOCAL3 ; Data ROM: Start address at BANK10 of LOCAL3 ; Data ROM: Start address at BANK11 of LOCAL3 ; Data ROM: Start address at BANK12 of LOCAL3 ; Data ROM: Start address at BANK13 of LOCAL3 ; Data ROM: Start address at BANK14 of LOCAL3 ; Data ROM: Start address at BANK15 of LOCAL3 ; Data ROM: End address at BANK15 of LOCAL3 Figure 3.8.6 Bank Operation S/W Example 2 Figure 3.8.6 shows example of data access between one BANK and other BANK is one software example. A dot line square area shows one memory and each dot line square shows CS2 ’s program ROM and CS3 ’s data ROM. Program start from E00000H address, firstly, write to BANK register of LOCAL3 area upper 5-bit address of access point. In case of this TMP91C025, because most upper address bit of physical address is EA25, most upper address bit of BANK register is meaningless. 4 bits of upper 5-bit address means 16 BANKs. After setting BANK5, accessing 800000H to BFFFFFH address: Logical local3 address, actually access to physical 1400000H to 1700000H address. 91C025-120 2007-02-28 TMP91C025 ;Bank Operation ;***** /CS2 ***** ORG 000000H ORG 200000H NOP to JP E00100H ORG 400000H ORG 600000H NOP to JP E00200H ORG 800000H ORG a00000H ORG c00000H ; Program ROM: Start address at BANK0 of LOCAL2 ; Program ROM: Start address at BANK1 of LOCAL2 ; Operation at BANK1of LOCAL2 ; Jump to BANK7 (= COMMON2) of LOCAL2 ; Program ROM: Start address at BANK2 of LOCAL2 ; Program ROM: Start address at BANK3 of LOCAL2 ; Operation at BANK3 of LOCAL2 ; Jump to BANK7 (= COMMON2) of LOCAL2 ; Program ROM: Start address at BANK4 of LOCAL2 ; Program ROM: Start address at BANK5 of LOCAL2 ; Program ROM: Start address at BANK6 of LOCAL2 !!!! Program Start !!!! ORG E00000H LD JP to ORG to ORG ORG (LOCAL2), 81H C00000H ; Program ROM: Start address at BANK7 (= COMMON2) of LOCAL2 ; Logical address E00000H to FFFFFFH ; Physical address 0E00000H to 0FFFFFFH ; LOCAL2 BANK1 set 20xxxxH ; Jump to BANK1 (200000H: Physical address) of LOCAL2 E00100H LD (LOCAL2), 83H JP C00000H ; LOCAL2 BANK3 set 60xxxxH ; Jump to BANK3 (600000H: Physical address) of LOCAL2 E00200H LD (LOCAL1),84H JP 400000H FFFFFFH ; LOCAL1 BANK4 set 80xxxxH ; Jump to BANK4 (800000H: Physical address) of LOCAL1 ; Program ROM: End address at BANK7(= COMMON2) of LOCAL2 ;***** /CS1 ***** ORG 000000H ORG 200000H ORG 400000H ORG 600000H LD JP ORG 800000H NOP to JP ORG a00000H ORG c00000H ORG E00000H LD JP (LOCAL1),87H 400000H 600000H (LOCAL1),80H 400000H ; Program ROM: Start address at BANK0 of LOCAL1 ; Program ROM: Start address at BANK1 of LOCAL1 ; Program ROM: Start address at BANK2 of LOCAL1 ; Program ROM: Start address at BANK3 (= COMMON1) of LOCAL1 ; LOCAL1 BANK7 set E0xxxxH ; Jump to BANK7 (E00000H: Physical address) of LOCAL1 ; Program ROM: Start address at BANK4 of LOCAL1 ; Operation at BANK4 of LOCAL1 ; Jump to BANK3 (= COMMON1) of LOCAL1 ; Program ROM: Start address at BANK5 of LOCAL1 ; Program ROM: Start address at BANK6 of LOCAL1 ; Program ROM: Start address at BANK7 of LOCAL1 ; LOCAL1 BANK0 set 00xxxxH ; Jump to BANK0 (000000H: Physical address) of LOCAL1 It’s prohibiting to set other BANK setting in except common area Program run away. ORG FFFFFFH ; Program ROM: End address at BANK7 of LOCAL1 Figure 3.8.7 Bank Operation S/W Example 3 91C025-121 2007-02-28 TMP91C025 At bank operation S/W Example 3 of the above, Figure 3.8.7 shows example of program jump. In the same way with before example, two dot line squares show each CS2 ’s program ROM and CS1 ’s option ROM. Program start from E00000H common address, firstly, write to BANK register of LOCAL2 area upper 3-bit address of jumping point. After setting BANK1, jumping C00000H to DFFFFFH address: logical local2 address, actually jump to physical 2000000H to 3FFFFFH address. When return to common area, it can only jump to E00000H to FFFFFFH without writing to BANK register of LOCAL2 area. By a way of setting of BANK register, the setting that BANK address and common address conflict with is possible. When two kinds or more logical addresses to show common area exist, management of BANK is confused. We recommends not using the BANK setting, BANK address and common address conflict with. When it jumps to one memory from other different memory, it can set same as the last time setting. It needs to write to BANK register of LOCAL1 area upper 3-bit address of jumping point. After setting BANK4, jumping 400000H to 5FFFFFH address: logical local1 address, actually jump to physical 8000000H to 9FFFFFH address. It is a mark paid attention to here, it needs to go by way of common area by all means when moves from a bank to a bank. In other words, it must write to BANK register only in common area and it is prohibit writing the BANK register in BANK area. If it modify the BANK register’s data in BANK area, program runaway. 91C025-122 2007-02-28 TMP91C025 3.9 Serial Channels TMP91C025 includes 2 serial I/O channels. For both channels either UART mode (Asynchronous transmission) or I/O Interface mode (Synchronous transmission) can be selected. • I/O interface mode Mode 0: For transmitting and receiving I/O data using the synchronizing signal SCLK for extending I/O. • UART mode Mode 1: Mode 2: Mode 3: 7-bit data 8-bit data 9-bit data In mode 1 and mode 2 a parity bit can be added. mode 3 has a wakeup function for making the master controller start slave controllers via a serial link (A multi-controller system). Figure 3.9.2, Figure 3.9.3 are block diagrams for each channel. Serial channels 0 and 1 can be used independently. Both channels operate in the same fashion except for the following points; hence only the operation of channel 0 is explained below. Table 3.9.1 Differences between Channels 0 to 1 Channel 0 Pin name Channel 1 TXD0 (PC0) TXD1 (PC3) RXD0 (PC1) CTS0 /SCLK0 (PC2) RXD1 (PC4) CTS1 /SCLK1 (PC5) IrDA mode Yes No This chapter contains the following sections: 3.9.1 Block Diagrams 3.9.2 Operation of Each Circuit 3.9.3 SFRs 3.9.4 Operation in Each Mode 3.9.5 Support for IrDA 91C025-123 2007-02-28 TMP91C025 • Mode 0 (I/O interface mode) Bit0 2 1 3 4 5 6 7 Transfer direction • Mode 1 (7-bit UART mode) No parity Start Bit0 1 2 3 4 5 6 Stop Parity Start Bit0 1 2 3 4 5 6 Parity Stop • Mode 2 (8-bit UART mode) No parity Start Bit0 1 2 3 4 5 6 7 Stop Parity Start Bit0 1 2 3 4 5 6 7 Parity Stop • Mode 3 (9-bit UART mode) Wake up Start Bit0 1 2 3 4 5 6 7 8 Stop Start Bit0 1 2 3 4 5 6 7 Bit8 Stop When bit8 = 1, address (Select code) is denoted. When bit8 = 0, data is denoted. Figure 3.9.1 Data Formats 91C025-124 2007-02-28 TMP91C025 3.9.1 Block Diagrams Figure 3.9.2 is a block diagram representing serial channel 0. Prescaler φT0 2 4 8 16 32 64 φT2 φT8 φT32 Serial clock generation circuit BR0CR <BR0CK1:0> TA0TRG (from TMRA0) ÷2 SCLK0 Concurrent with PC2 SCLK0 Concurrent with PC2 (UART only ÷ 16) SC0MOD0 <SM1:0> I/O interface mode INT request INTRX0 INTTX0 SC0MOD0 <WU> Serial channel interrupt control RXDCLK SC0MOD0 <RXE> SIOCLK SC0CR <IOC> I/O interface mode Receive counter Selector Selector SC0MOD0 <SC1:0> Selector fSYS UART mode BR0CR <BR0ADDE> Baud rate generator Selector φT0 φT2 φT8 φT32 BR0ADD <BR0K3:0> Prescaler BR0CR <BR0S3:0> Transmision counter (UART only ÷ 16) TXDCLK Receive control Transmission control SC0CR <PE> <EVEN> CTS0 SC0MOD0 <CTSE> Parity control Concurrent with PC2 Receive buffer 1 (Shift register) RXD0 Concurrent with PC1 RB8 Receive buffer 2 (SC0BUF) Error flag TB8 Transmission buffer (SC0BUF) SC0CR <OERR><PERR><FERR> TXD0 Concurrent with PC0 Internal data bus Figure 3.9.2 Block Diagram of the Serial Channel 0 (SIO0) 91C025-125 2007-02-28 TMP91C025 Prescaler φT0 2 4 8 16 32 64 φT2 φT8 φT32 Serial clock generation circuit BR1CR <BR1CK1:0> TA0TRG (from TMRA0) Selector SC1MOD0 <SC1:0> Selector Prescaler fSYS ÷2 SCLK1 Concurrent with PC5 SCLK1 Concurrent with PC5 Receive counter (UART only ÷ 16) SIOCLK SC1MOD0 <SM1:0> I/O interface mode SC1CR <IOC> I/O interface mode INT request INTRX1 INTTX1 SC1MOD0 <WU> Serial channel interrupt control RXDCLK SC1MOD0 <RXE> UART mode BR1CR <BR1ADDE> Baud rate generator Selector φT0 φT2 φT8 φT32 Selector BR1CR BR1ADD <BR1S3:0> <BR1K3:0> Transmision counter (UART only ÷ 16) TXDCLK Receive control Transmission control SC1CR <PE> <EVEN> SC1MOD0 <CTSE> Parity control RXD1 Concurrent with PC4 CTS1 Concurrent with PC5 Receive buffer 1 (Shift register) RB8 Receive buffer 2 (SC1BUF) Error flag TB8 Transmission buffer (SC1BUF) SC1CR <OERR><PERR><FERR> TXD1 Concurrent with PC3 Internal data bus Figure 3.9.3 Block Diagram of the Serial Channel 1 (SIO1) 91C025-126 2007-02-28 TMP91C025 3.9.2 Operation of Each Circuit (1) Prescaler There is a 6-bit prescaler for generating a clock to SIO0. The clock selected using SYSCR<PRCK1:0> is divided by 4 and input to the prescaler as φT0. The prescaler can be run by selecting the baud rate generator as the serial transfer clock. Table 3.9.2 shows prescaler clock resolution into the baud rate generator. Table 3.9.2 Prescaler Clock Resolution to Baud Rate Generator Select System Clock <SYSCK> Select Prescaler Clock <PRCK1:0> 1 (fs) 00 (fFPH) 0 (fc) 10 (fc/16 clock) Gear Value <GEAR2:0> Prescaler Output Clock Resolution φT0 φT2 2 2 /fs 2 2 /fc 3 2 /fc 4 2 /fc 5 2 /fc 2 /fc 6 2 /fc − 2 /fc XXX 2 /fs 000 (fc) 2 /fc 001 (fc/2) 2 /fc 010 (fc/4) 2 /fc 011 (fc/8) 2 /fc 100 (fc/16) XXX φT8 4 2 /fs 4 2 /fc 5 2 /fc 6 2 /fc 7 2 /fc 8 2 /fc 8 2 /fc φT32 6 2 /fs 8 6 2 /fc 7 2 /fc 8 2 /fc 9 2 /fc 10 2 /fc 10 2 /fc 8 9 10 11 12 12 X: Don’t care, −: Cannot be used The baud rate generator selects between 4 clock inputs: φT0, φT2, φT8, and φT32 among the prescaler outputs. 91C025-127 2007-02-28 TMP91C025 (2) Baud rate generator The baud rate generator is a circuit which generates transmission and receiving clocks which determine the transfer rate of the serial channels. The input clock to the baud rate generator, φT0, φT2, φT8 or φT32, is generated by the 6-bit prescaler which is shared by the timers. One of these input clocks is selected using the BR0CR<BR0CK1:0> field in the baud rate generator control register. The baud rate generator includes a frequency divider, which divides the frequency by 1 or N + (16 − K)/16 to 16 values, determining the transfer rate. The transfer rate is determined by the settings of BR0CR<BR0ADDE, BR0S3:0> and BR0ADD<BR0K3:0>. • In UART mode (1) When BR0CR<BR0ADDE> = 0 The settings BR0ADD<BR0K3:0> are ignored. The baud rate generator divides the selected prescaler clock by N, which is set in BR0CK<BR0S3:0>. (N = 1, 2, 3 ... 16) (2) When BR0CR<BR0ADDE> = 1 The N + (16 − K)/16 division function is enabled. The baud rate generator divides the selected prescaler clock by N + (16 − K)/16 using the value of N set in BR0CR <BR0S3:0> (N = 2, 3 ... 15) and the value of K set in BR0ADD<BR0K3:0> (K = 1, 2, 3 ... 15) Note: If N = 1 or N = 16, the N + (16 − K)/16 division function is disabled. Set BR0CR <BR0ADDE> to 0. • In I/O interface mode The N + (16 − K)/16 division function is not available in I/O interface mode. Set BR0CR<BR0ADDE> to 0 before dividing by N. The method for calculating the transfer rate when the baud rate generator is used is explained below. • In UART mode Baud rate = • Input clock of baud rate generator ÷ 16 Frequency divider for baud rate generator In I/O interface mode Baud rate = Input clock of baud rate generator Frequency divider for baud rate generator 91C025-128 ÷2 2007-02-28 TMP91C025 • Integer divider (N divider) For example, when the source clock frequency (fc) = 12.288 MHz, the input clock frequency = φT2 (fc/16), the frequency divider N (BR0CR<BR0S3:0>) = 5, and BR0CR<BR0ADDE> = 0, the baud rate in UART mode is as follows: ∗ Clock state System clock: High-frequency (fc) Clock gear: 1 (fc) Prescaler clock: System clock Baud rate = fc/16 ÷ 16 5 = 12.288 × 106 ÷ 16 ÷ 5 ÷ 16 = 9600 (bps) Note: The N + (16 − K)/16 division function is disabled and setting BR0ADD<BR0K3:0> is invalid. • N + (16 − K)/16 divider (UART mode only) Accordingly, when the source clock frequency (fc) = 4.8 MHz, the input clock frequency = φT0, the frequency divider N (BR0CR<BR0S3:0>) = 7, K (BR0ADD<BR0K3:0>) = 3, and BR0CR<BR0ADDE> = 1, the baud rate in UART Mode is as follows: ∗ Clock state System clock: High-frequency (fc) Clock gear: 1 (fc) Prescaler clock: System clock Baud rate = fc/4 ÷ 16 7 + (16 − 3)/16 = 4.8 × 106 ÷ 4 ÷ (7 + 13/16) ÷ 16 = 9600 (bps) Table 3.9.3 show examples of UART mode transfer rates. Additionally, the external clock input is available in the serial clock. (Serial channels 0, 1). The method for calculating the baud rate is explained below: • In UART mode Baud rate = External clock input frequency ÷ 16 It is necessary to satisfy (External clock input cycle) ≥ 4/fc • In I/O interface mode Baud rate = External clock input frequency It is necessary to satisfy (External clock input cycle) ≥ 16/fc 91C025-129 2007-02-28 TMP91C025 Table 3.9.3 Transfer Rate Selection (when baud rate generator is used and BR0CR<BR0ADDE> = 0) Unit (kbps) Input Clock fc [MHz] Frequency Divider N (BR0CR<BR0S3:0>) φT0 φT2 φT8 φT32 9.830400 2 76.800 19.200 4.800 1.200 ↑ 4 38.400 9.600 2.400 0.600 ↑ 8 19.200 4.800 1.200 0.300 ↑ 0 9.600 2.400 0.600 0.150 12.288000 5 38.400 9.600 2.400 0.600 ↑ A 19.200 4.800 1.200 0.300 14.745600 2 115.200 28.800 7.200 1.800 ↑ 3 76.800 19.200 4.800 1.200 ↑ 6 38.400 9.600 2.400 0.600 ↑ C 19.200 4.800 1.200 0.300 19.6608 1 307.200 76.800 19.200 4.800 ↑ 2 153.600 38.400 93.600 2.400 ↑ 4 76.800 19.10 4.800 1.200 ↑ 8 38.400 9.600 2.400 0.600 ↑ 10 19.200 4.800 1.200 0.300 22.1184 3 115.200 28.800 7.200 1.800 24.576 1 384.000 96.000 24.000 6.000 ↑ 2 192.000 48.000 12.000 3.000 ↑ 4 96.000 24.000 6.000 1.500 ↑ 5 76.800 19.200 4.800 1.200 ↑ 8 48.000 12.000 3.000 0.750 ↑ A 38.400 9.600 2.400 0.600 ↑ 10 24.000 6.000 1.500 0.375 27.0336 B 38.400 9.600 2.400 0.600 29.4912 1 460.800 115.200 28.800 7.200 ↑ 3 153.600 38.400 9.600 2.400 ↑ 4 115.200 28.800 7.200 1.800 ↑ 6 76.800 19.200 4.800 1.200 ↑ 9 51.200 12.800 3.200 1.800 ↑ C 38.400 9.600 2.400 1.600 ↑ F 30.720 7.680 1.920 1.480 ↑ 10 28.800 7.200 1.800 0.450 31.9488 D 38.400 9.600 2.400 0.600 34.4064 7 76.800 19.200 4.800 1.200 Note 1: Transfer rates in I/O interface mode are eight times faster than the values given above. Note 2: The values in this table are calculated for when fc is selected as the system clock, the clock gear is set for fc/1 and the system clock is the prescaler clock input fFPH. Timer out clock (TA0TRG) can be used for source clock of UART mode only. Calculation method the frequency of TA0TRG Frequency of TA0TRG = Note: Baud rate × 16 The TMRA0 match detect signal cannot be used as the transfer clock in I/O interface mode. 91C025-130 2007-02-28 TMP91C025 (3) Serial clock generation circuit This circuit generates the basic clock for transmitting and receiving data. • In I/O interface mode In SCLK output mode with the setting SC0CR<IOC> = 0, the basic clock is generated by dividing the output of the baud rate generator by 2, as described previously. In SCLK input mode with the setting SC0CR<IOC> = 1, the rising edge or falling edge will be detected according to the setting of the SC0CR<SCLKS> register to generate the basic clock. • In UART mode The SC0MOD0<SC1:0> setting determines whether the baud rate generator clock, the internal system clock fSYS, the match detect signal from timer TMRA0 or the external clock (SCLK0) is used to generate the basic clock SIOCLK. (4) Receiving counter The receiving counter is a 4-bit binary counter used in UART mode which counts up the pulses of the SIOCLK clock. It takes 16 SIOCLK pulses to receive 1 bit of data; each data bit is sampled three times – on the 7th, 8th and 9th clock cycles. The value of the data bit is determined from these three samples using the majority rule. For example, if the data bit is sampled respectively as 1, 0 and 1 on 7th, 8th and 9th clock cycles, the received data bit is taken to be 1. A data bit sampled as 0, 0 and 1 is taken to be 0. (5) Receiving control • In I/O interface mode In SCLK output mode with the setting SC0CR<IOC> = 0, the RXD0 signal is sampled on the rising or falling edge of the shift clock which is output on the SCLK0 pin, according to the SC0CR<SCLKS> setting. In SCLK input mode with the setting SC0CR<IOC> = 1, the RXD0 signal is sampled on the rising or falling edge of the SCLK0 input, according to the SC0CR<SCLKS> setting. • In UART mode The receiving control block has a circuit which detects a start bit using the majority rule. Received bits are sampled three times; when two or more out of three samples are 0, the bit is recognized as the start bit and the receiving operation commences. The values of the data bits that are received are also determined using the majority rule. 91C025-131 2007-02-28 TMP91C025 (6) The receiving buffers To prevent overrun errors, the receiving buffers are arranged in a double-buffer structure. Received data is stored one bit at a time in receiving buffer 1 (which is a shift register). When 7 or 8 bits of data have been stored in receiving buffer 1, the stored data is transferred to receiving buffer 2 (SC0BUF); this cause an INTRX0 interrupt to be generated. The CPU only reads receiving buffer 2 (SC0BUF). Even before the CPU reads receiving buffer 2 (SC0BUF), the received data can be stored in receiving buffer 1. However, unless receiving buffer 2 (SC0BUF) is read before all bits of the next data are received by receiving buffer 1, an overrun error occurs. If an overrun error occurs, the contents of receiving buffer 1 will be lost, although the contents of receiving buffer 2 and SC0CR<RB8> will be preserved. SC0CR<RB8> is used to store either the parity bit − added in 8-bit UART mode – or the most significant bit (MSB) – in 9-bit UART mode. In 9-bit UART mode the wake-up function for the slave controller is enabled by setting SC0MOD0<WU> to 1; in this mode INTRX0 interrupts occur only when the value of SC0CR<RB8> is 1. (7) Transmission counter The transmission counter is a 4-bit binary counter which is used in UART mode and which, like the receiving counter, counts the SIOCLK clock pulses; a TXDCLK pulse is generated every 16 SIOCLK clock pulses. SIOCLK 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 TXDCLK Figure 3.9.4 Generation of the Transmission Clock (8) Transmission controller • In I/O interface mode In SCLK output mode with the setting SC0CR<IOC> = 0, the data in the transmission buffer is output one bit at a time to the TXD0 pin on the rising or falling edge of the shift clock which is output on the SCLK0 pin, according to the SC0CR<SCLKS> setting. In SCLK input mode with the setting SC0CR<IOC> = 1, the data in the transmission buffer is output one bit at a time on the TXD0 pin on the rising or falling edge of the SCLK0 input, according to the SC0CR<SCLKS> setting. • In UART mode When transmission data sent from the CPU is written to the transmission buffer, transmission starts on the rising edge of the next TXDCLK, generating a transmission shift clock TXDSFT. 91C025-132 2007-02-28 TMP91C025 Handshake function Use of CTS pin allows data can be sent in units of one frame; thus, Overrun errors can be avoided. The handshake functions is enabled or disabled by the SC0MOD<CTSE> setting. When the CTS0 pin foes high on completion of the current data send, data transmission is halted until the CTS0 pin foes low again. However, the INTTX0 interrupt is generated, it requests the next data send to the CPU. The next data is written in the transmission buffer and data sending is halted. Though there is no RTS pin, a handshake function can be easily configured by setting any port assigned to be the RTS function. The RTS should be output high to request send data halt after data receive is completed by software in the RXD interrupt routine. TMP91C025 TMP91C025 TXD RXD CTS RTS (Any port) Sender Receiver Figure 3.9.5 Handshake Function Timing to writing to the transmission buffer CTS Send is suspended during this period [b] [a] 13 14 15 16 1 2 3 14 15 16 1 2 3 SIOCLK TXDCLK Note 1: Bit0 Start bit TXD If the CTS signal goes high during transmission, no more data will be sent after completion of the current transmission. Note 2: Transmission starts on the first falling edge of the TXDCLK clock after the CTS signal has fallen. Figure 3.9.6 CTS (Clear to send) Timing 91C025-133 2007-02-28 TMP91C025 (9) Transmission buffer The transmission buffer (SC0BUF) shifts out and sends the transmission data written from the CPU form the least significant bit (LSB) in order. When all the bits are shifted out, the transmission buffer becomes empty and generates an INTTX0 interrupt. (10) Parity control circuit When SC0CR<PE> in the serial channel control register is set to 1, it is possible to transmit and receive data with parity. However, parity can be added only in 7-bit UART mode or 8-bit UART mode. The SC0CR<EVEN> field in the serial channel control register allows either even or odd parity to be selected. In the case of transmission, parity is automatically generated when data is written to the transmission buffer SC0BUF. The data is transmitted after the parity bit has been stored in SC0BUF<TB7> in 7-bit UART mode or in SC0MOD0<TB8> in 8-bit UART mode. SC0CR<PE> and SC0CR<EVEN> must be set before the transmission data is written to the transmission buffer. In the case of receiving, data is shifted into receiving buffer 1, and the parity is added after the data has been transferred to receiving buffer 2 (SC0BUF), and then compared with SC0BUF<RB7> in 7-bit UART mode or with SC0CR<RB8> in 8-bit UART mode. If they are not equal, a parity error is generated and the SC0CR<PERR> flag is set. (11) Error flags Three error flags are provided to increase the reliability of data reception. 1. Overrun error <OERR> If all the bits of the next data item have been received in receiving buffer 1 while valid data still remains stored in receiving buffer 2 (SC0BUF), an overrun error is generated. The below is a recommended flow when the overrun-error is generated. (INTRX interrupt routine) 1) Read receiving buffer 2) Read error flag 3) If <OERR> = 1 then a) Set to disable receiving (Write 0 to SC0MOD0<RXE>) b) Wait to terminate current frame c) Read receiving buffer d) Read error flag e) Set to enable receiving (Write 1 to SC0MOD0<RXE>) f) Request to transmit again 4) Other 2. Parity error <PERR> The parity generated for the data shifted into receiving buffer 2 (SC0BUF) is compared with the parity bit received via the RXD pin. If they are not equal, a Parity error is generated. 3. Framing error <FERR> The stop bit for the received data is sampled three times around the center. If the majority of the samples are 0, a framing error is generated. 91C025-134 2007-02-28 TMP91C025 (12) Timing generation a. In UART mode Receiving Mode Interrupt Timing Framing Error Timing Center of last bit. Center of last bit. (Bit8) (Parity bit) Center of stop bit. Center of stop bit. Center of last bit. − Parity Error Timing Overrun Error Timing 8 Bits + Parity 9 Bits (Parity bit) Center of last bit. Center of last bit. (Bit8) (Parity bit) 8 Bits, 7 Bits + Parity, 7 Bits Center of stop bit. Center of stop bit. Center of stop bit. Center of stop bit. Note: In 9-Bit and 8-Bit+Parity mode, interrupts coincide with the ninth bit pulse.Thus, when servicing the interrupt, it is necessary to wait for a 1-bit period (to allow the stop bit to be transferred) to allow checking for a framing error. Transmitting Mode Interrupt Timing 9 Bits 8 Bits + Parity 8 Bits, 7 Bits + Parity, 7 Bits Just before stop bit is Just before stop bit is Just before stop bit is transmitted. transmitted. transmitted. b. I/O interface Transmission Interrupt Timing Receiving SCLK output mode SCLK input mode SCLK output mode Interrupt Timing SCLK input mode Immediately after last bit data. (See Figure 3.9.19.) Immediately after rise of last SCLK signal rising mode, or immediately after fall in falling mode. (See Figure 3.9.20.) Timing used to transfer received to data receive buffer 2 (SC0BUF) (e.g. immediately after last SCLK). (See Figure 3.9.21.) Timing used to transfer received data to receive buffer 2 (SC0BUF) (e.g. immediately after last SCLK). (See Figure 3.9.22.) 91C025-135 2007-02-28 TMP91C025 3.9.3 SFRs SC0MOD0 Bit symbol (0202H) Read/Write After reset Function 7 6 5 4 TB8 CTSE RXE WU 3 2 1 0 SM1 SM0 SC1 SC0 0 0 0 0 R/W 0 0 0 0 Transfer Hand shake Receive Wakeup Serial transmission Serial transmission clock. data bit8. 0: CTS function. function. mode. (UART) 0: Receive 0: Disable 00: I/O interface mode 00: TMRA0 trigger disable 1: Enable 01: 7-bit UART mode 01: Baud rate disable 1: CTS enable 1: Receive 10: 8-bit UART mode enable 11: 9-bit UART mode generator 10: Internal clock fSYS 11: External clcok (SCLK0 input) Serial transmission clock source (UART) 00 Timer TMRA0 match detect signal 01 Baud rate generator 10 Internal clock fSYS 11 External clock (SCLK0 input) Note: The clock selection for the I/O interface mode is controlled by the serial bontrol register (SC0CR). Serial transmission mode 00 01 10 11 I/O interface mode 7-bit mode UART mode 8-bit mode 9-bit mode Wakeup function 9-bit UART Other modes Interrupt generated when 0 data is received Don’t care Interrupt generated only 1 when SC0CR<RB8> = 1 Receiving function 0 1 Receive disabled Receive enabled Handshake function ( CTS pin) Enable 0 1 Disabled (Always transferable) Enabled Transmission data bit8 Figure 3.9.7 Serial Mode Control Register (SIO0, SC0MOD0) 91C025-136 2007-02-28 TMP91C025 SC1MOD0 (020AH) Bit symbol 7 6 5 4 TB8 CTSE RXE WU Read/Write After reset Function 3 2 1 0 SM1 SM0 SC1 SC0 0 0 0 0 R/W 0 0 0 0 Transfer Hand shake Receive Wakeup Serial transmission Serial transmission clock. data bit8. 0: CTS function. function. mode. (UART) 0: Receive 0: Disable 00: I/O interface mode 00: TMRA0 trigger 1: Enable 01: 7-bit UART mode 01: Baud rate disable 1: CTS enable disable 1: Receive 10: 8-bit UART mode enable 11: 9-bit UART mode generator 10: Internal clock fSYS 11: External clcok (SCLK1 input) Serial transmission clock source (for UART) 00 Timer TMRA0 match detect signal 01 Baud rate generator 10 Internal clock fSYS 11 External clock (SCLK1 input) Serial transmission mode 00 01 10 11 I/O Interface Mode 7-bit mode UART mode 8-bit mode 9-bit mode Wakeup function 9-bit UART Other modes Interrupt generated when 0 data is received Don’t care Interrupt generated only 1 when SC1CR<RB8> = 1 Receiving function 0 1 Receive disabled Receive enabled Handshake function ( CTS pin) enables 0 1 Disabled (Always transferable) Enabled Transmission data bit8 Figure 3.9.8 Serial Mode Control Register (SIO1, SC1MOD0) 91C025-137 2007-02-28 TMP91C025 SC0CR (0201H) 7 6 Bit symbol RB8 EVEN Read/Write R After reset Undefined Function 5 4 3 2 1 PE OERR PERR FERR SCLKS R/W R (Cleared to 0 when read.) 0 0 0 Received Parity Parity data bit8. 0: Odd addition. 1: Even 0: Disable 0 0 IOC R/W 0 0 0: SCLK0 1: Enable 0 0: Baud rate 1: Error generator Overrun Parity Framing 1: SCLK0 1: SCLK0 pin input I/O interface input clock selection 0 1 Baud rate generator SCLK0 pin input Edge selection for SCLK pin (I/O mode) Transmits and receivers data on rising edge of SCLK0. Transmits and receivers data on falling edge SCLK0. 0 1 Framing error flag Parity error flag Overrun error flag Cleared to 0 when read Parity addition enables 0 1 Disabled Enabled Even parity addition/check 0 1 Odd parity Even parity Received data bit8 Note: As all error flags are cleared after reading do not test only a single bit with a bit testing instruction. Figure 3.9.9 Serial Control Register (SIO0, SC0CR) 91C025-138 2007-02-28 TMP91C025 SC1CR (0209H) 7 6 Bit symbol RB8 EVEN Read/Write R After reset Undefined Function 5 4 3 2 1 PE OERR PERR FERR SCLKS R/W R (Cleared to 0 when read.) 0 0 0 Received Parity Parity data bit8. 0: Odd addition. 1: Even 0: Disable 1: Enable 0 0 IOC R/W 0 0 0 0: SCLK1 0: Baud rate 1: Error generator 1: SCLK1 Overrun Parity Framing 1: SCLK1 pin input I/O interface input clock select 0 1 Baud rate generator SCLK1 pin input Edge selection for SCLK pin (I/O mode) Transmits and receive data on rising edge of SCLK1. Transmits and receive data on falling edge of SCLK1. 0 1 Framing error flag Parity error flag Overrun error flag Cleared to 0 when read Parity addition enables 0 1 Disabled Enabled Even parity addition/check 0 1 Odd parity Even parity Received data bit8 Note: As all error flags are cleared after reading do not test only a single bit with a bit testing instruction. Figure 3.9.10 Serial Control Register (SIO1, SC1CR) 91C025-139 2007-02-28 TMP91C025 Bit symbol BR0CR (0203H) 7 6 5 4 − BR0ADDE BR0CK1 BR0CK0 Read/Write 2 1 0 BR0S3 BR0S2 BR0S1 BR0S0 0 0 0 0 R/W After reset 0 Function 0 0 0 Always +(16 − K)/16 00: φT0 write 0. division. 01: φT2 0: Disable 10: φT8 Setting the divided frequency “N”. 1: Enable 11: φT32 (0 to F) +(16 − K)/16 division enable Setting the input clock of baud rate generator 0 Disable 00 Internal clock φT0 1 Enable 01 Internal clock φT2 10 Internal clock φT8 11 Internal clock φT32 7 BR0ADD (0204H) 3 6 5 4 Bit symbol 3 2 1 0 BR0K3 BR0K2 BR0K1 BR0K0 0 0 0 0 Read/Write R/W After reset Function Sets frequency divisor “K”. (Divided by N + (16 − K)/16) Sets baud rate generator frequency divisor BR0CR<BR0ADDE> = 1 BR0CR <BR0S3:0> BR0ADD BR0CR<BR0ADDE> = 0 0000 (N = 16) 0010 (N = 2) or to 0001 (N = 1) (UART only) to 1111 (N = 15) 0001 (N = 1) 1111 (N = 15) <BR0K3:0> 0000 Disable 0001 (K = 1) Divided by Disable to 0000 (N = 16) Disable Divided by N N + (16 − K)/16 1111 (K = 15) Note1:Availability of +(16-K)/16 division function N UART mode I/O mode 2 to 15 ○ × 1 , 16 × × The baud rate generator can be set “1” in UART mode and disable +(16-K)/16 division function.Don’t use in I/O interface mode. Note2:Set BR0CR <BR0ADDE> to 1 after setting K (K = 1 to 15) to BR0ADD<BR0K3:0> when +(16-K)/16 division function is used. Writes to unused bits in the BR0ADD register do not affext operation, and undefined data is read from these unused bits. Figure 3.9.11 Baud Rate Generator Control (SIO0, BR0CR, BR0ADD) 91C025-140 2007-02-28 TMP91C025 Bit symbol BR1CR (020BH) 7 6 5 4 − BR1ADDE BR1CK1 BR1CK0 Read/Write 2 1 0 BR1S3 BR1S2 BR1S1 BR1S0 0 0 0 0 R/W After reset 0 Function 0 0 0 Always +(16 − K)/16 00: φT0 write 0. division. 01: φT2 0: Disable 10: φT8 Setting the divided frequency “N”. 1: Enable 11: φT32 (0 to F) +(16 − K)/16 division enable Input clock selection for baud rate generator 0 Disabled 00 Internal clock φT0 1 Enabled 01 Internal clock φT2 10 Internal clock φT8 11 Internal clock φT32 7 BR1ADD (020CH) 3 6 5 4 Bit symbol 3 2 1 0 BR1K3 BR1K2 BR1K1 BR1K0 0 0 0 0 Read/Write R/W After reset Function Sets frequency divisor “K”. (Divided by N + (16 − K)/16) Baud rate generator frequency divisor setting BR1CR<BR1ADDE> = 1 BR0CR <BR1S3:0> BR1ADD <BR1K3:0> 0000 0000 (N = 16) 0010 (N = 2) or to 0001 (N = 1) 1111 (N = 15) Disable Disable 0001 (K = 1) Disable to BR1CR<BR1ADDE> = 0 1111 (K = 15) Disabled by 0001 (N = 1) (UART only) to 1111 (N = 15) 0000 (N = 16) Divided by N N + (16 − K)/16 Note1:Availability of +(16-K)/16 division function N UART mode I/O mode 2 to 15 ○ × 1 , 16 × × The baud rate generator can be set “1” in UART mode and disable +(16-K)/16 division function.Don’t use in I/O interface mode. Note2:Set BR1CR <BR1ADDE> to 1 after setting K (K = 1 to 15) to BR10ADD<BR1K3:0> when +(16-K)/16 division function is used. Writes to unused bits in the BR1ADD register do not affext operation, and undefined data is read from these unused bits. Figure 3.9.12 Baud Rate Generator Control (SIO1, BR1CR, BR1ADD) 91C025-141 2007-02-28 TMP91C025 SC0BUF (0200H) 7 6 5 4 3 2 1 0 TB7 TB6 TB5 TB4 TB3 TB2 TB1 TB0 7 6 5 4 3 2 1 0 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 (Transmission) (Receiving) Note: Prohibit read-modify-write for SC0BUF. Figure 3.9.13 Serial Transmission/Receiving Buffer Registers (SIO0, SC0BUF) SC0MOD1 (0205H) 7 6 Bit symbol I2S0 FDPX0 Read/Write R/W R/W After reset 0 Function 5 4 3 2 1 0 0 IDLE2 Duplex 0: Stop 0: Half 1: Run 1: Full Figure 3.9.14 Serial Mode Control Register 1 (SIO0, SC0MOD1) SC1BUF (0208H) 7 6 5 4 3 2 1 0 TB7 TB6 TB5 TB4 TB3 TB2 TB1 TB0 7 6 5 4 3 2 1 0 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 (Transmission) (Receiving) Note: Prohibit read-modify-write for SC1BUF. Figure 3.9.15 Serial Transmission/Receiving Buffer Registers (SIO1, SC1BUF) SC1MOD1 (020DH) 7 6 Bit symbol I2S1 FDPX1 Read/Write R/W R/W After reset 0 Function 5 4 3 2 1 0 0 IDLE2 Duplex 0: Stop 0: Half 1: Run 1: Full Figure 3.9.16 Serial Mode Control Register 1 (SIO1, SC1MOD1) 91C025-142 2007-02-28 TMP91C025 3.9.4 Operation in Each Mode (1) Mode 0 (I/O interface mode) This mode allows an increase in the number of I/O pins available for transmitting data to or receiving data from an external shift register. This mode includes the SCLK output mode to output synchronous clock SCLK and SCLK input mode to input external synchronous clock SCLK. Output extension Input extension Shift register TMP91C025 A TMP91C025 Shift register A QH C B TXD SI C B RXD D SCLK SCK E D SCLK CLOCK E S/ L G F Port RCK G F Port H H TC74HC165 or equivalent TC74HC595 or equivalent Figure 3.9.17 SCLK Output Mode Connection Example Output extension Input extension Shift register TMP91C025 A TMP91C025 Shift register A QH C B TXD SI C B RXD D SCLK SCK E D SCLK CLOCK E S/ L G F Port RCK G F Port H H TC74HC165 or equivalent TC74HC595 or equivalent External clock External clock Figure 3.9.18 SCLK Input Mode Connection Example 91C025-143 2007-02-28 TMP91C025 a. Transmission In SCLK output mode 8-bit data and a synchronous clock are output on the TXD0 and SCLK0 pins respectively each time the CPU writes the data to the transmission buffer. When all data is output, INTES0<ITX0C> will be set to generate the INTTX0 interrupt. Timing to write transmission data SCLK0 output (<SCLKS>=0 Rising edge mode) (Internal clock timing) SCLK0 output (<SCLKS>=1 Falling edge mode) Bit1 Bit0 TXD0 Bit6 Bit7 ITX0C (INTTX0 Interrupt request) Figure 3.9.19 Transmitting Operation in I/O Interface Mode (SCLK0 output mode) In SCLK input mode, 8-bit data is output on the TXD0 pin when the SCLK0 input becomes active after the data has been written to the transmission buffer by the CPU. When all data is output, INTES0<ITX0C> will be set to generate INTTX0 interrupt. SCLK0input (<SCLKS> = 0 Rising edge mode) SCLK0 input (<SCLKS> = 1 Falling edge mode) TXD0 Bit0 Bit1 Bit5 Bit6 Bit7 ITX0C (INTTX0 Interrupt request) Figure 3.9.20 Transmitting Operation in I/O Interface Mode (SCLK0 input mode) 91C025-144 2007-02-28 TMP91C025 b. Receiving In SCLK output mode, the synchronous clock is outputted from SCLK0 pin and the data is shifted to receiving buffer 1. This starts when the receive interrupt flag INTES0<IRX0C> is cleared by reading the received data. When 8-bit data are received, the data will be transferred to receiving buffer 2 (SC0BUF according to the timing shown below) and INTES0<IRX0C> will be set to generate INTRX0 interrupt. The outputting for the first SCLK0 starts by setting SC0MOD0<RXE> to 1. IRX0C (INTRX0 interrupt request) SCLK0 output (<SCLKS>=0 Rising edge mode) SCLK0 output (<SCLKS>=1 Fallingf edge mode) RXD0 Bit1 Bit0 Bit6 Bit7 Figure 3.9.21 Receiving Operation in I/O Interface Mode (SCLK0 output mode) In SCLK input mode, the data is shifted to receiving buffer 1 when the SCLK input becomes active after the receive interrupt flag INTES0<IRX0C> is cleared by reading the received data. When 8-bit data is received, the data will be shifted to receiving buffer 2 (SC0BUF according to the timing shown below) and INTES0<IRX0C> will be set again to be generate INTRX0 interrupt. SCLK0 input (<SCLKS> = 0: Rising edge mode) SCLK0 input (<SCLKS> = 1: Falling edge mode) Bit0 RXD0 Bit1 Bit5 Bit6 Bit7 IRX0C (INTRX0 ) Figure 3.9.22 Receiving Operation in I/O Interface Mode (SCLK0 input mode) Note: The system must be put in the receive enable state (SCMOD0<RXE> = 1) before data can be received. 91C025-145 2007-02-28 TMP91C025 c. Transmission and receiving (Full duplex mode) When the full duplex mode is used, set the level of receive interrupt to 0 and set enable the interrupt level (1 to 6) to the transfer interrupt. In the transfer interrupt program, the receiving operation should be done like the above example before setting the next transfer data. (Example) Channel 0, SCLK output Baud rate = 9600 bps fc = 14.7456 MHz System clock: High-frequency (fc) Clock gear: 1 (fc) Prescaler clock: fFPH Main routine 7 6 5 4 3 2 1 0 INTES0 0 0 0 1 0 0 0 0 Set the INTTX0 level to 1. Set the INTRX0 level to 0. PCCR − − − − − 1 0 1 Set PC0, PC1 and PC2 to function as the TXD0, RXD0 PCFC − − − − − 1 − 1 SC0MOD0 0 0 0 0 0 0 0 0 SC0MOD1 1 1 X X X X X X Select full duplex Mode. SC0CR 0 0 0 0 0 0 0 0 SCLK output, transmit on negative edge, receive on BR0CR 0 0 1 1 0 0 1 1 Baud rate = 9600 bps SC0MOD0 0 0 1 0 0 0 0 0 Enable receiving SC0BUF * * * * * * * * Set the transmit data and start. * * * and SCLK0 pins respectively. Select I/O interface Mode. positive edge INTTX0 interrupt routine Acc SC0BUF SC0BUF Read the receiving buffer. * * * * * Set the next transmit data. X: Don’t care, −: No change 91C025-146 2007-02-28 TMP91C025 (2) Mode 1 (7-bit UART mode) 7-bit UART mode is selected by setting serial channel mode register SC0MOD0 <SM1:0> to 01. In this mode, a parity bit can be added. Use of a parity bit is enabled or disabled by the setting of the serial channel control register SC0CR<PE> bit; whether even parity or odd parity will be used is determined by the SC0CR<EVEN> setting when SC0CR<PE> is set to 1 (Enabled). (Setting example) When transmitting data of the following format, the control registers should be set as described below. This explanation applies to channel 0. Start Bit0 1 2 3 4 5 6 Even parity Stop Transmission direction (transmission rate: 2400 bps at fc = 12.288 MHz) ∗ Clock state System clock: High-frequency (fc) Clock gear: 1 (fc) Prescaler clock: fFPH 7 6 5 4 3 2 1 0 P9CR P9FC SC0MOD SC0CR BR0CR INTES0 SC0BUF ← − − − − − − − 1 ← − − − − − − − 1 Set PC0 to function as the TXD0 pin. ← X 0 − X 0 1 0 1 ← X 1 1 X X X 0 0 Select 7-bit UART mode. Add even parity. ← 0 0 1 0 0 1 0 1 ← 1 1 0 0 − − − − ← * * * * * * * * Set the transfer rate to 2400 bps. Enable the INTTX0 interrupt and set it to interrupt level 4. Set data for transmission. X: Don’t care, −: No change (3) Mode 2 (8-bit UART mode) 8-bit UART mode is selected by setting SC0MOD0<SM1:0> to 10. In this mode, a parity bit can be added (Use of a parity bit is enabled or disabled by the setting of SC0CR<PE>); whether even parity or odd parity will be used is determined by the SC0CR<EVEN> setting when SC0CR<PE> is set to 1 (Enabled). (Setting example) When receiving data of the following format, the control registers should be set as described below. Start Bit0 1 2 3 4 5 6 7 Odd parity Stop Transmission direction (transmission rate: 9600 bps at fc = 12.288 MHz) 91C025-147 2007-02-28 TMP91C025 ∗ Clock state System clock: High-frequency (fc) Clock gear: 1 (fc) Prescaler clock: fFPH Main settings 7 6 5 4 3 2 1 0 ← − − − − − − 0 − SC0MOD ← − 0 1 X 1 0 0 1 PCCR Set PC1 to function as the RXD0 pin. Enable receiving in 8-bit UART mode. Add even parity. BR0CR ← X 0 1 X X X 0 0 ← 0 0 0 1 0 1 0 1 INTES0 ← − − − − 1 1 0 0 Enable the INTRX0 interrupt and set it to interrupt level 4. SC0CR Set the transfer rate to 9600 bps. Interrupt processing if Acc ← SC0CR AND 00011100 ≠ 0 then ERROR Check for errors. Acc ← SC0BUF Read the received data. Acc X: Don’t care, −: No change (4) Mode 3 (9-bit UART mode) 9-bit UART mode is selected by setting SC0MOD0<SM1:0> to 11. In this mode parity bit cannot be added. In the case of transmission the MSB (9th bit) is written to SC0MOD0<TB8>. In the case of receiving it is stored in SC0CR<RB8>. When the buffer is written and read, the MSB is read or written first, before the rest of the SC0BUF data. Wakeup function In 9-bit UART mode, the wakeup function for slave controllers is enabled by setting SC0MOD0<WU> to 1. The interrupt INTRX0 occurs only when<RB8> = 1. TXD RXD Master TXD RXD Slave 1 TXD RXD Slave 2 TXD RXD Slave 3 Note: The TXD pin of each slave controller must be in open-drain output mode. Figure 3.9.23 Serial Link Using Wakeup Function 91C025-148 2007-02-28 TMP91C025 Protocol a. Select 9-bit UART mode on the master and slave controllers. b. Set the SC0MOD0<WU> bit on each slave controller to 1 to enable data receiving. c. The master controller transmits one-frame data including the 8-bit select code for the slave controllers. The MSB (bit8)<TB8> is set to 1. Start Bit0 1 2 3 4 5 6 7 Select code of slave controller 8 Stop 1 d. Each slave controller receives the above frame. Each controller checks the above select code against its own select code. The controller whose code matches clears its WU bit to 0. e. The master controller transmits data to the specified slave controller whose SC0MOD<WU> bit is cleared to 0. The MSB (bit8) <TB8> is cleared to 0. Start Bit0 1 2 3 4 Data f. 5 6 7 Bit8 Stop 0 The other slave controllers (whose <WU> bits remain at 1) ignore the received data because their MSBs (Bit8 or <RB8>) are set to 0, disabling INTRX0 interrupts. The slave controller (WU bit = 0) can transmit data to the master controller, and it is possible to indicate the end of data receiving to the master controller by this transmission. 91C025-149 2007-02-28 TMP91C025 (Setting example) To link two slave controllers serially with the master controller using the internal clock fSYS as the transfer clock. TXD RXD TXD Master RXD TXD RXD Slave 1 Slave 2 Select code 00000001 Select code 00001010 Figure 3.9.24 UART Block Connection Since serial channels 0 and 1 operate in exactly the same way, channel 0 only is used for the purposes of this explanation. • Setting the master controller Main INTES0 ← − − − − − − 0 1 ← X X − X − − X 1 ← 1 1 0 0 1 1 0 1 Enable the INTTX0 interrupt and set it to interrupt level 4. SC0MOD0 ← 1 0 1 0 1 1 1 0 Set fSYS as the transmission clock for 9-bit UART mode. SC0BUF ← 0 0 0 0 0 0 0 1 Set the select code for slave controller 1. PCCR PCFC Set PC0 and PC1 to function as the TXD0 and RXD0 pins respectively. Enable the INTRX0 interrupt and set it to interrupt level 5. INTTX0 interrupt SC0MOD0 SC0BUF • ← 0 − − − − − − − ← * * * * * * * * Set TB8 to 0. Set data for transmission. Setting the slave controller Main INTES0 ← − − − − − − 0 ← X X − X − − X ← X X X X − X X ← 1 1 0 1 1 1 1 SC0MOD0 ← 0 0 1 1 1 1 1 0 PCCR PCFC PCODE 1 1 Set PC1 to RXD and PC0 to TXD0 (Open-drain output). 1 0 Enable INTRX0 and INTTX0. Set <WU> to 1 in 9-bit UART transmission mode using fSYS as the transfer clock. INTRX0 interrupt Acc ← SC0BUF if Acc = Select code Then SC0MOD0 ← − − − 0 − − − − Clear <WU> to 0. 91C025-150 2007-02-28 TMP91C025 3.9.5 Support for IrDA SIO0 includes support for the IrDA 1.0 infrared data communication specification. Figure 3.9.25 shows the block diagram. Transmisison data SIO0 TXD0 IR modulator IR transmitter & LED IR output Modem Receive data RXD0 IR demodulator IR receiver IR input TMP91C025 Figure 3.9.25 IrDA Block Diagram (1) Modulation of the transmission data When the transfer data is 0, the modem outputs 1 to TXD0 pin with either 3/16 or 1/16 times for width of baud-rate. The pulse width is selected by the SIRCR<PLSEL>. When the transfer data is 1, the modem outputs 0. Transmission data Start 0 1 0 0 1 1 0 0 Stop TXD0 pin Figure 3.9.26 Modulation Example of Transfer Data (2) Demodulation of the receive data When the receive data has the effective high-level pulse width (Software selectable), the modem outputs 0 to SIO0. Otherwise the modem outputs 1 to SIO0. The receive pulse logic is also selectable by SIRCR<RXSEL>. Receive pulse <RXSEL> = “0” Receive pulse <RXSEL> = “1” Demodulated data Start 1 0 0 1 0 1 1 0 Stop Figure 3.9.27 Demodulation Example of Receive Data 91C025-151 2007-02-28 TMP91C025 (3) Data format The data format is fixed as follows: • Data length: 8 bits • Parity bits: None • Stop bits: 1 Any other settings don’t guarantee the normal operation. (4) SFR Figure 3.9.28 shows the control register SIRCR. Set the data SIRCR during SIO0 is inhibited (Both TXEN and RXEN of this register should be set to 0). Any changing for this register during transmission or receiving operation doesn’t guarantee the normal operation. The following example describes how to set this register: 1) SIO setting ; Set the SIO to UART mode. ↓ 2) LD (SIRCR), 07H ; Set the receive data pulse width to 16×. 3) LD (SIRCR), 37H ; TXEN, RXEN enable the transmission and receiving of SIO. ↓ 4) Start transmission and receiving for SIO0 ; The modem operates as follows: y SIO0 starts transmitting. y IR receiver starts receiving. (5) Notes 1) Baud rate generator for IrDA To generate baud-rate for IrDA, use baud-rate generator in SIO0 by setting 01 to SC0MOD0<SC1:0>. To use another source (TA0TRG, fSYS and SCLK0 input) are not allowed. 2) As the IrDA 1.0 physical layer specification, the data transfer speed and infra red pulse width is specified. Table 3.9.4 Baud Rate and Pulse Width Specifications Modulation Rate Tolerance (% of rate) Pulse Width (Min) Pulse Width (Typ.) Pulse width (Max) 2.4 kbps RZI ±0.87 1.41 μs 78.13 μs 88.55 μs 9.6 kbps RZI ±0.87 1.41 μs 19.53 μs 22.13 μs 19.2 kbps RZI ±0.87 1.41 μs 9.77 μs 11.07 μs 38.4 kbps RZI ±0.87 1.41 μs 4.88 μs 5.96 μs 57.6 kbps RZI ±0.87 1.41 μs 3.26 μs 4.34 μs 115.2 kbps RZI ±0.87 1.41 μs 1.63 μs 2.23 μs Baud Rate The infra red pulse width is specified either baud rate T x 3/16 or 1.6 μs (1.6 μs is equal to 3/16 pulse width when baud rate is 115.2 kbps). The TMP91C025 has the function selects the pulse width on the transmission either 3/16 or 1/16. But 1/16 pulse width can be selected when the baud rate is equal or less than 38.4 kbps only. When 38.4 kbps and 115.2 kbps, the output pulse width should not be set to T x 1/16. 91C025-152 2007-02-28 TMP91C025 As the same reason, + (16 − K)/16 division functions in the baud rate generator of SIO0 can not be used to generate 115.2 kbps baud-rate. Also when the 38.4 kbps and 1/16 pulse width, + (16 − K)/16 divisions function can not be used. Table 3.9.5 shows “Baud-rate and Pulse Width for (16 − K)/16 Division Function”. Table 3.9.5 Baud-rate and Pulse Width for (16 − K)/16 Division Function Pulse Width Baud-rate 115.2 kbps 57.6 kbps 38.4 kbps 19.2 kbps T × 3/16 × ○ ○ T × 1/16 − − × ○ ○ 9.6 kbps 2.4 kbps ○ ○ ○ ○ ○: Can be used (16 − K)/16 division function ×: Can not be used (16 − K)/16 division function −: Can not be set to 1/16 pulse width 91C025-153 2007-02-28 TMP91C025 SIRCR (0207H) Bit symbol 7 6 5 4 PLSEL RXSEL TXEN RXEN Read/Write After reset Function 3 2 1 0 SIRWD3 SIRWD2 SIRWD1 SIRWD0 0 0 0 R/W 0 0 0 0 0 Select Receive Transmit Receive Select receive pulse width transmit data. 0: Disable 0: Disable Set effective pulse width for equal or more than pulse 0: H pulse 1: Enable 1: Enable 2x × (value + 1) + 100ns width. 1: L pulse Can be set: 1 to 14 Can not be set: 0, 15. 0: 3/16 1: 1/16 Select receive pulse width Formula: Effective pulse width ≥ 2x × (value + 1) + 100ns x = 1/fFPH 0000 Cannot be set 0001 Equal or more than 4x + 100nS to 1110 Equal or more than 30x + 100nS 1111 Can not be set Receive operation 0 Disabled 1 Enabled Transmit operation 0 Disabled 1 Enabled Select transmit pulse width 0 3/16 1 1/16 Figure 3.9.28 IrDA Control Register 91C025-154 2007-02-28 TMP91C025 3.10 Touch Screen Interface (TSI) The TMP91C025 has an interface for 4-terminal resistor network touch-screen. This interface supports two procedures: an X/Y position measurement and touch detection. Each procedure can be performed by setting the TSI control register (TSICR0 and TSICR1) and using an internal AD converter. 3.10.1 Touch Screen Interface Module Internal/External Connection TMP91C025FG YMY X+ Touch screen MX X- PY PX Y+ External capacitors Figure 3.10.1 External Connection of TSI (A) Touch screen control AVCC PXEN AVSS SPY SPX PB6 (PY) Dec. PYEN MXEN INT2 MYEN PTST TSI7 (PX) P83 PXD (typ.200 kΩ) AD Converter (MY) AN3 P82 AN2 (MX) VREFH Internal data bus INT2 PB5/INT2 SMX SMY AVCC AVSS VREFH VREFL VREFL Figure 3.10.2 Internal Block Diagram of TSI (B) 91C025-155 2007-02-28 TMP91C025 3.10.2 Touch Screen Interface (TSI) Control Register TSI Control Register 7 TSICR0 (002BH) 5 4 3 2 1 0 Bit symbol TSI7 PTST TWIEN PYEN PXEN MYEN MXEN Read/Write R/W R R/W R/W R/W R/W R/W After reset 0 0 0 0 0 0 Function 6 0 0: Disable Detection INT2 SPY SPX SMY SMX 1: Enable condition interrupt 0 : OFF 0 : OFF 0 : OFF 0 : OFF 1 : ON 1 : ON 1 : ON 1 : ON 0: no touch control 1: touch 0: Disable 1: Enable PXD (Internal Pull-down resistor) ON/OFF setting Bit5 monitors whether the screen was touched or not. The bit is 1 while the screen has been touched. <PXEN> 0 1 <TSI7> 0 OFF OFF 1 ON OFF De-bounce Time Setting Register TSICR1 (002CH) 7 6 5 4 3 2 1 0 Bit symbol DBC7 DB1024 DB256 DB64 DB8 DB4 DB2 DB1 Read/Write R/W R/W R/W R/W R/W R/W R/W R/W After reset 0 0 0 0 0 0 0 0 1024 256 64 8 4 2 1 Function 0: Disable 1: Enable De-bounce time is set by “(N × 64 − 16)/fSYS” – formula. “N” is sum of number which is set to 1 in bit6 to bit0. 91C025-156 2007-02-28 TMP91C025 3.10.3 Touch Detection Procedure A touch detection procedure is a preparing procedure till a pen touches to the screen. When the waiting state, ON only SPY-switch and OFF other 3-switch (SMY, SPX and SMX). During this waiting state, PB5/INT2/PX pin’s level is L because of the internal resistors between X and Y directions in the touch screen are not connected and INT2 isn’t generated. If the pen touches, PB5/INT2/PX pin’s level is H because of the internal pull-down register (PXD) between X and Y direction in the touch screen are connected and INT2 will be generated. And the de-bounce circuit like following diagram is prepared to avoid some number’s interrupt generation though one time touch. This can ignore the pulse under the time which is set to TSICR1 register. TSICR0<TWIEN>, IIMC<I2EDGE>, PBFC<PB5F> TSICR1 Enables INT2 and selects the Rising edge or Falling edge of INT2 De-bounce circuit PB5/INT2 pin F/F INT2 TSICR0 <PTST> Figure 3.10.3 Block Diagram of De-bounce Circuit PB5/INT2 pin Reset counter for de-bounce time Start counter for de-bounce time De-bounce time De-bounce time De-bounce time INT2 INT2 is generated by matching counter and specified de-bounce time. After pen is detouched, INT2 can be issued again. INT2 isn’t generated by matching counter and specified de-bounce time because of it is an edge-type interrupt. Figure 3.10.4 Timing Diagram of De-bounce Circuit 91C025-157 2007-02-28 TMP91C025 3.10.4 X/Y Position Measuring Procedure In the INT2 routine, execute an X/Y position measuring procedure like below. <X position measurement> At first, ON both SPX and SMX-switches and OFF SPY, SMY-switches. By this setting, analog-voltage which shows the X position will be inputted to P83/MY/AN3 pin. The X position can be measured by converting this voltage to digital code with AD converter. <Y position measurement> Next, ON both SPY and SMY-switches and OFF SPX, SMX-switches. By this setting, analog voltage which shows the Y position will be inputted to P82/MX/AN2 pin. The Y position can be measured by converting this voltage to digital code with AD converter. The above analog voltage which is inputted to AN3 or AN2 pin can be calculated. It is a ratio between resistance value in TMP91C025FG and resistance value in touch screen shown in Figure 3.10.5. Therefore, if the pen touches a corner area on touch screen, analog-voltage will not be to 3.3 V or 0.0 V. As a notice, since each resistor has an uneven, consider about it. And it is recommended that an average code among a few times AD conversion will be adopted as a correct code. [Formula to calculate analog voltage (E1) to AN2 or AN3 pin] SPY (SPX) ON resistor: Rpy (Rpx) typ.20 Ω Touch screen resistor: AVCC = 3.3 V E1 = ((R2 + Rmy)/(Rpy + Rty + Rmy)) × AVCC [V] (Example) The case of AVCC = 3.3 V, Rpy = Rmy = 20 Ω, R1 = 400 Ω and R2 = 100 Ω E1 = ((100 + 20)/(20 + 400 + 100 + 20) × 3.3 = 0.733 V R1 Rty (Rtx) AN2 (AN3) pin A value depends on a touch screen. R2 Touch point SMY (SMX) ON resistor: Rmy (Rmx) Note 1: An X position can be calculated in the same way though above formula is for Y position. Note 2: Rty = R1 + R2. typ.20 Ω Figure 3.10.5 Calculation Analog Voltage 91C025-158 2007-02-28 TMP91C025 3.10.5 Flow Chart for TSI (1) Touch detection procedure (2) X/Y position measurement procedure Main routine: INT2 routine: TSICR0 ← 98H TSICR1 ← XXH (Voluntary) (a) Execute main routine <X position measurement> ・TSICR0 ← 85H ・AD conversion for AN3 ・Store the result (b) <Y position measurement> ・TSICR0 ← 8AH ・AD conversion for AN2 ・Store the result (c) Execute an operation By using X/Y position Yes Still touched ? TSICR0<PTST> = 1? No Return to main routine Figure 3.10.6 Flow Chart for TSI It shows the circuit for each statement (a), (b) and (c) in the next page. 91C025-159 2007-02-28 TMP91C025 (a) Main routine : Waiting for INT2 interrupt (pbfc)<PB5F>, <PB6F> = “1” : Set PB5 to int2/PX, set PB6 to PY (inte12) : Set interrupt level of INT2 (tsicr0) = 98h : Pull-down resistor on, SPY on, Interrupt set<TWIEN> ei : Enable interrupt TMP91C025 Touch screen control AVCC PXEN ON SPY SPX Decoder PYEN MXEN (PY/PB6) MYEN Y+ TSI7 X+ X− (MY/P83) PXD (typ. 200 kΩ) AD converter Y− AN3 (MX/P82) Internal data bus INT2 (PX/PB5/INT2) ON Touch screen PTST AN2 SMX SMY AVCC AVSS VREFH VREFH VREFL VREFL AVSS : AVSS : AVCC 91C025-160 2007-02-28 TMP91C025 (b) INT2 routine: X position measurement (AD conversion start) (tsicr0) = 85h : Set SMX, SPX to ON. (admod1) = 83h : Set to AN3. (admod0) = 01h : Start AD conversion. TMP91C025 Touch screen control AVCC PXEN ON SPY SPX Decoder PYEN MXEN (PY/PB6) MYEN Y+ INT2 (PX/PB5/INT2) Touch screen PTST Internal data bus TSI7 X+ X− (MY/P83) PXD (typ. 200 kΩ) AD converter Y− AN3 (MX/P82) ON SMX AN2 SMY AVCC AVSS VREFH VREFH VREFL VREFL AVSS : AVSS : AVCC 91C025-161 2007-02-28 TMP91C025 (c) INT2 routine: Y position measurement (AD conversion start) (tsicr0) = 8ah : Set SMX, SPX to ON. (admod1) = 82h : Set to AN2. (admod0) = 01h : Start AD conversion. TMP91C025 Touch screen control AVCC PXEN ON SPY SPX Decoder PYEN MXEN (PY/PB6) MYEN Y+ (PX/PB5/INT2) Touch screen PTST INT2 Internal data bus TSI7 X+ X− (MY/P83) PXD (typ. 200 kΩ) AD converter Y− AN3 (MX/P82) ON SMX SMY AN2 AVCC AVSS VREFH VREFH VREFL VREFL AVSS : AVSS : AVCC 91C025-162 2007-02-28 TMP91C025 3.11 Analog/Digital Converter The TMP91C025 incorporates a 10-bit successive approximation type analog/digital converter (AD converter) with 4-channel analog input. Figure 3.11.1 is a block diagram of the AD converter. The 4-channel analog input pins (AN0 to AN3) are shared with the input only port 4 and can thus be used as an input port. Note: When IDLE2, IDLE1 or STOP mode is selected, so as to reduce the power, with some timings the system may enter a standby mode even though the internal comparator is still enabled. Therefore be sure to check that AD converter operations are halted before a HALT instruction is executed. Internal data bus AD mode control register 1 ADMOD1 ADMOD1 <ADTRGE> <ADCH2:0> <VREFON> AD mode control register 0 ADMOD0 <EOCF><ADBF><ITM0><REPEAT><SCAN><ADS> Scan Repeat Channel Interrupt selector ADTRG Busy End Start AD converter control Analog input AN3/ ADTRG (P83) AN2 (P82) Multiplexer circuit INTAD interrupt AD conversion result Sample and hold + − register ADREG04L to ADREG37L ADREG04H to ADREG37H AN1 (P81) Comparator AN0 (P80) VREFH DA converter VREFL Figure 3.11.1 Block Diagram of AD Converter 91C025-163 2007-02-28 TMP91C025 3.11.1 Analog/Digital Converter Registers The AD converter is controlled by the two AD mode control registers: ADMOD0 and ADMOD1. The AD conversion results are stored in 8 kinds of AD conversion data upper and lower registers: ADREG04H/L, ADREG15H/L, ADREG26H/L and ADREG37H/L. Figure 3.11.2 shows the registers related to the AD converter. AD Mode Control Register 0 7 ADMOD0 Bit symbol (02B0H) Read/Write After reset Function EOCF 6 5 4 3 ADBF − − ITM0 R 0 AD conversion end flag. 2 1 0 REPEAT SCAN ADS R/W 0 AD conversion busy flag. 0 0 0 0 0 Always write Always write Interrupt Repeat mode Scan mode 0. 0. specification in specification. specification. conversion channel fixed repeat mode. 0: Every conversion 1: Every fourth conversion 0: Conversion 0: Conversion in progress stopped 1: Conversion 1: Conversion complete in progress 0: Single conversion 1: Repeat conversion mode 0 Decoder AD conversion start. 0: Don’t care 1: Start conversion Note: Always 0 when read. 0: Conversion channel fixed mode 1: Conversion channel scan mode AD conversion start 0 Don’t care 1 Start AD conversion Note: Always read as 0. AD scan mode setting 0 AD conversion channel fixed mode 1 AD conversion channel scan mode AD repeat mode setting 0 AD single conversion mode 1 AD repeat conversion mode Specify AD conversion interrupt for channel fixed repeat conversion mode. Channel fixed repeat conversion mode <SCAN> = 0, <REPEAT> = 1 0 Generates interrupt every conversion 1 Generates interrupt every fourth conversion AD conversion busy flag 0 AD conversion stopped 1 AD conversion in progress AD conversion end flag 0 Before or during AD conversion 1 AD conversion complete Figure 3.11.2 AD Converter Related Register 91C025-164 2007-02-28 TMP91C025 AD Mode Control Register 1 ADMOD1 (02B1H) 7 6 Bit symbol VREFON I2AD Read/Write R/W R/W After reset 0 0 VREF IDLE2 Function 5 4 3 2 ADTRGE ADCH2 1 0 ADCH1 ADCH0 0 0 R/W 0 0 AD Analog input channel selection. application 0: Stop external control. trigger start 1: Operate 0: Off control. 1: On 0: Disable 1: Enable Analog input channel selection. <SCAN> 0 1 Channel Channel fixed scanned <ADCH2:0> 000 AN0 AN0 001 AN1 AN0 → AN1 010 AN2 AN0 → AN1 → AN2 011 (Note) AN3 100 to 111 − AN0 → AN1 → AN2 → AN3 Use prohibition AD conversion starts control by external trigger. ( ADTRG input) 0 Disabled 1 Enabled IDLE2 control 0 Stopped 1 In operation Control of application of reference voltage to AD converter. 0 Off 1 On Before starting conversion (Before writing 1 to ADMOD0<ADS>), set the <VREFON> bit to 1. Note: As pin AN3 also functions as the ADTRG input pin, do not set <ADCH2:0> = 011 when using ADTRG with < ADTRGE> = 0. Figure 3.11.3 AD Converter Related Registers 91C025-165 2007-02-28 TMP91C025 AD Conversion Data Lower Register 0/4 7 ADREG04L (02A0H) Bit symbol 6 ADR01 5 4 3 2 1 0 ADR00 ADR0RF Read/Write R R After reset Undefined 0 Function Stores lower 2 bits of AD AD conversion result. conversion data storage flag. 1: Conversion result stored AD Conversion Data Upper Register 0/4 ADREG04H (02A1H) Bit symbol 7 6 5 4 ADR09 ADR08 ADR07 ADR06 Read/Write 3 2 1 0 ADR05 ADR04 ADR03 ADR02 1 0 R After reset Undefined Function Stores upper 8 bits AD conversion result. AD Conversion Data Lower Register 1/5 ADREG15L (02A2H) Bit symbol 7 6 ADR11 ADR10 Read/Write R After reset Undefined Function 5 4 3 2 ADR1RF R 0 Stores lower 2 bits of AD AD conversion result. conversion result flag. 1: Conversion result stored AD Conversion Data Upper Register 1/5 ADREG15H (02A3H) Bit symbol 7 6 5 4 3 2 1 0 ADR19 ADR18 ADR17 ADR16 ADR15 ADR14 ADR13 ADR12 Read/Write R After reset Undefined Function Stores upper 8 bits of AD conversion result. 9 8 7 6 5 4 5 4 3 2 1 0 Channel x conversion result ADREGxH 7 6 ADREGxL 3 2 1 0 7 6 5 4 3 2 1 0 • Bits 5 to 1 are always read as 1. • Bit0 is the AD conversion data storage flag <ADRxRF>. When the AD conversion result is stored, the flag is set to 1. When either of the registers (ADREGxH, ADREGxL) is read, the flag is cleared to 0. Figure 3.11.4 AD Converter Related Registers 91C025-166 2007-02-28 TMP91C025 AD Conversion Result Lower Register 2/6 7 ADREG26L (02A4H) Bit symbol 6 ADR21 5 4 3 2 1 ADR20 0 ADR2RF Read/Write R R After reset Undefined 0 Function Stores lower 2 bits of AD AD conversion result. conversion data storage flag. 1: Conversion result stored AD Conversion Data Upper Register 2/6 ADREG26H (02A5H) Bit symbol 7 6 5 4 ADR29 ADR28 ADR27 ADR26 Read/Write 3 2 1 0 ADR25 ADR24 ADR23 ADR22 1 0 R After reset Undefined Function Stores upper 8 bits of AD conversion result. AD Conversion Data Lower Register 3/7 ADREG37L (02A6H) Bit symbol 7 6 ADR31 ADR30 Read/Write R After reset Undefined Function 5 4 3 2 ADR3RF R 0 Stores lower 2 bits of AD AD conversion result. conversion data storage flag. 1: Conversion result stored AD Conversion Result Upper Register 3/7 ADREG37H (02A7H) Bit symbol 7 6 5 4 ADR39 ADR38 ADR37 ADR36 3 2 1 0 ADR35 ADR34 ADR33 ADR32 Read/Write R After reset Undefined Function Stores upper 8 bits of AD conversion result. 9 8 7 6 ADREGxH 7 6 5 4 5 4 3 2 1 0 Channel x conversion result 3 2 1 0 7 6 5 4 3 2 ADREGxL 1 0 • Bits 5 to1 are always read as 1. • Bit0 is the AD conversion data storage flag <ADRxRF>. When the AD conversion result is stored, the flag is set to 1. When either of the registers (ADREGxH, ADREGxL) is read, the flag is cleared to 0. Figure 3.11.5 AD Converter Related Registers 91C025-167 2007-02-28 TMP91C025 3.11.2 Description of Operation (1) Analog reference voltage A high-level analog reference voltage is applied to the VREFH pin; a low-level analog reference voltage is applied to the VREFL pin. To perform AD conversion, the reference voltage as the difference between VREFH and VREFL, is divided by 1024 using string resistance. The result of the division is then compared with the analog input voltage. To turn off the switch between VREFH and VREFL, write 0 to ADMOD1<VREFON> in AD mode control register 1. To start AD conversion in the off state, first write 1 to ADMOD1<VREFON>, wait 3 μs until the internal reference voltage stabilizes (this is not related to fc), then set ADMOD0<ADS> to 1. (2) Analog input channel selection The analog input channel selection varies depends on the operation mode of the AD converter. • In analog input channel fixed mode (ADMOD0<SCAN> = 0) Setting ADMOD1<ADCH2:0> selects one of the input pins AN0 to AN3 as the input channel. • In analog input channel scan mode (ADMOD0<SCAN> = 1) Setting ADMOD1<ADCH2:0> selects one of the 4 scan modes. Table 3.11.1 illustrates analog input channel selection in each operation mode. After reset, ADMOD0<SCAN> = 0 and ADMOD1<ADCH2:0> = 000. Thus pin AN0 is selected as the fixed input channel. Pins not used as analog input channels can be used as standard input port pins. Table 3.11.1 Analog Input Channel Selection <ADCH2:0> Channel Fixed <SCAN> = 0 000 AN0 AN0 001 AN1 AN0 → AN1 010 AN2 AN0 → AN1 → AN2 011 AN3 AN0 → AN1 → AN2 → AN3 100-111 Use prohibition 91C025-168 Channel Scan <SCAN> = 1 Use prohibition 2007-02-28 TMP91C025 (3) Starting AD conversion To start AD conversion, write 1 to ADMOD0<ADS> in AD mode control register 0, or ADMOD1<ADTRGE> in AD mode control register 1 and input falling edge on ADTRG pin. When AD conversion starts, the AD conversion busy flag ADMOD0<ADBF> will be set to 1, indicating that AD conversion is in progress. Writing 1 to ADMOD0<ADS> during AD conversion restarts conversion. At that time, to determine whether the AD conversion results have been preserved, check the value of the conversion data storage flag ADREGxL<ADRxRF>. During AD conversion, a falling edge input on the ADTRG pin will be ignored. (4) AD conversion modes and the AD conversion end interrupt The 4 AD conversion modes are: • Channel fixed single conversion mode • Channel scan single conversion mode • Channel fixed repeat conversion mode • Channel scan repeat conversion mode The ADMOD0<REPEAT> and ADMOD0<SCAN> settings in AD mode control register 0 determine the AD mode setting. Completion of AD conversion triggers an INTAD AD conversion end interrupt request. Also, ADMOD0<EOCF> will be set to 1 to indicate that AD conversion has been completed. (a) Channel fixed single conversion mode Setting ADMOD0<REPEAT> and ADMOD0<SCAN> to 00 selects channel fixed single conversion mode. In this mode, data on one specified channel is converted once only. When the conversion has been completed, the ADMOD0<EOCF> flag is set to 1, ADMOD0 <ADBF> is cleared to 0, and an INTAD interrupt request is generated. (b) Channel scan single conversion mode Setting ADMOD0<REPEAT> and ADMOD0<SCAN> to 01 selects channel scan single conversion mode. In this mode, data on the specified scan channels is converted once only. When scan conversion has been completed, ADMOD0<EOCF> is set to 1, ADMOD0<ADBF> is cleared to 0, and an INTAD interrupt request is generated. (c) Channel fixed repeat conversion mode Setting ADMOD0<REPEAT> and ADMOD0<SCAN> to 10 selects channel fixed repeat conversion mode. In this mode, data on one specified channel is converted repeatedly. When conversion has been completed, ADMOD0<EOCF> is set to 1 and ADMOD0<ADBF> is not cleared to 0 but held 1. INTAD interrupt request generation timing is determined by the setting of ADMOD0<ITM0>. Setting <ITM0> to 0 generates an interrupt request every time an AD conversion is completed. Setting <ITM0> to 1 generates an interrupt request on completion of every fourth conversion. 91C025-169 2007-02-28 TMP91C025 (d) Channel scan repeat conversion mode Setting ADMOD0<REPEAT> and ADMOD0<SCAN> to 11 selects channel scan repeat conversion mode. In this mode, data on the specified scan channels is converted repeatedly. When each scan conversion has been completed, ADMOD0<EOCF> is set to 1 and an INTAD interrupt request is generated. ADMOD0<ADBF> is not cleared to 0 but held 1. To stop conversion in a repeat conversion mode (e.g., in cases (C) and (d)), write 0 to ADMOD0<REPEAT>. After the current conversion has been completed, the repeat conversion mode terminates and ADMOD0<ADBF> is cleared to 0. Switching to a halt state (IDLE2 mode with ADMOD1<I2AD> cleared to 0, IDLE1 mode or STOP mode) immediately stops operation of the AD converter even when AD conversion is still in progress. In repeat conversion modes (e.g., in cases (C) and (d)), when the halt is released, conversion restarts from the beginning. In single conversion modes (e.g., in cases (a) and (b)), conversion does not restart when the halt is released (the converter remains stopped). Table 3.11.2 shows the relationship between the AD conversion modes and interrupt requests. Table 3.11.2 Relationship between AD Conversion Modes and Interrupt Requests Mode Interrupt Request Generation ADMOD0 <ITM0> <REPEAT> <SCAN> X 0 0 X 0 1 1 0 1 1 Channel fixed single After completion of conversion mode conversion Channel scan single After completion of scan conversion mode conversion Channel fixed repeat Every conversion 0 conversion mode Every forth conversion 1 Channel scan repeat After completion of conversion mode every scan conversion X X: Don’t care 91C025-170 2007-02-28 TMP91C025 (e) AD conversion time 84 states (4.7 μs at fFPH = 36 MHz) are required for the AD conversion for one channel. (f) Storing and reading the results of AD conversion The AD conversion data upper and lower registers (ADREG04H/L to ADREG37H/L) store the AD conversion results. (ADREG04H/L to ADREG37H/L are read-only registers.) In channel fixed repeat conversion mode, the conversion results are stored successively in registers ADREG04H/L to ADREG37H/L. In other modes, the AN0, AN1, AN2 and AN3 conversion results are stored in ADREG04H/L, ADREG15H/L, ADREG26H/L and ADREG37H/L respectively. Table 3.11.3 shows the correspondence between the analog input channels and the registers which are used to hold the results of AD conversion. Table 3.11.3 Correspondence between Analog Input Channels and AD Conversion Result Registers AD Conversion Result Register Analog Input Channel (Port A) Conversion Modes Other than at Right Channel Fixed Repeat Conversion Mode (<ITM0>=1) AN0 ADREG04H/L AN1 ADREG15H/L ADREG15H/L AN2 ADREG26H/L ADREG26H/L AN3 ADREG37H/L ADREG37H/L ADREG04H/L <ADRxRF>, bit0 of the AD conversion data lower register, is used as the AD conversion data storage flag. The storage flag indicates whether the AD conversion result register has been read or not. When a conversion result is stored in the AD conversion result register, the flag is set to 1. When either of the AD conversion result registers (ADREGxH or ADREGxL) is read, the flag is cleared to 0. Reading the AD conversion result also clears the AD conversion end flag ADMOD0<EOCF> to 0. 91C025-171 2007-02-28 TMP91C025 (Setting example) a. Convert the analog input voltage on the AN3 pin and write the result, to memory address 0800H using the AD interrupt (INTAD) processing routine. Main routine: 7 6 5 4 3 2 1 0 ADMOD1 ← X 1 0 0 − − − − ← 1 1 X X 0 0 1 1 Set pin AN3 to be the analog input channel. ADMOD0 ← X X 0 0 0 0 0 1 Start conversion in channel fixed single conversion mode. INTE0AD Enable INTAD and set it to interrupt level 4. Interrupt routine processing example: WA ← ADREG37 Read value of ADREG37L and ADREG37H into 16-bit general-purpose register WA. WA >>6 Shift contents read into WA six times to right and zero-fill upper (0800H) ← WA Write contents of WA to memory address 0800H. bits. b. This example repeatedly converts the analog input voltages on the three pins AN0, AN1 and AN2, using channel scan repeat conversion mode. ADMOD1 ← X 0 0 0 − − − − ← 1 1 X X 0 0 1 0 Set pins AN0 to AN2 to be the analog input channels. ADMOD0 ← X X 0 0 0 1 1 1 Start conversion in channel scan repeat conversion mode. INTE0AD Disable INTAD. X: Don’t care, −: No change 91C025-172 2007-02-28 TMP91C025 3.12 Watchdog Timer (Runaway detection timer) The TMP91C025 features a watchdog timer for detecting runaway. The watchdog timer (WDT) is used to return the CPU to normal state when it detects that the CPU has started to malfunction (Runaway) due to causes such as noise. When the watchdog timer detects a malfunction, it generates a non-maskable interrupt INTWD to notify the CPU. Connecting the watchdog timer output to the Reset pin internally forces a reset. (The level of external RESET pin is not changed.) 3.12.1 Configuration Figure 3.12.1 is a block diagram of he watchdog timer (WDT). WDMOD<RESCR> RESET Internal reset Reset control WDTI interrupt WDMOD <WDTP1:0> Selector 2 fSYS (fFPH/2) 15 2 17 2 19 2 21 Q Binary counter (22 stage) R S Reset Internal reset Write 4EH Write B1H WDMOD<WDTE> WDT control register WDCR Internal data bus Figure 3.12.1 Block Diagram of Watchdog Timer Note: It needs to care designing the total machine set, because Watchdog timer can’t operate completely by external noise. 91C025-173 2007-02-28 TMP91C025 3.12.2 Operation The watchdog timer generates an INTWD interrupt when the detection time set in the WDMOD<WDTP1:0> has elapsed. The watchdog timer must be cleared 0 by software before an INTWD interrupt will be generated. If the CPU malfunctions (e.g. if runaway occurs) due to causes such as noise, but does not execute the instruction used to clear the binary counter, the binary counter will overflow and an INTWD interrupt will be generated. The CPU will detect malfunction (Runaway) due to the INTWD interrupt and in this case it is possible to return to the CPU to normal operation by means of an anti-malfunction program. The watchdog timer works immediately after reset. The watchdog timer does not operate in IDLE1 or STOP mode, as the binary counter continues counting during bus release (When BUSAK goes low). When the device is in IDLE2 mode, the operation of WDT depends on the WDMOD <I2WDT> setting. Ensure that WDMOD<I2WDT> is set before the device enters IDLE2 mode. The watchdog timer consists of a 22-stage binary counter which uses the system clock (fSYS) as the input clock. The binary counter can output fSYS/215, fSYS/217, fSYS/219 and fSYS/221. WDT counter n Over flow 0 WDT interrupt Write clear code WDT clear (Software) Figure 3.12.2 Normal Mode The runaway is detected when an overflow occurs, and the watchdog timer can reset device. In this case, the reset time will be between 22 and 29 states (19.6 to 25.8 μs at fFPH = 36MHz, fOSCH = 2.25 state )is fFPH/2, where fFPH is generated by dividing the high-speed oscillator clock (fOSCH) by sixteen through the clock gear function. Overflow WDT counter n WDT interrupt Internal reset 22 to 29 states (19.6 to 25.8 μs at fOSCH = 36 MHz, fFPH = 2.25 MHz) Figure 3.12.3 Reset Mode 91C025-174 2007-02-28 TMP91C025 3.12.3 Control Registers The watchdog timer WDT is controlled by two control registers WDMOD and WDCR. (1) Watchdog timer mode register (WDMOD) a. Setting the detection time for the watchdog timer in <WDTP1:0> This 2-bit register is used for setting the watchdog timer interrupt time used when detecting runaway. After reset, this register is initialized to WDMOD<WDTP1:0> = 00. The detection times for WDT are shown in Figure 3.12.4. b. Watchdog timer enable/disable control register <WDTE> After reset, WDMOD<WDTE> is initialized to 1, enabling the watchdog timer. To disable the watchdog timer, it is necessary to set this bit to 0 and to write the disable code (B1H) to the watchdog timer control register WDCR. This makes it difficult for the watchdog timer to be disabled by runaway. However, it is possible to return the watchdog timer from the disabled state to the enabled state merely by setting <WDTE> to 1. c. Watchdog timer out reset connection <RESCR> This register is used to connect the output of the watchdog timer with the RESET terminal internally. Since WDMOD<RESCR>is initialized to 0 on reset, a reset by the watchdog timer will not be performed. (2) Watchdog timer control register (WDCR) This register is used to disable and clear the binary counter for the watchdog timer. Disable control the watchdog timer can be disabled by clearing WDMOD<WDTE> to 0 and then writing the disable code (B1H) to the WDCR register. WDCR WDMOD WDCR • ← 0 1 0 0 1 1 1 0 ← 0 − − X X − − 0 ← 1 0 1 1 0 0 0 1 Write the clear code (4EH). Clear WDMOD<WDTE> to 0. Write the disable code (B1H). Enable control Set WDMOD<WDTE> to 1. • Watchdog timer clear control To clear the binary counter and cause counting to resume, write the clear code (4EH) to the WDCR register. WDCR ← 0 1 0 0 1 1 1 0 Write the clear code (4EH). Note1: If it is used disable control, set the disable code (B1H) to WDCR after write the clear code (4EH) once. (Please refer to setting example.) Note2: If it is changed Watchdog timer setting, change setting after set to disable condition once. 91C025-175 2007-02-28 TMP91C025 7 6 Bit symbol WDTE WDTP1 Read/Write R/W After reset 1 WDMOD (0300H) Function 5 4 3 2 WDTP0 1 I2WDT 0 − RESCR R/W R/W 0 0 WDT Select detecting time. control 00: 2 /fSYS 1: Enable 01: 2 /fSYS R/W 0 0 IDLE2 0 1: Internally Always 15 0: Stop connects 17 1: Operate WDT out 19 to the 21 reset pin 10: 2 /fSYS 11: 2 /fSYS write 0. Watchdog timer out control 0 − 1 Connects WDT out to a reset IDLE2 Control 0 Stop 1 Operation at fc = 36 MHz, fs = 32.768 kHz Watchdog timer detection time SYSCR1 System Clock Selection <SYSCK> 1 (fs) 0 (fc) Watchdog Timer Detection Time SYSCR1 Gear Value <GEAR2:0> XXX WDMOD<WDTP1:0> 00 2.0 01 s 8.0 10 s 000 (fc) 1.82 ms 7.28 ms 001 (fc/2) 3.64 ms 010 (fc/4) 7.28 ms 011 (fc/8) 100 (fc/16) 32.0 11 s 128.0 s 29.13 ms 116.51 ms 14.56 ms 58.25 ms 233.02 ms 29.13 ms 116.51 ms 466.03 ms 14.56 ms 58.25 ms 233.02 ms 932.07 ms 29.13 ms 116.51 ms 466.03 ms 1864.14 ms Watchdog timer enable/disable control 0 Disabled 1 Enabled Figure 3.12.4 Watchdog Timer Mode Register 91C025-176 2007-02-28 TMP91C025 7 6 5 4 3 WDCR Bit symbol − (0301H) Read/Write W Function 1 0 − After reset Read-modify -write instructions are prohibited. 2 B1H: WDT disable code 4EH: WDT clear code Disable/clear WDT B1H Disable code 4EH Clear code Others Don’t care Figure 3.12.5 Watchdog Timer Control Register 91C025-177 2007-02-28 TMP91C025 3.13 Real Time Clock (RTC) 3.13.1 Function Description for RTC 1) Clock function (hour, minute, second) 2) Calendar function (month and day, day of the week, and leap year) 3) 24- or 12-hour (AM/PM) clock function 4) ± 30 second adjustment function (by software) 5) Alarm function (Alarm output 6) Alarm interrupt generate 3.13.2 Block Diagram 16 Hz clock Divider 32 kHz Clock: fs 1 Hz clock Alarm register Carry hold (1 s) Alarm select Comparator ALARM INTRTC ALARM Clock Address Bus Internal Data bus Adjust RD Read/Write control WR D0 to D7 Address Figure 3.13.1 Block Diagram Note 1: The Christian era year column: This product has year column toward only lower two columns. Therefore the next year in 99 works as 00 years. In system to use it, please manage upper two columns with the system side when handle year column in the christian era. Note 2: Leap year: A leap year is the year which is divisible with 4, but the year which there is exception, and is divisible with 100 is not a leap year. However, the year which is divisible with 400 is a leap year. But there is not this product for the correspondence to the above exception. Because there are only with the year which is divisible with 4 as a leap year, please cope with the system side if this function is problem. 91C025-179 2007-02-28 TMP91C025 3.13.3 Control Registers Table 3.13.1 PAGE 0 (Clock function) Registers Symbol Address Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Function Read/Write SECR 0320H 40 s 20 s 10 s 8s 4s 2s 1s Second column R/W MINR 0321H 40 min. 20 min. 10 min. 8 min. 4 min. 2 min. 1 min. Minute column R/W HOURR 0322H 1 hour Hour column R/W DAYR 0323H DATER 0324H MONTHR 0325H YEARR 0326H PAGER 0327H RESTR 0328H 20 /PM/AM Day 20 10 hours 8 hours 4 hours 2 hours W0 Day of the week column R/W Day 8 Day 4 Day 2 Day 1 Day column R/W Oct. Aug. Apr. Feb. Jan. Month column R/W Adjust -ment enable W1 Day 10 Year 80 Year 40 Year 20 Year 10 Interrupt W2 function 1Hz 16Hz Clock Alarm enable enable reset reset Year 8 Year 4 Year 2 Year 1 Clock Alarm PAGE enable enable setting Always write “0” Year column (Lower two columns) R/W PAGE register W, R/W Reset register W only Note: As for SECR, MINR, HOURR, DAYR, MONTHR, YEARR of PAGE0, current state is read when read it. Table 3.13.2 PAGE 1 (Alarm function) Registers Symbol SECR Address Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Function Read/Write 0320H MINR 0321H HOURR 0322H DAYR 0323H R/W 40 min. 20 min. 20 /PM/AM 10 min. 8 min. 4 min. 2 min. 10 hours 8 hours 4 hours 2 hours 1 min. 1 hour Minute column R/W for alarm Hour column R/W for alarm Day of the week W2 W1 W0 column for R/W alarm DATER 0324H MONTHR 0325H YEARR 0326H PAGER RESTR Note: 0327H 0328H Day 20 Day 10 Day 8 Day 4 Day 2 Day 1 24/12 Day column for R/W alarm 24-hour clock R/W mode Leap-year setting Leap-year mode Adjust Interrupt -ment enable function 1Hz 16Hz Clock Alarm enable enable reset reset Clock Alarm PAGE enable enable setting Always write “0” R/W PAGE register W, R/W Reset register W only As for MINR, HOURR, DAYR, MONTHR, YEARR of PAGE1, current state is read when read it. 91C025-180 2007-02-28 TMP91C025 3.13.4 Detailed Explanation of Control Register RTC is not initialized by reset. Therefore, all registers must be initialized at the beginning of the program. (1) Second column register (for PAGE0 only) 7 SECR Bit symbol (0320H) Read/Write 6 5 4 SE6 SE5 SE4 2 1 0 SE3 SE2 SE1 SE0 R/W After reset Function 3 Undefined "0" is read. 40 sec. 20 sec. 10 sec. 8 sec. 4 sec. 2 sec. 1 sec. column column column column column column column 0 0 0 0 0 0 0 0 sec 0 0 0 0 0 0 1 1 sec 0 0 0 0 0 1 0 2 sec 0 0 0 0 0 1 1 3 sec 0 0 0 0 1 0 0 4 sec 0 0 0 0 1 0 1 5 sec 0 0 0 0 1 1 0 6 sec 0 0 0 0 1 1 1 7 sec 0 0 0 1 0 0 0 8 sec 0 0 0 1 0 0 1 9 sec 0 0 1 0 0 0 0 10 sec 0 0 1 1 0 0 1 19 sec 0 1 0 0 0 0 0 20 sec 0 1 0 1 0 0 1 29 sec 0 1 1 0 0 0 0 30 sec : : : 0 1 1 1 0 0 1 39 sec 1 0 0 0 0 0 0 40 sec 0 0 1 49 sec 0 0 0 50 sec 0 0 1 59 sec : 1 0 0 1 1 0 1 0 : 1 0 1 1 Note: Do not set the data other than showing above. 91C025-181 2007-02-28 TMP91C025 (2) Minute column register (for PAGE0/1) 7 MINR Bit symbol (0321H) Read/Write 6 5 4 MI6 MI5 MI4 2 1 0 MI3 MI2 MI1 MI0 R/W After reset Function 3 Undefined "0" is read. 40 min, 20 min, 10 min, 8 min, 4 min, 2 min, 1 min, column column column column column column column 0 0 0 0 0 0 0 0 min. 0 0 0 0 0 0 1 1 min. 0 0 0 0 0 1 0 2 min. 0 0 0 0 0 1 1 3 min. 0 0 0 0 1 0 0 4 min. 0 0 0 0 1 0 1 5 min. 0 0 0 0 1 1 0 6 min. 0 0 0 0 1 1 1 7 min. 0 0 0 1 0 0 0 8 min. 0 0 0 1 0 0 1 9 min. 0 0 1 0 0 0 0 10 min. 0 0 1 1 0 0 1 19 min. 0 1 0 0 0 0 0 20 min. : : 0 1 0 1 0 0 1 29 min. 0 1 1 0 0 0 0 30 min. : 0 1 1 1 0 0 1 39 min. 1 0 0 0 0 0 0 40 min. 0 0 1 49 min. 0 0 0 50 min. 0 0 1 59 min. : 1 0 0 1 1 0 1 0 : 1 0 1 1 Note: Do not set the data other than showing above. 91C025-182 2007-02-28 TMP91C025 (3) Hour column register (for PAGE0/1) a. In case of 24-hour clock mode (MONTHR<MO0> = 1) of PAGE1 7 6 5 4 3 2 1 0 HO5 HO4 HO3 HO2 HO1 HO0 HOURR Bit symbol (0322H) Read/Write R/W After reset Undefined Function "0" is read. 20 hour 10 hour 8 hour 4 hour 2 hour 1 hour column column column column column column 0 0 0 0 0 0 0 o’clock 0 0 0 0 0 1 1 o’clock 0 0 0 0 1 0 2 o’clock 8 o’clock : 0 0 1 0 0 0 0 0 1 0 0 1 9 o’clock 0 1 0 0 0 0 10 o’clock : 0 1 1 0 0 1 19 o’clock 1 0 0 0 0 0 20 o’clock 0 1 1 23 o’clock 2 1 0 HO2 HO1 HO0 : 1 0 0 Note: Do not set the data other than showing above. b. In case of 12-hour clock mode (MONTHR<MO0> = 0) of PAGE1 7 HOURR Bit symbol (0322H) Read/Write 6 5 4 3 HO5 HO4 HO3 R/W After reset Function Undefined "0" is read. PM/AM 10 hour 8 hour 4 hour 2 hour 1 hour column column column column column 0 o’clock 0 0 0 0 0 0 0 0 0 0 0 1 1 o’clock 0 0 0 0 1 0 2 o’clock (AM) : 0 0 1 0 0 1 9 o’clock 0 1 0 0 0 0 10 o’clock 0 1 0 0 0 1 11 o’clock 1 0 0 0 0 0 0 o’clock 1 0 0 0 0 1 1 o’clock (PM) Note: Do not set the data other than showing above. 91C025-183 2007-02-28 TMP91C025 (4) Day of the week column register (for PAGE0/1) 7 DAYR Bit symbol (0323H) Read/Write 6 5 4 3 2 1 0 WE2 WE1 WE0 R/W After reset Undefined Function "0" is read. W2 W1 W0 0 0 0 Sunday 0 0 1 Monday 0 1 0 Tuesday 0 1 1 Wednesday 1 0 0 Thursday 1 0 1 Friday 1 1 0 Saturday Note: Do not set the data other than showing above. (5) Day column register (for PAGE0/1) 7 DATER Bit symbol (0324H) Read/Write 6 5 4 3 DA5 DA4 DA3 1 0 DA2 DA1 DA0 Day 2 Day 1 R/W After reset Function 2 Undefined "0" is read. Day 20 Day 10 Day 8 Day 4 0 0 0 0 0 0 0 0 0 0 0 0 1 1st day 0 0 0 0 1 0 2nd day 0 0 0 0 1 1 3rd day 0 0 0 1 0 0 4th day : 0 0 1 0 0 1 9th day 0 1 0 0 0 0 10th day 0 1 0 0 0 1 11th day 0 1 1 0 0 1 19th day 1 0 0 0 0 0 20th day : : 1 0 1 0 0 1 29th day 1 1 0 0 0 0 30th day 1 1 0 0 0 1 31st day Note1: Do not set the data other than showing above. th Note2: Do not set the day which is not existed. (ex: 30 Feb) 91C025-184 2007-02-28 TMP91C025 (6) Month column register (for PAGE0 only) 7 MONTHR Bit symbol (0325H) Read/Write 6 5 4 3 2 1 0 MO4 MO4 MO2 MO1 MO0 2 months 1 month R/W After reset Undefined Function "0" is read. 10 months 8 months 4 months 0 0 0 0 1 January 0 0 0 1 0 February 0 0 0 1 1 March 0 0 1 0 0 April 0 0 1 0 1 May 0 0 1 1 0 June 0 0 1 1 1 July 0 1 0 0 0 August 0 1 0 0 1 September 1 0 0 0 0 October 1 0 0 0 1 November 1 0 0 1 0 December Note: Do not set the data other than showing above. (7) Select 24-hour clock or 12-hour clock (for PAGE1 only) 7 MONTHR (0325H) 6 5 4 Bit symbol 3 2 1 0 MO0 Read/Write R/W After reset Undefined Function "0" is read. 91C025-185 0: 12-hour 1: 24-hour 2007-02-28 TMP91C025 (8) Year column register (for PAGE0 only) YEARR Bit symbol (0326H) Read/Write 7 6 5 4 YE7 YE6 YE5 YE4 2 1 0 YE3 YE2 YE1 YE0 4 Years 2 Years 1 Year R/W After reset Function 3 Undefined 80 Years 40 Years 20 Years 10 Years 8 Years 0 0 0 0 0 0 0 0 00 years 0 0 0 0 0 0 0 1 01 years 0 0 0 0 0 0 1 0 02 years 0 0 0 0 0 0 1 1 03 years 0 0 0 0 0 1 0 0 04 years 0 0 0 0 0 1 0 1 05 years 0 0 1 99 years : 1 0 0 1 1 Note: Do not set the data other than showing above. (9) Leap-year register (for PAGE1 only) 7 6 5 4 3 2 1 0 LEAP1 LEAP0 YEARR Bit symbol (0326H) Read/Write R/W After reset 不定 Function 00: Leap-year 01: One year leap year 10: Two years leap year 11: Three years leap year 91C025-186 0 0 0 1 1 0 1 1 Current year is leap year Present is next year of a leap year Present is two years after a leap year Present is three years after leap year 2007-02-28 TMP91C025 (10) PAGE register setting (for PAGE0/1) 7 6 5 4 3 ENATMR PAGER Bit symbol INTENA ADJUST (0327H) Read/Write R/W W Read-modify After reset write Function Undefined Clock ALARM 1:Adjust 1: Enable 1: Enable 0: Disable 0: Disable 0: Disable “0” is read. PAGE R/W 0:Don’t care 1: Enable 0 ENAALM 0 are prohibited 1 R/W INTRTC instruction Note: 2 Undefined Undefined “0” is read. PAGE selection Please keep the setting order below of <ENATMR>, <ENAAML> and <INTENA>. Set different times for Clock/Alarm setting and interrupt setting (Example) Clock setting/Alarm setting ld (pager), 0ch : Clock, Alarm enable ld (pager), 8ch : Interrupt enable PAGE 0 Select Page0 1 Select Page1 0 Don’t care 1 Adjust sec. counter. When set this bit is set to “1” the sec. counter becomes to “0” when the value of the sec. counter is 0 – 29.When the ADJUST value of sec. counter is 30-59, the min. counter is carried and sec. counter becomes "0". Output Adjust signal during 1 cycle of fSYS. After being adjusted once, Adjust is released automatically. (PAGE0 only) (11) Reset register setting (for PAGE0/1) RESTR Bit symbol (1328H) Read/Write Read-modify After reset write Function 7 6 5 4 DIS1Hz DIS16Hz RSTTMR RSTALM 3 2 1 0 RE3 RE2 RE1 RE0 W Undefined 1Hz 16Hz instruction 0: Enable 0: Enable are prohibited 1: Disable 1: Disable RSTALM RSTTMR 1: Clock reset 1: Alarm reset 0 Unused 1 Reset alarm register 0 Unused 1 Reset Counter Always write “0” <DIS1HZ> <DIS1HZ> PAGER<ENAALM> Source signal 1 1 1 Alarm 0 1 0 1Hz 1 0 0 16Hz Others 91C025-187 Output “0” 2007-02-28 TMP91C025 3.13.5 Operational description (1) Reading clock data 1. Using 1Hz interrupt 1Hz interrupt and the count up of internal data synchronize. Therefore, data can read correctly if reading data after 1Hz interrupt occurred. 2. Using two times reading There is a possibility of incorrect clock data reading when the internal counter carries over. To ensure correct data reading, please read twice, as follows: Start PAGER<PAGE> = “0” , Select PAGE0 Read the clock data (1st) Read the clock data (2nd) NO 1st data = 2nd data YES END Figure 3.13.2 Flowchart of clock data read 91C025-188 2007-02-28 TMP91C025 (2) Writing clock data When a carry over occurs during a write operation, the data cannot be written correctly. Please use the following method to ensure data is written correctly. 1. Using 1Hz interrupt 1Hz interrupt and the count up of internal data synchronize. Therefore, data can write correctly if writing data after 1Hz interrupt occurred. 2. Resets counter There are 15-stage counter inside the RTC, which generates a 1Hz clock from 32,768 KHz. The data is written after reset this counter. However, if clearing the counter, it is counted up only first writing at half of the setting time, first writing only. Therefore, if setting the clock counter correctly, after clearing the counter, set the 1Hz-interrupt to enable. And set the time after the first interrupt (occurs at 0.5Hz) is occurred. Start PAGER<PAGE> = “0” , Select PAGE0 RESTR<RSTTMR> = “1” reset counter RESTR<DIS1HZ> = “0” enable 1Hz interrupt First interrupts occur (After 0.5S) NO YES Sets the time END Figure 3.13.3 Flowchart of data write 91C025-189 2007-02-28 TMP91C025 3. Disabling the clock A clock carry over is prohibited when “0” is written to PAGER<ENATMR> in order to prevent malfunction caused by the Carry hold circuit. While the clock is prohibited, the Carry hold circuit holds a one sec. carry signal from a divider. When the clock becomes enabled, the carry signal is output to the clock, the time is revised and operation continues. However, the clock is delayed when clock-disabled state continues for one second or more. Note that at this time system power is down while the clock is disabled. In this case the clock is stopped and clock is delayed. During clock disabling, pay attention with system power is downed. In this case the clock is stopped and time is delayed. Start Disable the clock Read the clock data Enable the clock End Figure 3.13.4 Flowchart of Clock disable 91C025-190 2007-02-28 TMP91C025 3.13.6 Explanation of the interrupt signal and alarm signal The alarm function used by setting the PAGE1 register and outputting either of the following three signals from ALARM pin as follows by write writing “1” to PAGER<PAGE>. INTRTC outputs a 1-shot pulse when the falling edge is detected. RTC is not initializes initialized by RESET. Therefore, when the clock or alarm function is used, clear interrupt request flag in INTC (interrupt controller). (1) When the alarm register and the timer clock correspond, output “0”. (2) 1Hz Output clock of 1Hz. (3) 16Hz Output clock of 16Hz. (1) In accordance with alarm register and a clock, output “0”. When value of a clock of PAGE0 accorded with alarm register of PAGE1 with a state of PAGER<ENAALM>= “1”, output “0” to ALARM pin and occur INTRTC. Follows are ways using alarm. Initialization of alarm is done by writing in “1” at RESTR<RSTALM>, setting value of all alarm becomes don’t care. In this case, always accorded with value of a clock and request INTRTC interrupt if PAGER<ENAALM> is “1”. Setting alarm min., alarm hour, alarm day and alarm the day week are done by writing in data at each register of PAGE1. When all setting contents accorded, RTC generates INTRTC interrupt, if PAGER<INTENA><ENAALM> is “1”. However, contents (don't care state) which does not set it up is considered to always accord. The contents, which set it up once, cannot be returned to don't care state in independence. Initialization of alarm and resetting of alarm register set to “Don’t care”. The following is an example program for outputting alarm from ALARM -pin at noon (PM12:00) every day. LD (PAGER), 09H ; Alarm disable, setting PAGE1 LD (RESTR), D0H ; Alarm initialize LD (DAYR), 01H ; LD (DATAR),01H W0 1 day LD (HOURR), 12H ; Setting 12 o’clock LD (MINR), 00H ; Setting 00 min ; Set up time 31 μs (Note) LD (PAGER), 0CH ; Alarm enable ( LD (PAGER), 8CH ; Interrupt enable ) When CPU is operated by high frequency oscillation, it may take a maximum of one clock at 32 kHz (about 30μs) for the time register setting to become valid. In the above example, it is necessary to set 31μs of set up time between setting the time register and enabling the alarm register. Note: This set up time is unnecessary when you use only internal interruption. 91C025-191 2007-02-28 TMP91C025 (2) With 1Hz output clock RTC outputs clock of 1Hz to ALARM pin by setting up PAGER<ENAALM> = “0”, RESTR<DIS1HZ> = “0”, <DIS16HZ>= “1”. RTC also generates an INTRTC interrupt of the falling edge of the clock. (3) With 16Hz output clock RTC outputs clock of 16Hz to ALARM pin by setting up PAGER<ENAALM> = “0”, RESTR<DIS1HZ> = “1”, <DIS16HZ> = “0”. RTC also generates INTRTC an interrupt on the falling edge of the clock. 91C025-192 2007-02-28 TMP91C025 3.14 LCD Driver Controller (LCDC) The TMP91C025 incorporates two types liquid crystal display driving circuit for controlling LCD driver LSI. One circuit handles a RAM build-in type LCD driver that can store display data in the LCD driver in itself, and the other circuit handles a shift-register type LCD driver that must serially transfer the display data to LCD driver for each display picture. • Shift-register type LCD driver control mode (SR mode) Set the mode of operation, start address of source data save memory and LCD size to control register before setting start register. After set start register LCDC outputs bus release request to CPU and read data from source memory. After that LCDC transmits data of volume of LCD size to external LCD driver through data bus. At this time, control signals (D1BSCP etc.) connected LCD driver output specified waveform synchronizes with data transmission. After finish data transmission, LCDC cancels the bus release request and CPU will restart. • RAM built-in type LCD driver control mode (RAM mode) Data transmission to LCD driver is executed by move instruction of CPU. After setting mode of operation to control register, when move instruction of CPU is executed LCDC outputs chip select signal to LCD driver connected to the outside from control pin. (D1BSCP etc.) Therefore control of data transmission numbers corresponding to LCD size is controlled by instruction of CPU. • Special mode It is assigned <TA3LCDE> at bit6 and <TA3MLDE> at bit4, of EMCCR0 register (00E3hex). These bits are used when you want to operate LCDD and MELODY circuit without low frequency clock (XT1, XT2). After reset these two bits are set to “0” and low clock is supplied each LCDD and MELODY circuit. If you write these bits to 1, TA3OUT (Generate by timer 3) is supplied each LCDD and MELODY circuit. In this case, you should set 32 kHz timer 3 frequency. For detail, look AC specification characteristics. This section is constituted as follows. 3.14.1 Feature of LCDC of Each Mode 3.14.2 Block Diagram 3.14.3 Control Registers 3.14.4 Shift-register Type LCD Driver Control Mode (SR type) 3.14.4.1 Settlement of Frame Frequency Function 3.14.4.2 Timer Out LCDCK 3.14.4.3 Transfer Time by Data Bus Width 3.14.4.4 LCDC Operation in HALT Mode 3.14.5 RAM Built-in Type LCD Driver Control Mode (RAM Type) 91C025-193 2007-02-28 TMP91C025 3.14.1 Feature of LCDC of Each Mode Each feature and operation of pin is as follows. Table 3.14.1 Feature of LCDC of Each Mode Shift-register Type LCD Driver Control Mode Common (row): 64, 68, 80, 100, 120, The number of picture elements can be handled RAM Built-in Type LCD Driver Control Mode 128, 144, 160, 200, 240 Segment (column): 32, 64, 80, 120, 128, There is not a limitation 160, 240, 320, 360 Receiver data bus width 8 bits, 16 bits selectable Transfer data bus width 8 bits, 4 bits selectable Transfer rate 250 ns/1 byte at Byte mode (at fFPH = 16 MHz) 375 ns/1 byte at Nibble mode Data Bus: (D7 to D0) Write Strobe: ( WR ) Data bus: Connect with DI pin of column driver. Upper 7 pins do not use in byte mode and upper 4 pins do not use in nibble mode. 8 bit, 16 bit, selectable (depend on CPU command) 8-bit fixed Equal to memory cycle Data bus: Connect with DB pin of column/row driver. Write strobe: Connect with /WR pin of not used column/row driver. Address 0: Connect with D/I pin of Address Bus: (A0) column driver. When A0 = 1 data bus value means not used display data, when A0 = 0 data bus means instruction data. Shift Clock Shift clock pulse: Connect with SCP pin of External Pulse: column driver. LCD driver latches data bus pins (D1BSCP) value by falling edge of this pin. Chip enable for column driver 1: Connect with CE pin of column driver 1. Latch pulse output: Connect with LP/EIO1 pin Latch Pulse: of column/row driver. Display data is latched in (D2BLP) output buffer in LCD driver by rising edge of Chip enable for column driver 2: Connect with CE pin of column driver 2. this pin. Frame: LCD frame output: Connect with FR pin of (D3BFR) column/row driver. Cascade Pulse: (DLEBCD) Display Off: ( DOFF ) Cascade pulse output: Connect with DIO1 pin of row driver. This pin outputs 1 shot pulse by every D3BFR pin changes. Chip enable for column driver 3: Connect with/ CE pin of column driver 3. Chip enable for row driver: Connect with LE pin of row driver. Display off output: Connect with /DSPOF terminal of column/row driver. L means display off and H means display on. 91C025-194 2007-02-28 TMP91C025 3.14.2 Block Diagram Selector CPU address bus: A0 to A23 A0 to A23 MMU LCDSAH/L Lower address Register (10 bits) Increment (14 bits) Clear Internal data bus Latch, shifter D0 to D7 SCPEN & RD RD, <BUS1:0> SCP generate System clock CPU BUSAK Output D1BSCP SEG Counter (9 bits) SR,<BUS1:0> SEGEND SEG register Comparator Internal Data bus S <BUS1:0> SCPEN <START> To interrupt circuit (Rising edge) 32 kHz clock Timer out TA3OUT BUSRQ R Q Shift register Inc. (14 bits) EMCCR0 <TA3LCDE> COM register LP generate LP modify D2BLP <BUS1:0> Internal data bus FP register BCD generate DLEBCD COM counter FR generate D3BFR Figure 3.14.1 LCDC Block Diagram 91C025-195 2007-02-28 TMP91C025 3.14.3 Control Registers LCDSAL Register LCDSAL (0360H) 7 6 5 4 Bit symbol SAL15 SAL14 SAL13 SAL12 Read/Write R/W R/W R/W R/W After reset 0 0 0 0 Function 3 2 1 0 − − MODE R/W R/W R/W 0 0 0 SR mode Always Always Mode Display memory address. (Low: A15 to A12) write 0. write 0. select 0: RAM 1: SR LCDSAH Register LCDSAH (0361H) 7 6 5 4 3 2 1 0 Bit symbol SAL23 SAL22 SAL21 SAL20 SAL19 SAL18 SAL17 SAL16 Read/Write R/W R/W R/W R/W R/W R/W R/W R/W After reset 0 0 0 0 0 0 0 0 Function SR mode Display memory address. (High: A23 to A16) LCDSIZE Register LCDSIZE (0362H) 7 6 5 4 3 2 1 0 Bit symbol COM3 COM2 COM1 COM0 SEG3 SEG2 SEG1 SEG0 Read/Write R/W R/W R/W R/W R/W R/W R/W R/W After reset 0 0 0 0 0 0 0 0 Function LCD common number. (SR mode) LCD segment number. (SR mode) 0000: 64 0101: 128 0000: 32 0101: 160 0001: 68 0110: 144 0001: 64 0110: 240 0010: 80 0111: 160 0010: 80 0111: 320 0011: 100 1000: 200 0011: 120 1000: 360 0100: 120 1001: 240 Other: Reserved 0100: 128 Other: Reserved LCDCTL Register LCDCTL (0363H) 7 6 5 4 3 2 1 0 Bit symbol LCDON − − BUS1 BUS0 MMULCD FP8 START Read/Write R/W R/W R/W R/W R/W R/W R/W R/W After reset 0 0 0 0 0 0 0 0 Function DOFF Always Always Data bus width. Type Setting bit8 Start (SR,RAM write 0. write 0. (SR mode) selection for fFP. 00: 8 bits (Byte mode) LCDD (build 01: 4 bits (Nibble mode) in RAM). 0: Off 10: Reserved 0: Sequential 0: Stop 1: On 11: Reserved 1: Random 1: Start mode) control. (SR mode) Note 1: There is a limitation about to set LCDSAH and LCDSAL start address. It prohibit to set A13 carry to A14 by all 1-frame data transmitting. e.g. In case 240 (Row) × 360 (Column): 2a30 bytes Start address of LCDC: SAL15 to SAL12 = 0000 or 0001; Note 2: Initial incrementer’s address (LSB 14 bits) for LCDC DMA is 0000 (hex). 91C025-196 2007-02-28 TMP91C025 LCDFFP Register LCDFFP (0364H) Bit symbol 7 6 5 4 FP7 FP6 FP5 FP4 Read/Write After reset 3 2 1 0 FP3 FP2 FP1 FP0 0 0 0 0 2 1 0 R/W 0 0 0 Function 0 Setting bit7 to bit0 for fFP. LCDCTR2 Register 7 LCDCTL2 (0366H) 6 5 4 3 Bit symbol − − − RAMBUS AC1 AC0 Read/Write R/W R/W R/W R/W R/W R/W 0 0 0 0 0 After reset Function 0 Always write to “111”. 0: Byte 00: Type A 1: Word 01: Type B 10: Type C 11: Reserved Note: Please write bit7:5 to “111”, even if you use <RAMBUS>, <AC1> and <AC0> as initial setting. LCDC1L/LCDC1H/LCDC2L/LCDC2H/LCDC3L/LCDC3H/LCDR1L/LCDR1H Register Bit symbol 7 6 D7 D6 5 4 3 2 1 0 D5 D4 D3 D2 D1 D0 Read/Write Depend on the specification of external LCD driver. After reset Depend on the specification of external LCD driver. Function Depend on the specification of external LCD driver. These registers do not exist on TMP91C025. These are image for instruction registers and display registers of external RAM built-in sequential access type (Note) LCD driver. Address as Table 3.14.2 is assigned to these registers, and the following chip enable pin becomes active when accesses corresponding address. And, the area of these address is external area, so RD , WR terminal becomes active by external access. Table 3.14.3 shows the address map in the case of controlling RAM built-in random access type (Note) LCD driver. The explanation part of MMU circuit also explains this. This setup is performed by LCDCTL<MMULCD>. 91C025-197 2007-02-28 TMP91C025 Table 3.14.2 Memory Mapping for Direct Addressed Built-in RAM Type Register Purpose Address Sequential Access Type LCDC1L 0FE0H RAM built-in type Instruction LCDC1H 0FE1H column driver 1 Display data LCDC2L 0FE2H RAM built-in type Instruction LCDC2H 0FE3H column driver 2 Display data LCDC3L 0FE4H RAM built-in type Instruction LCDC3H 0FE5H column driver 3 Display data LCDR1L 0FE6H RAM built-in type row Instruction LCDR1H 0FE7H driver Display data Chip Enable A0 Terminal Terminal D1BSCP 0 D2BLP 0 D3BFR 0 DLEBCD 0 1 1 1 1 Table 3.14.3 Memory Mapping for Built-in RAM Random Access Type Address Purpose Random Access Type 3C0000H to RAM built-in type driver 1 Chip Enable Terminal D1BSCP 3CFFFFH 3D0000H to RAM built-in type driver 2 D2BLP 3DFFFFH 3E0000H to RAM built-in type driver 3 D3BFR 3EFFFFH 3F0000H to RAM built-in type driver 4 DLEBCD 3FFFFFH Note: We call built-in RAM sequential access type LCD driver that use register to access to display-ram without address. (e.g., T6B65A,T6C84 etc: mar/2000) We call built-in RAM random access type LCD driver that is same method to access to SRAM. (e.g., T6C23, T6K01 etc: mar/2000) 91C025-198 2007-02-28 TMP91C025 3.14.4 Shift-register Type LCD Driver Control Mode (SR type) Set the mode of operation, start address of source data save memory and LCD size to control registers before setting start register. After set start register LCDC outputs bus release request to CPU and read data from source memory. After that LCDC transmits data of volume of LCD size to external LCD driver through data bus. At this time, control signals (D1BSCP etc.) connected LCD driver output specified waveform synchronizes with data transmission. After finish data transmission, LCDC cancels the bus release request and CPU will re-start. LCDC timing figure in the case of 240 seg × 120 com and BYTE mode is shown in Figure 3.14.2, Figure 3.14.3. The table of tLP (D2BLP pin cycle) by the number of segments and the common number and CPU stop time/stop ratio are shown in Table 3.14.4. And, fFP (Frame frequency) by the common number is shown in Table 3.14.5. Moreover, the example of a 240 seg × 120 com LCD driver connection circuit is shown in Figure 3.14.5. 91C025-199 2007-02-28 TMP91C025 3.14.4.1 Settlement of Frame Frequency Function TMP91C025 defines so-called frame period (Refresh interval for LCD panel) by the value set in fFP [8:0]. DLEBCD pin outputs pulse every frame period. DLEBFR pin usually outputs the signal inverts polarity every frame period. Basic frame period: DLEBCD signal, is made according to the resister fFP [8:0] setting mentioned before. However this fFP [8:0] setting is generally equal to common number, frame period can be corrected by increasing fFP [8:0] with ease. The equation can calculate frame period. Frame period = LCDCK/ (D x fFP) [Hz] D: Constant for each common (Table 3.14.5) fFP: Setting of fFP [8:0] resister LCDCK: Source clock of LCD (Low clock is usually selected ) Please select the value of fFP [8:0] as the frame period you want to set in the Table 3.14.5. Note: Please make the value set to fFP [8:0] into the following range. COM (Common number) ≤ FR ≤ 320 Example: In the case where frame period is set to 72.10 Hz by 240 coms. fFP = 240 (COM) + 63 = 303 = 12FH (by Table 3.14.5) Therefore, LCDCTL<FP8> = 1 and LCDFFP<FP7:0> = 2FH are setup. LCDCTL Register 7 LCDCTL (0363H) 6 5 4 3 2 1 0 Bit symbol LCDON − − BUS1 BUS0 MMULCD FP8 START Read/Write R/W R/W R/W R/W R/W R/W R/W R/W After reset 0 0 0 0 0 0 0 0 Function DOFF Always Always Data bus width. TYPE (SR, RAM write 0. write 0. (SR mode) selection 00: 8 bits (Byte mode) LCDD (Build mode) Setting bit Start 8 for fFP. control. (SR mode) 01: 4 bits (Nibble mode) in RAM). 0: Off 10: Reserve 0:Sequential 0: Stop 1: On 11: Reserve 1:Random 1: Start LCDFFP Register LCDFFP (0364H) Bit symbol 7 6 5 4 FP7 FP6 FP5 FP4 Read/Write After reset Function 3 2 1 0 FP3 FP2 FP1 FP0 0 0 0 0 R/W 0 0 0 0 Setting bit7 to bit0 for fFP. 91C025-200 2007-02-28 TMP91C025 3.14.4.2 Timer Out LCDCK LCD source clock (LCDCK) can select low frequency (XT1, XT2: 32.768 [kHz]) or timer out (TA3OUT) outputs from internal TMRA23. Example: Here indicates the method that frame period is set 70 [Hz] by selecting TA3OUT for source clock of LCD (fc = 6 [MHz], 120 COM). The next equation calculates frame period. tLP: The period of D2BLP Frame period = 1/(tLP × fFP) [Hz] Source clock for LCDC defines as XT [Hz] and then this tLP represents D: The value is 3.5 at 120 COM tLP = D/XT Therefore if you set the frame period at 70 [Hz] under 120 COM, XT = 120 × 3.5 × 70 = 29400 [Hz] XT should be above value. In order to make XT = 29400 [Hz] under fc = 6 [MHz] with φT1 of timer3, 1/XT = T3 × 2 × 8/fc [s] T3: the value of timer resister (TA3REG) in short, XT = fc/(T3 × 2 × 8) [Hz] However T3 = (TA3REG) is 12.75 after calculate, it’s impossible to set the value under a decimal point. So if (TA3REG) is set 0CH, XT = 31250 [Hz]. And because of D = 3.5, Frame period = 31250/(120 ×3.5) = 74.404 [Hz] Further if fFP is 127 (COM + 7) with correction, Frame period = 31250/(127 × 3.5) = 70.30 ... [Hz] Reference: To maintain quality for display, please refer to following value for each gray scale. (You have to use settlement of frame frequency function, frame invert adjustment function and timer out LCDCK.) Monochrome: Frame period = 70 [Hz] 91C025-201 2007-02-28 TMP91C025 fFP = 78.02 Hz (at <FP8:0> = 120) D3BFR 1 picture (120 com) display time DLEBCD 1 2 3 1 120 2 3 120 1 2 D2BLP D1BSCP D7 to D0 Data transmission (240 seg = 30 byte) of volume of 1com Figure 3.14.2 Timing Diagram for SR Mode D3BFR tLP: LP period DLEBCD tSTOP: Stop time tOPR: CPU operating time D2BLP tLPH = 0.5XT BUSRQ (Internal) tSCP = 2 states D1BSCP D7 to D0 N N+1 N+28 N+29 Note: XT = 1/32768 [s] 1 state = 1/fSYS [s] Figure 3.14.3 Timing Diagram for SR Mode (Detail) 91C025-202 2007-02-28 TMP91C025 Table 3.14.4 Performance Listing for Each Segment and Common Number 64 com 68 com 80 com 100 com 120 com 128 com 144 com 160 com 200 com 240 com Unit 6.5 6 5 4 3.5 3 2.5 2.5 2 1.5 --- 198.4 183.1 152.6 122.1 106.8 91.6 76.3 76.3 61.0 45.8 μs XT number of counts for tLP making: D tLP 32 seg 64 seg 80 seg 120 seg 128 seg 160 seg 240 seg 320 seg 360 seg tSTOP CPU stop rate 0.2 0.2 0.3 0.4 0.4 tSTOP CPU stop rate 0.4 0.5 0.6 0.7 0.8 0.6 0.6 0.7 0.9 0.8 0.9 1.1 1.4 0.9 1.0 1.2 1.5 % 1.2 1.5 1.9 % μs 1.5 1.5 1.8 2.4 % μs 1.8 1.7 2.2 2.2 2.7 3.6 % μs 1.9 2.3 2.3 2.9 3.9 % μs 2.2 1.1 1.2 1.5 1.8 2.1 2.4 2.9 2.9 3.6 4.9 % μs 3.3 1.7 1.8 2.2 2.7 3.1 3.6 4.4 4.4 5.5 7.3 % μs 4.4 2.2 2.4 2.9 3.6 4.2 tSTOP CPU stop rate 1.0 1.8 tSTOP CPU stop rate 1.2 1.2 1.6 tSTOP CPU stop rate 0.7 1.7 tSTOP CPU stop rate 0.6 μs 1.0 1.0 tSTOP CPU stop rate 0.6 1.1 tSTOP CPU stop rate 0.5 0.9 tSTOP CPU stop rate μs 0.4 4.9 5.8 5.8 7.3 9.7 % μs 5.0 2.5 2.7 3.3 4.1 4.7 5.5 6.6 6.6 8.2 10.9 % Note 1: The above value is at fFPH = 36 [MHz]. Note 2: CPU stop time tSTOP: A value is value when reading a transmitting memory by 0 waits in the BYTE write/BYTE read mode. The value becomes x1.5 in NIBBLE write mode. Details, see the “state/cycle” is each type timing table. The time required to the transmission start accompanied by bus opening demand is not included in the above-mentioned numerical value. Note 3: The following equation can calculate tLP listed below. tLP = D/32768 [s] (e.g.) If the row is 240 and D = 1.5 by the above table tLP = 1.5/32768 = 45.8 [μs] D3BFR pin DLEBCD pin 1 2 3 120 1 2 3 120 1 2 D2BLP pin D1BSCP pin D7 to D0 pin tLP BUS occupation time of CPU tSTOP * BUS occupation rate of CPU = tSTOP/tLP Figure 3.14.4 Stop Time and BUS Occupation Rate of CPU 91C025-203 2007-02-28 TMP91C025 Table 3.14.5 fFP Table for Each Common Number (1/2) D 6.5 6 5 4 3.5 3 2.5 2.5 2 1.5 COM 64 68 80 100 120 128 144 160 200 240 COM+0 78.77 80.31 81.92 81.92 78.02 85.33 91.02 81.92 81.92 91.02 COM+1 77.56 79.15 80.91 81.11 77.37 84.67 90.39 81.41 81.51 90.64 COM 76.38 78.02 79.92 80.31 76.74 84.02 89.78 80.91 81.11 90.27 COM 75.24 76.92 78.96 79.53 76.12 83.38 89.16 80.41 80.71 89.90 COM 74.14 75.85 78.02 78.77 75.50 82.75 88.56 79.92 80.31 89.53 COM 73.06 74.81 77.10 78.02 74.90 82.13 87.97 79.44 79.92 89.16 COM 72.02 73.80 76.20 77.28 74.30 81.51 87.38 78.96 79.53 88.80 COM 71.00 72.82 75.33 76.56 73.72 80.91 86.80 78.49 79.15 88.44 COM 70.02 71.86 74.47 75.85 73.14 80.31 86.23 78.02 78.77 88.09 COM 69.06 70.93 73.64 75.16 72.58 79.73 85.67 77.56 78.39 87.73 COM + 10 68.12 70.02 72.82 74.47 72.02 79.15 85.11 77.10 78.02 87.38 COM 67.22 69.13 72.02 73.80 71.47 78.58 84.56 76.65 77.65 87.03 COM 66.33 68.27 71.23 73.14 70.93 78.02 84.02 76.20 77.28 86.69 COM 65.47 67.42 70.47 72.50 70.39 77.47 83.49 75.76 76.92 86.35 COM 64.63 66.60 69.72 71.86 69.87 76.92 82.96 75.33 76.56 86.01 COM 63.81 65.80 68.99 71.23 69.35 76.38 82.44 74.90 76.20 85.67 COM 63.02 65.02 68.27 70.62 68.84 75.85 81.92 74.47 75.85 85.33 COM 62.24 64.25 67.56 70.02 68.34 75.33 81.41 74.05 75.50 85.00 COM 61.48 63.50 66.87 69.42 67.84 74.81 80.91 73.64 75.16 84.67 COM 60.74 62.77 66.20 68.84 67.35 74.30 80.41 73.22 74.81 84.34 COM + 20 60.01 62.06 65.54 68.27 66.87 73.80 79.92 72.82 74.47 84.02 COM 59.31 61.36 64.89 67.70 66.40 73.31 79.44 72.42 74.14 83.70 COM 58.62 60.68 64.25 67.15 65.93 72.82 78.96 72.02 73.80 83.38 COM 57.95 60.01 63.63 66.60 65.47 72.34 78.49 71.62 73.47 83.06 COM 57.29 59.36 63.02 66.06 65.02 71.86 78.02 71.23 73.14 82.75 COM 56.64 58.72 62.42 65.54 64.57 71.39 77.56 70.85 72.82 82.44 COM 56.01 58.10 61.83 65.02 64.13 70.93 77.10 70.47 72.50 82.13 COM 55.40 57.49 61.25 64.50 63.69 70.47 76.65 70.09 72.18 81.82 COM 54.80 56.89 60.68 64.00 63.26 70.02 76.20 69.72 71.86 81.51 COM 54.21 56.30 60.12 63.50 62.83 69.57 75.76 69.35 71.55 81.21 COM + 30 53.63 55.73 59.58 63.02 62.42 69.13 75.33 68.99 71.23 80.91 COM 53.07 55.16 59.04 62.53 62.00 68.70 74.90 68.62 70.93 80.61 COM 52.51 54.61 58.51 62.06 61.59 68.27 74.47 68.27 70.62 80.31 COM 51.97 54.07 58.00 61.59 61.19 67.84 74.05 67.91 70.32 80.02 COM 51.44 53.54 57.49 61.13 60.79 67.42 73.64 67.56 70.02 79.73 COM 50.92 53.02 56.99 60.68 60.40 67.01 73.22 67.22 69.72 79.44 COM 50.41 52.51 56.50 60.24 60.01 66.60 72.82 66.87 69.42 79.15 COM 49.91 52.01 56.01 59.80 59.63 66.20 72.42 66.53 69.13 78.86 COM 49.42 51.52 55.54 59.36 59.25 65.80 72.02 66.20 68.84 78.58 COM + 39 48.94 51.04 55.07 58.94 58.88 65.41 71.62 65.87 68.55 78.30 Note 1: fFP can be calculated in the following formulas. fFP = 32768/(D × FP) [Hz] Example: In case of 120 com, <FP8:0> = 131, fFP = 32768/(3.5 × 131) = 71.5 [Hz] Note 2: The above is at fs = 32 [kHz]. 91C025-204 2007-02-28 TMP91C025 Table 3.14.6 fFP Table for Each Common Number (2/2) D 6.5 6 5 4 3.5 3 2.5 2.5 2 1.5 COM 64 68 80 100 120 128 144 160 200 240 COM + 40 48.47 50.57 54.61 58.51 58.51 65.02 71.23 65.54 68.27 78.02 COM 48.01 50.10 54.16 58.10 58.15 64.63 70.85 65.21 67.98 77.74 COM 47.56 49.65 53.72 57.69 57.79 64.25 70.47 64.89 67.70 77.47 COM 47.11 49.20 53.28 57.29 57.44 63.88 70.09 64.57 67.42 77.19 COM 46.68 48.76 52.85 56.89 57.09 63.50 69.72 64.25 67.15 76.92 COM 46.25 48.33 52.43 56.50 56.74 63.14 69.35 63.94 66.87 76.65 COM 45.83 47.91 52.01 56.11 56.40 62.77 68.99 63.63 66.60 76.38 COM 45.42 47.49 51.60 55.73 56.06 62.42 68.62 63.32 66.33 76.12 COM 45.01 47.08 51.20 55.35 55.73 62.06 68.27 63.02 66.06 75.85 COM 44.61 46.68 50.80 54.98 55.40 61.71 67.91 62.71 65.80 75.59 COM + 50 44.22 46.28 50.41 54.61 55.07 61.36 67.56 62.42 65.54 75.33 COM 43.84 45.89 50.03 54.25 54.75 61.02 67.22 62.12 65.27 75.07 COM 43.46 45.51 49.65 53.89 54.43 60.68 66.87 61.83 65.02 74.81 COM 43.09 45.13 49.28 53.54 54.12 60.35 66.53 61.54 64.76 74.56 COM 42.72 44.77 48.91 53.19 53.81 60.01 66.20 61.25 64.50 74.30 COM 42.36 44.40 48.55 52.85 53.50 59.69 65.87 60.96 64.25 74.05 COM 42.01 44.04 48.19 52.51 53.19 59.36 65.54 60.68 64.00 73.80 COM 41.66 43.69 47.84 52.18 52.89 59.04 65.21 60.40 63.75 73.55 COM 41.32 43.34 47.49 51.85 52.60 58.72 64.89 60.12 63.50 73.31 COM 40.99 43.00 47.15 51.52 52.30 58.41 64.57 59.85 63.26 73.06 COM + 60 40.66 42.67 46.81 51.20 52.01 58.10 64.25 59.58 63.02 72.82 COM 40.33 42.34 46.48 50.88 51.73 57.79 63.94 59.31 62.77 72.58 COM 40.01 42.01 46.15 50.57 51.44 57.49 63.63 59.04 62.53 72.34 COM 39.69 41.69 45.83 50.26 51.16 57.19 63.32 58.78 62.30 72.10 COM 39.38 41.37 45.51 49.95 50.88 56.89 63.02 58.51 62.06 71.86 COM 39.08 41.06 45.20 49.65 50.61 56.59 62.71 58.25 61.83 71.62 COM 38.78 40.76 44.89 49.35 50.33 56.30 62.42 58.00 61.59 71.39 COM 38.48 40.45 44.58 49.05 50.07 56.01 62.12 57.74 61.36 71.16 COM 38.19 40.16 44.28 48.76 49.80 55.73 61.83 57.49 61.13 70.93 COM 37.90 39.86 43.98 48.47 49.54 55.45 61.54 57.24 60.91 70.70 COM + 70 37.62 39.57 43.69 48.19 49.28 55.16 61.25 56.99 60.68 70.47 COM 37.34 39.29 43.40 47.91 49.02 54.89 60.96 56.74 60.46 70.24 COM 37.07 39.01 43.12 47.63 48.76 54.61 60.68 56.50 60.24 70.02 COM 36.80 38.73 42.83 47.35 48.51 54.34 60.40 56.25 60.01 69.79 COM 36.53 38.46 42.56 47.08 48.26 54.07 60.12 56.01 59.80 69.57 COM 36.27 38.19 42.28 46.81 48.01 53.81 59.85 55.78 59.58 69.35 COM 36.01 37.93 42.01 46.55 47.77 53.54 59.58 55.54 59.36 69.13 COM 35.75 37.66 41.74 46.28 47.52 53.28 59.31 55.30 59.15 68.91 COM 35.50 37.41 41.48 46.02 47.28 53.02 59.04 55.07 58.94 68.70 COM 35.25 37.15 41.22 45.77 47.05 52.77 58.78 54.84 58.72 68.48 COM + 80 35.01 36.90 40.96 45.51 46.81 52.51 58.51 54.61 58.51 68.27 91C025-205 2007-02-28 TMP91C025 T6C13B (240-row driver selection) VDD VSS DIR TEST Di7-Di0 DUAL SCP S/C Open O240 SCP LP FR DSPOF DI7 to DI0 EIO1 EIO2 VCCLR ,V0LR,V2LR, VSSLR,V3LR ,V5LR DLEBCD D1BSCP D2BLP D3BFR DOFF D7 to D0 VSS TEST DUAL DSPOF COM240 FR LP EIO2 EIO1 O240 SEG240 240 COM × 240 SEG LCD VCCL/R, V0L/R, V1L/R, V4L/R, V5L/R Open COM001 SEG001 VSS O001 O001 VDD DIR VDD S/C TMP91C025 VSS VDD VSS T6C13B (240-column driver selection) Note: Other circuit is necessary for LCD drive power supply for LCD driver display. Figure 3.14.5 Interface Example for Shift Register Type LCD Driver (Setting example) In case of use 240 SEG × 240 COM, 8bit bus width LCD driver. In case of store 7200 bytes transfer data to LCD driver in built-in RAM (1000H to 2c1FH). LD LD LD LD LD (PDCR), 1FH (LCDSAL), 11H (LCDSAH), 00H (LCDSIZE), 96H (LCDFFP), 308 ; Setting control terminal ; Select SR mode ; Source start address = 1000H ; 240SEG × 240COM ; fFP = 70.93 Hz LD (LCDCTL), 81H ; BYTE mode fFP = 70.93 Hz, ; LCDON, Transfer start D0 D1 D2 D3 D4 D5 D6 D7 1 1 2 2 3 4 5 6 1000H 101eH 7 8 Segment 9 10 11 … 1001H 239 240 101dH 3 119 2c1fH 240 Common Relation Display Panel and Display Memory (In case of above setting) 91C025-206 2007-02-28 TMP91C025 3.14.4.3 Transfer Time by Data Bus Width Data bus width of LCD driver can be selected either of BYTE/NIBBLE by LCDCTL<BUS1:0>. And that cycle is selectable, type A, type B and type C. Each type has each timing, for detail, look for timing table. Readout bus width of source is selectable 8 bits or 16 bits, without concern to bus width of LCD driver. WAIT number of the read cycle is 0 waits in case of built-in RAM and works by setting value of CS/WAIT controller in case of external RAM 3.14.4.4 LCDC Operation in HALT Mode When LCDC is working, CPU executes HALT instruction and changes in HALT mode, LCDC continue operation if CPU in IDLE2 mode. But LCDC stops in case of IDLE1, STOP mode. Note: It need to set the same bus width setting of display RAM, CS/WAIT controller and LCDCTL2<RAMBUS> fFPH Address n+1 n n+2 n+3 n+4 RD D7 to D0 12H 12H 34H 34H 56H 56H 78H 78H 9aH D1SCP 2states/1byte Byte mode n+1 n Address n+2 RD D7 to D0 12H x2H x1H 34H x4H x3H 56H x6H x5H D1SCP 3 states/1 byte Nibble mode Figure 3.14.6 Bus Width Timing (No-wait external RAM) 91C025-207 2007-02-28 TMP91C025 Table 3.14.7 Each Type Timing Table Read Bus Width Byte Type A B C Word A B C Write Mode Setup Time Hold Time D1BSCP Pulse Width D1BSCP Cycle State/ Cycle 4.0x Byte 0.5x 1.0x 1.5x 4.0x Nibble 0.5x 1.0x 1.0x 2.0x 6.0x Byte 1.0x 0.5x 2.0x 4.0x 4.0x Nibble 1.0x 0.5x 1.0x 2.0x 6.0x Byte 1.0x 2.5x 1.5x 6.0x 6.0x Nibble 1.0x 1.5x 2.5x 5.0x 10.0x Byte 0.5x 1.0x 1.0x 2.0x 6.0x Nibble 0.5x 1.0x 1.0x 2.0x 10.0x Byte 1.0x 0.5x 1.0x 2.0x 6.0x Nibble 1.0x 0.5x 1.0x 2.0x 10.0x Byte 1.0x 1.5x 1.5x 3.0x 8.0x Nibble 1.0x 1.5x 2.5x 5.0x 20.0x Note: Number in above Table shows fFPH clock cycle, for example, in case of 27 MHz frequency Xin-Xout, 1.00 equal 37 ns. Above table don’t show to guarantee the time, it shows outline. For details, look for AC timing at after page. A23 to A0 pin N+1 N RD pin State/cycle D7 to D0 pin Data setup time Data hold time D1BSCP pulse width D1SCP cycle D1BSCP pin Figure 3.14.7 Definition of Specification 91C025-208 2007-02-28 TMP91C025 Type Read Trance RAM A 8 bits 8 bits SRAM fFPH Address (n + 1) (n) (n + 2) (n + 3) RD WR 12H D7 to D0 12H 34H 34H 56H 56H 78H D1SCP Type Read Trance RAM B 8 bits 8 bits SRAM fFPH Address (n + 1) (n) (n + 2) (n + 3) RD WR D7 to D0 12H 12H 34H 34H 56H 56H 78H D1SCP Type Read Trance RAM C 8 bits 8 bits SRAM fFPH Address Pc (n) (n + 1) (n + 2) Pc RD WR D7 to D0 12H 12H 34H 34H 56H D1SCP Figure 3.14.8 Byte Read and Byte Write Timing 91C025-209 2007-02-28 TMP91C025 Type Read Trance RAM A 8 bits 4 bits SRAM fFPH Address (n) (n + 1) Pc (n + 2) Pc RD WR 12H D7 to D0 x1H x2H x3H x4H 34H 56H D1SCP Type Read Trance RAM B 8 bits 4 bits SRAM fFPH Address (n) (n + 1) Pc (n + 2) Pc RD WR D7 to D0 12H x2H 34H x1H x4H x3H 56H D1SCP Type Read Trance RAM C 8 bits 4 bits SRAM fFPH Address (n) (n + 1) Pc Pc RD WR D7 to D0 12H x2H x1H 34H D1SCP Figure 3.14.9 Byte Read and Nibble Write Timing 91C025-210 2007-02-28 TMP91C025 Type Read Trance RAM A 8 bits 4 bits SRAM fFPH Address (n) (n + 1) Pc (n + 2) Pc RD WR D15 to D8 34H D7 to D0 12H 78H 12H 34H BCH 56H 56H 78H 9AH D1SCP Type Read Trance RAM B 16 bits 8 bits SRAM fFPH Address (n) (n + 1) Pc (n + 2) Pc RD WR D15 to D8 34H D7 to D0 12H 78H 12H 34H BCH 56H 56H 78H 9AH D1SCP Type Read Trance RAM C 16 bits 8 bits SRAM fFPH Address (n) (n + 1) Pc pc RD WR D15 to D8 34H D7 to D0 12H 78H 12H 34H 56H 56H D1SCP Figure 3.14.10 Word Read and Byte Write Timing 91C025-211 2007-02-28 TMP91C025 Type Read Trance RAM A 16 bits 4 bits SRAM fFPH Address (n) (n + 1) Pc Pc RD WR D15 to D8 34H D7 to D0 12H 78H x2H x1H x4H x3H 56H x6H x5H x8H x7H D1SCP Type Read Trance RAM B 16 bits 4 bits SRAM fFPH Address (n) (n + 1) Pc Pc RD WR D15 to D8 34H D7 to D0 12H 78H x2H x1H x4H x3H 56H x6H x5H x8H Type Read Trance RAM C 16 bits 4 bits SRAM x7H D1SCP fFPH Address (n) Pc RD WR D15 to D8 34H D7 to D0 12H x2H x1H x4H x3H D1SCP Figure 3.14.11 Word Read and Nibble Write Timing 91C025-212 2007-02-28 TMP91C025 3.14.5 RAM Built-in Type LCD Driver Control Mode (RAM Type) Data transmission to LCD driver is executed by move instruction of CPU. After setting mode of operation to control register, when move instruction of CPU is executed LCDC outputs chip select signal to LCD driver connected to the outside from control pin. (D1BSCP etc.) Therefore control of data transmission numbers corresponding to LCD size is controlled by instruction of CPU. There are 2 kinds of addresses of LCD driver in this case, and which is chosen determines by LCDCTL<MMULCD> register. It corresponds to LCD driver which has every 1 byte of instruction register and display data register in LCD driver at the time of <MMULCD> = 0. Please make the transmission place address at this time into either of FE0H to FE7H. (Table 3.14.2 references) It corresponds to address direct writing type LCD driver at the time of <MMULCD> = 1. The transmission place address at this time can also assign the memory area of 3C0000H to 3FFFFFH to four areas for every 64 Kbytes. (Table 3.14.3 references) The example of a setting is shown as follows and connection example is shown in Figure 3.14.12 at the time below. [<MMULCD> = 0] (Setting example) In case of use 80 SEG × 65 COM LCD driver. Assign external column driver to LCDC0 and row driver to LCDR0. This example used LD instruction in setting of instruction and used burst function of micro DMA by soft start in setting of display data. In case of store 650 bytes transfer data to LCD driver in built-in RAM (1000H to 1289H). ; Setting external terminal LD (PDCR), 19H ; Setting for LCDC LD (LCDSAL), 00H LD (LCDCTL), 80H ; CE for LCDC1: D1BSCP, ; LE for LCDR1: DLEBCD, ; Setting for/DOFF ; Select RAM mode ; LCDON ; Setting for mode of LCDC1/LCDR1 LD (LCDC1L), XX ; Setting instruction for LCDC1 LD (LCDR1L), XX ; Setting instruction for LCDR1 ; Setting for micro DMA and INTTC (ch0) LD A, 08H ; Source address INC mode LDC DMAM0, A ; LD WA, 650 ; count = 650 LDC DMAC0, WA ; LD XWA, 1000H ; Source address = 1000H LDC DMAS0, XWA ; LD XWA, 0FE1H ; Destination address = FE1H (LCDC0H) LDC DMAD0, XWA ; LD (INTETC01), 06H ; INTTC0 level = 6 EI 6 ; LD (DMAB), 01H ; Burst mode LD (DMAR), 01H ; Soft start 91C025-213 2007-02-28 TMP91C025 T6B66A (65-row driver) VSS Power supply circuit VLC1,VLC2, VLC3,VLC4, VLC5 LE DB5 to 0 DSPOF COM001 65 COM × 80 SEG LCD COM065 COM065 CE WR D/I DSPOF DB7 to DB0 EIO1 EIO2 SEG080 VSS COM001 SEG001 VDD SEG001 VDD WR TMP91C025 VSS VLC2,VLC3, VLC5 Open VDD D1BSCP WR A0 DOFF D7 to D0 SEG080 DLEBCD VDD VSS T6B65A (80-column driver) Note: Other circuit is necessary for LCD drive power supply for LCD driver display. Figure 3.14.12 Interface Example for RAM Built-in Type LCD Driver [Write cycle] [Read cycle] System clock: fSYS A23 to A0 R/ W D1BSCP, D2BLP, D3BFR, DLEBCD D7 to D0 Data-out Data-in Figure 3.14.13 Example of Access Timing for RAM Built-in Type LCD Driver (Wait = 0) 91C025-214 2007-02-28 TMP91C025 3.15 Melody/Alarm Generator TMP91C025 incorporates melody function and alarm function, both of which are output from the MLDALM pin. 5 kinds of fixed cycle interrupts are generated by the 15-bit free-run counter which is used for alarm generator. Features are as follows. • Melody generator The melody function generates signals of any frequency (4 Hz to 5461 Hz) based on low-speed clock (32.768 kHz) and outputs several signals from the MLDALM pin. By connecting a loud speaker outside, melody tone can sound easily. • Alarm generator The alarm function generates 8 kinds of alarm waveform having a modulation frequency (4096 Hz) determined by the low-speed clock (32.768 kHz). And this waveform is able to invert by setting a value to a register. By connecting a loud speaker outside, Alarm tone can sound easily. And also 5 kinds of fixed cycle (1 Hz, 2 Hz, 64 Hz, 512 Hz, and 8192 Hz) interrupts are generated by the free-run counter which is used for alarm generator. • Special mode It is assigned <TA3LCDE> at bit0 and <TA3MLDE> at bit1, of EMCCR0 register (00E3hex). These bits are used when you want to operate LCDD and MELODY circuit without low-frequency clock (XTIN, XTOUT). After reset these two bits set to “0” and low clock is supplied each LCDD and MELODY circuit. If you write these bits to “1”, TA3 (Generate by timer3) is supplied each LCDD and MELODY circuit. In this case, you should set 32 kHz timer3 frequency. For detail, look AC specification characteristics. This section is constituted as follows. 3.15.1 Block Diagram 3.15.2 Control Registers 3.15.3 Operational Description 3.15.3.1 Melody Generator 3.15.3.2 Alarm Generator 91C025-215 2007-02-28 TMP91C025 3.15.1 Block Diagram Internal data bus [Melody generator] Reset MELFH, MELFL resistor MELFH <MELON> MELOUT Invert EMCCR0 <TA3MLDE> F/F Comparator (CP0) Stop & clear Low-speed clock (32 kHz) Clear Selector 12-bit counter (UC0) TA3OUT INTALM0 (8192 Hz) INTALM1 (512 Hz) INTALM2 (64 Hz) INTALM3 (2 Hz) INTALM4 (1 Hz) Edge detect 15-bit counter (UC1) 4096 Hz MELALMC<FC1:0> MELOUT 8-bit counter (UC2) Selector ALM resistor MLDALM pin invert Alarm wave form generator [Alarm generator] INTALMH (Halt release) ALMINT <IALME4:0> ALMOUT MELALMC <ALMINV> MELALMC <MELALM> Internal data bus Reset Figure 3.15.1 MLD Block Diagram 91C025-216 2007-02-28 TMP91C025 3.15.2 Control Registers ALM Register ALM (0330H) Bit symbol 7 6 5 4 AL8 AL7 AL6 AL5 Read/Write After reset 3 2 1 0 AL4 AL3 AL2 AL1 0 0 0 0 2 1 0 − − MELALM 0 0 R/W 0 0 0 Function 0 Setting alarm pattern. MELALMC Register 7 MELALMC Bit symbol (0331H) Read/Write After reset Function FC1 6 5 4 3 FC0 ALMINV − − R/W 0 R/W 0 0 0 0 Free-run counter control. Alarm Always write 0. 0 Output 00: Hold waveform waveform 01: Restart invert. select. 10: Clear 1: INVERT 0: Alarm 1: Melody 11: Clear & start Note 1: MELALMEC<FC1> is read always 0. Note 2: When setting MELALMC register except <FC1:0> during the free-run counter is running, <FC1:0> is kept 01. MELFL Register MELFL (0332H) Bit symbol 7 6 5 4 3 2 1 0 ML7 ML6 ML5 ML4 ML3 ML2 ML1 ML0 0 0 0 0 0 0 0 0 Read/Write After reset R/W Function Setting melody frequency (Lower 8 bits). MELFH Register 7 MELFH (0333H) Bit symbol MELON Read/Write R/W After reset Function 6 5 4 3 2 1 0 ML11 ML10 ML9 ML8 0 0 R/W 0 0 Control 0 Setting melody frequency (Upper 4 bits). melody counter. 0: Stop & clear 1: Start ALMINT Register 7 ALMINT (0334H) Bit symbol 6 5 4 3 2 1 0 − IALM4E IALM3E IALM2E IALM1E IALM0E 0 0 0 0 0 0 Read/Write After reset Function R/W Always 1: Interrupt enable for INTALM4 to INTALM0. write 0. 91C025-217 2007-02-28 TMP91C025 3.15.3 Operational Description 3.15.3.1 Melody Generator The melody function generates signals of any frequency (4 Hz to 5461 Hz) based on low-speed clock (32.768 kHz) and outputs the signals from the MLDALM pin. By connecting a loud speaker outside, melody tone can sound easily. (Operation) At first, MELALMC<MELALM> have to be set as 1 in order to select melody waveform as output waveform from MLDALM. Then melody output frequency has to be set to 12-bit register MELFH, MELFL. Followings are setting example and calculation of melody output frequency. (Formula for calculating of melody waveform frequency) melody output waveform at fs = 32.768 [kHz] fMLD [Hz] = 32768/(2 × N + 4) setting value for melody N = (16384/fMLD) – 2 (Note: N = 1 to 4095 (001H to FFFH), 0 is not acceptable ) (Example program) In case of outputting La musical scale (440 Hz) LD (MELALMC), 11X00001B ; Select melody waveform LD (MELFL), 23H ; N = 16384/440 – 2 = 35.2 = 023H LD (MELFH), 80H ; Start to generate waveform (Refer to basic musical scale setting table) Scale Frequency [Hz] Register Value: N C 264 03CH D 297 035H E 330 030H F 352 02DH G 396 027H A 440 023H B 495 01FH C 528 01DH 91C025-218 2007-02-28 TMP91C025 3.15.3.2 Alarm Generator The Alarm function generates 8 kinds of alarm waveform having a modulation frequency 4096 Hz determined by the low-speed clock (32.768 kHz). And this waveform is reversible by setting a value to a register. By connecting a loud speaker outside, Alarm tone can sound easily. 5 kinds of fixed cycle (1 Hz, 2 Hz, 64 Hz, 512 Hz, 8192 Hz) interrupts are generate by the free-run counter which is used for alarm generator. (Operation) At first, MELALMC<MELALM> have to be set as 0 in order to select alarm waveform as output waveform from MLDALM. Then “10” be set on MELALMC<FC1:0> register, and clear internal counter. Finally alarm pattern has to be set on 8-bit register of ALM. If it is inverted output-data, set <ALMINV> as invert. Followings are example program, setting value of alarm pattern and waveform of each setting value. (Setting value of alarm pattern) Setting Value for ALM Register Alarm Waveform 00H 0 fixed 01H AL1 pattern 02H AL2 pattern 04H AL3 pattern 08H AL4 pattern 10H AL5 pattern 20H AL6pattern 40H AL7 pattern 80H AL8 pattern Other Undefined (do not set) (Example program) In case of outputting AL2 pattern (31.25 ms/8 times/1 s) LD (MELALMC), C0H ; Set output alarm waveform ; Free-run counter start LD (ALM), 02H ; Set AL2 pattern, start 91C025-219 2007-02-28 TMP91C025 (Example) Waveform of alarm pattern for each setting value: Not invert AL1 pattern (Continuous output) Modulation frequency (4096 Hz) 1 8 2 1 AL2 pattern (8 times/1 s) 1s 31.25 ms 1 AL3 pattern (once) 500 ms 1 2 1 AL4 pattern (Twice/1 s) 1s 62.5 ms 1 2 3 1 AL5 pattern (3 times/1 s) 1s 62.5 ms 1 AL6 pattern (once) 62.5 ms 1 2 AL7 pattern (Twice) 62.5 ms AL8 pattern (once) 250 ms 91C025-220 2007-02-28 TMP91C025 3.16 Hardware Standby Function TMP91C025 have hardware standby circuit that is able to save the power consumption and protect from program runaway by supplying power voltage down. Especially, it’s useful in case of battery using. It can be shifted to “PS condition” by fixing PS pin to “Low” level. Figure 3.16.1 shows timing diagram of transition of PS condition below. PS mode can be released only by external RESET. fSYS RESET PS (Note1) Keep to PS pin Shifting time (Note 2 Power save condition Reset condition (Release PS mode) More than 10 clock Figure 3.16.1 Hardware Standby Timing Diagram Note 1: PS pin is effective after RESET because SYSCR2<PSENV> to 0. If you use as INT0 pin, please write SYSCR2<PSENV> to 1. Note 2: Shifting time is 2 to 10 clock times of fSYS. Table 3.16.1 Power Save Conditions of Each HALT Mode HALT Mode Setting PS condition IDLE2 IDLE1 IDLE1 mode IDLE1 mode + High-frequency stop + High-frequency stop STOP STOP mode Note: Settings of SYSCR2<DRVE> and <SELDRV> at HALT mode are effective as well as PS condition. 91C025-221 2007-02-28 TMP91C025 4. 4.1 Electrical Characteristics Absolute Maximum Ratings Parameter Symbol Rating Unit Power supply voltage Vcc −0.5 to 4.0 V Input voltage VIN −0.5 to Vcc + 0.5 V Output current IOL 2 mA Output Current (MX, MY pin) IOL 15 mA Output current IOH −2 mA Output Current (PX, PY pin) IOH −15 mA Output current (Total) ΣIOL 80 mA Output current (Total) ΣIOH −80 mA PD 600 mW Power dissipation (Ta = 85°C) Soldering temperature (10 s) TSOLDER 260 °C Storage temperature TSTG −65 to 150 °C Operating temperature TOPR −40 to 85 °C Note: The absolute maximum ratings are rated values which must not be exceeded during operation, even for an instant. Any one of the ratings must not be exceeded. If any absolute maximum rating is exceeded, the device may break down or its performance may be degraded, causing it to catch fire or explode resulting in injury to the user. Thus, when designing products which include this device, ensure that no absolute maximum rating value will ever be exceeded. Solderability of lead lead-free products Test parameter Solderability Test condition (1) Note Use of Sn-637Pb solder Bath Pass: Solder bath temperature =230°C, Dipping time = 5 seconds solderability rate until forming ≥ 95% The number of times = one, Use of R-type flux (2) Use of Sn-3.0Ag-0.5Cu solder bath Solder bath temperature =245°C, Dipping time = 5 seconds The number of times = one, Use of R-type flux (use of lead lead-free) 91C025-222 2007-02-28 TMP91C025 4.2 DC Characteristics (1/2) Parameter Symbol fc = 4 to 36 MHz Power supply voltage (AVCC = DVCC) VCC (AVSS = DVSS = 0 V) D0 to D15 Condition fc = 4 to 27 MHz 2.7 Input low voltage PB3, PB5, PB6, P9) RESET , PB3, PB5, PB6, P9 AM0 to AM1 VIL1 VIL2 VIL3 Vcc ≥ 2.7 V VIL4 Unit − 3.6 V − 0.6 − 0.2 Vcc 0.25 Vcc −0.3 Vcc < 2.7 V Vcc ≥ 2.7 V − − Vcc ≥ 2.7 V − Vcc < 2.7 V Input high voltage PZ2 to PD7 (Except RESET , PB3, PB5, PB6, P9) RESET , PB3, PB5, PB6, P9 VIH VIH1 VIH2 AM0 to AM1 VIH3 X1 VIH4 Output low voltage Output high voltage VOL1 VOH2 0.3 Vcc Vcc < 2.7 V 0.15 Vcc 0.3 0.3 0.2 Vcc 0.1 Vcc 3.6 V ≥ Vcc ≥ 2.7 V D0 to D15 0.2 Vcc Vcc ≥ 2.7 V Vcc < 2.7 V X1 Max 2.4 Vcc ≥ 2.7 V Vcc < 2.7 V PZ2 to PD7 (Except RESET , Typ. 3.0 fs = 30 to 34 kHz fc = 4 to 16 MHz VIL Min 3.3 V > Vcc ≥ 2.7 V 2.0 0.7 < Vcc 0.7 Vcc Vcc ≥ 2.7 V 0.7 Vcc Vcc < 2.7 V 0.8 Vcc Vcc ≥ 2.7 V 0.75 Vcc Vcc < 2.7 V 0.85 Vcc Vcc ≥ 2.7 V Vcc − 0.3 Vcc < 2.7 V Vcc − 0.3 Vcc ≥ 2.7 V 0.8 Vcc Vcc < 2.7 V 0.9 Vcc IOL = 1.6 mA V 2.4 Vcc ≥ 2.7 V − IOL = 0.4 mA Vcc < 2.7 V IOH = −400 μA Vcc ≥ 2.7 V Vcc − 0.3 IOH = 200 μA Vcc < 2.7 V 0.8 Vcc − − − Vcc + 0.3 − − − 0.45 0.15 Vcc − V − Note: Typical values are for when Ta = 25°C and Vcc = 3.3 V uncles otherwise noted. 91C025-223 2007-02-28 TMP91C025 DC Characteristics (2/2) Parameter Internal resistor (ON) MX, MY pins Internal resistor (ON) PX, PY pins Symbol IMon IMon Condition Min Typ.(Note 1) Max VOL = 0.2V Vcc ≥ 2.7 V 30 VOL = 0.07 Vcc Vcc < 2.7 V 25 VOH = Vcc − 0.2V Vcc ≥ 2.7 V 30 VOH = 0.94 Vcc Vcc < 2.7 V Unit Ω 25 Input leak current ILI 0.0 ≤ VIN ≤ Vcc − 0.02 ±5 Output leak current RESET pull-up resistor ILO 0.2 ≤ VIN ≤ Vcc − 0.2 − 0.05 ±10 RRST 3.6 V ≥ Vcc ≥ 2.7 V 80 400 kΩ Pin capacitance CIO fc = 1 MHz − − 10 pF Schmitt width RESET , INT0, KI0 to KI7, Vcc ≥ 2.7 V 0.4 1.0 − VTH Vcc < 2.7 V 0.3 0.8 3.6 V ≥ Vcc ≥ 2.7 V 80 − 400 − 16 21 − 5.0 7 − 1.5 3.2 − 12 30 − 8 25 − 4 20 − 0.2 15 INT2, INT3 Programmable pull-up resistor RKH NORMAL (Note 2) fc = 36 MHz IDLE1 SLOW (Note 2) IDLE2 IDLE1 STOP V 3.6 V ≥ Vcc ≥ 3.0 V IDLE2 Icc μA 3.6 V ≥ Vcc ≥ 2.7 V fs = 32.768 kHz 3.6 V ≥ Vcc ≥ 2.7 V kΩ mA μA Note 1: Typical values are for when Ta = 25°C and Vcc = 3.3 V unless otherwise noted. Note 2: Icc measurement conditions (NORMAL, SLOW): All functions are operational; output pins are open and input pins are fixed. Data and address bus CL = 30 pF loaded. 91C025-224 2007-02-28 TMP91C025 4.3 AC Characteristics Vcc = 2.7 to 3.6 V case of fFPH = 27 MHz Vcc = 3.0 to 3.6 V case of fFPH = 36 MHz (1) Vcc = 2.7 V to 3.6 V No. Variable Parameter Symbol 1 tFPH fFPH period ( = x) 2 tAC A0 to 23 valid → RD / WR fall 3 tCAR 4 5 27 MHz Min Max Min 27.7 31250 Max 36 MHz Min Max Unit 37.0 27.7 ns x – 23 14 4 ns RD rise → A0 to A23 hold 0.5x – 13 5 0 ns tCAW WR rise → A0 to A23 hold x – 13 tAD A0 to A23 valid → D0 to D15 input 3.5x – 24 105 73 ns 6 tRD RD fall → D0 to D15 input 2.5x – 24 68 45 ns 7 tRR RD low width 8 tHR RD rise → D0 to A15 hold 9 tWW 10 11 24 14 ns 2.5x – 15 77 54 ns 0 0 0 ns WR low width 2.0x – 15 59 40 ns tDW D0 to D15 valid → WR rise 1.5x – 35 20 6 ns tWD WR rise → D0 to D15 hold x – 25 12 2 12 tSBA Data byte control access time for SRAM 13 tSWP Write pulse width for SRAM 2x – 15 59 40 ns 14 tSBW Data byte control to end of write for SRAM 3x – 15 96 68 ns 15 tSAS Address setup time for SRAM 1.5x – 35 20 6 ns 16 tSWR Write recovery time for SRAM 0.5x – 13 5 0 ns 17 tSDS Data setup time for SRAM 2x – 35 39 20 ns 18 tSDH Data hold time for SRAM 19 tAW A0 to A23 valid → WAIT input (1 + N) waits mode 20 tCW RD / WR fall → WAIT hold (1 + N) waits mode 21 tAPH A0 to A23 valid → Port input 22 tAPH2 A0 to A23 valid → Port hold 23 tAPO A0 to A23 valid → Port valid 3x – 24 0.5x – 13 87 3 3.5x – 60 2.5x + 0 0 69 92 3.5x – 89 3.5x 40 ns ns 8 96 209 ns ns 37 69 129 3.5x + 80 ns 59 ns ns 176 ns AC measuring conditions • Output level: High = 0.7 Vcc, Low = 0.3 Vcc, CL = 50 pF • Input level: High = 0.9 Vcc, Low = 0.1 Vcc Note: Symbol “x” in the above table means the period of clock “fFPH”, it’s half period of the system clock “fSYS” for CPU core. The period of fFPH depends on the clock gear setting or selection of high/low oscillator frequency. 91C025-225 2007-02-28 TMP91C025 (2) Vcc = 2.4 V to 3.6 V No. Variable Parameter Symbol 16 MHz Max Min 62.5 31250 62.5 ns 39 ns ns 1 tFPH fFPH period ( = x) 2 tAC A0 to 23 valid → RD / WR fall 3 tCAR RD rise → A0 to A23 hold 0.5x − 23 8 4 tCAW WR rise → A0 to A23 hold x − 13 49 5 tAD A0 to A23 valid → D0 to D15 input 6 tRD RD fall → D0 to D15 input 7 tRR RD low width 8 tHR RD rise → D0 to A15 hold x − 23 3.5x − 38 2.5x − 30 Max Unit Min ns 180 ns 126 ns 2.5x − 15 141 ns 0 0 ns 9 tWW WR low width 2.0x − 15 110 ns 10 tDW D0 to D15 valid → WR rise 1.5x − 35 58 ns 11 tWD WR rise → D0 to D15 hold x − 25 37 ns 12 tSBA Data byte control access time for SRAM 13 tSWP Write pulse width for SRAM 2x − 15 110 ns 14 tSBW Data byte control to end of write for SRAM 3x − 25 162 ns 15 tSAS Address setup time for SRAM 1.5x − 35 58 ns 16 tSWR Write recovery time for SRAM 0.5x − 22 9 ns 17 tSDS Data setup time for SRAM 2x − 35 90 ns 18 tSDH Data hold time for SRAM 19 tAW A0 to A23 valid → WAIT input (1 + N) waits mode 20 tCW RD / WR fall → WAIT hold (1 + N) waits mode 21 tAPH A0 to A23 valid → Port input 22 tAPH2 A0 to A23 valid → Port hold 23 tAPO A0 to A23 valid → Port valid 3x − 39 0.5x − 18 148 13 3.5x − 60 2.5x + 0 ns 158 156 3.5x − 89 3.5x ns ns 129 218 3.5x + 80 ns ns ns 298 ns AC measuring conditions • Output level: High = 0.7 Vcc, Low = 0.3 Vcc, CL = 50 pF • Input level: High = 0.9 Vcc, Low = 0.1 Vcc Note: Symbol “x” in the above table means the period of clock “fFPH”, it’s half period of the system clock “fSYS” for CPU core. The period of fFPH depends on the clock gear setting or selection of high/low oscillator frequency. 91C025-226 2007-02-28 TMP91C025 (3) Read cycle tFPH fFPH EA24 to EA25, A23 to A0 CSn R/ W tAW tCW WAIT tAP tAPH2 Port input (Note) tAD RD tCAR tRR tAC tRD D0 to D15 SRLB tHR D0 to D15 tSBA SRUB SRWR Note: Since the CPU accesses the internal area to read data from a port, the control signals of external pins such as RD and CS are not enabled. Therefore, the above waveform diagram should be regarded as depicting internal operation. Please also note that the timing and AC characteristics of port input/output shown above are typical representation. For details, contact your local Toshiba sales representative. 91C025-227 2007-02-28 TMP91C025 (4) Write cycle SRLB SRUB fFPH EA24 to EA25, A23 to A0 CSn R/ W WAIT tAPO Port output (Note) tCAW WR , HWR tWW tSWR tDW D0 to D15 tWD D0 to D15 tSDH tSBW SRLB SRUB tSDS tSAS tSWP SRWR Note: Since the CPU accesses the internal area to write data to a port, the control signals of external pins such as WR and CS are not enabled. Therefore, the above waveform diagram should be regarded as depicting internal operation. Please also note that the timing and AC characteristics of port input/output shown above are typical representation. For details, contact your local Toshiba sales representative. 91C025-228 2007-02-28 TMP91C025 4.4 AD Conversion Characteristics AVcc = Vcc, AVss = Vss Symbol VREFH VREFL VAIN IREF (VREFL = 0 V) ⎯ Parameter Analog reference voltage (+) Analog reference voltage (−) Condition Min Typ. Max Vcc Unit 3.6 V ≥ Vcc ≥ 2.7 V Vcc − 0.2 V Vcc 2.7 V ≥ Vcc ≥ 2.4 V Vcc Vcc Vcc 3.6 V ≥ Vcc ≥ 2.7 V Vss Vss Vss + 0.2 V 2.7 V ≥ Vcc ≥ 2.4 V Vss Vss Vss Analog input voltage range VREFL V VREFH Analog current for analog reference 3.6 V ≥ Vcc ≥ 2.7 V 1.04 1.2 voltage<VREFON> = 1 2.7 V ≥ Vcc ≥ 2.4 V 0.75 0.90 <VREFON> = 0 3.6 V ≥ Vcc ≥ 2.4 V 0.03 10.0 μA Error (Not including quantizing errors) 3.6 V ≥ Vcc ≥ 2.4 V ±1.0 ±4.0 LSB mA Note 1: 1 LSB = (VREFH − VREFL)/1024 [V] Note 2: The operation above is guaranteed for fFPH ≥ 4 MHz. Note 3: The value of ICC includes the current which flows through the AVCC pin. 91C025-229 2007-02-28 TMP91C025 4.5 Serial Channel Timing (I/O internal mode) Vcc = 2.7 to 3.6 V case of fFPH = 27 MHz Vcc = 3.0 to 3.6 V case of fFPH = 36 MHz (1) SCLK input mode Symbol Variable Parameter tSCY SCLK period tOSS Output data → SCLK rising /Falling edge* tOHS SCLK rising /Falling edge*→ Output data hold tHSR SCLK rising /Falling edge*→ Input data hold tSRD SCLK rising /Falling edge*→ Valid data input tRDS SCLK rising /Falling edge*→ Valid data input 27 MHz Min Max Min Max 36 MHz Min Max Unit 16X 0.59 0.44 μs tSCY/2 − 4X − 110 38 0 ns tSCY/2 + 2X + 0 370 277 ns 3X + 10 121 93 ns tSCY − 0 0 592 0 443 0 ns ns (2) SCLK output mode Symbol Variable Parameter 27 MHz 36 MHz Min Max Min Max Min Max 16X 8192X 0.59 303 0.44 227 Unit μs tSCY SCLK period tOSS Output data → SCLK rising /Falling edge* tSCY/2 − 40 256 181 ns tOHS SCLK rising /Falling edge*→ Output data hold tSCY/2 − 40 256 181 ns tHSR SCLK rising /Falling edge*→ Input data Hold 0 0 0 ns tSRD SCLK rising /Falling edge*→ Valid data input tRDS SCLK rising /Falling edge*→ Valid data input tSCY − 1X − 180 1X + 180 375 217 235 207 ns ns *) SCLK rising/Falling edge: The rising edge is used in SCLK Rising mode. The Falling edge is used in SCLK Falling mode. Note: Above table’s data values at 27 MHz and 36 MHz, are caliculated from tSCY = 16x base. tSCY SCLK (Rising up mode) SCLK (Falling down mode) tOSS Output data TXD tOHS 0 1 tSRD Input data RXD tRDS 2 3 tHSR 0 1 2 3 Valid Valid Valid Valid 91C025-230 2007-02-28 TMP91C025 4.6 Event Counter (TA0IN) Symbol Parameter Variable Min 4.7 Max 36 MHz 27 MHz (Vcc = 2.7 to 3.6 V) (Vcc = 3.0 to 3.6 V) Unit Min Max Min Max tVCK Clock period 8X + 100 396 321 ns tVCKL Clock low level width 4X + 40 188 151 ns tVCKH Clock high level width 4X + 40 188 151 ns Interrupt, Capture (1) NMI , INT0 to INT3 interrupts Symbol Parameter Variable Min 4.8 tINTAL tINTAH Max 27 MHz 36 MHz (Vcc = 2.7 to 3.6 V) (Vcc = 3.0 to 3.6 V) Unit Min Max Min Max NMI , INT0 to INT3 low level width 4X + 40 188 151 ns NMI , INT0 to INT3 high level width 4X + 40 188 151 ns SCOUT pin AC Characteristics Symbol Parameter Variable Min Max 27 MHz Min Max 36 MHz Min Max Unit tSCH Clock low level width 0.5T − 10 8 3 ns tSCL Clock high level width 0.5T − 10 8 3 ns Note: T = Period of SCOUT Measuring condition • Output level: High 0.7Vcc/Low 0.3 Vcc, CL = 10 pF 91C025-231 2007-02-28 TMP91C025 4.9 LCD Controller (SR mode) fSYS EA24 to EA25, A23 to A0, CSn tC tCWH tCWL D1BSCP tDSU D0 to D7 Read Bus Width TYPE Byte A B C Word A B C Note: tDHD Data Write Mode Setup Time (tDSU) Hold Time (tDHD) Clock High Width (tCWH) Cycle (tc) State/ Cycle Byte 0.5x − α 1.0x − β 1.5x − γ 4.0x 4.0x Nibble 0.5x − α 1.0x − β 1.0x − γ 2.0x 6.0x Byte 1.0x − α 0.5x − β 2.0x − γ 4.0x 4.0x Nibble 1.0x − α 0.5x − β 1.0x − γ 2.0x 6.0x Byte 1.0x − α 2.5x − β 1.5x − γ 6.0x 6.0x Nibble 1.0x − α 1.5x − β 2.5x − γ 5.0x 10.0x Byte 0.5x − α 1.0x − β 1.0x − γ 2.0x 6.0x Nibble 0.5x − α 1.0x − β 1.0x − γ 2.0x 10.0x Byte 1.0x − α 0.5x − β 1.0x − γ 2.0x 6.0x Nibble 1.0x − α 0.5x − β 1.0x − γ 2.0x 10.0x Byte 1.0x − α 1.5x − β 1.5x − γ 3.0x 8.0x Nibble 1.0x − α 1.5x − β 2.5x − γ 5.0x 20.0x Value of alpha, beta and gamma are showed next page. 91C025-232 2007-02-28 TMP91C025 No. Symbol 1 2 3 4 tDSU tDHD tCWH tC Parameter Variable Min 27 MHz 36 MHz Max Min Max Min Max D1BSCP rising → Data setup time 0.5x − 8 10 5 1.0x − 8 29 19 D1BSCP falling → Data hold time 0.5x − 8 10 5 1.0x − 8 29 19 1.5x − 8 47 33 2.5x − 8 84 61 D1BSCP 1.0x − 12 25 15 high width 1.5x − 12 43 29 2.0x − 12 62 43 2.5x − 12 80 57 D1BSCP 2.0x 74 55 clock cycle 3.0x 111 83 4.0x 148 110 5.0x 185 138 6.0x 222 166 Condition Unit 3.6 V ≥ Vcc ≥ 2.7 V ns Note: The reading characteristics of display data from the memory which does not define above table, is same as 4.3 AC electrical 91C025-233 2007-02-28 TMP91C025 4.10 Recommended Crystal Oscillation Circuit TMP91C025 is evaluated by below oscillator vender. When selecting external parts, make use of this information. Note: Total loads value of oscillator is sum of external loads (C1 and C2) and floating loads of actual assemble board. There is a possibility of miss-operating using C1 and C2 value in below table. When designing board, it should design minimum length pattern around oscillator. And we recommend that oscillator evaluation try on your actual using board. (1) Connection example X1 X2 XT1 Rf XT2 Rf Rd Rd C2 C1 C1 C2 Low-Frequency Oscillator High-Frequency Oscillator (2) TMP91C025 recommended ceramic oscillator: Murata Manufacturing Co., LTD; JAPAN MCU TMP91C025FG Parameter of Elements Running Condition Frequency Item of Oscillator Voltage of [MHz] C1 [pF] C2 [pF] Rf [Ω] Rd [Ω] Power TC [°C] [V] 9.0 CSTLS9M00G56-B0 (47) (47) Open 0 2.7~3.6 −20~80 • The values enclosed in blackest in the C1 and C2 columns apply to the condenser built-in type. • The product numbers and specifications of the resonators by Murata Manufacturing Co., Ltd. are subject to change. For up-to-date information, please refer to the following URL: http://www.murata.co.jp/search/index.html 91C025-234 2007-02-28 TMP91C025 5. Table of SFR The SFRs (Special function registers) include the I/O ports and peripheral control registers allocated to the 4-Kbyte address space from 000000H to 000FFFH. (1) I/O port (2) I/O port control (3) Interrupt control (4) Chip select/wait control (5) Clock gear (6) DFM (Clock doubler) (7) 8-bit timer (8) UART/serial channel (9) AD converter (10) Watchdog timer (11) Real-time clock (12) Melody/alarm generator (13) MMU (14) LCD control (15) Touch screen interface Table layout Symbol Name Address 7 6 1 0 Bit symbol Read/Write Initial value after reset Remarks Note: Prohibit RMW in the table means that you cannot use RMW instructions on these register. Example: When setting bit0 only of the register PxCR, the instruction SET 0, (PxCR) cannot be used. The LD (transfer) instruction must be used to write all eight bits. Read/Write R/W: Both read and write are possible. R: Only read is possible. W: Only write is possible. W*: Both read and write are possible (when this bit is read as1) Prohibit RMW: Read-modify-write instructions are prohibited. (The EX, ADD, ADC, BUS, SBC, INC, DEC, AND, OR, XOR, STCF, RES, SET, CHG, TSET, RLC, RRC, RL, RR, SLA, SRA, SLL, SRL, RLD and RRD instruction are read-modify-write instructions.) R/W*: Read-modify-write instructions are prohibited when controlling the pull-up resistor. 91C025-234 2007-02-28 TMP91C025 Table 5.1 Address Map SFRs [1], [2] Port Address Name 0000H Address Name Address 0010H P5CR Name 0020H PAFC2 Address Name 0070H 1H P1 1H 1H PAFC 1H 2H 2H P6 2H PB 2H 3H 3H 3H PC 3H 4H P1CR 4H 4H PBCR 4H 5H 5H P6FC 5H PBFC 5H 6H P2 6H 6H PCCR 6H 7H 7H 7H PCFC 7H 8H 8H P8 8H PCODE 8H 9H P2FC 9H P9 9H PD 9H AH AH AH PDFC AH BH BH P6FC2 BH TSICR0 BH CH CH CH TSICR1 CH DH P5 DH P9FC DH DH PZ EH EH PA EH EH PZCR FH FH FH FH PZFC [3] INTC [4] CS/WAIT Address Name 0080H DMA0V Address Name Address 0090H INTE0AD [5], [6] CGEAR, DFM Name Address Name 00C0H B0CS 00E0H SYSCR0 1H DMA1V 1H INTE12 1H B1CS 1H SYSCR1 2H DMA2V 2H INTE3ALM4 2H B2CS 2H SYSCR2 3H DMA3V 3H INTEALM01 3H B3CS 3H EMCCR0 4H 4H INTEALM23 4H 4H EMCCR1 5H 5H INTETA01 5H 5H EMCCR2 6H 6H INTETA23 6H 6H EMCCR3 7H 7H INTERTCKEY 7H BEXCS 7H 8H INTCLR 8H INTES0 8H MSAR0 8H DFMCR0 9H DMAR 9H INTES1 9H MAMR0 9H DFMCR1 AH DMAB AH INTELCD AH MSAR1 AH BH BH INTETC01 BH MAMR1 BH CH IIMC CH INTETC23 CH MSAR2 CH DH DH INTEP01 DH MAMR2 DH EH EH EH MSAR3 EH FH FH FH MAMR3 FH [7] TMRA [8] UART/serial channel Address Name 0100H TA01RUN Address Name [9] 10-bit ADC Address 0200H SC0BUF Name Address Name 02A0H ADREG04L 02B0H ADMOD0 1H 1H SC0CR 1H ADREG04H 1H ADMOD1 2H TA0REG 2H SC0MOD0 2H ADREG15L 2H 3H TA1REG 3H BR0CR 3H ADREG15H 3H 4H TA01MOD 4H BR0ADD 4H ADREG26L 4H 5H TA1FFCR 5H SCMOD1 5H ADREG26H 5H 6H 6H 6H ADREG37L 6H 7H 7H SIRCR 7H ADREG37H 7H 8H TA23RUN 8H SC1BUF 8H 8H 9H 9H SC1CR 9H 9H AH TA2REG AH SC1MOD0 AH AH BH TA3REG BH BR1CR BH BH CH TA23MOD CH BR1ADD CH CH DH TA3FFCR DH SC1MOD1 DH DH EH EH EH EH FH FH FH FH Note: Do not access to the unnamed addresses, e.g., addresses to which no register has been allocated. 91C025-235 2007-02-28 TMP91C025 [10] WDT [11] RTC Address Name 0300H WDMOD [12] MLD Address Name Address 0320H SECR [13] MMU Name 0330H ALM Address Name 0350H LOCAL0 1H WDCR 1H MINR 1H MELALMC 2H 2H HOURR 2H MELFL 1H LOCAL1 2H LOCAL2 3H 3H DAYR 3H MELFH 3H LOCAL3 4H 4H DATER 4H ALMINT 4H 5H 5H MONTHR 5H 5H 6H 6H YEARR 6H 6H 7H 7H PAGER 7H 7H 8H 8H RESTR 8H 8H 9H 9H 9H 9H AH AH AH AH BH BH BH BH CH CH CH CH DH DH DH DH EH EH EH EH FH FH FH FH [14] LCD controller Address Name 0360H LCDSAL 1H LCDSAH 2H LCDSIZE 3H LCDCTL 4H LCDFFP 5H 6H LCDCTL2 7H 8H 9H AH BH CH DH EH FH Note: Do not access to the unnamed addresses, e.g., addresses to which no register has been allocated. 91C025-236 2007-02-28 TMP91C025 (1) I/O ports Symbol P1 Name Port 1 Address 7 6 5 4 P17 P16 P15 P14 01H 3 2 1 0 P13 P12 P11 P10 R/W Data from external port (Output latch register is cleared to 0). P27 P2 Port 2 P26 P25 P24 06H P23 P22 P21 P20 1 1 1 P62 P61 P60 R/W 1 1 1 1 1 P65 P64 P63 P56 R/W P5 Port 5 0DH P6 Port 6 12H Data from external port (Output latch register is set to 1). 0 (Output latch register) : Pull-up resistor OFF 1(Output latch register) : Pull-up resistor ON R/W 1 P8 Port 8 1 1 0 1 1 P83 P82 P81 P80 18H R Data from external port. P97 P9 Port 9 P96 P95 P94 19H P93 P92 P91 P90 PA1 PA0 1 1 1 PC2 PC1 PC0 R Data from external port. PA3 PA Port A PA2 1EH R/W 1 PB6 PB5 PB4 PB3 1 1 R/W PB Port B 22H 1 1 Data from external port (Output latch register is set to 1). PC5 PC Port C PC4 PC3 23H R/W Data from external port (Output latch register is set to 1). PD7 PD Port D 29H PD4 PD3 PD2 1 1 1 PZ3 PZ2 R/W PD1 PD0 1 1 R/W 1 R/W Data from external port (Output latch register is PZ Port Z 7DH set to 1” 0 (Output latch register) : Pull-up resistor OFF 1(Output latch register) : Pull-up resistor ON 91C025-237 2007-02-28 TMP91C025 (2) I/O ports control (1/2) Symbol P1CR Name Port 1 control Address 04H (Prohibit RMW) 7 6 5 4 P17C P16C P15C P14C 3 2 1 0 P13C P12C P11C P10C 0/1 0/1 0/1 0/1 P23F P22F P21F P20F 1 1 1 1 P61F P60F W 0/1 0/1 0/1 0/1 0: Input 1: Output P2FC Port 2 function 09H (Prohibit RMW) P27F P26F P25F P24F W 1 1 1 1 0: Port, 1:Address bus (A23 to A16) PZCR Port Z control PZ3C 7EH PZ2C W (Prohibit 0 RMW) 0 0: Input 1: Output PZ3F PZFC Port Z function PZ2F W 7FH 0 (Prohibit 0 0: Port 1: R / W , 1: HWR SRWR 0: Port RMW) P56C P5CR Port 5 control 10H (Prohibit RMW) W 0 0: Input 1: Output P65F P6FC Port 6 function P64F 0 0: Port 1: EA25 0 0: Port 1: EA24 P65F2 P6FC2 P9FC Port 6 function2 Port 9 function 0 0: Port 1: CS3 P64F2 W 1BH (Prohibit RMW) 1DH (Prohibit RMW) P63F P62F W 15H (Prohibit RMW) 0 0 0: <P65F> 0: <P64F> 1: CS2C 1: CS2B P97F P96F P95F P94F 0 0: Port 1: CS2 0 0 0: Port 1: CS1 0: Port 1: CS0 – P62F2 – – W W W W 0 0 0 0 Always write 0. 0: <P62F> 1: CS2A P93F P92F P91F P90F 0 0 0 0 PA1F PA0F 0 0 Always write 0. W 0 0 0 0 0: KEY-IN DISABLE , 1: KEY-IN ENABLE PAFC Port A function 21H (Prohibit RMW) PA3F PA2F 0 0 W 0: CMOS output , 1: Open-drain output PA3F2 PA2F2 0 0 PA1F2 PA0F2 0 0 W PAFC2 Port A function 2 20H (Prohibit RMW) 0: Port 0: Port 0: Port 0: Port 1: SCOUT 1: TA3OUT 1: TA1OUT 1: ALARM at <PA0>=1 1: MLDALM at <PA0>=0 91C025-238 2007-02-28 TMP91C025 I/O ports control (2/2) Symbol Name PBCR Port B control Address 7 6 5 4 3 PB4C 24H 2 1 0 PC2C PC1C PC0C 0 0 0 PB3C W (Prohibit 0 RMW) 0 0: Input 1: Output PB6F PBFC PCCR Port B function Port C control PB5F 25H PB4F PB3F W (Prohibit 0 RMW) 0: Port 1: INT3 0 0: Port 1: INT2 0 0: Port 1: INT1 PC5C 26H PC4C 0 0: Port 1: INT0 PC3C W (Prohibit 0 RMW) 0 0 0: Input 1: Output PCFC PCODE Port C function PC5F PC3F PC2F PC0F 27H W W W W (Prohibit 0 0 0 RMW) 0: Port 1: SCLK1 0: Port 1: TXD1 28H (Prohibit open-drain RMW) Port C Port D function 0: Port 1: TXD0 ODEPC3 ODEPC0 W W 0 0 0: CMOS 1: Opendrain PD7F PDFC 0 0: Port 1: SCLK0 2AH W (Prohibit 0 RMW) 0: Port 1: MLDALM 0: CMOS 1: Opendrain PD4F PD3F PD2F PD1F PD0F W W W W W 0 0 0 0 0 0: Port 0: Port 0: Port 0: Port 0: Port 1: D2BLP 1: D1BSCP 1: DOFFB 1: DLEBCD 1:D3BFR 91C025-239 2007-02-28 TMP91C025 (3) Interrupt control (1/2) Symbol Name Address 7 6 IADC IADM2 5 4 3 2 IADM1 IADM0 I0C I0M2 INTAD INT0 and INTE0AD INTAD 90H enable 0 R/W 0 0 R INT1 and INT2 I2C 91H 0 Interrupt level enable I2M2 0 0 0 0 1: INT0 INTE3ALM4 INTALM4 IA4C I2M1 I2M0 R/W 0 0 I1C I1M2 92H 0 0 enable 0 0 1: INT1 0 0 and INTALM1 IA1C 0 I3C I3M2 93H 0 0 0 enable 0 0 INTEALM23 INTALM3 enable IA3C IA1M0 0 IA0C IA0M2 94H 0 0 0 0 0 IA3M0 0 IA2C INTETA01 INTTA1 enable ITA1C 95H 0 Interrupt level ITA1M2 0 0 0 INTETA23 0 INTTA3 enable ITA3C ITA3M2 INTERTCKEY 0 0 INTES0 0 INTES1 0 97H IKM2 0 ITA0C ITA0M2 0 0 ITA3M0 98H 0 0 0 Interrupt level ITA2C ITA2M2 0 0 ITX1C IKM0 0 ITX1M2 0 1: INTTX1 0 IRC IRM2 0 IRM1 0 IRM0 R/W 0 0 1: INTRTC ITX0M0 0 Interrupt level IRX0C IRX0M2 R 0 0 IRX0M1 IRX0M0 R/W 0 0 1: INTRX0 0 Interrupt level INTRX1 ITX1M1 ITX1M0 R/W 0 0 R Interrupt level R ITA2M0 Interrupt level INTTX1 99H ITA2M1 R/W 1: INTTA2 R/W 0 0 INTRX0 ITX0M1 R 0 R Interrupt level ITX0M2 ITA0M0 INTTA2 (TMRA2) INTTX0 ITX0C ITA0M1 R/W 1: INTTA0 R/W 0 0 INTRTC IKM1 R 0 Interrupt level INTKEY IKC 1: INTTX0 INTRX1 and INTTX1 enable 0 Interrupt level 1: INTKEY INTRX0 and INTTX0 enable ITA3M1 IA2M0 R/W R R/W 1: INTTA3 INTRTC0 and INTKEY enable ITA1M0 Interrupt level R IA2M1 INTTA0 (TMRA0) INTTA3 (TMRA3) 96H IA2M2 1: INTALM2 R/W 1: INTTA1 INTTA2 and ITA1M1 R 0 Interrupt level R INTTA1 (TMRA1) INTTA0 and 0 1: INTALM0 R/W 1: INTALM3 IA0M0 R/W INTALM2 IA3M1 R IA0M1 R Interrupt level IA3M2 0 Interrupt level INTALM3 INTALM2 and 0 1: INT3 R/W 1: INTALM1 I3M0 R/W INTALM0 IA1M1 R I3M1 R Interrupt level IA1M2 0 Interrupt level INTALM1 INTALM0 INTEALM01 IA4M0 R/W 1: INTALM4 I1M0 R/W INT3 IA4M1 R I1M1 R Interrupt level IA4M2 0 Interrupt level INTALM4 INT3 and I0M0 INT1 R 1: INT2 I0M1 R/W INT2 INTE12 0 INT0 R 1: INTAD 1 0 Interrupt level 91C025-240 IRX1C IRX1M2 R 0 0 1: INTRX1 IRX1M1 IRX1M0 R/W 0 0 0 Interrupt level 2007-02-28 TMP91C025 Interrupt control (2/2) Symbol Name Address 7 6 ILCD2C ILCDM2 5 4 3 2 ILCDM1 ILCDM0 – – INTLCD enable 9AH R 0 0 0 enable ITC1C ITC1M2 0 and INTTC3 9CH ITC3C ITC3M2 ITC1M0 ITC0C ITC0M2 9DH IP1C R 0 ITC3M0 0 0 DMA 0 0 0 0 ITC2C ITC2M2 ITC2M1 ITC2M0 R 0 R/W 0 0 0 0 IP0M1 IP0M0 INTP0 IP1M1 IP1M0 R/W 0 ITC0M0 R/W INTTC0 R/W IP1M2 – ITC0M1 R 0 ITC3M1 0 – INTP1 enable request vector 0 R 0 INTP0 and DMA0V – INTTC3 enable INTEP01 INTP1 – Always write 0 R/W 0 – INTTC0 ITC1M1 R INTTC2 INTETC23 0 INTTC1 9BH – – Interrupt level INTTC0 and INTETC01 INTTC1 – R/W 1: INTLCD 0 – INTLCD INTLCD 1 IP0C IP0M2 R R/W 0 0 0 0 0 0 DMA0V5 DMA0V4 DMA0V3 DMA0V2 DMA0V1 DMA0V0 0 0 DMA1V1 DMA1V0 0 0 DMA2V1 DMA2V0 0 0 DMA3V1 DMA3V0 0 0 CLRV2 CLRV1 CLRV0 0 0 0 R/W 80H 0 0 0 0 DMA0 Start vector. DMA1V DMA 1 request vector DMA1V5 DMA1V4 DMA1V3 DMA1V2 R/W 81H 0 0 0 0 DMA1 Start vector. DMA2V DMA 2 request vector DMA2V5 DMA2V4 DMA2V3 DMA2V2 R/W 82H 0 0 0 0 DMA3V5 DMA3V4 DMA3V3 DMA2 Start vector. DMA3V DMA 3 request vector DMA3V2 R/W 83H 0 0 0 0 CLRV5 CLRV4 CLRV3 DMA3 Start vector. INTCLR Interrupt clear control DMAR DMA software request register 88H (Prohibit RMW) W 0 0 0 Clears interrupt request flag by writing to DMA start vector. DMAB IIMC DMA burst request register Interrupt input mode control 89H (Prohibit RMW) DMAR3 DMAR2 DMAR1 DMAR0 R/W R/W R/W R/W 0 0 0 0 1: DMA request in software 8AH DMAB3 DMAB2 DMAB1 DMAB0 R/W R/W R/W R/W 0 0 0 0 1 : DMA request on Burst Mode 8CH − − I3EDGE I2EDGE I1EDGE I0EDGE I0LE – W W W W W W W W 0 0 0 0 0 0 (Prohibit RMW) Always write 0. 0 Always write 0. INT3 edge INT2 edge INT1 edge INT0 edge INT0 0: Rising 0: Rising 0: Rising 0: Rising 0: edge 1: Falling 1: Falling 1: Falling 1: Falling 1:level 91C025-241 0 Always write 0. 2007-02-28 TMP91C025 (4) Chip select/wait control (1/2) Symbol Name Block 0 B0CS CS/WAIT control register Address C0H (Prohibit RMW) 7 6 5 4 3 2 1 0 B0E B0OM1 B0OM0 B0BUS B0W2 B0W1 B0W0 W W W W W W W 0 0 0 0 0 0 0 0: Disable 1: Enable Data bus width. 10: 0: 16 bits 001: 1 wait 101: 3 waits 010: (1 + N) waits 110: 4 waits 1: 8 bits 011: 0 waits Reserved 11: Block 1 B1CS CS/WAIT control register C1H (Prohibit RMW) B2CS CS/WAIT control register B3CS BEXCS MSAR0 Block 3 CS/WAIT control register External CS/WAIT control register Memory start address register 0 Memory address MAMR0 mask register 0 MSAR1 Memory start address register 1 Memory address MAMR1 mask register 1 C2H (Prohibit RMW) C3H (Prohibit RMW) 000: 2 waits 111: 8 waits B1E B1OM1 B1OM0 B1BUS B1W2 B1W1 B1W0 W W W W W W W 0 0 0 0 0 0 0 0: Disable 1: Enable 100: (0 + N) waits 00: ROM/SRAM 01: Data bus width. 10: 0: 16 bits 001: 1 wait 101: 3 waits 010: (1 + N) waits 110: 4 waits 1: 8 bits 011: 0 waits Reserved 11: Block 2 100: (0 + N) waits 00: ROM/SRAM 01: 000: 2 waits 111: 8 waits B2E B2M B2OM1 B2OM0 B2BUS B2W2 B2W1 B2W0 W W W W W W W W 1 0 0 0 0 0 0 0 0: Disable 0: 16 M 1: Enable area 00: ROM/SRAM 01: 10: Reserved 1: Area set 11: Data bus width. 0: 16 bits 1: 8 bits 000: 2 waits 100: (0 + N) waits 001: 1 wait 101: 3 waits 010: (1 + N) waits 110: 4 waits 011: 0 waits 111: 8 waits B3E B3OM1 B3OM0 B3BUS B3W2 B3W1 B3W0 W W W W W W W 0 0 0 0 0 0 0 0: Disable 00: ROM/SRAM Data bus 000: 2 waits 100: (0 + N) waits 1: Enable 01: 10: 11: width. 0: 16 bits 1: 8 bits 001: 1 wait 101: 3 waits Reserved BEXBUS BEXW2 BEXW1 BEXW0 W W W W 0 0 0 0 C7H Data bus width. 0: 16 bits 1: 8 bits (Prohibit RMW) S23 S22 S21 010: (1 + N) waits 110: 4 waits 011: 0 waits 111: 8 waits S20 000: 2 waits 100: (0 + N) waits 001: 1 wait 101: 3 waits 010: (1 + N) waits 110: 4 waits 011: 0 waits 111: 8 waits S19 S18 S17 S16 1 1 1 1 V16 V15 V14 to 9 V8 1 1 1 1 R/W C8H 1 1 1 V20 V19 V18 1 Start address A23 to A16. C9H V17 R/W 1 1 1 1 CS0 area size S23 CAH S22 S21 0: Enable to address comparison S20 S19 S18 S17 S16 1 1 1 1 V17 V16 V15 to 9 V8 1 1 1 R/W 1 1 1 V21 V20 V19 1 Start address A23 to A16. CBH V18 R/W 1 1 1 CS1 area size 91C025-242 1 0: Enable to address comparison 2007-02-28 TMP91C025 Interrupt control (2/2) Symbol Name Address Memory MSAR2 start address CCH 7 6 5 4 S23 S22 S21 S20 1 1 V22 CDH V21 1 V20 1 1 mask register 3 V19 1 S23 CEH S22 1 S21 S19 S18 S17 S16 1 1 1 1 V18 V17 V16 V15 1 1 1 1 0: Enable to address comparison S20 S19 S18 S17 S16 1 1 1 1 V18 V17 V16 V15 1 1 1 1 R/W 1 1 1 register 3 MAMR3 1 CS2 area size Memory Memory address 0 R/W register 2 MSAR3 1 Start address A23 to A16. Memory start address 2 R/W register 2 address MAMR2 mask 3 1 Start address A23 to A16. V22 CFH V21 V20 V19 R/W 1 1 1 CS3 area size 91C025-243 1 0: Enable to address comparison 2007-02-28 TMP91C025 (5) Clock gear (1/2) Symbol Name Address 7 6 5 4 XEN XTEN RXEN RXTEN 3 2 1 0 RSYSCK WUEF PRCK1 PRCK0 0 0 0 R/W 1 Highfrequency System SYSCR0 clock control E0H oscillator. (fc) 0: Stopped register 0 1 1 0 HighLowLowfrequency frequency frequency oscillator. oscillator oscillator 0 Select Warm-up Select prescaler clock. clock after timer release of 0 write: 00: fFPH (fs) (fc) after (fs) after STOP 0: Stopped release release of STOP Mode. 0: fc 01: reserved Don’t care 10: fc/16 1 write: 11: Reserved start timer Mode. Mode. 1: fs 0 read: end 0: Stopped 0: Stopped 1: Oscillation 1: Oscillation of STOP warm-up 1 read: 1: Oscillation 1: Oscillation not end warm up SYSCK GEAR2 0 1 GEAR1 GEAR0 0 0 R/W SYSCR1 System clock control register 1 E1H System clock High-frequency gear value selection. (fc) selection 0: fc 000: fc 001: fc/2 1: fs 010: fc/4 011: fc/8 100: fc/16 101: (Reserved) 110: (Reserved) 111: (Reserved) SYSCR2 System clock control register 2 E2H PSENV WUPTM1 WUPTM0 HALTM1 HALTM0 SELDRV DRVE R/W R/W R/W R/W R/W R/W R/W 0 1 0 1 1 0 0 0: Power save mode enable Warm-up time 00: Reserved 8 01: 2 /input frequency 1: Disable 10: 2 14 16 11: 2 91C025-244 00: Reserved 01: STOP mode 10: IDLE1 mode 11: IDLE2 mode <Drive> mode select 0: IDLE1 1: STOP 1: Drive the pin in STOP/ IDLE1mode 2007-02-28 TMP91C025 Clock gear (1/2) Symbol Name Address 7 6 EMCCR0 control E3H register 0 4 3 2 1 0 AHOLD TA3MLDE − EXTIN R R/W R/W R/W R/W R/W R/W R/W 0 0 0 0 0 0 1 1 PROTECT TA3LCDE EMC 5 Protection Address MLD Always hold 0: Normal source clock write 0. flag LCDC Source 0: Off clock 1: On 0: 32 kHz 1: Hold 1: TA3OUT 1: fc is DRVOSCH DRVOSCL fc oscillator fs oscillator external drivability clock. 1: Normal 0: 32 kHz 0: Weak drivebility 1: Normal 0: Weak 1: TA3OUT EMC EMCCR1 control E4H Switching the protect ON/OFF by write to following 1st-KEY, 2nd-KEY register 1 1st-KEY: EMCCR1 = 5AH, EMCCR2 = A5H in succession write EMC EMCCR2 control 2nd-KEY: EMCCR1 = A5H, EMCCR2 = 5AH in succession write E5H register 2 ENFROM E6H FFLAG DFLAG PFLAG R/W R/W R/W R/W R/W R/W 0 0 0 0 0 CS1A CS1A CS2B-2C CS2A area detect area detect area detect EMC EMCCR3 control register 3 ENDROM ENPROM 0 CS2B-2C write write operation operation flag flag enable enable enable 0: Disable 0: Disable 0: Disable 1: Enable 1: Enable 1: Enable CS2A write operation flag When reading When writing 0: Not written 1: Written 0: Clear flag (6) DFM (clock doubler) Symbol Name DFM DFMCR0 control register 0 DFM DFMCR1 control register 1 Address E8H 7 6 5 4 ACT1 ACT0 DLUPFG DLUPTM R/W R/W R R/W 0 0 0 0 DFM LUP fFPH Lockup 00 STOP STOP fOSCH falg 3 2 1 0 Lockup time 12 01 RUN RUN fOSCH 0: End LUP 0: 2 /fOSCH 10 10 RUN STOP fDFM 1: Not end 1: 2 /fOSCH 11 RUN STOP fOSCH E9H D7 D6 D5 D4 D3 D2 D1 D0 R/W R/W R/W R/W R/W R/W R/W R/W 0 0 0 1 0 0 1 1 DFM correction Input frequency 4 to 9 MHz (at 3.0 to 3.6 V): Write 0BH Input frequency 4 to 6.75 MHz (at 2.7 to 3.6 V): Write 0BH 91C025-245 2007-02-28 TMP91C025 (7) 8-bit timer (7−1) TMRA01 Symbol Name Address 8-bit timer TA01RUN RUN 100H register 7 6 5 4 3 TA0RDE I2TA01 R/W R/W 0 Double Buffer 0: Disable 1: Enable 102H − W register 0 RMW) Undefined 8-bit 103H − TA1REG timer register 1 (Prohibit W RMW) Undefined TA01M1 TA01M0 PWM01 PWM00 timer source CLK and 104H MODE TA1FFCR 8-bit timer flip-flop control 0 TA01PRUN TA1RUN R/W TA0RUN R/W R/W TA1CLK1 TA1CLK0 TA0CLK1 0 TA0CLK0 R/W 8-bit TA01MOD 1 0 0 0 IDLE2 8-bit timer run/stop control 0: Stop 0: Stop and clear 1: Operate 1: Run (Count up) (Prohibit 8-bit TA0REG timer 2 0 00: 8-bit timer 01: 16-bit timer 10: 8-bit PPG 11: 8-bit PWM 0 0 0 00: Reserved 6 01: 2 PWM cycle 7 10: 2 8 11: 2 0 00: TA0TRG 01: φT1 10: φT16 11: φT256 0 TA1FFC1 TA1FFC0 0 00: TA0IN pin 01: φT1 10: φT4 11: φT16 TA1FFIE R/W 105H RMW) TA1FFIS R/W 1 1 00: Invert TA1FF 01: Set TA1FF 10: Clear TA1FF 11: Don’t care (Prohibit 0 0 0 1: TA1FF 0: TMRA0 1: TMRA1 invert inversion enable (7−2) TMRA23 Symbol Name 8-bit timer TA23RUN RUN register Address 108H TA2REG 8-bit timer register 0 10AH (Prohibit RMW) TA3REG 8-bit timer register 1 10BH (Prohibit RMW) 7 8-bit timer TA3FFCR flip-flop control 5 4 3 TA2RDE I2TA23 R/W R/W 0 Double buffer 0: Disable 1: Enable 2 1 0 TA23PRUN TA3RUN R/W TA2RUN R/W R/W 0 0 0 8-bit timer run/stop control IDLE2 0: Stop and clear 0: Stop 1: Operate 1: Run (Count up) 0 − W Undefined − W Undefined TA23M1 8-bit timer TA23MOD source CLK and MODE 6 TA23M0 PWM21 PWM20 TA3CLK1 TA3CLK0 TA2CLK1 TA2CLK0 R/W 10CH 0 0 00: 8-bit timer 01: 16-bit timer 10: 8-bit PPG 11: 8-bit PWM 0 0 00: Reserved 6 01: 2 PWM cycle 7 10: 2 8 11: 2 0 00: TA2TRG 01: φT1 10: φT16 11: φT256 0 TA3FFC1 TA3FFC0 0 00: Reserved 01: φT1 10: φT4 11: φT16 TA3FFIE R/W 10DH 1 1 00: Invert TA3FF 01: Set TA3FF 10: Clear TA3FF 11: Don’t care (Prohibit RMW) 91C025-246 0 TA3FFIS R/W 0 1: TA3FF invert enable 0 0: TMRA2 1: TMRA3 inversion 2007-02-28 TMP91C025 (8) UART/serial channel (1/2) (8-1) UART/SIO channel 0 Symbol Name Serial SC0BUF channel 0 buffer Address 7 6 5 200H RB7/TB7 RB6/TB6 RB5/TB5 (Prohibit 3 2 1 0 RB4/TB4 RB3/TB3 RB2/TB2 RB1/TB1 RB0/TB0 SCLKS IOC R (Receiving)/W (Transmission) RMW) Undefined RB8 EVEN R Serial SC0CR channel 0 4 201H control PE R/W Undefined 0 Receiving Parity data bit8. 0: Odd 1: Even TB8 PERR FERR R (Cleared to 0 by reading.) 0 Parity enable. CTSE OERR RXE 0 0 R/W 0 1: Error 0 0 0:SCLK0↑ 1: Input Framing 1:SCLK0↓ SCLK0 pin Over Run Parity WU SM1 SM0 SC1 SC0 0 0 0 0 R/W Serial SC0MOD0 channel 0 202H 0 Transfer data bit8. mode0 0 0 1: CTS enable 0 1: Receive 1: Wakeup 00: I/O Interface enable enable 01: UART 7 bits 00: TA0TRG 01: Baud rate generator 10: UART 8 bits 10: Internal clock fSYS 11: UART 9 bits 11: External clock SCLK0 − BR0ADDE BR0CK1 BR0CK0 BR0S3 BR0S2 BR0S1 BR0S0 0 0 0 0 R/W BR0CR BR0ADD Baud rate control Serial channel0 K setting register Serial SC0MOD1 channel 0 mode1 0 203H Always write 0. 0 0 0 1: (16-K)/16 00: φT0 divided 01: φT2 enable 10: φT8 11: φT32 Setting the divided frequency “N” (0 to F) BR0K3 BR0K2 BR0K1 BR0K0 R/W 204H 205H 0 I2S0 FDPX0 R/W R/W 0 0 0 0 Sets frequency divisor “K” (Divided by N+(16-K)/16) 0 IDLE2 Duplex 0: Stop 0: Half 1: Operate 1: Full (8-2) IrDA Symbol Name IrDA SIRCR control register Address 207H 7 6 5 4 3 2 PLSEL RXSEL TXEN RXEN SIRWD3 SIRWD2 R/W R/W R/W R/W 0 0 0 0 1 0 SIRWD1 SIRWD0 R/W 0 0 0 0 Set the effective SIRRxD pulse width 0: Disable 0: Disable Pulse width more than 2x × (set value + 1) + pulse width. data. 0: 3/16 0: H pulse 1: Enable 1: Enable 100ns 1: 1/16 1: L pulse Possible: 1 to 14 Not possible: 0, 15 Transmission Receiving Transmission Receiving 91C025-247 2007-02-28 TMP91C025 Clock gear (2/2) (8-3) UART/SIO channel 0 Symbol Name Serial SC1BUF channel 1 buffer Address 7 6 5 208H RB7/TB7 RB6/TB6 RB5/TB5 (Prohibit EVEN R 209H control 2 1 0 RB4/TB4 RB3/TB3 RB2/TB2 RB1/TB1 RB0/TB0 SCLKS IOC Undefined RB8 SC1CR channel 1 3 R (Receiving)/W (Transmission) RMW) Serial 4 Undefined PE R/W 0 Receiving Parity data bit8. 0: Odd OERR PERR FERR R (Cleared to 0 by reading.) 0 0 0 1:Parity R/W 0 0 0 0: SCLK1↑ 1: Input 1: Error Framing 1: SCLK1↓ SCLK1 pin enable Over run Parity SM1 SM0 0 0 1: Even TB8 CTSE RXE WU 0 0 0 0 SC1 SC0 0 0 R/W Serial SC1MOD0 channel 1 Trans20AH mode mission 1: CTS 1: Receive 1: Wakeup 00: I/O interface enable enable enable data bit8. 00: TA0TRG 01: UART 7 bits 01: Baud rate 10: UART 8 bits 11: UART 9 bits generater 10: Internal clock fSYS 11: External clock SCLK1 − BR1ADDE BR1CK1 BR1CK0 BR1S3 BR1S2 BR1S1 BR1S0 0 0 0 0 R/W BR1CR Baud rate control 0 20BH Always write 0. 0 0 0 1: (16 − K)/16 00: φT0 divided enable Setting the divided frequency “N” (0 to F) 01: φT2 10: φT8 11: φT32 BR1ADD Serial channel 1 K setting register Serial SC1MOD1 channel 1 mode1 BR1K3 BR1K2 BR1K1 BR1K0 R/W 20CH 0 0 0 Sets frequency divisor “K” 0 (Divided by N+(16-K)/16) 20DH I2S1 FDPX1 R/W R/W 0 0 IDLE2 Duplex 0: Stop 0: Half 1: Operate 1: Full 91C025-248 2007-02-28 TMP91C025 (9) AD converter Symbol Name Address 7 6 EOCF 5 ADBF R AD ADMOD0 MODE 0 2B0H register 0 AD ADMOD1 MODE 2B1H 0 4 3 2 1 0 − − ITM0 REPEAT SCAN ADS R/W R/W R/W R/W R/W R/W 0 0 0 0 0 0 AD Always Always write Interrupt in Repeat Scan mode conversion conversion write 0. 0. Repeat mode specification conversion end flag end flag Mode. specification 1: Scan start 1: End 1: busy 1: Repeat 1: Start VREFON I2AD ADTRGE R/W R/W R/W 0 0 0 VREF IDLE2 AD control Input channel control 0: Abort 1: Enable ADCH2 ADCH1 ADCH0 R/W 0 0 0 000: AN0 AN0 for 001: AN1 AN0 → AN1 external 010: AN2 AN0 → AN1 → AN2 start 011: AN3 AN0 → AN1 → AN2 → 1: VREF on 1: Operate register 1 AD AD AN3 100-111: Reserved ADR01 AD result ADREG04L register 0/4 2A0H low AD result ADREG04H register 0/4 ADR00 ADR0RF R R Undefined 0 ADR09 ADR08 ADR07 AD result register 1/5 ADR11 2A2H ADR10 R Undefined 0 ADR18 ADR17 ADR15 ADR14 ADR13 ADR12 R Undefined ADR21 2A4H low ADR20 ADR2RF R R Undefined ADR29 0 ADR28 ADR27 ADR26 2A5H ADR25 ADR24 ADR23 ADR22 R high AD result ADREG37H register 3/7 high ADR16 2A3H AD result AD result ADREG37L register 3/7 low ADR02 ADR1RF high AD result ADREG26H register 2/6 ADR03 R ADR19 AD result ADREG26L register 2/6 ADR04 Undefined low ADREG15H register 1/5 ADR05 R high ADREG15L ADR06 2A1H Undefined ADR31 2A6H ADR30 ADR3RF R R Undefined ADR39 0 ADR38 ADR37 2A7H ADR36 ADR35 ADR34 ADR33 ADR32 R Undefined 91C025-249 2007-02-28 TMP91C025 (10) Watchdog timer Symbol Name Address WDT WDMOD MODE 7 6 5 WDTE WDTP1 R/W R/W 1 0 1: WDT 300H register enable 4 3 2 1 WDTP0 I2WDT RESCR − R/W R/W R/W R/W 0 0 0 0 15 00: 2 /fsys 17 01: 2 /fsys IDLE2 0: Abort 1: Operate 19 10: 2 /fsys 21 11: 2 /fsys 0 1: RESET Always connect write 0. internally WDT out to reset pin − 301H WDT WDCR control W − (Prohibit RMW) B1H: WDT disable 91C025-250 4EH: WDT clear 2007-02-28 TMP91C025 (11) RTC (Real-time clock) Symbol SECR Name Second register Address 7 Minute register Hour register 4 SE6 SE5 SE4 320H 3 2 1 0 SE3 SE2 SE1 SE0 Undefined 40 s 20 s 10 s 8s 4s 2s 1s MI6 MI5 MI4 MI3 MI2 MI1 MI0 4 min 2 min 1min HO2 HO1 HO0 4 hour 2 hour 1 hour W2 W1 W0 R/W 321H Undefined 0 is read. HOURR 5 R/W 0 is read. MINR 6 40 min 20 min 10 min 8 min HO5 HO4 HO3 R/W 322H Undefined 0 is read. 20 hour 10 hour 8 hour (PM/AM) DAYR Day register R/W 323H Undefined 0 is read DA5 DATER Date register DA4 DA3 W2 W1 W0 DA2 DA1 DA0 R/W 324H Undefined 0 is read. 20 day 10 day 8 day 4 day 2 day 1 day MO4 MO3 MO2 MO1 MO0 325H R/W Undefined MONTHR Month Page0 0 is read. 10 month 4 month 2 month 0 is read. YE7 YE6 YE5 YE4 326H YE2 YE1 YE0 4 year 2 year 1 year Undefined Page0 80 year 40 year 20 year Page1 10 year 327H (Prohibit RMW) 8 year 0 is read. INTRTC Leap year setting. ADJUST ENATMR ENAALM PAGE R/W W R/W R/W 0 Undefined Undefined Undefined INTRTC 0: Disable 1: Enable DIS1HZ Reset RESTR register YE3 R/W Year register Page PAGER register 1 month 0: Indicator for 12 hours 1: Indicator for 24 hours register Page1 YEARR 8 month 0 is read. DIS16HZ 0: Clock Alarm Don’t care 0: Disable 0: Disable 1: Adjust 1: Enable 1: Enable 0 is read. PAGE setting − − − RSTTMR RSTALM − W 328H Undefined (Prohibit RMW) 1Hz 16Hz 1: Clock 0: Enable 0: Enable reset 1: Disable 1: Disable 1: Alarm reset 91C025-251 Always write 0. 2007-02-28 TMP91C025 (12) Melody/alarm generator Symbol Name Address AlarmALM pattern 330H register 7 6 5 4 AL8 AL7 AL6 AL5 3 2 1 0 AL4 AL3 AL2 AL1 0 0 0 0 R/W 0 0 0 0 Alarm-pattern set. FC1 FC0 R/W Melody/ MELALMC 331H alarm control register 0 0 ALMINV – – – – MELALM R/W R/W R/W R/W R/W R/W 0 0 0 0 0 0 Free-run counter Alarm Always write 0. Output Control. frequency frequency 00: Hold 01: Restart invert. 1: Invert 0: Alarm 1: Melody 10: Clear 11: Clear and start ML7 Melody MELFL frequency 332H L- register ML6 ML5 ML4 ML3 ML2 ML1 ML0 0 0 0 0 ML9 ML8 0 0 R/W 0 0 0 0 Melody frequency set. (Low 8 bits) MELON ML11 ML10 R/W R/W 0 Melody MELFH frequency H- register 0 Melody 333H 0 Melody frequency set. (High 4 bits) counter control. 0: Stop and clear 1: Start ALMINT Alarm interrupt enable register – IALM4E IALM3E 0 0 R/W 334H 0 Always write 0. 91C025-252 IALM2E IALM1E IALM0E 0 0 R/W 0 INTALM4 to INTALM0 alarm interrupt enable. 2007-02-28 TMP91C025 (13) MMU Symbol Name Address 7 6 5 4 3 L0E 2 1 0 L0EA22 L0EA21 L0EA20 R/W LOCAL0 LOCAL0 control 350H register R/W 0 BANK for LOCAL0 0: Disable 1: Enable 0 0 “000” setting is prohibited because it pretend COMMON0 area L1E L1EA23 L1EA22 R/W LOCAL1 LOCAL1 control 351H register 0 BANK for LOCAL1 0: Disable 1: Enable 0 0 352H register LOCAL3 LOCAL3 control register 353H 0 LOCAL1 area BANK set. “001” setting is prohibited because it pretend COMMON0 area L2EA23 L2EA22 R/W LOCAL2 L1EA21 R/W L2E LOCAL2 control 0 LOCAL0 area BANK set. L2EA21 R/W 0 BANK for LOCAL2 0: Disable 1: Enable 0 0 0 LOCAL2 area BANK set. “111” setting is prohibited because it pretend COMMON0 area L3E – R/W R/W 0 BANK for LOCAL3 0: Disable 1: Enable Always write 0. 0 L3EA25 L3EA24 L3EA23 L3EA22 R/W 0 0 0000~0011: CS2B 0100~0111: CS2C 0 0 1000~1111: Set prohibition 91C025-253 2007-02-28 TMP91C025 (14) LCD controllers Symbol Name Address address register 6 SAL15 SAL14 5 4 SAL13 SAL12 3 R/W LCD start LCDSAL 7 0 360H 0 0 0 SR mode: Start address A15 to A12. low 2 1 0 − − MODE R/W R/W R/W 0 0 Always write 0. Always write 0. 0 Mode select 0: RAM 1: SR SAL23 LCD start address LCDSAH register 361H SAL22 SAL21 SAL20 SAL19 SAL18 SAL17 SAL16 0 0 0 R/W 0 0 0 high 0 0 SR mode: Start Address A23 to A16. COM3 COM2 COM1 COM0 SEG3 SEG2 SEG1 SEG0 0 0 0 0 FP8 START 0 0 R/W 0 LCDSIZE LCD size register 362H 0 0 0 SR mode :LCD common SR mode LCD Segment 0000: 64, 0101: 128 0001: 68, 0110: 144 0000: 32, 0101: 160 0001: 64, 0110: 240 0010: 80, 0111: 320 0010: 80, 0111: 160 0011: 100, 1000: 200 0100: 120, 1001: 240 LCDON − Other: Reserved − 0011: 120, 1000: 360 0100: 128, Other: Reserved BUS1 BUS0 MMULCD 0 0 R/W LCDCTL LCD control register 363H 0 0 0 DOFF pin Always write 0. Always write 0. 0: Off 1: On 0 SR mode: Type Data-bus width select. selection 00: 8 bits Byte LCDD 01: 4 bits Nibble 10: Reserved 11: Reserved Set bit8 for SR mode: fFP Start address. (build in RAM) 0: 1: START Sequential 1: Random LCDFFP LCDCTL2 LCD frame frequency register LCD control register 2 364H FP7 FP6 FP5 FP4 0 0 0 0 FP3 FP2 FP1 FP0 0 0 0 0 R/W Set bit7 to bit0 for fFP 366H − − − RAMBUS AC1 AC0 R/W R/W R/W R/W R/W R/W 0 0 0 0 0 0 Always write to “111”. 91C025-254 0: Byte 1: Word 00: Type A 01: Type B 10: Type C 11: Reserved 2007-02-28 TMP91C025 (15) Touch screen interface Symbol Name Address Touchscreen TSICR0 control 2BH 5 4 3 2 1 0 TSI7 7 6 PTST TWIEN PYEN PXEN MYEN MXEN R/W R R/W R/W R/W R/W R/W 0 0 0 0 0 0 0 SPY 0: OFF SPX 0: OFF SMY 0: OFF SMX 0: OFF 1: ON 1: ON 1: ON 1: ON 0: Disable Detection 1: Enable condition register 0: No touch control 1: touch TSICR1 Debouncecircuit control register INT2 interrupt 2CH 0: Disable 1: Enable DBC7 DB1024 DB256 DB64 DB8 DB4 DB2 DB1 R/W R/W R/W R/W R/W R/W R/W R/W 0 0 0 0 0 0 0 0 1024 256 64 8 4 2 1 0: Disable 1: Enable De-bounce time is set by “(N × 64 – 16)/fSYS” – formula “N” is sum of number which is set to 1 in bit6 to bit0 91C025-255 2007-02-28 TMP91C025 6. Points of Note and Restrictions (1) Notation a. The notation for built-in I/O registers is as follows register symbol <Bit symbol> e.g.) b. TA01RUN<TA0RUN> denotes bit TA0RUN of register TA01RUN. Read-modify-write instructions An instruction in which the CPU reads data from memory and writes the data to the same memory location in one instruction. • Example 1: SET 3, (TA01RUN) ... Set bit 3 of TA01RUN. Example 2: INC 1, (100H) ... Increment the data at 100H. Examples of read-modify-write instructions on the TLCS-900 Exchange instruction EX (mem), R Arithmetic operations ADD (mem), R/# ADC (mem), R/# SUB (mem), R/# SBC (mem), R/# INC #3, (mem) DEC #3, (mem) OR (mem), R/# Logic operations AND (mem), R/# XOR (mem), R/# Bit manipulation operations STCF #3/A, (mem) RES #3, (mem) SET #3, (mem) CHG #3, (mem) TSET #3, (mem) Rotate and shift operations c. RLC (mem) RRC (mem) RL (mem) RR (mem) SLA (mem) SRA (mem) SLL (mem) SRL (mem) RLD (mem) RRD (mem) fc, fs, fFPH, fSYS and one state The clock frequency input on pins X1 and 2 is called fOSCH. The clock selected by DFMCR0<ACT1:0> is called fc. The clock selected by SYSCR1<SYSCK> is called fFPH. The clock frequency give by fFPH divided by 2 is called fSYS. One cycle of fSYS is referred to as one state. 91C025-256 2007-02-28 TMP91C025 (2) Points to note a. AM0 and AM1 pins This pin is connected to the VCC or the VSS pin. Do not alter the level when the pin is active. b. EMU0 and EMU1 Open pins. c. Warm-up counter The warm-up counter operates when STOP mode is released, even if the system is using an external oscillator. As a result a time equivalent to the warm-up time elapses between input of the release request and output of the system clock. d. Programmable pull-up resistance The programmable pull-up resistor can be turned on/off by a program when the ports are set for use as input ports. When the ports are set for use as output ports, they cannot be turned on/off by a program. The data registers (e.g., Px) are used to turn the pull-up/pull-down resistors on/off. Consequently Read-Modify-write instructions are prohibited. e. Watchdog timer The watchdog timer starts operation immediately after a Reset is released. When the watchdog timer is not to be used, disable it. f. AD converter The string resistor between the VREFH and VREFL pins can be cut by a program so as to reduce power consumption. When STOP mode is used, disable the resistor using the program before the HALT instruction is executed. g. CPU (micro DMA) Only the LDC cr, r and LDC r, cr instructions can be used to access the control registers in the CPU (e.g., The transfer source address register (DMASn)). h. Undefined SFR The value of an undefined bit in an SFR is undefined when read. i. POP SR instruction Please execute the POP SR instruction during DI condition. j. Releasing the HALT mode by requesting an interruption Usually, interrupts can release all halts status. However, the interrupts (INT0 to INT3, INTKEY, INTRTC, INTALM0 to INTALM4) which can release the HALT mode may not be able to do so if they are input during the period CPU is shifting to the HALT mode (for about 5 clocks of fFPH) with IDLE1 or STOP mode (IDLE2 is not applicable to this case). (In this case, an interrupt request is kept on hold internally) If another interrupt is generated after it has shifted to HALT mode completely, halt status can be released without difficulty. The priority of this interrupt is compared with that of the interrupt kept on hold internally, and the interrupt with higher priority is handled first followed by the other interrupt. 91C025-257 2007-02-28 TMP91C025 7. Package Dimensions P-LQFP100-1414-0.50F Unit: mm 91C025-258 2007-02-28