1. Trang chủ
  2. » Kỹ Năng Mềm

đồ an mạch đếm sản phẩm

83 498 1

Đ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 83
Dung lượng 2,8 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

DANH MỤC CÁC KÍ HIỆU, CÁC CHỮ VIẾT TẮT ADC Analog-to digital Converter Bộ biến đổi thông tin tương tự - thông tin số CMOS Complementary metal-oxide semiconductor Chất bán dẫn kim loạ

Trang 1

MỤC LỤC

TRANG

DANH MỤC CÁC KÍ HIỆU CÁC CHỮ VIẾT TẮT………4

Lời nói đầu……… 6

CHƯƠNG I: CƠ SỞ LÝ THUYẾT ……….……… 6

I ĐẶT VẤN ĐỀ……… ……… … 6

1.1 Lý do chọn đề tài……… ……… 6

1.2 Mục đích yêu cầu của đề tài……… ……… ……6

1.3 Vấn đề cần giải quyết……… ……… ….6

1.3.1 Phương án thiết kế……… 6

1.3.2 Giới hạn của đề tài……… 8

II LÝ THUYẾT THIẾT KẾ …… ……….……… …9

2.1 Các linh kiên dùng trong mạch………….…….……….… ….9

2.1.1 Tổng quan về vi điều khiển ATMEGA8……….…… 9

2.1.2 Cấu trúc chung của AVR……… ….…………10

2.1.2.1 Cấu trúc tổng quát ……….……… 10

2.1.2.2 ALU……… 10

2.1.2.3 Thanh ghi trạng thái ……… 10

2.1.2.4 Các thanh ghi chức năng chung……… 11

2.1.2.5 Con trỏ ngăn xếp(sp)… ……… 12

2.1.3 Cấu trúc ngắt của ATMEGA8……… ………13

2.1.3.1 Khái niệm ngắt……… 13

2.1.3.2 Trình phục vụ ngắt……….……… 13

2.1.3.3 Bảng vector ngắt……… 13

2.1.3.4 Thứ tự ưu tiên ngắt……… ….14

2.1.3.5 Ngắt trong ngắt……… 14

2.1.4 Cấu trúc bộ nhớ……….……… 17

2.1.4.1 Bộ nhớ chương trình( bộ nhớ flash)……… 18

2.1.4.2 Bộ nhớ dữ liệu SRAM……… 18

2.1.4.3 Bộ nhớ dữ liệu EEPROM……….……….18

Trang 2

2.1.5 Các cổng vào ra( I/O)……… 21

2.1.5.1 Các chức năng của Port B……….……….……… 22

2.1.5.2 Các chức năng cảu Port C……….……… 23

2.1.5.3 Các chức năng của Port D……….24

2.1.5.4 Mô tả thanh ghi của Port I/O……….25

2.1.6 Bộ định thời 8 bit timer/counter 0……….…… 26

2.1.6.1 Hoạt động của bộ timer/ counter……… …… ……… 27

2.1.6.2 Đơn vị đếm………29

2.1.6.3 Đơn vị so sánh ngõ ra……… ……….……… … 30

2.1.6.4 Mô tả các thanh ghi……….……… 30

2.1.7 Bộ so sánh tương tự( Alalog Comparator)……… ………… 32

2.1.8 USART……… 34

2.1.8.1 Đặc điểm……… ……… 34

2.1.8.2 Tạo xung clock……… ………35

2.1.8.3 Định dạng khung truyền……… ……… 35

2.1.8.4 Khởi tạo USART……… 36

2.1.8.5 Truyền thông dữ liệu-bộ truyền USART……… 37

2.1.9 Hệ thống xung clock……… 37

2.1.9.1 Bộ dao động thạch anh……….…… …… 38

2.1.9.2 Bộ dao động thạch anh có tần số thấp……… 39

2.1.9.3 Bộ dao động R-C bên ngoài……… …… ……… 40

2.1.10 Bộ biến đổi A/D ( Alalog/digital)……… ……… 40

2.1.10.1 ADMUX……… ………40

2.1.10.2 ADCSR………41

2.1.10.3 Nguyên tắc hoạt động và lập trình điều khiển…….………41

2.2 Một số linh kiện khác trong mạch……….……….42

2.2.1 Tổng quan về vi mạch LM358……… ………42

2.2.2 Khối hiển thị-led 7 thanh……….…………45

2.2.3 IC LM7805……… 47

2.2.4 Cấu tạo và nguyên lý làm việc của LED hồng ngoại……… 49

Trang 3

2.2.5 LED phát ra ánh sáng nhìn thấy……… 50

2.2.6 Điện trở……… 51

2.2.7 Biến trở……… ……… 51

2.2.8 Tụ điện……… …52

2.3 Xây dựng sơ đồ khối tổng quát……… 54

CHƯƠNG II: THIẾT KẾ, THI CÔNG VÀ CHƯƠNG TRÌNH……… 55

I Thiết kế thi công phần cứng……… 55

1.1 Sơ đồ mạch nguyên lý……… 55

1.1.1 Sơ đồ nguyên lý của mạch chính………….……….………… 55

1.1.1.1 Mạch nguyên lý……… 55

1.1.1.2 Mạch in……….………… 59

1.2 Sơ đồ nguyên lý mạch LED……… ………59

1.2.1 Mạch nguyên lý……… 59

1.2.2 Mạch in……… ……… 60

II Chương trình điều khiển……… 61

2.1 Lưu đồ thuật toán của chương trình……… ……….…… 61

2.2 Chương trình của hệ thống……… 63

2.3 Cách nạp code cho vi đều khiển Atmega8……… 75

CHƯƠNG III: KẾT LUẬN……… 79

3.1 Ưu nhược điểm của sản phẩm……….……….79

3.2 Ứng dụng của sản phẩm vào đời sống thực tế……… ……… 80

3.3 Hình ảnh của sản phẩm……….……… 80

3.4 Kết quả… ……… 82

3.5 Lời cảm ơn……… 82

Tài liệu tham khảo……… ……… 82

Trang 4

DANH MỤC CÁC KÍ HIỆU, CÁC CHỮ VIẾT TẮT

ADC Analog-to digital Converter Bộ biến đổi thông tin

tương tự - thông tin số

CMOS Complementary metal-oxide

semiconductor

Chất bán dẫn kim loại

CPU Central Processing Unit Đơn vị xử lý trung tâm

EPROM Erasable programmable

read-only memory

Là kiểu bộ nhớ ROM có thể được ghi lại chương trình bằng cách chiếu nó bằng tia cực tím sau khi đã

tháo vỏ bảo vệ

ISP Instruction set processor Bộ xử lý tập lệnhOTP One time programmable Bộ nhớ chỉ lập trình được

một lầnPSW Program status word Từ trạng thái chương trìnhPROM Prommable read-only memory ROM lập trình đượcRAM

Random access memory Bộ nhớ truy cập ngẫu

nhiên

UART Universal Ansynchronous

Receiver and Tranmistter

Bộ truyền nhận dữ liệu không đồng bộ

Trang 5

Lời nói đầu

Ngày nay, sự phát triển mạnh mẽ của khoa học công nghệ, cuộc sống của con người

đã có những sự thay đổi ngày càng tốt hơn, mang lại sự tiện lợi tối ưu với những trang thiết bị hiện đại phục vụ công cuộc công nghiệp hóa, hiện đại hóa đất nước Góp phần vào sự phát triển đó thì ngành kỹ thuật điện tử đã góp phần không nhỏ trong sự nghiệp xây dựng và phát triển đất nước Trong đó tích hợp các mạch điện – điện tử ngày càng trở lên thiết yếu khi mà công nghệ ngày càng phát triển hơn tiến tới thời đại của vi xử lý vi mạch những mạch cồng kềnh chiếm nhiều diện tích đã bị loại bỏ dần

