Bộ ựịnh thời Timer/Counter

Một phần của tài liệu Luận văn thiết kế chế tạo bộ điều khiển số quá trình trên nền vi điều khiển AVR (Trang 43)

5. Nôi dung của ựề tài

2.2.6.Bộ ựịnh thời Timer/Counter

Vi ựiều khiển AVR có nhiều loại timer khác nhau, cũng như một timer có nhiều chế ựộ hoạt ựộng khác nhau. ATmega16 có 3 timer: Timer0 (8-bit), Timer1 (16-bit) và Timer2 (8-bit). Timer0 là Timer ựơn giản nhất, Timer1 và Timer2 có phần phức tạp hơn.

Ớ Timer/Counter0:

- Các chức năng chắnh: + Kênh ựếm so sánh ựơn.

+ Xóa giá trị timer khi ựạt tới giá trị so sánh (Auto Reload). + Chế ựộ PWM.

+ đếm sự kiện bên ngoài. + Bộ chia tần số 10bit.

Trường đại học Nông Nghiệp Hà Nội Ờ Luận văn thạc sĩ khoa học kỹ thuật ẦẦẦẦẦẦẦẦẦ.. 32

Hình 2.10: Sơ ựồ khối của Timer/Counter0

- Các chế ựộ hoạt ựộng của Timer/Counter0: + Chế ựộ bình thường.

+ Chế ựộ xóa giá trị Timer khi ựạt tới giá trị so sánh. + Chế ựộ Fast PWM.

+ Chế ựộ PWM.

Chế ựộ hiệu chỉnh PWM của Timer/Counter0: Chế ựộ hiệu chỉnh xung PWM giúp tạo ra dạng xung PWM với ựộ phân giải cao. Chế ựộ này dựa trên hoạt ựộng dual-slope (dạng hai sườn lên xuống theo giá trị thanh ghi). Bộ ựếm ựếm liên tục từ giá trị BOTTOM ựến MAX rồi ựếm từ MAX xuống BOTTOM. Nếu chọn ngõ ra dạng không ựảo (non-inverting), chân OC0 ở mức 0 tại giá trị so sánh giữa OCR0 với TCNT0 khi ựếm lên, và ở mức 1 tại giá trị so sánh khi ựếm xuống. Nếu chọn ngõ ra dạng ựảo (inverting), chân OC0 sẽ hoạt ựộng ngược lại. Chế ựộ hoạt ựộng dual-slope có tần số thấp hơn so với chế ựộ single-slope. Tuy nhiên, do ựặc tắnh ựối xứng nên kiểu dual-slope thắch hợp hơn cho các ứng dụng ựiều khiển ựộng cơ.

độ phân giải của chế ựộ PWM này là 8bit. Bộ ựếm sẽ tăng dần ựến giá trị MAX. Khi ựạt tới MAX, bộ ựếm sẽ ựảo chiều và ựếm xuống tới BOTTOM. Như vậy, một chu kỳ của timer bằng thời gian giữa hai lần giá trị TCNT0 ựạt MAX.

Trường đại học Nông Nghiệp Hà Nội Ờ Luận văn thạc sĩ khoa học kỹ thuật ẦẦẦẦẦẦẦẦẦ.. 33

Hình 2.11: Giản ựồ thời gian của chế ựộ PWM

Cờ tràn TOV0 ựược set mỗi lần bộ ựếm ựạt tới giá trị BOTTOM. Khi timer ựạt tới giá trị này, ta có thể sử dụng ựể kắch hoạt chương trình ngắt qua cờ báo ngắt. Xung PWM ựược ựưa ra trên chân OC0. Việc thiết lập ngõ ra dạng ựảo (inverting) hay không ựảo (non-inverting) ựược thực hiện qua hai bit COM01 và COM00. Giá trị thực sự của OC0 chỉ có thể thấy ựược khi ta ựặt OC0 là ngõ ra.

Tần số của xung PWM ựược tắnh toán dựa vào công thức sau:

Trong ựó, N là giá trị của bộ chia tần số (1, 8, 64, 256,1024).

Thanh ghi OCR0 sẽ ựạt tới cực trị (cực ựại hoặc cực tiểu) thay cho các trường hợp ựặc biệt khi phát ra dạng xung PWM. Trong chế ựộ không ựảo, nếu OCR0 ựược ựặt giá trị BOTTOM, ngõ ra luôn ở mức thấp và nếu OCR0 ựược ựặt giá trị MAX thì ngõ ra luôn ở mức cao. đối với chế ựộ ựảo thì hoạt ựộng ngược lại.

