ATmega640 Atmel Corporation, ATmega640 Datasheet - Page 251

no-image

ATmega640

Manufacturer Part Number
ATmega640
Description
Manufacturer
Atmel Corporation
Datasheets

Specifications of ATmega640

Flash (kbytes)
64 Kbytes
Pin Count
100
Max. Operating Frequency
16 MHz
Cpu
8-bit AVR
# Of Touch Channels
16
Hardware Qtouch Acquisition
No
Max I/o Pins
86
Ext Interrupts
32
Usb Speed
No
Usb Interface
No
Spi
5
Twi (i2c)
1
Uart
4
Graphic Lcd
No
Video Decoder
No
Camera Interface
No
Adc Channels
16
Adc Resolution (bits)
10
Adc Speed (ksps)
15
Analog Comparators
1
Resistive Touch Screen
No
Temp. Sensor
No
Crypto Engine
No
Sram (kbytes)
8
Eeprom (bytes)
4096
Self Program Memory
YES
Dram Memory
No
Nand Interface
No
Picopower
No
Temp. Range (deg C)
-40 to 85
I/o Supply Class
1.8 to 5.5
Operating Voltage (vcc)
1.8 to 5.5
Fpu
No
Mpu / Mmu
no / no
Timers
6
Output Compare Channels
16
Input Capture Channels
4
Pwm Channels
15
32khz Rtc
Yes
Calibrated Rc Oscillator
Yes

Available stocks

Company
Part Number
Manufacturer
Quantity
Price
Part Number:
ATmega640-16AU
Manufacturer:
OSRAM
Quantity:
12 000
Part Number:
ATmega640-16AU
Manufacturer:
Atmel
Quantity:
10 000
Part Number:
ATmega640-16AU
Manufacturer:
ATMEL/爱特梅尔
Quantity:
20 000
Part Number:
ATmega640-16AU
Quantity:
80
Part Number:
ATmega640-16AUR
Manufacturer:
Atmel
Quantity:
10 000
Part Number:
ATmega640-16CU
Manufacturer:
Atmel
Quantity:
10 000
Part Number:
ATmega640-16CUR
Manufacturer:
Atmel
Quantity:
10 000
Part Number:
ATmega640V-8AU
Manufacturer:
PHILIPS
Quantity:
56
Part Number:
ATmega640V-8AU
Manufacturer:
Atmel
Quantity:
10 000
2549N–AVR–05/11
1
2
3
4
5
ldi
out
wait1:
in
sbrs r16,TWINT
rjmp wait1
in
andi r16, 0xF8
cpi
brne ERROR
ldi
out
ldi
out
wait2:
in
sbrs r16,TWINT
rjmp wait2
in
andi r16, 0xF8
cpi
brne ERROR
ldi
out
ldi
out
Assembly Code Example
r16, (1<<TWINT)|(1<<TWSTA)|
(1<<TWEN)
TWCR, r16
r16,TWCR
r16,TWSR
r16, START
r16, SLA_W
TWDR, r16
r16, (1<<TWINT) | (1<<TWEN)
TWCR, r16
r16,TWCR
r16,TWSR
r16, MT_SLA_ACK
r16, DATA
TWDR, r16
r16, (1<<TWINT) | (1<<TWEN)
TWCR, r16
Even though this example is simple, it shows the principles involved in all TWI transmissions.
These can be summarized as follows:
In the following an assembly and C implementation of the example is given. Note that the code
below assumes that several definitions have been made, for example by using include-files.
When the TWI has finished an operation and expects application response, the TWINT Flag
is set. The SCL line is pulled low until TWINT is cleared.
When the TWINT Flag is set, the user must update all TWI Registers with the value relevant
for the next TWI bus cycle. As an example, TWDR must be loaded with the value to be
transmitted in the next bus cycle.
After all TWI Register updates and other pending application software tasks have been
completed, TWCR is written. When writing TWCR, the TWINT bit should be set. Writing a
one to TWINT clears the flag. The TWI will then commence executing whatever operation
was specified by the TWCR setting.
TWCR = (1<<TWINT)|(1<<TWSTA)|
while (!(TWCR & (1<<TWINT)))
if ((TWSR & 0xF8) != START)
TWDR = SLA_W;
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)))
if ((TWSR & 0xF8) !=
MT_SLA_ACK)
TWDR = DATA;
TWCR = (1<<TWINT) | (1<<TWEN);
(1<<TWEN)
;
ERROR();
;
ERROR();
ATmega640/1280/1281/2560/2561
C Example
indicates that the SLA+W has been
status different from MT_SLA_ACK
Load SLA_W into TWDR Register.
indicates that the START condition
Clear TWINT bit in TWCR to start
Clear TWINT bit in TWCR to start
status different from START go to
transmitted, and ACK/NACK has
Load DATA into TWDR Register.
Register. Mask prescaler bits. If
Register. Mask prescaler bits. If
Wait for TWINT Flag set. This
Wait for TWINT Flag set. This
Check value of TWI Status
Check value of TWI Status
transmission of address
Send START condition
has been transmitted
transmission of data
been received.
go to ERROR
Comments
ERROR
251

Related parts for ATmega640