bao cao vi dieu khien da sua xong

29
CHƯƠNG 2: GIỚI THIỆU VI ĐIỀU KHIỂN AVR ATEMEGA 128 I. ĐÔI NÉT VỀ VI ĐIỀU KHIỂN ATEMEGA 128: Vi điều khiển AVR do hãng Atmel (Hoa Kì) sản xuất năm1996. AVR có rất nhiều dòng khác nhau như: Tiny AVR (như AT tiny 13, AT tiny 22…) có kích thước bộ nhớ nhỏ, ít bộ phận ngoại vi, rồi đến dòng AVR ( chẳng hạn AT90S8535, AT90S8515,…) có kích thước bộ nhớ vào loại trung bình và mạnh hơn là dòng Mega ( như ATmega32, ATmega128,…) với bộ nhớ có kích thước vài Kbyte đến vài trăm Kb cùng với các bộ ngoại vi đa dạng được tích hợp trên chip, cũng có dòng tích hợp cả bộ LCD trên chip ( dòng LCD AVR ). Tốc độ của dòng Mega cũng cao hơn so với các dòng khác. Sự khác nhau cơ bản

Upload: taiktcn

Post on 14-Jun-2015

850 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Bao Cao Vi Dieu Khien Da Sua Xong

CHƯƠNG 2:

GIỚI THIỆU VI ĐIỀU KHIỂN AVR ATEMEGA 128

I. ĐÔI NÉT VỀ VI ĐIỀU KHIỂN ATEMEGA 128:

Vi điều khiển AVR do hãng Atmel (Hoa Kì) sản xuất năm1996. AVR có rất nhiều

dòng khác nhau như: Tiny AVR (như AT tiny 13, AT tiny 22…) có kích thước bộ nhớ

nhỏ, ít bộ phận ngoại vi, rồi đến dòng AVR ( chẳng hạn AT90S8535, AT90S8515,…) có

kích thước bộ nhớ vào loại trung bình và mạnh hơn là dòng Mega ( như ATmega32,

ATmega128,…) với bộ nhớ có kích thước vài Kbyte đến vài trăm Kb cùng với các bộ

ngoại vi đa dạng được tích hợp trên chip, cũng có dòng tích hợp cả bộ LCD trên chip

( dòng LCD AVR ). Tốc độ của dòng Mega cũng cao hơn so với các dòng khác. Sự khác

nhau cơ bản giữa các dòng chình là cấu trúc ngoại vi, còn nhân thì vẫn như nhau.

Atmega128 là vi điều khiển chuẩn CMOS 8 bit tiết kiệm năng lượng, được chế tạo

dựa trên cấu trúc AVR RISC (Reduced Instruction Set Computer), đây là cấu trúc có tốc

độ xử lý cao hơn nhiều so với cấu trúc CISC (Complex Instruction Set Computer). Tần số

hoạt động của vi điều khiển AVR bằng với tần số của thạch anh, trong khi với họ vi điều

khiển theo cấu trúc CISC như họ 8051 thì tần số hoạt động bằng tần số thạch anh chia cho

Page 2: Bao Cao Vi Dieu Khien Da Sua Xong

12. Hầu hết các lệnh được thực thi trong một chu kỳ xung nhịp, do đó Atmega128 có thể

đạt được tốc độ xử lý đến một triệu lệnh mỗi giây (với tần số 1MHz). Đặc điểm này cho

phép người thiết kế có thể tiết kiệm tối đa mức độ tiêu thụ năng lượng mà vẫn đảm bảo

tốc độ xử lý.

 

Hình1.1  Các dòng AVR khác nhau: Tiny, AVR và Mega

II. CẤU TRÚC BÊN TRONG CỦA ATMEGA 128:

Page 3: Bao Cao Vi Dieu Khien Da Sua Xong

 

                        Hình 2.1 – Sơ đồ cấu trúc bên trong Atnega128

 

Phần lõi AVR kết hợp tập lệnh phong phú với 32 thanh ghi đa dụng. Toàn bộ 32

thanh ghi này đều kết nối trực tiếp với ALU (Arithmetic Logic Unit), cho phép truy cập 2

Page 4: Bao Cao Vi Dieu Khien Da Sua Xong

thanh ghi độc lập với 1 lệnh thực thi trong 1 chu kỳ xung nhịp. Cấu trúc đạt được có tốc

