Tải bản đầy đủ - 0 (trang)
2 Mục đích, ý nghĩa đề tài

2 Mục đích, ý nghĩa đề tài

Tải bản đầy đủ - 0trang

- Lưu trữ được nhiều hình ảnh (42 hình)

- Giao tiếp được với máy tính

- Có phần mềm trên máy tính giúp người sử dụng thiết kế và quản lý

hình ảnh.

- Giá thành rẻ.

Sơ đồ kết nối:



Mạch hiển

thị

(Mạch

LED)



SPI



Mạch kết

nối

USB



5



USB



Máy tính

(Phần

mềm)



Chương 2:GIỚI THIỆU CÁC THÀNH PHẦN CẤU THÀNH

SỬ DỤNG

2.1 Vi điều khiển ATTiny2313

ATTiny2313 là vi điều khiển 8 bit dựa trên kiến trúc RISC. Với khả năng

thực hiện mỗi lệnh trong vòng một chu kỳ xung clock, ATTiny2313 có thể đạt

được tốc độ 1MIPS trên mỗi MHz (1 triệu lệnh/s/MHz).

Những Tính Năng Chính Của ATTiny2313:

o Có 2KByte bộ nhớ flash

o Có thể xóa lập trình được và có thể chịu được 10000 lần ghi xóa.

o Có 32 thanh ghi đa năng 8 bit,

o Có 128 Byte bộ nhớ EEPROM tích hợp trên chíp,

o Có 128 Byte SRAM nội.

o Có một bộ Timer/counter 8 bit và một bộ timer/counter 16 bit với bộ chia

tần lập trình được.

o Có 4 kênh điều xung.

o ATTiny2313 có 20 chân, trong đó có 18 cổng vào ra.

o Nguồn nuôi từ 1.8 đến 5.5 đối với ATTiny2313V và từ 2.7 đến 5.5 đối với

ATTiny2313,

o Làm việc tiêu thụ dòng 3.6mA.

o Sử dụng mạch dao động ngồi từ 0 đến 10 Mhz với ATTiny2313V và từ 0

đến 20 Mhz với ATTiny2313.

o Ngồi ra chíp ATTiny2313 còn có bộ xung nội bên trong có thể lập trình

chế độ xung nhịp

Dưới đây là sơ đồ khối của ATTiny2313



6



ATTiny2313 hỗ trợ đầy đủ các chương trình và cơng cụ phát triển hệ thống

như: trình dịch C, macro assemblers, chương trình mơ phỏng/sửa lỗi, kit thử

nghiêm,..



2.1.1 CPU

ALU

ALU làm việc trực tiếp với các thanh ghi chức năng chung. Các phép toán

được thực hiện trong một chu kỳ xung clock. Hoạt động của ALU được

chia làm 3 loại: đại số, logic và theo bit.

Thanh ghi trạng thái

Đây là thanh ghi trạng thái có 8 bit lưu trữ trạng thái của ALU sau các phép

tính số học và logic.



Thanh ghi trạng thái SREG



Các thanh ghi chức năng chung



Thanh ghi chức năng chung

Tệp thanh ghi ( register file ) : Tệp 32 thanh ghi đa chức năng ( $0000 $001F ) đã được nói ở trên, ngoài chức năng là các thanh ghi đa chức năng, thì

các thanh ghi từ R26 tới R31 từng đơi một tạo thành các thanh ghi 16 bit X, Y, Z

được dùng làm con trỏ trỏ tới bộ nhớ chương trình và bộ nhớ dữ liệu .Thanh ghi

con trò X, Y có thể dùng làm con trỏ trỏ tới bộ nhớ dữ liệu, còn thanh ghi Z có

thể dùng làm con trỏ trỏ tới bộ nhớ chương trình. Các trình biên dịch C thường

dùng các thanh ghi con trỏ này để quản lí Data stack của chương trình C.



7



Con trỏ ngăn xếp (SP)

Là một thanh ghi 16 bit nhưng cũng có thể được xem như hai thanh ghi chức

năng đặc biệt 8 bit. Có địa chỉ trong các thanh ghi chức năng đặc biệt là $3E

(Trong bộ nhớ RAM là $5E). Có nhiệm vụ trỏ tới vùng nhớ trong RAM chứa

ngăn xếp.



Thanh ghi con trỏ ngăn xếp

Khi chương trình phục vu ngắt hoặc chương trình con thì con trỏ PC được lưu

