1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Nghiên cứu, ứng dụng vi điều khiển cho modul gia công tự động kiểu nối tiếp tuần hoàn

95 220 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 95
Dung lượng 1,98 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bộ phận này được sử dụng để khôi phục lại trạng thái hoạt động của hệ thống trong trường hợp xảy ra lỗi treo khi chạy phần mềm, nhưng cũng có thể được sử dụng cho các ứng dụng đáng quan

Trang 1

LỜI CAM ĐOAN

Tôi xin cam đoan các số liệu và kết quả nêu trong Luận văn là trung thực và chưa từng được ai công bố trong bất kỳ một công trình nào khác Trừ các phần tham khảo đã được nêu rõ trong Luận văn

Tác giả

Tống Quang Dương

Trang 2

LỜI CẢM ƠN

Tác giả xin chân thành cảm ơn TS.Nguyễn Đình Mãn, người đã hướng dẫn và giúp đỡ tận tình từ định hướng đề tài, tổ chức thực nghiệm đến quá trình viết và hoàn chỉnh Luận văn

Tác giả bày tỏ lòng biết ơn các thầy cô trong bộ môn Máy và Ma Sát học đã cùng sự giúp đỡ của các cán bộ phòng thí nghiệm FMS & CIM, xưởng Cơ khí bộ môn Công nghệ Chế tạo máy, Viện Cơ khí Xin cám ơn Ban lãnh đạo và Viện đào tạo Sau đại học, Viện Cơ khí của trường Đại học Bách Khoa Hà Nội đã tạo điều kiện thuận lợi để hoàn thành bản Luận văn này

Do năng lực bản thân còn nhiều hạn chế nên Luận văn không tránh khỏi sai sót, tác giả rất mong nhận được sự đóng góp ý kiến của các Thầy, Cô giáo, các nhà khoa học và các bạn đồng nghiệp

Tống Quang Dương

Trang 3

MỤC LỤC

LỜI CAM ĐOAN 1

LỜI CẢM ƠN 2

HỆ THỐNG DANH MỤC CÁC HÌNH VẼ 6

HỆ THỐNG DANH MỤC CÁC BẢNG BIỂU 7

PHẦN MỞ ĐẦU 8

1 Lý do chọn đề tài 8

2 Lịch sử nghiên cứu 8

3 Đối tượng nghiên cứu: 8

4 Tóm tắt những luận điểm cơ bản và đóng góp mới của tác giả 8

5 Phương pháp nghiên cứu 9

CHƯƠNG I 10

TỔNG QUAN VỀ VI ĐIỀU KHIỂN 10

1.1 Giới Thiệu Họ Vi Điều Khiển MCS – 51 10

1.2 Tổng quan về vi điều khiển AVR 13

1.2.1 Giới thiệu tổng quan họ vi điều khiển AVR 13

1.2.2 Kiến trúc AVR 14

1.2.3 Bộ nhớ EEPROM 31

1.2.4 Bộ nhớ SRAM 34

1.2.5 Bộ định thời 35

1.2.6 Bộ truyền nhận UART 38

1.2.7 Bộ biến đổi A/D bên trong 41

CHƯƠNG II 42

KHÁI QUÁT VỀ HỆ THỐNG SẢN XUẤT TỰ ĐỘNG 42

2.1 Những khái niệm cơ bản về hệ thống sản xuất tự động 42

Trang 4

2.1.1 Định nghĩa hệ thống sản xuất tự động 42

2.1.2 Cấu trúc của hệ thống sản xuất tự động 42

2.1.3 Quy trình thiết kế hệ thống sản xuất tự động 42

2.2 Các thành phần trong hệ thống sản xuất tự động 43

2.3 Hệ thống kiểm tra trong sản xuất 46

2.3.1 Chức năng hệ thống kiểm tra 46

2.3.2 Nguyên tắc kiểm tra thông số kỹ thuật của các phần tử và modul trong hệ thống gia công nối tiếp tuần hoàn 48

2.4 Hướng phát triển của hệ thống gia công nối tiếp tuần hoàn 52

2.4.1 Sử dụng máy với hệ thống điều khiển linh hoạt 52

2.4.2 Sản xuất hàng loạt theo dây chuyền 52

2.4.3 Sản xuất tự động hóa linh hoạt 53

2.4.4 Modul sản xuất linh hoạt 53

2.4.5 Hệ thống sản xuất linh hoạt toàn phần 54

2.4.6 Hệ thống sản xuất linh hoạt toàn phần bậc cao 54

2.4.7 Ứng dụng kỹ thuật CIM 54

2.4.8 Ứng dụng trí tuệ nhân tạo 54

CHƯƠNG III 55

THIẾT KẾ HỆ THỐNG GIA CÔNG TỰ ĐỘNG KIỂU NỐI TIẾP TUẦN HOÀN 55

3.1 Kết cấu bàn gia công 6 vị trí 55

1: Bàn cố định; 2: Bàn Quay; 3 Cơ cấu mantit nội tiếp 56

3.1.1 Bàn cố định 56

3.1.2 Bàn quay 56

Hình 3.2 Kết cấu bàn quay 56

Trang 5

3.1.3 Cơ cấu mantit nội tiếp 57

Hình 3.3 Kết cấu mantit nội tiếp 57

3.2 Phân tích thiết kế chế tạo máy gia công cho hệ thống 57

3.2.1 Phân tích, tính toán chi tiết gia công 57

3.2.2 Quy trình công nghệ gia công chi tiết 59

3.2.3 Kết cấu máy dụng cụ 70

3.2.4 Thiết kế ROBOT cho hệ thống 75

CHƯƠNG IV 87

ĐIỀU KHIỂN HỆ THỐNG BẰNG VĐK 87

4.1 Phân tích sơ đồ điều khiển modul tự động kiểu gia công nối tiếp tuần hoàn 87

4.2 Lập trình điều khiển hệ thống bằng vi điều khiển 89

KẾT LUẬN VÀ KIẾN NGHỊ 94

TÀI LIỆU THAM KHẢO 95

Trang 6

HỆ THỐNG DANH MỤC CÁC HÌNH VẼ

Hình 1.1 Sơ đồ chân của 8051 11

Hình 1.2 Kiến trúc của bộ xử lý AVR 17

Hình 1.3 Bản đồ bộ nhớ của vi điều khiển AVR 20

Hình 1.4 Tệp thanh ghi của vi điều khiển AVR 21

Hình 1.5 Tìm nạp/giải mã lệnh và việc thực thi lệnh 22

Hình 1.6 Việc thực thi của ALU bao gồm tìm/nạp, thực thi, và ghi ngược vào thanh ghi 23

Hình 1.7 Các chu trình truy nhập dữ liệu lên thanh ghi SRAM trên chip 23

Hinh 1.8 Mô tả chi tiết một trong các bit cổng (PORTD4) 33

Hình 1.9 Kết nối bộ nhớ SRAM ngoài với bộ điều khiển AVR 35

Hình 1.10 Chu trình truy nhập SRAM ngoài và bộ điều khiển AVR không có các trạng thái chờ 36

Hình 1.11 Chu trình truy nhập SRAM ngoài và bộ điều khiển AVR có các trạng thái chờ bổ xung 36

Hình 1.12 Một mạch chia tần số đồng hồ dùng cho Timer0 cũng như Timer1 37

Hình 1.13 Sơ đồ khối của Timer/counter0 38

Hình 1.14 Sơ đồ khối của bộ Timer/Counter1 38

Hình 1.15 Sơ đồ khối của bộ truyền trên UART 39

Hình 1.16 Sơ đồ khối của bộ nhận UART 40

Hình 1.17 Sơ đồ khối của bộ biến đổi ADC 10 bit với 8 lối vào 41

Hình 2.1 Hệ thống chế tạo gia công trục động cơ điện (Fuji Electric) 46

Hình 2.2 Hệ thống sản xuất Tự Động của hãng Murata Machinery với ứng dụng xe rùa tự động chạy trực tiếp trên nền xưởng 47

Hình 2.3 Hệ thống vận chuyển-tích trữ vệ tinh trong CIM của hãng Cincinnati Milacron (Mỹ) 50

Hình 2.4 Ổ tích vệ tinh với xe tời di động của hãng Hitachi Seiki(Nhật Bản) 51

Trang 7

Hình 3.1 Kết cấu hệ thống gia công 6 vị trí 55

Hình 3.2 Kết cấu bàn quay 56

Hình 3.3 Kết cấu mantit nội tiếp 57

Hình 3.4 Chi tiết gia công 57

Hình 3.5 Định vị chi tiết 60

Hình 3.6 Mô hình máy phay hướng kính 70

Hình 3.7 Mô hình máy phay tiếp tuyến 71

Hình 3.8 Mô hình máy khoan 73

Hình 3.9 Robot kiểu tọa độ cầu 77

Hình 3.10 Robot kiểu SCARA 78

Hình 3.11 Mô hình robot lật 79

Hình 3.12 Mô hình cánh tay robot lật 80

Hình 3.13 Mô hình phần quay và phần kẹp chi tiết của robot lật 80