độ xử lý nhanh gấp 10 lần so với vi điều khiển CISC thông thường.

Với các tính năng đã nêu trên, khi ở chế độ nghỉ (Idle), CPU vẫn cho phép các

chức năng khác hoạt động như: USART, giao tiếp 2 dây, chuyển đổi A/D, SRAM, bộ

đếm/bộ định thời, cổng SPI và các chế độ ngắt. Chế độ Power-down lưu giữ nội dung các

thanh ghi nhưng làm ngừng bộ tạo dao động, thoát khỏi các chức năng của chip cho đến

khi có ngắt ngoài hoặc reset phần cứng. Trong chế độ Power-save, đồng hồ đồng bộ tiếp

tục chạy cho phép chương trình có thể giữ được sự đồng bộ về thời gian nhưng các thiết

bị còn lại ở trong trạng thái ngủ. Chế độ ADC Noise Reduction dừng CPU và tất cả các

thiết bị còn lại ngoại trừ đồng hồ đồng bộ và ADC, giảm thiểu nhiễu khi ADC hoạt động.

Ở chế độ Standby, bộ tạo dao động chạy trong khi các thiết bị còn lại ở trạng thái ngủ.

Những đặc điểm này cho phép bộ vi điều khiển khởi động rất nhanh trong chế độ tiêu thụ

công suất thấp.

AVR được sản xuất sử dụng công nghệ bộ nhớ cố định mật độ cao của Atmel. Bộ

nhớ On-chip ISP Flash cho phép lập trình lại vào hệ thống thông qua giao diện SPI bởi bộ

lập trình bộ nhớ cố định truyền thống hoặc bởi chương trình On-chip Boot chạy trên lõi

AVR. Chương trình Boot có thể sử dụng bất cứ giao diện nào để download chương trình

ứng dụng trong bộ nhớ Flash. Phần mềm trong vùng Boot Flash sẽ tiếp tục chạy trong khi

vùng Application Flash được cập nhật, giúp tạo ra thao tác Read-While-Write thực sự.

Nhờ việc kết hợp một bộ 8bit RISC CPU với In-System Self-Programmable Flash chỉ

trong một chip, ATmega32 là một vi điều khiển mạnh có thể cung cấp những giải pháp có

tính linh động cao, giá thành rẻ cho nhiều ứng dụng điều khiển nhúng. ATmega32 được

hỗ trợ đầy đủ với các công cụ hỗ trợ phát triển cũng như lập trình, bao gồm: trình biên

dịch C, macro assembler, mô phỏng/dò lỗi lập trình, mô phỏng mạch điện và các bộ kit thí

nghiệm.

 

III. CẤU TRÚC CỦA ATMEGA 128:

1) các tính năng của Atmega 128:

Page 5: Bao Cao Vi Dieu Khien Da Sua Xong

Hiệu năng cao, tiêu thụ ít năng lượng

Các bộ nhớ chương trình và bộ nhớ dữ liệu:

o 128 Kbyte  ROM (Read Only Memory)

o 4 Kbyte SRAM

o 4 Kbyte EEPROM

64 thanh ghi I/O

160 thanh ghi mở rộng

2 bộ định thời 8 bit (bộ định thời 0 và 2)

2 bộ định thời 16 bit (bộ đinh thời 1 và 3)

ADC 8 kênh với độ phân giải 10 bit

2 kênh PWM (Pulse Width Modulation) 8 bit

6 kênh PWM có thể lập trình thay đổi độ phân giải từ 2 đến 16 bit.

Hai khối USART lập trình được.

Khối truyền nhận nối tiếp SPI Master/Slave.

Tần số tối đa 16MHz.

Điện thế hoạt động : 4.5 – 5.5V đối với Atmega 128.

Điện thế: 2.7 – 5.5V đối với Atmega 128L

2) Các cổng vào ra của Atmega 128:

Port A (PA0…PA7).

Port A là cổng I/O 8-bit hai chiều với các điện trở pull -up bên trong (đư ợc lựa

chọn cho mỗi bit). Bộ đệm đầu ra của Port A có đặc tính điều kiển cân đối với cả tín hiệu

source và sink. Khi là tín hiệu đầu vào, các chân của cổng A sẽ tiêu thụ dòng nếu các điện

trở pull-up bên trong đư ợc kích hoạt.

Port A được sử dụng làm các đường địa chỉ thấp v à dữ liệu khi giao tiếp với bộ