vào ngăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí. Và con trỏ ngăn xếp sẽ

giảm 1 khi thực hiện lệnh push. Ngược lại khi thực hiện lệnh POP thì con trỏ

ngăn xếp sẽ tăng 1 và khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ

tăng 2. Như vậy con trỏ ngăn xếp cần được chương trình đặt trước giá trị khởi tạo

ngăn xếp trước khi một chương trình con được gọi hoặc các ngắt được cho phép

phục vụ. Và giá trị ngăn xếp ít nhất cũng phải lơn hơn hoặc bằng 60H (0x60) vì

5FH trỏ lại là vùng các thanh ghi.



Các thanh ghi chức năng đặc biệt

Bao gồm các thanh ghi dữ liệu và các thanh ghi điều khiển các cổng vào ra.

Chúng có thể truy nhập được bằng 2 cách:

 Bằng địa chỉ trực tiếp

Ví dụ:

STR $3F,R11

hoặc: STR SREG.R11

 Hoặc có thể truy nhập gián tiếp chúng thơng qua thanh ghi X, Y, Z.

Ví dụ :

LDI R28,0x00

LDI R27,0x5F

STD X,R11

Hai ví dụ này hoàn toàn tương đương, đều ghi dữ liệu vào thanh ghi SREG.



Status Register (SREG)

Đây là thanh ghi trạng thái có 8 bit lưu trữ trạng thái của ALU sau các phép

tính số học và logic.



Stack Pointer

8



Là một thanh ghi 16 bit nhưng cũng có thể được xem như hai thanh ghi chức

năng đặc biệt 8 bit . Có nhiệm vụ trỏ tới vùng nhớ trong RAM chứa ngăn xếp.



Khi chương trình phục vu ngắt hoặc chương trình con thì con trỏ PC được lưu

vào ngăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí. Và con trỏ ngăn xếp sẽ

giảm 1 khi thực hiện lệnh push. Ngược lại khi thực hiện lệnh POP thì con trỏ

ngăn xếp sẽ tăng 1 và khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ

tăng 2. Như vậy con trỏ ngăn xếp cần được chương trình đặt trước giá trị khởi tạo

ngăn xếp trước khi một chương trình con được gọi hoặc các ngắt được cho phép

phục vụ. Và giá trị ngăn xếp ít nhất cũng phải lơn hơn hợc bằng 60H (0x60) vì

5FH trỏ lại là vùng các thanh ghi.



2.1.2 Cấu trúc bộ nhớ

AVR có 2 khơng gian bộ nhớ chính là bộ nhớ dữ liệu vào bộ nhớ chương

trình. Ngồi ra ATTiny2313 còn có thêm bộ nhớ EEPROM để lưu trữ dữ liệu.



Bộ nhớ chương trình (Bộ nhớ Flash)

Bộ nhớ Flash 2KB của ATTiny2313 dùng để lưu trữ chương trình. Do các

lệnh của AVR có độ dài 16 hoặc 32 bit nên bộ nhớ Flash được sắp xếp theo kiểu

1KX16.



Bộ nhớ dữ liệu SRAM

224 ô nhớ của bộ nhớ dữ liệu định địa chỉ cho file thanh ghi, bộ nhớ I/O và bộ

nhớ dữ liệu SRAM nội. Trong đó 32 ơ nhớ đầu tiên định địa chỉ cho file thanh



9



ghi, 64 ô nhớ tiếp theo định địa chỉ bộ nhớ I/O, và 128 ô nhớ tiếp theo định địa

chỉ cho bộ nhớ SRAM nội.



Bản đồ bộ nhớ dữ liệu SRAM



Bộ nhớ dữ liệu EEPROM

ATTiny2313 chứa bộ nhớ dữ liệu EEPROM dung lượng 128 Byte, và được

sắp xếp theo từng Byte, cho phép các thao tác đọc/ghi từng Byte một. Đây là bộ

nhớ dữ liệu có thể ghi xóa ngay trong lúc vi điều khiển đang hoạt động và không

bị mất dữ liệu khi nguồn điện cung cấp bị cắt. Có thể ví bộ nhớ dữ liệu EEPROM

giống như là ổ cứng ( Hard disk ) của máy vi tính. EEPROM được xem như là

một bộ nhớ vào ra được đánh địa chỉ độc lập với SRAM, điều này có nghĩa là ta

cần sử dụng các lệnh in, out … khi muốn truy xuất tới EEPROM. Để điều khiển

