Do vậy các công nghệ mới càng hướng đến khả năng không dây làm cho conngười được giải phóng, tự do và thoải mái hơn.Và thiết bị điêu khiển từ xa làmột trong những công nghệ đóng góp một
Trang 1LỜI CẢM ƠN
Trong thời gian học tập và làm đồ án tốt nghiệp, em đã nhận được rất nhiều
sự hướng dẫn giúp đỡ quý báu của các thầy, cô giáo trong khoa Điện – Điện Tử.Nhất là các thầy, cô giáo trong ngành Điện tử viễn thông, những nhà giáo đã tậntình giảng dạy cho em trong suốt thời gian học tập tại trường
Đặc biệt em xin gửi lời biết ơn sâu sắc đến những người thân là bố mẹnhững người luôn theo sát em học tập và là chỗ tựa để em hoàn thành thời gianhọc tập tại trường, em cũng gửi lời chúc tới thầy,Thạc sĩ.Nguyễn Phương Lâm,người thầy kính mến đã hướng dẫn, động viên, tạo mọi điều kiện thuận lợi cho
em trong suốt quá trình học tập và hướng dẫn trực tiếp em hoàn thành đồ án tốtnghiệp này Em xin bày tỏ lòng biết ơn sâu sắc đến Thầy
Em cũng xin bày tỏ lòng cảm ơn tới Ban giám hiệu Trường Đại học Hànghải Việt Nam, các bạn bè đã nhiệt tình giúp đỡ, tạo mọi điều kiện thuận lợi để
em hoàn thành đúng tiến độ bản đồ án tốt nghiệp này
Trang 2LỜI CAM ĐOAN
Tôi xin cam đoan đây là đề tài nghiên cứu do tôi thực hiện Các số liệu vàkết luận nghiên cứu được trình bày trong đồ án chưa từng được công bố ở cácnghiên cứu khác
Tôi xin hoàn toàn chịu trách nhiệm về lời cam đoan của mình
Hải Phòng, tháng 12 năm 2015
Sinh viênHoàng Văn Tự
Trang 3MỤC LỤC
LỜI CẢM ƠN i
LỜI CAM ĐOAN ii
MỤC LỤC iii
MỘT SỐ TỪ VIẾT TẮT SỬ DỤNG TRONG ĐỒ ÁN v
DANH MỤC CÁC BẢNG vi
DANH MỤC CÁC HÌNH VẼ vi
MỞ ĐẦU 1
CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG ĐIỀU KHIỂN TỪ XA BẰNG ĐIỆN THOẠI .2
1.1 SƠ ĐỒ KHỐI CỦA THIẾT BỊ ĐIỀU KHIỂN TỪ XA BẰNG ĐIỆN THOẠI 2
1.2 TELEPHONE LINE 3
1.3 PHỐI GHÉP 5
1.3.1 IC chuyên dụng MT8870 5
1.3.2 Sơ đồ khối của IC MT8870 6
1.3.3 Phương thức giải mã DTMF 7
1.4 KHỐI MCU 9
1.4.1 MCU 9
1.4.2 Vi điều khiển ATmega16 10
1.4.3 Cấu trúc bên trong ATmega16 11
1.5 KHỐI RELAY VÀ LCD 22
1.5.1 Relay 22
1.5.2 LCD hiển thị 23
CHƯƠNG 2: MÔ HÌNH MẠCH ĐIỀU KHIỂN TỪ XA BẰNG ĐIỆN THOẠI 24
2.1 Sơ đồ khối và sơ đồ nguyên lý tổng thể của mô hình mạch 24
2.2 Nguyên lý của từng khối trong mạch 25
2.2.1 Mạch nguồn 25
2.2.2 Mạch phối ghép 26
Trang 42.2.3 Mạch vi điều khiển MCU 28
2.2.4 Khối hiển thị 30
2.2.5 Mạch relay 31
2.3 Hoạt động thực tế của mạch 32
CHƯƠNG 3: XÂY DỰNG THUẬT TOÁN VÀ LẬP TRÌNH CHO THIẾT BỊ ĐIỀU KHIỂN TỪ XA BẰNG ĐIỆN THOẠI 36
3.1 YÊU CẦU ĐẶT RA 36
3.2 NGÔN NGỮ LẬP TRÌNH C VÀ PHẦN MỀM CODEVISION 36
3.2.1 Cơ bản về ngôn ngữ C 36
3.2.2 Phần mềm Codevision 41
3.3 SƠ ĐỒ THUẬT TOÁN XỬ LÝ 46
KẾT LUẬN 47
DANH MỤC TÀI LIỆU THAM KHẢO 48
NHẬN XÉT TÓM TẮT CỦA GIẢNG VIÊN HƯỚNG DẪN 49
ĐÁNH GIÁ CỦA NGƯỜI PHẢN BIỆN 50
Trang 5MỘT SỐ TỪ VIẾT TẮT SỬ DỤNG TRONG ĐỒ ÁN
DTMF Dual Tone Multi Frequency: Âm kép đa tần số
MCU Micro-controller Unit: Bộ vi điều khiển
LCD
LED
Liquid Crystal Display: Màn hình tinh thể lỏngLight Emitting Diode: Đi ốt phát quang
DC Direct current: Dòng điện một chiều
AC Alternating current: Dòng điện xoay chiều
Vpp Voltage peak to peak: Điện áp đỉnh đỉnh
Vrms Voltage root mean square: Điện áp trung bình bình phương
CMOS Complementary Metal-Oxide-Semiconductor: công nghệ dùng để chế
Trang 6DANH MỤC CÁC BẢNG
3.1 Bảng 3.1: Các kiểu dữ liệu thường dùng khi lập trình C cho vi
điều khiển
41
Trang 71.10 Relay 5V – 220V / 10A và sơ đồ đấu nối 22
Trang 83.4 Cửa sổ định dạng chuẩn giao tiếp I2C 44
3.6 Lưu đồ thuật toán của chương trình 46
Trang 9MỞ ĐẦU
Ngày nay với với sự phát triển nhanh chóng của khoa học kỹ thuật,nhiều công nghệ mới ra đời với mục đích làm cho mọi việc trở nên đơn giản,tiện lợi nhằm đáp ứng nhu cầu ngày càng cao của con người trong mọi lĩnh vực
Do vậy các công nghệ mới càng hướng đến khả năng không dây làm cho conngười được giải phóng, tự do và thoải mái hơn.Và thiết bị điêu khiển từ xa làmột trong những công nghệ đóng góp một phần vào sự hiện đại này của nhânloại
“Chúng ta hiện nay đang sống trong một xã hội đang phát triển về mọimặt: kinh tế, đời sống, văn hóa, xã hội… chính vì vậy, chúng ta muốn thích nghiđược thì phải không ngừng học tập và nghiên cứu Sinh viên chúng em cũng vậyphải luôn học tập và hoàn thiện mình hơn Khi kinh tế phát triển thì nhu cầucuộc sống cũng tăng theo Nhận thấy được điều đó, nên ngành điện tử khôngngừng phát triển để phục vụ con người được tốt hơn, phát triển hơn là ngànhđiều khiển tự động
Chạy theo nhu cầu cuộc sống ngày càng hiện đại, nên em đã tham khảonhiều tài liệu và cuối cùng em đã chọn đề tài: “Thiết kế mạch điều khiển từ xabằng điện thoại 7 ngõ ra có phản hồi âm thanh” Nhằm giúp ích cho, mọi ngườitrong việc điều khiển các thiết bị trong nhà nói riêng, cũng như các thiết bị trongcông nghiệp nói chung mà con người không thể làm việc trực tiếp được
Mục đích của mạch điều khiển từ xa nay là điều khiển 7 ngõ ra một cáchđộc lập với nhau mà không cần đi đến tận nơi để bật công tắc Mạch có thể điềukhiển từ xa bằng tất cả các loại điện thoại tiện lợi cho người điều khiển ở có kếtnối thông tin liên lạc Một cách chính xác, hiệu quả mà không cần mất thời gian
và sức lực
Yêu cầu của mạch điều khiển này là chạy chính xác, ổn định, nhỏ gọn, dễlắp đắt sửa chữa, dễ sử dụng cho tất cả mọi người.”(http://doc.edu.vn/tai-lieu/de-tai-he-thong-bao-trom-bao-chay-qua-duong-day-dien-thoai-2859/)
Trang 10CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG ĐIỀU KHIỂN TỪ XA BẰNG
ĐIỆN THOẠI
Hiện nay trên thị trường có nhiều thiết bị điều khiển từ xa khác nhau, đặcbiệt là thiết bị điều khiển từ xa bằng điện thoại Điện thoại không chỉ có chứcnăng nghe, gọi, nhắn tin… Mà nó còn có khả năng như một thiết bị điều khiển
từ xa rất tiện dụng mà hầu như ai ai cũng luôn mang theo bên mình Khi chúng
ta đi đâu đó xa nhà, trang trại, công sở… Vô tình quên tắt bật hoặc muốn tắt bậtcác thiết bị khi chúng ta không ở đó thì thiết bị điều khiển từ xa bằng điện thoại
có thể thay thế chúng ta làm công việc này Từ đây, chúng ta có thể thấy mộtđiều, thiết bị điều khiển từ xa bằng điện thoại giúp chúng ta tiện lợi hơn rấtnhiều trong cuộc sống hàng ngày Để tìm hiểu về công nghệ này em xin trìnhbày quá trình mô hình hóa thiết bị điều khiển từ xa bằng điện thoại và làm rõhơn hoạt động của nó sau đây
1.1 SƠ ĐỒ KHỐI CỦA THIẾT BỊ ĐIỀU KHIỂN TỪ XA BẰNG ĐIỆN THOẠI
Sơ đồ khối của thiết bị điều khiển từ xa bằng điện thoại:
Hình 1.1: Sơ đồ khối hệ thống điều khiển từ xa bằng điện thoại
Mô tả chức năng của các khối:
Trang 11b Khối phối ghép:
Tín hiệu âm đa tần DTMF được mã hóa thành mã nhị phân “0” và “1” ra 4bit BCD là Q4Q3Q2Q1 Bộ tín hiệu này được chuyển tới khối MCU tiếp tục sửlý
c Khối MCU:
Nhận bộ tín hiệu số Q3Q2Q1Q0 từ khối phối ghép đưa tới tại đây các tínhiệu số tương ứng vơi các nút ấn trên bàn phím điện thoại này sẽ được lập trìnhđiều khiển gán cho các thiết bị ngoại vi tương ứng
d Khối relay và LCD:
Các relay đóng ngắt điện áp cao
Màn hình LCD hiển thị trạng hoạt động của các thiết bị được điều khiển
1.2 TELEPHONE LINE
Telephone line là đường truyền tín hiệu điện thoại, đường truyền này hìnhthành do quá trình hoạt động của điện thoại với tổng đài
a Định nghĩa điện thoại và tổng đài
Điện thoại là thiết bị viễn thông dùng để trao đổi thông tin, thông dụngnhất là truyền giọng nói - tức là "thoại" (nói), từ xa giữa hai hay nhiềungười Điện thoại biến tiếng nói thành tín hiệu điện và truyền trong mạng điệnthoại phức tạp thông qua kết nối để đến người sử dụng khác
Tổng đài là hệ thống chuyển mạch có khả năng kết nối nhiều cuộc liên lạcgiữa các thuê bao với nhau
b Phương thức thực hiện một cuộc gọi
Thuê bao gọi thực hiện nhấn phím số bằng Tone (Tone - Dialing): Máyđiện thoại phát ra cùng lúc hai tín hiệu với tần số dao động khác nhau tương ứngvới số muốn nhấn (DTMF: Dual Tone Multi Frequence) Mã DTMF là khi bất
kỳ phím "0","1", "2","3","4","5","6","7","8","9","*", "#",.v.v được nhấn mã đặcbiệt được truyền đi Mã này là bao gồm hai tần số trong số đó là một tần số cao
Trang 12hơn và thứ hai là tần số thấp hơn Bảng dưới đây cho thấy sự kết hợp của tần sốcho các phím:
Bảng 1.1: Phân loại tần số tín hiệu Tone
Ví dụ: Theo bảng trên phím "1" là sự kết hợp của tần số thấp hơn 697Hz
và tần số cao 1209Hz, phím "5" là sự kết hợp của tần số thấp hơn 770Hz và tần
số cao hơn 1336Hz, phím "9" là sự kết hợp của tần số thấp hơn 852Hz và tần sốcao hơn 1447Hz Vì vậy, đây là tất cả về mã DTMF
“Tổng đài nhận được các số liệu của thuê bao gọi gửi tới, sẽ xem xét:Nếu các đường dây nối thông thoại đều bị bận, thuê bao bị gọi bận thìtổng đài sẽ cấp tín hiệu báo bận (Number Buzy)
Nếu thuê bao được gọi rảnh, tổng đài sẽ cấp tín hiệu chuông cho thuê baovới điện áp 90Vrms(AC) với tần số 25Hz có chu kì 3s có và 4s không Đồngthời cấp âm hiệu hồi chuông (Ring Back Tone) cho thuê bao gọi, âm hiệu này làtín hiệu sine với tần số 425 ± 25Hz cùng chu kỳ nhịp với tín hiệu chuông gửicho thuê bao được gọi Khi thuê bao được gọi nhấc máy, tổng đài nhận biếttrạng thái này thì tổng đài ngưng cấp tín hiệu chuông để không làm hỏng mạchthoại Đồng thời tiến hành cắt âm hiệu (Ring Back Tone) cho thuê bao gọi vàtiến hành kết nối thông thoại cho 2 thuê bao Trong quá trình thông thoại khithuê bao gọi nhấn các phím trên bàn phím, âm bàn phím DTMF sẽ phát ra vàtruyền tới thuê bao bị gọi Tín hiệu trên đường dây đến máy điện thoại tươngứng với tín hiệu thoại cộng với giá trị khoảng 300mVpp Tín hiệu ra khỏi máy
Trang 13điện thoại chịu sự suy hao trên đường dây với mất mát công suất trong khoảng
10 ÷ 25dB Giả sử thêu bao là 20dB, suy ra tín hiệu ra khỏi máy điện thoại cógiá trị khoảng 3Vpp Tín hiệu thoại trên đường dây là tín hiệu điện mang cácthông tin có nguồn gốc từ âm thanh trong quá trình trao đổi giữa hai thuê bao.Trong đó âm thanh được tạo ra bởi các dao động cơ học, nó truyền trong môitrường dẫn âm Khi truyền đi trong mạng điện thoại thì tín hiệu thường bị méodạng do những lý do: Nhiễu, suy hao tín hiệu trên đường dây do bức xạ sóngtrên đường dây do bức xạ sóng trên đường dây với các tần số khác nhau Đểđảm bảo tín hiệu điện thoại nghe rõ và trung thực, ngày nay trên mạng điênthoại người ta sử dụng tín hiệu thoại có tần số từ 300 ÷ 3400Hz
Tổng đài giải tỏa một số thiết biết bị không cần thiết để tiếp tục phục vụcho các cuộc đàm thoại khác Khi hai thuê bao đang đàm thoại mà có một thuêbao gác máy, tổng đài nhận biết trạng thái gác máy này, cắt thông thoại cho cảhai bên, cấp tín hiệu bận (Busy Tone) cho thuê bao còn lại, giải tỏa link để phục
vụ cho các đàm thoại khác Khi thuê bao còn lại gác máy, tổng đài xác nhậntrạng thái gác máy, cắt âm hiệu báo bận, kết thúc chương trình phục vụ thuêbao.”(http://doantotnghiep.vn/do-an-tot-nghiep-dien-dien-tu/he-thong-bao-dong-va-dieu-khien-thiet-bi-qua-line-dien-thoai.html668)
Trang 14IC MT8870 được sử dụng vào nhiều ứng dụng khác nhau, nhưng thườngxuất hiện ở trong các mạch điều khiển từ xa, mạch thu cho tổng đài, mạch tínhcước điện thoại.v.v.
Dưới đây là kiểu dáng và sơ đồ chân của một linh kiện IC MT8870 hoànchỉnh:
Hình 1.2: Kiểu dáng và sơ đồ chân của IC MT8870
1.3.2 Sơ đồ khối của IC MT8870
Hình 1.3: Sơ đồ khối IC MT8870
Trang 15Lúc này đầu ra GT kích hoạt và đẩy Vc lên tới Vdd GT tiếp tục đẩy lêncao cho tới khi TST lên mức cao trở lại Cuối cùng sau một thời gian Delayngắn cho phép việc chốt Data được thực hiện xong thì cờ của mạch steering lênHIGH báo hiệu rằng cặp Tone thu được đã được lưu vào thanh ghi.
Mạch chốt ngõ ra được điều khiển bởi chân ngõ vào 3 trạng thái TOE, khiTOE lên mức 1 thì cho phép xuất Data 4 bit ra Bus
1.3.3 Phương thức giải mã DTMF
Khi bất kỳ mã DTMF đã được nhận vào điện thoại di động hoặc máy điệnthoại bàn của nó có thể được nghe qua loa Vì vậy, để giải mã này mã DTMF
Trang 16đầu ra loa nó tự có thể được sử dụng Đầu ra của loa được kết nối với MT8870
mà là bộ giải mã DTMF (MT8870 Datasheet) Nó được sử dụng rộng rãi để giải
mã mã DTMF Nó cung cấp cho 4 bit đầu ra kỹ thuật số Q4Q3Q2Q1 và theo cácphím nhận được
Bảng dưới đây cho thấy sự mã hóa kỹ thuật số tương đương cho mỗi phím
số trên bàn phím điện thoại sử dụng mã BCD 4 bit Bộ mã này tạo ra 16 tổ hợp
Trang 17Khác nhau cơ bản giữa các MCU là các ngoại vi Các bạn cứ nghĩ đơn giản việchiện thực trên MCU cũng chỉ là read, write các thanh ghi và vùng nhớ Chỉ cóđiều với MCU này thì chúng ta phải set giá trị khác, ở một địa chỉ khác so vớiMCU khác để điều khiển những gì mà ta muốn MCU làm.
b Công cụ:
Có 2 công cụ chúng ta cần quan tâm:
Trình biên dịch: tốt nhất là dùng IDE mà nhà sản xuất MCU cung cấptrong examples
Trình nạp và mạch nạp cho MCU: mỗi MCU sẽ có chương trình và mạchphù hợp
c Các ngoại vi:
Tuy các ứng dụng khác nhau mà ta cần sử dụng các ngoại vi khác nhau.Ngoại vi các MCU cơ bản là làm việc giống nhau, và là chuẩn giao tiếp cơ bản.Các bạn chỉ cần biết ngoại vi đó hoạt động ra sao là đủ, không cần thiết phải biết
nó bao gồm thanh ghi gì, cài đặt ra sao vì mỗi MCU có cách set khác nhau.Hiện nay, thì mỗi MCU đều có một bộ thư viện C giúp chúng ta có thể làm việcnhanh với các ngoại vi này mà không cần biết thanh ghi đó là gì, chúng ta chỉbiết cách gọi hàm với các thông số tương ứng mà chúng ta muốn ngoại vi hoạtđộng như thế nào
Tất cả các ngoại vi đề có một trình tự để sử dụng như sau:
Trang 18Cài đặt các thông số: set clock cho bus, cấu hình (ví dụ như USART thìset baud rate, parity…)
Sau đó là tiến hành giao tiếp dữ liệu với ngoại vi này
Và tất cả cái này đều có examples, thư viện mà nhà cung cấp MCU đưacho Chúng ta chỉ việc tham khảo và copy, paste, modified những gì ta muốn.”(http://trueconf.com.vn/cong-nghe/de-lam-project-nhanh-tren-mcu-moi-hoan-toan-mcu-la-gi-1790.html)
1.4.2 Vi điều khiển ATmega16
ATmega16 là bộ vi điều khiển CMOS 8 bit tiêu thụ điện năng thấp dựatrên kiến trúc RISC (Reduced Intruction Set Computer) Vào ra Analog – digital
và ngược lại “Với công nghệ này cho phép các lệnh thực thi chỉ trong một chu
kì xung nhịp, vì thế tốc độ xử lý dữ liệu có thể đạt đến 1 triệu lệnh trên giây ởtần số 1 Mhz Vi điều hiển này cho phép người thiết kế có thể tối ưu hoá chế độ
độ tiêu thụ năng lượng mà vẫn đảm bảo tốc độ xử lí
ATmega16 có tập lệnh phong phú về số lượng với 32 thanh ghi làm việc
đa năng Toàn bộ 32 thanh ghi đều được nối trực tiếp với ALU (ArithmeticLogic Unit), cho phép truy cập 2 thanh ghi độc lập bằng một chu kì xung nhịp.Kiến trúc đạt được có tốc độ xử lý nhanh gấp 10 lần vi điều khiển dạng CISC(Complex Intruction Set omputer) thông thường
Khi sử dụng vi điều khiển Atmega16, có rất nhiều phần mềm được dùng
để lập trình bằng nhiều ngôn ngữ khác nhau đó là: Trình dịch Assembly nhưAVR studio của Atmel, Trình dịch C như win AVR, CodeVisionAVR C,ICCAVR C - CMPPILER của GNU… Trình dịch C đã được nhiều người dụng
và đánh giá tương đối mạnh, dễ tiếp cận đối với những người bắt đầu tìm hiểu
Trang 19AVR, đó là trình dịch CodeVisionAVR.”(http://bkit4u.com/?topic=page&id=8)
Hình 1.4: Kiểu dáng và sơ đồ chân ATmega16
Chapter 1 1.4.3 Cấu trúc bên trong ATmega16
Sơ đồ khối cấu trúc ATmega16 được trình bày theo sơ đồ dưới đây:
Trang 20Hình 1.5: Sơ đồ khối cấu trúc AVR ATmega16.
Trang 211.4.3.1 CPU
a ALU – Arithmetic Logic Unit
Thực thi cao AVR ALU hoạt động trong sự kết nối trực tiếp với tất cả 32thanh ghi hỗ trợ làm việc Hoạt động trong ALU được chia thành 3 chức năngchính: số học, logic và chức năng bit
b Thanh ghi trạng thái (Status Registers)
Chứa thông tin về kết quả của các tính toán được thực thi gần nhất Chú ýStatus Register được thay đổi sau tất cả các phép tính toán trong ALU
Bit 7 6 5 4 3 2 1 0
Reade/wite: R/W R/W R/W R/W R/W R/W R/W R/W
Khởi tạo: 0 0 0 0 0 0 0 0
Bit 7-I: cho phép ngắt toàn cục Không cho phép người sử dụng tự ý xóa.Chỉ bị xóa khi có ngắt mới xuất hiện và được chỉ dẫn bởi RETI cho những ngắt
kế tiếp Có thể được đặt hoặc được xóa bởi SEI và CLI
Bit 6-T: bit lưu trữ Có thể chép từ BST sang BLD và ngược lại
Bit 5-H: Cờ nhớ nửa H sử dụng để nhớ nửa hữu ích trong phép tính sốBCD
+ Bit 3-D: 2 cờ tràn
+ Bit 2-N: cờ phủ định
+ Bit 1-Z: cờ zero
+ Bit 0-C: cờ nhớ
c Thanh ghi mục đích chung
Thanh ghi file được tối ưu hóa cho AVR tăng cường lập tập tin Trongmệnh lệnh để đạt được sự thực hiện đòi hỏi và tính tối ưu hóa những sơ đồ vào
ra đây được hỗ trợ:
Trang 22Một toán hạng ngõ ra 8 bit và một kết quả ngõ vào 8 bit.
Hai toán hạng ngõ ra 8 bit và một kết quả ngõ vào 8 bit
Hai toán hạng ngõ ra 8 bit và một kết quả ngõ vào 16 bit
Một toán hạng ngõ ra 16 bit và một kết quả ngõ vào 16 bit
Hình 1.6: Các thanh ghi hỗ trợ làm việc AVR CPU
d Con trỏ ngăn xếp (Stack pointer)
Bit 15 14 13 12 11 10 98
Trang 230 0 0 0 0 0 0 0
Thanh ghi Stack Poiter luôn trỏ đến đỉnh của ngăn xếp
“Stack Poiter trỏ đến ngăn xếp dữ liệu SRAM lưu trữ những process con
và những ngắt cục bộ Khoảng trống trong SRAM phải được định nghĩa bởiprocess trước bất kỳ process con nào gọi nó thực thi hoặc ngắt nào được hoạtđộng Stack Poiter giảm đi 1 khi dữ liệu được đẩy lên trên Stack với lệnh PUSH,
và giảm đi 2 khi trả về địa chỉ được đẩy lên trên Stack với sự gọi process conhoặc ngắt được gọi Stack Poiter tăng lên 1 khi dữ liệu được đưa ra khỏi Stackvới lệnh POP, và tăng lên 2 khi dữ liệu được đưa ra khỏi Stack trả về từ processcon RET hoặc trả về từ ngắt RETI
Stack Poiter AVR được bổ xung như 2 thanh ghi 8 bit trong không gian I/
O Số lượng các bít được sử dụng là sự thi hành phụ thuộc Chú ý không gian dữliệu trong bổ xung của kiến trúc AVR nhỏ nên chỉ sử dụng thanh ghi SPL, trongtrường hợp này không có thanh ghi SPH
e Reset và xử lý ngắt
AVR cung cấp vài nguồn ngắt khác nhau Các ngắt này có vector Resetriêng biệt với vector process Tất cả các ngắt ghi ở mức logic 1 cùng với ngăttoàn cục Trong thanh ghi trạng thái các bit cho phép ngắt phụ thuộc giá trịCounter process Các ngắt có thể tự động bị cấm khi khởi động khóa bit BLB02hoặc BLB12 Khi một ngắt xuất hiện, ngắt toàn cục cho phép I-bit xóa và tất cảcác ngắt còn lại bị cấm Sử dụng phần mềm có thể ghi logic 1 cho I-bit cho phépngắt Tất cả các ngắt được cho phép có thể ngắt thường trình I-bit tự động đượclập khi một lệnh ngắt trở lại thực thi từ RETI
Có hai kiểu ngắt cơ bản:
Kiểu 1: hoạt động bởi 1 sự kiện lập bởi cờ ngắt Với mỗi ngắt Counterprocess là một vector tới vector ngắt hiện tại trong thứ tự thực thi, phần cứng sẽ
Trang 24xóa cờ ngắt Các cờ ngắt có thể bị xóa bởi ghi logic 1 tới vị trí bit cờ để xóa.Nếu điều kiện một ngắt xuất hiện trong khi cho phép ngắt bit bị xóa thì cờ ngắt
sẽ được lập và nhớ đến khi ngắt cho phép hoặc cờ ngắt bị xóa bởi phần mềm.Tương tự, điều kiện để các ngắt xuất hiện trong khi bit GIE(Global InterruptEnable) bị xóa thì cờ nhớ sẽ lập và nhớ đến khi bit GIE được lập
Kiểu 2: các ngắt sẽ được hoạt động nếu điều kiện để ngắt có mặt Nhữngngắt này không cần có cờ ngắt Nếu điều kiện ngắt không xuất hiện trước khingắt cho phép ngắt sẽ không được hoạt động
Khi AVR thoát khỏi 1 ngắt, nó sẽ luôn trả về process chính và thực thihơn một lệnh trước khi tạm dừng ngắt Chú ý thanh ghi trạng thái không tự độnglưu trữ khi vào một thủ tục ngắt và cũng không tự phục hồi khi thoát ra khỏi thủtục Khi sử dụng lệnh CLI để cấm các ngắt thì ngắt sẽ không trực tiếp bị cấm.Không có ngắt được thực thi sau lệnh CLI ngay cả khi xuất hiện đồng thời vớilệnh.”(http://timtailieu.vn/tai-lieu/do-an-bao-trom-bao-chay-qua-duong-day-dien-thoai-341/)
g Ngắt đáp ứng lại thời gian
“Ngắt thực thi đáp ứng cho tất cả các ngắt cho phép của AVR là 4 chu kỳxung tối thiểu Sau 4 chu kỳ xung vector process thêm địa chỉ cho ngắt đanghoạt động trong process con thực thi Trong khoảng thời gian này bộ nhớprocess sẽ đẩy lên trên Stack Vector ngắt nhảy đến ngắt trong process con vàlệnh ngắt này sẽ đưa ra 3 chu kỳ xung Nếu một ngắt xuất hiện trong khi thực thinhiều chu trình lệnh,thì lệnh sẽ được trước khi ngắt được thực hiện Nếu mộtngắt xuất hiện khi MCU ở chế độ ngủ, ngắt thực thi yêu cầu thời gian tăng bởi 4chu kỳ xung
Trở về từ ngắt process con đưa rad 4 chu kỳ xung bộ đếm chương trình sẽđược đưa ra từ Stack, Stack Poiter tăng thêm 2 và I-bit trong SREG được lập
Trang 251.4.3.2 Bộ nhớ
Phần này mô tả các bộ nhớ khác nhau trong Atmega16 Kiến trúc AVR có
2 bộ nhớ chính: bộ nhớ dữ liệu và bộ nhớ process Bổ xung thêm vào đặc tínhAVR một bộ nhớ EEPROM lưu trữ dữ liệu
a Hệ thống bộ nhớ lập trình lại Flash
Atmega16 chứa 16 K bytes On-Chip trong hệ thống bộ nhớ lập trình lạiFlash để lưu trữ process Cho AVR 16 hoặc 32 bit thì bộ nhớ flash là 8K*16 Bộnhớ Flash có khả năng ghi/ xóa 1000 lần cho mỗi vòng Atmega16 có Counter
13 bit cùng với 8K địa chỉ process
Trang 26Hình 1.8: Sơ đồ bộ nhớ dữ liệu.
Hình 1.9: Những chu kỳ truy xuất SRAM
c Bộ nhớ dữ liệu EEPROM
Trang 27Atmega16 chứa 512 byte bộ nhớ dữ liệu EEPROM Nó được tổ chức nhưmột không gian dữ liệu riêng biệt, mỗi byte đơn có thể đọc và ghi EEPRAM cókhả năng thực hiện 100.000 chu kỳ ghi/xóa Truy xuất giữa EEPRAM và CPUđược mô tả theo đặc tả thanh ghi địa chỉ, thanh ghi dữ liệu và thanh ghi điềukhiển EEPROM.
Thanh ghi địa chỉ EEPROM: EEARH và EEARL
Bit 15 14 13 12 11 10 98
EEAR
7
EEAR6
EEAR5
EEAR4
EEAR3
EEAR2
EEAR1
EEAR0
Bit 7 6 5 4 3 2 10
Bit 15…9 – Res: các bit đã đăng ký trước
Các bit này sẽ luôn được đọc là 0
Bit 8…0 – EER8…0: địa chỉ EEPROM
Thanh ghi địa chỉ EEPROM - EEARH và EEARL mô tả địa chỉEEPROM trong 512 byte không gian EEPROM Các byte dữ liệu EEPROMđược thêm vào tuyến tính giữa 0 và 511 Giá trị đầu của EEAR là không xácđịnh Một giá trị riêng phải được ghi trước
1.4.3.3 Thanh ghi dữ liệu EEPROM: EEDR
Bit 7 6 5 4 3 2 10
Trang 28MSB LSB
Read/write
R/W R/W R/W R/W R/W R/W R/WR/W
Khởi tạo
0 0 0 0 0 0 00
Bit 7…0 – EEDR7…0 : EEPROM dữ liệu
EEPROM ghi hoạt động, thanh ghi EEDR chứa dữ liệu ghi tới EEPROM trongđịa chỉ đưa bởi thanh ghi EEAR Cho hoạt động đọc EEPROM, EEDR chứa dữliệu đọc ngoài từ EEPROM tại địa chỉ đưa bởi EEAR
1.4.3.4 Thanh ghi điều khiển EEPROM: EECR
Bit 7 6 5 4 3 2 10
Read/write
R/W R/W R/W R/W R/W R/W R/WR/W
Khởi tạo
0 0 0 0 0 0 00
Bit 7…4 – Res: các bit đăng ký trước
Các bit này đã được đăng ký trước trong Atmega16 và luôn được đọc là 0
Bit 3 – EERIE: EEPROM sẵn sàng cho phép ngắt
Trang 29Ghi EERIE lên 1 cho phép EEPROM sẵn sàng ngắt nếu I-bit trong SREGđược lập Ghi EERIE về 0 sẽ cấm ngắt Khi EEWE bị xóa EEPROM sẵn sàngphát ra ngắt là một hằng số ngắt.
Bit 2 – EEMWE: EEPROM chỉ cho phép ghi
Khi Bit EEMWE được lập, lập EEWE với 4 chu kỳ xung sẽ ghi dữ liệutới EEPROM tại địa chỉ được chọn Nếu EEMWE = 0, lập EEWE sẽ không cóảnh hưởng Khi EEMWE được ghi lên 1 bởi phần mềm, phần cứng xóa bit về 0sau 4 chu kỳ xung
Bit 1 – EEWE: EEPROM cho phép ghi
EEPROM cho phép ghi tín hiệu EEWE được ghi tín hiệu tra cứu tớiEEPROM Khi địa chỉ và dữ liệu đưa lên chính xác, bit EEWE phải ghi lên 1.Bit EEMWE phải ghi lên 1 trước khi logic 1 được ghi cho EEWE Các bước cầnlàm khi ghi EEPROM (bước 3 và 4 có thể bỏ qua)
+ Đợi đến khi EEWE trở về 0
+ Đợi đến khi SPMEN trong SPMCR trở về 0
+ Ghi địa chỉ mới EEPROM tới EEAR (tùy chọn)
+ Ghi dữ liệu mới EEPROM tới EEAR (tùy chọn)
+ Ghi logic 1 tới bit EEMWE trong khi ghi EEWE trong EECR về 0 + Trong 4 chu kỳ xung đồng hồ sau khi lập EEMWE ghi logic 1 choEEWE
Bit 0 – EERE: EEPROM cho phép đọc
Tín hiệu cho phép đọc EERE đọc tín hiệu tra cứu tới EEPROM Khi địachỉ đúng thì lập lên thanh ghi EEAR, bit EERE phải ghi ở logic 1 để khởi độngEEPROM đọc Sự truy xuất EEPROM đọc cần 1 lệnh và yêu cầu dữ liệu có giátrị trực tiếp Khi EEPROM được đọc CPU bị dừng trong 4 chu kỳ trước khi lệnhtiếp được thực thi Người sử dụng cần phải kiểm tra bit EEWE trước thao tácđọc Nếu ghi hoạt động trong tiến trình thì không cái nào có thể đọc EEPROM,cũng không thể thay đổi thanh ghi EEAR Bộ dao động chuẩn được sử dụng đểlấy thời gian truy xuất EEPROM