nhớ ngoài theo bảng sau:

Các chân Port A cũng là ngõ vào analog của bộ chuyển đổi A/D     

Page 6: Bao Cao Vi Dieu Khien Da Sua Xong

        

PA7…PA0 Chức năng bổ sung

PA7 ADC7 (địa chỉ và dữ liệu bit 7 giao tiếp với bộ nhớ ngoài)

PA6 ADC6 (địa chỉ và dữ liệu bit 6 giao tiếp với bộ nhớ ngoài)

PA5 ADC5 (địa chỉ và dữ liệu bit 5 giao tiếp với bộ nhớ ngoài)

PA4 ADC4 (địa chỉ và dữ liệu bit 4 giao tiếp với bộ nhớ ngoài)

PA3 ADC3 (địa chỉ và dữ liệu bit 3 giao tiếp với bộ nhớ ngoài)

PA2 ADC2 (địa chỉ và dữ liệu bit 2 giao tiếp với bộ nhớ ngoài)

PA1 ADC1 (địa chỉ và dữ liệu bit 1 giao tiếp với bộ nhớ ngoài)

PA0 ADC0 (địa chỉ và dữ liệu bit 0 giao tiếp với bộ nhớ ngoài)

 

Port B (PB0…PB7):

Port B là cổng I/O 8-bit hai chiều với các điện trở pull -up bên trong (đư ợc lựa

chọn cho mỗi bit). Bộ đệm đầu ra của  Port B có đặc tính điều kiển cân đối với cả tín hiệu

source và sink. Khi là tín hi ệu đầu vào, các chân của cổng B sẽ ti êu thụ dòng nếu các

điện trở pull-up bên trong đ ược kích hoạt.

Port B được sử dụng với những chức năng bổ sung theo bảng sau:

 

Page 7: Bao Cao Vi Dieu Khien Da Sua Xong

PB7…PB0 Chức năng bổ sung

PB7OC2/OC1C( đầu ra so sánh v à đầu ra PWM cho timer/counter2

và đầu ra so sánh và đầu ra PWM C cho timer/counter1)

PB6 OC1B (đầu ra so sánh và đầu ra PWM B cho timer/counter1)

PB5 OC1A (đầu ra so sánh và đầu ra PWM A cho timer/counter1)

PB4 OC0 (đầu ra so sánh và đầu ra PWM cho timer/counter0).

PB3 MISO (đầu vào chủ/đầu ra tớ bus SPI)

PB2 MOSI (đầu ra chủ/đầu v ào tớ bus SPI)

PB1 SCK (chân Clock của SPI)

PB0 SS (ngõ vào chọn Slave của SPI)

 

Port C (PC0…PC7):

Port C là cổng I/O 8-bit hai chiều với các điện trở pull -up bên trong (đư ợc lựa

chọn cho mỗi bit). Bộ đệm đầu ra của Port C có đặc tính điều kiển cân đối với cả tín hiệu

source và sink. Khi là tín hi ệu đầu vào, các chân của cổng C sẽ ti êu thụ dòng nếu các

điện trở pull-up bên trong đư ợc kích hoạt.

Port C được sử dụng làm các đường địa chỉ cao khi giao tiếp với bộ nhớ ngoài theo

bảng sau:

 

Page 8: Bao Cao Vi Dieu Khien Da Sua Xong

PC7…PC0 Chức năng bổ sung

PC7 địa chỉ bit 15 giao tiếp với bộ nhớ ngoài

PC6 địa chỉ bit 14 giao tiếp với bộ nhớ ngoài

PC5 địa chỉ bit 13 giao tiếp với bộ nhớ ngoài

PC4 địa chỉ bit 12 giao tiếp với bộ nhớ ngoài

PC3 địa chỉ bit 11 giao tiếp với bộ nhớ ngoài

PC2 địa chỉ bit 10 giao tiếp với bộ nhớ ngoài

PC1 địa chỉ bit 9 giao tiếp với bộ nhớ ngo ài

PC0 địa chỉ bit 8 giao tiếp với bộ nhớ ngo ài

Port D (PD0…PD7):

Port D là cổng I/O 8-bit hai chiều với các điện trở pull -up bên trong (được lựa

chọn cho mỗi bit). Bộ đệm đầu ra của Port D có đặc tính điều kiển cân đối với cả tín hiệu

