| The Datasheet Archive - 100 Million Datasheets from 7500 Manufacturers. |
DEVICE ON-CHIP MEMORY FLASH (Bytes) EEPROM (Bytes) SRAM (Bytes) In-Sys
Top Searches for this datasheetAtmel Microcontroller Family Product Selection Guide DEVICE ON-CHIP MEMORY FLASH (Bytes) EEPROM (Bytes) SRAM (Bytes) In-System Programmable (ISP) HARDWARE FEATURES Pins On-chip Oscillator Real Time Clock (RTC) Port Full Duplex Serial UART Watchdog Timer Timer/Counters Channels (10-bit) Analogue Comparator IDLE Power Down modes Interrupts MISCELLANEOUS Instructions External Clock Frequency Voltage Range EQUINOX SUPPORT TOOLS Starter System Development System Micro-ISP Series Programmer Micro-ISP Series Prog. Micro-Pro Device Programmer AllWriter Universal Programmer BASIC LITE BASIC FULL AT90S8515 Socket Stealer (DIL-40) ISP/PAR ZIF-ISP only only only (1K) ISP/PAR ZIF-ISP only only only ISP/PAR ZIF-ISP only only ISP/PAR ZIF-ISP only only ZIF-ISP ISP/PAR ZIF-ISP only only ZIF-ISP ISP/PAR ZIF-ISP only only only ZIF-ISP only only ACT-UPG1 UISP-UPG1 only only ACT-UPG1 UISP-UPG1 only only 12MHz 4.0-6.0V 10MHz 4.0-6.0V 10MHz 4.0-6.0V 8MHz 4.0-6.0V 8MHz 4.0-6.0V 8MHz 4.0-6.0V 8MHz 4.0-6.0V 6MHz 4.0-6.0V 6MHz 4.0-6.0V Farnell Order Code 111-806 302-2249 302-2286 302-2298 111-715 302-2225 111-788 302-2330 302-2365 Equinox Order Code EQ-8051-ST1 (UK) AVR-DV1 (UK) UISP-S4 UISP-LV4 MPW-PLUS (UK) SG-ALLWRITER AVR-BAS-LIT AVR-BAS-FULL SS-90S8515-P 6CH/10BIT 8CH/10BIT 32I/O, 8CH/10BIT 32I/O, 8CH/10BIT 128K 90S1200 90S2313 90S2343 90S4414 90S8515 90S2333 90S8535 MEGA603 MEGA103 speed depends voltage. Frequencies Currents listed 5.0V Please verify correct part codes voltage parts before ordering. SRAM FLASH Static In-System Programmable Input/Output Analogue Digital Convertor Serial Peripheral Interface Pulse Width Modulation Parallel programming mode Reprogrammable Code Memory EEPROM Parallel programming mode further information please contact Equinox Technologies Tel: 1204 529000 Fax: 1204 535555 E-mail: sales@equinox-tech.com Disclaimer: Whilst information supplied good faith, liable errors omissions. Please consult relevant Atmel datasheet. E&OE Atmel Microcontroller Family Product Selection Guide Continued. Device EQUINOX SUPPORT TOOLS AT90S8515 Socket Stealer (PLCC) DOBOX-MOD1 303-1068 121-022 SS-90S8515-J UC-PM1 90S1200 90S2313 90S2343 90S4414 90S8515 90S2333 90S8535 MEGA603 MEGA103 Farnell Order Code Equinox Order Code PACKAGE TYPES (Farnell Codes) 10PC 10SC 12PC 12SC 690-752 690-934 111-454 111-466 111-430 111-442 111-480 111-478 111-508 111-491 120-959 120-960 120-984 120-972 further information please contact Equinox Technologies Tel: 1204 529000 Fax: 1204 535555 E-mail: sales@equinox-tech.com Disclaimer: Whilst information supplied good faith, liable errors omissions. Please consult relevant Atmel datasheet. E&OE Features Utilizes AVR® RISC Architecture High-performance Low-power RISC Architecture 120/121 Powerful Instructions Most Single Clock Cycle Execution General Purpose Working Registers Peripheral Control Registers MIPS Throughput Data Nonvolatile Program Memory 64K/128K Bytes In-System Programmable Flash Endurance: 1,000 Write/Erase Cycles Bytes Internal SRAM 2K/4K Bytes In-System Programmable EEPROM Endurance: 100,000 Write/Erase Cycles Programming Lock Flash Program EEPROM Data Security Interface In-System Programming Peripheral Features On-chip Analog Comparator Programmable Watchdog Timer with On-chip Oscillator Programmable Serial UART Master/Slave Serial Interface Real Time Counter (RTC) with Separate Oscillator 8-bit Timer/Counters with Separate Prescaler Expanded 16-bit Timer/Counter system, with Separate Prescaler, Compare, Capture Modes Dual 10-bit Programmable Watchdog Timer with On-chip Oscillator 8-channel, 10-bit Special Microcontroller Features Low-power Idle, Power Save Power Down Modes Software Selectable Clock Frequency External Internal Interrupt Sources Specifications Low-power, High-speed CMOS Process Technology Fully Static Operation Power Consumption MHz, 25°C Active: Idle Mode: Power Down Mode: Packages Programmable Lines, Output Lines, Input Lines 64-pin TQFP Operating Voltages 3.6V (ATmega603L ATmega103L) 5.5V (ATmega603 ATmega103) Speed Grades (ATmega603L ATmega103L) (ATmega603 ATmega103) 8-bit Microcontroller with 64K/128K Bytes In-System Programmable Flash ATmega603 ATmega603L ATmega103 ATmega103L Preliminary Rev. 0945C-04/99 Configuration TQFP Description ATmega603/103 low-power CMOS 8-bit microcontroller based RISC architecture. executing powerful instructions single clock cycle, ATmega603/103 achieves throughputs approaching MIPS allowing system designer optimize power consumption versus processing speed. core based enhanced RISC architecture that combines rich instruction with general purpose working registers. registers directly connected Arithmetic Logic Unit (ALU), allowing independent registers accessed single instruction executed clock cycle. resulting architecture more code efficient while achieving throughputs times faster than conventional CISC microcontrollers. ATmega603/103 provides following features: 64K/128K bytes In-system Programmable Flash, 2K/4K bytes EEPROM, bytes SRAM, general purpose lines, Input lines, Output lines, general purpose working registers, Real Time Counter (RTC), flexible timer/counters with compare modes PWM, UART, programmable Watchdog Timer with internal oscillator, serial port three software selectable power saving modes. Idle Mode stops while allowing SRAM, timer/counters, port interrupt system continue functioning. Power Down mode saves register contents freezes oscillator, disabling other chip functions until next interrupt hardware reset. Power Save mode, timer oscillator continues run, allowing user maintain timer base while rest device sleeping. device manufactured using Atmel's high-density nonvolatile memory technology. on-chip Flash allows program memory reprogrammed in-system through serial interface conventional nonvolatile memory programmer. combining 8-bit RISC with large array Flash monolithic chip, Atmel ATmega603/103 powerful microcontroller that provides highly flexible cost effective solution many embedded control applications. ATmega603/103 supported with full suite program system development tools including: compilers, macro assemblers, program debugger/simulators, in-circuit emulators, evaluation kits. ATmega603/103 ATmega603/103 Block Diagram Figure ATmega603/103 Block Diagram PORTF BUFFERS AVCC DATA REGISTER PORTA DATA DIR. REG. PORTA DATA REGISTER PORTC 8-BIT DATA PORTA DRIVER/BUFFERS PORTC DRIVERS ANALOG AGND AREF INTERNAL OSCILLATOR OSCILLATOR XTAL1 XTAL1 PROGRAM COUNTER STACK POINTER WATCHDOG TIMER TOSC2 OSCILLATOR PROGRAM FLASH SRAM CONTROL REGISTER TIMING CONTROL TOSC1 INSTRUCTION REGISTER GENERAL PURPOSE REGISTERS TIMER/ COUNTERS RESET INSTRUCTION DECODER INTERRUPT UNIT CONTROL LINES EEPROM STATUS REGISTER PROGRAMMING LOGIC UART ANALOG COMPARATOR DATA REGISTER PORTE DATA DIR. REG. PORTE DATA REGISTER PORTB DATA DIR. REG. PORTB DATA REGISTER PORTD DATA DIR. REG. PORTD PORTE DRIVER/BUFFERS PORTB DRIVER/BUFFERS PORTD DRIVER/BUFFERS Comparison Between ATmega603 ATmega103 ATmega603 bytes In-System Programmable Flash, bytes EEPROM, bytes internal SRAM. ATmega603 does have ELPM instruction. ATmega103 128K bytes In-System Programmable Flash, bytes EEPROM, bytes internal SRAM. ATmega103 ELPM instruction, necessary reach upper half Flash memory constant table lookup. Table summarizes different memory sizes devices. Table Memory Size Summary Part ATmega603 ATmega103 Flash bytes 128K bytes EEPROM bytes bytes SRAM bytes bytes Descriptions Supply voltage Ground Port (PA7.PA0) Port 8-bit bi-directional port. Port pins provide internal pull-up resistors (selected each bit). Port output buffers sink drive displays directly. When pins used inputs externally pulled low, they will source current internal pull-up resistors activated. Port serves Multiplexed Address/Data when using external SRAM. port pins tri-stated when reset condition becomes active, even clock running. Port (PB7.PB0) Port 8-bit bi-directional port with internal pull-up resistors. Port output buffers sink inputs, Port pins that externally pulled low, will source current pull-up resistors activated. Port also serves functions various special features. port pins tri-stated when reset condition becomes active, even clock running. Port (PC7.PC0) Port 8-bit Output port. Port output buffers sink Port also serves Address output when using external SRAM. Since Port output only port, port pins tri-stated when reset condition becomes active. Port (PD7.PD0) Port 8-bit bi-directional port with internal pull-up resistors. Port output buffers sink inputs, Port pins that externally pulled will source current pull-up resistors activated. Port also serves functions various special features. port pins tri-stated when reset condition becomes active, even clock running. ATmega603/103 ATmega603/103 Port (PE7.PE0) Port 8-bit bi-directional port with internal pull-up resistors. Port output buffers sink inputs, Port pins that externally pulled will source current pull-up resistors activated. Port also serves functions various special features. port pins tri-stated when reset condition becomes active, even clock running Port (PF7.PF0) Port 8-bit Input port. Port also serves analog inputs ADC. RESET Reset input. external reset generated level RESET pin. Reset pulses longer than will generate reset, even clock running. Shorter pulses guaranteed generate reset. XTAL1 Input inverting oscillator amplifier input internal clock operating circuit. XTAL2 Output from inverting oscillator amplifier TOSC1 Input inverting Timer/Counter oscillator amplifier TOSC2 Output from inverting Timer/Counter oscillator amplifier External SRAM Write Strobe. External SRAM Read Strobe. Address Latch Enable used when External Memory enabled. strobe used latch loworder address bits) into address latch during first access cycle, AD0-7 pins used data during second access cycle. AVCC This supply voltage Converter. should externally connected low-pass filter. page details operation ADC. AREF This analog reference input converter. operations, voltage range AGND AVCC must applied this pin. AGND board separate analog ground plane, this should connected this ground plane. Otherwise, connect GND. This programming enable low-voltage serial programming mode. holding this during power-on reset, device will enter serial programming mode. function during normal operation. Clock Options Crystal Oscillator XTAL1 XTAL2 input output, respectively, inverting amplifier which configured onchip oscillator, shown Figure Either quartz crystal ceramic resonator used. Figure Oscillator Connections BUFFER XTAL2 XTAL1 Note: When using Oscillator clock external device, buffer should connected indicated figure. External Clock drive device from external clock source, XTAL2 should left unconnected while XTAL1 driven shown Figure Figure External Clock Drive Configuration EXTERNAL OSCILLATOR SIGNAL XTAL2 XTAL1 Timer Oscillator Timer Oscillator pins, TOSC1 TOSC2, crystal connected directly between pins. external capacitors needed. oscillator optimized with 32,768 watch crystal. external clock signal applied this goes through same amplifier having bandwidth kHz. external clock signal should therefore range kHz. ATmega603/103 ATmega603/103 Architectural Overview Figure ATmega603/103 RISC Architecture ATmega603/103 Architecture Data 8-bit 32K/64K Program Memory Program Counter Status Test Instruction Register General Purpose Registers Peripherals IndirectAddressing DirectAddressing Instruction Decoder Control Lines Data SRAM 2K/4K EEPROM uses Harvard architecture concept with separate memories buses program data. program memory accesses with single level pipeline. While instruction being executed, next instruction pre-fetched from program memory. This concept enables instructions executed every clock cycle. program memory in-system programmable Flash memory. With exceptions, instructions have single 16-bit word format, meaning that every program memory address contains single 16-bit instruction. During interrupts subroutine calls, return address program counter (PC) stored stack. stack effectively allocated general data SRAM, consequently stack size only limited total SRAM size usage SRAM. user programs must initialize reset routine (before subroutines interrupts executed). 16-bit stack pointer read/write accessible space. 4000 bytes data SRAM easily accessed through five different addressing modes supported architecture. flexible interrupt module control registers space with additional global interrupt enable status register. different interrupts have separate interrupt vector interrupt vector table beginning program memory. different interrupts have priority accordance with their interrupt vector position. lower interrupt vector address, higher priority. memory spaces architecture linear regular memory maps. General Purpose Register File Figure shows structure general purpose working registers CPU. Figure General Purpose Working Registers General Purpose Working Registers X-register byte X-register high byte Y-register byte Y-register high byte Z-register byte Z-register high byte Addr. register operating instructions instruction have direct single cycle access registers. only exception five constant arithmetic logic instructions SBCI, SUBI, CPI, ANDI between constant register instruction load immediate constant data. These instructions apply second half registers register file R16.R31. general SBC, SUB, other operations between registers single register apply entire register file. shown Figure each register also assigned data memory address, mapping them directly into first locations user Data Space. Although being physically implemented SRAM locations, this memory organization provides great flexibility access registers, registers index register file. bytes SRAM available general data implemented addresses $0060 $0FFF. ATmega603/103 ATmega603/103 X-register, Y-register Z-register registers R26.R31 have some added functions their general purpose usage. These registers address pointers indirect addressing SRAM. three indirect address registers defined Figure Registers register ($1B) ($1A) register ($1D) register ($1F) ($1E) ($1C) different addressing modes these address registers have functions fixed displacement, automatic increment decrement (see descriptions different instructions). Arithmetic Logic Unit high-performance operates direct connection with general purpose working registers. Within single clock cycle, operations between registers register file executed. operations divided into three main categories arithmetic, logical bit-functions. Flash Program Memory ATmega603/103 contains 64K/128K bytes on-chip In-system Programmable Flash memory program storage. Since instructions single double 16-bit words, Flash organized Flash memory endurance least 1000 write/erase cycles. Constant tables allocated entire program memory space (see Load Program Memory ELPM Extended Load Program Memory instruction descriptions). SRAM Data Memory ATmega603/103 supports different configurations SRAM data memory listed following table: Table Memory Configurations Configuration Internal SRAM Data Memory 4000 4000 External SRAM Data Memory None Note: When using External SRAM, will available. Figure Memory Configurations Memory Configuration Program Memory $0000 Data Memory Registers Registers Internal SRAM (4000 $0FFF $0000 $001F $0020 $005F $0060 Program Flash (32K/64K $7FFF/$FFFF Memory Configuration Program Memory $0000 Data Memory Registers Registers Internal SRAM (4000 $0000 $001F $0020 $005F $0060 $0FFF $1000 Program Flash (32K/64K External SRAM $7FFF/ $FFFF $FFFF ATmega603/103 ATmega603/103 4096 first Data Memory locations address both Register file, Memory internal data SRAM. first locations address register file memory, next 4000 locations address internal data SRAM. optional external data SRAM used with ATmega603/103. This SRAM will occupy area remaining address locations address space. This area starts address following internal SRAM. external SRAM used, external memory lost addresses occupied internal memory. When addresses accessing SRAM memory space exceeds internal data memory locations, external data SRAM accessed using same instructions internal data memory access. When internal data memories accessed, read write strobe pins inactive during whole access cycle. External SRAM operation enabled setting MCUCR register. Accessing external SRAM takes additional clock cycle byte compared access internal SRAM. This means that commands LDS, STS, PUSH take additional clock cycle. stack placed external SRAM, interrupts, subroutine calls returns take clock cycles extra because two-byte program counter pushed popped. When external SRAM interface used with wait state, additional clock cycles used byte. This following effect: Data transfer instructions take extra clock cycles, whereas interrupt, subroutine calls returns will need four clock cycles more than specified instruction manual. five different addressing modes data memory cover: Direct, Indirect with Displacement, Indirect, Indirect with Pre-Decrement Indirect with Post-Increment. register file, registers feature indirect addressing pointer registers. Indirect with Displacement mode features address locations reach from base address given Z-register. When using register indirect addressing modes with automatic pre-decrement post-increment, address registers decremented incremented. entire data address space including general purpose working registers registers accessible through these addressing modes. next section detailed description different addressing modes. Program Data Addressing Modes ATmega603/103 RISC microcontroller supports powerful efficient addressing modes access program memory (Flash) data memory (SRAM, Register File Memory). This section describes different addressing modes supported architecture. figures, means operation code part instruction word. simplify, figures show exact location addressing bits. Register Direct, Single Register Figure Direct Single Register Addressing REGISTER FILE operand contained register (Rd). Register Direct, Registers Figure Direct Register Addressing, Registers REGISTER FILE Operands contained register (Rr) (Rd). result stored register (Rd). Direct Figure Direct Addressing MEMORY Operand address contained bits instruction word. destination source register address. ATmega603/103 ATmega603/103 Data Direct Figure Direct Data Addressing Data Space LSBs Rr/Rd $0000 $FFFF 16-bit Data Address contained LSBs two-word instruction. Rd/Rr specify destination source register. Data Indirect with Displacement Figure Data Indirect with Displacement Data Space $0000 REGISTER $FFFF Operand address result Z-register contents added address contained bits instruction word. Data Indirect Figure Data Indirect Addressing Data Space $0000 REGISTER $FFFF Operand address contents Z-register. Data Indirect With Pre-Decrement Figure Data Indirect Addressing with Pre-Decrement Data Space $0000 REGISTER $FFFF Z-register decremented before operation. Operand address decremented contents Z-register. ATmega603/103 ATmega603/103 Data Indirect With Post-Increment Figure Data Indirect Addressing with Post-Increment Data Space $0000 REGISTER $FFFF Z-register incremented after operation. Operand address content Z-register prior incrementing. Constant Addressing Using ELPM Instructions Figure Code Memory Constant Addressing PROGRAM MEMORY $0000 REGISTER $7FFF/$FFFF Constant byte address specified Z-register contents. MSBs select word address 32K), selects byte cleared (LSB high byte (LSB ELPM used, Page register RAMPZ used select high memory page (RAMPZ0 Page, RAMPZ0 High Page). ELPM does apply ATmega603. Direct Program Address, CALL Figure Direct Program Memory Addressing PROGRAM MEMORY $0000 LSBs $7FFF/$FFFF Program execution continues address immediate instruction words. Indirect Program Addressing, IJMP ICALL Figure Indirect Program Memory Addressing PROGRAM MEMORY $0000 REGISTER $7FFF/$FFFF Program execution continues address contained Z-register (i.e. loaded with contents Z-register). ATmega603/103 ATmega603/103 Relative Program Addressing, RJMP RCALL Figure Relative Program Memory Addressing PROGRAM MEMORY $0000 $7FFF/$FFFF Program execution continues address relative address -2048 2047. EEPROM Data Memory EEPROM memory organized separate data space, which single bytes read written. EEPROM endurance least 100,000 write/erase cycles. access between EEPROM described page specifying EEPROM address register, EEPROM data register, EEPROM control register. Memory Access Times Instruction Execution Timing This section describes general access timing concepts instruction execution internal memory access. driven System Clock directly generated from external clock crystal chip. internal clock division used. Figure shows parallel instruction fetches instruction executions enabled Harvard architecture fast-access register file concept. This basic pipelining concept obtain MIPS with corresponding unique results functions cost, functions clocks, functions power-unit. Figure Parallel Instruction Fetches Instruction Executions System Clock Instruction Fetch Instruction Execute Instruction Fetch Instruction Execute Instruction Fetch Instruction Execute Instruction Fetch Figure shows internal timing concept register file. single clock cycle operation using register operands executed, result stored back destination register. Figure Single Cycle Operation System Clock Total Execution Time Register Operands Fetch Operation Execute Result Write Back internal data SRAM access performed System Clock cycles described Figure Figure On-Chip Data SRAM Access Cycles System Clock Address Data Data Prev. Address Address "Interface external SRAM" page description access external SRAM. ATmega603/103 Read Write ATmega603/103 Memory space definition ATmega603/103 shown following table: Table ATmega603/103 Space Address (SRAM Address) ($5F) ($5E) ($5D) ($5C) ($5B) ($5A) ($59) ($58) ($57) ($56) ($55) ($54) ($53) ($52) ($51) ($50) ($4F) ($4E) ($4D) ($4C) ($4B) ($4A) ($49) ($48) ($47) ($46) ($45) ($44) ($43) ($41) ($3F) ($3E) ($3D) ($3C) Name SREG XDIV RAMPZ EICR EIMSK EIFR TIMSK TIFR MCUCR MCUSR TCCR0 TCNT0 OCR0 ASSR TCCR1A TCCR1B TCNT1H TCNT1L OCR1AH OCR1AL OCR1BH OCR1BL ICR1H ICR1L TCCR2 TCNT2 OCR2 WDTCR EEARH EEARL EEDR EECR Function Status REGister Stack Pointer High Stack Pointer XTAL Divide Control Register Page Select Register External Interrupt Control Register External Interrupt MaSK register External Interrupt Flag Register Timer/Counter Interrupt MaSK register Timer/Counter Interrupt Flag register General Control Register Status Register Timer/Counter0 Control Register Timer/Counter0 (8-bit) Timer/Counter0 Output Compare Register Asynchronous Mode Status Register Timer/Counter1 Control Register Timer/Counter1 Control Register Timer/Counter1 High Byte Timer/Counter1 Byte Timer/Counter1 Output Compare Register High Byte Timer/Counter1 Output Compare Register Byte Timer/Counter1 Output Compare Register High Byte Timer/Counter1 Output Compare Register Byte Timer/Counter1 Input Capture Register High Byte Timer/Counter1 Input Capture Register Byte Timer/Counter2 Control Register Timer/Counter2 (8-bit) Timer/Counter2 Output Compare Register Watchdog Timer Control Register EEPROM Address Register High EERPOM Address Register EEPROM Data Register EEPROM Control Register Table ATmega603/103 Space (Continued) Address (SRAM Address) ($3B) ($3A) ($39) ($38) ($37) ($36) ($35) ($32) ($31) ($30) ($2F) ($2E) ($2D) ($2C) ($2B) ($2A) ($29) ($28) ($27) ($26) ($25) ($24) ($23) ($22) ($21) ($20) Note: Name PORTA DDRA PINA PORTB DDRB PINB PORTC PORTD DDRD PIND SPDR SPSR SPCR UBRR ACSR ADMUX ADCSR ADCH ADCL PORTE DDRE PINE PINF Function Data Register, Port Data Direction Register, Port Input Pins, Port Data Register, Port Data Direction Register, Port Input Pins, Port Data Register, Port Data Register, Port Data Direction Register, Port Input Pins, Port Data Register Status Register Control Register UART Data Register UART Status Register UART Control Register UART Baud Rate Register Analog Comparator Control Status Register Multiplexer Select Register Control Status Register Data Register High Data Register Data Register, Port Data Direction Register, Port Input Pins, Port Input Pins, Port Reserved unused locations shown table different ATmega603/103 I/Os peripherals placed space. different locations directly accessed instructions transferring data between general purpose working registers space. registers within address range directly bit-accessible using instructions. these registers, value single bits checked using SBIS SBIC instructions. Refer instruction chapter more details. When using specific instructions OUT, register address used. When addressing registers SRAM, must added this address. register addresses throughout this document shown with SRAM address parentheses. compatibility with future devices, reserved bits should written zero accessed. Reserved memory addresses should never written. Some status flags cleared writing logical them. Note that instructions will operate bits register, writing back into flag read set, thus clearing flag. instructions work with registers only. ATmega603/103 ATmega603/103 different peripherals control registers explained following sections. Status Register SREG status register SREG space location ($5F) defined ($5F) Read/Write Initial value SREG Global Interrupt Enable global interrupt enable must (one) interrupts enabled. individual interrupt enable control then performed separate control registers. global interrupt enable register cleared (zero), none interrupts enabled independent individual interrupt enable settings. I-bit cleared hardware after interrupt occurred, RETI instruction enable subsequent interrupts. Copy Storage copy instructions (Bit LoaD) (Bit STore) source destination operated bit. from register register file copied into instruction, copied into register register file instruction. Half Carry Flag half carry flag indicates half carry some arithmetic operations. Instruction Description detailed information. Sign Bit, S-bit always exclusive between negative flag two's complement overflow flag Instruction Description detailed information. Two's Complement Overflow Flag two's complement overflow flag supports two's complement arithmetics. Instruction Description detailed information. Negative Flag negative flag indicates negative result from arithmetical logical operation. Instruction Description detailed information. Zero Flag zero flag indicates zero result from arithmetical logical operation. Instruction Description detailed information. Carry Flag carry flag indicates carry arithmetical logical operation. Instruction Description detailed information. Note that status register automatically stored when entering interrupt routine restored when returning from interrupt routine. This must handled software. Stack Pointer general 16-bit Stack Pointer effectively built 8-bit registers space locations ($5E) ($5D). ATmega603/103 supports memory, 16-bits used. ($5E) ($5D) Read/Write Initial value SP15 SP14 SP13 SP12 SP11 SP10 Stack Pointer points data SRAM stack area where Subroutine Interrupt Stacks located. This Stack space data SRAM must defined program before subroutine calls executed interrupts enabled. stack pointer must point above $60. Stack Pointer decremented when data pushed onto Stack with PUSH instruction, decremented when address pushed onto Stack with subroutine calls interrupts. Stack Pointer incremented when data popped from Stack with instruction, incremented when address popped from Stack with return from subroutine return from interrupt RETI. Page Select Register RAMPZ ($5B) Read/Write Initial value RAMPZ0 RAMPZ RAMPZ register normally used select which Page accessed pointer. ATmega603/103 does support more than SRAM memory, this register used only select which page program memory accessed when ELPM instruction used. different settings RAMPZ0 have following effects: RAMPZ0 RAMPZ0 Program memory address $0000- $7FFF (lower bytes) accessed ELPM Program memory address $8000- $FFFF (higher bytes) accessed ELPM Note that affected RAMPZ setting. ATmega603 does contain RAMPZ register, does have ELPM instruction. ordinary instruction reach entire program memory ATmega603. Control Register MCUCR Control Register contains control bits general functions. ($55) Read/Write Initial value MCUCR SRE: External SRAM Enable When (one), external data SRAM enabled, functions AD0-7 (Port A8-15 (Port activated alternate functions. Then overrides direction settings respective data direction registers. When cleared (zero), external data SRAM disabled, normal data direction settings used. SRW: External SRAM Wait State When (one), cycle wait state inserted external data SRAM access cycle. When cleared (zero), external data SRAM access executed with three-cycle scheme. Figure 51.External SRAM Access Cycle without wait states73 Figure 52.External SRAM Access Cycle with wait state74. Sleep Enable must (one) make enter sleep mode when SLEEP instruction executed. avoid entering sleep mode unless programmers purpose, recommended Sleep Enable just before execution SLEEP instruction. ATmega603/103 ATmega603/103 Bits SM1/SM0: Sleep Mode Select bits This selects between three available sleep modes shown following table: Table Sleep Mode Select Sleep Mode Idle Mode Reserved Power Down Power Save Bits Res: Reserved bits These bits reserved bits ATmega603/103 always read zero. XTAL Divide Control Register XDIV XTAL Divide Control Register used divide XTAL clock frequency number range 129. This feature used decrease power consumption when requirement processing power low. ($5C) Read/Write Initial value XDIVEN XDIV6 XDIV5 XDIV4 XDIV3 XDIV2 XDIV1 XDIV0 XDIV XDIVEN: XTAL Divide Enable When XDIVEN (one), clock frequency peripherals divided factor defined setting XDIV6 XDIV0. This cleared run-time vary clock frequency suitable application. Bits XDIV6.XDIV0: XTAL Divide Select Bits These bits define division factor that applies when XDIVEN (one). value these bits denoted following formula defines resulting clock frequency fclk: XTALf -129 value these bits only changed when XDIVEN zero. When XDIVEN one, value written simultaneously into XDIV6.XDIV0 taken division factor. When XDIVEN cleared zero, value written simultaneously into XDIV6.XDIV0 rejected. divider divides master clock input MCU, speed peripherals reduced when division factor used. Reset Interrupt Handling ATmega603/103 provides different interrupt sources. These interrupts separate reset vector each have separate program vector program memory space. interrupts assigned individual enable bits which must (one) together with I-bit status register order enable interrupt. lowest addresses program memory space automatically defined Reset Interrupt vectors. complete list vectors shown Table list also determines priority levels different interrupts. lower address higher priority level. RESET highest priority, next INT0 External Interrupt Request etc. Table Reset Interrupt Vectors Vector Program Address $0000 $0002 $0004 $0006 $0008 $000A $000C $000E $0010 $0012 $0014 $0016 $0018 $001A $001C $001E $0020 $0022 $0024 $0026 $0028 $002A $002C $002E Source RESET INT0 INT1 INT2 INT3 INT4 INT5 INT6 INT7 TIMER2 COMP TIMER2 TIMER1 CAPT TIMER1 COMPA TIMER1 COMPB TIMER1 TIMER0 COMP TIMER0 SPI, UART, UART, UDRE UART, READY ANALOG COMP Interrupt Definition Hardware Pin, Power-on Reset Watchdog Reset External Interrupt Request External Interrupt Request External Interrupt Request External Interrupt Request External Interrupt Request External Interrupt Request External Interrupt Request External Interrupt Request Timer/Counter2 Compare Match Timer/Counter2 Overflow Timer/Counter1 Capture Event Timer/Counter1 Compare Match Timer/Counter1 Compare Match Timer/Counter1 Overflow Timer/Counter0 Compare Match Timer/Counter0 Overflow Serial Transfer Complete UART, Complete UART Data Register Empty UART, Complete Conversion Complete EEPROM Ready Analog Comparator ATmega603/103 ATmega603/103 most typical program setup Reset Interrupt Vector Addresses are: Address $0000 $0002 $0004 $0006 $0008 $000A $000C $000E $0010 $0012 $0014 $0016 $0018 $001A $001C $001E $0020 $0022 $0024 $0026 $0028 $002A $002C $002E $0030 $0031 $0032 $0033 $0034 MAIN: <instr> r16, high(RAMEND); Main program start SPH,r16 r16, low(RAMEND) SPL,r16 Labels Code RESET EXT_INT0 EXT_INT1 EXT_INT2 EXT_INT3 EXT_INT4 EXT_INT5 EXT_INT6 EXT_INT7 TIM2_COMP TIM2_OVF TIM1_CAPT TIM1_COMPA TIM1_COMPB TIM1_OVF TIM0_COMP TIM0_OVF SPI_STC UART_RXC UART_DRE UART_TXC EE_RDY ANA_COMP Comments Reset Handler IRQ0 Handler IRQ1 Handler IRQ2 Handler IRQ3 Handler IRQ4 Handler IRQ5 Handler IRQ6 Handler IRQ7 Handler Timer2 Compare Handler Timer2 Overflow Handler Timer1 Capture Handler Timer1 CompareA Handler Timer1 CompareB Handler Timer1 Overflow Handler Timer0 Compare Handler Timer0 Overflow Handler Transfer Complete Handler UART Complete Handler Empty Handler UART Complete Handler Conversion Complete Handler EEPROM Ready Handler Analog Comparator Handler Reset Sources ATmega603/103 three sources reset: Power-On Reset. reset when supply voltage below power-on reset threshold POT). External Reset. reset when level present RESET more than Watchdog Reset. reset when Watchdog timer period expires Watchdog enabled. During reset, registers except Status register then their initial values, program starts execution from address $0000. instruction placed address $0000 must absolute jump instruction reset handling routine. program never enables interrupt source, interrupt vectors used, regular program code placed these locations. circuit diagram Figure shows reset logic. Table defines timing electrical parameters reset circuitry. Figure Reset Logic Power-On Reset Circuit RESET 100-500K 10-50K Reset Circuit COUNTER RESET Watchdog Timer SUT0 SUT1 On-Chip RC-Oscillator 14-Stage Ripple Counter INTERNAL RESET XTAL1 Delay Unit Table Reset Characteristics (VCC Symbol VPOT(1) VRST Parameter Power-On Reset Threshold (rising) Power-On Reset Threshold (falling) RESET Threshold Voltage TTOUT Reset Delay Time-Out Period 12.8 Condition VCC/2 16.0 19.2 Units cycles Note: Power-On Reset will work unless supply voltage been below VPOT (falling) ATmega603/103 ATmega603/103 Power-On Reset Power-On Reset (POR) circuit ensures that device reset from power-on. shown Figure internal timer clocked from Watchdog timer oscillator prevents from starting until after certain period after reached Power-On Threshold voltage VPOT, regardless rise time (see Figure 24). Fuse bits SUT1 SUT0 used select start-up time indicated Table table indicates that fuse programmed. user select start-up time according typical oscillator start-up time. number oscillator cycles used each time-out except shown Table frequency watchdog oscillator voltage dependent shown "Typical characteristics" page 110. Table Number watchdog oscillator cycles Time-out 16.0 Number cycles setting starts after clock cycles, used when external clock signal applied XTAL1 pin. This setting does oscillator, enables very fast start-up from sleep modes power down power save clock signal present during sleep. details, refer programming specification starting page built-in start-up delay sufficient, RESET connected directly external pull-up resistor. holding period after been applied, Power-On Reset period extended. Refer Figure timing example this. Figure Start-Up, RESET Tied VCC. VPOT RESET VRST TIME-OUT tTOUT INTERNAL RESET Figure Start-Up, RESET Controlled Externally VPOT RESET VRST TIME-OUT tTOUT INTERNAL RESET External Reset external reset generated level RESET pin. Reset pulses longer than will generate reset, even clock running. Shorter pulses guaranteed generate reset. When applied signal reaches Reset Threshold Voltage VRST positive edge, delay timer starts after Time-out period tTOUT expired. Figure External Reset During Operation RESET VRST TIME-OUT tTOUT INTERNAL RESET Watchdog Reset When Watchdog times out, will generate short reset pulse XTAL cycle duration. falling edge this pulse, delay timer starts counting Time-out period tTOUT. Refer page details operation Watchdog. ATmega603/103 ATmega603/103 Figure Watchdog Reset During Operation RESET TIME-OUT XTAL Cycle RESET TIME-OUT INTERNAL RESET tTOUT Status Register MCUSR Status Register provides information which reset source caused reset. ($54) Read/Write Initial value EXTRF PORF MCUSR description Bits Res: Reserved Bits These bits reserved bits ATmega603/103 always read zero. EXTRF: External Reset Flag After power-on reset, this undefined (X). will external reset. watchdog reset will leave this unchanged. PORF: Power-on Reset Flag This power-on reset. watchdog reset external reset will leave this unchanged. summarize, following table shows value these bits after three modes reset: Table PORF EXTRF Values after Reset Reset Source Power-on Reset External Reset Watchdog Reset EXTRF undefined unchanged PORF unchanged unchanged make these bits identify reset condition, user software should clear both PORF EXTRF bits early possible program. Checking PORF EXTRF values done before bits cleared. cleared before external watchdog reset occurs, source reset found using following truth table: Table Reset Source Identification EXTRF PORF Reset Source Watchdog Reset Power-on Reset External Reset Power-on Reset Interrupt Handling ATmega603/103 dedicated 8-bit Interrupt Mask control registers; EIMSK External Interrupt Mask register TIMSK Timer/Counter Interrupt Mask register. addition, other enable mask bits found peripheral control registers. When interrupt occurs, Global Interrupt Enable I-bit cleared (zero) interrupts disabled. user software (one) I-bit enable nested interrupts. I-bit (one) when Return from Interrupt instruction RETI executed. When Program Counter vectored actual interrupt vector order execute interrupt handling routine, hardware clears corresponding flag that generated interrupt. Some interrupt flags also cleared writing logic flag position(s) cleared. interrupt condition occurs when corresponding interrupt enable cleared (zero), interrupt flag will remembered until interrupt enabled, flag cleared software. more interrupt conditions occur when global interrupt enable cleared (zero), corresponding interrupt flag(s) will remembered until global interrupt enable (one), will executed order priority. Note that external level interrupt does have flag, will only remembered long interrupt condition active. Note that status register automatically stored when entering interrupt routine restored when returning from interrupt routine. This must handled software. External Interrupt Mask Register EIMSK ($59) Read/Write Initial value INT7 INT6 INT5 INT4 INT3 INT2 INT1 INT0 EIMSK Bits INT7 INT4: External Interrupt Request Enable When INT7- INT4 (one) I-bit Status Register (SREG) (one), corresponding external interrupt enabled. Interrupt Sense Control bits External Interrupt Control Register EICR defines whether external interrupt activated rising falling edge level sensed. Activity these pins will trigger interrupt request even enabled output. This provides generating software interrupt. Bits INT3 INT0: External Interrupt Request Enable When INT3 INT0 (one) I-bit Status Register (SREG) (one), corresponding external interrupt enabled. external interrupts always level triggered interrupts. Activity these pins will trigger interrupt request even enabled output. This provides generating software interrupt. When enabled, level triggered interrupt will generate interrupt request long held low. External Interrupt Flag Register EIFR ($58) Read/Write Initial value INTF7 INTF6 INTF5 INTF4 EIFR Bits INTF7 INTF4: External Interrupt Flags When event INT7 INT4 pins triggers interrupt request, corresponding interrupt flag, INTF7 INTF4 becomes (one). I-bit SREG corresponding interrupt enable bit, INT7 INT4 EIMSK, (one), will jump interrupt vector. flag cleared when interrupt routine executed. Alternatively, flag cleared writing logical Bits Res: Reserved Bits These bits reserved bits ATmega603/103 always read zero. ATmega603/103 ATmega603/103 External Interrupt Control Register EICR ($5A) Read/Write Initial value ISC71 ISC70 ISC61 ISC60 ISC51 ISC50 ISC41 ISC40 EICR Bits ISCX1, ISCX0: External Interrupt Sense Control bits External Interrupts activated external pins INT7 INT4 SREG I-flag corresponding interrupt mask EIMSK set. level edges external pins that activate interrupts defined following table: Table Interrupt Sense Control ISCX1 Note: ISCX0 Description level INTX generates interrupt request. Reserved falling edge INTX generates interrupt request. rising edge INTX generates interrupt request. When changing ISCX1/ISCX0 bits, interrupt must disabled clearing Interrupt Enable GIMSK Register. Otherwise interrupt occur when bits changed. value INTX sampled before detecting edges. edge interrupt selected, pulses that last longer than clock period will generate interrupt. Shorter pulses guaranteed generate interrupt. Observe that clock frequency lower than XTAL frequency XTAL divider enabled. level interrupt selected, level must held until completion currently executing instruction generate interrupt. enabled, level triggered interrupt will generate interrupt request long held low. Timer/Counter Interrupt Mask Register TIMSK ($57) Read/Write Initial value OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 OCIE0 TOIE0 TIMSK OCIE2: Timer/Counter2 Output Compare Interrupt Enable When OCIE2 (one) I-bit Status Register (one), Timer/Counter2 Compare Match interrupt enabled. corresponding interrupt vector $0012) executed Compare match Timer/Counter2 occurs, i.e., when OCF2 Timer/Counter Interrupt Flag Register TIFR. TOIE2: Timer/Counter2 Overflow Interrupt Enable When TOIE2 (one) I-bit Status Register (one), Timer/Counter2 Overflow interrupt enabled. corresponding interrupt vector $0014) executed overflow Timer/Counter2 occurs, i.e., when TOV2 Timer/Counter Interrupt Flag Register TIFR. TICIE1: Timer/Counter1 Input Capture Interrupt Enable When TICIE1 (one) I-bit Status Register (one), Timer/Counter1 Input Capture Event Interrupt enabled. corresponding interrupt vector $0016) executed capture-triggering event occurs PD4(IC1), i.e., when ICF1 Timer/Counter Interrupt Flag Register TIFR. OCE1A: Timer/Counter1 Output CompareA Match Interrupt Enable When OCIE1A (one) I-bit Status Register (one), Timer/Counter1 CompareA Match interrupt enabled. corresponding interrupt vector $0018) executed CompareA match Timer/Counter1 occurs, i.e., when OCF1A Timer/Counter Interrupt Flag Register TIFR. OCIE1B: Timer/Counter1 Output CompareB Match Interrupt Enable When OCIE1B (one) I-bit Status Register (one), Timer/Counter1 CompareB Match interrupt enabled. corresponding interrupt vector $001A) executed CompareB match Timer/Counter1 occurs, i.e., when OCF1B Timer/Counter Interrupt Flag Register TIFR. TOIE1: Timer/Counter1 Overflow Interrupt Enable When TOIE1 (one) I-bit Status Register (one), Timer/Counter1 Overflow interrupt enabled. corresponding interrupt vector $001C) executed overflow Timer/Counter1 occurs, i.e., when TOV1 Timer/Counter Interrupt Flag Register TIFR. OCIE0: Timer/Counter0 Output Compare Interrupt Enable When OCIE0 (one) I-bit Status Register (one), Timer/Counter0 Compare Match interrupt enabled. corresponding interrupt vector $001E) executed Compare match Timer/Counter0 occurs, i.e., when OCF0 Timer/Counter Interrupt Flag Register TIFR. TOIE0: Timer/Counter0 Overflow Interrupt Enable When TOIE0 (one) I-bit Status Register (one), Timer/Counter0 Overflow interrupt enabled. corresponding interrupt vector $0020) executed overflow Timer/Counter0 occurs, i.e., when TOV0 Timer/Counter Interrupt Flag Register TIFR Timer/Counter Interrupt Flag Register TIFR ($56) Read/Write Initial value OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOV0 TIFR OCF2: Output Compare Flag OCF2 (one) when compare match occurs between Timer/Counter2 data OCR2 Output Compare Register OCF2 cleared hardware when executing corresponding interrupt handling vector. Alternatively, OCF2 cleared writing logic flag. When I-bit SREG, OCIE2 (Timer/Counter2 Compare Interrupt Enable), OCF2 (one), Timer/Counter2 Output Compare Interrupt executed. TOV2: Timer/Counter2 Overflow Flag TOV2 (one) when overflow occurs Timer/Counter2. TOV2 cleared hardware when executing corresponding interrupt handling vector. Alternatively, TOV2 cleared writing logic flag. When I-bit SREG, TOIE2 (Timer/Counter1 Overflow Interrupt Enable), TOV2 (one), Timer/Counter2 Overflow Interrupt executed. mode, this when Timer/Counter2 advances from $00. ICF1: Input Capture Flag ICF1 (one) flag input capture event, indicating that Timer/Counter1 value been transferred input capture register ICR1. ICF1 cleared hardware when executing corresponding interrupt handling vector. Alternatively, ICF1 cleared writing logic flag. When SREG I-bit, TICIE1 (Timer/Counter1 Input Capture Interrupt Enable), ICF1 (one), Timer/Counter1 Capture Interrupt executed. OCF1A: Output Compare Flag OCF1A (one) when compare match occurs between Timer/Counter1 data OCR1A Output Compare Register OCF1A cleared hardware when executing corresponding interrupt handling vector. Alternatively, OCF1A cleared writing logic flag. When I-bit SREG, OCIE1A (Timer/Counter1 Compare Interrupt Enable), OCF1A (one), Timer/Counter1 Compare match Interrupt executed. OCF1B: Output Compare Flag OCF1B (one) when compare match occurs between Timer/Counter1 data OCR1B Output Compare Register OCF1B cleared hardware when executing corresponding interrupt handling vector. Alternatively, OCF1B cleared writing logic flag. When I-bit SREG, OCIE1B (Timer/Counter1 Compare match Interrupt Enable), OCF1B (one), Timer/Counter1 Compare match Interrupt executed. ATmega603/103 ATmega603/103 TOV1: Timer/Counter1 Overflow Flag TOV1 (one) when overflow occurs Timer/Counter1. TOV1 cleared hardware when executing corresponding interrupt handling vector. Alternatively, TOV1 cleared writing logic flag. When I-bit SREG, TOIE1 (Timer/Counter1 Overflow Interrupt Enable), TOV1 (one), Timer/Counter1 Overflow Interrupt executed. mode, this when Timer/Counter1 advances from $0000. OCF0: Output Compare Flag OCF0 (one) when compare match occurs between Timer/Counter0 data OCR0 Output Compare Register OCF0 cleared hardware when executing corresponding interrupt handling vector. Alternatively, OCF0 cleared writing logic flag. When I-bit SREG, OCIE0 (Timer/Counter2 Compare Interrupt Enable), OCF0 (one), Timer/Counter0 Output Compare Interrupt executed. TOV0: Timer/Counter0 Overflow Flag TOV0 (one) when overflow occurs Timer/Counter0. TOV0 cleared hardware when executing corresponding interrupt handling vector. Alternatively, TOV0 cleared writing logic flag. When SREG Ibit, TOIE0 (Timer/Counter0 Overflow Interrupt Enable), TOV0 (one), Timer/Counter0 Overflow interrupt executed. mode, this when Timer/Counter0 advances from $00. Interrupt Response Time interrupt execution response enabled interrupts clock cycles minimum. clock cycles after interrupt flag been set, program vector address actual interrupt handling routine executed. During this clock cycle period, Program Counter bytes) pushed onto Stack, Stack Pointer decremented vector normally jump interrupt routine, this jump takes clock cycles. interrupt occurs during execution multi-cycle instruction, this instruction completed before interrupt served. return from interrupt handling routine (same subroutine call routine) takes clock cycles. During these clock cycles, Program Counter bytes) popped back from Stack, Stack Pointer incremented When exits from interrupt, will always return main program execute more instruction before pending interrupt served. Sleep Modes enter three sleep modes, MCUCR must (one) SLEEP instruction must executed. bits MCUCR register select which sleep mode (Idle, Power Down, Power Save) will activated SLEEP instruction, Table enabled interrupt occurs while sleep mode, awakes, executes interrupt routine, resumes execution from instruction following SLEEP. contents register file, SRAM, memory unaltered. reset occurs during sleep mode, wakes executes from Reset vector Idle Mode When SM1/SM0 bits SLEEP instruction makes enter Idle Mode, stopping allowing SPI, UART, Analog Comparator, ADC, Timer/Counters, Watchdog interrupt system continue operating. This enables wake from external triggered interrupts well internal ones like Timer Overflow UART Receive Complete interrupts. wake-up from Analog Comparator interrupt required, analog comparator powered down setting ACD-bit Analog Comparator Control Status register ACSR. This will reduce power consumption Idle Mode. When wakes from Idle mode, starts program execution immediately. Power Down Mode When SM1/SM0 bits SLEEP instruction makes enter Power Down Mode. this mode, external oscillator stopped, while external interrupts Watchdog enabled) continue operating. Only external reset, watchdog reset enabled), external level interrupt wake MCU. Note that level triggered interrupt used wake-up from Power Down Mode, changed level must held some time wake MCU. This makes less sensitive noise. changed level sampled twice watchdog oscillator clock, input required level during this time, will wake period watchdog oscillator (nominal) 5.0V 25C. frequency watchdog oscillator voltage dependent shown section "Typical characteristics" page 110. When waking from Power Down Mode, there delay from wake-up condition occurs until wake-up becomes effective. This allows clock restart become stable after having been stopped. wake-up period defined same fuses that define reset time-out period. wake-up period equal clock reset period, shown Table wake-up condition disappears before wakes starts execute, e.g. level held long enough, interrupt causing wake-up will executed. Power Save Mode When SM1/SM0 bits SLEEP instruction makes enter Power Save Mode. This mode identical Power Down, with exception: Timer/Counter0 clocked asynchronously, i.e. ASSR set, Timer/Counter0 will during sleep. addition Power Down wake-up sources, device also wake from either Timer Overflow Output Compare event from Timer/Counter0 corresponding Timer/Counter0 interrupt enable bits TIMSK. ensure that part executes Interrupt routine when waking also global interrupt enable SREG. When waking from Power Save Mode external interrupt, instruction cycles executed before interrupt flags updated. When waking asynchronous timer, instruction cycles executed before flags updated. During these cycles, processor executes instructions, interrupt condition readable, interrupt routine started yet. Timer/Counters ATmega603/103 provides three general purpose Timer/Counters 8-bit T/Cs 16-bit T/C. Timer/Counter0 optionally asynchronously clocked from external oscillator. This oscillator optimized with 32.768 crystal, enabling Timer/Counter0 Real Time Clock (RTC). Timer/Counter0 prescaler. Timer/Counters have individual prescaling selection from same 10-bit prescaling timer. These Timer/Counters either used timer with internal clock timebase counter with external connection which triggers counting. ATmega603/103 ATmega603/103 Timer/Counter Prescalers Figure Prescaler Timer/Counter Timer/Counter2 10-BIT PRESCALER CK/256 CK/64 CS20 CS21 CS22 CS10 CS11 CS12 TIMER/COUNTER2 CLOCK SOURCE TCK2 TIMER/COUNTER1 CLOCK SOURCE TCK1 Timer/Counters four different prescaled selections are: CK/8, CK/64, CK/256 CK/1024 where clock. Observe that clock frequency lower than XTAL frequency XTAL divider enabled. Timer/Counters added selections external source stop, selected clock sources. Figure Timer/Counter0 Prescaler TOSC1 PCK0 10-BIT PRESCALER PCK0/32 PCK0/128 PCK0/8 PCK0/64 PCK0/256 CK/1024 CK/8 CS00 CS01 CS02 TIMER/COUNTER0 CLOCK SOURCE PCK0 PCK0/1024 clock source Timer/Counter0 prescaler named PCK0. PCK0 default connected main system clock Observe that clock frequency lower than XTAL frequency XTAL divider enabled. setting ASSR, Timer/Counter prescaler asynchronously clocked from TOSC1 pin. This enables Timer/Counter0 Real Time Clock (RTC). crystal connected between TOSC1 TOSC2 pins serve independent clock source Timer/Counter0. This oscillator optimized with 32.768 crystal. 8-bit Timer/Counters T/C0 T/C2 Figure shows block diagram Timer/Counter0. Figure Timer/Counter0 Block Diagram T/C0 OVER- T/C0 COMPARE FLOW MATCH 8-BIT DATA 8-BIT ASYNCH T/C0 DATA OCIE1B TICIE1 OCIE2 OCIE1A OCIE0 TOIE2 TOIE1 TOIE0 OCF0 TOV0 TIMER INT. MASK REGISTER (TIMSK) OCF2 TIMER INT. FLAG REGISTER (TIFR) ICF1 OCF2B OCF2A OCF0 TOV2 TOV1 TOV0 T/C0 CONTROL REGISTER (TCCR0) CS02 CS01 COM01 COM00 PWM0 CTC0 CS00 TIMER/COUNTER0 (TCNT0) CLEAR SOURCE UP/DOWN CONTROL LOGIC PCK0 8-BIT COMPARATOR OUTPUT COMPARE REGISTER0 (OCR0) ASYNCH. STATUS REGISTER (ASSR) OCR0UB ICR0UB TC0UB TCK0 SYNCH UNIT ATmega603/103 ATmega603/103 Figure Timer/Counter2 Block Diagram T/C2 OVER- T/C2 COMPARE FLOW MATCH OCIE1B 8-BIT DATA TICIE1 OCIE2 OCIE1A OCIE0 TOIE2 TOIE1 TOIE0 OCF2 TIMER INT. MASK REGISTER (TIMSK) OCF2 TOV2 TIMER INT. FLAG REGISTER (TIFR) ICF1 OCF2B OCF2A OCF0 TOV2 TOV1 TOV0 T/C2 CONTROL REGISTER (TCCR2) CS21 COM21 COM20 PWM2 CTC2 CS22 CS20 TIMER/COUNTER2 (TCNT2) CLEAR SOURCE UP/DOWN CONTROL LOGIC 8-BIT COMPARATOR OUTPUT COMPARE REGISTER2 (OCR2) Note: Figure shows block diagram Timer/Counter2. 8-bit Timer/Counter0 select clock source from PCK0 prescaled PCK0. 8-bit Timer/Counter2 select clock source from prescaled external pin. Both Timer/Counters stopped described specification Timer/Counter Control Registers TCCR0 TCCR2. different status flags (overflow, compare match capture event) found Timer/Counter Interrupt Flag Register TIFR. Control signals found Timer/Counter Control Registers TCCR0 TCCR2. interrupt enable/disable settings found Timer/Counter Interrupt Mask Register TIMSK. When Timer/Counter2 externally clocked, external signal synchronized with oscillator frequency CPU. assure proper sampling external clock, minimum time between external clock transitions must least internal clock period. external clock signal sampled rising edge internal clock. 8-bit Timer/Counters feature high resolution high accuracy usage with lower prescaling opportunities. Similarly, high prescaling opportunities make these units useful lower speed functions exact timing functions with infrequent actions. Both Timer/Counters support Output Compare functions using Output Compare Registers OCR0 OCR2 data source compared Timer/Counter contents. Output Compare functions include optional clearing counter compare match, action Output Compare Pins PB4(OC0/PWM0) PB7(OC2/PWM2) compare match. Timer/Counter0 also used 8-bit Pulse Width Modulators. this mode Timer/Counter output compare register serve glitch-free, stand-alone with centered pulses. Refer page detailed description this function. Timer/Counter0 Control Register TCCR0 ($53) Read/Write Initial value PWM0 COM01 COM00 CTC0 CS02 CS01 CS00 TCCR0 Timer/Counter2 Control Register TCCR2 ($45) Read/Write Initial value PWM2 COM21 COM20 CTC2 CS22 CS21 CS20 TCCR2 Res: Reserved This reserved ATmega603/103 always reads zero. PWM0 PWM2: Pulse Width Modulator Enable When (one) this enables mode Timer/Counter0 Timer/Counter2. This mode described page Bits COM01, COM00 COM21, COM20: Compare Output Mode, bits COMn1 COMn0 control bits determine output action following compare match Timer/Counter2. output actions affect pins PB4(OC0/PWM0) PB7(OC2/PWM2). Since this alternative function port, corresponding direction control must (one) control output pin. control configuration shown Table Table Compare Mode Select COMn1 Note: COMn0 Description Timer/Counter disconnected from output OCn/PWMn Toggle OCn/PWMn output line. Clear OCn/PWMn output line zero). OCn/PWMn output line one). mode, these bits have different function. Refer Table detailed description. CTC0 CTC2: Clear Timer/Counter Compare match When CTC0 CTC2 control (one), Timer/Counter reset clock cycle after compare match. control cleared, Timer continues counting unaffected compare match. Since compare match detected clock cycle following match, this function will behave differently when prescaling higher than used timer. When prescaling used, compare register timer will count follows CTC0/2 set: When prescaler divide timer will count like this: C-2, C-2, C-2, C-2, C-2, C-2, C-2, C-1, C-1, C-1, C-1, C-1, C-1, C-1, mode, this effect. Bits 2,1,0 CS02, CS01, CS00 CS22, CS21, CS20: Clock Select bits Clock Select2 bits define prescaling source Timer/Counter. ATmega603/103 ATmega603/103 Table Timer/Counter0 Prescale Select CS02 CS01 CS00 Description Timer/Counter0 stopped. PCK0 PCK0/8 PCK0/32 PCK0/64 PCK0/128 PCK0/256 PCK0/1024 Table Timer/Counter2 Prescale Select CS22 CS21 CS20 Description Timer/Counter2 stopped. CK/8 CK/64 CK/256 CK/1024 External PD7(T2), falling edge External PD7(T2), rising edge Stop condition provides Timer Enable/Disable function. down divided modes scaled directly from clock. external modes used Timer/Counter2, transitions PD7/(T2) will clock counter even configured output. This feature give user control counting. Timer/Counter0 TCNT0 ($42) Read/Write Initial value TCNT0 Timer/Counter2 TCNT2 ($44) Read/Write Initial value TCNT2 These 8-bit registers contains value Timer/Counters. Both Timer/Counters realized up/down mode) counters with read write access. Timer/Counter written clock source selected, continues counting timer clock cycle after preset with written value. Timer/Counter0 Output Compare Register OCR0 ($51) Read/Write Initial value OCR0 Timer/Counter2 Output Compare Register OCR2 ($43) Read/Write Initial value OCR2 output compare registers 8-bit read/write registers. Timer/Counter Output Compare Registers contain data continuously compared with Timer/Counter. Actions compare matches specified TCCR0 TCCR2. compare match does only occur Timer/Counter counts value. software write that sets Timer/Counter Output Compare Register same value does generate compare match. compare match will compare interrupt flag clock cycle following compare event. Timer/Counter mode When mode selected, Timer/Counter Output Compare Register OCR0 OCR2 form 8-bit, free-running, glitch-free phase correct with outputs PB4(OC0/PWM0) PB7(OC2/PWM2) pin. Timer/Counter acts up/down counter, counting from $FF, where turns counts down again zero before cycle repeated. When counter value matches contents Output Compare register, PB4(OC0/PWM0) PB7(OC2/PWM2) cleared according settings COM01/COM00 COM21/COM20 bits Timer/Counter Control Registers TCCR0 TCCR2. Refer Table details. Table Compare Mode Select Mode COMn1 Note: COMn0 Effect Compare/PWM connected connected Cleared compare match, up-counting. compare match, down-counting (non-inverted PWM). Cleared compare match, down-counting. compare match, up-counting (inverted PWM). Note that mode, Output Compare register transferred temporary location when written. value latched when Timer/Counter reaches $FF. This prevents occurrence odd-length pulses (glitches) event unsynchronized OCR0 OCR2 write. Figure example. ATmega603/103 ATmega603/103 Figure Effects Unsynchronized Latching Compare Value changes Counter Value Compare Value Output Synchronized Latch Compare Value changes Counter Value Compare Value Output Unsynchronized Latch Glitch During time between write latch operation, read from OCR0 OCR2 will read contents temporary location. This means that most recently written value always will read OCR0/2 When register (not temporary register) updated $FF, output changes high immediately according settings COM21/COM20 COM11/COM10. This shown Table Table Outputs OCRn COMn1 Note: COMn0 OCRn Output PWMn mode, Timer Overflow Flag, TOV0 TOV2, when counter advances from $00. Timer Overflow Interrupt0 operates exactly normal Timer/Counter mode, i.e. executed when TOV0 TOV2 provided that Timer Overflow Interrupt global interrupts enabled. This does also apply Timer Output Compare flags interrupts. frequency will Timer Clock Frequency divided 510. Asynchronous Status Register ASSR ($50) Read/Write Initial value TCN0UB OCR0UB TCR0UB ASSR Res: Reserved Bits These bits reserved bits ATmega603/103 always reads zero. AS0: Asynchronous Timer/Counter0 When set(one) Timer/Counter0 clocked from TOSC1 pin. When cleared (zero) Timer/Counter0 clocked from internal system clock, When value this changed contents TCNT0 might corrupted. TCN0UB: Timer/Counter0 Update Busy When Timer/Counter0 operates asynchronously TCNT0 written, this becomes (one). When TCNT0 been updated from temporary storage register, this cleared (zero) hardware. logical zero this indicates that TCNT0 ready updated with value. OCR0UB: Output Compare Register0 Update Busy When Timer/Counter0 operates asynchronously OCR0 written, this becomes (one). When OCR0 been updated from temporary storage register, this cleared (zero) hardware. logical zero this indicates that OCR0 ready updated with value. TCR0UB: Timer/Counter Control Register0 Update Busy When Timer/Counter0 operates asynchronously TCCR0 written, this becomes (one). When TCCR0 been updated from temporary storage register, this cleared (zero) hardware. logical zero this indicates that TCCR0 ready updated with value. write performed three Timer/Counter0 registers while update busy flag (one), updated value might corrupted cause unintentional interrupt occur. When reading TCNT0, OCR0 TCCR0, there difference result. When reading TCNT0, actual timer value read. When reading OCR0 TCCR0, value temporary storage register read. Asynchronous Operation Timer/Counter0 When Timer/Counter0 operates synchronously, operations timing identical Timer/Counter2. During asynchronous operation, however, some considerations must taken. WARNING: When switching between asynchronous synchronous clocking Timer/Counter0, timer registers, TCNT0, OCR0 TCCR0 might corrupted. Safe procedure switching clock source: Disable timer interrupts OCIE0 TOIE0. Select clock source setting appropriate. Write values TCNT0, OCR0 TCCR0. switching asynchronous operation: Wait TCNT0UB, OCR0UB TCR0UB cleared. Enable interrupts needed. oscillator optimized with 32,768Hz watch crystal. external clock signal applied this goes through same amplifier having bandwidth 256kHz. external clock signal should therefore interval 256kHz. frequency clock signal applied TOSC1 must lower than fourth main clock frequency. Observe that clock frequency lower than XTAL frequency XTAL divider enabled. When writing registers TCNT0, OCR0, TCCR0, value transferred temporary register, latched after positive edges TOSC1. user should write value before contents temporary register have been transferred destination. Each three mentioned registers have their individual temporary register, which means that e.g. writing TCNT0 does disturb OCR0 write progress. detect that transfer destination register taken place, Asynchronous Status Register ASSR been implemented. When entering Power Save mode after having written TCNT0, OCR0 TCCR0, user must wait until written register been updated Timer/Counter0 used wake device. Otherwise, will sleep before changes have effect. This extremely important output compare0 interrupt used wake device; Output compare disabled during write OCR0 TCNT0. write cycle finished (i.e. user goes sleep before OCR0UB returns zero), device will never compare match will wake Timer/Counter0 used wake device from Power Save mode, precautions must taken user wants re-enter Power Save mode; interrupt logic needs TOSC1 cycle reset. time between wake reentering Power Save mode less than TOSC1 cycle, interrupt will occur device will fail wake user doubt whether time before re-entering Power Save sufficient, following algorithm used ensure that TOSC1 cycle elapsed: Write value TCCR0, TCNT0 OCR0 Wait until corresponding Update Busy flag ASSR returns zero. Enter Power Save mode When asynchronous operation selected, oscillator Timer/Counter0 always running, except power down mode. After power reset wake-up from power down, user should aware fact that this oscillator might take long second stabilize. Therefore, content Timer/Counter0 registers must considered ATmega603/103 ATmega603/103 lost after wake-up from power down, unstable clock signal. user advised wait least second before using Timer/Counter0 after power-up wake-up from power down. Description wake from power save mode when timer clocked asynchronously: When interrupt condition met, wake process started following cycle timer clock, that timer always advanced least before processor read counter value. execute corresponding Timer/Counter0 interrupt routine, global interrupt SREG must have been set. Otherwise, part will still wake from power down, continues execute sleep command. interrupt flags updated processor cycles after processor clock started. During these cycles, processor executes instructions, interrupt condition readable, interrupt routine started yet. During asynchronous operation, synchronization interrupt flags asynchronous timer takes processor cycles plus timer cycle. timer therefore advanced least before processor read timer value causing setting interrupt flag. output compare changed timer clock, synchronized processor clock. 16-bit Timer/Counter1 Figure shows block diagram Timer/Counter1. 16-bit Timer/Counter1 select clock source from prescaled external pin. addition stopped described specification Timer/Counter1 Control Register TCCR1B. different status flags (overflow, compare match capture event) found Timer/Counter Interrupt Flag Register TIFR. Control signals found Timer/Counter1 Control Registers TCCR1A TCCR1B. interrupt enable/disable settings Timer/Counter1 found Timer/Counter Interrupt Mask Register TIMSK. When Timer/Counter1 externally clocked, external signal synchronized with oscillator frequency CPU. assure proper sampling external clock, minimum time between external clock transitions must least internal clock period. external clock signal sampled rising edge internal clock. 16-bit Timer/Counter1 features both high resolution high accuracy usage with lower prescaling opportunities. Similarly, high prescaling opportunities makes Timer/Counter1 useful lower speed functions exact timing functions with infrequent actions. Timer/Counter1 supports Output Compare functions using Output Compare Register OCR1A OCR1B data sources compared Timer/Counter1 contents. Output Compare functions include optional clearing counter compareA match, actions Output Compare pins both compare matches. Figure Timer/Counter1 Block Diagram T/C1 OVERFLOW T/C1 COMPARE MATCHA T/C1 COMPARE T/C1 INPUT MATCHB CAPTURE OCIE1B 8-BIT DATA OCIE1A OCF1B OCF1A TICIE1 OCIE2 OCIE0 TOIE2 TOIE1 TOIE0 OCF2 OCF0 TOV2 TIMER INT. MASK REGISTER (TIMSK) TIMER INT. FLAG REGISTER (TIFR) OCF1B OCF1A ICF1 TOV1 TOV1 TOV0 ICF1 T/C1 CONTROL REGISTER (TCCR1A) PWM11 COM1A1 COM1B1 PWM10 COM1A0 COM1B0 T/C1 CONTROL REGISTER (TCCR1B) CS12 ICNC1 CTC1 ICES1 CS10 CS11 T/C1 INPUT CAPTURE REGISTER (ICR1) CONTROL LOGIC CAPTURE TRIGGER TIMER/COUNTER1 (TCNT1) CLEAR CLOCK SOURCE UP/DOWN COMPARATOR COMPARATOR TIMER/COUNTER1 OUTPUT COMPARE REGISTER TIMER/COUNTER1 OUTPUT COMPARE REGISTER Timer/Counter1 also used 10-bit Pulse With Modulator. this mode counter OCR1A/OCR1B registers serve dual glitch-free stand-alone with centered pulses. Refer page detailed description this function. Input Capture function Timer/Counter1 provides capture Timer/Counter1 contents Input Capture Register ICR1, triggered external event Input Capture PD4/(IC1). actual capture event settings defined Timer/Counter1 Control Register TCCR1B. addition, Analog Comparator trigger Input Capture. Refer paragraph, "The Analog Comparator", details this. logic shown Figure Figure Schematic Diagram ATmega603/103 ATmega603/103 noise canceler function enabled, actual trigger condition capture event monitored over samples, must equal activate capture flag. Timer/Counter1 Control Register TCCR1A ($4F) Read/Write Initial value COM1A1 COM1A0 COM1B1 COM1B0 PWM11 PWM10 TCCR1A Bits COM1A1, COM1A0: Compare Output Mode1A, bits COM1A1 COM1A0 control bits determine output action following compare match Timer/Counter1. output actions affect OC1A Output CompareA This alternative function port, corresponding direction control must (one) control output pin. control configuration shown Table Bits COM1B1, COM1B0: Compare Output Mode1B, bits COM1B1 COM1B0 control bits determine output action following compare match Timer/Counter1. output actions affect OC1B Output CompareB. Since this alternative function port, corresponding direction control must (one) control output pin. following control configuration given: Table Compare Mode Select COM1X1 Note: COM1X0 Description Timer/Counter1 disconnected from output OC1X Toggle OC1X output line. Clear OC1X output line zero). OC1X output line one). mode, these bits have different function. Refer Table detailed description. Bits Res: Reserved bits These bits reserved bits ATmega603/103 always read zero. Bits PWM11, PWM10: Pulse Width Modulator Select Bits These bits select operation Timer/Counter1 specified Table This mode described page Table Mode Select PWM11 PWM10 Description operation Timer/Counter1 disabled Timer/Counter1 8-bit Timer/Counter1 9-bit Timer/Counter1 10-bit Timer/Counter1 Control Register TCCR1B ($4E) Read/Write Initial value ICNC1 ICES1 CTC1 CS12 CS11 CS10 TCCR1B ICNC1: Input Capture1 Noise Canceler CKs) When ICNC1 cleared (zero), input capture trigger noise canceler function disabled. input capture triggered first rising/falling edge sampled input capture PD4(IC1) specified. When ICNC1 (one), four successive samples measures PD4(IC1), samples must high/low according input capture trigger specification ICES1 bit. actual sampling frequency XTAL clock frequency. ICES1: Input Capture1 Edge Select While ICES1 cleared (zero), Timer/Counter1 contents transferred Input Capture Register ICR1 falling edge input capture PD4(IC1). While ICES1 (one), Timer/Counter1 contents transferred Input Capture Register ICR1 rising edge input capture PD4(IC1). Bits Res: Reserved bits These bits reserved bits ATmega603/103 always read zero. CTC1: Clear Timer/Counter1 Compare Match When CTC1 control (one), Timer/Counter1 reset $0000 clock cycle after compareA match. CTC1 control cleared, Timer/Counter1 continues counting unaffected compare match. Since compare match detected clock cycle following match, this function will behave differently when prescaling higher than used timer. When prescaling used, compareA register timer will count follows CTC1 set: When prescaler divide timer will count like this: C-2, C-2, C-2, C-2, C-2, C-2, C-2, C-1, C-1, C-1, C-1, C-1, C-1, C-1, mode, this effect. Bits 2,1,0 CS12, CS11, CS10: Clock Select1, lock Select1 bits define prescaling source Timer/Counter1. Table Clock Prescale Select CS12 CS11 CS10 Description Stop, Timer/Counter1 stopped. CK/8 CK/64 CK/256 CK/1024 External falling edge External rising edge Stop condition provides Timer Enable/Disable function. down divided modes scaled directly from clock. external modes used Timer/Counter1, transitions PD6/(T1) will clock counter even configured output. This feature give user control counting. ATmega603/103 ATmega603/103 Timer/Counter1 TCNT1H TCNT1L ($4D) ($4C) Read/Write Initial value TCNT1H TCNT1L This 16-bit register contains prescaled value 16-bit Timer/Counter1. ensure that both high bytes read written simultaneously when accesses these registers, access performed using 8-bit temporary register (TEMP). This temporary register also used when accessing OCR1A, OCR1B ICR1. main program also interrupt routines perform access registers using TEMP, interrupts must disabled during access from main program (and from interrupt routines interrupts allowed from within interrupt routines). TCNT1 Timer/Counter1 Write: When writes high byte TCNT1H, written data placed TEMP register. Next, when writes byte TCNT1L, this byte data combined with byte data TEMP register, bits written TCNT1 Timer/Counter1 register simultaneously. Consequently, high byte TCNT1H must accessed first full 16-bit register write operation. When using Timer/Counter1 8-bit timer, sufficient write byte only. TCNT1 Timer/Counter1 Read: When reads byte TCNT1L, data TCNT1L sent data high byte TCNT1H placed TEMP register. When reads data high byte TCNT1H, receives data TEMP register. Consequently, byte TCNT1L must accessed first full 16-bit register read operation. When using Timer/counter1 8-bit timer, sufficient read byte only. Timer/Counter1 realized up/down mode) counter with read write access. Timer/Counter1 written clock source selected, Timer/Counter1 continues counting clock cycle after preset with written value. Timer/Counter1 Output Compare Register OCR1AH OCR1AL Read/Write Initial value OCR1AH OCR1AL Timer/Counter1 Output Compare Register OCR1BH OCR1BL Read/Write Initial value OCR1BH OCR1BL output compare registers 16-bit read/write registers. Timer/Counter1 Output Compare Registers contain data continuously compared with Timer/Counter1. Actions compare matches specified Timer/Counter1 Control Status register. compare match does only occur Timer/Counter1 counts value. software write that sets TCNT1 OCR1A OCR1B same value does generate compare match. compare match will compare interrupt flag clock cycle following compare event. Since Output Compare Registers OCR1A OCR1B 16-bit registers, temporary register TEMP used when OCR1A/B written ensure that both bytes updated simultaneously. When writes high byte, OCR1AH OCR1BH, data temporarily stored TEMP register. When writes byte, OCR1AL OCR1BL, TEMP register simultaneously written OCR1AH OCR1BH. Consequently, high byte OCR1AH OCR1BH must written first full 16-bit register write operation. TEMP register also used when accessing TCNT1, ICR1. main program also interrupt routines perform access registers using TEMP, interrupts must disabled during access from main program. Timer/Counter1 Input Capture Register ICR1H ICR1L ($37) ($36) Read/Write Initial value ICR1H ICR1L input capture register 16-bit read-only register. When rising falling edge (according input capture edge setting ICES1) signal input capture PD4(IC1) detected, current value Timer/Counter1 transferred Input Capture Register ICR1. same time, input capture flag ICF1 (one). ATmega603/103 ATmega603/103 Since Input Capture Register ICR1 16-bit register, temporary register TEMP used when ICR1 read ensure that both bytes read simultaneously. When reads byte ICR1L, data sent data high byte ICR1H placed TEMP register. When reads data high byte ICR1H, receives data TEMP register. Consequently, byte ICR1L must accessed first full 16-bit register read operation. TEMP register also used when accessing TCNT1, OCR1A OCR1B. main program also interrupt routines perform access registers using TEMP, interrupts must disabled during access from main program. Timer/Counter1 mode When mode selected, Timer/Counter1 Output Compare Register1A OCR1A Output Compare Register1B OCR1B, form dual 10-bit, free-running, glitch-free phase correct with outputs PB5(OC1A) PB6(OC1B) pins. Timer/Counter1 acts up/down counter, counting from $0000 (see Table 17), where turns counts down again zero before cycle repeated. When counter value matches contents least significant bits OCR1A OCR1B, PB5(OC1A)/PB6(OC1B) pins cleared according settings COM1A1/COM1A0 COM1B1/COM1B0 bits Timer/Counter1 Control Register TCCR1A. Refer Table details. Table Timer Values Frequency Resolution 8-bit 9-bit 10-bit Timer value $00FF (255) $01FF (511) $03FF(1023) Frequency fTCK1/510 fTCK1/1022 fTCK1/2046 Table Compare1 Mode Select Mode COM1X1 Note: COM1X0 Effect OCX1 connected connected Cleared compare match, up-counting. compare match, down-counting (non-inverted PWM). Cleared compare match, down-counting. compare match, up-counting (inverted PWM). Note that mode, least significant OCR1A/OCR1B bits, when written, transferred temporary location. They latched when Timer/Counter1 reaches value TOP. This prevents occurrence odd-length pulses (glitches) event unsynchronized OCR1A/OCR1B write. Figure example. Figure Effects Unsynchronized OCR1 Latching Compare Value changes Counter Value Compare Value Output OC1X Synchronized Compare Value changes OCR1X Latch Counter Value Compare Value Output OC1X Unsynchronized Note: OCR1X Latch Glitch During time between write latch operation, read from OCR1A OCR1B will read contents temporary location. This means that most recently written value always will read OCR1A/B When OCR1A/OCR1B contains $0000 TOP, output OC1A/OC1B updated high next compare match according settings COM1A1/COM1A0 COM1B1/COM1B0. This shown Table Table Outputs OCR1X $0000 COM1X1 Note: COM1X0 OCR1X $0000 $0000 Output OC1X mode, Timer Overflow Flag1, TOV1, when counter advances from $0000. Timer Overflow Interrupt1 operates exactly normal Timer/Counter mode, i.e. executed when TOV1 provided that Timer Overflow Interrupt1 global interrupts enabled. This does also apply Timer Output Compare1 flags interrupts. ATmega603/103 ATmega603/103 Watchdog Timer Watchdog Timer clocked from separate on-chip oscillator. controlling Watchdog Timer prescaler, Watchdog reset interval adjusted shown Table characterization data typical values other levels. Watchdog Reset instruction resets Watchdog Timer. From Watchdog reset, eight different clock cycle periods selected determine reset period. reset period expires without another Watchdog reset, ATmega603/103 resets executes from reset vector. timing details Watchdog reset, refer page prevent unintentional disabling watchdog, special turn-off procedure must followed when watchdog disabled. Refer description Watchdog Timer Control Register details. Figure Watchdog Timer Oscillator Watchdog Timer Control Register WDTCR ($41) Read/Write Initial value WDTOE WDP2 WDP1 WDP0 WDTCR Bits Res: Reserved bits These bits reserved bits ATmega603/103 will always read zero. WDTOE: Watch Turn Enable This must (one) when cleared, Otherwise, watchdog will disabled. Once set, hardware will clear this zero after four clock cycles. Refer description watchdog disable procedure. WDE: Watch Enable When (one) Watchdog Timer enabled, cleared (zero) Watchdog Timer function disabled. only cleared WDTOE (one). disable enabled watchdog timer, following procedure must followed: same operation, write logical WDTOE WDE. logical must written even though before disable operation starts. Within next four clock cycles, write logical WDE. This disables watchdog. Bits WDP2, WDP1, WDP0: Watch Timer Prescaler WDP2, WDP1 WDP0 bits determine Watchdog Timer prescaling when Watchdog Timer enabled. different prescaling values their corresponding Time-out Periods shown Table Table Watch Timer Prescale Select WDP2 Note: WDP1 WDP0 Number Oscillator cycles cycles cycles cycles 128K cycles 256K cycles 512K cycles 1,024K cycles 2,048K cycles Typical time-out 3.0V 0.19 0.38 0.75 Typical time-out 5.0V 0.12 0,24 0.49 0.97 frequency watchdog oscillator voltage dependent shown Electrical Characteristics section. Watchdog Reset instruction should always executed before Watchdog Timer enabled. This ensures that reset period will accordance with Watchdog Timer prescale settings. Watchdog Timer enabled without reset, watchdog timer start counting from zero. EEPROM Read/Write Access EEPROM access registers accessible space. write access time range 4ms, depending voltages. self-timing function lets user software detect when next byte written. special EEPROM Ready interrupt trigger when EEPROM ready accept data. order prevent unintentional EEPROM writes, specific write procedure must followed. Refer description EEPROM control register details this. When EEPROM written, halted clock cycles before next instruction executed. When read, halted clock cycles. EEPROM Address Register EEARH, EEARL ($3F) ($3E) Read/Write Initial value EEAR7 EEAR6 EEAR5 EEAR4 EEAR11 EEAR3 EEAR10 EEAR2 EEAR9 EEAR1 EEAR8 EEAR0 EEARH EEARL EEPROM Address Registers EEARH EEARL specify EEPROM address 2K/4K-byte EEPROM space. EEPROM data bytes addressed linearly between 2047/4095. ATmega603 EEPROM address space EEAR11 read-only with initial value ATmega603/103 ATmega603/103 EEPROM Data Register EEDR ($3D) Read/Write Initial value EEDR Bits EEDR7.0: EEPROM Data: EEPROM write operation, EEDR register contains data written EEPROM address given EEAR register. EEPROM read operation, EEDR contains data read from EEPROM address given EEAR. EEPROM Control Register EECR ($3C) Read/Write Initial value EERIE EEMWE EEWE EERE EECR Bits Res: Reserved bits These bits reserved bits ATmega603/103 will always read zero. EERIE: EEPROM Ready Interrupt Enable When SREG EERIE (one), EEPROM Ready Interrupt enabled. When cleared (zero), interrupt disabled. EEPROM Ready interrupt constantly generates interrupt request when EEWE cleared (zero). EEMWE: EEPROM Master Write Enable EEMWE determines whether setting EEWE causes EEPROM written. When EEMWE set(one) setting EEWE will write data EEPROM selected address EEMWE zero, setting EEWE will have effect. When EEMWE been (one) software, hardware clears zero after four clock cycles. description EEWE EEPROM write procedure. EEWE: EEPROM Write Enable EEPROM Write Enable Signal EEWE write strobe EEPROM. When address data correctly EEWE must write value into EEPROM. EEMWE must when logical written EEWE, otherwise EEPROM write takes place. following procedure should followed when writing EEPROM (the order steps unessential): Wait until EEWE becomes zero. Write EEPROM address EEAR (optional) Write EEPROM data EEDR (optional) Write logical EEMWE EECR Within four clock cycles after setting EEMWE, write logical EEWE. Caution: interrupt between step step will make write cycle fail, since EEPROM Master Write Enable will time-out. interrupt routine accessing EEPROM interrupting another EEPROM access, EEAR EEDR register will modified, causing interrupted EEPROM access fail. recommended have global interrupt flag cleared during last steps avoid these problems. When write access time (typically 2.7V) elapsed, EEWE cleared (zero) hardware. user software poll this wait zero before writing next byte. When EEWE been set, halted cycles before next instruction executed. EERE: EEPROM Read Enable EEPROM Read Enable Signal EERE read strobe EEPROM. When correct address EEAR register, EERE must set. When EERE cleared (zero) hardware, requested data found EEDR register. EEPROM read access takes instruction there need poll EERE bit. When EERE been set, halted four cycles before next instruction executed. user should poll EEWE before starting read operation. write operation progress when data address written EEPROM registers, write operation will interrupted, result undefined. Prevent EEPROM Corruption During periods VCC, EEPROM data corrupted because supply voltage EEPROM operate properly. These issues same board level systems using EEPROM, same design solutions should applied. EEPROM data corruption caused situations when voltage low. First, regular write sequence EEPROM requires minimum voltage operate correctly. Secondly, itself execute instructions incorrectly, supply voltage executing instructions low. EEPROM data corruption easily avoided following these design recommendations (one sufficient): Keep RESET active (low) during periods insufficient power supply voltage. This best done external Reset Protection circuit, often referred Brown-Out Detector (BOD). Please refer application note design considerations regarding power-on reset voltage detection. Keep core Power Down Sleep Mode during periods VCC. This will prevent from attempting decode execute instructions, effectively protecting EEPROM registers from unintentional writes. Store constants Flash memory ability change memory contents from software required. Flash memory updated CPU, will subject corruption. Serial Peripheral Interface Serial Peripheral Interface (SPI) allows high-speed synchronous data transfer between ATmega603/103 peripheral devices between several devices. ATmega603/103 features include following: Full-Duplex, 3-Wire Synchronous Data Transfer Master Slave Operation First First Data Transfer Four Programmable Rates Transmission Interrupt Flag Write Collision Flag Protection Wake-up from Idle Mode (Slave Mode Only) ATmega603/103 ATmega603/103 Figure Block Diagram interconnection between master slave CPUs with shown Figure PB1(SCK) clock output master mode clock input slave mode. Writing data register master starts clock generator, data written shifts PB2(MOSI) into (MOSI) slave CPU. After shifting byte, clock generator stops, setting transmission flag (SPIF). interrupt enable (SPIE) SPCR register set, interrupt requested. Slave Select input, PB0(SS), select individual slave device. shift registers Master Slave considered distributed 16-bit circular shift register. This shown Figure When data shifted from master slave, data also shifted opposite direction, simultaneously. This means that during shift cycle, data master slave interchanged. Figure Master-Slave Interconnection MASTER MISO MISO SLAVE SHIFT REGISTER MOSI MOSI SHIFT REGISTER CLOCK GENERATOR system single buffered transmit direction double buffered receive direction. This means that characters transmitted cannot written Data Register before entire shift cycle completed. When receiving data, however, received byte must read from Data Register before next byte been completely shifted Otherwise, first byte lost. When enabled, data direction MOSI, MISO, pins overridden according following table: Table Overrides MOSI MISO Note: Direction, Master User Defined Input User Defined User Defined Direction, Slave Input User Defined Input Input "Alternate Functions Port page detailed description define direction user defined pins. Functionality When configured master (MSTR SPCR set), user determine direction pin. configured output, general output which does affect system. configured input, must hold high ensure Master operation. driven peripheral circuitry when configured master with defined input, system interprets this another master selecting slave starting send data avoid contention, system takes following actions: MSTR SPCR cleared system becomes slave. result becoming slave, MOSI pins become inputs. SPIF flag SPSR set, interrupt enabled I-bit SREG set, interrupt routine will executed. Thus, when interrupt-driven transmittal used master mode, there exists possibility that driven low, interrupt should always check that MSTR still set. Once MSTR been cleared slave select, must user re-enable master mode. When configured slave, always input. When held low, activated MISO becomes output configured user. other pins inputs. When driven high, pins inputs, passive, which means that will receive incoming data. Note that logic will reset once brought high. brought high during transmission, will stop sending receiving immediately both data received data sent must considered lost. ATmega603/103 ATmega603/103 Data Modes There four combinations phase polarity with respect serial data, which determined control bits CPHA CPOL. data transfer formats shown Figure Figure Figure Transfer Format with CPHA DORD CYCLE (FOR REFERENCE) (CPOL=0) (CPOL=1) MOSI (FROM MASTER) MISO (FROM SLAVE) SLAVE) SAMPLE defined normally character just received Figure Transfer Format with CPHA 1and DORD CYCLE (FOR REFERENCE) (CPOL=0) (CPOL=1) MOSI (FROM MASTER) MISO (FROM SLAVE) SLAVE) SAMPLE defined normally previously transmitted character. Control Register SPCR ($2D) Read/Write Initial value SPIE DORD MSTR CPOL CPHA SPR1 SPR0 SPCR SPIE: Interrupt Enable This causes interrupt executed SPIF SPSR register global interrupts enabled. SPE: Enable When (one), enabled MOSI, MISO connected pins PB0, PB1, PB3. DORD: Data Order When DORD (one), data word transmitted first. When DORD cleared (zero), data word transmitted first. MSTR: Master/Slave Select This selects Master mode when (one), Slave mode when cleared (zero). configured input driven while MSTR set, MSTR will cleared, SPIF SPSR will become set. user will then have MSTR re-enable master mode. CPOL: Clock Polarity When this (one), high when idle. When CPOL cleared (zero), when idle. Refer Figure Figure additional information. CPHA: Clock Phase Refer Figure Figure functionality this bit. Bits SPR1, SPR0: Clock Rate Select These bits control rate device configured master. SPR1 SPR0 have effect slave. relationship between Clock frequency shown following table: Table Relationship Between Oscillator Frequency SPR1 Note: SPR0 Frequency Observe that clock frequency lower than XTAL frequency XTAL divider enabled. Status Register SPSR Read/Write Initial value SPIF WCOL SPSR SPIF: Interrupt Flag When serial transfer complete, SPIF (one) interrupt generated SPIE SPCR (one) global interrupts enabled. SPIF cleared hardware when executing corresponding interrupt handling vector. Alternatively, SPIF cleared first reading status register with SPIF (one), then accessing Data Register (SPDR). WCOL: Write Collision flag WCOL data register (SPDR) written during data transfer. WCOL (and SPIF bit) cleared (zero) first reading Status Register with WCOL (one), then accessing Data Register. Res: Reserved bits These bits reserved bits ATmega603/103 will always read zero. Data Register SPDR ($2F) Read/Write Initial value Undefined SPDR Data Register read/write register used data transfer between register file Shift register. Writing register initiates data transmission. Reading register causes Shift Register Receive buffer read. ATmega603/103 ATmega603/103 UART ATmega603/103 features full duplex (separate receive transmit registers) Universal Asynchronous Receiver Transmitter (UART). main features are: Baud rate generator that generate large number baud rates (bps) High baud rates XTAL frequencies bits data Noise filtering Overrun detection Framing Error detection False Start detection Three separate interrupts Complete, Data Register Empty Complete Data Transmission block schematic UART transmitter shown Figure Data transmission initiated writing data transmitted UART Data Register, UDR. Data transferred from Transmit shift register when: character been written after stop from previous character been shifted out. shift register loaded immediately. character been written before stop from previous character been shifted out. shift register loaded when stop character currently being transmitted been shifted out. 10(11)-bit Transmitter shift register empty, data transferred from shift register. this time UDRE (UART Data Register Empty) UART Status Register, USR, set. When this (one), UART ready receive next character. Writing clears UDRE. same time data transferred from 10(11)-bit shift register, shift register cleared (start bit) (stop bit). data word selected (the CHR9 UART Control Register, set), TXB8 transferred Transmit shift register. Figure UART Transmitter DATA XTAL BAUD RATE GENERATOR BAUD UART DATA REGISTER (UDR) STORE SHIFT ENABLE CONTROL LOGIC CONTROL LOGIC IDLE BAUD 10(11)-BIT SHIFT REGISTER UART CONTROL REGISTER (UCR) RXCIE TXCIE UDRIE RXEN TXEN CHR9 RXB8 TXB8 DATA UDRE Baud Rate clock following transfer operation shift register, start shifted pin, followed data, first. When stop been shifted out, shift register loaded data been written during transmission. During loading, UDRE set. there data register send when stop shifted out, UDRE flag will remain set. this case, after stop been present length, Complete Flag, TXC, set. TXEN enables UART transmitter when (one). When this cleared (zero), used general I/O. When TXEN set, UART Transmitter will connected PE1, which forced output regardless setting DDE1 DDRE. ATmega603/103 UDRE UART STATUS REGISTER (USR) UDRE ATmega603/103 Data Reception Figure UART Receiver DATA XTAL BAUD RATE GENERATOR CONTROL LOGIC BAUD BAUD UART DATA REGISTER (UDR) STORE DATA RECOVERY LOGIC 10(11)-BIT SHIFT REGISTER UART CONTROL REGISTER (UCR) RXCIE TXCIE UDRIE DATA receiver front-end logic samples signal frequency times baud rate. While line idle, single sample logical zero will interpreted falling edge start bit, start detection sequence initiated. sample denote first zero-sample. Following 0-transition, receiver samples sample more these three samples found logical ones, start rejected noise spike receiver starts looking next 0-transition. however, valid start detected, sampling data bits following start performed. These bits also sampled samples logical value found least three samples taken value. bits shifted into transmitter shift register they sampled. Sampling incoming character shown Figure Figure Sampling Received Data START RECEIVER SAMPLING STOP UDRE RXEN TXEN CHR9 RXB8 TXB8 UART STATUS REGISTER (USR) When stop enters receiver, majority three samples must accept stop bit. more samples logical zeros, Framing Error (FE) flag UART Status Register (USR) when received byte transferred UDR. Before reading register, user should always check detect Framing Errors. cleared when read. Whether valid stop detected character reception cycle, data transferred flag set. fact physically separate registers, transmitted data received data. When read, Receive Data register accessed, when written, Transmit Data register accessed. data word selected (the CHR9 UART Control Register, set), RXB8 loaded with Transmit shift register when data transferred UDR. after having received character, register been accessed since last receive, OverRun (OR) flag set. This means that data transferred shift register could transferred lost. buffered, available when valid data byte been read. user should always check after reading from register order detect overruns baud rate high load high. When RXEN register cleared (zero), receiver disabled. This means that used general pin. When RXEN set, UART Receiver will connected PE0, which forced input regardless setting DDE0 DDRE. When forced input UART, PORTE0 still used control pull-up resistor pin. When CHR9 register set, transmitted received characters 9-bit long plus start stop bits. data transmitted TXB8 register. This must wanted value before transmission initated writing register. UART Control UART Data Register ($2C) Read/Write Initial value register actually physically separate registers sharing same address. When writing register, UART Transmit Data register written. When reading from UDR, UART Receive Data register read. UART Status Register ($2B) Read/Write Initial value UDRE register read-only register providing information UART Status. RXC: UART Receive Complete This (one) when received character transferred from Receiver Shift register UDR. regardless detected framing errors. When RXCIE set, UART Receive Complete interrupt will executed when set(one). cleared reading UDR. When interrupt-driven data reception used, UART Receive Complete Interrupt routine must read order clear RXC, otherwise interrupt will occur once interrupt routine terminates. TXC: UART Transmit Complete This (one) when entire character (including stop bit) Transmit Shift register been shifted data been written UDR. This flag especially useful half-duplex communications interfaces, where transmitting application must enter receive mode free communications immediately after completing transmission. ATmega603/103 ATmega603/103 When TXCIE set, setting causes UART Transmit Complete interrupt executed. cleared hardware when executing corresponding interrupt handling vector. Alternatively, cleared (zero) writing logical bit. UDRE: UART Data Register Empty This (one) when character written transferred Transmit shift register. Setting this indicates that transmitter ready receive character transmission. When UDRIE set, UART Transmit Complete interrupt executed long UDRE set. UDRE cleared writing UDR. When interrupt-driven data transmittal used, UART Data Register Empty Interrupt routine must write order clear UDRE, otherwise interrupt will occur once interrupt routine terminates. UDRE (one) during reset indicate that transmitter ready. Framing Error This Framing Error condition detected, i.e. when stop incoming character zero. cleared when stop received data one. OverRun This Overrun condition detected, i.e. when character already present register read before next character transferred from Receiver Shift register. buffered, which means that will once valid data still UDRE read. cleared (zero) when data received transferred UDR. Bits Res: Reserved bits These bits reserved bits ATmega603/103 will always read zero. UART Control Register ($2A) Read/Write Initial value RXCIE TXCIE UDRIE RXEN TXEN CHR9 RXB8 TXB8 RXCIE: Complete Interrupt Enable When this (one), setting will cause Receive Complete interrupt routine executed provided that global interrupts enabled. TXCIE: Complete Interrupt Enable When this (one), setting will cause Transmit Complete interrupt routine executed provided that global interrupts enabled. UDRIE: UART Data Register Empty Interrupt Enable When this (one), setting UDRE will cause UART Data Register Empty interrupt routine executed provided that global interrupts enabled. RXEN: Receiver Enable This enables UART receiver when (one). When receiver disabled, TXC, status flags cannot become set. these flags set, turning RXEN does cause them cleared. TXEN: Transmitter Enable This enables UART transmitter when (one). When disabling transmitter while transmitting character, transmitter disabled before character shift register plus following character been completely transmitted. CHR9: Characters When this (one) transmitted received characters long plus start stop bits. read written using RXB8 TXB8 bits UCR, respectively. data used extra stop parity bit. RXB8: Receive Data When CHR9 (one), RXB8 data received character. TXB8: Transmit Data When CHR9 (one), TXB8 data character transmitted. Baud Rate Generator baud rate generator frequency divider which generates baud rates according following equation: BAUD UBRR BAUD Baud Rate Clock frequency UBRR Contents UART Baud Rate register, UBRR 255) standard crystal frequencies, most commonly used baud rates generated using UBRR settings Table Observe that clock frequency lower than XTAL frequency XTAL divider enabled. UBRR values which yield actual baud rate differing less than from target baud rate, bolded table. However, using baud rates that have more than error recommended. High error ratings give less noise resistance. Table UBRR Settings Various Frequencies Baud Rate %Error 1.8432 %Error %Error 2.4576 %Error UBRR= UBRR= UBRR= 2400 UBRR= 4800 UBRR= UBRR= UBRR= UBRR= UBRR= 9600 UBRR= UBRR= UBRR= UBRR= UBRR= 14400 UBRR= UBRR= UBRR= UBRR= 19200 UBRR= UBRR= UBRR= UBRR= 28800 UBRR= UBRR= 22.9 UBRR= UBRR= 38400 UBRR= UBRR= UBRR= UBRR= 12.5 57600 UBRR= UBRR= 22.9 UBRR= 33.3 UBRR= 22.9 UBRR= 76800 UBRR= 84.3 UBRR= UBRR= 25.0 115200 UBRR= UBRR= Baud Rate 3.2768 %Error 3.6864 %Error %Error 4.608 %Error 2400 UBRR= UBRR= UBRR= UBRR= 4800 UBRR= UBRR= UBRR= UBRR= 9600 UBRR= UBRR= UBRR= UBRR= UBRR= 14400 UBRR= UBRR= UBRR= UBRR= 19200 UBRR= UBRR= UBRR= UBRR= 28800 UBRR= UBRR= UBRR= UBRR= UBRR= 38400 UBRR= UBRR= 12.5 UBRR= UBRR= 57600 UBRR= UBRR= 12.5 UBRR= UBRR= 76800 UBRR= UBRR= 12.5 UBRR= UBRR= 20.0 115200 UBRR= UBRR= Baud Rate 7.3728 %Error %Error 9.216 %Error 11.059 %Error 2400 UBRR= UBRR= UBRR= UBRR= 4800 UBRR= UBRR= UBRR= UBRR= 9600 UBRR= UBRR= UBRR= UBRR= UBRR= UBRR= UBRR= UBRR= 14400 19200 UBRR= UBRR= UBRR= UBRR= UBRR= 28800 UBRR= UBRR= UBRR= 38400 UBRR= UBRR= UBRR= UBRR= UBRR= 57600 UBRR= UBRR= UBRR= UBRR= UBRR= 76800 UBRR= UBRR= UBRR= 115200 UBRR= UBRR= UBRR= ATmega603/103 ATmega603/103 UART Baud Rate Register UBRR ($29) Read/Write Initial value UBRR UBRR 8-bit read/write register which specifies UART Baud Rate according description previous page. Analog Comparator analog comparator compares input values positive input (AC+) negative input (AC-). When voltage positive input (AC+) higher than voltage negative input (AC-), Analog Comparator Output, (one). output comparator trigger Timer/Counter1 Input Capture function. addition, comparator trigger separate interrupt, exclusive Analog Comparator. user select Interrupt triggering comparator output rise, fall, toggle. block diagram comparator surrounding logic shown Figure Figure Analog Comparator Block Diagram (AC+) (AC-) ACIS1 ACIS0 ACIC INTERRUPT SELECT ACIE ANALOG COMPARATOR T/C1 CAPTURE TRIGGER Analog Comparator Control Status Register ACSR ($28) Read/Write Initial value ACIE ACIC ACIS1 ACIS0 ACSR ACD: Analog Comparator Disable When this set(one), power analog comparator switched off. This time turn analog comparator. This will reduce power consumption active idle mode. When changing bit, Analog Comparator Interrupt must disabled clearing ACIE ACSR. Otherwise interrupt occur when changed. Res: Reserved This reserved ATmega603/103 will always read zero. ACO: Analog Comparator Output directly connected comparator output. ACI: Analog Comparator Interrupt Flag This (one) when comparator output event triggers interrupt mode defined ACI1 ACI0. Analog Comparator Interrupt routine executed ACIE (one) I-bit SREG (one). cleared hardware when executing corresponding interrupt handling vector. Alternatively, cleared writing logic flag. Observe however, that another this register modified using instruction, will cleared become before operation. ACIE: Analog Comparator Interrupt Enable When ACIE (one) I-bit Status Register (one), analog comparator interrupt activated. When cleared (zero), interrupt disabled. ACIC: Analog Comparator Input Capture enable When (one), this enables Input Capture function Timer/Counter1 triggered analog comparator. comparator output this case directly connected Input Capture front-end logic, making comparator utilize noise canceler edge select features Timer/Counter1 Input Capture interrupt. When cleared (zero), connection between analog comparator Input Capture function given. make comparator trigger Timer/Counter1 Input Capture interrupt, TICIE1 Timer Interrupt Mask Register (TIMSK) must (one). Bits ACIS1, ACIS0: Analog Comparator Interrupt Mode Select These bits determine which comparator events that trigger Analog Comparator interrupt. different settings shown Table Table ACIS1/ACIS0 Settings ACIS1 ACIS0 Interrupt Mode Comparator Interrupt Output Toggle Reserved Comparator Interrupt Falling Output Edge Comparator Interrupt Rising Output Edge When changing ACIS1/ACIS0 bits, Analog Comparator Interrupt must disabled clearing Interrupt Enable ACSR register. Otherwise interrupt occur when bits changed. Caution: Using instruction other bits than this register, will write back into read set, thus clearing flag. Analog Digital Converter Feature list: 10-bit Resolution absolute accuracy Integral Non-Linearity conversion time kSPS Multiplexed Input Channels Interrupt conversion complete. Sleep Mode Noise Canceler ATmega603/103 features 10-bit successive approximation ADC. connected 8-channel Analog Multiplexer which allows each Port used input ADC. contains Sample Hold Amplifier which ensures that input voltage held constant level during conversion. block diagram shown Figure separate analog supply voltage pins, AVCC AGND. AGND must connected GND, voltage AVCC must differ more than from VCC. section "ADC Noise Canceling Techniques" page connect these pins. ATmega603/103 ATmega603/103 external reference voltage must applied AREF pin. This voltage must range AGND AVCC. Figure Analog Digital Converter Block Schematic CONVERSION COMPLETE 8-BIT DATA External Reference Voltage ADIF ADIE DATA REGISTER (ADCH/ADCL) MULTIPLEXER SELECT (ADMUX) MUX1 MUX2 MUX0 CTRL STATUS REGISTER (ADCSR) ADEN ADSC ADIE ADIF ADPS2 ADPS1 ADPS0 10-BIT 8CHANNEL CONVERSION LOGIC Analog Inputs SAMPLE HOLD COMPARATOR Operation operates Single Conversion mode, each conversion will have initiated user. enabled writing logical Enable bit, ADEN ADCSR. first conversion that started after enabling ADC, will preceded dummy conversion initialize ADC. user, only difference will that this conversion takes more clock pulses than normal conversion. (See Figure 48.) conversion started writing logical Start Conversion bit, ADSC. This will stay high long conversion progress zero hardware when conversion completed. different data channel selected while conversion progress, will finish current conversion before performing channel change. generates 10-bit result, data registers, ADCH ADCL, must read result when conversion complete. Special data protection logic used ensure that contents data registers belong same result when they read. This mechanism works follows: When reading data, ADCL must read first. Once ADCL read, access data registers blocked. This means that ADCL been read, conversion completes before ADCH read, none registers updated result from conversion lost. When ADCH read, access ADCH ADCL registers re-enabled. interrupt, ADIF, which triggered when conversion completes. When access data registers prohibited between reading ADCL ADCH, interrupt will trigger even result lost. Prescaling Figure Prescaler ADEN Reset 7-BIT PRESCALER ADPS0 ADPS1 ADPS2 CLOCK SOURCE contains prescaler, which divides system clock acceptable clock frequency. accepts input clock frequencies range kHz. Applying higher input frequency will result poorer accuracy, "ADC Characteristics" page ADPS0 ADPS2 bits ADCSR used generate proper clock input frequency from XTAL frequency above kHz. prescaler starts counting from moment switched setting ADEN ADCSR. prescaler keeps running long ADEN set, continuously reset when ADEN low. When initiating conversion setting ADSC ADCSR, conversion starts following falling edge clock cycle. actual sample-and-hold takes place clock cycle after start conversion. result ready written Result Register after cycles. needs more clock cycles before conversion started. ADSC high this period, will start conversion immediately. summary conversion times, Table Figure timing diagram, first conversion Cycle number clock ADEN ADSC Hold strobe ADIF ADCH ADCL result result CK/128 CK/16 CK/32 CK/64 CK/2 CK/4 CK/8 Dummy Conversion Actual Conversion Second Conversion ATmega603/103 ATmega603/103 Table Conversion Time Condition Conversion Single Conversion Sample Cycle Number Result Ready (cycle number) Total Conversion Time (cycles) Total Conversion Time (µs) Figure Timing Diagram Cycle number clock ADSC Hold strobe ADIF ADCH ADCL result result Conversion Next Conversion Noise Canceler Function features nois Other recent searchesRA13H4452M - RA13H4452M RA13H4452M Datasheet PD16700 - PD16700 PD16700 Datasheet IDT72T54242 - IDT72T54242 IDT72T54242 Datasheet IDT72T54252 - IDT72T54252 IDT72T54252 Datasheet IDT72T54262 - IDT72T54262 IDT72T54262 Datasheet GBU80X - GBU80X GBU80X Datasheet FMA3014 - FMA3014 FMA3014 Datasheet FDC60 - FDC60 FDC60 Datasheet CMX869A - CMX869A CMX869A Datasheet CD4541BM - CD4541BM CD4541BM Datasheet CD4541BC - CD4541BC CD4541BC Datasheet
Privacy Policy | Disclaimer |