Hình 3.14 Mô hình robot cấp phôi 83

Hình 3.15 Hoạt động của hệ thống khí nén trong robot 84

Hình 4.1 Sơ đồ nguyên công gia công chi tiết trên modul tự động 86

HỆ THỐNG DANH MỤC CÁC BẢNG BIỂU Bảng 1.1 Mô tả sự khác nhau của các IC trong họ MSC-51 11

Bảng 1.2 Bộ nhớ chương trình dùng cho địa chỉ 18

Bảng 2.1.Thành phần các máy CNC trong hệ thống FMS 45

Bảng 2.2 Chức năng của hệ thống kiểm tra 47

Bảng 3.1 Bảng tra chế độ cắt 65

Trang 8

PHẦN MỞ ĐẦU

1 Lý do chọn đề tài

Do yêu cầu của thực tế cần trong nghành cơ khí cần phải gia công chi tiết một cách linh hoạt và ta có thể đáp ứng được yêu cầu đó bằng việc ứng dụng vi điều khiển vào hệ thống gia công tự động kiểu nối tiếp tuần hoàn

So với các hệ thống sản xuất truyền thống, FMS có nhiều ưu điểm vượt trội hơn hẳn Hệ thống FMS không những làm tăng năng suất và chất lượng sản phẩm,

hạ giá thành của sản phẩm mà còn có khả năng linh hoạt cao, đáp ứng được những thay đổi nhanh chóng của thị trường

Với yêu cầu từ thực tiễn và những ứng dụng có ý nghĩa quan trọng của tự động hóa và tối ưu hóa các thiết bị cơ khí trong các quá trình sản xuất tích hợp vi điều khiển để điều khiển chúng, với sự hướng dẫn tận tình của thầy giáo hướng dẫn

TS Nguyễn Đình Mãn Tác giả đã chọn đề tài “Nghiên cứu, ứng dụng vi điều

khiển cho modul gia công tự động kiểu nối tiếp tuần hoàn ”

3 Đối tƣợng nghiên cứu:

Đối tượng nghiên cứu của đề tài là tập hợp các máy công cụ bao gồm máy phay, máy khoan được tích hợp vi điều khiển, các lý thuyết liên quan đến hệ thống sản xuất tự động, và hệ thống robot phục vụ quá trình gia công

4 Tóm tắt những luận điểm cơ bản và đóng góp mới của tác giả

* Những luận điểm cơ bản

Nghiên cứu các lý thuyết về hệ thống sản xuất tự động và vi điều khiển , từ đó tính toán thiết kế hệ thống modul tự động bao gồm các máy phay, máy khoan, hệ thống các Robot như robot lật, robot cấp phôi Hệ thống này hoạt động theo kiểu

Trang 9

bàn quay và được điều khiển bằng VĐK Hệ thống này giúp quá trình sản xuất trở nên linh hoạt và giảm tối đa thời gian phụ trong quá trình gia công đồng thời nâng cao năng suất

* Những đóng góp mới của tác giả

- Tổng quan về lý thuyết chung của hệ thống điều khiển tự động trong sản xuất cơ khí

- Tổng quan về vi điều khiển

- Tính toán thiết kế module tự động theo kiểu nối tiếp tuần hoàn cụ thể như: thiết kế bàn gia công, lựa chọn hệ thống máy công cụ và các robot hoạt động trong

hệ thống

- Điều khiển hệ thống gia công tự động kiểu nối tiếp tuần hoàn bằng VĐK

5 Phương pháp nghiên cứu

- Nghiên cứu cơ sở lý thuyết về cấu trúc hệ thống sản xuất tự động

- Tính toán thiết kế, chế tạo modul gia công tự động

- Tiến hành soạn chương trình VĐK

- Gia công toàn bộ hệ thống

- Chạy thử

Trang 10

CHƯƠNG I TỔNG QUAN VỀ VI ĐIỀU KHIỂN

Ngày nay, cùng với sự phát triển không ngừng của khoa học kỹ thuật thì kỹ thuật số đã đem lại cho con người những thành tựu to lớn, giúp cho con người dễ dàng đạt được mục đích của mình trong mọi thiết kế Hòa nhập cùng xu hướng đó

vi điều khiển đã khẳng định được vị thế vững chắc của mình trong mọi ứng dụng Điển hình trong lĩnh vực vực cơ khí chế tạo, vấn đề tự động hóa sản xuất là yếu tố quan trọng hàng đầu để nâng cao chất lượng sản phẩm Ứng dụng vi điều khiển trong thiết kế hệ thống làm giảm chi phí thiết kế và hạ giá thành sản phẩm đồng thời nâng cao tính ổn định của thiết bị và hệ thống Trên thị trường có rất nhiều họ vi điều khiển: họ 8051 của Intel, 68HC11 của Motorola, Z80 của hãng Eilog, PIC của hãng Microchip, H8 của Hitachi,vv và cuối cùng là AVR của hãng Atmel

1.1 Giới Thiệu Họ Vi Điều Khiển MCS – 51

MCS-51 là họ IC vi điều khiển do hãng Intel sản xuất Các IC tiêu biểu cho họ

là 8031, 8051, 8951 Những đặc điểm chính và nguyên tắc hoạt động của các bộ vi điều khiển này khác nhau không nhiều Khi đã sử dụng thành thạo một loại vi điều khiển thì ta có thể nhanh chóng vận dụng kinh nghiệm để làm quen và làm chủ các ứng dụng của một bộ vi điều khiển khác Vì vậy để có những hiểu biết cụ thể về các

bộ vi điều khiển cũng như để phục vụ cho đề tài tốt nghiệp này ta bắt đầu tìm hiểu một bộ vi điều khiển thông dụng nhất, đó là họ MCS-51 và nếu như họ MCS-51 là

họ điển hình thì 8051 lại chính là đại diện tiêu biểu

Các đặc điểm của 8051 được tóm tắt như sau :

4 KB ROM bên trong

128 Byte RAM nội

4 Port xuất /nhập I/O 8 bit

Giao tiếp nối tiếp

64 KB vùng nhớ mã ngoài

64 KB vùng nhớ dữ liệu ngoại

Trang 11

Xử lý Boolean (hoạt động trên bit đơn)

210 vị trí nhớ có thể định vị bit

4 s cho hoạt động nhân hoặc chia

Bảng 1.1 Mô tả sự khác nhau của các IC trong họ MSC-51

Loại Bộ Nhớ Mã Trên CHIP Bộ Nhớ Dữ Liệu Trên CHIP Số Timer

VCC 40

EA 31

X1 19 X2 18

RST 9

P0.0/AD0 39

P0.1/AD1 38

P0.2/AD2 37

P0.3/AD3 36

P0.4/AD4 35

P0.5/AD5 34

P0.6/AD6 33

P0.7/AD7 32

P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8

P2.0/A8 21P2.1/A9 22P2.2/A10 23P2.3/A11 24P2.4/A12 25P2.5/A13 26P2.6/A14 27P2.7/A15 28P3.0/RXD 10P3.1/TXD 11P3.2/INT0 12P3.3/INT1 13P3.4/T0 14P3.5/T1 15P3.6/WR 16P3.7/RD 17U1

8051

Hình 1.1: Sơ đồ chân của 8051

Trang 12

Chức năng hoạt động của từng chân (pin) được tóm tắt như sau :

Từ chân 1  8 Port 1 (P1.0, , P1.7) dùng làm Port xuất nhập I/O để giao tiếp bên ngoài

Chân 9 (RST) là chân để RESET cho 8051 Bình thường các chân này ở mức thấp Khi ta đưa tín hiệu này lên cao (tối thiểu 2 chu kỳ máy) thì những thanh ghi nội của 8051 được LOAD những giá trị thích hợp để khởi động lại hệ thống Từ chân 10 17 là Port3 (P3.0, P3.1, , P3.7) dùng vào hai mục đích: dùng là Port xuất/nhập I/O hoặc mỗi chân giữ một chức năng cá biệt được tóm tắt sơ bộ như sau: P3.0 (RXD): Nhận dữ liệu từ Port nối tiếp

P3.1 (TXD): Phát dữ liệu từ Port nối tiếp

P3.2 (INT0): Ngắt 0 bên ngoài

P3.3 (INT1): Ngắt 1 từ bên ngoài

P3.4 (T0): Timer/Counter 0 nhập từ bên ngoài

P3.5 (T1): Timer/Counter 1 nhập từ bên ngoài

P3.6 (WR): Tín hiệu Strobe ghi dữ liệu lên bộ nhớ bên ngoài

P3.7 (RD): Tín hiệu Strobe đọc dữ liệu lên bộ nhớ bên ngoài

Các chân 18,19 (XTAL2 và XTAL1) được nối với bộ dao động thạch anh 12 MHz để tạo dao động trên CHIP Hai tụ 30 pF được thêm vào để ổn định dao động

Chân 20 (Vss) nối đất (Vss = 0)

