ATMEGA128RZBV-8AU Atmel, ATMEGA128RZBV-8AU Datasheet

MCU ATMEGA1280/AT86RF230 100TQFP

ATMEGA128RZBV-8AU

Manufacturer Part Number
ATMEGA128RZBV-8AU
Description
MCU ATMEGA1280/AT86RF230 100TQFP
Manufacturer
Atmel
Series
ATMEGAr
Datasheets

Specifications of ATMEGA128RZBV-8AU

Frequency
2.4GHz
Data Rate - Maximum
2Mbps
Modulation Or Protocol
802.15.4 Zigbee
Applications
General Purpose
Power - Output
3dBm
Sensitivity
-101dBm
Voltage - Supply
1.8 V ~ 3.6 V
Data Interface
PCB, Surface Mount
Memory Size
128kB Flash, 4kB EEPROM, 8kB RAM
Antenna Connector
PCB, Surface Mount
Package / Case
100-TQFP
Wireless Frequency
2.4 GHz
Interface Type
JTAG, SPI
Output Power
3 dBm
For Use With
ATAVRISP2 - PROGRAMMER AVR IN SYSTEMATSTK501 - ADAPTER KIT FOR 64PIN AVR MCUATSTK500 - PROGRAMMER AVR STARTER KIT
Lead Free Status / RoHS Status
Lead free / RoHS Compliant
Operating Temperature
-
Current - Transmitting
-
Current - Receiving
-
Lead Free Status / Rohs Status
Lead free / RoHS Compliant
For Use With/related Products
ATmega128
Features
High Performance, Low Power Atmel
Advanced RISC Architecture
High Endurance Non-volatile Memory Segments
JTAG (IEEE std. 1149.1 compliant) Interface
Peripheral Features
Special Microcontroller Features
I/O and Packages
Temperature Range:
Ultra-Low Power Consumption
Speed Grade:
– 135 Powerful Instructions – Most Single Clock Cycle Execution
– 32 × 8 General Purpose Working Registers
– Fully Static Operation
– Up to 16 MIPS Throughput at 16 MHz
– On-Chip 2-cycle Multiplier
– 64K/128K/256K Bytes of In-System Self-Programmable Flash
– 4 Kbytes EEPROM
– 8 Kbytes Internal SRAM
– Write/Erase Cycles:10,000 Flash/100,000 EEPROM
– Data retention: 20 years at 85°C/ 100 years at 25°C
– Optional Boot Code Section with Independent Lock Bits
– Programming Lock for Software Security
– Boundary-scan Capabilities According to the JTAG Standard
– Extensive On-chip Debug Support
– Programming of Flash, EEPROM, Fuses, and Lock Bits through the JTAG Interface
– Two 8-bit Timer/Counters with Separate Prescaler and Compare Mode
– Four 16-bit Timer/Counter with Separate Prescaler, Compare- and Capture Mode
– Real Time Counter with Separate Oscillator
– Four 8-bit PWM Channels
– Six/Twelve PWM Channels with Programmable Resolution from 2 to 16 Bits
– Output Compare Modulator
– 8/16-channel, 10-bit ADC (ATmega1281/2561, ATmega640/1280/2560)
– Two/Four Programmable Serial USART (ATmega1281/2561, ATmega640/1280/2560)
– Master/Slave SPI Serial Interface
– Byte Oriented 2-wire Serial Interface
– Programmable Watchdog Timer with Separate On-chip Oscillator
– On-chip Analog Comparator
– Interrupt and Wake-up on Pin Change
– Power-on Reset and Programmable Brown-out Detection
– Internal Calibrated Oscillator
– External and Internal Interrupt Sources
– Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, Standby,
– 54/86 Programmable I/O Lines (ATmega1281/2561, ATmega640/1280/2560)
– 64-pad QFN/MLF, 64-lead TQFP (ATmega1281/2561)
– 100-lead TQFP, 100-ball CBGA (ATmega640/1280/2560)
– RoHS/Fully Green
– -40°C to 85°C Industrial
– Active Mode: 1 MHz, 1.8V: 500 µA
– Power-down Mode: 0.1 µA at 1.8V
– ATmega640V/ATmega1280V/ATmega1281V:
– ATmega2560V/ATmega2561V:
– ATmega640/ATmega1280/ATmega1281:
– ATmega2560/ATmega2561:
(ATmega1281/2561, ATmega640/1280/2560)
and Extended Standby
• In-System Programming by On-chip Boot Program
• True Read-While-Write Operation
• Endurance: Up to 64 Kbytes Optional External Memory Space
• 0 - 4 MHz @ 1.8V - 5.5V, 0 - 8 MHz @ 2.7V - 5.5V
• 0 - 2 MHz @ 1.8V - 5.5V, 0 - 8 MHz @ 2.7V - 5.5V
• 0 - 8 MHz @ 2.7V - 5.5V, 0 - 16 MHz @ 4.5V - 5.5V
• 0 - 16 MHz @ 4.5V - 5.5V
®
AVR
®
8-Bit Microcontroller
8-bit
Microcontroller
with
64K/128K/256K
Bytes In-System
Programmable
Flash
ATmega640/V
ATmega1280/V
ATmega1281/V
ATmega2560/V
ATmega2561/V
Preliminary
2549M–AVR–09/10

Related parts for ATMEGA128RZBV-8AU

ATMEGA128RZBV-8AU Summary of contents

Page 1

... Features • High Performance, Low Power Atmel • Advanced RISC Architecture – 135 Powerful Instructions – Most Single Clock Cycle Execution – 32 × 8 General Purpose Working Registers – Fully Static Operation – MIPS Throughput at 16 MHz – On-Chip 2-cycle Multiplier • ...

Page 2

Pin Configurations Figure 1-1. TQFP-pinout ATmega640/1280/2560 100 (OC0B) PG5 1 (RXD0/PCINT8) PE0 2 (TXD0) PE1 ...

Page 3

Figure 1-2. CBGA-pinout ATmega640/1280/2560 Top view Table 1- Note: 2549M–AVR–09/10 ATmega640/1280/1281/2560/2561 ...

Page 4

Figure 1-3. Pinout ATmega1281/2561 1 (OC0B) PG5 2 (RXD0/ PCINT8 /PDI) PE0 3 (TXD0/PDO) PE1 4 (XCK0/AIN0) PE2 5 (OC3A/AIN1) PE3 6 (OC3B/INT4) PE4 7 (OC3C/INT5) PE5 8 (T3/INT6) PE6 9 (ICP3/ CLKO /INT7) PE7 10 (SS/ PCINT0 ) PB0 ...

Page 5

Overview The ATmega640/1280/1281/2560/2561 is a low-power CMOS 8-bit microcontroller based on the AVR enhanced RISC architecture. By executing powerful instructions in a single clock cycle, the ATmega640/1280/1281/2560/2561 achieves throughputs approaching 1 MIPS per MHz allowing the system designer to ...

Page 6

... This allows very fast start-up combined with low power consumption. In Extended Standby mode, both the main Oscillator and the Asynchronous Timer continue to run. The device is manufactured using Atmel’s high-density nonvolatile memory technology. The On- chip ISP Flash allows the program memory to be reprogrammed in-system through an SPI serial interface conventional nonvolatile memory programmer On-chip Boot program running on the AVR core ...

Page 7

Comparison Between ATmega1281/2561 and ATmega640/1280/2560 Each device in the ATmega640/1280/1281/2560/2561 family differs only in memory size and number of pins. Table 2-1. Configuration Summary Device Flash EEPROM ATmega640 64KB ATmega1280 128KB ATmega1281 128KB ATmega2560 256KB ATmega2561 256KB 2.3 Pin ...

Page 8

The Port C pins are tri-stated when a reset condition becomes active, even if the clock is not running. Port C also serves the functions of special features of the ATmega640/1280/1281/2560/2561 as listed on 2.3.6 Port D ...

Page 9

The Port H pins are tri-stated when a reset condition becomes active, even if the clock is not running. Port H also serves the functions of various special features of the ATmega640/1280/2560 as listed on 2.3.11 Port ...

Page 10

AVCC AVCC is the supply voltage pin for Port F and the A/D Converter. It should be externally con- nected to V through a low-pass filter. 2.3.18 AREF This is the analog reference pin for the A/D Converter. 2549M–AVR–09/10 ...

Page 11

... Resources A comprehensive set of development tools and application notes, and datasheets are available for download on http://www.atmel.com/avr. 4. About Code Examples This documentation contains simple code examples that briefly show how to use various parts of the device. Be aware that not all C compiler vendors include bit definitions in the header files and interrupt handling compiler dependent ...

Page 12

AVR CPU Core 6.1 Introduction This section discusses the AVR core architecture in general. The main function of the CPU core is to ensure correct program execution. The CPU must therefore be able to access memories, perform calculations, control ...

Page 13

The fast-access Register File contains 32 × 8-bit general purpose working registers with a single clock cycle access time. This allows single-cycle Arithmetic Logic Unit (ALU) operation typ- ical ALU operation, two operands are output from the Register ...

Page 14

Status Register The Status Register contains information about the result of the most recently executed arithme- tic instruction. This information can be used for altering program flow in order to perform conditional operations. Note that the Status Register is ...

Page 15

Bit 0 – C: Carry Flag The Carry Flag C indicates a carry in an arithmetic or logic operation. See the “Instruction Set Description” for detailed information. 6.5 General Purpose Register File The Register File is optimized for the ...

Page 16

Figure 6-3. X-register Y-register Z-register In the different addressing modes these address registers have functions as fixed displacement, automatic increment, and automatic decrement (see the instruction set reference for details). 6.6 Stack Pointer The Stack is mainly used for storing ...

Page 17

RAMPZ – Extended Z-pointer Register for ELPM/SPM Bit 0x3B (0x5B) Read/Write Initial Value For ELPM/SPM instructions, the Z-pointer is a concatenation of RAMPZ, ZH, and ZL, as shown in Figure 6-4. Note that LPM is not affected by the ...

Page 18

Figure 6-6. 1st Instruction Execute 2nd Instruction Execute 3rd Instruction Execute Figure 6-7 operation using two register operands is executed, and the result is stored back to the destina- tion register. Figure 6-7. Register Operands Fetch ALU Operation Execute 6.8 ...

Page 19

There are basically two types of interrupts. The first type is triggered by an event that sets the Interrupt Flag. For these interrupts, the Program Counter is vectored to the actual Interrupt Vec- tor in order to execute the interrupt ...

Page 20

