C509-L ht User's Manual 10.97 tp :/ Se /ww m w ic .s on ie du me ct ns or .d / e/ 8-Bit CMOS Microcontroller C509-L Data Sheet Revision History : 10.97 Previous Releases : 06.96 (Original Version) Page (new version) Page (prev. Subjects (changes since last revision) version) 1-6 1-11 3-1 3-12 1-6 1-11 3-1 3-12 4-12 6-6 6-28 6-78 6-85 6-88 6-93 7-13 7-16 11-1 11-3, 11-4 11-1, 11-5, 11-7 11-7 to11-9 Duty cycle for XTAL2 corrected RESET : correction in text “for the duration of two machine cycles“ Correction in text : XRAM is internal 1st paragraph: sentence “Bit Swap is ...” added; Table 3-2: Text in right column corrected Figure 3-7; corrected and improved Last paragraph og 4.4.2 : last sentence deleted Correction in figure 6-4 and text : “Delay = 1 state“ Correction in text 2nd paragraph : “consists of three ...“ Abbreviations below table 6-10 added Name of bit T1P2 corrected to T2P0 Formula for mode 1,3 baud rate corrected; last sentence added Formula for mode A,B baud rate corrected Several references in the text corrected from IRCON to IRCON0 Description of ICR and ICS added VIL2 modified Improved and extended ICC specification VCC min. changed from 5V - 15% to 5V - 5% 4-12 6-6 6-28 6-78 6-85 6-88 6-93 7-13 7-16 11-1 11-3 11-1, 11-5, 11-7 11-6 to11-8 AC characteristics : 16 MHz clock oscillator duty cycle (DC) for external clock changed to 0.45 to 0.55 Chapter 12 Chapter 12 Improved index; bold page numbers for main definition reference Edition 10.97 Published by Siemens AG, Bereich Halbleiter, MarketingKommunikation, Balanstraße 73, 81541 München © Siemens AG 1997 All Rights Reserved. Attention please! As far as patents or other rights of third parties are concerned, liability is only assumed for components, not for applications, processes and circuits implemented within components or assemblies. The information describes the type of component and shall not be considered as assured characteristics. Terms of delivery and rights to change design reserved. For questions on technology, delivery and prices please contact the Semiconductor Group Offices in Germany or the Siemens Companies and Representatives worldwide (see address list). Due to technical requirements components may contain dangerous substances. For information on the types in question please contact your nearest Siemens Office, Semiconductor Group. Siemens AG is an approved CECC manufacturer. Packing Please use the recycling operators known to you. We can also help you – get in touch with your nearest sales office. By agreement we will take packing material back, if it is sorted. You must bear the costs of transport. For packing material that is returned to us unsorted or which we are not obliged to accept, we shall have to invoice you for any costs incurred. Components used in life-support devices or systems must be expressly authorized for such purpose! Critical components1 of the Semiconductor Group of Siemens AG, may only be used in life-support devices or systems2 with the express written approval of the Semiconductor Group of Siemens AG. 1 A critical component is a component used in a life-support device or system whose failure can reasonably be expected to cause the failure of that life-support device or system, or to affect its safety or effectiveness of that device or system. 2 Life support devices or systems are intended (a) to be implanted in the human body, or (b) to support and/or maintain and sustain human life. If they fail, it is reasonable to assume that the health of the user may be endangered. General Information C509-L Table of Contents Page 1 1.1 1.2 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1 Pin Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-4 Pin Definitions and Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-5 2 2.1 2.2 Fundamental Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1 CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-3 CPU Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-5 3 3.1 3.2 3.3 3.4 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.6 3.4.7 3.4.7.1 3.4.7.2 3.4.7.3 3.4.8 3.5 Memory Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1 Program Memory, “Code Space” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2 Data Memory, “Data Space” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2 General Purpose Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2 Program and Data Memory Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 Interface of External FLASH/ROM/EPROM and External SRAM Memory. . . . . . . . 3-4 Normal Mode Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5 XRAM Mode Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6 Bootstrap Mode Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-7 Programming Mode Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-8 Special Function Register SYSCON1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-10 Operating Mode (Chipmode) Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-12 Special Software Unlock Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-13 Control Signals of the Chipmodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-14 Switching of the SWAP-Bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-15 Watchdog Timer - Behaviour in the Different Operating Modes . . . . . . . . . . . . . . . 3-16 Special Function Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-17 4 4.1 4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.2 4.3 4.3.1 4.3.2 4.3.3 4.3.4 4.4 4.4.1 4.4.2 4.4.3 4.4.4 4.4.5 External Bus Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1 Accessing External Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1 Role of P0 and P2 as Data/Address Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1 Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2 External Program Memory Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2 PSEN, Program Store Enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2 Overlapping External Data and Program Memory Spaces. . . . . . . . . . . . . . . . . . . . 4-2 ALE, Address Latch Enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4 Enhanced Hooks Emulation Concept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-5 Eight Datapointers for Faster External Bus Access . . . . . . . . . . . . . . . . . . . . . . . . . 4-6 The Importance of Additional Datapointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-6 How the Eight Datapointers of the C509-L are Realized . . . . . . . . . . . . . . . . . . . . . 4-6 Advantages of Multiple Datapointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-7 Application Example and Performance Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-7 XRAM Operation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-10 XRAM Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-10 Accesses to XRAM using the DPTR (16-bit Addressing Mode) . . . . . . . . . . . . . . . 4-12 Accesses to XRAM using the Registers R0/R1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-12 Reset Operation of the XRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-16 Behaviour of Port0 and Port2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-16 Semiconductor Group 1-1 1997-10-01 General Information C509-L Table of Contents Page 5 5.1 5.2 5.3 5.4 5.5 5.6 Reset and System Clock Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reset Function and Circuitries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hardware Reset Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fast Internal Reset after Power-On . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reset Output Pin (RO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Oscillator and Clock Circuit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . System Clock Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6.1 6.1.1 6.1.1.1 6.1.1.2 6.1.1.2.1 6.1.1.2.2 6.1.1.2.3 6.1.1.3 6.1.1.3.1 6.1.1.3.2 6.1.1.3.3 6.1.2 6.1.3 6.1.3.1 6.1.3.2 6.1.3.3 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.1.1 6.3.1.2 6.3.1.2.1 6.3.1.2.2 6.3.1.2.3 6.3.2 6.3.2.1 6.3.2.2 6.3.3 6.3.3.1 6.3.3.2 6.3.3.3 6.3.4 On-Chip Peripheral Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1 Parallel I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1 Port Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1 Port Structure Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-3 Quasi-Bidirectional Port Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-5 Basic Port Circuitry of Port 1 to 6 and 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-5 Port 0 Circuitry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-8 Port 0 and Port 2 used as Address/Data Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-9 Bidirectional (CMOS) Port Structure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-10 Input Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-10 Output Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-11 Hardware Power Down Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-13 Alternate Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-14 Port Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-16 Port Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-16 Port Loading and Interfacing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-17 Read-Modify-Write Feature of Ports 1 to 6 and 9 . . . . . . . . . . . . . . . . . . . . . . . . . . 6-17 Timer/Counter 0 and 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-19 Timer/Counter 0 / 1 Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-20 Mode 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-24 Mode 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-25 Mode 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-26 Mode 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-27 The Compare/Capture Unit (CCU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-28 Timer 2 Operation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-33 Timer 2 Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-33 Timer 2 Operating Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-36 Gated Timer Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-37 Event Counter Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-37 Reload of Timer 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-37 Operation of the Compare Timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-39 Compare Timer and Compare Timer 1 Registers. . . . . . . . . . . . . . . . . . . . . . . . . . 6-39 Operating Modes of the Compare Timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-42 Compare Functions of the CCU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-44 Compare Mode 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-45 Compare Mode 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-47 Compare Mode 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-48 Timer- and Compare-Register Configurations of the CCU . . . . . . . . . . . . . . . . . . . 6-49 Semiconductor Group 1-2 5-1 5-1 5-3 5-4 5-6 5-6 5-8 1997-10-01 General Information C509-L Table of Contents 6.3.4.1 6.3.4.2 6.3.4.3 6.3.4.4 6.3.4.4.1 6.3.4.4.2 6.3.4.5 6.3.4.6 6.3.4.6.1 6.3.4.6.2 6.3.5 6.3.6 6.3.6.1 6.3.6.2 6.3.6.3 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.1.1 6.5.1.2 6.5.1.3 6.5.2 6.5.2.1 6.5.2.2 6.5.2.3 6.5.3 6.5.3.1 6.5.3.2 6.5.3.3 6.5.3.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.6.6 Page Timer 2 - Compare Function with Registers CRC, CC1 to CC3 . . . . . . . . . . . . . . . 6-50 Timer 2 - Capture Function with Registers CRC, CC1 to CC4 . . . . . . . . . . . . . . . . 6-53 Compare Function of Register CC4; “Concurrent Compare” . . . . . . . . . . . . . . . . . 6-55 Compare Function of Registers CM0 to CM7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-59 CMx Registers Assigned to the Compare Timer . . . . . . . . . . . . . . . . . . . . . . . . . . 6-60 CMx Registers Assigned to the Timer 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-63 Timer 2 Operating in Compare Mode 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-64 Compare / Capture Operation with Compare Timer 1 . . . . . . . . . . . . . . . . . . . . . . 6-65 Compare Function of Registers CC10 to CC17 . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-66 Capture Function of Registers CC10 to CC17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-68 Modulation Range in Compare Mode 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-69 Using Interrupts in Combination with the Compare Function . . . . . . . . . . . . . . . . . 6-71 Some advantages in using compare interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-71 Interrupt Enable Bits of the Compare/Capture Unit . . . . . . . . . . . . . . . . . . . . . . . . 6-73 Interrupt Flags of the Compare/Capture Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-74 Arithmetic Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-75 MDU Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-75 Operation of the MDU. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-77 Multiplication/Division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-78 Normalize and Shift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-79 The Overflow Flag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-80 The Error Flag. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-80 Serial Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-82 Serial Interface 0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-82 Operating Modes of Serial Interface 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-82 Multiprocessor Communication Feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-83 Baud Rates of Serial Channel 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-85 Serial Interface 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-90 Operating Modes of Serial Interface 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-90 Multiprocessor Communication Feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-92 Baud Rates of Serial Channel 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-92 Detailed Description of the Operating Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-94 Mode 0, Synchronous Mode (Serial Interface 0) . . . . . . . . . . . . . . . . . . . . . . . . . . 6-94 Mode 1/Mode B, 8-Bit UART (Serial Interfaces 0 and 1) . . . . . . . . . . . . . . . . . . . . 6-97 Mode 2, 9-Bit UART (Serial Interface 0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-100 Mode 3 / Mode A, 9-Bit UART (Serial Interfaces 0 and 1) . . . . . . . . . . . . . . . . . . 6-100 A/D Converter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-104 A/D Converter Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-104 A/D Converter Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-107 A/D Converter Clock Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-111 A/D Conversion Timing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-112 Adjustment of the Sample Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-116 A/D Converter Calibration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-118 Semiconductor Group 1-3 1997-10-01 General Information C509-L Table of Contents Page 7 7.1 7.2 7.2.1 7.2.2 7.2.3 7.3 7.4 7.5 7.6 Interrupt System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-1 Structure of the Interrupt System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-1 Interrupt Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-6 Interrupt Enable Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-6 Interrupt Priority Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-10 Interrupt Request Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-11 Interrupt Priority Level Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-17 How Interrupts are Handled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-19 External Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-21 Interrupt Response Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-22 8 8.1 8.1.1 8.1.2 8.1.3 8.1.3.1 8.1.3.2 8.1.4 8.1.5 8.2 Fail Save Mechanisms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programmable Watchdog Timer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Input Clock Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Watchdog Timer Control Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Starting the Watchdog Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The First Possibility of Starting the Watchdog Timer . . . . . . . . . . . . . . . . . . . . . . . . The Second Possibility of Starting the Watchdog Timer. . . . . . . . . . . . . . . . . . . . . . Refreshing the Watchdog Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Watchdog Reset and Watchdog Status Flag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Oscillator Watchdog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9.1 9.2 9.3 9.4 9.5 9.6 9.7 Power Saving Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-1 Hardware Enable for the Use of the Power Saving Modes . . . . . . . . . . . . . . . . . . . 9-2 Power Saving Mode Control Register PCON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-3 Idle Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-4 Software Power Down Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-6 Slow Down Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-7 Hardware Power Down Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-8 Hardware Power Down Mode Reset Timing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-10 10 10.1 10.2 10.2.1 10.2.2 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.1.1 10.4.1.2 10.4.2 10.4.2.1 10.4.2.2 10.4.2.3 The Bootstrap Loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-1 General Functions of the Bootstrap Loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-1 Phase I: Check for Existing Custom Software in the External FLASH Memory . . 10-3 Custom Software Check by the Info Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-3 Checksum Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-7 Phase II: Automatic Serial Synchronization with the Host . . . . . . . . . . . . . . . . . . . 10-8 Automatic Synchronization Procedure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-9 Baud Rates for Correct Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-12 Phase III: Serial Communication with the Host . . . . . . . . . . . . . . . . . . . . . . . . . . 10-13 Block Transfer Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-13 Header Block Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-15 Data and EOT Block Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-16 Operating Mode Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-17 Selection of Operating Mode 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-19 Selection of Operating Mode 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-23 Selection of Operating Mode 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-24 Semiconductor Group 1-4 8-1 8-1 8-2 8-3 8-4 8-4 8-4 8-5 8-5 8-6 1997-10-01 General Information C509-L Table of Contents Page 10.4.2.4 10.5 Selection of Operating Mode 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-27 Description of the Bootstrap Loader Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . 10-29 11 11.1 11.2 11.3 11.4 Device Specifications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Absolute Maximum Ratings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DC Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A/D Converter Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AC Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-1 Semiconductor Group 1-5 11-1 11-1 11-1 11-5 11-7 1997-10-01 Introduction C509-L 1Introduction The C509-L is a high-end microcontroller in the Siemens SAB-C500 8-bit microcontroller family. lt is based on the well-known industry standard 8051 architecture; a great number of enhancements and new peripheral features extend its capabilities to meet the extensive requirements of new applications. Further, the C509-L is a superset of the Siemens SAB 80C517/80C517A 8-bit microcontroller thus offering an easy upgrade path for SAB 80C517/80C517A users. The high performance of the C509-L microcontroller is achieved by the C500-Core with a maximum operating frequency of 16 MHz internal (and external) CPU clock. While maintaining all the features of the SAB 80C517A, the C509-L is expanded by one I/O port, in its compare/capture capabilities, by A/D converter functions, by additional 1 KByte of on-chip RAM (now 3 KByte XRAM) and by an additional user-selectable CMOS port structure. The C509-L is mounted in a P-MQFP-100-2 package. Figure 1-1 shows the different functional units of the C509-L and figure 1-2 shows the simplified logic symbol of the C509-L. On-Chip Emulation Support Module C509 Watchdog RAM 256 x 8 Oscillator Watchdog T0 MDU 8-Bit USART CPU C500-Core (8-Dataptr) T2 8-Bit UART HW/SW Power Down Modes Boot ROM 512 x 8 T1 Comp. Timer 1 Port 9 I/O 10-Bit ADC Port 8 Port 7 analog/ analog/ digit. digit. input input Improved functionality in comparison to the SAB 80C517A. Port 4 I/O Port 4 I/O Port 4 Comp. Timer 1 Port 4 I/O Port 6 Port 5 Port 4 I/O I/O I/O I/O CCU XRAM 3Kx8 I/O MCB02493 Figure 1-1 C509-L Functional Units Semiconductor Group 1-1 1997-10-01 Introduction C509-L Listed below is a summary of the main features of the C509-L: l l l l l l l l l l l l l l l l l l l l l l Full upward compatibility with SAB 80C517/80C517A 256 byte on-chip RAM 3K byte of on-chip XRAM 256 directly addressable bits 375 ns instruction cycle at 16-MHz oscillator frequency 64 of 111 instructions are executed in one instruction cycle External program and data memory expandable up to 64 Kbyte each On-chip emulation support logic (Enhanced Hooks Technology TM) 10-bit A/D converter – 15 multiplexed inputs – Built-in self calibration Two 16-bit timers/counters (8051 compatible) Three 16-bit timers/counters (can be used in combination with the compare/capture unit) Powerful compare/capture unit (CCU) with up to 29 high-speed or PWM output channels or 13 capture inputs Arithmetic unit for division, multiplication, shift and normalize operations Eight datapointers instead of one for indirect addressing of program and external data memory Extended watchdog facilities – 15-bit programmable watchdog timer – Oscillator watchdog Ten I/O ports – Eight bidirectional 8-bit I/O ports with selectable port structure quasi-bidirectional port structure (8051 compatible) bidirectional port structure with CMOS voltage levels – One 8-bit and one 7-bit input port for analog and digital input signals Two full-duplex serial interfaces with own baud rate generators Four priority level interrupt systems, 19 interrupt vectors Three power saving modes – Slow-down mode – Idle mode – Power-down mode Siemens high-performance ACMOS technology M-QFP-100 rectangular quad flat package Temperature Ranges : SAB-C509-L TA = 0 to 70 °C SAF-C509-L TA = -40 to 85 °C Semiconductor Group 1-2 1997-10-01 Introduction C509-L Figure 1-2 C509-L Logic Symbol Semiconductor Group 1-3 1997-10-01 Introduction C509-L 1.1 Pin Configuration This section describes the pin configuration of the C509-L in the P-MQFP-100-2 package. Figure 1-3 C509-L Pin Configuration (P-MQFP-100-2, top view) Semiconductor Group 1-4 1997-10-01 Introduction C509-L 1.2 Pin Definitions and Functions This section describes all external signals of the C509-L with its function. Table 1-1 Pin Definitions and Functions Symbol P1.0 - P1.7 Pin Number 9-6, 1, 100-98 9 8 7 6 1 100 99 98 I/O*) Function I/O Port 1 is an 8-bit bidirectional I/O port with internal pullup resistors. Port 1 pins that have 1's written to them are pulled high by the internal pullup resistors, and in that state can be used as inputs. As inputs, port 1 pins being externally pulled low will source current (I IL, in the DC characteristics) because of the internal pullup resistors. Port 1 can also be switched into a bidirectional mode, in which CMOS levels are provided. In this bidirectional mode, each port 1 pin can be programmed individually as input or output. Port 1 also contains the interrupt, timer, clock, capture and compare pins that are used by various options. The output latch corresponding to a secondary function must be programmed to a one (1) for that function to operate (except when used for the compare functions). The secondary functions are assigned to the pins of port 1 as follows : P1.0 INT3 CC0 Interrupt 3 input / compare 0 output / capture 0 input P1.1 INT4 CC1 Interrupt 4 input / compare 1 output / capture 1 input P1.2 INT5 CC2 Interrupt 5 input / compare 2 output / capture 2 input P1.3 INT6 CC3 Interrupt 6 input / compare 3 output / capture 3 input P1.4 INT2 CC4 Interrupt 2 input / compare 4 output / capture 4 input P1.5 T2EX Timer 2 external reload trigger input P1.6 CLKOUT System clock output P1.7 T2 Counter 2 input *) I = Input O = Output Semiconductor Group 1-5 1997-10-01 Introduction C509-L Table 1-1 Pin Definitions and Functions (cont’d) Symbol Pin Number I/O*) Function P9.0 - P9.7 74-77, 5-2 I/O Port 9 is an 8-bit bidirectional I/O port with internal pullup resistors. Port 9 pins that have 1's written to them are pulled high by the internal pullup resistors, and in that state can be used as inputs. As inputs, port 9 pins being externally pulled low will source current (I IL, in the DC characteristics) because of the internal pullup resistors. Port 9 can also be switched into a bidirectional mode, in which CMOS levels are provided. In this bidirectional mode, each port 1 pin can be programmed individually as input or output. Port 9 also serves alternate compare functions. The output latch corresponding to a secondary function must be programmed to a one (1) for that function to operate. The secondary functions are assigned to the pins of port 9 as follows : P9.0-P9.7 CC10-CC17 Compare/capture channel 0-7 output/input XTAL2 12 – XTAL2 is the input to the inverting oscillator amplifier and input to the internal clock generator circuits. When supplying the C509-L with an external clock source, XTAL2 should be driven, while XTAL1 is left unconnected. A duty cycle of 0.45 to 0.55 of the clock signal is required. Minimum and maximum high and low times as well as rise/fall times specified in the AC characteristics must be observed. XTAL1 13 – XTAL1 Output of the inverting oscillator amplifier. This pin is used for the oscillator operation with crystal or ceramic resonartor *) I = Input O = Output Semiconductor Group 1-6 1997-10-01 Introduction C509-L Table 1-1 Pin Definitions and Functions (cont’d) Symbol Pin Number I/O*) Function P2.0 – P2.7 14-21 I/O Port 2 is a 8-bit I/O port. Port 2 emits the high-order address byte during fetches from external program memory and during accesses to external data memory that use 16-bit addresses (MOVX @DPTR). In this application it uses strong internal pullup resistors when issuing 1s. During accesses to external data memory that use 8-bit addresses (MOVX @Ri), port 2 issues the contents of the P2 special function register. P2.0 - P2.7 A8 - A15 Address lines 8 - 15 PSEN / RDF 22 O Program Store Enable / Read FLASH The PSEN output is a control signal that enables the external program memory to the bus during external code fetch operations. It is activated every third oscillator period. PSEN is not activated during external data memory accesses caused by MOVX instructions. PSEN is not activated when instructions are executed from the internal Boot ROM or from the XRAM. In external programming mode RDF becomes active when executing external data memory read (MOVX) instructions. ALE 23 O Address Latch Enable This output is used for latching the low byte of the address into external memory during normal operation. It is activated every third oscillator period except during an external data memory access caused by MOVX instructions. EA 24 I External Access Enable The status of this pin is latched at the end of a reset. When held at low level, the C509-L fetches all instructions from the external program memory. For the C509-L this pin must be tied low. PRGEN 25 I External Flash-EPROM Program Enable A low level at this pin disables the programming of an external Flash-EPROM. To enable the programming of an external Flash-EPROM, the pin PRGEN must be held at high level and bit PRGEN1 in SFR SYSCON1 has to be set. There is no internal pullup resistor connected to this pin. *) I = Input O = Output Semiconductor Group 1-7 1997-10-01 Introduction C509-L Table 1-1 Pin Definitions and Functions (cont’d) Symbol Pin Number I/O*) Function P0.0 – P0.7 26, 27, 30-35 I/O Port 0 is an 8-bit open-drain bidirectional I/O port. Port 0 pins that have 1s written to them float, and in that state can be used as high-impendance inputs. Port 0 is also the multiplexed low-order address and data bus during accesses to external program or data memory. In this operating mode it uses strong internal pullup resistors when issuing 1 s. P0.0 - P0.7 AD0-AD7 Address/data lines 0 - 7 HWPD 36 I Hardware Power Down A low level on this pin for the duration of one machine cycle while the oscillator is running resets the C509-L. A low level for a longer period will force the part to power down mode with the pins floating. There is no internal pullup resistor connected to this pin. P5.0 - P5.7 44-37 I/O Port 5 is an 8-bit bidirectional I/O port with internal pullup resistors. Port 5 pins that have 1's written to them are pulled high by the internal pullup resistors, and in that state can be used as inputs. As inputs, port 5 pins being externally pulled low will source current (I IL, in the DC characteristics) because of the internal pullup resistors. Port 5 can also be switched into a bidirectional mode, in which CMOS levels are provided. In this bidirectional mode, each port 5 pin can be programmed individually as input or output. Port 5 also serves as alternate function for “Concurrent Compare” and "Set/Reset compare” functions. The output latch corresponding to a secondary function must be programmed to a one (1) for that function to operate. The secondary functions are assigned to the pins of port 5 as follows : P5.0 - P5.7 CCM0-CCM7 Concurrent Compare or Set/Reset lines 0 - 7 *) I = Input O = Output Semiconductor Group 1-8 1997-10-01 Introduction C509-L Table 1-1 Pin Definitions and Functions (cont’d) Symbol Pin Number I/O*) Function OWE 45 I Oscillator Watchdog Enable A high level on this pin enables the oscillator watchdog. When left unconnected, this pin is pulled high by a weak internal pullup resistor. The logic level at OWE should not be changed during normal operation. When held at low level the oscillator watchdog function is turned off. During hardware power down the pullup resistor is switched off. P6.0 - P6.7 46-50, 54-56 I/O Port 6 is an 8-bit bidirectional I/O port with internal pullup resistors. Port 6 pins that have 1's written to them are pulled high by the internal pullup resistors, and in that state can be used as inputs. As inputs, port 6 pins being externally pulled low will source current (I IL, in the DC characteristics) because of the internal pullup resistors. Port 6 can also be switched into a bidirectional mode, in which CMOS levels are provided. In this bidirectional mode, each port 6 pin can be programmed individually as input or output. Port 6 also contains the external A/D converter control pin, the receive and transmission lines for the serial port 1, and the write-FLASH control signal. The output latch corresponding to a secondary function must be programmed to a one (1) for that function to operate. The secondary functions are assigned to the pins of port 6 as follows : P6.0 ADST External A/D converter start pin P6.1 R×D1 Receiver data input of serial interface 1 P6.2 T×D1 Transmitter data output of serial interface 1 P6.3 WRF The WRF (write Flash) signal is active when the programming mode is selected. In this mode WRF becomes active when executing external data memory write (MOVX) instructions. 46 47 48 49 *) I = Input O = Output Semiconductor Group 1-9 1997-10-01 Introduction C509-L Table 1-1 Pin Definitions and Functions (cont’d) Symbol Pin Number I/O*) Function P8.0 - P8.6 57-60, 51-53 I Port 8 is a 7-bit unidirectional input port. Port pins can be used for digital input if voltage levels meet the specified input high/low voltages, and for the higher 7-bit of the multiplexed analog inputs of the A/D converter simultaneously. P8.0 - P8.6 AIN8 - AIN14 Analog input 8 - 14 RO 61 O Reset Output This pin outputs the internally synchronized reset request signal. This signal may be generated by an external hardware reset, a watchdog timer reset or an oscillator watchdog reset. The RO output is active low. P4.0 – P4.7 64-66, 68-72 I/O Port 4 is an 8-bit bidirectional I/O port with internal pull-up resistors. Port 4 pins that have 1’s written to them are pulled high by the internal pull-up resistors, and in that state can be used as inputs. As inputs, port 4 pins being externally pulled low will source current (I IL, in the DC characteristics) because of the internal pull-up resistors. Port 4 also erves as alternate compare functions. The output latch corresponding to a secondary functionmust be programmed to a one (1) for that function to operate. The secondary functions are assigned to the pins of port 4 as follows : P4.0 - P4.7 CM0 - CM7 Compare channel 0 - 7 PE / SWD 67 I Power Saving Modes Enable / Start Watchdog Timer A low level on this pin allows the software to enter the power down mode, idle and slow down mode. If the low level is also seen during reset, the watchdog timer function is off on default. Usage of the software controlled power saving modes is blocked, when this pin is held on high level. A high level during reset performs an automatic start of the watchdog timer immediately after reset. When left unconnected this pin is pulled high by a weak internal pullup resistor. During hardware power down the pullup resistor is switched off. *) I = Input O = Output Semiconductor Group 1-10 1997-10-01 Introduction C509-L Table 1-1 Pin Definitions and Functions (cont’d) Symbol Pin Number I/O*) Function RESET 73 I RESET A low level on this pin for the duration of two machine cycles while the oscillator is running resets the C509-L. A small internal pullup resistor permits power-on reset using only a capacitor connected to VSS. VAREF 78 – Reference voltage for the A/D converter VAGND 79 – Reference ground for the A/D converter P7.0 - P7.7 87-80 I Port 7 Port 7 is an 8-bit unidirectional input port. Port pins can be used for digital input if voltage levels meet the specified input high/low voltages, and for the lower 8-bit of the multiplexed analog inputs of the A/D converter simultaneously. P7.0 - P7.7 AIN0 - AIN7 Analog input 0 - 7 *) I = Input O = Output Semiconductor Group 1-11 1997-10-01 Introduction C509-L Table 1-1 Pin Definitions and Functions (cont’d) Symbol P3.0 – P3.7 Pin Number 90-97 I/O*) Function I/O Port 3 is an 8-bit bidirectional I/O port with internal pullup resistors. Port 3 pins that have 1's written to them are pulled high by the internal pullup resistors, and in that state can be used as inputs. As inputs, port 3 pins being externally pulled low will source current (I IL, in the DC characteristics) because of the internal pullup resistors. Port 3 also contains two external interrupt inputs, the timer 0/1 inputs, the serial port 0 receive/transmit line and the external memory strobe pins. The output latch corresponding to a secondary function must be programmed to a one (1) for that function to operate. The secondary functions are assigned to the port pins of port 3 as follows P3.0 R×D0 Receiver data input (asynchronous) or data input/output (synchronous) of serial interface 0 P3.1 T×D0 Transmitter data output (asynchronous) or clock output (synchronous) of the serial interface 0 P3.2 INT0 Interrupt 0 input / timer 0 gate control P3.3 INT1 Interrupt 1 input / timer 1 gate control P3.4 T0 Counter 0 input P3.5 T1 Counter 1 input The write control signal latches the data P3.6 WR byte from port 0 into the external data memory P3.7 RD / The read control signal enables the external data memory to port 0 PSENX PSENX (external program store enable) enables the external code memory when the external / internal XRAM mode or external / internal programming mode is selected. 90 91 92 93 94 95 96 97 VSS 10, 28, 62, 88 – Circuit ground potential VCC 11, 29, 63, 89 – Supply terminal for all operating modes *) I = Input O = Output Semiconductor Group 1-12 1997-10-01 Fundamental Structure C509-L 2 Fundamental Structure The C509-L is the high-end 8051-compatible microcontroller of the C500 microcontroller family with a significantly increased performance of CPU and peripheral units. It includes the complete SAB 80C517A functionality, providing 100% upward compatibility. This means that all existing 80517A programs or user’s program libraries can be used further on without restriction and may be easily extended to the C509-L. Some of the various on-chip peripherals of the C509-L support the 8-bit core in case of stringent real-time requirements. The 32-bit/16-bit arithmetic unit, the improved 4-level interrupt structure and eight 16-bit datapointers are meant to give such a CPU support. But strict compatibility to the 8051 architecture is a principle of the C509-L design. Furthermore, the C509-L contains eight 8-bit I/O ports and fifteen general input lines. The second serial channel is compatible to the 8051-UART and provided with an independent and freely programmable baud rate generator. An 10-bit resolution A/D-converter with built-in self calibration has been integrated to allow analog signal processing. The C509-L further includes a powerful compare/capture unit with two 16-bit compare timers for all kinds of digital signal processing. The controller has been completed with well considered provisions for “fail-safe” reaction in critical applications and offers all CMOS features like low power consumption as well as an idle, powerdown and slow-down mode. Figure 2-1 shows the block diagram of the C509-L. Semiconductor Group 2-1 1997-10-01 Fundamental Structure C509-L Figure 2-1 Block Diagram of the C509-L Semiconductor Group 2-2 1997-10-01 Fundamental Structure C509-L 2.1 CPU The CPU is designed to operate on bits and bytes. The instructions, which consist of up to 3 bytes, are performed in one, two or four machine cycles. One machine cycle requires six oscillator cycles (this number of oscillator cycles differs from other members of the C500 microcontroller family). The instruction set has extensive facilities for data transfer, logic and arithmetic instructions. The Boolean processor has its own full-featured and bit-based instructions within the instruction set. The C509-L uses five addressing modes: direct access, immediate, register, register indirect access, and for accessing the external data or program memory portions a base register plus index-register indirect addressing.Efficient use of program memory results from an instruction set consisting of 44 % one-byte, 41 % two-byte, and 15 % three-byte instructions. With a 16 MHz clock, 58 % of the instructions execute in 375 ns. The CPU (Central Processing Unit) of the C509-L consists of the instruction decoder, the arithmetic section and the program control section. Each program instruction is decoded by the instruction decoder. This unit generates the internal signals controlling the functions of the individual units within the CPU. They have an effect on the source and destination of data transfers, and control the ALU processing. The arithmetic section of the processor performs extensive data manipulation and is comprised of the arithmetic/logic unit (ALU), an A register, B register and PSW register. The ALU accepts 8-bit data words from one or two sources and generates an 8-bit result under the control of the instruction decoder. The ALU performs the arithmetic operations add, substract, multiply, divide, increment, decrement, BDC-decimal-add-adjust and compare, and the logic operations AND, OR, Exclusive OR, complement and rotate (right, left or swap nibble (left four)). Also included is a Boolean processor performing the bit operations as set, clear, completement, jump-if-not-set, jump-if-set-and-clear and move to/from carry. Between any addressable bit (or its complement) and the carry flag, it can perform the bit operations of logical AND or logical OR with the result returned to the carry flag. The program control section controls the sequence in which the instructions stored in program memory are executed. The 16-bit program counter (PC) holds the address of the next instruction to be executed. The conditional branch logic enables internal and external events to the processor to cause a change in the program execution sequence. Accumulator ACC is the symbol for the accumulator register. The mnemonics for accumulator-specific instructions, however, refer to the accumulator simply as A. Program Status Word The Program Status Word (PSW) contains several status bits that reflect the current state of the CPU. Semiconductor Group 2-3 1997-10-01 Fundamental Structure C509-L Special Function Register PSW (Address D0H) Bit No. D0H Reset Value : 00H MSB D7H D6H D5H D4H D3H D2H D1H LSB D0H CY AC F0 RS1 RS0 OV F1 P Bit Function CY Carry Flag Used by arithmetic instructions. AC Auxiliary Carry Flag Used by instructions which execute BCD operations) F0 General Purpose Flag RS1 RS0 Register Bank select control bits These bits are used to select one of the four register banks. PSW RS1 RS0 Function 0 0 Bank 0 selected, data address 00H-07H 0 1 Bank 1 selected, data address 08H-0FH 1 0 Bank 2 selected, data address 10H-17H 1 1 Bank 3 selected, data address 18H-1FH OV Overflow Flag F1 General Purpose Flag Used by arithmetic instructions. P Parity Flag Set/cleared by hardware after each instruction cycle to indicate an odd/even number of “one” bits in the accumulator, i.e. even parity. B Register The B register is used by 8-bit multiply and divide instructions and serves as both source and destination. For other instructions it can be treated as another scratch pad register. Stack Pointer The stack pointer (SP) register is 8 bits wide. It is incremented before data is stored during PUSH and CALL executions and decremented after data is popped during a POP and RET (RETI) execution, i.e. it always points to the last valid stack byte. While the stack may reside anywhere in the on-chip RAM, the stack pointer is initialized to 07H after a reset. This causes the stack to begin a location = 08H above register bank zero. The SP can be read or written under software control. Semiconductor Group 2-4 1997-10-01 Fundamental Structure C509-L 2.2 CPU Timing A machine cycle consists of 6 states (6 oscillator periods). Each state is divided into a phase 1 half, during OSC is high, and a phase 2 half, during which OSC is low. Thus, a machine cycle consists of 6 oscillator periods, numbered S1P1 (state 1, phase 1) through S6P2 (state 6, phase 2). Each state lasts for one oscillator period. Typically, arithmetic and logical operations take place during phase 1 and internal register-to-register transfers take place during phase 2. The diagrams in figure 2-2 show the fetch/execute timing related to the internal states and phases. Since these internal clock signals are not user-accessible, the XTAL1 oscillator signals and the ALE (address latch enable) signal are shown for external reference. ALE is normally activated twice during each machine cycle: once during S1P2 and S2P1, and again during S4P2 and S5P1. Executing of a one-cycle instruction begins at S1P2, when the op-code is latched into the instruction register. If it is a two-byte instruction, the second reading takes place during S4 of the same machine cycle. If it is a one-byte instruction, there is still a fetch at S4, but the byte read (which would be the next op-code) is ignored (discarded fetch), and the program counter is not incremented. In any case, execution is completed at the end of S6P2. Figures 2-2 a) and b) show the timing of a 1-byte, 1-cycle instruction and for a 2-byte, 1-cycle instruction. Most C509-L instructions are executed in one cycle. MUL (multiply) and DIV (divide) are the only instructions that take more than two cycles to complete; they take four cycles. Normally two code bytes are fetched from the program memory during every machine cycle. The only exception to this is when a MOVX instruction is executed. MOVX is a one-byte, 2-cycle instruction that accesses external data memory. During a MOVX, the two fetches in the second cycle are skipped while the external data memory is being addressed and strobed. Figure 2-2 c) and d) show the timing for a normal 1-byte, 2-cycle instruction and for a MOVX instruction. Semiconductor Group 2-5 1997-10-01 Fundamental Structure C509-L Figure 2-2 Fetch and Execute Sequences Semiconductor Group 2-6 1997-10-01 Memory Organization C509-L 3 Memory Organization The C509-L CPU manipulates data and operands in the following five address spaces: – – – – – – up to 64 Kbyte of external program memory up to 64 Kbyte of external data memory 512 byte of internal Boot ROM (program memory) 256 bytes of internal data memory 3 Kbyte of internal XRAM data memory a 128 byte special function register area Figure 3-1 illustrates the memory address spaces of the C509-L. Figure 3-1 C509-L Memory Map The internal XRAM data memory overlaps with the external data memory in the address range from F400H to FFFFH. In this address range, either external or internal data RAM can be used. If the internal XRAM has been enabled, it only can be disabled by an active RESET or HWPD signal. The internal Boot ROM also overlaps with the external code memory in the address range from 0000H to 01FFH. Depending on the selected operating mode (chipmode), either external code memory or the internal Boot ROM is accessed in this address range. Semiconductor Group 3-1 1997-10-01 Memory Organization C509-L 3.1 Program Memory, “Code Space” Besides the internal Boot ROM, the C509-L has no internal program memory (ROM). In normal mode the program memory of the C509-L is located externally and can be expanded up to 64 Kbyte. In the normal mode the C509-L fetches all instructions from the external program memory. Therefore, the pin EA of the C509-L must be always tied to low level. The Boot ROM includes a bootstrap loader program for the bootstrap mode of the C509-L. The software routines of the bootstrap loader program allow the easy and quick programming or loading of the internal XRAM (F400H to FFFFH) via the serial interface while the MCU is in-circuit. This allows to transfer custom routines to the XRAM, which will program an external 64 KByte FLASH memory. The routines of the bootstrap loader program may be executed or even can be blocked to prevent unauthorized persons from reading out or writing to the external FLASH memory. Therefore, the bootstrap loader checks an external FLASH memory for existing custom software and executes it. The bootstrap loader program is described in detail in chapter 10. 3.2 Data Memory, “Data Space” The data memory address space consists of an internal and an external memory space. The internal data memory is divided into three physically separate and distinct blocks: the lower 128 bytes of RAM, the upper 128 bytes of RAM, and the 128 byte special function register (SFR) area. While the upper 128 bytes of data memory and the SFR area share the same address locations, they are accessed through different addressing modes. The lower 128 bytes of data memory can be accessed through direct or register indirect addressing; the upper 128 bytes of RAM can be accessed through register indirect addressing; the special function registers are accessible through direct addressing. Four 8-register banks, each bank consisting of eight 8-bit multi-purpose registers, occupy locations 0 through 1FH in the lower RAM area. The next 16 bytes, locations 20H through 2FH, contain 128 directly addressable bit locations. The stack can be located anywhere in the internal data memory address space, and the stack depth can be expanded up to 256 bytes. The external data memory can be expanded up to 64 Kbytes and can be accessed by instructions that use a 16-bit or an 8-bit address. The internal XRAM is also located in the external data memory area and must be accessed by external data memory instructions (MOVX). The XRAM can also serve as code memory in the XRAM mode and in the FLASH programming mode. In these modes program code which has been prior loaded via the bootstrap loader program, is executed in the XRAM. 3.3 General Purpose Registers The lower 32 locations of the internal RAM are assigned to four banks with eight general purpose registers (GPRs) each. Only one of these banks may be enabled at a time. Two bits in the program status word, RS0 (PSW.3) and RS1 (PSW.4), select the active register bank (see description of the PSW in chapter 2). This allows fast context switching, which is useful when entering subroutines or interrupt service routines. The 8 general purpose registers of the selected register bank may be accessed by register addressing. With register addressing the instruction op code indicates which register is to be used. For indirect addressing R0 and R1 are used as pointer or index register to address internal or external memory (e.g. MOV @R0). Semiconductor Group 3-2 1997-10-01 Memory Organization C509-L Reset initializes the stack pointer to location 07H and increments it once to start from location 08H which is also the first register (R0) of register bank 1. Thus, if one is going to use more than one register bank, the SP should be initialized to a different location of the RAM which is not used for data storage. 3.4 Program and Data Memory Organization The C509-L can operate in four different operating modes (chipmodes) with different program and data memory organizations: – – – – Normal Mode XRAM Mode Bootstrap Mode Programming Mode Table 3-1 describes the program and data memory areas which are available in the different chipmodes of the C509-L. It also shows the control bits of SFR SYSCON1, which are used for the software selection of the chipmodes. Table 3-1 Overview of Program and Data Memory Organization Operating Mode (Chipmode) Program Memory Data Memory SYSCON1 Bits Ext. Int. Ext. Int. PRGEN 1 SWAP Normal Mode 0000H FFFFH – 0000H F3FFH F400H FFFFH (XRAM) 0 0 XRAM Mode 0200H F3FFH 0000H 01FFH = Boot ROM; F400H FFFFH = (XRAM) 0000H FFFFH (read only) – 0 1 Bootstrap Mode 0200H F3FFH 0000H 01FFH = Boot ROM 0000H F3FFH F400H FFFFH (XRAM) 1 0 Programming Mode 0200H FFFFH 0000H 01FFH = Boot ROM; F400H FFFFH = XRAM 0000H FFFFH (read and write) – 1 1 Semiconductor Group 3-3 1997-10-01 Memory Organization C509-L 3.4.1 Interface of External FLASH/ROM/EPROM and External SRAM Memory The external FLASH/ROM/EPROM memory and the external SRAM memory can be used in the chipmodes either as code memory or as data memory. The basic memory configuration is shown in figure 3-2. The following alternate function pins control the read/write accesses for code/data memories: PSEN / RDF P6.3 / WRF P3.6 / WR P3.7 / RD / PSENX Read control signal for the FLASH/ROM/EPROM memory Write control signal for the FLASH/ROM/EPROM memory Write control signal for the SRAM memory Read control signal for the SRAM memory Figure 3-2 Interface of External FLASH/ROM/EPROM and External SRAM Memory Semiconductor Group 3-4 1997-10-01 Memory Organization C509-L 3.4.2 Normal Mode Configuration The Normal Mode is the standard 8051 compatible operating mode of the C509-L. In this mode 64K byte external code memory and 61K byte external SRAM as well as 3K byte internal data memory (XRAM) are provided. If the XRAM is disabled (default after reset), totally 64K byte external data memory are available. The Boot ROM is disabled. The external program memory is controlled by the PSEN/RDF signal. Read and write accesses to the external data memory are controlled by the RD and WR pins of port 3. The Normal Mode is entered by keeping the pin PRGEN at a logic low during the rising edge of the external RESET or HWPD signal. The locations of the code- and data-memory in Normal Mode are shown in figure 3-4. Figure 3-3 Locations of Code- and Data Memory in Normal Mode Semiconductor Group 3-5 1997-10-01 Memory Organization C509-L 3.4.3 XRAM Mode Configuration The XRAM Mode is implemented in the C509-L for executing e.g. up to 3K byte diagnostic software which has been loaded into the XRAM in the Bootstrap Mode via the serial interface. In this operating mode the Boot ROM, the XRAM, and the external data memory are mapped into the code memory area, while the external ROM/EPROM is mapped into the external data memory area. External program memory fetches from the SRAM are controlled by the P3.7/RD/PSENX pin. External data memory read accesses from the ROM/EPROM are controlled by the PSEN/RDF pin. In XRAM mode, the external data memory can only be read but not written. The XRAM mode is entered by setting the SWAP bit, while the PRGEN pin (PRGEN1 bit) is kept low. The locations of the code- and data-memory in the XRAM mode are shown in figure 3-4. Figure 3-4 Locations of Code- and Data Memory in XRAM Mode Notes: In the XRAM mode, programming of the external FLASH EPROM is not possible because the PRGEN pin (PRGEN1 bit) is at logic low level (HW-protection). The internal XRAM is selected automatically in the code memory, if the SWAP bit is set. When leaving the XRAM Mode, the XRAM is disabled (only if the XMAP0 bit was not cleared by software before). Semiconductor Group 3-6 1997-10-01 Memory Organization C509-L 3.4.4 Bootstrap Mode Configuration In the Bootstrap Mode the Boot ROM and the external FLASH/ROM/EPROM are mapped into the code memory area. 61K byte external SRAM as well as 3K byte internal data memory (XRAM) are provided in the external data memory area. The external program memory is controlled by the PSEN/RDF signal. Read and write accesses to the external data memory are controlled by the RD and WR pins of port 3. The Bootstrap Mode is entered by keeping the pin PRGEN at a logic high level during the rising edge of the external RESET or HWPD signal (→ PRGEN1=1). The locations of the code- and data memory in the external boot-strap mode are shown in figure 3-5. Figure 3-5 Locations of Code- and Data Memory in Bootstrap Mode In Bootstrap Mode the internal XRAM is selected automatically as data memory. When leaving the Bootstrap Mode, the XRAM is disabled (only if the XMAP0 bit was not cleared by software before). Semiconductor Group 3-7 1997-10-01 Memory Organization C509-L 3.4.5 Programming Mode Configuration The External Programming Mode is implemented for the in-circuit programming of external 5V-only FLASH EPROMs. Similar as in the XRAM mode, the Boot ROM, the XRAM, and the external data memory (SRAM) are mapped into the code memory area, while the external FLASH memory is mapped into the external data memory area. Additionally to the XRAM mode, the FLASH memory can also be written through external data memory accesses (MOVX instructions). External program memory fetches from the SRAM are controlled by the P3.7/RD/PSENX pin. External data memory read/write accesses from/to the ROM/EPROM are controlled by the PSEN/RDF and P6.3/WRF pin. The Programming Mode is entered by setting the bits PRGEN1 and SWAP in SFR SYSCON1. The locations of the code- and data memory in the Programming Mode are shown in figure 3-6. Figure 3-6 Locations of Code- and Data Memory in Programming Mode Prior to the usage of the Programming Mode, the XRAM has to be loaded by the FLASH specific programming software algorithms (see also chapter 10 “The Bootstrap Loader”). This XRAM load operation can be done using the Bootstrap Mode. Semiconductor Group 3-8 1997-10-01 Memory Organization C509-L Notes: The internal XRAM is enabled automatically in the code memory area if the SWAP bit is set. When leaving the Programming Mode, the XRAM is disabled (only if the XMAP0 bit was not cleared by software before). Leaving the Programming Mode can be accomplished by: – Clearing the bits PRGEN1 and SWAP prior to executing the special software unlock sequence followed by a LJMP to “startaddress” in the FLASH memory returns the C509-L into normal mode (program execution will start at “startaddress”). – Activating the RESET or HWPD signal with the PRGEN pin at logic low level will clear the bits PRGEN1 and SWAP. Notes: Switching the PRGEN pin to logic low level during programming of an external FLASH will reset the PRGEN1 bit. As a result the XRAM mode is entered and this inhibits any write access to the external FLASH EPROM. Clearing the SWAP bit during Programming Mode and executing the special software unlock sequence will force the C509-L into the Bootstrap Mode. Semiconductor Group 3-9 1997-10-01 Memory Organization C509-L 3.4.6 Special Function Register SYSCON1 There are five control bits located in SFR SYSCON1 (B2H) which control the code and data memory organization of the C509-L. Two of these bits (PRGEN1 and SWAP) cannot be programmed as normal bits but with a special software unlock sequence. The special software unlock sequence was implemented to prevent unintentional changing of these bits and consists of consecutive followed instructions which have to set two dedicated enable bits. Reset Value : 00XXXEE0B 1) Special Function Register SYSCON1 (Address B2H) Bit No. B2H MSB 7 6 5 4 3 ESWC SWC – EA1 EA0 2 1 LSB 0 PRGEN1 PRGEN0 SWAP SYSCON1 1) “E” means that the value of the bit is defined through the external logic level at pin PRGEN at the rising edge of the external RESET or HWPD signals. Bit Function ESWC Enable Switch Chipmode When selecting the chipmode with the bits SWAP and PRGEN1, the ESWC bit has to be set simultaneously as the first instruction in the special software unlock sequence. The bit ESWC will be cleared by hardware after 2 instruction cycles. SWC Switch Chip Mode The SWC bit has to be set as the second instruction in a special software unlock sequence directly after having set bit ESWC. The new chipmode becomes active after the second instruction cycle which follows the special software unlock sequence. These two instruction cycles are used for initializing of the program counter (LJMP instruction) SWC is a write only bit. Reading SWC will always return a ‘0’. –, EA1, EA0 Reserved bits; at read operations these bits are undefined; at write operations to SYSCON1 these bits can be written with “0” or “1”. PRGEN1 Program Enable Bit 1 The PRGEN1 bit enables/disables the write accesses to an external FLASH EPROM. The PRGEN1 bit contains the logic value of the external PRGEN pin which is latched at the rising edge of the external RESET or HWPD signal. When the logic low level appears at the PRGEN pin, the PRGEN1 bit will be cleared in the next instruction cycle without the need of a special software unlock sequence. PRGEN1 = 0: Write access (programming) of external FLASH EPROM is disabled PRGEN1 = 1: Write access (programming) of external FLASH EPROM is enabled Any changing the PRGEN1 bit without using a special software unlock sequence with the ESWC and SWC bits will have no effect and the former selected status will be kept. Semiconductor Group 3-10 1997-10-01 Memory Organization C509-L Bit Function PRGEN0 Program Enable Bit 0 The PRGEN0 bit is a read-only bit and represents the logic level of the external PRGEN pin. PRGEN0 = 1: The PRGEN1 bit can be set or cleared under software control. PRGEN0 = 0: The PRGEN1 bit is held at logic low level and cannot be set under software control. Notes: Clearing the PRGEN0 bit by changing the logic level at the PRGEN pin in the Normal Mode disables write accesses to the external FLASH EPROM. Enable/disable write accesses to external FLASH EPROM can be done by changing the PRGEN1 bit with a special software unlock sequence. SWAP Swap Code- and Data Memory SWAP = 0: The data memory and the code memory remain in their predefined locations. SWAP = 1: The following address areas and memory locations are assigned to code memory: 0000H - 01FFH → Boot ROM 0200H - F3FFH → External data memory is swapped to external code memory F400H - FFFFH → The XRAM is enabled and automatically mapped into code memory space. (independent of bit XMAP0 in SFR SYSCON) The following address areas and memory locations ar assigned to data memory: 0000H - FFFFH → External FLASH /ROM/EPROM The former code memory is assigned as data memory and is now addressable by using MOVX instructions. Semiconductor Group 3-11 1997-10-01 Memory Organization C509-L 3.4.7 Operating Mode (Chipmode) Selection The chipmode selection can be done by hardware after an active RESET or HWPD signal. Further, the logic state of pin PRGEN is used for hardware selection. Bit Swap is not affected by hardware selection. The chipmodes can also be selected by software. Software selection is achieved by programming specific bits of SFR SYSCON1. The following table 3-2 shows the hardware and software selection capabilities of the chipmodes. Table 3-2 Hardware and Software Selection of Chipmodes Operating Mode (Chipmode) Hardware Selection Normal Mode PRGEN pin = low RESET or HWPD: Software Selection 1 PRGEN pin = don’t care; 4 setting bits PRGEN1,SWAP = 0,0; executing unlock sequence 2 PRGEN pin = don’t care; 5 setting bits PRGEN1,SWAP = 0,1; executing unlock sequence edge XRAM Mode from Programming Mode: setting PRGEN pin = low Bootstrap Mode PRGEN pin = high RESET or HWPD: Programming Mode not possible 3 PRGEN pin = high; 6 edge setting bits PRGEN1,SWAP =1,0; executing unlock sequence PRGEN pin = high; 7 setting bits PRGEN1,SWAP = 1,1; executing unlock sequence Figure 3-7 below shows the information of table 3-2 as a state diagram (reference number in the circle). 1 Normal Mode PRGEN1, SWAP = 0,0 7 4 4 5 4 7 5 XRAM Mode PRGEN1, SWAP = 0,1 Programming Mode PRGEN1, SWAP = 1,1 2 5 6 6 7 6 Bootstrap Mode PRGEN1, SWAP = 1,0 3 Hardware Selection Software Selection MCD02645 Figure 3-7 State Diagram of Chipmode Selection Semiconductor Group 3-12 1997-10-01 Memory Organization C509-L 3.4.7.1 Special Software Unlock Sequence The bits ESWC and SWC in SFR SYSCON1 are implemented in a way to prevent unintentional changing of the bits SWAP or PRGEN1. Any changing the bits SWAP or PRGEN1 without using the ESWC and SWC bits in a special software unlock sequence will have no effect and the above bits will get back their old values two instruction cycles after being changed. The following programming steps must be executed at the ESWC/SWC unlock sequence: 1.) First instruction: Changing the value of the bits SWAP or PRGEN1 with one or more consecutive instructions simultaneously with setting of bit ESWC: ANL SYSCON1, #11111X1YB ORL SYSCON1, #10000X0YB ; clearing of bits PRGEN1 (X=0) and/or SWAP (Y=0) ; setting of ESWC bit with setting of PRGEN1 or SWAP ; e.g. clearing of the SWAP bit: ANL SYSCON1,#11111110B ORL SYSCON1,#10000000B or: ORL SYSCON1, #10000X0YB ; setting of the bits PRGEN1 (X=1) and/or SWAP (Y=1) and ; setting the ESWC bit simultaneously ; e.g. setting of the SWAP bit: ORL SYSCON1,#10000001B 2.) Second instruction: Setting of bit SWC immediately after 1.) with ORL SYSCON1, #40H ; The new chipmode becomes active two instruction cycles after the instruction which sets the bit SWC (see 2.). These two instruction cycle delay should normally be used for initialization of the program counter to the 16 bit start-address of the new code memory resource, e.g. with: LJMP 0XXXXH ; XXXX = 16-bit hex address in new code memory If the code memory resource is not changed by the new chipmode there is no need of a new initialization of the program counter. However the new Chipmode becomes active two instruction cycles after 2.). The special software unlock instruction sequence cannot be interrupted by an interrupt request. Any write or read operation to SFR SYSCON1 will block the interrupt generation for the first cycle of the directly following instruction.Therefore, the response time of an interrupt request may be additionally delayed from minimal five instruction cycles up to eight instruction cycles: four or six instruction cycles for setting ESWC and SWC (depends on the used instructions) and one or two instruction cycles depending on the instruction used in 3.). When using a one cycle instruction in 3.) an enabled interrupt may be performed and the interrupt vector address may reside in a “new” code memory resource due to the new selected Chipmode. The bits SWAP and PRGEN1 are built up by three shadow latches each. Unintentional changing of one of this three latches (e.g. by RFI) will have no effect and the former value will be restored in the next instruction cycle. Semiconductor Group 3-13 1997-10-01 Memory Organization C509-L 3.4.7.2 Control Signals of the Chipmodes As shown in chapter 3.4.2 to 3.4.5, each chipmode uses specific read/write control signals, Table 3-3 gives a detailed survey about each chipmode and its control signals. Table 3-3 Usage of Control Signals in the different Chipmodes Operating Mode (Chipmode) Code Memory Control PSEN / RDF P3.7 / RD / P3.7 / RD / P3.6 / WR PSENX PSENX Normal Mode 0000H FFFFH – XMAP0=1 : 0000H FFFFH XMAP0=0 : 0000H F3FFH XMAP0=1 : – 0000H FFFFH XMAP0=0 : 0000H F3FFH XRAM Mode – 0200H F3FFH – – 0000H FFFFH – Bootstrap Mode 0200H FFFFH – 0000H F3FFH 0000H F3FFH – – Programming Mode – 0200H F3FFH – – 0000H FFFFH 0000H FFFFH Semiconductor Group Data Memory Control 3-14 PSEN / RDF P6.3 / WRF – 1997-10-01 Memory Organization C509-L 3.4.7.3 Switching of the SWAP-Bit Setting or clearing the SWAP-bit in SYSCON1 will change code memory and data memory assignment. To assure a well defined behavior of the controller, it is necessary to perform a specific code sequence by the user. Any write access to SYSCON1 which changes the SWAP bit has to be followed by a 2-cycle instruction. This 2-cycle instruction will be the last instruction, which is performed by the CPU in the former code memory. For that reason, this 2-cycle instruction has to be a LJMP-instruction which specifies the new address for the program counter. The next instruction, which will be performed by the CPU is at the specified destination address of the JMP instruction in the former data memory (which now has become to code memory). Figure 3-8 gives an overview about the behavior of the external pin PSEN/RDF and RD/PSENX when chipmodes with different SWAP bits are switched. These signals change their functions depending on the value of the SWAP bit. Figure 3-8 Switching of the SWAP Bit Figure 3-8 a): When the SWAP bit is set, the “program store enable” function of the PSEN/RDF pin, which is connected to OE (output enable) of the FLASH/ROM/EPROM memory, is switched to the RD/PSENX pin. The “read enable” function of the RD/PSENX pin, which is connected to the RD (“read“) input of an external SRAM memory, is switched to the PSEN/RDF signal. PSEN/RDF becomes now active during MOVX instructions. When the SWAP bit is cleared, the “read enable” function (MOVX instructions) of the PSEN/RDF pin, which is connected to OE (output enable) of the FLASH/ROM/EPROM memory, is switched to the RD/PSENX pin. The “program store enable” function of the RD/PSENX pin, which is connected to the RD (“read“) input of the external SRAM memory, is switched to the PSEN/RDF pin. RD/ PSENX becomes now active during MOVX instructions. Semiconductor Group 3-15 1997-10-01 Memory Organization C509-L 3.4.8 Watchdog Timer - Behaviour in the Different Operating Modes This section describes the chipmode specific behavior of the watchdog timer unit. Further details about the watchdog timer are given in chapter 8. Normal Mode: The watchdog timer function in Normal Mode is not restricted. XRAM Mode: To avoid deadlocks during program execution in the XRAM, the once enabled watchdog timer keeps on running but the refresh is inhibited. A refresh sequence of a previously enabled watchdog timer is not permitted. An unintentional refresh sequence in the XRAM mode does not reload the watchdog timer and an internally generated watchdog reset will be executed at the watchdog counter state 7FFCH. The watchdog timer reset generation is enabled. For refreshing the watchdog timer, the user has to leave the XRAM Mode and must enter the Normal Mode by clearing the SWAP bit followed by a LJMP or LCALL to “startaddress of watchdog timer refresh” in the external ROM/EPROM. In the normal mode the watchdog timer refresh can be executed successfully. If required, XRAM Mode can again be entered after the watchdog timer refresh operation has been finished. Bootstrap Mode and Programming Mode In the Bootstrap Mode and in the Programming Mode the watchdog timer increment is inhibited. In this way, programming the external FLASH EPROM in Programming Mode cannot be aborted by the watchdog timer. Semiconductor Group 3-16 1997-10-01 Memory Organization C509-L 3.5 Special Function Registers The registers, except the program counter and the four general purpose register banks, reside in the special function register area. The special function register area consists of two portions: the standard special function register area and two mapped special function register areas. Several special function registers of the C509-L (CC10-17, CT1REL, CC1EN, CAFR) are located in the mapped special function register area. For accessing the mapped special function register area, bit RMAP in special function register SYSCON must be set. All other special function registers are located in the standard special function register area. For accessing the port direction registers, which define the input or output function of the bidirectional port structure, bit PDIR in SFR IP1 is used. This port direction register access operates similar to the mapped SFR accesses, but a double instruction sequence must be executed. The first instruction has to set bit PDIR. Thereafter, the second instruction can read or write the direction register. Further details about port direction selection see chapter 6.1.1.1. The most right column of table 3-5 indicates if an SFR is accessed with a mapped procedure controlled by either RMAP or PDIR. Special Function Register SYSCON (Address B1H) Special Function Register IP1 (Address B9H) Bit No. MSB 7 6 Reset Value : 1010XX01B Reset Value : 0X000000B 5 4 3 2 B1H CLKP PMOD 1 RMAP – – B9H PDIR .5 .4 .3 .2 – 1 LSB 0 XMAP1 XMAP0 .1 .0 SYSCON IP1 The functions of the shaded bits are not described in this section. Bit Function RMAP Special function register map bit RMAP = 0: The access to the non-mapped (standard) special function register area is enabled (reset value). RMAP = 1: The access to the mapped special function register area is enabled. PDIR Direction register enable PDIR = 0: Port register access is enabled (reset value). PDIR = 1: Direction register is enabled. PDIR will automatically be cleared after the second machine cycle (S2P2) after having been set. Semiconductor Group 3-17 1997-10-01 Memory Organization C509-L As long as bit RMAP is set, mapped special function registers can be accessed. This bit is not cleared by hardware automatically. Thus, when non-mapped/mapped registers are to be accessed, the bit RMAP must be cleared/set by software, respectively each. There are also 128 directly addressable bits available within each SFR area (standard and mapped SFR area). All SFRs with addresses where address bits 0-2 are 0 (e.g. 80H, 88H, 90H, 98H, …, F8H, FFH) are bitaddressable. The 103 special function register (SFR) include pointers and registers that provide an interface between the CPU and the other on-chip peripherals. The SFRs of the C509-L are listed in table 3-4 and table 3-5. In table 3-4 they are organized in groups which refer to the functional blocks of the C509-L. Table 3-5 illustrates the contents of the SFRs in numeric order of their addresses. Semiconductor Group 3-18 1997-10-01 Memory Organization C509-L Table 3-4 Special Function Registers - Functional Blocks Block Symbol Name Address Contents after Reset CPU ACC B DPH DPL DPSEL PSW SP SYSCON1 Accumulator B-Register Data Pointer, High Byte Data Pointer, Low Byte Data Pointer Select Register Program Status Word Stack Pointer System Control Register 1 E0H 1) F0H 1) 83H 82H 92H D0H 1) 81H B2H 00H 00H 00H 00H XXXXX000B 3) 00H 07H 00XXXEE0B3)6) SFR Mapping SYSCON 2) System Control Register B1H 1010XX01B 3) Interrupt System IEN0 CTCON 2) CT1CON 2) IEN1 2) IEN2 2) IEN3 IP0 2) IP1 2) IRCON0 IRCON1 IRCON2 4) EICC1 4) TCON 2) T2CON 2) A8H1) E1H BCH B8H 1) 9AH BEH A9H B9H C0H 1) D1H BFH BFH 88H 1) C8H 1) 00H 01000000B 3) X1XX0000B 3) 00H XX0000X0B 3) XXXX00XXB 3) 00H 0X000000B 3) 00H 00H 00H FFH 00H 00H XRAM XPAGE Page Address Register for XRAM SYSCON 2) System Control Register 91H B1H 00H 1010XX01B 3) A/D Converter ADCON0 ADCON1 ADDATH ADDATL D8H1) DCH D9H DAH 00H 01000000B 3) 00H 00H 1) 2) 3) 4) 5) 6) Interrupt Enable Register 0 Compare Timer Control Register Compare Timer 1 Control Register Interrupt Enable Register 1 Interrupt Enable Register 2 Interrupt Enable Register 3 Interrupt Priority Register 0 Interrupt Priority Register 1 Interrupt Request Control Register 0 Interrupt Request Control Register 1 Interrupt Request Control Register 2 Interrupt Request Enable Register for CT1 Timer Control Register Timer 2 Control Register A/D Converter Control Register 0 A/D Converter Control Register 1 A/D Converter Data Register, High Byte A/D Converter Data Register, Low Byte Bit-addressable special function registers This special function register is listed repeatedly since some bits of it also belong to other functional blocks. X means that the value is indeterminate or the location is reserved Register is mapped by bit PDIR. Register is mapped by bit RMAP. “E” means that the value of the bit is defined by the logic level at pin PRGEN at the rising edge of the RESET or HWPD signals. Semiconductor Group 3-19 1997-10-01 Memory Organization C509-L Table 3-4 Special Function Registers - Functional Blocks (cont’d) Block Symbol Name Address Contents after Reset Compare / Capture Unit (CCU) Timer 2 CCEN CC4EN CCH1 CCH2 CCH3 CCH4 CCL1 CCL2 CCL3 CCL4 CMEN 5) CMH0 5) CMH1 5) CMH2 5) CMH3 5) CMH4 5) CMH5 5) CMH6 5) CMH7 5) CML0 5) CML1 5) CML2 5) CML3 5) CML4 5) CML5 5) CML6 5) CML7 5) CC1EN 5) CC1H0 5) CC1H1 5) CC1H2 5) CC1H3 5) CC1H4 5) CC1H5 5) CC1H6 5) CC1H7 5) CC1L0 5) CC1L1 5) CC1L2 5) CC1L3 5) CC1L4 5) CC1L5 5) CC1L6 5) CC1L7 5 CMSEL 5 ) Compare/Capture Enable Register Compare/Capture 4 Enable Register Compare/Capture Register 1, High Byte Compare/Capture Register 2, High Byte Compare/Capture Register 3, High Byte Compare/Capture Register 4, High Byte Compare/Capture Register 1, Low Byte Compare/Capture Register 2, Low Byte Compare/Capture Register 3, Low Byte Compare/Capture Register 4, Low Byte Compare Enable Register Compare Register 0, High Byte Compare Register 1, High Byte Compare Register 2, High Byte Compare Register 3, High Byte Compare Register 4, High Byte Compare Register 5, High Byte Compare Register 6, High Byte Compare Register 7, High Byte Compare Register 0, Low Byte Compare Register 1, Low Byte Compare Register 2, Low Byte Compare Register 3, Low Byte Compare Register 4, Low Byte Compare Register 5, Low Byte Compare Register 6, Low Byte Compare Register 7, Low Byte Compare/Capture Enable Register Compare/Capture 1 Register 0, High Byte Compare/Capture 1 Register 1, High Byte Compare/Capture 1 Register 2, High Byte Compare/Capture 1 Register 3, High Byte Compare/Capture 1 Register 4, High Byte Compare/Capture 1 Register 5, High Byte Compare/Capture 1 Register 6, High Byte Compare/Capture 1 Register 7, High Byte Compare/Capture 1 Register 0, Low Byte Compare/Capture 1 Register 1, Low Byte Compare/Capture 1 Register 2, Low Byte Compare/Capture 1 Register 3, Low Byte Compare/Capture 1 Register 4, Low Byte Compare/Capture 1 Register 5, Low Byte Compare/Capture 1 Register 6, Low Byte Compare/Capture 1 Register 7, Low Byte Compare Input Select C1H C9H C3H C5H C7H CFH C2H C4H C6H CEH F6H D3H D5H D7H E3H E5H E7H F3H F5H D2H D4H D6H E2H E4H E6H F2H F4H F6H D3H D5H D7H E3H E5H E7H F3H F5H D2H D4H D6H E2H E4H E6H F2H F4H F7H 5) 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H Register is mapped by bit RMAP. Semiconductor Group 3-20 1997-10-01 Memory Organization C509-L Table 3-4 Special Function Registers - Functional Blocks (cont’d) Block Symbol Name Address Contents after Reset Compare / Capture Unit (CCU) Timer 2 cont’d CAFR 5) CRCH CRCL COMSETL COMSETH COMCLRL COMCLRH SETMSK CLRMSK CTCON 2) CTRELH 5) CTRELL 5) CT1RELL 5) TH2 TL2 T2CON 2) CT1CON 2) PRSC 2) Capture 1, Falling/Rising Edge Register Comp./Rel./Capt. Reg. High Byte Comp./Rel./Capt. Reg. Low Byte Compare Set Register, Low Byte Compare Set Register, High Byte Compare Clear Register, Low Byte Compare Clear Register, High Byte Compare Set Mask Register Compare Clear Mask Register Compare Timer Control Register Compare Timer Rel. Reg., High Byte Compare Timer Rel. Reg., Low Byte Compare Timer 1 Rel. Reg., High Byte Compare Timer 1 Rel. Reg., Low Byte Timer 2, High Byte Timer 2, Low Byte Timer 2 Control Register Compare Timer 1 Control Register Prescaler Control Register F7H CBH CAH A1H A2H A3H A4H A5H A6H E1H DFH DEH DFH DEH CDH CCH C8H 1) BCH B4H 00H 00H 00H 00H 00H 00H 00H 00H 00H 01000000B 3) 00H 00H 00H 00H 00H 00H 00H X1XX0000B 3) 11010101B 3) Serial Channels ADCON0 2) PCON 2) S0BUF S0CON S0RELL S0RELH S1BUF S1CON S1RELL S1RELH A/D Converter Control Register Power Control Register Serial Channel 0 Buffer Register Serial Channel 0 Control Register Serial Channel 0 Reload Reg., Low Byte Serial Channel 0 Reload Reg., High Byte Serial Channel 1 Buffer Register Serial Channel 1 Control Register Serial Channel 1 Reload Reg., Low Byte Serial Channel 1 Reload Reg., High Byte D8H 1) 87H 99H 98H 1) AAH BAH 9CH 9BH 9DH BBH 00H 00H XXH 3) 00H D9H XXXXXX11B 3) XXH 3) 01000000B 3) 00H XXXXXX11B 3) Watchdog IEN0 2) IEN1 2) IP0 2) IP1 2) WDTREL WDTL 6) WDTH 6) Interrupt Enable Register 0 Interrupt Enable Register 1 Interrupt Priority Register 0 Interrupt Priority Register 1 Watchdog Timer Reload Register Watchdog Timer Register, Low Byte Watchdog Timer Register, High Byte A8H 1) B8H 1) A9H B9H 86H 84H 85H 00H 00H 00H 0X000000B 3) 00H 00H 00H CT1RELH 5) 1) 2) 3) 4) 5) 6) Bit-addressable special function registers This special function register is listed repeatedly since some bits of it also belong to other functional blocks. X means that the value is indeterminate or the location is reserved Register is mapped by bit PDIR. Register is mapped by bit RMAP. Registers are only readable and cannot be written. Semiconductor Group 3-21 1997-10-01 Memory Organization C509-L Table 3-4 Special Function Registers - Functional Blocks (cont’d) Block Symbol Name Address Contents after Reset MUL/DIV Unit ARCON MD0 MD1 MD2 MD3 MD4 MD5 Arithmetic Control Register Multiplication/Division Register 0 Multiplication/Division Register 1 Multiplication/Division Register 2 Multiplication/Division Register 3 Multiplication/Division Register 4 Multiplication/Division Register 5 EFH E9H EAH EBH ECH EDH EEH 0XXXXXXXB 3) XXH 3) XXH 3) XXH 3) XXH 3) XXH 3) XXH 3) Timer 0 / Timer 1 TCON TH0 TH1 TL0 TL1 TMOD PRSC 2) Timer Control Register Timer 0, High Byte Timer 1, High Byte Timer 0, Low Byte Timer 1, Low Byte Timer Mode Register Prescaler Control Register 88H 1) 8CH 8DH 8AH 8BH 89H B4H 00H 00H 00H 00H 00H 00H 11010101B 3) Ports P0 4) DIR0 4) P1 4) DIR1 4) P2 4) DIR2 4) P3 4) DIR3 4) P4 4) DIR4 4) P5 4) DIR5 4) P6 4) DIR6 4) P7 P8 P9 4) DIR9 4) Port 0 Direction Register Port 0 Port 1 Direction Register Port 1 Port 2 Direction Register Port 2 Port 3 Direction Register Port 3 Port 4 Direction Register Port 4 Port 5 Direction Register Port 5 Port 6 Direction Register Port 6 Port 7, Analog/Digital Input Port 8, Analog/Digital Input Port 9 Direction Register Port 9 80H 1) 80H 1) 90H 1) 90H 1) A0H 1) A0H 1) B0H 1) B0H 1) E8H 1) E8H 1) F8H 1) F8H 1) FAH FAH DBH DDH F9H F9H FFH FFH FFH FFH FFH FFH FFH FFH FFH FFH FFH FFH FFH FFH --FFH FFH Power Saving Modes PCON Power Control Register 87H 00H 1) 2) 3) 4) 5) Bit-addressable special function registers This special function register is listed repeatedly since some bits of it also belong to other functional blocks. X means that the value is indeterminate and the location is reserved Register is mapped by bit PDIR. Register is mapped by bit RMAP. Semiconductor Group 3-22 1997-10-01 Memory Organization C509-L Table 3-5 Contents of the SFRs, SFRs in numeric order of their addresses Addr Register Content Bit 7 after Reset 1) Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Mapped by 2) 80H P0 .7 .6 .5 .4 .3 .2 .1 .0 PDIR=0 80H DIR0 FFH FFH .7 .6 .5 .4 .3 .2 .1 .0 PDIR=1 81H SP 07H .7 .6 .5 .4 .3 .2 .1 .0 – 82H 83H DPL 00H .7 .6 .5 .4 .3 .2 .1 .0 – DPH 00H .7 .6 .5 .4 .3 .2 .1 .0 – 84H WDTL 00H .7 .6 .5 .4 .3 .2 .1 .0 – 85H 86H WDTH 00H .7 .6 .5 .4 .3 .2 .1 .0 – WDTREL 00H WPSEL .6 .5 .4 .3 .2 .1 .0 – 87H 88H PCON 00H SMOD PDS IDLS SD GF1 GF0 PDE IDLE – TCON 00H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 – 89H 8AH TMOD 00H GATE C/T M1 M0 GATE C/T M1 M0 – TL0 00H .7 .6 .5 .4 .3 .2 .1 .0 – 8BH 8CH TL1 00H .7 .6 .5 .4 .3 .2 .1 .0 – TH0 00H .7 .6 .5 .4 .3 .2 .1 .0 – 8DH TH1 00H .7 .6 .5 .4 .3 .2 .1 .0 – 90H P1 FFH T2 CLKOUT T2EX INT2 INT6 INT5 INT4 INT3 PDIR=0 90H DIR1 .7 .6 .5 .4 .3 .2 .1 .0 PDIR=1 91H XPAGE FFH 00H .7 .6 .5 .4 .3 .2 .1 .0 – 92H DPSEL – – – – – .2 .1 .0 – 98H S0CON XXXX. X000B 00H SM0 SM1 SM20 REN0 TB80 RB80 TI0 RI0 – 99H 9AH S0BUF XXH .7 .6 .5 .4 .3 .2 .1 .0 – IEN2 – – ECR ECS ECT ECMP – ES1 – 9BH S1CON XX00. 00X0B 0100. 0000B SM S1P SM21 REN1 TB81 RB81 TI1 RI1 – 9CH S1BUF XXH .7 .6 .5 .4 .3 .2 .1 .0 – 9DH S1RELL 00H .7 .6 .5 .4 .3 .2 .1 .0 – A0H P2 .7 .6 .5 .4 .3 .2 .1 .0 PDIR=0 A0H DIR2 FFH FFH .7 .6 .5 .4 .3 .2 .1 .0 PDIR=1 .2 .1 .0 – A1H COMSETL 00H .7 .6 .5 .4 .3 1) X means that the value is indeterminate or the location is reserved. 2) SFRs with a comment in this column are mapped registers. Shaded registers are bit-addressable special function registers. Semiconductor Group 3-23 1997-10-01 Memory Organization C509-L Table 3-5 Contents of the SFRs, SFRs in numeric order of their addresses (cont’d) Addr Register Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Mapped by 2) .7 .6 .5 .4 .3 .2 .1 .0 – .7 .6 .5 .4 .3 .2 .1 .0 – .7 .6 .5 .4 .3 .2 .1 .0 – A5H COMCLRH 00H SETMSK 00H .7 .6 .5 .4 .3 .2 .1 .0 – A6H CLRMSK 00H .7 .6 .5 .4 .3 .2 .1 .0 – A8H IEN0 00H EAL WDT ET2 ES0 ET1 EX1 ET0 EX0 – A9H AAH IP0 00H OWDS WDTS .5 .4 .3 .2 .1 .0 – S0RELL D9H .7 .6 .5 .4 .3 .2 .1 .0 – B0H P3 RD WR T1 T0 INT1 INT0 TxD0 RxD0 PDIR=0 B0H DIR3 FFH FFH .7 .6 .5 .4 .3 .2 .1 .0 PDIR=1 B1H SYSCON 1010. XX01B SYSCON1 00XX. 3) XEE0B CLKP PMOD 1 RMAP – – XMAP1 XMAP0 – ESWC SWC – EA1 EA0 PRGEN1 PRGEN0 SWAP – B4H PRSC 1101. 0101B WDTP S0P T2P1 T2P0 T1P1 T1P0 T0P1 T0P0 – B8H IEN1 00H EXEN2 SWDT EX6 EX5 EX4 EX3 EX2 EADC – B9H IP1 PDIR – .5 .4 .3 .2 .1 .0 – BAH S0RELH 0X00. 0000B XXXX. XX11B – – – – – – .1 .0 – BBH S1RELH XXXX. XX11B – – – – – – .1 .0 – BCH CT1CON X1XX. 0000B – CT1P – – CT1F CLK12 CLK11 CLK10 – BEH IEN3 XXXX. 00XXB – – – – ECT1 ECC1 – – – BFH IRCON2 00H ICC17 ICC16 ICC15 ICC14 ICC13 ICC12 ICC11 ICC10 PDIR=0 BFH C0H EICC1 FFH EICC17 EICC16 EICC15 EICC14 EICC13 EICC12 EICC11 EICC10 PDIR=1 IRCON0 00H EXF2 TF2 IEX6 IEX5 IEX4 IEX3 IEX2 IADC – C1H CCEN 00H COCAH 3 COCAL3 COCAH 2 A2H A3H A4H B2H Content Bit 7 after Reset 1) COMSETH 00H COMCLRL 00H COCAL2 COCAH 1 COCAL1 COCAH 0 COCAL0 – 1) X means that the value is indeterminate or the location is reserved. 2) SFRs with a comment in this column are mapped registers. 3) “E” means that the value of the bit is defined by the logic level at pin PRGEN at the rising edge of the RESET or HWPD signals. Shaded registers are bit-addressable special function registers. Semiconductor Group 3-24 1997-10-01 Memory Organization C509-L Table 3-5 Contents of the SFRs, SFRs in numeric order of their addresses (cont’d) Addr Register Content Bit 7 after Reset 1) Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Mapped by 2) C2H CCL1 00H .7 .6 .5 .4 .3 .2 .1 .0 – C3H CCH1 00H .7 .6 .5 .4 .3 .2 .1 .0 – C4H CCL2 00H .7 .6 .5 .4 .3 .2 .1 .0 – C5H CCH2 00H .7 .6 .5 .4 .3 .2 .1 .0 – C6H CCL3 00H .7 .6 .5 .4 .3 .2 .1 .0 – C7H CCH3 00H .7 .6 .5 .4 .3 .2 .1 .0 – C8H T2CON 00H T2PS I3FR I2FR T2R1 T2R0 T2CM T2I1 T2I0 – C9H CC4EN 00H COCAH 4 COCAL 4 COMO – CAH CBH CRCL 00H .7 .6 .5 .4 .3 .2 .1 .0 – CRCH 00H .7 .6 .5 .4 .3 .2 .1 .0 – CCH TL2 00H .7 .6 .5 .4 .3 .2 .1 .0 – CDH TH2 00H .7 .6 .5 .4 .3 .2 .1 .0 – CEH CCL4 00H .7 .6 .5 .4 .3 .2 .1 .0 – CFH D0H CCH4 00H .7 .6 .5 .4 .3 .2 .1 .0 – PSW 00H CY AC F0 RS1 RS0 OV F1 P – D1H D2H IRCON1 00H ICMP7 ICMP6 ICMP5 ICMP4 ICMP3 ICMP2 ICMP1 ICMP0 – CML0 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=0 D2H CC1L0 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=1 D3H CMH0 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=0 D3H CC1H0 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=1 D4H CML1 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=0 D4H CC1L1 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=1 D5H CMH1 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=0 D5H CC1H1 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=1 D6H CML2 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=0 D6H CC1L2 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=1 D7H CMH2 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=0 D7H CC1H2 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=1 D8H ADCON0 00H BD CLK ADEX BSY ADM MX2 MX1 MX0 – D9H ADDATH 00H .7 (MSB) .6 .5 .4 .3 .2 .1 .0 – COCO EN1 COCO N2 COCO N1 COCO N0 COCO EN0 1) X means that the value is indeterminate or the location is reserved. 2) SFRs with a comment in this column are mapped registers. Shaded registers are bit-addressable special function registers. Semiconductor Group 3-25 1997-10-01 Memory Organization C509-L Table 3-5 Contents of the SFRs, SFRs in numeric order of their addresses (cont’d) Addr Register Content Bit 7 after Reset 1) Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Mapped by 2) DAH ADDATL 00H .7 .6 (LSB) – – – – – – – DBH DCH P7 – .7 .6 .5 .4 .3 .2 .1 .0 – ADCON1 0100. 0000B ADCL1 ADCL0 ADST1 ADST0 MX3 MX2 MX1 MX0 – DDH P8 – – .6 .5 .4 .3 .2 .1 .0 – DEH CTRELL 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=0 DEH CT1RELL 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=1 DFH DFH CTRELH 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=0 CT1RELH 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=1 E0H ACC 00H .7 .6 .5 .4 .3 .2 .1 .0 – E1H CTCON 0100. 0000B T2PS1 CTP ICR ICS CTF CLK2 CLK1 CLK0 – E2H CML3 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=0 E2H CC1L3 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=1 E3H CMH3 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=0 E3H CC1H3 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=1 E4H CML4 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=0 E4H CC1L4 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=1 E5H CMH4 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=0 E5H CC1H4 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=1 E6H CML5 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=0 E6H CC1L5 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=1 E7H CMH5 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=0 E7H CC1H5 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=1 E8H P4 CM7 CM6 CM5 CM4 CM3 CM2 CM1 CM0 PDIR=0 E8H DIR4 FFH FFH .7 .6 .5 .4 .3 .2 .1 .0 PDIR=1 E9H MD0 XXH .7 .6 .5 .4 .3 .2 .1 .0 – EAH EBH MD1 XXH .7 .6 .5 .4 .3 .2 .1 .0 – MD2 XXH .7 .6 .5 .4 .3 .2 .1 .0 – ECH EDH MD3 XXH .7 .6 .5 .4 .3 .2 .1 .0 – MD4 XXH .7 .6 .5 .4 .3 .2 .1 .0 – 1) X means that the value is indeterminate or the location is reserved. 2) SFRs with a comment in this column are mapped registers. Shaded registers are bit-addressable special function registers. Semiconductor Group 3-26 1997-10-01 Memory Organization C509-L Table 3-5 Contents of the SFRs, SFRs in numeric order of their addresses (cont’d) Addr Register Content Bit 7 after Reset 1) Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Mapped by 2) EEH EFH MD5 XXH .7 .6 .5 .4 .3 .2 .1 .0 – ARCON 0XXX. XXXXB MDEF MDOV SLR SC.4 SC.3 SC.2 SC.1 SC.0 – F0H B 00H .7 .6 .5 .4 .3 .2 .1 .0 – F2H F2H CML6 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=0 CC1L6 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=1 F3H CMH6 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=0 F3H CC1H6 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=1 F4H CML7 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=0 F4H CC1L7 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=1 F5H CMH7 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=0 F5H CC1H7 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=1 F6H CMEN 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=0 F6H CC1EN 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=1 F7H CMSEL 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=0 F7H CAFR 00H .7 .6 .5 .4 .3 .2 .1 .0 RMAP=1 F8H P5 CCM7 CCM6 CCM5 CCM4 CCM3 CCM2 CCM1 CCM0 PDIR=0 F8H DIR5 FFH FFH .7 .6 .5 .4 .3 .2 .1 .0 PDIR=1 F9H P9 FFH CC17 CC16 CC15 CC14 CC13 CC12 CC11 CC10 PDIR=0 F9H DIR9 FFH .7 .6 .5 .4 .3 .2 .1 .0 PDIR=1 FAH FAH P6 FFH .7 .6. .5 .4 .3 TxD1 RxD1 ADST PDIR=0 DIR6 FFH .7 .6 .5 .4 .3 .2 .1 .0 PDIR=1 1) X means that the value is indeterminate or the location is reserved. 2) SFRs with a comment in this column are mapped registers. Shaded registers are bit-addressable special function registers. Semiconductor Group 3-27 1997-10-01 External Bus Interface C509-L 4 External Bus Interface The C509-L allows for external memory expansion. To accomplish this, the external bus interface common to most 8051-based microcontrollers is employed. 4.1 Accessing External Memory It is possible to distinguish between accesses to external program memory and external data memory or other peripheral components respectively. This distinction is made by hardware: accesses to external program memory use the signal PSEN (program store enable) as a read strobe. Accesses to external data memory use RD and WR to strobe the memory (alternate functions of P3.7 and P3.6). Port 0 and port 2 (with exceptions) are used to provide data and address signals. In this section only the port 0 and port 2 functions relevant to external memory accesses are described. Fetches from external program memory always use a 16-bit address. Accesses to external data memory can use either a 16-bit address (MOVX @DPTR) or an 8-bit address (MOVX @Ri). 4.1.1 Role of P0 and P2 as Data/Address Bus When used for accessing external memory, port 0 provides the data byte time-multiplexed with the low byte of the address. In this state, port 0 is disconnected from its own port latch, and the address/ data signal drives both FETs in the port 0 output buffers. Thus, in this application, the port 0 pins are not open-drain outputs and do not require external pullup resistors. During any access to external memory, the CPU writes FFH to the port 0 latch (the special function register), thus obliterating whatever information the port 0 SFR may have been holding. Whenever a 16-bit address is used, the high byte of the address comes out on port 2, where it is held for the duration of the read or write cycle. During this time, the port 2 lines are disconnected from the port 2 latch (the special function register). Thus the port 2 latch does not have to contain 1s, and the contents of the port 2 SFR are not modified. If an 8-bit address is used (MOVX @Ri), the contents of the port 2 SFR remain at the port 2 pins throughout the external memory cycle. This will facilitate paging. It should be noted that, if a port 2 pin outputs an address bit that is a 1, strong pullups will be used for the entire read/write cycle and not only for two oscillator periods. Semiconductor Group 4-1 1997-10-01 External Bus Interface C509-L 4.1.2 Timing The timing of the external bus interface, in particular the relationship between the control signals ALE, PSEN, RD, WR and information on port 0 and port 2, is illustrated in figure 4-1 a) and b). Data memory: in a write cycle, the data byte to be written appears on port 0 just before WR is activated and remains there until after WR is deactivated. In a read cycle, the incoming byte is accepted at port 0 before the read strobe is deactivated. Program memory: Signal PSEN functions as a read strobe. 4.1.3 External Program Memory Access The external program memory is accessed whenever signal EA is active (low): Due to the 64K internal ROM, no mixed internal/external program memory execution is possible. When the CPU is executing out of external program memory, all 8 bits of port 2 are dedicated to an output function and may not be used for general-purpose I/O. The contents of the port 2 SFR however is not affected. During external program memory fetches port 2 lines output the high byte of the PC, and during accesses to external data memory they output either DPH or the port 2 SFR (depending on whether the external data memory access is a MOVX @DPTR or a MOVX @Ri). When the C509-L executes instructions from external program memory, port 2 is at all times dedicated to output the high-order address byte. This means that port 0 and port 2 of the C509-L can never be used as general-purpose I/O. 4.1.4 PSEN, Program Store Enable The read strobe for external fetches is PSEN. PSEN is not activated for internal fetches. When the CPU is accessing external program memory, PSEN is activated twice every cycle (except during a MOVX instruction) no matter whether or not the byte fetched is actually needed for the current instruction. When PSEN is activated its timing is not the same as for RD. A complete RD cycle, including activation and deactivation of ALE and RD, takes 6 oscillator periods. A complete PSEN cycle, including activation and deactivation of ALE and PSEN takes 3 oscillator periods. The execution sequence for these two types of read cycles is shown in figure 4-1 a) and b). 4.1.5 Overlapping External Data and Program Memory Spaces In some applications it is desirable to execute a program from the same physical memory that is used for storing data. In the C509-L the external program and data memory spaces can be combined by AND-ing PSEN and RD. A positive logic AND of these two signals produces an active low read strobe that can be used for the combined physical memory. Since the PSEN cycle is faster than the RD cycle, the external memory needs to be fast enough to adapt to the PSEN cycle. Semiconductor Group 4-2 1997-10-01 External Bus Interface C509-L a) One Machine Cycle S1 S2 S3 S4 S5 One Machine Cycle S6 S1 S2 S3 S4 S5 S6 ALE PSEN (A) without MOVX RD PCH OUT P2 P0 PCL OUT INST. IN PCH OUT INST. IN PCL OUT valid b) PCH OUT INST. IN PCL OUT PCL OUT valid S2 S3 S4 S5 INST. IN PCL OUT PCL OUT valid One Machine Cycle S1 PCH OUT INST. IN PCL OUT PCL OUT valid One Machine Cycle S6 S1 S2 S3 S4 S5 S6 ALE PSEN (B) with MOVX RD PCH OUT P2 P0 PCL OUT INST. IN DPH OUT OR P2 OUT DATA IN INST. IN PCH OUT PCL OUT INST. IN MCT03220 PCL OUT valid DPL or Ri valid PCL OUT valid Figure 4-1 External Program Memory Execution Semiconductor Group 4-3 1997-10-01 External Bus Interface C509-L 4.1.6 ALE, Address Latch Enable The main function of ALE is to provide a properly timed signal to latch the low byte of an address from P0 into an external latch during fetches from external memory. The address byte is valid at the negative transition of ALE. For that purpose, ALE is activated twice every machine cycle. This activation takes place even if the cycle involves no external fetch. The only time no ALE pulse comes out is during an access to external data memory when RD/WR signals are active. The first ALE of the second cycle of a MOVX instruction is missing (see figure 4-1 b). Consequently, in any C509-L system that does not use data memory, ALE is activated at a constant rate of 1/3 of the oscillator frequency and can be used for external clocking or timing purposes. As a reserved function for future versions, the C509-L allows to switch off the ALE output signal by a bit in SFR SYSCON. If EA=0 (this is always the case for the C509-L), the ALE generation is always enabled and resetting of bit 5 of SFR SYSCON has no effect. Special Function Register SYSCON (Address B1H) Bit No. MSB 7 B1H 6 CLKP PMOD Reset Value : 1010XX01B 5 4 3 2 1 RMAP – – 1 LSB 0 XMAP1 XMAP0 SYSCON The functions of the shaded bits are not described in this section. Bit Function Bit 5 Reserved bit for future use: Enable/disable ALE output. Bit 5 is at “1” after reset and can be written with “0” or “1”. Semiconductor Group 4-4 1997-10-01 External Bus Interface C509-L 4.2 Enhanced Hooks Emulation Concept The Enhanced Hooks Emulation Concept of the C500 microcontroller family is a new, innovative way to control the execution of C500 MCUs and to gain extensive information on the internal operation of the controllers. Emulation of on-chip ROM based programs is possible, too (not true for the C509-l, because it lacks internal program memory). Each production chip has built-in logic for the support of the Enhanced Hooks Emulation Concept. Therefore, no costly bond-out chips are necessary for emulation. This also ensure that emulation and production chips are identical. The Enhanced Hooks TechnologyTM, which requires embedded logic in the C500 allows the C500 together with an EH-IC to function similar to a bond-out chip. This simplifies the design and reduces costs of an ICE-system. ICE-systems using an EH-IC and a compatible C500 are able to emulate all operating modes of the different versions of the C500 microcontrollers. This includes emulation of ROM, ROM with code rollover and ROMless modes of operation. It is also able to operate in single step mode and to read the SFRs after a break. ICE-System Interface to Emulation Hardware RESET EA ALE PSEN SYSCON PCON TCON C500 MCU RSYSCON RPCON RTCON EH-IC Enhanced Hooks Interface Circuit Port 0 Port 2 Optional I/O Ports Port 3 Port 1 RPort 2 RPort 0 Target System Interface TEA TALE TPSEN MCS02647 Figure 4-2 Basic C500 MCU Enhanced Hooks Concept Configuration Port 0, port 2 and some of the control lines of the C500 based MCU are used by Enhanced Hooks Emulation Concept to control the operation of the device during emulation and to transfer informations about the program execution and data transfer between the external emulation hardware (ICE-system) and the C500 MCU. Semiconductor Group 4-5 1997-10-01 External Bus Interface C509-L 4.3 Eight Datapointers for Faster External Bus Access 4.3.1 The Importance of Additional Datapointers The standard 8051 architecture provides just one 16-bit pointer for indirect addressing of external devices (memories, peripherals, latches, etc.). Except for a 16-bit “move immediate” to this datapointer and an increment instruction, any other pointer handling is to be handled bytewise. For complex applications with peripherals located in the external data memory space (e.g. CAN controller) or extended data storage capacity this turned out to be a “bottle neck” for the 8051’s communication to the external world. Especially programming in high-level languages (PLM51, C51, PASCAL51) requires extended RAM capacity and at the same time a fast access to this additional RAM because of the reduced code efficiency of these languages. 4.3.2 How the Eight Datapointers of the C509-L are Realized Simply adding more datapointers is not suitable because of the need to keep up 100% compatibility to the 8051 instruction set. This instruction set, however, allows the handling of only one single 16bit datapointer (DPTR, consisting of the two 8-bit SFRs DPH and DPL). To meet both of the above requirements (speed up external accesses, 100% compatibility to 8051 architecture) the C509-L contains a set of eight 16-bit registers from which the actual datapointer can be selected. This means that the user’s program may keep up to eight 16-bit addresses resident in these registers, but only one register at a time is selected to be the datapointer. Thus the datapointer in turn is accessed (or selected) via indirect addressing. This indirect addressing is done through a special function register called DPSEL (data pointer select register). All instructions of the C509-L which handle the datapointer therefore affect only one of the eight pointers which is addressed by DPSEL at that very moment. Figure 4-3 illustrates the addressing mechanism: a 3-bit field in register DPSEL points to the currently used DPTRx. Any standard 8051 instruction (e.g. MOVX @DPTR, A - transfer a byte from accumulator to an external location addressed by DPTR) now uses this activated DPTRx. Special Function Register DPSEL (Address 92H) Reset Value : XXXXX000B Bit No. MSB 7 6 5 4 3 2 1 LSB 0 92H – – – – .2 .1 .0 – DPSEL Bit Function – Reserved bits for future use. DPSEL.2-0 Data pointer select bits DPSEL.2-0 defines the number of the actual active data pointer.DPTR0-7. Semiconductor Group 4-6 1997-10-01 External Bus Interface C509-L - - - - - .2 .1 .0 DPSEL(92 H) DPSEL DPTR7 Selected Data- .2 .1 .0 pointer 0 0 0 DPTR 0 0 0 1 DPTR 1 0 1 0 DPTR 2 0 1 1 DPTR 3 1 0 0 DPTR 4 1 0 1 DPTR 5 1 1 0 DPTR 6 1 1 1 DPTR 7 DPTR0 DPH(83 H ) DPL(82 H) External Data Memory MCD00779 Figure 4-3 Accessing of External Data Memory via Multiple Datapointers 4.3.3 Advantages of Multiple Datapointers Using the above addressing mechanism for external data memory results in less code and faster execution of external accesses. Whenever the contents of the datapointer must be altered between two or more 16-bit addresses, one single instruction, which selects a new datapointer, does this job. lf the program uses just one datapointer, then it has to save the old value (with two 8-bit instructions) and load the new address, byte by byte. This not only takes more time, it also requires additional space in the internal RAM. 4.3.4 Application Example and Performance Analysis The following example shall demonstrate the involvement of multiple data pointers in a table transfer from the code memory to external data memory. Start address of ROM source table: Start address of table in external RAM: Semiconductor Group 1FFFH 2FA0H 4-7 1997-10-01 External Bus Interface C509-L Example 1: Using only One Datapointer (Code for an 8051) Initialization Routine MOV MOV MOV MOV LOW(SRC_PTR), #0FFH HIGH(SRC_PTR), #1FH LOW(DES_PTR), #0A0H HIGH(DES_PTR), #2FH ;Initialize shadow_variables with source_pointer ;Initialize shadow_variables with destination_pointer Table Look-up Routine under Real Time Conditions PUSH PUSH MOV MOV ;INC ;CJNE MOVC MOV MOV MOV MOV INC DPL DPH DPL, LOW(SRC_PTR) DPH, HIGH(SRC_PTR) DPTR … A,@DPTR LOW(SRC_PTR), DPL HIGH(SRC_PTR), DPH DPL, LOW(DES_PTR) DPH, HIGH(DES_PTR) DPTR MOVX MOV MOV POP POP @DPTR, A LOW(DES_PTR), DPL HIGH(DES_PTR),DPH DPH DPL ; Semiconductor Group ; Number of cycles ;Save old datapointer 2 ; 2 ;Load Source Pointer 2 ; 2 Increment and check for end of table (execution time not relevant for this consideration) – ;Fetch source data byte from ROM table 2 ;Save source_pointer and 2 ;load destination_pointer 2 ; 2 ; 2 ;Increment destination_pointer ;(ex. time not relevant) – ;Transfer byte to destination address 2 ;Save destination_pointer 2 ; 2 ;Restore old datapointer 2 ; 2 Total execution time (machine cycles): 4-8 28 1997-10-01 External Bus Interface C509-L Example 2: Using Two Datapointers (Code for an C509) Initialization Routine MOV MOV MOV MOV DPSEL, #06H DPTR, #1FFFH DPSEL, #07H DPTR, #2FA0H ;Initialize DPTR6 with source pointer ;Initialize DPTR7 with destination pointer Table Look-up Routine under Real Time Conditions PUSH MOV ;INC ;CJNE MOVC MOV DPSEL DPSEL, #06H DPTR … A,@DPTR DPSEL, #07H MOVX POP @DPTR, A DPSEL ; ; Number of cycles ;Save old source pointer 2 ;Load source pointer 2 Increment and check for end of table (execution time not relevant for this consideration) – ;Fetch source data byte from ROM table 2 ;Save source_pointer and ;load destination_pointer 2 ;Transfer byte to destination address 2 ;Save destination pointer and ;restore old datapointer 2 Total execution time (machine cycles): 12 The above example shows that utilization of the C509’s multiple datapointers can make external bus accesses two times as fast as with a standard 8051 or 8051 derivative. Here, four data variables in the internal RAM and two additional stack bytes were spared, too. This means for some applications where all eight datapointers are employed that an C509 program has up to 24 byte (16 variables and 8 stack bytes) of the internal RAM free for other use. Semiconductor Group 4-9 1997-10-01 External Bus Interface C509-L 4.4 XRAM Operation The XRAM in the C509-L is a memory area that is logically located at the upper end of the external memory space, but is integrated on the chip. Because the XRAM is used in the same way as external data memory the same instruction types (MOVX) must be used for accessing the XRAM. 4.4.1 XRAM Access Control Two bits in SFR SYSCON, XMAP0 and XMAP1, control the accesses to the XRAM. XMAP0 is a general access enable/disable control bit and XMAP1 controls the external signal generation during XRAM accesses. Special Function Register SYSCON (Address B1H) Bit No. MSB 7 B1H 6 CLKP PMOD Reset Value : 1010XX01B 5 4 3 2 1 RMAP – – 1 LSB 0 XMAP1 XMAP0 SYSCON The functions of the shaded bits are not described in this section. Bit Function – Reserved bits for future use. XMAP1 XRAM visible access control Control bit for RD/WR signals during XRAM accesses. If addresses are outside the XRAM address range or if XRAM is disabled, this bit has no effect. XMAP1 = 0: The signals RD and WR are not activated during accesses to the XRAM XMAP1 = 1: Ports 0, 2 and the signals RD and WR are activated during accesses to XRAM. In this mode, address and data information during XRAM/CAN Controller accesses are visible externally. XMAP0 Global XRAM access enable/disable control XMAP0 = 0: The access to XRAM is enabled. XMAP0 = 1: The access to XRAM is disabled (default after reset!). All MOVX accesses are performed via the external bus. Further, this bit is hardware protected. When bit XMAP1 in SFR SYSCON is set, during all accesses to the XRAM RD and WR become active and port 0 and 2 drive the actual address/data information which is read/written from/to the XRAM. This feature allows to check externally the internal data transfers to the XRAM. When port 0 and 2 are used for I/O purposes, the XMAP1 bit should not be set. Otherwise the I/O function of the port 0 and port 2 lines is interrupted. Semiconductor Group 4-10 1997-10-01 External Bus Interface C509-L After a reset operation, bit XMAP0 is reset. This means that the accesses to the XRAM is generally disabled. In this case, all accesses using MOVX instructions with an address in the range of F400H to FFFFH generate external data memory bus cycles. When XMAP0 is set, the access to the XRAM is enabled and all accesses using MOVX instructions with an address in the range of F400H to FFFFH will access internally the XRAM. Bit XMAP0 is hardware protected. If it is reset once (XRAM access enabled) it cannot be set by software. Only a reset operation will set the XMAP0 bit again. This hardware protection mechanism is done by an unsymmetric latch at the XMAP0 bit. A unintentional disabling of XRAM could be dangerous since indeterminate values could be read from external bus. To avoid this the XMAP0 bit is forced to '1' only by a reset operation. Additionally, during reset an internal capacitor is loaded. So the reset state is a disabled XRAM. Because of the load time of the capacitor, XMAP0 bit once written to '0' (that is, discharging the capacitor) cannot be set to '1' again by software. On the other hand any distortion (software hang up, noise,...) is not able to load this capacitor, too. That is, the stable status is XRAM enabled. The clear instruction for the XMAP0 bit should be integrated in the program initialization routine before the XRAM is used. In extremely noisy systems the user may have redundant clear instructions. Semiconductor Group 4-11 1997-10-01 External Bus Interface C509-L 4.4.2 Accesses to XRAM using the DPTR (16-bit Addressing Mode) The XRAM can be accessed by two read/write instructions, which use the 16-bit DPTR for indirect addressing. These instructions are: – MOVX – MOVX A, @DPTR @DPTR, A (Read) (Write) For accessing the XRAM, the effective address stored in DPTR must be in the range of F400H to FFFFH. 4.4.3 Accesses to XRAM using the Registers R0/R1 The 8051 architecture provides also instructions for accesses to external data memory range which use only an 8-bit address (indirect addressing with registers R0 or R1). The instructions are: MOVX MOVX A, @ Ri @Ri, A (Read) (Write) In application systems, either a real 8-bit bus (with 8-bit address) is used or Port 2 serves as page register which selects pages of 256-Byte. However, the distinction, whether Port 2 is used as general purpose I/0 or as “page address” is made by the external system design. From the device's point of view it cannot be decided whether the Port 2 data is used externally as address or as I/0 data. Hence, a special page register is implemented into the C509-L to provide the possibility of accessing the XRAM also with the MOVX @Ri instructions, i.e. XPAGE serves the same function for the XRAM as Port 2 for external data memory. Special Function Register XPAGE (Address 91H) Reset Value : 00H Bit No. MSB 7 6 5 4 3 2 1 LSB 0 91H .6 .5 .4 .3 .2 .1 .0 .7 XPAGE Bit Function XPAGE.7-0 XRAM high address XPAGE.7-0 is the address part A15-A8 when 8-bit MOVX instructions are used to access the internal XRAM. Figures 4-4 and 4-6 show the dependencies of XPAGE- and Port 2 - addressing in order to explain the differences in accessing XRAM/CAN controller, ext. RAM or what is to do when Port 2 is used as an I/O-port. Semiconductor Group 4-12 1997-10-01 External Bus Interface C509-L Address/Data Port 0 XRAM XPAGE Write to Port 2 Page Address Port 2 MCB02112 Figure 4-4 Write Page Address to Port 2 “MOV P2,pageaddress” will write the page address to Port 2 and the XPAGE-Register. When external RAM is to be accessed in the XRAM address range (F400H - FFFFH), XRAM has to be disabled. When additional external RAM is to be addressed in an address range ≤ XRAM (F400H) XRAM may remain being enabled and there is no need to overwrite XPAGE by a second move. Semiconductor Group 4-13 1997-10-01 External Bus Interface C509-L Address/Data Port 0 XRAM XPAGE Write to XPAGE Address/ I/O-Data Port 2 MCB02113 Figure 4-5 Write Page Address to XPAGE The page address is only written to the XPAGE register. Port 2 is available for addresses or I/O data. See figure 4-6 to see what happens when Port 2 is used as I/O-Port. Semiconductor Group 4-14 1997-10-01 External Bus Interface C509-L Address/Data Port 0 XRAM XPAGE Write I/O Data to Port 2 Port 2 I/O-Data MCB02114 Figure 4-6 Usage of Port 2 as I/O Port At a write to port 2, the XRAM address in the XPAGE register will be overwritten because of the concurrent write to port 2 and XPAGE register. So, whenever XRAM is used and the XRAM address differs from the byte written to port 2 latch it is absolutely necessary to rewrite XPAGE with the page address. Example: I/O data at port 2 shall be AAH. A byte shall be fetched from XRAM at address F830H. MOV MOV MOV MOVX R0, #30H P2, #0AAH XPAGE, #0F8H A, @R0 Semiconductor Group ; ; P2 shows AAH ; P2 still shows AAH but XRAM is addressed ; the contents of XRAM at F830H is moved to accumulator 4-15 1997-10-01 External Bus Interface C509-L The register XPAGE provides the upper address byte for accesses to XRAM with MOVX @Ri instructions. If the address formed by XPAGE and Ri points outside the XRAM address range, an external access is performed. For the C509-L the contents of XPAGE must be greater or equal F3H in order to use the XRAM/. Thus, the register XPAGE is used for addressing of the XRAM; additionally its contents are used for generating the internal XRAM select. If the contents of XPAGE is less than the XRAM address range then an external bus access is performed where the upper address byte is provided by P2 and not by XPAGE! The software has to distinguish two cases, if the MOVX @Ri instructions with paging shall be used: a) Access to XRAM: The upper address byte must be written to XPAGE or P2; both writes select the XRAM address range. b) Access to external memory: The upper address byte must be written to P2; XPAGE will be loaded with the same address in order to deselect the XRAM. 4.4.4 Reset Operation of the XRAM The content of the XRAM is not affected by a reset. After power-up the content is undefined, while it remains unchanged during and after a reset as long as the power supply is not turned off. If a reset occurs during a write operation to XRAM, the content of a XRAM memory location depends on the cycle in which the active reset signal is detected (MOVX is a 2-cycle instruction): Reset during 1st cycle : The new value will not be written to XRAM. The old value is not affected. Reset during 2nd cycle : The old value in XRAM is overwritten by the new value. 4.4.5 Behaviour of Port0 and Port2 The behaviour of Port 0 and P2 during a MOVX access depends on the control bits in register SYSCON and on the state of pin EA. The table 4-1 lists the various operating conditions. It shows the following characteristics: a) Use of P0 and P2 pins during the MOVX access. Bus: The pins work as external address/data bus. If (internal) XRAM is accessed, the data written to the XRAM can be seen on the bus in debug mode. I/0: The pins work as Input/Output lines under control of their latch. b) Activation of the RD and WR pin during the access. c) Use of internal or external XDATA memory. The shaded areas describe the standard operation as each 80C51 device without on-chip XRAM behaves. Semiconductor Group 4-16 1997-10-01 Semiconductor Group MOVX @DPTR 4-17 MOVX @ Ri EA = 0 EA = 1 XMAP1, XMAP0 XMAP1, XMAP0 00 10 X1 00 10 X1 a)P0/P2→Bus b)RD/WR active c)ext.memory is used a)P0/P2→Bus b)RD/WR active c)ext.memory is used a)P0/P2→Bus b)RD/WR active c)ext.memory is used a)P0/P2→Bus b)RD/WR active c)ext.memory is used a)P0/P2→Bus b)RD/WR active c)ext.memory is used a)P0/P2→Bus b)RD/WR active c)ext.memory is used DPTR ≥ XRAM address range a)P0/P2→Bus (WR / RD Data) b)RD/WR inactive c)XRAM is used a)P0/P2→Bus a)P0/P2→Bus a)P0/P2→I/0 (WR / RD Data) b)RD/WR active b)RD/WR active b)RD/WR c)XRAM is used c) ext.memory inactive is used c)XRAM is used a)P0/P2→Bus a)P0/P2→Bus (WR / RD Data) b)RD/WR active b)RD/WR active c)XRAM is used c) ext.memory is used XPAGE < XRAM addr.page range a)P0→Bus P2→I/O b)RD/WR active c)ext.memory is used a)P0→Bus P2→I/O b)RD/WR active c)ext.memory is used a)P0→Bus P2→I/O b)RD/WR active c)ext.memory is used XPAGE ≥ XRAM addr.page range a)P0→Bus (WR / RD Data) P2→I/O b)RD/WR inactive c)XRAM is used a)P0→Bus a)P0→Bus a)P2→I/O (WR / RD Data) P2→I/O P0/P2→I/O P2→I/O b)RD/WR active b)RD/WR active b)RD/WR inactive c)XRAM is used c)ext.memory c)XRAM is used is used DPTR < XRAM address range Table 4-1 Behaviour of P0/P2 and RD/WR During MOVX Accesses a)P0→Bus P2→I/O b)RD/WR active c)ext.memory is used a)P0→Bus P2→I/O b)RD/WR active c)ext.memory is used a)P0→Bus a)P0→Bus (WR / RD Data) P2→I/O P2→I/O b)RD/WR active b)RD/WR active c)XRAM is used c)ext.memory is used External Bus Interface C509-L 1997-10-01 modes compatible to 8051/C501 family a)P0→Bus P2→I/O b)RD/WR active c)ext.memory is used Reset / System Clock C509-L 5 5.1 Reset and System Clock Operation Reset Function and Circuitries The hardware reset function incorporated in the C509-L allows for an easy automatic start-up at a minimum of additional hardware and forces the controller to a predefined default state. The hardware reset function can also be used during normal operation in order to restart the device. This is particularly done when the power-down mode is to be terminated. Additionally to the hardware reset, which is applied externally to the C509-L, there are two internal reset sources, the watchdog timer and the oscillator watchdog. They are described in detail in section 8 "Fail-Save Mechanisms". The actual chapter only deals with the external hardware reset. The reset input is an active low input at pin RESET. An internal Schmitt trigger is used at the input for noise rejection. Since the reset is synchronized internally, the RESET pin must be held low for at least two machine cycles (12 oscillator periods) while the oscillator is running. With the oscillator running the internal reset is executed during the second machine cycle in which RESET is low and is repeated every cycle until RESET goes high again. During reset, pins ALE and PSEN are configured as inputs and should not be stimulated externally. (An external stimulation at these lines during reset activates several test modes which are reserved for test purposes. This in turn may cause unpredictable output operations at several port pins). A pullup resistor is internally connected to VCC to allow a power-up reset with an external capacitor only. An automatic reset can be obtained when VCC is applied by connecting the reset pin to VSS via a capacitor as shown in figure 5-1 a) and c). After VCC has been turned on, the capacitor must hold the voltage level at the reset pin for a specified time below the upper threshold of the Schmitt trigger to effect a complete reset. Semiconductor Group 5-1 1997-10-01 Reset / System Clock C509-L The time required for a reset operation is the oscillator start-up time plus 2 machine cycles, which, under normal conditions, must be at least 10 - 20 ms for a crystal oscillator. This requirement is typically met using a capacitor of 4.7 to 10 µF. The same considerations apply if the reset signal is generated externally (figure 5-1 b). In each case it must be assured that the oscillator has started up properly and that at least two machine cycles have passed before the reset signal goes inactive. Figure 5-1 Reset Circuitries A correct reset leaves the processor in a defined state. The program execution starts at location 0000H. Depending on the state of the PRGEN pin, either external ROM/EPROM is accessed (Normal Mode) or the C509-L starts with the bootstrap loader program located in the Boot ROM (Bootstrap Mode). The default values of the special function registers (SFR) to which they are forced during reset are listed in table 3-4 and 3-5 of chapter 3. After reset is internally accomplished the port latches of ports 0 to 6 are set to FFH. This leaves port 0 floating, since it is an open drain port when not used as data/address bus. All other I/O port lines (ports 1 to 6 and 9) output a one (1). Ports 7 and 8, which are input-only ports, have no internal latch and therefore the contents of the special function registers P7 and P8 depend on the levels applied to ports 7 and 8. The content of the internal RAM of the C509-L is not affected by a reset. After power-up the content is undefined, while it remains unchanged during a reset it the power supply is not turned off. Semiconductor Group 5-2 1997-10-01 Reset / System Clock C509-L 5.2 Hardware Reset Timing This section describes the timing of the hardware reset signal. The input pin RESET is sampled once during each machine cycle. This happens in state 5 phase 2. Thus, the external reset signal is synchronized to the internal CPU timing. When the reset is found active (low level at pin RESET) the internal reset procedure is started. lt needs two complete machine cycles to put the complete device to its correct reset state, i.e. all special function registers contain their default values, the port latches contain 1’s etc. Note that this reset procedure is not performed if there is no clock available at the device (This can be avoided using the oscillator watchdog, which provides an auxiliary clock for performing a correct reset without clock at the XTAL1 and XTAL2 pins). The RESET signal must be active for at least two machine cycles; after this time the C509-L remains in its reset state as long as the signal is active. When the signal goes inactive this transition is recognized in the following state 5 phase 2 of the machine cycle. Then the processor starts its address output (when configured for external ROM) in the following state 5 phase 1. One phase later (state 5 phase 2) the first falling edge at pin ALE occurs. Figure 5-2 shows this timing for a configuration with EA = 0 (external program memory). Thus, between the release of the RESET signal and the first falling edge at ALE there is a time period of at least one machine cycle but less than two machine cycles. Figure 5-2 CPU Timing after Reset Semiconductor Group 5-3 1997-10-01 Reset / System Clock C509-L 5.3 Fast Internal Reset after Power-On The C509-L uses the oscillator watchdog unit (see also chapter 8) for a fast internal reset procedure after power-on. Figure 5-3 shows the power-on sequence under control of the oscillator watchdog. Normally the devices of the 8051 family enter their default reset state not before the on-chip oscillator starts. The reason is that the external reset signal must be internally synchronized and processed in order to bring the device into the correct reset state. Especially if a crystal is used the start up time of the oscillator is relatively long (max. 10 ms). During this time period the pins have an undefined state which could have severe effects especially to actuators connected to port pins. In the C509-L the oscillator watchdog unit avoids this situation. In this case, after power-on the oscillator watchdog's RC oscillator starts working within a very short start-up time (typ. less than 2 microseconds). In the following the watchdog circuitry detects a failure condition for the on-chip oscillator because this has not yet started (a failure is always recognized if the watchdog's RC oscillator runs faster than the on-chip oscillator). As long as this condition is detected the watchdog uses the RC oscillator output as clock source for the chip rather than the on-chip oscillator's output. This allows correct resetting of the part and brings also all ports to the defined state (see figure 5-3). Under worst case conditions (fast VCC rise time - e.g. 1µs, measured from VCC = 4.25 V up to stable port condition), the delay between power-on and the correct port reset state is : – Typ.: – Max.: 18 µs 34 µs The RC oscillator will already run at a VCC below 4.25V (lower specification limit). Therefore, at slower VCC rise times the delay time will be less than the two values given above. After the on-chip oscillator finally has started, the oscillator watchdog detects the correct function; then the watchdog still holds the reset active for a time period of max. 768 cycles of the RC oscillator clock in order to allow the oscillation of the on-chip oscillator to stabilize (figure 5-3, II). Subsequently, the clock is supplied by the on-chip oscillator and the oscillator watchdog's reset request is released (figure 5-3, III). However, an externally applied reset still remains active (figure 5-3, IV) and the device does not start program execution (figure 5-3, V) before the external reset is also released. Although the oscillator watchdog provides a fast internal reset it is additionally necessary to apply the external reset signal when powering up. The reasons are as follows: – – – Termination of Hardware Power-Down Mode (a HWPD signal is overriden by reset) Termination of the Software Power Down Mode Reset of the status flag OWDS that is set by the oscillator watchdog during the power up sequence. Using a crystal for clock generation, the external reset signal must be hold active at least until the on-chip oscillator has started (max.10 ms) and the internal watchdog reset phase is completed (after phase III in figure 5-3). When an external clock generator is used, phase II is very short. Therefore, an external reset time of typically 1 ms is sufficient in most applications. Generally, for reset time generation at power-on an external capacitor can be applied to the RESET pin. Semiconductor Group 5-4 1997-10-01 Semiconductor Group 5-5 Phase RESET VCC RC Oscillator On-Chip Oscillator Ports II Clock from RC-Oscillator, Reset at Ports Power On; undef. Port typ. 18 µs max. 34 µs Reset I Undef. IV Port remains in reset because of ext. reset signal III On-chip oscillator starts; final reset sequence by oscillator WD; max. 768 Cycles MCD02722 Start of program execution V Reset / System Clock C509-L Figure 5-3 Power-On Reset of the C509-L 1997-10-01 Reset / System Clock C509-L 5.4 Reset Output Pin (RO) As mentioned before the C509-L internally synchronizes an external reset signal at pin RESET in order to perform a reset procedure. Additionally, the C509-L provides several "fail-save" mechanisms, e.g. watchdog timer and oscillator watchdog, which can internally generate a reset, too. Thus, it is often important to inform also the peripherals external to the chip that a reset is being performed and that the controller will soon start its program again. For that purpose, the C509-L has a pin dedicated to output the internal reset request. This reset output (RO) shows the internal (and already synchronized) reset signal requested by any of the three possible sources in the C509-L: external hardware reset, watchdog timer reset, or oscillator watchdog reset. The duration of the active low signal of the reset output depends on the source which requests it. In the case of the external hardware reset it is the synchronized external reset signal at pin RESET. In the case of a watchdog timer reset or oscillator watchdog reset the RO signal takes at least two machine cycles, which is the minimal duration for a reset request allowed. For details - how the reset requests are OR-ed together and how long they last - see also chapter 8 "Fail-Save Mechanisms" . 5.5 Oscillator and Clock Circuit XTAL1 and XTAL2 are the output and input of a single-stage on-chip inverter which can be configured with off-chip components as a Pierce oscillator. The oscillator, in any case, drives the internal clock generator. The clock generator provides the internal clock signals to the chip at half the oscillator frequency. These signals define the internal phases, states and machine cycles. Figure 5-4 shows the recommended oscillator circuit. Figure 5-4 Recommended Oscillator Circuit Semiconductor Group 5-6 1997-10-01 Reset / System Clock C509-L In this application the on-chip oscillator is used as a crystal-controlled, positive-reactance oscillator (a more detailed schematic is given in figure 5-5). lt is operated in its fundamental response mode as an inductive reactor in parallel resonance with a capacitor external to the chip. The crystal specifications and capacitances are non-critical. In this circuit 20 pF can be used as single capacitance at any frequency together with a good quality crystal. A ceramic resonator can be used in place of the crystal in cost-critical applications. lt a ceramic resonator is used, C1 and C2 are normally selected to be of somewhat higher values, typically 47 pF. We recommend consulting the manufacturer of the ceramic resonator for value specifications of these capacitors. Figure 5-5 On-Chip Oscillator Circuitry To drive the C509-L with an external clock source, the external clock signal has to be applied to XTAL2, as shown in figure 5-6. XTAL1 has to be left unconnected. A pullup resistor is suggested (to increase the noise margin), but is optional if VOH of the driving gate corresponds to the VIH2 specification of XTAL2. Figure 5-6 External Clock Source Semiconductor Group 5-7 1997-10-01 Reset / System Clock C509-L 5.6 System Clock Output For peripheral devices requiring a system clock, the C509-L provides a clock output signal derived from the oscillator frequency as an alternate output function on pin P1.6/CLKOUT. lf bit CLK is set (bit 6 of special function register ADCON0), a clock signal with 1/6 or 1/12 of the oscillator frequency (depending on bit CLKP in SFR SYSCON) is gated to pin P1.6/CLKOUT. To use this function the port pin must be programmed to a one (1), which is also the default after reset. Special Function Register ADCON0 (Address D8H) Special Function Register SYSCON (Address B1H) Bit No. D8H B1H Reset Value : 00H Reset Value : 1010XX01B MSB DFH DEH DDH DCH DBH DAH D9H LSB D8H BD CLK ADEX BSY ADM MX2 MX1 MX0 7 6 5 4 3 2 1 0 RMAP – – CLKP PMOD EALE XMAP1 XMAP0 ADCON0 SYSCON These bits are not used in controlling the clock output function. Bit Function CLK Clock output enable bit When set, pin P1.6/CLKOUT outputs the system clock which is 1/6 or 1/12 of the oscillator frequency. CLKP Prescaler control for the clock output signal CLKOUT CLKP = 0 : CLKOUT frequency is fOSC/6 CLKP = 1 : CLKOUT frequency is fOSC/12 (default after reset) A timing diagram of the system clock output is shown in figure 5-7. This timing assumes that CLK=1 and CLKP=0. Note : During slow-down operation the frequency of the CLKOUT signal is further divided by eight. Semiconductor Group 5-8 1997-10-01 Reset / System Clock C509-L S6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 S1 S2 ALE PSEN RD,WR CLKOUT MCT01858 Figure 5-7 Timing Diagram - System Clock Output Semiconductor Group 5-9 1997-10-01 On-Chip Peripheral Components C509-L 6 On-Chip Peripheral Components This chapter gives detailed information about all on-chip peripherals of the C509-L except for the integrated interrupt controller, which is described separately in chapter 7. 6.1 Parallel I/O 6.1.1 Port Structures Digital I/O Ports The C509-L allows for digital I/O on 64 lines grouped into 8 bidirectional 8-bit ports. Each port bit consists of a latch, an output driver and an input buffer. Read and write accesses to the I/O ports P0 through P6 and P9 are performed via their corresponding special function registers P0 to P6 and P9. The port structure of the C509-L is designed to operate either as a quasi-bidirectional port structure, compatible to the standard 8051-Family, or as a genuine bidirectional port structure. This port operating mode can be selected by software (setting or clearing the bit PMOD in the SFR SYSCON). The output drivers of port 0 and 2 and the input buffers of port 0 are also used for accessing external memory. In this application, port 0 outputs the low byte of the external memory address, timemultiplexed with the byte being written or read. Port 2 outputs the high byte of the external memory address when the address is 16 bits wide. Otherwise, the port 2 pins continue emitting the P2 SFR contents. Analog Input Ports Ports 7 and 8 are available as input ports only and provide for two functions. When used as digital inputs, the corresponding SFR’s P7 and P8 contain the digital value applied to port 7 and port 8 lines. When used for analog inputs the desired analog channel is selected by a three-bit field in SFR ADCON0 or a four-bit field in SFR ADCON1. Of course, it makes no sense to output a value to these input-only ports by writing to the SFR’s P7 or P8; this will have no effect. lf a digital value is to be read, the voltage levels are to be held within the input voltage specifications (VIL/VIH). Since P7 and P8 are not bit-addressable registers, all input lines of P7 or P8 are read at the same time by byte instructions. Nevertheless, it is possible to use ports 7 and 8 simultaneously for analog and digital input. However, care must be taken that all bits of P7 or P8 that have an undetermined value caused by their analog function are masked. In order to guarantee a high-quality A/D conversion, digital input lines of port 7 and port 8 should not toggle while a neighboring port pin is executing an A/D conversion. This could produce crosstalk to the analog signal. Semiconductor Group 6-1 1997-10-01 On-Chip Peripheral Components C509-L Figure 6-1 shows a functional diagram of a typical bit latch and I/O buffer, which is the core of each of the 8 digital I/O-ports. The bit latch (one bit in the port’s SFR) is represented as a type-D flip-flop, which will clock in a value from the internal bus in response to a “write-to-latch” signal from the CPU. The Q output of the flip-flop is placed on the internal bus in response to a “read-latch” signal from the CPU. The level of the port pin self is placed on the internal bus in response to a “read-pin” signal from the CPU. Some instructions that read from a port activate the “read-port-latch” signal, while others activate the “read-port-pin” signal. Figure 6-1 Basic Structure of a Port Circuitry Semiconductor Group 6-2 1997-10-01 On-Chip Peripheral Components C509-L The shaded area in figure 6-1 shows the control logic in the C509-L, which has been added to the functionality of the standard 8051 digital I/O port structure. This control logic is used to provide an additional bidirectional port structure with CMOS voltage levels. 6.1.1.1 Port Structure Selection After a reset operation of the C509-L, the quasi-bidirectional 8051-compatible port structure is selected. For selection of the bidirectional port structure (CMOS) the bit PMOD of SFR SYSCON must be set. Because each port pin can be programmed as an input or an output, additionally, after the selection of the bidirectional mode the direction register of the ports must be written (except the analog/digital input ports 7,8). This direction registers are mapped to the port registers. This means, the port register address is equal to its direction register address. Figure 6-2 illustrates the portand direction register configuration. Figure 6-2 Port Register, Direction Register For the access the direction registers a double instruction sequence must be executed. The first instruction has to set bit PDIR in SFR IP1. Thereafter, a second instruction can read or write the direction registers. PDIR will automatically be cleared after the second machine cycle (S2P2) after having been set. For this time, the access to the direction register is enabled and the register can be read or written. Further, the double instruction sequence as shown in figure 6-2, cannot be interrupted by an interrupt, When the bidirectional port structure is activated (PMOD=1) after a reset, the ports are defined as inputs (direction registers default values after reset are set to FFH). With PMOD = 0 (quasi-bidirectional port structure selected), any access to the direction registers has no effect on the port driver circuitries. Semiconductor Group 6-3 1997-10-01 On-Chip Peripheral Components C509-L Special Function Register SYSCON (Address B1H) Special Function Register IP1 (Address B9H) Bit No. B1H B9H MSB 7 6 CLKP PMOD Reset Value : 1010XX01B Reset Value : 0X000000B 5 4 3 2 1 RMAP – – 1 LSB 0 XMAP1 XMAP0 7 6 5 4 3 2 1 0 PDIR – .5 .4 .3 .2 .1 .0 SYSCON IP1 The shaded bits are not used for port selection. Bit Function PMOD Port mode selection PMOD = 0: Quasi-bidirectional port structure is selected (reset value) PMOD = 1: Bidirectional port structure is selected. PDIR Direction register enable PDIR = 0: Port register access is enabled (reset value) PDIR = 1: Direction register is enabled. PDIR will automatically be cleared after the second machine cycle (S2P2) after having been set. Direction Registers DIR0-DIR6, DIR9 (Mapped Address = Port Address) Bit No. Address. = Port-Addr. Reset Value : FFH MSB 7 6 5 4 3 2 1 LSB 0 .7 .6 .5 .4 .3 .2 .1 .0 Direction Register Bit Function Bit 7...0 Port driver circuitry, input/output selection Bit = 0: Port line is in output mode Bit = 1: Port line is in input mode (reset value). This register can only be read and written by software when bit PDIR (IP1) was set one instruction before. Semiconductor Group 6-4 1997-10-01 On-Chip Peripheral Components C509-L 6.1.1.2 Quasi-Bidirectional Port Structure 6.1.1.2.1 Basic Port Circuitry of Port 1 to 6 and 9 The basic quasi-bidirectional port structure as shown in the upper part of the schematics of figure 6-1 provides a port driver circuit which is build up by an internal pullup FET as shown in figure 6-3. Each I/O line can be used independently as an input or output. To be used as an input, the port bit stored in the bit latch must contain a one (1) (that means for figure 6-3: Q=0), which turns off the output driver FET n1. Then, for ports 1 to 6 and 9, the pin is pulled high by the internal pullups, but can be pulled low by an external source. When externally pulled low the port pins source current (IIL or ITL). For this reason these ports are sometimes called “quasi-bidirectional”. Read Latch VCC Internal Pull Up Arrangement Int. Bus Write to Latch Q D Bit Latch CLK Q Pin n1 MCS01823 Read Pin Figure 6-3 Basic Output Driver Circuit of Ports 1 to 6 and 9 Semiconductor Group 6-5 1997-10-01 On-Chip Peripheral Components C509-L In fact, the pullups mentioned before and included in figure 6-3 are pullup arrangements as shown in figure 6-4. One n-channel pulldown FET and three pullup FETs are used: VCC Delay = 1 State =1 <_ 1 p1 p2 p3 Port Pin n1 Q VSS Input Data (Read Pin) =1 =1 MCS03230 Figure 6-4 Output Driver Circuit of Ports 1 to 6 and 9 – The pulldown FET n1 is of n-channel type. It is a very strong driver transistor which is capable of sinking high currents (IOL); it is only activated if a “0” is programmed to the port pin. A short circuit to VCC must be avoided if the transistor is turned on, since the high current might destroy the FET. This also means that no “0” must be programmed into the latch of a pin that is used as input. – The pullup FET p1 is of p-channel type. It is activated for one state (S1) if a 0-to-1 transition is programmed to the port pin, i.e. a “1” is programmed to the port latch which contained a “0”. The extra pullup can drive a similar current as the pulldown FET n1. This provides a fast transition of the logic levels at the pin. – The pullup FET p2 is of p-channel type. It is always activated when a “1” is in the port latch, thus providing the logic high output level. This pullup FET sources a much lower current than p1; therefore the pin may also be tied to ground, e.g. when used as input with logic low input level. – The pullup FET p3 is of p-channel type. It is only activated if the voltage at the port pin is higher than approximately 1.0 to 1.5 V. This provides an additional pullup current if a logic high level shall be output at the pin (and the voltage is not forced lower than approximately 1.0 to 1.5 V). However, this transistor is turned off if the pin is driven to a logic low level, e.g when used as input. In this configuration only the weak pullup FET p2 is active, which sources the current IIL . If, in addition, the pullup FET p3 is activated, a higher current can be sourced (ITL). Thus, an additional power consumption can be avoided if port pins are used as inputs with a low level applied. However, the driving capability is stronger if a logic high level is output. Semiconductor Group 6-6 1997-10-01 On-Chip Peripheral Components C509-L The described activating and deactivating of the four different transistors results in four states which can be: – input low state (IL), p2 active only – input high state (IH) = steady output high state (SOH), p2 and p3 active – forced output high state (FOH), p1, p2 and p3 active – output low state (OL), n1 active If a pin is used as input and a low level is applied, it will be in IL state, if a high level is applied, it will switch to IH state. If the latch is loaded with “0”, the pin will be in OL state. If the latch holds a “0” and is loaded with “1”, the pin will enter FOH state for two cycles and then switch to SOH state. If the latch holds a “1” and is reloaded with a “1” no state change will occur. At the beginning of power-on reset the pins will be in IL state (latch is set to “1”, voltage level on pin is below of the trip point of p3). Depending on the voltage level and load applied to the pin, it will remain in this state or will switch to IH (=SOH) state. If it is used as output, the weak pull-up p2 will pull the voltage level at the pin above p3’s trip point after some time and p3 will turn on and provide a strong “1”. Note, however, that if the load exceeds the drive capability of p2 (IIL), the pin might remain in the IL state and provide a week “1” until the first 0-to-1 transition on the latch occurs. Until this the output level might stay below the trip point of the external circuitry. The same is true if a pin is used as bidirectional line and the external circuitry is switched from output to input when the pin is held at “0” and the load then exceeds the p2 drive capabilities. If the load exceeds IIL the pin can be forced to “1” by writing a “0” followed by a “1” to the port pin. Semiconductor Group 6-7 1997-10-01 On-Chip Peripheral Components C509-L 6.1.1.2.2 Port 0 Circuitry Port 0, in contrast to ports 1 to 6 and 9, is considered as “true” bidirectional, because the port 0 pins float when configured as inputs. Thus, this port differs in not having internal pullups. The pullup FET in the P0 output driver (see figure 6-5) is used only when the port is emitting 1 s during the external memory accesses. Otherwise, the pullup is always off. Consequently, P0 lines that are used as output port lines are open drain lines. Writing a “1” to the port latch leaves both output FETs off and the pin floats. In that condition it can be used as high-impedance input. If port 0 is configured as general I/O port and has to emit logic high-level (1), external pullups are required. VCC Addr./Data Control Read Latch & =1 Int. Bus Write to Latch D Port Pin Q Bit Latch CLK MUX Q Read Pin MCS02434 Figure 6-5 Port 0 Circuitry Semiconductor Group 6-8 1997-10-01 On-Chip Peripheral Components C509-L 6.1.1.2.3 Port 0 and Port 2 used as Address/Data Bus As shown in figure 6-5 and below in figure 6-6, the output drivers of ports 0 and 2 can be switched to an internal address or address/data bus for use in external memory accesses. In this application they cannot be used as general purpose I/O, even if not all address lines are used externally. The switching is done by an internal control signal dependent on the input level at the EA pin and/or the contents of the program counter. If the ports are configured as an address/data bus, the port latches are disconnected from the driver circuit. During this time, the P2 SFR remains unchanged while the P0 SFR has 1’s written to it. Being an address/data bus, port 0 uses a pullup FET as shown in figure 6-5. When a 16-bit address is used, port 2 uses the additional strong pullups p1 to emit 1’s for the entire external memory cycle instead of the weak ones (p2 and p3) used during normal port activity. Addr. Control Read Latch VCC Internal Pull Up Arrangement Port Pin Int. Bus Write to Latch D Q Bit Latch CLK MUX Q =1 Read Pin MCS03228 Figure 6-6 Port 2 Circuitry Semiconductor Group 6-9 1997-10-01 On-Chip Peripheral Components C509-L 6.1.1.3 Bidirectional (CMOS) Port Structure 6.1.1.3.1 Input Mode Figure 6-7 shows the bidirectional port structure in the input mode. Figure 6-7 Bidirectional Port Structure - Input Mode The input mode for a port pin is selected by programming the corresponding direction bit to '1' (QDL='1'). The FETs p1, p2, p3 and n1 are switched off. Through a Schmitt-Trigger, designed to detect CMOS levels, the input signal is lead to the internal bus where it can be read by the microcontroller. Semiconductor Group 6-10 1997-10-01 On-Chip Peripheral Components C509-L 6.1.1.3.2 Output Mode The output mode for a port pin is selected by programming the corresponding direction bit to '0' (QDL='0'). The contents of the port latch determines whether a '1' (QPL='0') or a '0' (QPL='1') is driven. Figure 6-8 shows the port structure in the output mode driving a '1' while figure 6-9 illustrates the port structure in the output mode driving a '0'. Figure 6-8 Bidirectional Port Structure - Output Mode - “1” The FET n1 is switched off. FET p1 is activated for one state (dashed lines) if a 0-to-1 transition is programmed to the port pin, i.e. a '1' is programmed to the port latch which contained a '0'. The FETs p2, p3 are both active and are driving the '1' at the port pin. Semiconductor Group 6-11 1997-10-01 On-Chip Peripheral Components C509-L Figure 6-9 Bidirectional Port Structure - Output Mode - “0” The FET n1 is switched on and is driving a '0' at the port pin. FETs p1, p2, p3 are switched off. Semiconductor Group 6-12 1997-10-01 On-Chip Peripheral Components C509-L 6.1.1.3.3 Hardware Power Down Mode Figure 6-10 shows the port structure when the HWPD-pin becomes active (HWPD='0'). First of all the SFRs are written with their reset values. Therefore, the bit PMOD is cleared (PMOD=0), quasibidirectional port structure is enabled after leaving the hardware power down mode) and the port latch and direction latch contain a '1' (QPL = '0', QDL='1'). Then the hardware power down mode with ports in tri-state status is entered. Figure 6-10 Bidirectional Port Structure - Hardware Power Down Mode Due to HWPD='0' the FET n2 becomes active and the FETs p2 and p5 are switched off. The FETs p1, p3 and n1 are switched off caused by the status of the port latch, direction latch and of PMOD (reset values). Semiconductor Group 6-13 1997-10-01 On-Chip Peripheral Components C509-L 6.1.2 Alternate Functions Several pins of ports 1, 3, 4, 5 and 6 are multifunctional. They are port pins and also serve to implement special features as listed in table 6-1. Figure 6-11 shows a functional diagram of a port latch with alternate function. To pass the alternate function to the output pin and vice versa, however, the gate between the latch and driver circuit must be open. Thus, to use the alternate input or output functions, the corresponding bit latch in the port SFR has to contain a one (1); otherwise the pull-down FET is on and the port pin is stuck at 0. (This does not apply to ports 1.0 to 1.4 and ports 5.0 to 5.7 when operating in compare output mode). After reset all port latches contain ones (1). VCC Alternate Output Function Read Latch Internal Pull Up Arrangement Pin Int. Bus Q D Bit Latch Write to Latch CLK & Q MCS01827 Read Pin Alternate Input Function Figure 6-11 Circuitry of Ports 1, 3, 4, 5 and 6.0 through 6.2 Ports 6.3 through 6.7 have no alternate functions as described above. Therefore, the port circuitry can do without the switching capability between alternate function and normal I/O operation. This more simple circuitry is shown as basic port structure in figure 6-3. Table 6-1 : Alternate Functions of Port Pins Port Pin Alternate Function P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 INT3/CC0 INT4/CC1 INT5/CC2 INT6/CC3 INT2/CC4 T2EX CLKOUT T2 External interrupt 3/capture 0/compare 0 External interrupt 4/capture 1/compare 1 External interrupt 5/capture 2/compare 2 External interrupt 6/capture 3/compare 3 External interrupt 2/capture 4/compare 4 Timer 2 ext. reload trigger input System clock output Timer 2 external count input Semiconductor Group 6-14 1997-10-01 On-Chip Peripheral Components C509-L Table 6-1 : Alternate Functions of Port Pins (cont’d) Port Pin Alternate Function P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 RXD0 TXD0 INT0 INT1 T0 T1 WR RD Serial input channel 0 Serial output channel 0 External interrupt 0 External interrupt 1 Timer 0 external count input Timer 1 external count input External data memory write strobe External data memory read strobe P4.0 P4.1 P4.2 P4.3 P4.4 P4.5 P4.6 P4.7 CM0 CM1 CM2 CM3 CM4 CM5 CM6 CM7 Compare output for the CM0 register Compare output for the CM1 register Compare output for the CM2 register Compare output for the CM3 register Compare output for the CM4 register Compare output for the CM5 register Compare output for the CM6 register Compare output for the CM7 register P5.0 P5.1 P5.2 P5.3 P5.4 P5.5 P5.6 P5.7 CCM0 CCM1 CCM2 CCM3 CCM4 CCM5 CCM6 CCM7 Concurrent compare 0 output Concurrent compare 1 output Concurrent compare 2 output Concurrent compare 3 output Concurrent compare 4 output Concurrent compare 5 output Concurrent compare 6 output Concurrent compare 7 output P6.0 P6.1 P6.2 P6.3 ADST RXD1 TXD1 WRF External A/D converter start Serial input channel 1 Serial output channel 1 Write external FLASH P9.0 P9.1 P9.2 P9.3 P9.4 P9.5 P9.6 P9.7 CC10 CC11 CC12 CC13 CC14 CC15 CC16 CC17 Compare output/capture input for CC10 register Compare output/capture input for CC11 register Compare output/capture input for CC12 register Compare output/capture input for CC13 register Compare output/capture input for CC14 register Compare output/capture input for CC15 register Compare output/capture input for CC16 register Compare output/capture input for CC17 register Semiconductor Group 6-15 1997-10-01 On-Chip Peripheral Components C509-L 6.1.3 Port Handling 6.1.3.1 Port Timing When executing an instruction that changes the value of a port latch, the new value arrives at the latch during S6P2 of the final cycle of the instruction. However, port latches are only sampled by their output buffers during phase 1 of any clock period (during phase 2 the output buffer holds the value it noticed during the previous phase 1). Consequently, the new value in the port latch will not appear at the output pin until the next phase 1, which will be at S1P1 of the next machine cycle. When an instruction reads a value from a port pin (e.g. MOV A, P1) the port pin is actually sampled in state 5 phase 1 or phase 2 depending on port and alternate functions. Figure 6-12 illustrates this port timing. lt must be noted that this mechanism of sampling once per machine cycle is also used if a port pin is to detect an “edge”, e.g. when used as counter input. In this case an “edge” is detected when the sampled value differs from the value that was sampled the cycle before. Therefore, there must be met certain requirements on the pulse length of signals in order to avoid signal “edges” not being detected. The minimum time period of high and low level is one machine cycle, which guarantees that this logic level is noticed by the port at least once. S4 S5 S6 S1 S2 S3 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 XTAL2 Input sampled: e.g.: MOV A, P1 p1 active for 1 state (driver transistor) or Port Old Data New Data Figure 6-12 Port Timing Semiconductor Group 6-16 1997-10-01 On-Chip Peripheral Components C509-L 6.1.3.2 Port Loading and Interfacing The output buffers of ports 1 to 6 and 9 can drive TTL inputs directly. The maximum port load which still guarantees correct logic output levels can be looked up in the C509-L DC characteristics in chapter 11 or in the data sheet. The corresponding parameters are VOL and VOH. The same applies to port 0 output buffers. They do, however, require external pullups to drive floating inputs, except when being used as the address/data bus. When used as inputs it must be noted that the ports 1 to 6 and 9 are not floating but have internal pullup transistors. The driving devices must be capable of sinking a sufficient current if a logic low level shall be applied to the port pin (the parameters ITL and IIL in the C509-L DC characteristics specify these currents). Port 0 has floating inputs when used for digital input. 6.1.3.3 Read-Modify-Write Feature of Ports 1 to 6 and 9 Some port-reading instructions read the latch and others read the pin. The instructions reading the latch rather than the pin read a value, possibly change it, and then rewrite it to the latch. These are called “read-modify-write”- instructions, which are listed in table 6-2. If the destination is a port or a port pin, these instructions read the latch rather than the pin. Note that all other instructions which can be used to read a port, exclusively read the port pin. In any case, reading from latch or pin, resp., is performed by reading the SFRs P0, P1, P2 and P3; for example, “MOV A, P3” reads the value from port 3 pins, while “ANL P3, #0AAH” reads from the latch, modifies the value and writes it back to the latch. It is not obvious that the last three instructions in table 6-2 are read-modify-write instructions, but they are. The reason is that they read the port byte, all 8 bits, modify the addressed bit, then write the complete byte back to the latch. Table 6-2 : “Read-Modify-Write”- Instructions Instruction Function ANL Logic AND; e.g. ANL P1, A ORL Logic OR; e.g. ORL P2, A XRL Logic exclusive OR; e.g. XRL P3, A JBC Jump if bit is set and clear bit; e.g. JBC P1.1, LABEL CPL Complement bit; e.g. CPL P3.0 INC Increment byte; e.g. INC P1 DEC Decrement byte; e.g. DEC P1 DJNZ Decrement and jump if not zero; e.g. DJNZ P3, LABEL MOV Px.y,C Move carry bit to bit y of port x CLR Px.y Clear bit y of port x SETB Px.y Set bit y of port x Semiconductor Group 6-17 1997-10-01 On-Chip Peripheral Components C509-L The reason why read-modify-write instructions are directed to the latch rather than the pin is to avoid a possible misinterpretation of the voltage level at the pin. For example, a port bit might be used to drive the base of a transistor. When a “1” is written to the bit, the transistor is turned on. If the CPU then reads the same port bit at the pin rather than the latch, it will read the base voltage of the transistor (approx. 0.7 V, i.e. a logic low level!) and interpret it as “0”. For example, when modifying a port bit by a SETB or CLR instruction, another bit in this port with the above mentioned configuration might be changed if the value read from the pin were written back to the latch. However, reading the latch rater than the pin will return the correct value of “1”. Semiconductor Group 6-18 1997-10-01 On-Chip Peripheral Components C509-L 6.2 Timer/Counter 0 and 1 The C509-L has a number of general purpose 16-bit timer/counters: timer 0, timer 1, timer 2 and the compare timer (timer 2 and the compare timer are discussed separately in section 6.3 “Compare/Capture Unit”). Timer/counter 0 and 1 are fully compatible with timer/counters 0 and 1 of the SAB 8051 and can be used in the same operating modes. Timer/counter 0 and 1 which are discussed in this section can be configured to operate either as timers or event counters: – In “timer” function, the register is incremented at a maximum every machine cycle. Thus one can think of it as counting machine cycles. Since a machine cycle consists of 6 oscillator periods, the count rate is 1/6 of the oscillator frequency. – In “counter” function, the register is incremented in response to a 1-to-0 transition (falling edge) at its corresponding external input pin, T0 or T1 (alternate functions of P3.4 and P3.5, resp.). In this function the external input is sampled during S5P2 of every machine cycle. When the samples show a high in one cycle and a low in the next cycle, the count is incremented. The new count value appears in the register during S3P1 of the cycle following the one in which the transition was detected. Since it takes two machine cycles (12 oscillator periods) to recognize a 1-to-0 transition, the maximum count rate is 1/12 of the oscillator frequency. There are no restrictions on the duty cycle of the external input signal, but to ensure that a given level is sampled at least once before it changes, it must be held for at least one full machine cycle. In addition to the “timer” and “counter” selection, timer/counters 0 and 1 have four operating modes from which to select. Semiconductor Group 6-19 1997-10-01 On-Chip Peripheral Components C509-L 6.2.1 Timer/Counter 0 / 1 Registers The Timer 0/1 unit of the C509-L is controlled by totally 8 special function registers: TCON, TMOD, PRSC, IEN0, TL0, TH0, TL1, and TH1. Each timer consists of two 8-bit registers (TH0 and TL0 for timer/counter 0, TH1 and TL1 for timer/counter 1) which may be combined to one timer configuration depending on the mode that is established. The functions of the timers are controlled by two special function registers TCON and TMOD. The interrupt enable control bits are located in the SFR IEN0. The upper four bits of the special function register TCON are the run and overflow flags for timer 0 and 1. Special Function Register TCON (Address. 88H) Special Function Register IEN0 (Address. A8H) Bit No. 88H MSB 8FH TF1 8EH TR1 AFH A8H EAL AEH WDT 8DH TF0 ADH ET2 8CH TR0 ACH ES0 8BH IE1 ABH ET1 Reset Value : 00H Reset Value : 00H 8AH 89H LSB 88H IT1 IE0 IT0 AAH A9H A8H EX1 ET0 EX0 TCON IEN0 The shaded bits are not used for timer/counter 0 and 1. Bit Function TF1 Timer 1 overflow flag Set by hardware on timer/counter 1 overflow. Cleared by hardware when processor vectors to interrupt routine. TR1 Timer 1 run control bit. Set/cleared by software to turn timer/counter 1 on/off. TF0 Timer 0 overflow flag Set by hardware on timer/counter 0 overflow. Cleared by hardware when processor vectors to interrupt routine. TR0 Timer 0 run control bit. Set/cleared by software to turn timer/counter 0 on/off. ET1 Timer 1 overflow interrupt enable. If ET1 = 0, the timer 1 interrupt is disabled. ET0 Timer 0 overflow interrupt enable. If ET0 = 0, the timer 0 interrupt is disabled. Semiconductor Group 6-20 1997-10-01 On-Chip Peripheral Components C509-L Special function register TMOD is used for mode select, gating, and counter/timer select purposes. The lower 4 bits control timer 0 and the upper 4 bits control timer 1. Special Function Register TMOD (Address. 89H) Bit No. 89H Reset Value : 00H MSB 7 6 5 4 3 2 1 LSB 0 GATE C/T M1 M0 GATE C/T M1 M0 Timer 1 Control TMOD Timer 0 Control Bit Function GATE Gating control When set, timer/counter “x” is enabled only while “INT x” pin is high and “TRx” control bit is set. When cleared timer “x” is enabled whenever “TRx” control bit is set. C/T Counter or timer select bit Set for counter operation (input from “Tx” input pin). Cleared for timer operation (input from internal system clock). M1 M0 Operating mode select bits M1 M0 Operating mode 0 0 8-bit timer/counter 0 1 16-bit timer/counter 1 0 8-bit auto-reload timer/counter 1 1 Timer 0 : TL0 is an 8-bit timer/counter controlled by the standard timer 0 control bits. TH0 is an 8-bit timer only controlled by timer 1 control bits. Timer 1 : Timer/counter 1 stops Semiconductor Group 6-21 1997-10-01 On-Chip Peripheral Components C509-L The 4 lower bits of special function register PRSC control the timer 0/1 input clock prescaler operation. Special Function Register PRSC (Address B4H) Bit No. B4H Reset Value : 11010101B MSB 7 6 5 4 3 2 1 LSB 0 WDTP S0P T2P1 T2P0 T1P1 T1P0 T0P1 T0P0 Timer 1 Control PRSC Timer 0 Control The shaded bits are not used for timer/counter 0 and 1. Bit Function T1P1 T1P0 Prescaler select bits for timer 1 T0P1 T0P0 T1P1 T1P0 Divider Ratio 0 0 1:1 0 1 1 : 2 (reset value) 1 0 1:4 1 1 1:8 Prescaler select bits for timer 0 T0P1 T0P0 Divider Ratio 0 0 1:1 0 1 1 : 2 (reset value) 1 0 1:4 1 1 1:8 Semiconductor Group 6-22 1997-10-01 On-Chip Peripheral Components C509-L The 4 registers TL0, TH0, TL1, and TH1 are the count/reload registers of the timer 0 and 1: Special Function Registers TL0/TH0 (Addresses 8AH/8CH) Special Function Registers TL1/TH1 (Addresses 8BH/8DH) Reset Value : 00H Reset Value : 00H Bit No. MSB 7 6 5 4 3 2 1 LSB 0 8AH .7 .6 .5 .4 .3 .2 .1 .0 TL0 8CH .7 .6 .5 .4 .3 .2 .1 .0 TH0 8BH .7 .6 .5 .4 .3 .2 .1 .0 TL1 8DH .7 .6 .5 .4 .3 .2 .1 .0 TH1 Bit Function TL0.7 - 0 Timer 0 low byte The TL0 is the 8-bit low byte count register of timer 0. TH0.7 - 0 Timer 0 high byte The TH0 is the 8-bit high byte count/reload register of timer 0. TL1.7 - 0 Timer 1 low byte The TL1 is the 8-bit low byte count register of timer 1. TH1.7 - 0 Timer 1 high byte The TH1 is the 8-bit high byte count/reload register of timer 1. In the following sections the symbols TH0 and TL0 are used to specify the high-byte and low-byte of timer 0 (TH1 and TL1 for timer 1, respectively). The operating modes are described and shown for timer 0. If not explicitly noted, the operating modes are also valid for timer 1. Semiconductor Group 6-23 1997-10-01 On-Chip Peripheral Components C509-L 6.2.2 Mode 0 Putting either timer/counter 0/1 into mode 0 configures it as an 8-bit timer/counter with a divide-by-32 prescaler. Figure 6-13 shows the mode 0 operation. In this mode, the timer register is configured as a 13-bit register. As the count rolls over from all 1’s to all 0’s, it sets the timer overflow flag TF0. The overflow flag TF0 then can be used to request an interrupt (see section 8 for details about the interrupt structure). The counted input is enabled to the timer when TR0 = 1 and either GATE = 0 or INT0 = 1 (setting GATE = 1 allows the timer to be controlled by external input INT0, to facilitate pulse width measurements). TR0 is a control bit in the special function register TCON; GATE is in TMOD. The 13-bit register consists of all 8 bits of TH0 and the lower 5 bits of TL0. The upper 3 bits of TL0 are indeterminate and should be ignored. Setting the run flag (TR0) does not clear the registers. Mode 0 operation is the same for timer 0 as for timer 1. Substitute T0P1, T0P0, TR0, TF0, TH0, TL0, T0 and INT0 with the corresponding timer 1 signals in figure 6-13. Figure 6-13 Timer/Counter 0/1, Mode 0: 13 Bit Timer/Counter Semiconductor Group 6-24 1997-10-01 On-Chip Peripheral Components C509-L 6.2.3 Mode 1 Mode 1 is the same as mode 0, except that the timer register runs with all 16 bits. Mode 1 is shown in figure 6-14. Figure 6-14 Timer/Counter 0/1, Mode 1: 16-Bit Timer/Counter Semiconductor Group 6-25 1997-10-01 On-Chip Peripheral Components C509-L 6.2.4 Mode 2 Mode 2 configures the timer register as an 8-bit counter (TL0) with automatic reload, as shown in figure 6-15. Overflow from TL0 not only sets TF0, but also reloads TL0 with the contents of TH0, which is preset by software. The reload leaves TH0 unchanged. Figure 6-15 Timer/Counter 0/1, Mode 2: 8-Bit Timer/Counter with Auto-Reload Semiconductor Group 6-26 1997-10-01 On-Chip Peripheral Components C509-L 6.2.5 Mode 3 Mode 3 has different effects on timer 0 and timer 1. Timer 1 in mode 3 simply holds its count. The effect is the same as setting TR1 = 0. Timer 0 in mode 3 establishes TL0 and TH0 as two separate counters. The logic for mode 3 on timer 0 is shown in figure 6-16. TL0 uses the timer 0 control bits: C/T, GATE, TR0, INT0, and TF0. TH0 is locked into a timer function and takes over the use of TR1 and TF1 from timer 1. Thus, TH0 now controls the “timer 1” interrupt. Mode 3 is provided for applications requiring an extra 8-bit timer or counter. When timer 0 is in mode 3, timer 1 can be turned on and off by switching it out of and into its own mode 3, or can still be used by the serial channel as a baud rate generator, or in fact, in any application not requiring an interrupt from timer 1 itself. Figure 6-16 Timer/Counter 0, Mode 3: Two 8-Bit Timer/Counter Semiconductor Group 6-27 1997-10-01 On-Chip Peripheral Components C509-L 6.3 The Compare/Capture Unit (CCU) The compare/capture unit is one of the C509-L’s most powerful peripheral units for use in all kinds of digital signal generation and event capturing like pulse generation, pulse width modulation, pulse width measuring etc. The CCU consists of three 16-bit timer/counters with automatic reload feature and an array of 13 compare or compare/capture registers. A set of six control registers is used for flexible adapting of the CCU to a wide variety of user’s applications. The CCU is the ideal peripheral unit for various automotive control applications (ignition/injection control, anti-lock brakes, etc.) as well as for industrial applications (DC, three-phase AC, and stepper motor control, frequency generation, digital-to-analog conversion, process control, etc.) The detailed description in the following sections refers to the CCU’s functional blocks as listed below: – Timer 2 with fOSC/6 input clock, 4-bit prescaler, 16-bit reload, counter/gated timer mode and overflow interrupt request. – Compare timers with fOSC input clock, 4-bit prescaler, 16-bit reload and overflow interrupt request. – Compare/(reload/)capture register array consisting of four different kinds of registers: one 16-bit compare/reload/capture register, three 16-bit compare/capture registers, one 16-bit compare/capture register with additional "concurrent compare" feature, eight 16-bit compare registers with timer-overflow controlled loading. In summary, the register array may control up to 29 output lines and can request up to 11 independent interrupts. In the following text all double-byte compare, compare/capture or compare/reload/capture registers are called CMx (x = 0 … 7), CCx (x = 0 … 4) or CRC register, respectively. The block diagram in figure 6-17 shows the general configuration of the CCU. All CC1 to CC4 registers and the CRC register are exclusively assigned to timer 2. Each of the eight compare registers CM0 through CM7 can either be assigned to timer 2 or to the faster compare timer, e.g. to provide up to 8 PWM output channels. The assignment of the CMx registers - which can be done individually for every single register - is combined with an automatic selection of one of the two possible compare modes. The compare/capture registers CC10 to CC17 and the reload register CT1REL are assigned to compare timer 1 and are mapped to the corresponding registers of the compare timer. Port 4, port 5, port 9 and five lines of port 1 have alternate functions dedicated to the CCU. These functions are listed in table 6-3. Normally each register controls one dedicated output line at the ports. Register CC4 is an exception as it can manipulate up to nine output lines (one at port 1.4 and the other eight at port 5) concurrently. This function is referenced as "concurrent compare". Note that for an alternate input function the port latch has to be programmed with a ’1’. For bit latches of port pins that are used as compare outputs, the value to be written to the bit latches depends on the compare mode established. A list of all special function registers concerned with the CCU is given in table 6-4. Semiconductor Group 6-28 1997-10-01 On-Chip Peripheral Components C509-L Figure 6-17 Block Diagram of the CCU Semiconductor Group 6-29 1997-10-01 On-Chip Peripheral Components C509-L Table 6-3 Alternate Port Functions of the CCU Pin Symbol Pin No. Alternate Function P1.0/INT3/CC0 P1.1/INT4/CC1 P1.2/INT5/CC2 P1.3/INT6/CC3 P1.4/INT2/CC4 P1.5/T2EX P1.7/T2 9 8 7 6 1 100 98 Compare output/capture input for CRC register Compare output/capture input for CC1 register Compare output/capture input for CC2 register Compare output/capture input for CC3 register Compare output/capture input for CC4 register Timer 2 external reload trigger input Timer 2 external count input P4.0/CM0 P4.1/CM1 P4.2/CM2 P4.3/CM3 P4.4/CM4 P4.5/CM5 P4.6/CM6 P4.7/CM7 64 65 66 68 69 70 71 72 Compare output for the CM0 register Compare output for the CM1 register Compare output for the CM2 register Compare output for the CM3 register Compare output for the CM4 register Compare output for the CM5 register Compare output for the CM6 register Compare output for the CM7 register P5.0/CCM0 P5.1/CCM1 P5.2/CCM2 P5.3/CCM3 P5.4/CCM4 P5.5/CCM5 P5.6/CCM6 P5.7/CCM7 44 43 42 41 40 39 38 37 Concurrent compare 0 output Concurrent compare 1 output Concurrent compare 2 output Concurrent compare 3 output Concurrent compare 4 output Concurrent compare 5 output Concurrent compare 6 output Concurrent compare 7 output P9.0/CC10 P9.1/CC11 P9.2/CC12 P9.3/CC13 P9.4/CC14 P9.5/CC15 P9.6/CC16 P9.7/CC17 74 75 76 77 5 4 3 2 Compare output/capture input for CC10 register Compare output/capture input for CC11 register Compare output/capture input for CC12 register Compare output/capture input for CC13 register Compare output/capture input for CC14 register Compare output/capture input for CC15 register Compare output/capture input for CC16 register Compare output/capture input for CC17 register Semiconductor Group 6-30 1997-10-01 On-Chip Peripheral Components C509-L Table 6-4 Special Function Register of the CCU Symbol CCEN CC4EN CCH1 CCH2 CCH3 CCH4 CCL1 CCL2 CCL3 CCL4 CMEN CMH0 CMH1 CMH2 CMH3 CMH4 CMH5 CMH6 CMH7 CML0 CML1 CML2 CML3 CML4 CML5 CML6 CML7 CC1EN CC1H0 CC1H1 CC1H2 CC1H3 CC1H4 CC1H5 CC1H6 CC1H7 CC1L0 CC1L1 CC1L2 CC1L3 CC1L4 CC1L5 CC1L6 CC1L7 Description Address with Compare/Capture Enable Register Compare/Capture 4 Enable Register Compare/Capture Register 1, High Byte Compare/Capture Register 2, High Byte Compare/Capture Register 3, High Byte Compare/Capture Register 4, High Byte Compare/Capture Register 1, Low Byte Compare/Capture Register 2, Low Byte Compare/Capture Register 3, Low Byte Compare/Capture Register 4, Low Byte Compare Enable Register Compare Register 0, High Byte Compare Register 1, High Byte Compare Register 2, High Byte Compare Register 3, High Byte Compare Register 4, High Byte Compare Register 5, High Byte Compare Register 6, High Byte Compare Register 7, High Byte Compare Register 0, Low Byte Compare Register 1, Low Byte Compare Register 2, Low Byte Compare Register 3, Low Byte Compare Register 4, Low Byte Compare Register 5, Low Byte Compare Register 6, Low Byte Compare Register 7, Low Byte Compare/Capture Enable Register Compare/Capture 1 Register 0, High Byte Compare/Capture 1 Register 1, High Byte Compare/Capture 1 Register 2, High Byte Compare/Capture 1 Register 3, High Byte Compare/Capture 1 Register 4, High Byte Compare/Capture 1 Register 5, High Byte Compare/Capture 1 Register 6, High Byte Compare/Capture 1 Register 7, High Byte Compare/Capture 1 Register 0, Low Byte Compare/Capture 1 Register 1, Low Byte Compare/Capture 1 Register 2, Low Byte Compare/Capture 1 Register 3, Low Byte Compare/Capture 1 Register 4, Low Byte Compare/Capture 1 Register 5, Low Byte Compare/Capture 1 Register 6, Low Byte Compare/Capture 1 Register 7, Low Byte Semiconductor Group 6-31 RMAP=0 RMAP=1 C1H C9H C3H C5H C7H CFH C2H C4H C6H CEH F6H D3H D5H D7H E3H E5H E7H F3H F5H D2H D4H D6H E2H E4H E6H F2H F4H – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – F6H D3H D5H D7H E3H E5H E7H F3H F5H D2H D4H D6H E2H E4H E6H F2H F4H 1997-10-01 On-Chip Peripheral Components C509-L Table 6-4 Special Function Register of the CCU Symbol CMSEL CAFR CRCH CRCL COMSETL COMSETH COMCLRL COMCLRH SETMSK CLRMSK CTCON CTRELH CTRELL CT1RELH CT1RELL TH2 TL2 T2CON CT1CON PRSC Description Address with Compare Input Select Capture 1, Falling/Rising Edge Register Comp./Rel./Capt. Reg. High Byte Comp./Rel./Capt. Reg. Low Byte Compare Set Register, Low Byte Compare Set Register, High Byte Compare Clear Register, Low Byte Compare Clear Register, High Byte Compare Set Mask Register Compare Clear Mask Register Compare Timer Control Register Compare Timer Rel. Reg., High Byte Compare Timer Rel. Reg., Low Byte Compare Timer 1 Rel. Reg., High Byte Compare Timer 1 Rel. Reg., Low Byte Timer 2, High Byte Timer 2, Low Byte Timer 2 Control Register Compare Timer 1 Control Register Prescaler Control Register RMAP=0 RMAP=1 F7H – CBH CAH A1H A2H A3H A4H A5H A6H E1H DFH DEH – – CDH CCH C8H BCH B4H – F7H – – – – – – – – – – – DFH DEH – – – – – The compare/capture registers and reload registers related to compare timer 1 are mapped to the registers of the compare timer. This means, that they have the same register address. These compare timer 1 related registers are selected when bit RMAP, which located in the SFR SYSCON, is set during a register access. If RMAP=0, the compare timer related register are accessed. The rightmost 2 columns of table 6-4 show the SFR address of each CCU register with the state of bit RMAP when they are accessed (RMAP description see also chapter 3.5). Semiconductor Group 6-32 1997-10-01 On-Chip Peripheral Components C509-L 6.3.1 Timer 2 Operation Timer 2 is one of the three 16-bit timer units of the capture/compare unit. It can operate as timer, event counter, or gated timer. Prior to the description of the timer 2 operating modes and functions, the timer 2 related special function registers are described. 6.3.1.1 Timer 2 Registers Timer 2 is controlled by bits of the 5 special function register T2CON, PRSC, CTCON, IEN1, and IRCON0. The related meaning of the timer 2 control bits and flags is shown below. Special Function Register T2CON (Address C8H) Special Function Register PRSC (Address B4H) Special Function Register CTCON (Address E1H) Special Function Register IEN0 (Address A8H) Special Function Register IEN1 (Address B8H) Special Function Register IRCON0 (Address C0H) Bit No. MSB CFH C8H T2PS I3FR I2FR T2R1 7 6 5 WDTP S0P 7 T2PS1 B4H E1H AFH A8H EAL BFH B8H T2R0 T2CM T2I1 T1I0 4 3 2 1 0 T2P1 T2P0 T1P1 T1P0 T0P1 T0P0 6 5 4 3 2 1 0 CTP ICR ICS CTF CLK2 CLK1 CLK0 ADH ACH AAH A9H A8H EX1 ET0 WDT BEH EXEN2 SWDT C7H C0H C9H AEH EXF2 C6H TF2 ET2 BDH EX6 C5H IEX6 CCH ES0 CBH LSB C8H CAH CEH CDH Reset Value : 00H Reset Value : 11010101B Reset Value : 01000000B Reset Value : 00H Reset Value : 00H Reset Value : 00H ABH ET1 BCH EX5 EX4 C4H IEX5 BBH C3H IEX4 EX0 BAH B9H B8H EX3 EX2 EADC C2H C1H C0H IEX3 IEX2 IADC T2CON PRSC CTCON IEN0 IEN1 IRCON0 The shaded bits are not used for timer/counter 2. Semiconductor Group 6-33 1997-10-01 On-Chip Peripheral Components C509-L The bits T2PS, T2PS1, T2P1, and T2P0 are prescaler select bits. T2R1 and T2R0 select the reload mode. T2I1 and T2I0 select the clock input source of timer 2. Bits ET2, EXEN2, EXF2, and TF2 are interrupt control bits/flags. Detailed bit definition is given in the table below. Bit Symbol T2PS T2P1 T2P0 T2PS1 Timer 2 prescaler select bits Based on fOSC/6 these bits define the prescaler divider ratio of the timer 2 input clock according the following table. T2R1 T2R0 T2I1 T2I0 ET2 Semiconductor Group T2P1 T2P0 T2PS1 Timer 2 Input Clock T2PS=0 Timer 2 Input Clock T2PS=1 0 0 0 fOSC ÷ 6 fOSC ÷ 12 0 0 1 fOSC ÷ 24 fOSC ÷ 48 0 1 0 fOSC ÷ 12 fOSC ÷ 24 0 1 1 fOSC ÷ 48 fOSC ÷ 96 1 0 0 fOSC ÷ 24 fOSC ÷ 48 1 0 1 fOSC ÷ 96 fOSC ÷ 192 1 1 0 fOSC ÷ 48 fOSC ÷ 96 1 1 1 fOSC ÷ 192 fOSC ÷ 384 Timer 2 reload mode selection T2R1 T2R0 Reload Mode 0 X Reload disabled 1 0 Mode 0: auto-reload upon timer 2 overflow (TF2) 1 1 Mode 1: reload upon falling edge at pin P1.5 / T2EX Timer 2 input selection T2I1 T2I0 Input Mode 0 0 No input selected : timer 2 stops 0 1 Timer function : input frequency see table above 1 0 Counter function : external input controlled by pin P1.7 / T2 1 1 Gated timer functiol : input controlled by pin T2/P1.7 Timer 2 Interrupt Enable. If ET2 = 0, the timer 2 interrupt is disabled. 6-34 1997-10-01 On-Chip Peripheral Components C509-L Bit Symbol EXEN2 Timer 2 external reload interrupt enable If EXEN2 = 0, the timer 2 external reload interrupt is disabled. The external reload function is not affected by EXEN2. EXF2 Timer 2 external reload flag Set when a reload is caused by a negative transition on pin T2EX while EXEN2 = 1. If ET2 in IEN0 is set (timer 2 interrupt enabled), EXF2 = 1 will cause an interrupt. Can be used as an additional external interrupt when the reload function is not used. EXF2 must be cleared by software. TF2 Timer 2 overflow flag Set by a timer 2 overflow and must be cleared by software. If the timer 2 interrupt is enabled, TF2 = 1 will cause an interrupt. Special Function Registers TL2/TH2 Special Function Registers CRCL/CRCH (Addresses CCH/CDH) (Addresses CAH/CBH) Reset Value : 00H Reset Value : 00H Bit No. MSB 7 6 5 4 3 2 1 LSB 0 CCH .7 .6 .5 .4 .3 .2 .1 .0 TL2 CDH .7 .6 .5 .4 .3 .2 .1 .0 TH2 CAH .7 .6 .5 .4 .3 .2 .1 .0 CRCL CBH .7 .6 .5 .4 .3 .2 .1 .0 CRCH Bit Function TL2.7 - 0 Timer 2 low byte TL2 contains the 8-bit low byte of the 16-bit timer 2 count value. TH2.7 - 0 Timer 2 high byte TH2 contains the 8-bit high byte of the 16-bit timer 2 count value. CRCL.7 - 0 Compare/Reload/Capture register low byte CRCL is the 8-bit low byte of the 16-bit reload register of timer 2. It is also used for compare/capture functions. CRCH.7 - 0 Compare/Reload/Capture register high byte CRCH is the 8-bit high byte of the 16-bit reload register of timer 2. It is also used for compare/capture functions. Semiconductor Group 6-35 1997-10-01 On-Chip Peripheral Components C509-L 6.3.1.2 Timer 2 Operating Modes Figure 6-18 shows a functional block diagram of the timer 2 unit. Figure 6-18 Block Diagram of Timer 2 In timer function, the count rate is derived from the oscillator frequency. A prescaler offers the possibility of selecting a count rate of 1/6 to 1/384 of the oscillator frequency. Thus, the 16-bit timer register (consisting of TH2 and TL2) is incremented at maximum in every machine cycle. The prescaler is selected by the bits T2P1, T2P0, T2PS1, and T2PS (definition see previous page). Semiconductor Group 6-36 1997-10-01 On-Chip Peripheral Components C509-L 6.3.1.2.1 Gated Timer Mode In gated timer function, the external input pin P1.7/T2 operates as a gate to the input of timer 2. lf T2 is high, the internal clock input is gated to the timer. T2 = 0 stops the counting procedure. This will facilitate pulse width measurements. The external gate signal is sampled once every machine cycle. 6.3.1.2.2 Event Counter Mode In the event counter function, the timer 2 is incremented in response to a 1-to-0 transition at its corresponding external input pin P1.7/T2. In this function, the external input is sampled every machine cycle. When the sampled inputs show a high in one cycle and a low in the next cycle, the count is incremented. The new count value appears in the timer register in the cycle following the one in which the transition was detected. Since it takes two machine cycles (12 oscillator periods) to recognize a 1-to-0 transition, the maximum count rate is 1/12 of the oscillator frequency. There are no restrictions on the duty cycle of the external input signal, but to ensure that a given level is sampled at least once before it changes, it must be held stable for at least one full machine cycle. Note: The prescaler must be turned off for proper counter operation of timer 2 (T2P1=T2P0= T2PS1=T2PS=0). In either case, no matter whether timer 2 is configured as timer, event counter, or gated timer, a rolling-over of the count from all 1’s to all 0’s sets the timer overflow flag TF2 (bit 6 in SFR IRCON0, interrupt request control) which can generate an interrupt. lf TF2 is used to generate a timer overflow interrupt, the request flag must be cleared by the interrupt service routine as it could be necessary to check whether it was the TF2 flag or the external reload request flag EXF2 which requested the interrupt (for EXF2 see below). Both request flags cause the program to branch to the same vector address. 6.3.1.2.3 Reload of Timer 2 The reload mode for timer 2 (see figure 6-19) is selected by bits T2R0 and T2R1 in SFR T2CON. Two reload modes are selectable: In mode 0, when timer 2 rolls over from all 1’s to all 0’s, it not only sets TF2 but also causes the timer 2 registers to be loaded with the 16-bit value in the CRC register, which is preset by software. The reload will happen in the same machine cycle in which TF2 is set, thus overwriting the count value 0000H. In mode 1, a 16-bit reload from the CRC register is caused by a negative transition at the corresponding input pin P1.5/T2EX. In addition, this transition will set flag EXF2, if bit EXEN2 in SFR IEN1 is set. lf the timer 2 interrupt is enabled, setting EXF2 will generate an interrupt. The external input pin T2EX is sampled in every machine cycle. When the sampling shows a high in one cycle and a low in the next cycle, a transition will be recognized. The reload of timer 2 registers will then take place in the cycle following the one in which the transition was detected. Semiconductor Group 6-37 1997-10-01 On-Chip Peripheral Components C509-L Input Clock TL2 TH2 T2EX P1.5 Mode 1 Reload Mode 0 CRCL CRCH TF2 <1 Timer 2 Interrupt Request EXF2 EXEN2 MCS01844 Figure 6-19 Timer 2 in Reload Mode Semiconductor Group 6-38 1997-10-01 On-Chip Peripheral Components C509-L 6.3.2 Operation of the Compare Timers These two timers - the fourth and fifth timer in the C509-L - are implemented to function as a fast 16-bit time base for the compare registers CM0 to CM7 and CC10 to CC17. The compare timers are combined with the CMx/CC1x registers and can be used for high-speed output purposes or as a fast 16-bit pulse-width modulation unit. Prior to the description of the compare timer operating modes and functions, the compare timer related special function registers are described. 6.3.2.1 Compare Timer and Compare Timer 1 Registers Each of the two compare timers has a 8-bit control register and a 16-bit reload register. These 6 special function registers are described in this section. Special Function Register CTCON Special Function Register CT1CON Bit No. E1H BCH (Address E1H) (Address BCH) Reset Value : 01000000B Reset Value : X1XX0000B 6 5 4 3 2 1 LSB 0 T2PS1 CTP ICR ICS CTF CLK2 CLK1 CLK0 7 6 5 4 3 2 1 0 – CT1P – – MSB 7 CT1F CLK12 CLK11 CLK10 CTCON CT1CON The shaded bits are not used for compare timer control. Bit Function ICR Interrupt request flag for compare register COMCLR ICR is set when a compare match occurred. ICR is cleared by hardware when the processor vectors to interrupt routine. ICS Interrupt request flag for compare register COMSET ICS is set when a compare match occurred. ICS is cleared by hardware when the processor vectors to interrupt routine. CTF Compare timer overflow flag CTF is set when the compare timer 1 count rolls over from all ones to the reload value. When CTF is set, a compare timer interrupt can be generated (if enabled). CTF is cleared by hardware when the compare timer value is no more equal to the reload value. Semiconductor Group 6-39 1997-10-01 On-Chip Peripheral Components C509-L Bit Function CTP CLK2 CLK1 CLK0 Compare timer input clock selection. Based on fOSC these bits define the prescaler divider ratio of the compare timer input clock according to the following table CT1P CLK12 CLK11 CLK10 CLK2 CLK1 CLK0 Compare Timer Input Clock CTP = 0 Compare Timer Input Clock CTP = 1 (default after reset) 0 0 0 fOSC fOSC ÷ 2 0 0 1 fOSC ÷ 2 fOSC ÷ 4 0 1 0 fOSC ÷ 4 fOSC ÷ 8 0 1 1 fOSC ÷ 8 fOSC ÷ 16 1 0 0 fOSC ÷ 16 fOSC ÷ 32 1 0 1 fOSC ÷ 32 fOSC ÷ 64 1 1 0 fOSC ÷ 64 fOSC ÷ 128 1 1 1 fOSC ÷ 128 fOSC ÷ 256 Compare timer 1 input clock selection. Based on fOSC these bits define the prescaler divider ratio of the compare timer 1 input clock according to the following table Compare Timer 1 Compare Timer 1 CLK12 CLK11 CLK10 Input Clock Input Clock CT1P = 0 CT1P = 1 CT1F Semiconductor Group 0 0 0 fOSC fOSC ÷ 2 0 0 1 fOSC ÷ 2 fOSC ÷ 4 0 1 0 fOSC ÷ 4 fOSC ÷ 8 0 1 1 fOSC ÷ 8 fOSC ÷ 16 1 0 0 fOSC ÷ 16 fOSC ÷ 32 1 0 1 fOSC ÷ 32 fOSC ÷ 64 1 1 0 fOSC ÷ 64 fOSC ÷ 128 1 1 1 fOSC ÷ 128 fOSC ÷ 256 Compare timer 1 overflow flag CT1F is set when the compare timer 1 count rolls over from all ones to the reload value. When CT1F is set, a compare timer 1 interrupt can be generated (if enabled). CT1F is cleared by hardware when the compare timer 1 value is no more equal its reload value. 6-40 1997-10-01 On-Chip Peripheral Components C509-L The reload register of the two compare timers are located at the same SFR addresses. Special Function Register Special Function Register Special Function Register Special Function Register Bit No. MSB 7 CTRELL CTRELH CT1RELL CT1RELH (Address DEH) (Address DFH) (Mapped Address DEH) (Mapped Address DFH) Reset Value : 00H Reset Value : 00H Reset Value : 00H Reset Value : 00H 6 5 4 3 2 1 LSB 0 DEH .7 .6 .5 .4 .3 .2 .1 .0 CTRELL DFH .7 .6 .5 .4 .3 .2 .1 .0 CTRELH DEH RMAP=1 .7 .6 .5 .4 .3 .2 .1 .0 CT1RELL DFH RMAP=1 .7 .6 .5 .4 .3 .2 .1 .0 CT1RELH Bit Function CTRELL.7 - 0 Compare timer reload value low part The CTRELL register holds the lower 8 bits of the 16-bit reload value for the compare timer. CTRELH.7 - 0 Compare timer reload value high part The CTRELH register holds the upper 8 bits of the 16-bit reload value for the compare timer. CT1RELL.7 - 0 Compare timer 1 reload value low part The CT1RELL register holds the lower 8 bits of the 16-bit reload value for the compare timer 1. CT1RELH.7 - 0 Compare timer 1 reload value high part The CT1RELH register holds the upper 8 bits of the 16-bit reload value for the compare timer 1. Semiconductor Group 6-41 1997-10-01 On-Chip Peripheral Components C509-L 6.3.2.2 Operating Modes of the Compare Timers The compare timers receive its input clock from a programmable prescaler which provides nine input frequencies, ranging from fOSC up to fOSC/256. This configuration allows a very high flexibility concerning timer period length and input clock frequency. The prescaler ratios are selected each by four bits in the special function registers CTCON and CT1CON. Figure 6-20 shows the block diagram of the compare timer and compare timer 1. Figure 6-20 Compare Timer and Compare Timer 1 Block Diagram Semiconductor Group 6-42 1997-10-01 On-Chip Peripheral Components C509-L The compare timers are, once started, free-running 16-bit timers, which on overflow are automatically reloaded by the contents of the 16-bit reload registers. These reload registers are CTRELL (compare timer reload register, low byte) and CTRELH (compare timer reload register, high byte) and the corresponding registers of the compare timer 1 (CTR1RELH, CT1RELH). An initial writing to the reload register CTRELL/CT1RELL starts the corresponding compare timer. If a compare timer is already running, a write to CTRELL/CT1RELL again triggers an instantly reload of the timer, in other words loads the timer in the cycle following the write instruction with the new count stored in the reload registers CTREL or CT1REL. When the reload register is to be loaded with a 16-bit value, the high byte of the reload register must be written first to ensure a determined start or restart position. Writing to the low byte then triggers the actual reload procedure mentioned above. The 16-bit reload value can be overwritten at any time. The compare timer have - as any other timer in the C509-L - their own interrupt request flags CTF and CT1F. These flags are located in the registers CTCON and CT1CON. CTF/CT1F are set when the timer count rolls over from all ones to the reload value. They are reset by hardware when the compare timer value is no more equal to the reload value. The overflow interrupt eases e.g. software control of pulse width modulated output signals. A periodic interrupt service routine caused by an overflow of the compare timer can be used to load new values in the assigned compare registers and thus change the corresponding PWM output accordingly. More details about interrupt control are discussed in chapter 7. Semiconductor Group 6-43 1997-10-01 On-Chip Peripheral Components C509-L 6.3.3 Compare Functions of the CCU The compare function of a timer/register combination can be described as follows. The 16-bit value stored in a compare or compare/capture register is compared with the contents of the timer register. lf the count value in the timer register matches the stored value, an appropriate output signal is generated at a corresponding port pin. The contents of a compare register can be regarded as ’time stamp’ at which a dedicated output reacts in a predefined way (either with a positive or negative transition). Variation of this ’time stamp’ somehow changes the wave of a rectangular output signal at a port pin. This may - as a variation of the duty cycle of a periodic signal - be used for pulse width modulation as well as for a continually controlled generation of any kind of square wave forms. In the case of the C509-L, two compare modes are implemented to cover a wide range of possible applications. In the C509-L - thanks to the high number of 21 compare registers and two associated timers several timer/compare register combinations are selectable. In some of these configurations one of the two compare modes may be freely selected, others, however, automatically establish a compare mode. In the following the two possible modes are generally discussed. This description will be referred to in later sections where the compare registers are described. As already mentioned, there are only a few compare registers with their corresponding port circuitry which are able to serve both compare modes. In most cases the mode is automatically set depending on the timer which is used as time base or depending on the port which outputs the compare signal. Semiconductor Group 6-44 1997-10-01 On-Chip Peripheral Components C509-L 6.3.3.1 Compare Mode 0 In mode 0, upon matching the timer and compare register contents, the output signal changes from low to high. lt goes back to a low level on timer overflow. As long as compare mode 0 is enabled, the appropriate output pin is controlled by the timer circuit only, and not by the user. Writing to the port will have no effect. Figure 6-21 shows a functional diagram of a port circuit when used in compare mode 0. The port latch is directly controlled by the timer overflow and compare match signals. The input line from the internal bus and the write-to-latch line of the port latch are disconnected when compare mode 0 is enabled. Compare mode 0 is ideal for generating pulse width modulated output signals, which in turn can be used for digital-to-analog conversion via a filter network or by the controlled device itself (e.g. the inductance of a DC or AC motor). Compare mode 0 may also be used for providing output clocks with initially defined period and duty cycle. This is the mode which needs the least CPU time. Once set up, the output goes on oscillating without any CPU intervention. Figure 6-22 illustrates the function of compare mode 0. Port Circuit Read Latch VCC Compare Register Circuit Compare Reg. 16 Bit Comparator 16 Bit Compare Match S D Q Port Latch CLK Q R Internal Bus Write to Latch Port Pin Timer Register Timer Circuit Timer Overflow Read Pin MCS02661 Figure 6-21 Port Latch in Compare Mode 0 Figure 6-22 shows a typical output signal waveform which is generated when compare mode 0 is selected. Semiconductor Group 6-45 1997-10-01 On-Chip Peripheral Components C509-L Timer Count = FFFFH Timer Count = Compare Value Contents of a Timer Register Timer Count = Reload Value Interrupt can be generated on overflow Compare Output (P1.x/CCx) MCT01846 Interrupt can be generated on compare match Figure 6-22 Output Waveform of Compare Mode 0 Modulation Range of a PWM Signal and Differences between the Two Timer/Compare Register Configurations in the CCU There are two timer/compare register configurations in the CCU which can operate in compare mode 0 (either timer 2 with a CCx (CRC and CC1 to CC4) register or the compare timer with a CMx register). They basically operate in the same way, but show some differences concerning their modulation range when used for PWM. Generally it can be said that for every PWM generation with n-bit wide compare registers there are 2n different settings for the duty cycle. Starting with a constant low level (0% duty cycle) as the first setting, the maximum possible duty cycle then would be (1 – 1/2n) x 100 % This means that a variation of the duty cycle from 0% to real 100% can never be reached if the compare register and timer register have the same length. There is always a spike which is as long as the timer clock period. In the C509-L there are two different modulation ranges for the above mentioned two timer/compare register combinations. The difference is the location of the above spike within the timer period: at the end of a timer period or at the beginning plus the end of a timer period. Please refer to the description of the CCU relevant timer/register combination in section 6.3.4 for details. Semiconductor Group 6-46 1997-10-01 On-Chip Peripheral Components C509-L 6.3.3.2 Compare Mode 1 In compare mode 1, the software adaptively determines the transition of the output signal. This mode can only be selected for compare registers assigned to timer 2. lt is commonly used when output signals are not related to a constant signal period (as in a standard PWM generation) but must be controlled very precisely with high resolution and without jitter. In compare mode 1, both transitions of a signal can be controlled. Compare outputs in this mode can be regarded as high speed outputs which are independent of the CPU activity. lf compare mode 1 is enabled and the software writes to the appropriate output latch at the port, the new value will not appear at the output pin until the next compare match occurs. Thus, it can be choosen whether the output signal has to make a new transition (1-to-0 or 0-to-1, depending on the actual pin-level) or should keep its old value at the time when the timer value matches the stored compare value. Figure 6-23 shows a functional diagram of a port circuit configuration in compare mode 1. In this mode the port circuit consists of two separate latches. One latch (which acts as a "shadow latch") can be written under software control, but its value will only be transferred to the port latch (and thus to the port pin) when a compare match occurs. Port Circuit Read Latch VCC Compare Register Circuit Compare Reg. Internal Bus 16 Bit Comparator 16 Bit Compare Match Write to Latch D Shadow Latch CLK Q D Q Port Latch CLK Q Port Pin Timer Register Timer Circuit Read Pin MCS02662 Figure 6-23 Compare Function of Compare Mode 1 Note that the double latch structure is transparent as long as the internal compare signal is active. While the compare signal is active, a write operation to the port will then change both latches. This may become important when timer 2 is driven with a slow input clock. In this case the compare signal could be active for many machine cycles in which the CPU could unintentionally change the contents of the port latch. A read-modify-write instruction will read the user-controlled "shadow latch" and write the modified value back to this “shadow-latch”. A standard read instruction will - as usual - read the pin of the corresponding compare output. Semiconductor Group 6-47 1997-10-01 On-Chip Peripheral Components C509-L 6.3.3.3 Compare Mode 2 In the compare mode 2 in the CCU can be used for the concurrent compare outputs at port 5. In this compare mode 2 the port 5 pins are no longer general purpose I/O pins or under control of compare/capture register CC4, but under control of the compare registers COMSET and COMCLR. These both 16-bit registers are always associated with timer 2 (same as CRC, CC1 to CC4). In compare mode 2 the concurrent compare output pins at port 5 are used as shown in figure 6-24.: Port Circuit Read Latch COMSET VCC 16 Bit Comparator 16 Bit TH2 Compare Signal SETMSK Bits Internal Bus Write to Latch TL2 Timer 2 16 Bit Comparator 16 Bit Compare Signal S D Q Port Latch CLK Q R Port Pin CLRMSK Bits COMCLR Read Pin MCS02663 Figure 6-24 Compare Function of Compare Mode 2 – When a compare match occurs with register COMSET, a high level appears at the pins of port 5 when the corresponding bits in the mask register SETMSK are set. – When a compare match occurs with register COMCLR, a low level appears at the pins of port 5 when the corresponding bits in the mask register CLRMSK are set. – Additionally, the port 5 pins which are used for compare mode 2 can also be directly written using write instructions to SFR P5. Further, the pins can also be read under program control. If compare mode 2 shall be selected, register CC4 must operate in compare mode 1 (with the corresponding output pin P1.4); Therefore, compare mode 2 is selected by enabling the compare function for register CC4 (COCAH4=1; COCAL4=0 SFR CC4EN) and by programming bits COCOEN0 and COCOEN1 in SFR CC4EN. Like in concurrent compare mode associated with CC4, the number of port pins at P5 which serve the compare output function can be selected by bits COCON0-COCON2 (in SFR CC4EN). If a set and reset request occurs at the same time (identical values in COMSET and COMCLR), the set operation takes precedence. It is also possible to use only the interrupts which are generated by matches in COMSET and COMCLR without affecting port 5 (“software compare”). For this “interrupt-only” mode it is not necessary that the compare function at CC4 is selected. Semiconductor Group 6-48 1997-10-01 On-Chip Peripheral Components C509-L 6.3.4 Timer- and Compare-Register Configurations of the CCU The compare function and the reaction of the corresponding outputs depend on the timer/compare register combination. Table 6-5 shows the possible configurations of the CCU and the corresponding compare modes which can be selected. The following sections describe the function of these configurations. Table 6-5 CCU Configurations Assigned Timer Compare Register Compare Output at Possible Modes Timer 2 CRCH/CRCL CCH1/CCL1 CCH2/CCL2 CCH3/CCL3 CCH4/CCL4 P1.0/INT3/CC0 P1.1/INT4/CC1 P1.2/INT5/CC2 P1.3/INT6/CC3 P1.4/INT2/CC4 Compare mode 0, 1 + Reload Compare mode 0, 1 / capture Compare mode 0, 1 / capture Compare mode 0, 1 / capture Compare mode 0, 1 / capture (see 6.3.4.1 and 6.3.4.2) CCH4/CCL4 P1.4/INT2/CC4 P5.0/CCM0 to P5.7/CCM7 Compare mode 1 “Concurrent compare“ CMH0/CML0 to CMH7/CML7 P4.0/CM0 to P4.7/CM7 Compare mode 0 COMSET COMCLR P5.0/CCM0 to P5.7/CCM7 Compare mode 2 CMH0/CML0 to CMH7/CML7 P4.0/CM0 to P4.7/CM7 Compare mode 1 CC1H0/CC1L0 to CC1H7/CC1L7 P5.0/CCM0 to P5.7/CCM7 Compare mode 0 / capture Compare Timer Compare Timer 1 Semiconductor Group (see 6.3.4.3) (see 6.3.4.4 and 6.3.4.4.2) (see 6.3.4.5) (see 6.3.4.4 and 6.3.4.4.1) (see 6.3.4.6) 6-49 1997-10-01 On-Chip Peripheral Components C509-L 6.3.4.1 Timer 2 - Compare Function with Registers CRC, CC1 to CC3 The compare function of registers CRC and CC1 to CC3 is completely compatible with the corresponding function of the SAB 80C515. Registers CRC, CC1 to CC3 are permanently connected to timer 2. All four registers are multifunctional as they additionally provide a capture or a reload capability (CRC register only). A general selection of the compare/capture function is done in register CCEN. For compare function they can be used in compare mode 0 or 1, respectively. The compare mode is selected by setting or clearing bit T2CM in special function register T2CON. Always two bits in register CCEN select the CRC and CC1 to CC3 register functionality in the following way: – – – – Disable compare/capture mode (normal I/O at the pin) Capture enabled on rising edge at a pin Compare enabled (pin becomes a compare output) Capture enabled on a write operation into the low part register of CRC or CC1 to CC3 Special Function Register T2CON (Address C8H) Special Function Register CCEN (Address C1H) Bit No. MSB CFH C8H T2PS I3FR I2FR T2R1 7 6 5 4 C1H CEH CDH CCH Reset Value : 00H Reset Value : 00H CBH LSB C8H CAH C9H T2R0 T2CM T2I1 T1I0 3 2 1 0 COCAH3 COCAL3 COCAH2 COCAL2 COCAH1 COCAL1 COCAH0 COCAL0 T2CON CCEN The shaded bits are not used for compare/capture control. Bit Function T2CM Compare mode control for CCR and CC1 to CC3 registers When T2CM is cleared, compare mode 0 is selected. When T2CM is set, compare mode 1 is selected. COCAH3, COCAL3 Compare/capture mode for the CC register 3 Semiconductor Group COCAH3 COCAL3 Mode 0 0 Compare/capture disabled 0 1 Capture on rising edge at pin P1.3/INT6/CC3 1 0 Compare enabled 1 1 Capture on write operation into register CCL3 6-50 1997-10-01 On-Chip Peripheral Components C509-L Bit Function COCAH2, COCAL2 Compare/capture mode for the CC register 2 COCAH1, COCAL1 COCAH0, COCAL0 COCAH2 COCAL2 Mode 0 0 Compare/capture disabled 0 1 Capture on rising edge at pin P1.2/INT5/CC2 1 0 Compare enabled 1 1 Capture on write operation into register CCL2 Compare/capture mode for the CC register 2 COCAH1 COCAL1 Mode 0 0 Compare/capture disabled 0 1 Capture on rising edge at pin P1.1/INT4/CC1 1 0 Compare enabled 1 1 Capture on write operation into register CCL1 Compare/capture mode for the CC register 2 COCAH0 COCAL0 Mode 0 0 Compare/capture disabled 0 1 Capture on rising edge at pin P1.0/INT3/CC0 1 0 Compare enabled 1 1 Capture on write operation into register CRCL Figure 6-25 and 6-26 show the general timer/compare register/port latch configuration for registers CRC and CC1 to CC4 in compare mode 0 and compare mode 1. It also shows the interrupt capabilities. The compare interrupts of registers CRC and CC4 can be programmed to be either negative or positive transition activated. Compare interrupts for the CC1 to CC3 registers are always positive transition activated. Semiconductor Group 6-51 1997-10-01 On-Chip Peripheral Components C509-L IxFR IEXx Compare Register CRC/CCx Interrupt Shaded Functions for CRC and CC4 only 16 Bit Set Latch Comparator 16 Bit TL2 TH2 Compare Signal Reset Latch Port Latch R S R S R S R S R S Q Q Q Q Q Overflow Timer 2 P1.4/ INT2/ CC4 Interrupt P1.0/ INT3/ CC0 MCS02664 Figure 6-25 Timer 2 with Registers CRC and CC1 to CC4 in Compare Mode 0 IxFR IEXx Shaded Functions for CRC and CC4 only Compare Register CRC/CCx 16 Bit Comparator Compare Signal 16 Bit TH2 TL2 Interrupt Port Latch Circuit Shadow Latch Overflow Interrupt Timer 2 Output Latch P1.7 P1.0/ INT3/ CC0 MCS02665 Figure 6-26 Timer 2 with Registers CRC and CC1 to CC4 in Compare Mode 1 Semiconductor Group 6-52 1997-10-01 On-Chip Peripheral Components C509-L 6.3.4.2 Timer 2 - Capture Function with Registers CRC, CC1 to CC4 Each of the four compare/capture registers CC1 to CC4 and the CRC register can be used to latch the current 16-bit value of the timer 2 registers TL2 and TH2. Two different modes are provided for the capture function. In capture mode 0, an external event latches the timer 2 contents to a dedicated capture register. In capture mode 1, a capture event will occur when the low order byte of the dedicated 16-bit capture register is written to. This capture mode is provided to allow the software to read the timer 2 contents “on-the-fly”. In capture mode 0, the external event causing a capture is – for CC1 to CC3 registers: – for the CRC and CC4 register: A positive transition at pins CC1 to CC3 of port 1 A positive or negative transition at the corresponding pins, depending on the status of the bits I3FR and I2FR in SFR T2CON. lf the edge flags are cleared, a capture occurs in response to a negative transition; if the edge flags are set a capture occurs in response to a positive transition at pins P1.0/ INT3/ CC0 and P1.4/ INT2/ CC4. In both cases the appropriate port 1 pin is used as input and the port latch must be programmed to contain a one (1). The external input is sampled in every machine cycle. When the sampled input shows a low (high) level in one cycle and a high (low) in the next cycle, a transition is recognized. The timer 2 content is latched to the appropriate capture register in the cycle following the one in which the transition was identified. In capture mode 0 a transition at the external capture inputs of registers CC0 to CC4 will also set the corresponding external interrupt request flags IEX2 to IEX6. lf the interrupts are enabled, an external capture signal will cause the CPU to vector to the appropriate interrupt service routine. In capture mode 1 a capture occurs in response to a write instruction to the low order byte of a capture register. The write-to-register signal (e.g. write-to-CRCL) is used to initiate a capture. The value written to the dedicated capture register is irrelevant for this function. The timer 2 contents will be latched into the appropriate capture register in the cycle following the write instruction. In this mode no interrupt request will be generated. Figures 6-27 and 6-28 show functional diagrams of the capture function of timer 2. Figure 6-27 illustrates the operation of the CRC or CC4 register, while figure 6-28 shows the operation of the compare/capture registers 1 to 3. The two capture modes are selected individually for each capture register by bits in SFR CCEN (compare/capture enable register) and CC4EN (compare/capture 4 enable register). That means, in contrast to the compare modes, it is possible to simultaneously select capture mode 0 for one capture register and capture mode 1 for another register. Semiconductor Group 6-53 1997-10-01 On-Chip Peripheral Components C509-L Input Clock TL2 TH2 TF2 Timer 2 Interrupt Request IEX3 External Interrupt 3 Request "Write to CRCL" Mode 1 Capture Mode 0 P1.0/INT 3/ CC0 CRCL T2 CON.6 CRCH MCS01855 Figure 6-27 Capture with Registers CRC, CC4 Input Clock TL2 TH2 TF2 Timer 2 Interrupt Request IEX4 External Interrupt 4 Request "Write to CCL1" Mode 1 Capture Mode 0 CCL1 P1.1/INT 4/ CC1 CCH1 MCS01856 Figure 6-28 Capture with Registers CC1 to CC3 Semiconductor Group 6-54 1997-10-01 On-Chip Peripheral Components C509-L 6.3.4.3 Compare Function of Register CC4; “Concurrent Compare” Compare register CC4 is permanently assigned to timer 2. lt has its own compare/capture enable register CC4EN. Register CC4 can be set to operate as any of the other CC registers (see also figures 6-29 and 6-30). Its output pin is P1.4/CC4/INT2 and it has a dedicated compare mode select bit COMO located in register CC4EN. In addition to the standard operation in compare mode 0 or 1, there is another feature called ‘concurrent compare’ which is just an application of compare mode 1 to more than one output pin. Concurrent compare means that the comparison of CC4 and timer 2 can manipulate up to nine port pins concurrently. A standard compare register in compare mode 1 normally transfers a preprogrammed signal level, which is stored in the shadow latch to a single output line. Register CC4, however, is able to put a 9-bit pattern to nine output lines. The nine output lines consist of one line at port 1 (P1.4), which is the standard output for register CC4, and additional eight lines at port 5 (see figure 6-29). Concurrent compare is an ideal and effective option where more than one synchronous output signal is to be generated. Applications including this requirement could among others be a complex multiple-phase stepper motor control as well as the control of ignition coils of a car engine. All these applications have in common that predefined bit-patterns must be put to an output port at a precisely predefined moment. This moment refers to a special count of timer 2, which was loaded to compare register CC4. To Interrupt Logic Port 5-Shadow Latch Compare Register CC4 P1.4 S.L. 16 Bit Comparator 16 Bit TH2 TL2 Timer 2 COCON1 COCON2 COCON3 COMO Port 5-Output Buffer P5.0/ CCM0 P5.7/ P1.4/ CCM7 INT2/ CC4 MCS02666 Figure 6-29 “Concurrent Compare” Function of Register CC4 Semiconductor Group 6-55 1997-10-01 On-Chip Peripheral Components C509-L Figure 6-30 gives an example of how to generate eight different rectangular wave forms at port 5 using a pattern table and a time schedule for these patterns. The patterns are moved into port 5 before the corresponding timer count is reached. The (future) timer count at which the pattern shall appear at the port must be loaded to register CC4. Thus the user can mask each port bit differently depending on whether he wants the output to be changed or not. Concurrent compare is enabled by setting bit COCOEN in special function register CC4EN. A ’1’ in this bit automatically sets compare mode 1 for register CC4, too. A 3-bit field in special function register CC4EN determines the additional number of output pins at port 5. Port P1.4/CC4/INT2 is used as a standard output pin in any compare mode for register CC4. Pattern Table (8 Bit) Schedule Table (16 Bit) 00 H 55 H AAH FF H 1000 H 2000 H 3000 H 4000 H Compare CC4H 0 1 Register CC4L 0 0 Port 5 Latch 00 H Timer Count 1000 H 2000 H 3000 H 4000 H P5.7 P5.6 P5.5 P5.4 Port Pattern P5.3 P5.2 P5.1 P5.0 MCT01853 Figure 6-30 Example for a “Concurrent Compare” Waveform at Port 5 Semiconductor Group 6-56 1997-10-01 On-Chip Peripheral Components C509-L Special Function Register CC4EN (Address C9H) Bit No. MSB 7 6 5 4 C9H COCO EN1 COCO N2 COCO N1 COCO N0 3 Reset Value : 00H 2 1 LSB 0 COCO COCAH4 COCAL4 COMO EN0 CC4EN Bit Function COCOEN1 COCOEN0 Selection of compare modes 1 and 2 at port 5 For details on mode selection with COCOEN1/COCOEN0 see table 6-6. COCON2 COCON1 COCON0 Port 5 compare outputs selection These bits select the number of compare outputs at port 5 according the following table. COCON2 COCON1 COCON0 Function 0 0 0 One additional output of CC4 at P5.0 0 0 1 Additional outputs of CC4 at P5.0 to P5.1 0 1 0 Additional outputs of CC4 at P5.0 to P5.2 0 1 1 Additional outputs of CC4 at P5.0 to P5.3 1 0 0 Additional outputs of CC4 at P5.0 to P5.4 1 0 1 Additional outputs of CC4 at P5.0 to P5.5 1 1 0 Additional outputs of CC4 at P5.0 to P5.6 1 1 1 Additional outputs of CC4 at P5.0 to P5.7 COCAH4 COCAL4 Compare/capture mode selection for the CC register 4 For details on mode selection with COCAH4/COCAL4 see table 6-6. COMO CC4 compare mode select bit When set, compare mode 1 is selected for CC4. COMO = 0 selects compare mode 0 for CC4. Setting of bit COCOEN0 automatically sets COMO. Semiconductor Group 6-57 1997-10-01 On-Chip Peripheral Components C509-L Table 6-6 Configurations for Concurrent Compare Mode and Compare Mode 2 at Port 5 COCAH4 COCAL4 COCOEN1 COCOEN0 Function of CC4 Function of Compare Modes at P5 0 Disabled 0 0 0 1 0 1 1 1 0 0 1 1 0 0 0 1 0 1 Compare / Capture disabled Compare Mode 2 selected at P5 Capture on falling/rising edge at pin P1.4/INT2/CC4 Disabled Compare enable at CC4; mode 0/1 is selected by COMO Disabled Compare mode 1 enabled at CC4; COMO is automatically set Concurrent compare (mode 1) selected at P5 1 1 1 0 1 Compare mode 2 selected, but only interrupt generation (ICR, ICS); no output signals.at P5 Compare mode 2 selected, but only interrupt generation (ICR, ICS); no output signals at P5 Compare mode 2 selected, but only interrupt generation (ICR, ICS); no output signals at P5 Compare mode 2 selected at P5 0 Capture on write operation into register CCL4 Disabled Compare mode 2 selected, but only interrupt generation (ICR, ICS); no output signals at P5 Note : All other combinations of the 4 mode select bits are reserved and must not be used. Semiconductor Group 6-58 1997-10-01 On-Chip Peripheral Components C509-L 6.3.4.4 Compare Function of Registers CM0 to CM7 The CCU of the C509-L contains another set of eight compare registers and an additional timer, the compare timer, and some control SFRs. These compare registers and the compare timer are mainly dedicated to PWM applications. The compare registers CM0 to CM7, however, are not permanently assigned to the compare timer, each register may individually be configured to work either with timer 2 or the compare timer. This flexible assignment of the CMx registers allows an independent use of two time bases whereby different application requirements can be met. Any CMx register connected to the compare timer automatically works in compare mode 0 e.g. to provide fast PWM with low CPU intervention. CMx registers which are assigned to timer 2, operate in compare mode 1. This allows the CPU to control the compare output transitions directly. The assignment of the eight registers CM0 to CM7 to either timer 2 or to the compare timer is done by a multiplexer which is controlled by the bits in the SFR CMSEL. The compare function itself can individually be enabled in the SFR CMEN. These two registers are not bit-addressable. This means, that the value of single bits can only be changed by AND-ing or OR-ing the register with a certain mask. Special Function Register CMSEL (Address F7H) Special Function Register CMEN (Address F6H) Bit No. F7H F6H Reset Value : 00H Reset Value : 00H 6 5 4 3 2 1 LSB 0 .7 .6 .5 .4 .3 .2 .1 .0 7 6 5 4 3 2 1 0 .7 .6 .5 .4 .3 .2 .1 .0 MSB 7 CMSEL CMEN Bit Function CMSEL.7 - 0 Select bits for CMx registers (x = 0-7) When set, the CMLx/CMHx registers are assigned to the compare timer and compare mode 0 is enabled. The compare registers are assigned to timer 2 if CMSELx = 0. In this case compare mode 1 is selected. CMEN.7 - 0 Enable bits for compare registers CMx (x = 0 - 7) When set, the compare function is enabled and led to the output lines of port 4. Semiconductor Group 6-59 1997-10-01 On-Chip Peripheral Components C509-L 6.3.4.4.1 CMx Registers Assigned to the Compare Timer Every CMx register assigned to the compare timer as a time base operates in compare mode 0 and uses a port 4 pin as an alternate output function. The "Timer Overflow Controlled" (TOC) Loading There is one great difference between a CMx register and the other previously described compare registers: compare outputs controlled by CMx registers have no dedicated interrupt function. They use a "timer overflow controlled loading" (further on called "TOC loading") to reach the same performance as an interrupt controlled compare. To show what this "TOC loading" is for, it will be explained more detailed in the following: The main advantage of the compare function in general is that the controller’s outputs are precisely timed by hardware, no matter which task is running on the CPU. This in turn means that the CPU normally does not know about the timer count. So, if the CPU writes to a compare register only in relation to the program flow, then it could easily be that a compare register is overwritten before the timer had the chance to reach the previously loaded compare value. Hence, there must be something to "synchronize" the loading of the compare registers to the running timer circuitry. This could either be an interrupt caused by the timer circuitry (as described before) or a special hardware circuitry. Thus "TOC-Ioading" means that there is dedicated hardware in the CCU which synchronizes the loading of the compare registers CMx in such a way that there is no loss of compare events. lt also relieves the CPU of interrupt load. A CMx compare register in compare mode 0 consists of two latches. When the CPU tries to access a CMx register it only addresses a register latch and not the actual compare latch which is connected to the comparator circuit. The contents of the register latch may be changed by the CPU at any time because this change would never affect the compare event for the current timer period. The compare latch (the "actual" latch) holds the compare value for the present timer period. Thus the CPU only changes the compare event for the next timer period since the loading of the latch is performed by the timer overflow signal of the compare timer. This means for an application which uses several PWM outputs that the CPU does not have to serve every single compare line by an individual interrupt. lt only has to watch the timer overflow of the compare timer and may then set up the compare events of all compares for the next timer period. This job may take the whole current timer period since the TOC loading prevents unintentional overwriting of the actual (and prepared) value in the compare latch. Semiconductor Group 6-60 1997-10-01 On-Chip Peripheral Components C509-L Figure 6-31 Compare Function of a CMx Register Assigned to the Compare Timer Figure 6-31 shows a more detailed block diagram of a CMx register connected to the compare timer. lt illustrates that the CPU can only access the special function register CMx; the actual compare latch is, however, loaded at timer overflow. The timer overflow signal also sets an interrupt request flag (CTF in register CTCON) which may be used to inform the CPU by an interrupt that a new timer cycle has started and that the compare values for the next cycle may be programmed from now on. The activation of the TOC loading depends on a few conditions described in the following. A TOC loading is performed only if the CMLx register has been changed by the CPU. A write instruction to the low byte of the CMx register is used to enable the loading. The 8-bit architecture of the C509-L requires such a defined enable mechanism because 16-bit values are to be transferred in two portions (= two instructions). Imagine the following situation: one instruction (e.g. loading the low byte of the compare register) is executed just before timer overflow and the other instruction (loading the high byte) after the overflow. lf there were no "rule", the TOC loading would just load the new low byte into the compare latch. The high byte - written after timer overflow - would have to wait till the next timer overflow. The mentioned condition for TOC loading prevents such undesired behavior. lf the user writes the high byte first then no TOC loading will happen before the low byte has been written - even if there is a timer overflow in between. lf the user just intends to change the low byte of the compare latch then the high byte may be left unaffected. Semiconductor Group 6-61 1997-10-01 On-Chip Peripheral Components C509-L Summary of the TOC loading capability : – The CMx registers are - when assigned to the compare timer - protected from direct loading by the CPU. A register latch couple provides a defined load time at timer overflow. – Thus, the CPU has a full timer period to load a new compare value: there is no danger of overwriting compare values which are still needed in the current timer period. – When writing a 16-bit compare value, the high byte should be written first since the write-tolow-byte instruction enables a 16-bit wide TOC loading at next timer overflow. – lf there was no write access to a CMx low byte then no TOC loading will take place. – Because of the TOC loading, all compare values written to CMx registers are only activated in the next timer period. Initializing the Compare Register/Compare Latch Circuit Normally when the compare function is desired the initialization program would just write to the compare register (called ’register latch’). The compare latch itself cannot be accessed directly by a move instruction, it is exclusively loaded by the timer overflow signal. In some very special cases, however, an initial loading of the compare latch could be desirable. lf the following sequence is observed during initialization then latches, the register and the compare latch, can be loaded before the compare mode is enabled. Action: Comment: Select compare mode 1 (CMSEL.x = 0). This is also the default value after reset. Move the compare value for the first timer period to the compare register CMx (high byte first). In compare mode 1 latch is loaded directly after a write-to-CMLx. Thus the value slips directly into the compare latch. Switch on compare mode 0 (CMSEL.x = 1). Now select the right compare mode. Move the compare value for the second timer period to the compare register. The register latch is loaded. This value is used after the first timer overflow. Enable the compare function (CMEN.x = 1) Set up the prescaler for the compare timer. Set specific compare output to low level (CLR P4.x) The compare output is switched to low level. Start the compare timer with a desired value (write-to-CTREL) Compare function is initialized. The output will oscillate. Semiconductor Group 6-62 1997-10-01 On-Chip Peripheral Components C509-L 6.3.4.4.2 CMx Registers Assigned to the Timer 2 Any CMx register assigned to timer 2 as a time base operates in compare mode 1. In this case CMx registers behave like any other compare register connected to timer 2 (e.g. the CRC or CCx registers). Since there are no dedicated interrupts for the CMx compare outputs, again a buffered compare register structure is used to determine an exact 16-bit wide loading of the compare value: the compare value is transferred to the actual compare latches at a write-to-CMLx instruction (low byte of CMx). Thus, the CMx register is to be written in a fixed order, too: high byte first, low byte second. lf the high byte may remain unchanged it is sufficient to load only the low byte. See figure 6-32, block diagram of a CMx register connected to timer 2. Figure 6-32 CMx-Register Assigned to Timer 2 Semiconductor Group 6-63 1997-10-01 On-Chip Peripheral Components C509-L 6.3.4.5 Timer 2 Operating in Compare Mode 2 The compare mode 2 of the CCU can be used for the concurrent compare output function at port 5. In compare mode 2, the port 5 pins are no longer general purpose I/O pins or under control of the compare/capture register CC4, but under control of the compare registers COMSET and COMCLR. The details of compare mode 2 are already described in section 6.3.3.3. Figure 6-33 shows the complete compare mode 2 configuration of the CCU and the port 5 pins. Timer II Comparator Comparator COMSET COMCLR ICS Bit 0 S Q R P5.0 Bit 1 S Q R P5.1 S Q R P5.7 Bit 2 ICR ECS (IEN2.4) SETMSK ECS (IEN2.5) Bit 7 Number of Pins for this function is selectable from 1 to 8 by Bit COCOEN0-2 (in CC4EN). CLRMSK Int. Request Vector 00A3 H Int. Request Vector 00AB H Bit 0 Bit 1 Bit 2 Bit 7 MCB02249 Figure 6-33 Compare Mode 2 (Port 5 only) The compare registers COMSET and COMCLR have their dedicated interrupt vectors. The corresponding request flags are ICS for register COMSET and ICR for register COMCLR. The flags are set by a match in registers COMSET and COMCLR, when enabled. As long as the match condition is valid the request flags can't be reset (neither by hardware nor software). The request flags are located in SFR CTCON. Semiconductor Group 6-64 1997-10-01 On-Chip Peripheral Components C509-L 6.3.4.6 Compare / Capture Operation with Compare Timer 1 The C509-L Compare/Capture Unit (CCU) has a third timer - the compare timer 1 (CT1). This timer is assigned to port 9. The port 9 alternate functions are dedicated for the CT1 controlled compare/capture capability. The compare/capture registers, the reload registers, and the control registers (except CT1CON) related to compare timer 1 are mapped to the registers of the compare timer. This means, that the CT1 registers have the same register address as the compare timer registers. The compare timer 1 related registers are selected when bit RMAP, which located in the SFR SYSCON, is set during a register access. If RMAP=0, the compare timer related register are accessed. As an extract from table 6-4, table 6-4 lists all CT1 registers which are mapped to the compare timer registers. Further details about the RMAP bit are given in chapter 3.5. Table 6-7 Compare Timer / Compare Timer 1 Related Mapped Special Function Registers of the CCU Address Symbol Description Access by RMAP = D2H CML0 CC1L0 Compare Register 0, Low Byte Compare/Capture 1 Register 0, Low Byte 0 1 D3H CMH0 CC1H0 Compare Register 0, High Byte Compare/Capture 1 Register 0, High Byte 0 1 D4H CML1 CC1L1 Compare Register 1, Low Byte Compare/Capture 1 Register 1, Low Byte 0 1 D5H CMH1 CC1H1 Compare Register 1, High Byte Compare/Capture 1 Register 1, High Byte 0 1 D6H CML2 CC1L2 Compare Register 2, Low Byte Compare/Capture 1 Register 2, Low Byte 0 1 D7H CMH2 CC1H2 Compare Register 2, High Byte Compare/Capture 1 Register 2, High Byte 0 1 E2H CML3 CC1L3 Compare Register 3, Low Byte Compare/Capture 1 Register 3, Low Byte 0 1 E3H CMH3 CC1H3 Compare Register 3, High Byte Compare/Capture 1 Register 3, High Byte 0 1 E4H CML4 CC1L4 Compare Register 4, Low Byte Compare/Capture 1 Register 4, Low Byte 0 1 E5H CMH4 CC1H4 Compare Register 4, High Byte Compare/Capture 1 Register 4, High Byte 0 1 E6H CML5 CC1L5 Compare Register 5, Low Byte Compare/Capture 1 Register 5, Low Byte 0 1 E7H CMH5 CC1H5 Compare Register 5, High Byte Compare/Capture 1 Register 5, High Byte 0 1 Semiconductor Group 6-65 1997-10-01 On-Chip Peripheral Components C509-L Table 6-7 Compare Timer / Compare Timer 1 Related Mapped Special Function Registers of the CCU (cont’d) Address Symbol Description Access by RMAP = F2H CML6 CC1L6 Compare Register 6, Low Byte Compare/Capture 1 Register 6, Low Byte 0 1 F3H CMH6 CC1H6 Compare Register 6, High Byte Compare/Capture 1 Register 6, High Byte 0 1 F4H CML7 CC1L7 Compare Register 7, Low Byte Compare/Capture 1 Register 7, Low Byte 0 1 F5H CMH7 CC1H7 Compare Register 7, High Byte Compare/Capture 1 Register 7, High Byte 0 1 F6H CMEN CC1EN Compare Enable Register Compare/Capture Enable Register 0 1 F7H CMSEL CAFR Compare Input Select Capture 1, Falling/Rising Edge Register 0 1 DEH CTRELL CT1RELL Compare Timer Reload Register, Low Byte Compare Timer 1 Reload Register, Low Byte 0 1 DFH CTRELH CT1RELH Compare Timer Reload Register, High Byte Compare Timer 1 Reload Register, High Byte 0 1 The SFR CT1CON contains the control bits for the input clock selection and the compare timer 1 overflow flag CT1F. CT1CON and the reload registers (CT1RELL, CT1RELH) are described in detail in section 6.3.2. The SFR CC1EN contains the enable bits for the compare/capture registers CC10 to CC17. When set, compare/capture function is enabled and connected to the port 9 pins. AFR CC1EN is a mapped register.and can only be accessed when bit RMAP in SFR SYSCON is set. Special Function Register CC1EN (Mapped Address F6H) Bit No. F6H Reset Value : 00H MSB 7 6 5 4 3 2 1 LSB 0 .7 .6 .5 .4 .3 .2 .1 .0 CC1EN Bit Function CC1EN.7 - 0 Compare timer 1 capture/compare register enable bits If CC1EN.x is set, the compare/capture function for P9.x is enabled and the port line is connected with the corresponding compare/capture register CC(10+x). If CC1EN.x is cleared, the port pin P9.x operates as standard digital I/O. Semiconductor Group 6-66 1997-10-01 On-Chip Peripheral Components C509-L 6.3.4.6.1 Compare Function of Registers CC10 to CC17 The compare function of the registers CC10 to CC17 is equivalent to the compare function of the CM1 to CM7 registers (when CM0-7 are controlled by the compare timer). The compare timer 1 configuration operates in compare mode 0. The description of the compare mode operation of the CMx registers which is given in detail in section 6.3.4.4.1, is also valid for the compare mode operation of the CC1x registers. Only the compare output port, the enable control, and the compare timer flag are different. Figure 6-34 below shows the CC1x registers when they are used for compare function. Figure 6-34 Compare Function of a CC1x Register Assigned to the Compare Timer 1 The compare function of the compare time 1 configuration is selected by programming the direction register of port 9 (DIR9) with the direction bit = 0. The direction register DIR9 is written to by a double instruction sequence (first instruction sets PDIR in SFR IP1, second instruction writes to direction register). The direction register has the same address as port 9. Semiconductor Group 6-67 1997-10-01 On-Chip Peripheral Components C509-L 6.3.4.6.2 Capture Function of Registers CC10 to CC17 The capture function is selected by programming the direction register related to port 9 (DIR9). With the direction bit of DIR9 = 1 the capture function at the corresponding port 9 pin is selected. Each of the eight compare/capture registers CC10 to CC17 can be used to latch the current 16-bit value of the compare timer 1 registers by a positive or a negative transition at the corresponding port 9 pin. The bits located in the SFR CAFR are used to define selectively, whether a positive or a negative transition at a port 9 pin forces a capture event. CAFR is a mapped register.and can only be accessed when bit RMAP in SFR SYSCON is set. Special Function Register CAFR (Mapped Address F7H) Bit No. F7H Reset Value : 00H MSB 7 6 5 4 3 2 1 LSB 0 .7 .6 .5 .4 .3 .2 .1 .0 CAFR Bit Function CAFR.7-0 Capture on falling / rising edge selection bits CAFR.x = 0 : Capture into CC(10+x) on falling edge at pin P9.x is selected (reset value) CAFR.x = 1 : Capture into CC(10+x) on rising edge at pin P9.x is selected.) The level at the corresponding port 9 pin is sampled every state within a machine cycle. For example, with fosc = 16 MHz a state lasts for 62.5 ns. When the compare timer 1 input clock is selected to fosc, the resulting resolution is 125 ns. The rise/fall time of the external capture signal must be observed. At a capture event with the CC10-CC17 register the corresponding interrupt request flag which is located in SFR IRCON2 is set Semiconductor Group 6-68 1997-10-01 On-Chip Peripheral Components C509-L 6.3.5 Modulation Range in Compare Mode 0 In compare mode 0, a 100% variation of the duty cycle of a PWM signal cannot be reached. A time portion of 1/(2n) of an n-bit timer period is always left over. This "spike" may either appear when the compare register is set to the reload value (limiting the lower end of the modulation range) or it may occur at the end of a timer period. In a timer 2 / CCx register configuration in compare mode 0 this spike is divided into two halves: one at the beginning when the contents of the compare register is equal to the reload value of the timer; the other half when the compare register is equal to the maximum value of the timer register (here: FFFFH). Please refer to figure 6-35 where the maximum and minimum duty cycle of a compare output signal is illustrated. Timer 2 is incremented with the processor cycle (fOSC/6), thus at 12-MHz operating frequency, these spikes are both approx. 250 ns long. CCHx/CCLx = 0000 H or = CRCH/CRCL (maximum duty cycle) H P1.x L Appr. 1/2 of a Machine Cycle CCHx/CCLx = FFFF H (minimum duty cycle) Appr. 1/2 of a Machine Cycle H P1.x L MCT01851 Figure 6-35 Modulation Range of a PMW Signal Generated with a Timer 2 / CCx Register Combination in Compare Mode 0 The following example shows how to calculate the modulation range for a PWM signal. For the calculation with reasonable numbers, a reduction of the resolution to 8-bit is used. Otherwise (for the maximum resolution of 16-bit) the modulation range would be so severely limited that it would be negligible. Example: Timer 2 in auto-reload mode; contents of reload register CRC = FF00H Restriction of modulation. range = 1 256 x 2 x 100% = 0.195% This leads to a variation of the duty cycle from 0.195% to 99.805% for a timer 2 / CCx register configuration when 8 of 16 bits are used. Semiconductor Group 6-69 1997-10-01 On-Chip Peripheral Components C509-L In a compare timer/CMx register configuration, the compare output is set to a constant high level if the contents of the compare registers are equal to the reload register (CTREL). The compare output shows a high level for one timer clock period when a CMx register is set to FFFFH. Thus, the duty cycle can be varied from 0.xx% to 100% depending on the resolution selected. In figure 6-36 the maximum and minimum duty cycle of a compare output signal is illustrated. One clock period of the compare timer is equal to one machine state (= 1 oscillator periods) if the prescaler is off. Thus, at 12 MHz system clock the spike is approx. 83.3 ns long. a) CMHx/CMLx = CTREL (maximum duty cycle) H P4.x L b) CMHx/CMLx = FFFF H (minimum duty cycle) CTREL =/ FFFF H One machine state or two oscillator cycle H P4.x L MCT01854 Figure 6-36 Modulation Range of a PWM Signal Generated with a Compare Timer/CMx Register Combination Semiconductor Group 6-70 1997-10-01 On-Chip Peripheral Components C509-L 6.3.6 Using Interrupts in Combination with the Compare Function The compare service of registers CRC, CC1, CC2, CC3 and CC4 is assigned to alternate output functions at port pins P1.0 to P1.4. Another option of these pins is that they can be used as external interrupt inputs. However, when using the port lines as compare outputs then the input line from the port pin to the interrupt system is disconnected (but the pin’s level can still be read under software control). Thus, a change of the pin’s level will not cause a setting of the corresponding interrupt flag. In this case, the interrupt input is directly connected to the (internal) compare signal thus providing a compare interrupt. The compare interrupt can be used very effectively to change the contents of the compare registers or to determine the level of the port outputs for the next "compare match". The principle is, that the internal compare signal (generated at a match between timer count and register contents) not only manipulates the compare output but also sets the corresponding interrupt request flag. Thus, the current task of the CPU is interrupted - of course provided the priority of the compare interrupt is higher than the present task priority - and the corresponding interrupt service routine is called. This service routine then sets up all the necessary parameters for the next compare event. 6.3.6.1 Some advantages in using compare interrupts Firstly, there is no danger of unintentional overwriting a compare register before a match has been reached. This could happen when the CPU writes to the compare register without knowing about the actual timer 2 count. Secondly, and this is the most interesting advantage of the compare feature, the output pin is exclusively controlled by hardware therefore completely independent from any service delay which in real time applications could be disastrous. The compare interrupt in turn is not sensitive to such delays since it loads the parameters for the next event. This in turn is supposed to happen after a sufficient space of time. Please note two special cases where a program using compare interrupts could show a "surprising" behavior: The first configuration has already been mentioned in the description of compare mode 1. The fact that the compare interrupts are transition activated becomes important when driving timer 2 with a slow external clock. In this case it should be carefully considered that the compare signal is active as long as the timer 2 count is equal to the contents of the corresponding compare register, and that the compare signal has a rising and a falling edge. Furthermore, the "shadow latches" used in compare mode 1 are transparent while the compare signal is active. Thus, with a slow input clock for timer 2, the comparator signal is active for a long time (= high number of machine cycles) and therefore a fast interrupt controlled reload of the compare register could not only change the "shadow latch" - as probably intended - but also the output buffer. When using the CRC or CC4 register, you can select whether an interrupt should be generated when the compare signal goes active or inactive, depending on the status of bits I3FR or I2FR in T2CON, respectively. Initializing the interrupt to be negative transition triggered is advisive in the above case. Then the compare signal is already inactive and any write access to the port latch just changes the contents of the "shadow-latch". Semiconductor Group 6-71 1997-10-01 On-Chip Peripheral Components C509-L Please note that for CC registers 1 to 3 an interrupt is always requested when the compare signal goes active. The second configuration which should be noted is when compare functions are combined with negative transition activated interrupts. lf the port latch of port P1.0 or P.1.4 contains a 1, the interrupt request flags IEX3 or IEX2 will immediately be set after enabling the compare mode for the CRC or CC4 register. The reason is that first the external interrupt input is controlled by the pin’s level. When the compare option is enabled the interrupt logic input is switched to the internal compare signal, which carries a low level when no true comparison is detected. So the interrupt logic sees a 1-to-0 edge and sets the interrupt request flag. An unintentional generation of an interrupt during compare initialization can be prevented if the request flag is cleared by software after the compare is activated and before the external interrupt is enabled. Semiconductor Group 6-72 1997-10-01 On-Chip Peripheral Components C509-L 6.3.6.2 Interrupt Enable Bits of the Compare/Capture Unit This section summarizes all CCU related interrupt enable control bits. The interrupt enable bits for the two compare timers and the compare match and capture interrupt capture are located in the three SFRs IEN2, IEN3, and EICC1. Note : EICC1 is a mapped SFR (by bit PDIR): Special Function Register IEN2 (Address 9AH) Special Function Register IEN3 (Address BEH) Special Function Register EICC1 (Mapped Address BFH) Bit No. 9AH BEH BFH Reset Value : XX0000X0B Reset Value : XXXX00XXB Reset Value : FFH MSB 7 6 5 4 3 2 1 LSB 0 – – ECR ECS ECT ECMP – ES1 7 6 5 4 3 2 1 0 – – – – ECT1 ECC1 – – 7 6 5 4 3 2 1 0 EICC17 EICC16 EICC15 EICC14 EICC13 EICC12 EICC11 EICC10 IEN2 IEN3 EICC1 The shaded bits are not used for CCU interrupt control. Bit Function ECR COMCLR register compare match interrupt enable If ECR = 0, the COMCLR compare match interrupt is disabled. ECS COMSET register compare match interrupt enable If ECS = 0, the COMSET compare match interrupt is disabled. ECT Enable compare timer interrupt If ECT = 0, the compare timer overflow interrupt is disabled. ECMP CM0-7 register compare match interrupt If ECMP = 0, the CM0-7 compare match interrupt is disabled. ECT1 Compare timer 1 overflow interrupt enable If ECT1 = 0, the interrupt at compare timer 1 overflow is disabled. ECC1 Compare timer 1, general capture/compare interrupt enable This bit enables the interrupt on an capture/compare event in the capture/compare registers CC10 - CC17. Additionally, the SFR EICC1 must be programmed to enable the interrupt request. With ECC1=0, the general capture/compare timer 1 interrupt is disabled. EICC17 EICC10 Compare timer 1, specific capture/compare interrupt enable This bit enables the interrupt on an capture/compare event in the capture/compare registers CC10 - CC17. When EICC1x=0, the interrupt request flag ICC1x has no effect on the interrupt unit. EICC17 refers to CC17 etc. Semiconductor Group 6-73 1997-10-01 On-Chip Peripheral Components C509-L 6.3.6.3 Interrupt Flags of the Compare/Capture Unit This section summarizes the CCU related compare match interrupt flags. The two compare timer overflow interrupt flags (CT and CT1) are described in detail in section 6.3.2.1. The compare timer match interrupt occurs on a compare match of the CM0 to CM7 registers with the compare timer when compare mode 1 is selected for the corresponding channel. There are 8 compare match interrupt flags available in SFR IRCON1 which are or-ed together for a single interrupt request. Thus, a compare match interrupt service routine has to check which compare match has requested the compare match interrupt. The ICMPx flags must be cleared by software. Only if timer 2 is assigned to the CMx registers (compare mode 0), an ICMPx request flag is set by every match in the compare channel. When the compare timer is assigned to the CMx registers (compare mode 1), an ICMPx request flag will not be set by a compare match event. The compare timer 1 match interrupt occurs on a compare match of the CC10 to CC17 registers with the compare timer 1. There are 8 compare match interrupt flags available in SFR IRCON2 which are or-ed together for a single interrupt request. Thus, a compare match interrupt service routine has to check which compare match has requested the compare match interrupt. The ICC1x flags must be cleared by software. Special Function Register IRCON1 (Address D1H) Special Function Register IRCON2 (Address BFH) Bit No. D1H MSB 7 5 4 3 2 1 LSB 0 ICMP7 ICMP6 ICMP5 ICMP4 ICMP3 ICMP2 ICMP1 ICMP0 7 BFH 6 Reset Value : 00H Reset Value : 00H 6 5 4 3 2 1 IRCON1 0 ICC17 ICC16 ICC15 ICC14 ICC13 ICC12 ICC11 ICC10 IRCON2 Bit Function ICMP7 - 0 Compare timer match with register CM7 - CM0 interrupt flags ICMPx is set by hardware when a compare match of the compare timer with the compare register CMx occurs but only if the compare function for CMx has been enabled. ICMPx must be cleared by software (CMSEL.x = 0 and CMEN.x = 1). ICC17 - 10 Compare timer 1 match with register CC17 - CC10 interrupt flags ICC1x is set by hardware when a compare match of the compare timer 1 with the compare register CC1x occurs but only if the compare function for CC1x has been enabled. ICC1x must be cleared by software. Semiconductor Group 6-74 1997-10-01 On-Chip Peripheral Components C509-L 6.4 Arithmetic Unit This on-chip arithmetic unit of the C509-L provides fast 32-bit division, 16-bit multiplication as well as shift and normalize features. All operations are unsigned integer operations. The arithmetic unit (further on also called MDU for “Multiplication/Division Unit”) has been integrated to support the C500 core of the C509-L in real-time control applications. It can increase the execution speed of math-intensive software routines by factor 5 to 10. The MDU is handled by seven registers, which are memory mapped as special function registers like any other registers for peripheral control. Therefore, the arithmetic unit allows operations concurrently to and independent of the CPU’s activity. Table 6-8 describes the four general operations the MDU is able to perform: Table 6-8 MDU Operation Characteristics Operation Result Remainder Execution Time 32bit/16bit 16bit/16bit 16bit x 16bit 32-bit normalize 32-bit shift L/R 32bit 16bit 32bit – – 16bit 16bit – – – 6 tCY 1) 4 tCY 1) 4 tCY 1) 6 tCY 2) 6 tCY 2) 1) 2) 1 tCY = 6 • CLP = 1 machine cycle = 375 ns at 16-MHz oscillator frequency The maximal shift speed is 6 shifts per machine cycle 6.4.1 MDU Register The seven SFRs of the MDU consist of registers MD0 to MD5, which contain the operands and the result (or the remainder, resp.) and one control register called ARCON. Thus MD0 to MD5 are used twofold: – for the operands before a calculation has been started and – for storage of the result or remainder after a calculation. This means that any calculation of the MDU overwrites its operands. lf a program needs the original operands for further use, they should be stored in general purpose registers in the internal RAM. Table 6-8 list the MDU registers with its addresses: Table 6-9 MDU Registers SFR Address Name ARCON MD0 MD1 MD2 MD3 MD4 MD5 EFH E9H EAH EBH ECH EDH EEH MDU Control Register MDU Data Register 0 MDU Data Register 1 MDU Data Register 2 MDU Data Register 3 MDU Data Register 4 MDU Data Register 5 Semiconductor Group 6-75 1997-10-01 On-Chip Peripheral Components C509-L The arithmetic control register ARCON contains control flags and the shift counter of the MDU. It triggers a shift or a normalize operation in register MD0 to MD3 when being written to. Special Function Register ARCON (Address EFH) Bit No. EFH MSB 7 6 MDEF MDOV Reset Value : 0XXXXXXXB 5 4 3 2 1 LSB 0 SLR SC.4 SC.3 SC.2 SC.1 SC.0 ARCON Bit Function MDEF Error flag Indicates an improperly performed operation. MDEF is set by hardware when an operation is retriggered by a write access to MDx before the first operation has been completed. MDEF is automatically cleared after being read. MDOV Overflow flag Exclusively controlled by hardware. MDOV is set by following events: – division by zero – multiplication with a result greater than FFFFH. SLR Shift direction bit When set, shift right is performed. SLR = 0 selects shift left operation. SC.4 - SC.0 Shift counter bits When preset with 00000B, normalizing is selected. After operation SC.0 to SC.4 contain the number of normalizing shifts performed. When set with a value ≠ 0, shift operation is started. The number of shifts performed is determined by the count written to SC.0 to SC.4. Semiconductor Group 6-76 1997-10-01 On-Chip Peripheral Components C509-L 6.4.2 Operation of the MDU The MDU can be regarded as a special coprocessor for multiplication, division and shift. Its operations can be divided into three phases (see figure 6-37): 1) Loading the MDx registers 2) Executing the calculation 3) Reading the result from the MDx registers During phase two, the MDU works on its own parallelly to the CPU. Execution times of the above table refer to this phase. Because of the fast operation and the determined execution time for C509L’s instructions, there is no need for a busy flag. The CPU may execute a determined number of instructions before the result is fetched. The result and the remainder of an operation may also be stored in the MDx registers for later use. Phase one and phase three require CPU activity. In these phases the CPU has to transfer the operands and fetch the results. Figure 6-37 Operating Phases of the MDU The MDU has no dedicated instruction register (only for shift and normalize operations, register ARCON is used in such a way). The type of calculation the MDU has to perform is selected following the order in which the MDx registers are written to (see table 6-10). This mechanism also reduces execution time spent for controlling the MDU. Hence, a special write sequence selects an operation. The MDU monitors the whole write and read-out sequence to ensure that the CPU has fetched the result correctly and was not interrupted by another calculation task. Thus, a complete operation lasts from writing the first byte of the operand in phase 1 until reading the last byte of the result in phase 3. Semiconductor Group 6-77 1997-10-01 On-Chip Peripheral Components C509-L 6.4.3 Multiplication/Division The general mechanism to start an MDU activity has been described above. The following description of the write and read sequences adds to the information given in the table below where the write and read operations necessary for a multiplication or division are listed. Table 6-10 Programming the MDU for Multiplication and Division Operation 32Bit/16Bit 16Bit/16Bit 16Bit x 16Bit First Write MD0 MD1 MD2 MD3 MD4 MD5 D’endL D’end D’end D’endH D’orL D’orH MD0 MD1 D’endL D’endH MD0 MD4 M’andL M’orL MD4 D’orL MD1 M’andH MD5 D’orH MD5 M’orH MD0 MD1 MD2 MD3 MD4 MD5 QuoL Quo Quo QuoH RemL RemH MD0 MD1 QuoL QuoH MD0 MD1 PrL MD4 RemL MD2 MD5 RemH MD3 Last Write First Read Last Read PrH Abbreviations : D'end : Dividend, 1st operand of division D'or : Divisor, 2nd operand of division M'and : Multiplicand, 1st operand of multiplication M'or : Multiplicator, 2nd operand of multiplication Pr : Product, result of multiplication Rem : Remainder Quo : Quotient, result of division ...L : means, that this byte is the least significant of the 16-bit or 32-bit operand ...H : means, that this byte is the most significant of the 16-bit or 32-bit operand Write Sequence The first and the last write operation in phase one are fixed for every calculation of the MDU. All write operations inbetween determine the type of MDU calculation. – A write-to-MD0 is the first transfer to be done in any case. This write resets the MDU and triggers the error flag mechanism (see below). – The next two or three write operations select the calculation type (32bit/16bit, 16bit/16bit, 16bit x 16bit) The last write-to-MD5 finally starts the selected MUL/DIV operation Read Sequence – Any read-out of the MDx registers should begin with MD0 – The last read from MD5 (division) or MD3 (multiplication) determines the end of a whole calculation and releases the error flag mechanism. Semiconductor Group 6-78 1997-10-01 On-Chip Peripheral Components C509-L There is no restriction on the time within which a calculation must be completed. The CPU is allowed to continue the program simultaneously to phase 2 and to fetch the result bytes at any time. lf the user’s program takes care that interrupting a calculation is not possible, monitoring of the calculation process is probably not needed. In this case, only the write sequence must be observed. Any new write access to MD0 starts a new calculation, no matter whether the read-out of the former result has been completed or not. 6.4.4 Normalize and Shift Register ARCON controls an up to 32-bit wide normalize and shift operation in registers MD0 to MD3. It also contains the overflow flag and the error flag which are described in the next two sections. Write Sequence – A write-to-MD0 is also the first transfer to be done for normalize and shift. This write resets the MDU and triggers the error flag mechanism (see below). – To start a shift or normalize operation the last write must access register ARCON. Read Sequence – The order in which the first three registers MD0 to MD2 are read is not critical – The last read from MD3 determines the end of a whole shift or normalize procedure and releases the error flag mechanism. Note: Any write access to ARCON triggers a shift or normalize operation and therefore changes the contents of registers MD0 to MD3! Normalizing Normalizing is done on an integer variable stored in MD0 (least significant byte) to MD3 (most significant byte). This feature is mainly meant to support applications where floating point arithmetic is used. “To normalize” means, that all reading zeroes of an integer variable in registers MD0 to MD3 are removed by shift left operations. The whole operation is completed when the MSB (most significant bit) contains a ‘1’. To select a normalize operation, the five bit field ARCON.0 to ARCON.4 must be cleared. That means, a write-to-ARCON instruction with the value XXX0 0000B starts the operation. After normalizing, bits ARCON.0 to ARCON.4 contain the number of shift left operations which were done. This number may further on be used as an exponent. The maximum number of shifts in a normalize operation is 31 (= 25 – 1). The operation takes six machine cycles at most, that means 3 microseconds at 12 MHz. Shifting In the same way - by a write-to-ARCON instruction - a shift left/right operation can be started. In this case register bit SLR (ARCON.5) has to contain the shift direction, and ARCON.0 to ARCON.4 the shift count (which must not be 0, otherwise a normalize operation would be executed). During shift, zeroes come into the left or right end of the registers MD0 or MD3, respectively. Semiconductor Group 6-79 1997-10-01 On-Chip Peripheral Components C509-L The first machine cycle of a shift left/right operation executes four shifts, while all following cycles perform 6 shifts. Hence, a 31-bit shift takes 3 microseconds at 12 MHz. WIth a four bit shift operation ther must be at least one machine cycle delay before the result registers MD0-3 can be accessed as valid by the CPU. Completion of both operations, normalize and shift, can also be controlled by the error flag mechanism. The error flag is set if one of the relevant registers (MD0 through MD3) is accessed before the previously commenced operation has been completed. For proper operation of the error flag mechanism, it is necessary to take care that the right write or read sequence to or from registers MD0 to MD3 (see table 6-11) is maintained. Table 6-11 Programming a Shift or Normalize Operation Operation Normalize, Shift Left, Shift Right First write MD0 MD1 MD2 MD3 ARCON least significant byte . . most significant byte start of conversion MD0 MD1 MD2 MD3 least significant byte . . most significant byte Last write First read Last read 6.4.5 The Overflow Flag An overflow flag is provided for some exceptions during MDU calculations. There are three cases where flag MDOV ARCON.6 is set by hardware: – Division by zero – Multiplication with a result greater then 0000 FFFFH (= auxiliary carry of the lower 16bit) – Start of normalizing if the most significant bit of MD3 is set (MD3.7 = 1). Any operation of the MDU which does not match the above conditions clears the overflow flag. Note that the overflow flag is exclusively controlled by hardware. It cannot be written to. 6.4.6 The Error Flag An error flag, bit MDEF in register ARCON (figure 6-56), is provided to indicate whether one of the arithmetic operations of the MDU (multiplication, division, normalize, shift left/right) has been restarted or interrupted by a new operation. This can possibly happen e.g. when an interrupt service routine interrupts the writing or reading sequence of the arithmetic operation in the main program and starts a new operation. Then the contents of the corresponding registers are indeterminate (they would normally show the result of the last operation executed). Semiconductor Group 6-80 1997-10-01 On-Chip Peripheral Components C509-L In this case the error flag can be used to indicate whether the values in the registers MD0 to MD5 are the expected ones or whether the operation must be repeated. For a multiplication/division, the error flag mechanism is automatically enabled with the first write instruction to MD0 (phase 1). According to the above described programming sequences, this is the first action for every type of calculation. The mechanism is disabled with the final read instruction from MD3 or MD5 (phase 3). Every instruction which rewrites MD0 (and therefore tries to start a new calculation) in phases 1 through 3 of the same process sets the error flag. The same applies for any shift operation (normalize, shift left/right). The error flag is set if the user’s program reads one of the relevant registers (MD0 to MD3) or if it writes to MD0 again before the shift operation has been completed. Please note that the error flag mechanism is just an option to monitor the MDU operation. lf the user’s program is designed such that an MDU operation cannot be interrupted by other calculations, then there is no need to pay attention to the error flag. In this case it is also possible to change the order in which the MDx registers are read, or even to skip some register read instructions. Concerning the shift or normalize instructions, it is possible to read the result before the complete execution time of six machine cycles has passed (e.g. when a small number of shifts has been programmed). All of the above “illegal” actions would set the error flag, but on the other hand do not affect a correct MDU operation. The user has just to make sure that everything goes right. The error flag (MDEF) is located in ARCON and can be read only. It is automatically cleared after being read. Semiconductor Group 6-81 1997-10-01 On-Chip Peripheral Components C509-L 6.5 Serial Interfaces The C509-L has two serial interfaces which are functionally nearly identical concerning the asynchronous modes of operation. The two channels are full-duplex, meaning they can transmit and receive simultaneously. They are also receive buffered, meaning they can commence reception of a second byte before a previously received byte has been read from the receive register (however, if the first byte still has not been read by the time reception of the second byte is complete, the last received byte will be lost). The serial channel 0 is completely compatible with the serial channel of the C501. Serial channel 1 has the same functionality in its asynchronous modes, but the synchronous mode is missing. 6.5.1 Serial Interface 0 6.5.1.1 Operating Modes of Serial Interface 0 The serial interface 0 can operate in four modes (one synchronous mode, three asynchronous modes). The baud rate clock for this interface is derived from the oscillator frequency (mode 0, 2) or generated either by timer 1 or by a dedicated baud rate generator (mode 1, 3). A more detailed description of how to set the baud rate will follow in section 6.5.1.3. Mode 0: Shift register (synchronous) mode: Serial data enters and exits through RXD0. TXD0 outputs the shift clock. 8 data bits are transmitted/received (LSB first). The baud rate is fixed at 1/6 of the oscillator frequency. Mode 1: 8-bit UART, variable baud rate: 10 bits are transmitted (through TXD0) or received (through RXD0): a start bit (0), 8 data bits (LSB first), and a stop bit (1). On reception, the stop bit goes into RB80 in special function register S0CON. The baud rate is variable. Mode 2: 9-bit UART, fixed baud rate: 11 bits are transmitted (through TXD0) or received (through RXD0): a start bit (0), 8 data bits (LSB first), a programmable 9th bit, and a stop bit (1). On transmission, the 9th data bit (TB80 in S0CON) can be assigned to the value of 0 or 1. For example, the parity bit (P in the PSW) could be moved into TB80 or a second stop bit by setting TB80 to 1. On reception the 9th data bit goes into RB80 in special function register S0CON, while the stop bit is ignored. The baud rate is programmable to either 1/16 or 1/32 of the oscillator frequency. Mode 3: 9-bit UART, variable baud rate: 11 bits are transmitted (through TXD0) or received (through RXD0): a start bit (0), 8 data bits (LSB first), a programmable 9th bit, and a stop bit (1). On transmission, the 9th data bit (TB80 in S0CON) can be assigned to the value of 0 or 1. For example, the parity bit (P in the PSW) could be moved into TB80 or a second stop bit by setting TB80 to 1. On reception, the 9th data bit goes into RB80 in special function register S0CON, while the stop bit is ignored. In fact, mode 3 is the same as mode 2 in all respects except the baud rate. The baud rate in mode 3 is variable. Semiconductor Group 6-82 1997-10-01 On-Chip Peripheral Components C509-L In all four modes, transmission is initiated by any instruction that uses S0BUF as a destination register. Reception is initiated in mode 0 by the condition RI0 = 0 and REN0 = 1. Reception is initiated in the other modes by the incoming start bit if REN0 = 1. The serial interfaces also provide interrupt requests when a transmission or a reception of a frame has completed. The corresponding interrupt request flags for serial interface 0 are TI0 or RI0, resp. See chapter 7 of this user manual for more details about the interrupt structure. The interrupt request flags TI0 and RI0 can also be used for polling the serial interface 0 if the serial interrupt is not to be used (i.e. serial interrupt 0 not enabled). The control and status bits of the serial interface 0 are located in special function register S0CON. S0BUF is the receive and transmit buffer of serial interface 0. Writing to S0BUF loads the transmit register and initiates transmission. Reading out S0BUF accesses a physically separate receive register. 6.5.1.2 Multiprocessor Communication Feature Modes 2 and 3 of the serial interface 0 have a special provision for multi-processor communication. In these modes, 9 data bits are received. The 9th bit goes into RB80. Then a stop bit follows. The port can be programmed such that when the stop bit is received, the serial port 0 interrupt will be activated (i.e. the request flag RI0 is set) only if RB80 = 1. This feature is enabled by setting bit SM20 in S0CON. A way to use this feature in multiprocessor communications is as follows. lf the master processor wants to transmit a block of data to one of the several slaves, it first sends out an address byte which identifies the target slave. An address byte differs from a data byte in that the 9th bit is 1 in an address byte and 0 in a data byte. With SM20 = 1, no slave will be interrupted by a data byte. An address byte, however, will interrupt all slaves, so that each slave can examine the received byte and see if it is being addressed. The addressed slave will clear its SM20 bit and prepare to receive the data bytes that will be coming. After having received a complete message, the slave sets SM20 again. The slaves that were not addressed leave their SM20 set and go on about their business, ignoring the incoming data bytes. SM20 has no effect in mode 0. In mode 1 SM20 can be used to check the validity of the stop bit. lf SM20 = 1 in mode 1, the receive interrupt will not be activated unless a valid stop bit is received. Semiconductor Group 6-83 1997-10-01 On-Chip Peripheral Components C509-L Special Function Register S0CON (Address 98H) Special Function Register S0BUF (Address 99H) Bit No. 98H Reset Value : 00H Reset Value : XXH MSB LSB 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H SM0 SM1 SM20 REN0 TB80 RB80 TI0 RI0 1 0 7 6 5 4 3 2 Serial Interface 0 Buffer Register 99H Bit Function SM0 SM1 Serial port 0 mode selection bits S0CON S0BUF SM0 SM1 Selected operating mode 0 0 Serial mode 0 : Shift register, fixed baud rate (fOSC/6) 0 1 Serial mode 1 : 8-bit UART, variable baud rate 1 0 Serial mode 2 : 9-bit UART, fixed baud rate (fOSC/16 or fOSC/32) 1 1 Serial mode 3 : 9-bit UART, variable baud rate SM20 Enable serial port 0 multiprocessor communication in modes 2 and 3 In mode 2 or 3, if SM2 is set to 1 then RI0 will not be activated if the received 9th data bit (RB8) is 0. In mode 1, if SM2 = 1 then RI0 will not be activated if a valid stop bit was not received. In mode 0, SM2 should be 0. REN0 Enable receiver of serial port 0 Enables serial reception. Set by software to enable serial reception. Cleared by software to disable serial reception. TB80 Serial port 0 transmitter bit 9 TB80 Is the 9th data bit that will be transmitted in modes 2 and 3. Set or cleared by software as desired. RB80 Serial port 0 receiver bit 9 In modes 2 and 3, RB80 is the 9th data bit that was received. In mode 1, if SM2 = 0, RB80 is the stop bit that was received. In mode 0, RB80 is not used. TI0 Serial port 0 transmitter interrupt flag TI0 is set by hardware at the end of the 8th bit time in mode 0, or at the beginning of the stop bit in the other modes, in any serial transmission. TI0 must be cleared by software. RI0 Serial port 0 receiver interrupt flag RI0 is set by hardware at the end of the 8th bit time in mode 0, or halfway through the stop bit time in the other modes, in any serial reception (exception see SM20). RI0 must be cleared by software. Semiconductor Group 6-84 1997-10-01 On-Chip Peripheral Components C509-L 6.5.1.3 Baud Rates of Serial Channel 0 There are several possibilities to generate the baud rate clock for the serial interface 0 depending on the mode in which it is operated. For clarification some terms regarding the difference between “baud rate clock” and “baud rate” should be mentioned. The serial interface requires a clock rate which is 16 times the baud rate for internal synchronization. Therefore, the baud rate generators have to provide a “baud rate clock” to the serial interface which - there divided by 16 - results in the actual “baud rate”. However, all formulas given in the following section already include the factor and calculate the final baud rate. Further, the abbreviation fOSC refers to the oscillator frequency (crystal or external clock operation). The baud rate of the serial channel 0 is controlled by several bits which are located in the special function registers as shown below. Special Function Register ADCON0 (Address D8H) Special Function Register PCON (Address 87H) Special Function Register PRSC (Address B4H) Bit No. D8H 87H B4H Reset Value : 00H Reset Value : 00H Reset Value : 11010101B MSB DFH DEH DDH DCH DBH DAH D9H LSB D8H BD CLK ADEX BSY ADM MX2 MX1 MX0 7 6 5 4 3 2 1 0 SMOD PDS IDLS SD GF1 GF0 PDE IDLE 7 6 5 4 3 2 1 0 WDTP S0P T2P1 T2P0 T1P1 T1P2 T0P1 T0P0 ADCON0 PCON PRSC The shaded bits are not used in controlling serial interface 0. Bit Function BD Baud rate generator enable When set, the baud rate of serial interface 0 is derived from a dedicated baud rate generator. When cleared (default after reset), baud rate is derived from the timer 1 overflow rate. SMOD Double baud rate When set, the baud rate of serial interface 0 in modes 1, 2, 3 is doubled. After reset this bit is cleared. S0P Serial interface 0 prescaler When set (default after reset), an additional prescaler by 2 is active at the dedicated baud rate generator. Semiconductor Group 6-85 1997-10-01 On-Chip Peripheral Components C509-L Figure 6-38 shows the configuration for the baud rate generation of serial channel 0. Figure 6-38 Baud Rate Generation for Serial Channel 0 Depending on the programmed operating mode different paths are selected for the baud rate clock generation. Table 6-12 shows the dependencies of the serial port 0 baud rate clock generation from the 3 control bits and from the mode which is selected in the special function register S0CON. Table 6-12 Serial Interface 0 - Baud Rate Dependencies Serial Interface 0 Operating Modes Active Control Bits Baud Rate Clock Generation BD S0P SMOD Mode 0 (Shift Register) – – – Fixed baud rate clock fosc/6 Mode 1 (8-bit UART) Mode 3 (9-bit UART) X X X BD=0: Timer 1 overflow is used for baud rate generation; SMOD controls a divide-by-2 option. BD=1: Baud rate generator is used for rate generation; S0P and SMOD control two divide-by-2 options. Mode 2 (9-bit UART) – – X Fixed baud rate clock fosc/16 (SMOD=1) or fosc/32 (SMOD=0) Note: If the internal baud generator is selected in mode 1,3, S0P has no effect on the prescaler function if the reload value in S0RELL/S0RELH is 3FFH (S0P divider ratio of ÷1 implicitly selected). Semiconductor Group 6-86 1997-10-01 On-Chip Peripheral Components C509-L Baud Rate in Mode 0 The baud rate in mode 0 is fixed to: Mode 0 baud rate = oscillator frequency 6 Baud Rate in Mode 2 The baud rate in mode 2 depends on the value of bit SMOD in special function register PCON. If SMOD = 0 (which is the value after reset), the baud rate is 1/32 of the oscillator frequency. If SMOD = 1, the baud rate is 1/16 of the oscillator frequency. Mode 2 baud rate = 2 SMOD 32 x oscillator frequency Baud Rate in Mode 1 and 3 In these modes the baud rate is variable and can be generated alternatively by a baud rate generator or by timer 1. Using the baud rate generator: In modes 1 and 3, the C509-L can use an internal baud rate generator for serial interface 0. To enable this feature, bit BD (bit 7 of special function register ADCON0) must be set. Bit S0P (PRSC.6) and SMOD (PCON.7) control divide-by-2 circuits which affect the input and output clock signal of the baud rate generator. After reset both divide-by-2 circuits are active. So, the input clock of the baud rate generator is fOSC/2 and the resulting overflow output clock will be divided by 2. Figure 6-39 Serial Interface 0 Input Clock using the Baud Rate Generator Semiconductor Group 6-87 1997-10-01 On-Chip Peripheral Components C509-L The baud rate generator consists of a free running upward counting 10-bit timer. On overflow of this timer (next count step after counter value 3FFH) there is an automatic 10-bit reload from the registers S0RELL and S0RELH. The lower 8 bits of the timer are reloaded from S0RELL, while the upper two bits are reloaded from bit 0 and 1 of register S0RELH. The baud rate timer is reloaded by writing to S0RELL. Special Function Register S0RELH (Address BAH) Special Function Register S0RELL (Address AAH) Bit No. BAH AAH Reset Value : XXXXXX11B Reset Value : D9H MSB LSB 7 6 5 4 3 2 1 0 – – – – – – MSB .0 7 6 5 4 3 2 1 0 .7 .6 .5 .4 .3 .2 .1 LSB Bit Function S0RELH.0-1 Reload value. Upper two bits of the timer reload value. S0RELL.0-7 Reload value. Lower 8 bit of timer reload value. S0RELH S0RELL After reset S0RELH and S0RELL have a reload value of 3D9H. With this reload value the baud rate generator has an overflow rate of input clock / 39. With a 12-MHz oscillator frequency, the commonly used baud rates 4800 baud (SMOD = 0) and 9600 baud (SMOD = 1) are available (with 0.16 % deviation). With the baud rate generator as clock source for the serial port 0 in mode 1 and 3, the baud rate of can be determined as follows: Mode 1, 3 baud rate = 2 SMOD x oscillator frequency 64 x (baud rate generator overflow rate) x 2S0P Baud rate generator overflow rate = 210 – S0REL with S0REL = S0RELH.1 – 0, S0RELL.7 – 0 At 12-MHz oscillator frequency a baud rate range from about 92 baud up to 375 kbaud is covered. Semiconductor Group 6-88 1997-10-01 On-Chip Peripheral Components C509-L Using timer 1 to generate baud rates: In mode 1 and 3 of serial interface 0 timer 1 can be used for generating baud rates. Then the baud rate is determined by the timer 1 overflow rate and the value of SMOD as follows: Mode 1, 3 baud rate = 2SMOD 32 x (timer 1 overflow rate) The timer 1 interrupt is usually disabled in this application. Timer 1 itself can be configured for either “timer” or “counter” operation, and in any of its operating modes. In most typical applications, it is configured for “timer” operation in the auto-reload mode (high nibble of TMOD = 0010 B). In this case the baud rate is given by the formula: 2SMOD x oscillator frequency Mode 1, 3 baud rate = 32 x 6 x PRSC x (256 – (TH1)) PRSC is the prescaler ratio which is selected via the bits T1P1 and T1P0 in the special function register PRSC. Timer 1 Prescaler Bits T1P1 T1P0 PRSC Value in the forrmula above 0 0 1 0 1 2 1 0 4 1 1 8 Very low baud rates can be achieved with timer 1 if leaving the timer 1 interrupt enabled, configuring the timer to run as 16-bit timer (high nibble of TMOD = 0001B), and using the timer 1 interrupt for a 16-bit software reload. Semiconductor Group 6-89 1997-10-01 On-Chip Peripheral Components C509-L 6.5.2 Serial Interface 1 6.5.2.1 Operating Modes of Serial Interface 1 The serial interface 1 is an asynchronous unit only and is able to operate in two modes, as an 8-bit or 9-bit UART. These modes, however, correspond to the above mentioned modes 1, 2 and 3 of serial interface 0. The multiprocessor communication feature is identical with this feature in serial interface 0. The serial interface 1 has its own interrupt request flags Rl1 and Tl1 which have a dedicated interrupt vector location. The baud rate clock for this interface is generated by a dedicated baud rate generator. Mode A: 9-bit UART, variable baud rate: 11 bits are transmitted (through TXD1) or received (through RXD1): a start bit (0), 8 data bits (LSB first), a programmable 9th bit, and a stop bit (1). On transmission, the 9th data bit (TB81 in S1CON) can be assigned to the value of 0 or 1. For example, the parity bit (P in the PSW) could be moved into TB81 or a second stop bit by setting TB81 to 1. On reception the 9th data bit goes into RB81 in special function register S0CON, while the stop bit is ignored. In fact, mode A of serial interface 1 is identical with mode 2 or 3 of serial interface 0 in all respects except the baud rate generation. Mode B: 8-bit UART, variable baud rate: 10 bits are transmitted (through TXD1) or received (through RXD1): a start bit (0), 8 data bits (LSB first), and a stop bit (1). On reception, the stop bit goes into RB81 in special function register S1CON. In fact, mode B of serial interface 1 is identical with mode 1 of serial interface 0 in all respects except for the baud rate generation. In both modes, transmission is initiated by any instruction that uses S1BUF as a destination register. Reception is initiated by the incoming start bit if REN1 = 1. The serial interfaces also provide interrupt requests when a transmission or a reception of a frame has completed. The corresponding interrupt request flags for serial interface 1 are Tl1 or Rl1, respectively. The interrupt request flags Tl1 and Rl1 can also be used for polling the serial interface 1 if the serial interrupt shall not be used (i.e. serial interrupt 1 not enabled). The control and status bits of the serial channel 1 in special function register S1CON and the transmit/receive data register S1BUF are shown on the next page. Writing to S1BUF loads the transmit register and initiates transmission. Reading out S1BUF accesses a physically separate receive register. Note that these special function registers are not bit-addressable. Due to this fact bit instructions cannot be used for manipulating these registers. This is important especially for S1CON where a polling and resetting of the Rl1 or Tl1 request flag cannot be performed by JNB and CLR instructions but must be done by a sequence of byte instructions, e.g.: LOOP: MOV JNB ANL A,S1CON ACC.0,LOOP S1CON,#0FEH Semiconductor Group ;Testing of RI1 ;Resetting of RI1 6-90 1997-10-01 On-Chip Peripheral Components C509-L Special Function Register S1CON (Address 9BH) Special Function Register S1BUF (Address 9CH) Bit No. 9BH Reset Value : 01000000B Reset Value : XXH MSB LSB 7 6 5 4 3 2 1 0 SM S1P SM21 REN1 TB81 RB81 TI1 RI1 7 6 5 4 3 2 1 0 9CH Serial Interface 1 Buffer Register S1CON S1BUF Bit Function SM Serial port 1 mode select bit SM = 0: Serial mode A; 9-bit UART SM = 1: Serial mode B; 8-bit UART S1P Serial interface 1 prescaler When set (default after reset), an additional prescaler by 2 is active at the serial interface 1 baud rate generator. SM21 Enable serial port 1 multiprocessor communication in mode A If SM21 is set to 1 in mode A, RI1 will not be activated if the received 9th data bit (RB81) is 0. In mode B, if SM21 = 1, RI1 will not be activated if a valid stop bit was not received. REN1 Enable receiver of serial port 1 Set by software to enable serial reception. Cleared by software to disable reception. TB81 Serial port 1 transmitter bit 9 TB81 is the 9th data bit that will be transmitted in mode A. Set or cleared by software as desired. RB81 Serial port 1 receiver bit 9 RB81 is the 9th data bit that was received in mode A. In mode B, if SM21 = 0, RB81 is the stop bit that was received. TI1 Serial port 1 transmitter interrupt flag TI1 is set by hardware at the beginning of the stop bit in any serial transmission. TI1 must be cleared by software. RI1 Serial port 1 receiver interrupt flag RI1 is set by hardware at the halfway through the stop bit time in any serial reception. RI1 must be cleared by software. Semiconductor Group 6-91 1997-10-01 On-Chip Peripheral Components C509-L 6.5.2.2 Multiprocessor Communication Feature Mode A of the serial interface 1 has a special provision for multiprocessor communication. In this mode, 9 data bits are received. The 9th bit goes into RB81. Then a stop bit follows. The port can be programmed such that when the stop bit is received, the serial port 1 interrupt will be activated (i.e. the request flag Rl1 is set) only if RB81 = 1. This feature is enabled by setting bit SM21 in S1CON. A way to use this feature in multiprocessor communications is as follows. lf the master processor wants to transmit a block of data to one of the several slaves, it first sends out an address byte which identifies the target slave. An address byte differs from a data byte in that the 9th bit is 1 in an address byte and 0 in a data byte. With SM21 = 1, no slave will be interrupted by a data byte. An address byte, however, will interrupt all slaves, so that each slave can examine the received byte and see if it is being addressed. The addressed slave will clear its SM21 bit and prepare to receive the data bytes that will be coming. After having received a complete message, the slave is setting SM21 again. The slaves that were not addressed leave their SM21 set and go on about their business, ignoring the incoming data bytes. In mode B, SM21 can be used to check the validity of the stop bit. lf SM21 = 1 in mode B, the receive interrupt will not be activated unless a valid stop bit is received. 6.5.2.3 Baud Rates of Serial Channel 1 As already mentioned serial interface 1 uses its own dedicated baud rate generator for baud rate generation in both operating modes (see figure 6-40). This baud rate generator consists of a free running 10-bit timer with fOSC/2 (S1P=1) or fOSC (S1P=0) as input frequency. On overflow of this timer (next count step after counter value 3FFH) there is an automatic 10-bit reload from the registers S1RELL and S1RELH. The lower 8 bits of the timer are reloaded from S1RELL, while the upper two bits are reloaded from bit 0 and 1 of register S1RELH. The baud rate timer is reloaded by writing to S1RELL. Figure 6-40 Baud Rate Generator for Serial Interface 1 Semiconductor Group 6-92 1997-10-01 On-Chip Peripheral Components C509-L Special Function Register S1RELH (Address BBH) Special Function Register S1RELL (Address 9DH) Bit No. BBH 9DH Reset Value : XXXXXX11B Reset Value : 00H MSB LSB 7 6 5 4 3 2 1 0 – – – – – – MSB .0 7 6 5 4 3 2 1 0 .7 .6 .5 .4 .3 .2 .1 LSB Bit Function S1RELH.0-1 Reload value. Upper two bits of the timer reload value. S1RELL.0-7 Reload value. Lower 8 bit of timer reload value. S1RELH S1RELL The baud rate in operating modes A and B can be determined by following formula: Mode A, B baud rate = oscillator frequency 32 x (baud rate generator overflow rate) x 2S1P Baud rate generator overflow rate = 210 – S1REL with S1REL = S1RELH.1 – 0, S1RELL.7 – 0 At 12-MHz oscillator frequency a baud rate range from about 366 baud up to 750 kbaud is covered. Semiconductor Group 6-93 1997-10-01 On-Chip Peripheral Components C509-L 6.5.3 Detailed Description of the Operating Modes The following sections give a more detailed description of the several operating modes of the two serial interfaces. 6.5.3.1 Mode 0, Synchronous Mode (Serial Interface 0) Serial data enters and exits through RXD0. TXD0 outputs the shift clock. 8 data bits are transmitted/received (LSB first). The baud rate is fixed at 1/6 of the oscillator frequency. Figure 6-41a shows a simplified functional diagram of the serial port in mode 0. The associated timing is illustrated in figure 2-42b. Transmission is initiated by any instruction that uses S0BUF as a destination register. The “Writeto-S0BUF” signal at S6P2 also loads a 1 into the 9th bit position of the transmit shift register and tells the TX control block to commence a transmission. The internal timing is such that one full machine cycle will elapse between “Write-to-S0BUF” and activation of SEND. SEND enables the output of the shift register to the alternate output function line P3.0, and also enables SHIFT CLOCK to the alternate output function line P3.1. SHIFT CLOCK is low during S3, S4, and S5 of every machine cycle, and high during S6, S1, and S2, while the interface is transmitting. Before and after transmission SHIFT CLOCK remains high. At S6P2 of every machine cycle in which SEND is active, the contents of the transmit shift register is shifted one position to the right. As data bits shift out to the right, zeros come in from the left. When the MSB of the data byte is at the output position of the shift register, then the 1 that was initially loaded into the 9th position, is just left of the MSB, and all positions to the left of that contain zeros. This condition flags the TX control block to do one last shift and then deactivates SEND and sets TI0. Both of these actions occur at S1P1 in the 10th machine cycle after “Write-to-S0BUF”. Reception is initiated by the condition REN0 = 1 and RI0 = 0. At S6P2 in the next machine cycle, the RX control unit writes the bits 1111 1110 to the receive shift register, and in the next clock phase activates RECEIVE. RECEIVE enables SHIFT CLOCK to the alternate output function line of P3.1. SHIFT CLOCK makes transitions at S3P1 and S6P1 in every machine cycle. At S6P2 of every machine cycle in which RECEIVE is active, the contents of the receive shift register are shifted one position to the left. The value that comes in from the right is the value that was sampled at the P3.0 pin at S5P2 in the same machine cycle. As data bits come in from the right, 1 s shift out to the left. When the 0 that was initially loaded into the rightmost position arrives at the leftmost position in the shift register, it flags the RX control block to do one last shift and load S0BUF. At S1P1 in the 10th machine cycle after the write to S0CON that cleared RI0, RECEIVE is cleared and RI0 is set. Semiconductor Group 6-94 1997-10-01 On-Chip Peripheral Components C509-L Internal Bus 1 Write to S0BUF Q S & S0BUF D RXD0 P3.0 Alt. Output Function Q CLK Zero Detector Shift Start Shift TX Control S6 TX Clock Tl0 Serial Port Interrupt REN0 1 1 & TXD0 P3.1 Alt. Output Function Shift Clock & RI0 Send Rl0 Start Receive RX Control RX Clock 1 1 1 1 1 1 1 0 Shift Input Shift Register Shift Load S0BUF RXD0 P3.0 Alt. Input Function S0BUF Read S0BUF Internal Bus MCS01831 Figure 6-41 Functional Diagram - Serial Interface 0, Mode 0 Semiconductor Group 6-95 1997-10-01 Semiconductor Group 6-96 TXD0 (Shift Clock) RXD0 (Data In) S5P2 D0 Write to S0CON (Clear RI) D1 D1 D2 D2 D3 D3 D4 D4 D5 D5 D6 D6 D7 D7 MCT01832 Transmit Shift Receive RIO TIO TXD0 (Shift Clock) D0 S3P1 S6P1 Write to S0BUF S6P2 RXD0 (Data Out) Shift Send ALE SSSSSS SSSSSS SSSSSS SSSSSS SSSSSS SSSSSS SSSSSS SSSSSS SSSSSS SSSSSS 123456 123456 123456 123456 123456 123456 123456 123456 123456 123456 On-Chip Peripheral Components C509-L Receive Figure 6-42 Timing Diagram - Serial Interface 0, Mode 0 1997-10-01 On-Chip Peripheral Components C509-L 6.5.3.2 Mode 1/Mode B, 8-Bit UART (Serial Interfaces 0 and 1) Ten bits are transmitted (through TXD0 or TXD1), or received (through RXD0 or RXD1): a start bit (0), 8 data bits (LSB first), and a stop bit (1). On reception through RXD0, the stop bit goes into RB80 (S0CON), on reception through RXD1, RB81 (S1C0N) stores the stop bit. The baud rate for serial interface 0 is determined by the timer 1 overflow rate or by the internal baud rate generator of serial interface 0. Serial interface 1 receives the baud rate clock from its own baud rate generator. Figure 6-43a shows a simplified functional diagram of the both serial channels in mode 1 or mode B, respectively. The associated timing is illustrated in figure 2-44b. Transmission is initiated by any instruction that uses S0BUF/S1BUF as a destination register. The “write-to-S0BUF/S1BUF” signal also loads a 1 into the 9th bit position of the transmit shift register and flags the TX control block that a transmission is requested. Transmission actually commences at S1P1 of the machine cycle following the next roll-over in the divide-by-16 counter (thus, the bit times are synchronized to the divide-by-16 counter, not to the “write-to-S0BUF/S1BUF” signal). The transmission begins with activation of SEND, which puts the start bit to TXD0/TXD1. One bit time later, DATA is activated, which enables the output bit of the transmit shift register to TXD0/TXD1. The first shift pulse occurs one bit time after that. As data bits shift out to the right, zeros are clocked in from the left. When the MSB of the data byte is at the output position of the shift register, then the 1 that was initially loaded into the 9th position is just left of the MSB, and all positions to the left of that contain zero. This condition flags the TX control to do one last shift and then deactivate SEND and set TI0/Tl1. This occurs at the 10th divideby-16 rollover after “write-to-S0BUF/S1BUF”. Reception is initiated by a detected 1-to-0 transition at RXD0/RXD1. For this purpose RXD0/RXD1 is sampled at a rate of 16 times whatever baud rate has been established. When a reception is detected, the divide-by-16 counter is immediately reset, and 1FFH is written into the input shift register. The 16 states of the counter divide each bit time into 16 counter states. At the 7th, 8th and 9th counter state of each bit time, the bit detector samples the value of RXD0/RXD1. The value accepted is the value that was seen in at least 2 of the 3 samples. This is done for noise rejection. lf the value accepted during the first bit time is not 0, the receive circuits are reset and the unit goes back looking for another 1-to-0 transition. This is to provide rejection of false start bits. lf the start bit proves valid, it is shifted into the input shift register, and reception of the rest of the frame will proceed. As data bits come from the right, 1’s shift out to the left. When the start bit arrives at the leftmost position in the shift register (which in mode 1/B is a 9-bit register), it flags the RX control block to do one last shift. The signal to load S0BUF/S1BUF and RB80/RB81, and to set RI0/Rl1 will be generated if, and only if, the following conditions are met at the time the final shift pulse is generated: 1) 2) RI0/Rl1 = 0, and either SM20/SM21 = 0 or the received stop bit = 1 lf either of these two conditions is not met the received frame is irretrievably lost. lf both conditions are met, the stop bit goes into RB80/RB81, the 8 data bits go into S0BUF/S1BUF, and RI0/Rl1 is activated. At this time, no matter whether the above conditions are met or not, the unit goes back to looking for a 1-to-0 transition in RxD0/RxD1. Semiconductor Group 6-97 1997-10-01 On-Chip Peripheral Components C509-L Internal Bus 1 Write to SxBUF S Q & SxBUF <_ 1 TXDx D Q CLK Zero Detector Shift Start Data TX Control ÷ 16 TX Clock Baud Rate Clock Serial Port Interrupt Tlx Send Rlx Load SxBUF <_ 1 ÷ 16 Sample 1-to-0 Transition Detector RX Clock RX Control Start 1FF H Shift Bit Detector Input Shift Register (9Bits) RXDx Shift Load SxBUF Note: x means that 0 or 1 can be inserted for interface 0 or interface 1, resp. SxBUF Read SxBUF Internal Bus MCS01833 Figure 6-43 Functional Diagram - Serial Interfaces 0 and 1, Mode 1 / Mode B Semiconductor Group 6-98 1997-10-01 Semiconductor Group TI TXD Shift Data Send 6-99 D0 Start Bit ..-16 RESET Start Bit S1P1 D0 D1 D1 D2 D2 D3 D3 D4 D4 D5 D5 D6 D6 D7 D7 Stop Bit Stop Bit MCT01936 Transmit Note : x=0 for serial interface 0 and x=1 for serial interface 1. RI Shift Bit Detector Sample Times RXD RX Clock Write to SBUF TX Clock On-Chip Peripheral Components C509-L Receive Figure 6-44 Timing Diagram - Serial Interfaces 0 and 1, Mode 1 / Mode B 1997-10-01 On-Chip Peripheral Components C509-L 6.5.3.3 Mode 2, 9-Bit UART (Serial Interface 0) Mode 2 is functionally identical to mode 3 (see below). The only exception is, that in mode 2 the baud rate can be programmed to two fixed quantities: either 1/16 or 1/32 of the oscillator frequency. Note that serial interface 0 cannot achieve this baud rate in mode 3. Its baud rate clock is generated by timer 1, which is incremented by a rate of fOSC/6. The dedicated baud rate generator of serial interface 1 however is clocked by a fOSC signal and so its maximum baud rate is fOSC/16. 6.5.3.4 Mode 3 / Mode A, 9-Bit UART (Serial Interfaces 0 and 1) Eleven bits are transmitted (through TXD0/TXD1), or received (through RXD0/RXD1): a start bit (0), 8 data bits (LSB first), a programmable 9th data bit, and a stop bit (1). On transmission, the 9th data bit (TB80/TB81) can be assigned the value of 0 or 1. On reception the 9th data bit goes into RB80/RB81 in S0CON/S1CON. Mode 3 may have a variable baud rate generated from either timer 1 or 2 depending on the state of TCLK and RCLK in SFR T2CON. Figure 6-45a shows a simplified functional diagram of the both serial channels in mode 2 an 3 or mode A, respectively. The associated timing is illustrated in figure 6-46b. The receive portion is exactly the same as in mode 1. The transmit portion differs from mode 1 only in the 9th bit of the transmit shift register. Transmission is initiated by any instruction that uses S0BUF/S1BUF as a destination register. The “write to S0BUF/S1BUF” signal also loads TB80/TB81 into the 9th bit position of the transmit shift register and flags the TX control unit that a transmission is requested. Transmission commences at S1P1 of the machine cycle following the next rollover in the divide-by-16 counter (thus the bit times are synchronized to the divide-by-16 counter, and not to the “write-to-S0BUF/S1BUF” signal). The transmission begins with the activation of SEND, which puts the start bit to TXD0/TXD1. One bit time later, DATA is activated which enables the output bit of transmit shift register to TXD0/TXD1. The first shift pulse occurs one bit time after that. The first shift clocks a 1 (the stop bit) into the 9th bit position of the shift register. Thereafter, only zeros are clocked in. Thus, as data shift out to the right, zeros are clocked in from the left. When TB80/TB81 is at the output position of the shift register, then the stop bit is just left of the TB80/TB81, and all positions to the left of that contain zeros. This condition flags the TX control unit to do one last shift and then deactivate SEND and set TI0/TI1. This occurs at the 11th divide-by-16 rollover after “write-to-S0BUF/S1BUF”. Reception is initiated by a detected 1-to-0 transition at RXD0/RXD1. For this purpose RXD0/RXD1 is sampled of a rate of 16 times whatever baud rate has been established. When a transition is detected, the divide-by-16 counter is immediately reset, and 1FFH is written to the input shift register. At the 7th, 8th and 9th counter state of each bit time, the bit detector samples the value of RxD0/RxD1. The value accepted is the value that was seen in at least 2 of the 3 samples. lf the value accepted during the first bit time is not 0, the receive circuits are reset and the unit goes back to looking for another 1-to-0 transition. lf the start bit proves valid, it is shifted into the input shift register, and reception of the rest of the frame will proceed. As data bits come from the right, 1’s shift out to the left. When the start bit arrives at the leftmost position in the shift register (which is a 9-bit register), it flags the RX control block to do one last shift, load S0BUF/S1BUF and RB80/ RB81, and set RI0/RI1. The signal to load S0BUF/S1BUF and Semiconductor Group 6-100 1997-10-01 On-Chip Peripheral Components C509-L RB80/RB81, and to set RI0/RI1, will be generated if, and only if, the following conditions are met at the time the final shift pulse is generated: 1) RI0/RI1 = 0, and 2) either SM20/SM21 = 0 or the received 9th data bit = 1 lf either one of these two conditions is not met, the received frame is irretrievably lost, and RI0/Rl1 is not set. lf both conditions are met, the received 9th data bit goes into RB80/RB81, the first 8 data bits go into S0BUF/S1BUF. One bit time later, no matter whether the above conditions are met or not, the unit goes back to look for a 1-to-0 transition at the RXD0/RXD1 input. Note that the value of the received stop bit is irrelevant to S0BUF/S1BUF, RB80/RB81, or RI0/Rl1. Semiconductor Group 6-101 1997-10-01 On-Chip Peripheral Components C509-L Internal Bus TB8x Write to SxBUF S Q & SxBUF <_ 1 TXDx D Q CLK Zero Detector Shift Start Data TX Control ÷ 16 TX Clock Baud Rate Clock Serial Port Interrupt Tlx Send Rlx Load SxBUF <_ 1 ÷ 16 Sample 1-to-0 Transition Detector RX Clock RX Control Start 1FF H Shift Bit Detector Input Shift Register (9Bits) RXDx Shift Load SxBUF Note: x means that 0 or 1 can be inserted for interface 0 or interface 1, resp. SxBUF Read SxBUF Internal Bus MCS01834 Figure 6-45 Functional Diagram - Serial Interfaces 0 and 1, Modes 2 and 3 / Mode A Semiconductor Group 6-102 1997-10-01 Write to SxBUF Mode 2: S6P1 Mode 3: S1P1 Send S1P1 Data Transmit 6-103 Shift D0 Start Bit TXD D1 D2 D3 D4 D5 D6 D7 TB8 Stop Bit TI Stop Bit Gen. RX Clock RXDx Start Bit D0 D1 D2 D3 D4 D5 D6 D7 RB8 Stop Bit Bit Detector Sample Times Shift RIx 1997-10-01 MCT01836 Note : x=0 for serial interface 0 and x=1 for serial interface 1. On-Chip Peripheral Components C509-L -: 16- RESET Receive Figure 6-46 Timing Diagram - Serial Interfaces 0 and 1, Modes 2 and 3 / Mode A Semiconductor Group TX Clock On-Chip Peripheral Components C509-L 6.6 A/D Converter The C509-L includes a high performance / high speed 10-bit A/D-Converter (ADC) with 15 analog input channels. This A/D converter operates with a successive approximation technique and uses self calibration mechanisms for reduction and compensation of offset and linearity errors. The A/D converter provides the following features: – – – – – – – – 15 multiplexed input channels, which can also be used as digital inputs (port 7, port 8) 10-bit resolution Single or continuous conversion mode Internal or external start-of-conversion trigger capability Programmable conversion and sample clock Interrupt request generation after each conversion Using successive approximation conversion technique via a capacitor array Built-in hidden calibration of offset and linearity errors For the conversion, the method of successive approximation via capacitor array is used. The externally applied reference voltage range has to be held on a fixed value within the specifications. Figure 6-47 shows a block diagram of the A/D converter. There are four user-accessible special function registers, ADCON1/ADCON0 (A/D converter control registers) and ADDATH/ADDATL (A/D converter data registers). The analog input channels (port 7 and port 8) can also be used for digital input. For interrupt processing of the A/D converter, two bits are located in the special function registers IEN2 and IRCON0. 6.6.1 A/D Converter Operation An internal start of a single A/D conversion is triggered by a write-to-ADDATL instruction. The start procedure itself is independent of the value which is written to ADDATL. When single conversion mode is selected (bit ADM=0) only one A/D conversion is performed. In continuous mode (bit ADM=1), after completion of an A/D conversion a new A/D conversion is triggered automatically until bit ADM is reset. An externally controlled conversion can be achieved by setting the bit ADEX. In this mode one single A/D conversion is triggered by a 1-to-0 transition at pin P6.0/ADST (when ADM is 0). P6.0/ADST is sampled during S5P2 of every machine cycle. When the samples show a logic high in one cycle and a logic low in the next cycle the transition is detected and the A/D conversion is started. When ADM and ADEX is set, a continuous conversion is started when pin P6.0/ADST sees a low level. Only if no A/D conversion (single or continuous) has occurred after the last reset operation, a 1-to-0 transition is required at pin P6.0/ADST for starting the continuous conversion mode externally. The continuous A/D conversion is stopped when the pin P6.0/ADST goes back to high level. The last running A/D conversion during P6.0/ADST low level will be completed. The busy flag BSY (ADCON0.4) is automatically set when an A/D conversion is in progress. After completion of the conversion it is reset by hardware. This flag can be read only, a write has no effect. The interrupt request flag IADC (IRCON0.0) is set when an A/D conversion is completed. Semiconductor Group 6-104 1997-10-01 On-Chip Peripheral Components C509-L Figure 6-47 Block Diagram of the A/D Converter Semiconductor Group 6-105 1997-10-01 On-Chip Peripheral Components C509-L The bits MX0 to MX2 in special function register ADCON0 and the bits MX0 to MX3 in ADCON1 are used for selection of the analog input channel. The bits MX0 to MX2 are represented in both registers ADCON0 and ADCON1; however, these bits are present only once. lf all 15 multiplexed input channels are required register ADCON1 has to be used for channel selection. lt contains the four-bit field MX0-3 to select one of the 15 input channels, the eight inputs at port 7 and the seven inputs at port 8. Thus, there are two methods of selecting a channel of port 7 and it does not matter which is used: If a new channel is selected in ADCON1 the change is automatically done in the corresponding bits MX0 to MX2 in ADCON0 and vice versa. lf bit MX3 is set, the additional analog inputs at port 8 are used. MX0-2 then determine which channel of port 8 is being selected. Ports P7 and P8 are dual purpose input ports. lf the input voltage meets the specified logic levels, they can be also used as digital inputs regardless of whether the pin levels are sampled by the A/D converter at the same time. The special function register ADDATH and ADDATL hold the converted digital 10-bit data result. The data remains in ADDAT until it is overwritten by the next converted data. ADDAT can be read or written under software control. lf the A/D converter of the C509-L is not used, register ADDATH can be used as an additional general purpose register. Semiconductor Group 6-106 1997-10-01 On-Chip Peripheral Components C509-L 6.6.2 A/D Converter Registers This section describes the bits/functions of all registers which are used by the A/D converter. Special Function Registers ADDATH (Address D9H) Special Function Registers ADDATL (Address DAH) Bit No. MSB 7 MSB D9H .9 DAH .1 Reset Value : 00H Reset Value : 00H 6 5 4 3 2 1 LSB 0 .8 .7 .6 .5 .4 .3 .2 ADDATH LSB .0 – – – – – – ADDATL The registers ADDATH and ADDATL contain the 10-bit conversion result in left justified data format. The most significant bit of the 10-bit conversion result is bit 7 of ADDATH. The least significant bit of the 10-bit conversion result is bit 6 of ADDATL. To get a 10-bit conversion result, both ADDAT register must be read. If an 8-bit conversion result is required, only the reading of ADDATH is necessary. The data remains in ADDAT until it is overwritten by the next converted data. ADDAT can be read or written under software control. lf the A/D converter of the C509-L is not used, register ADDATH can be used as an additional general purpose register. Semiconductor Group 6-107 1997-10-01 On-Chip Peripheral Components C509-L Special Function Registers ADCON0 (Address D8H) Special Function Registers ADCON1 (Address DCH) Bit No. MSB 7 D8H DCH BD Reset Value : 00H Reset Value : 01000000B LSB 0 6 5 4 3 2 1 CLK ADEX BSY ADM MX2 MX1 MX0 ADCON0 MX3 MX2 MX1 MX0 ADCON1 ADCL1 ADCL0 ADST1 ADST0 The shaded bits are not used for A/D converter control. Bit Function ADEX Internal / external start of A/D conversion When set, the external start of an A/D conversion at pin P6.0/ADST is enabled. BSY Busy flag This flag indicates whether a conversion is in progress (BSY = 1). The flag is cleared by hardware when the conversion is finished. ADM A/D conversion mode When set, a continuous A/D conversion is selected. If cleared during a running A/D conversion, the conversion is stopped at its end. MX3 - MX0 A/D converter input channel select bits Bits MX3-0 can be written or read either in ADCON0 or ADCON1. When writing to ADCON1, the ADCON0 bits MX2-0 are overwritten. Writing ADCON0, only MX2-0 are affected. The analog inputs are selected according the following table: MX3 MX2 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 Semiconductor Group MX1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 MX0 Selected Analog Input 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 P7.0 / AN0 P7.1 / AN1 P7.2 / AN2 P7.3 / AN3 P7.2 / AN4 P7.3 / AN5 P7.4 / AN6 P7.5 / AN7 P8.0 / AN8 P8.1 / AN9 P8.2 / AN10 P8.3 / AN11 P8.4 / AN12 P8.5 / AN13 P8.6 / AN14 6-108 1997-10-01 On-Chip Peripheral Components C509-L Bit Function ADCL1 ADCL0 A/D conversion clock prescaler selection ADCL1 and ADCL0 select the prescaler ratio for the A/D conversion clock fADC. Depending on the clock rate fOSC of the C509-L. fADC must be selected by the two prescaler bits ADCL1 and ADCL0 in a way that the resulting frequency of the conversion clock fADC is less or equal 2 MHz. The prescaler ratio is selected according the following table: ADST1 ADST0 ADCL1 ADCL0 0 0 1 1 0 1 0 1 f ADC Prescaler Ratio divide by 4 divide by 8 (default after reset) divide by 16 divide by 32 A/D sample clock prescaler selection ADST1 and ADST0 select the prescaler ratio for the sample clock fSC. The prescaler ratio is selected according the following table: ADST1 ADST0 0 0 1 1 0 1 0 1 f SC Prescaler Ratio divide by 2 (default after reset) divide by 8 divide by 16 divide by 32 Note :Generally, before entering the power-down mode, an A/D conversion in progress must be stopped. If a single A/D conversion is running, it must be terminated by polling the BSY bit or waiting for the A/D conversion interrupt. In continuous conversion mode, bit ADM must be cleared and the last A/D conversion must be terminated before entering the power-down mode. A single A/D conversion is started by writing to SFR ADDATL with dummy data. A continuous conversion is started under the following conditions: – By setting bit ADM during a running single A/D conversion – By setting bit ADM when at least one A/D conversion has occurred after the last reset operation. – By writing ADDATL with dummy data after bit ADM has been set before (if no A/D conversion has occurred after the last reset operation). When bit ADM is reset by software in continuous conversion mode, the just running A/D conversion is stopped after its end. Semiconductor Group 6-109 1997-10-01 On-Chip Peripheral Components C509-L The A/D converter interrupt is controlled by bits which are located in the SFRs IEN1 and IRCON. Special Function Register IEN1 (Address B8H) Special Function Register IRCON0 (Address C0H) Bit No. B8H MSB BFH EXEN2 SWDT C7H C0H BEH EXF2 C6H TF2 BDH EX6 C5H IEX6 BCH EX5 EX4 C4H IEX5 BBH C3H IEX4 Reset Value : 00H Reset Value : 00H BAH B9H LSB B8H EX3 EX2 EADC C2H C1H C0H IEX3 IEX2 IADC IEN1 IRCON0 The shaded bits are not used for A/D converter control. Bit Function EADC Enable A/D converter interrupt If EADC = 0, the A/D converter interrupt is disabled IADC A/D converter interrupt request flag Set by hardware at the end of an A/D conversion. Must be cleared by software. Semiconductor Group 6-110 1997-10-01 On-Chip Peripheral Components C509-L 6.6.3 A/D Converter Clock Selection The ADC uses basically three clock signals for operation: the input clock fIN (=1/tIN), the conversion clock fADC (=1/tADC) and the sample clock fSC (=1/tSC). All clock signals are derived from the C509-L system clock fOSC which is applied at the XTAL pins. The input clock fIN is equal to fOSC while the conversion clock and the sample clock must be adapted. The conversion clock is limited to a maximum frequency of 2 MHz. Therefore, the conversion clock prescaler must be programmed to a value which assures that the conversion clock does not exceed 2 MHz. The prescaler ratio of the conversion clock is selected by the bits ADCL1 and ADCL0 of SFR ADCON1. The sample clock fSC can be adapted to the requirements of the impedance of A/D converter input signal sources. The prescaler ratio of the sample clock is selected by the bits ADST1 and ADST0 of SFR ADCON1. Figure 6-48 shows the configuration of the two A/D converter prescalers. The table in figure 6-48 defines the divider ratio for the conversion and sample clock of each combination of the prescaler bits. Conversion Clock fADC Sample Clock fSC ADCL1 ADCL0 fADC ADST1 ADST0 0 0 ADST1 ADST0 0 1 ADST1 ADST0 1 0 ADST1 ADST0 1 1 0 0 fIN / 4 fIN / 8 fIN / 16 fIN / 32 fIN / 64 0 1 fIN / 8 fIN / 16 fIN / 32 fIN / 64 fIN / 128 1 0 fIN / 16 fIN / 32 fIN / 64 fIN / 128 fIN / 256 1 1 fIN / 32 fIN / 64 fIN / 128 fIN / 256 fIN / 512 Figure 6-48 A/D Converter Clock Selection The duration of an A/D conversion is a multiple of the period of the fIN clock signal. The timing of the A/D conversion and the calculation of an A/D conversion time are shown in the next section. Semiconductor Group 6-111 1997-10-01 On-Chip Peripheral Components C509-L 6.6.4 A/D Conversion Timing An A/D conversion is internally started by writing into the SFR ADDATL with dummy data. A write to SFR ADDATL will start a new conversion even if a conversion is currently in progress. The conversion begins with the next machine cycle, and the BSY flag in SFR ADCON0 will be set. Basically, the A/D conversion procedure is divided into three parts: – Sample phase (tS), used for sampling the analog input voltage. – Conversion phase (tCO), used for the real A/D conversion.(includes calibration) – Write result phase (tWR), used for writing the conversion result into the ADDAT registers. The total A/D conversion time is defined by tADCC which is the sum of the two phase times tS and tCO. The duration of the three phases of an A/D conversion is specified by its specific timing parameter as shown in figure 6-49. Conversion Clock Prescaler Sample Clock Prescaler Sample Time Conversion Time ADST1 ADST0 tS tCO ConversionTime tADCC CPU Cycles Tim. Ref ADCL1 ADCL0 0 0 0 0 1 1 0 1 0 1 8 x tIN 16 x tIN 32 x tIN 64 x tIN 40 x tIN 48 x tIN 56 x tIN 72 x tIN 104 x tIN 8 9 12 17 a) b) a) b) 0 1 0 0 1 1 0 1 0 1 16 x tIN 32 x tIN 64 x tIN 128 x tIN 80 x tIN 96 x tIN 112 x tIN 144 x tIN 208 x tIN 16 18 24 34 a) c) a) c) 1 0 0 0 1 1 0 1 0 1 32 x tIN 64 x tIN 128 x tIN 256 x tIN 160 x tIN 192 x tIN 224 x tIN 288 x tIN 416 x tIN 32 37 48 69 a) b) a) b) 1 1 0 0 1 1 0 1 0 1 64 x tIN 128 x tIN 256 x tIN 512 x tIN 320 x tIN 384 x tIN 448 x tIN 576 x tIN 832 x tIN 64 74 96 138 a) c) a) c) n Figure 6-49 A/D Conversion Timing Semiconductor Group 6-112 1997-10-01 On-Chip Peripheral Components C509-L Sample Time tS : During this time the internal capacitor array is connected to the selected analog input channel and is loaded with the analog voltage to be converted. The external analog source needs to be strong enough to source the current to load the analog input capacitance during the load time. This causes some restrictions for the impedance of the analog source. The analog voltage is internally fed to a voltage comparator. With beginning of the sample phase the BSY bit in SFR ADCON0 is set. Conversion Time tCO : During the conversion time the analog voltage is converted into a 10-bit digital value using the successive approximation technique with a binary weighted capacitor network. During a conversion alternating offset and linearity calibration cycles are executed (see also section 6.6.6). At the end of the conversion phase the BSY bit is reset and the IADC bit in SFR ADCON0 is set indicating a A/D converter interrupt condition. Write Result Time tWR : At the result phase the conversion result is written into the ADDATH/ADDATL registers. Figure 6-50 shows how an A/D conversion is embedded into the microcontroller cycle scheme using the relation 6 x t IN = 1 instruction cycle. It also shows the behaviour of the busy flag (BSY) and the interrupt flag (IADC) during an A/D conversion. Depending on the selected prescaler ratios (see figure 6-48), 3 different relationships between machine cycles and A/D conversion are possible. These 3 relationships are referenced in the rightmost column of the table in figure 6-49 as a), b), and c). The single A/D conversion is started when SFR ADDATL is written with dummy data. This write operation may take one or two machine cycles. In figure 6-50, the instruction MOV ADDATL,#0 starts the A/D conversion (machine cycle X-1 and X). The total A/D conversion (sample, conversion, and calibration phase) is finished after the end of the n-th machine cycle. In the next machine cycle n+1 the conversion result is written into the ADDAT registers and can be read in the same cycle by an instruction (e.g. MOV A,ADDATL). If continuous conversion is selected (bit ADM set), the next conversion is started with the beginning of the machine cycle which follows the writre result cycle. The BSY bit is set at the beginning of the first A/D conversion machine cycle and reset at the beginning of the write result cycle. If continuous conversion is selected, BSY is again set with the beginning of the machine cycle which follows the write result cycle (n+1). The interrupt flag IADC is set at the end of the A/D conversion. If the A/D converter interrupt is enabled and the A/D converter interrupt is priorized to be serviced immediately, the first instruction of the interrupt service routine will be executed in machine cycle n+4 or n+5. IADC must be reset by software. Semiconductor Group 6-113 1997-10-01 On-Chip Peripheral Components C509-L Figure 6-50 A/D Conversion Timing in Relation to Processor Cycles Semiconductor Group 6-114 1997-10-01 On-Chip Peripheral Components C509-L Depending on the application, typically there are three software methods to handle the A/D conversion in the C509-L. – Software delay The machine cycles of the A/D conversion are counted and the program executes a software delay (e.g. NOPs) before reading the A/D conversion result in the write result cycle. This is the fastest method to get the result of an A/D conversion. – Polling BSY bit The BSY bit is polled and the program waits until BSY=0. Attention : a polling JB instruction which is two machine cycles long, possibly may not recognize the BSY=0 condition during the write result cycle in the continuous conversion mode. – A/D conversion interrupt After the start of an A/D conversion the A/D converter interrupt is enabled. The result of the A/D conversion is read in the interrupt service routine. If other SAB-C509 interrupts are enabled, the interrupt latency must be regarded. Therefore, this software method is the slowest method to get the result of an A/D conversion. Depending on the oscillator frequency of the C509-L and the selected divider ratios of the A/D converter prescalers the total time of an A/D conversion is calculated according to table 6-13. The minimum conversion time is 6 µs. Table 6-13 A/D Conversion Times Conversion Clock Sample Clock Prescaler Prescaler ADCL1 ADCL0 ADST1 ADST0 Processor Clock Rate 3.5 MHz 8 MHz 12 MHz 16 MHz fADC tADCC fADC tADCC fADC tADCC fADC tADCC [MHz] [µs] [MHz] [µs] [MHz] [µs] [MHz] [µs] 0 0 0 0 1 1 0 1 0 1 0.875 13.7 16 20.6 29.7 2 6 7 9 13 3 4 4.7 6 8.7 4 3 3.5 4.5 6.5 0 1 0 0 1 1 0 1 0 1 0.438 27.4 32 41.1 59.4 1 12 14 18 26 1.5 8 9.3 12 17.3 2 6 7 9 13 1 0 0 0 1 1 0 1 0 1 0.219 54.9 0.5 64 82.3 118.9 24 28 36 52 0.75 16 18.7 24 34.7 1 12 14 18 26 1 1 0 0 1 1 0 1 0 1 0.109 109.7 0.25 128 164.6 237.7 48 56 72 104 0.375 32 37.3 48 69.3 0.5 24 28 36 52 Note : The shaded prescaler/frequency combinations must not be used. Reason : fADC > 2 MHz. Semiconductor Group 6-115 1997-10-01 On-Chip Peripheral Components C509-L 6.6.5 Adjustment of the Sample Time As already discussed, the maximum input clock fADC for the A/D converter is 2 MHz. This must be taken into account when programming the A/D converter input clock prescalers. Additionally, the C509-L allows to adapt the sample phase of an A/D conversion to the impedance of an analog input source. This chapter gives some hints how an optimal adaption of the sample phase is achieved. At the end of an A/D conversion (single conversion mode) the internal capacitor array is internally precharged to a voltage level between VAGND and V AREF (approx. 2-3 V). When an A/D conversion of an analog voltage U0 is started, the voltage level at the analog input pin drops (or raises) shortly to the precharge voltage level UP and then raises (or drops) back to U0 with a typical RC load curve (see figure 6-51). Figure 6-51 Typical Wavefoms at the Analog Inputs During the Sample Phase The characteristics of the RC load curves as shown in figure 6-51 a) and b) is determined by the input capacitance CIN of the analog input pin, by the impedance R of the driving analog source, and by the voltage difference between U0 and UP. The external analog source needs to be strong enough (low impedance) to source the current for loading the analog input capacitance. Depending on the accuracy or error requirements of an A/D conversion, the limits for the input impedance of the analog source can be calculated using the following formula : u(t) R MAX = - t S / (CIN • In (error) ) with error = 1 U0 tS : sample time CIN : analog input capacitance (typically 50 pF) error : allowed deviation of UIN from U0 at the end of the sample time, given in % Table 6-14 shows the resulting maximum values for R MAX at f OSC = 16 MHz and a maximum error of 0.1% (1 or 2 LSB error allowed, additional to the specified total unadjusted error). Semiconductor Group 6-116 1997-10-01 On-Chip Peripheral Components C509-L Table 6-14 Limit Values for the impedance of the Analog Source at fOSC = 16 MHz (CIN = 50pF) Conversion Clock Prescaler ADCL1 ADCL0 Sample Clock Prescaler ADST1 Sample Time (16 MHz) t S [µs] ADST0 Impedance RMAX [kΩ] at 16MHz Error 1 LSB 2 LSB 0 0 0 0 1 1 0 1 0 1 0.5 1 2 4 – – – – – – – – 0 1 0 0 1 1 0 1 0 1 1 2 4 8 2.9 5.8 11.6 23.1 3.2 6.4 12.9 25.7 1 0 0 0 1 1 0 1 0 1 2 4 8 16 5.8 11.6 23.1 46.3 6.4 12.9 25.7 51.5 1 1 0 0 1 1 0 1 0 1 4 8 16 32 11.6 23.1 46.3 92.6 12.9 25.7 51.5 103 Note : The shaded prescaler combination can only be used up to fOSC = 8 MHz. Reason : fADC > 2 MHz for fOSC > 8 MHz. The values in table 6-14 are just calculated values and are no assured limit characteristics. System environment and application dependencies must be taken into account, too. Semiconductor Group 6-117 1997-10-01 On-Chip Peripheral Components C509-L 6.6.6 A/D Converter Calibration The C509-L A/D converter includes hidden internal calibration mechanisms which assure a save functionality of the A/D converter according to the DC characteristics. The A/D converter calibration is implemented in a way that a user program which executes A/D conversions is not affected by its operation. Further, the user program has no control on the calibration mechanism. The calibration itself executes two basic functions : – Offset calibration – Linearity calibration : compensation of the offset error of the internal comparator : correction of the binary weighted capacitor network The A/D converter calibration operates in two phases : calibration after a reset operation and calibration at each A/D conversion. The calibration phases are controlled by a state machine in the A/D converter. This state machine executes the calibration phases and stores the calibration results dynamically in a small calibration RAM After a reset operation the A/D calibration is automatically started. This reset calibration phase which takes 3328 fADC clocks, alternating offset and linearity calibration is executed. Therefore, at 12 MHz oscillator frequency and with the default after reset prescaler value of 8, a reset calibration time of approx. 2.2 ms is reached. For achieving a proper reset calibration, the fADC prescaler value must satisfy the condition fADC max ≤ 2 MHz. After the reset calibration phase the A/D converter is calibrated according to its DC characteristics. Nevertheless, during the reset calibration phase single or continuous A/D can be executed. In this case it must be regarded that the reset calibration is interrupted and continued after the end of the A/D conversion. Therefore, interrupting the reset calibration phase by A/D conversions extends the total reset calibration time. If the specified total unadjusted error (TUE) has to be valid for an A/D conversion, it is recommended to start the first A/D conversions after reset when the reset calibration phase is finished. Depending on the oscillator frequency used, the reset calibration phase can be possibly shortened by setting ADCL1 and ADCL0 (prescaler value) to its final value immediately after reset. After the reset calibration, a second calibration mechanism is initiated. This calibration is coupled to each A/D conversion. With this second calibration mechanism alternatively offset and linearity calibration values, stored in the calibration RAM, are always checked when an A/D conversion is executed and corrected if required. Semiconductor Group 6-118 1997-10-01 Interrupt System C509-L 7 Interrupt System The C509-L provides 19 interrupt sources with four priority levels. 12 interrupts can be generated by the on-chip peripherals and 7 interrupts may be triggered externally. The interrupt structure of the C509-L has been mainly adapted from the SAB 80C517A microcontroller. Thus, each interrupt source has its dedicated interrupt vector and can be enabled/ disabled individually. There are also four priority levels available. In the C509-L the 19 interrupt sources are combined to six groups of three or four interrupt sources. Each interrupt group can be programmed to one of the four interrupt priority levels. 7.1 Structure of the Interrupt System Figure 7-1 to 7-4 give a general overview of the interrupt sources and illustrate the request and control flags described in the next sections. Semiconductor Group 7-1 1997-10-01 Interrupt System C509-L Figure 7-1 Interrupt Structure, Overview Part 1 Semiconductor Group 7-2 1997-10-01 Interrupt System C509-L Figure 7-2 : Interrupt Structure, Overview Part 2 Semiconductor Group 7-3 1997-10-01 Interrupt System C509-L Figure 7-3 : Interrupt Structure, Overview Part 3 Semiconductor Group 7-4 1997-10-01 Interrupt System C509-L Figure 7-4 : Interrupt Structure, Overview Part 4 Semiconductor Group 7-5 1997-10-01 Interrupt System C509-L 7.2 Interrupt Registers 7.2.1 Interrupt Enable Registers Each interrupt vector can be individually enabled or disabled by setting or clearing the corresponding bit in the interrupt enable registers IEN0, IEN1, IEN2. and IEN3. Register IEN0 also contains the global disable bit (EAL), which can be cleared to disable all interrupts at once. Some interrupts sources have further enable bits (e.g. EXEN2). Such interrupt enable bits are controlled by specific bits in the SFRs of the corresponding peripheral units (described in chapter 6). This section describes the locations and meanings of these interrupt enable bits in detail. After reset the enable bits of the interrupt enable registers IEN0 to IEN3 are set to 0. That means that the corresponding interrupts are disabled. The SFR IEN0 includes the enable bits for the external interrupts 0 and 1, the timer 0,1, and 2 interrupts, the serial interface 0 interrupt, and the general interrupt enable control bit EAL. Special Function Register IEN0 (Address A8H) Bit No. MSB AFH A8H EAL AEH WDT ADH ET2 ACH ES0 Reset Value : 00H ABH ET1 AAH A9H LSB A8H EX1 ET0 EX0 IEN0 The shaded bit is not used for interrupt control Bit Function EAL Enable/disable all interrupts. If EA=0, no interrupt will be acknowledged. If EA=1, each interrupt source is individually enabled or disabled by setting or clearing its enable bit. ET2 Timer 2 interrupt enable. If ET2 = 0, the timer 2 interrupt is disabled. ES0 Serial channel 0 interrupt enable If ES0 = 0, the serial channel interrupt 0 is disabled. ET1 Timer 1 overflow interrupt enable. If ET1 = 0, the timer 1 interrupt is disabled. EX1 External interrupt 1 enable. If EX1 = 0, the external interrupt 1 is disabled. ET0 Timer 0 overflow interrupt enable. If ET0 = 0, the timer 0 interrupt is disabled. EX0 External interrupt 0 enable. If EX0 = 0, the external interrupt 0 is disabled. Semiconductor Group 7-6 1997-10-01 Interrupt System C509-L The SFR IEN1 includes the enable bits for the external interrupts 2 to 6, for the AD converter interrupt, and for the timer 2 external reload interrupt. Special Function Register IEN1 (Address B8H) Bit No. B8H MSB BFH BEH EXEN2 SWDT BDH EX6 BCH EX5 Reset Value : 00H BBH EX4 BAH B9H LSB B8H EX3 EX2 EADC IEN1 The shaded bit is not used for interrupt control Bit Function EXEN2 Timer 2 external reload interrupt enable If EXEN2 = 0, the timer 2 external reload interrupt is disabled. The external reload function is not affected by EXEN2. EX6 External interrupt 6 / capture/compare interrupt 3 enable If EX6 = 0, external interrupt 6 is disabled. EX5 External interrupt 5 / capture/compare interrupt 2 enable If EX5 = 0, external interrupt 5 is disabled. EX4 External interrupt 4 / capture/compare interrupt 1 enable If EX4 = 0, external interrupt 4 is disabled. EX3 External interrupt 3 / capture/compare interrupt 0 enable If EX3 = 0, external interrupt 3 is disabled. EX2 External interrupt 2 / capture/compare interrupt 4 enable If EX2 = 0, external interrupt 2 is disabled. EADC Timer 2 external reload interrupt enable If EADC = 0, the A/D converter interrupt is disabled Semiconductor Group 7-7 1997-10-01 Interrupt System C509-L The SFR IEN2 includes the enable bits for the compare match with compare register interrupts, the compare timer overflow interrupt, and the serial interface 1 interrupt. Special Function Register IEN2 (Address 9AH) Bit No. 9AH Reset Value : XX0000X0B MSB 7 6 5 4 3 2 1 LSB 0 – – ECR ECS ECT ECMP – ES1 Bit Function – Reserved bits for future use. ECR COMCLR register compare match interrupt enable If ECR = 0, the COMCLR compare match interrupt is disabled. ECS COMSET register compare match interrupt enable If ECS = 0, the COMSET compare match interrupt is disabled. ECT Enable compare timer interrupt enable If ECT = 0, the compare timer overflow interrupt is disabled. ECMP CM0-7 register compare match interrupt enable If ECMP = 0, the CM0-7 compare match interrupt is disabled. ES1 Serial Interface 1 interrupt enable if ES1 = 0, the serial interrupt 1 is disabled. Semiconductor Group 7-8 IEN2 1997-10-01 Interrupt System C509-L The SFR IEN3 includes the enable bits for the compare timer 1 overflow interrupt and the general capture/compare interrupt of the compare timer 1. compare match with compare register interrupts, the compare, and the serial interface 1 interrupt. Special Function Register IEN3 (Address BEH) Bit No. BEH Reset Value : XXXX00XXB MSB 7 6 5 4 3 2 1 LSB 0 – – – – ECT1 ECC1 – – IEN3 Bit Function – Reserved bits for future use. ECT1 Compare timer 1 overflow interrupt enable If ECT1 = 0, the interrupt at compare timer 1 overflow is disabled. ECC1 Compare timer 1, general capture/compare interrupt enable This bit enables the interrupt on an capture/compare event in the capture/compare registers CC10 - CC17. Additionally, the SFR EICC1 must be programmed to enable the interrupt request. With ECC1=0, the general capture/compare timer 1 interrupt is disabled. The SFR EICC1 includes the enable bits for the specific capture/compare interrupt of the compare timer 1. Special Function Register EICC1 (Mapped Address BFH) Bit No. BFH MSB 7 6 5 4 3 2 Reset Value : FFH 1 LSB 0 EICC17 EICC16 EICC15 EICC14 EICC13 EICC12 EICC11 EICC10 EICC1 Bit Function EICC17 EICC10 Compare timer 1, specific capture/compare interrupt enable This bit enables the interrupt on an capture/compare event in the capture/compare registers CC10 - CC17. When EICC1x=0, the interrupt request flag ICC1x has no effect on the interrupt unit. EICC17 refers to CC17 etc. EICC1 is mapped to the SFR IRCON2. It is selected by a double instruction sequence with PDIR set. Semiconductor Group 7-9 1997-10-01 Interrupt System C509-L 7.2.2 Interrupt Priority Registers The 19 interrupt sources of the C509-L are combined to six interrupt groups (see table 7-1). Each of the six interrupt groups can be programmed to one of four priority levels by setting or clearing a bit in the IP0 and IP1 priority registers. Further details about the interrupt priority structure are given in chapter 7.3. Special Function Register IP0 (Address A9H) Special Function Register IP1 (Address B9H) Bit No. A9H B9H MSB 7 5 4 3 2 1 LSB 0 IP0.5 IP0.4 IP0.3 IP0.2 IP0.1 IP0.0 6 OWDS WDTS Reset Value : 00H Reset Value : 0X000000B 7 6 5 4 3 2 1 0 PDIR – IP1.5 IP1.4 IP1.3 IP1.2 IP1.1 IP1.0 IP0 IP1 The shaded bits are not used for interrupt purposes. Bit Function IP1.x IP1.x Interrupt Priority level bits (x=0-5) Semiconductor Group IP1.x IP0.x Function 0 0 Interrupt group x is set to priority level 0 (lowest) 0 1 Interrupt group x is set to priority level 1 1 0 Interrupt group x is set to priority level 2 1 1 Interrupt group x is set to priority level 3 (highest) 7-10 1997-10-01 Interrupt System C509-L 7.2.3 Interrupt Request Flags The request flags for the different interrupt sources are located in several special function registers. This section describes the locations and meanings of these interrupt request flags in detail. The external interrupts 0 and 1 (P3.2/INT0 and P3.3/INT1) can each be either level-activated or negative transition-activated, depending on bits IT0 and IT1 in SFR TCON. The flags that actually generate these interrupts are bits IE0 and lE1 in SFR TCON. When an external interrupt is generated, the flag that generated this interrupt is cleared by the hardware when the service routine is vectored to, but only if the interrupt was transition-activated. lf the interrupt was level-activated, then the requesting external source directly controls the request flag, rather than the on-chip hardware. The timer 0 and timer 1 interrupts are generated by TF0 and TF1 in register TCON, which are set by a rollover in their respective timer/counter registers (exception is timer 0 in mode 3). When a timer interrupt is generated, the flag that generated it is cleared by the on-chip hardware when the service routine is vectored to. Special Function Register TCON (Address 88H) Bit No. 88H MSB 8FH TF1 8EH TR1 8DH TF0 8CH TR0 Reset Value : 00H 8BH IE1 8AH 89H LSB 88H IT1 IE0 IT0 TCON The shaded bits are not used for interrupt purposes. Bit Function TF1 Timer 1 overflow flag Set by hardware on timer/counter 1 overflow. Cleared by hardware when processor vectors to interrupt routine. TF0 Timer 0 overflow flag Set by hardware on timer/counter 0 overflow. Cleared by hardware when processor vectors to interrupt routine. IE1 External interrupt 1 request flag Set by hardware. Cleared by hardware when processor vectors to interrupt routine (if IT1 = 1) or by hardware (if IT1 = 0). IT1 External interrupt 1 level/edge trigger control flag If IT1 = 0, level triggered external interrupt 1 is selected. If IT1 = 1, negative edge triggered external interrupt 1 is selected. IE0 External interrupt 0 request flag Set by hardware. Cleared by hardware when processor vectors to interrupt routine (if IT0 = 1) or by hardware (if IT0 = 0). IT0 External interrupt 0 level/edge trigger control flag If IT0 = 0, level triggered external interrupt 0 is selected. If IT0 = 1, negative edge triggered external interrupt 0 is selected. Semiconductor Group 7-11 1997-10-01 Interrupt System C509-L The interrupt of the serial interface 0 is generated by the request flags RI0 and TI0 in SFR S0CON. The two request flags of the serial interface are logically OR-ed together. Neither of these flags is cleared by hardware when the service routine is vectored to. In fact, the service routine of each interface will normally have to determine whether it was the receive interrupt flag or the transmission interrupt flag that generated the interrupt, and the bit will have to be cleared by software. The interrupt of the serial interface 1 is generated by the request flags RI1 and TI1 in SFR S1CON. The two request flags of the serial interface are logically OR-ed together. Neither of these flags is cleared by hardware when the service routine is vectored to. In fact, the service routine of each interface will normally have to determine whether it was the receive interrupt flag or the transmission interrupt flag that generated the interrupt, and the bit will have to be cleared by software. Special Function Register S0CON (Address 98H) Special Function Register S1CON (Address 9BH) Reset Value : 00H Reset Value : 01000000B Bit No. MSB 9FH 9EH 9DH 9CH 9BH 9AH 99H LSB 98H 98H SM0 SM10 SM20 REN0 TB80 RB80 TI0 RI0 7 6 5 4 3 2 1 0 SM S1P SM21 REN1 TB81 RB81 TI1 RI1 9BH S0CON S1CON The shaded bits are not used for interrupt purposes. Bit Function TI0 Serial interface 0 transmitter interrupt flag Set by hardware at the end of a serial data transmission. Must be cleared by software. RI0 Serial interface 0 receiver interrupt flag Set by hardware if a serial data byte has been received. Must be cleared by software. TI1 Serial interface 1 transmitter interrupt flag Set by hardware at the end of a serial data transmission. Must be cleared by software. RI1 Serial interface 1 receiver interrupt flag Set by hardware if a serial data byte has been received. Must be cleared by software. Semiconductor Group 7-12 1997-10-01 Interrupt System C509-L The external interrupt 2 (INT2/CC4) can be either positive or negative transition-activated depending on bit I2FR in register T2CON. The flag that actually generates this interrupt is bit IEX2 in register IRCON. In addition, this flag will be set if a compare event occurs at the corresponding output pin P1.4/INT2/CC4, regardless of the compare mode established and the transition at the respective pin. lf an interrupt 2 is generated, flag IEX2 is cleared by hardware when the service routine is vectored to. Like the external interrupt 2, the external interrupt 3 can be either positive or negative transitionactivated, depending on bit I3FR in register T2CON. The flag that actually generates this interrupt is bit IEX3 in register IRCON0. In addition, this flag will be set if a compare event occurs at pin P1.0/INT3/CC0, regardless of the compare mode established and the transition at the respective pin. The flag IEX3 is cleared by hardware when the service routine is vectored to. The external interrupts 4 (INT4), 5 (INT5), 6 (INT6) are positive transition-activated. The flags that actually generate these interrupts are bits IEX4, IEX5, and IEX6 in register IRCON0. In addition, these flags will be set if a compare event occurs at the corresponding output pin P1.1/INT4/CC1, P1.2/INT5/CC2, and P1.3/INT6/CC3, regardless of the compare mode established and the transition at the respective pin. When an interrupt is generated, the flag that generated it is cleared by the on-chip hardware when the service routine is vectored to. The timer 2 interrupt is generated by the logical OR of bit TF2 in SFR T2CON and bit EXF2 in SFR IRCON0. Neither of these flags is cleared by hardware when the service routine is vectored to. In fact, the service routine may have to determine whether it was TF2 or EXF2 that generated the interrupt, and the bit will have to be cleared by software. The A/D converter interrupt is generated by IADC in register IRCON0. lt is set some cycles before the result is available. That is, if an interrupt is generated, in any case the converted result in ADDAT is valid on the first instruction of the interrupt service routine (with respect to the minimal interrupt response time). lf continuous conversions are established, IADC is set once during each conversion. lf an A/D converter interrupt is generated, flag IADC must be cleared by software. Special Function Register T2CON (Address C8H) Bit No. MSB CFH C8H T2PS CEH I3FR CDH I2FR CCH T2R1 Reset Value : 00H CBH T2R0 CAH C9H T2CM T2I1 LSB C8H T1I0 T2CON The shaded bits are not used for interrupt purposes. Bit Function I3FR External interrupt 3 rising/falling edge control flag If I3FR = 0, the external interrupt 3 is activated by a negative transition at INT3. If I3FR = 1, the external interrupt 3 is activated by a positive transition at INT3. I2FR External interrupt 2 rising/falling edge control flag If I3FR = 0, the external interrupt 3 is activated by a negative transition at INT2. If I3FR = 1, the external interrupt 3 is activated by a positive transition at INT2. Semiconductor Group 7-13 1997-10-01 Interrupt System C509-L Special Function Register IRCON0 (Address C0H) Bit No. MSB C7H C0H EXF2 C6H TF2 C5H IEX6 C4H IEX5 C3H IEX4 Reset Value : 00H C2H C1H LSB C0H IEX3 IEX2 IADC IRCON0 Bit Function EXF2 Timer 2 external reload flag Set when a reload is caused by a negative transition on pin T2EX while EXEN2 = 1. If ET2 in IEN0 is set (timer 2 interrupt enabled), EXF2 = 1 will cause an interrupt. Can be used as an additional external interrupt when the reload function is not used. EXF2 must be cleared by software. TF2 Timer 2 overflow flag Set by a timer 2 overflow and must be cleared by software. If the timer 2 interrupt is enabled, TF2 = 1 will cause an interrupt. IEX6 External interrupt 6 edge flag Set by hardware when external interrupt edge was detected or when a compare event occurred at pin 1.3/INT6/CC3. Cleared by hardware when processor vectors to interrupt routine. IEX5 External interrupt 5 edge flag Set by hardware when external interrupt edge was detected or when a compare event occurred at pin 1.2/INT5/CC2. Cleared by hardware when processor vectors to interrupt routine. IEX4 External interrupt 4 edge flag Set by hardware when external interrupt edge was detected or when a compare event occurred at pin 1.1/INT4/CC1. Cleared by hardware when processor vectors to interrupt routine. IEX3 External interrupt 3 edge flag Set by hardware when external interrupt edge was detected or when a compare event occurred at pin 1.0/INT3/CC0. Cleared by hardware when processor vectors to interrupt routine. IEX2 External interrupt 2 edge flag Set by hardware when external interrupt edge was detected or when a compare event occurred at pin 1.4/INT2/CC4. Cleared by hardware when processor vectors to interrupt routine. IADC A/D converter interrupt request flag Set by hardware at the end of a conversion. Must be cleared by software. Semiconductor Group 7-14 1997-10-01 Interrupt System C509-L The compare timer match interrupt occurs on a compare match of the CM0 to CM7 registers with the compare timer when compare mode 1 is selected for the corresponding channel. There are 8 compare match interrupt flags available in SFR IRCON1 which are or-ed together for a single interrupt request. Thus, a compare match interrupt service routine has to check which compare match has requested the compare match interrupt. The ICMPx flags must be cleared by software. Only if timer 2 is assigned to the CMx registers (compare mode 0), an ICMPx request flag is set by every match in the compare channel. When the compare timer is assigned to the CMx registers (compare mode 1), an ICMPx request flag will not be set by a compare match event. Special Function Register IRCON1 (Address D1H) Bit No. D1H MSB 7 6 5 4 3 Reset Value : 00H 2 1 LSB 0 ICMP7 ICMP6 ICMP5 ICMP4 ICMP3 ICMP2 ICMP1 ICMP0 IRCON1 Bit Function ICMP7 - 0 Compare timer match with register CM7 - CM0 interrupt flags ICMPx is set by hardware when a compare match of the compare timer with the compare register CMx occurs but only if the compare function for CMx has been enabled. ICMPx must be cleared by software (CMSEL.x = 0 and CMEN.x = 1). The compare timer 1 match interrupt occurs on a compare match of the CC10 to CC17 registers with the compare timer 1 or (if selected) at a capture event at the pins CC10 to CC17. There are 8 compare match/capture interrupt flags available in SFR IRCON2 which are or-ed together for a single interrupt request. Thus, a compare match/capture interrupt service routine has to check which compare match/capture event has occurred. The ICC1x flags must be cleared by software. Special Function Register IRCON2 (Address BFH) Bit No. BFH MSB 7 6 5 4 3 Reset Value : 00H 2 1 LSB 0 ICC17 ICC16 ICC15 ICC14 ICC13 ICC12 ICC11 ICC10 IRCON2 Bit Function ICC17 - 10 Compare timer 1 match with register CC17 - CC10 interrupt flags ICC1x is set by hardware when a compare match of the compare timer 1 with the compare register CC1x occurs but only if the compare function for CC1x has been enabled. ICC1x must be cleared by software. Semiconductor Group 7-15 1997-10-01 Interrupt System C509-L The compare timer interrupt is generated by bit CTF in register CTCON, which is set by a rollover in the compare timer. lf a compare timer interrupt is generated, flag CTF can be cleared by software. The compare timer 1 interrupt is generated by bit CT1F in register CT1CON, which is set by a rollover in the compare timer. lf a compare timer interrupt is generated, flag CT1F can be cleared by software. The timer 2 compare match set and compare match clear interrupt is generated by bits ICS and ICR in register CTCON. These flags are set by a match in registers COMSET and COMCLR, when enabled. As long as the match condition is valid the request flags can't be reset (neither by hardware nor software). Special Function Register CTCON (Address. E1H) Special Function Register CT1CON (Address BCH) Bit No. E1H BCH Reset Value : 01000000B Reset Value : X1XX0000B 6 5 4 3 2 1 LSB 0 T2PS1 CTP ICR ICS CTF CLK2 CLK1 CLK0 7 6 5 4 3 2 1 0 – CT1P – – MSB 7 CT1F CLK12 CLK11 CLK10 CTCON CT1CON The shaded bits are not used for interrupt purposes. Bit Function ICR Interrupt request flag for compare register COMCLR ICR is set when a compare match occured. ICR is cleared ba hardware when the processor vectors to interrupt routine. ICS Interrupt request flag for compare register COMSET ICS is set when a compare match occured. ICS is cleared by hardware when the processor vectors to interrupt routine. CTF Compare timer overflow flag CTF is set when the compare timer 1 count rolls over from all ones to the reload value. When CTF is set, a compare timer interrupt can be generated (if enabled). CTF is cleared by hardware when the compare timer value is no more equal to the reload value. CT1F Compare timer 1 overflow flag CT1F is set when the compare timer 1 count rolls over from all ones to the reload value. When CT1F is set, a compare timer 1 interrupt can be generated (if enabled). CT1F is cleared by hardware when the compare timer 1 value is no more equal its reload value. Semiconductor Group 7-16 1997-10-01 Interrupt System C509-L 7.3 Interrupt Priority Level Structure The 19 interrupt sources of the C509-L are combined in six groups. Table 7-1 lists the structure of these interrupt groups. Table 7-1 Interrupt Source Structure Interrupt Groups Associated Interrupts 1 External interrupt 0 Serial channel 1 interrupt A/D converter interrupt -- 2 Timer 0 overflow -- External interrupt 2 -- 3 External interrupt 1 Match in CM0-CM7 External interrupt 3 Match in CC10CC17 or capture event at port 9 4 Timer 1 overflow Compare timer overflow External interrupt 4 Compare timer 1 overflow 5 Serial channel 0 interrupt Match in COMSET External interrupt 5 -- 6 Timer 2 overflow or external reload interrupt Match in COMCLR External interrupt 6 -- Each group of interrupt sources can be programmed individually to one of four priority levels by setting or clearing one bit in the special function register IP0 and one in IP1. A low-priority interrupt can itself be interrupted by a high-priority interrupt, but not by another interrupt of the same or a lower priority. An interrupt of the highest priority level cannot be interrupted by another interrupt source. lf two or more requests of different priority levels are received simultaneously, the request of the highest priority is serviced first. lf requests of the same priority level are received simultaneously, an internal polling sequence determines which request is to be serviced first. Thus, within each priority level there is a second priority structure determined by the polling sequence (table 7-2). Semiconductor Group 7-17 1997-10-01 Interrupt System C509-L Table 7-2 Interrupts - Priority-within-Level Interrupt Priority Bits Group of Interrupt Group Interrupt Source Priority 1 IP1.0 / IP0.0 IE0 RI1 + TI1 IADC – 2 IP1.1 / IP0.1 TF0 – IEX2 – 3 IP1.2 / IP0.0 IE0 ICMP0-7 IEX3 ICC10-17 4 IP1.3 / IP0.3 TF1 CTF IEX4 CTF1 5 IP1.4 / IP0.4 RI0 + TI0 ICS IEX5 – 6 IP1.5 / IP0.5 TF2 + EXF2 ICR IEX6 – High Priority Low Priority Interrupt Group Priority High Low Within one pair or triplet the leftmost interrupt is serviced first, then the second and third, when available. The interrupt groups are serviced from top to bottom of the table. A low-priority interrupt can itself be interrupted by a higher-priority interrupt, but not by another interrupt of the same or a lower priority. An interrupt of the highest priority level cannot be interrupted by another interrupt source. If two or more requests of different priority levels are received simultaneously, the request of the highest priority is serviced first. If requests of the same priority level are received simultaneously, an internal polling sequence determines which request is to be serviced first. Thus, within each priority level there is a second priority structure which is illustrated in table 7-2. The “priority-within-level” structure is only used to resolve simultaneous requests of the same priority level. Semiconductor Group 7-18 1997-10-01 Interrupt System C509-L 7.4 How Interrupts are Handled The interrupt flags are sampled at S5P2 in each machine cycle. The sampled flags are polled during the following machine cycle. If one of the flags was in a set condition at S5P2 of the preceeding cycle, the polling cycle will find it and the interrupt system will generate a LCALL to the appropriate service routine, provided this hardware-generated LCALL is not blocked by any of the following conditions: 1. An interrupt of equal or higher priority is already in progress. 2. The current (polling) cycle is not in the final cycle of the instruction in progress. 3. The instruction in progress is RETI or any write access to registers IEN0, IEN1, IEN2, IEN3, EICC1, IP1 or IP0. Any of these three conditions will block the generation of the LCALL to the interrupt service routine. Condition 2 ensures that the instruction in progress is completed before vectoring to any service routine. Condition 3 ensures that if the instruction in progress is RETI or any write access to registers IEN0, IEN1, IEN2, IEN3, EICC1, IP1 or IP0, then at least one more instruction will be executed before any interrupt is vectored to; this delay guarantees that changes of the interrupt status can be observed by the CPU. The polling cycle is repeated with each machine cycle and the values polled are the values that were present at S5P2 of the previous machine cycle. Note that if any interrupt flag is active but not being responded to for one of the conditions already mentioned, or if the flag is no longer active when the blocking condition is removed, the denied interrupt will not be serviced. In other words, the fact that the interrupt flag was once active but not serviced is not remembered. Every polling cycle interrogates only the pending interrupt requests. The polling cycle/LCALL sequence is illustrated in figure 7-5. C1 C2 C3 C4 C5 S5P2 Interrupt is latched Interrupts are polled Long Call to Interrupt Vector Address Interrupt Routine MCT01859 Figure 7-5 Interrupt Response Timing Diagram Semiconductor Group 7-19 1997-10-01 Interrupt System C509-L Note that if an interrupt of a higher priority level goes active prior to S5P2 in the machine cycle labeled C3 in figure 7-5 then, in accordance with the above rules, it will be vectored to during C5 and C6 without any instruction for the lower priority routine to be executed. Thus, the processor acknowledges an interrupt request by executing a hardware-generated LCALL to the appropriate servicing routine. In some cases it also clears the flag that generated the interrupt, while in other cases it does not. Then this has to be done by the user's software. The hardware clears the external interrupt flags IE0 and IE1 only if they were transition-activated. The hardware-generated LCALL pushes the contents of the program counter onto the stack (but it does not save the PSW) and reloads the program counter with an address that depends on the source of the interrupt being vectored to, as shown in table 7-3. Table 7-3 Interrupt Source and Vectors Interrupt Source Interrupt Vector Address Interrupt Request Flags External Interrupt 0 0003H IE0 Timer 0 Overflow 000BH 0013H TF0 001BH 0023H TF1 002BH 0043H TF2 / EXF2 004BH 0053H IEX2 005BH 0063H IEX4 006BH 0083H IEX6 Compare Match Interrupt of Compare Registers CM0-CM7 assigned to Timer 2 0093H ICMP0 - ICMP7 Compare Timer Overflow 009BH CTF Compare Match Interrupt of Compare Register COMSET 00A3H ICS Compare Match Interrupt of Compare Register COMCLR 00ABH ICR External Interrupt 1 Timer 1 Overflow Serial Channel 0 Timer 2 Overflow / Ext. Reload A/D Converter External Interrupt 2 External Interrupt 3 External Interrupt 4 External Interrupt 5 External Interrupt 6 Serial Channel 1 IE1 RI0 / TI0 IADC IEX3 IEX5 RI1 / TI1 Compare / Capture Event interrupt 00D3H ICC10 - ICC17 Compare Timer 1 Overflow CT1F Semiconductor Group 00DBH 7-20 1997-10-01 Interrupt System C509-L Execution proceeds from that location until the RETI instruction is encountered. The RETI instruction informs the processor that the interrupt routine is no longer in progress, then pops the two top bytes from the stack and reloads the program counter. Execution of the interrupted program continues from the point where it was stopped. Note that the RETI instruction is very important because it informs the processor that the program left the current interrupt priority level. A simple RET instruction would also have returned execution to the interrupted program, but it would have left the interrupt control system thinking an interrupt was still in progress. In this case no interrupt of the same or lower priority level would be acknowledged. 7.5 External Interrupts The external interrupts 0 and 1 can be programmed to be level-activated or negative-transition activated by setting or clearing bit IT0 or IT1, respectively, in register TCON. lf ITx = 0 (x = 0 or 1), external interrupt x is triggered by a detected low level at the INTx pin. lf ITx = 1, external interrupt x is negative edge-triggered. In this mode, if successive samples of the INTx pin show a high in one cycle and a low in the next cycle, interrupt request flag lEx in TCON is set. Flag bit lEx then requests the interrupt. lf the external interrupt 0 or 1 is level-activated, the external source has to hold the request active until the requested interrupt is actually generated. Then it has to deactivate the request before the interrupt service routine is completed, or else another interrupt will be generated. The external interrupts 2 and 3 can be programmed to be negative or positive transition-activated by setting or clearing bit I2FR or I3FR in register T2CON. lf IxFR = 0 (x = 2 or 3), external interrupt x is negative transition-activated. lf IxFR = 1, external interrupt is triggered by a positive transition. The external interrupts 4, 5, and 6 are activated by a positive transition. The external timer 2 reload trigger interrupt request flag EXF2 will be activated by a negative transition at pin P1.5/T2EX but only if bit EXEN2 is set. Since the external interrupt pins (INT2 to INT6) are sampled once in each machine cycle, an input high or low should be held for at least 12 oscillator periods to ensure sampling. lf the external interrupt is transition-activated, the external source has to hold the request pin low (high for INT2 and INT3, if it is programmed to be negative transition-active) for at least one cycle, and then hold it high (low) for at least one cycle to ensure that the transition is recognized so that the corresponding interrupt request flag will be set (see figure 7-6). The external interrupt request flags will automatically be cleared by the CPU when the service routine is called. Semiconductor Group 7-21 1997-10-01 Interrupt System C509-L Figure 7-6 External Interrupt Detection 7.6 Interrupt Response Time If an external interrupt is recognized, its corresponding request flag is set at S5P2 in every machine cycle. The value is not polled by the circuitry until the next machine cycle. If the request is active and conditions are right for it to be acknowledged, a hardware subroutine call to the requested service routine will be next instruction to be executed. The call itself takes two cycles. Thus a minimum of three complete machine cycles will elapse between activation and external interrupt request and the beginning of execution of the first instruction of the service routine. A longer response time would be obtained if the request was blocked by one of the three previously listed conditions. If an interrupt of equal or higher priority is already in progress, the additional wait time obviously depends on the nature of the other interrupt's service routine. If the instruction in progress is not in its final cycle, the additional wait time cannot be more than 3 cycles since the longest instructions (MUL and DIV) are only 4 cycles long; and, if the instruction in progress is RETI or a write access to registers IE or IP the additional wait time cannot be more than 5 cycles (a maximum of one more cycle to complete the instruction in progress, plus 4 cycles to complete the next instruction, if the instruction is MUL or DIV). Thus a single interrupt system, the response time is always more than 3 cycles and less than 9 cycles. Semiconductor Group 7-22 1997-10-01 Fail Save Mechanisms C509-L 8 Fail Save Mechanisms The C509-L offers two on-chip peripherals which monitor the program flow and ensure an automatic “fail-safe” reaction for cases where the controller’s hardware fails or the software hangs up: – A programmable watchdog timer (WDT) with variable time-out period from 189 microseconds up to approx. 0.79 seconds at 16 MHz. – An oscillator watchdog (OWD) which monitors the on-chip oscillator and forces the microcontroller into the reset state if the on-chip oscillator fails. 8.1 Programmable Watchdog Timer To protect the system against software upset, the user’s program has to clear this watchdog within a previously programmed time period. lf the software fails to do this periodical refresh of the watchdog timer, an internal hardware reset will be initiated. The software can be designed so that the watchdog times out if the program does not work properly. lt also times out if a software error is based on hardware-related problems. The watchdog timer in the C509-L is a 15-bit timer, which is incremented by a count rate of fOSC/12 up to fOSC/384. For programming of the watchdog timer overflow rate, the upper 7 bit of the watchdog timer can be written. Figure 8-1 shows the block diagram of the watchdog timer unit. Figure 8-1 Block Diagram of the Programmable Watchdog Timer Semiconductor Group 8-1 1997-10-01 Fail Save Mechanisms C509-L 8.1.1 Input Clock Selection The input clock rate of the watchdog timer is derived from the system clock of the C509-L. There are two prescalers which define the input clock rate. These prescalers are controlled by two bits in the SFRs PRSC and WDTREL. Table 8-1 shows the resulting timeout periods at fOSC = 16 MHz. Special Function Register PRSC (Address B4H) Special Function Register WDTREL (Address 86H) Bit No. B4H 86H Reset Value : 11010101B Reset Value : 00H MSB 7 6 5 4 3 2 1 LSB 0 WDTP S0P T2P1 T2P0 T1P1 T1P2 T0P1 T0P0 7 6 5 4 3 2 1 0 Watchdog timer reload value WPSEL PRSC WDTREL The shaded bits are not used for the watchdog timer. Bit Function WDTP WPSEL Prescaler select bits for the watchdog input clock The two control bits WDTP and WPSEL define the input clock frequency fIN of the watchdog timer. WDTREL.6-0 WDTP WPSEL Input clock 0 0 fIN = fOSC/12 0 1 fIN = fOSC/192 1 0 fIN = fOSC/24 (reset value) 1 1 fIN = fOSC/384 Watchdog timer reload value Seven bit reload value for the high-byte of the watchdog timer. This value is loaded to the WDT when a refresh is triggered by a consecutive setting of bits WDT and SWDT. Table 8-1 Watchdog Timer Timeout Periods at fOSC = 16 MHz WDTREL Time-Out Periods Comments fOSC/12 fOSC/24 fOSC/192 fOSC/384 00H 24.6 ms 49.1 ms 393 ms 786 ms Maximum time period (default after reset) (128 WDTL overflows) 7EH 7FH 381 µs 762 µs 6.10 ms 12.2 ms Two WDTL overflows 189 µs 378 µs 3.02 ms 6.05 ms Min. time period (One WDTL overflow) Semiconductor Group 8-2 1997-10-01 Fail Save Mechanisms C509-L 8.1.2 Watchdog Timer Control Flags The watchdog timer is controlled by two control flags (located in SFR IEN0 and IEN1) and one status flags (located in SFR IP0). Special Function Register IEN0 (Address A8H) Special Function Register IEN1 (Address B8H) Special Function Register IP0 (Address A9H) Bit No. A8H B8H MSB AFH AEH ADH ACH ABH AAH A9H LSB A8H EAL WDT ET2 ES0 ET1 EX1 ET0 EX0 BFH BEH BDH BCH BBH BA2H B91H B8H EX6 EX5 EX4 EX3 EX2 5 4 3 2 1 EXEN2 SWDT 7 A9H Reset Value : 00H Reset Value : 00H Reset Value : 00H 6 OWDS WDTS IP0.5 IP0.4 IP0.3 IP0.2 IP0.1 EADC IEN0 IEN1 0 IP0.0 IP0 The shaded bits are not used in controlling the watchdog timer. Bit Function WDT Watchdog timer refresh flag Set to initiate a refresh of the watchdog timer. Must be set directly before SWDT is set to prevent an unintentional refresh of the watchdog timer. SWDT Watchdog timer start flag Set to activate the watchdog timer. When directly set after setting WDT, a watchdog timer refresh is performed. WDTS Watchdog timer status flag Set by hardware when a watchdog timer reset occurred. Can be cleared or set by software Semiconductor Group 8-3 1997-10-01 Fail Save Mechanisms C509-L 8.1.3 Starting the Watchdog Timer Immediately after start (see next section for the start procedure), the watchdog timer is initialized to the reload value programmed to WDTREL.0 - WDTREL.6. After an external hardware or HWPD reset, an oscillator power on reset, or a watchdog timer reset, register WDTREL is cleared to 00H. WDTREL can be loaded by software at any time. There are two ways to start the watchdog timer depending on the level applied to pin PE/SWD. This pin serves two functions, because it is also used for blocking the power saving modes (see also chapter 9). 8.1.3.1 The First Possibility of Starting the Watchdog Timer The automatic start of the watchdog timer directly after an external HW reset is a hardware start initialized by strapping pin PE/SWD to VCC. In this case the power-saving modes (power-down mode, idle mode and slow-down mode) are also disabled and cannot be started by software. The self-start of the watchdog timer by a pin option has been implemented to provide high system security in electrically very noisy environments. Note: The automatic start of the watchdog timer is only performed if PE/SWD (power-save enable/ start watchdog timer) is held at high level while reset is active. A positive transition at this pin during normal program execution will not start the watchdog timer. Furthermore, when using the hardware start, the watchdog timer starts running with its default time- out period. The value in the reload register WDTREL, however, can be overwritten at any time to set any time-out period desired. 8.1.3.2 The Second Possibility of Starting the Watchdog Timer The watchdog timer can also be started by software. Setting of bit SWDT in special function register IEN1 starts the watchdog timer. Using the software start, the timeout period can be programmed before the watchdog timer starts running. Note that once the watchdog timer has been started it cannot be stopped by anything but an external hardware reset through pin RESET with a low level applied to pin PE/SWD. Semiconductor Group 8-4 1997-10-01 Fail Save Mechanisms C509-L 8.1.4 Refreshing the Watchdog Timer At the same time the watchdog timer is started, the 7-bit register WDTH is preset by the contents of WDTREL.0 to WDTREL.6. Once started the watchdog cannot be stopped by software but can only be refreshed to the reload value by first setting bit WDT (IEN0.6) and by the next instruction setting SWDT (IEN1.6). Bit WDT will automatically be cleared during the second machine cycle after having been set. For this reason, setting SWDT bit has to be a one cycle instruction (e.g. SETB SWDT). This double-instruction refresh of the watchdog timer is implemented to minimize the chance of an unintentional reset of the watchdog. The reload register WDTREL can be written to at any time, as already mentioned. Therefore, a periodical refresh of WDTREL can be added to the above mentioned starting procedure of the watchdog timer. Thus a wrong reload value caused by a possible distortion during the write operation to the WDTREL can be corrected by software. 8.1.5 Watchdog Reset and Watchdog Status Flag lf the software fails to clear the watchdog in time, an internally generated watchdog reset is entered at the counter state 7FFCH. The duration of the reset signal then depends on the prescaler selection (either 4, 8, 64, or 128 cycles). This internal reset differs from an external one only in so far as the watchdog timer is not disabled and bit WDTS (watchdog timer status, bit 6 in special function register IP0) is set. Figure 8-2 shows a block diagram of all reset requests in the C509-L and the function of the watchdog status flags. The WDTS flag is a flip-flop, which is set by a watchdog timer reset and cleared by an external HW reset. Bit WDTS allows the software to examine from which source the reset was activated. The watchdog timer status flag can also be cleared by software. Figure 8-2 Watchdog Timer Status Flags and Reset Requests Semiconductor Group 8-5 1997-10-01 Fail Save Mechanisms C509-L 8.2 Oscillator Watchdog The C509-L has a oscillator watchdog unit that is fully compatible with the SAB 80C517A's oscillator watchdog. The oscillator watchdog unit serves three functions: – Monitoring of the on-chip oscillator's function. The watchdog supervises the on-chip oscillator's frequency; if it is lower than the frequency of the auxiliary RC oscillator in the watchdog unit, the internal clock is supplied by the RC oscillator and the device is brought into reset; if the failure condition disappears (i.e. the onchip oscillator has a higher frequency than the RC oscillator), the part executes a final reset phase of appr. 0.5 ms in order to allow the oscillator to stabilize; then the oscillator watchdog reset is released and the part starts program execution again. – Restart from the hardware power down mode. If the hardware power down mode is terminated the oscillator watchdog has to control the correct start-up of the on-chip oscillator and to restart the program. The oscillator watchdog function is only part of the complete hardware power down sequence; however, the watchdog works identically to the monitoring function. – Fast internal reset after power-on. In this function the oscillator watchdog unit provides a clock supply for the reset before the onchip oscillator has started. In this case the oscillator watchdog unit also works identically to the monitoring function. If the oscillator watchdog unit shall be used it must be enabled (this is done by applying high level to the control pin OWE). Figure 8-3 shows the block diagram of the oscillator watchdog unit. It consists of an internal RC oscillator which provides the reference frequency for the comparison with the frequency of the onchip oscillator. The RC oscillator can be enabled/disabled by the control pin OWE. If it is disabled the complete unit has no function. The SFR IP0 contains a status flag of the oscillator watchdog as shown below. Special Function Register IP0 (Address A9H) Bit No. A9H 7 6 OWDS WDTS 5 IP0.5 4 IP0.4 Reset Value : 00H 3 IP0.3 2 IP0.2 1 IP0.1 0 IP0.0 IP0 The shaded bits are not used in controlling the oscillator watchdog. Bit Function OWDS Oscillator watchdog timer status flag Set by hardware when an oscillator watchdog reset occurred. Can be cleared or set by software. Semiconductor Group 8-6 1997-10-01 Fail Save Mechanisms C509-L Figure 8-3 Functional Block Diagram of the Oscillator Watchdog The frequency coming from the RC oscillator is divided by 5 and compared to the on-chip oscillator's frequency. If the frequency coming from the on-chip oscillator is found lower than the frequency derived from the RC oscillator the watchdog detects a failure condition (the oscillation at the on-chip oscillator could stop because of crystal damage etc.). In this case it switches the input of the internal clock system to the output of the RC oscillator. This means that the part is being clocked even if the on-chip oscillator has stopped or has not yet started. At the same time the watchdog activates the internal reset in order to bring the part in its defined reset state. The reset is performed because clock is available from the RC oscillator. This internal watchdog reset has the same effects as an externally applied reset signal with the following exception: The watchdog timer status flag WDTS (IP0.6) is not reset (the Watchdog Timer however is stopped) and bit OWDS is set. This allows the software to examine error conditions detected by the watchdog timer even if meanwhile an oscillator failure occurred. The oscillator watchdog is able to detect a recovery of the on-chip oscillator after a failure. If the frequency derived from the on-chip oscillator is again higher than the reference the watchdog starts a final reset sequence which takes typ. 1 ms. Within that time the clock is still supplied by the RC oscillator and the part is held in reset. This allows a reliable stabilization of the on chip oscillator. After that, the watchdog toggles the clock supply back to the on-chip oscillator and releases the reset request. If no external reset is applied in this moment the part will start program execution. If an external reset is active, however, the device will keep the reset state until also the external reset request disappears. Furthermore, the status flag OWDS is set if the oscillator watchdog was active. The status flag can be evaluated by software to detect that a reset was caused by the oscillator watchdog. The flag OWDS can be set or cleared by software. An external reset request, however, also resets OWDS (and WDTS). Semiconductor Group 8-7 1997-10-01 Power Saving Modes C509-L 9 Power Saving Modes The C509-L provides three modes in which power consumption can be significantly reduced. – Idle mode The CPU is gated off from the oscillator. All peripherals are still provided with the clock and are able to work. – Power down mode The operation of the C509-L is completely stopped and the oscillator is turned off. This mode is used to save the contents of the internal RAM with a very low standby current. Power down mode can be entered by software or by hardware. – Slow-down mode The controller keeps up the full operating functionality, but its normal clock frequency is internally divided by eight. This slows down all parts of the controller, the CPU and all peripherals, to 1/8 th of their normal operating frequency. Slowing down the frequency greatly reduces power consumption. All of these modes - a detailed description of each is given in the following sections - are entered by software. Special function register PCON (power control register) is used to select one of these modes. These power saving modes, especially the power down mode, replace the hardware power down supply for the internal RAM via a dedicated pin. During the power saving modes, the power supply for the C509-L are all VCC pins. There is no further dedicated pin for power down supply. For the C509-L several provisions have been made to quality it for both electrically noisy environments and applications requiring high system security. In such applications unintentional entering of the power saving modes must be absolutely avoided. A power saving mode would reduce the controller’s performance (in the case of slow-down mode) or even stop any operation (in the case of power down mode). This situation might be fatal for the system, which is controlled by the microcontroller. Such critical applications often use the watchdog timer to prevent the system from program upsets. Then, an accidental entering of the power saving modes would even stop the watchdog timer and would circumvent the watchdog timer’s task of system protection. Semiconductor Group 9-1 1997-10-01 Power Saving Modes C509-L 9.1 Hardware Enable for the Use of the Power Saving Modes To provide power saving modes together with effective protection against unintentional entering of these modes, the C509-L has an extra pin disabling the use of the power saving modes. As this pin will most likely be used only in critical applications it is combined with an automatic start of the watchdog timer (see the description in section 7.8 “Fail Save Mechanisms”). This pin is called PE/ SWD (power saving enable/start watchdog timer) and its function is as follows: PE/SWD = 1 (logic high level) – Use of the power saving modes is not possible. The instruction sequences used for entering these modes will not affect the normal operation of the device. – lf and only if PE/SWD is held at high level during reset, the watchdog timer is started immediately after reset is released. PE/SWD = 0 (logic low level) – All power saving modes can be activated as described in the following sections – The watchdog timer has to be started by software if system protection is desired. When left unconnected, the pin PE/SWD is pulled to high level by a weak internal pullup. This is done to provide system protection by default. The logic level applied to pin PE/SWD can be changed during program execution in order to allow or block the use of the power saving modes without any effect on the on-chip watchdog circuitry; (the watchdog timer is started only if PE/SWD is on high level at the moment when reset is released; a change at PE/SWD during program execution has no effect on the watchdog timer; this only enables or disables the use of the power saving modes.). A change of the pin’s level is detected in state 3, phase 1. A Schmitt trigger is used at the input to reduce susceptibility to noise. In addition to the hardware enable/disable of the power saving modes, a double-instruction sequence which is described in the corresponding sections is necessary to enter power down and idle mode. The combination of all these safety precautions provide a maximum of system protection. Application Example for Switching Pin PE/SWD For most applications in noisy environments, components external to the chip are used to give warning of a power failure or a turn off of the power supply. These circuits could be used to control the PE/SWD pin. The possible steps to go into power down mode could then be as follows: – A power-fail signal forces the controller to go into a high priority interrupt routine. This interrupt routine saves the actual program status. At the same time pin PE/SWD is pulled low by the power-fail signal. – Finally the controller enters power down mode by executing the relevant double-instruction sequence. Semiconductor Group 9-2 1997-10-01 Power Saving Modes C509-L 9.2 Power Saving Mode Control Register PCON The SFR PCON is used for control of the power saving modes. It also contains two general purpose flags, which can be used e.g. by software for power saving mode management. Special Function Register PCON (Address 87H) Bit No. MSB 7 87H SMOD Reset Value : 00H 6 5 4 3 2 1 LSB 0 PDS IDLS SD GF1 GF0 PDE IDLE PCON The shaded bits are not used for power saving mode control. Bit Function PDS Power down start bit The instruction that sets the PDS flag bit is the last instruction before entering the power down mode. IDLS IDLE start bit The instruction that sets the IDSL flag bit is the last instruction before entering the idle mode. SD Slow down bit When set, the slow-down mode is enabled. GF1 General purpose flag GF0 General purpose flag PDE Power down enable bit When set, starting the power down mode is enabled. IDLE Idle mode enable bit When set, starting the idle mode is enabled. Semiconductor Group 9-3 1997-10-01 Power Saving Modes C509-L 9.3 Idle Mode In idle mode the oscillator of the C509-L continues to run, but the CPU is gated off from the clock signal. However, the interrupt system, the serial channels, the A/D converter, the oscillator watchdog, the division/multiplication unit and all timers, except for the watchdog timer, are further provided with the clock. The CPU status is preserved in its entirety: the stack pointer, program counter, program status word, accumulator, and all other registers maintain their data during idle mode. The reduction of power consumption, which can be achieved by this feature, depends on the number of peripherals running. lf all timers are stopped and the A/D converter and the division/ multiplication unit are not running, maximum power reduction can be achieved. This state is also the test condition for the idle ICC in the DC characteristics. Thus, the user has to take into account that the right peripheral continues to run or is stopped, respectively, during idle. Also, the state of all port pins - either the pins controlled by their latches or controlled by their secondary functions - depends on the status of the controller when entering idle. Normally the port pins hold the logical state they had at the time idle was activated. lf some pins are programmed to serve their alternate functions they still continue to output during idle if the assigned function is on. This applies for the compare outputs as well as for the system clock output signal and the serial interface in case the latter could not finish reception or transmission during normal operation. The control signals ALE and PSEN are held at logic high levels (see table 9-1). During idle, as in normal operating mode, the ports can be used as inputs. Thus, a capture or reload operation as well as an A/D conversion can be triggered, the timers can be used to count external events and external interrupts can be detected. Semiconductor Group 9-4 1997-10-01 Power Saving Modes C509-L Table 9-1 Status of External Pins During Idle and Software Power Down Mode Pins Idle Mode Software Power Down Mode ALE High Low PSEN High Low Port 0 Float Float Port 1 Data / alternate outputs Data / last output Port 2 Address Data Port 3 Data / alternate outputs Data / last output Port 4 Data / alternate outputs Data / last output Port 5 Data / alternate outputs Data / last output Port 6 Data / alternate outputs Data / last output Port 9 Data / alternate outputs Data / last output The watchdog timer is the only peripheral which is automatically stopped during idle mode. The idle mode makes it possible to “freeze” the processor’s status for a certain time or until an external event causes the controller to go back into normal operating mode. Since the watchdog timer is stopped during idle mode, this useful feature of the C509-L is provided even if the watchdog function is used simultaneously. lf the idle mode is to be used the pin PE/SWD must be held low. Entering the idle mode is to be done by two consecutive instructions immediately following each other. The first instruction has to set the flag bit IDLE (PCON.0) and must not set bit IDLS (PCON.5), the following instruction has to set the start bit IDLS (PCON.5) and must not set bit IDLE (PCON.0). The hardware ensures that a concurrent setting of both bits, IDLE and IDLS will not initiate the idle mode. Bits IDLE and IDLS will automatically be cleared after having been set. lf one of these register bits is read the value shown is zero (0). This double-instruction sequence is implemented to minimize the chance of unintentionally entering the idle mode. Note that PCON is not a bit-addressable register, so the above mentioned sequence for entering the idle mode is to be done by byte handling instructions. The following instruction sequence may serve as an example: – ORLPCON,#00000001B;Set bit IDLE, bit IDLS must not be set ORLPCON,#00100000B;Set bit IDLS, bit IDLE must not be set The instruction that sets bit IDLS is the last instruction executed before going into idle mode. Termination of the Idle Mode – The idle mode can be terminated by activation of any enabled interrupt. The CPU operation is resumed, the interrupt will be serviced and the next instruction to be executed after the RETI instruction will be the one following the instruction that set the bit IDLS. – The other possibility of terminating the idle mode is a hardware reset. Since the oscillator is still running, the hardware reset is held active for only two machine cycles for a complete reset. Semiconductor Group 9-5 1997-10-01 Power Saving Modes C509-L 9.4 Software Power Down Mode In the software power down mode, the on-chip oscillator is stopped. Therefore, all functions are stopped, only the contents of the on-chip RAM and the SFR’s are held. The port pins controlled by their port latches output the values that are held by their SFR’S. The port pins which serve the alternate output functions show the values they had at the end of the last cycle of the instruction which initiated the power down mode; when enabled, the clockout signal (P1.6/CLKOUT) will stop at low level. ALE and PSEN are held at logic low level (see table 9-1). lf the software power down mode is to be used, the pin PE/SWD must be held low. Entering the software power down mode is done by two consecutive instructions immediately following each other. The first instruction has to set the flag bit PDE (PCON.1) and must not set bit PDS (PCON.6). The following instruction has to set the start bit PDS and must not set bit PDE. The hardware ensures that a concurrent setting of both bits, PDE and PDS, will not initiate the power down mode. Bit PDE and PDS will automatically be cleared after having been set and the value shown when reading one of these bits is always zero (0). This double-instruction sequence is implemented to minimize the chance of unintentional entering the software power down mode, which could possibly “freeze” the chip’s activity in an undesired status. Note that PCON is not a bit-addressable register, so the above mentioned sequence for entering the software power down mode is composed of byte handling instructions. The following instruction sequence may serve as an example: ORL ORL PCON,#00000010B PCON,#01000000B ;Set bit PDE, bit PDS must not be set ;Set bit PDS, bit PDE must not be set The instruction that sets bit PDS is the last instruction executed before going into power down mode. lf idle mode and software power down mode are invoked simultaneously, the software power down mode takes precedence. The only exit from software power down mode is a hardware reset. Reset will redefine all SFR’s, but will not change the contents of the internal RAM. In the software power down mode, VCC can be reduced to minimize power consumption. Care must be taken, however, to ensure that VCC is not reduced before the software power down mode is invoked, and that VCC is restored to its normal operating level before software the power down mode is terminated. The reset signal that terminates the software power down mode also frees the oscillator. The reset should not be activated before VCC is restored to its normal operating level and must be held active long enough to allow the oscillator to restart and stabilize (similar to power-on reset). Semiconductor Group 9-6 1997-10-01 Power Saving Modes C509-L 9.5 Slow Down Mode In some applications, where power consumption and dissipation is critical, the controller might run for a certain time at reduced speed (e.g. if the controller is waiting for an input signal). Since in CMOS devices there is an almost linear interdependence of the operating frequency and the power supply current, a reduction of the operating frequency results in reduced power consumption. In the slow down mode all signal frequencies that are derived from the oscillator clock are divided by eight. This also includes the clockout signal at pin P1.6/CLKOUT. lf the slow down mode is to be used the pin PE/SWD must be held low. The slow down mode is entered by setting bit SD (PCON.4). The controller actually enters the slow down mode after a short synchronization period (max. two machine cycles). The slow down mode can be used together with idle and power down mode. The slow down mode is disabled by clearing bit SD. Semiconductor Group 9-7 1997-10-01 Power Saving Modes C509-L 9.6 Hardware Power Down Mode The C509-L has also a hardware power down mode. This mode can be initiated by an external signal at the pin HWPD. This mode is referenced as hardware power down mode in opposite to the program controlled software power down mode. For a correct function of the hardware power down mode the oscillator watchdog unit including its internal RC oscillator is needed. Therefore this unit must be enabled by pin OWE (OWE = high), if the hardware power down mode shall be used. However, the control pin PE/SWD has no control function for the hardware power down mode; it enables and disables only the use of all software controlled power saving modes (slow down mode, idle mode, software power down mode). The function of the hardware power down mode is as follows: – The pin HWPD controls this mode. If it is on logic high level (inactive) the part is running in the normal operating modes. If pin HWPD gets active (low level) the part enters the hardware power down mode; as mentioned above this is independent of the state of pin PE/SWD. HWPD is sampled once per machine cycle. If it is found active, the device starts a complete internal reset sequence. This takes two machine cycles; all pins have their default reset states during this time. This reset has exactly the same effects as a hardware reset; i.e.especially the watchdog timer is stopped and its status flag WDTS is cleared. In this phase the power consumption is not yet reduced. After completion of the internal reset both oscillators of the chip are disabled, the on-chip oscillator as well as the oscillator watchdog's RC oscillator. At the same time the port pins and several control lines enter a floating state as shown in table 9-2. In this state the power consumption is reduced to the power down current IPD. Also the supply voltage can be reduced. Table 9-2 also lists the voltages which may be applied at the pins during hardware power down mode without affecting the low power consumption. Semiconductor Group 9-8 1997-10-01 Power Saving Modes C509-L Table 9-2 Status of all Pins During Hardware Power Down Mode Pins Status Voltage Range at Pin During HW-Power Down P0, P1, P2, P3, P4, Floating outputs / disabled input function P5, P6, P7, P8, P9 VSS ≤ VIN ≤ VCC EA active input VIN = VCC or VIN = VSS PE/SWD active input, pull-up resistor disabled during HW power down VIN = VCC or VIN = VSS XTAL1 active output pin may not be driven XTAL2 disabled input function VSS ≤ VIN ≤VCC PSEN/RDF, ALE Floating outputs / disabled input function (for test modes only) VSS ≤ VIN ≤ VCC VAREF, VAGND active supply pins VAGnd ≤ VIN ≤ VCC OWE active input; must be at high level for start- VIN = VCC up after HW power down; pull up resistor or disabled during HW-power down (VIN = VSS) RESET active input; must be on high level if HW power down is used VIN = VCC R0 Floating output VSS ≤ VIN ≤ VCC The power down state is maintained while pin HWPD is held active. If HWPD goes to high level (inactive state) an automatic start up procedure is performed: – First the pins leave their floating condition and enter their default reset state as they had immediately before going to float state. – Both oscillators are enabled (only if OWE = high). While the on-chip oscillator (with pins XTAL1 and XTAL2) usually needs a longer time for start-up, if not externally driven (with crystal approx. 1 ms), the oscillator watchdog's RC oscillator has a very short start-up time (typ. less than 2 microseconds). – Because the oscillator watchdog is active it detects a failure condition if the on-chip oscillator hasn't yet started. Hence, the watchdog keeps the part in reset and supplies the internal clock from the RC oscillator. – Finally, when the on-chip oscillator has started, the oscillator watchdog releases the part from reset after it performed a final internal reset sequence and switches the clock supply to the on-chip oscillator. This is exactly the same procedure as when the oscillator watchdog detects first a failure and then a recovering of the oscillator during normal operation. Therefore, also the oscillator watchdog status flag is set after restart from hardware power down mode. When automatic start of the watchdog was enabled (PE/SWD connected to V CC ), the Watchdog Timer will start, too (with its default reload value for time-out period). The SWD-Function of the PE/SWD pin is sampled only by a hardware reset. Therefore at least one Power On Reset has to be performed. Semiconductor Group 9-9 1997-10-01 Power Saving Modes C509-L 9.7 Hardware Power Down Mode Reset Timing The following figures show timing diagrams for entering (figure 8-1) and leaving (figure 8-2) the hardware power down mode. If there is only a short signal at pin HWPD (i.e. HWPD is sampled active only once), then a complete internal reset is executed. Afterwards the normal program execution starts again (figure 8-3). Note: Delay time caused by internal logic is not included. The RESET pin overrides the hardware power down function, i.e. if RESET becomes active during hardware power down it is terminated and the device performs the normal reset function. Thus, pin RESET has to be inactive during hardware power down mode. Semiconductor Group 9-10 1997-10-01 Power Saving Modes C509-L Figure 9-1 Timing Diagram of Entering Hardware Power Down Mode Semiconductor Group 9-11 1997-10-01 Power Saving Modes C509-L Figure 9-2 Timing Diagram of Leaving Hardware Power Down Mode Semiconductor Group 9-12 1997-10-01 Power Saving Modes C509-L Figure 9-3 Timing Diagram of Hardware Power Down Mode, HWPD-Pin is active for only one Cycle Semiconductor Group 9-13 1997-10-01 Bootstrap Loader C509-L 10 The Bootstrap Loader The C509-L includes a bootstrap mode, which is activated by setting the PRGEN pin at logic high level at the rising edge of the RESET or the HWPD signal (bit PRGEN1=1). In this mode software routines of the bootstrap loader, located at the addresses 0000H to 01FFH in the boot ROM will be executed. Its purpose is to allow the easy and quick programming of the internal XRAM (F400H to FFFFH) via serial interface while the MCU is in-circuit. This allows to transfer custom routines to the XRAM, which will program an external 64 KByte FLASH memory. The serial routines of the bootstrap loader may be replaced by own custom software or even can be blocked to prevent unauthorized persons from reading out or writing to the external FLASH memory. Therefore the bootstrap loader checks an external FLASH memory for existing custom software and executes it. The bootstrap loader consists of three functional parts which represent the three phases as described below. 10.1 General Functions of the Bootstrap Loader Phase I : Check for existing custom software in the external FLASH memory and execute it. Phase II : Establish a serial connection and automatically synchronize to the transfer speed (baud rate) of the serial communication partner (host). Phase III : Perform the serial communication to the host. The host controls the bootstrap loader by sending header informations, which select one of four operating modes. These modes are: Mode 0: Transfer a custom program from the host to the XRAM (F400H - FFFFH). This mode returns to the beginning of phase III. Mode 1: Execute a custom program in the XRAM at any start address from F400H to FFFFH. Mode 2: Check the contents of any area of the external FLASH memory by calculating a checksum. This mode returns to the beginning of phase III. Mode 3: Execute a custom program in the FLASH memory at any start address beyond 0200H (at addresses 0000H to 01FFH the boot-ROM is active). The 3 phases of the bootstrap loader program and their connections are illustrated in figure 10-1. Semiconductor Group 10-1 1997-10-01 Bootstrap Loader C509-L Figure 10-1 The Three Phases of the Bootstrap Loader The serial communication, which is activated in phase II is performed with the integrated serial interface 0 of the C509-L. Using a full- or half-duplex serial cable (RS232) the MCU must be connected to the serial port of the host computer as shown in figure 10-. Figure 10-2 Bootstrap Loader Interface to the PC Semiconductor Group 10-2 1997-10-01 Bootstrap Loader C509-L The serial transfer operates in asynchronous mode with the serial parameters 8N2 (eight data bits, no parity and two stop bits). The baud rate however can be varied by the host in a wide range, because the bootstrap loader does an automatic synchronization in phase II. The bootstrap loader itself does not use any of the implemented interrupts of the MCU for its work. But for further custom program execution in the bootstrap mode two interrupts are supported. These are the interrupts for the timer 0 (TIMER0) and for the serial interface 0 (SINT0). As the interrupt vectors are located in the address area of the bootstrap loader (0000H - 01FFH), the appropriate interrupt vector addresses are routed by the bootstrap loader via a LJMP instruction to a reserved XRAM area at F400H - F41FH as shown below: TIMER0: SINT0: usually at 000BH is routed to F400H in XRAM usually at 0023H is routed to F410H in XRAM At these addresses (F400H - F40FH and F410H - F41FH) the user specified interrupt routines can be loaded to handle the interrupts in a user defined way. To avoid unexpected software behavior when these interrupts are used, the reserved memory area should be used only by interrupt handling routines. Notice: In this case the XRAM for custom programs is reduced to F420H FFFFH. If there is no need of these interrupts, the reserved memory area can be programmed with custom software. It is recommended not to activate other interrupts than TIMER0 and SINT0, because this could lead to uncontrolled software execution in the interrupt vector area (0000H - 0100H)! 10.2 Phase I: Check for Existing Custom Software in the External FLASH Memory The first action of the bootstrap trap loader is to check two blocks in the external FLASH memory for the existence of custom software. If the check is successful, the custom software is started directly. If no software is found, phase II is entered to establish a serial communication with the connected host. This feature can be used to protect the external FLASH memory contents against unauthorized in-system reading and writing in the bootstrap mode. The security check can be used if needed, but can also be skipped as well, as described in the next section. 10.2.1 Custom Software Check by the Info Block For the above mentioned custom software two memory sectors (sector A: at C000H, sector B: at 6000H) of the external FLASH memory are reserved. For activation of the FLASH memory check, an info block is required, which has to be written at the beginning of the corresponding external FLASH memory sector. The structure of the info block is shown in figure 10-3. The sector addresses C000H and 6000H are valid for the C509-L devices with stepping code CA and later. Semiconductor Group 10-3 1997-10-01 Bootstrap Loader C509-L Info Block Byte Description ID byte #1 - #4 Four ID bytes which mark the external FLASH memory sector as programmed. startaddress (high, low) The start address, where the custom program starts. blocklength (high, low) The length of the memory block, which is filled with the custom program code. checksum #1, #2 Two checksum bytes for the external FLASH memory block memory area for custom software The area for the custom program starting at C00AH in sector A and 600AH in sector B Figure 10-3 The Structure of the FLASH Memory Info Block The info block starts with a fixed sequence of four identification bytes (ID bytes). They mark the corresponding memory sector as custom programmed. If the ID bytes are not present at the beginning of the info block, the bootstrap loader assumes, that the corresponding sector is not custom programmed. Semiconductor Group 10-4 1997-10-01 Bootstrap Loader C509-L The four identification bytes must be absolutely definite to prevent the bootstrap loader from recognizing normal program code as identification bytes. Therefore the four bytes represent a not senseful instruction sequence in 8051-code, which should never occur in normal programs. The definition of the identification bytes is shown in table 10-1. Table 10-1 ID Bytes of the Info Block ID byte Value 8051-code #1 23H RL A #2 03H RR A #3 33H RLC A #4 13H RRC A To check, if the custom software in the relevant sector is functional, the bootstrap loader calculates a checksum consisting of two independent checksum bytes over the appropriate memory area. This area begins at the address startaddress and has a length of blocklength. The two generated checksum bytes are compared with checksum #1 and #2 of the info block. If the checksums are equal, the bootstrap loader starts the custom routine in this sector at the address startaddress. The bootstrap loader starts checking sector A. If either the identification bytes or the checksums of sector A are not correct, the checking procedure is done with sector B of the external FLASH memory. The check of two sectors (A and B) is necessary for a maximum of security, e.g. if the custom software in one sector is not functional. This can happen e.g., if the programming of the corresponding external FLASH memory sector suddenly is interrupted by the cause of a power failure. When the check fails in both sectors, the bootstrap loader leaves phase I and enters phase II to establish the serial communication to a connected host via serial interface 0. If the customer does not want to use this external FLASH sector check, he can override it by programming other values than the four ID bytes in the corresponding FLASH memory addresses in sector A and B. If this is done, the remaining bytes of the two external FLASH memory sectors may be used for normal program execution as well. The flowchart in figure 10-4 shows the detailed actions of the bootstrap loader in phase I. Semiconductor Group 10-5 1997-10-01 Bootstrap Loader C509-L Figure 10-4 Flowchart of Phase I Actions Semiconductor Group 10-6 1997-10-01 Bootstrap Loader C509-L 10.2.2 Checksum Calculation The external FLASH memory check in phase I uses a checksum algorithm, which is based on a continuous addition and 8-bit-left-rotation of all relevant data bytes. The data in the corresponding FLASH memory area is split into two parts, on which an extra checksum is built. This is done to reach a maximum of data security. Checksum #1 is build by bytes at odd addresses and checksum #2 is calculated with bytes at even addresses. The checksum calculation itself is described in the flowchart in figure 10-5. Figure 10-5 Flowchart of the Checksum Calculation for the external FLASH Memory Semiconductor Group 10-7 1997-10-01 Bootstrap Loader C509-L 10.3 Phase II: Automatic Serial Synchronization with the Host When the bootstrap loader leaves phase I and enters phase II, the synchronization procedure between MCU and host will be started. The synchronization must be handled by the host system as shown in figure 10-6. Figure 10-6 The Synchronization between MCU and Host After receiving the testbyte from the host, the bootstrap loader calculates the actual baud rate and activates the baud rate generator of the serial interface 0. When the synchronization is accomplished, the MCU sends an acknowledge byte (55H) back to the host. The baud rate calculation works correctly only in a specific range of baud rates. If the synchronization fails, the baud rates between MCU and host are different, and the acknowledge code from the MCU can't be received properly by the host. In this case, the host software may give a message to the customer, e.g. that he has to repeat the synchronization procedure. Attention: the bootstrap loader doesn't recognize, if the synchronization was correct. It always enters phase III after sending the acknowledge byte. Therefore, if synchronization fails, a reset of the MCU has to be invoked, to restart the bootstrap loader for a new synchronization attempt. Semiconductor Group 10-8 1997-10-01 Bootstrap Loader C509-L 10.3.1 Automatic Synchronization Procedure In phase II the bootstrap loader starts the serial communication with the host via the serial interface 0 of the C509-L. The interface of the MCU is set to mode 3, which means asynchronous transmission with the data format 8N2 (eight data bits, no parity, two stop bits). The host has to use the same serial parameters. For the baud rate synchronization of the MCU to the fixed baud rate of the host, the bootstrap loader waits for the testbyte (00H), which has to be sent by the host. By polling the receive port of the serial interface 0 (P3.0 / RxD) the bootstrap loader measures the receiving time of the test byte by using timer 0 as shown in the figure 10-7. Figure 10-7 Measuring the receive time of a zero byte by using Timer 0 The resulting timer value is used to calculate the reload value for the 10-bit baud rate generator of the serial interface 0 (S0REL). This calculation needs two formulas: the correlation between the baud rate (Bd) and the reload value (S0REL) depending on the oscillator frequency of the MCU (fosc) fosc Bd = ----------------------------------------------------32 × ( 1024 – S0REL ) (1) and the relation between the baud rate (Bd) and the value of timer 0 (T0) depending on the oscillator frequency (fosc) and the number of received bits (Nb). fosc × Nb Bd = -----------------------T0 × 12 (2) Equations (1) and (2) and resolving the result to S0REL leads to the formula T0 × 12 S0REL = 1024 – ------------------32 × Nb Semiconductor Group 10-9 1997-10-01 Bootstrap Loader C509-L which is independent from the oscillator frequency of the MCU (fosc). The value of Nb is nine, because one start bit plus eight data bits are measured. The resulting formula then is T0 × 12 S0REL = 1024 – -----------------32 × 9 This equation contains the constant factor 12 --------------- = 0.0417 32 × 9 So the formula can be written as S0REL = 1024 – 0.0147 × T0 To avoid complicated float point arithmetic the factor 0.0417 is scaled by multiplying it with 4096 (result is 171) and then performing an integer multiplication with T0. In the next step the product is rescaled by a integer division with 4096, which can be simply achieved by a twelve bit right-shift operation. The final formula for calculating the reload value S0REL including scaling and rescaling is therefore: 171 × T0 S0REL = 1024 – --------------------4096 (3) Additionally, the result of the division is rounded by a simple bit comparison of the last right shifted bit. After setting S0REL to the calculated value and activating the baud rate generator of the serial interface 0, the bootstrap loader sends an acknowledge byte (55H) to the host. If this byte is received correctly, it will be assured, that both serial interfaces are working with the same baud rate. The flowchart in figure 10-8 shows the calculation of the reload value S0REL for the baud rate generator of the serial interface 0. Semiconductor Group 10-10 1997-10-01 Bootstrap Loader C509-L Figure 10-8 Calculation Scheme of the S0REL Value Semiconductor Group 10-11 1997-10-01 Bootstrap Loader C509-L 10.3.2 Baud Rates for Correct Synchronization The automatic baud rate synchronization will work correctly only in a specific range of baud rates, which depends on the oscillator frequency fosc of the C509-L and the resolution of the timer 0 (T0). The minimum baud rate (Bdmin) results in the possible underflow of SFR S0REL when the value of T0 gets greater than 24556. In this case the value of SFR S0REL, corresponding formula (3), gets below zero, which leads to a underflow of the S0REL register and therefore to a incorrect baud rate of the baud rate generator. The formula for calculating this underflow margin is derived from formula (1) and is reduced to fosc Bd min = -------------32768 The theoretical maximum baud rate (Bdhigh) can be attained if S0REL is set to its maximum value of 1023. In this case formula (1) reduces to fosc Bd high = ---------32 The real maximum baud rate (Bdmax) is smaller, because of the decreasing resolution of S0REL and T0 at higher baud rates, This causes an increasing deviation between the host baud rate and the MCU baud rate. To perform a correct transfer between the MCU and the host without transmission errors, the deviation Fb of the host baud rate to the MCU baud rate may not exceed 2.5%. Bd host – Bd MCU Fb = 0.025 ≤ -------------------------------------Bd host Between Bdmin and Bdmax every host baud rate can be synchronized successfully by the bootstrap loader. Above Bdmax only discreet baud rates with a deviation of less than 2.5 % may be used. Table 10-2 shows the guaranteed range of baud rates Bdmin to Bdmax and typical functional host baud rates above Bdmax for some MCU clock rates fosc. Table 10-2 Typical Baudrate Selections MCU clock rate fosc Minimum baud rate Bdmin Maximum baud rate Bdmax (Fb 2,5%) Functional higher baud rates 8 MHz 250 baud 6580 baud 9600, 19200 baud 12 MHz 370 baud 9380 baud 9600, 19200 baud 16 MHz 490 baud 12830 baud 19200, 38400 baud Semiconductor Group 10-12 1997-10-01 Bootstrap Loader C509-L 10.4 Phase III: Serial Communication with the Host After the successful synchronization with the host the bootstrap loader enters phase III, in which it communicates with the host to select the desired operating modes. This communication between host and bootstrap loader in phase III is based on different types of transfer blocks. Prior to the description of the phase III operations, the transfer blocks are described in the next section. 10.4.1 Block Transfer Protocol The communication between the host and the bootstrap loader is done by a simple transfer protocol, which is based on a specified block structure. The communication is nearly unidirectional, that means, that the host is sending several transfer blocks and the bootstrap loader is just confirming them by sending back single acknowledge or error bytes. The MCU itself does not send any transfer blocks. Figure 10-9 shows the general format of the transfer block. Format Item Description blocktype This byte determines how data in the data area field has to be interpreted. The implemented blocktypes are: 00H Type: “HEADER” 01H Type: “DATA” 02H Type: “END OF TRANSMISSION” (EOT)" data area This area contains a number of bytes which represent the data of the transfer block. The number of bytes in the data area may range between 00H and 7CH. checksum For safety purposes a checksum is build over blocktype and data area field and sent after the data area. Figure 10-9 Basic Structure of a Bootstrap Loader Transfer Block Semiconductor Group 10-13 1997-10-01 Bootstrap Loader C509-L A transfer block is built by the host depending on the data (header or program data) it contains. For safety purposes the host calculates a simple checksum of the whole block (blocktype and data area) to attach it at the end of the block. The checksum must be generated by EXOR-ing all bytes of the transfer block with themselves. Every time the bootstrap loader receives a transfer block, it recalculates the checksum of the received bytes (blocktype and data area) and compares it with the attached checksum. If the comparison fails, the bootstrap loader is rejecting the transfer block by sending back a checksum error byte (FEH) to the host. Another possible error is a wrong block type. In this case the bootstrap loader sends back a block error byte (FFH) to the host. In both error cases the bootstrap loader awaits the actual transfer block from the host again. If a block is received correctly, an acknowledge byte (55H) is sent to the host. Table 10-3 Confirmation Bytes of the Bootstrap-Loader Receive status Transmitted code to host Acknowledge 55H Block Error FFH Checksum Error FEH Three types of transfer blocks depending on the value of blocktype are implemented in the transfer protocol. Table 10-4 gives an overview of these block types. The detailed structures of the blocks are described in the following sections. Table 10-4 Types of Transfer Blocks Block Name blocktype Description Header Block 00H (HEADER) This block always has a length of 8 bytes (including the attached checksum) and contains special information in the data area, which selects the operating mode of the bootstrap loader in phase III. Data Block 01H (DATA) This block is used in operating mode 0 to transfer a portion of normal data in the data area (e.g. program code) from the host to the XRAM of the MCU. The length of this block depends on the information given in the header block before. EOT Block 02H (EOT) This block is used to indicate the end of a data transmission in operating mode 0. It contains the last bytes of the transferred data. The length of this block depends on the information given in a header block before. Semiconductor Group 10-14 1997-10-01 Bootstrap Loader C509-L 10.4.1.1 Header Block Definition The header block from the host, which contains the mode number and additional data to start the selected operating mode, is a normal transfer block with the block type HEADER (00H) and a fixed length of eight bytes (including the attached checksum of the transfer block). Figure 10-10 shows the general structure of this header block is shown below. Format Item Description mode This field contains the number of the operating mode: 00H Load custom program into the XRAM memory. 01H Jump to the XRAM memory at the specified address startaddress. 02H Calculate the checksum of a specified part of the external FLASH memory which is defined by startaddress and datalength. 03H Jump to the FLASH memory at the specified address startaddress. startaddress This 16-bit address defines the start address either in XRAM or in ext. FLASH memory. The first byte to be transmitted is the high order byte of the 16-bit address. XXH These bytes have a different meaning depending on the mode byte of a header block. The detailed definition of these bytes is given in figures 10-11, 10-18, 10-21, and 10-24. Figure 10-10 Structure of the HEADER Block Semiconductor Group 10-15 1997-10-01 Bootstrap Loader C509-L 10.4.1.2 Data and EOT Block Definition Data and EOT transfer blocks are used by the bootstrap loader to transfer data from the host to the XRAM of the MCU. A data block contains a bulk of data, which has to be copied to the XRAM beginning at an address which is defined by startaddress of a preceding header block. The number of data bytes is also specified by the blocklength field of a proceeding header block. The EOT block contains the last bytes of a data transmission to the XRAM. The number of the remaining relevant bytes in the EOT block is given in no. of bytes. Figure 10-11 shows the structure of Data and EOT block. Figure 10-11 Data Block and EOT Block Structure Semiconductor Group 10-16 1997-10-01 Bootstrap Loader C509-L 10.4.2 Operating Mode Selection When the bootstrap loader enters phase III, it first waits for an eight byte long header block from the host, which will be confirmed with an acknowledge byte (55H). The header block contains the information for the selection of the operating mode. Depending on this data the bootstrap loader selects and activates the desired operating mode. This select procedure shows the block diagram in figure 10-12. Figure 10-12 Operating Mode Selection Procedure If the MCU receives an incorrect header block, e.g. because of a bad serial transmission, the bootstrap loader sends, instead of an acknowledge byte, a checksum- or block error byte (see table 10-3) to the host and awaits the header block again. In this case the host may react by resending the header block or by releasing a message to the customer. The flowchart in figure 10-13 shows the structure of the phase III bootstrap loader part in detail. Semiconductor Group 10-17 1997-10-01 Bootstrap Loader C509-L Figure 10-13 Flowchart of Phase III Semiconductor Group 10-18 1997-10-01 Bootstrap Loader C509-L 10.4.2.1 Selection of Operating Mode 0 Operating mode 0 is used to transfer a program from the host to the XRAM of the MCU via serial interface. The header block, which has to be prepared and sent by the host for the activation of operating mode 0 must have the structure as shown in figure 10-11. Figure 10-14 Header Block for Operating Mode 0 The operating mode 0 header block transfers the 16-bit XRAM startaddress for the following data blocks, the number of data bytes in the following data or EOT blocks (blocklength), and a checksum byte. After confirming the received header block, the bootstrap loader enters mode 0, in which the desired data is transmitted from the host to the XRAM of the MCU using the two transfer blocks of the types DATA and EOT, which are shown in figure 10-11. The complete communication for mode 0 (including entering mode 0) between the host and the MCU after the synchronization shows the block diagram in figure 10-15. If an error occurs while transmitting data blocks, the host software has to react on error codes, sent by the bootstrap loader when rejecting a block. This case is illustrated in the block diagram of figure 10-16. Semiconductor Group 10-19 1997-10-01 Bootstrap Loader C509-L Figure 10-15 Operating Mode 0 Communication Structure Semiconductor Group 10-20 1997-10-01 Bootstrap Loader C509-L Figure 10-16 Handling Transmission Errors in Operating Mode 0 If the host sends a header block or a block that is not implemented in the protocol (a block type number higher than 02H), the bootstrap loader reacts in a similar way as described in the figure above, with the exception, that now a block error code (FEH) is sent to the host. It is up to the host software to handle this error properly. The bootstrap loader flowchart of the complete transfer protocol of mode 0 is shown in figure 10-17. Semiconductor Group 10-21 1997-10-01 Bootstrap Loader C509-L Figure 10-17 Bootstrap Loader Flowchart of Operating Mode 0 Semiconductor Group 10-22 1997-10-01 Bootstrap Loader C509-L 10.4.2.2 Selection of Operating Mode 1 Mode 1 is used to execute a custom program in the XRAM of the MCU at a given start address. The header block, which has to be prepared and sent by the host for the activation of operating mode 1 has the structure as shown in figure 10-18. Figure 10-18 Header Block for Operating Mode 1 The operating mode 1 header block transfers the 16-bit XRAM startaddress for program execution in the XRAM, three dummy bytes, and a checksum byte. After sending the appropriate header block for mode 1, no further serial communication is necessary. The block diagram for the communication between the host and the MCU is shown in figure 10-19: Figure 10-19 Operating Mode 1 Communication Structure Mode 1 swaps the XRAM to code memory by setting the corresponding swap-bit in SFR SYSCON1 and starts the program execution in the XRAM at any start address given in the header block at startaddress. Note: If the supported interrupts TIMER 0 and SINT 0 are used as described in section 10.1, the XRAM area from F400H to F41FH is reserved for interrupt handling routines. Therefore startaddress has to be greater than or equal to F420H. The corresponding bootstrap loader flowchart of mode 1 is shown in figure 10-20. Semiconductor Group 10-23 1997-10-01 Bootstrap Loader C509-L Figure 10-20 Bootstrap Loader Flowchart of Operating Mode 1 10.4.2.3 Selection of Operating Mode 2 Mode 2 is used to calculate a checksum of an external FLASH memory sector beginning at a startaddress with the specified length datalength. The header block, which has to be prepared and sent by the host for the activation of operating mode 2 is shown in figure 10-21. Figure 10-21 Header Block for Operating Mode 2 The operating mode 2 header block transfers the 16-bit startaddress of the external FLASH memory block, which has to be checked, the number of bytes (datalength), which have to be checked beginning at startaddress, a dummy byte, and a checksum byte. Mode 2 calculates a checksum of any area of the external FLASH memory starting at startaddress with a length of datalength (see also section 10.2.2). The endaddress of the corresponding memory block is startaddress + datalength. The two calculated checksum bytes are compared with two fixed checksum values which must be placed at the end of the checked external FLASH memory block, that is at addresses startaddress + datalength + 1 and startaddress + datalength + 2. If these checksum values are equal to the calculated checksums, an acknowledge byte (55H) is sent to the host. Otherwise the checksum error code (FEH) is transmitted to the host. Semiconductor Group 10-24 1997-10-01 Bootstrap Loader C509-L The block diagram in figure 10-22 shows the mode 2 checksum calculation in operating mode 2. Figure 10-22 Operating Mode 2 Communication Structure Semiconductor Group 10-25 1997-10-01 Bootstrap Loader C509-L Figure 10-23 shows the bootstrap loader flowchart of operating mode 2. Figure 10-23 Bootstrap Loader Flowchart of Operating Mode 2 Semiconductor Group 10-26 1997-10-01 Bootstrap Loader C509-L 10.4.2.4 Selection of Operating Mode 3 Mode 3 is used to execute a custom software in the external FLASH memory at any start address. The header block, which has to be prepared and sent by the host for the activation of operating mode 3 has the structure as shown in figure 10-24. Figure 10-24 Header Block for Operating Mode 3 Mode 3 performs a direct program execution at a given startaddress, which is sent in the header block. After sending the appropriate header block no further serial communication is necessary for this mode. The block diagram for the communication between the host and the MCU in mode 3 is shown in figure 10-25. Figure 10-25 Operating Mode 3 Communication Structure Note: The start address startaddress has to be greater than 200H, because in the bootstrap mode the bootstrap loader overlaps the code address area of the external FLASH memory from 0000H to 01FFH. Semiconductor Group 10-27 1997-10-01 Bootstrap Loader C509-L Figure 10-26 shows the bootstrap loader flowchart of operating mode 3 as flowchart: Figure 10-26 Bootstrap Loader Flowchart of Operating Mode 3 Semiconductor Group 10-28 1997-10-01 Bootstrap Loader C509-L 10.5 Description of the Bootstrap Loader Subroutines This section describes the software of the bootstrap loader with its most important subroutines and start addresses, which can be used by the customer for own purposes. This technical reference is valid for C509-L parts with a stepping code “CA” or later. Table 10-5 shows the subroutines of the bootstrap loader which can be used by the customer, when executing custom programs. Table 10-5 Bootstrap Loader Subroutines - Survey Address Function Registers Description 000EH SendByte In : A - Byte to send Out : None Send a byte to the serial interface 0 0016H SendAckn In : None Out : None Send an acknowledge code (55H) to the serial interface 0 001BH SendBlockErr In : None Out : None Send a block error code (FFH) to the serial interface 0 0074H CalcBaudRate In : TH0/TL0 - measured value for test byte in T0 Out : R1/R2 value for S0REL Calculate the value for the 10 bit baud rate generator reload register S0REL of the serial interface 0 depending on the value of T0 (TH0/TL0) for receiving the test byte (00H) 00A6H CheckBaud In : None Out : None The complete baud rate synchronization: 1. Prepare the timer 0 for measurement 2. Wait for the test byte from host 3. Measure the time between the start bit and the stop bit 4. Calculate the baudrate from the value of timer 0 (T0) 5. Initialize the serial interface 0 by setting the baud rate and the serial parameters (8N2) 6. Send an acknowledge code (55H) to the host Semiconductor Group 10-29 1997-10-01 Bootstrap Loader C509-L Table 10-5 Bootstrap Loader Subroutines - Survey (cont’d) Address Function Registers Description 00C7H GetBlock In : R7 - block length Out : None Get an amount (in R7) of data bytes from the host and save it to a temporary buffer starting at address 70H and ending at address FFH. The last received byte contains the checksum of the data block. Examine the sent checksum and send back a checksum error code, if it is incorrect. 00E9H CalcChks In Calculate the checksum of the data block starting at address in R0 with a length of R1. The checksum is saved in A. 00F0H CalcChksFLASH In : DPTR - start address of the area in the FLASH memory R4/R5 - length of the FLASH memory area Out : R0 - calculated checksum #1 R1 - calculated checksum #2 Calculate the special checksum of an area in the FLASH memory starting at address in DPTR with a length of R4/ R5 (high, low). The checksums #1 and #2 are saved in R0 and R1. 0119H CheckFLASH In : R2/R3 - start address of corresponding FLASH memory block Out : C - carry flag Check if the FLASH memory block starting at address R2/R3 contains a functional custom program. 1. Check the ID bytes of the FLASH memory block 2. Calculate the checksum of the given memory block 3. Set the carry flag if no custom program exists 0161H Block2XRAM In Copy the contents of the temporary buffer starting at address in R0 with a length of R1 to the actual address (DPTR) in the XRAM. The data pointer DPTR is incremented automatically. Semiconductor Group : R0 - start address of the temporary buffer with length R1 Out : A - calculated checksum : R0 - start address of the temporary buffer R1 - length of the buffer DPTR - actual address in the XRAM Out : DPTR - actual address in the XRAM 10-30 1997-10-01 Bootstrap Loader C509-L Table 10-5 Bootstrap Loader Subroutines - Survey (cont’d) Address Function Registers Description 0168H CheckHeader In : R0 - start address of the temporary buffer Out : R1 - operating mode R2/R3, DPTR header data startaddress R4/R5 - header data datalength R7 - header data blocklength C - Carry flag Analyze the received header and save the header data into the corresponding registers. If the checked block is not of type HEADER, a block error code (FFH) is sent to the host and the carry flag C is set. 018AH SendCheckErr In : None Out : None Send a checksum error code to the serial interface 0 018FH Mode0 In : DPTR - start address of XRAM to copy a custom program R7 - length of the data blocks received via serial interface 0 Out : DPTR - actual address in the XRAM Activate operating mode 0. The header data must be received or the registers DPTR and R7 must be set manually, before this routine can work correctly. 01B1H Mode1 In : DPTR - address to start a custom program in the XRAM Out : None Activate operating mode 1, that is to start custom program in the XRAM at address in DPTR. Attention: This routine does not return, when finished. 01BBH Mode2 In : DPTR - start address of the area in the FLASH memory R4/R5 - length of the FLASH memory area Out : None Activate operating mode 2, that is to calculate a special checksum of a FLASH memory area given by the start address in DPTR and the area length in R4/R5. 01D6H Mode3 In Activate operating mode 3, that is to start a custom program in the FLASH memory at address in DPTR. Attention: This routine does not return, when finished. Semiconductor Group : DPTR - address to start a custom program in the FLASH memory Out : None 10-31 1997-10-01 Bootstrap Loader C509-L The bootstrap loader is sequentially working through the three phases. The addresses given in table 10-6 allow the customer to step into the bootstrap loader in several phases. Table 10-6 Further Bootstrap Loader Reference Addresses Address Function Description 0000H Main Start the complete bootstrap loader 0026H LookFLASH1 Phase I: Search for a functional custom program in the ext. FLASH memory sectors A and B 0035H LookFLASH2 Phase I: Search for a functional custom program only in the ext. FLASH memory sector B 0044H PrepSerial Phase II: Initialize the serial interface 0 and synchronize it to the host baud rate 004AH WaitHeader Phase III: Wait for the header to select the operating mode 004FH Header Phase III: Check the header block information and save it in specific registers 0054H Jump2Mode Phase III: Select and activate the operating mode given in register R1 Semiconductor Group 10-32 1997-10-01 Device Specifications C509-L 11 Device Specifications 11.1 Absolute Maximum Ratings Ambient temperature under bias (TA) ......................................................... Storage temperature (Tstg) .......................................................................... Voltage on VCC pins with respect to ground (VSS) ....................................... Voltage on any pin with respect to ground (VSS) ......................................... Input current on any pin during overload condition..................................... Absolute sum of all input currents during overload condition ..................... Power dissipation........................................................................................ – 40 to 110 °C – 65 °C to 150 °C – 0.5 V to 6.5 V – 0.5 V to VCC +0.5 V – 10 mA to 10 mA I 100 mA I 1W Note: Stresses above those listed under “Absolute Maximum Ratings” may cause permanent damage of the device. This is a stress rating only and functional operation of the device at these or any other conditions above those indicated in the operational sections of this specification is not implied. Exposure to absolute maximum rating conditions for longer periods may affect device reliability. During overload conditions (VIN > VCC or VIN < VSS) the Voltage on VCC pins with respect to ground (VSS) must not exceed the values defined by the absolute maximum ratings. 11.2 DC Characteristics TA = 0 to 70 °C for the SAB-C509 TA = – 40 to 85 °C for the SAF-C509 VCC = 5 V + 10%, – 5%; VSS = 0 V Parameter Symbol Limit Values min. max. Unit Test Condition Input low voltage (except EA, RESET, HWPD) VIL – 0.5 0.2 VCC – 0.1 V – Input low voltage (EA) VIL1 – 0.5 0.2 VCC – 0.3 V – Input low voltage (HWPD, RESET) VIL2 – 0.5 0.2 VCC V – Input low voltage (CMOS) (ports 0 - 9) VILC – 0.5 0.3 VCC V – Input high voltage (except RESET, XTAL2 and HWPD VIH 0.2 VCC + 0.9 VCC + 0.5 V – Input high voltage to XTAL2 VIH1 0.7 VCC VCC + 0.5 V – Input high voltage to RESET and HWPD VIH2 0.6 VCC VCC + 0.5 V – Input high voltage (CMOS) (ports 0 - 9) VIHC 0.7 VCC VCC + 0.5 V – CMOS input hysteresis (ports 1, 3 to 9) VIHYS 0.1 – V – Semiconductor Group 11-1 1997-10-01 Device Specifications C509-L Parameter Symbol Limit Values min. max. Unit Test Condition Output low voltage (ports 1, 2, 3, 4, 5, 6, 9) VOL – 0.45 V IOL = 1.6 mA 1) Output low voltage (ports ALE, PSEN/RDF, RO) VOL1 – 0.45 V IOL = 3.2mA 1) Output high voltage (ports 1, 2, 3, 4, 5, 6, 9) VOH 2.4 0.9 VCC – – V V IOH = –80 µA IOH = –10 µA Output high voltage (port 0 in external bus mode, ALE, PSEN/RDF, RO) VOH1 2.4 0.9 VCC – – V V IOH = –800 µA IOH = –80 µA 2) Output high voltage (CMOS) (ports 1, 2, 3, 4, 5, 6, 9) VOHC 0.9 VCC – V IOH = –800 µA Logic input low current (ports 1, 2, 3, 4, 5, 6, 9) IIL – 10 – 70 µA VIN = 0.45 V Logical 1-to-0 transition current (ports 1, 2, 3, 4, 5, 6, 9) ITL – 65 – 650 µA VIN = 2 V ILI – nA 0.45 < VIN < VCC nA 0.45 < VIN < VCC TA > 100 oC Input leakage current (port 0, 7, 8, HWPD) 6) (port 0 in CMOS) ± 100 ± 150 Input leakage current (EA, PRGEN) (ports 1, 2, 3, 4, 5, 6, 9 in CMOS) ILIC – ±1 µA 0.45 < VIN < VCC Input low current to RESET for reset ILI2 – 10 –100 µA VIN = 0.45 V Input low current (XTAL2) ILI3 – – 15 µA VIN = 0.45 V Input low current (PE/SWD, OWE) ILI4 – – 20 µA VIN = 0.45 V Pin capacitance C IO – 10 pF fC = 1 MHz TA = 25 oC Overload current IOV – ±5 mA Semiconductor Group 11-2 7) 8) 1997-10-01 Device Specifications C509-L Power Supply Current Parameter Symbol Limit Values typ. 9) max. 10) Unit Test Condition Active mode 12 MHz 16 MHz ICC ICC 31 41 37 50 mA mA 4) Idle mode 12 MHz 16 MHz ICC ICC 19 24 23 31 mA mA 5) IPD 30 50 µA VCC = 2…5.5 V 3) Power-down mode Notes : 1) Capacitive loading on ports 0 and 2 may cause spurious noise pulses to be superimposed on the VOL of ALE and port 1, 3, 4, 5, 6, and 9. The noise is due to external bus capacitance discharging into the port 0 and port 2 pins when these pins make 1-to-0 transitions during bus operation. In the worst case (capacitive loading > 100 pF), the noise pulse on ALE line may exceed 0.8 V. In such cases it may be desirable to qualify ALE with a schmitt-trigger, or use an address latch with a schmitt-trigger strobe input. 2) Capacitive loading on ports 0 and 2 may cause the VOH on ALE and PSEN/RDF to momentarily fall below the 0.9 VCC specification when the address lines are stabilizing. 3) IPD (power down mode) is measured under following conditions: EA = RESET = VCC; Port0 = Port7 = Port8 = VCC; XTAL1 = N.C.; XTAL2 = VSS; PE/SWD = OWE = VSS; HWDP = VCC; VAREF = VCC; VAGND = VSS; all other pins are disconnected. Hardware power down mode current (IPD) is measured with OWE =VCC or VSS. 4) ICC (active mode) is measured with: XTAL2 driven with tR/tF = 5 ns , VIL = VSS + 0.5 V, VIH = VCC – 0.5 V; XTAL1 = N.C.; EA = PE/SWD= VCC ; Port0 = Port7 = Port8 = VCC ; HWPD = VCC ; RESET = VSS; all other pins are disconnected. ICC would be slightly higher if a crystal oscillator is used. 5) ICC (idle mode) is measured with all output pins disconnected and with all peripherals disabled; XTAL2 driven with tR/tF = 5 ns, VIL = VSS + 0.5 V, VIH = VCC – 0.5 V; XTAL1 = N.C.; RESET = VCC; HWPD = VCC ; Port0 = Port7 = Port8 = VCC ; EA = PE/SWD = VSS; all other pins are disconnected; 6) Input leakage current for port 0 is measured with RESET = VCC. 7) Overload conditions occur if the standard operating conditions are exeeded, ie. the voltage on any pin exceeds the specified range (i.e. VOV > VCC + 0.5 V or VOV < VSS - 0.5 V). The supply voltage VCC and VSS must remain within the specified limits. The absolute sum of input currents on all port pins may not exceed 50 mA. 8) Not 100% tested, guaranteed by design characterization. 9) The typical ICC values are periodically measured at TA = +25 ˚C and VCC = 5 V but not 100% tested. 10)The maximum ICC values are measured under worst case conditions (TA = 0 ˚C or -40 ˚C and VCC = 5.5 V) Semiconductor Group 11-3 1997-10-01 Device Specifications C509-L ICC [mA] 60 50 40 de o eM v ti Ac 30 e od M tive ICC max ICC typ Ac e Idle 20 Mod Idle e Mod 10 3.5 8 12 16 fOSC [MHz] Figure 1 ICC Diagram Power Supply Current Calculation Formulas Parameter Symbol Formula Active mode) ICC typ ICC max 2.5 * fOSC + 0.6 3.1 * fOSC + 0.2 Idle mode ICC typ ICC max 1.4 * fOSC + 1.9 1.8 * fOSC + 1.8 Note : fosc is the oscillator frequency in MHz. ICC values are given in mA. Semiconductor Group 11-4 1997-10-01 Device Specifications C509-L 11.3 A/D Converter Characteristics TA = 0 to 70 °C for the SAB-C509 TA = – 40 to 85 °C for the SAF-C509 VCC = 5 V + 10%, – 5%; VSS = 0 V 4 V ≤ VAREF ≤ VCC+0.1 V ; VSS-0.1 V ≤ VAGND ≤ VSS+0.2 V Parameter Symbol Limit Values min. max. Unit Test Condition V 1) Analog input voltage VAIN VAGND VAREF Sample time tS 8 t IN 512 t IN 2) see table below 3) see table below Conversion time tADCC 48 t IN 832 t IN Total unadjusted error TUE – ±2 LSB 4) Internal resistance of reference voltage source RAREF – tADC / 250 kΩ tADC in [ns] Internal resistance of analog source RASRC kΩ tS in [ns] 3) 6) ADC input capacitance CAIN pF 6) 5) 6) - 0.25 tS / 500 – - 0.25 – 50 Notes see next page. Clock calculation table Conversion Clock Selection ADCL1 ADCL0 Prescaler CCP Sample Clock Selection ADST1 ADST0 Prescaler SCP Sample Time tS Conversion Time t ADCC 0 0 4 0 0 1 1 0 1 0 1 2 8 x tIN 16 x tIN 32 x tIN 64 x tIN 48 x tIN 56 x tIN 72 x tIN 104 x tIN 0 1 8 0 0 1 1 0 1 0 1 4 16 x tIN 32 x tIN 64 x tIN 128 x tIN 96 x tIN 112 x tIN 144 x tIN 208 x tIN 1 0 16 0 0 1 1 0 1 0 1 8 32 x tIN 64 x tIN 128 x tIN 256 x tIN 192 x tIN 224 x tIN 288 x tIN 416 x tIN 1 1 32 0 0 1 1 0 1 0 1 16 64 x tIN 128 x tIN 256 x tIN 512 x tIN 384 x tIN 448 x tIN 576 x tIN 832 x tIN Further timing conditions : t ADC min = 500 ns = CCP x CLP tIN = 1 / fOSC = CLP tSC = t ADC x SCP Semiconductor Group 11-5 1997-10-01 Device Specifications C509-L Notes: 1) VAIN may exeed VAGND or VAREF up to the absolute maximum ratings. However, the conversion result in these cases will be X000H or X3FFH, respectively. 2) During the sample time the input capacitance CAIN can be charged/discharged by the external source. The internal resistance of the analog source must allow the capacitance to reach their final voltage level within tS. After the end of the sample time tS, changes of the analog input voltage have no effect on the conversion result. 3) This parameter includes the sample time tS, the time for determining the digital result and the time for the calibration. Values for the conversion clock fADC depend on programming and can be taken from the table below. 4) TUE is tested at VAREF = 5.0 V, VAGND = 0 V, VCC = 4.9 V. It is guaranteed by design characterization for all other voltages within the defined voltage range. If an overload condition occurs on maximum 2 not selected analog input pins and the absolute sum of input overload currents on all analog input pins does not exceed 10 mA, an additional conversion error of 1/2 LSB is permissible. 5) During the conversion the ADC’s capacitance must be repeatedly charged or discharged. The internal resistance of the reference source must allow the capacitance to reach their final voltage level within the indicated time. The maximum internal resistance results from the programmed conversion timing. 6) Not 100% tested, but guaranteed by design characterization. Semiconductor Group 11-6 1997-10-01 Device Specifications C509-L 11.4 AC Characteristics VCC = 5 V + 10%, – 5%; VSS = 0 V TA = 0 to 70 °C for the SAB-C509 TA = – 40 to 85 °C for the SAF-C509 (CL for port 0, ALE and PSEN outputs = 100 pF; CL for all other outputs = 80 pF) Program Memory Characteristics Parameter Symbol Limit Values 16-MHz clock Duty Cycle 0.45 to 0.55 Unit Variable Clock 1/CLP = 3.5 MHz to 16 MHz min. max. min. max. ALE pulse width tLHLL 48 – CLP-15 – ns Address setup to ALE tAVLL 10 – TCLHmin-15 – ns Address hold after ALE tLLAX 10 – TCLHmin-15 – ns Address to valid instruction in tLLIV – 75 – 2 CLP-50 ns ALE to PSEN/RDF tLLPL 10 – TCLLmin-15 – ns PSEN/RDF pulse width tPLPH 73 – CLP+ TCLHmin-15 – ns PSEN/RDF to valid instruction in tPLIV – 38 – CLP+ TCLHmin-50 ns Input instruction hold after PSEN/ RDF tPXIX 0 – 0 – ns Input instruction float after PSEN/ RDF tPXIZ *) – 15 – TCLLmin-10 ns Address valid after PSEN/RDF tPXAV *) 20 – TCLLmin-5 – ns Address to valid instruction in tAVIV – 95 – 2 CLP+ TCLHmin-55 ns Address float to PSEN/RDF tAZPL -5 -5 – ns *) Interfacing the C509-L to devices with float times up to 20 ns is permissible. This limited bus contention will not cause any damage to port 0 drivers. Semiconductor Group 11-7 1997-10-01 Device Specifications C509-L External Data Memory Characteristics Parameter Symbol Limit Values 16-MHz clock Duty Cycle 0.45 to 0.55 Unit Variable Clock 1/CLP= 3.5 MHz to 16 MHz min. max. min. max. RD pulse width tRLRH 158 – 3 CLP-30 – ns WR pulse width tWLWH 158 – 3 CLP-30 – ns Address hold after ALE tLLAX2 48 – CLP -15 – ns RD to valid data in tRLDV – 100 – 2 CLP+ TCLHmin-50 ns Data hold after RD tRHDX 0 0 – ns Data float after RD tRHDZ – 51 – CLP-12 ns ALE to valid data in tLLDV – 200 – 4 CLP-50 ns Address to valid data in tAVDV – 200 – 4 CLP+ TCLHmin-75 ns ALE to WR or RD tLLWL 73 103 CLP+ TCLLmin-15 CLP+ ns TCLLmin+15 Address valid to WR tAVWL 95 – 2 CLP-30 – WR or RD high to ALE high tWHLH 10 40 TCLHmin-15 TCLHmin+15 ns Data valid to WR transition tQVWX 5 – TCLLmin-20 – ns Data setup before WR tQVWH 163 – 3 CLP+ TCLLmin-50 – ns Data hold after WR tWHQX 5 – TCLHmin-20 – ns Address float after RD tRLAZ – 0 – 0 ns Semiconductor Group 11-8 ns 1997-10-01 Device Specifications C509-L External Clock Drive XTAL2 Parameter Symbol CPU Clock = 16 MHz Duty cycle 0.45 to 0.55 Variable CPU Clock 1/CLP = 3.5 to 16 MHz min. max. min. max. Unit Oscillator period CLP 62.5 62.5 62.5 285 ns High time TCLH 25 – 25 CLP-TCLL ns Low time TCLL 25 – 25 CLP-TCLH ns Rise time tR – 10 – 10 ns Fall time tF – 10 – 10 ns Oscillator duty cycle DC 0.45 0.55 25 / CLP 1 - 25 / CLP – Clock cycle TCL 25 37.5 CLP * DCmin CLP * DCmax ns Note: The 16 MHz values in the tables are given as an example for a typical duty cycle variation of the oscillator clock from 0.45 to 0.55. Semiconductor Group 11-9 1997-10-01 Device Specifications C509-L t LHLL ALE t AVLL t PLPH t LLPL t LLIV t PLIV PSEN t AZPL t PXAV t LLAX t PXIZ t PXIX Port 0 A0 - A7 Instr.IN A0 - A7 t AVIV Port 2 A8 - A15 A8 - A15 MCT00096 Program Memory Read Cycle t WHLH ALE PSEN t LLDV t LLWL t RLRH RD t RLDV t AVLL t RHDZ t LLAX2 t RLAZ Port 0 A0 - A7 from Ri or DPL t RHDX Data IN A0 - A7 from PCL Instr. IN t AVWL t AVDV Port 2 P2.0 - P2.7 or A8 - A15 from DPH A8 - A15 from PCH MCT00097 Data Memory Read Cycle Semiconductor Group 11-10 1997-10-01 Device Specifications C509-L t WHLH ALE PSEN t LLWL t WLWH WR t QVWX t AVLL t WHQX t LLAX2 Port 0 A0 - A7 from Ri or DPL t QVWH Data OUT A0 - A7 from PCL Instr.IN t AVWL Port 2 P2.0 - P2.7 or A8 - A15 from DPH A8 - A15 from PCH MCT00098 Data Memory Write Cycle External Clock Drive Drive XTAL2 Semiconductor Group 11-11 1997-10-01 Device Specifications C509-L VCC -0.5 V 0.2 VCC+0.9 Test Points 0.2 VCC -0.1 0.45 V MCT00039 AC Inputs during testing are driven at VCC - 0.5 V for a logic ’1’ and 0.45 V for a logic ’0’. Timing measurements are made at VIHmin for a logic ’1’ and VILmax for a logic ’0’. AC Testing: Input, Output Waveforms VOH -0.1 V VLoad +0.1 V Timing Reference Points VLoad VLoad -0.1 V VOL +0.1 V MCT00038 For timing purposes a port pin is no longer floating when a 100 mV change from load voltage occurs and begins to float when a 100 mV change from the loaded VOH/VOL level occurs. IOL/IOH ≥ ± 20 mA AC Testing: Float Waveforms Recommended Oscillator Circuits for Crystal Oscillators up to 16 MHz Semiconductor Group 11-12 1997-10-01 Device Specifications C509-L Package Outlines GPM05623 P-MQFP-100-2 (Plastic Metric Quad Flat Package) Sorts of Packing Package outlines for tubes, trays etc. are contained in our Data Book “Package Information”. SMD = Surface Mounted Device Semiconductor Group 11-13 Dimensions in mm 1997-10-01 Index C509-L 12 Bootstrap loader . . . . . . . . . . . . . . . . . 10-1 Code reference addresses . . . . . . 10-32 Description of the subroutines . . . 10-29 General functions . . . . . . . . . . . . . . 10-1 General Interface to the PC . . . . . . 10-2 The three phases . . . . . . . . . . . . . . 10-2 Phase I . . . . . . . . . . . . . . . . . . . . 10-3 Checksum calculation . . . . . . . . 10-7 Flowchart . . . . . . . . . . . . . . . . . 10-6 Phase II . . . . . . . . . . . . . . . . . . . . 10-8 Automatic synch. procedure . . . 10-9 Synchronization MCU-Host . . . 10-8 Phase III . . . . . . . . . . . . . . . . . . 10-13 Block transfer protocol . . . . . . 10-13 Flowchart . . . . . . . . . . . . . . . . 10-18 Operating mode 0 . . . . . . . . . . 10-19 Operating mode 1 . . . . . . . . . . 10-23 Operating mode 2 . . . . . . . . . . 10-24 Operating mode 3 . . . . . . . . . . 10-27 Operating mode selection . . . . 10-17 BSY . . . . . . . . . . . . . . . . . . . . 3-25, 6-108 Index Note: Bold page numbers refer to the main definition part of SFRs or SFR bits. A A/D converter . . . . . . . . . . . 6-104 to 6-118 Adjustment of the sample time . . . 6-116 Analog source impedance limits . . 6-117 Block diagram . . . . . . . . . . . . . . . . 6-105 Calibration mechanisms . . . . . . . . 6-118 Clock selection . . . . . . . . . . . . . . . 6-111 Conversion time calculation 6-112, 6-115 Conversion timing . . . . . . . . . . . . . 6-112 General operation . . . . . . . . . . . . . 6-104 Registers . . . . . . . . . . . . . 6-107 to 6-110 System clock relationship . . . . . . . 6-114 A/D converter characteristics . 11-5 to 11-6 Absolute maximum ratings . . . . . . . . . 11-1 AC . . . . . . . . . . . . . . . . . . . . . . . . 2-4, 3-25 AC characteristics . . . . . . . . . 11-7 to 11-11 Data memory read cycle . . . . . . . . 11-10 Data memory write cycle . . . . . . . . 11-11 External clock cycle . . . . . . . . . . . . 11-11 Program memory read cycle . . . . . 11-10 AC Testing Float waveforms . . . . . . . . . . . . . . 11-12 Input/output waveforms . . . . . . . . . 11-12 ACC . . . . . . . . . . . . . . . . . . 2-3, 3-19, 3-26 ADCL0 . . . . . . . . . . . . . . . . . . 3-26, 6-109 ADCL1 . . . . . . . . . . . . . . . . . . 3-26, 6-109 ADCON0 3-19, 3-21, 3-25, 5-8, 6-85, 6-108 ADCON1 . . . . . . . . . . . . . 3-19, 3-26, 6-108 ADDATH . . . . . . . . . . . . . 3-19, 3-25, 6-107 ADDATL . . . . . . . . . . . . . 3-19, 3-26, 6-107 ADEX . . . . . . . . . . . . . . . . . . . 3-25, 6-108 ADM . . . . . . . . . . . . . . . . . . . . 3-25, 6-108 ADST . . . . . . . . . . . . . . . . . . . . . . . . . 3-27 ADST0 . . . . . . . . . . . . . . . . . . 3-26, 6-109 ADST1 . . . . . . . . . . . . . . . . . . 3-26, 6-109 ALE signal . . . . . . . . . . . . . . . . . . . . . . . 4-4 ARCON . . . . . . . . . . . . . . . 3-22, 3-27, 6-76 C B B . . . . . . . . . . . . . . . . . . . . . 2-4, 3-19, 3-27 Basic CPU timing . . . . . . . . . . . . . . . . . 2-5 BD . . . . . . . . . . . . . . . . . . . . . . . 3-25, 6-85 Block diagram . . . . . . . . . . . . . . . . . . . . 2-2 Semiconductor Group 12-1 C/T . . . . . . . . . . . . . . . . . . . . . . 3-23, 6-21 CAFR . . . . . . . . . . . . . . . . 3-21, 3-27, 6-68 CC10 . . . . . . . . . . . . . . . . . . . . . . . . . 3-27 CC11 . . . . . . . . . . . . . . . . . . . . . . . . . 3-27 CC12 . . . . . . . . . . . . . . . . . . . . . . . . . 3-27 CC13 . . . . . . . . . . . . . . . . . . . . . . . . . 3-27 CC14 . . . . . . . . . . . . . . . . . . . . . . . . . 3-27 CC15 . . . . . . . . . . . . . . . . . . . . . . . . . 3-27 CC16 . . . . . . . . . . . . . . . . . . . . . . . . . 3-27 CC17 . . . . . . . . . . . . . . . . . . . . . . . . . 3-27 CC1EN . . . . . . . . . . . . . . . 3-20, 3-27, 6-66 CC1H0 . . . . . . . . . . . . . . . 3-20, 3-25, 6-31 CC1H1 . . . . . . . . . . . . . . . 3-20, 3-25, 6-31 CC1H2 . . . . . . . . . . . . . . . 3-20, 3-25, 6-31 CC1H3 . . . . . . . . . . . . . . . 3-20, 3-26, 6-31 CC1H4 . . . . . . . . . . . . . . . 3-20, 3-26, 6-31 CC1H5 . . . . . . . . . . . . . . . 3-20, 3-26, 6-31 CC1H6 . . . . . . . . . . . . . . . 3-20, 3-27, 6-31 CC1H7 . . . . . . . . . . . . . . . 3-20, 3-27, 6-31 CC1L0 . . . . . . . . . . . . . . . 3-20, 3-25, 6-31 CC1L1 . . . . . . . . . . . . . . . 3-20, 3-25, 6-31 CC1L2 . . . . . . . . . . . . . . . 3-20, 3-25, 6-31 CC1L3 . . . . . . . . . . . . . . . 3-20, 3-26, 6-31 CC1L4 . . . . . . . . . . . . . . . 3-20, 3-26, 6-31 CC1L5 . . . . . . . . . . . . . . . 3-20, 3-26, 6-31 1997-10-01 Index C509-L CMH7 . . . . . . . . . . . . . . . . 3-20, 3-27, 6-31 CML0 . . . . . . . . . . . . . . . . 3-20, 3-25, 6-31 CML1 . . . . . . . . . . . . . . . . 3-20, 3-25, 6-31 CML2 . . . . . . . . . . . . . . . . 3-20, 3-25, 6-31 CML3 . . . . . . . . . . . . . . . . 3-20, 3-26, 6-31 CML4 . . . . . . . . . . . . . . . . 3-20, 3-26, 6-31 CML5 . . . . . . . . . . . . . . . . 3-20, 3-26, 6-31 CML6 . . . . . . . . . . . . . . . . 3-20, 3-27, 6-31 CML7 . . . . . . . . . . . . . . . . 3-20, 3-27, 6-31 CMSEL . . . . . . . . . . . . . . . 3-20, 3-27, 6-59 COCAH0 . . . . . . . . . . . . . . . . . 3-24, 6-51 COCAH1 . . . . . . . . . . . . . . . . . 3-24, 6-51 COCAH2 . . . . . . . . . . . . . . . . . 3-24, 6-51 COCAH3 . . . . . . . . . . . . . . . . . 3-24, 6-50 COCAH4 . . . . . . . . . . . . . 3-25, 6-57, 6-58 COCAL0 . . . . . . . . . . . . . . . . . . 3-24, 6-51 COCAL1 . . . . . . . . . . . . . . . . . . 3-24, 6-51 COCAL2 . . . . . . . . . . . . . . . . . . 3-24, 6-51 COCAL3 . . . . . . . . . . . . . . . . . . 3-24, 6-50 COCAL4 . . . . . . . . . . . . . . 3-25, 6-57, 6-58 COCOEN0 . . . . . . . . . . . . 3-25, 6-57, 6-58 COCOEN1 . . . . . . . . . . . . 3-25, 6-57, 6-58 COCON0 . . . . . . . . . . . . . . . . . 3-25, 6-57 COCON1 . . . . . . . . . . . . . . . . . 3-25, 6-57 COCON2 . . . . . . . . . . . . . . . . . 3-25, 6-57 COMCLRH . . . . . . . . . . . . . . . . 3-21, 3-24 COMCLRL . . . . . . . . . . . . . . . . 3-21, 3-24 COMO . . . . . . . . . . . . . . . . . . . 3-25, 6-57 Compare/capture unit . . . . . . . . . . . . . 6-28 Alternate fucntions of pins . . . . . . . 6-30 Block diagram . . . . . . . . . . . . . . . . . 6-29 Capture functions Timer 2 with CRC, CC1 to CC3 . . . . . . . . . . . . . . . . . . . . 6-53 to 6-54 Compare functions . . . . . . . . . . . . . 6-44 CMx with compare timer . 6-60 to 6-62 CMx with timer 2 . . . . . . . . . . . . . 6-63 Compare mode 0 . . . . . . . 6-45, 6-48 Compare mode 1 . . . . . . . . . . . . 6-47 Concurrent compare with CC4 . . . . . . . . . . . . . . . . . . . . 6-55 to 6-58 Modulation range in compare mode 0 . . . . . . . . . . . . . . . . . . . . 6-69 to 6-70 Timer 2 in compare mode 2 . . . . 6-64 Timer 2 with CRC, CC1 to CC3 . . . . . . . . . . . . . . . . . . . . 6-50 to 6-52 Timer-/compare configurations . . 6-49 CC1L6 . . . . . . . . . . . . . . . . 3-20, 3-27, 6-31 CC1L7 . . . . . . . . . . . . . . . . 3-20, 3-27, 6-31 CC4EN . . . . . . . . . . . . . . . 3-20, 3-25, 6-57 CCEN . . . . . . . . . . . . . . . . 3-20, 3-24, 6-50 CCH1 . . . . . . . . . . . . . . . . 3-20, 3-25, 6-31 CCH2 . . . . . . . . . . . . . . . . 3-20, 3-25, 6-31 CCH3 . . . . . . . . . . . . . . . . 3-20, 3-25, 6-31 CCH4 . . . . . . . . . . . . . . . . 3-20, 3-25, 6-31 CCL1 . . . . . . . . . . . . . . . . . 3-20, 3-25, 6-31 CCL2 . . . . . . . . . . . . . . . . . 3-20, 3-25, 6-31 CCL3 . . . . . . . . . . . . . . . . . 3-20, 3-25, 6-31 CCL4 . . . . . . . . . . . . . . . . . 3-20, 3-25, 6-31 CCM0 . . . . . . . . . . . . . . . . . . . . . . . . . 3-27 CCM1 . . . . . . . . . . . . . . . . . . . . . . . . . 3-27 CCM2 . . . . . . . . . . . . . . . . . . . . . . . . . 3-27 CCM3 . . . . . . . . . . . . . . . . . . . . . . . . . 3-27 CCM4 . . . . . . . . . . . . . . . . . . . . . . . . . 3-27 CCM5 . . . . . . . . . . . . . . . . . . . . . . . . . 3-27 CCM6 . . . . . . . . . . . . . . . . . . . . . . . . . 3-27 CCM7 . . . . . . . . . . . . . . . . . . . . . . . . . 3-27 Chipmode selection . . . . . . . . . . . . . . 3-12 CLK . . . . . . . . . . . . . . . . . . . . . . . 3-25, 5-8 CLK0 . . . . . . . . . . . . . . . . . . . . . 3-26, 6-40 CLK1 . . . . . . . . . . . . . . . . . . . . . 3-26, 6-40 CLK10 . . . . . . . . . . . . . . . . . . . . 3-24, 6-40 CLK11 . . . . . . . . . . . . . . . . . . . . 3-24, 6-40 CLK12 . . . . . . . . . . . . . . . . . . . . 3-24, 6-40 CLK2 . . . . . . . . . . . . . . . . . . . . . 3-26, 6-40 CLKOUT . . . . . . . . . . . . . . . . . . . 3-23, 5-8 CLKP . . . . . . . . . . . . . . . . . . . . . . 3-24, 5-8 CLRMSK . . . . . . . . . . . . . . 3-21, 3-24, 6-64 CM0 . . . . . . . . . . . . . . . . . . . . . . . . . . 3-26 CM1 . . . . . . . . . . . . . . . . . . . . . . . . . . 3-26 CM2 . . . . . . . . . . . . . . . . . . . . . . . . . . 3-26 CM3 . . . . . . . . . . . . . . . . . . . . . . . . . . 3-26 CM4 . . . . . . . . . . . . . . . . . . . . . . . . . . 3-26 CM5 . . . . . . . . . . . . . . . . . . . . . . . . . . 3-26 CM6 . . . . . . . . . . . . . . . . . . . . . . . . . . 3-26 CM7 . . . . . . . . . . . . . . . . . . . . . . . . . . 3-26 CMEN . . . . . . . . . . . . . . . . 3-20, 3-27, 6-59 CMH0 . . . . . . . . . . . . . . . . 3-20, 3-25, 6-31 CMH1 . . . . . . . . . . . . . . . . 3-20, 3-25, 6-31 CMH2 . . . . . . . . . . . . . . . . 3-20, 3-25, 6-31 CMH3 . . . . . . . . . . . . . . . . 3-20, 3-26, 6-31 CMH4 . . . . . . . . . . . . . . . . 3-20, 3-26, 6-31 CMH5 . . . . . . . . . . . . . . . . 3-20, 3-26, 6-31 CMH6 . . . . . . . . . . . . . . . . 3-20, 3-27, 6-31 Semiconductor Group 12- 1997-10-01 Index C509-L Using CM0 to CM7 . . . . . 6-59 to 6-63 Using interrupts . . . . . . . . 6-71 to 6-74 Compare timer 1 operation . 6-65 to 6-68 Capture function . . . . . . . . . . . . . 6-68 Compare function . . . . . . . . . . . . 6-66 Table of CCU SFRs . . . . . . . . . . . . . 6-31 COMSETH . . . . . . . . . . . . . . . . 3-21, 3-24 COMSETL . . . . . . . . . . . . . . . . . 3-21, 3-23 CPU Accumulator . . . . . . . . . . . . . . . . . . . 2-3 B register . . . . . . . . . . . . . . . . . . . . . . 2-4 Basic timing . . . . . . . . . . . . . . . . . . . . 2-5 Fetch/execute diagram . . . . . . . . . . . 2-6 Functionality . . . . . . . . . . . . . . . . . . . 2-3 Stack pointer . . . . . . . . . . . . . . . . . . . 2-4 CRCH . . . . . . . . . . . . . . . . 3-21, 3-25, 6-35 CRCL . . . . . . . . . . . . . . . . 3-21, 3-25, 6-35 CT1CON . . . . 3-19, 3-21, 3-24, 6-39, 7-16 CT1F . . . . . . . . . . . . . . . . . 3-24, 6-40, 7-16 CT1P . . . . . . . . . . . . . . . . . . . . . 3-24, 6-40 CT1RELH . . . . . . . . . . . . . 3-21, 3-26, 6-41 CT1RELL . . . . . . . . . . . . . 3-21, 3-26, 6-41 CTCON . 3-19, 3-21, 3-26, 6-33, 6-39, 7-16 CTF . . . . . . . . . . . . . . . . . . 3-26, 6-39, 7-16 CTP . . . . . . . . . . . . . . . . . . . . . . 3-26, 6-40 CTRELH . . . . . . . . . . . . . . 3-21, 3-26, 6-41 CTRELL . . . . . . . . . . . . . . 3-21, 3-26, 6-41 CY . . . . . . . . . . . . . . . . . . . . . . . . 2-4, 3-25 DPH . . . . . . . . . . . . . . . . . . . . . 3-19, 3-23 DPL . . . . . . . . . . . . . . . . . . . . . 3-19, 3-23 DPSEL . . . . . . . . . . . . . . . . 3-19, 3-23, 4-6 E D Data memory . . . . . . . . . . . . . . . . . . . . 3-2 Datapointers . . . . . . . . . . . . . . . . 4-6 to 4-9 Access mechanism . . . . . . . . . . . . . . 4-7 Basic operation . . . . . . . . . . . . . . . . . 4-6 Example using multiple DPTRs . . . . . 4-9 Example using one DPTR . . . . . . . . . 4-8 Select register DPSEL . . . . . . . . . . . . 4-6 DC characteristics . . . . . . . . . . 11-1 to 11-6 Device Characteristics . . . . . 11-1 to 11-13 DIR0 . . . . . . . . . . . . . . . . . . 3-22, 3-23, 6-4 DIR1 . . . . . . . . . . . . . . . . . . 3-22, 3-23, 6-4 DIR2 . . . . . . . . . . . . . . . . . . 3-22, 3-23, 6-4 DIR3 . . . . . . . . . . . . . . . . . . 3-22, 3-24, 6-4 DIR4 . . . . . . . . . . . . . . . . . . 3-22, 3-26, 6-4 DIR5 . . . . . . . . . . . . . . . . . . 3-22, 3-27, 6-4 DIR6 . . . . . . . . . . . . . . . . . . 3-22, 3-27, 6-4 DIR9 . . . . . . . . . . . . . . . . . . 3-22, 3-27, 6-4 Direction registers . . . . . . . . . . . . . . . . . 6-4 Semiconductor Group 12-3 EA0 . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-10 EA1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-10 EADC . . . . . . . . . . . . . . . . 3-24, 6-110, 7-7 EAL . . . . . . . . . . . . . . . . . . . . . . . 3-24, 7-6 ECC1 . . . . . . . . . . . . . . . . . 3-24, 6-73, 7-9 ECMP . . . . . . . . . . . . . . . . . 3-23, 6-73, 7-8 ECR . . . . . . . . . . . . . . . . . . 3-23, 6-73, 7-8 ECS . . . . . . . . . . . . . . . . . . 3-23, 6-73, 7-8 ECT . . . . . . . . . . . . . . . . . . 3-23, 6-73, 7-8 ECT1 . . . . . . . . . . . . . . . . . 3-24, 6-73, 7-9 EICC1 . . . . . . . . . . . . 3-19, 3-24, 6-73, 7-9 EICC10 . . . . . . . . . . . . . . . . 3-24, 6-73, 7-9 EICC11 . . . . . . . . . . . . . . . . 3-24, 6-73, 7-9 EICC12 . . . . . . . . . . . . . . . . 3-24, 6-73, 7-9 EICC13 . . . . . . . . . . . . . . . . 3-24, 6-73, 7-9 EICC14 . . . . . . . . . . . . . . . . 3-24, 6-73, 7-9 EICC15 . . . . . . . . . . . . . . . . 3-24, 6-73, 7-9 EICC16 . . . . . . . . . . . . . . . . 3-24, 6-73, 7-9 EICC17 . . . . . . . . . . . . . . . . 3-24, 6-73, 7-9 Emulation concept . . . . . . . . . . . . . . . . 4-5 ES0 . . . . . . . . . . . . . . . . . . . . . . . 3-24, 7-6 ES1 . . . . . . . . . . . . . . . . . . . . . . . 3-23, 7-8 ESWC . . . . . . . . . . . . . . . . 3-10, 3-13, 3-24 ET0 . . . . . . . . . . . . . . . . . . . 3-24, 6-20, 7-6 ET1 . . . . . . . . . . . . . . . . . . . 3-24, 6-20, 7-6 ET2 . . . . . . . . . . . . . . . . . . . 3-24, 6-34, 7-6 EX0 . . . . . . . . . . . . . . . . . . . . . . . 3-24, 7-6 EX1 . . . . . . . . . . . . . . . . . . . . . . . 3-24, 7-6 EX2 . . . . . . . . . . . . . . . . . . . . . . . 3-24, 7-7 EX3 . . . . . . . . . . . . . . . . . . . . . . . 3-24, 7-7 EX4 . . . . . . . . . . . . . . . . . . . . . . . 3-24, 7-7 EX5 . . . . . . . . . . . . . . . . . . . . . . . 3-24, 7-7 EX6 . . . . . . . . . . . . . . . . . . . . . . . 3-24, 7-7 Execution of instructions . . . . . . . 2-5, 2-6 EXEN2 . . . . . . . . . . . . . . . . 3-24, 6-35, 7-7 EXF2 . . . . . . . . . . . . . . . . 3-24, 6-35, 7-14 External bus interface . . . . . . . . . . . . . . 4-1 ALE signal . . . . . . . . . . . . . . . . . . . . . 4-4 Overlapping of data/program memory 4-2 Program memory access . . . . . . . . . 4-2 Program/data memory timing . . . . . . 4-3 PSEN signal . . . . . . . . . . . . . . . . . . . 4-2 Role of P0 and P2 . . . . . . . . . . . . . . . 4-1 1997-10-01 Index C509-L IDLS . . . . . . . . . . . . . . . . . . . . . . 3-23, 9-3 IE0 . . . . . . . . . . . . . . . . . . . . . . 3-23, 7-11 IE1 . . . . . . . . . . . . . . . . . . . . . . 3-23, 7-11 IEN0 3-19, 3-21, 3-24, 6-20, 6-33, 7-6, 8-3 IEN1 3-19, 3-21, 3-24, 6-33, 6-110, 7-7, 8-3 IEN2 . . . . . . . . . . . . . 3-19, 3-23, 6-73, 7-8 IEN3 . . . . . . . . . . . . . 3-19, 3-24, 6-73, 7-9 IEX2 . . . . . . . . . . . . . . . . . . . . . 3-24, 7-14 IEX3 . . . . . . . . . . . . . . . . . . . . . 3-24, 7-14 IEX4 . . . . . . . . . . . . . . . . . . . . . 3-24, 7-14 IEX5 . . . . . . . . . . . . . . . . . . . . . 3-24, 7-14 IEX6 . . . . . . . . . . . . . . . . . . . . . 3-24, 7-14 INT0 . . . . . . . . . . . . . . . . . . . . . 3-24, 7-21 INT1 . . . . . . . . . . . . . . . . . . . . . 3-24, 7-21 INT2 . . . . . . . . . . . . . . . . . . . . . 3-23, 7-21 INT3 . . . . . . . . . . . . . . . . . . . . . 3-23, 7-21 INT4 . . . . . . . . . . . . . . . . . . . . . 3-23, 7-21 INT5 . . . . . . . . . . . . . . . . . . . . . 3-23, 7-21 INT6 . . . . . . . . . . . . . . . . . . . . . 3-23, 7-21 Interrupts . . . . . . . . . . . . . . . . . . . . . . . 7-1 Block diagram . . . . . . . . . . . . . 7-2 to 7-5 Enable registers . . . . . . . . . . . 7-6 to 7-9 External interrupts . . . . . . . . . . . . . . 7-21 Handling procedure . . . . . . . . . . . . 7-19 Priority registers . . . . . . . . . . . . . . . 7-10 Priority within level structure 7-17 to 7-18 Request flags . . . . . . . . . . . 7-11 to 7-16 Response time . . . . . . . . . . . . . . . . 7-22 Sources and vector addresses . . . . 7-20 IP0 . . . . . . 3-19, 3-21, 3-24, 7-10, 8-3, 8-6 IP1 . . . . . 3-17, 3-19, 3-21, 3-24, 6-4, 7-10 IRCON0 . . . . 3-19, 3-24, 6-33, 6-110, 7-14 IRCON1 . . . . . . . . . 3-19, 3-25, 6-74, 7-15 IRCON2 . . . . . . . . . 3-19, 3-24, 6-74, 7-15 IT0 . . . . . . . . . . . . . . . . . . . . . . 3-23, 7-11 IT1 . . . . . . . . . . . . . . . . . . . . . . 3-23, 7-11 External memory Bootstrap mode . . . . . . . . . . . . . . . . . 3-7 Chipmode control signals . . . . . . . . 3-14 Chipmode selection . . . . . . . . 3-12, 3-15 General interface . . . . . . . . . . . . . . . . 3-4 Normal mode . . . . . . . . . . . . . . . . . . . 3-5 Programming mode . . . . . . . . . . . . . . 3-8 Software unlock sequence . . . . . . . 3-13 XRAM mode . . . . . . . . . . . . . . . . . . . 3-6 F F0 . . . . . . . . . . . . . . . . . . . . . . . . 2-4, 3-25 F1 . . . . . . . . . . . . . . . . . . . . . . . . 2-4, 3-25 Fast power-on reset . . . . . . . . . . . . . . . 5-4 Features . . . . . . . . . . . . . . . . . . . . . . . . 1-2 Functional unita . . . . . . . . . . . . . . . . . . . 1-1 Fundamental structure . . . . . . . . . . . . . 2-1 G GATE . . . . . . . . . . . . . . . . . . . . 3-23, 6-21 General purpose registers . . . . . . . . . . 3-2 GF0 . . . . . . . . . . . . . . . . . . . . . . . 3-23, 9-3 GF1 . . . . . . . . . . . . . . . . . . . . . . . 3-23, 9-3 I I/O ports . . . . . . . . . . . . . . . . . . 6-1 to 6-18 I2FR . . . . . . . . . . . . . . . . . . . . . 3-25, 7-13 I3FR . . . . . . . . . . . . . . . . . . . . . 3-25, 7-13 IADC . . . . . . . . . . . . . . . . 3-24, 6-110, 7-14 ICC10 . . . . . . . . . . . . . . . . 3-24, 6-74, 7-15 ICC11 . . . . . . . . . . . . . . . . 3-24, 6-74, 7-15 ICC12 . . . . . . . . . . . . . . . . 3-24, 6-74, 7-15 ICC13 . . . . . . . . . . . . . . . . 3-24, 6-74, 7-15 ICC14 . . . . . . . . . . . . . . . . 3-24, 6-74, 7-15 ICC15 . . . . . . . . . . . . . . . . 3-24, 6-74, 7-15 ICC16 . . . . . . . . . . . . . . . . 3-24, 6-74, 7-15 ICC17 . . . . . . . . . . . . . . . . 3-24, 6-74, 7-15 ICMP0 . . . . . . . . . . . . . . . . 3-25, 6-74, 7-15 ICMP1 . . . . . . . . . . . . . . . . 3-25, 6-74, 7-15 ICMP2 . . . . . . . . . . . . . . . . 3-25, 6-74, 7-15 ICMP3 . . . . . . . . . . . . . . . . 3-25, 6-74, 7-15 ICMP4 . . . . . . . . . . . . . . . . 3-25, 6-74, 7-15 ICMP5 . . . . . . . . . . . . . . . . 3-25, 6-74, 7-15 ICMP6 . . . . . . . . . . . . . . . . 3-25, 6-74, 7-15 ICMP7 . . . . . . . . . . . . . . . . 3-25, 6-74, 7-15 ICR . . . . . . . . . . . . . . . . . . 3-26, 6-39, 7-16 ICS . . . . . . . . . . . . . . . . . . 3-26, 6-39, 7-16 IDLE . . . . . . . . . . . . . . . . . . . . . . 3-23, 9-3 Idle mode . . . . . . . . . . . . . . . . . . 9-4 to 9-5 Semiconductor Group L Logic symbol . . . . . . . . . . . . . . . . . . . . 1-3 M M0 . . . . . . . . . . . . . . . . . . . . . . 3-23, 6-21 M1 . . . . . . . . . . . . . . . . . . . . . . 3-23, 6-21 MD0 . . . . . . . . . . . . . . . . . 3-22, 3-26, 6-75 MD1 . . . . . . . . . . . . . . . . . 3-22, 3-26, 6-75 MD2 . . . . . . . . . . . . . . . . . 3-22, 3-26, 6-75 MD3 . . . . . . . . . . . . . . . . . 3-22, 3-26, 6-75 MD4 . . . . . . . . . . . . . . . . . 3-22, 3-26, 6-75 MD5 . . . . . . . . . . . . . . . . . 3-22, 3-27, 6-75 12- 1997-10-01 Index C509-L MDEF . . . . . . . . . . . . . . . . . . . . 3-27, 6-76 MDOV . . . . . . . . . . . . . . . . . . . . 3-27, 6-76 Memory map . . . . . . . . . . . . . . . . . . . . . 3-1 Memory organization . . . . . . . . . . . . . . 3-1 Bootstrap mode . . . . . . . . . . . . . . . . . 3-7 Chipmodes . . . . . . . . . . . . . . . . . . . . 3-3 Data memory . . . . . . . . . . . . . . . . . . . 3-2 General purpose registers . . . . . . . . . 3-2 Memory map . . . . . . . . . . . . . . . . . . . 3-1 Normal mode . . . . . . . . . . . . . . . . . . . 3-5 Program memory . . . . . . . . . . . . . . . . 3-2 Programming mode . . . . . . . . . . . . . . 3-8 SYSCON1 register . . . . . . . 3-10 to 3-11 XRAM mode . . . . . . . . . . . . . . . . . . . 3-6 Multiplication/division unit . . . . 6-75 to 6-81 Error flag . . . . . . . . . . . . . . . . . . . . . 6-80 Multiplication and division . . . . . . . . 6-78 Normalize and shift . . . . . . . 6-79 to 6-80 Operation . . . . . . . . . . . . . . . . . . . . . 6-77 Overflow flag . . . . . . . . . . . . . . . . . . 6-80 Registers . . . . . . . . . . . . . . . 6-75 to 6-76 MX0 . . . . . . . . . . . . . . . . . 3-25, 3-26, 6-108 MX1 . . . . . . . . . . . . . . . . . 3-25, 3-26, 6-108 MX2 . . . . . . . . . . . . . . . . . 3-25, 3-26, 6-108 MX3 . . . . . . . . . . . . . . . . . . . . . 3-26, 6-108 O Oscillator operation . . . . . . . . . . . 5-6 to 5-7 External clock source . . . . . . . . . . . . 5-7 On-chip oscillator circuitry . . . . . . . . . 5-7 Recommended oscillator circuit . . . . 5-6 Oscillator watchdog . . . . . . . . . . . 8-6 to 8-7 Behaviour at reset . . . . . . . . . . . . . . . 5-4 Block diagram . . . . . . . . . . . . . . . . . . 8-7 Functionality . . . . . . . . . . . . . . . . . . . 8-6 OV . . . . . . . . . . . . . . . . . . . . . . . . 2-4, 3-25 OWDS . . . . . . . . . . . . . . . . . . . . . 3-24, 8-6 P P . . . . . . . . . . . . . . . . . . . . . . . . . 2-4, 3-25 P0 . . . . . . . . . . . . . . . . . . . . . . . 3-22, 3-23 P1 . . . . . . . . . . . . . . . . . . . . . . . 3-22, 3-23 P2 . . . . . . . . . . . . . . . . . . . . . . . 3-22, 3-23 P3 . . . . . . . . . . . . . . . . . . . . . . . 3-22, 3-24 P4 . . . . . . . . . . . . . . . . . . . . . . . 3-22, 3-26 P5 . . . . . . . . . . . . . . . . . . . . . . . 3-22, 3-27 P6 . . . . . . . . . . . . . . . . . . . . . . . 3-22, 3-27 P7 . . . . . . . . . . . . . . . . . . . . . . . 3-22, 3-26 P8 . . . . . . . . . . . . . . . . . . . . . . . 3-22, 3-26 Semiconductor Group 12-5 P9 . . . . . . . . . . . . . . . . . . . . . . . 3-22, 3-27 Parallel I/O . . . . . . . . . . . . . . . . 6-1 to 6-18 PCON . . . . . . . . 3-21, 3-22, 3-23, 6-85, 9-3 PDE . . . . . . . . . . . . . . . . . . . . . . 3-23, 9-3 PDIR . . . . . . . . . . . 3-17, 3-24, 6-3, 6-4, 6-4 PDS . . . . . . . . . . . . . . . . . . . . . . 3-23, 9-3 Pin configuration . . . . . . . . . . . . . . . . . . 1-4 Pin definitions . . . . . . . . . . . . . . 1-5 to 1-12 PMOD . . . . . . . . . . . . . . . . . . . . . 3-24, 6-4 Port structure selection . . . . . . . . . . . . . 6-3 Ports . . . . . . . . . . . . . . . . . . . . . 6-1 to 6-18 Alternate functions . . . . . . . 6-14 to 6-15 Basic structure . . . . . . . . . . . . . . . . . 6-2 Bidirectional (CMOS) port structure . . . . . . . . . . . . . . . . . . . . 6-10 to 6-13 Hardware power down mode . . . 6-13 Input mode . . . . . . . . . . . . . . . . . 6-10 Output mode . . . . . . . . . . 6-11 to 6-12 Port loading and interfacing . . . . . . 6-17 Port timing . . . . . . . . . . . . . . . . . . . . 6-16 Quasi-bidirectional port structure . . . . . . . . . . . . . . . . . . . . . . 6-5 to 6-9 Basic circuitry . . . . . . . . . . . . . . . . 6-5 Output driver circuitry . . . . . . . . . . 6-6 Port 0 circuitry . . . . . . . . . . . . . . . . 6-8 Port 0/2 as address/data bus . . . . 6-9 Read-modify-write function . . . . . . . 6-17 Selection of port structure . . . . . . . . . 6-3 Types and structures . . . . . . . . . . . . 6-1 Power saving modes . . . . . . . . . . . . . . 9-1 Hardware enable . . . . . . . . . . . . . . . 9-2 Hardware power down mode . . . . . . 9-8 Reset timing . . . . . . . . . . . . . . . . 9-10 Status of external pins . . . . . . . . . . 9-9 Idle mode . . . . . . . . . . . . . . . . 9-4 to 9-5 Status of external pins . . . . . . . . . . 9-5 Register PCON . . . . . . . . . . . . . . . . . 9-3 Slow down mode . . . . . . . . . . . . . . . 9-7 Software power down mode . . . . . . . 9-6 Status of external pins . . . . . . . . . . 9-5 PRGEN0 . . . . . . . . . . . . . . . . . . 3-11, 3-24 PRGEN1 . . . . . . . . . . . . . . 3-10, 3-13, 3-24 Program memory . . . . . . . . . . . . . . . . . 3-2 PRSC 3-21, 3-22, 3-24, 6-22, 6-33, 6-85, 8-2 PSEN signal . . . . . . . . . . . . . . . . . . . . . 4-2 PSW . . . . . . . . . . . . . . 2-3, 2-4, 3-19, 3-25 1997-10-01 Index C509-L R Operating modes . . . . . . . . . . . . . 6-90 Registers . . . . . . . . . . . . . . . . . . . 6-91 SETMSK . . . . . . . . . . . . . . 3-21, 3-24, 6-64 SLR . . . . . . . . . . . . . . . . . . . . . 3-27, 6-76 SM . . . . . . . . . . . . . . . . . . . . . . 3-23, 6-91 SM0 . . . . . . . . . . . . . . . . . . . . . 3-23, 6-84 SM1 . . . . . . . . . . . . . . . . . . . . . 3-23, 6-84 SM20 . . . . . . . . . . . . . . . . . . . . 3-23, 6-84 SM21 . . . . . . . . . . . . . . . . . . . . 3-23, 6-91 SMOD . . . . . . . . . . . . . . . . . . . . 3-23, 6-85 SP . . . . . . . . . . . . . . . . . . . . 2-4, 3-19, 3-23 Special Function Registers . . . . . . . . . 3-17 Access using PDIR and RMAP . . . . 3-17 Table - address ordered . . . 3-23 to 3-27 Table - functional order . . . . 3-19 to 3-22 SWAP . . . . . . . . . . . 3-11, 3-13, 3-15, 3-24 SWC . . . . . . . . . . . . . . . . . 3-10, 3-13, 3-24 SWDT . . . . . . . . . . . . . . . . . . . . . 3-24, 8-3 Switching of the SWAP bit . . . . . . . . . 3-15 SYSCON . . . 3-17, 3-19, 3-24, 4-4, 4-10, 5-8, 6-4 SYSCON1 . . 3-10, 3-15, 3-19, 3-24, 10-23 System clock output . . . . . . . . . . 5-8 to 5-9 RB80 . . . . . . . . . . . . . . . . . . . . . 3-23, 6-84 RB81 . . . . . . . . . . . . . . . . . . . . . 3-23, 6-91 RD . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-24 Recommended oscillator circuits . . . 11-12 REN0 . . . . . . . . . . . . . . . . . . . . 3-23, 6-84 REN1 . . . . . . . . . . . . . . . . . . . . 3-23, 6-91 Reset Fast power-on reset . . . . . . . . . . . . . 5-4 Power-on reset timing . . . . . . . . . . . . 5-5 Reset operation . . . . . . . . . . . . . . 5-1 to 5-6 CPU timing after reset . . . . . . . . . . . . 5-3 Hardware reset timing . . . . . . . . . . . . 5-3 Reset circuitries . . . . . . . . . . . . . . . . . 5-2 Reset output RO . . . . . . . . . . . . . . . . 5-6 RI0 . . . . . . . . . . . . . . . . . . 3-23, 6-84, 7-12 RI1 . . . . . . . . . . . . . . . . . . 3-23, 6-91, 7-12 RMAP . . . . . . . . . . . . . . . . . . . . 3-17, 3-24 RS0 . . . . . . . . . . . . . . . . . . . . 2-4, 3-2, 3-25 RS1 . . . . . . . . . . . . . . . . . . . . 2-4, 3-2, 3-25 RxD0 . . . . . . . . . . . . . . . . . . . . . 3-24, 6-82 RxD1 . . . . . . . . . . . . . . . . . . . . . 3-27, 6-90 S T S0BUF . . . . . . . . . . . . . . . 3-21, 3-23, 6-84 S0CON . . . . . . . . . . 3-21, 3-23, 6-84, 7-12 S0P . . . . . . . . . . . . . . . . . . . . . . 3-24, 6-85 S0RELH . . . . . . . . . . . . . . 3-21, 3-24, 6-88 S0RELL . . . . . . . . . . . . . . . 3-21, 3-24, 6-88 S1BUF . . . . . . . . . . . . . . . 3-21, 3-23, 6-91 S1CON . . . . . . . . . . 3-21, 3-23, 6-91, 7-12 S1P . . . . . . . . . . . . . . . . . . . . . . 3-23, 6-91 S1RELH . . . . . . . . . . . . . . 3-21, 3-24, 6-93 S1RELL . . . . . . . . . . . . . . . 3-21, 3-23, 6-93 SD . . . . . . . . . . . . . . . . . . . . . . . . 3-23, 9-3 Serial interfaces Operating mode 0 . . . . . . . . 6-94 to 6-96 Operating mode 1/mode B . 6-97 to 6-99 Operating mode 2 and 3/mode A . . . . . . . . . . . . . . . . . . . 6-100 to 6-103 Serial interface 0 . . . . . . . . . 6-82 to 6-89 Baudrate generation . . . . 6-85 to 6-89 Multiprocessor communication . . 6-83 Operating modes . . . . . . . 6-82 to 6-83 Registers . . . . . . . . . . . . . . . . . . . 6-84 Serial interface 1 . . . . . . . . . 6-90 to 6-93 Baud rate generation . . . . 6-92 to 6-93 Multiprocessor communication . . 6-92 Semiconductor Group T0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-24 T0P0 . . . . . . . . . . . . . . . . . . . . . 3-24, 6-22 T0P1 . . . . . . . . . . . . . . . . . . . . . 3-24, 6-22 T1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-24 T1P0 . . . . . . . . . . . . . . . . . . . . . 3-24, 6-22 T1P1 . . . . . . . . . . . . . . . . . . . . . 3-24, 6-22 T2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-23 T2CM . . . . . . . . . . . . . . . . . . . . 3-25, 6-50 T2CON . 3-19, 3-21, 3-25, 6-33, 6-50, 7-13 T2EX . . . . . . . . . . . . . . . . . . . . . . . . . 3-23 T2I0 . . . . . . . . . . . . . . . . . . . . . 3-25, 6-34 T2I1 . . . . . . . . . . . . . . . . . . . . . 3-25, 6-34 T2P0 . . . . . . . . . . . . . . . . . . . . . 3-24, 6-34 T2P1 . . . . . . . . . . . . . . . . . . . . . 3-24, 6-34 T2PS . . . . . . . . . . . . . . . . . . . . 3-25, 6-34 T2PS1 . . . . . . . . . . . . . . . . . . . 3-26, 6-34 T2R0 . . . . . . . . . . . . . . . . . . . . . 3-25, 6-34 T2R1 . . . . . . . . . . . . . . . . . . . . . 3-25, 6-34 TB80 . . . . . . . . . . . . . . . . . . . . . 3-23, 6-84 TB81 . . . . . . . . . . . . . . . . . . . . . 3-23, 6-91 TCON . . . . . . . 3-19, 3-22, 3-23, 6-20, 7-11 TF0 . . . . . . . . . . . . . . . . . . 3-23, 6-20, 7-11 TF1 . . . . . . . . . . . . . . . . . . 3-23, 6-20, 7-11 12- 1997-10-01 Index C509-L TF2 . . . . . . . . . . . . . . . . . . 3-24, 6-35, 7-14 TH0 . . . . . . . . . . . . . . . . . . 3-22, 3-23, 6-23 TH1 . . . . . . . . . . . . . . . . . . 3-22, 3-23, 6-23 TH2 . . . . . . . . . . . . . . . . . . 3-21, 3-25, 6-35 TI0 . . . . . . . . . . . . . . . . . . . 3-23, 6-84, 7-12 TI1 . . . . . . . . . . . . . . . . . . . 3-23, 6-91, 7-12 Timer/counter Compare timers . . . . . . . . . . 6-39 to 6-42 Operating modes . . . . . . . 6-42 to 6-43 Registers . . . . . . . . . . . . . 6-39 to 6-41 Timer/counter 0 and 1 . . . . . 6-19 to 6-27 Mode 0, 13-bit timer/counter . . . . 6-24 Mode 1, 16-bit timer/counter . . . . 6-25 Mode 2, 8-bit rel. timer/counter . . 6-26 Mode 3, two 8-bit timer/counter . . 6-27 Registers . . . . . . . . . . . . . 6-20 to 6-23 Timer/counter 2 . . . . . . . . . . 6-33 to 6-38 Block diagram . . . . . . . . . . . . . . . 6-36 Capture mode . . . . . . . . . 6-53 to 6-54 Compare mode . . . . . . . . 6-50 to 6-52 Concurrent compare mode 6-55 to 6-56 Event counter mode . . . . . . . . . . . 6-37 Gated timer mode . . . . . . . . . . . . 6-37 Registers . . . . . . . . . . . . . 6-33 to 6-35 Reload mode . . . . . . . . . . . . . . . . 6-37 TL0 . . . . . . . . . . . . . . . . . . 3-22, 3-23, 6-23 TL1 . . . . . . . . . . . . . . . . . . 3-22, 3-23, 6-23 TL2 . . . . . . . . . . . . . . . . . . 3-21, 3-25, 6-35 TMOD . . . . . . . . . . . . . . . . 3-22, 3-23, 6-21 TR0 . . . . . . . . . . . . . . . . . . . . . . 3-23, 6-20 TR1 . . . . . . . . . . . . . . . . . . . . . . 3-23, 6-20 TxD0 . . . . . . . . . . . . . . . . . . . . . 3-24, 6-82 TxD1 . . . . . . . . . . . . . . . . . . . . . 3-27, 6-90 WDTREL . . . . . . . . . . . . . . 3-21, 3-23, 8-2 WDTS . . . . . . . . . . . . . . . . . . . . . 3-24, 8-3 WPSEL . . . . . . . . . . . . . . . . . . . . 3-23, 8-2 WR . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-24 X XMAP0 . . . . . . . . . . . . . . . . . . . 3-24, 4-10 XMAP1 . . . . . . . . . . . . . . . . . . . 3-24, 4-10 XPAGE . . . . . . . . . . . . . . . 3-19, 3-23, 4-12 XRAM operation . . . . . . . . . . . . . . . . . 4-10 Access control by SYSCON . . . . . . 4-10 Access with DPTR (16-bit) . . . . . . . 4-12 Access with R0/R1 (8-bit) . . . . . . . . 4-12 Programming example . . . . . . . . 4-15 Usage of port 2 as I/O port . . . . . 4-15 Write page address to port 2 . . . . 4-13 Write page address to XPAGE . . 4-14 XPAGE register . . . . . . . . . . . . . . 4-12 Behaviour of port 0 and 2 with MOVX . . . . . . . . . . . . . . . . . . . . . . . . . . 4-16 Reset operation . . . . . . . . . . . . . . . 4-16 W Watchdog timer . . . . . . . . . . . . . . 8-1 to 8-5 Behaviour in chipmodes . . . . . . . . . 3-16 Block diagram . . . . . . . . . . . . . . . . . . 8-1 Control flags . . . . . . . . . . . . . . . . . . . 8-3 Input clock selection . . . . . . . . . . . . . 8-2 Refreshing of the WDT . . . . . . . . . . . 8-5 Reset operation . . . . . . . . . . . . . . . . . 8-5 Starting of the WDT . . . . . . . . . . . . . . 8-4 Time-out periods . . . . . . . . . . . . . . . . 8-2 WDT . . . . . . . . . . . . . . . . . . . . . . 3-24, 8-3 WDTH . . . . . . . . . . . . . . . . . 3-21, 3-23, 8-1 WDTL . . . . . . . . . . . . . . . . . 3-21, 3-23, 8-1 WDTP . . . . . . . . . . . . . . . . . . . . . 3-24, 8-2 Semiconductor Group 12-7 1997-10-01