Bộ dao động Thạch Anh

Một phần của tài liệu Đồ án môn học Vi xử lý (Trang 52 - 104)

7. Bộ định thời/đếm timer/counter1 16-bit

12.1Bộ dao động Thạch Anh

Bộ dao động thạch anh được mắc theo hình 19. 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 19. Ghép nối bộ dao động thạch anh

Giá trị của tụ C1 và C2 phải bằng nhau và thường có giá trị vào khoảng 12pF – 22pF. Với ATmega8 thì tần số xung clock hệ thống tối đa là 16MHz và để đạt được tần số tối đa này bit cầu chì CKOPT phải được lập trình ( ghi thành 0 ). Nếu bit CKOPT không được lập trình ( ghi giá trị 1 ) thì tần số tối đa chỉ là 8 MHz. Các bit

CKSEL3..1 được dùng để lựa chọn dải tần số tối ưu như trong bảng 8. Các bit CKSEL0 và SUT1..0 được dùng để thiết lập thời gian khởi động ( start-up ) và thời gian trì hoãn ( delay time ) như trong bảng 9. Ta cũng có thể thay thế tinh thể thạch anh ( Quartz crystal ) bằng gốm cộng hưởng ( Ceramic Resonator ).

Lựa chọn (1) chỉ nên dùng cho gốm cộng hưởng, không nên dùng cho thạch anh

Thiết lập thời gian khởi động và trì hoãn

Ví dụ để sử dụng thạch anh 16 MHz làm xung clock hệ thống, thời gian khởi động là 16 K ( 16384 chu kì xung clock của bộ dao động watchdog ) và thời gian trì hoãn là 65 ms thì tacần thiết lập cho các bit cầu chì là :

{ CKOPT, CKSEL3..0, SUT1..0 } = { 0, 1, 0, 1, 1, 1, 1 }

12.2.BỘ DAO ĐỘNG THẠCH ANH CÓ TẦN SỐ THẤP

Thạch anh trong trường hợp này có tần số thấp 32,768 KHz được mắc vào mạch như hình 19. 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. 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 theo như bảng 10.

12.3 BỘ DAO ĐỘ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. Các bit cầu chì CKSEL3..0 sẽ cấu hình dãi tần số tối ưu như bảng 11 và các bit cầu chì SUT1..0 sẽ thiết

lập thời gian khởi động và thời gian trì hoãn như bảng 12. Mạch dao động R-C

Bảng 11. Tối ưu dải tần số

12.4 BỘ DAO ĐỘNG NỘI R-C TINH CHỈNH ĐƯỢC

Bộ dao động nội RC cung cấp các tần số xung clock cố định 1 MHz, 2 MHz, 4 MHz, 8 MHz ( ở Vcc = 5V và nhiệt độ 25oC ). Ta có thể dùng xung clock này như là xung clock của hệ thống bằng cách cấu hình cho các bit cầu chì CKSEL 3..0 được chỉ ra ở bảng 13. Khi sử dụng xung clock của bộ dao động nội làm xung clock của hệ thống ta không cần phải dùng bộ dao động bên ngoài. Khi cấu hình xung clock hệ thống theo trường hợp này bit cầu chì CKOPT không được lập trình ( ghi là 1 ). Vì bộ dao động watchdog độc lập với bộ dao động nội RC ( xem hình 18 ) nên khi hệ thống hoạt động theo xung clock của bộ dao động nội RC thì bộ dao động watchdog vẫn được sử dụng cho bộ định thời watchdog. Ngoài ra, người dùng có thể tinh chỉnh tần số của bộ dao động nội bằng cách thay đổi giá trị của thanh ghi OSCCAL. Lí do của việc tinh chỉnh này là bởi vì trong quá trình đếm ( tức phát xung clock ) của bộ dao động nội, sau 1 thời gian thì sẽ có sai số, ví dụ bộ dao động nội có tần số 1 MHz sau 1000000 lần đếm thì khoảng thời gian tương ứng 1s sẽ trôi qua. Nếu thời gian đếm kéo dài sẽ có thể có sai số. Do đó người ta cần tinh chỉnh lại tốc độ của bộ dao động nội bằng cách làm cho nó đếm nhanh hơn hay chậm đi so với giá trị định danh. Để làm được điều này người ta tăng hay giảm giá trị của thanh ghi OSCCAL.

Bảng 13. Lựa chọn tần số dao động nội

Khoảng thời gian khởi động và thời gian trì hoãn được thiết lập bởi các bit cầu chì SUT1..0 theo bảng 14.

12.5 BỘ TẠO XUNG CLOCK BÊN NGOÀI