Assembly Code Example sei sleep; enter sleep, waiting for interrupt ; note: will enter sleep before any pending ; interrupt(s) C Code Example __enable_interrupt(); /* set Global Interrupt Enable */ __sleep(); /* enter sleep, waiting for interrupt */ /* note: ...

Page 21

AVR Memories This section describes the different memories in the ATmega640/1280/1281/2560/2561. The AVR architecture has two main memory spaces, the Data Memory and the Program Memory space. In addition, the ATmega640/1280/1281/2560/2561 features an EEPROM Memory for data storage. All ...

Page 22

An optional external data SRAM can be used with the ATmega640/1280/1281/2560/2561. This SRAM will occupy an area in the remaining address locations in the 64K address space. This area starts at the address following the internal SRAM. The Register file, ...

Page 23

Figure 7-2. 7.2.1 Data Memory Access Times This section describes the general access timing concepts for internal memory access. The internal data SRAM access is performed in two clk Figure 7-3. 7.3 EEPROM Data Memory The ATmega640/1280/1281/2560/2561 contains 4 Kbytes ...

Page 24

EEPROM Read/Write Access The EEPROM Access Registers are accessible in the I/O space, see page 35. The write access time for the EEPROM is given in lets the user software detect when the next byte can be written. If ...

Page 25

Assembly Code Example EEPROM_write: C Code Example void EEPROM_write(unsigned int uiAddress, unsigned char ucData Note: 2549M–AVR–09/10 ATmega640/1280/1281/2560/2561 (1) ; Wait for completion of previous write sbic EECR,EEPE rjmp EEPROM_write ; Set up address (r18:r17) in address register out ...

Page 26

The next code examples show assembly and C functions for reading the EEPROM. The exam- ples assume that interrupts are controlled so that no interrupts will occur during execution of these functions. Assembly Code Example EEPROM_read: C Code Example unsigned ...

Page 27

I/O Memory The I/O space definition of the ATmega640/1280/1281/2560/2561 is shown in mary” on page All ATmega640/1280/1281/2560/2561 I/Os and peripherals are placed in the I/O space. All I/O locations may be accessed by the LD/LDS/LDD and ST/STS/STD instructions, transferring ...

Page 28

External Memory Interface With all the features the External Memory Interface provides well suited to operate as an interface to memory devices such as External SRAM and Flash, and peripherals such as LCD- display, A/D, and D/A. ...

Page 29

Using the External Memory Interface The interface consists of: • AD7:0: Multiplexed low-order address bus and data bus. • ALE: Address latch enable. • RD: Read strobe. • WR: Write strobe. The control bits for the External Memory Interface ...

Page 30

Figure 8-2. 8.1.3 Pull-up and Bus-keeper The pull-ups on the AD7:0 ports may be activated if the corresponding Port register is written to one. To reduce power consumption in sleep mode recommended to disable the pull-ups by writing ...

Page 31

Figure 8-3. System Clock (CLK Note: Figure 8-4. System Clock (CLK Note: 2549M–AVR–09/10 ATmega640/1280/1281/2560/2561 External Data Memory Cycles without Wait-state (SRWn1=0 and SRWn0= CPU ALE A15:8 Prev. addr. DA7:0 Prev. data WR DA7:0 (XMBK = 0) Prev. data ...

Page 32

Figure 8-5. System Clock (CLK Note: Figure 8-6. System Clock (CLK DA7:0 (XMBK = 0) DA7:0 (XMBK = 1) Note: 8.1.5 Using all Locations of External Memory Smaller than 64 Kbytes Since the external memory is mapped after the internal ...

Page 33

Application software, the external 32 Kbytes memory will appear as one linear 32 Kbytes address space from 0x2200 to 0xA1FF. This is illustrated in Figure 8-7. 8.1.6 Using all 64 Kbytes Locations of External Memory Since the External Memory ...

Page 34

Assembly Code Example C Code Example #define OFFSET 0x4000 void XRAM_example(void Note: 2549M–AVR–09/10 ATmega640/1280/1281/2560/2561 (1) ; OFFSET is defined to 0x4000 to ensure ; external memory access ; Configure Port C (address high byte output 0x00 ...

Page 35

Register Description 8.2.1 EEPROM registers 8.2.1.1 EEARH and EEARL – The EEPROM Address Register Bit 0x22 (0x42) 0x21 (0x41) Read/Write Initial Value • Bits 15:12 – Res: Reserved Bits These bits are reserved bits and will always read as ...

Page 36

Table 8-1. EEPM1 • Bit 3 – EERIE: EEPROM Ready Interrupt Enable Writing EERIE to one enables the EEPROM Ready Interrupt if the I bit in SREG is set. Writing EERIE to zero disables the interrupt. ...

Page 37

Bit 0 – EERE: EEPROM Read Enable The EEPROM Read Enable Signal EERE is the read strobe to the EEPROM. When the correct address is set up in the EEAR Register, the EERE bit must be written to a ...

Page 38

Figure 8-1 on page external memory address space is treated as one sector. When the entire SRAM address space is configured as one sector, the wait-states are configured by the SRW11 and SRW10 bits. Table 8-2. SRL2 ...

Page 39

Bit 7– XMBK: External Memory Bus-keeper Enable Writing XMBK to one enables the bus keeper on the AD7:0 lines. When the bus keeper is enabled, AD7:0 will keep the last driven value on the lines even if the XMEM ...

Page 40

System Clock and Clock Options This section describes the clock options for the AVR microcontroller. 9.1 Overview Figure 9-1 need not be active at a given time. In order to reduce power consumption, the clocks to modules not being ...

Page 41

I/O Clock – clk I/O The I/O clock is used by the majority of the I/O modules, like Timer/Counters, SPI, and USART. The I/O clock is also used by the External Interrupt module, but note that some external inter- ...

Page 42

Default Clock Source The device is shipped with internal RC oscillator at 8.0 MHz and with the fuse CKDIV8 pro- grammed, resulting in 1.0 MHz system clock. The startup time is set to maximum and time-out period enabled. (CKSEL ...

Page 43

C1 and C2 should always be equal for both crystals and resonators. The optimal value of the capacitors depends on the crystal or resonator in use, the amount of stray capacitance, and the electromagnetic noise of the environment. Some initial ...

Page 44

Table 9-4. Oscillator Source / Power Conditions Ceramic resonator, fast Ceramic resonator, slowly Crystal Oscillator, BOD enabled Crystal Oscillator, fast rising power Crystal Oscillator, slowly rising power Notes: 9.5 Full Swing Crystal Oscillator Pins XTAL1 and XTAL2 are input and ...

Page 45

Table 9-6. Oscillator Source / Power Conditions Ceramic resonator, fast Ceramic resonator, slowly Ceramic resonator, BOD Ceramic resonator, fast Ceramic resonator, slowly Crystal Oscillator, BOD Crystal Oscillator, fast Crystal Oscillator, slowly Notes: 9.6 Low Frequency Crystal Oscillator The device can ...

Page 46

The capacitance (Ce + Ci) needed at each XTAL/TOSC pin can be calculated by using: where optional external capacitors as described the pin capacitance the load capacitance for ...

Page 47

This clock may be selected as the system clock by programming the CKSEL Fuses as shown in Table 9-9. If selected, it will operate with no external components. During reset, hardware loads the pre-programmed calibration value into the OSCCAL Register ...

Page 48

When this clock source is selected, start-up times are determined by the SUT Fuses as shown in Table 9-12. Table 9-12. Power Conditions Fast rising power Slowly rising power 9.9 External Clock To drive the device from an external clock ...

Page 49

Note that the System Clock Prescaler can be used to implement run-time changes of the internal clock frequency while still ensuring stable operation. Refer to “System Clock Prescaler” for details. 9.10 Clock Output Buffer The device can output the system ...

Page 50

Register Description 9.13.1 OSCCAL – Oscillator Calibration Register Bit (0x66) Read/Write Initial Value • Bits 7:0 – CAL7:0: Oscillator Calibration Value The Oscillator Calibration Register is used to trim the Calibrated Internal RC Oscillator to remove process variations from ...

Page 51

Note that any value can be written to the CLKPS bits regardless of the CKDIV8 Fuse setting. The Application software must ensure ...

Page 52

Power Management and Sleep Modes Sleep modes enable the application to shut down unused modules in the MCU, thereby saving power. The AVR provides various sleep modes allowing the user to tailor the power consump- tion to the application’s ...

Page 53

Idle mode enables the MCU to wake up from external triggered interrupts as well as internal ones like the Timer Overflow and USART Transmit Complete interrupts. If wake-up from the Analog Comparator interrupt is not required, the Analog Comparator can ...

Page 54

If the Timer/Counter2 is not using the synchronous clock, the clock source is stopped during sleep. Note that even if the synchronous clock is running in Power-save, this clock is only available for the Timer/Counter2. 10.6 Standby ...

Page 55

Internal Voltage Reference as input, the Analog Comparator should be disabled in all sleep modes. Otherwise, the Internal Voltage Reference will be enabled, independent of sleep mode. Refer to log Comparator. 10.9.3 Brown-out Detector If the Brown-out ...

Page 56

There are three alternative ways to disable the OCD system: • Disable the OCDEN Fuse. • Disable the JTAGEN Fuse. • Write one to the JTD bit in MCUCR. 10.10 Register Description 10.10.1 SMCR – Sleep Mode Control Register The ...

Page 57

Bit 6 - PRTIM2: Power Reduction Timer/Counter2 Writing a logic one to this bit shuts down the Timer/Counter2 module in synchronous mode (AS2 is 0). When the Timer/Counter2 is enabled, operation will continue like before the shutdown. • Bit ...

Page 58

Bit 2 - PRUSART3: Power Reduction USART3 Writing a logic one to this bit shuts down the USART3 by stopping the clock to the module. When waking up the USART3 again, the USART3 should be re initialized to ensure ...

Page 59

System Control and Reset 11.1 Resetting the AVR During reset, all I/O Registers are set to their initial values, and the program starts execution from the Reset Vector. The instruction placed at the Reset Vector must be a JMP ...

Page 60

Figure 11-1. Reset Logic BODLEVEL [2..0] 11.2.1 Power-on Reset A Power-on Reset (POR) pulse is generated by an On-chip detection circuit. The detection level is defined below the detection level. The POR circuit can be used to ...

Page 61

Figure 11-3. MCU Start-up, RESET Extended Externally TIME-OUT INTERNAL 11.2.2 External Reset An External Reset is generated by a low level on the RESET pin. Reset pulses longer than the minimum pulse width (see reset, even if the clock is ...

Page 62

Figure 11-5. Brown-out Reset During Operation 11.2.4 Watchdog Reset When the Watchdog times out, it will generate a short reset pulse of one CK cycle duration. On the falling edge of this pulse, the delay timer starts counting the Time-out ...

Page 63

ADC is used. To reduce power consumption in Power-down mode, the user can avoid the three conditions above to ensure that the reference is turned off before entering Power-down mode. 11.4 Watchdog Timer 11.4.1 Features • Clocked from separate On-chip ...

Page 64

Watchdog set-up must follow timed sequences. The sequence for clearing WDE and changing time-out configuration is as follows the same operation, write a logic one to the Watchdog change enable bit (WDCE) and WDE. A ...

Page 65

Assembly Code Example WDT_off: C Code Example void WDT_off(void Note: The following code example shows one assembly and one C function for changing the time-out value of the Watchdog Timer. 2549M–AVR–09/10 ATmega640/1280/1281/2560/2561 (1) ; Turn off global ...

Page 66

Assembly Code Example WDT_Prescaler_Change: C Code Example void WDT_Prescaler_Change(void Notes: 2549M–AVR–09/10 ATmega640/1280/1281/2560/2561 (1) ; Turn off global interrupt cli ; Reset Watchdog Timer wdr ; Start timed sequence in r16, WDTCSR ori r16, (1<<WDCE) | (1<<WDE) out WDTCSR, ...

Page 67

Register Description 11.5.1 MCUSR – MCU Status Register The MCU Status Register provides information on which reset source caused an MCU reset. Bit 0x35 (0x55) Read/Write Initial Value • Bit 4 – JTRF: JTAG Reset Flag This bit is ...

Page 68

Bit 6 - WDIE: Watchdog Interrupt Enable When this bit is written to one and the I-bit in the Status Register is set, the Watchdog Interrupt is enabled. If WDE is cleared in combination with this setting, the Watchdog ...

Page 69

Table 11-2. WDP3 2549M–AVR–09/10 ATmega640/1280/1281/2560/2561 Watchdog Timer Prescale Select Number of WDT Oscillator WDP2 WDP1 WDP0 (2048) cycles 0 ...

Page 70

I/O-Ports 12.1 Introduction All AVR ports have true Read-Modify-Write functionality when used as general digital I/O ports. This means that the direction of one port pin can be changed without unintentionally changing the direction of any other pin with ...

Page 71

Note that enabling the alternate function of some of the port pins does not affect the use of the other pins in the port as general digital I/O. 12.2 Ports as General Digital I/O The ports are bi-directional I/O ports ...

Page 72

If PORTxn is written logic one when the pin is configured as an output pin, the port pin is driven high (one). If PORTxn is written logic zero when the pin is configured as an output pin, the port pin ...

Page 73

Figure 12-3. Synchronization when Reading an Externally Applied Pin value INSTRUCTIONS Consider the clock period starting shortly after the first falling edge of the system clock. The latch is closed when the clock is low, and goes transparent when the ...

Page 74

The following code example shows how to set port B pins 0 and 1 high, pins 2 and 3 low, and define the port pins from input with pull-ups assigned to port pins 6 and 7. ...

Page 75

Sleep mode, as the clamping in these sleep mode produces the requested logic change. 12.2.6 Unconnected Pins If some pins are unused recommended to ensure that these pins have a defined level. Even though most of ...

Page 76

Figure 12-5. Alternate Port Functions Pxn PUOExn: PUOVxn: DDOExn: DDOVxn: PVOExn: PVOVxn: DIEOExn: Pxn DIGITAL INPUT-ENABLE OVERRIDE ENABLE DIEOVxn: Pxn DIGITAL INPUT-ENABLE OVERRIDE VALUE SLEEP: PTOExn: Note: 2549M–AVR–09/10 ATmega640/1280/1281/2560/2561 (Note:) PUOExn PUOVxn 1 0 DDOExn DDOVxn 1 0 PVOExn PVOVxn ...

Page 77

Table 12-2 ure 12-5 on page 76 generated internally in the modules having the alternate function. Table 12-2. Signal Name PUOE PUOV DDOE DDOV PVOE PVOV PTOE DIEOE DIEOV AIO The following subsections shortly describe the alternate functions for each ...

Page 78

Alternate Functions of Port A The Port A has an alternate function as the address low byte and data lines for the External Memory Interface. Table 12-3. Port Pin PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 Table 12-4 ...

Page 79

Table 12-5. Signal Name PUOE PUOV DDOE DDOV PVOE PVOV DIEOE DIEOV DI AIO 12.3.2 Alternate Functions of Port B The Port B pins with alternate functions are shown in Table 12-6. Port Pin PB7 PB6 PB5 PB4 PB3 PB2 ...

Page 80

PCINT7, Pin Change Interrupt source 7: The PB7 pin can serve as an external interrupt source. • OC1B/PCINT6, Bit 6 OC1B, Output Compare Match B output: The PB6 pin can serve as an external output for the Timer/Counter1 Output Compare ...

Page 81

Table 12-7 shown in MISO signal, while MOSI is divided into SPI MSTR OUTPUT and SPI SLAVE INPUT. PCINT0, Pin Change Interrupt source 0: The PB0 pin can serve as an external interrupt source. Table 12-7. Signal Name PUOE PUOV ...

Page 82

Alternate Functions of Port C The Port C alternate function is as follows: Table 12-9. Table 12-10 signals shown in Table 12-10. Overriding Signals for Alternate Functions in PC7:PC4 Signal Name PUOE PUOV DDOE DDOV PVOE PVOV DIEOE DIEOV ...

Page 83

Table 12-11. Overriding Signals for Alternate Functions in PC3:PC0 Signal Name PUOE PUOV DDOE DDOV PVOE PVOV DIEOE DIEOV DI AIO 12.3.4 Alternate Functions of Port D The Port D pins with alternate functions are shown in Table 12-12. Port ...

Page 84

INT3/TXD1 – Port D, Bit 3 INT3, External Interrupt source 3: The PD3 pin can serve as an external interrupt source to the MCU. TXD1, Transmit Data (Data output pin for the USART1). When the USART1 Transmitter is enabled, ...

Page 85

Table 12-13. Overriding Signals for Alternate Functions PD7:PD4 Signal Name PUOE PUOV DDOE DDOV PVOE PVOV DIEOE DIEOV Table 12-14. Overriding Signals for Alternate Functions in PD3:PD0 Signal Name PUOE PUOV DDOE DDOV PVOE PVOV DIEOE DIEOV AIO Note: 2549M–AVR–09/10 ...

Page 86

Alternate Functions of Port E The Port E pins with alternate functions are shown in Table 12-15. Port E Pins Alternate Functions Port Pin PE7 PE6 PE5 PE4 PE3 PE2 PE1 PE0 Note: • INT7/ICP3/CLKO – Port E, Bit ...

Page 87

INT4/OC3B – Port E, Bit 4 INT4, External Interrupt source 4: The PE4 pin can serve as an External Interrupt source. OC3B, Output Compare Match B output: The PE4 pin can serve as an External output for the Timer/Counter3 ...

Page 88

Table 12-16. Overriding Signals for Alternate Functions PE7:PE4 Signal Name PUOE PUOV DDOE DDOV PVOE PVOV DIEOE DIEOV DI AIO Table 12-17. Overriding Signals for Alternate Functions in PE3:PE0 Signal Name PUOE PUOV DDOE DDOV PVOE PVOV DIEOE DIEOV DI ...

Page 89

Alternate Functions of Port F The Port F has an alternate function as analog input for the ADC as shown in some Port F pins are configured as outputs essential that these do not switch when a ...

Page 90

Table 12-19. Overriding Signals for Alternate Functions in PF7:PF4 Signal Name PUOE PUOV DDOE DDOV PVOE PVOV DIEOE DIEOV DI AIO Table 12-20. Overriding Signals for Alternate Functions in PF3:PF0 Signal Name PUOE PUOV DDOE DDOV PVOE PVOV DIEOE DIEOV ...

Page 91

OC0B – Port G, Bit 5 OC0B, Output Compare match B output: The PG5 pin can serve as an external output for the TImer/Counter0 Output Compare. The pin has to be configured as an output (DDG5 set) to serve ...

Page 92

Table 12-23. Overriding Signals for Alternate Functions in PG3:PG0 Signal Name PUOE PUOV DDOE DDOV PVOE PVOV PTOE DIEOE DIEOV AIO 12.3.8 Alternate Functions of Port H The Port H alternate pin configuration is as follows: Table 12-24. Port H ...

Page 93

OC4B – Port H, Bit 4 OC4B, Output Compare Match B output: The PH4 pin can serve as an external output for the Timer/Counter2 Output Compare B. The pin has to be configured as an output (DDH4 set) to ...

Page 94

Table 12-26. Overriding Signals for Alternate Functions in PH3:PH0 Signal Name PUOE PUOV DDOE DDOV PVOE PVOV PTOE DIEOE DIEOV AIO 12.3.9 Alternate Functions of Port J The Port J alternate pin configuration is as follows: Table 12-27. Port J ...

Page 95

TXD3/PCINT10 - Port J, Bit 1 TXD3, USART3 Transmit pin. PCINT10, Pin Change Interrupt Source 10. The PJ1 pin can serve as External Interrupt Sources. • RXD3/PCINT9 - Port J, Bit 0 RXD3, USART3 Receive pin. Receive Data (Data ...

Page 96

Table 12-28. Overriding Signals for Alternate Functions in PJ7:PJ4 Signal Name PUOE PUOV DDOE DDOV PVOE PVOV PTOE DIEOE DIEOV DI AIO Table 12-29. Overriding Signals for Alternate Functions in PJ3:PJ0 Signal Name PUOE PUOV DDOE DDOV PVOE PVOV PTOE ...

Page 97

Table 12-30. Port K Pins Alternate Functions Port Pin • ADC15:8/PCINT23:16 – Port K, Bit 7:0 ADC15:8, Analog to Digital Converter, Channel PCINT23:16, Pin Change Interrupt Source 23:16. The PK7:0 pins can serve as External Inter- rupt ...

Page 98

Table 12-32. Overriding Signals for Alternate Functions in PK3:PK0 Signal Name PUOE PUOV DDOE DDOV PVOE PVOV PTOE DIEOE DIEOV 12.3.11 Alternate Functions of Port L The Port L alternate pin configuration is as follows: Table 12-33. Port L Pins ...

Page 99

T5 – Port L, Bit 2 T5, Timer/Counter5 counter source. • ICP5 – Port L, Bit 1 ICP5, Input Capture Pin 5: The PL1 pin can serve as an Input Capture pin for Timer/Counter5. • ICP4 – Port L, ...

Page 100

Register Description for I/O-Ports 12.4.1 MCUCR – MCU Control Register Bit 0x35 (0x55) Read/Write Initial Value • Bit 4 – PUD: Pull-up Disable When this bit is written to one, the I/O ports pull-up resistors are disabled even if ...

Page 101

PORTC – Port C Data Register Bit 0x08 (0x28) Read/Write Initial Value 12.4.9 DDRC – Port C Data Direction Register Bit 0x07 (0x27) Read/Write Initial Value 12.4.10 PINC– Port C Input Pins Address Bit 0x06 (0x26) Read/Write Initial Value ...

Page 102

PINE – Port E Input Pins Address Bit 0x0C (0x2C) Read/Write Initial Value 12.4.17 PORTF – Port F Data Register Bit 0x11 (0x31) Read/Write Initial Value 12.4.18 DDRF – Port F Data Direction Register Bit 0x10 (0x30) Read/Write Initial ...

Page 103

DDRH – Port H Data Direction Register Bit (0x101) Read/Write Initial Value 12.4.25 PINH – Port H Input Pins Address Bit (0x100) Read/Write Initial Value 12.4.26 PORTJ – Port J Data Register Bit (0x105) Read/Write Initial Value 12.4.27 DDRJ ...

Page 104

PORTL – Port L Data Register Bit (0x10B) Read/Write Initial Value 12.4.33 DDRL – Port L Data Direction Register Bit (0x10A) Read/Write Initial Value 12.4.34 PINL – Port L Input Pins Address Bit (0x109) Read/Write Initial Value 2549M–AVR–09/10 ATmega640/1280/1281/2560/2561 ...

Page 105

Interrupts ...

Page 106

Table 13-1. Vector No Notes: 2549M–AVR–09/10 ATmega640/1280/1281/2560/2561 Reset and Interrupt Vectors (Continued) ...

Page 107

Reset and Interrupt Vector placement Table 13-2 BOOTRST and IVSEL settings. If the program never enables an interrupt source, the Interrupt Vectors are not used, and regular program code can be placed at these locations. This is also the ...

Page 108

When the BOOTRST Fuse is unprogrammed, the ...

Page 109

When the BOOTRST Fuse is programmed and the Boot section size set to 8 Kbytes, the most typical and general program setup for the Reset and Interrupt Vector Addresses is: Address Labels Code .org 0x0002 0x00002 0x00004 ... 0x00070 ; ...

Page 110

Assembly Code Example Move_interrupts: C Code Example void Move_interrupts(void) { uchar temp; } 13.4 Register Description 13.4.1 MCUCR – MCU Control Register Bit 0x35 (0x55) Read/Write Initial Value • Bit 1 – IVSEL: Interrupt Vector Select When the IVSEL bit ...

Page 111

Interrupts will automatically be disabled while this sequence is executed. Interrupts are disabled in the cycle IVCE is set, and they remain disabled until after the instruction following the write to IVSEL. If IVSEL is not written, interrupts remain disabled ...

Page 112

External Interrupts The External Interrupts are triggered by the INT7:0 pin or any of the PCINT23:0 pins. Observe that, if enabled, the interrupts will trigger even if the INT7:0 or PCINT23:0 pins are configured as outputs. This feature provides ...

Page 113

Figure 14-1. Normal pin change interrupt. PCINT(0) clk pcint_in_(n) pcint_setflag 14.2 Register Description 14.2.1 EICRA – External Interrupt Control Register A The External Interrupt Control Register A contains control bits for interrupt sense control. Bit (0x69) Read/Write Initial Value • ...

Page 114

Table 14-1. ISCn1 Note: Table 14-2. Symbol t INT 14.2.2 EICRB – External Interrupt Control Register B Bit (0x6A) Read/Write Initial Value • Bits 7:0 – ISC71, ISC70 - ISC41, ISC40: External Interrupt ...

Page 115

EIMSK – External Interrupt Mask Register Bit 0x1D (0x3D) Read/Write Initial Value • Bits 7:0 – INT7:0: External Interrupt Request Enable When an INT7:0 bit is written to one and the I-bit in the Status Register ...

Page 116

Bit 0 – PCIE0: Pin Change Interrupt Enable 0 When the PCIE0 bit is set (one) and the I-bit in the Status Register (SREG) is set (one), pin change interrupt 0 is enabled. Any change on any enabled PCINT7:0 ...

Page 117

Bit 7:0 – PCINT15:8: Pin Change Enable Mask 15:8 Each PCINT15:8-bit selects whether pin change interrupt is enabled on the corresponding I/O pin. If PCINT15:8 is set and the PCIE1 bit in EIMSK is set, pin change interrupt is ...

Page 118

Timer/Counter0 with PWM 15.1 Features • Two Independent Output Compare Units • Double Buffered Output Compare Registers • Clear Timer on Compare Match (Auto Reload) • Glitch Free, Phase Correct Pulse Width Modulator (PWM) • Variable PWM Period ...

Page 119

The Timer/Counter is inactive when no clock source is selected. The output from the Clock Select logic is referred to as the timer clock (clk The double buffered Output Compare Registers (OCR0A and ...

Page 120

Signal description (internal signals): count direction clear clk top bottom Depending of the mode of operation used, the counter is cleared, incremented, or decremented at each timer clock (clk selected by the Clock Select bits (CS02:0). When no clock source ...

Page 121

Figure 15-3. Output Compare Unit, Block Diagram The OCR0x Registers are double buffered when using any of the Pulse Width Modulation (PWM) modes. For the normal and Clear Timer on Compare (CTC) modes of operation, the dou- ble buffering is ...

Page 122

Similarly, do not write the TCNT0 value equal to BOTTOM when the counter is down-counting. The setup of the OC0x should be performed before setting the Data Direction Register for the port pin to output. The easiest way of ...

Page 123

Compare Output Mode and Waveform Generation The Waveform Generator uses the COM0x1:0 bits differently in Normal, CTC, and PWM modes. For all modes, setting the COM0x1 tells the Waveform Generator that no action on the OC0x Register ...

Page 124

Figure 15-5. CTC Mode, Timing Diagram TCNTn OCn (Toggle) Period An interrupt can be generated each time the counter value reaches the TOP value by using the OCF0A Flag. If the interrupt is enabled, the interrupt handler routine can be ...

Page 125

The diagram includes non-inverted and inverted PWM outputs. The small horizontal line marks on the TCNT0 slopes represent Com- pare Matches between OCR0x and TCNT0. Figure 15-6. Fast PWM Mode, Timing Diagram TCNTn OCnx ...

Page 126

Phase Correct PWM Mode The phase correct PWM mode (WGM02 provides a high resolution phase correct PWM waveform generation option. The phase correct PWM mode is based on a dual-slope operation. The counter counts repeatedly ...

Page 127

OC0x Register at the Compare Match between OCR0x and TCNT0 when the counter increments, and setting (or clearing) the OC0x Register at Com- pare Match between OCR0x and TCNT0 when the counter decrements. The ...

Page 128

Figure 15-9. Timer/Counter Timing Diagram, with Prescaler (f clk clk (clk TCNTn TOVn Figure 15-10 mode and PWM mode, where OCR0A is TOP. Figure 15-10. Timer/Counter Timing Diagram, Setting of OCF0x, with Prescaler (f clk clk (clk TCNTn OCRnx OCFnx ...

Page 129

Register Description 15.9.1 TCCR0A – Timer/Counter Control Register A Bit 0x24 (0x44) Read/Write Initial Value • Bits 7:6 – COM0A1:0: Compare Match Output A Mode These bits control the Output Compare pin (OC0A) behavior. If one or both of ...

Page 130

Table 15-4. COM0A1 Note: • Bits 5:4 – COM0B1:0: Compare Match Output B Mode These bits control the Output Compare pin (OC0B) behavior. If one or both of the COM0B1:0 bits are set, the OC0B output ...

Page 131

Table 15-7 rect PWM mode. Table 15-7. COM0B1 Note: • Bits 3, 2 – Res: Reserved Bits These bits are reserved bits and will always read as zero. • Bits 1:0 – WGM01:0: Waveform Generation Mode ...

Page 132

TCCR0B – Timer/Counter Control Register B Bit 0x25 (0x45) Read/Write Initial Value • Bit 7 – FOC0A: Force Output Compare A The FOC0A bit is only active when the WGM bits specify a non-PWM mode. However, for ensuring compatibility ...

Page 133

Table 15-9. CS02 external pin modes are used for the Timer/Counter0, transitions on the T0 pin will clock the counter even if the pin is configured as an output. This feature ...

Page 134

TIMSK0 – Timer/Counter Interrupt Mask Register Bit (0x6E) Read/Write Initial Value • Bits 7:3, 0 – Res: Reserved Bits These bits are reserved bits and will always read as zero. • Bit 2 – OCIE0B: Timer/Counter Output Compare Match ...

Page 135

Bit 0 – TOV0: Timer/Counter0 Overflow Flag The bit TOV0 is set when an overflow occurs in Timer/Counter0. TOV0 is cleared by hardware when executing the corresponding interrupt handling vector. Alternatively, TOV0 is cleared by writing a logic one ...

Page 136

Timer/Counter (Timer/Counter and 5) 16.1 Features • True 16-bit Design (that is, allows 16-bit PWM) • Three independent Output Compare Units • Double Buffered Output Compare Registers • One Input Capture Unit • Input Capture ...

Page 137

Figure 16-1. 16-bit Timer/Counter Block Diagram Note: 16.2.1 Registers The Timer/Counter (TCNTn), Output Compare Registers (OCRnA/B/C), and Input Capture Reg- ister (ICRn) are all 16-bit registers. Special procedures must be followed when accessing the 16- bit registers. These procedures are ...

Page 138

See “Output Compare Units” on page 145. Match Flag (OCFnA/B/C) which can be used to generate an Output Compare interrupt request. The Input Capture Register can capture the Timer/Counter value at a given external (edge trig- gered) event on either ...

Page 139

Assembly Code Examples C Code Examples Note: The assembly code example returns the TCNTn value in the r17:r16 register pair important to notice that accessing 16-bit registers are atomic operations interrupt occurs between the two instructions ...

Page 140

Assembly Code Example TIM16_ReadTCNTn: C Code Example unsigned int TIM16_ReadTCNTn( void ) { } Note: The assembly code example returns the TCNTn value in the r17:r16 register pair. 2549M–AVR–09/10 ATmega640/1280/1281/2560/2561 (1) ; Save global interrupt flag in r18,SREG ; Disable ...

Page 141

The following code examples show how atomic write of the TCNTn Register contents. Writing any of the OCRnA/B/C or ICRn Registers can be done by using the same principle. Assembly Code Example TIM16_WriteTCNTn: C Code Example void ...

Page 142

Counter Unit The main part of the 16-bit Timer/Counter is the programmable 16-bit bi-directional counter unit. Figure 16-2 Figure 16-2. Counter Unit Block Diagram Signal description (internal signals): Count Direction Clear clk TOP BOTTOM The 16-bit counter is mapped ...

Page 143

Input Capture Unit The Timer/Counter incorporates an input capture unit that can capture external events and give them a time-stamp indicating time of occurrence. The external signal indicating an event, or mul- tiple events, can be applied via the ...

Page 144

The ICRn Register can only be written when using a Waveform Generation mode that utilizes the ICRn Register for defining the counter’s TOP value. In these cases the Waveform Genera- tion mode (WGMn3:0) bits must be set before the TOP ...

Page 145

Register has been read. After a change of the edge, the Input Capture Flag (ICFn) must be cleared by software (writing a logical one to the I/O bit location). For measuring frequency only, the clearing of the ICFn Flag is ...

Page 146

The OCRnx Register is double buffered when using any of the twelve Pulse Width Modulation (PWM) modes. For the Normal and Clear Timer on Compare (CTC) modes of operation, the double buffering is disabled. The double buffering synchronizes the update ...

Page 147

Compare Match Output Unit The Compare Output mode (COMnx1:0) bits have two functions. The Waveform Generator uses the COMnx1:0 bits for defining the Output Compare (OCnx) state at the next compare match. Secondly the COMnx1:0 bits control the OCnx ...

Page 148

PWM refer to page 160. A change of the COMnx1:0 bits state will have effect at the first compare match after the bits are written. ...

Page 149

Normal Mode The simplest mode of operation is the Normal mode (WGMn3:0 = 0). In this mode the counting direction is always up (incrementing), and no counter clear is performed. The counter simply overruns when it passes its maximum ...

Page 150

TCNTn, the counter will miss the compare match. The counter will then have to count to its max- imum value (0xFFFF) and wrap around starting at 0x0000 before the compare match can occur. In many cases this feature is not ...

Page 151

Figure 16-7. Fast PWM Mode, Timing Diagram TCNTn OCnx OCnx Period The Timer/Counter Overflow Flag (TOVn) is set each time the counter reaches TOP. In addition the OCnA or ICFn Flag is set at the same timer clock cycle as ...

Page 152

The PWM frequency for the output can be calculated by the following equation: The N variable represents the prescaler divider (1, 8, 64, 256, or 1024). The extreme values for the OCRnx Register represents special cases when generating a PWM ...

Page 153

Figure 16-8. Phase Correct PWM Mode, Timing Diagram TCNTn OCnx OCnx Period The Timer/Counter Overflow Flag (TOVn) is set each time the counter reaches BOTTOM. When either OCRnA or ICRn is used for defining the TOP value, the OCnA or ...

Page 154

The PWM frequency for the output when using phase correct PWM can be calculated by the following equation: The N variable represents the prescaler divider (1, 8, 64, 256, or 1024). The extreme values for the OCRnx ...

Page 155

Figure 16-9. Phase and Frequency Correct PWM Mode, Timing Diagram TCNTn OCnx OCnx Period The Timer/Counter Overflow Flag (TOVn) is set at the same timer clock cycle as the OCRnx Registers are updated with the double buffer value (at BOTTOM). ...

Page 156

The extreme values for the OCRnx Register represents special cases when generating a PWM waveform output in the phase correct PWM mode. If the OCRnx is set equal to BOTTOM the output will be continuously low and if set equal ...

Page 157

Figure 16-12 frequency correct PWM mode the OCRnx Register is updated at BOTTOM. The timing diagrams will be the same, but TOP should be replaced by BOTTOM, TOP-1 by BOTTOM+1 and so on. The same renaming applies for modes that ...

Page 158

Register Description 16.11.1 TCCR1A – Timer/Counter 1 Control Register A Bit (0x80) Read/Write Initial Value 16.11.2 TCCR3A – Timer/Counter 3 Control Register A Bit (0x90) Read/Write Initial Value 16.11.3 TCCR4A – Timer/Counter 4 Control Register A Bit (0xA0) Read/Write ...

Page 159

Bit 1:0 – WGMn1:0: Waveform Generation Mode Combined with the WGMn3:2 bits found in the TCCRnB Register, these bits control the counting sequence of the counter, the source for maximum (TOP) counter value, and what type of wave- form ...

Page 160

Table 16-5 correct and frequency correct PWM mode. Table 16-5. COMnA1 COMnB1 COMnC1 Note: 16.11.5 TCCR1B – Timer/Counter 1 Control Register B Bit (0x81) Read/Write Initial Value 16.11.6 TCCR3B – Timer/Counter 3 Control Register B Bit ...

Page 161

Bit 6 – ICESn: Input Capture Edge Select This bit selects which edge on the Input Capture Pin (ICPn) that is used to trigger a capture event. When the ICESn bit is written to zero, a falling (negative) edge ...

Page 162

TCCR3C – Timer/Counter 3 Control Register C Bit (0x92) Read/Write Initial Value 16.11.11 TCCR4C – Timer/Counter 4 Control Register C Bit (0xA2) Read/Write Initial Value 16.11.12 TCCR5C – Timer/Counter 5 Control Register C Bit (0x122) Read/Write Initial Value • ...

Page 163

TCNT4H and TCNT4L –Timer/Counter 4 Bit (0xA5) (0xA4) Read/Write Initial Value 16.11.16 TCNT5H and TCNT5L –Timer/Counter 5 Bit (0x125) (0x124) Read/Write Initial Value The two Timer/Counter I/O locations (TCNTnH and TCNTnL, combined TCNTn) give direct access, both for read ...

Page 164

OCR3AH and OCR3AL – Output Compare Register 3 A Bit (0x99) (0x98) Read/Write Initial Value 16.11.21 OCR3BH and OCR3BL – Output Compare Register 3 B Bit (0x9B) (0x9A) Read/Write Initial Value 16.11.22 OCR3CH and OCR3CL – Output Compare Register ...

Page 165

OCR5BH and OCR5BL – Output Compare Register 5 B Bit (0x12B) (0x12A) Read/Write Initial Value 16.11.28 OCR5CH and OCR5CL –Output Compare Register 5 C Bit (0x12D) (0x12C) Read/Write Initial Value The Output Compare Registers contain a 16-bit value that ...

Page 166

The Input Capture is updated with the counter (TCNTn) value each time an event occurs on the ICPn pin (or optionally on the Analog Comparator output for Timer/Counter1). The Input Capture can be used for defining the counter TOP value. ...

Page 167

Bit 1 – OCIEnA: Timer/Countern, Output Compare A Match Interrupt Enable When this bit is written to one, and the I-flag in the Status Register is set (interrupts globally enabled), the Timer/Countern Output Compare A Match interrupt is enabled. ...

Page 168

Bit 2 – OCFnB: Timer/Counter1, Output Compare B Match Flag This flag is set in the timer clock cycle after the counter (TCNTn) value matches the Output Compare Register B (OCRnB). Note that a Forced Output Compare (FOCnB) strobe ...

Page 169

Timer/Counter and 5 Prescaler Timer/Counter and 5 share the same prescaler module, but the Timer/Counters can have different prescaler settings. The description below applies to all Timer/Counters used as ...

Page 170

The synchronization and edge detector logic introduces a delay of 2.5 to 3.5 system clock cycles from an edge has been applied to the Tn pin to the counter is updated. Enabling and disabling of the clock input must be ...

Page 171

Bit 0 – PSRSYNC: Prescaler Reset for Synchronous Timer/Counters When this bit is one, Timer/Counter0, Timer/Counter1, Timer/Counter3, Timer/Counter4 and Timer/Counter5 prescaler will be Reset. This bit is normally cleared immediately by hardware, except if the TSM bit is set. ...

Page 172

Output Compare Modulator (OCM1C0A) 18.1 Overview The Output Compare Modulator (OCM) allows generation of waveforms modulated with a carrier frequency. The modulator uses the outputs from the Output Compare Unit C of the 16-bit Timer/Counter1 and the Output Compare ...

Page 173

When the modulator is enabled the type of modulation (logical AND or OR) can be selected by the PORTB7 Register. Note that the DDRB7 controls the direction of the port independent of the COMnx1:0 bit setting. 18.2.1 Timing example Figure ...

Page 174

Timer/Counter2 with PWM and Asynchronous Operation Timer/Counter2 is a general purpose, single channel, 8-bit Timer/Counter module. The main features are: • Single Channel Counter • Clear Timer on Compare Match (Auto Reload) • Glitch-free, Phase Correct Pulse Width ...

Page 175

Registers The Timer/Counter (TCNT2) and Output Compare Register (OCR2A and OCR2B) are 8-bit reg- isters. Interrupt request (abbreviated to Int.Req.) signals are all visible in the Timer Interrupt Flag Register (TIFR2). All interrupts are individually masked with the Timer ...

Page 176

Figure 19-2. Counter Unit Block Diagram Signal description (internal signals): count direction clear clk top bottom Depending on the mode of operation used, the counter is cleared, incremented, or decremented at each timer clock (clk selected by the Clock Select ...

Page 177

Normal Mode The simplest mode of operation is the Normal mode (WGM22:0 = 0). In this mode the counting direction is always up (incrementing), and no counter clear is performed. The counter simply overruns when it passes its maximum ...

Page 178

The waveform generated will have a maximum frequency when OCR2A is set to zero (0x00). The waveform frequency is defined by the following clk_I/O equation: The N variable represents the ...

Page 179

COM2A1:0 bits). A frequency (with 50% duty cycle) waveform output in fast PWM mode can be achieved by set- ting OC2x to toggle ...

Page 180

The Timer/Counter Overflow Flag (TOV2) is set each time the counter reaches BOTTOM. The Interrupt Flag can be used to generate an interrupt each time the counter reaches the BOTTOM value. In phase correct PWM mode, the compare unit allows ...

Page 181

Figure 19-6. Output Compare Unit, Block Diagram The OCR2x Register is double buffered when using any of the Pulse Width Modulation (PWM) modes. For the Normal and Clear Timer on Compare (CTC) modes of operation, the double buffering is disabled. ...

Page 182

The setup of the OC2x should be performed before setting the Data Direction Register for the port pin to output. The easiest way of setting the OC2x value is to use the Force Output Com- pare (FOC2x) strobe bit in ...

Page 183

Compare Output Mode and Waveform Generation The Waveform Generator uses the COM2x1:0 bits differently in normal, CTC, and PWM modes. For all modes, setting the COM2x1 tells the Waveform Generator that no action on the OC2x Register ...

Page 184

Figure 19-10 Figure 19-10. Timer/Counter Timing Diagram, Setting of OCF2A, with Prescaler (f (clk TCNTn OCRnx OCFnx Figure 19-11 Figure 19-11. Timer/Counter Timing Diagram, Clear Timer on Compare Match mode, with Pres- (clk TCNTn (CTC) OCRnx OCFnx 19.8 Asynchronous Operation ...

Page 185

The CPU main clock frequency must be more than four times the Oscillator frequency. • When writing to one of the registers TCNT2, OCR2x, or TCCR2x, the value is transferred to a temporary register, and latched after two positive ...

Page 186

During asynchronous operation, the synchronization of the Interrupt Flags for the asynchronous timer takes 3 processor cycles plus one timer cycle. The timer is therefore advanced by at least one before the processor can read the timer value causing ...

Page 187

Register Description 19.10.1 TCCR2A –Timer/Counter Control Register A Bit (0xB0) Read/Write Initial Value • Bits 7:6 – COM2A1:0: Compare Match Output A Mode These bits control the Output Compare pin (OC2A) behavior. If one or both of the COM2A1:0 ...

Page 188

Table 19-4. COM2A1 Note: • Bits 5:4 – COM2B1:0: Compare Match Output B Mode These bits control the Output Compare pin (OC2B) behavior. If one or both of the COM2B1:0 bits are set, the OC2B output ...

Page 189

Table 19-7 rect PWM mode. Table 19-7. COM2B1 Note: • Bits 3, 2 – Res: Reserved Bits These bits are reserved bits and will always read as zero. • Bits 1:0 – WGM21:0: Waveform Generation Mode ...

Page 190

TCCR2B – Timer/Counter Control Register B Bit (0xB1) Read/Write Initial Value • Bit 7 – FOC2A: Force Output Compare A The FOC2A bit is only active when the WGM bits specify a non-PWM mode. However, for ensuring compatibility with ...

Page 191

Table 19-9. CS22 external pin modes are used for the Timer/Counter0, transitions on the T0 pin will clock the counter even if the pin is configured as an output. This feature ...

Page 192

ASSR – Asynchronous Status Register Bit (0xB6) Read/Write Initial Value • Bit 6 – EXCLK: Enable External Clock Input When EXCLK is written to one, and asynchronous clock is selected, the external clock input buf- fer is enabled and ...

Page 193

The mechanisms for reading TCNT2, OCR2A, OCR2B, TCCR2A and TCCR2B are different. When reading TCNT2, the actual timer value is read. When reading OCR2A, OCR2B, TCCR2A and TCCR2B the value in the temporary storage register is read. 19.10.7 TIMSK2 – ...

Page 194

Bit 0 – TOV2: Timer/Counter2 Overflow Flag The TOV2 bit is set (one) when an overflow occurs in Timer/Counter2. TOV2 is cleared by hard- ware when executing the corresponding interrupt handling vector. Alternatively, TOV2 is cleared by writing a ...

Page 195

SPI – Serial Peripheral Interface The Serial Peripheral Interface (SPI) allows high-speed synchronous data transfer between the ATmega640/1280/1281/2560/2561 and peripheral devices or between several AVR devices. The ATmega640/1280/1281/2560/2561 SPI includes the following features: • Full-duplex, Three-wire Synchronous Data Transfer ...

Page 196

Master and Slave prepare the data to be sent in their respective shift Registers, and the Master generates the required clock pulses on the SCK line to interchange data. Data is always shifted from Master to Slave on the Master ...

Page 197

When the SPI is enabled, the data direction of the MOSI, MISO, SCK, and SS pins is overridden according to Functions” on page Table 20-1. Pin MOSI MISO SCK SS Note: The following code examples show how to initialize the ...

Page 198

Assembly Code Example SPI_MasterInit: SPI_MasterTransmit: Wait_Transmit: C Code Example void SPI_MasterInit(void void SPI_MasterTransmit(char cData Note: 2549M–AVR–09/10 ATmega640/1280/1281/2560/2561 (1) ; Set MOSI and SCK output, all others input r17,(1<<DD_MOSI)|(1<<DD_SCK) ldi out DDR_SPI,r17 ; Enable SPI, Master, set ...

Page 199

The following code examples show how to initialize the SPI as a Slave and how to perform a simple reception. Assembly Code Example SPI_SlaveInit: SPI_SlaveReceive: C Code Example void SPI_SlaveInit(void char SPI_SlaveReceive(void Note: 2549M–AVR–09/10 ATmega640/1280/1281/2560/2561 (1) ...

Page 200

SS Pin Functionality 20.1.1 Slave Mode When the SPI is configured as a Slave, the Slave Select (SS) pin is always input. When SS is held low, the SPI is activated, and MISO becomes an output if configured so ...

Related keywords