và thay vào đó là các mạch siêu nhỏ, gọn gàng hơn và đang được ưa chuộng Những thành tựu của nó đã có thể biến được những cái tưởng trừng như không thể thành những cái có thể, góp phần nâng cao đời sống vật chất và tinh thần cho con người Trong quá trình học tập ở trường chúng em nhận thấy việc quản lý sinh viên của mỗi giáo viên là rất vất vả Vì số lượng sinh viên trong lớp quá đông, nên để đảm bảo được sự chính xác về số lượng sinh viên trong suốt buổi học là rất khó Và về vấn đề điện trong lớp, khi tan học các bạn đều muốn về nên không ai tắt điện trong phòng, làm rất lãng phí điện

Từ những điều đó và khả năng của chúng em, trong suốt thời gian thực tập chúng em

đã muốn làm một điều gì đó mặc dù nhỏ, nhưng giúp giáo viên quản lý sinh viên và quản lý điện trong lớp học được tốt hơn, chính xác hơn Nên chúng em đã thiết kế ra một mạch đếm số học sinh ra vào lớp và quản lý điện trong lớp, nó rất gần gũi với thực tế và nó thật sự rất có ý nghĩa đối với chúng em vì đã làm được một phần nhỏ đóng góp cho ngành giáo dục cũng như cho xã hội Chúng em đã nghiên cứu đề tài dưới sự hướng dẫn nhiệt tình của thầy Vũ Việt Hưng, giảng viên khoa điện tử Vì kiến thức, kinh nghiệm của chúng em còn hạn hẹp nên đồ án không tránh được sai sót Chúng em rất mong sự đánh giá của quý thầy cô để đồ án được hoàn thiện hơn

Em xin chân thành cảm ơn!

Trang 6

CHƯƠNG I: CƠ SỞ LÝ THUYẾT

I Đặt vấn đề

1.1 Lý do chọn đề tài

- Ngày nay việc nghiên cứu ứng dụng vi điều khiển vào các ứng dụng cuộc sống khá phổ biến,điển hình là chip vi điều khiển Atmega8 Ở trong công nghiệp cũng như các lĩnh vực liên quan đến sản phẩm thì đã phát huy được lợi thế khi sử dụng

vi điều khiển việc đếm các sản phẩm đã trở nên đơn giản hơn giảm bớt được nhiều sức lao động và thời gian Cũng như ở trên giảng đường,việc ra vào lớp tự do của các sinh viên khiến cho giáo viên không thể kiểm soát được.Để hạn chế được điều này,dưới sự gợi ý của thầy VŨ VIỆT HƯNG và qua tìm hiểu chúng em đã quyết định chọn đề tài mạch đếm người ra vào trong lớp học sử dụng cảm biến hồng

ngoại ứng với vi điều khiển Atmega8

1.2 Mục đích yêu cầu của đề tài:

Trong đồ án này, chúng em thực hiện mạch đếm số sinh viên trong lớp và quản lý năng lượng điện Như vậy, mỗi học sinh đi qua cảm biến nó sẽ đếm, khi học sinh đi vào lớp nó sẽ đếm tiến và khi học sinh đi ra nó sẽ trừ đi Còn về quản

lý năng lượng điện, khi học sinh vào lớp thì các thiết bị trong lớp như đèn và quạt

sẽ tự động bật, khi học về học sinh về hết điện và quạt sẽ tư động tắt Từ đây suy

ra mục đích yêu cầu của đề tài:

- Số đếm phải chính xác, cả đếm tiến và đếm lùi đảm bảo quản lý tốt số học sinh trong lớp

- Quản lí điện trong lớp chính xác khi có học sinh vào và khi học sinh về hết

- Bộ phận hiển thị rõ ràng

- Mạch điện không quá phức tạp, đảm bảo được sự an toàn, dễ sử dụng

- Giá thành không quá đắt

1.3 Vấn đề cần giải quyết:

1.3.1 Chọn phương án thiết kế:

1.3.1.1 Với mạch đếm số người dùng IC rời có các ưu điểm sau:

 Cho phép tăng hiệu suất lao động

Trang 7

 Đảm bảo độ chính xác cao

 Tần số đáp ứng của mạch nhanh, cho phép đếm với tần số cao

 Tổn hao công suất bé, mạch có thể sử dụng pin

 Khả năng đếm rộng

 Giá thành hạ

 Mạch đơn giản dễ thực hiện.Với việc sử dụng kỹ thuật số khó có thể đáp ứng được việc thay đổi số đếm Muốn thay đổi một yêu cầu nào đó của mạch thì buộc lòng phải thay đổi phần cứng Do đó mỗi lần phải lắp lại mạch dẫn đến tốn kém về kinh tế mà nhiều khi yêu cầu đó không thực hiện được bằng phương pháp này Với sự phát triển mạnh của nghành kỹ thuật

số đặc biệt là cho ra đời các họ vi xử lí và vi điều khiển rất đa chức năng do

đó việc dùng kỹ thuật vi xử lí, kỹ thuật vi điều khiển đã giải quyết những bế tắc và kinh tế hơn mà phương pháp dùng IC rời kết nối lại không thực hiện được

1.3.1.2 Với mạch đếm số người ra vào lớp dùng kỹ thuật vi xử lí: Ngoài những

ưu điểm như đã liệt kê trong phương pháp dùng IC rời thì mạch đếm số người ra vào lớp dùng kỹ thuật vi xử lí còn có những ưu điểm sau:

 Mạch có thể thay đổi số đếm một cách linh hoạt bằng việc thay đổi phần mềm, trong khi đó phần cứng không cần thay đổi mà mạch dùng IC rời không thể thực hiện được mà nếu có thể thực hiện được thì cũng cứng nhắc ,cũng khó tiếp cận, dễ nhầm

 Số linh kiện sử dụng trong mạch ít hơn

 Mạch đơn giản hơn so với mạch đếm ssos người dùng IC rời và có phần cài đặt

số đếm ban đầu

 Mạch có thể điều khiển đếm được người ra vào bằng phần mềm

 Mạch cũng có thể kết nối giao tiếp được với máy tính thích hợp cho những người quản lí nắm bắt được tình hình các lớp học qua màn hình của máy vi tính Nhưng trong thiết kế người ta thường chọn phương pháp tối ưu nhưng kinh tế do

đó chúng em chọn phương pháp đếm sản phẩm dùng kỹ thuật vi điều khiển

Trang 8

1.3.1.3 Phương pháp đếm số người dùng vi điều khiển:

Ngoài những ưu điểm có được của hai phương pháp trên, phương pháp này còn

- Tìm hiểu các tài liệu liên quan đến đến đề tài nghiên cứu,đưa ra các giải pháp tối ưu cho việc thiết kế chế tạo sản phẩm thực tế

- Thiết kế và chế tạo mạch gồm các khối: khối xử lý trung tâm dùng atmega8, khối nguồn, khối cảm biến và khối hiển thị

- Tiến hành viết chương trình phần mềm phối hợp hoạt động các khối dưới

sự điều khiển của khối mạch chính

1.3.2 Giới hạn của đề tài:

- Các sản phẩm đa dạng với nhiều chủng loại: đặc, rỗng, kích cỡ khác nhau Nhưng đối với khả năng của thiết bị lắp thì mạch có kích thước từ 10cm3 đến 30cm3

- Đếm số học sinh ra vào lớp học Khi học sinh vào lớp sẽ đếm tiến, khi học sinh

ra khỏi lớp sẽ trừ đi số học sinh trong lớp đang hiển thị

