1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nhiệt kế điện tử điều khiển tự động 2

55 846 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 55
Dung lượng 1,29 MB

Nội dung

Nhiệt kế điện tử điều khiển tự động

Trang 1

m«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 3

Né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 4

CH¦¥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 6

Khô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 9

sprintf(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 11

PHÂ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 12

ADC Noise Reduction dừng CPU và tất cả các thiết bị còn lại ngoại trừ đồng hồ đồng bộ và ADC, 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 13

chỉ 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 14

ALU – 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 15

SPI 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 16

cá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 17

General 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 18

Cá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 19

Reset 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 21

Khi 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 23

Cá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 25

Memories – 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 26

SRAM 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 27

Thanh 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

Ngày đăng: 16/11/2012, 09:16

HÌNH ẢNH LIÊN QUAN

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 - Nhiệt kế điện tử điều khiển tự động 2
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 (Trang 13)
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ẽ  - Nhiệt kế điện tử điều khiển tự động 2
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ẽ (Trang 25)
Bảng 1.2 Cỏc nguồn tạo xung nhịp và cỏch lựa chọn Nguồn xung nhịp mặc định    - Nhiệt kế điện tử điều khiển tự động 2
Bảng 1.2 Cỏc nguồn tạo xung nhịp và cỏch lựa chọn Nguồn xung nhịp mặc định (Trang 31)
Bảng 1.3 Lựa chọn chế độn gủ - Nhiệt kế điện tử điều khiển tự động 2
Bảng 1.3 Lựa chọn chế độn gủ (Trang 32)
Bảng vector ngắt – hình 4 - Nhiệt kế điện tử điều khiển tự động 2
Bảng vector ngắt – hình 4 (Trang 36)
Địa chỉ vector ngắt và Reset – hình 3 - Nhiệt kế điện tử điều khiển tự động 2
a chỉ vector ngắt và Reset – hình 3 (Trang 36)
wire bus) giống hình d−ới đõy: - Nhiệt kế điện tử điều khiển tự động 2
wire bus) giống hình d−ới đõy: (Trang 45)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w