Từ chân 21 - 28 là Port 2 (P2.0, P2.1, , P2.7) dùng vào hai mục đích: làm Port xuất/nhập I/O hoặc dùng làm byte cao của Bus địa chỉ thì nó không còn tác dụng I/O nữa Bởi vì ta muốn dùng EPROM và RAM ngoài nên phải sử dụng Port 2 làm byte cao bus địa chỉ

Chân 29 (PSEN) (program store enable) là tín hiệu điều khiển xuất ra của

8051, nó cho phép chọn bộ nhớ ngoài và được nối chung với chân của OE (Outout Enable) của EPROM ngoài để cho phép đọc các byte của chương trình Các xung tín hiệu PSEN hạ thấp trong suốt thời gian thi hành lệnh Những mã nhị phân của chương trình được đọc từ EPROM đi qua bus dữ liệu và được chốt vào thanh ghi lệnh của 8051 bởi mã lệnh (chú ý việc đọc ở đây là đọc các lệnh - khác với đọc dữ

Trang 13

liệu), khi đó VXL chỉ đọc các bit opcode của lệnh và đưa chúng vào hàng đợi lệnh thông qua các Bus địa chỉ và dữ liệu

Chân 30 (ALE : Adress Latch Enable) là tín hiệu điều khiển xuất ra của 8051,

nó cho phép phân kênh bus địa chỉ và bus dữ liệu của Port 0

Chân 31 (EA : Eternal Acess) được đưa xuống thấp cho phép chọn bộ nhớ mã ngoài đối với 8031

Chân 40 (Vcc) được nối lên nguồn 5V

1.2 Tổng quan về vi điều khiển AVR

1.2.1 Giới thiệu tổng quan họ vi điều khiển AVR

AVR là họ vi diều khiển mới khá mạnh, tích hợp tính năng cao, hơn hẳn họ 89xx của hãng Atmel theo công nghệ RISC (Reduced Instruction Set Computer )

Những đặc điểm nổi trội của AVR đó là về tốc độ xử lý nhanh hơn, nhiều tính năng hơn, giao tiếp đơn giản, khả năng chống nhiễu tốt hơn

Có thể xem AVR ngang hàng với những họ vi điều khiển mới như: Pic, psoc cùng thời Tuy mỗi họ có những tính năng riêng tuỳ thuộc vào ứng dụng thực tế của chúng ta, sử dụng cho phù hợp yêu cầu

Những tính năng mạnh hơn như:

- Kiến trúc (RISC) với hầu hết các lệnh có chiều dài cố định, truy cập bộ nhớ nạp-lưu dữ liệu và 32 thanh ghi đa năng

- Kiến trúc đường ống lệnh kiểu 2 tầng làm tăng tốc độ thực thi lệnh

- Có chứa nhiều bộ phận ngoại vi: giao diện SPI đồng bộ,các đường dẫn vào/ra (I/O) lập trình được, giao tiếp I2C, bộ biến đổi ADC 10 bit, các kênh băm

Trang 14

xung PWM, chế độ sleep, standby, 1 bộ định thời Watchdog, 3 bộ timer/counter 8 bit, 1 bộ timer/counter 16 bit 1 bộ so sánh tương tự (analog), có bộ nhớ EEPROM, giao tiếp UART…

- Hầu hết các lệnh đều thực hiện trong 1 chu kỳ xung nhịp

- Hoạt động với tốc độ đồng hồ đến 12 MHZ , vi điều khiển AVR có khả năng đạt đến tốc độ xử lý 12MPIS (1 triệu lệnh trên giây)

- Bộ nhớ chương trình và dữ liệu tích hợp ngay trên chip AVR có 3 công nghệ bộ nhớ khác nhau: EPROM( luôn lập trình mới được) xoá được kiểu flash, EEPROM xoá được bằng tín hiệu xung điện nhưng nội dung bộ nhớ vẫn giữ nguyên khi mất điện áp nguồn, RAM dung cho các biến thông thường

- Khả năng lập được trình trong hệ thống, do cách thiết kế và công nghệ bộ nhớ có thể lập trình ngay trong khi đang được cấp nguồn trên mạch, ko cần phải nhấc chip ra như các vi điều khiển khác

Vi điều khiển AVR là bộ xử lý RISC với kiến trúc Harvard Thuật ngữ kiến trúc Harvard dùng để chỉ một đặc điểm là đơn vị xử lý trung tâm (CPU) có bộ nhớ chương trình và một bộ nhớ dữ liệu tách biệt

Họ vi điều khiển AVR có những đặc điểm sau:

1 Bộ nhớ flash được tích hợp ngay trên chip và có khả năng lập trình ngay trên hệ thống được sử dụng làm bộ nhớ chương trình Tất cả các bộ xử lý đều có bộ nhớ chương trình loại này Điều đó có nghĩa là ta không cần phải dùng đến các bộ nhớ EPROM hoặc ROM bên ngoài để chứa mã chương trình Hơn nữa, bộ nhớ chương trình có thể nạp chương trình trong khi bộ xử lý vẫn ở nguyên vị trí trên

Trang 15

bảng mạch, không cần phải nhấc ra ngoài để đặt vào bộ nạp chương trình Đặc tính này cho phép cập nhật phần mềm hệ thống nhanh chóng và dễ dàng hơn Đôi khi hình thức này còn được gọi là lập trình tại chỗ (in situ) Bộ nhớ chương trình có thể được lập trình theo hai chế độ: nối tiếp hoặc song song và sẽ được bàn luận chi tiết

ở phần sau

2 Các thanh ghi làm việc đa năng 32 - X - 8 (theo truyền thống của các bộ

xử lý RISC thực sự) Một tập hợp bao gồm rất nhiều thanh ghi có nghĩa là các biến

có thể lưu trữ bên trong CPU chứ không phải lưu trữ các biến trong bộ nhớ, vì việc truy nhập lên bộ nhớ thường tốn nhiều thời gian hơn Như vậy chương trình sẽ chạy nhanh hơn

3 Bộ nhớ dữ liệu ngay trên chip loại EEPROM và RAM có trong hầu hết các thành viên của họ AVR Đơn vị CPU có kiến trúc Harvard, còn các bộ nhớ EPROM và RAM được nhìn nhận như là bộ nhớ dữ liệu và được dùng để cất giữ các hằng và biến

4 Hoạt động với xung giữ nhịp có tần số từ 0 đến 10MHz Hầu hết các lệnh được thực hiện trong 1 chu kỳ đồng hồ và điều này dẫn đến sự cải thiện tính năng với tốc độ xử lý khoảng 10 lần lớn hơn các bộ xử lý thông thường (chẳng hạn, họ 8051) hoạt động ở cùng tần số của đồng hồ giữ nhịp

5 Có mạch đặt lại trạng thái mỗi khi cấp lại điện nguồn cho hệ thống (Power On Reset)

6 Có bộ định thời ngay trên chip và lập trình được với mạch chia tần số (prescalr) tách biệt Bộ định thời này được sử dụng cho các ứng dụng cần có sự phân định thời gian (timing) của các sự kiện

7 Có các nguồn ngắt bên trong và bên ngoài

8 Có bộ định thời watchdog ngay trên chip và lập trình được với bộ dao động độc lập Bộ phận này được sử dụng để khôi phục lại trạng thái hoạt động của

hệ thống trong trường hợp xảy ra lỗi (treo) khi chạy phần mềm, nhưng cũng có thể được sử dụng cho các ứng dụng đáng quan tâm khác, như sẽ được bàn luận đến trong một ứng dụng sẽ được trình bày về sau

Trang 16

9 Có chế độ hoạt động: SLEPP (ngủ) và POWER DOWN (nghỉ hay giảm dòng tiêu thụ khi không cần thiết) Đặc điểm này cho phép tiết kiệm năng lượng khi

bộ xử lý không có công việc cần xử lý, đặc biệt có ý nghĩa đối với các thiết bị cầm tay dùng pin

10 Nhiều chip có mạch dao động đồn hồ RC ngay trên chip Khi sử dụng bộ giao động RC trên chip, số lượng các linh kiện phụ trợ sẽ giảm đi

11 Có một phạm vi rộng các đặc tính của bộ xử lý (từ các bộ xử lý cỡ nhỏ với 8 chân ra đến bộ xử lý 68 chân), nhờ vậy ta có thể lựa chọn một bộ xử lý cho thích hợp với yêu cầu đã đặt ra, cả về chi phí và tính năng kỹ thuật cũng như về các công cụ phát triển

2) Kiến trúc của bộ xử lý AVR

Các bộ xử lý AVR có kiến trúc Harvard, nghĩa là có bộ nhớ dữ liệu và bộ nhớ chương trình tách biệt nhau Hình 1.2 minh họa một bản phác thảo kiến trúc bên trong của bộ điều khiển Bus dữ liệu dùng cho bộ nhớ dữ liệu là một bus 8 bit, cho phép nối hầu hết các bộ phận ngoại vi vi với tệp thanh nghi (register file) Bus dữ liệu dùng cho bộ nhớ chương trình có độ rộng 16 bit và chỉ nối với thanh ghi lệnh Mặc dù hình 1.2 minh họa cho kiến trúc của bộ điều khiển AVR AT90S2313, nhưng cũng có thể áp dụng cho tất cả các bộ xử lý và chỉ khác về quy mô của các