- Quản lí năng lượng điện, khi học sinh vào lớp thì đèn và quạt sẽ tự động hoạt động, khi học sinh đi ra khỏi lớp thì các thiết bị tự động ngừng hoạt động

Trang 9

II LÝ THUYẾT THIẾT KẾ

2.1 Các linh kiện dùng trong mạch

2.1.1 Tổng quan về vi điều khiển ATMEGA8

- Atmega8 là vi điều khiển 8 bit dựa trên kiến trúc RISC Với khả năng thực hiện mỗi lệnh trong vòng một chu kỳ xung clock, Atmega8 có thể đạt được tốc độ 1MIPS trên mỗi MHz (1 triệu lệnh/s/MHz)

- Những tính năng chính của Atmega8 được tóm tắt như sau:

+ Có 8Kbyte bộ nhớ flash

+ Có thể xóa lập trình được và có thể chịu được 10000 lần ghi xóa

+ Có 32 thanh ghi đa năng 8 bit,

+ Có 512 byte bộ nhớ EEPROM tích hợp trên chíp,

+ Có 1 kbyte SRAM nội

+ Có hai bộ Timer/counter 8 bit và một bộ timer/counter 16 bit với bộ chia tần lập trình được

+ Có ba kênh điều xung, 6 kênh lối vào chuyển đổi ADC với độ phân giải 10 bit + Atmega8 có 28 chân, trong đó có 23 cổng vào ra

+ Nguồn nuôi từ 2.7 đến 5.5 đối với Atmega8L và từ 4.5 đến 5.5 đối với Atmega8

Trang 10

+ Làm việc tiêu thụ dòng 3.6mA

+ Sử dụng mạch dao động ngoài từ 0 đến 8 Mhz với Atmega8L và từ 0 đến 16 Mhz với Atmega8

+ Ngoài ra chíp Atmega8 còn có bộ xung nội bên trong có thể lập trình chế độ xung nhịp

- Sơ đồ khối của Atmega8:

Hình 2.1 Sơ đồ cấu trúc Atmega8

ATmega 8 hỗ trợ đầy đủ các chương trình và công cụ phát triển hệ thống như: trình dịch C, macro assemblers, chương trình mô phỏng/sửa lỗi, kit thử nghiêm,

2.1.2 Cấu trúc chung của AVR

2.1.2.1 Cấu trúc tổng quát

Trang 11

- AVR sử dụng cấu trúc Harvard, tách riêng bộ nhớ và các bus cho chương trình và dữ liệu Các lệnh được thực hiện chỉ trong một chu kỳ xung clock Bộ nhớ chương trình được lưu trong bộ nhớ Flash

2.1.2.2 ALU

- ALU làm việc trực tiếp với các thanh ghi chức năng chung Các phép toán được thực hiện trong một chu kỳ xung clock Hoạt động của ALU được chia làm 3 loại: đại số, logic và theo bit

2.1.2.3 Thanh ghi trạng thái

- Đây là thanh ghi trạng thái có 8 bit lưu trữ trạng thái của ALU sau các phép tính số học và logic

Thanh ghi trạng thái SREG

+ C: Carry Flag ;cờ nhớ (Nếu phép toán có nhớ cờ sẽ được thiết lập)

+ Z: Zero Flag ;Cờ zero (Nếu kết quả phép toán bằng 0)

+ N: Negative Flag (Nếu kết quả của phép toán là âm)

+ V: Two‟s complement overflow indicator (Cờ này được thiết lập khi tràn số bù 2)

+ V, For signed tests (S=N XOR V) S: N

+ H: Half Carry Flag (Được sử dụng trong một số toán hạng sẽ được chỉ rõ sau)

+ T: Transfer bit used by BLD and BST instructions(Được sử dụng làm nơi chung gian trong các lệnh BLD,BST)

+ I: Global Interrupt Enable/Disable Flag (Đây là bit cho phép toàn cục ngắt Nếu bit này ở trạng thái logic 0 thì không có một ngắt nào được phục vụ.)

Trang 12

Hình 2.2 Thanh ghi chức năng chung

- Tiệp ghanh ghi ( register file ) : Tiệp 32 thanh ghi đa chức năng ( $0000 - $001F ) đã

được nói ở trên, ngoài chức năng là các thanh ghi đa chức năng, thì các thanh ghi từ R26 tới R31 từng đôi một tạo thành các thanh ghi 16 bit X, Y, Z được dùng làm con trỏ trỏ tới bộ nhớ chương trình và bộ nhớ dữ liệu Thanh ghi con trò X, Y có thể dùng làm con trỏ trỏ tới bộ nhớ dữ liệu, còn thanh ghi Z có thể dùng làm con trỏ trỏ tới bộ nhớ chương trình Các trình biên dịch C thường dùng các thanh ghi con trỏ này để

quản lí Data stack của chương trình C

Hình 2.3 Chức năng con trỏ của các thanh ghi R26 –R31

Trang 13

2.1.2.5 Con trỏ ngăn xếp (SP)

- Là một thanh ghi 16 bit nhưng cũng có thể được xem như hai thanh ghi chức năng đặc biệt 8 bit Có địa chỉ trong các thanh ghi chức năng đặc biệt là $3E Có nhiệm vụ trỏ tới vùng nhớ trong RAM chứa ngăn xếp

Hình 2.4 Thanh ghi con trỏ ngăn xếp

- Khi chương trình phục vu ngắt hoặc chương trình con thì con trỏ PC được lưu vào ngăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí Và con trỏ ngăn xếp sẽ giảm 1 khi thực hiện lệnh push Ngược lại khi thực hiện lệnh POP thì con trỏ ngăn xếp sẽ tăng 1

và khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ tăng 2 Như vậy con trỏ ngăn xếp cần được chương trình đặt trước giá trị khởi tạo ngăn xếp trước khi một chương trình con được gọi hoặc các ngắt được cho phép phục vụ Và giá trị ngăn xếp

ít nhất cũng phải lơn hơn hoặc bằng 60H (0x60) vì 5FH trỏ lại là vùng các thanh ghi

2.1.3 Cấu trúc ngắt của Atmega8

Trang 14

các vị trí nhớ được dành riêng để gửi các địa chỉ của các ISR được gọi là bảng véc tơ ngắt

- Khi kích hoạt một ngắt bộ vi điều khiển đi qua các bước sau:

+ Vi điều khiển kết thúc lệnh đang thực hiện và lưu địa chỉ của lệnh kế tiếp (PC) vào ngăn xếp

+ Nó nhảy đến một vị trí cố định trong bộ nhớ được gọi là bảng véc tơ ngắt nơi lưu giữ địa chỉ của một trình phục vụ ngắt

+ Bộ vi điều khiển nhận địa chỉ ISR từ bảng véc tơ ngắt và nhảy tới đó Nó bắt đầu thực hiện trình phục vụ ngắt cho đến lệnh cuối cùng của ISR là RETI (trở về từ ngắt) + Khi thực hiện lệnh RETI bộ vi điều khiển quay trở về nơi nó đã bị ngắt Trước hết

nó nhận địa chỉ của bộ đếm chương trình PC từ ngăn xếp bằng cách kéo hai byte trên đỉnh của ngăn xếp vào PC Sau đó bắt đầu thực hiện các lệnh từ địa chỉ đó

Trang 15

thể thay đổi và theo qui tắc: “ Một vec tơ ngắt có địa chỉ thấp hơn trong bộ nhớ

chương trình có mức độ ưu tiên cao hơn ”

2.1.3.5 Ngắt trong ngắt

