Giới thiệu về vi điều khiển AVR Atmega16

20 4.8K 100
Giới thiệu về vi điều khiển AVR Atmega16

Đ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

 Tốc độ làm việc 16MPIS, với thạch anh 16 MHz.  On_chip 2 cycle multipler. Bộ nhớ :  ISP Flash với khả năng 10.000 lần ghi xóa.  EEROM.  RAM. Giao tiếp JTAG :  Khả năng quét toàn diện theo chuẩn JTAG.  Hỗ trợ khả năng Debug onchip  Hỗ trợ lập trình Flash, EEROM, fuse…  Lock bit qua giao tiếp JTAG Ngoại vi :  Timer/ counter 8 bit với các chế độ : so sánh và chia tần số.  Timer/counter 16 bit với các chế độ : so sánh, chia tần số, capture, PWM.  Timer thời gian thực (Real time Clock) với bộ dao động riêng biệt.  Các kênh PWM.  Kênh biến đổi ADC 10 bit.  Hỗ trợ giao tiếp I2C.  Bộ giao tiếp nối tiếp lập trình được USART.  Giao tiếp SPI.  Watch_dog timer với bộ dao động on_chip riêng biệt. Những thuộc tính đặc biệt :  Power on reset và Brown-out detection.  Chế độ hiệu chỉnh bộ sai số cho bộ dao động RC on chip  Các chế độ ngắt ngoài và trong đa dạng.  6 mode sleep : Idle, ADC noise reduction, tiết kiệm năng lượng, power-down, standby, extended standby. Các phần mềm lập trình cho AVR : 22  AVRStudio, Code Vision. Các phần mềm này có hỗ trợ phần nạp và Debug on chip.  Ngoài ra có thể dùng chương trình nạp PonyProg2000, Winpic800 … 2.1.2) Một số đặc trưng AVR có cấu trúc Havard trong đó đường truyền cho bộ nhớ dữ liệu (data memory bus) và đường truyền cho bộ nhớ chương trình (Program memory bus) được tách riêng. Data memory bus chỉ có 8 bit và được kết nối với hầu hết các thiết bị ngoại vi, các Register File. Trong khi đó, program memory bus có độ rộng 16 bit và chỉ phục vụ cho thanh ghi lệnh (instruction register). Bộ nhớ chương trình (program memory) là bộ nhớ Flash lập trình được. Trong các loại AVR cũ như AT90S1200 bộ nhớ chương trình chỉ gồm một phần là Application Flash Section còn trong các loại AVR mới có thêm phần Boot Flash Section. Chức năng chính của bộ nhớ chương trình là chứa các lệnh (instruction) nên chúng ta không có nhiều cơ hội tác động nên bộ nhớ này khi lập trình cho chip. Cũng chính vậy mà đối với người lập trình thì bộ nhớ này “không quá quan trọng”. Tất cả các thanh ghi quan trọng cần khảo sát nằm trong bộ nhớ dữ liệu của chip. 23 Hình 2 - Cấu trúc bộ nhớ AVR Bộ nhớ dữ liệu (data memory) : đây là phần chứa các thanh ghi quan trọng nhất của chip. Bộ nhớ dữ liệu trên các chip AVR có độ lớn khác nhau tùy theo mỗi chip. Tuy nhiên về cơ bản bộ nhớ này được chia làm các phần :  Tệp thanh ghi (Register file) : gồm 32 thanh ghi 8 bit có địa chỉ tuyệt đối từ 0x0000 đến 0x001F. Các thanh ghi này được đặt tên là từ R0 đến R31. Chúng có đặc điểm : • Được truy cập trực tiếp trong các instruction. • Các toán tử, phép toán thực hiện trên các thanh ghi này chỉ cần một xung Clock. • Tệp thanh ghi được kết nối trực tiếp với bộ xử lý trung tâm, CPU chip. • Chúng là nguồn chứa các số hạng trong các phép toán và cũng là đích chứa kết quả  Các thanh ghi vào ra (thanh ghi I/O hay còn gọi là vùng nhớ I/O) là cổng giao tiếp giữa CPU với thiết bị ngoại vi. Tất cả các 24 thanh ghi điều khiển, trạng thái … của thiết bị ngoại vi đều nằm ở đây.  RAM ngoại (External RAM) : các chip vi điều khiển AVR cho phép người dùng có thể gắn thêm RAM ngoài để chứa biến, vùng này thực chất chỉ tồn tại khi nào người sử dụng gắn thêm bộ nhớ ngoài vào chip.  EEPROM (Electrical Erasable Programmable ROM) là một phần quan trọng của các chip AVR mới, là ROM nên bộ nhớ này không bị xóa ngay cả khi không cấp nguồn nuôi chip, rất thích hợp cho các ứng dụng lưu trữ dữ liệu. 2.1.3) Một số đặc trưng Hình 2 - Cấu trúc bên trong của AVR 25 Hoạt động :Các lệnh được chứa trong bộ nhớ chương trình Flash Memory dưới dạng các thanh ghi 16 bit. Bộ nhớ chương trình được truy cập trong mỗi chu kỳ xung Clock và một lệnh chứa trong Program memory được load vào thanh ghi lệnh (instruction Register), thanh ghi lệnh tác động cũng như lựa chọn tệp thanh ghi cũng như RAM cho ALU thực thi. Trong khi thực thi chương trình, địa chỉ của dòng lệnh đang thực thi được quyết định bởi bộ đếm chương trình – PC (Program Counter). AVR có ưu điểm là hầu hết các lệnh đều được thực thi trong một chu kỳ xung nhịp, thế mà trong một số trường hợp dù nguồn clock của AVR nhỏ hơn một số loại vi điều khiển khác (như PIC) nhưng thời gian thực thi vẫn nhanh hơn. 2.1.4) Một số họ vi diều khiển AVR Vi điều khiển AVR rất phong phú và đa dạng, bao gồm nhiều họ khác nhau :  Họ ATUC30xxxx (xxxx thể hiện dung lượng Flash của vi điều khiển, dụ : ATUC30512 có 512 kB Flash).  Dòng vi điều khiển MEGA AVR.  Dòng Tiny AVR.  Dòng LCD AVR  Dòng USB AVR  Dòng CAN AVR. 2.2) Sơ bộ về vi điều khiển Atmega16 Atmega16 [3] là bộ vi điều khiển CMOS 8 bit tiêu thụ điện năng thấp dựa trên kiến trúc RISC (Reduced Intruction Set Computer). Vào ra Analog – digital và ngược lại. Với công nghệ này cho phép các lệnh thực thi chỉ trong một chu kì xung nhịp, thế tốc độ xử lý dữ liệu có thể đạt đến 1 triệu lệnh trên giây ở tần số 1 Mhz. 26 Vi điều khiển này cho phép người thiết kế có thể tối ưu hoá chế độ độ tiêu thụ năng lượng mà vẫn đảm bảo tốc độ xử lí. Sơ đồ khối Hình 2 - Sơ đồ khối của Atmega16 Atmega16 có tập lệnh phong phú về số lượng với 32 thanh ghi làm việc đa năng. Toàn bộ 32 thanh ghi đều được nối trực tiếp với ALU (Arithmetic Logic Unit), cho phép truy cập 2 thanh ghi độc lập bằng một chu kì xung nhịp. Kiến trúc đạt được có tốc độ xử lý nhanh gấp 10 lần vi điều khiển dạng CISC (Complex Intruction Set Computer) thông thường. 27 Khi sử dụng vi điều khiển Atmega16, có rất nhiều phần mềm được dùng để lập trình bằng nhiều ngôn ngữ khác nhau đó là: Trình dịch Assembly như AVR studio của Atmel, Trình dịch C như win AVR, CodeVisionAVR C, ICCAVR. C - CMPPILER của GNU… Trình dịch C đã được nhiều người dụng và đánh giá tương đối mạnh, dễ tiếp cận đối với những người bắt đầu tìm hiểu AVR, đó là trình dịch CodeVisionAVR C. Phần mềm này hỗ trợ nhiều ứng dụng và có nhiều hàm có sẵn nên việc lập trình tốt hơn. 2.2.1) Đặc trưng  Được chế tạo theo kiến trúc RISC hiệu suất cao mà điện năng tiêu thụ thấp  Tập lệnh gồm 131 lệnh, hầu hết đều chỉ thực thi trong 1 chu kì xung nhịp.  Bộ nhân hai chu kì.  32 x 8 thanh ghi làm việc đa dụng.  Hoạt động tĩnh  16 MIPS với thông lượng 16MHz  8KB Flash ROM lập trình được ngay trên hệ thống :  Giao diện nối tiếp SPI có thể lập trình ngay trên hệ thống.  Cho phép 1000 lần ghi/xóa.  Bộ EEPROM 512 byte, cho phép 100.000 lần ghi/xóa  16 Kbyte bộ nhớ chương trình in-System Self-programmable Flash.  Chu kì ghi/xóa (Write/Erase) :10.000 Flash/ 100.000 EEPROM.  Độ bền dữ liệu 20 năm ở 85°C và 100 năm ở 25°C  Bộ nhớ SRAM 512 byte.  Bộ biến đổi ADC 8 kênh, 10 bit.  32 ngõ I/O lập trình được.  Bộ truyền nối tiếp bất đồng bộ vạn năng UART.  Vcc=2.7V đến 5.5V.  Tốc độ làm việc: 8 MHz đối với Atmega16L, 16MHz đối với Atmega16 tối đa . 28  Tốc độ xử lí lệnh đến 8 MIPS ở 8 MHz nghĩa là 8 triệu lệnh trên giây.  Bộ định thời gian thực (RTC) với bộ dao động và chế độ đếm tách biệt  2 bộ Timer 8 bit và 1 bộ Timer 16 bit với chế độ so sánh và chia tần số tách biệt và chế độ bắt mẫu.  4 kênh điều chế độ rộng xung PWM.  Có đến 13 interrupt ngoài và trong.  Bộ so sánh Analog.  Bộ lập trình Watch dog timer.  6 chế độ ngủ : Idle, ADC Noise Reduction, Power-save, Power- down, Standby và Extended Standby.  Giao tiếp nối tiếp Master/Slave SPI. Hình 2 - Sơ đồ chân Atmega16  VCC: Điện áp nguồn nuôi. 29  GND: Nối mass.  PortA (PA7…PA0): PortA nhận vào tín hiệu Analog và chuyển đổi qua tín hiệu Digital. Ngoài ra PortA có thể được tách ra làm vào ra 2 hướng 2 bit nếu bộ chuyển đổi A/D không được sử dụng. Khi các chân PA0 đến PA7 là các lối vào và được đặt xuống chế độ thấp từ bên ngoài, chúng sẽ là nguồn dòng nếu các điện trở nối lên nguồn dương được kích hoạt. Các chân của Port A ở vào trạng thái có điện trở cao khi tín hiệu Reset ở chế độ tích cực hoặc ngay cả khi không có tín hiệu xung đồng hồ. Port A cung cấp các đường địa chỉ/dữ liệu vào/ra hoạt động theo kiểu đa hợp kênh khi dùng bộ nhớ SRAM ở bên ngoài.  PortB,D : tương tự như PortA.  PortC (PC7…PC0): tương tự như PortA. Nhưng nếu cho phép giao diện JTAG, thì các chân PC5, PC3, PC2 sẽ hoạt động ngay cả khi reset lại tín hiệu.  Reset: Lối vào đặt lại. Bộ vi điều khiển sẽ được đặt lại khi chân này ở chế độ thấp trong hơn 50ns, các xung ngắn hơn không tạo ra tín hiệu đặt lại.  XTAL1: Lối vào bộ khuếch đại đảo và lối vào mạch tạo xung nhịp bên trong.  XTAL2: Lối ra bộ khuếch đại đảo : XTAL1 và XTAL2 lần lượt là lối vào và lối ra của một bộ khuếch đại đảo. Bộ khuếch đại này được bố trí để làm bộ tạo dao động trên chip. Một bộ tinh thể thạch anh hoặc một bộ cộng hưởng gốm có thể được sử dụng. Để điều khiển bộ vi điều khiển từ một nguồn xung nhịp bên ngoài, chân XTAL2 để trống, còn chân XTAL1 được nối với bộ dao động bên ngoài.  AREF : Là chân chuyển đổi tín hiệu analog cho bộ chuyển đổi A/D.  AVCC : Là chân nguồn cho Port A và cho bộ chuyển đổi A/D. Nó có thể tự kết nối với nguồn chính ngay cả khi ADC không được sử dụng. 30 2.2.2) CPU Kiến trúc AVR nói chung, các chức năng chính của CPU đảm bảo sự thực thi chính xác process. CPU phải có khả năng truy xuất bộ nhớ, thực hiện tính toán, điều khiển thiết bị ngoại vi và các kênh ngắt. Trong thứ tự thực hiện song song, AVR sử dụng kiến trúc Harvard với bộ nhớ tách rời giữa hai luồng process và dữ liệu. Các chỉ lệnh trong bộ nhớ process được thực hiện với những mức pipeline đơn. Trong khi một lệnh dang thực thi, lệnh tiếp theo sẽ được tìm nạp trước từ bộ nhớ process. Khái niệm này cho phép các lệnh sẽ được thực hiện trong mọi chu kỳ xung. Bộ nhớ process là hệ thống bộ nhớ Flash lập trình lại được. Truy xuất nhanh thanh ghi File chứa 32*8 bit thanh ghi làm việc đa năng với một chu kỳ xung đơn truy xuất thời gian. Điều này cho phép bộ tính toán ALU làm việc đơn chu kỳ. 6 trong 32 thanh ghi có thể sử dụng như 3 địa chỉ gián tiếp thanh ghi con trỏ cho không gian địa chỉ dữ liệu. Nó cũng có thể được sử dụng như con trỏ của bộ nhớ process Flash. Một lệnh AVR có 16 bit đơn định dạng word. Mỗi địa chỉ bộ nhớ process chứa 16 hoặc 32 lệnh. Bộ nhớ process Flash được chia ra làm 2 khu vực, khu vực khởi động process và khu vực ứng dụng process. Cả hai khu vực được thiết kế bảo vệ các bit ghi và đọc/ghi. Trong khi các ngắt và process con được gọi, địa chỉ trả về của Counter process (PC) được lưu trữ trong Stack. Stack được định phần trong dữ liệu tổng quát SRAM, vậy kích thước STACK được hạn chế bởi kích thước SRAM tổng và cách sử dụng của nó. Tất cả các process sử dụng phải khởi tạo giá trị đầu cho Stack Poiter trước khi process con hoặc ngắt được gọi. Stack Poiter được đọc/ghi được sử dụng trong không gian I/O. Dữ liệu SRAM có thể dễ dàng được truy xuất qua 5 cách đánh địa chỉ khác nhau hộ trợ trong kiến trúc AVR. Không gian bộ nhớ trong kiến trúc AVR là tất cả những bản đồ bộ nhớ phổ biến tuyến tính. Một module ngắt linh hoạt có những thanh ghi điều khiển trong không gian I/O với một ngắt 31 [...]... ngoại vi CPU như thanh ghi điều khiển, SPI, và một số chức năng I/O khác Hình 2 - Sơ đồ khối cấu trúc ATmega16 2.2.2.1 ALU – Arithmetic Logic Unit : Thực thi cao AVR ALU hoạt động trong sự kết nối trực tiếp với tất cả 32 thanh ghi hỗ trợ làm vi c Hoạt động trong ALU được chia thành 3 chức năng chính: số học, logic và chức năng bit 2.2.2.2 Thanh ghi trạng thái (Status Registers) : 32 Chứa thông tin về kết... xung Trở về từ ngắt process con đưa rad 4 chu kỳ xung bộ đếm chương trình sẽ được đưa ra từ Stack, Stack Poiter tăng thêm 2 và I-bit trong SREG được lập 2.2.3) Bộ nhớ Phần này mô tả các bộ nhớ khác nhau trong Atmega16 Kiến trúc AVR có 2 bộ nhớ chính : bộ nhớ dữ liệu và bộ nhớ process Bổ xung thêm vào đặc tính AVR một bộ nhớ EEPROM lưu trữ dữ liệu 2.2.3.1 Hệ thống bộ nhớ lập trình lại Flash Atmega16. .. Nếu điều kiện một ngắt xuất hiện trong khi cho phép ngắt bit bị xóa thì cờ ngắt sẽ được lập và nhớ đến khi ngắt cho phép hoặc cờ ngắt bị xóa bởi phần mềm Tương tự, điều kiện để các ngắt xuất hiện trong khi bit GIE(Global Interrupt Enable) bị xóa thì cờ nhớ sẽ lập và nhớ đến khi bit GIE được lập  Kiểu 2 : các ngắt sẽ được hoạt động nếu điều kiện để ngắt có mặt Những ngắt này không cần có cờ ngắt Nếu điều. .. dữ liệu được đẩy lên trên Stack với lệnh PUSH, và giảm đi 2 khi trả về địa chỉ được đẩy lên trên Stack với sự gọi process con hoặc ngắt được gọi Stack Poiter tăng lên 1 khi dữ liệu được đưa ra 34 khỏi Stack với lệnh POP, và tăng lên 2 khi dữ liệu được đưa ra khỏi Stack trả về từ process con RET hoặc trả về từ ngắt RETI Stack Poiter AVR được bổ xung như 2 thanh ghi 8 bit trong không gian I/O Số lượng... Thanh ghi điều khiển EEPROM :EECR 7 5 4 3 - - - EERIE R/W R/W R/W R/W 0 Read/Write Khởi tạo 6 - Bit 0 0 0 2 1 EEMWE 0 EEWE EERE R/W R/W R/W R/W 0 0 0 0  Bit 7…4 – Res : các bit đăng ký trước Các bit này đã được đăng ký trước trong Atmega16 và luôn được đọc là 0  Bit 3 – EERIE : EEPROM sẵn sàng cho phép ngắt Ghi EERIE lên 1 cho phép EEPROM sẵn sàng ngắt nếu I-bit trong SREG được lập Ghi EERIE về 0 sẽ... Bộ dao động chuẩn được sử dụng để lấy thời gian truy xuất EEPROM 2.2.3.4 Bộ nhớ I/O : Tất cả các Atmega16 I/O và các thiết bị ngoại vi trong không gian I/O Vị trí I/O được truy xuất bởi lệnh IN và OUT, sự chuyển dữ liệu giữa 32 thanh ghi hỗ trợ làm vi c và không gian I/O Những thanh ghi I/O thuộc phạm vi địa chỉ 00$ - $1F là bít truy xuất trực tiếp sử dụng các lệnh SBI và CBI Trong các thanh ghi giá... cứng xóa bit về 0 sau 4 chu kỳ xung  Bit 1 – EEWE : EEPROM cho phép ghi EEPROM cho phép ghi tín hiệu EEWE được ghi tín hiệu tra cứu tới EEPROM Khi địa chỉ và dữ liệu đưa lên chính xác, bit EEWE phải ghi lên 1 Bit EEMWE phải ghi lên 1 trước khi logic 1 được ghi cho EEWE Các bước cần làm khi ghi EEPROM (bước 3 và 4 có thể bỏ qua)  Đợi đến khi EEWE trở về 0  Đợi đến khi SPMEN trong SPMCR trở về 0  Ghi... chu kỳ truy xuất SRAM 2.2.3.3 Bộ nhớ dữ liệu EEPROM 38 Atmega16 chứa 512 byte bộ nhớ dữ liệu EEPROM Nó được tổ chức như một không gian dữ liệu riêng biệt, mỗi byte đơn có thể đọc và ghi EEPRAM có khả năng thực hiện 100.000 chu kỳ ghi/xóa Truy xuất giữa EEPRAM và CPU được mô tả theo đặc tả thanh ghi địa chỉ, thanh ghi dữ liệu và thanh ghi điều khiển EEPROM Thanh ghi địa chỉ EEPROM :EEARH và EEARL 15... ngõ ra 8 bit và một kết quả ngõ vào 8 bit  Hai toán hạng ngõ ra 8 bit và một kết quả ngõ vào 16 bit 33  Một toán hạng ngõ ra 16 bit và một kết quả ngõ vào 16 bit Hình 2 - Các thanh ghi hỗ trợ làm vi c AVR CPU 2.2.2.4 Con trỏ ngăn xếp (Stack pointer): 15 Khởi tạo 13 12 11 10 9 8 SP14 SP13 SP12 SP11 SP10 SP9 SP8 SP7 Bit Read/Write 14 SP15 Bit SP6 SP5 SP4 SP3 SP2 SP1 SP0 5 R /W R /W 0 0 4 R/W R/W 0... các ngắt sẽ được hoạt động nếu điều kiện để ngắt có mặt Những ngắt này không cần có cờ ngắt Nếu điều kiện ngắt không xuất hiện trước khi ngắt cho phép ngắt sẽ không được hoạt động Khi AVR thoát khỏi 1 ngắt, nó sẽ luôn trả về process chính và thực thi hơn một lệnh trước khi tạm dừng ngắt Chú ý thanh ghi trạng thái không tự động lưu trữ 35 khi vào một thủ tục ngắt và cũng không tự phục hồi khi thoát ra . Flash của vi điều khiển, ví dụ : ATUC30512 có 512 kB Flash).  Dòng vi điều khiển MEGA AVR.  Dòng Tiny AVR.  Dòng LCD AVR  Dòng USB AVR  Dòng CAN AVR. 2.2). hơn một số loại vi điều khiển khác (như PIC) nhưng thời gian thực thi vẫn nhanh hơn. 2.1.4) Một số họ vi diều khiển AVR Vi điều khiển AVR rất phong phú

Ngày đăng: 26/10/2013, 01:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan