Tạo tần số quét cho ma trận

12 479 2
Tạo tần số quét cho ma trận

Đ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

Chương5: Tạo tần số quét cho ma trận Để đảm bảo cho hình ảnh hiển thị rõ nét thì ta cần phải điều chỉnh tần số hiển thị cho phù hợp . Tần số hiển thị càng cao thì hình ảnh càng rõ nét . Dùng bộ định thời của vi điều khiển giúp ta có thể điều khiển tần số hiển thị của ma trận led. Mỗi khi ngắt định thời được thực hiện thì ta sẽ cho một cột của ma trận sáng . Qua đó ta có thể tính được tần số hiển thị của ma trận bằng 1/8 tần số ngắt. Chương sẽ giới thiệu về một số chế độ của Timer1 và các thanh ghi dùng để thiết lập chế độ , sau đó sẽ trình bày về cách thiết lập thanh ghi dùng cho việc điều khiển tần số quét led ma trận. 5.1) Timer1 Atmega16 5.1.1) Một số chế độ hoạt động Trước tiên ta cần chú ý các định nghĩa sau: • BOTTOM : Counter tới BOTTOM khi nó có dạng 0x0000. • MAX : Counter tới MAX khi nó có dạng 0xFFFF. • TOP : khi Counter tới TOP khi giá trị của nó bằng giá trị cao nhất trong hàng đếm. Giá trị TOP có thể được gán là 1 trong các giá trị cố định khác sau : 0x00FF, 0x01FF, 0x03FF hoặc là giá trị lưu trong OCR1A hoặc thanh ghi ICR1. Việc gán giá trị TOP phụ thuộc vào chế độ hoạt động. a) Chế độ thông thường : Chế độ hoạt động đơn giản nhất của Timer là chế độ thường (WGM13:0 = 0). Trong chế độ này bộ đếm luôn đếm lên và không được xóa. Bộ đếm tràn khi đếm qua giá trị max (MAX= 0xFFF) và trở lại BOTTOM (0x0000). Trong chế độ này Timer/Counter Overflow Flag (TOV1) sẽ được thiết lập ngay khi TCNT1 trở về 0. Trong trường hợp này cờ TOV1 hoạt dộng như bit thứ 17 của bộ đếm nên nó không tự xóa. Tuy nhiên khi kết hợp với ngắt tràn Timer cờ này có thể tự động xóa, độ phân giải của Timer có thể tăng lên bởi phần mềm. 60 Khối bắt tín hiệu đầu vào khá dễ sử dụng ở chế độ thường nhưng cần phải chú ý tới khoảng thời gian lớn nhất giữa các sự kiện ngoài, khoảng thời gian này phải không vượt quá độ phân giải của bộ đếm. Nếu khoảng thời gian giữa các sự kiện quá dài ta có thể dùng ngắt tràn hay tăng độ rộng xung đếm để có thể mở rộng độ phân giải cho khối này . b) Chế độ CTC ( clear timer on compare) : Trong chế độ CTC (WGM13:0 = 4 hoặc 12), thanh ghi ICR1 hoặc OCR1A được sử dụng tạo độ phân giải cho bộ đếm. Trong chế độ CTC bộ đếm bị xóa về 0 khi giá trị bộ đếm (TCTN1) trùng với giá trị của thanh ghi OCR1A (WGM13:0 = 4) hoặc ICR1 (WGM13:0 = 12). Thanh ghi OCR1A hoặc ICR1 định nghĩa giá trị đỉnh cho bộ đếm. Hình 5 - Giản đồ thời gian chế độ CTC Một ngắt có thể phát ra khi giá trị bộ đếm đạt tới giá trị TOP bởi cùng sử dụng cờ OCF1A hoặc ICF1. Nếu ngắt được cho phép, thủ tục điều khiển ngắt có thể được sử dụng để cập nhập lại giá trị TOP. Thay đổi TOP bằng giá trị gần với BOTTOM khi bộ đếm đang chạy với độ rộng xung lớn phải thực hiện cẩn thận . Nếu giá trị mới ghi cho OCR1A hoặc ICR1 thấp hơn so với giá trị của TCNT, bộ đếm sẽ không bắt được thời điểm đạt giá trị TOP. Do đó nó sẽ đếm tới giá trị MAX (0xFFF) rồi quay về 0x0000 trước khi có thể có thể gặp đượcgiá trị TOP. Để có thể tạo sóng đầu ra trong chế độ CTC, đầu ra OC1A có thể lật mức logic của nó mỗi khi bắt gặp giá trị top bằng cách thiết lập các bit chọn chế độ so sánh đầu ra COM1A1:0 61 = 01. Giá trị của chân OC1A sẽ không được cập nhật nếu ta không thiết lập nó là đầu ra (DDR_OC1A=1). Sóng phát ra từ chân OCA1 sẽ có tần số cực đại của 1OC A f = _ /clk I O f khi OCR1A được lập về 0x0000. Tần số của sóng được tính như sau: Công thức 5 - Quan hệ giữa tần số đầu ra với tần số timer ở chế dộ CTC _ / 2. .(1 ) clk I O OCnA f N OCRnA f = + N thể hiện độ chia tần ,có thể là các giá trị sau : 1, 8, 64, 256, 1024 c) Chế độ fast PWM : Fast Pulse Width Modulation hoặc chế độ fast PWM ( WGM13:0 = 5,6,7,14,15) có chức năng tạo ra nhiều dạng sóng tần số cao. Fast PWM khác với chức năng PWM bởi nó chế độ hoạt động sườn đơn. Bộ đếm đếm từ BOTTOM tới TOP sau đó lập tức quay về BOTTOM. Trong chế độ so sánh không đảo đầu ra thì đầu ra OC1x được thiết lập khi TCNT1 và OCR1x bằng nhau, và xóa khi đạt giá trị TOP. Trong chế độ so sánh đảo đầu ra thì chân OC1x được xóa khi ICNT1 và OCR1x bằng nhau, và được thiết lập khi đạt giá trị TOP. Do chỉ dùng sườn đơn nên tần số hoạt động của fast PWM cao gấp 2 lần so với các chế độ Phase correct và Phase and Frequency corect PWM ( các chế độ này khi hoạt động dùng 2 sườn). Tần số cao làm chế độ fast PWM phù hợp với điều chỉnh công suất, chỉnh lưu và ứng dụng DAC. Độ phân giải cho fast PWM có thể cố định 8, 9 hoặc 10 bit, hoặc định nghĩa bởi ICR1 hoặc OCR1A. Độ phân giải nhỏ nhất cho phép là 2 bit (ICR1, OCR1A lập lên 0x0003), lớn nhất là 16 bit (ICR1 hoặc OCR1A khi được gán giá trị MAX). Độ phân giải PWM trong các bit có thể tính theo hàm : Công thức 5 - Độ phân giải PWM log( 1) log(2) FPWM TOP R + = 62 Hình 5 - Giản đồ thời gian chế độ Fast PWM Cờ tràn Timer/Counter (TOV1) được lập mỗi khi Counter tới giá trị TOP. Ngoài ra chân OC1A hoặc ICF1 được thiết lập trong cùng một chu kỳ xung với thời điểm TOV1 được thiết lập. Nếu ngắt được cho phép, thủ tục điều khiển ngắt có thể được sử dụng để cập nhập lại TOP và các giá trị so sánh. Khi thay đổi các giá trị TOP ta phải chắc chắn giá trị TOP mới lớn hơn hoặc bằng giá trị của tất cả các thanh ghi so sánh nếu không sẽ không có sự gặp nhau giữa TCNT1 và OCR1x . Thủ tục cập để nhập lại ICR1 khác với 0CR1A khi sử dụng để định nghĩa giá trị TOP. Thanh ghi ICR1 không có 2 bộ đệm. Nếu ICR1 thay đổi tới 1 giá trị thấp hơn TCNT1 khi bộ đếm đang chạy thì nó sẽ đếm tớ giá trị MAX (0xFFFF) và quay lại giá trị 0x0000 . OCR1A có bộ đẹm kép nên có thể ghi lên nó bất kỳ lúc nào. Khi OCR1A I/O được ghi, giá trị ghi sẽ được đưa vào trong thanh ghi đệm OCR1A. Thanh ghi so sánh OCR1A sẽ cập nhập lại ghía trị trong thanh ghi đệm tại chu kỳ sau khi TCNT1 đạt giá trị TOP. Trong chế độ fast PWM, khối so sánh cho phép tạo ra 1 dạng sóng tại chân OC1x. Thiết lập các bit COM1x1:0 tới 2 có thể tạo ra một dạng PWM không đảo và một PWM đảo bằng cách thiết lập COM1x1:0 lên 3. Giá trị tại chân OC1x chỉ quan sát được nếu chân này được thiết lập là đầu ra (DDR_OC1x). Dạng sóng PWM được sinh ra khi thiết lập (xóa) chân OC1x tại thời điểm OCR1x = TCNT1 và xóa (thiết lập) OC1x tại thời điểm bộ đếm bị xóa ( từ TOP về BOTTOM). 63 Tần số PWM tại đầu ra có thể được tính theo hàm: Công thức 5 - Quan hệ giữa tần số đầu ra với tần số timer ở chế độ Fast PWM log( 1) log(2) OCnxPWM TOP f + = N thể hiện độ chia tần ,có thể là các giá trị sau : 1, 8, 64, 256, 1024 d) Chế độ Phase Correct PWM Chế độ này hoạt động dựa trên hai sườn lên xuống.Bộ đếm sẽ đếm liên tục từ giá trị BOTTOM đến giá trị MAX và sau đó từ giá trị MAX đến giá trị BOTTOM.Trong chế độ so sánh không đảo chân so sánh (OCx) sẽ bị xóa khi giá trị TCNTx bằng giá trị OCRx trong quá trình đếm lên và sẽ được thiết lập bằng 1 khi giá trị so sánh xuất hiện trong quá trình đếm xuống.Chế độ so sánh đảo thì các giá trị là ngược lại.Với hoạt động hai sườn xung này thì chế độ này không tạo ra được tần số nhỏ như chế độ một sườn xung. Nhưng do tính cân đối của hai sườn xung thì nó tốt hơn cho điều khiển động cơ . Chế độ phase correct PWM hoạt động cố định là 8 bít.Trong chế độ này bộ đếm sẽ tăng cho đến khi đạt giá trị MAX, khi đó nó sẽ đổi chiều đếm. Biểu đồ thời gian sau đây mô tả hoạt động của hoạt động quá trình: Hình 5 - Giản đồ thời gian chế độ Phase Corect PWM 64 Từ biểu đồ thời gian ta nhận thấy việc thay đổi tần số trong hoạt động của phase correct PWM có thể thay thế bằng hai giá trị là MAX và BOTTOM. Nó linh hoạt hơn so với chế độ Fast PWM. 5.1.2) Các thanh ghi 1.TCCR1A: Bit 7 6 5 4 3 2 1 0 Read/Write R/W R/W R/W R/W W W R/W R/W Khởi tạo 0 0 0 0 0 0 0 0 Bit7,6 COM1A1,2 : chọn chế độ đầu ra cho kênh A Bit5,4 COM1B1,2 : chọn chế độ đầu ra cho kênh B Nếu cả 2 bit đều được ghi 0 thì các chân OC1A và OC1B coi như không được kết nối với bộ dịnh thời và hoạt động như các chân bình thường khác của vi điều khiển. Khi có ít nhất 1 trong 2 bit được ghi mức cao thì các chân này sẽ được điều khiển bởi bô định thời tùy theo chế độ hoạt động được chọn: Bảng 5 - Thiết lập chế độ đầu ra cho timer COM1A1 COM1A0 COM1B1 COM1B0 FOC1A FOC1B WGM11 WGM10 COM1A1/ COM1B1 COM1A0/ COM1B0 Mô tả 0 0 Port hoạt động thông thường.Không kết nối OC1A/OC1B. 0 1 Lật trạng thái OC1A/OC1B 1 0 Xóa OC1A/OC1B 1 1 Thiết lập OC1A/OC1B 65 Bit3,2 : cưỡng chế so sánh ở các chế độ không điều chế xung. Bit1,0 : Được sử dụng kết hợp với các bít WGM12 và WGM13 để xác định chế độ của bộ định thời : Bảng 5 - Các chế độ điều chế xung Chế độ WGM13 WGM12 WGM11 WGM10 Chế độ hoạt động của timer TOP Cập nhật OCR1X Thiết lập cờ TOV1 0 0 0 0 0 Thường 0xFFFF Lập tức MAX 1 0 0 0 1 PWM, Phase Correct, 8-bit 0x00FF TOP BOTTOM 2 0 0 1 0 PWM, Phase Correct, 9-bit 0x01FF TOP BOTTOM 3 0 0 1 1 PWM, Phase Correct, 10-bit 0x03FF TOP BOTTOM 4 0 1 0 0 CTC OCR1A Lập tức MAX 5 0 1 0 1 Fast PWM, 8-bit 0x00FF TOP TOP 6 0 1 1 0 Fast PWM, 9-bit 0x01FF TOP TOP 7 0 1 1 1 Fast PWM, 10-bit 0x03FF TOP TOP 8 1 0 0 0 PWM, Phase and Frequency Correct ICR1 BOTTOM BOTTOM 9 1 0 0 1 PWM, Phase and Frequency Correct OCR1A BOTTOM BOTTOM 10 1 0 1 0 PWM, Phase Correct ICR1 TOP BOTTOM 11 1 0 1 1 PWM, Phase Correct OCR1A TOP BOTTOM 12 1 1 0 0 CTC ICR1 Lập tức MAX 13 1 1 0 1 Reserved - - - 14 1 1 1 0 Fast PWM ICR1 TOP TOP 15 1 1 1 1 Fast PWM OCR1A TOP TOP 2.TCCR1B: Bit 7 6 5 4 3 2 1 0 Read/Write R/W R/W R R/W R/W R/W R/W R/W Khởi tạo 0 0 0 0 0 0 0 0 ICNC11 ICES1 - WGM13 WGM12 CS12 CS11 CS10 66 Bit 7 ICNC1: Khi bit này được ghi1 thì các tín hiệu vào từ chân ICP1 sẽ được lọc nhiễu. Bộ lọc nhiễu cần 4 lần lấy mẫu liên tiếp có giá trị bằng nhau ở chân ICP1. Do đó tín hiệu vào bị trễ 4 chu kỳ giao động so với khi không lọc nhiễu. Bit 6 ICES1 : Bit này lựa chọn sườn kích hoạt sự kiện tại chân ICP1. Khi bit này được ghi 0 thì sườn âm được sử dụng để kích hoạt Khi bit này được ghi 1 thì sườn dương được sử dụng. Bit 5 : không dùng trong Atmega16 Bit 4,3 WGM13,2 : Cùng với WGM11,0 để để xác định chế độ của bộ định thời Bit 2,1,0 CS12,1,0 : Dùng để lựa chọn tần số cho Timer Bảng 5 - Lựa chọn tần số cho bộ đếm CS12 CS11 CS10 Mô tả 0 0 0 Timer không hoạt động 0 0 1 I/O clk /1 ( không chia tần ) 0 1 0 I/O clk /8 ( từ bộ chia tần ) 0 1 1 I/O clk /64 ( từ bộ chia tần ) 1 0 0 I/O clk /256 ( từ bộ chia tần ) 1 0 1 I/O clk /1024( từ bộ chia tần ) 1 1 0 Nguồn ngoài từ chân T1 , sườn lên 1 1 1 Nguồn ngoài từ chân T1 , sườn xuống 3.TCNT1H/L: Bit 7 6 5 4 3 2 1 0 Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Khởi tạo 0 0 0 0 0 0 0 0 TCNT1[15:8] TCNT1[7:0] 67 Lưu giá trị của bộ đếm. Có khả năng truy nhập trực tiếp để ghi và đọc thông qua việc sử dụng thanh ghi tạm thời. Việc thay đổi thanh ghi này trong khi bộ đếm đang hoạt động có thể bỏ qua một lần gặp nhau giữa TCNT1 và các thanh ghi OCR1x . 4.OCR1AH/L: Bit 7 6 5 4 3 2 1 0 Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Khởi tạo 0 0 0 0 0 0 0 0 5.OCR1BH/L: Bit 7 6 5 4 3 2 1 0 Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Khởi tạo 0 0 0 0 0 0 0 0 Các thanh ghi OCR1x được liên tục so sánh với thanh ghi TCNT1 . Mỗi khi bằng nhau có thể tạo ra 1 ngắt so sánh đầu ra hay để thay đổi dạng sóng tại các chân đầu ra OC1x . 6.TIMSK: Bit 7 6 5 4 3 2 1 0 OCR1A[15:8] OCR1A[7:0] OCR1B[15:8] OCR1B[7:0] OCIE2 TOIE2 TICE1 OCIE1A OCIE1B TOIE1 OCIE0 TOIE0 68 Read/Write R/W R/W R R/W R/W R/W R/W R/W Khởi tạo 0 0 0 0 0 0 0 0 Các bit 7,6,1,0 dùng cho các timer khác của Atmega16. Bit 5 - TICIE1 : Khi bit này được thiết lập thành 1 và ngắt toàn cục (global interrupt) được cho phép thì ngắt bộ đếm đầu vào 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 thiết lập. Bit4 - OCIE1A : Khi bit này được thiết lập thành 1 và ngắt toàn cục (global interrupt) được cho phép thì ngắt so sánh đầu ra 1A (Timer/Counter1 Output Compare A Match Interrupt) được cho phép. Vector ngắt tương ứng sẽ được thực hiện khi cờ OCF1A trong thanh ghi TIFR được thiết lập. Bit3 - OCIE1B : 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 đầu 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 thiết lập . Bit2 – TOIE1 : Khi bit này đượcset 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 thiết lập . 7.TIFR: Bit 7 6 5 4 3 2 1 0 Read/Write R/W R/W R R/W R/W R/W R/W R/W Khởi tạo 0 0 0 0 0 0 0 0 OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOF0 69 [...]... khi bộ định thời tràn 5.2) Tạo tần số quét ma trận Để đảm bảo mắt người có thể cảm nhận được hình ảnh dễ dàng không bị rung thì ta cần tạo tần số quét khoảng 60Hz Do ma trận led có 8 cột sáng luân phiên nên số lần cấp nguồn cho led là : 60 x 8= 480 lần/s Khi đó khoảng cách giữa 2 lần cấp nguồn liên tiếp khoảng : 1000:480= 2,083 ms 70 Tần số của thạch anh là 11.0592MHz do đó số chu kì dao động trong... luận Tốc độ quét ma trận ảnh hưởng hình ảnh quan sát được trên ma trận Do đó việc tạo tốc độ quét hợp lý có vai trò quan trọng trong việc điều khiển hiển thị led ma trận Dùng bộ định thời là phương pháp đơn giản nhất để điều khiển tốc độ quét một cách chính xác Việc thiết lập các thông số cho bộ định thời một cách linh hoạt sẽ giúp ta dễ dàng hơn trong việc điều khiển tốc độ quét cho ma trận 71 ... CTC thì ta cần nạp giá trị 23115 cho thanh ghi OCR1A nếu không chia tần số dao động ( các bit CS12:0 của TCCR1B dược gán 001) Với các độ chia tần khác của Timer ta có thể nạp các giá trị sau: Bảng 5 - Tạo tốc độ quét 60 Hz cho ma trận CS12 CS11 CS10 OCR1A TCCR1B 0 0 1 23040 0x09 0 1 0 2880 0x0A 0 1 1 360 0x0B 1 0 0 90 0x0C 1 0 1 22 0x0D Để thay đổi tốc độc quét cho ma trận ta có thể thay đổi các giá... trên là : 11.0592 x 2083= 23040lần Đây cũng là số chu kì timer phải đếm để cấp nguồn cho led các cột của ma trận Để đơn giản trong việc điều khiển cấp nguồn cho led ma trận ta dùng ngắt Timer1 chế độ CTC ngắt khi bộ đếm đạt giá trị TOP=OCR1A Do không cần lấy sóng đầu ra nên ta có thể gán 0x10 cho thanh ghi TIMSK , gán 0x00 cho thanh ghi TCCR1A , gán 0x0M cho TCCR1B với M là một trong các giá trị sau...Các bit 7,6,1,0 dùng cho các timer khác của Atmega16 Bit5 - ICF1 : Cờ này được thiết lập khi xảy ra sự kiện tại ngõ vào (Input Capture) của chân ICP1 Khi thanh ghi ICR1 (InputCapture Register) được thiết lập bởi các bit WGMn3:0 . Chương5: Tạo tần số quét cho ma trận Để đảm bảo cho hình ảnh hiển thị rõ nét thì ta cần phải điều chỉnh tần số hiển thị cho phù hợp . Tần số hiển thị. 5.2) Tạo tần số quét ma trận Để đảm bảo mắt người có thể cảm nhận được hình ảnh dễ dàng không bị rung thì ta cần tạo tần số quét khoảng 60Hz . Do ma trận