source và sink. Khi là tín hi ệu đầu vào, các chân của cổng D sẽ ti êu thụ dòng nếu các

điện trở pull-up bên trong đ ược kích hoạt.

Port D được sử dụng với những chức năng bổ sung theo bảng sau:

PD7…PD0 Chức năng bổ sung

PD7 T2 (ngõ vào của bộ đếm ngoài counter 2)

PD6 T1 (ngõ vào của bộ đếm ngoài counter 1)

PD5 XCK1 (chân I/O Clock của USART1)

PD4 ICP1 (chân bắt mẫu của Timer/Counter1)

Page 9: Bao Cao Vi Dieu Khien Da Sua Xong

PD3 INT3/TXD1(ngõ vào ngắt ngoài 3 hoặc truyền tín hiệu UART1)

PD2 INT2/RXD1(ngõ vào ngắt ngoài 2 hoặc nhận tín hiệu UART1)

PD1INT1/ SDA (ngõ vào ngắt ngoài 1 hoặc Chân data I/O của giao

thức Two-wire)

PD0INT0/ SCL (ngõ vào ngắt ngoài 0 hoặc Chân Clock của giao thức

Two-wire)

 

Port E (PE0…PE7):

Port E là cổng I/O 8-bit hai chiều với các điện trở pull -up bên trong (đư ợc lựa

chọn cho mỗi bit). Bộ đệm đầu ra của Port E có đặc tính điều kiển cân đối với cả tín hiệu

source và sink. Khi là tín hi ệu đầu vào, các chân của cổng E sẽ ti êu thụ dòng nếu các

điện trở pull-up bên trong đư ợc kích hoạt.

Các chức năng khác của Port E:             

PE7…PE0 Chức năng bổ sung

PE7INT7/ICP3 (ngõ vào ngắt ngoài 7 hoặc chân bắt mẫu của Timer/

Counter3)

PE6INT6/T3 (ngõ vào ngắt ngoài 6 hoặc ngõ vào của bộ đếm ngoài

Timer/Counter 3)

PE5INT5/OC3C (ngõ vào ngắt ngoài 5 hoặc ngõ ra so sánh PWM C

của Timer/Counter3)

PE4INT4/OC3B (ngõ vào ngắt ngoài 4 hoặc ngõ ra so sánh PWM B

của Timer/Counter3)

PE3AIN1/OC3A (ngõ vào Negative của bộ so sánh analog hoặc ngõ

ra so sánh PWM A của Timer/Counter3)

PE2AIN0/ XCK0 (ngõ vào Possitive của bộ so sánh analog hoặc

chân I/O Clock của USART0).

Page 10: Bao Cao Vi Dieu Khien Da Sua Xong

PE1 PDO/TXD0 (ngõ ra dữ liệu hoặc ngõ ra USART0)

PE0 PDI/RXD0 (ngõ vào dữ liệu hoặc ngõ vào USART0)

 

Port F (PF0…PF7):

Port F có chức năng làm đầu vào cho bộ chuyển đổi ADC tích hợp sẵn.

Khi không được sử dụng với chức năng l àm đầu vào của ADC, Port F cũng l à

cổng I/O 8-bit hai chiều với các điện trở pull -up bên trong (đư ợc lựa chọn cho mỗi bit).

Bộ đệm đầu ra của Port F có đặc tính điều kiển cân đối với cả tín hiệu so urce và sink. Khi

là tín hiệu đầu vào, các chân của cổng F sẽ tiêu thụ dòng nếu các điện trở pull -up bên

trong được kích hoạt.

Port F được sử dụng với những chức năng bổ sung theo bảng sau:

PF0…PF7 Chức năng bổ sung

PF7ADC7/TDI (ngõ vào ADC 7 hoặc chân dữ liệu vào Test

JTAG)

PF6ADC6/TDO (ngõ vào ADC 6 hoặc chân dữ liệu ngõ ra Test

JTAG)

PF5ADC5/ TMS (ngõ vào ADC 5 hoặc chân chọn Mode Test

JTAG)