Ớ Timer/Counter1:

Timer/Counter1 là bộ Timer/Counter 16 bits, ựa chức năng. đây là bộ Timer/Counter rất lý tưởng cho lập trình ựo lường và ựiều khiển vì có ựộ phân giải cao (16 bits) và có khả năng tạo xung ựiều rộng PWM (Pulse Width Modulation Ờ thường dùng ựể ựiều khiển ựộng cơ). Vì vậy nó ựược sử dụng trong ựề tài này ựể tạo xung PWM

Các chức năng chắnh:

+ Thiết kế 16bit thực sự (cho phép tạo ra xung PWM 16bit). + 2 bộ so sánh ngõ ra ựộc lập.

+ 1 bộ bắt mẫu từ ngõ vào. + 1 bộ giảm nhiễu ngõ vào.

+ Chế ựộ xóa timer khi ựạt tới giá trị so sánh. + Tạo tần số.

Trường đại học Nông Nghiệp Hà Nội Ờ Luận văn thạc sĩ khoa học kỹ thuật ẦẦẦẦẦẦẦẦẦ.. 34

+ đếm sự kiện ngoài.

+ 4 nguồn ngắt ựộc lập (TOV1, OCF1A, OCF1B và ICF1).

Hình 2.12: Sơ ựồ khối của timer/counter1

Các chế ựộ hoạt ựộng: + Chế ựộ bình thường.

+ Chế ựộ xóa timer khi ựạt tới giá trị so sánh. + Chế ựộ Fast PWM.

+ Chế ựộ PWM (Phase Correct PWM). (adsbygoogle = window.adsbygoogle || []).push({});

+ Chế ựộ Phase and Frequency Correct PWM. + Giới thiệu về chế ựộ ựếm sự kiện ngoài:

+ Chân ngõ vào T1: tác ựộng cạnh lên hoặc xuống (tùy lựa chọn).

Trong chế ựộ này, bộ ựếm luôn ựếm lên, khi ựạt tới giá trị MAX (0xFFFF) thì tự ựộng reset về BOTTOM (0x0000).

Trường đại học Nông Nghiệp Hà Nội Ờ Luận văn thạc sĩ khoa học kỹ thuật ẦẦẦẦẦẦẦẦẦ.. 35

Ớ Giới thiệu timer/counter2

Các chức năng chắnh: + Kênh ựếm so sánh ựơn.

+ Xóa timer khi ựạt tới giá trị so sánh (Auto Reload). + Chế ựộ PWM.

+ đếm sự kiện bên ngoài. + Bộ chia tần số 10bit.

+ Ngắt khi tràn hoặc tại giá trị so sánh.

Hình 2.13: Sơ ựồ khối của timer/counter2

Các chế ựộ hoạt ựộng của Timer/Counter2: + Chế ựộ bình thường.

+ Chế ựộ xóa timer khi ựạt tới giá trị so sánh. + Chế ựộ Fast PWM.

Trường đại học Nông Nghiệp Hà Nội Ờ Luận văn thạc sĩ khoa học kỹ thuật ẦẦẦẦẦẦẦẦẦ.. 36

+ Chế ựộ PWM.

Giới thiệu chế ựộ xóa giá trị Timer khi ựạt tới giá trị so sánh (CTC):

Trong chế ựộ này, thanh ghi OCR2 ựược dùng ựể thiết lập ựộ phân giải cho bộ ựếm. Khi TCNT ựạt tới giá trị bằng với OCR2, bộ ựếm ựược xóa về 0. Thanh ghi OCR2 xác ựịnh giá trị lớn nhất và cũng là ựộ phân giải của Timer2.

Hình 2.14: Giản ựồ thời gian của chế ựộ CTC

Khi bộ ựếm ựạt tới giá trị TOP, cờ OCF2 kắch hoạt chương trình ngắt. Khi ựã ựược kắch hoạt, chương trình ngắt có thể ựược sử dụng ựể cập nhật giá trị TOP.

Chu kỳ của Timer trong chế ựộ CTC có thể tắnh như sau:

Với công thức trên, ta có thể tắnh thời gian lấy mẫu như sau: Timer 8bit, giá trị MaxVal ựặt trong OCR = 155, nguồn xung clock 16MHz, chia tần số 1024 thì thời gian lấy mẫu là 10ms.

Trường đại học Nông Nghiệp Hà Nội Ờ Luận văn thạc sĩ khoa học kỹ thuật ẦẦẦẦẦẦẦẦẦ.. 37

CHƯƠNG III

MẠNG TRUYỀN THÔNG CÔNG NGHIỆP 3.1. Cơ sở mạng truyền thông công nghiệp

3.1.1. Kiểu truyền

Ớ Truyền thông kiểu nối tiếp bất ựồng bộ

- Nguyên tắc ựồng bộ bit

Quá trình ựồng bộ bit xảy ra khi bắt ựầu có dữ liệu ựến. Bình thường nếu không có dữ liệu ựến, ựường dây sẽ ở mức logic cao (bit 1) còn gọi là trạng thái idle. Khi 1 byte ựược truyền thì startbit (mức logic 0) sẽ ựi trước, như vậy ựường dây từ mức logic cao chuyển xuống mức logic thấp sẽ kắch vào một bộ ựếm counter làm nó hoạt ựộng. Bộ counter bắt ựầu ựếm với giá trị ban ựầu là n/2, sau khi ựếm tới n thì mạch lấy mẫu bắt ựầu hoạt ựộng ựể lấy dữ liệu tại ựiểm giữa của bit-cell ựến. Sau ựó bộ counter sẽ ựược ựặt lại giá trị zero và quá trình ựếm sẽ ựược tiếp tục diễn ra như thế.

- Nguyên tắc ựồng bộ byte

Việc ựồng bộ byte khá ựơn giản, vấn ựề là làm thế nào ựể bên thu và bên phát thống nhất với nhau về số bit trong 1 ký tự, số stop-bit, số start-bit, có bit chẳn lẽ hay không và nếu có thì kiểm tra chẳn hay kiểm tra lẻ, theo bit 0 hay theo bit1Ầ

Quá trình này sẽ gắn liền với việc ựồng bộ khung khi truyền dữ liệu. - Nguyên tắc ựồng bộ khung (adsbygoogle = window.adsbygoogle || []).push({});

Thông thường dữ liệu không phải truyền riêng lẻ từng byte mà chúng ựược truyền ựi từng khối n byte dưới dạng frame, packet hay segment. Có hai dạng dữ liệu là ASCII (chỉ chứa các ký tự in ựược) và dạng nhị phân (chứa mọi ký tự). Với dữ liệu loại ASCII, việc ựồng bộ khung khá ựơn giản, chỉ cần qui ước một ký tự nào ựó ựóng vai trò ký tự ựầu khung và một ký tự cuối khung. Thông thường 2 ký tự STX (Start of Text character) và ETX (End of Text character) có sẵn trong bảng ASCII chuẩn ựảm nhận chức năng này.

Trường đại học Nông Nghiệp Hà Nội Ờ Luận văn thạc sĩ khoa học kỹ thuật ẦẦẦẦẦẦẦẦẦ.. 38 S ta rt b it Dữ liệu ETX STX Thời gian

Hình 3.1: đồng bộ khung trong truyền tập tin ASCII

S

ta

rt

b

it

DLE STX DLE DLE DLE ETX

Thời gian Các byte dữ liệu

Hình 3.2: đồng bộ khung trong truyền tập tin nhị phân

đối với việc truyền dữ liệu dạng binary, việc ựồng bộ khung phức tạp hơn vì các byte dữ liệu có thể trùng với các ký tự ETX và STX. Khi ựó ựể giải quyết, các ký tự DLE (Data Link Escape character) ựược thêm vào trước ký tự ựầu khung và ký tự cuối khung. Như vậy, cặp ký tự ựầu khung là DLE-STX và cặp ký tự cuối khung là DLE - ETX. Mặt khác ựể tránh sự nhầm lẫn khi dữ liệu có chứa ký tự DLE chúng ta gấp ựôi nó lên khi truyền ựi.

Ớ Truyền nối tiếp ựồng bộ

Một ựiểm khác cơ bản giữa truyền ựồng bộ so với bất ựồng bộ là truyền ựồng bộ không có startbit và stopbit ựi kèm theo từ mã. Nguyên tắc của truyền ựồng bộ là xen vào các xung ựồng bộ vào chung với thông tin lúc mã hoá ựể truyền ựi. Có hai cách truyền ựồng bộ là ựồng bộ hướng bit (bit oriented) và ựồng bộ hướng ký tự (character oriented).

- Truyền ựồng bộ hướng ký tự :

Phương pháp này ựịnh nghĩa một số ký tự ựiều khiển như ký tự ựồng bộ (SYN), ký tự bắt ựầu văn bản (STX), ký tự kết thúc văn bản (ETX).

ETX Dữ liệu STX SYN SYN SYN

Trường đại học Nông Nghiệp Hà Nội Ờ Luận văn thạc sĩ khoa học kỹ thuật ẦẦẦẦẦẦẦẦẦ.. 39

Nguyên tắc lấy ựồng bộ như sau: ựầu tiên có thông tin ựến trên ựường dây, bên thu bắt ựầu dò tìm ký tự SYN (có giá trị 01101000) bằng cách ựặt ựồng bộ bit, qua ựó lần lượt lấy 8 bit liên tiếp và so sánh với từ mã của bộ ký tự SYN. Sau khi tim ựược ký tự SYN, tức ựã ựạt ựược ựồng bộ ký tự, bên thu sẽ nhận từng byte và so sánh với các ký tự ựiều khiển như STX, ETX Ầ nhằm phân biệt ký tự ựiều khiển và dữ liệu.

đối với truyền tập tin binary, các ký tự DLE ựược thêm vào trước STX, ETX và nhân ựôi ký tự DLE có mặt trong dữ liệu trước khi truyền. Quá trình tìm ký tự ựồng bộ và loại bỏ các ký tự ựiều khiển cũng diễn ra tương tự.

- Truyền ựồng bộ hướng bit

Phương pháp này không ựịnh nghĩa các ký tự ựiều khiển như SYN, ETX Ầ mà ựưa ra 1 chuỗi 8 bit ựiều khiển gọi là cờ có giá trị 01111110. Dữ liệu ựược truyền liên tục thành 1 chuỗi bit dài. để tránh nhầm lẫn giữa dữ liệu và cờ, nếu xét thấy dữ liệu có xuất hiện 5 bit 1 liên tục, bên phát sẽ xen bit 0 vào trước khi truyền ựi. Thành phần dữ liệu bắt ựầu bằng cờ mở và kết thúc bằng cờ ựóng có giá trị giống nhau.

ẦẦ 1 1 1 1 0 1 1 1 1 1 1 0 dữ liệu 0 1 1 1 1 1 1 0

Hình 3.4: Truyền ựồng bộ hướng bit

3.1.2. Lập chương trình cho mạng truyền

Việc lập chương trình cho một liên kết nối tiếp trở nên phức tạp khi có hơn 3 node cùng nối vào ựường truyền. Mỗi node cần biết khi nào có thể truyền dữ liệu và khi nào dữ liệu truyền ựến là dành cho nó.

Một trong các vấn ựề cần quan tâm là làm sao mạng quản lý ựược ựường thông tin của nó. Có nhiều dạng mạng khác nhau và cũng có nhiều cách lập trình cho chúng, nhưng phần lớn ựề có chung các ựặc ựiểm sau :

- Mỗi node ựều có thể truyền và nhận.

ựường dây ở mức

Trường đại học Nông Nghiệp Hà Nội Ờ Luận văn thạc sĩ khoa học kỹ thuật ẦẦẦẦẦẦẦẦẦ.. 40 (adsbygoogle = window.adsbygoogle || []).push({});

- Chỉ có một node ựược truyền tại một thời ựiểm

- Mỗi node cần nhận biết và trả lời ựối với message dành cho nó và bỏ qua (ignore) các message khác.

- Node truyền phát hiện khi nào message ựược gửi ựi không ựược nhận hay không hiểu bởi node nhận và phải có hành ựộng thắch hợp.

Ớ Các giao thức quản lý mạng

Có nhiều lựa chọn ựối với các giao thức hay các quy tắc ựể thực hiện các công việc trên. Một vài trong số ựó là Chủ/Tớ (Master/Slave), Chuyển thẻ bài (Token passing) và Phát hiện xung ựột (Collision detecting).

- Giao thức Chủ / Tớ (Master/Slave)

Master Hỏi Slave 1

Slave 1 Slave 2 Slave 3

Master Slave 1trả lời

Slave 1 Slave 2 Slave 3

Master Hỏi Slave 2

Slave 1 Slave 2 Slave 3

Master Slave 2 trả lời

Slave 1 Slave 2 Slave 3

Hình 3.5: Hoạt ựộng của giao thức Master/Slave