Ngày đăng: 26/10/2013, 01:20

Hình ảnh liên quan

Hình 5- Giản đồ thời gian chế độ CTC - Tạo tần số quét cho ma trận

Hình 5.

Giản đồ thời gian chế độ CTC Xem tại trang 2 của tài liệu.
Hình 5- Giản đồ thời gian chế độ Fast PWM - Tạo tần số quét cho ma trận

Hình 5.

Giản đồ thời gian chế độ Fast PWM Xem tại trang 4 của tài liệu.
Hình 5- Giản đồ thời gian chế độ Phase Corect PWM - Tạo tần số quét cho ma trận

Hình 5.

Giản đồ thời gian chế độ Phase Corect PWM Xem tại trang 5 của tài liệu.
Bảng 5- Thiết lập chế độ đầu ra cho timer - Tạo tần số quét cho ma trận

Bảng 5.

Thiết lập chế độ đầu ra cho timer Xem tại trang 6 của tài liệu.
Bảng 5- Các chế độ điều chế xung - Tạo tần số quét cho ma trận

Bảng 5.

Các chế độ điều chế xung Xem tại trang 7 của tài liệu.
Bảng 5- Lựa chọn tần số cho bộ đếm - Tạo tần số quét cho ma trận

Bảng 5.

Lựa chọn tần số cho bộ đếm Xem tại trang 8 của tài liệu.
Bảng 5- Tạo tốc độ quét 60Hz cho ma trận - Tạo tần số quét cho ma trận

Bảng 5.

Tạo tốc độ quét 60Hz cho ma trận Xem tại trang 12 của tài liệu.

Từ khóa liên quan

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

Tài liệu liên quan