bộ phận ngoại vi bổ sung (hoặc không có) cũng như sự khác nhau về dung lượng của bộ nhớ chương trình và bộ nhớ dữ liệu

Trang 17

Hình 1.2: Kiến trúc của bộ xử lý AVR

Bộ nhớ chương trình là loại bộ nhớ flash Dung lượng chính xác của bộ nhớ này thay đổi khác nhau giữa các bộ xử lý trong cùng họ Bộ xử lý AT90S1200, bộ

xử lý ở mức cơ bản, có 1 kbyte bộ nhớ chương trình, được tổ chức các bit theo 512 -

X - 16 bit, trong khi bộ điều khiển Mega103 có 128 kbyte bộ nhớ được tổ chức theo 64k - X - 16 Một kilô (k) ở đây được tính theo hệ số 1.024 chứ không phải 1.000 như thông thường Bộ nhớ chương trình được truy nhập theo từng chu kỳ đồng hồ,

và một lệnh được nạp vào thanh ghi lệnh Thanh ghi lệnh nối với tệp thành ghi bằng cách lựa chọn xem thanh nghi nào sẽ được ALU sử dụng để thực thi lệnh Lối ra của thanh nghi lệnh được giải mã bằng bộ giải mã lệnh để quyết định chọn tín hiệu điều khiển nào sẽ được kích hoạt để thoàn thành lệnh hiện tại

Bộ nhớ chương trình, bên cạnh các lệnh lưu trữ, cũng như chứa các vectơ ngắt bắt đầu ở địa chỉ $0000 Chương trình hiện tại sẽ bắt đầu ở vị trí bộ nhớ phía bên kia vùng dùng cho các vectơ Số lượng các vectơ cũng khác nhau giữa các bộ xử lý

Trang 18

Bộ xử lý AT90S1200 có 3 vectơ còn AT90S8515 có 13 vectơ Bảng 1.2 minh họa toàn bộ không gian vectơ dùng cho bộ xử lý AT90S8515

Bộ nhớ chương

trình dùng cho

địa chỉ

Bảng 1.2: Bộ nhớ chương trình dùng cho địa chỉ

Bộ nhớ dữ liệu, mặt khác, được phân chia thành những loại khác nhau Hình 1.3 minh họa các bản đồ bộ nhớ khác nhau có trên một vi điều khiển AVR Bộ nhớ

Trang 19

phần của bộ nhớ SRAM trên chip và có thể được truy nhập hoặc như bộ nhớ SRAM với các địa chỉ giữa $20 và $5F hoặc như các thanh ghi I/O với các địa chỉ giữa $00

và $3F Hầu hết các thanh ghi này thường được trao đổi như các thanh nghi I/O chứ không phải như bộ nhớ SRAM

3 Bộ nhớ SRAM bên trong Bộ nhớ này có trên hầu hết các bộ xử lý AVR, chỉ trừ các bộ xử lý loại cơ sở (baseline), chẳng hạn như loại AT90S1200 Dung lượng bộ nhớ SRAM thay đổi từ 128 byte đến 4 kbyte Bộ nhớ SRAM được sử dụng cho ngăn xếp cũng như để lưu trữ các biến Trong thời gian có ngắt và gọi đoạn chương trình (subroutine), giá trị hiện tại của bộ đếm chương trình được lưu trữ trong ngăn xếp Kích thước của ngăn xếp bị giới hạn bởi bộ nhớ SRAM có mặt trên chip Vị trí của ngăn xếp được chỉ thị bởi con trỏ ngăn xếp Con trỏ ngăn xếp

có dụng lượng 1 kbyte trên các vi điều khiển nhỏ hơn, chẳng hạn như loại AT90S2313 và bằng 2 byte trên các bộ xử lý lớn hơn, chẳng hạn như loại AT90S8515 Con trỏ ngăn xếp cần phải được khởi tạo sau khi đặt lại (reset) và trước khi ngăn xếp có thể được sử dụng Các bộ xử lý này không có bộ nhớ SRAM trên chip, chẳng hạn như loại AT90S1200 Ngăn xếp bằng phần cứng được thiết kế

để lưu trữ các địa chỉ trả lại chương trình Một ngăn xếp bằng phần cứng này chỉ có thể lưu trữ đến 3 giá trị trả lại

4 Bộ nhớ SRAM bên ngoài Đặc tính này chỉ có ở các bộ xử lý cỡ lớn trong

họ vi điều khiển AVR Các bộ xử lý này có các cổng để truy nhập bộ nhớ và dữ liệu bên ngoài (chẳng hạn như AT90S8515) có thể sử dụng bất kỳ bộ nhớ SRAM ngoài nào mà người dụng có thể tùy ý quyết định khi thiết kế

5 EEROM Bộ nhớ EEROM có sẵn trên hầu như tất cả các bộ vi điều khiển AVR và được truy nhập theo một bản đồ bộ nhớ tách biệt Địa chỉ bắt đầu của bộ nhớ EEPROM luôn là $0000 Các bộ xử lý khác nhau có từ 64 byte đến 4 kbyte bộ nhớ EEPROM Bộ nhớ EEPROM có thể được đọc và ghi bởi bất kỳ chương trình nào Việc đọc bộ nhớ EEPROM diễn ra nhanh hơn việc ghi vào bộ nhớ EEROM

Bộ nhớ EEPROM có thể ghi vào được khoảng 100.000 lần

Trang 20

Hình 1.3: Bản đồ bộ nhớ của vi điều khiển AVR

6 Hầu hết các lệnh dùng cho bộ điều khiển AVR đều có chiều dài1 từ (2 byte) và vì thế chiếm 1 ô nhớ chương trình Nhiều lệnh được thực thi trong một chu

kỳ đồng hồ đơn lẻ, trongkhi một số khác có thể chiếm 2 hoặc nhiều chu kỳ đồng hồ Việc thực thi trong một chu trình đơn lẻ đạt được là do việc sử dụng một kiểu cấu trúc đường ống (pipeline) hai tầng Đường ống làm việc theo cách tiếp nhận đồng thời một lệnh mới từ bộ nhớ chương trình trong khi lệnh trước đó đang được thực thi trong phần khác của bộ xử lý Việc tìm nạp/giải mã và thực thi các lệnh như vậy gọi là những quá trình được thực hiện bởi bộ xử lý một cách đồng thời

Bây giờ ta thử tìm hiểu các bộ phận khác nhau hình thành bộ xử lý AVR, đó là:

+ Tệp thanh ghi + Bộ truyền nhận UART

+ Khối số học logic + Cấu trúc ngắt

Trang 21

+ Bộ nhớ EEPROM + Bộ watchdog

+ Cổng vào/ra + Bộ biến đổi A/D

+ Bộ nhớ SRAM + Bộ định thời watchdog

Các thanh ghi R0 và R26 đến R31 có các chức năng bổ xung Thanh ghi R0 được sử dụng trong các lệnh nạp bộ nhớ chương trình LPM (Load Program Memory), trong khi các thanh ghi R26 đến R31 được sử dụng làm các thanh ghi con trỏ như được minh họa trên hình 1.4 Các thanh ghi con trỏ này được sử dụng trong nhiều lệnh gián tiếp dụng cho thanh ghi (regiser indirect insruction)

Hình 1.4: Tệp thanh ghi của vi điều khiển AVR

Trang 22

 Khối số học logic

Khối số học logic (ALU) thực hiện các thao tác như thao tác bit; phép tính số học và logic trên nội dụng của các thanh ghi và ghi ngược kết quả vào tệp thanh ghi trên thanh ghi đã được chỉ định Các thao tác này được thực hiện trong một chu kỳ đồng hồ đơn lẻ Mỗi một hao tác ALU đều làm ảnh hưởng đến các cờ trong thanh ghi trạng thái (STATUS), tùy thuộc vào lệnh

 Truy nhập bộ nhớ và việc thực thi lệnh

Bộ xử lý AVR được điều khiển bởi đồng hồ hệ thống, đồng hồ này có thể ở bên ngoài, hoặc nếu có tồn tại và được phép, một đồng hồ RC bên trong có thể được

sử dụng Đồng hồ hệ thống này không qua bất kỳ bộ chia nào và được sử dụng thực tiếp cho tất cả các thao tác truy nhập bên trong bộ xử lý Bộ xử lý có một đường ống hai tầng, và lệnh tìm nạp/giải mã (fech/decode) được thực hiện đồng thời với việc thực thi lệnh Quá trình này được minh họa trên hình 1.5

Hình 1.5: Tìm nạp/giải mã lệnh và việc thực thi lệnh

Cứ mỗi lần lệnh được tìm nạp (fetch), nếu đây là một lệnh liên quan đến ALU, nó có thể được thực thi bởi khối ALU như được minh họa trên hình 1.6 cho một chu trình đơn lẻ

Trang 23