- Khi AVR đang thực hiện một trình phục vụ ngắt thuộc một ngắt nào đó thì lại có một ngắt khác được kích hoạt Trong những trường hợp như vậy thì một ngắt có mức

ưu tiên cao hơn có thể ngắt một ngắt có mức ưu tiên thấp hơn Lúc này ISR của ngắt

có mức ưu tiên cao hơn sẽ được thực thi(*) Khi thực hiện xong ISR của ngắt có mức

ưu tiên cao hơn thì nó mới quay lại phục vụ tiếp ISR của ngắt có mức ưu tiên thấp hơn trước khi trở về chương trình chính Đây gọi là ngắt trong ngắt

Hình 2.5 Hình ảnh ngắt trong ngắt

 Chú ý:

+ Giả định là khi một ISR nào đó đang thực thi thì xảy ra một yêu cầu ngắt từ một ISR khác có mức ưu tiên thấp hơn thì ISR có mức ưu tiên thấp hơn không được phục

vụ, nhưng nó sẽ không bị bỏ qua luôn mà ở trạng thái chờ Nghĩa là ngay sau khi ISR

có mức ưu tiên cao hơn thực thi xong thì đến lượt ISR có mức ưu tiên thấp hơn sẽ được phục vụ

+ (*) : Điều này chỉ xảy ra khi trong code của ISR của ngắt có mức ưu tiên thấp

hơn có lệnh set bit I trong thanh ghi SREG (đó là lệnh SEI )

Trang 16

- Các ngắt ngoài:

+ Các ngắt ngoài được kích hoạt bởi 2 chân INT0, và INT1 Chú ý rằng nếu đã kích hoạt, các ngắt sẽ kích bằng (trigger even)nếu các chân INT0,INT1 được cấu hình là các ngõ ra

+ Cái đặc điểm này cung cấp 1 con đường chung cho ngắt mềm.Các ngắt ngoài có thể được kích bởi cạnh xuống hoặc lên hoặc mức thấp Sự cài đặt này được chỉ định đặc biệt trong thanh ghi điều khiển MCU – MCUCR

- MCU (Control Register– MCUCR): Thanh ghi MCU chứa các bit điều khiển ngắt có

ý thức kiểm soát và chức năng MCU chung

+ Bit 3, 2 – ISC11, ISC10: Interrupt Sense Control 1 Bit 1 and Bit 0

External Interrupt 1 được kích hoạt bởi chân ngoài INT1 nếu SREG I-bit và mặt nạ ngắt tương ứng trong GICR là set(1) Các mức độ và cạnh trong chân INT1 ngoài kích hoạt ngắt được định nghĩa trong bảng sau:

Bảng 2.2 Các mức độ và cạnh trong chân INT1

+ Bit 1, 0 – ISC01, ISC00: Interrupt Sense Control 0 Bit 1 and Bit 0

External Interrupt 0 được kích hoạt bởi chân ngoài INT0 nếu SREG I-bit và mặt nạ ngắt tương ứng trong GICR là set(1) Các mức độ và cạnh trong chân INT0

ngoài kích hoạt ngắt được định nghĩa trong bảng sau:

Trang 17

Bảng 2.3 Các mức độ và cạnh trong chân INT0

General Interrupt Control Register –GICR

+ Bit 7 – INT1: External Interrupt Request 1 Enable:

Khi bit INT1 set lên 1 và I-bit trong thanh ghi trạng thái SRGE là 1,ngắt chân ngoài được kích hoạt Ngắt tương ứng của External Interrupt Request 1 được thực thi từ INT0 Interrupt Vector

+ Bit 6 – INT0: External Interrupt Request 0 Enable:

Khi bit INT0 set lên 1 và I-bit trong thanh ghi trạng thái SRGE là 1,ngắt chân ngoài được kích hoạt Ngắt tương ứng của External Interrupt Request 0 được thực thi từ INT0 Interrupt Vector

General Interrupt Flag Register – GIFR

+ Bit 7 – INTF1: External Interrupt Flag :

Khi 1 sự kiện tại chân INT1 kích hoạt 1 yêu cầu ngắt INTF1 sẽ lên 1 Nếu I-bit trong SREG và bit INT1 trongGICR là 1,MCU sẽ nhảy đến vector ngắt tương ứng Cờ sẽ

Trang 18

xóa khi thực hiện ngắt thường xuyên Đôi khi, cờ có thể được xóa nếu ta ghi trực tiếp

1 giá trị vào nó

+ Bit 6 – INTF0: External Interrupt Flag 0:

Khi 1 sự kiện tại chân INT0 kích hoạt 1 yêu cầu ngắt INTF0 sẽ lên 1 Nếu I-bit trong SREG và bit INT1 trongGICR là 1,MCU sẽ nhảy đến vector ngắt tương ứng Cờ sẽ xóa khi thực hiện ngắt thường xuyên Đôi khi, cờ có thể được xóa nếu ta ghi trực tiếp

2.1.4.2 Bộ nhớ dữ liệu SRAM

- 1120 ô nhớ của bộ nhớ dữ liệu định địa chỉ cho file thanh ghi, bộ nhớ I/O và bộ nhớ

dữ liệu SRAM nội Trong đó 96 ô nhớ đầu tiên định địa chỉ cho file thanh ghi và bộ nhớ I/O, và 1024 ô nhớ tiếp theo định địa chỉ cho bộ nhớ SRAM nội

Hình 2.6 Bản đồ bộ nhớ dữ liệu SRAM

2.1.4.3 Bộ nhớ dữ liệu EEPROM:

Trang 19

- Atmega8 chứa bộ nhớ dữ liệu EEPROM dung lượng 512 byte, và được sắp xếp theo từng byte, cho phép các thao tác đọc/ghi từng byte một Đâ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 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 Để điều khiển vào ra dữ liệu với EEPROM ta sử dụng 3 thanh ghi sau :

 Thanh Ghi EEAR ( EEARH và EEARL )

EEAR là thanh ghi 16 bit lưu giữ địa chỉ của các ô nhớ của EEPROM, thanh ghi

EEAR được kết hợp từ 2 thanh ghi 8 bit là EEARH và thanh ghi EEARL

 Thanh Ghi EEDR: Đây là thanh ghi dữ liệu của EEPROM, là nơi chứa dữ liệu ta định ghi vào hay lấy ra từ EEPROM

 Thanh ghi EECR: Đây là thanh ghi điều khiển EEPROM, ta chỉ sử dụng 4 bit đầu của thanh ghi này, 4 bit cuối là dự trữ, ta nên ghi 0 vào các bit dự trữ Sau đây ta xét chức năng của từng bit

Trang 20

+ Bit 3 – EERIE: EEPROM Ready Interrupt Enable : Đây là bit cho phép

EEPROM ngắt CPU, khi bit này được set thành 1 và ngắt toàn cục được cho phép ( bằng cách set bit I trong thanh ghi SREG lên 1 ) thì EEPROM sẽ tạo ra một ngắt với CPU khi bit EEWE được xóa, điều này có nghĩa là khi các ngắt được cho phép ( bit I trong thanh ghi SREG và bit EERIE trong thanh ghi EECR được set thành 1 ) và quá trình ghi vào ROM vừa xong thì sẽ tạo ra một ngắt với CPU, chương trình sẽ nhảy tới véc tơ ngắt có địa chỉ là $002C để thực thi chương trình phục vụ ngắt ( ISR ) Khi bit EERIE là 0 thì ngắt không

được cho phép

+ Bit 2 – EEMWE: EEPROM Master Write Enable : Khi bit EEMWE và bit