vào ra dữ liệu với EEPROM ta sử dụng 3 thanh ghi sau :



2.1.3 Cấu trúc ngắt của ATTiny2313

KHÁI NIỆM VỀ NGẮT

Ngắt là một cơ chế cho phép thiết bị ngoại vi báo cho CPU biết về tình trạng

sẵn xàng cho đổi dữ liệu của mình.Ví dụ:Khi bộ truyền nhận UART nhận được

một Byte nó sẽ báo cho CPU biết thơng qua cờ RXC,hợc khi nó đã truyền được

một Byte thì cờ TX được thiết lập…

Khi có tín hiệu báo ngắt CPU sẽ tạm dừng công việc đạng thực hiện lại và lưu

vị trí đang thực hiên chương trình (con trỏ PC) vào ngăn xếp sau đó trỏ tới

vector phuc vụ ngắt và thức hiện chương trình phục vụ ngắt đó chơ tới khi gặp

lệnh RETI (return from interrup) thì CPU lại lấy PC từ ngăn xếp ra và tiếp tục

thực hiện chương trình mà trước khi có ngăt nó đang thực hiện. Trong trường

hợp mà có nhiều ngắt yêu cầu cùng một lúc thì CPU sẽ lưu các cờ báo ngắt đó lại

và thực hiện lần lượt các ngắt theo mức ưu tiên .Trong khi đang thực hiện ngắt

mà xuất hiện ngắt mới thì sẽ xảy ra hai trường hợp. Trường hợp ngắt này có mức

ưu tiên cao hơn thì nó sẽ được phục vụ. Còn nó mà có mức ưu tiên thấp hơn thì

nó sẽ bị bỏ qua.

Bộ nhớ ngăn xếp là vùng bất kì trong SRAM từ địa chỉ 0x60 trở lên. Để truy

nhập vào SRAM thơng thường thì ta dùng con trỏ X,Y,Z và để truy nhập vào



10



SRAM theo kiểu ngăn xếp thì ta dùng con trỏ SP. Con trỏ này là một thanh ghi

16 bit và được truy nhập như hai thanh ghi 8 bit chung có địa chỉ :SPL :

0x3D/0x5D (IO/SRAM) và SPH:0x3E/0x5E.

Khi chương trình phục vu ngắt hoặc chương trình con thì con trỏ PC được lưu

vào ngăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí.Và con trỏ ngăn xếp sẽ

giảm 1 khi thực hiện lệnh push. Ngược lại khi thực hiện lệnh POP thì con trỏ

ngăn xếp sẽ tăng 1 và khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ

tăng 2. Như vậy con trỏ ngăn xếp cần được chương trình đặt trước giá trị khởi tạo

ngăn xếp trước khi một chương trình con được gọi hoặc các ngắt được cho phép

phục vụ. Và giá trị ngăn xếp ít nhất cũng phải lớn hơn 60H (0x60) vì 5FH trỏ lại

là vùng các thanh ghi.



CÁC NGẮT NGỒI

Các ngắt ngồi được kích hoạt bởi 2 chân INT0, và INT1. Chú ý rằng nếu

đã kích hoạt, các ngắt sẽ kích bằng (trigger even) nếu các chân INT0,INT1 được

cấu hình là các ngõ ra. Các đặc điểm này cung cấp 1 con đường chung cho ngắt

mềm.Các ngắt ngồi có thể được kích bởi cạnh xuống hoặc lên hoặc mức thấp.

Sự cài đặt này được chỉ định đặc biệt trong thanh ghi điều khiển MCU –

MCUCR.



CÁC THANH GHI ĐIỀU KHIỂN NGẮT:

 MCU Control Register– MCUCR

Thanh ghi MCU chứa các bit điều khiển ngắt có ý thức kiểm sốt và chức năng

MCU chung .



• Bit 3, 2 – ISC11, ISC10: Interrupt Sense Control 1 Bit 1 and Bit 0

External Interrupt 1 được kích hoạt bởi chân ngồi INT1 nếu SREG I-bit

và mặt nạ ngắt tương ứng trong GIMSK là set (1). Các mức độ và cạnh trong

chân INT1 ngồi

kích hoạt ngắt được định nghĩa trong bảng sau:



• Bit 1, 0 – ISC01, ISC00: Interrupt Sense Control 0 Bit 1 and Bit 0

External Interrupt 0 được kích hoạt bởi chân ngoài INT0 nếu SREG I-bit và mặt

