7. Bộ định thời/đếm timer/counter1 16-bit
7.2 Một số định nghĩa
BOTTOM Bộ đếm đạt tới BOTTOM khi co giá trị 0x0000
MAX Bộ đếm đạt tới MAXimum khi khi đạt giá trị 0xFFFF (decimal 65535).
TOP Bộ đếm đạt tới TOP khi nó bằng với giá trị lớn nhất của chuỗi đếm. Giá trị này có thể được gán bởi các giá trị cố định : 0x00FF, 0x01FF, or 0x03FF,hoặc giá trị trong bộ nhớ của các thanh ghi OCR1A ,ICR1 .
7.3 Mô tả các thanh ghi
7.3.1 Timer/Counter 1 Control Register A – TCCR1A
Initial Value 0 0 0 0 0 0 0 0
• Bit 7:6 – COM1A1:0: Compare Output Mode for channel A • Bit 5:4 – COM1B1:0: Compare Output Mode for channel B
COM1A1: 0 và COM1B1: 0 điều khiển chân so sánh trạng thái ngõ ra (OC1A và OC1B tương ứng). Nếu một hay cả hai bit COM1A1:0 được set lên 1 thì ngõ ra OC1A sẽ ưu tiên hơn chức năng port I/O thông thường mà nó kết nối tới . Nếu một hay cả hai bit COM1B1:0 được set lên 1 thì ngõ ra OC1B sẽ ưu tiên hơn chức năng port I/O thông thường mà nó kết nối tới . Tuy nhiên chú ý là bit của thanh ghi DDR tương ứng với các chân OC1A, OC1B, OC1C phải được set để cho phép ngõ ra. Khi OC1A, OC1B, OC1C được kết nối tới chân thì tác dụng của các bit COM1X1:0 còn phụ thuộc vào lựa chọn của các bit WGM3:0. Như bảng sau thể hiện chức năng khi các bit WGM13:0 là set bình thường.
Table 37 hiện thị chức năng của bit COM1x1:0 khi các bit WGM13:0 là set ở chế độ PWM nhanh.
• Bit 3 – FOC1A: Force Output Compare for channel A • Bit 2 – FOC1B: Force Output Compare for channel B
Các bit FOC1A/FOC1B chỉ hoạt động khi các bit đặc biệt WGM13:0 không ở chế độ PWM. .khi bit FOC1A/FOC1B có giá trị là 1,ngay lập tức Compare Match(Compare Match :Đây là một chức năng của bộ định thời, theo đó, giá trị của bộ định thời (tức giá trị thanh ghi TCNTn (n=0,..,2)) liên tục được so sánh sánh với giá trị của thanh ghi OCRn (n=0,..,2). Khi hai giá trị này bằng nhau sẽ tạo ra sự thay đổi mức logic ở chân OCn (n=0,..,2). Nhờ đó, ta có thể tạo ra xung PWM ở ngõ ra OCn (n=0,..,2) của vi điều khiển.) bị buộc vào dạng sóng đơn vị chung (waveform generation unit).
Ngõ ra OC1A/OC1B bị thay đổi cho phù hợp với điều chỉnh các bit COM1x1:0.Các bit FOC1A/FOC1Bluôn ở trạng thái 0.
• Bit 1:0 – WGM11:0: Waveform Generation Mode
Sụ kết hợp với các bit WGM13:2 đã tìm thấy trong thanh ghi TCCR1B,những bit này điều khiển dãy đếm của bộ đếm, gốc giá trị lớn nhất (TOP) của bộ đếm, và những loại sóng chung được sử dụng , nhìn bảng Table 39. Các chế độ của hệ thống được hỗ trợ boier Timer/Counter là : Normal mode (counter), Clear Timer on Compare Match (CTC) mode,và ba loại của các chế độ Pulse Width Modulation (PWM).
7.3.2 Timer/Counter 1 Control Register B – TCCR1B
• Bit 7 – ICNC1: Input Capture Noise Canceler
Điều chỉnh bit này lên 1 để kích hoạt Input Capture Noise Canceler. Khi noise canceler đã hoạt động, ngõ vào từ chân Input Capture Pin (ICP1) được lọc. Yêu cầu chức năng của bộ 4 giá trị kề bằng với chân của ICP1 cho sự thay đổi của ngõ ra.
• Bit 6 – ICES1: Input Capture Edge Select
Bit này được chọn sao cho cạnh lên trong Input Capture Pin (ICP1) dùng để khởi động bắt giữ sự kiện. Khi bit ICES1 set là 0, cạnh xuống được dùng , và khibit ICES1 set là 1, cạnh lên sẽ khởi động để bắt giữ. Khi việc bắt giữ đó được kích hoạt theo điều chỉnh của ICES1 ,giá trị bộ đếm đượ sao chép vào
Input Capture Register (ICR1). Sụ kiện cũng sẽ set cờ Input Capture Flag (ICF1), và điều này có thể đượ dùng vì một Input Capture Interrupt,nếu ngắt này được kích hoạt. Khi ICR1 được dùng với giá trị TOP (see description of the WGM13:0 bits located in the TCCR1A and the TCCR1B
Register), ICP1 bị ngắt kết nối và giữ nguyên chúc năng Input Capture là disable.
• Bit 5 – Reserved Bit
Bit này dùng trong tương lai.
• Bit 4:3 – WGM13:2: Waveform Generation Mode
Tương tự thanh ghi TCCR1A.
• Bit 2:0 – CS12:0: Clock Select
Ba bit lựa chọn xung nhịp lựa chọn xung nguồn được dùng bởi Timer/Counter
7.3.3 Timer/Counter 1 – TCNT1H and TCNT1L
Thanh ghi bộ định thời TCNT1 là thanh ghi 16 bit được kết hợp từ hai thanh ghi
TCNT1H và thanh ghi TCNT1L. Thanh ghi TCNT1 có thể đọc hay ghi. Để cả 2 byte của TCNT 1 được đọc hay ghi đồng thời người ta dùng một thanh ghi tạm 8 bit byte cao 8-bit Temporary High Byte Register (TEMP). Thanh ghi TEMP được chia sẽ cho tất cả các thanh ghi 16 bit khác. Không nên chỉnh sửa thanh ghi TCNT1 khi nó đang đếm để tránh bị hỏng Compare Match giữa TCNT1 và một trong những thanh ghi OCR1X .
7.3.4 Output Compare Register 1 A – OCR1AH and OCR1AL
7.3.5 Output Compare Register 1 B – OCR1BH and OCR1BL
Thanh ghi output compare register (OCR1A/OCR1B) là thanh ghi 16 bit,
giá trị của nó được liên tục so sánh với bộ đếm (TCNT1). Khi có sự bằng nhau của hai thanh ghi này sẽ tạo ra một ngắt so sánh hay một dạng sóng ở chân ngõ ra so sánh OC1X. Ngõ ra cua thanh ghi so sánh co cỡ là 16 bit. nên để cả hai byte cao và thấp của thanh ghi được ghi hay đọc đồng thời khi CPU cần truy xuất thanh ghi này, người ta dùng thanh ghi tạm byte cao (TEMP), thanh ghi TEMP luôn lưu giữ byte cao của các thanh ghi 16 bit khi các thanh ghi này cần dùng tới nó
Chú ý là khi ghi một giá trị vào thanh ghi OCR1X trong lúc bộ đếm đang chạy, thì giá trị của thanh ghi OCR1X có thể cập nhật tức thời, nhưng cũng có thể chỉ được cập nhật khi bộ đếm đạt tới một giá trị nào đó, chẳn hạn, giá trị TOP, BOTTOM…
7.3.6 Input Capture Register 1 – ICR1H and ICR1L
Tương tự như trên! Các bạn có thể tham khao kĩ hơn trong datasheet.
7.3.7 Timer/Counter Interrupt Mask Register – TIMSK
• Bit 5 – TICIE1: Timer/Counter1, Input Capture Interrupt Enable
Khi bit này được set thành 1 và ngắt toàn cục (global interrupt) được cho phép thì ngắt bắt mẫu ngõ vào bộ Timer/couter1 (Timer/Counter1 Input Capture interrupt) được cho phép. Vector ngắt tương ứng sẽ được thực thi khi cờ ICF1 trong thanh ghi TIFR được set..
• Bit 4 – OCIE1A: Timer/Counter1, Output Compare A Match Interrupt Enable
Khi bit này được set thành 1 và ngắt toàn cục (global interrupt) được cho phép thì ngắt so sánh ngõ ra 1A (Timer/Counter1 Output Compare A Match Interrupt) được cho phép. Vector ngắt tương ứng sẽ được thực thi khi cờ OCF1A trong thanh ghi TIFR được set.
• Bit 3 – OCIE1B: Timer/Counter1, Output Compare B Match Interrupt Enable
Khi bit này được set thành 1 và ngắt toàn cục (global interrupt) được cho phép thì ngắt so sánh ngõ ra 1B (Timer/Counter1 Output Compare B Match Interrupt) được cho phép. Vector ngắt tương ứng sẽ được thực thi khi cờ OCF1B trong thanh ghi TIFR được set.
• Bit 2 – TOIE1: Timer/Counter1, Overflow Interrupt Enable
Khi bit này được set thành 1 và ngắt toàn cục (global interrupt) được cho phép thì ngắt cờ tràn bộ định thời 1 (Timer/Counter1 overflow interrupt) được cho phép. Vector ngắt tương ứng sẽ được thực thi khi cờ TOV1 trong thanh ghi TIFR được set.
7.3.8 Timer/Counter Interrupt Flag Register – TIFR
• Bit 5 – ICF1: Timer/Counter1, Input Capture Flag
Cờ này được set khi xảy ra sự kiện bắt mẫu ngõ vào (Input Capture) của chân ICP1. Khi thanh ghi ICR1 (Input Capture Register) được thiết lập bởi các bit WGMn3:0 để sử dụng như một giá trị TOP thì cờ ICF1 sẽ được set khi bộ đếm đạt tới giá trị TOP. Cờ ICF1 sẽ tự động xóa khi ngắt tương ứng được thực thi, hoặc có thể xóa hay set bằng cách ghi một giá trị logic vào vị trí của nó.
• Bit 4 – OCF1A: Timer/Counter1, Output Compare A Match Flag
Cờ này được set ngay sau khi giá trị bộ đếm (TCNT1) bằng với giá trị thanh ghi OCR1A (Output Compare Register A). Chú ý là một so sánh cưỡng bức (FOC1A) sẽ không set cờ này. Cờ OCF1A sẽ tự động xóa khi ngắt tương ứng được thực thi, hoặc có thể xóa hay set bằng cách ghi một giá trị logic vào vị trí của nó.
• Bit 3 – OCF1B: Timer/Counter1, Output Compare B Match Flag
Cờ này được set ngay sau khi giá trị bộ đếm (TCNT1) bằng với giá trị thanh ghi OCR1B (Output Compare Register B). Chú ý là một so sánh cưỡng bức (FOC1B) sẽ không set cờ này. Cờ OCF1B sẽ tự động xóa khi ngắt tương ứng được thực thi, hoặc có thể xóa hay set bằng cách ghi một giá trị logic vào vị trí của nó.
• Bit 2 – TOV1: Timer/Counter1, Overflow Flag
Việc thiết lập cờ này phụ thuộc vào thiết lập của các bit WGMn3:0, trong chế độ bình thường và CTC cờ TOV1 được set khi bộ định thời tràn.
8.SPI(Serial peripheral interface)
8.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ủa AT90S8535 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:
Để đ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).
8.2 Mô tả thanh ghi
8.2. 1.Thanh ghi SPCR:
Đây là thanh ghi 8 bit có địa chỉ trong các thanh I/O là 0x0D và trong SRAM là 0x2D, các bit trong thanh ghi này đều có thể đọc hoặc ghi.
Bit 7-SPIE: SPI interrupt enable
Bit này cho phép ngắt của bộ truyền tin SPI (nếu ngắt toàn cục và ngắt này được cho phép thì nếu cờ SPIF được bật thì ngắt đó sẽ được phục vụ.)
Bit 6-SPE: SPI Enable
Nếu bit này được set thì khối SPI sẽ được hoạt động và nó phải được set trong suốt quá trình SPI hoạt động.
Bit 5-DORD: Data order
Khi mà DORD được set thì LSB của byte dữ liệu sẽ được truyền trước và ngược lại. Bit 4-MSTR: Master/Slave select
Đây là bit dùng để lựa chọn chế độ master hay slave.Nếu bit này được set thì bộ SPI này có vai 42
trò là Master và ngược lại.Nếu như SS được cấu hình là lối vào và được đặt xuống mức thấp thì MSTR bị xóa về 0và SPIF và SPSR bị đặt lên 1 khi đó ta sẽ phải đặt lại MSTR về 1.
Bit 3-CPOL: Clock polarity
Khi bit này được set thì SCK ở mức cao trong trang thái ngủ và ngược lai. Bit 2-CPHA:Clock Phase
Quy định pha kích hoạt của xung nhip. Bit 1,0-SPR1,SPR0 :Clock rate select:
Đây là hai bit điều khiển tốc độ xung nhịp truyền của kết nối và được thiết lập trên Master. Nó không có tác dụng gì nếu như ta thiết lập trên slave.
Và giá trị của chúng ứng theo tổ hợp các bit như sau:
SPR1 SPR0 Tần số SCK
0 0 Fcl/4
0 1 Fcl/16
1 0 Fcl/64
1 1 Fcl/128
Như vậy đây là thanh ghi điều khiển toàn bộ khối SPI từ vai trò (Master/slave đến tốc độ truyền,cho phép ngắt,cho phép hoạt động,mức logic trong trang thái ngủ và pha kích hoạt xung nhịp.
8.2.2.Thanh ghi SPSR:
Đây là thanh ghi 8 bit (có địa chỉ 0x0e/0x2e)lưu giữ trạng thái của bộ truyền nhận SPI.Nhưng nó chỉ có hai bt được định nghĩa có khả năng đọc và ghi.Các bit còn lại không được định nghĩa và khi đọc chúng thì có giá trị zero.
Bit 7-SPIF: SPI interrupt Flag
Khi truyền xong một byte dữ liệu thì bit này được set và một ngắt được tạo ra.Nếu bit cho phép ngắt SPIE trong thanh ghi SPCR được set và ngắt toàn cục được cho phép thì ngắt đó được thi hành.Nếu không nó sẽ bị bỏ qua.Khi mà chân ss của Master được định nghĩa là cổng vào lài được thiết lập mức thấp thì cờ này cũng được set.Nó được xóa bởi phần cứng hi ngắt được phục vụ. Bit 6-WCOL: wite collision flag
Cờ báo xung đột khi ghi:Cờ này được set lên 1 nếu như dữ liệu được ghi lên thanh ghi dữ liệu SPI khi đang diễn ra một cuộc truyền.VÀ nó được xóa cùng với cờ SPIF khi đọc thanh ghi trạng thái và truy nhập vào thanh ghi dữ liệu.
Để bắt đàu một cuộc truyền thì ta cần cho phép bộ truyền nhận hoạt động.Khi truyền ta chỉ cần ghi byte dữ liệu cần truyền lên thanh ghi dữ liệu và đợi cho tới khi có cờ SPIF bật lên rồi tiếp tục truyền byte mới.
Để bắt đầu nhận dữ liệu cũng vậy.SPI đã được khởi động,chờ khi nào cờ SPIF bật lên thì ta đọc dữ liệu (cờ tự xóa khi ta đọc thanh ghi trạng thái).
8.2.3.Thanh ghi SPDR:
Đây cũng là thanh ghi 8 bit (0x0f/0x2f) có thể đọc và ghi được.Nó được sử dụng để truyền dữ liệu giữa hai bôn truyền nhận SPI.Ghi dữ liệu vào thanh ghi này có nghĩa là ta bắt đầu cuộc
truyền.Và đọc dữ liệu từ thanh ghi này là đọc dữ liệu được nhận.
8.2.4.Nguyên lý hoạt động:
Đây là sự ghép nối giữa hai bộ SPI song công (như của 2 vi điều khiển AVR). Đối với VĐK AVR thì các chân SCK (Serial clock) là chân PB7,đây là chân xung nhịp ra trong trường hợp nó là Master và là chân xung nhịp vào nếu nó là Slave.khi ghi dữ liệu lên thanh ghi dữ liệu SPDR của khối Master sẽ khởi động bộ tạo xung và dữ liệu được dịch và đưa ra chân MOSI (PB5) và vào chân MOSI của slave (PB5 đối với AVR).Sau khi dịch hết một byte bộ tạo xung ngừng hoạt động,và cờ SPIF được phất báo kết thúc truyền.Nếu như ngắt này được phép thì chương trình phục vu ngắt sẽ được phục vụ và khi đó cờ sẽ bị xóa.Đầu vào lựa chọn slave (SS và là chân PB4) được set mức tích cực thấp để lựa chọn thiết bị SPI slave và được dùng cho việc ghép nối nhiều VĐK.Hai thanh ghi dịch của hai bộ truyền và nhận (Master và slave) được xem như là một thanh ghi dịch vòng 16 bit.Và trong một lần trao đổi dữ liệu thì dữ liệu ở thanh ghi của Master và slave đã trao đổi cho nhau.Một “bộ”SIP làm đồng thời cả hai nhiệm vụ truyền và nhận nhưng chúng lại chỉ có một bộ đệm khi truyền à có hai bộ đệm khi nhận.Như vậy có nghĩa là dữ liệu truyền đi sẽ không được ghi lên thanh ghi dữ liệu truyền nếu như byte trước đó chưa được truyền xong (hay cờ SPIF chưa được bật).Và khi nhận dữ liệu cũng vậy dữ liệu cần phải được đọc trước khi dữ liệu mới được nhận xong.
Bảng cấu hình chân:
9.TWI – Two Wire Interface
Two Wire Interface là một sợi dây kết nối bus 2 chiều ,mà nó phù hợp với IC và SMBus.
Một thiết bị được kết nối đến một bus phải hành động như là một chủ hoặc thứ cấp.Đầu master thực hiện giai đoạn đầu cho sự vận chuyển dữ liệu với đầu salve trên bus,và hỏi xem nó có muốn vận chuyể hay nhận dữ liệu hay không.Mọt bus có thể có nhiều master,và một bộ xử lí điều phối ưu tiên ,nếu hai hoặc nhiều master cố gắng vận chuyển ở cùng một thời đểm.
Module TWi bao gồm bus chế độ logic mà nó có thể thu thập thông tin để tìm các điều kiện ngừng và bắt đầu ,bus bị đụng độ và bus bị lỗi .Điều này có thể được sử dụng để xác định chế độ bus (chạy không ,chủ, ,bận hoặc không biết) trong kiểu master .Bus chế độ logic tiếp tục hoạt động trong tất cả các chế độ nghỉ bao gồm chế độ nguồn giảm.
Thuật ngữTWI
The following definitions are frequently encountered in this section.
10.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 vẽ). 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.
Để đ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