EEWE là 1 sẽ ra lệnh cho CPU ghi dữ liệu từ thanh ghi EEDR vào EEPROM, địa chỉ của ô nhớ cần ghi trong EEPROM được lưu trong thanh ghi EEAR Khi bit này là 0 thì không cho phép ghi vào EEPROM Bit EEMWE sẽ được xóa bởi phần cứng sau 4 chu kì máy

+ Bit 1 – EEWE: EEPROM Write Enable : Bit này vừa đóng vai trò như một bit

cờ, vừa là bit điều khiển việc ghi dữ liệu vào EEPROM Ở vai trò của một bit điều khiển nếu bit EEMWE đã được set lên 1 thì khi ta set bit EEWE lên 1 sẽ bắt đầu quá trình ghi dữ liệu vào EEPROM Trong suốt quá trình ghi dữ liệu vào EEPROM bit EEWE luôn giữ là 1 Ở vai trò của một bit cờ khi quá trình ghi dữ liệu vào EEPROM hoàn tất, phần cứng sẽ tự động xóa bit này về 0 Trước khi ghi dữ liệu vào EEPROM

ta cần phải biết chắc là không có quá trình ghi EEPROM nào khác đang xảy ra, để biết được điều này ta cần kiểm tra bit EEWE Nếu bit EEWE là 1 tức là EEPROM đang được ghi, ta phải chờ cho cho quá trình ghi vào EEPROM hoàn tất thì mới ghi tiếp Nếu bit EEWE là 0 tức là không có quá trình ghi EEPROM nào đang diễn ra, lúc này ta có thể bắt đầu ghi dữ liệu vào EEPROM Khi bit EEWE được set lên 1 ( bắt đầu ghi vào EEPROM ) CPU sẽ tạm nghỉ trong 2 chu kì máy trước khi thực hiện lệnh

kế tiếp

Trang 21

+ Bit 0 – EERE: EEPROM Read Enable : Khi bit này là 1, sẽ cho phép đọc dữ

liệu từ EEPROM, dữ liệu từ EEPROM có địa chỉ lưu trong thanh ghi EEAR lập tức được chuyển vào thanh ghi EEDR Khi bit EERE là 0 thì không cho phép đọc EEPROM Trước khi đọc dữ liệu từ EEPROM ta cần biết chắc là không diễn ra quá trình ghi EEPROM bằng cách kiểm tra bit EEWE Để ý là sau khi quá trình đọc EEPROM hoàn tất, bit EERE sẽ được tự động xoá bởi phần cứng Nếu EEPROM đang được ghi thì ta không thể đọc được dữ liệu từ EEPROM Khi bắt đầu quá trình đọc dữ liệu từ EEPROM, CPU sẽ tạm nghỉ 4 chu kì máy trước khi thực hiện lệnh kế tiếp

Tóm lại để ghi vào EEPROM ta cần thực hiện các bước sau:

1 Chờ cho bit EEWE về 0

2 Cấm tất cả các ngắt

3 Ghi địa chỉ vào thanh ghi EEAR

4 Ghi dữ liệu mà ta cần ghi vào EEPROM vào thanh ghi EEDR

5 Set bit EEMWE thành 1

6 Set bit EEWE thành 1

7 Cho phép các ngắt trở lại

Nếu một ngắt xảy ra giữa bước 5 và 6 sẽ làm hỏng quá trình ghi vào EEPROM bởi vì bit EEMWE sau khi set lên 1 chỉ được giữ trong 4 chu kì máy, chương trình ngắt sẽ làm hết thời gian ( time out ) duy trì bit này ở mức 1 Một ngắt xuất hiện ở cuối bước

4 cũng có thể làm cho địa chỉ và dữ liệu cần ghi vào EEPROM trở nên không chính xác nếu trong chương trình phục vụ ngắt có chỉnh sửa lại các thanh ghi EEAR và EEDR Đó là lí do ta cần cấm các ngắt trước khi thực hiện tiếp các bước 3, 4, 5, 6 Quá trình ghi dữ liệu vào EEPROM cũng có thể không an toàn nếu điện thế nguồn

nuôi ( Vcc ) quá thấp

Đọc dữ liệu từ EEPROM:

Việc đọc dữ liệu từ EEPROM đơn giản hơn ghi dữ liệu vào EEPROM, để đọc dữ liệu từ EEPROM ta thực hiện các bước sau:

1 Chờ cho bit EEWE về 0

2 Ghi địa chỉ vào thanh ghi EEAR

3 Set bit EERE lên 1

Trang 22

2.1.5 Các cổng vào ra (I/O)

- Vi điều khiểnATmega8 có 23 đường vào ra chia làm 2 nhóm 8 bit,một nhóm 7 bit Các đường vào ra này có rất nhiều tính năng và có thể lập trình được Ở đây ta sẽ xét chúng là các cổng vào ra số Nếu xét trên mặt này thì các cổng vào ra này là cổng vào

ra hai chiều có thể định hướng theo từng bit Và chứa cả điện trở pull-up (có thể lập trình được) Mặc dù mỗi port có các đặc điểm riêng nhưng khi xét chúng là các cổng vào ra số thì dường như điều khiển vào ra dữ liệu thì hoàn toàn như nhau Chúng ta có thanh ghi và một địa chỉ cổng đối với mỗi cổng, đó là : thanh ghi dữ liệu cổng ( PORTB, PORTC, PORTD), thanh ghi dữ liệu điều khiển cổng (DDRB, DDRC, DDRD) và cuối cùng là địa chỉ chân vào của cổng (PINB, PINC, PIND)

2.1.5.1 Các chức năng của Port B

- XTAL2/TOSC2 – Port B, Bit 7:

+ XTAL2: Chân 2 dao động tạo clock Sử dụng chân clock thạch anh,hoặc dao động thạch anh tần số thấp Khi dùng chân làm dao động thì không thể làm chân nhập xuất được nữa

+ TOSC2: Chân 2 là dao dộng Timer Nếu PB7 được dùng làm clock pin, DDB7, PORTB7 and PINB7 sẽ sẽ hiều là mức 0

- XTAL1/TOSC1 – Port B, Bit 6

+ XTAL1: Chip clock Oscillator pin 1

+ TOSC1: Timer Oscillator pin 1 Nếu PB6 dùng làm chân clock, DDB6, PORTB6 and PINB6 sẽ hiều là mức 0

- SCK – Port B, Bit 5:

+ SCK: Master Clock output, Slave Clock input pin for SPI channel Khi SPI được kích hoạt là Slave, chân này được cấu hình là 1 chân ngõ vào bất chấp sự điều chỉnh

từ DDB5

- MISO – Port B, Bit 4:

MISO: Master Data input, Slave Data output pin for SPI channel Khi SPI được kích hoạt là Master, chân này được cấu hình là 1 chân ngõ vào bất chấp sự điều chỉnh từ DDB4

Trang 23

- MOSI/OC2 – Port B, Bit 3

MOSI: SPI Master Data output, Slave Data input for SPI channel Khi SPI được kích hoạt là Slave, chân này được cấu hình là 1 chân ngõ vào bất chấp sự điều chỉnh từ DDB3 Khi SPI được kích hoạt là Master, dữ liệu trực tiếp của chân này được điều khiển bởi DDB3

- SS/OC1B – Port B, Bit 2

SS: Slave Select ngõ vào Khi SPI được kích hoạt là Slave, chân này được cấu hình là

1 chân ngõ vào bất chấp sự điều chỉnh từ DDB2

- OC1A – Port B, Bit 1

OC1A, Output Compare Match output:Chân PB1 có thể xử lý như 1 ngõ ra bên ngoài Timer/Counter1 Compare Match A

- ICP1 – Port B, Bit 0

ICP1 –chân giữ(chốt) ngõ vào : Chân PB0 có thể tác động làm 1 chân giữ cho Timer/Counter1

2.1.5.2 Các chức năng của Port C

- RESET – Port C, Bit 6

RESET, Reset pin: Khi cầu chì RSTDISBL đã lập trình, chức năng của chân này là vào ra binh thường,và 1 phần sẽ phải dựa vào Power-on Reset và Brown-out Reset như là nguồn reset của nó Nếu chân PC6 dùng là chân reset , DDC6, PORTC6 và PINC6 sẽ hiều là mức 0

- SCL/ADC5 – Port C, Bit 5

SCL, giao diện nối tiếp hai dây Xung nhịp: Khi bit TWEN trong TWCR set (one) để bật giao diện nối tiếp hai dây, pin PC5 bị ngắt từ port và trở thành chân Serial Clock I/O cho Two-wire Serial Interface

- SDA/ADC4 – Port C, Bit 4

SDA, Two-wire Serial Interface Data: When the TWEN bit in TWCR is set (one) to enable the Two-wire Serial Interface, pin PC4 is disconnected from the port and becomes the Serial Data I/O pin for the Two-wire Serial Interface

- ADC3 – Port C, Bit 3

Trang 24

PC3 cũng có thể dùng là ADC input Channel 3 Chú ý là ADC input channel 3 dùng nguồn xoay chiều

- ADC2 – Port C, Bit 2

PC2 cũng có thể dùng là ADC input Channel 2 Chú ý là ADC input channel 2 dùng nguồn xoay chiều

- ADC1 – Port C, Bit 1

PC1 cũng có thể dùng là ADC input Channel 1 Chú ý là ADC input channel 1 dùng nguồn xoay chiều

- ADC0 – Port C, Bit 0

PC0 cũng có thể dùng là ADC input Channel 0 Chú ý là ADC input channel 0 dùng nguồn xoay chiều

2.1.5.3 Các chức năng của Port D

- AIN1 – Port D, Bit 7

AIN1,bộ so sánh tương tự thụ động ngõ vào Cấu hình chân của port là nhập vào với ngắt pull-up bên trong để tránh nhiễu từ port số với chức năng của bộ so sánh tương

tự

- AIN0 – Port D, Bit 6

AIN0,Bộ so sánh tương tự ngõ vao tích cực Cấu hình chân của port là nhập vào với ngắt pull-up bên trong để tránh nhiễu từ port số với chức năng của bộ so sánh tương

tự

- T1 – Port D, Bit 5

T1, số lượng mã nguồn Timer/Counter1

- XCK/T0 – Port D, Bit 4

XCK, USART xung nhịp ngoài T0, số lượng mã nguồn Timer/Counter0

- INT1 – Port D, Bit 3

INT1, Ngắt nguồn bên ngoài 1: Chân PD3 có thể làm chức năng như 1 nguồn ngắt ngoài

- INT0 – Port D, Bit 2

INT0, Ngắt nguồn bên ngoài 0: Chân PD2 có thể làm chức năng như 1 nguồn ngắt ngoài

Trang 25

2.1.5.4 Mô tả thanh ghi của port I/O

- The Port B Data Register – PORTB

- The Port B Data Direction Register – DDRB

- The Port B Input Pins Address – PINB

- The Port C Data Register – PORTC

- The Port C Data Direction Register – DDRC

- The Port C Input Pins Address – PINC

Trang 26

- The Port D Data Register – PORTD

- The Port D Data Direction Register – DDRD

- The Port D Input Pins Address – PIND

Tóm lại:

1 Để đọc dữ liệu từ ngoài thì ta phải thực hiện các bước sau:

+ Đưa dữ liệu ra thanh ghi điều khiển DDRxn để đặt cho PORTx (hoặc bit n trong port) đó là đầu vào (xóa thanh ghi DDRx hoặc bit)

+ Sau đó kích hoạt điện trở pull-up bằng cách set thanh ghi PORTx ( bit)

+ Cuối cùng đọc dữ liệu từ địa chỉ PINxn (trong đó x: là cổng và n là bit)

2 Để đưa dữ liệu từ vi điều khiển ra các cổng cũng có các bước hoàn toàn tương tự Ban đầu ta cũng phải định nghĩa đó là cổng ra bằng cách set bit tương ứng của cổng đó….và sau đó là ghi dữ liệu ra bit tương ứng của thanh ghi PORTx

2.1.6 Bộ định thời 8bit timer/counter 0

- Bộ định thời (timer/counter0) là một module định thời/đếm 8 bit, có các đặc điểm sau:

Trang 27

- Sơ đồ cấu trúc của bộ định thời:

Hình 2.17 Sơ đồ cấu trúc bộ định thời

2.1.6.1 Hoạt động của bộ Timer/Couter

- Mạch đếm lên làm thanh ghi TCNTn tăng 1 đơn vị mỗi khi có xung clkTn, khi đạt giá trị lớn nhất (8bit=255), cờ TOVn được set (logic 1) và bộ đếm tràn, giá trị bộ đến TCNTn trở về 00 và tiếp tục đếm

- Xung clkTn có thể được lựa chọn từ nhiều nguồn khác nhau Khi chọn xung nội (system clock), Timer/Counter là một Timer Khi chọn xung ngoài (thông qua chân Tn) Timer/Counter là Counter

Hoạt động này có thể diễn tả bằng giản đồ xung sau:

Trang 28

Hình 2.18 Giản đồ xung

Cũng giống như bộ timer/counter trong các vi điều khiển khác, chúng ta quan tâm đến

2 thanh ghi: Timer/Counter Control và Timer/Counter Value Trong AVR, đó là thanh ghi TCCRn và TCNTn

Clock Select Bit Description

Trang 29

- Thanh ghi OCR0 luôn được so sánh với giá trị của bộ định thời/bộ đếm Kết quả so sánh có thể được sử dụng để tạo ra PWM hoặc biến đổi tần số ngõ ra tại chân OC0

2.1.6.2 Đơn vị đếm

- Phần chính của bộ định thời 8 bit là một đơn vị đếm song hướng có thể lập trình được Cấu trúc của nó như hình dưới đây:

Hình 2.19 Đơn vị đếm

count: tăng hay giảm TCNT0 1

direction: lựa chọn giữa đếm lên và đếm xuống

clear: xóa thanh ghi TCNT0

Trang 30

clkT0: xung clock của bộ định thời

TOP: báo hiệu bộ định thời đã tăng đến giá trị lớn nhất

BOTTOM: báo hiệu bộ định thời đã giảm đến giá trị nhỏ nhất (0)

2.1.6.3 Đơn vị so sánh ngõ ra

Hình 2.20 Sơ đồ đơn vị so sánh ngõ ra

Bộ so sánh 8 bit liên tục so sánh giá trị TCNT0 với giá trị trong thanh ghi so sánh ngõ

ra (OCR0) Khi giá trị TCNT0 bằng với OCR0, bộ so sánh sẽ tạo một báo hiệu Báo hiệu này sẽ đặt giá trị cờ so sánh ngõ ra (OCF0) lên 1 vào chu kỳ xung clock tiếp theo Nếu được kích hoạt (OCIE0=1), cờ OCF0 sẽ tạo ra một ngắt so sánh ngõ ra và

sẽ tự động được xóa khi ngắt được thực thi Cờ OCF0 cũng có thể được xóa bằng phần mềm

2.1.6.4 Mô tả các thanh ghi

- Thanh ghi điều khiển bộ định thời/bộ đếm TCCR0

Trang 31

+ Bit 7-FOC0: So sánh ngõ ra bắt buộc

+ Bit 6, 3-WGM01:0: Chế độ tạo dạng sóng

+ Bit 5:4-COM01:0: Chế độ báo hiệu so sánh ngõ ra

