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

Chia sẻ: Tien Van Van | Ngày: | Loại File: PDF | Số trang:55

1
151
lượt xem
65
download

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

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Trong công nghệ điện tử , vi xứ lý là một 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

Chủ đề:
Lưu

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

  1. m«n : vi xö lý
  2. Linhdt1 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¸ tr×nh häc tËp ®Ó chÕ t¹o s¶n phÈm NHIÖT KÕ §IÖN Tö §iÒu khiÓn tù ®éng dïng vi ®iÒu 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 1
  3. Linhdt1 Néi dung : Trang Ch−¬ng I : S¬ §å Nguyªn Lý 3 + I.1 : PhÇn Cøng 4 + I.2 : PhÇn MÒm 7 Ch−¬ng II : Nguyªn Lý Ho¹t §éng + 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 2
  4. Linhdt1 CH¦¥NG I : S¥ §å NGUY£N Lý 3
  5. Linhdt1 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 4
  6. Linhdt1 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 5
  7. Linhdt1 + §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 6
  8. Linhdt1 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 // Khëi t¹o LCD #include #include #include #include char lcd_buffer[33]; /* Sè l−îng tèi ®a chip DS18B20 nèi vµo hÖ thèng */ #define MAX_DEVICES 8 /* Vïng m· DS18B20 ROM */ unsigned char rom_code[MAX_DEVICES][9]; main() { unsigned char i,j,t1,devices; PORTD=0x00; lcd_init(16); lcd_putsf("Truong CDCN \n Thanh Do"); delay_ms(1000);thêi gian hiÖn ch÷ trªn LCD lcd_clear(); 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); 7
  9. Linhdt1 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
  10. Linhdt1 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 (t113) { 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
  11. Linhdt1 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ó độ dài khác nhau (không cố định) , thường là một số nhỏ các chế độ đa địa chỉ và thanh ghi) . 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ế độ 10
  12. Linhdt1 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 11
  13. Linhdt1 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 12
  14. Linhdt1 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Ó xo¸ ®−îc bằng điện sau đó ghi lại mà không cần lấy ra. 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 13
  15. Linhdt1 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ữ liệu nối tiếp đồng bộ cho phép bộ điều khiển truyền thông với các thiết bị ngoại vi. 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 tràn (overflow) 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 14
  16. Linhdt1 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 Các câu lệnh copy bit BLD (Bit LoaD) và BST (Bit STore) sử dụng bit T như là đích 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. 15
  17. Linhdt1 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. 16
  18. Linhdt1 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ỏ 17
  19. Linhdt1 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 18
  20. Linhdt1 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. + Loại ngắt thứ 2 sẽ kích hoạt kéo dài trong thời gian điều kiện ngắt tồn tại. Các ngắt 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. 19

CÓ THỂ BẠN MUỐN DOWNLOAD

Đồng bộ tài khoản