1.10.1. Sơ đồ và định nghĩa
SPI là một giao diện thực hiện việc trao đổi dữ liệu giữa cỏc thiết bị tƣơng thớch với khung dữ liệu 8bit và đƣợc truyền đồng bộ (cựng xung nhịp đồng hồ). SPI cho phộp truyền dữ liệu nối tiếp đồng bộ giữa thiết bị ngoại vi và vi
điều khiển AVR hoặc giữa cỏc vi điều khiển AVR. SPI cú cỏc đặc điểm đặc biệt sau:
Chế độ song cụng, truyền dữ liệu đồng bộ 3 dõy. Cú thể giữ vai trũ Master hoặc Slave.
Bit MSB hoặc LSB cú thể đƣợc truyền trƣớc tựy vào ngƣời lập trỡnh. Bốn tốc độ truyền cú thể lập trỡnh thụng qua hai bit.
Cờ ngắt bỏo kết thỳc truyền.
Vận hành từ trạng thỏi ngủ (Đƣợc đỏnh thức từ trạng thỏi ngủ). Sơ đồ cấu trỳc hỡnh 1.14.
Hỡnh 1.14. Sơ đồ cấu trỳc SPI
Để điều khiển khối giao tiếp SPI thỡ chỳng ta cú 3 thanh ghi. Đú là 1 thanh ghi điều khiển SPCR (SPI control Register), thanh ghi trang thỏi SPSR (SPI status Register) và cuối cựng là thanh ghi dữ liệu SPDR (SPI Data Register).
1.11. 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 1.15.). 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 1.15. Sơ đồ khối bộ so sang tƣơng tự
Để đ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 này ttrực tiếp điều khiển hoạt động của AC(bộ so sỏnh tƣơng tự). Nếu nhƣ bit này đƣợc set lờn 1 thỡ nguồn cung cấp cho AC hoạt động bị tắt (turn off) và đồng nghĩa với việc nú khụng hoạt động. Và nếu nú đƣợc xúa thỡ AC đƣợc cấp nguồn và hoạt động bỡnh thƣờng. Chỳ ý: Ta cú thể thay đổi giỏ trị logic của bit này lỳc nào cũng đƣợc để ngƣng hoạt động của chỳng hoặc cho chỳng hoạt đụng trở lại nhƣng khi thay đổi giỏ trị logic của nú thỡ ngắt (ngắt của AC) cần bị cấm nếu khụng nú sẽ sinh ra một ngắt (Cụ thể là bit ACIE cần bị xúa).
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ự.
Nếu nhƣ cờ này đƣợc đặt và cỏc ngắt đƣợc phộp thỡ một chƣơng trỡnh phục vụ ngắt đƣợc gọi và chỳng đƣớc xúa bằng phần cứng khi chƣơng trinh bỏo ngắt đƣợc phục vụ. Cỏc trƣờng hợp làm thay đổi trạng thỏi cờ này ngồi việc thay đổi bit ACD sẽ đƣợc núi tới trong cỏc bớt 0 và 1.
Bit 3-ACIE: AC interrupt enable – Đõy là bit điều khiển. Nếu bit này đƣợc đặt thỡ ngắt này đƣợc phộp và ngƣợc lại.
Bit 2-ACIC: Analog comparator input Capture Enable – Đõy là bit điều khiển. Khi bit này đƣợc đặt 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 1.1. Chế độ ngắt 2 bit ACIS1 và ACIS2
ACIS1 ACIS0 Chế độ ngắt
0 0 Theo mức
0 1 Dành riờng(chƣa dựng đến)
1 0 Sƣờn xuống
1 1 Sƣờn lờn
Chỳ ý: Cỏc bit này cũng cú thể đƣợc thay đổi bất cứ khi nào. Nhƣng khi thay đổi thỡ ngắt của nú phải bị cấm.
Ta cú thể sử dụng lệnh SBI hoặc CBIU để thay đổi trạng thỏi cỏc bit trờn thanh ghi này trừ bit ACI. Bit này sau khi đƣợc đọc cũng sẽ bị xúa (nếu nú đƣợc đặt).
Thiết lập port đầu vào cho bộ so sỏnh tƣơng tự: Hai chõn PB2 và PB3 này cần đƣợc thiết lập là đầu vào bỏ điện trở treo.
Để lập trỡnh cho AC ta bắt đầu cỏc bƣớc sau:
Bƣớc 1: Thiết lập cỏc chõn đầu vào cho AC.
Bƣớc 2: Chọn cỏc chế độ cho AC vớ nhƣ dựng ngắt … Bƣớc 3: Khởi động AC bằng cỏch xúa bit AC
1.12. Hệ thốnng 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.
Ngồ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 (start-up time). CPU chỉ thực hiện lệnh khi hết khoảng thời gian khởi động này.
Hỡnh 1.16. Hệ thống xung clock
Khi ta 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 độ 250C 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 1.16. 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.
1.13. Bộ biến đổi A/D
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 hồn thành chuyển đổi
Loại bỏ nhiễu trong chế độ ngủ
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.
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 hồ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 hồn thành thỡ bit này đƣợc xúa bằng phần cứng và cờ AIDF đƣợc bật lờn.
Dữ liệu sau khi chuyển đổi đƣợc đƣa ra thanh ghi dữ liệu ADCL và ADCH, nhƣng chỳ ý khi đọ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).
Hỡnh 1.17. Sơ đồ bộ biến đổi A/D
Để đ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.
CHƢƠNG 2.
GIAO TIẾP QUA CỔNG COM 2.1. Giới thiệu
Ngày nay, việc sử dụng mỏy vi tớnh làm bộ xử lý trung tõm cho cỏc hệ thống đo lƣờng và điều khiển rất phổ biến. Trong hệ thống đú một yờu cầu đặt ra là ta phải thực hiện giao tiếp giữa thiết bị ngoại vi với mỏy tớnh. Chuẩn giao tiếp đƣợc coi là đơn giản và dễ dựng đú là RS232. Hầu nhƣ cỏc thiết bị đều đƣợc giao tiếp với mỏy tớnh thụng qua chuẩn này. Ở đõy em thực hiện giao tiếp giữa mỏy tớnh và vi điều khiển theo chuẩn RS232. Vấn đề giao tiếp giữa PC và vi điều khiển rất quan trọng trong cỏc ứng dụng điều khiển, đo lƣờng... Ghộp nối qua cổng nối tiếp RS232 là một trong những kỹ thuật đƣợc sử dụng rộng rĩi để ghộp nối cỏc thiết bị ngoại vi với mỏy tớnh. Nú là một chuẩn giao tiếp nối tiếp dựng định dạng khụng đồng bộ, kết nối nhiều nhất là 2 thiết bị, chiều dài kết nối lớn nhất cho phộp để đảm bảo dữ liệu là 12.5m đến 25.4m, tốc độ 20kbit/s đụi khi là tốc độ 115kbit/s với một số thiết bị đặc biệt. í nghĩa của chuẩn truyền thụng nối tiếp nghĩa là trong một thời điểm chỉ cú một bit đƣợc gửi đi dọc theo đƣờng truyền.
Cú hai phiờn bản RS232 đƣợc lƣu hành trong thời gian tƣơng đối dài là RS232B và RS232C. Nhƣng cho đến nay thỡ phiờn bản RS232B cũ thỡ ớt đƣợc dựng cũn RS232C hiện vẫn đƣợc dựng và tồn tại thƣờng đƣợc gọi là tờn ngẵn gọn là chuẩn RS232. Cỏc mỏy tớnh thƣờng cú 1 hoặc 2 cổng nối tiếp theo chuẩn RS232C đƣợc gọi là cổng COM. Chỳng đƣợc dựng ghộp nối cho chuột, modem, thiết bị đo lƣờng... Trờn main mỏy tớnh cú loại 9 chõn hoặc lại 25 chõn tựy vào đời mỏy và main của mỏy tớnh. Việc thiết kế giao tiếp với cổng RS232 cũng tƣơng đối dễ dàng, đặc biệt khi chọn chế độ hoạt động là khụng đồng bộ và tốc độ truyền dữ liệu thấp.
2.2. Ƣu điểm của giao diện nối tiếp RS232
+ Khả năng chống nhiễu của cỏc cổng nối tiếp cao
+ Thiết bị ngoại vi cú thể thỏo lắp ngay cả khi mỏy tớnh đang đƣợc cấp điện
+ Cỏc mạch điện đơn giản cú thể nhận đƣợc điện ỏp nguồn nuụi qua cụng nối tiếp
2.3. Những đặc điểm cần lƣu ý trong chuẩn RS232
+ Trong chuẩn RS232 cú mức giới hạn trờn và dƣới (logic 0 và 1) là ±12V. Hiện nay đang đƣợc cố định trở khỏng tải trong phạm vi từ 3000 ụm - 7000 ụm
+ Mức logic 1 cú điện ỏp nằm trong khoảng -3V đến -12V, mức logic 0 từ 3V đến 12V
+ Tốc độ truyền nhận dữ liệu cực đại là 100kbps ( ngày nay cú thể lớn hơn)
+ Cỏc lối vào phải cú điện dung nhỏ hơn 2500pF
+ Trở khỏng tải phải lớn hơn 3000 ụm nhƣng phải nhỏ hơn 7000 ụm
+ Độ dài của cỏp nối giữa mỏy tớnh và thiết bị ngoại vi ghộp nối qua cổng nối tiếp RS232 khụng vƣợt qua 15m nếu chỳng ta khụng sử model
+ Cỏc giỏ trị tốc độ truyền dữ liệu chuẩn : 50, 75, 110, 750, 300, 600, 1200, 2400, 4800, 9600, 19200, 28800, 38400... 56600, 115200 bps
2.4. Cỏc mức điện ỏp đƣờng truyền
RS 232 sử dụng phƣơng thức truyền thụng khụng đối xứng, tức là sử dụng tớn hiệu điện ỏp chờnh lệch giữa một dõy dẫn và đất. Do đú ngay từ đầu tiờn ra đời nú đĩ mang vẻ lỗi thời của chuẩn TTL, nú vẫn sử dụng cỏc mức điện ỏp tƣơng thớch TTL để mụ tả cỏc mức logic 0 và 1. Ngồi mức điện ỏp tiờu chuẩn cũng cố định cỏc giỏ trị trở khỏng tải đƣợc đấu vào bus của bộ phận và cỏc trở khỏng ra của bộ phỏt. Mức điện ỏp của tiờu chuẩn RS232C (chuẩn thƣờng dựng bõy giờ) đƣợc mụ tả nhƣ sau:
+ Mức logic 0: +3V , +12V + Mức logic 1: -12V, -3V
Cỏc mức điện ỏp trong phạm vi từ -3V đến 3V là trạng thỏi chuyển tuyến. Chớnh vỡ từ -3V tới 3V là phạm vi khụng đƣợc định nghĩa, trong trƣờng hợp thay đổi giỏ trị logic từ thấp lờn cao hoặc từ cao xuống thấp, một tớn hiệu phải vƣợt qua quĩng quỏ độ trong một thơỡ gian ngắn hợp lý. Điều này dẫn đến việc phải hạn chế về điện dung của cỏc thiết bị tham gia và của cả đƣờng truyền. Tốc độ truyền dẫn tối đa phụ thuộc vào chiều dài của dõy dẫn. Đa số cỏc hệ thống hiện nay chỉ hỗ trợ với tốc độ 19,2 kBd .
2.5. Cổng RS232 trờn PC
Hầu hết cỏc mỏy tớnh cỏ nhõn hiện nay đều đƣợc trang bị ớt nhất là 1 cổng COM hay cổng nối tiếp RS232. Số lƣợng cổng COM cú thể lờn tới 4 tựy từng loại main mỏy tớnh. Khi đú cỏc cổng COM đú đƣợc đỏnh dấu là COM 1, COM 2, COM 3... Trờn đú cú 2 loại đầu nối đƣợc sử dụng cho cổng nối tiếp RS232 loại 9 chõn (DB9) hoặc 25 chõn (DB25). Tuy hai loại đầu nối này cú cựng song song nhƣng hai loại đầu nối này đƣợc phõn biệt bởi cổng đực (DB9) và cổng cỏi (DB25)
Ta xột sơ đồ chõn cổng COM 9 chõn nhƣ trong hỡnh 2.1.
Hỡnh 2.1. Cỏc chõn cổng COM 9 chõn Chức năng của cỏc chõn nhƣ sau:
+ Chõn 1: Data Carrier Detect (DCD): Phỏt tớn hiệu mang dữ liệu + Chõn 2: Receive Data (RxD): Nhận dữ liệu
+ Chõn 3: Transmit Data (TxD): Truyền dữ liệu
+ Chõn 4: Data Termial Ready (DTR): Đầu cuối dữ liệu sẵn sàng đƣợc kớch hoạt bởi bộ nhận khi muốn truyền dữ liệu
+ Chõn 5: Singal Ground ( SG): Mass của tớn hiệu
+ Chõn 6: Data Set Ready (DSR): Dữ liệu sẵn sàng, đƣợc kớch hoạt bởi bộ truyền khi nú sẵn sàng nhận dữ liệu
+ Chõn 7: Request to Send: Yờu cầu gửi, bụ truyền đặt đƣờng này lờn mức hoạt động khi sẵn sàng truyền dữ liệu.
+ Chõn 8: Clear To Send (CTS): Xúa để gửi, bụ nhận đặt đƣờng này lờn mức kớch hoạt động để thụng bỏo cho bộ truyền là nú sẵn sàng nhận tớn hiệu + Chõn 9: Ring Indicate (RI): Bỏo chuụng cho biết là bộ nhận đang nhận tớn hiệu rung chuụng
Cũn DB25, bõy giờ hầu hết cỏc main mới ra đều khụng cú cổng này nữa nờn ở đõy khụng đề cập đến.
2.6. Quỏ trỡnh dữ liệu
Hỡnh 2.2. Khuụn mẫu khung truyền
* Quỏ trỡnh truyền dữ liệu
Truyền dữ liệu qua cổng nối tiếp RS232 đƣợc thực hiện khụng đồng bộ, cú khuụn mẫu nhƣ hỡnh 2.2. Do vậy nờn tại một thời điểm chỉ cú một bit đƣợc truyền. Bộ truyền gửi một bit bắt đầu (bit start) để thụng bỏo cho bộ nhận biết một kớ hiệu sẽ đƣợc gửi đến trong lần truyền bit tiếp theo. Bit này luụn bắt đầu bằng mức 0. Tiếp theo đú là cỏc bit dữ liệu (bits data) đƣợc gửi dƣới dạng mĩ ASCII (cú thể là 5, 6, 7 hay 8 bit dữ liệu) Sau đú là một Parity bit (Kiểm tra bit
chẵn, lẻ hay khụng) và cuối cựng là bit dừng - bit stop cú thể là 1, 1.5 hay 2 bit dừng.
* Tốc độ Baud
Đõy là một tham số đặc trƣng của RS232. Tham số này chớnh là đặc trƣng cho quỏ trỡnh truyền dữ liệu qua cổng nối tiếp RS232 là tốc độ truyền nhận dữ liệu hay cũn gọi là tốc độ bit. Tốc độ bit đƣợc định nghĩa là số bit truyền đƣợc