Thanh ghi điều khiển và trạng thái bộ so sánh tương tự - ACSR pot

15 939 0
Thanh ghi điều khiển và trạng thái bộ so sánh tương tự - ACSR pot

Đ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

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) 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. đồ khối của bộ so sánh mô trên hình 1.25. Thanh ghi điều khiển 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 ACI0. Chương trình ngắt so sánh tương tự sẽ được gọi khi ACIE = 1 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 I = 1 ngắt so sánh tương 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: ACIS1 ACIS0 Tác động ngắt 00 Tác động khi đổi trạng thái ngõ ra bộ so sánh 01 Không sử dụng 10 Tác động khi ngõ ra có cạnh lên 11 Tác động khi ngõ ra có cạnh xuống 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 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. đồ 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 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 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, 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 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 kếtquả biến đổi sẽ không bị mất. Sau khi đọc ADCH, cả ADCL 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 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ỳ lấy mẫu Số chu kỳ để dữ liệu sẵn sàng Tổng thời gian biến đổi (chu kỳ) Tổng thời gian biến đổi (µs) Chu kỳ đầu tiên trong chế độ Free Run 14 25 25 125 – 500 Chu kỳ đầu tiên trong chế độ Single 14 25 26 130 – 520 Chu kỳ thông thường trong chế độ Free Run 2 13 13 65 – 260 Chu kỳ thông thường trong chế độ Single 2 13 14 70 - 280 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 không đang trong quá trình biến đổi. Chọn chế độ Single 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 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 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 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 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 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 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. ADPS2 ADPS1 ADPS0 Hệ số chia 000 1 001 2 010 4 011 8 100 16 101 32 110 64 111 128 Thanh ghi dữ liệu ADC - ADCL 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 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 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 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 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) 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 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: DDAn PORTAn I/O Pull – Up Giải thích 0 0 Vào Không Trạng thái trở kháng cao 0 1 Vào Có PA n trở thành nguồn dòng nếu chân vào được kéo xuống mức thấp. 1 0 Ra Không Ngõ ra bằng 0 1 1 Ra Không Ngõ ra bằng 1 đồ 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) đị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 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 PB5 MOSI (ngõ ra Master ngõ vào Slaver của cổng SPI) PB6 MISO (Ngõ vào Master ngõ ra Slaver của cổng SPI) PB7 SCK (Clock của cổng SPI) Khi cổng B được lập trình chức năng khác, các thanh ghi DDRB 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: DDBn PORTBn I/O Pull – Up Giải thích 0 0 Vào Không Trạng thái trở kháng cao 0 1 Vào Có PBn trở thành nguồn dòng nếu chân vào được kéo xuống mức thấp. 1 0 Ra Không Ngõ ra bằng 0 1 1 Ra Không Ngõ ra bằng 1 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) 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 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 01 Vào Có Nguồn dòng nếu PCn =0 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 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 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) 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 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 01 Vào Có Nguồn dòng nếu PCn =0 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 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 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 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) 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ữ [...]... 38H tới thanh ghi điều khiển của nó Chọn thanh ghi điều khiển bằng cách cấp RS=1, ghi bằng cách câp R/W = 0 cho E lến mức 1 sau đó kéo 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 trạng thái sẵn sàng của nó bằng cách đọc thanh ghi trạng thái (RS=1, R/W=1 E = L-H-L) Nếu bit cao nhất của thanh ghi trạng thái bằng 1 thì LCD đã sẵn sàng nhận dữ liệu – Để hiển thị ký tự trên... 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... 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ự đó 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 Stop bit Bit thứ 9 sẽ đọc vào RXB8 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... 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ẽ... được truyền tới UDR 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 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... 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... Vcc, Vss 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 vi điều khiển. .. 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 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. .. = 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-2 55) Với các tần số thạch anh chuẩn tốc độ baud trên cổng UART tuỳ thuộc giá trị nạp... vụ ngắt • Bit 6 - TXC: UART Transmit Complete TCX = 1 khi toàn bộ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 . 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. 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. 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

Ngày đăng: 27/06/2014, 00:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan