Nhiệt kế điện tử điều khiển tự động
Trang 1m«n : vi xö lý
Trang 2
Lời nói đầu
Trong công nghệ điện tử ,Vi Xử Lý là một thành phần quan trọng không thể thiếu,nó mang nhiều tính ưu việt : có thể thay thế một mạch điện phức tạp bằng một vi mạch nhỏ gọn với chi phí thấp hơn , nhưng ứng dụng lại đa dạng và linh hoạt hơn.Khả năng điều khiển thông minh hơn ,tiết kiệm năng lượng hơn ,tốc độ xử lý nhanh hơn,ứng dụng nhiều trong hệ thống nhúng
Để học tập tốt môn học Vi Xử Lý ngoài những kiến thức trên sách vở cần có sự thực hành ứng dụng vào thực tế Trên cơ sở đó chúng em đã áp dụng những kiến thức có được trong quá
khiển AVR của ATMEL ,có khả năng đo và tự động điều khiển nhiệt độ áp dụng Vi Xử Lý trong lĩnh vực này đã đươc nghiên cứu và phát triển nhiều với những loại vi điều khiển ,cảm biến và ngôn ngữ lập trình khác nhau ví dụ:dùng cảm biến nhiệt độ LM35 kết hợp với AT89S52và IC biến đổi A/D và hiển thị bằng LED7 thanh đo được nhiệt độ từ -55 đến +150˚C,dùng LM34C và 16F88 thuộc vi điều khiển PIC dùng ngôn ngữ lập trình BASIC hiển thị nhiệt độ bằng LCD, chỉ đo được nhiệt độ từ -55 đến +125˚C Nói chung những loại cảm biến nhiệt độ họ LM so với họ DS thì độ chính xác không cao và tốc độ truyền tín hiệu chậm 2˚C - 150˚C với tần số (20 -1500Hz) nhưng giá thành chế tạo rẻ Còn ở loại cảm biến họ DS độ chính xác rất cao do tín hiệu được truyền có độ phân dải lên đến 12bit trong 750ms ở loại cảm biến này có tích hợp ROM 64bit,bộ nhớ Logic, mạch ổn định tín hiệu đầu ra ,chính vì vậy mà nó khắc phục được những nhược điểm của cảm biến họ LM So với những loại nhiệt kế dùng họ vi điều khiển 8051 và PIC nhiệt kế dùng vi điều khiển ATMEGA16L thuộc họ vi điều khiển AVR có nhiều ưu điểm hơn,so với vi điều khiển PIC lập trình bằng ngôn ngữ lập trình BASIC thì dùng AVR lập trình bằng C thì phần mềm sẽ ngắn gọn hơn, còn so với 8051 thì tốc độ xử lý tín hiệu nhanh hơn không cần lắp thêm bộ biến đổi A/D do ATMEGA16 đã tích hợp sẵn bộ biến đổi A/D và việc lập trình sẽ đơn giản hơn
Sản phẩm này có thể phát triển được một số ứng dụng vào đời sống Có thể lắp được nhiều cảm biến DS18B20 vào Bus-1wire với độ dài lên tới 300m và điều kiểm soát được giá trị nhiệt độ của từng cảm biến Một ứng dụng đơn giản là tự động điều khiển nhiệt độ phòng bảo quản hoá chất bằng cách kết hợp với Transistor để đóng mở Role điều khiển máy điều hoà ,như vậy sẽ tiết kiệm được lượng điện năng tiêu hao vô ích trong lúc nhiệt độ đã đạt mức yêu cầu
Do hạn chế về trình độ và thời gian nên đề tài còn rất nhiều những khuyết điểm , chúng em rất mong được sự dạy bảo của các thầy, cô và những ý kiến đóng góp của các bạn,để có những hiểu biết rõ hơn về đề tài này
Hà Nội , ngày 5 tháng 12 năm 2007 Nhóm thực hiện đề tài
Trang 3Néi dung : Trang
+ II.1 : Tæng Quan Hä Vi §iÒu KhiÓn AVR 9
+ II.2 : Vi §iÒu KhiÓn ATMEGA16L 20
+ II.3 : C¶m BiÕn NhiÖt §é DS18B20 43
+ II.4 : Ho¹t §éng Cña M¹ch §iÖn 47
Ch−¬ng III : M¹ch N¹p 48
Ch−¬ng IV : PhÇn MÒm ThiÕt KÕ Vµ LËp Tr×nh
+ IV.1 : Proteus7.1SP2 49
+ IV.2 : CodeVisionAVR 53
Trang 4CH¦¥NG I : S¥ §å NGUY£N Lý
Trang 5
Sơ đồ nguyên lý trên nguồn cấp cho mạch điện là nguồn AC từ 7 đến 24V
+ 3 chân cấp nguồn cho Chip ATMEGA16L là những chân 10,11,31 không vẽ trên sơ đồ (chân 10 được nối với chân 30, chân 11được nôí với chân 31)
+ điện trở PULLUP có giá trị 4,7K
+ Tụ C3 có thể thay bằng tụ hoá 10uf
+ Có thể dùng thạch anh 4MHz thay cho loại 8MHz
I.1 : phần cứng
Phần cứng được sử dụng để lắp mạch gồm : 1 Chip ATMEGA16L
+ Điện áp hoạt động : từ 2.7 đến 5.5VDC + Sơ đồ chân :
- VCC : Cấp nguồn + - GND : Nối đất
- AVCC : Là chân cấp điện cho cổng A(Port A ) và bộ biến đổi A/D,PC3,PC0,ADC7,ADC6 Nó được nối nội bộ đến VCC ngay cả trong trường hợp ADC không được sử dụng Nếu ADC
Trang 6Không được sử dụng , nó phải được nối với VCC qua bộ lọc thông thấp.Cả PC6 và PC4 cũng sử dụng được điện áp AVCC
- AREF : Là chân tín hiệu tham chiếu Analog ( tương tự ) nối vào bộ biến đổi A/D
- PORT B : Từ PB7 đến PB0 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 khiển cân đối với cả tín hiệu Source( nguồn ) và Sink (bên trong).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 Các chân của Port B là 3 trạng thái khi có tín hiệu Reset được kích hoạt, thậm chí đồng hồ không chạy.Tuỳ thuộc việc đặt các cầu chì lựa chọn xung nhịp, chân PB6 có thể được sử dụng như là bộ khuếch đại dao dộng đảo
Tuỳ thuộc việc đặt cầu chì lựa chọn xung nhịp ,chân PB7 có thể được sử dụng như là đầu ra từ bộ khuếch đại dao động đảo Nếu như bộ dao động RC định cỡ bên trong được sử dụng như là nguồn xung nhịp của chip bên trong thì PB7-PB6 được sử dụng như là đầu vào TOSC2 và TOSC1 cho Timer/Counter2 nếu như Bit AS2 trong thanh ghi ASSR được đặt
- PORT C : Port C là cổng I/O 7-bit hai chiều với các điện trở Pull-up bên trong (dược lựa chọn cho mỗi bit) Bộ nhớ đệm đầu ra của Port C có tính điều khiển cân đối với cả tín hiệu Source và sink Khi là các tín hiệu đầu vào , các chân của Port C là 3 trạng thái khi có tín hiệu reset được kích hoạt ,thậm chí đồng hồ không chạy
Đối voi chân PC6 Nếu cầu chì RSTDISBL được lập trình , PC6 được sử dụng như là một chân đầu vào Reset Khi tín hiệu ở mức thấp dài hơn độ dáI của xung nhỏ nhất sẽ gây ra Reset ngay cả khi các xung nhịp không còn
- PORT D : Port D là cổng I/O 8-bit hai chiềuvớ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 giống Port C
- PORT A : Đầu ra của bộ biến đổi A/D
- XTAL1 & XTAL2 : Chân vào ra của thạch anh tạo dao động 2 LCD 2 dòng 16 ký tự
+Điện áp hoạt động từ 2.7 – 5VDC
+Tần số hiển thị 2MHZ ở mức điện áp 5V
3 Cảm Biến Nhiệt Độ DS18B20
Trang 7
+ Điện áp hoạt động từ 3.0 – 5VDC - Chân 1 : GND
- Chân 2 : DQ (truyền tín hiệu) - Chân 3 : Nguồn Vcc
+ Có thể đo nhiệt độ từ -55 đến +125˚C
(-67˚F đến +257˚F) GND DQ VCC
- Khi lắp vào mạch phải nối chân 2 và chân 3 với một điện trở 4K7
4 Những linh kiện khác
2 tụ 2200uf 16V 7805 - Để lọc nguồn
1 IC ổn áp 5V
- Tạo điện áp 5V cấp cho mạch 33
1 tụ 47uf 16V 104 - Làm mạch reset
2 tụ gốm 33pf
- ổn định làm việc cho thạch anh 20V – 0.5A 1 tụ gốm 104pf
- bảo vệ mạch tránh những thành phần tần số cao
1 điện trở 4,7K và 1 điện trở 10K
- Nối chân 2 va chân 3 của DS18B20 va nối với mạch 8.000 Rese
Biến áp 20V- 0.5A Thach anh 8.000MHz Cầu Diod
Trang 8
I.2 : PHầN MềM Phần mềm viết bằng ngôn ngữ C /* Nhiet ke dien tu v1.0 by Linh
*/ #asm
.equ w1_port=0x1b //Đặt cổng nhiệt độ equ w1_bit=6 //Đặt bit nối cảm biến #endasm
#asm
.equ lcd_port=0x15 //Đặt cổng LCD #endasm
#include <lcd.h> // Khởi tạo LCD #include <ds18b20.h>
#include <delay.h> #include <stdio.h> #include <mega16.h> char lcd_buffer[33];
/* Số l−ợng tối đa chip DS18B20 nối vào hệ thống */ #define MAX_DEVICES 8
lcd_putsf("Lop DTVT1-K3"); delay_ms(1000);
lcd_clear();
lcd_putsf("Desined by \n LINH"); delay_ms(1000);
lcd_clear();
lcd_putsf("GVHD:NGUYEN DINH\nTHUAN"); delay_ms(1000);
lcd_clear();
/* Kiểm tra số l−ợng DS18B20 nối vào hệ thống */ devices=w1_search(0xf0,rom_code);
Trang 9sprintf(lcd_buffer,"So luong: \n %u DS18B20",devices); lcd_puts(lcd_buffer);
delay_ms(2000);
/* Hiển thị mã ROM */ if (devices)
{
for (i=0;i<devices;i++) {
sprintf(lcd_buffer,"Ma ROM\nchip #%u la:",i+1);Hiển thị mã ROM chip lcd_clear(); Xoá ký tự
lcd_puts(lcd_buffer); delay_ms(1000); lcd_clear(); for (j=0;j<8;j++) {
sprintf(lcd_buffer,"%02X ",rom_code[i][j]); lcd_puts(lcd_buffer);
if (j==3) lcd_gotoxy(0,1); };
delay_ms(1000); };
} else
while (1); /* Dừng lại khi có lỗi */
/* Đặt chế độ làm việc ở độ chính xác 12 bit */ for (i=0;i<devices;)
if (!ds18b20_init(&rom_code[i++][0],20,30,DS18B20_12BIT_RES)) {
sprintf(lcd_buffer,"Thiet bi\nloi #%u",i); lcd_clear();
Trang 10
sprintf(lcd_buffer,"t%u=%+.0f\xdfC",j++,ds18b20_temperature(&rom_code[i][0])); lcd_clear();
lcd_puts(lcd_buffer);
t1 = ds18b20_temperature(0); if (t1<35||t1>13)
{
PORTD=0x00; // Tắt thiết bị làm nóng và làm lạnh trong điều kiện khác }
if (t1 >= 35) ; Đặt điều kiện làm lạnh {
PORTD=0x01; //Bật thiết bị làm lạnh }
if (t1 <= 13) ; Đặt điều kiện làm nóng {
PORTD=0x02; //Bật thiết bị làm nóng }
delay_ms(500); Thời gian khởi động };
}; }
CHƯƠNG II : NGUYÊN Lý HOạT ĐộNG II.1 : Tổng Quan Họ Vi Điều Khiển AVR
Vi điều khiển AVR (Atmel Norway design) thuộc họ vi điều khiển Atmel, nú là họ Vi điều khiển mới trờn thị trường cũng như đối với người sử dụng Đõy là họ Vi Điều Khiển được chế tạo theo kiến trỳc RISC (Reduced Intruction Set Computer) cú cấu trỳc khỏ phức tạp Ngoài cỏc tớnh năng như cỏc họ VĐK khỏc, nú cũn tớch hợp nhiều tớnh năng mới rất tiện lợi cho người thiết kế và lập trỡnh.Sự ra đời của AVR bắt nguồn từ yờu cầu thực tế là hầu hết khi cần lập trỡnh cho vi điều khiển, chỳng ta thường dựng những ngụn ngữ bậc cao HLL (Hight Level Language) để lập trỡnh ngay cả với loại chip xử lớ 8 bit trong đú ngụn ngữ C là ngụn ngữ phổ biến nhất Tuy nhiờn khi biờn dịch thỡ kớch thước đoạn mó sẽ tăng nhiều so với dựng ngụn ngữ Assembly Hóng Atmel nhận thấy rằng cần phải phỏt triển một cấu trỳc đặc biệt cho ngụn ngữ C để giảm thiểu sự chờnh lệch kớch thước mó đó núi trờn Và kết quả là họ vi điều khiển AVR ra đời với việc làm giảm kớch thước đoạn mó khi biờn dịch và thờm vào đú là thực hiện lệnh đỳng đơn chu kỳ mỏy với 32 thanh ghi tớch lũy và đạt tốc độ nhanh hơn cỏc họ vi điều khiển khỏc từ 4 đến 12 lần Vỡ thế nghiờn cứu AVR là một đề tài khỏ lý thỳ và giỳp cho học sinh, sinh viờn biết thờm một họ vi điều khiển vào loại mạnh hiện nay.
Trang 11PHÂN LOẠI AVR
+ AT90S8535: Khụng cú lệnh nhõn hoặc chia trờn thanh ghi
+ ATMEGA 8, 16, 32 (AVR loại 8 bit, 16 bit, 32 bit): Là loại AVR tốc độ cao, tớch hợp sẵn ADC 10 bit
+ AVR tớch hợp sẵn LCD driver : Atmega169,329
+ AVR cú tớch hợp SC (power stage controller): AT90PWM thường dựng trong cỏc ứng dụng điều khiển động cơ hay chiếu sỏng nờn cũn gọi là lighting AVR
+ Attiny11, 12, 15: AVR loại nhỏ
Các đặc điểm chính
1-Kiến trỳc RISC(Có nghĩa là máy tính dùng tập lệnh rút gọn,bộ vi xử lý kiểu này thực hiện ít lệnh hơn những bộ vi xử lý khác) với hầu hết cỏc lệnh cú chiều dài cố định, truy nhập bộ nhớ nạp – lưu trữ và 32 thanh ghi đa năng
2- Cú nhiều bộ phận ngoại vi ngay trờn chip, bao gồm: Cổng vào/ra số, bộ biến đổi ADC, bộ nhớ EEFROM, bộ định thời, bộ điều chế độ rộng xung (PWM), …
3- Hầu hết cỏc lệnh đều thực hiện trong một chu kỳ xung nhịp
4- Hoạt động với chu kỳ xung nhịp cao, cú thể lờn đến 20 MHz tuỳ thuộc từng loại chip cụ thể
5- Bộ nhớ chương trỡnh và bộ nhớ dữ liệu được tớch hợp ngay trờn chip
6- Khả năng lập trỡnh được trong hệ thống, cú thể lập trỡnh được ngay khi đang được cấp
nguồn trờn bản mạch khụng cần phải nhấc chip ra khỏi bản mạch 7- Hỗ trợ cho việc lập trỡnh bằng ngụn ngữ bậc cao – ngụn ngữ C
Cốt lừi của AVR là sự kết hợp tập lệnh đầy đủ với cỏc thanh ghi đa năng 32 bit Tất cả cỏc thanh ghi 32 bit này liờn kết trực tiếp với khối xử lý số học và logic (ALU) cho phộp 2 thanh ghi độc lập được truy cập trong một lệnh đơn trong 1 chu kỳ đồng hồ Kết quả là tốc độ nhanh gấp 10 lần cỏc bộ vi điều khiển CISC(Complex Instruction Set Computer : mỏy tớnh với tập lệnh phức tạp Một loại kiến trỳc của bộ xử lớ được đặc trưng bởi tớnh chất là cỏc lệnh cú độ
Với cỏc tớnh năng đó nờu, chế độ nghỉ (Idle) CPU trong khi cho phộp bộ truyền tin nối tiếp đồng bộ USART, giao tiếp 2 dõy, chuyển đổi A/D, SRAM, bộ đếm, bộ định thời, cổng SPI và hệ thống cỏc ngắt vẫn hoạt động Chế độ Power-down lưu giữ nội dung của cỏc thanh ghi nhưng làm đụng lạnh 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 là reset phần cứng Chế độ Power-save đồng hồ đồng bộ tiếp tục chạy cho phộp chương trỡnh sử dụng giữ được đồng bộ thời gian nhưng cỏc thiết bị cũn lại là ngủ Chế độ
Trang 12ADC 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, tối thiểu hoá switching noise trong khi ADC đang hoạt động Trong chế độ standby, bộ tạo dao động (thuỷ tinh thể/bộ cộng hưởng) chạy trong khi các thiết bị còn lại ngủ Các điều 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 Thiết bị đượ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 qua giao diện SPI bởi bộ lập trình bộ nhớ cố đinh 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 điện nào để download chương trình ứng dụng trong bộ nhớ Flash ứng dụng 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, cung cấp thao tác Read-While-Write thực sự
Để tối đa hoá hiệu năng tính năng và song song, AVR sử dụng kiến trúc Harvard với bộ nhớ riêng biệt và các BUS cho chương trình và dữ liệu Các câu lệnh trong bộ nhớ chương trình được hoạt với một đường ống lệnh mức đơn Trong khi một lênh đang thực hiện, lệnh tiếp theo sẽ được nạp trước vào từ bộ nhớ chương trình Điều này làm cho các lệnh được thực
hiện trong mọi chu kỳ đồng hồ Bộ nhớ chương trình là bộ nhớ In-System Reprogrammable
Flash Tập thanh ghi truy cập nhanh bao gồm 32 thanh ghi đa năng 8 bit với thời gian truy cập là 1 chu kỳ đơn Điều này cho phép ALU hoạt động trong một chu kỳ đơn Một thao tác điển hình với 2 toán hạng được của ALU, 2 toán hạng được lấy ra từ tệp thanh ghi để thực hiện, và và kết quả được lưu trữ lại trong tệp thanh ghi trong một chu kỳ đồng hồ 6 trong số 32 thanh ghi có thể sử dụng như là 3 thanh ghi con trỏ địa chỉ gián tiếp 16 bit để chỉ vào vùng dữ liệu phục vụ cho tính toán địa chỉ hiệu dụng Một trong các con trỏ địa chỉ này cũng có thể được sử dụng làm con trỏ địa chỉ trỏ vào bảng dữ liệu trong bộ nhớ chương trình Flash Các thanh ghi này là X, Y và Z.ALU thực hiện các phép toán logíc và số học giữa các thanh ghi hoặc giữa thanh ghi với một hằng số Cũng có thể thao tác với các thanh thanh ghi đơn trong ALU Sau khi thực hiện phép toán số học, các thanh ghi trạng thái được cập nhật các thông tin về kết quả thực hiện Dòng chương trình được điều khiển bởi các phép nhảy có điều kiện hoặc không điều kiện đến các lệnh được gọi, và chỉ đến các địa chỉ trực tiếp trong không gian địa chỉ Hầu hết các lệnh AVR đều thực hiện với dữ liệu 16 bit Mỗi địa chỉ bộ nhớ chương trình đều chứa 1 lệnh 32 bit hoặc 16 bit Không gian bộ nhớ chương trình Flash được chia thành 2 vùng, vùng chương trình boot và vùng chương trình ứng dụng, cả hai vùng này đều có bit khoá chuyên dụng để bảo vệ cho việc ghi và đọc/ghi Lệnh SPM dùng để ghi vào vùng bộ nhớ ứng dụng phải có trong vùng chương trình boot Trong khi thực hiện các ngắt và các thường trình, địa
Trang 13chỉ trở về của bộ đếm chương trình (PC) được lưu trữ trong stack Nhìn chung stack được định vị trong SRAM, và do vậy kích cỡ stack được giới hạn bởi kích cỡ toàn bộ của SRAM, và cách sử dụng của SRAM Tất cả các chương trình của người sử dụng phải khởi tạo SP trong thường trình reset (trước khi thường trình hoặc ngắt được thược hiện) SP có thể trỏ được vào không gian I/O SRAM có thể được truy cập một cách dễ dàng thông qua 5 chế độ địa chỉ khác nhau hỗ trợ bởi kiến trúc AVR.Không gian bộ nhớ trong kiến trúc AVR là bản đồ bộ nhớ thông thường và tuyến tính Một module ngắt linh động có các thanh ghi điều khiển của nó trong không gian I/O cùng với thêm vào bit khởi tạo ngắt toàn cục trong thanh ghi trạng
thái Tất cả các ngắt có vector ngắt riêng biệt trong bảng vector ngắt Các ngắt này có mức độ
ưu tiên theo vị trí của vector ngắt tương ứng Mức có địa chỉ càng thấp thì có quyền ưu tiên càng cao Không gian bộ nhớ I/O có 64 địa chỉ cho các chức năng ngoại vi của CPU như là các thanh ghi điều khiển, SPI, và các chức năng I/O khác Bộ nhớ I/O có thể truy cập trực tiếp, hoặc như là vị trí không gian dữ liệu theo chúng của tệp thanh ghi, $20-$5F Thêm vào đó, nó có không gian I/O mở rộng từ $60 đến $FF trong SRAM, các không gian này chỉ có các lệnh ST/STS/STD và LD/LDS/LĐ có thể sử dụng
S¬ §å KiÕn Tróc AVR
Trang 14ALU – Arithmetic Logic Unit - Đơn vị xử lý số học và logicAVR ALU hiệu năng cao tỏc
động trựuc tiếp tới 32 thanh ghi đa năng Trong vũng 1 chu kỳ, cỏc toỏn hạng số học thực hiện giữa cỏc thanh ghi đa năng hoặc giữa một thanh ghi và một toỏn hạng tức thời Cỏc toỏn tử
của ALU được chia làm 3 loại chớnh: Số học, logic, và xử lý bit Một số phộp xử lý của kiến
trỳc này cũng cung cấp bộ nhõn số cú dấu và khụng cú dấu và dạng phõn số
DATA SRAM : Bộ nhớ dữ liệu
EEPROM : (Electrically Erasable Programmable Read-Only Memory): Là loại ROM có thể
DATA BUS – 8Bit : Đường truyền dữ liệu 8Bit
I/O Lines : Đường vào ra tín hiệu
32 x 8 Gneral Purpose Registers : 32 thanh ghi đa năng 8 Bit
Status and control : Khối nhận biết trạng thái và điều khiển
PRograme counter : Bộ đếm chương trình
Flash program memory : Bộ nhớ flash, là một loại bộ nhớ sử dụng cỏc chớp NAND (tớch hợp nhiều transitor lờn một tấm bỏn dẫn), cỏc chớp này cú kớch thước nhỏ, tốc độ đọc/ghi cao, dung lượng lớn
Intruction register : thanh ghi lệnh
Intruction decoder : Giải mã lệnh
Control lines : Những đường điều khiển
IntErrupt unit: Bộ xử lý ngắt
Trang 15SPI unit: (Serial Peripheral Interface) mạch ghộp nối ngoại vi nối tiếp, là mạch liên kết dữ
Watchdog timer : là một bộ đếm cú chức năng reset lại vi điều khiển khi xảy ra sự kiện
ANALOG COMPARATOR : Bộ so sánh tín hiệu tương tự
I/O MODULE1 -> I/O MODULE n :Module vào ra tín hiệu
Direct addressing : Đường địa chỉ truyền trực tiếp
Indirect addressing : Đường địa chỉ truyền gián tiếp
Status Register – Thanh ghi trạng thỏi
Thanh ghi trạng thỏi chứa thụng tin về kết quả thưc hiện của hầu hết cỏc lệnh số học
Cỏc thụng tin này cú thể được sử dụng để điều khiển chương trỡnh Chỳ ý rằng cỏc thanh ghi trạng thỏi được cập nhật sau tất cả cỏc hoạt động của ALU Trong nhiều trường hợp, điều này sẽ bỏ đi những cần thiết khi sử dụng cõu lệnh so sỏnh chuyờn dụng, kết quả nhanh hơn và đoạn chương trỡnh ngắn gọn hơn
Thanh ghi trạng thỏi khụng tự động lưu trữ khi đang nhập vào mụt thường trỡnh ngắt và lưu trữ khi trở về tự một ngắt Điều này phải được quản lý bằng phần mềm Thanh ghi trạng thỏi AVR – SREG - được định nghĩa như sau:
Global Interrupt Enable- bit cho phộp ngắt toàn cục
Bit cho phộp ngắt toàn cục phải được đặt để cho cỏc ngắt cú thể hoạt động Điều khiển hoạt động của cỏc ngắt riờng biệt được thực hiện trong cỏc thanh ghi điều khiển riờng biệt Nếu thanh ghi cho phộp ngắt toàn cục được xúa, khụng cú một ngắt riờng biệt nào được hoạt động Bit I được xúa bởi phần cứng sau khi một ngắt xảy ra và được đặt bởi lệnh RETI để cho
Trang 16các phép các ngắt tiếp theo hoạt động Bit I cũng có thể được đặt và xóa bởi câu lệnh SEI và CLI trong các ứng dụng
Bit 6 – T: Bit Copy Storage
hoặc nguồn cho bit hoạt động 1 bit từ một thanh ghi trong tệp thanh ghi có thể được copy vào bit T bằng lệnh BST và một bit trong T có thể được copy vào 1 bit trong thanh ghi trong tệp thanh ghi bằng lệng BLD
+ Bit 5 – H: Half Carry Flag
Cờ nhớ một nửa dùng cho các toàn hạng hạng một nửa byte trong các phép toán số học Cờ H sử dụng phép toán số học với số BDC
+ Bit 4 – S: Sign Bit, S = N ⊕ V – bit dấu
Bit S là phép XOR giữa cờ âm và cờ tràn V
+ Bit 3 – V: Two’s Complement Overflow Flag – cờ tràn mã bù 2
Cờ tràn V hỗ trợ phép toán số bù 2.
+ Bit 2 – N: Negative Flag – cờ âm
Cờ âm N hiển thị kết quả âm của phép toán logic hoặc số học
+ Bit 1 – Z: Zero Flag
Cờ Zero Z hiển thị kết quả bằng 0 của phép toán logic hoặc số học
+ Bit 0 – C: Carry Flag Cờ nhớ C hiển thị số nhớ trong phép toán logic hoặc số học
Trang 17General Purpose Register File – tệp các thanh ghi đa năng
Hình 1.4 Tệp thanh ghi đa năng của AVR CPU
Hầu hết các lệnh thực hiện với tệp thanh ghi có truy cập trực tiếp tới tất cả các thanh ghi, và hầu hết chúng là lệnh đơn chu kỳ Mỗi một thanh ghi được chỉ định bởi một địa chỉ bộ nhớ dữ liệu, bố trí chúng trực tiếp vào 32 vị trí đầu tiên của không gian dữ liệu người sử dụng
Mặc dù không phải là thực hiện theo luật như các vị trí của SRAM, tổ chức bộ nhớ này cho phép linh động cao khi truy cập các thanh ghi, như là thanh ghi con trỏ X,Y,Z có thể được đặt vào danh mục của mọi thanh ghi trong tệp
The X-register, Y-register and Z-register
Các thanh ghi R26 R31 có thêm các chức năng ngoài việc sử dụng như là một thanh ghi đa năng Các thanh ghi này là các con trỏ địa chỉ 16 bit cho chế độ địa chỉ gián tiếp của không gian dữ liệu 3 thanh ghi địa chỉ gián tiếp X, Y, Z được mô tả như như hình 3.5
Trong các chế độ địa chỉ khác, các thanh ghi địa chỉ này có các chức năng như là độ lệch cố định, tự động tăng và tự động giảm
Trang 18Các thanh ghi X, Y và Z Stack Pointer – ngăn xếp
Stack thường được sử dụng để chứa dữ liệu tạm thời, cho việc lưu trữ các biến địa
phương và cho việc lưu trữ địa chỉ trở về sau khi gọi các thường trình và các ngắt Thanh ghi con trỏ thường trỏ tới đỉnh của stack Chú ý rằng stack được thực hiện khi tăng thêm từ địa chỉ cao đến địa chỉ thấp, điều này nói lên rằng khi thực hiện lệnh PUSH thì con trỏ sẽ tự động giảm Con trỏ trỏ đến vùng ngăn xếp dữ liệu SRAM
Không gian ngăn xếp trong SRAM phải được định nghĩa bằng chương trình trước khi bất cứ thường trình hoặc ngắt được thực hiện Con trỏ ngăn xếp phải được set để trỏ tới địa chỉ trên $0100 Con trỏ ngăn xếp được giảm đi 1 khi dữ liệu được cất vào ngăn xếp và được giảm đi 2 khi cất địa chỉ trở về của thường trình hoặc ngắt SP được tăng lên khi dữ liệu được lấy ra
AVR SP được thực hiện với 2 thanh ghi 8 bit trong không gian I/O Số các bit thực tế sử dụng là tuỳ thuộc Chú ý rằng không gian dữ liệu trong một số thực thi của kiến trúc AVR rất nhỏ, chỉ SPL là cần Trong trường hợp này SPH không sử dụng
Sơ đồ các thanh ghi của con trỏ
Trang 19Reset and Interrupt Handling - điều khiển ngắt và reset
AVR cung cấp 1 vài nguồn ngắt khác nhau Các ngắt này và vector reset riêng biệt có vector chương trình riêng biệt nằm trong không gian nhớ chương trình Tất cả các ngắt được chỉ định bởi các bit cho phép riêng biệt mà các bit này phải được ghi mức logic 1 cùng với bit cho phép ngắt toàn cục trong thanh ghi trạng thái để cho phép ngắt Phụ thuộc vào giá trị PC, các ngắt này phải được tự động loại bỏ khi các bit Boot Lock - BLB02 or BLB12 - được lập trình Yếu tố này cải thiện độ an toàn phần mềm
Địa chỉ thấp nhất trong không gian bộ nhớ chương trình được mặc định là Reset và Interrupt Vectors Bảng vector ngắt
Bảng vector ngắt và reset
Trang 20
Khi địa chỉ càng nhỏ thì thứ tự ưu tiên càng cao.Các vector ngắt có thể được chuyển sang đầu của vùng Boot Flash bằng cách đặt bit IVSEL trong thanh ghi điều khiển ngắt (MCUCR) Reset Vector có thể được chuyển sang đầu của vùng Boot Flash bằng cách lập trình BOOTRST fuse
Khi một ngắt xảy ra, bit I (bit cho phép ngắt toàn cục) được xóa và tất cả các ngắt được loại bỏ Phần mềm sử dụng có thể ghi mức logic 1 vào bit I để cho phép các ngắt tiếp theo Tất cả các ngắt được kích hoạt có thể ngắt những thường trình ngắt hiện tại Bit I được đặt tự động khi trở về từ lệnh RETI của ngắt
Có 2 loại ngắt cơ bản
+ Loại thứ nhất được gây ra bởi sự kiện mà đặt cờ ngắt Đối với loại ngắt này, PC được hướng tới Interrupt Vector tương ứng để thực hiện thường trình phục vụ ngắt và phần cứng xoá cờ ngắt tương ứng Các cờ ngắt cũng có thể được ghi mức logic 1 vào vị trí bit cờ để được xoá Nếu một điều kiện ngắt xảy ra trong khi bit cho phép ngắt tương ứng bị xoá, thì cờ ngắt sẽ được đặt và được nhớ cho đến khi ngắt được thực hiện, hoặc là cờ ngắt được xoá bởi phần mềm Tương tự nếu 1 hoặc nhiều điều kiện ngắt xảy ra trong
khi cờ cho phép ngắt toàn cục bị xoá thì các cờ ngắt tương ứng sẽ được đặt và nhớ cho đến khi cờ cho phép ngắt toàn cục được đặt và nó sẽ được thực hiện theo thứ tự ưu tiên
này không cần thiết phải có cờ ngắt Nếu điều kiện ngắt mất đi trước khi ngắt được cho phép, thì ngắt sẽ không xảy ra
Khi AVR thoát khỏi từ một ngắt, nó sẽ luôn trở về chương trình chính và thực hiện một hoặc nhiều lệnh trước khi một ngắt nào đó còn đợi đó được phục vụ
Chú ý rằng các thanh ghi trạng thái không tự động lưu trữ khi nhập vào một thường
trình ngắt, và cũng không lưu trữ lại khi trở về từ một thường trình ngắt Điều này phải được thực hiện bởi phần mềm
Trang 21Khi sử dụng cõu lệnh CLI để cấm ngắt, cỏc ngắt sẽ khụng được tỏc động ngay lập tức Khụng cú ngắt nào được thực hiện sau khi thực hiện lệnh CLI, thậm chớ nú xảy ra cựng lỳc với lệnh CLI
Thời gian đỏp ứng của 1 ngắt
Việc thực hiện ngắt trong ớt nhất 4 chu kỳ đồng hồ với tất cả cỏc ngắt Sau 4 chu kỳ đồng hồ, địa chỉ vector chương trỡnh tương ứng với thường trỡnh điều khiển ngắt thực sự được khởi tạo
Trong thời gian 4 chu kỳ này, PC được cất vào trong ngăn xếp Vector thường là lệnh nhảy đến thường trỡnh ngắt và lệnh nhảy này mất 3 chu kỳ đồng hồ
Nếu một ngắt xảy ra trong khi thực hiện một lệnh nhiều chu kỳ thỡ lệnh được hoàn thành trước khi ngắt được phục vụ
Nếu một ngắt xảy ra khi MCU đang trong chế độ ngủ thỡ thời gian đỏp ứng ngắt sẽ tăng thờm 4 chu kỳ Thời gian tăng thờm này là thời gian để khởi động lại từ chế độ ngủ
Sự trở về từ một thường trỡnh điều khiển ngắt mất 4 chu kỳ xung nhịp Trong thời gian 4 chu kỳ này, PC (2 bytes) được lấy ra từ ngăn xếp, SP được tăng lờn 2, và bit I trong SREG được đặt
II.2 : Đặc Điểm Của ATMEGA16L
+ Sơ đồ nguyên lý :
Trang 23Các đặc Tính Của Vi Điều Khiển ATMEGA16L
- Hiệu năng cao, tiờu thụ năng lượng ớt
- Kiến trỳc RISC - Reduce Instruction Set Computer (Có nghĩa là máy tính dùng tập lệnh rút gọn,bộ vi xử lý kiểu này thực hiện ít lệnh hơn những bộ vi xử lý khác)
- 131 lệnh mạnh, hầu hết cỏc lờnh thực hiện trong một chu kỳ - 32 Thanh ghi 8-bit đa năng
- Tốc độc thực hiện lờn tới 16 triệu lệnh trong 1 giõy với tần số 16MHz - Cú 2 bộ nhõn, mỗi bộ thực hiện trong thời gian 2 chu kỳ
- Cỏc bộ nhớ chương trỡnh và dữ liệu cố định
- 16 Kb bộ nhớ flash cú khả năng tự lập trỡnh trong hệ thống - Cú thể thực hiện được 10.000 lần ghi/xoỏ
- Vựng mó Boot tuỳ chọn với những bit khoỏ độc lập
- Lập trỡnh trờn trong hệ thống bởi chương trỡnh on-chip Boot - Thao tỏc đọc trong khi nghi thực sự
- ít xảy ra lỗi
- Lập trình bộ nhớ Flash ,EEPROM ,ngắt ,khoá Bit thông qua giao diện jTAG + Ghộp nối ngoại vi
- 2 bộ định thời/ bộ đếm 8 bit với cỏc chế độ tỷ lệ định trước và chế độ so sỏnh
- 1 bộ định thời/ bộ đếm 16 bit với cỏc chế độ tỷ lệ định trước riờng biệt, chế độ so sỏnh và chế độ bắt giữ
- Bộ thời gian thực với bộ tạo dao động riờng biệt - 4 kờnh PWM
- 8 kờnh, ADC 10 bit
- Giao điện nối tiếp 2 dõy hướng tới byte
Trang 24- Bộ truyền tin nối tiếp USART khả trỡnh - Giao diện SPI chủ / tớ
- Watchdog Timer khả trỡnh với bộ tạo dao động bờn trong riờng biệt - Mỏy so mẫu tương tự bờn trong
+ Cỏc đặc điểm đặc biệt khỏc
- Power-on Reset và dũ Brown-out khả trỡnh - Bộ tạo dao động được định cỡ bờn trong - Cỏc nguồn ngắt bờn trong và bờn ngoài
- 6 chế độ ngủ: Nhàn rỗi, giảm ồn ADC, tiết kiệm năng lượng, giảm năng lượng tiờu thụ, chờ ,đóng băng trạng thái
- I/O và cỏc loại
- 32 đường I/O khả trỡnh - Điện ỏp hoạt động
2.7 – 5.5V
+ Cỏc tốc độ
- 0-8 MHz khi điện ỏp 2.7 – 5.5V, 0 - 16MHz khi điện ỏp 4.5 – 5V
- Hoạt động tớch cực: 1.1mA - Chế độ nghỉ ở 0.35mA
- Chế độ năng lượng thấp: <1 μA khi điện ỏp 2.7V
+ Bằng việc kết hợp 1 bộ 8-bit RISC CPU với In-System Self-Programmable Flash trong chỉ nguyờn vẹn 1 chip Atmel Atmega16L là một bộ vi điều khiển mạnh cú thể cung cấp giải phỏp
hệ thống nhỳng là một hệ tớnh toỏn nằm trong sản phẩm, tạo thành một phần của hệ thống lớn
chương trỡnh đầy đủ và cỏc tool(tiện ích) để phỏt triển hệ thống, bỏo gồm: Bộ biờn dịch C,macro assemblers, program debugger/simulators(chương trình mô phỏng), in-circuit emulators(mạch mô phỏng) và evaluation kits(kit phát triển)
Trang 25Memories – bộ nhớ của ATMEGA16L
Kiến trỳc AVR cú 2 khụng gian bộ nhớ chớnh bao gồm bộ nhớ chương trỡnh và bộ nhớ dữ liệu Thờm vào đú, Atmega16L cú một bộ nhớ EEPROM để lưu trữ dữ liệu Tất cả 3 khụng gian này là tuyến tớnh và như thường lệ
1.3.6.1 In-System Reprogrammable Flash Program Memory – bộ nhớ chương trỡnh Flash cú thể lập trỡnh lại nằm bờn trong vi xử lý
Atmega16L chứa 16K bytes bộ nhớ Flash cú thể lập trỡnh lại được nằm trong chip để
chứa chương trỡnh Từ khi tất cả cỏc lệnh của AVR là 16 hoặc 32 bit thỡ Flash được tổ chức
thành 8Kx16 Vỡ lý do an toàn phần mềm nờn bộ nhớ chương trỡnh Flash được chia thành 2 vựng: Vựng nạp chương trỡnh boot(chương trình khởi động) và vựng chương trỡnh ứng dụng
Bộ nhớ Flash cú thể thực hiện ghi/xoỏ ớt nhất 10.000 lần Bộ đếm chương trỡnh (PC) là 12 bit , nú cú thể địa chỉ hoỏ được 4K bộ nhớ chương trỡnh
Bảng hằng số cú thể được đặt trong khụng gian bộ nhớ chương trỡnh Bản đồ bộ nhớ chương trỡnh như hỡnh vẽ
Bản đồ bộ nhớ chương trỡnh
Trang 26SRAM Data Memory – bộ nhớ dữ liệu SRAM
Bản đồ bộ nhớ dữ liệu SRAM được chỉ ra trên hình vÏ
Bản đồ bộ nhớ dữ liệu SRAM
ATmega16L là bộ vi điều khiển hoàn chỉnh hỗ trợ nhiều thiết bị ngoại vi trong 64 vị trí được đặt trước trong mã lệnh IN/OUT Đối với các không gian vào ra mở rộng từ 0x60 đến 0xFF trong SRAM thì chỉ có các lệnh ST/STS/STD và LD/LDS/LDD mới được sử dụng
5 chế độ địa chỉ khác nhau cho bộ nhớ dữ liệu bao gồm: Trực tiếp, gián tiếp với độ lệch, gián tiếp, gián tiếp với độ lệch giảm, và gián tiếp với độ lệch tăng lên Trong tệp thanh ghi, các thanh ghi từ R26 đến R31 dùng để làm các thanh ghi con trỏ địa chỉ gián tiếp
Địa chỉ trực tiếp chỉ tới toàn bộ không gian dữ liệu
Chế độ gián tiếp với độ lệch chỉ đến 63 vị trí từ địa chỉ cơ sở được đưa ra bởi thanh ghi Y hoặc Z
Khi sử dụng các chế độ địa chỉ gián tiếp thanh ghi với độ giảm hay tăng tự động, thanh ghi địa chỉ X, Y và Z được giảm hoặc được tăng
EEPROM Data Memory – bộ nhớ dữ liệu EEPROM
ATmega16L chứa 512 byte bộ nhớ dữ liệu EEPROM Nó được tổ chức thành không gian dữ liệu riêng biệt, trong chúng các byte đơn có thể được đọc và ghi EEPROM có thể đọc ghi được ít nhất 100.000 lần
EEPROM Read/Write Access – đọc/ghi vào EEPROMass
Các thanh ghi truy nhập EEPROM có thể được thực hiện trong không gian I/O
Trang 27Thanh ghi địa chỉ EEPROM – EEARH và EEARL
+ Bits 15 9 – Res: Các bit dự phòng
Các bit này được đặt dự phòng trong Atmega16L và sẽ luôn là 0 + Bits 8 0 – EEAR9 0: Địa chỉ EEPROM
Giá trị khởi tạo của EEAR là không xác định Giá trị thích hợp phải được ghi trước khi EEPROM có thể được truy cập
Thanh ghi dữ liệu EEPROM – EEDR
+ Bits 7.0 – EEDR7.0: Dữ liệu EEPROM
Để ghi EEPROM, thanh ghi dữ EEDR chứa dữ liệu được ghi vào trong EEPROM với địa chỉ được chỉ ra trong thanh ghi EEAR Khi đọc EEPROM, thanh ghi EEDR chứa dữ liệu đọc ra từ EEPROM tại địa chỉ chỉ ra tại EEAR
Thanh ghi trạng thái EEPROM – EECR
+ Bits 7 6 – Res: Các bit dự phòng