+ Bit 2:0: CS02:0: Chọn xung đồng hồ

Ba bit này dùng để lựa chọn nguồn xung cho bộ định thời/bộ đếm

Bảng 2.4 Bit 2:0 của thanh ghi TCCR0

- Thanh ghi bộ định thời/bộ đếm

Thanh ghi bộ định thời/bộ đếm cho phép truy cập trực tiếp (cả đọc và ghi) vào bộ đếm

8 bit

- Thanh ghi mặt nạ ngắt

Trang 32

+ Bit 1-OCIE0: Cho phép ngắt báo hiệu so sánh

+ Bit 0-TOIE0: Cho phép ngắt tràn bộ đếm

- Thanh ghi cờ ngắt bộ định thời

+Bit 1-OCF0: Cờ so sánh ngõ ra 0

+ Bit 0-TOV0: Cờ tràn bộ đếm

2.1.7 Bộ so sánh tương tự(Alalog Comparator)

- Bộ so sánh tương tự của AVR có đầu vào là hai chân PB2 và PB3 (như hình vẽ) Với chân PB2 được nối vào cực dương của bộ so sánh và PB3 được nối vào cực âm của bộ so sánh.Nó tạo ra hai mức logic nếu V+>V- thì tín hiệu ra là 1 và ngược lại là

0

Hình 2.25 Bộ so sánh tương tự

Trang 33

Để điều khiển và qua sát trạng thái của bộ so sánh tương tự ta có một thanh ghi đó là thanh ghi ACSR.Trước khi tìm hiểu về nguyên tắc hoạt động của nó ta sẽ giới thiệu về thanh ghi này

-Thanh ghi ACSR là một thanh ghi 8 bit có địa chỉ trong các thanh ghi I/O là 0x08 và

có địa chỉ trong không gian bộ nhớ SRAM là 0x28.Trong 8 bit thì có 7 bit được định nghĩa và bit 6 không được định nghĩa.Nó chỉ có thể đọc và luôn có giá trị logic là 0

+ Bit 7-ACD:Analog comparator disable –Đây là bit điều khiển

+ Bit 5-ACO:Analog comparator output –Đây là bit trạng thái

Bit này được nối trức tiếp với đầu ra của bộ so sánh tương tự

+ Bit 4-ACI:Analog comparator interrupt flag –Đây là bit trạng thái

Cờ báo ngắt của bộ so sanh tương tự

+ Bit 3-ACIE:AC interrupt enable –Đây là bit điều khiển

Nếu bit này được set thì ngắt này được phép và ngược lại

+ Bit 2ACIC:Analog comparator input Capture Enable –Đây là bit điều khiển

Khi bit này được set lên 1 thì đầu ra của AC được nối trực tiếp vào đầu vào của chức năng bắt sự kiện của Timer/counter 1.( Đọc thêm timer/counter1)

+ Bit ACIS1 và ACIS0 :Ac interrupt mode select –Đây là hai bit điều khiển

Bảng 2.11 Chế độ ngắt Bit ACIS1 và ACIS0

Trang 34

+ Bộ tạo tốc độ baud có độ chính xác cao

+ Hỗ trợ khung truyền nối tiếp với 5, 6, 7, 8, hoặc 9 bit dữ liệu và 1 hoặc 2 bit stop + Kiểm tra chẵn lẻ

+ Phát hiện tràn dữ liệu

+ Phát hiện lỗi khung

+ Lọc nhiễu, bao gồm phát hiện bit start lỗi và bộ lọc thông thấp số

+ Ngắt khi kết thúc truyền, thanh ghi truyền hết dữ liệu và kết thúc nhận

+ Chế độ truyền thông đa vi xử lý

+ Chế độ truyền đồng bộ tốc độ cao

- Sơ đồ khối của bộ USART như sau:

Hình 2.26 Sơ đồ khối của bộ USART

USART bao gồm 3 phần chính: bộ tạo xung clock, bộ truyền và bộ nhận Các thanh ghi điều khiển được sử dụng chung giữa các phần này

Trang 35

2.1.8.2 Tạo xung clock

- Bộ tạo xung clock tạo ra xung đồng hồ căn bản cho bộ truyền và bộ nhận USART

hỗ trợ 4 chế độ hoạt động xung clock: bất đồng bộ, bất đồng bộ tốc độ cao, truyền đồng bộ master và truyền đồng bộ slave Sơ đồ khối của bộ tạo xung clock như sau:

Hình 2.27 Đơn vị tạo xung clock

txclk: xung đồng hộ bộ truyền

rxclk: xung đồng hồ bộ nhận

xcki: tín hiệu vào từ chân XCK, sử dụng cho hoạt động truyền đồng bộ master

xcko: tín hiệu xung clock ngõ ra tới chân XCK, sử dụng cho hoạt động truyền đồng

+ 5, 6, 7, 8, hoặc 9 bit dữ liệu

+ Có hoặc không có bit chẵn lẻ

+ 1 hoặc 2 bit stop

Trang 36

- Một khung truyền bắt đầu với một bit start, theo sau đó là bit có trọng số thấp nhất (LSB) của dữ liệu (có thể lên tới 9 bit), kết thúc bằng bit có trọng số lớn nhất (MSB)

Sp: bit stop (mức cao)

IDLE: không có dữ liệu truyền (mức cao trong suốt thời gian idle)

2.1.8.4 Khởi tạo USART

- Quá trình khởi tạo USART bao gồm việc thiết lập tốc độ baud, thiết lập định dạng khung và kích hoạt bộ truyền và bộ nhận

- Ví dụ dưới đây thiết lập hoạt động truyền bất động bộ sử dụng polling (không dùng ngắt) và định dạng khung truyền là cố định Tốc độ baud là một tham số của hàm

void USART_Init( unsigned int baud )

{

/* Set baud rate */

UBRRH = (unsigned char)(baud>>8);

UBRRL = (unsigned char)baud;

Trang 37

/* Enable receiver and transmitter */

UCSRB = (1<<RXEN)|(1<<TXEN);

/* Set frame format: 8data, 2stop bit */

UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);

}

2.1.8.5 Truyền thông dữ liệu-bộ truyền USART

- Truyền khung 5 đến 8 bit dữ liệu: Việc truyền dữ liệu được thiết lập bằng cách nạp

dữ liệu truyền vào bộ đệm truyền Dữ liệu trong bộ đệm sẽ được đưa vào thanh ghi dịch khi thanh ghi dịch đã sẵn sàng gửi một khung mới

- Truyền khung 9 bit dữ liệu: Nếu sử dụng 9 bit dữ liệu, bit thứ 9 phải được ghi vào bit TXB8 trong thanh ghi UCSRB trước khi byte còn lại được ghi vào UDR

- Nhận dữ liệu-bộ nhận USART: Bộ nhận USART được kích hoạt bằng cách đặt bit RXEN trong thanh ghi UCRSB lên 1 Khi bộ nhận được kích hoạt, chân RxD hoạt động như ngõ vào của bộ nhận nối tiếp Tốc độ baud, chế độ hoạt động và định dạng khung truyền phải được thiết lập trước khi thực hiện truyền dữ liệu

- Nhận khung với 5 đến 8 bit dữ liệu: Bộ nhận bắt đầu nhận dữ liệu khi nó phát hiện một bit start hợp lệ Mỗi bit theo sau bit start sẽ được lấy mẫu tại tốc độ baud hoặc tốc

độ đồng hồ XCK, và được dịch vào trong thanh ghi dịch của bộ nhận cho đến khi phát hiện một bit stop đầu tiên Nội dung của thanh ghi dịch sau đó được đưa vào bộ đệm