nạ ngắt tương ứng trong GIMSK là set (1). Các mức độ và cạnh trong chân INT0



11



ngồi



kích



hoạt



ngắt



được



định



nghĩa



trong



bảng



sau:



 General Interrupt Mask Register– GIMSK



• Bit 7 – INT1: External Interrupt Request 1 Enable

Khi bit INT1 set lên 1 và I-bit trong thanh ghi trạng thái SREG là 1,ngắt chân

ngồi được kích hoạt. Ngắt tương ứng của External Interrupt Request 1 được

thực thi từ INT0 Interrupt Vector.

• Bit 6 – INT0: External Interrupt Request 0 Enable

Khi bit INT0 set lên 1 và I-bit trong thanh ghi trạng thái SREG là 1,ngắt chân

ngồi được kích hoạt. Ngắt tương ứng của External Interrupt Request 0 được

thực thi từ INT0 Interrupt Vector.

 External Interrupt Flag Register – EIFR



• Bit 7 – INTF1: External Interrupt Flag 1

Khi 1 sự kiện tại chân INT1 kích hoạt 1 yêu cầu ngắt INTF1 sẽ lên 1. Nếu I-bit

trong SREG và bit INT1 trongGICR là 1,MCU sẽ nhảy đến vector ngắt tương

ứng. Cờ sẽ xóa khi thực hiện ngắt thường xun. Đơi khi, cờ có thể được xóa nếu

ta ghi trực tiếp 1 giá trị vào nó

• Bit 6 – INTF0: External Interrupt Flag 0

Khi 1 sự kiện tại chân INT0 kích hoạt 1 yêu cầu ngắt INTF0 sẽ lên 1. Nếu I-bit

trong SREG và bit INT1 trong GIMSK là 1,MCU sẽ nhảy đến vector ngắt tương

ứng. Cờ sẽ xóa khi thực hiện ngắt thường xun. Đơi khi, cờ có thể được xóa nếu

ta ghi trực tiếp 1 giá trị vào nó



2.1.4 Các cổng vào ra (I/O)

Vi điều khiểnATTiny2313 có 18 đường vào ra chia làm 3 nhóm: một nhóm 8

bit, một nhóm 7 bit và một nhóm 3 bit . Các đường vào ra này có rất nhiều tính



12



năng và có thể lập trình được. Ở đây ta sẽ xét chúng là các cổng vào ra số. Nếu

xét trên mặt này thì các cổng vào ra này là cổng vào ra hai chiều có thể định

hướng theo từng bit. Và chứa cả điện trở pull-up (có thể lập trình được). Mặc dù

mỗi port có các đặc điểm riêng nhưng khi xét chúng là các cổng vào ra số thì

dường như điều khiển vào ra dữ liệu thì hồn tồn như nhau. Chúng ta có thanh

ghi và một địa chỉ cổng đối với mỗi cổng, đó là : thanh ghi dữ liệu cổng

( PORTA, PORTB, PORTD), thanh ghi dữ liệu điều khiển cổng (DDRA, DDRB,

DDRD) và cuối cùng là địa chỉ chân vào của cổng (PINA, PIND, PIND).



Port A

• RESET – Port A, Bit 2

RESET, Reset pin: Khi cầu chì RSTDISBL đã lập trình, chức năng của chân này

là vào ra binh thường,và 1 phần sẽ phải dựa vào Power-on Reset và Brown-out

Reset như là nguồn reset của nó.

• XTAL2– Port A, Bit 1

XTAL2: Chân 2 dao động tạo clock. Sử dụng chân clock thạch anh,hoặc

dao động thạch anh tần số thấp. Khi dùng chân làm dao động thì khơng thể làm

chân nhập xuất được nữa.

• XTAL1– Port A, Bit 0

XTAL1: Chân 1 dao động tạo clock. Sử dụng chân clock thạch anh,hoặc

dao động thạch anh tần số thấp. Khi dùng chân làm dao động thì khơng thể làm

chân nhập xuất được nữa.



Port B

•USCK/SCL/PCINT7 – Port B, Bit 7

SCK: Master Clock output, Slave Clock input pin for SPI channel. Khi SPI được

kích hoạt là Slave, chân này được cấu hình là 1 chân ngõ vào bất chấp sự điều

chỉnh từ DDB7.

• MISO/DO/PCINT6 – Port B, Bit 6

MISO: Master Data input, Slave Data output pin for SPI channel, Three-wire

mode Universal Serial Interface Data output. Khi SPI được kích hoạt là Master,

chân này được cấu hình là 1 chân ngõ vào bất chấp sự điều chỉnh từ DDB6.

• MOSI/DI/SDA/PCINT5 – Port B, Bit 5

MOSI: SPI Master Data output, Slave Data input for SPI channel, Three-wire

mode Universal Serial Interface Data input. Khi SPI được kích hoạt là Slave,

chân này được cấu hình là 1 chân ngõ vào bất chấp sự điều chỉnh từ DDB5. Khi

SPI được kích hoạt là Master, dữ liệu trực tiếp của chân này được điều khiển bởi

DDB5.

• OC1B/PCINT4 – Port B, Bit 4

OC1B: Output Compare Match B output. chân PB4 có thể phục vụ như là một

đầu ra bên ngoài cho Timer/Counter1 Output Compare B.

PCINT4: Pin Change Interrupt Source 4, có thể phục vụ như một nguồn ngắt bên

ngồi.

• OC1A /PCINT3 – Port B, Bit 3

OC1A: Output Compare Match A output. Chân PB3 có thể phục vụ như là một

đầu ra bên ngoài cho Timer/Counter1 Output Compare A.



13



PCINT3: Pin Change Interrupt Source 3, có thể phục vụ như một nguồn ngắt bên

ngồi.

• OC0A/PCINT2 – Port B, Bit 2

OC0A: Output Compare Match A output. Chân PB2 có thể phục vụ như là một

đầu ra bên ngoài cho Timer/Counter0 Output Compare A.

PCINT2: Pin Change Interrupt Source 2, có thể phục vụ như một nguồn ngắt bên

ngồi.

• AIN1/PCINT1 – Port B, Bit 1

AIN1: Analog Comparator Negative input. Cấu hình như là bộ so sánh tín hiệu

Analog thụ động đầu vào.

PCINT1: Pin Change Interrupt Source 1, có thể phục vụ như một nguồn ngắt bên

ngồi.

• AIN0/PCINT1 – Port B, Bit 1

AIN0: Analog Comparator Positive input. Cấu hình như là bộ so sánh tín hiệu

Analog tích cực đầu vào.

PCINT0: Pin Change Interrupt Source 0, có thể phục vụ như một nguồn ngắt bên

ngồi.



Port D

• ICP – Port D, Bit 6



(ICP): Timer/Counter1 Input Capture Pin. Chân PD6 có thể hoạt động như

một Input Capture cho Timer/Counter1

• OC0B/T1 – Port D, Bit 5

OC0B: Output Compare Match B output. Chân PD5 pin có thể phục vụ như là



một đầu ra bên ngồi cho Timer/Counter0.

T1: Timer/Counter1 External Counter Clock input, được thiết lập khi set giá trị 1

cho bit CS02 và CS01 trong thanh ghi Timer/Counter1 Control Register

(TCCR1)

• T0 – Port D, Bit 4

T0: Timer/Counter0 External Counter Clock input, được thiết lập khi set giá trị 1

cho bit CS02 và

CS01 trong thanh ghi Timer/Counter0 Control Register (TCCR0)

• INT1 – Port D, Bit 3

INT1, Ngắt nguồn bên ngồi 1: Chân PD3 có thể làm chức năng như 1 nguồn

ngắt ngồi.

• INT0 – Port D, Bit 2

INT0, Ngắt nguồn bên ngồi 0: Chân PD2 có thể làm chức năng như 1 nguồn

ngắt ngồi.

• TXD – Port D, Bit 1

TXD, Truyền tải dữ liệu (chân dữ liệu ra của USART). Khi bộ truyền USART

được kích hoạt ,chân này được cấu hình như là một ngõ ra bất kể giá trị của

DDD1.

• RXD – Port D, Bit 0

RXD, Nhận dữ liệu (chân dữ liệu vào của USART). Khi bộ nhận USART được

kích hoạt ,chân này được cấu hình như là một ngõ vào bất kể giá trị của DDD0



14



Mô tả thanh ghi của port I/O

- Port A:

Port A Data Register – PORTA



Port A Data Direction Register – DDRA



Port A Input Pins Address – PINA



- Port B:

Port B Data Register – PORTB



Port B Data Direction Register – DDRB



Port B Input Pins Address – PINB



- Port D:

Port D Data Register – PORTD



15



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

2 Mục đích, ý nghĩa đề tài

Tải bản đầy đủ ngay(0 tr)

×