Hình 1.6: Việc thực thi của ALU bao gồm tìm/nạp, thực thi, và ghi ngược vào thanh ghi

Mặt khác, việc truy nhập bộ nhớ SRAM chiếm mất 2 chu kỳ, như được minh họa trên hình 1.7 Nguyên nhân là việc truy nhập bộ nhớ SRAM sử dụng một thanh ghi con trỏ dùng địa chỉ bộ nhớ SRAM Thanh ghi con trỏ này chỉ là một trong các thanh ghi con trỏ (các cặp thanh ghi X, Y, hoặc Z) có trên chip Chu trình đồng hồ thứ nhất được cần đển để truy nhập tệp thanh ghi và để thao tác trên thanh ghi con trỏ (các lệnh truy nhập bộ nhớ SRAM cho phép tăng địa chỉ trước/sau thao tác trên thanh ghi con trỏ) Ở thời điểm kết thúc của chu kỳ đồng hồ thứ nhất, khối ALU thực hiện phép tính này, và sau đó địa chỉ này được sử dụng để truy nhập ô nhớ SRAM và để ghi vào ô nhớ này (hoặc đọc ra từ đó vào thanh ghi đích), như được minh họa trên hình 1.7

Hình 1.7: Các chu trình truy nhập dữ liệu lên thanh ghi SRAM trên chip

 Bộ nhớ vào/ra

Trang 24

Bộ nhớ vào/ra là “xa lộ” đến với tất cả các bộ phận ngoại vi xủa bộ xử lý AVR Nó được thiết kế giống như SRAM và có thể được trao đổi theo hai cách: giống như bộ nhớ SRAM hoặc như các thanh ghi I/O Nếu giống như SRAM, các địa chỉ ở phía bên kia S20 cho đến $5F, còn nếu giống như các thanh ghi I/O, các địa chỉ bắt đầu từ $00 đến $3F

Ta sẽ xem xét các thanh ghi vào/ra như các thanh ghi chứ không phải như bộ nhớ SRAM và sẽ xem xét hầu hết các thanh ghi I/O cũng như chức năng của các thanh ghi đó Tuy nhiên, đối với một chip cụ thể, ta nên tra cứu hoặc đối chiếu với các tài liệu về thống số kỹ thuật (data sheet) cụ thể để có được các thông tin cập nhật và chính xác Ở đây chỉ bàn luận đến các thanh ghi chung nhất và chức năng của chúng

Một điểm quan trọng cần chú ý ở đây là việc truy nhập lên các thanh ghi vào/ra khác nhau Để truy nhập lên các thanh ghi I/O, vi điều khiển AVR giới thiệu các lệnh IN và OUT Các lệnh này có thể truy nhập tất cả các thanh gh I/O từ $00 đến $3F Bên cạnh các lệnh IN và OUT, vi điều khiển AVR cũng hỗ trợ việc định địa chỉ bit lên một số trong các thanh ghi, cụ thể là từ $00 đến $1F Với sự trợ giúp của các lệnh bit SBI và CBI, bất cứ bit nào trên bất kỳ thanh ghi nào (từ $00 đến

$1F) đều có thể được đặt và đặt lại Đây là một phương pháp tiết kiệm thời gian so với việc đọc thanh ghi, thay đổi bit, và việc ghi giá trị ngược trở lại thanh ghi Đối với các thanh ghi còn lại, ta phải sử dụng một phương pháp khác, cần đến thời gian dài hơn khoảng ba lần so với một chu kỳ đồng hồ

 Thanh ghi điều khiển toàn bộ vi điều khiển MCUCR

Các bit trong thanh ghi điều khiển toàn bộ vi điều khiển thường được viết tắt

là MCUCR (MCU Control Register) cho phép điều khiển toàn bộ vi điều khiển Chức năng ghi này bao gồm việc điều khiển để cho phép/cấm truy nhập bộ nhớ SRAM ngoài, chế độ ngủ, và điều khiển độ nhạy cảm (sense) ngắt ngoài

 Thanh ghi trạng thái bộ xử lý MCUSR

Thanh ghi trạng thái MCU (MCU status rigister) cung cấp thông tin về nguồn của tín

hiệu reset Thanh ghi MCUSR có chứa 2 bit, bit này chỉ cho thấy nguồn của tín hiệu reset

Trang 25

 Thanh ghi điều khiển TIMER/COUNTER0 TCCR0

Thanh ghi Timer/Counter1 được sử dụng để điều khiển các thao tác của bộ xử

lý Timer/Conter0 Đây là một bộ định thời đơn giản dùng để đếm tiến từ giá trị đếm

đã được nạp vào Bộ đếm được làm tăng thêm một giá trị mỗi khi có thêm một tín hiệu đồng hồ ở lối vào của nó Tín hiệu đồng hồ có thể được lựa chọn từ một trong

7 nguồn Tùy chọn thứ 8 cho phép bộ Timer/Counter được ngưng hoạt động

 Thanh ghi Timer/Counter0 TCNT0

Đây là thanh ghi Timer/Counter hiện thời Một giá trị đã nạp vào thanh ghi này được sử dụng làm giá trị xuất phát (bắt đầu), và bộ định thời làm tằng giá trị này theo từng tín hiệu xung nhịp của nó nếu bộ Counter/Timer được cho phép qua thanh ghi TCCR0 Sau khi bộ Timer/Counter0 bị tràn, được đặt lại về $00 và tiếp

tục đếm tiến theo từng tín hiệu xung nhịp Timer/Counter0

 TCCR1A: Thanh ghi điều khiển Timer/Counter 1A

TCCR1A là một thanh ghi điều khiển dùng cho bộ Timer/Counter1 Các tín hiệu dùng cho các thanh ghi

 TCCR1B: Thanh ghi điều khiển Timer/Counter1B

 Các thanh ghi so sánh lối ra bộ Timer/Counter1: OCR1AH, OCR1AL

Thanh ghi so sánh lối ra (Output Compare Register) là một thanh ghi đọc/ghi

16 bit Thanh ghi OCR bộ Timer/Counter1 chứa dữ liệu cần được so sánh liên tục với bộ Timer/Counter1 Diễn biến của những lần so sánh (Actions on compare matches) được chỉ định trên thanh ghi điều khiển và trạng thái Timer/Counter

Bởi vì thanh ghi so sánh lối ra OCR1A là một thanh ghi 16 bit, nên một thanh ghi tạm thời TEMP được sử dụng khi ghi vào OCR1A để bảo đảm rằng cả hai byte được cập nhật đồng thời Khi CPU ghi byte cao (HIGH), OCR1AH, dữ liệu được lưu trữ tạm thời trong thanh ghi TEMP Khi khối CPU ghi byte thấp (LOW), OCR1AH cần phải được ghi trước tiên đối với một thao tác ghi trọn vẹn thanh ghi

16 bit Thanh ghi TEMP cũng được sử dụng khi truy nhập TCNT1 và ICR1 Nếu chương trình chính và đoạn chương trình ngắt (routine) cũng thực hiện thao tác truy nhập lên các thanh ghi bằng cách sử dụng TEMP, các ngắt cần phải bị cấm trong

Trang 26

thời gian xảy ra quá trình truy nhập từ chương trình chính hoặc các ngắt truy nhập nếu các ngắt được cho phép lại được cho phép lại

 Các thanh ghi so sánh lối ra Timer/Counter1: OCR1 BH, OCR1 BL

Các thanh ghi so sánh lối ra (output compare) là các thanh ghi đọc/ghi 16 bit Các thanh ghi so sánh lối ra bộ Timer/Counter1 chứa dữ liệu được so sánh liên tục với Timer/Counter1

Diễn biến của những lần so sánh được chỉ định trong thanh ghi điều khiển và trạng thái Timer/Counter1 Một lần so sánh chỉ xảy ra nếu Timer/Counter1 đếm đến giá trị OCR Một phần mềm thực hiện thao tác ghi, đặt TCNT1 và OCR1A hoặc OCR1B thành cùng giá trị, sẽ không tạo ra một lần so sánh

Một lần so sánh sẽ đặt cờ ngắt so sánh trong chu kỳ đồng hồ CPU kế tiếp theo

sự kiện so sánh Bởi vì các thành ghi so sánh lối ra – OCR1A và OCR1B – là các thanh ghi 16 bit, nên một thanh ghi tạm thời TEMP được sử dụng khi OCR1A/B được ghi để đảm bảo là cả hai byte được cập nhật đồng thời Khi CPU ghi byte cao (HIGH), OCR1AH hoặc OCR1BH, dữ liệu được lưu trữ tạm thời vào thanh ghi TEMP Khi khối CPU ghi byte thập, OCR1AL hoặc OCR1BL, thanh ghi TEMP ghi đồng thời OCR1AH hoặc OCR1BH Do đó, byte cao (HIGH) OCR1AH hoặc OCR1BH cần phải được ghi trước tiên đối với một thao tác ghi trọn vẹn thanh ghi

16 bit

 ICR1H, ICR1L: Các thanh ghi Timer/Counter1 Input Capture

Thanh ghi input capture là một thanh ghi 16 bit chỉ để đọc Khi sườn dương hoặc sườn âm (phù hợp với việc thiết lập sườn input capture, ICES1) của tín hiệu ở chân input capture, ICP, được phát hiện, giá trị hiện thời của bộ Timer/Counter1 được truyền đến thanh ghi Input Capture, ICR1 Đồng thời, cờ input capture ICF1, được đặt thành “1” Bởi vì thanh Input Capture ICR1 là một thanh ghi 16 bit, nên một thanh ghi tạm thời TEMP được sử dụng để khi ICR1 được đọc có thểm đảm bảo rằng cả hai byte được đọc đồng thời Khi CPU đọc byte thấp (LOW) ICR1L, dữ liệu được gửi đến khối CPU và dữ liệu của byte cao (HIGH) ICR1H được đặt vào thanh ghi TEMP Khi khối CPU đọc dữ liệu trong byte cao (HIGH) ICR1H, khối CPU

Trang 27

nhận dữ liệu trong thanh ghi TEMP Do đó, byte thấp (LOW) ICR1L cần phải được truy nhập trước tiên đối với một thao tác đọc trọn vẹn thanh ghi 16 bit Thanh ghi TEMP cũng được sử dụng khi truy nhập TCNT1 và OCR1A Nếu chương trình chính và cả đoạn chương trình ngắt thực hiện việc truy nhập đến các thanh ghi bằng cách sử dụng TEMP, thì các ngắt cần phải bị cấm trong thời gian truy nhập từ

chương trình chính hoặc các ngắt truy nhập nếu các ngắt được cho phép lại

 WDTCR: Thanh ghi điều khiển bộ định thời Watchdog

1 Bit 4: WDTOE Watchdog Turn Off Enable Bit này được sử dụng chung với bit WDE Bit này được đặt thành “1”, khi WDE bị xoá thành “0” để cấm mạch watchdog timer Bộ xử lý xoá bit này sau 4 chu kỳ đồng hồ

2 Bit 3: WDE Watchdog Enable Khi đặt thành “1”, mạch watchdog timer được cho phép Để cấm mạch watchdog, bit này bị xoá thành “0” và WDTOE được đặt thành “1” Để cấm mạch watchdog timer, thủ tục sau đây được sử dụng: Trong một thao tác đơn lẻ, đặt WDTOE và WDE thành “1” Xoá WDE thành “0” trong 4 chu kỳ đồng hồ tiếp theo Sau đó, thao tác này sẽ cấm mạch watchdog timer

3 Bit 2-0: WDP2, WDP1, WDP0 Giá trị chia tần số (Watchdog Timer Prescaler)

 Thanh ghi địa chỉ bộ nhớ EEPROM EEAR

Thanh ghi địa chỉ bộ nhớ EEPROM có độ rộng 2 byte dùng cho các bộ xử lý

có bộ nhớ EEPROM lớn hơn 256 byte và có độ rộng một byte đối với các bộ xử lý còn lại

 Thanh ghi dữ liệu bộ nhớ EEPROM EEDR

Thanh ghi dữ liệu bộ nhớ EEPROM được sử dụng để đọc và ghi dữ liệu từ/vào bộ nhớ EEPROM Bộ nhớ EEPROM có độ rộng 8 bit

 Thanh ghi điều khiển EEPROM EECR

Thanh ghi EECR được sử dụng để điều khiển các thao tác đọc và ghi dữ liệu vào bộ nhớ EEPROM

Trang 28

1 Bit 2: EEMWE: EEPROM Master Write Enable Việc đặt EEMWE thành

“1” và sau đó thiết lập EEWE thành “1” sẽ chỉ ghi dữ liệu trên thanh ghi EEDR vào

bộ nhớ EEPROM Nếu như EEMWE được đặt thành “1”, thì phần cứng xoá bit này thành “0” sau 4 chu kỳ xung nhịp

2 Bit 1: EEWE: EEPROM Write Enable Khi đặt thành “1” trong khi EEMWE cũng bằng “1”, dữ liệu EEDR được ghi vào bộ nhớ EEPROM ở địa chỉ được chỉ định bởi thanh ghi địa chỉ bộ nhớ EEPROM Bit EEWE giữ nguyên giá trị

“1” trong chu trình ghi, khoảng thời gian này có thể chiếm đến 2,5ms ở 5V Sau khi khoảng thời gian này trôi qua, bit EEWE bị phần cứng xoá thành “0” Dãy các lệnh dùng để gi dữ liệu vào bộ nhớ EEPROM được viết như sau:

Wait till EEWE is cleared to “0”

Write EEPROM address to EEAR

Write EEPROM data to EEDR

Set EEMWE to “1” và within four clock cycles set EEWE to “1”

Đoạn chương trình này sẽ ghi dữ liệu trong thanh ghi EEDR vào ô nhớ trên bộ nhớ EEPROM có địa chỉ bằng giá trị trong EEAR

3 Bit0: EERE: EEPROM Read Enable (Cho phép đọc EEPROM) Để đọc

dữ liệu EEPROM, nạp EEAR với địa chỉ đúng (phù hợp), đặt EERE thành “1”, và sau đó xoá EERE thành “0” Thao tác này sẽ chuyển dữ liệu vào EEDR Trước khi bắt đầu chu trình đọc, chương trình sẽ kiểm tra (poll) cờ EEWE cho đến khi EEWE bằng “0” để đảm bảo là không một chu trình ghi nào được tiến hành

 Cổng B: PortB data register

Thanh ghi PortB là một thanh ghi đọc/ghi Nó được khởi tạo ở thời điểm reset thành $00 Khi được lập trình thành một lối ra, thì việc ghi vào PortB sẽ cho phép ta thay đổi trạng thái logic ở các chân PortB

 Thanh ghi hướng dữ liệu các cổng DDRS

Thanh ghi này được sử dụng để điều khiển hướng của từng chân của PortB Khi ghi một giá trị “0” (giá trị này cũng là giá trị reset) vào bất kỳ bit nào của thanh

Trang 29

ghi này sẽ làm bit PortB tương ứng thành lối vào, và khi giá trị “1” sẽ làm cho nó trở thành bit lổi ra

 Các chân lối vào trên các cổng

Đây là các cổng chỉ để đọc, và với các cổng này ta có thể đọc trạng thái logic

ở chân vật lý của PortB PinB không phải là thanh ghi, và việc đọc PinB cho phép ta đọc giá trị logic trên các chân của PortB

 Thanh ghi dữ liệu PortD: PortD

Cùng chức năng như thanh ghi PortB

 Thanh ghi hướng dữ liệu PortD: DDRD

Cùng chức năng như thanh ghi DDRB

 Thanh ghi dữ liệu I/O SPI

Đây là thanh ghi đọc/ghi được sử dụng để truyền dữ liệu giữa tệp thanh ghi và thanh ghi dịch SPI Việc ghi vào thanh ghi này khởi tạo quá trình truyền dữ liệu, và việc đọc từ thanh ghi này làm cho bộ đệm nhận của thanh ghi dịch được đọc Việc trình bày chi tiết hơn về thanh ghi này sẽ được đề cập đến trong mục viết về cổng SPI

 Thanh ghi trạng thái SPI

1 Bit7: SPIF Cờ ngắt SPI Khi một cuộc truyền nối tiếp SPI được hoàn thành và bit SPIE trên thanh ghi SPCR được đặt thành “1” Còn các ngắt toàn cục được cho phép, thì cờ SPIF được đặt thành “1” Cờ SPIF bị bộ xử lý hoá thành “0” khi ngắt tương ứng được thực thi Bit SPIF cũng có thể bị xoá bằng cách đọc thanh ghi trạng thái SPI khi cờ SPIF bằng “1” và sau đó truy nhập thanh ghi dữ liệu SPI

 Thanh ghi điều khiển SPI

1 Bit7: SPIE Cho phép ngắt SPI Bit này làm cho một ngắt SPI phải được tạo ra nếu bit SPIF trong thanh ghi SPSR được đặt và các ngắt toàn cục được cho phép

2 Bit6: SPE Cho phép SPI Khi bit này được đặt thành “1” thì SPI được cho phép

Trang 30

3 Bit5: DORD Đặt thứ tự dữ liệu Khi đặt thành “1” LSB của từ dữ liệu được truyền trước tiên Khi bị xoá thành “0”, byte MSB của từ dữ liệu được truyền trước tiên

4 Bit4: MSTR Master/Slave Select Khi đặt thành “1”, cổng SPI trong chế

độ chủ (master mode) và khi xoá thành “0”, nó là một cổng slave Nếu như SS được cấu hình để là lối vào và được đặt xuống mức thấp (LOW), thì bit MSTR sẽ bị xoá thành “0” và SPIF trong SPSR sẽ được đặt Người dùng sẽ phải đặt MSTR thành

“1” một lần nữa để bắt đầu (khởi động ) như là master

5 Bit3: CPOL Clock Polarity Khi đặt thành “1”, thì SCK là cao (HIGH) khi nghỉ (idle: không có công việc xử lý) còn khi bị xoá thành “0”, thì SCK là thấp (LOW) khi không có công việc cần xử lý

6 Bit2: CPHA Clock Phase Quy định pha kích hoạt của xung nhịp

7 Bit1-0: SPR1, SPR0.SPI Clock Rate Select Các bit này quy định tốc độ đồng hồ SCK khi được đặt cấu hình như là master, phù hợp với nội dung của bảng 1.9 Nếu như vi mạch là một slave, các bit này không ảnh hưởng lên tần số SCK

 Thanh ghi dữ liệu vào/ra UART

Các thanh ghi dữ liệu vào/ra UART trên thực tế là hai thanh ghi tách biệt nhau, nhưng dùng chung cùng một địa chỉ vật lý Khi dữ liệu được ghi vào địa chỉ này, nó ghi vào thanh ghi truyền dữ liệu, và khi đọc từ địa chỉ này nó đọc từ thanh ghi nhận dữ liệu

 Thanh ghi trạng thái UART

Thanh ghi trạng thái UART được sử dụng để giám sát trạng thái của UART Các bit có ý nghĩa của thanh ghi trạng thái UART USR là:

 Thanh ghi điều khiển UART

1 Bit 7: RXCIE: RX Complete Interrupt Enable Bit này khi đặt thành “1”

sẽ gây ra ngắt Receive Complete Interrupt khi bit RXC trong USR được đặt thành

“1” và các ngắt toàn cục được cho phép

 Thanh ghi tốc độ Baud Uart

Trang 31

Bộ phận ấn định tốc độ baud dùng cho UART là một bộ phận lưu trữ số chia tần số, quy định mức độ nhanh chậm đối với việc truyền và nhận dữ liệu, tuân theo phương trình sau đây:

BaudRate = Fclk/(16*(UBRR+1))

ở đây Fclk là tần số của đồng hồ hệ thống UBRR là nội dung của thanh ghi tốc độ baud UART

 Thanh ghi trạng thái và điều khiển bộ so sánh analog ACSR

Thanh ghi ACSR được sử dụng để điều khiển hoạt động của bộ so sánh cũng như để giám sát lối ra của bộ so sánh

1 Bit7: ACD – Analog Comparator Disable (cấm bộ so sánh analog) Khi đặt thành “1” thì nguồn nuôi cho bộ so sánh bị ngắt (swiched off)

2 Bit 5: ACO: Analog Comaprator Output Đây là lối ra của bộ so sánh

3 Bit4: ACI: Analog Comparator Interrupt Flag (Cờ ngắt bộ so sánh analog) Bit này được đặt thành “1” khi một sự kiện so sánh đã trigger một trạng thái ngắt bộ

so sánh được quy định bởi ACIS1 và ACIS0 Ngắt bộ so sánh được thực thi nếu bit ACIE được đặt thành “1” và các ngắt toàn cục được cho phép

4 Bit3: ACIE: Analog Comparator Interrupt Enable (cho phép ngắt bộ so sánh analog) Khi thành “1” thì ngắt bộ so sánh analog được cho phép Khi đặt thành “0”, thì ngắt bộ so sánh bị cấm

5 Bit2: ACIC: Analog Comparator Input Capture Enable Khi đặt thành “1”, lối ra bộ so sánh được nối với mạch “input capture front-end” của bộ định thời Timer1

6 Bit1,0: ACIS1, ACIS0: Analog Comparator Interrupt Mode Select Việc kết hợp của các bit này lựa chọn các chế độ ngắt như được minh hoạ trong bảng 1.10

1.2.3 Bộ nhớ EEPROM

Tất cả các bộ điều khiển AVR đều có một bộ nhớ EEPROM trên chip Dung lượng bộ nhớ EEPROM thay đổi từ 64 byte trên bộ điều khiển AT90S1200

Trang 32

Tiny10/12 đến 4 kbyte trên Mega 103 Bộ nhớ EEPROM được truy nhập qua các thanh ghi truy nhập EEPROM, cụ thể là: Thanh ghi địa chỉ EEPROM (EEAR), thanh ghi dữ liệu EEPROM (EEDR), và thanh ghi điều khiển EEPROM (EECR)

Đối với các bộ điều khiển có bộ nhớ EEPROM trên 256 byte, thanh ghi EEAR trên thực tế là 2 thanh ghi: EEARL và EEARH Thanh ghi EEAR (hoặc như

là một thanh ghi đơn hoặc như là một thanh ghi kép) được sử dụng để đặt địa chỉ của bộ nhớ EEPROM mà dữ liệu cần ghi vào đó hoặc cần đọc ra từ đó Thanh ghi EEAR là một thanh ghi đọc/ghi, nghĩa là thanh ghi có thể được đọc để xem cái gì đã được đặt vào địa chỉ EEPROM

* Cổng vào/ra

Tất cả các bộ điều khiển AVR đều có một lượng lớn các cổng vào/ra (I/O), nằm trong khoảng từ 3 bit trên vi điều khiển loại AT90S2323 đến 48 bit trên loại Mega 103 Tất cả các cổng lối ra (được đặt nhờ các bit) của các bộ điều khiển AVR

có thể chịu đựng dòng điện đến 20 mA, nên rất thích hợp đối với việc điều khiển trực tiếp các LED vì không cần đến các mạch đệm bổ xung

Tất cả các cổng vào ra (I/O) đều có 3 địa chỉ vào ra đi kèm với chúng Ba địa chỉ vào/ra được cần đến để đặt cấu hình cho các bit riêng biệt thành lối vào hoặc thành lối ra; địa chỉ khác được cần đến để xuất dữ liệu tới các bit đó (hoặc tất cả) được đặt cấu hình thành lối ra, và địa chỉ thứ ba được cần đến để đọc dữ liệu từ các chân đó (hoặc tất cả ) được cấu hình thành lối vào

Các cổng đó được đánh số là DDR, PORTx, PINx cho một cổng x cho trước Cổng DDRx là thanh ghi hướng dữ liệu Khi ghi một mức “1” vào một bit ở DDR làm cho bit tương ứng thanh bit lối ra trong PORTx Sau đó, để xuất ra một giá trị

“1” trên bit cổng, bit tương ứng có thể được đặt hoặc reset bằng cách sử dụng lệnh CBI hoặc SBI hoặc một lệnh OUT

Sử dụng CBI và sai để ghi vào các cổng

sa1 DDRB, 1; làm cho bit 1 thanh bit lối ra ở PORTB

CB1 PORTB, 1; làm cho bit 1 PORTB thành “0”

Sa1 PORTB, 1; làm cho bit 1 PORTB thành “1”

Trang 33

Một cách khác để thay đổi các giá trị cổng là sử dụng các lệnh IN và OUT:

Sử dụng lệnh OUT để ghi vào các cổng

OUT PORTB, R18; làm cho bit 1 PORTB thành 1

Tương tự, để đọc dữ liệu ở chân lối vào của một cổng, ta sử dụng thanh ghi PINx Thanh ghi PINx được nối trực tiếp với các chân của cổng Chân cổng có thể được cấp tín hiệu để duy trì trạng thái theo cách tạo mức điện áp cao (pull-up) bên trong bằng cách ghi giá trị “1” vào bit cổng ở các địa chỉ PORTx Các điện trở pull-

up này có giá trị trong khoảng từ 30 kΩ và 150 kΩ Giá trị tương ứng của dòng điện pull-up nằm giữa 160 μA và 33 μA

Hình 1.8: Mô tả chi tiết một trong các bit cổng (PORTD4)

Trang 34

Ngược lại, nếu một giá trị “0” được ghi vào bit cổng ở địa chỉ PORTx, thì trạng thái pull-up được loại bỏ và chân lối vào rời bỏ trạng thái thả nổi chuyển sang trạng thái trở kháng cao

; sử dụng lệnh IN để đọc từ các cổng

LDI R18, 0b00000000

OUT DDRB, R18; làm cho tất cả các bit thành bit lối vào ở PORTB

IN R18, PINB; đọc các chân trên cổng PORTB, R18 có kết quả xem hình

3-30

1.2.4 Bộ nhớ SRAM

Bộ nhớ SRAM có trên hầu hết các bộ xử lý có giá thành cao trong họ vi điều khiển AVR Dung lượng của bộ nhớ SRAM thay đổ từ 128 byte đến 4Kb Bộ nhớ SRAM được truy nhập bằng cách sử dụng nhiều lệnh truy nhập dữ liệu gián tiếp hoặc trực tiếp Bộ nhớ SRAM cũng được sử dụng cho ngăn xếp Thời gian truy nhập bộ nhớ SRAM bằng 2 chu kỳ đồng hồ, như được minh hoạ trong hình 3-6

ldi r30, $60 clr r31

st z+, temp

; init the pointer into SRAM in 2313

; 60bex is start of SRAM in 2313

; now Z pointer is pointing to the SRAM

; store a value in register temp to SRAM

; increment the address

Tương tự, để đọc bộ nhớ SRAM, đoạn mã sau đây được sử dụng:

ldi r30, $60 ; khởi tạo con trỏ trong SRAM thành 60hex

clr r31 ; khởi tạo con trỏ trong SRAM thành 60hex

id temp, Z+ ; 60 hex là chỗ start của SRAM in 2313 DOW

con trỏ Z đang trỏ đến SRAM nạp một giá trị trong thanh ghi emp từ SRAM và tăng địa chỉ thêm 1

Trang 35

GIAO TIẾP VỚI SRAM NGOÀI

Trên các bộ điểu khiển AVR cỡ lớn đều có khả năng kết nối với bộ nhở SRAM ở bên ngoài Khả năng này được minh hoạ trên hình 1.9 Để cho phép truy nhập bộ nhớ SRAM ngoài trên PORTA và PORTC của các bộ điều khiển cũng như tín hiệu ALE dùng cho việc phân kênh (demultiplexung) địa chỉ/ dữ liệu, bit SRE( bit 7) trong thanh ghi MCUCR được đặt thành “1” Thời gian truy nhập mặc định đối với quá trình truy nhập lên SRAM ngoài là bằng 3 chu kỳ đồng hồ Thời gian này có thể làm tăng lên 4 chu kỳ đồng hồ bằng cách thiết lập bit SRW (bit 6) trong thanh ghi MCUCR Hình 1.10 minh hoạ sự truy nhập 3 chu kỳ thông thường, còn hình 1.11 minh hoạ chu trình truy nhập mở rộng với một trạng thái chờ bổ sung thêm

Hình 1.9: Kết nối bộ nhớ SRAM ngoài với bộ điều khiển AVR

1.2.5 Bộ định thời

Bộ định thời trong vi điều khiển AVR có chức năng giống như một bộ định thời hoặc một bộ đếm Giống như một bộ định thời, tín hiệu giữ nhịp bên trong hoặc một dẫn xuất của tín hiệu giữ nhịp đó được sử dụng để giữ nhịp bộ định thời, trong khi giống như một bộ đếm, một tín hiệu từ bên ngoài từ chân của một cổng được sử dụng để giữ nhịp bộ định thời / bộ đếm Hình 1.11 minh hoạ bộ dồn kênh

Trang 36

(multiplexer) đóng vai trò lực chọn một trong nhiều nguồn tín hiệu đồng hồ dùng cho bộ timer/counter Bộ chia tần số dùng cho cả hệ thống timer/counter0 và timer/counter1 được minh hoạ trên hình 1.12

Hình 1.10: Chu trình truy nhập SRAM ngoài và bộ điều khiển AVR không có các

Trang 37

Cờ trạng thái tràn (overflow) được tìm thấy trong thanh ghi cờ ngắt bộ timer/counter TIFR Các tín hiệu điều khiển được tìm thấy trong thanh ghi điều khiển bộ time/counter0 TCCR0

Hình 1.12: Một mạch chia tần số đồng hồ dùng cho Timer0 cũng như Timer1

Việc đặt cho phép cấm ngắt đối với Timer/Counter1 được tìm thấy trong thanh ghi che ngắt Timer/Counter TIMSK Khi Timer/Counter1 được giữ nhịp từ bên ngoài, tín hiệu bên ngoài được đồng bộ với tần số của bộ dao động của CPU

Để đảm bảo lấy mẫu chính xác đối với tín hiệu giữ nhịp bên ngoài, thời gian cực tiểu giữa 2 lần xảy ra sự chuyển mức tin hiệu đồng hồ ngoài ít nhất cũng phải bằng một chu kỳ xung đồng hồ bên trong CPU Tín hiệu giữ nhịp bên ngoài được lấy mẫu theo sườn dương (dốc lên ) bằng xung đồng hồ bên trong CPU

Bộ Timer/Counter0 8 bit thể hiện cả độ phân giải cao lẫn dộ chính xác cao và luôn ưu tiên số chia tần số thấp hơn (xem hình 1.13)

Trang 38

Hình 1.13: Sơ đồ khối của Timer/counter0

1.2.6 Bộ truyền nhận UART

Hình 1.14 minh hoạ sơ đồ khối truyền của bộ truyền nhận UART Việc truyền

dữ liệu được khởi tạo bằng cách ghi dữ liệu vào thanh ghi, dữ liệu I/O, ký hiệu là UDR Dữ liệu được truyền từ UDR đến thanh ghi dịch truyền

Hình 1.14: Sơ đồ khối của bộ Timer/Counter1

Trang 39

- Một ký tự mới đã được ghi vào UDR sau khi Bit stop (bit dừng) từ ký tự trước đó đã được dịch chuyển ra Thanh ghi dịch chuyển ra được nạp ngay lập tức

- Một ký tự mới đã được ghi vào UDR trước ghi Bit stop từ ký tự trước đã được dịch đi Thanh ghi dịch được nạp khi Bit stop của ký tự đang được truyền đã được dịch chuyển ra

Nếu thanh ghi dịch bộ truyền 10 (11) bit đang trống thì dữ liệu được truyền từ UDR đến thanh ghi dịch Ở thời điểm này bit UDRE (UART data register empty) trong thanh ghi trạng thái UART, USR được đặt Khí bit này đặt thành 1 bộ UART sẵn sàng nhận ký tự tiếp theo Vào cùng một thời điểm, khi dữ liệu được truyền từ UDR đến thanh ghi dịch bộ truyền 10 (11) Bit, Bit 0 của thanh ghi dịch bị xoá (start bit) và bit 9 hoặc 10 được đặt (stop bit)

Hình 1.15: Sơ đồ khối của bộ truyền trên UART

Trang 40

Nếu như một từ dữ liệu 9 bit được lựa chọn (bit CHR9 trong thanh ghi điều khiển UART, UCR được đặt), bit TXB8 trong thanh ghi UCR được truyền vào bit 9 trong thanh ghi dịch bộ truyền Theo nhịp của đồng hồ tốc độ baud sẽ diễn ra cuộc truyền đến thanh ghi dịch, bit start bị dịch chuyển ra thanh TXD Sau đó kế tiếp là

dữ liệu, LSB trước tiên Khi bit stop đã được dịch chuyển ra, thanh ghi dịch được nạp nếu bất kỹ dữ liệu nào đã được ghi vào thanh ghi UDR trong khoảng thời gian truyền Trong thời gian nạp bit UDRE được đặt thành 1 Nếu như không có dữ liệu mới trong thanh ghi UDR để truyền đi khi bit stop được dịch chuyển ra, cờ UDRE

sẽ giữ nguyên trạng thái được đặt cho đến khi thanh ghi UDR được ghi một lần nữa

Hình 1.16: Sơ đồ khối của bộ nhận UART

Ngày đăng: 24/07/2017, 23:01

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
6. PGS. TS. Trần Văn Địch,(2000), Sổ Tay và Atlas Đồ Gá, nhà xuất bản KHKT 7.Trần Văn Địch, Nguyễn Trọng Bình, Nguyễn Thế Đạt, Trần Xuân Việt (2003), Công nghệ chế tạo máy, NXB Khoa học và Kỹ thuật, Hà Nội Sách, tạp chí
Tiêu đề: Công nghệ chế tạo máy
Tác giả: PGS. TS. Trần Văn Địch,(2000), Sổ Tay và Atlas Đồ Gá, nhà xuất bản KHKT 7.Trần Văn Địch, Nguyễn Trọng Bình, Nguyễn Thế Đạt, Trần Xuân Việt
Nhà XB: nhà xuất bản KHKT 7.Trần Văn Địch
Năm: 2003
10. PGS.TS.Tạ Duy Liêm (2005), Kỹ thuật điều khiển điều chỉnh và lập trình khai thác máy công cụ CNC, Nhà xuất bản khoa học và kỹ thuật Sách, tạp chí
Tiêu đề: Kỹ thuật điều khiển điều chỉnh và lập trình khai thác máy công cụ CNC
Tác giả: PGS.TS.Tạ Duy Liêm
Nhà XB: Nhà xuất bản khoa học và kỹ thuật
Năm: 2005
11. Nguyễn Đắc Lộc (2005), Công nghệ chế tạo máy theo hướng tự động hóa sản xuất, NXB Khoa học và Kỹ thuật, Hà Nội Sách, tạp chí
Tiêu đề: Công nghệ chế tạo máy theo hướng tự động hóa sản xuất
Tác giả: Nguyễn Đắc Lộc
Nhà XB: NXB Khoa học và Kỹ thuật
Năm: 2005
1. HMT Limited - McGraw-Hill, Mechatronics anh Machine Tools Khác
2. Controllers Programming Manual, SYSMAC CPM1/CPM1A/CPM2A/CPM2C /SRM Programmable, OMRON Khác
3. P. H. Joshi, Jigs and Fixtures Design Manual, Second Edition 4. Katsuhiko Ogata, Modern Control Engineering, Third Edition Khác
5. Trịnh Chất – Lê Văn Uyển, (2005), Thiết kế hệ dẫn động cơ khí –tập 1, 2, Nhà xuất bản giáo dục Hà nội Khác

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w