INTEGRAL IN90S2313DW

IN90S2313DW,
8-BIT MICROCONTROLLER WITH 2K BYTES BUILD-IN
PROGRAMMABLE FLASH
Description
The IN90S2313 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 IN90S2313 achieves throughputs
approaching 1 MIPS per MHz allowing the system
designer to optimize power consumption versus
processing speed. The AVR core combines a rich
instruction set with 32 general purpose working registers.
All the 32 registers are directly connected to the
Arithmetic Logic Unit (ALU), allowing two independent
registers to be accessed in one single instruction
executed in one clock cycle. The resulting architecture is
more code efficient while achieving throughputs up to ten
times faster than conventional CISC microcontrollers.
The IN90S2313 provides the following features: 2K bytes of In-System Programmable
Flash, 128 bytes EEPROM, 128 bytes SRAM, 15 general purpose I/O lines, 32 general
purpose working registers, flexible timer/counters with compare modes, internal and
external interrupts, a programmable serial UART, programmable Watchdog Timer with
internal oscillator, an SPI serial port for Flash Memory downloading and two software
selectable power saving modes. The Idle Mode stops the CPU while allowing the SRAM,
timer/counters, SPI port and interrupt system to continue functioning. The power down
mode saves the register contents but freezes the oscillator, disabling all other chip
functions until the next interrupt or hardware reset. The device is manufactured using
Atmel’s high density non-volatile memory technology. The on-chip In-System
Programmable Flash allows the program memory to be reprogrammed in-system
through an SPI serial interface or by a conventional nonvolatile memory programmer. By
combining an enhanced RISC 8-bit CPU with In-System Programmable Flash on a
monolithic chip, the Atmel IN90S2313 is a powerful microcontroller that provides a highly
flexible and cost effective solution to many embedded control applications.
The IN90S2313 AVR is supported with a full suite of program and system development
tools including: C compilers, macro assemblers, program debugger/simulators, in-circuit
emulators, and evaluation kits.
1
IN90S2313DW,
Features
• AVR - High Performance and Low Power RISC Architecture
• 118 Powerful Instructions - Most Single Clock Cycle Execution
• 2K bytes of In-System Reprogrammable Flash
– SPI Serial Interface for Program Downloading
– Endurance: 1,000 Write/Erase Cycles
• 128 bytes EEPROM
– Endurance: 100,000 Write/Erase Cycles
• 128 bytes Internal RAM
• 32 x 8 General Purpose Working Registers
• 15 Programmable I/O Lines
•
VCC: 2.7 - 6.0V
• Fully Static Operation
– 0 - 10 MHz, 4.0 - 6.0V
– 0 - 4 MHz, 2.7 - 6.0V
• Up to 10 MIPS Throughput at 10 MHz
• One 8-Bit Timer/Counter with Separate Prescaler
• One 16-Bit Timer/Counter with Separate Prescaler and
Compare and Capture Modes
• Full Duplex UART
• Selectable 8, 9 or 10 bit PWM
• External and Internal Interrupt Sources
• Programmable Watchdog Timer with On-Chip Oscillator
• On-Chip Analog Comparator
• Low Power Idle and Power Down Modes
• Programming Lock for Software Security
•
20-Pin Device
2
IN90S2313DW,
Block Diagram
3
IN90S2313DW,
Pin Descriptions
VCC
Supply voltage pin.
GND
Ground pin.
Port B (PB7..PB0)
Port B is an 8-bit bi-directional I/O port. Port pins can provide
internal pull-up resistors (selected for each bit). PB0 and PB1
also serve as the positive input (AIN0) and the negative input
(AIN1), respectively, of the on-chip analog comparator. The Port
B output buffers can sink 20mA and can drive LED displays directly. When pins PB0 to PB7 are used as
inputs and are externally pulled low, they will source current if the internal pull-up resistors are activated.
Port B also serves the functions of various special features of the IN90S2313 as listed on page 38.
Port D (PD6..PD0)
Port D has seven bi-directional I/O pins with internal pull-up resistors, PD6..PD0. The Port D output
buffers can sink 20 mA. As inputs, Port D pins that are externally pulled low will source current if the pullup resistors are activated.
Port D also serves the functions of various special features of the IN90S2313 as listed on page 43.
RESET
Reset input. A low on this pin for two machine cycles while the oscillator is running resets the device.
XTAL1
Input to the inverting oscillator amplifier and input to the internal clock operating circuit.
XTAL2
Output from the inverting oscillator amplifier
Crystal Oscillator
XTAL1 and XTAL2 are input and output, respectively, of an inverting amplifier which can be configured for
use as an on-chip oscillator. Either a quartz crystal or a ceramic resonator may be used. To drive the
device from an external clock source, XTAL2 should be left unconnected while XTAL1 is driven.
Oscillator Connections
External Clock Drive Configuration
4
IN90S2313DW,
Architectural Overview
The fast-access register file concept contains 32 x 8-bit general purpose working registers with a single
clock cycle access time. This means that during one single clock cycle, one ALU (Arithmetic Logic Unit)
operation is executed. Two operands are output from the register file, the operation is executed, and the
result is stored back in the register file -in one clock cycle.
Six of the 32 registers can be used as three 16-bits indirect address register pointers for Data Space
addressing -enabling efficient address calculations. One of the three address pointers is also used as the
address pointer for the constant table look up function. These added function registers are the 16-bits Xregister, Y-register and Z-register. The ALU supports arithmetic and logic functions between registers or
between a constant and a register. Single register operations are also executed in the ALU.
In addition to the register operation, the conventional memory addressing modes can be used on the
register file as well. This is enabled by the fact that the register file is assigned the 32 lowermost Data
Space addresses ($00 -$1F), allowing them to be accessed as though they were ordinary memory
locations.
The I/O memory space contains 64 addresses for CPU peripheral functions as Control Registers,
Timer/Counters, A/D-converters, and other I/O functions. The I/O memory can be accessed directly, or as
the Data Space locations following those of the register file, $20 - $5F.
The AVR has Harvard architecture - with separate memories and buses for program and data. The
program memory is accessed with a two stage pipeline. While one instruction is being executed, the next
instruction is pre-fetched from the program memory. This concept enables instructions to be executed in
every clock cycle. The program memory is In-system Programmable Flash memory.
With the relative jump and call instructions, the whole 1K address space is directly accessed. Most AVR
instructions have a single 16-bit word format. Every program memory address contains a 16- or 32-bit
instruction.
During interrupts and subroutine calls, the return address program counter (PC) is stored on the stack.
The stack is effectively allocated in the general data SRAM, and consequently the stack size is only
limited by the total SRAM size and the usage of the SRAM. All user programs must initialize the SP in the
reset routine (before subroutines or interrupts are executed). The 8-bit stack pointer SP is read/write
accessible in the I/O space.
The 128 bytes data SRAM + register file and I/O registers can be easily accessed through the five
different addressing modes supported in the AVR architecture.
The memory spaces in the AVR architecture are all linear and regular memory maps.
5
IN90S2313DW,
AVR Enhanced RISC Architecture
Memory Maps
6
IN90S2313DW,
REGISTER SUMMARY
Address
Name
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Page
$3F ($5F)
SREG
I
T
H
S
V
N
Z
C
17
$3E ($5E)
Reserved
$3D ($5D)
SPL
SP7
SP6
SP5
SP4
SP3
SP2
SP1
SP0
18
$3C ($5C)
Reserved
-
-
-
-
-
-
23
$3B ($5B)
GIMSK
INT1
INT0
$3A ($5A)
GIFR
INTF1
INTF0
$39 ($59)
TIMSK
TOIE1
OCIE1A
-
-
TICIE1
-
TOIE0
-
23
$38 ($58)
TIFR
TOV1
OCF1A
-
-
ICF1
-
TOV0
-
24
$37 ($57)
Reserved
-
-
SE
SM
ISC11
ISC10
ISC01
ISC00
25
-
-
-
-
-
CS02
CS01
CS00
$36 ($56)
Reserved
$35 ($55)
MCUCR
$34 ($54)
Reserved
$33 ($53)
TCCR0
$32 ($52)
TCNT0
$31 ($51)
Reserved
$30 ($50)
Reserved
23
Timer/Counter0 (8 Bit)
28
29
$2F ($4F)
TCCR1A
COM1A1
COM1A0
-
-
-
-
PWM11
PWM10
30
$2E ($4E)
TCCR1B
ICNC1
ICES1
.
-
CTC1
CS12
CS11
CS10
31
$2D ($4D)
TCNT1H
Timer/Counter1 - Counter Register High Byte
32
$2C ($4C)
TCNT1L
Timer/Counter1 - Counter Register Low Byte
32
$2B ($4B)
OCR1AH Timer/Counter1 - Compare Register High Byte
32
$2A ($4A)
OCR1AL
Timer/Counter1 - Compare Register Low Byte
32
$29 ($49)
Reserved
$28 ($48)
Reserved
$27 ($47)
Reserved
$26 ($46)
Reserved
$25 ($45)
ICR1H
Timer/Counter1 - Input Capture Register High Byte
33
$24 ($44)
ICR1L
Timer/Counter1 - Input Capture Register Low Byte
33
$23 ($43)
Reserved
$22 ($42)
Reserved
$21 ($41)
WDTCR
$20 ($40)
Reserved
-
-
$1F ($3F)
Reserved
$1E ($3E)
EEAR
-
$1D ($3D)
EEDR
EEPROM Data register
$1C ($3C)
EECR
$1B ($3B)
Reserved
$1A ($3A)
Reserved
$19 ($39)
Reserved
-
WDTOE
WDE
WDP2
WDP1
WDP0
EEPROM Address Register
35
36
37
-
-
-
-
-
EEMWE
EEWE
EERE
37
46
$18 ($38)
PORTB
PORTB7
PORTB6
PORTB5
PORTB4
PORTB3
PORTB2
PORTB1
PORTB0
$17 ($37)
DDRB
DDB7
DDB6
DDB5
DDB4
DDB3
DDB2
DDB1
DDB0
46
$16 ($36)
PINB
PINB7
PINB6
PINB5
PINB4
PINB3
PINB2
PINB1
PINB0
46
$15 ($35)
Reserved
$14 ($34)
Reserved
$13 ($33)
Reserved
$12 ($32)
PORTD
-
PORTD6
PORTD5
PORTD4
PORTD3
PORTD2
PORTD1
PORTD0
51
$11 ($31)
DDRD
-
DDD6
DDD5
DDD4
DDD3
DDD2
DDD1
DDD0
51
$10 ($30)
PIND
-
PIND6
PIND5
PIND4
PIND3
PIND2
PIND1
PIND0
51
7
IN90S2313DW,
REGISTER SUMMARY (Continued)
Address
Name
$0F ($2F)
Reserved
$0E ($2E)
Reserved
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Page
$0D ($2D)
Reserved
$0C ($2C)
UDR
$0B ($2B)
USR
RXC
TXC
UDRE
FE
OR
-
-
-
40
$0A ($2A)
UCR
RXCIE
TXCIE
UDRIE
RXEN
TXEN
CHR9
RXB8
TXB8
41
$09 ($29)
UBRR
$08 ($28)
ACSR
ACO
ACI
ACIE
ACIC
ACIS1
ACIS0
…
Reserved
$00 ($20)
Reserved
UART I/O Data Register
40
UART Baud Rate Register
ACD
-
43
44
Instruction Set Summary
Mnemonics Operands Description
Operation
Flags
#Clocks
1
ARITHMETIC AND LOGIC INSTRUCTIONS
Rd ← Rd + Rr
Z,C,N,V,H
Rd ← Rd + Rr + C
Z,C,N,V,H
1
Add Immediate to Word
Rdh:Rdl ← Rdh:Rdl + K
Z,C,N,V,S
2
Rd, Rr
Subtract two Registers
Rd ← Rd - Rr
Z,C,N,V,H
1
Rd, K
Subtract Constant from Register
Rd ← Rd - K
Z,C,N,V,H
1
SBIW
Rdl,K
Subtract Immediate from Word
Rdh:Rdl ← Rdh:Rdl - K
Z,C,N,V,S
2
SBC
Rd, Rr
Subtract with Carry two Registers
Rd ← Rd - Rr - C
Z,C,N,V,H
1
SBCI
Rd, K
Subtract with Carry Constant from Reg.
Rd ← Rd - K - C
Z,C,N,V,H
1
AND
Rd, Rr
Logical AND Registers
Rd ← Rd • Rr
Z,N,V
1
ANDI
Rd, K
Logical AND Register and Constant
Rd ← Rd • K
Z,N,V
1
OR
Rd, Rr
Logical OR Registers
Rd ← Rd v Rr
Z,N,V
1
ORI
Rd, K
Logical OR Register and Constant
Rd ← Rd v K
Z,N,V
1
EOR
Rd, Rr
Exclusive OR Registers
Rd ← Rd ⊕ Rr
Z,N,V
1
COM
Rd
One’s Complement
Rd ← $FF - Rd
Z,C,N,V
1
NEG
Rd
Two’s Complement
Rd ← $00 - Rd
Z,C,N,V,H
1
SBR
Rd,K
Rd ← Rd v K
Z,N,V
1
CBR
Rd,K
Rd ← Rd • ($FF - K)
Z,N,V
1
INC
Rd
Increment
Rd ← Rd + 1
Z,N,V
1
DEC
Rd
Decrement
Rd ← Rd - 1
Z,N,V
1
TST
Rd
Test for Zero or Minus
Rd ← Rd • Rd
Z,N,V
1
CLR
Rd
Clear Register
Rd ← Rd ⊕ Rd
Z,N,V
1
SER
Rd
Set Register
Rd ← $FF
None
1
PC ← PC + k + 1
None
2
PC ← Z
None
2
PC ← PC + k + 1
None
3
3
ADD
Rd, Rr
Add two Registers
ADC
Rd, Rr
Add with Carry two Registers
ADIW
Rdl,K
SUB
SUBI
Set Bit(s) in Register
Clear Bit(s) in Register
BRANCH INSTRUCTIONS
RJMP
k
IJMP
RCALL
Relative Jump
Indirect Jump to (Z)
k
Relative Subroutine Call
ICALL
Indirect Call to (Z)
PC ← Z
None
RET
Subroutine Return
PC ← STACK
None
4
RETI
Interrupt Return
PC ← STACK
I
4
if (Rd = Rr) PC ← PC + 2 or 3
None
1/2
Rd - Rr
Z, N,V,C,H
1
Rd - Rr - C
Z, N,V,C,H
1
Rd  K
Z, N,V,C,H
1
CPSE
Rd,Rr
Compare, Skip if Equal
CP
Rd,Rr
Compare
CPC
Rd,Rr
Compare with Carry
CPI
Rd,K
Compare Register with Immediate
SBRC
Rr, b
Skip if Bit in Register Cleared
if (Rr(b)=0) PC ← PC + 2 or 3
None
1/2
SBRS
Rr, b
Skip if Bit in Register is Set
if (Rr(b)=1) PC ← PC + 2 or 3
None
1/2
SBIC
P, b
Skip if Bit in I/O Register Cleared
if (P(b)=0) PC ← PC + 2 or 3
None
1/2
8
IN90S2313DW,
Instruction Set Summary (Continued)
Mnemonics Operands Description
Operation
Flags
#Clocks
if (R(b)=1) PC ← PC + 2 or 3
None
1/2
Branch if Status Flag Set
if (SREG(s) = 1) then PC←PC + k + 1
None
1/2
Branch if Status Flag Cleared
if (SREG(s) = 0) then PC←PC + k + 1
None
1/2
Branch if Equal
if (Z = 1) then PC ← PC + k + 1
None
1/2
k
Branch if Not Equal
if (Z = 0) then PC ← PC + k + 1
None
1/2
BRCS
k
Branch if Carry Set
if (C = 1) then PC ← PC + k + 1
None
1/2
BRCC
k
Branch if Carry Cleared
if (C = 0) then PC ← PC + k + 1
None
1/2
BRSH
k
Branch if Same or Higher
if (C = 0) then PC ← PC + k + 1
None
1/2
BRLO
k
Branch if Lower
if (C = 1) then PC ← PC + k + 1
None
1/2
BRMI
k
Branch if Minus
if (N = 1) then PC ← PC + k + 1
None
1/2
BRPL
k
Branch if Plus
if (N = 0) then PC ← PC + k + 1
None
1/2
BRGE
k
Branch if Greater or Equal, Signed
if (N ⊕ V= 0) then PC ← PC + k + 1
None
1/2
BRLT
k
Branch if Less Than Zero, Signed
if (N ⊕ V= 1) then PC ← PC + k + 1
None
1/2
BRHS
k
Branch if Half Carry Flag Set
if (H = 1) then PC ← PC + k + 1
None
1/2
BRHC
k
Branch if Half Carry Flag Cleared
if (H = 0) then PC ← PC + k + 1
None
1/2
BRTS
k
Branch if T Flag Set
if (T = 1) then PC ← PC + k + 1
None
1/2
BRTC
k
Branch if T Flag Cleared
if (T = 0) then PC ← PC + k + 1
None
1/2
BRVS
k
Branch if Overflow Flag is Set
if (V = 1) then PC ← PC + k + 1
None
1/2
BRVC
k
Branch if Overflow Flag is Cleared
if (V = 0) then PC ← PC + k + 1
None
1/2
BRIE
k
Branch if Interrupt Enabled
if (I = 1) then PC ← PC + k + 1
None
1/2
BRID
k
Branch if Interrupt Disabled
if (I = 0) then PC ← PC + k + 1
None
1/2
SBIS
P, b
Skip if Bit in I/O Register is Set
BRBS
s, k
BRBC
s, k
BREQ
k
BRNE
DATA TRANSFER INSTRUCTIONS
MOV
Rd, Rr
Move Between Registers
Rd ← Rr
None
1
LDI
Rd, K
Load Immediate
Rd ← K
None
1
LD
Rd, X
Load Indirect
Rd ← (X)
None
2
LD
Rd, X+
Load Indirect and Post-Inc.
Rd ← (X), X ← X + 1
None
2
LD
Rd, - X
Load Indirect and Pre-Dec.
X ← X  1, Rd ← (X)
None
2
2
LD
Rd, Y
Load Indirect
Rd ← (Y)
None
LD
Rd, Y+
Load Indirect and Post-Inc.
Rd ← (Y), Y ← Y + 1
None
2
LD
Rd, - Y
Load Indirect and Pre-Dec.
Y ← Y  1, Rd ← (Y)
None
2
LDD
Rd,Y+q
Load Indirect with Displacement
None
2
Rd ← (Z)
None
2
Rd, Z
LD
Rd, Z+
Load Indirect and Post-Inc.
Rd ← (Z), Z ← Z+1
None
2
LD
Rd, -Z
Load Indirect and Pre-Dec.
Z ← Z - 1, Rd ← (Z)
None
2
LDD
Rd, Z+q
LDS
Rd, k
Load Indirect
Rd ← (Y + q)
LD
Load Indirect with Displacement
Load Direct from SRAM
Rd ← (Z + q)
None
2
Rd ← (k)
None
2
ST
X, Rr
Store Indirect
(X) ← Rr
None
2
ST
X+, Rr
Store Indirect and Post-Inc.
(X) ← Rr, X ← X + 1
None
2
ST
- X, Rr
Store Indirect and Pre-Dec.
X ← X - 1, (X) ← Rr
None
2
ST
Y, Rr
Store Indirect
(Y) ← Rr
None
2
ST
Y+, Rr
Store Indirect and Post-Inc.
(Y) ← Rr, Y ← Y + 1
None
2
ST
- Y, Rr
Store Indirect and Pre-Dec.
Y ← Y - 1, (Y) ← Rr
None
2
STD
Y+q,Rr
Store Indirect with Displacement
(Y + q) ← Rr
None
2
(Z) ← Rr
None
2
ST
Z, Rr
ST
Z+, Rr
Store Indirect and Post-Inc.
(Z) ← Rr, Z ← Z + 1
None
2
ST
-Z, Rr
Store Indirect and Pre-Dec.
Z ← Z - 1, (Z) ← Rr
None
2
STD
Z+q,Rr
Store Indirect with Displacement
(Z + q) ← Rr
None
2
STS
k, Rr
Store Direct to SRAM
(k) ← Rr
None
2
Load Program Memory
R0 ← (Z)
None
3
LPM
Store Indirect
9
IN90S2313DW,
Instruction Set Summary (Continued)
Mnemonics Operands Description
Operation
Flags
#Clocks
IN
Rd, P
In Port
Rd ← P
None
1
OUT
P, Rr
Out Port
P ← Rr
None
1
PUSH
Rr
Push Register on Stack
STACK ← Rr
None
2
POP
Rd
Pop Register from Stack
Rd ← STACK
None
2
2
BIT AND BIT-TEST INSTRUCTIONS
SBI
P,b
Set Bit in I/O Register
I/O(P,b) ← 1
None
CBI
P,b
Clear Bit in I/O Register
I/O(P,b) ← 0
None
2
LSL
Rd
Logical Shift Left
Rd(n+1) ← Rd(n), Rd(0) ← 0
Z,C,N,V
1
Rd(n) ← Rd(n+1), Rd(7) ← 0
Z,C,N,V
1
Rd(0)←C,Rd(n+1)←
Rd(n),C←Rd(7)
Z,C,N,V
1
Rd(7)←C,Rd(n)←
Rd(n+1),C←Rd(0)
Z,C,N,V
1
LSR
Rd
Logical Shift Right
ROL
Rd
Rotate Left Through Carry
ROR
Rd
Rotate Right Through Carry
ASR
Rd
Arithmetic Shift Right
SWAP
Rd
Swap Nibbles
BSET
s
BCLR
s
Rd(n) ← Rd(n+1), n=0..6
Z,C,N,V
1
Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3.
.0)
None
1
Flag Set
SREG(s) ← 1
SREG(s)
1
Flag Clear
SREG(s) ← 0
SREG(s)
1
1
BST
Rr, b
Bit Store from Register to T
T ← Rr(b)
T
BLD
Rd, b
Bit load from T to Register
Rd(b) ← T
None
1
SEC
Set Carry
C←1
C
1
CLC
Clear Carry
C←0
C
1
SEN
Set Negative Flag
N←1
N
1
CLN
Clear Negative Flag
N←0
N
1
SEZ
Set Zero Flag
Z←1
Z
1
CLZ
Clear Zero Flag
Z←0
Z
1
SEI
Global Interrupt Enable
I←1
I
1
CLI
Global Interrupt Disable
I←0
I
1
SES
Set Signed Test Flag
S←1
S
1
CLS
Clear Signed Test Flag
S←0
S
1
SEV
Set Twos Complement Overflow
V←1
V
1
CLV
Clear Twos Complement Overflow
V←0
V
1
SET
Set T in SREG
T←1
T
1
CLT
Clear T in SREG
T←0
T
1
SEH
Set Half Carry Flag in SREG
H←1
H
1
CLH
Clear Half Carry Flag in SREG
H←0
NOP
No Operation
SLEEP
Sleep
WDR
Watchdog Reset
H
1
None
1
(see specific descr. for Sleep
function)
None
3
(see specific descr. for
WDR/timer)
None
1
10
IN90S2313DW,
MS-013AC Package dimensions
D
20
11
e1
H
E
1
e
10
h x 45°
A1
-T-
C
A
α
B
L
0.25 (0.010) M T C M
min
max
A
A1
B
C
D
2.35
2.65
0.10
0.30
0.33
0.51
0.23
0.32
12.60
13.00
E
mm
7.40
7.60
11
e
e1
H
1.27
9.53 10.00
(nom) (nom) 10.65
h
L
0.25
0.75
0.40
1.27
α
°
0
8