PF4 ADC4/ TCK (ngõ vào ADC 4 hoặc chân Clock Test JTAG

PF3 ADC3 (ngõ vào ADC 3)

PF2 ADC2 (ngõ vào ADC 2)

PF1 ADC1 (ngõ vào ADC 1)

Page 11: Bao Cao Vi Dieu Khien Da Sua Xong

PF0 ADC0 (ngõ vào ADC 0)

 

Port G (PG0…PG7):

Port G là cổng I/O 5-bit hai chiều với các điện trở pull -up bên trong (đư ợc lựa

chọn cho mỗi bit). Bộ đệm đầu ra của Port G có đặc tính điều kiển cân đối với cả tín hiệu

source và sink. Khi là tín hi ệu đầu vào, các chân của cổng G sẽ t iêu thụ dòng nếu các

điện trở pull-up bên trong đư ợc kích hoạt.

Port G được sử dụng với những chức năng bổ sung theo bảng sau:

Chân Chức năng

PG4 TOSC1 (Chân 1 bộ dao động của Timer/Counter 0)

PG3 TOSC2 (Chân 2 bộ dao động của Timer/Counter 0)

PG2 ALE (cho phép ch ốt địa chỉ tới bộ nhớ ngo ài)

PG1 RD(cho phép đ ọc bộ nhớ ngoài)

PG0 WR(cho phép vi ết tới bộ nhớ ngo ài)

 

 

II.   SƠ ĐỒ CHÂN CỦA ATMEGA 128:

Page 12: Bao Cao Vi Dieu Khien Da Sua Xong

1) CỔNG VÀO RA:

Cổng vào ra là một trong số các phương tiện để vi điều khiển giao tiếp với các thiết

bị ngoại vi. ATmega128 có cả thảy 7 cổng ( port ) vào ra 8 bit là : PortA, PortB, PortC,

PortD, PortE, PortF, PortG, tương ứng với 56 đường vào ra. Các cổng vào ra của AVR là

cổng vào ra hai chiều có thể định hướng, tức có thể chọn hướng của cổng là hướng vào

(input ) hay hướng ra (output ). Tất các các cổng vào ra của AVR điều có tính năng Đọc –

Chỉnh sửa – Ghi ( Read – Modify – write ) khi sử dụng chúng như là các cổng vào ra số

thông thường. Điều này có nghĩa là khi ta thay đổi hướng của một chân nào đó thì nó

không làm ảnh hưởng tới hướng của các chân khác. Tất cả các chân của các cổng ( port

)điều có điện trở kéo lên ( pull-up ) riêng, ta có thể cho phép hay không cho phép điện trở 

kéo lên này hoạt động.

 

Page 13: Bao Cao Vi Dieu Khien Da Sua Xong

 

Hình 2.2 – Sơ đồ chân của Atmega128

 

-        GND: chân nối mass.

-        VCC: điện áp nguồn.

 

Page 14: Bao Cao Vi Dieu Khien Da Sua Xong

1)   CÁCH HOẠT ĐỘNG :

Khi khảo sát các cổng như là các cổng vào ra số thông thường thì tính chất của các

cổng ( PortA, PortB,…PortG ) là tương tự nhau, nên ta chỉ cần khảo sát một cổng nào đó

trong số 7 cổng của vi điều khiển là đủ.

Mỗi một cổng vào ra của vi điều khiển được liên kết với 3 thanh ghi : PORTx,

DDRx, PINx. ( ở đây x là để thay thế cho A, B,…G ). Ba thanh ghi này sẽ được phối hợp

với nhau để điều khiển hoạt động của cổng, chẳn hạn thiết lập cổng thành lối vào có sử

dụng điện trở pull-up, ..v.v.. . Sau đây là diễn tả cụ thể vai trò của 3 thanh ghi trên.

a. Thanh Ghi DDRx.

Đây là thanh ghi 8 bit ( có thể đọc ghi ) có chức năng điều khiển hướng của cổng

(là lối ra hay lối vào ). Khi một bit của thanh ghi này được set lên 1 thì chân tương ứng

với nó được cấu hình thành ngõ ra. Ngược lại, nếu bit của thanh ghi DDRx là 0 thì chân

tương ứng với nó được thiết lập thành ngõ vào. Lấy ví dụ: Khi ta set tất cả 8 bit của thanh

ghi DDRA đều là 1, thì 8 chân tương ứng của portA là PA1, PA2, … PA7 ( tương ứng với

các chân số 50, 49, …44 của vi điều khiển ) được thiết lập thành ngõ ra.

Thanh ghi DDRA

             

b. Thanh Ghi PORTx.

PORTx là thanh ghi 8 bit có thể đọc ghi. Đây là thanh ghi dữ liệu của PORTx, Nếu