Master/Slave là giao thức ựơn giản nhất. Một node ựược thiết kế là Master và sẽ chịu trách nhiệm ựiều khiển toàn bộ ựường thông tin mạng. để bảo ựảm mọi node ựều có thể phát, Master sẽ dùng hình thức hỏi vòng, lần lượt gửi thông ựiệp ựến từng Slave, trong thông ựiệp có thể chỉ là một Acknowledge ựơn giản, một data theo yêu cầu, một thông báo lỗi hay bất cứ thông tin nào khác. Một Slave sẽ chỉ truyền message sau khi ựược Master yêu cầu. Bất cứ message nào muốn truyền từ Slave này ựến Slave khác ựều phải qua Master .

Trường đại học Nông Nghiệp Hà Nội Ờ Luận văn thạc sĩ khoa học kỹ thuật ẦẦẦẦẦẦẦẦẦ.. 41

Bất lợi chắnh của giao thức này là thời gian delay, mỗi node phải chờ ựược hỏi nếu muốn truyền và không thể truyền trước khi ựược hỏi. Tùy theo mục ựắch và tốc ựộ của mạng mà thời gian delay này dài hay ngắn, có thể không gây ra vấn ựề gì hoặc trở nên quá dài trong thực tế.

- Chuyển thẻ bài (Token passing)

Giao thức Token passing tránh ựược tình trạng chỉ có một Master và cho phép bất cứ node nào ựều có thể thực hiện việc ựiều khiển mạng. Node ựang ựiều khiển sẽ giữ một thẻ bài (token). Chỉ có một node tại một thời ựiểm ựược giữ thẻ. Node nào ựang giữ thẻ ựược quyền phát dữ liệu. Khi ựã phát hết dữ liệu hoặc không còn gì ựể phát, node sẽ gởi token sang node kế tiếp.

6) Chuyển token cho B 1) A giữ token

2) A -> C . Copied = no

4) A -> C . Copied = yes 3) A -> C . Copied = no

5) A -> C . Copied = yes

D A

B C

Hình 3.6: Hoạt ựộng của mạng Token ring

Giao thức mạng phải xác ựịnh làm thế nào một node biết mình có giữ thẻ hay không cũng như làm thế nào ựể ựưa thẻ cho node khác. Thẻ bài (token) có thể chỉ là một bit ựược dành riêng hoặc một biến trong mỗi node sẽ ựược set hoặc xoá ựể chỉ ra rằng node ựó có giữ thẻ hay không. Việc luân chuyển token tới các node trong mạng theo một trật tự ựịnh trước. Trật tự này có thể theo ựúng thứ tự vật lý của các trạm trong mạng, hay theo trật tự logic ựã ựược ựặt trước cho các mạng có topology là bus hay star.

Khi một node muốn chuyển thẻ cho một node khác, nó sẽ bỏ thẻ ựang giữ (bằng cách set bit token, chẳng hạn) và gửi một thông ựiệp báo node kia rằng ựến

Trường đại học Nông Nghiệp Hà Nội Ờ Luận văn thạc sĩ khoa học kỹ thuật ẦẦẦẦẦẦẦẦẦ.. 42 (adsbygoogle = window.adsbygoogle || []).push({});

lượt nó giữ thẻ. Lúc ựó node này sẽ thực hiện bất cứ thao tác gì nó muốn và lại chuyển thẻ bài cho node kế tiếp.

Giao thức này cho phép bất cứ node nào ựều có thể giao tiếp trực tiếp với các node khác. Nhưng nó vẫn chưa thể cho phép một node có thể thực hiện ngắt khi có thông ựiệp khẩn cấp, trừ phi node này ựang giữ thẻ bài khi ermergency xảy ra.

- Collision Detecting

Giao thức Collision Detecting, thường ựược biết như là phương pháp truy nhập ựa cảm biến sóng mang (CSMA/CD-Carrier Sense Multiple Access/Collision Detection, CSMA/CA - Collision Avoidance), cho phép bất cứ node nào ựều có thể truyền khi ựường truyền ựang trống. Nếu có hơn 2 node cố gắng truyền tại một thời ựiểm, ngoại trừ một node, các node khác còn lại phải phát hiện có xung ựột, dừng truyền dữ liệu và sẽ thử lại sau một thời gian delay.

đợi 20 ms đợi 12 ms

Workstation Workstation Workstation Server

Collision

Packet A Packet B

Hình 3.7: Hoạt ựộng của giao thức Data Collision

Trước khi trạm A muốn truyền một gói dữ liệu, nó lắng nghe xem trên ựường dây có rảnh hay không bằng cách xét xem có sóng dao ựộng trên cáp hay

Một phần của tài liệu Luận văn thiết kế chế tạo bộ điều khiển số quá trình trên nền vi điều khiển AVR (Trang 43)