Bộ đệm của bộ nhận có thể được đọc bằng cách đọc UDR

- Nhận khung với 9 bit dữ liệu: Nếu nhận dữ liệu 9 bit, bit thứ 9 phải được đọc từ bit RXB8 trong thanh ghi UCSRB trước khi đọc các bit thấp trong UDR

2.1.9 Hệ thống xung Clock

- Để cấu hình cho chip hoạt động theo chế độ xung clock nào, người ta dùng các bit cầu chì ( fuse bit ) CKSEL 3, CKSEL2, CKSEL 1 Ngoài ra khi vi điều khiển được đánh thức từ các chế độ nghỉ sang chế độ hoạt động bình thường, bộ tạo dao động cần

có một khoảng thời gian để ổn định, khoảng thời gian này gọi là thời gian khởi động (

Trang 38

reset CPU cũng cần một khoảng thời gian trì hoãn (delay time ) để nguồn nuôi đạt mức ổn định trước khi thực bắt đầu thực thi lệnh Người ta dùng các bit cầu chì CKSEL 0, SUT1, SUT0 để thiết lập thời gian khởi động và thời gian trì hoãn Khoảng thời gian khởi động và thời gian trì hoãn được đo được đo bằng một đồng hồ riêng, đó

là bộ dao động Watchdog Tần số của bộ dao động Watchdog phụ thuộc vào điện thế nguồn nuôi và nhiệt độ môi trường Ở Vcc = 5V và nhiệt độ 25oC thì tần số của bộ dao động Watchdog là 1 MHz Liên quan đến việc thiết lập của hệ thống xung clock người ta còn dùng tới bit cầu chì CKOPT mà vai trò của nó khá linh hoạt tùy theo việc thiết lập xung clock cho hệ thống như thế nào Hình 18 cho thấy ATmega128 có tới 7

bộ tạo xung clock có thể được lựa chọn Dưới đây là mô tả cụ thể cho từng trường hợp cấu hình xung clock của hệ thống

Hình 2.29 Cấu hình xung clock

2.1.9.1 Bộ dao đông thạch anh

Trang 39

- Bộ dao động thạch anh được mắc theo hình 2.20 Trong đó chân XTAL1 và XTAL2 (tương ứng chân số 24 , 23 của vi điều khiển ) lần lượt là ngõ vào và ngõ ra của bộ khuếch đại đảo được tích hợp sẵn trong chip

Hình 2.30 Ghép nối bộ dao động thạch anh 2.1.9.2 Bộ dao động thạch anh có tần số thấp

Tần số thấp được sử dụng để giảm công suất tiêu thụ của hệ thống và thích hợp

cho các ứng dụng cần đo thời gian thực Để cấu hình cho hệ thống xung clock theo chế độ này, cần thiết lập các bit cầu chì { CKSEL3 0 } = { 1, 0, 0, 1 } Các tụ C1, C2 cũng có thể được bỏ đi bằng cách lập trình cho bit CKOPT để cho phép tụ bên trong chip hoạt động Tụ bên trong chip có giá trị định danh là 36 pF

Bảng 2.12 Thời gian khời động và thời gian trì hoãn được lựa chọn nhờ vào các bit cầu chì SUT1 0

Trang 40

10.3 Bộ dao dộng R-C bên ngoài

Bộ dao động R-C bên ngoài thích hợp cho những ứng dụng không đòi hỏi cao về sự chính xác thời gian Mạch R-C được mắc như hình 20 Tần số dao động vào khoảng:

f=1/3RC Trong đó giá trị của C phải tối thiểu là 22 pF Tuy nhiên ta cũng có thể bỏ đi tụ C bằng cách lập trình cho bit cầu chì CKOPT để cho phép tụ bên trong chip ( mắc giữa XTAL1 và GND ) hoạt động Giá trị định danh của tụ bên trong chip là 36 pF

2.1.9.3 Bộ dao động định thời

Người dùng cũng có thể mắc trực tiếp bộ dao động thạch anh vào giữa 2 chân TOSC1

và TOSC2 của vi điều khiển ( không cần tụ ) để tạo xung clock cho hệ thống Bộ dao động được tối ưu cho tần số thạch anh 32,768 KHz

2.1.10 Bộ biến đổi A/D( Analog/Digital)

- Vi điều khiểnAtmega8 có một bộ biến đổi ADC tích hợp trong chip với các đặc điểm:

+ Độ phân giải 10 bit

+ Sai số tuyến tính: 0.5LSB

+ Độ chính xác +/-2LSB

+ Thời gian chuyển đổi:65-260μs

+ 6 Kênh đầu vào có thể được lựa chọn

+ Có hai chế độ chuyển đổi free running và single conversion

+ Có nguồn báo ngắt khi hoàn thành chuyển đổi

+ Loại bỏ nhiễu trong chế độ ngủ

2.1.10.1 ADMUX: Multiplexer select register : Đây là thanh ghi điều khiển 8 bit

Ngày đăng: 12/04/2017, 22:32

HÌNH ẢNH LIÊN QUAN

Hình 2.1  Sơ đồ cấu trúc Atmega8 - đồ an mạch đếm sản phẩm
Hình 2.1 Sơ đồ cấu trúc Atmega8 (Trang 10)
2.1.3.3  Bảng vector ngắt - đồ an mạch đếm sản phẩm
2.1.3.3 Bảng vector ngắt (Trang 14)
Hình 2.5 Hình ảnh ngắt trong ngắt - đồ an mạch đếm sản phẩm
Hình 2.5 Hình ảnh ngắt trong ngắt (Trang 15)
Hình 2.6  Bản đồ bộ nhớ dữ liệu SRAM - đồ an mạch đếm sản phẩm
Hình 2.6 Bản đồ bộ nhớ dữ liệu SRAM (Trang 18)
Hình 2.17  Sơ đồ cấu trúc  bộ định thời - đồ an mạch đếm sản phẩm
Hình 2.17 Sơ đồ cấu trúc bộ định thời (Trang 27)
Hình 2.18  Giản đồ xung - đồ an mạch đếm sản phẩm
Hình 2.18 Giản đồ xung (Trang 28)
Hình 2.19   Đơn vị đếm - đồ an mạch đếm sản phẩm
Hình 2.19 Đơn vị đếm (Trang 29)
Hình 2.20. Sơ đồ đơn vị so sánh ngõ ra - đồ an mạch đếm sản phẩm
Hình 2.20. Sơ đồ đơn vị so sánh ngõ ra (Trang 30)
Bảng 2.11 Chế độ ngắt Bit ACIS1 và ACIS0 - đồ an mạch đếm sản phẩm
Bảng 2.11 Chế độ ngắt Bit ACIS1 và ACIS0 (Trang 33)
Hình 2.27  Đơn vị tạo xung clock - đồ an mạch đếm sản phẩm
Hình 2.27 Đơn vị tạo xung clock (Trang 35)
Hình 2.29  Cấu hình xung clock - đồ an mạch đếm sản phẩm
Hình 2.29 Cấu hình xung clock (Trang 38)
Hình ảnh LED hồng ngoại - đồ an mạch đếm sản phẩm
nh ảnh LED hồng ngoại (Trang 49)
Hình 2.31   Điện trở - đồ an mạch đếm sản phẩm
Hình 2.31 Điện trở (Trang 53)
1.1  Sơ đồ mạch nguyên lý. - đồ an mạch đếm sản phẩm
1.1 Sơ đồ mạch nguyên lý (Trang 58)
1.2  Sơ đồ nguyên lý mạch led - đồ an mạch đếm sản phẩm
1.2 Sơ đồ nguyên lý mạch led (Trang 61)

TỪ KHÓA LIÊN QUAN

w