thanh ghi DDRx thiết lập cổng là lối ra, khi đó giá trị của thanh ghi PORTx cũng là giá trị

của các chân tương ứng của PORTx, nói cách khác, khi ta ghi một giá trị logic lên 1 bit

của thanh ghi này thì chân tương ứng với bit đó cũng có cùng mức logic. Khi thanh ghi

DDRx thiết lập cổng thành lối vào thì thanh ghi PORTx đóng vai trò như một thanh ghi

điều khiển cổng. Cụ thề , nếu một bit của thanh ghi này được ghi thành 1 thì điện trở treo

Page 15: Bao Cao Vi Dieu Khien Da Sua Xong

( pull-up resistor ) ở chân tương ứng với nó sẽ được kích hoạt, ngược lại nếu bit được ghi

thành 0 thì điện trở treo ở chân tương ứng sẽ không được kích hoạt, cổng ở trạng thái cao

trở ( Hi-Z ).

 

 

 

Thanh ghi PORTA

 

c. Thanh Ghi PINx:

PINx không phải là một thanh ghi thực sự, đây là địa chỉ trong bộ nhớ I/O kết nối trực

tiếp tới các chân của cổng. Khi ta đọc PORTx tức ta đọc dữ liệu được chốt trong PORTx,

còn khi đọc PINx thì giá trị logic hiện thời ở chân của cổng tương ứng được đọc. Vì thế

đối với thanh ghi PINx ta chỉ có thể đọc mà không thể ghi. Bảng 1 thể hiện các các thiết

lập cách hoạt có thể có của cổng.

 

    

                                                Thanh ghi PINA

 

DDRxn PORTxnPUD ( Trong

thanh ghi SFIORI/O Pull-up Chú thích

0 0 x Ngõ vào không Cao trở

0 1 0 Ngõ vào có Như một nguồn dòng

Page 16: Bao Cao Vi Dieu Khien Da Sua Xong

0 1 1 Ngõ vào không Cao trở

1 0 x Ngõ ra không Ngõ ra thấp

1 1 x Ngõ ra không Ngõ ra cao

Bảng 1. Cấu hình cho các chân cổng

DDRxn là bit thứ n của thanh ghi DDRx

PORTxn là bit thứ n của thanh ghi PORTx

Dấu “x” ở cột thứ 3 để chỉ giá trị logic là tùy ý

 

I. BỘ NHỚ CỦA ATMEGA128:

Bộ nhớ vi điều khiển AVR có cấu trúc Harvard là cấu trúc có đường Bus riêng cho

bộ nhớ chương trình và bộ nhớ dữ liệu. Bộ nhớ AVR được chia làm 2 phần chính: Bộ nhớ

chương trình ( program memory ) và bộ nhớ dữ liệu ( Data memory ).

1) Bộ Nhớ Chương Trình : Bộ nhớ chương trình của AVR là bộ nhớ Flash có dung

lượng 128 K bytes. Bộ nhớ chương trình có độ rộng bus là 16 bit. Ở vi điều khiển

ATmega128 bộ nhớ chương trình còn có thể được chia làm 2 phần : phần boot loader

( Boot loader program section ) và phần ứng dụng ( Application program section ), bộ nhớ

Flash có thể thực hiện ghi/xoá ít nhất 10.000 lần.

Phần  boot loader chứa chương  trình boot loader. Chương trình Boot loader là một

phần mềm nhỏ nạp trong vi điều khiển và được chạy lúc khởi động. Phần mềm này

có thể tải vào trong vi điều khiển chương trình của người sử dụng và sau đó thực

thi chương trình này. Mỗi khi reset vi điều khiển CPU sẽ nhảy tới thực thi chương

trình boot loader trước, chương trình boot loader sẽ dò xem có chương trình nào

cần nạp vào vi điều khiển hay không, nếu có chương trình cần nạp, boot loader sẽ

nạp chương trình vào vùng nhớ ứng dụng (Application program section ), rồi thực

thi chương trình này. Ngược lại, boot loader sẽ chuyển tới chương trình ứng dụng

có sẵn trong vùng nhớ ứng dụng để thực thi chương trình này.

Phần ứng dụng (Application program section ) là vùng nhớ chứa chương trình ứng

dụng của người dùng. Kích thước của phần boot loader và phần ứng dụng có thể

