Thanh ghi điều khiển và trạng thái bộ so sánh tương tự - ACSR
lượt xem 8
download
Khi thay đổi giá trị các bit ACIS1/ACIS0, cần phải cấm ngắt bằng cách xoá bit cho phép ngắt trong thanh ghi ACSR, nếu không ngắt sẽ xảy ra khi các bit thay đổi giá trị. Khi sử dụng các lệnh SBI hoặc CBI với các bit khác trong thanh ghi ACSR cũng có thể ghi giá trị 1 vào thanh ghi ACI, nên cần phải kiểm tra lại, nếu nó bằng 1 cần xoá nó đi.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Thanh ghi điều khiển và trạng thái bộ so sánh tương tự - ACSR
- 12. Khối so sánh tương tự(ANALOG) Khối so sánh tương tự là một OP AMP so sánh có ngõ vào dương AIN0 (PB2) và ngõ vào âm AIN1 (PB3). Khi điện áp AIN0 lớn hơn AIN1 ngỏ ra bộ so sánh sẽ bằng 1. Ngõ ra của bộ so sánh có thể sử dụng làm tác động Capture cho Timer/Counter 1. Ngoài ra bộ so sánh còn có chứ năng yêu cầu ngắt riêng, tác động so sánh có thể bằng cạnh lên, cạnh xuống hoặc khi đổi trạng thái. Sơ đồ khối của bộ so sánh mô trên hình 1.25. Thanh ghi điều khiển và trạng thái bộ so sánh tương tự - ACSR • Bit 7 - ACD: Analog Comparator Disable Khi ACD = 1 nguồn của bộ so sánh bit ngắt, bit này có thể xoá bất cứ thời điểm nào để tắt bộ so sánh tương tự. Khi thay đổi ACD cần cấm ngắt so sánh tương tự bằng cách xoá bit ACIE trong thanh ghi ACSR, nếu không muốn kích hoạt chương trình ngắt. • Bit 6 - Res: Reserved bit Bit này không sử dụng luôn có giá trị bằng 0. • Bit 5 - ACO: Analog Comparator Output ACO nối trực tiếp tơớ ngõ ra của bộ so sánh tương tự. • Bit 4 - ACI: Analog Comparator Interrupt Flag ACI = 1 khi ngõ ra bộ so sánh tác động trong chế độ ngắt đ ược đ ịnh nghĩa b ằng các bit ACI1 và ACI0. Chương trình ngắt so sánh tương tự sẽ được gọi khi ACIE = 1 và bit I trong SREG = 1. Bit ACI tự động xoá bằng phần cứng khi ngắt được thực hiện. Ngoài ra ACI cũng có thể xoá bằng cách ghi vào nó logic 0. • Bit 3 - ACIE: Analog Comparator Interrupt Enable Khi ACIE = 1 và I = 1 ngắt so sánh tương tư sẽ được cho phép. • Bit 2 - ACIC: Analog Comparator Input Capture Enable ACISC = 1 sẽ cho phép ngõ ra bộ so sánh tương tự tác động capture cho Timer/Counter1. Để cho phép ngắt ngõ vào Capture Timer/Counter1 cấn phải lập bit TICIE1 trong thanh ghi TIMSK. • Bits 1,0 - ACIS1, ACIS0: Analog Comparator Interrupt Mode Select Các bit này định nghĩa các tác động ngắt khác nhau như trong bảng sau: Tác động ngắt ACIS1 ACIS0 Tác động khi đổi trạng thái ngõ ra bộ so sánh 00 Không sử dụng 01 Tác động khi ngõ ra có cạnh lên 10 Tác động khi ngõ ra có cạnh xuống 11 Chú ý: Khi thay đổi giá trị các bit ACIS1/ACIS0, cần phải cấm ngắt bằng cách xoá bit cho phép ng ắt trong thanh ghi ACSR, nếu không ngắt sẽ xảy ra khi các bit thay đổi giá trị. Khi sử dụng các l ệnh SBI hoặc CBI với các bit khác trong thanh ghi ACSR cũng có thể ghi giá trị 1 vào thanh ghi ACI, nên cần phải kiểm tra lại, nếu nó bằng 1 cần xoá nó đi.
- 13. Bộ biến đổi tương tự sang số (ADC). Bộ ADC của MCU AT90S8535 có các đặc tính chính như sau: • Độ phân giải 10-bit. • Độ chính xác ±2 LSB. • Tích phân không tuyến tính 0.5 LSB. • Thời gian biến đổi 65 - 260 μs. • Có 8 ngõ vào Multiplexed. • Dải ngõ vào Rail-to-Rail. • Có các chế độ biến đổi Free Run hoặc Single. • Có ngắt hoàn thành biến đổi. • Có chế độ ngủ chống nhiễu. ADC của AT90S8535 là loại xấp xỉ liên tiếp 10 bit, với 8 ngõ vào chọn b ằng phần mềm m ỗi ngõ s ẽ tương ứng với 1 cổng của PORT A. Ngõ vào ADC có bộ khuếch đại lấy và giữ mẫu đảm bảo cho điện áp ngõ vào luôn bằng hằng số trong suốt quá trình biến đổi. Sơ đồ khối của bộ ADC đ ược mô t ả trên hình 1.26. ADC có hai nguồn cung cấp riêng, AVCC và AGND. Chân AGND cần nối GND còn AVCC không nên sai khác qua 0.3V so với VCC. Ngoài ra cần phải cung cấp nguồn chuẩn tới chân AREF, điện áp này cần nằm trong khoảng AGND – AVCC. Hoạt động. ADC có thể hoạt động ở một trong hai chế độ Single và free run. Trong chế độ single người s ử dụng sẽ khởi động các chu kỳ biến đổi. Trong chế độ Free Run, ADC sẽ tự động lầy các mẫu biến đổi theo các thời hằng cố định sau đó cập nhật thông tín vào Thanh ghi dữ liệu của nó. Bit ADFR trong ADCSR sẽ chuyển đổi hoạt động của ADC giữa hai chế độ này. Để cho phép khối ADC hoạt động cần ghi 1 tới bit ADEN trong ADCSR. Chu kỳ biến đ ổi đầu tiên sẽ bắt đầu ngay sau khi ADEN = 1, tuy nhiên thời gian thực hiện sẽ dài hơn thông thường 12 chu kỳ clock do quá trình khởi động ADC. Một chu kỳ biến đổi sẽ bắt đầu bằng cách ghi logic 1 tới bit khời3 đ ộng quá trình bi ến đ ổi ADSC,bit nay sẽ giữ nguyên mức cao trong suốt chu kỳ biến đổi, và tự động được xoá bằng phần cứng khi quá trình biến đổi kết thúc. Nếu một ngõ vào khác được chọn trong quá trình biến đổi, ADC sẽ tiếp tục thực hiện xong trước khi chuyển qua biến đổi giá trị trên kênh mới. 10 bit kết quả biến đổi do ADC tạo ra sẽ được ghi vào các thanh ghi ADCH và ADCL. Cần thực hiện một cơ chế logic bảo vệ dữ liệu sẽ đảm bảo nội dung các thanh ghi không bị bi ến đ ổi trong khi đọc, cơ chế đó như sau: Cần phải đọc ADCL trước, mỗi khi đọc ADCL các thanh ghi dữ liệu sẽ được khoá lại, như vậy nếu quá trình biến đổi kết thúc trước khi đọc ADCH thì không có thanh ghi dữ liệu nào bị thay đ ổi và kếtquả biến đổi sẽ không bị mất. Sau khi đọc ADCH, cả ADCL và ADCH sẽ được cho phép ghi trở lại. ADC cũng có một ngắt riêng, bit ADIF sẽ được lập sau khi quá trình biến đổi hoàn thành, khi truy cập các thanh ghi dữ liệu không đúng, yêu cầu ngắt vẫn được duy trì ngay cả khi dữ liệu bị mất. Bộ tiền chia clock của ADC.
- ADC sử dụng một bộ tiền chia clock có chức năng chia clock hệ thống đ ể cung cấp cho ho ạt động biến đổi của nó. Tần số clock của ADC trong khoảng từ 50 – 200 kHz. Khi s ử d ụng t ần s ố càng cao, độ chính xác sẽ càng giảm. Các bit ADPS0 - ADPS2 trong ADCSR được sử dụng để tạo ra tần số clock thích hợp cho ADC từ bất các thạch anh có tần số trên 100 kHz. Bộ tiền chia sẽ hoạt động ngay sau khi ADEN = 1,và nó sẽ reset khi ADEN = 0. Khi lập ADSC = 1 quá trình biến đổi sẽ bắt đầu tại cạnh lên tiếp theo của chu kỳ clock ADC. Quá trình lấy mẫu và giữ sẽ chiếm khoảng 1.5 clock ADC sau khi quá trình biến đ ổi bắt đ ầu.K ết quả sẽ được ghi vào các thanh ghi dữ liệu sau 13 chu kỳ clock. Trong chế độ Single ADC cần chờ thêm ít nhất một chu kỳ clock trước khi thực hiện chu kỳ biến đổi tiếp theo (hình 1.28). Nếu ADSC = 1, ADC sẽ lập tức thực hiện chu kỳ biến đổi mới. Trong chế độ Free Run với tần số clock cao nhất 200 kHz sẽ cho thời gian biến đổi thấp nhất là 65ms tương đương với 15.4 kSPS. Thời gian biến đ ổi ở các giai đoạn của các chế độ khác nhau cho trong bảng sau: Chế độ Số chu kỳ Số chu kỳ để dữ liệu Tổng thời gian biến Tổng thời gian biến lấy mẫu sẵn sàng đổi (chu kỳ) đổi (s) Chu kỳ đầu tiên trong chế độ Free 14 25 25 125 – 500 Run Chu kỳ đầu tiên trong chế độ Single 14 25 26 130 – 520 Chu kỳ thông thường trong chế độ 2 13 13 65 – 260 Free Run Chu kỳ thông thường trong chế độ 2 13 14 70 - 280 Single Chức năng chống nhiễu ADC. Chức năng chống nhiễu của ADCcho phép quá trình biến đổi thực hiện trong chế đ ộ Idle với chức năng giảm thiểu nhiễu bao gồm cả nhiễu từ CPU. Để thực hiện chức năng này cần thực hiện các bước sau: 1. ADC đã được chọn và không đang trong quá trình biến đổi. Chọn chế độ Single và cho pheé ngắt ADC. ADEN = 1 ADSC = 0 ADFR = 0 ADIE = 1 2. Chuyển qua chế độ idle, ADC sẽ bắt đầu biến đổi khi CPU ngưng hoạt động. 3. Nếu không có ngắt nào xảy ra trước khi quá trình biến đổi ADC hoàn thành, ngắt ADC sẽ đánh thức MCU và thực hiện chương trình ngắt phục vụ việc xử lý dữ liệu biến đổi.
- Thanh ghi chon ngõ vào ADC - ADMUX • Bits 7..3 - Res: Reserved Bits Các bit này không sử dụng và luôn có giá trị bằng 0. • Bits 2..0 - MUX2..MUX0: Analog Channel Select Bits 2-0 Giá trị các bit này sẽ chọn các ngõ vào tương ứng từ 0 -7 của ADC. ADC Control and Status Register - ADCSR • Bit 7 - ADEN: ADC Enable ADEN = 1 cho phép ADC hoạt động. Khi ADEN = 0 ADC bit cấm, nếu cấm ADC khi đang trong chu kỳ biến đổi, chu kỳ đó sẽ lập tức kết thúc. • Bit 6 - ADSC: ADC Start Conversion Trong chế độ Single ADSC= 1 sẽ khởi động quá trình biến đổi. Trong chế độ Free Run ADSC = 1 sẽ khởi động chu kỳ biến đổi đầu tiên. Lần đầu tiên ghi ADSC =1 sau khi ADEN = 1 (hoặc đồng thời với ADEN = 1), ADC sẽ được khởi động. ADSC = 1 trong suốt quá trình biến đổi và sẽ bằng 0 khi quá trình biến đổi kết thúc trước khi kết quả biến đổi ghi tới các thanh ghi dữ liệu của nó, điều này cho phép bắt đầu một chu kỳ biến đổi mới trước khi chu kỳ biến đổi hiện hành hoàn tất. • Bit 5 - ADFR: ADC Free Run Select Khi ghi ADFR = 1 ADC sẽ hoạt động trong chế độ Free Run. Trong chế độ này ADC sẽ lấy mẫ biến đổi và cập nhật giá trị cho các thanh ghi dữ liệu một cách liên tục. • Bit 4 -ADIF: ADC Interrupt Flag ADIF = 1 khi đang thực hiện chương trình ngắt ADC, chương trình ngắt sẽ thực hiện khi kết quả biến đổi được chuyển tới các thanh ghi dữ liệu và trước đó ADIE = 1, I = 1. ADIF sẽ tự động xoá bằng phần cứng khi thực hiện chương trình ngắt tương ứng. Ngoài ra ADIF cũng có thể xoá bằng lệnh. • Bit 3 - ADIE: ADC Interrupt Enable ADIE = 1 và I= 1 cho phép ngắt ADC. • Bits 2..0 - ADPS2..ADPS0: ADC Prescaler Select Bits Các bit xác định hệ số của bộ tiền chia trong ADC. Hệ số chia ADPS2 ADPS1 ADPS0 000 1 001 2 010 4 011 8 100 16 101 32 110 64 111 128 Thanh ghi dữ liệu ADC - ADCL và ADCH Thanh ghi này chứa kết quả biến đổi ADC. Trong chế độ Free Run cần phải đọc ADCL trước ADCH. Quét nhiều kênh.
- Do sự chuyển kênh vào luôn phải chờ cho đến khi quá trình biến đổi kết thúc, chế độ Free Run có thể sử dụng để quét đồng thời nhiều kênh vào mà không cần dừng quá trình biến đ ổi. Thông th ường ngắt kết thúc biến đổi ADC sẽ sử dụng để đổi kênh vào. Tuy nhiên người sử dụng cũng có thể thực hiện việc chuyển đổi kênh như sau: Khi có tác động ngắt kết quả biến đổi đã sẵn sàng, nếu ADMUX được thay đổi giá trị ngay sau khi có tác động ngắt quá trình biến đổi mới sẽ sẵn sàng với các thiết lập ADC như cũ. Kỹ thuật loại nhiễu ADC. Các mạch điện số bên trong và bên ngoài MCU có thể tác động tới độ chính xác quá trình biến đổi tương tự. Khi cần độ chính xác lớn, chúng ta có thể giảm ảnh hưởng nhiễu như sau: 1. Các khối liện quan tới tín hiệu tương tự của MCU và tất cả các linh kiện liên quan tới tín hiệu tương tự khác cần phải có đường mass ở 1 lớp riêng trên mạch in. Mass tương tự chỉ nối với mass số bằng một điểm xuyên lỗ duy nhất (via). 2. Tạo đường nối tín hiệu tương tự ngắn nhất có thể, đảm bảo đường tín hiệu tương tự chạy song song với mass của nó ở lớp nguồn và tránh xa các đường truyền dữ liệu số có tốc độ chuyển mạch cao. 3. Chân AVCC của MCU cần nối tới nguồn cung cấp số VCC thông qua mạch RC như hình 1.28. 4. Sử dụng chức năng loại nhiễu ADC đểgiảm nhiễu ảnh hưởng từ CPU. 5. Nếu một chân cổng A được sửdụng làm ngõ vào ra số thì nên tránh tác động chuyển trạng thái của nó trong chu kỳ biến đổi ADC. . Các cổng vào ra số. Tất cả các cổng vào ra số của AVR đều có chức năng Đọc – Thay đổi – Ghi (Read-Modify- Write), có nghĩa là hướng truyền trên một chân vào ra mà không ảnh hưởng tới hướng vào ra c ủa các chân vào ra khác bằng các lệnh SBI và CBI. Chúng ta có thể lập tức thay đổi giá trị định nghĩa vào ra cho cổng hoặc cấm/cho phép điện trở kéo lên nguồn cho các ngõ vào. Cổng A Cổng A là một cổng vào ra 2 chiều 8 bit, có 3 địa chỉ trong vùng địa chỉ vào ra được sử dụng cho cổng A bao gồm: Thanh ghi dữ liệu cho cổng A (PORTA - $3B), thanh ghi định hướng truyền cho cổng A (DDRA - $3A) và thanh ghi các chân vào cổng A (PINA - $39). Thanh ghi PINA là thanh ghi ch ỉ đ ọc, hai thanh ghi còn lại có thể đọc ghi. Tất cả các chân vào cổng A đều có thể chọn điện trở Pull – Up. Bộ đệm ngõ ra cổng A có thể cung cấp dòng 20 mA để cung cấp dòng kép LED trực tiếp. Khi cổng A được lập trình là ngõ vào và bên ngoài được kéo xuống thấp, chúng trở thành nguồn dòng khi chọn điện trở Pull – Up bên trong. Khi đọc dữ liệu từ cổng A, là đọc thanh ghi dữ liệu cổng A (PORT A) là bộ nhớ đệm cổng A. Còn khi đọc PINA là đọc trạng thái vật lý thực sự trên cổng A. Cổng A có thể chuyển qua chức năng là các ngõ vào cho bộ ADC, nếu một trong các ngõ vào cổng A vẫn giữ chức năng vào ra, cần phải tránh tác động thay đổi trạng thái trong khi ADC đang trong chu kỳ biến đổi, tác động này có thể làm thay đổi kết quả biến đổi ADC.
- Trong chế độ Power down, mạch schmitt trigger của cổng số không còn kết nối. Các ngõ vào tương tự được nối tới Vcc/2 để đảm bảo không tiêu thụ nguồn trong chế độ này. Chức năng vào ra số của cổng A. Tất cả 8 đường của cổng A đều có chức năng giống nhau khi chúng đ ược l ập trình là các cổng vào ra số, PAn là các đường vào ra, DDAn là các bit của thanh ghi DDAR chọn hướng truyền trên đường PAn. Nếu DDAn = 1, PAn được định nghĩa là một ngõ ra, nếu DDAn = 0 thì PAn trở thành 1 ngõ vào. Nếu bit PORTAn = 1 khi chân được định nghĩa là một ngõ vào, ngõ ra MOS c ủa đ ường ra s ẽ đ ược nối với điện trở Pull – Up. Để ngắt điện trở Pull – Up cần lập trình PORTAn = 0 hoặc chân cần l ập trình lại là ngõ ra. Các chân của cổng A sẽ trở thành trạng thái trở kháng cao khi MCU được Reset ngay cả khi không cung cấp clock cho MCU. Ảnh hưởng của DDAn lên các chân của cổng A như sau: Giải thích DDAn PORTAn I/O Pull – Up Trạng thái trở kháng cao 0 0 Vào Không PA n trở thành nguồn dòng nếu chân vào được kéo xuống 0 1 Vào Có mức thấp. Ngõ ra bằng 0 1 0 Ra Không Ngõ ra bằng 1 1 1 Ra Không Sơ đồ mạch cổng A trình bày trên hình 1.28 Cổng B. Cổng B là một cổng vào ra hai chiều 8 bit, có 3 địa chỉ trong vùng nhớ vào ra sử dụng cho cổng B là $38 cho thanh ghi dữ liệu (PORTB), địa chỉ $37 cho thanh ghi định hướng (DDRB) và đ ịa chỉ $36 cho chân vào cổng B (PINB). Thanh ghi PINB là thanh ghi chỉ đọc, hai thanh ghi còn l ại là các thanh ghi có thể đọc ghi được Tất cả các chân vào cổng B đều có thể chọn điện trở Pull – Up. Bộ đệm ngõ ra cổng B có thể cung cấp dòng 20 mA để cung cấp dòng kéo LED trực tiếp. Khi cổng B đ ược l ập trình là ngõ vào và bên ngoài kéo xuống mức thấp , chúng trở thành nguồn dòng khi chọn đi ện tr ở Pull – Up bên trong. Khi đọc dữ liệu từ cổng A, là đọc thanh ghi dữ liệu cổng B (PORTB) là bộ nhớ đệm cổng B. Còn khi đọc PINB là đọc trạng thái vật lý thực sự trên cổng B. Ngoài chức năng vào ra số các chân của cổng B còn có các chức năng khác như trong bảng sau: Chân cổng B Chức năng khác MOSI (ngõ ra Master ngõ vào Slaver của cổng SPI) PB5 MISO (Ngõ vào Master ngõ ra Slaver của cổng SPI) PB6 SCK (Clock của cổng SPI) PB7 Khi cổng B được lập trình chức năng khác, các thanh ghi DDRB và PORTB sẽ được lập trình theo chức năng mới này. Chức năng vào ra số của cổng B. Tất cả 8 đường của cổng A đều có chức năng giống nhau khi chúng đ ược l ập trình là các cổng vào ra số, PBn là các đường vào ra, DDBn là các bit của thanh ghi DDBR chọn hướng truyền trên đường PBn. Nếu DDBn = 1, PBn được định nghĩa là một ngõ ra, nếu DDBn = 0 thì PBn tr ở thành 1 ngõ vào.
- Nếu bit PORTBn = 1 khi chân được định nghĩa là một ngõ vào, ngõ ra MOS c ủa đ ường ra s ẽ đ ược n ối với điện trở Pull – Up. Để ngắt điện trở Pull – Up cần lập trình PORTBn = 0 hoặc chân cần lập trình lại là ngõ ra. Các chân của cổng B sẽ trở thành trạng thái trở kháng cao khi MCU đ ược Reset ngay cả khi không cung cấp clock cho MCU. Ảnh hưởng của DDBn lên các chân của cổng A như sau: Giải thích DDBn PORTBn I/O Pull – Up Trạng thái trở kháng cao 0 0 Vào Không PBn trở thành nguồn dòng nếu chân vào được kéo xuống 0 1 Vào Có mức thấp. Ngõ ra bằng 0 1 0 Ra Không Ngõ ra bằng 1 1 1 Ra Không Mô tả các chức năng thêm của cổng B. Các chức năng khác của cổng B bao gồm: • SCK - Port B, Bit 7 SCK: là tín hiệu clock tạo ra từ SPI Master, đối với SPI Slaver nó là ngõ vào clock. Khi SPI trong MCU được lập trình là một Slaver chân này sẽ là một ngõ vào trừ khi lập DDBR7 = 1 đ ể nó tr ở thành một ngõ vào số thông thường. Khi SPI lập trình thành 1 Master hướng truyền dữ liệu trên chân này được điều khiển bằng bit DDB7. Khi chân này được lập trình thành ngõ vào, ch ức năng pull – up v ẫn có th ể sử dụng bằng cách lập trình bit PORTB7. • MISO - Port B, Bit 6 MISO: là ngõ vào dữ liệu cho SPI Master, là ngõ ra truyền dữ ra của SPI Slaver. Khi SPI cho phép là Master chân này mặc định là ngõ vào trừ khi lập bit DDB6 lên 1. Khi Spi chọn là Slaver hướng truyền dữ liệu trên chân này được điều khiển bằng bit DDB6. Khi nó được chọn là một ngõ vào vẫn có thể sử dụng chức năng pull – up bằng cách lập trình bit PORTB6. • MOSI - Port B, Bit 5 MOSI: là ngõ ra SPI Master, ngõ vào SPI slaver. Với SPI slaver tín hiệu này là một ngõ vào trừ khi lập bit DDRB5 = 1. Khi SPI là Master hướng truyền dữ liệu trên chân này được điều khiển bằng DDB5. • SS - Port B, Bit 4 SS: Ngõ vào chọncổng Slaver. Khi SPI được chọn là slaver chân này là một ngõ vào trừ khi lập trình DDB4 = 1. Khi là một slaver, SPI sẽ tích cực nếu ngõ vào này tác động mức thấp. Khi SPI là master hướng dữ liệu trên chân này điều khiển bằng DDB4. Khi chân này là một ngõ vào số có thể lập trình chức năng pull – up bằng bit PORTB4. • AIN1 - Port B, Bit 3 AIN1 (Analog Comparator Negative Input) là ngõ vào đảo của bộ so sánh tương tự. Khi lập trình là ngõ vào DDB3 = 0, sử dụng chức năng Pull – Up PORTB3 = 0. Trong chế độ power down mạch schmitt trigger của ngõ vào số không được kết nối làm tín hi ệu tương tự được nối tới VCC/2 làm mạch không tiêu thụ công suất nguồn. • AIN0 - Port B, Bit 2 AIN0 (Analog Comparator Positive Input) là ngõ vào không đảo của bộ so sánh tương tự. Khi lập trình là ngõ vào DDB2 = 0, sử dụng chức năng Pull – Up bằng các cho PORTB2 = 0 Trong chế độ power down mạch schmitt trigger của ngõ vào số sẽ không kết nối, tín hiệu tương tự sẽ nối tới VCC/2 để mạch không tiêu thụ nguồn. • T1 - Port B, Bit 1
- Là nguồn đếm ngoài cho Timer/Counter1. • T0 - Port B, Bit 0 Là nguồn đếm ngõ vào cho Timer/Counter0. . Cổng C Cổng C là một cổng vào ra 2 chiều 8 bit, có 3 địa chỉ trong vùng địa chỉ vào ra được sử dụng cho cổng C bao gồm: Thanh ghi dữ liệu cho cổng C (PORTC - $35), thanh ghi định hướng truyền cho cổng C (DDRC - $34) và thanh ghi các chân vào cổng C (PINC - $33). Thanh ghi PINC là thanh ghi chỉ đ ọc, hai thanh ghi còn lại có thể đọc ghi. Tất cả các chân vào cổng C đều có thể chọn điện trở Pull – Up. Bộ đệm ngõ ra cổng C có thể cung cấp dòng 20 mA để cung cấp dòng kép LED trực tiếp. Khi cổng C được lập trình là ngõ vào và bên ngoài được kéo xuống thấp, chúng trở thành nguồn dòng khi chọn điện trở Pull – Up bên trong. Khi đọc dữ liệu từ cổng C, là đọc thanh ghi dữ liệu cổng C (PORT C) là bộ nhớ đệm cổng C. Còn khi đọc PINC là đọc trạng thái vật lý thực sự trên cổng C. Chức năng vào ra số thông thường của cổng C. Tất cả 8 đường cồng C đều có thể sử dụng làm các đường vào ra số thông thường PCn. Bit DDCn sử dụng để lập trình hướng truyền, DDCn = 1, PCn là ngõ ra, DDCn= 0 thì PCn là ngõ vào. Khi lập trình là ngõ vào, nếu nạp PORTCn = 1 điện trở Pull – up bên trong sẽ được nối tới cổng vào. Bỏ kết nối điện trở Pull – up bằng cách cho PORTCn = 0 hoặc lập trình PCn là ngõ ra. Cổng C trở thành tr ạng thái trở kháng cao khi Reset ngay cả khi MCU không được cấp clock. Ảnh hưởng của DDCn tới đặc tính cổng C trong bảng sau: DDCn PORTCn I/O Pull Up Comment 00 Vào Không High Z Nguồn dòng nếu PCn =0 01 Vào Có 10 Ra Không 1 11 Ra Không 0 Các chức năng khác của các đường cổng C. Khi AS2 trong ASSR được lập trình bằng 1, MCU sẽ cho phép tính năng tạo clock cận đ ồng bộ của Timer/Counter 2, các chân PC6 và PC7 sẽ được sử dụng để nối tới bộ dao động thạch anh, chúng sẽ kông còn kết nối ra cổng và không thể sử dụng làm đường vào ra số. Cổng D Cổng D là một cổng vào ra 2 chiều 8 bit, có 3 địa chỉ trong vùng địa chỉ vào ra được sử dụng cho cổng D bao gồm: Thanh ghi dữ liệu cho cổng D (PORTD - $32), thanh ghi đ ịnh hướng truy ền cho c ổng D (DDRD - $31) và thanh ghi các chân vào cổng D (PIND - $30). Thanh ghi PIND là thanh ghi chỉ đọc, hai thanh ghi còn lại có thể đọc ghi. Tất cả các chân vào cổng D đều có thể chọn điện trở Pull – Up. Bộ đệm ngõ ra cổng D có thể cung cấp dòng 20 mA để cung cấp dòng kép LED trực tiếp. Khi cổng D được lập trình là ngõ vào và bên ngoài được kéo xuống thấp, chúng trở thành nguồn dòng khi chọn điện trở
- Pull – Up bên trong. Khi đọc dữ liệu từ cổng D, là đọc thanh ghi dữ liệu cổng D (PORT D) là b ộ nhớ đệm cổng D. Còn khi đọc PIND là đọc trạng thái vật lý thực sự trên cổng D. Chức năng vào ra số thông thường của cổng D. Tất cả 8 đường cồng D đều có thể sử dụng làm các đường vào ra số thông thường PDn. Bit DDDn sử dụng để lập trình hướng truyền, DDDn = 1, PDn là ngõ ra, DDDn= 0 thì PDn là ngõ vào. Khi lập trình là ngõ vào, nếu nạp PORTDn = 1 điện trở Pull – up bên trong sẽ được nối tới cổng vào. Bỏ kết nối điện trở Pull – up bằng cách cho PORTDn = 0 hoặc lập trình PDn là ngõ ra. Cổng D tr ở thành tr ạng thái trở kháng cao khi Reset ngay cả khi MCU không được cấp clock. Ảnh hưởng của DDDn tới đặc tính cổng D trong bảng sau: DDDn PORTDn I/O Pull Up Comment 00 Vào Không High Z Nguồn dòng nếu PCn =0 01 Vào Có 10 Ra Không 1 11 Ra Không 0 Các chức năng khác của cổng D. • OC2- Port D, Bit 7 OC2 (Timer/Counter2 output compare match output): chân này còn được sử dụng làm ngõ ra bộ so sáh Timer/Counter 2. Để chọn chức năng này cần lập trình bit DDD7 = 1. OC2 cũng được sử dụng làm ngõ ra trong chế độ PWM. • ICP - Port D, Bit 6 ICP - Input Capture Pin: Chân này còn được sử dụng làm ngõ vào capture cho Timer/Counter1. Để chọn chức năng này cần lập trình bit DDD6 = 0. • OC1A- Port D, Bit 5 OC1A, Output compare matchA output: Sử dụng làm ngõ ra so sánh thanh ghi so sánh A Timer/Counter 1. Để chọn chức năng này cần lập trình DDD5 = 1. Ngoài ta OC1A còn sử dụng làm ngõ ra của PWM trong Timer1. • OC1B- Port D, Bit 4 OC1B, Output compare matchA output: Sử dụng làm ngõ ra so sánh thanh ghi so sánh B Timer/Counter 1. Để chọn chức năng này cần lập trình DDD4 = 1. Ngoài ta OC1B còn sử dụng làm ngõ ra của PWM trong Timer1. • INT1 - Port D, Bit 3 INT1, External Interrupt source 1: Là chức năng làm ngõ vào cung cấp nguồn ngắt ngoài INT1. • INT0 - Port D, Bit 2 INT0, External Interrupt source 0: Là chức năng làm ngõ vào cung cấp nguồn ngắt ngoài INT0. • TXD - Port D, Bit 1 Là đường truyền dữ liệu ra của UART. Khi cho phép UART chân này tự động là một ngõ ra , trừ khi lập trình DDD1 = 0. • RXD - Port D, Bit 0 Là đường nhận dữ liệu của UART, khi cho phép UART chân này tự động là ngõ vào, trừ khi lập trình bit DDD0 = 1.
- 12. UART AT90S8535 có bộ UART song công với các thanh ghi truyền nhận riêng. Các đặc tính chính của chính của UART như sau: • Bộ tạo tốc độ truyền có thể tạo ra nhiều tốc độ khác nhau. • Có thể truyền với tốc độ cao với thạch anh dao động thấp. • Có thể truyền 8 hoặc 9 bit dữ liệu. • Có bộ lọc nhiễu. • Phát hiện lỗi nhận Overrun. • Phát hiện lỗi sai khung. • Phát hiện lỗi sai Start bit. • Ba phục vụ ngắt riêng (truyền xong, Thanh ghi truyền rỗng và nhận xong) • Có các bộ đệm truyền nhận. Truyển dữ liệu. Quá trình truyền dữ liệu được bắt đầu khi thực hiện việc ghi dữ liệu tới thanh ghi dữ liệu c ủa UART (UDR), dữ liệu sẽ được chuyển từ UDR qua thanh ghi dịch truyền khi: • Nếu một ký tự truyền mới được ghi t ới UDR khi bit Stop của ký tự trước đó đã được dịch ra ngoài. Thanh ghi dịch được nạp tức thời. • Nếu một ký tự mới ghi tới UDR trước khi bit stop của ký tự trước dịch ra ngoài thì thanh ghi dịch chỉ được nạp khi stop bit được dịch ra ngoài. Khi thanh ghi dịch bộ truyền rỗng, dữ liệu sẽ được truyền từ UDR tới thanh ghi dịch và bit UDRE trong USR sẽ được lập bằng 1. Khi UDRE = 1, UART sẵn sàng nhận một ký t ự mới. Tại cùng thời điểm dữ liệu được ghi từ UDR tới thanh ghi dịch bit 0 của thanh ghi dịch sẽ tự động đ ược xoá đ ể làm Start bit và bit cuối cùng trong khung truyền được lập để làm bit Stop. Nếu lập trình truyền 9 bit (bit CHR9 trong UCR bằng 1) thì bit TXB8 trong UCR sẽ được ghi tới bit thứ 9 của thanh ghi dịch. Theo tốc độ đã được chọn, đầu tiên bit Start được truyền ra trên đường TXD, tiếp theo là các bit dữ liệu (LSB trước) và cuối cùng là bit Stop. Khi bit Stop đã được dịch ra đường truyền một giá tr ị mới s ẽ l ập t ức được ghi tới thanh ghi dịch nếu có một dữ liệu đã được ghi tới UDR trong quá trình truy ền. Trong suốt quá trình truyền dữ liệu UDRE = 1, nếu không có dữ liệu mới trong UDR khi bit Stop được dịch ra ngoàicờ UDRE sẽ duy trì mức 1 cho đến khi UDR được ghi giá trị mới. Khi không có d ữ li ệu mới đường truyền TXD được duy trì ở mức bit Stop trong thời gian của một bit, c ờ hoàn thanh truy ền TXC trong USR được lập. Bit TXEN trong UCR =1 sẽ cho phép bộ truyền UART, khi bit này bằng 0 chân PD1 có thể sử dụng thành đường vào ra thông thường. Khi bit TXEN = 1, bộ truyền UART s ẽ nối t ới chân PD1, nó sẽ tự động là ngõ ra trừ khi chúng ta lập bit DDD1 trong DDRD lên 1. Quá trình nhận dữ liệu. .
- Bộ nhận lấy mẫu tín logic tín hiệu tại ngõ vào RXD với tần số gấp 16 lần tốcđộ baud được lập trình. Khi đường nhận rỗi, trạng thái logic 0 xuất hiện sẽ được hiểu là cạnh xuống của bit Start, quá trình nhận dữ liệu sẽ được bắt đầu. Một bit sẽ được lấy mầu theo khâu lấu mẫu bậc nhất. Sau khi có chuyển đổi trạng thái từ 1 xuống 0 bộ nhận sẽ lấy mẫu ngõ vào RXD tại các mẫu 8, 9 và 10. Nếu từ 2 mẫu trở lên có logic 0 bit Start nhận được sẽ được xem là nhiễu. Khi bit Start hợp lệ, việc lấy mẫu các bit dữ liệu sẽ được thực hiện giống như đối với bit Start, các bit chỉ được chấp nhận nếu có ít hơn 2 mẫu sai. Khung truyền dữ liệu được biểu diễn trên hình 1.24. Khi bit Stop được nhận, phải 3 bit chính bằng 1 bit này mới đ ược coi là đúng. N ếu t ừ 2 m ẫu trong bit bằng 0 UART sẽ thông báo lỗi sai khung truyền, bit FE trong USR sẽ được lập lên 1. Trước khi đọc dữ liệu từ UDR, người sử dụng cần kiểm tra bit FE để loại bỏ các lỗi sai khung trong khi truy ền dữ liệu. Có hoặc không có bit Stop hợp lệ, khi kết thúc chu kỳ nhận dữ liệu vẫn được truyền tới UDR và cờ RXC trong USR vẫn được lập bằng 1. Khi thực hiện lệnh đọc thanh ghi UDR, dữ liệu trong thanh ghi nhận dữ liệu sẽ được truy cập và khi ghi UDR dữ liệu trong thanh ghi dữ liệu truyền sẽ được truy cập. Nếu lập trình truyền 9 bit (CHR9= 1) bit RXB8 trong UCR sẽ được nạp giá trị bit 9 của thanh ghi dịch truyền khi dữ liệu được truyền tới UDR. Khi đã nhận xong một ký tự, nếu UDR vẫn chưa được đọc từ lần nhận trước, l ỗi Overrun s ẽ được thông báo bằng cách lập cờ OR trong thanh ghi UCR. Có nghĩa là dữ liệu nhận đ ược tr ước đó đã bị mất. OR được đệm lại và cập nhật sau mỗi lần đọc dữ liệu hợp lệ trong UDR, vì v ậy người s ử dụng cần kiểm tra bit OR sau khi đọc UDR để phát hiện lỗi truyền dữ liệu. Khi RXEN trong UCR = 0 bộ nhận sẽ không được phép hoạt động,chân PD0 có thể sử dụng làm một ngõ vào thông thường. Khi RXEN = 1, bộ nhận UART sẽ nối tới PD0 và nó sẽ là một ngõ vào tr ừ khi lập bit DDD0 trong thanh ghi DDRD lên 1. Khi PD0 được sử dụng làm ngõ vào cho UART, bit PORTD0 vẫn có thể sử dụng làm bit điều khiển với điện trở pull – up kéo lên nguồn. Khi CHR9 =1, giữa bit start và stop sẽ bao gồm 9 bit, khi truyền bit thứ 9 sẽ được lấy từ TXB8 trong UCR, khi đó người lập trình cần thiết lập giá trị mong muốn cho nó trước khi ghi dữ liệu tới UDR. Bit thứ 9 khi nhận sẽ được ghi vào RXB8 trong UCR. Điều khiển UART. Thanh ghi dữ liệu vào ra UART - UDR UDR là thanh ghi chứa trong 2 ô nhớ vật lý riêng biệt trong vùng đ ịa chỉ vào ra c ủa MCU. Khi thực hiện lệnh ghi UDR, có nghĩa là ghi tới thanh ghi truyền dữ liệu của UART. Khi thực hiện lệnh đọc UDR sẽ đọc dữ liệu từ thanh ghi nhận dữ liệu của UART. Thanh ghi trạng thái UART – USR. USR là thanh ghi chỉ đọc cung cấp những thông tin về trạng thái của UART.
- • Bit 7 - RXC: UART Receive Complete RXC = 1 khi dữ liệu nhận được ghi xong từ thanh ghi dịch nhận tới UDR trừ khi phát hiện lỗi sai khung truyền. Khi RXCIE trong UCR bằng 1, ngắt phục vụ hoàn thành nhận dữ liệu sẽ được thực hiện khi RXC = 1. RXC tự động được xoá khi đọc UDR. Khi sử dụng ngắt nhận, chương trình phục vụ ngắt cần đọc UDR nếu không RXC không được xoá và một yêu cầu ngắt khác sẽ tiếp tục khi k ết thúc chương trình phục vụ ngắt. • Bit 6 - TXC: UART Transmit Complete TCX = 1 khi toàn bộ ký tự truyền ( bao gồm cả bit Stop) trong thanh ghi dịch truyền đã dịch xong ra ngoài mà chưa có dữ liệu mới ghi tới UDR. Cờ này rất hữu dụng trong chế đ ộ bán song công, khi đường truyền cần giải phóng cho việc nhận dữ liệu sau khi đã truyền xong ký t ự. Khi TXCIE = 1, n ếu TXC = 1 ngắt phục vụ truyền sẽ thực hiện. TXC sẽ tự động xoá khi chuyển qua chương trình phục vụ ngắt. Cũng có thể xoá TXC = 0 bằng cách ghi logic 0 tới nó. • Bit 5 - UDRE: UART Data Register Empty UDRE = 1 khi một ký tự được ghi tới UDR đã được chuyển qua thanh ghi dịch truy ền. Bit này bằng 1 thông báo khối truyền trong UART sẵn sàng nhận một ký tự mới để truyền đi. Khi UDRIE trong UCR được lập, ngắt hoàn tất truyền sẽ được thực hiện nếu UDRE = 1. UDRE sẽ tự động được xoá khi ghi dữ liệu tới UDR. Khi sử dụng ngắt điều khiển truyền dữ liệu chương trình ngắt phục vụ ngắt thanh ghi dữ liệu UART rỗng cần xoá UDRE, nếu không yêu cầu ngắt sẽ vẫn tiếp tục khi chương trình phục vụ ngắt kết thúc. Sau khi Reset UDRE = 1 để thông báo bộ truyền dữ liệu sẵn sàng. • Bit 4 - FE: Framing Error FE= 1 khi xảy ra lỗi sai khung truyền dữ liệu, tức là khi bit Stop trong khung truyền bằng 0. • Bit 3 - OR: OverRun OR = 1 khi xảy ra lỗi Overrun, lỗinày xảy ra khi có dữ liệu nhận sẵn sàng trong UDR ch ương trình không đọc trước khi ký tự kế tiếp được nhận xong trong thanh ghi dịch bộ nhận. • Bits 2..0 - Res: Reserved bits Các bit này không sử dụngvàluôn có giá trị bằng 0. Thanh ghi điều khiển UART - UCR • Bit 7 - RXCIE: RX Complete Interrupt Enable RXCIE = 1sẽ cho phép ngắt nhận dữ liệu, chương trình ngắt sẽ thực hiện khi RXC = 1. • Bit 6 - TXCIE: TX Complete Interrupt Enable TXCIE =1 sẽ cho phép ngắt truyền, chương trình ngắt truyền sẽ thực hiện khi TXC = 1. • Bit 5 - UDRIE: UART Data Register Empty Interrupt Enable Khi UDRIE = 1,nếu UDRE = 1chương trình ngắt phục vụ thanh ghi dữ liệu UDR rỗng sẽ thực hiện. • Bit 4 - RXEN: Receiver Enable RXEN = 1 sẽ cho phép bộ nhận dữ liệu trong UART. Khi bộ nhận không được cho phép các bit TXC, OR và FE sẽ không được lập. Nếu các cờ đang bằng 1, việc xóa RXEN cũng không xoá chúng trở lại. • Bit 3 - TXEN: Transmitter Enable Bit này cho phép bộ truyền trong UART, cấmbộ truyền khi đang trong chu kỳ truyền 1 ký tự, bộ truyền sẽ truyền hết ký tự đó và các ký tự đã ghi tới UDR.
- • Bit 2 - CHR9: 9 Bit Characters CHR9 = 1 khung truyền sẽ bao gồm 9 bit dữ liệu giữa Start và Stop bit. Bit thứ 9 sẽ đọc vào RXB8 và lấy từ TXB8 trong UCR. Bit thứ 9 này có thể sử dụng làm bit Stop công thêm hoặc bit kiểm tra chẵn lẻ. • Bit 1 - RXB8: Receive Data Bit 8 Bit này chứa bit thứ 9 trong dữ liệu nhận được khi CHR9 = 1. • Bit 0 - TXB8: Transmit Data Bit 8 Bit này chứa bit thứ 9 để truyền đi khi CHR9 = 1. Bộ tạo tốc độ Baud. Bộ tạo tốc độ baud là một bộ chia tần để tạo ra tốc độ truyền dữ liệu,với: • BAUD = Tốc độ baud (Baud-Rate) • fCK= Tần số thạch anh tạo xung clock (Crystal Clock frequency). • UBRR = Nội dung thanh ghi UBRR (0-255). Với các tần số thạch anh chuẩn tốc độ baud trên cổng UART tuỳ thuộc và giá trị nạp cho UBRR như trong bảng sau: BÀI 6 : GIAO TIẾP LCD Chức năng của các chân LCD : Các chân Vcc, Vss và Vee Chân Vcc cấp dương nguồn 5V, chân Vss nối đất, chân Vee được dùng để điều khiển độ tương phản của màn hình LCD. GIÁO TRÌNH VI ĐIỀU KHIỂN AVR 43 www.dks.edu.vn RS ( Register select) Khi ở mức thấp, chỉ thị được truyền đến LCD như xoá màn hình ,vị trí con trỏ ….Khi ở mức cao, kí tự được truyền đến LCD R/W (Read/Write) Dùng để xác định hướng của dữ liệu được truyền giữa LCD và vi điều khiển. Khi nó ở mức thấp dữ liệu được ghi đến LCD và khi ở mức cao, dữ liệu được đọc từ LCD. Nếu chúng ta chỉ cần ghi dữ liệu lên LCD thì chúng ta có thể nối chân này xuống GND để tiết kiệm chân E (Enable) Cho phép ta truy cập/xuất đến LCD thông qua chân RS và R/W.Khi chân E ở mức cao (1) LCD sẽ kiểm tra trạng thái của 2 chân RS và R/W và đáp ứng cho phù hợp. Khi dữ liệu được cấp đến chân dữ liệu thì một xung mức cao xuống thấp phải được áp đến chân này để LCD chốt dữ liệu trên các chân dữ liêu. Xung này phải rộng tối thiểu là 450ns. Còn khi chân E ở mức thấp (0), LCD sẽ bị vô hiệu hoá hoặc bỏ qua tín hiệu của 2 chân RS và R/W. Các chân D0 - D7 Đây là 8 chân dữ liệu 8 bít, được dùng để gửi thông tin lên LCD hoặc đọc nội dung của các thanh ghi trong LCD. Các kí tự được truyền theo mã tương ứng trong bảng mã ascii. Cũng có các mã lệnh mà có thể được gửi đến LCD để xoá
- màn hình hoặc đưa con trỏ về đầu dòng hoặc nhấp nháy con trỏ. LCD có 2 chế độ giao tiếp, chế độ 4 bit (chỉ dùng 4 chân D4 đến D7 để truyền dữ liệu) và chế độ 8 bit (dùng cả 8 chân dữ liệu từ D0 đến D7), ở chế độ 4 bit, khi truyền 1 byte, chúng ta sẽ truyền nửa cao của byte trước, sau đó mới truyền nửa thấp của byte. Trước khi truyền các kí tự ra màn hình LCD ta cần thiết lập cho LCD như chọn chế độ 4 bit hoặc 8 bit, 1 dòng hay 2 dòng ,bật/tắt con trỏ… Dưới đây là • bảng tập lệnh của LCD : Hướng dân thực hiên phân cứng: ̃ ̣ ̀ – Kêt nôi man hinh LCD tới cac công AVR: PORTC nôi tới công dữ liêu (DB0 – DB7), ́́ ̀̀ ́ ̉ ́ ̉ ̣ ́ ́́ ̣ PORTD câp cac tin hiêu E, RS, R/W#. Hướng dân lâp trinh: ̣̃ ̀ • – Muôn hiên thị ký tự trên man hinh LCD trước hêt phai khởi đông nó băng cach ghi giá trị ́ ̉ ̀̀ ́ ̉ ̣ ̀ ́ 38H tới thanh ghi điêu khiên cua no. Chon thanh ghi điêu khiên băng cach câp RS=1, ghi ̀ ̉ ̉ ́ ̣ ̀ ̉ ̀ ́ ́ băng cach câp R/W = 0 và cho E lên mức 1 sau đó keo xuông mức 0. ̀ ́ ́ ́ ́ – Trước khi ghi dữ liêu tới hiên thị lên LCD cân kiêm tra trang thai săn sang cua nó băng cach ̣ ̉ ̀ ̉ ̣ ́̃ ̀ ̉ ̀ ́ đoc thanh ghi trang thai (RS=1, R/W=1 và E = L-H-L). Nêu bit cao nhât cua thanh ghi trang ̣ ̣ ́ ́ ́̉ ̣ thai băng 1 thì LCD đã săn sang nhân dữ liêu. ́̀ ̃ ̀ ̣ ̣ – Để hiên thị ký tự trên LCD cân ghi mã ASCII cua ký tự cân hiên thị tới nó (RS=0, R/W=0, E ̉ ̀ ̉ ̀ ̉ = L-H-L, DB7-0=ASCII). – Để dong chữ trôi trên LCD có thể ghi lênh 18H (dich trai) hoăc 1CH (dich phai) tới LCD. ̀ ̣ ̣ ́ ̣ ̣ ̉
CÓ THỂ BẠN MUỐN DOWNLOAD
-
LCD 1602 (Tiếng Việt) - vuson.tk
8 p | 748 | 120
-
Chương 16: Thiết kế chương trình
8 p | 238 | 106
-
Bài 5: Lập trình điều khiển Timer - Interrupt
18 p | 271 | 44
-
Quá trình hình thành giáo trình điều chỉnh tốc độ khí lưu bằng bộ điều khiển p10
10 p | 62 | 7
-
Bài mở đầu Giới thiệu về vi điều khiển 8051
14 p | 71 | 6
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn