Tìm hiểu về vi điều khiển AVR ,ngôn ngữ C , phần mềm WINavr và LCD 16x2
Trang 1MỞ ĐẦU
ỹ thuật vi điều khiển hiện nay rất phát triển rất mạnh mẽ, nó được ứng dụng
vào rất rất nhiều lĩnh vực từ trong đời sống sinh hoạt hàng ngày(khóa số, tủ lạnh, ti
vi, ) cho tới các lĩnh vực trong công nghiệp cũng như trong quân sự Do có nhiều ưu điểm như nhỏ gọn, khả năng lập trình để điều khiển theo ý muốn, giá thành thấp, có khả năng xử lí được nhiều công việc… lên vi điều khiển trở thành linh kiện không thể thiếu được trong các thiết bị phục vụ con người chúng ta
AVR là một trong rất nhiều dòng vi điều khiển 8bit hiện nay Nó được ứng dụng rộng rãi trong lĩnh vực điều khiển ứng dụng, lĩnh vực điều khiển đo lường, lĩnh vực điều khiển tự động, lĩnh vực điều khiển quảng cáo v.v …
Với những kiến thức đã có được về dòng vi điều khiển AVR em đã chọn đề tài tốt nghiêp: ”Thiết kế hệ thống đo nhiệt độ sử dụng LM335”
Mục tiêu của đề tài là kết hợp vi điều khiển AVR kết hợp với IC cảm biến nhiệt
độ thành hệ thống đo nhiệt độ IC LM335 sẽ cảm biến nhiệt độ bên ngoài môi trường ( chuyển nhiệt độ thành tín hiệu điện áp) đưa đến vi điều khiển AVR xử lý rồi hiển thị trên LCD 16x2
Nội dung của đồ án chia làm 3 chương :
-, Chương 1: Tìm hiểu về một số loại cảm biến nhiệt thông dụng và LM335
-, Chương 2: Tìm hiểu về vi điều khiển AVR ,ngôn ngữ C , phần mềm WINavr và LCD 16x2.
-, Chương 3: Thiết kế hệ thống đo nhiệt độ xử dụng LM335.
Trang 2Nguyên lý hoạt động của cảm biến nhiệt độ : Nhiệt độ từ môi trường sẽ được cảm biến hấp thu, tại đây tùy theo cơ cấu của cảm biến sẽ biến đại lượng nhiệt này thành một đại lượng điện nào đó ( điện áp, dòng điện ) Như thế một yếu tố hết sức quan trọng đó là “ nhiệt độ môi trường cần đo” và “nhiệt độ cảm nhận của cảm biến”
Cụ thể điều này là: Các loại cảm biến mà ta trông thấy nó đều là cái vỏ bảo vệ, phần tử cảm biến nằm bên trong cái vỏ này ( bán dẫn, lưỡng kim….) do đó việc đo có chính xác hay không tùy thuộc vào việc truyền nhiệt từ môi trường vào đến phần tử cảm biến tổn thất bao nhiêu ( 1 trong những yếu tố quyết định giá cảm biến nhiệt ).
PHÂN LOẠI CẢM BIẾN NHIỆT
- Cặp nhiệt điện ( Thermocouple )
- Nhiệt điện trở ( RTD-resitance temperature detector ) - PT100
- Thermistor
- Bán dẫn ( Diode, IC ,….)
- Ngoài ra còn có loại đo nhiệt không tiếp xúc ( hỏa kế- Pyrometer ) Dùng hồng ngoại hay lazer
1 CẶP NHIỆT ĐIỆN ( Thermocouples )
- Cấu tạo: Gồm 2 chất liệu kim loại khác nhau, hàn dính một đầu
- Nguyên lý: Nhiệt độ thay đổi cho ra sức điện động thay đổi ( mV)
- Ưu điểm: Bền, đo nhiệt độ cao
- Khuyết điểm: Nhiều yếu tố ảnh hưởng làm sai số Độ nhạy không cao
- Thường dùng: Lò nhiệt, môi trường khắt nghiệt, đo nhiệt nhớt máy nén,…
- Tầm đo: -100 D.C <1400 D.C
Trang 3- Gồm 2 dây kim loại khác nhau được hàn dính 1 đầu gọi là đầu nóng ( hay đầu đo), đầu còn lại gọi là đầu lạnh ( hay là đầu chuẩn ) Khi có sự chênh lệch nhiệt độ giữa đầu nóng và đầu lạnh thì sẽ phát sinh 1 sức điện động V tại đầu lạnh Một vấn đề đặt ra
là phải ổn định và đo được nhiệt độ ở đầu lạnh, điều này tùy thuộc rất lớn vào chất liệu
Do vậy mới cho ra các chủng loại cặp nhiệt độ, mỗi loại cho ra 1 sức điện động khác nhau: E, J, K, R, S, T Vì thế cần lưu ý điều này để chọn đầu dò và bộ điều khiển cho thích hợp
- Dây của cặp nhiệt điện thì không dài để nối đến bộ điều khiển, yếu tố dẫn đến không chính xác là chổ này, để giải quyết điều này chúng ta phải bù trừ cho nó ( offset trên bộ điều khiển )
Lưu ý khi sử dụng:
- Từ những yếu tố trên khi sử dụng loại cảm biến này chúng ta lưu ý là không nên nối thêm dây ( vì tín hiệu cho ra là mV nối sẽ suy hao rất nhiều ) Cọng dây của cảm biến nên để thông thoáng ( đừng cho cọng dây này dính vào môi trường đo )
- Lưu ý: Vì tín hiệu cho ra là điện áp ( có cực âm và dương ) do vậy cần chú ý kí hiệu để lắp đặt vào bộ khuếch đại cho đúng
Hình cặp nhiệt điện
2 NHIỆT ĐIỆN TRỞ ( RTD-resistane temperature detector ) - PT100
Cấu tạo của nhiệt điện trở RTD
- Cấu tạo của RTD gồm có dây kim loại làm từ: Đồng, Nikel, Platinum,…được quấn tùy theo hình dáng của đầu đo Khi nhiệt độ thay đổi điện trở giữa hai đầu dây kim loại này sẽ thay đổi, và tùy chất liệu kim loại sẽ có độ tuyến tính trong một khoảng nhiệt
độ nhất định.Phổ biến nhất của RTD là loại cảm biến Pt, được làm từ Platinum
Platinum có điện trở suất cao, chống oxy hóa, độ nhạy cao, dải nhiệt đo được dài
Trang 4Thường có các loại: 100, 200, 500,1000 ohm tại 0 D.C Điện trở càng cao thì độ nhạy nhiệt càng cao.RTD thường có loại 2 dây, 3 dây và 4 dây.
Lưu ý khi sử dụng:
- Loại RTD 4 dây giảm điện trở dây dẫn đi 1/2, giúp hạn chế sai số
- Cách sử dụng của RTD khá dễ chịu hơn so với Thermocouple Chúng ta có thể nối thêm dây cho loại cảm biến này ( hàn kĩ, chất lượng dây tốt, có chống nhiễu )
- Vì là biến thiên điện trở nên không quan tâm đến chiều đấu dây
Ta sẽ tìm hiểu kỹ hơn nguyên lý đo nhiệt độ của Pt100 :
Thiết bị đo nhiệt độ Pt100 hay còn gọi là can nhiệt Pt có cấu tạo là một điện trở nhiệt (điện trở thay đổi khi nhiệt độ thay đổi).Điện trở này là một dây kim loại có bọc các đoạn sứ bao quanh toàn bộ dây kim loại.Phần bao bọc này lại được đặt trong một ống bảo vệ(thermowell) thường có dạng hình tròn,chỉ đưa 2 đầu dây kim loại ra để kết nối với thiết bị chuyển đổi.Phần ống bảo vệ sẽ được đặt ở nơi cần đo nhiệt độ,thông thường can nhiệt Pt100 chỉ đo được nhiệt độ tối đa là 600độC
Hai đầu dây kim loại để chừa ra ở phần ống bảo vệ được kết nối tới một thiết bị gọi là bộ chuyển đổi tín hiệu nhiệt thành tín hiệu điện phục vụ cho việc truyền tới phòng điều khiển giám sát.Thiết bị chuyển đổi có cấu tạo chẳng qua là một cầu điện trở có một nhánh chính là Pt100(có điện trở là 100 ôm ở 0 độ C)
3 THERMISTOR
- Cấu tạo: Làm từ hổn hợp các oxid kim loại: mangan, nickel, cobalt,…
- Nguyên lý: Thay đổi điện trở khi nhiệt độ thay đổi
- Ưu điểm: Bền, rẽ tiền, dễ chế tạo
- Khuyết điểm: Dãy tuyến tính hẹp
- Thường dùng: Làm các chức năng bảo vệ, ép vào cuộn dây động cơ, mạch điện tử
- Tầm đo: 50 <150 D.C
Cấu tạo Thermistor.
- Thermistor được cấu tạo từ hổn hợp các bột ocid Các bột này được hòa trộn theo
tỉ lệ và khối lượng nhất định sau đó được nén chặt và nung ở nhiệt độ cao Và mức độ dẫn điện của hổn hợp này sẽ thay đổi khi nhiệt độ thay đổi
- Có hai loại thermistor: Hệ số nhiệt dương PTC- điện trở tăng theo nhiệt độ; Hệ số
Trang 5nhiệt âm NTC – điện trở giảm theo nhiệt độ Thường dùng nhất là loại NTC.
- Thermistor chỉ tuyển tính trong khoảng nhiệt độ nhất định 50-150độ C do vậy người ta ít dùng để dùng làm cảm biến đo nhiệt Chỉ sử dụng trong các mục đích bảo vệ, ngắt nhiệt, các bác nhà ta thường gọi là Tẹt-mít Cái Block lạnh nào cũng có một vài bộ gắn chặt vào cuộn dây động cơ
- Cấu tạo: Làm từ các loại chất bán dẫn
- Nguyên lý: Sự phân cực của các chất bán dẫn bị ảnh hưởng bởi nhiệt độ
- Ưu điểm: Rẻ tiền, dễ chế tạo, độ nhạy cao, chống nhiễu tốt, mạch xử lý đơn giản
- Khuyết điểm: Không chịu nhiệt độ cao, kém bền
- Thường dùng: Đo nhiệt độ không khí, dùng trong các thiết bị đo, bảo vệ các mạch điện tử
- Tầm đo: -50 <150 D.C
Trang 6- Cảm biến nhiệt Bán Dẫn là những loại cảm biến được chế tạo từ những chất bán dẫn Có các loại như Diode, Transistor, IC Nguyên lý của chúng là dựa trên mức độ phân cực của các lớp P-N tuyến tính với nhiệt độ môi trường Ngày nay với sự phát triển của ngành công nghệ bán dẫn đã cho ra đời rất nhiều loại cảm biến nhiệt với sự tích hợp của nhiều ưu điểm: Độ chính xác cao, chống nhiễu tốt, hoạt động ổn định, mạch điện xử lý đơn giản, rẽ tiền,….
- Ta dễ dàng bắt gặp các cảm biến loại này dưới dạng diode ( hình dáng tương tự Pt100), các loại IC như: LM35, LM335, LM45 Nguyên lý của chúng là nhiệt độ thay đổi sẽ cho ra điện áp thay đổi Điện áp này được phân áp từ một điện áp chuẩn có trong mạch
IC cảm biến nhiệt LM35 Cảm biến nhiệt dạng Diode
Gần đây có cho ra đời IC cảm biến nhiệt cao cấp, chúng hổ trợ luôn cả chuẩn truyền thông I2C ( DS18B20 ) mở ra một xu hướng mới trong “ thế giới cảm biến”
IC cảm biến nhiệt DS18B20
Lưu ý khi sử dụng:
Trang 7- Vì được chế tạo từ các thành phần bán dẫn nên cảm biến nhiệt Bán Dẫn kém bền, không chịu nhiệt độ cao Nếu vượt ngưỡng bảo vệ có thể làm hỏng cảm biến.
- Cảm biến bán dẫn mỗi loại chỉ tuyến tính trong một giới hạn nào đó, ngoài dải này cảm biến sẽ mất tác dụng Hết sức quan tâm đến tầm đo của loại cảm biến này để đạt được sự chính xác
- Loại cảm biến này kém chịu đựng trong môi trường khắc nghiệt: Ẩm cao, hóa chất có tính ăn mòn, rung sốc va chạm mạnh
*, Trong phần này ta sẽ tìm hiểu kỹ hơn về IC LM335:
.a, Temperature accuracy ( sự chính xác của nhiệt độ đo)
Min Typ Max Min typ Max Điên áp ra TC=250C,
Trang 8.c Các cách kết nối LM335 trong mạch
H3
Trang 9-, Trong H4 : ta mắc song song 3 IC LM335 với nhau, rồi mắc nối tiếp với nguồn 15V qua điện trở 6K Với cách này ta thu được điện áp ở đầu ra biến thiên 10mV/0K.
*, Hình dạng của LM335 thường thấy trong thực tế :
Nó có 3 chân chính : 2 chân cấp nguồn và 1 chân out tín hiệu Analog
Khi ta cấp điện áp 5V cho LM335 thì nhiệt độ đo được từ cảm biến sẽ chuyển thành điện áp tương ứng tại chân số 2 (Vout) Điện áp này được tỉ lệ với giải nhiệt độ mà nó
đo được Với độ giải của nhiệt độ đầu ra là 10mV/K Hoạt động trong giải điện áp từ 0 cho đến 5V và giải nhiệt độ đo được từ 0 oC đến 100oC Và cần chú ý đến những thông
số chính sau :
+ Hoạt động chính xác ở dòng điện đầu vào từ 0.4mA đến 5mA Dòng điện đầu vào
Trang 10ngoài khoảng này kết quả đo sẽ sai
+ Điện áp cấp vào ổn định là 5V
+ Trở kháng đầu ra thấp 1 ôm
+ Giải nhiệt độ môi trường là từ 0 đến 100 C
Như vậy LM335 nó cho chúng ta tín hiệu tương tự (Analog) và chúng phải xử lý tín hiệu này thành nhiệt độ
1, Tìm hiểu về vi điều khiển AVR
1.1 Tổng quan về dòng vi điều khiển AVR
- Vi điều khiển AVR do hãng Atmel (Hoa Kì) sản xuất được gới thiệu lần đầu năm 1996 AVR có rất nhiều dòng khác nhau bao gồm dòng Tiny AVR (như AT tiny 13,
AT tiny 22…) có kích thước bộ nhớ nhỏ, ít bộ phận ngoại vi, rồi đến dòng AVR (chẳn hạn AT90S8535, AT90S8515,…) có kích thước bộ nhớ vào loại trung bình và mạnh hơn
là dòng Mega (như ATmega32, ATmega128,…) với bộ nhớ có kích thước vài Kbyte đến vài trăm Kbye cùng với các bộ ngoại vi đa dạng được tích hợp trên chip, cũng có dòng tích hợp cả bộ LCD trên chip (dòng LCD AVR) Tốc độ của dòng ATmega cũng cao hơn
so với các dòng khác
- Sự khác nhau cơ bản giữa các dòng chính là cấu trúc ngoại vi, còn nhân thì vẫn như nhau (hình 1.1) Đặt biệt, năm 2008, Atmel lại tiếp tục cho ra đời dòng AVR mới là XmegaAVR, với những tính năng mạnh mẽ chưa từng có ở các dòng AVR trước đó Có thể nói AVR là dòng MCU 8 bit mạnh mẽ nhất hiện nay
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 chíp cụ thể.
Trang 115- 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 chíp 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.
1 Kbyte RAM tĩnh (SRAM)
32 đường kết nối I/O mục đích chung
32 thanh ghi làm việc mục đích chung được nối trực tiếp với đơn vị xử lý
số học và logic (ALU)
Một giao diện JATG cho quét ngoại vi
Lập trình và hỗ trợ gỡ rối trên chip
Trang 12 3 Timer/Counter linh hoạt với các chế độ so sánh.
Các ngắt ngoài và ngắt trong (21 nguyên nhân ngắt)
Chuẩn truyền dữ liệu nối tiếp USART có thể lập trình
Một ADC 10 bit, 8 kênh với các kênh đầu vào ADC có thể lựa chọn bằng cách lập trình
Một Watchdog Timer có thể lập trình với bộ tạo dao động bên trong
Một cổng nối tiếp SPI ( serial peripheral interface)
6 chế độ tiết kiệm năng lượng có thể lựa chọn bằng phần mềm
1.2.2 Sơ đồ khối và cấu trúc của vi điều khiển ATMEGA 16.
Trang 13Hình 1.2 Sơ đồ khối của Atmega16.
Trang 14Hình 1.3 Sơ đồ cấu trúc của ATMEGA16.
- Phần cốt lõi là AVR kết hợp với các tập lệnh đa dạng với 32 thanh ghi đa năng
32 thanh ghi được kết nối trực tiếp với bộ số học ALU (Arthmetic Logic Unit), cho phép truy cập 2 thanh ghi độc lập trong một lệnh đơn được thực thi trong một xung nhịp Cấu trúc này mang lại nhiều khả năng lập trình có hiệu quả cao đạt trên 10 lần nhanh hơn bộ
vi xử lý CISC (Complex Instruction Set Computer: máy tính có tập lệnh phức tạp) thông thường
- Atmega16 cung cấp các thông số đặc trưng sau: bộ nhớ Flash 16kbyte lập trình được ngay trên hệ thống với khả năng đọc và ghi, EEPPROM 512byte, SRAM 1kbyte,
32 đường vào/ra đa năng, 32 thanh ghi làm việc đa năng, 1 giao diện JTAG, việc lập trình và đáp ứng bộ dò sai trên chip, 3 bộ Timer/Counter làm việc linh hoạt với chế độ
so sánh, các ngắt ngoài và trong, 1 bộ USART lập trình nối tiếp, 1 giao diện nối tiếp 2 dây byte định hướng, 1 bộ chuyển ADC 8 kênh 10 bit với trạng thái đầu vào vi sai với
độ lợi có thể lập trình, 1 bộ định thời Watchdog có thể lập trình với bộ dao động bên trong, 1 cổng nối tiếp SPI, và 6 chế độ tiết kiệm năng lượng có thể lựa chọn nhờ phần
Trang 15mềm Chế độ nghỉ làm cho CPU ngừng hoạt động trong khi cho phép bộ USART, bộ giao diện 2 dây, bộ chuyển đổi A/D, SRAM, bộ Timer/Counter, cổng SPI, và hệ thống ngắt vẫn tiếp tục làm việc Chế độ làm giảm mức tiêu thụ năng lượng lưu nội dung thanh ghi nhưng lại để bộ dao động hoạt động, cấm tất cả các chức năng khác trên chip cho đến khi có tín hiệu ngắt ngoài kế tiếp hoặc tín hiệu reset phần cứng Ở chế độ tiết kiệm năng lượng, bộ Timer bất đồng bộ vẫn tiếp tục hoạt động và cho phép người sử dụng vẫn tiếp tục duy trì 1 bộ định thời cơ sở trong khi các thiết bị còn lại trong chế độ nghỉ Chế độ giảm nhiễu ADC làm cho CPU ngừng hoạt động và tất cả các môđun vào/ra ngoại trừ bộ Timer bất đồng bộ và bộ ADC, để nhiễu của việc chuyển mạch đạt cực tiều trong suốt quá trình chuyển đổi ADC Trong chế độ dự phòng, thạch anh/bộ dao động cộng hưởng sẽ hoạt động trong khi các thiết bị còn lại trong chế độ nghỉ Điều này cho phép việc khởi động nhanh được kết hợp với việc tiêu thụ năng lượng thấp Ở chế
độ dự phòng bên ngoài, cả hai bộ dao động chính và Timer bất đồng bộ vẫn tiếp tục hoạt động
- Các thiết bị được chế tạo bởi công tuy Atmel sử dụng công nghệ bộ nhớ không
tự mất dữ liệu và có mật độ cao Bộ nhớ Flash ISP trên chip cho phép bộ nhớ chương trình có thể lập trình được ngay trên hệ thống qua 1 bộ giao diện nối tiếp SPI hoặc bằng
bộ nạp chương trình vào bộ nhớ không tự mất dữ liệu thông thường, hoặc bằng 1
chương trình khởi động trên chip đang chạy trong lõi AVR Chương trình boot có thể sử dụng một vài giao diện để tải chương trình ứng dụng trong bộ nhớ Flash ứng dụng Phần mềm trong đoạn Flash khởi động sẽ tiếp tục hoạt động trong khi đoạn Flash khởi động được cập nhật, cung cấp hoạt động đọc ghi một cách chính xác Bằng cách kết hợp
1 CPU 8 bit theo cấu trúc RISC với bộ nhớ Flash lập trình ngay trên hệ thống trong một chip đơn, ATmega16 của Atmel là bộ vi điều khiển mạnh nó đáp ứng sự linh hoạt cao
và là giải pháp có giá trị hiệu quả để đưa nhiều ứng dụng điều khiển vào
Trang 161.2.3 Sơ đồ và chức năng các chân
Hình 1.4 Sơ đồ chân ATMEGA16
Port A cũng được sử dụng khi một tín hiệu tương tự ở ngõ vào đến bộ chuyển đổi A/D Các chân của Port A sẽ được đặt ở trạng thái 3 (tổng trở cao) khi tín hiệu reset ở mức tích cực ngay cả khi tín hiệu xung nhịp không hoạt động
Các chân Port B sẽ được đặt trạng thái thứ 3 khi tín hiệu reset ở mức tích cực, ngay khi xung nhịp không hoạt động
Trang 17PC3(TMS) và PC2(TCK) sẽ được kích hoạt ngay cả khi nếu một reset xuất hiện.
VCC, GND, RESET, XTAL1, XTAL2, AVCC, AREF
XTAL1: Ngõ vào của bộ khuếch đại dao động đảo và mạch tạo xung nhịp bên trong
XTAL2: Ngõ ra của bộ khuếch đại dao động đảo
AVCC: là chân nguồn cung cấp cho Port A và bộ chuyển đổi A/D Nó nên được kết nối ngoài tới VCC, ngay khi nếu bộ ADC không được dùng Nếu bộ ADC được sử dụng thì nó được kết nối tới VCC thông qua một mạch lọc thông thấp
AREF: là chân tham chiếu cho bộ chuyển đổi A/D
Trang 181.2.4 Tổ chức bộ nhớ của ATMEGA16
Để tăng tối đa hiệu suất và tính tương thích, vi điều khiển AVR sử dụng kiến trúc Havard tức là bộ nhớ dữ liệu và bộ nhớ chương trình tách biệt nhau cả về vùng nhớ và đường bus
Bộ nhớ chương trình của AVR là bộ nhớ Flash có dung lượng 16kbyte Bộ nhớ chương trình có độ rộng bus là 16 bit Những địa chỉ đầu tiên của bộ nhớ chương trình được dùng cho bảng vecto ngắt có địa chỉ từ 0000H – 0028H(gồm 21 ngắt) Bộ nhớ chương trình Flash được chia thành 2 phần, phần chương trình khởi động và phần chương trình ứng dụng Cả hai phần đều dành những bit khóa cho việc bảo vệ ghi và đọc/ghi
Bộ nhớ dữ liệu của AVR chia làm 2 phần chính là bộ nhớ SRAM và bộ nhớ
EEPROM Tuy cùng là bộ nhớ dữ liệu nhưng hai bộ nhớ này lại nằm tách biệt nhau và được đánh địa chỉ riêng
Bộ nhớ SRAM được chia thành 3 phần: Phần đầu là 32 thanh ghi chức năng chung (General Purpose Register ) R0 đến R31 có địa chỉ từ $0000 tới $001F Phần thứ
2 là không gian nhớ vào ra với 64 thanh ghi vào ra ( I/O Register ) có địa chỉ từ $0020 tới $005F Phần thứ 3 có địa chỉ từ $0060 tới $045F là vùng của bộ nhớ SRAM nội có kích thước là 1Kbyte
Bộ nhớ EEPROM: Đây là bộ nhớ dữ liệu có thể ghi xóa ngay trong lúc vi điều khiển đang hoạt động và không bị mất dữ liệu khi nguồn điện cung cấp bị cắt Có thể ví
bộ nhớ dữ liệu EEPROM giống như là ổ cứng ( Hard disk ) của máy vi tính Với vi điều khiển ATmega16, bộ nhớ EEPROM có kích thước là 512byte EEPROM được xem như
là một bộ nhớ vào ra được đánh địa chỉ độc lập với SRAM, điều này có nghĩa là ta cần
sử dụng các lệnh in, out … khi muốn truy xuất tới EEPROM Bộ nhớ có địa chỉ từ $000 tới $1FF
Trang 19Hình 1.5 Tổ chức bộ nhớ của ATmega16
1.2.5 Một số thanh ghi của ATMEGA16
1 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
Trang 20Bit 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 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
2 Thanh ghi địa chỉ EEPROM – EEARH và EEARL
• Bit 15 9 – Res: Reserved Bits là các bit thụ trong ATmega16 và luôn luôn được đặt ở mức [0]
• Bit 8 0 – EEAR8 0: EEPROM Address