Người dùng cũng có thể sử dụng một máy phát xung clock bên ngoài để làm xung clock cho hệ thống. Sơ đồ ghép nối với máy tạo xung clock bên ngoài được thể hiện ở hình21.

Hình 21. Ghép nối với máy phát xung clock bên ngoài

Bảng 16. Thiết lập thời gian khởi động và trì hoãn

Trong trường hợp này các bit cầu chì CKSEL3..0 phải ghi thành “0000”. Người

dùng cũng có thể cho phép tụ bên trong chip ( giữa XTAL1 và GND ) hoạt động bằng cách lập trình cho bit CKOPT ( ghi CKOPT thành 0 ). Giá trị định danh của tụ bên trong chip là 36 pF. Thời gian khởi động và thời gian trì hoãn được thiết lập bởi các bit SUT1..0 được cho ở bảng 16. 12.6 BỘ DAO ĐỘNG ĐỊNH THỜI

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

13.BỘ BIẾN ĐỔI A/D( Analog/Digital) (adsbygoogle = window.adsbygoogle || []).push({});

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

Tám đầu vào của ADC là tám chân của PORTA và chúng được chọn thông qua một MUX. Để điều khiển hoạt động vào ra dữ liệu của ADC và CPU chúng ta có 3 thanh ghi: ADMUX là thanh ghi điều khiển lựa chọn kênh đầu vào cho ADC, ADCSRA là thanh ghi điều khiển và thanh ghi trạng thái của ADC, ADCH và ADCL là 2 thanh ghi dữ liệu.

13.1. ADMUX: Multiplexer select register

Đây là thanh ghi điều khiển 8 bit.

Với 4 bit được định nghĩa là MUX3, MUX2, MUX1,và MUX0, ứng với các tổ hợp logic ta có thể chọn kênh đầu vào. Cụ thể:

Các bit REFS1 và REFS0 dùng để chọn giá trị điện áp tham khảo cho ADC, như sau:

Chú ý: Nếu như ta thay đổi kênh trong thời điểm mà ADC đang chuyển đổi thì khi quá trình chuyển đổi đã hoàn thành thì kênh vào mới được thay đổi.

13.2. ADCSR-ADC control and status register

13.2.1. Bit 7-ADEN:ADC enable

Đây là bit điều khiển hoạt động của ADC.Khi bit này được set 1 thì ADC có thể hoạt động và ngược lại.Nếu như ta ngừng hoạt động của ADC trong khi nó đang chuyển đổi thì nó sẽ kết thúc quá trình chuyển đổi.Mặc dù chưa chuyển đổi xong.

13.2.2. Bit 6-ADSC: ADC start conversion

Trong chế độ chuyển đổi đơn thì bit này phải được set lên 1 để bắt đầu chuyển đổi.Trong chế độ chuyển đổi tự do thì bit này cần được set lên 1 để bắt đầu lần chuyển đổi đầu tiên.Bit này được giữ sốt trong quá trình chuyển đổi và được xóa khi mà chuyển đổi xong.

13.2.3. Bit 5-ADATE :ADC Auto Trigger enable

Khi bit này được set thì ADC sẽ bắt đầu chuyển đổi mỗi khi có một nguồn kích hoạt xuất hiện. Việc lựa chọn nguồn kích hoạt được thực hiện bằng cách set các bit trong thanh ghi SFIOR.

13.2.4. Bit 4-ADIF: ADC interrupt Flag

Bit này được set lên 1 bởi phần cứng khi quá trình chuyển đổi đã hoàn thành và thanh ghi dữ liệu đã được cập nhật. Bit này được xóa bằng phần cứng nếu như ngắt này được phép và được phục vụ. Hoặc nó có thể được xóa bằng cách ghi giá trị logic “0”vào cờ này. Cụ thể khi ngắt bị cấm ta có thể sử dụng các lệnh sbi và cbi để tác dụng lên bit này.

13.2.5. Bit 3-ADIE:ACD interrupt Enable

Nếu bit này set 1 và ngắt toàn cục được cho phép thì ngắt này được phép phục vụ (khi chuyển đổi xong dữ liệu) và nếu bị xóa thì ngược lại.

13.2.6. Bit 2.1.0-ADPS2…ADPS0: Bit lựa chọn xung nhịp(Tốc độ)

Nguồn xung được lấy từ nguồn xung của Vi điều khiển(XTAL) và được chia tần thông qua bộ chia tần.

Các bit ADPS có nhiệm vụ chọn số chia cho bộ chia tần theo bảng sau:

Thanh ghi này chứa dữ liệu chuyển đổi từ tương tự sang số, được sắp xếp như hình dưới đây.

Thanh ghi dữ liệu ADC

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

ADC có nhiệm vụ chuyển đổi tín hiệu điện áp tương tự thành tín hiệu số có độ phân giải 10 bit.Với giá trị nhỏ nhất của điện áp đặt ở chân AGND và giá trị cực đại của điện áp tương tự được mắc vào chân AREF. Tám kênh tương tự đầu vào được chọn lựa thông qua ADMUX và ADMUX này được điều khiển bởi thanh ghi ADMUX.

ADC này có thể hoạt động được ở hai chế độ. Đó là chuyển đổi đơn: chỉ chuyển đổi một lần khi có lệnh chuyển đổi và chế độ tự chuyển đổi (Free running mode) đây là chế độ mà ADC tự động chuyển đổi khi được hoạt động và công việc chuyển đổi có tính tuần hoàn (chỉ cần khởi động một lần).

ADC được phép hoạt động nhờ thiết lập bit ADEN. Quá trình chuyển đổi được bắt đầu bằng việc ghi vào bit ADSC mức logic 1 và trong suốt quá trình chuyển đổi bit này luôn được giữ ở mức cao. Khi quá trình chuyển đổi hoàn thành thì bit này được xóa bằng phần cứng và cờ AIDF được bật lên. (adsbygoogle = window.adsbygoogle || []).push({});

đọc dữ liệu từ hai thanh ghi này thì đọc ADCL trước rồi mới đọc ADCH. Nếu đọc ADCH trước thì dữ liệu cập nhật có thể ghi đè lên ADCL (Vi điều khiển nghĩ rằng đã đọc xong dữ liệu).

Để điều khiển vào ra dữ liệu với ADC, các bước thực hiện như sau: Bước 1: Định nghĩa các cổng vào cho tín hiệu tương tự

Xóa bit tương ứng với chân đó trong thanh ghi DDRA. Sau đó loại bỏ điện trở treo bằng cách xóa bit tương ứng ở thanh ghi PORTA.

Bước 2: Chọn kênh tương tự vào (chọn chân vào cho ADC) thông qua thanh ghi ADMUX (có thể thay đổi trong quá trình hoạt động).

Bước 3: Thiết lập các thông số cho ADC

Tốc độ chuyển đổi thông qua xung nhip chuyển đổi. Chế độ chuyển đổi : đơn hoặc tự động.

Sử dụng ngắt hoặc không.

Bước 4: Bắt đầu chuyển đổi và đọc dữ liệu.

II. Cấu trúc cổng nối tiếp

1. Khái Quát

Cổng nối tiếp được sử dụng để truyền dữ liệu hai chiều giữa máy tính và ngoại vi, có các ưu điểm sau:

- Khoảng cách truyền xa hơn truyền song song. - Số dây kết nối ít.

- Có thể truyền không dây dùng hồng ngoại.

- Có thể ghép nối với vi điều khiển hay PLC (Programmable Logic Device). - Cho phép nối mạng.

- Có thể tháo lắp thiết bị trong lúc máy tính đang làm việc. - Có thể cung cấp nguồn cho các mạch điện đơn giản

Các thiết bị ghép nối chia thành 2 loại: DTE (Data Terminal Equipment) và

DCE(Data Communication Equipment). DCE là các thiết bị trung gian như MODEM còn DTE là các thiết bị tiếp nhận hay truyền dữ liệu như máy tính, PLC, vi điều khiển, … Việc trao đổi

năng hỗ trợ để thiết lập và điều khiển quá trình truyền, được gọi là các tín hiệu bắt tay(handshake). Ưu điểm của quá trình truyền dùng tín hiệu bắt tay là có thể kiểm soát đường truyền.

Tín hiệu truyền theo chuẩn RS-232 của EIA (Electronics Industry Associations). Chuẩn RS-232 quy định mức logic 1 ứng với điện áp từ -3V đến -25V (mark), mức logic 0 ứng với điện áp từ 3V đến 25V (space) và có khả năng cung cấp dòng từ 10 mA đến 20 mA. Ngoài ra, tất cả các ngõ ra đều có đặc tính chống chập mạch.huẩn RS-232 cho phép truyền tín hiệu với tốc độ đến 20.000 bps nhưng nếu cáp truyền đủ ngắn có thể lên đến 115.200 bps. Các phương thức nối giữa DTE và DCE:

- Đơn công (simplex connection): dữ liệu chỉ được truyền theo 1 hướng.

- Bán song công ( half-duplex): dữ liệu truyền theo 2 hướng, nhưng mỗi thời điểm chỉ được truyền theo 1 hướng.

