intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Vi điều khiển AVR - ATMEGA88

Chia sẻ: Le Van Tien | Ngày: | Loại File: DOC | Số trang:36

350
lượt xem
126
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Loại vi điều khiển họ AVR RISC là do công ty Atmel sản suất, với kiến trúc RISC (Reduce Instruction Set Computer). Với những ưu điểm được nêu ra sau đây, loại chip này đang được dùng rộng dãi trong các hệ thống nhúng.

Chủ đề:
Lưu

Nội dung Text: Vi điều khiển AVR - ATMEGA88

  1. VI ĐIỀU KHIỂN AVR – ATMEGA88 Loại vi điều khiển họ AVR RISC là do công ty Atmel sản suất, v ới kiến trúc RISC (Reduce Instruction Set Computer). V ới nh ững ưu đi ểm được nêu ra sau đây, loại chip này đang được dùng rộng dãi trong các hệ thống nhúng. Các đặc điểm chính: 1-Kiến trúc RISC 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 nghi đa năng. 2- Có nhiều bộ phận ngoại vi ngay trên chip, bao gồm: C ổng và/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 va 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. Sau đây là các đặc tính của loại vi điều khiển Atmega88. 1.1 CÁC ĐẶC TÍNH: - Hiệu năng cao, tiêu thụ năng lượng ít - Kiến trúc RISC o 131 lệnh mạnh, hầu hết các lênh thực hiện trong một chu kỳ o 32 Thanh ghi 8-bit đa năng o Tốc độc thực hiện lên tới 20 triệu lệnh trong 1 giây với tần số 20MHz o 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 o 8 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á o Vùng mã Boot tuỳ chọn với những bit khoá độc lập
  2. 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ự o 512 bytes EEFROM Có thể thực hiện 100.000 lần ghi /xoá o 1Kb SRAM bên trong o Lập trình Khoá an ninh phần mềm Ghép nối ngoại vi - o 2 bộ định thời/ bộ đếm 8 bit với các chế độ tỷ lệ định trước và chế độ so sánh. o 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ữ o Bộ thời gian thực với bộ tạo dao động riêng biệt o 6 kênh PWM o 6 kênh, ADC 10 bit o Giao điện nối tiếp 2 dây hướng tới byte o Bộ truyền tin nối tiếp USART khả trình o Giao diện SPI chủ / tớ o Watchdog Timer khả trình với bộ tạo dao động bên trong riêng biệt o Máy so mẫu tương tự bên trong o Ngắt và đánh thức theo sự thay đổi của các chân. - Các đặc điểm đặc biệt khác. o Power-on Reset và dò Brown-out khả trình. o Bộ tạo dao động được định cỡ bên trong. o Các nguồn ngắt bên trong và bên ngoài. o 5 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ờ - I/O và các loại. o 23 đường I/O khả trình. - Điện áp hoạt động. o 1.8 – 5.5 V Nhiệt độ hoạt động: -40oC-85oC - - Các tốc độ.
  3. o 0-4 MHz khi điện áp 1.8-5.5V, 0-10 MHz khi điện áp 2.7- 5.5V Tiêu thụ năng lượng tại 1 MHz, 3V, 25oC đối với ATmega32L. - o Hoạt động tích cực: 1MHz, 1.8V: 240µA  32 kHz, 1.8V: 15µA (bao gồm cả bộ dao động)  o Chế độ năng lượng thấp: 1 µA khi điện áp 1.8V Sơ đồ khối, Hình 1.1 Hình 1.1 Sơ đồ khối vi điều khiển AVR
  4. 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 thường. 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ế độ 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ự. 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 Atmega88 là một bộ vi điều khiển mạnh có thể cung cấp giải pháp có tính linh động cao, giá thành rẻ cho nhiều ứng dụng đi ều khi ển nhúng. Atmega88 AVR được hỗ trợ bởi bộ chương trình đầy đủ và các tool để phát triển hệ thống, báo gồm: Bộ biên dịch C, macro assemblers, program debugger/simulators, in-circuit emulators và evaluation kits.
  5. 1.2 SƠ ĐỒ CÁC CHÂN Hình 1.2 Sơ đồ chân Mô tả các chân Điện áp cung cấp số. VCC Chân nối đất. GND (PB7:0) Port B là cổng I/O 8-bit hai chiều với các đi ện trở Port B 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 kiển cân đối với cả tín hiệu source và sink. 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ử như là đầu vào bộ khuyếch đại dao động đảo và đầu vào mạch thao tác xung nhịp bên trong.
  6. - Tuỳ thuộc việc đặt các cầu chì lựa chọn xung nh ịp, chân PB67 có thể được sử như là đầu ra từ bộ khuyếch đại dao động đảo. - Nếu như bộ dao động RC định cỡ bên trong đưoc sử dụng nhw là nguồn xung nhịp của chíp bên trong thì PB7..6 được sử dụng như là đầu vào TOSC2..1 cho Timer/Counter2 nếu như bit AS2 trong thanh ghi ASSR được đặt. (PC5:0) Port C là cổng I/O 7-bit hai chiều với các đi ện trở Port C pull-up bên trong (được lựa chọn cho mỗi bit). Bộ nhớ đệm đầu ra của Port C có đặc tính điều kiể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 cổng C 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 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. - PC6/Reset: Nếu cầu chì RSTDISBL được lập trình, PC6 được s ử dụng như là một chân I/O. Chú ý rằng đặc tính về điện của PC6 khác với các chân PC khác. - PC6/Reset: Nếu cầu chì RSTDISBL không đượ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 thậm chí các xung nhịp không còn. (PD7:0) Port D à cổng I/O 8-bit hai chiều với các đi ện trở Port D 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 điều kiể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 cổng C 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 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. AVCC AVCC là chân cấp điện cho cổng A và bộ biến đổi A/D, PC3:0. và ADC7:6. 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 được sử dụng, nó phải được nối với VCC qua bộ lọc thông thấp. Chú ý rằng PC6:4 được sử dụng điện áp VCC.
  7. AREF là chân tín hiệu tham chiếu analog nối vào bộ biến đổi AREF A/D. 1.3 KIẾN TRÚC TỔNG QUAN Hình 1.3 Sơ đồ kiến trúc AVR Để 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 đang năng 8 bit với thời gian ttruy 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ó
  8. 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 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.
  9. 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. 1.3.1 ALU – Arithmetic Logic Unit - Đơn vị xử lý số học và logic AVR 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ố. 1.3.2 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: • Bit 7 – I: 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
  10. 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 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.
  11. 1.3.3 General Purpose Register File – tệp các thanh ghi đa năng Hình 1.4 Tệp thanh ghi đâ 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 gh đ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.
  12. Hình 1.5 Các thanh ghi X, Y và Z 1.3.4 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. Hình 1.6 Sơ đồ các thanh ghi của con trỏ
  13. 1.3.5 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 3.1. Bảng 1.1 Bảng vector ngắt và reset Khi địa chỉ càng nhỏ thì thứ tự ưu tiên càng cao.
  14. 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. 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
  15. 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. 1.3.6 AVR Atmega88 Memories – bộ nhớ 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 đó, Atmega88 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ý. Atmega88 chứa 8K 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 4Kx16. 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 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.
  16. Bản đồ bộ nhớ chương trình như hình 3.7. Hình 1.7 Bản đồ bộ nhớ chương trình 1.3.6.2 SRAM Data Memory – bộ nhớ dữ liệu SRAM Bản đồ bộ nhớ dữ liệu SRAM được chỉ ra trên hình 3.8. Hình 1.8 Bản đồ bộ nhớ dữ liệu SRAM ATmega88 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.
  17. 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. 1.3.6.3 EEPROM Data Memory – bộ nhớ dữ liệu EEPROM ATmega88 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. 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 Atmega88 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
  18. • 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 Các bit này được đặt dự phòng trong Atmega88 và sẽ luôn là 0. • Bit 5..4 – EEPM1 và EEPM0: Các bit chế độ lập trình EEPROM • Bit 3 – EERIE: EEPROM Ready Interrupt Enable • Bit 2 – EEMWE: EEPROM Master Write Enable • Bit 1 – EEWE: EEPROM Write Enable • Bit 0 – EERE: EEPROM Read Enable Phòng ngừa sai lệch dữ liệu EEPROM Trong thời gian nguồn điện VCC bị sụt dữ liệu của EEPROM có thể bị sai bởi vì điện áp cung cấp quá th ấp cho CPU và EEPROM làm việc đúng. Điều này cũng tương tự đối với các hệ thống bản mạch s ử dụng EEPROM, và các giải pháp thiết kế tương tự nên được ứng dụng. Một sự sai khác dữ liệu của EEPROM có thể bi gây ra bởi 2 y ếu tố khi mà điện áp quá thấp: Đầu tiên là sự liên tiếp ghi vào EEPROM đòi hỏi một điện áp tối thiểu để hoạt động một cách đúng đắn. Th ứ 2 là CPU có thể tự thực hiện sai câu lệnh nếu điện áp cung cấp qua thấp.
  19. 1.3.6.3 Bộ nhớ I/O Tất cả các I/O và thiết bị ngoại vi được đặt vào không gian I/O. V ị trí I/O được truy truy nhập bởi lệnh LD/LDS/LDD và lệnh ST/STS/STD, chuyển đổi dữ liệu giữa 32 thanh ghi đa năng và không gian I/O. Các thanh ghi I/O trong vùng địa chỉ $00-$1F có thể truy cập trực tiếp các bit bằng cách sử dụng câu lệnh SBI và CBI. Trong các thanh ghi này, giá trị của các bit đơn có thể được kiểm tra bằng cách sử dụng các câu l ệnh SBIS và SBIC. Khi sử dụng các lệnh xác định I/O IN và OUT, đ ịa ch ỉ I/O $00 - $3F phải được sử dụng. Khi đánh địa chỉ I/O các thanh ghi nh ư là vùng dữ liệu sử dụng lệnh LD và ST,và phải thêm $20 vào các đ ịa ch ỉ này. Để tương thích với các thiết bị trong tương lai, các bit dự phòng đ ược đ ặt là 0 nếu được truy cập. Các địa chỉ bộ nhớ I/O dự phòng không nên ghi. Một vài cờ trạng thái được xoá bằng việc ghi 1 vào chúng. Các thanh ghi I/O đa năng ATmega 88 có 3 thanh ghi I/O đa năng, các thanh ghi này có th ể sử dụng để chứa mọi thông tin, đặc biệt có thể hiệu dụng để ch ứa các bi ến toàn cục và các cờ trạng thái. Các thnah ghi này có đ ịa ch ỉ t ừ 0x1F có th ể truy nhập trực tiếp đến các bit bằng cách sử dụng các câu lệnh SBI, CBI và SBIC. Bao gồm các thanh ghi: GPIOR2, GPIOR1, GPIOR0 1.3.7 Xung nhịp hệ thống và các lựa chọn xung nhịp. 1.3.7.1 Hệ thống xung nhịp và sử dụng chúng. Tất cả các xung nhịp cần phải không được kích hoạt tại một thời điểm. Để giảm tiêu thụ năng lượng, các xung nhịp dùng cho các modul không được sử dụng có thể bị treo bởi các chế độ ngủ khác nhau.
  20. Hình 1.9 Sơ đồ phân phối xung nhịp Xung nhịp cho CPU – clkCPU Xung nhịp CPU được gửi đến các vùng các nhau của hệ th ống có liên quan tới các hoạt động của các bộ phận chính của AVR. Ví dụ như tệp thanh ghi, thanh ghi trạng thái và các vùng nhớ để chứa con trỏ stack. Xung nhịp I/O – clkI/O Xung nhịp I/O được sử dụng cho đa số các module I/O, như là các bộ đếm / bộ định thời, SPI, và USART. xung nh ịp I/O cũng đ ược s ử d ụng cho module ngắt ngoài, nhưng chú ý rằng một số ngắt ngoài đ ược tìm thấy bằng logic đồng bộ, cho phép các ngắt này được tìm thấy ngay cả khi đồng hồ I/O bị treo. Cũng phải chú ý rằng việc tìm ra đi ều ki ện kh ởi động trong modul úI được thực hiện không đồng bộ khi clkI/O b ị treo, đ ịa chỉ TWI cũng được nhận ra trong tất cả các chế độ ngủ. Xung nhịp Flash – clkFLASH
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2