Page 17: Bao Cao Vi Dieu Khien Da Sua Xong

tùy chọn. Hình 2.1 thể hiện cấu trúc bộ nhớ chương trình có sử dụng và không sử

dụng boot loader, khi sử dụng phần boot loader ta thấy 4 word đầu tiên thay vì chỉ

thị cho CPU chuyển tới chương trình ứng dụng của người dùng (là chương trình có

nhãn start ) thì chỉ thị CPU nhảy tới phần chương trình boot loader để thực hiện

trước, rồi mới quay trở lại thực hiện chương trình ứng dụng.

Hình 2.1 Bộ nhớ chương trình có và không có sử dụng boot loader

2)     Bộ Nhớ Dữ Liệu : Bộ nhớ dữ liệu của AVR chia làm 2 phần chính là bộ nhớ SRAM

và bộ nhớ EEPROM. Tuy cùng là bộ nhớ dữ liệu nhưng hai bộ nhớ này lại tách biệt nhau

và được đánh địa chỉ riêng.

Bộ nhớ SRAM có dụng lượng 4 K bytes, Bộ nhớ SRAM có hai chế độ hoạt động

là chế độ thông thường và chế độ tương thích với ATmega103, muốn thiết lập bộ

nhớ SRAM hoạt động theo chế độ nào ta sử dụng bit cầu chì M103C ( M103C fuse

bit (9) ).

Bộ nhớ SRAM ở chế độ bình thường : Ở chế độ bình thường bộ nhớ SRAM được

Chia thành 5 phần: Phần đầu là 32 thanh ghi chức năng chung (General Purpose

Register ) R0 đến R31 có địa chỉ từ $0000 tới $001F. Phần thứ 2 là không gian nhớ

vào ra với 64 thanh ghi vào ra ( I/O Register ) có địa chỉ từ $0020 tới $005F. Phần

thứ 3 dùng cho vùng nhớ dành cho các thanh ghi vào ra mở rộng ( Extended I/O

Page 18: Bao Cao Vi Dieu Khien Da Sua Xong

Registers ) có địa chỉ từ $0060 tới $00FF. Phần thứ 4 là vùng SRAM nội với 4096

byte có địa chỉ từ $0100 tới $10FF. Phần thứ 5 là vùng nhớ SRAM ngoài (

External SRAM ) bắt đầu từ địa chỉ $1100, vùng SRAM mở rộng này có thể mở

rộng lên đến 64 K byte. Khi nói bộ nhớ SRAM có dung lượng 4 K byte là nói tới

phần thứ 4 ( SRAM nội ). Nếu tính cả các thanh ghi thì bộ nhớ SRAM trong chế độ

bình thường sẽ là 4.25 K byte = 4352 byte.

Bộ nhớ SRAM ở chế độ tương thích ATmega103 : Ở chế này bộ nhớ SRAM cơ

bản cũng giống ở chế độ bình thường, ngoại trừ phần thứ 3 là vùng nhớ dành cho

các thanh ghi vào ra mở rộng không tồn tại, ngoài ra kích thước của phần SRAM

nội ( internal SRAM ) chỉ có 4000 byte so với 4096 byte ở chế độ bình thường.

II.   BỘ ĐỊNH THỜI CỦA ATMEGA 128:

ATmega128 có 4 bộ định thời , bộ định thời 1 và 3 là bộ định thời 16 bit, bộ định

thời 0 và 2 là bộ định thời 8 bit. Dưới đây là mô tả chi tiết của 4 bộ định thời.

1)   BỘ ĐỊNH THỜI TIMER/COUTER 0:

Timer/Counter0 là Timer/Counter 8 bit v ới các đặc điểm chính:

PWM

Phát tần số

Bộ định trước tỉ lệ đồng hồ 10 bit

Các nguồn ngắt báo tràn và báo so sánh phù h ợp (OCF0 và TOV0)

Cho phép đồng hồ từ bộ dao động 32kHz b ên ngoài độc lập với đồng hồ

I/O

2)   BỘ ĐỊNH THỜI TIMER/COUTER 2:

Timer/Counter2 là Timer/Counter 8 bits, v ới các đặc điểm chính:

PWM

Phát tần số

Bộ định trước tỉ lệ đồng hồ 10 bit

Các nguồn ngắt báo tràn và báo so sánh phù hợp (OCF2 và TOV2)

3)   BỘ ĐỊNH THỜI TIMER/COUTER 1 VÀ TIMER/COUNTER 3:

Page 19: Bao Cao Vi Dieu Khien Da Sua Xong

Timer/Counter1và Timer/Count er3 là các Timer/Counter 16 bits, v ới các đặc

điểm chính:

Thiết kế 16bit thực sự (cho phép tạo ra xung PWM 16bit).

2 bộ so sánh ngõ ra độc lập.

1 bộ bắt mẫu từ ngõ vào.

1 bộ giảm nhiễu ngõ vào.

Chế độ xóa timer khi đạt tới giá trị so sánh.

Tạo tần số.

Tạo xung PWM có thể thay đổi giá trị.

Đếm sự kiện ngoài.

Các chế độ hoạt động:

Chế độ bình thường.

Chế độ xóa timer khi đạt tới giá trị so sánh.

Chế độ PWM tần số cao.

Chế độ PWM hiệu chỉnh pha (Phase Correct PWM).

Chế độ PWM hiệu chỉnh pha và tần số (Phase and Frequency Correct

PWM).

Page 20: Bao Cao Vi Dieu Khien Da Sua Xong

 

Sơ đồ khối bộ định thời 1(3):

 

III. GIAO DIỆN KẾT NỐI NGOẠI VI NỐI TIẾP ĐỒNG BỘ SPI:

SPI cho phép truy ền dữ liệu đồng bộ tốc độ cao giữa Atmega128 và các thiết bị

ngoại vi hoặc giữa một số thiết bị AVR, các đặc điểm tiêu biểu là:

Song công, dữ liệu đồng bộ 3 dây

Hoạt động chủ hoặc tớ (Master/ Slave)

Cờ ngắt khi truyền xong

      Khi giao tiếp SPI giữa chip Master và Slave thông qua 4 đường:

Page 21: Bao Cao Vi Dieu Khien Da Sua Xong

SCK: Xung giữ nhịp cho giao tiếp SPI, vì SPI là chuẩn truyền đồng bộ nên

cần 1 đường giữ nhịp, mỗi nhịp trên chân SCK báo một bit dữ liệu đến hoặc

đi. Đây là điểm khác biệt với truyền thông không đồng bộ mà chúng ta đã

biết trong chuẩn UART. Sự tồn tại của chân SCK giúp quá trình tuyền ít bị

lỗi và vì thế tốc độ truyền của SPI có thể đạt rất cao. Xung nhịp chỉ được

tạo ra bởi chip Master. 

MISO– Master Input / Slave Output: nếu là chip Master thì đây là đường

Input còn nếu là chip Slave thì MISO lại là Output. MISO của Master và

các Slaves được nối trực tiếp với nhau. 

MOSI – Master Output / Slave Input: nếu là chip Master thì đây là đường

Output còn nếu là chip Slave thì MOSI là Input. MOSI của Master và các

Slaves được nối trực tiếp với nhau. 

SS – Slave Select: SS là đường chọn Slave cần giap tiếp, trên các chip Slave

đường SS sẽ ở mức cao khi không làm việc. Nếu chip Master kéo đường SS

của một Slave nào đó xuống mức thấp thì việc giao tiếp sẽ xảy ra giữa

Master và Slave đó. Chỉ có 1 đường SS trên mỗi Slave nhưng có thể có

nhiều đường điều khiển SS trên Master, tùy thuộc vào thiết kế của người

dùng.

 

 

IV. BỘ TRUYỀN NHẬN NỐI TIẾP ĐỒNG BỘ VÀ KHÔNG ĐỒNG BỘ USART:

Bộ truyền và nhận tín hiệu nối tiếp đồng bộ v à không đồng bộ là thiết bị kết nối

nối tiếp có độ linh động cao. Các đặc điểm tiêu biểu là:

Hoạt động song công

Hoạt động đồng bộ v à không đồng bộ

Hoạt động đồng bộ theo xung nhịp chủ tớ

Bộ phát tốc độ truyền có độ phân giải cao

Hỗ trợ khung truyền với 5,6,7,8, hoặc 9 bit dữ liệu và 1 hoặc 2 stop bits

Page 22: Bao Cao Vi Dieu Khien Da Sua Xong

Phát và kiểm tra chẵn lẻ đ ược hỗ trợ bởi phần cứng

Phát hiện lỗi khung truyền