- Song công (full-duplex): số liệu được truyền đồng thời theo 2 hướng. Định dạng của khung truyền dữ liệu theo chuẩn RS-232 như sau:

Start D0 D1 D2 D3 D4 D5 D6 D7 P Stop

0 1

Khi không truyền dữ liệu, đường truyền sẽ ở trạng thái mark (điện áp -10V). Khi bắt đầu truyền, DTE sẽ đưa ra xung Start (space: 10V) và sau đó lần lượt truyền từ D0 đến D7và Parity, cuối cùng là xung Stop (mark: -10V) để khôi phục trạng thái đường truyền. Dạng tín hiệu truyền mô tả như sau (truyền ký tự A):

Các tốc độ truyền dữ liệu thông dụng trong cổng nối tiếp là: 1200 bps, 4800 bps,9600 bps và 19200 bps.

Khi thực hiện kết nối như trên, quá trình truyền phải bảo đảm tốc độ ở đầu phát và thu giống nhau. Khi có dữ liệu đến DTE, dữ liệu này sẽ được đưa vào bộ đệm và tạo ngắt.Ngoài ra, khi thực hiện kết nối giữa hai DTE, ta còn dùng sơ đồ sau:

Khi DTE1 cần truyền dữ liệu thì cho DTR tích cực  tác động lên DSR của DTE2 cho biết sẵn sàng nhận dữ liệu và cho biết đã nhận được sóng mang của MODEM (ảo). Sau đó, DTE1 tích cực chân RTS để tác động đến chân CTS của DTE2 cho biết DTE1 có thể nhận dữ liệu. Khi thực hiện kết nối giữa DTE và DCE, do tốc độ truyền khác nhau nên phải thực hiện điều khiển lưu lượng. Quá trinh điều khiển này có thể thực hiện bằng phần mềm hay phần cứng. Quá trình điều khiển bằng phần mềm thực hiện bằng hai ký tự Xon và Xoff. Ký tự Xon được DCE gởi đi khi rảnh (có thể nhận dữ liệu). Nếu DCE bận thì sẽ gởi ký tự Xoff. Quá trình điều khiển bằng phần cứng dùng hai chân RTS và CTS. Nếu DTE muốn truyền dữ liệu thì sẽ gởi RTS để yêu cầu truyền, DCE nếu có khả năng nhận dữ liệu (đang rảnh) thì gởi lại CTS.

2. Truy xuất trực tiếp thông qua cổng

các địa chỉ như sau: (adsbygoogle = window.adsbygoogle || []).push({});

Giao tiếp nối tiếp trong máy tính sử dụng vi mạch UART với các thanh ghi cho trong bảng sau:

Các thanh ghi này có thể truy xuất trực tiếp kết hợp với địa chỉ cổng (ví dụ như thanh ghi cho phép ngắt của COM1 có địa chỉ là BA

COM1 + 1 = 3F9h.

Khi cần xử lý ngắt, CPU thực hiện đọc các bit tương ứng để xác định nguồn gốc của ngắt. Định dạng của IIR như trên.

IER (Interrupt Enable Register):

IER cho phép hay cấm các nguyên nhân ngắt khác nhau (1: cho phép, 0: cầm ngắt)

TSRE: Transmitter Shift Register Empty – thanh ghi dịch rỗng (=1 khi đã phát 1 kýtự và bị xoá khi có 1 ký tự chuyển đến từ THR.

THRE: Transmitter Holding Register Empty (=1 khi có 1 ký tự đã chuyển từ THR –TSR và bị xoá khi CPU đưa ký tự tới THR).

BI: Break Interrupt (=1 khicó sự gián đoạn khi truyền, nghĩa là tồn tại mức logic 0

PE: Parity Error (=1 khi có lỗi parity và bị xoá khi CPU đọc LSR)

OE: Overrun Error (=1 khi có lỗi thu đè, nghĩa là CPU không đọc kịp dữ liệu làm cho quá trình ghi chồng lên RBR xảy ra và bị xoá khi CPU đọc LSR)

RxDR: Receiver Data Ready (=1 khi đã nhận 1 ký tự và đưa vào RBR và bị xoá khi CPU đọc RBR).

chia tần trong UART để cho phép đạt tốc độ truyền mong muốn.

UART dùng dao động thạch anh với tần số 1.8432 MHz đưa qua bộ chia 16 thành tần số 115,200 Hz. Khi đó, tuỳ theo giá trị trong BRDL và BRDH, ta sẽ có tốc độ mong muốn.

Một phần của tài liệu Đồ án môn học Vi xử lý (Trang 52 - 104)