- •Features
- •Pin Configurations
- •Disclaimer
- •Overview
- •Block Diagram
- •Pin Descriptions
- •Port B (PB5..PB0)
- •RESET
- •AVR CPU Core
- •Introduction
- •Architectural Overview
- •Status Register
- •Stack Pointer
- •Interrupt Response Time
- •SRAM Data Memory
- •Data Memory Access Times
- •EEPROM Data Memory
- •EEPROM Read/Write Access
- •Atomic Byte Programming
- •Split Byte Programming
- •Erase
- •Write
- •I/O Memory
- •Clock Systems and their Distribution
- •CPU Clock – clkCPU
- •I/O Clock – clkI/O
- •Flash Clock – clkFLASH
- •ADC Clock – clkADC
- •Clock Sources
- •Default Clock Source
- •External Clock
- •System Clock Prescaler
- •Switching Time
- •Idle Mode
- •Power-down Mode
- •Analog to Digital Converter
- •Analog Comparator
- •Brown-out Detector
- •Internal Voltage Reference
- •Watchdog Timer
- •Port Pins
- •Resetting the AVR
- •Reset Sources
- •Power-on Reset
- •External Reset
- •Brown-out Detection
- •Watchdog Reset
- •Watchdog Timer
- •Timed Sequences for Changing the Configuration of the Watchdog Timer
- •Safety Level 1
- •Safety Level 2
- •Interrupts
- •I/O Ports
- •Introduction
- •Configuring the Pin
- •Toggling the Pin
- •Reading the Pin Value
- •Unconnected Pins
- •Alternate Port Functions
- •Alternate Functions of Port B
- •Register Description for I/O-Ports
- •Port B Data Register – PORTB
- •External Interrupts
- •8-bit Timer/Counter0 with PWM
- •Overview
- •Registers
- •Definitions
- •Counter Unit
- •Output Compare Unit
- •Force Output Compare
- •Modes of Operation
- •Normal Mode
- •Fast PWM Mode
- •Phase Correct PWM Mode
- •Prescaler Reset
- •External Clock Source
- •Analog Comparator
- •Analog Comparator Multiplexed Input
- •Features
- •Operation
- •Starting a Conversion
- •Changing Channel or Reference Selection
- •ADC Input Channels
- •ADC Voltage Reference
- •ADC Noise Canceler
- •Analog Input Circuitry
- •ADC Accuracy Definitions
- •ADC Conversion Result
- •ADLAR = 0
- •ADLAR = 1
- •debugWIRE On-chip Debug System
- •Features
- •Overview
- •Physical Interface
- •Software Break Points
- •Limitations of debugWIRE
- •debugWIRE Related Register in I/O Memory
- •debugWire Data Register – DWDR
- •Performing a Page Write
- •Reading the Fuse and Lock Bits from Software
- •Preventing Flash Corruption
- •Fuse Bytes
- •Latching of Fuses
- •Signature Bytes
- •Calibration Byte
- •Page Size
- •Serial Downloading
- •Data Polling Flash
- •Data Polling EEPROM
- •Chip Erase
- •Programming the Flash
- •Programming the EEPROM
- •Reading the Flash
- •Reading the EEPROM
- •Power-off sequence
- •Electrical Characteristics
- •Absolute Maximum Ratings*
- •External Clock Drive Waveforms
- •External Clock Drive
- •ADC Characteristics – Preliminary Data
- •Active Supply Current
- •Idle Supply Current
- •Power-down Supply Current
- •Pin Pull-up
- •Register Summary
- •Instruction Set Summary
- •Ordering Information
- •Packaging Information
- •Erratas
- •Table of Contents
|
|
|
ATtiny13 |
|
|
|
|
EEPROM Write Prevents |
|
||
Note that an EEPROM write operation will block all software programming to Flash. |
|||
Writing to SPMCSR |
Reading the Fuses and Lock bits from software will also be prevented during the |
||
|
|
EEPROM write operation. It is recommended that the user checks the status bit (EEWE) |
|
|
|
in the EECR Register and verifies that the bit is cleared before writing to the SPMCSR |
|
|
|
Register. |
Reading the Fuse and Lock Bits from Software
It is possible to read both the Fuse and Lock bits from software. To read the Lock bits, load the Z-pointer with 0x0001 and set the RFLB and SPMEN bits in SPMCSR. When an LPM instruction is executed within three CPU cycles after the RFLB and SPMEN bits are set in SPMCSR, the value of the Lock bits will be loaded in the destination register. The RFLB and SPMEN bits will auto-clear upon completion of reading the Lock bits or if no LPM instruction is executed within three CPU cycles or no SPM instruction is executed within four CPU cycles. When RFLB and SPMEN are cleared, LPM will work as described in the Instruction set Manual.
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Rd |
– |
– |
– |
– |
– |
– |
LB2 |
LB1 |
|
|
|
|
|
|
|
|
|
The algorithm for reading the Fuse Low byte is similar to the one described above for reading the Lock bits. To read the Fuse Low byte, load the Z-pointer with 0x0000 and set the RFLB and SPMEN bits in SPMCSR. When an LPM instruction is executed within three cycles after the RFLB and SPMEN bits are set in the SPMCSR, the value of the Fuse Low byte (FLB) will be loaded in the destination register as shown below. Refer to Table 46 on page 100 for a detailed description and mapping of the Fuse Low byte.
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Rd |
FLB7 |
FLB6 |
FLB5 |
FLB4 |
FLB3 |
FLB2 |
FLB1 |
FLB0 |
|
|
|
|
|
|
|
|
|
Similarly, when reading the Fuse High byte, load 0x0003 in the Z-pointer. When an LPM instruction is executed within three cycles after the RFLB and SPMEN bits are set in the SPMCSR, the value of the Fuse High byte (FHB) will be loaded in the destination register as shown below. Refer to Table XXX on page XXX for detailed description and mapping of the Fuse High byte.
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Rd |
FHB7 |
FHB6 |
FHB5 |
FHB4 |
FHB3 |
FHB2 |
FHB1 |
FHB0 |
|
|
|
|
|
|
|
|
|
Fuse and Lock bits that are programmed, will be read as zero. Fuse and Lock bits that are unprogrammed, will be read as one.
97
2535A–AVR–06/03
Preventing Flash Corruption During periods of low VCC, the Flash program can be corrupted because the supply voltage is too low for the CPU and the Flash to operate properly. These issues are the same as for board level systems using the Flash, and the same design solutions should be applied.
A Flash program corruption can be caused by two situations when the voltage is too low. First, a regular write sequence to the Flash requires a minimum voltage to operate correctly. Secondly, the CPU itself can execute instructions incorrectly, if the supply voltage for executing instructions is too low.
Flash corruption can easily be avoided by following these design recommendations (one is sufficient):
1.Keep the AVR RESET active (low) during periods of insufficient power supply voltage. This can be done by enabling the internal Brown-out Detector (BOD) if
the operating voltage matches the detection level. If not, an external low VCC reset protection circuit can be used. If a reset occurs while a write operation is in progress, the write operation will be completed provided that the power supply voltage is sufficient.
2.Keep the AVR core in Power-down sleep mode during periods of low VCC. This will prevent the CPU from attempting to decode and execute instructions, effectively protecting the SPMCSR Register and thus the Flash from unintentional writes.
Programming Time for Flash The calibrated RC Oscillator is used to time Flash accesses. Table 42 shows the typical
when Using SPM |
programming time for Flash accesses from the CPU. |
|
|
|
Table 42. SPM Programming Time |
|
|
|
|
|
|
|
Symbol |
Min Programming Time |
Max Programming Time |
|
|
|
|
|
Flash write (Page Erase, Page Write, |
3.7 ms |
4.5 ms |
|
and write Lock bits by SPM) |
||
|
|
|
|
|
|
|
|
98 ATtiny13
2535A–AVR–06/03
Memory
Programming
Program And Data
Memory Lock Bits
ATtiny13
This section describes the different methods for Programming the ATtiny13 memories.
The ATtiny13 provides two Lock bits which can be left unprogrammed (“1”) or can be programmed (“0”) to obtain the additional security listed in Table 44. The Lock bits can only be erased to “1” with the Chip Erase command.
Program memory can be read out via the debugWIRE interface when the DWEN fuse is programmed, even if the Lock Bits are set. Thus, when Lock Bit security is required, should always debugWIRE be disabled by clearing the DWEN fuse.
Table 43. Lock Bit Byte(1)
|
Lock Bit Byte |
Bit No |
Description |
Default Value |
|
|
|
|
|
|
|
7 |
– |
1 (unprogrammed) |
|
|
|
|
|
|
|
6 |
– |
1 (unprogrammed) |
|
|
|
|
|
|
|
5 |
– |
1 (unprogrammed) |
|
|
|
|
|
|
|
4 |
– |
1 (unprogrammed) |
|
|
|
|
|
|
|
3 |
– |
1 (unprogrammed) |
|
|
|
|
|
|
|
2 |
– |
1 (unprogrammed) |
|
|
|
|
|
LB2 |
|
1 |
Lock bit |
1 (unprogrammed) |
|
|
|
|
|
LB1 |
|
0 |
Lock bit |
1 (unprogrammed) |
|
|
|
|
|
Note: |
1. “1” means unprogrammed, “0” means programmed |
|
Table 44. Lock Bit Protection Modes(1)(2)
Memory Lock Bits |
|
Protection Type |
||
|
|
|
|
|
LB Mode |
LB2 |
|
LB1 |
|
|
|
|
|
|
1 |
1 |
|
1 |
No memory lock features enabled. |
|
|
|
|
|
|
|
|
|
Further programming of the Flash and EEPROM is |
2 |
1 |
|
0 |
disabled in High-voltage and Serial Programming mode. |
|
The Fuse bits are locked in both Serial and High-voltage |
|||
|
|
|
|
|
|
|
|
|
Programming mode.(1) debugWire is disabled. |
|
|
|
|
Further programming and verification of the Flash and |
|
|
|
|
EEPROM is disabled in High-voltage and Serial |
3 |
0 |
|
0 |
Programming mode. The Fuse bits are locked in both |
|
|
|
|
Serial and High-voltage Programming mode.(1) debugWire |
|
|
|
|
is disabled. |
|
|
|
|
|
Notes: 1. Program the Fuse bits before programming the LB1 and LB2. 2. “1” means unprogrammed, “0” means programmed
99
2535A–AVR–06/03