Thực hành vi điều khiển AVR - Bài 4
Số trang: 7
Loại file: pdf
Dung lượng: 369.96 KB
Lượt xem: 15
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
AVR - Cách dùng Timer trong vi điều khiển AVRĐặc tính:- Bao gồm các bộ timer 8bit 16 bit, thường có từ 3 – 4 bộ Timer - Có các kênh PWM (từ 4 đến 8 kênh tuỳ loại ) - Bao gồm nhiều chế độ ngắt và PWM … - Có thể là một kênh đếm riêng biệt - Tự động xoá Timer trong chế độ so sánh(tự động nạp lại) - Có chế độ PWM - Tạo ra tần số - Đếm các dự kiện ngắt ngoài - Tạo ra các ngắt tràn và ngắt so sánh...
Nội dung trích xuất từ tài liệu:
Thực hành vi điều khiển AVR - Bài 4Bài 4 AVR - Cách dùng Timer trong vi điều khiển AVRĐặc tính:- Bao gồm các bộ timer 8bit 16 bit, thường có từ 3 – 4 bộ Timer- Có các kênh PWM (từ 4 đến 8 kênh tuỳ loại )- Bao gồm nhiều chế độ ngắt và PWM …- Có thể là một kênh đếm riêng biệt- Tự động xoá Timer trong chế độ so sánh(tự động nạp lại)- Có chế độ PWM- Tạo ra tần số- Đếm các dự kiện ngắt ngoài- Tạo ra các ngắt tràn và ngắt so sánh....IntroductionCác chế độ hoạt động của timer:Chế Độ Thông Thường:Đây là chế độ hoạt động đơn giản nhất của Timer .Bộ đếm sẽ liên tục đếm tăng lên cho đếnkhi vượt quá giá trị lớn nhất TOP và sau đó sẽ được khởi động lại tại giá trị Bottom.Trongcác hoạt động thông thường thì cờ tràn sẽ được thiết lập khi giá trị trong Timer đạt giá trịkhông và không bị xoá đi.Tuy nhiên nếu mà ngắt tràn được chấp nhận thì cờ ngắt sẽ tự độngbị xoá khi ngắt được thực hiện.Giá trị trong Timer có thể được viết vào bất cứ lúc nàoChế Độ So Sánh (CTC):Đấy là chế độ mà giá trị trong Timer luôn được so sánh với giá trị trong thanh ghi ORC .Khigiá trị trong Timer bằng giá trị trong thanh ghi ORC thì giá trị trong Timer sẽ bị xoá đi.Giá trịtrong ORC đóng vai trò là giá trị TOP cho bộ đếm.Chế độ này cũng cho phép tạo ra tần số sosánh ở đầu ra.Tuy nhiên trong chế độ này nếu giá trị mới ghi vào thanh ghi ORC mà nhỏ hơngiá trị tức thời của bộ đếm thì thì 1 so sánh sẽ bị lỡ, khi đó bộ đếm sẽ đếm đến giá trị lớn nhấtsau đó rơi xuống giá trị 0 trước khi so sánh tiếp theo xuất hiện. Sơ đồ thời gian của chế độ CTCChế Độ Fast PWM:Cho phép tạo ra sóng với tần số cao.Sự khác biệt cơ bản giữa Fast PWM với các loại PWMkhác là nó chỉ sử dụng 1 sườn dốc.Bộ đếm sẽ đếm từ Bottom đến Max sau đó khởi động lạitừ bottom. Trong chế độ không đảo đầu ra của chân so sánh OCx sẽ bi xoá khi có phép toánso sánh giữa TCNTx và thanh ghi ORC là bằng nhau. Và sẽ được sét lên 1 khi giá trị đạtBottom. Trong chế độ đảo ,đầu ra đảo sẽ được set lên 1 khi sự so sánh giữa thanh ghi ORC vàgiá trị trong Timer bằng nhau và sẽ bị xoá khi giá trị đạt Bottom.Trong cả hai trường hơp nàytần số của chế đô Fast PWM đều gấp đôi so với chế độ phase correct PWM sử dụng hai sườndốc.Với tần số cao này chế độ độ Fast PWM rất tốt cho các ứng dụng như ADC hay chỉnh lưu.Ngoài ra với tần số cao giúp làm giảm kích thước của thiết bị ngoài như cuộn dây tụ từ đógiúp làm giảm toàn bộ chi phí cho hệ thốngSơ đồ dưới đây mô tả chu kỳ thời gian của chế độ:Biều đồ thời gian chế độ Fast PWMChế độ 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ế độ sosá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 set 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 haisườ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 đây mô tả hoạt độngcủa toàn bộ quá trình: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 correctPWM 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.Tần số có thể tính theo công thức như sau:f=fc/N*510Trong đó N tạo ra bởi bộ chia nó có các giá trị là:1,8,64,256 hoặc 1024Các thanh ghi trong bộ Timer/ Counter:Thanh ghi điều khiển - TCCRx:Bít 3,6 –WG00-WG01: Đây là các bít chọn chế độ trong Timer.Các giá trị được mô tả trongbảng sau.Bảng chọn chế độ Timer: Bít 5-4 : COM00-COM01: Quy định giá trị đầu ra trong các phép so sánhBít 2: 0 – CS2:0 :Đây là các bít quy định xung cấp cho hoạt động của Timer.Bảng dưới đâymô tả toàn bộ các giá trịChọn chế độ cho xung ClockThanh ghi cờ ngắt-TIFR:Bít 1-OCFx : Khi hai giá trị bằng nhau bít này được set lên bằng 1Bít 1-TVOx : Khi bộ đếm vượt quá giá trị Top thì bít này được set bằng 1Thanh ghi mặt nạ ngắt-TIMSK:Bít 1 – OCIEx: khi bít này được set lên bằng 1 thì cho phép ngắt so sánhBít 0 –TOIEX : Khi bít này được set lên bằng 1 thì cho phép ngắt trànđoạn chương trình trên dùng timer1. Timer này là bộ đếm 16bit nên giá trị đếm được tối đa làFFFF. Trong phần khởi tạo Timer ta khởi tạo xung clock cho bộ đếm là 125Khz = 125000 cónghĩa là bộ đếm sẽ đếm được 125000 giá trị trong 1 giây. Ta làm phép tính như sau:125000 số ----1 giây? số----- 0,02 giây (20ms)ta tính được trong 20ms bộ timer sẽ đếm được là: 125000x0.02= 2500 số.Ta cần là làm sao cho timer1 đếm được 2500 số sẽ tràn có nghĩa là cần phải nạp vô nó một giátrị xác định trước (mặc định nó sẽ đếm từ 0000>FFFF và bị tràn) giá trị này sẽ nhỏ hơn65535(FFFF) là 2500 (9C4 Hexa) vậy ta tính được giá trị cần nạp lại sau mỗi lần tràn làFFFF- 9C4 = F63B.#includeunsigned char count=0;interrupt [TIM1_OVF] void timer1_ovf_isr(void) //ngat xay ra sau 20ms{TCNT1H=0xF6; //giá trị nạp lại TCNT1L=0x3B;// goi ham can xu li sau 20mscount++;if (count>10) {count=0;//goi ham can xu li sau 2s }}void main(void) {// Timer/Counter 1 initialization// Clock source: System Clock// Clock value: 125.000 kHz// Mode: Normal top=FFFFh// OC1A output: Discon.// OC1B output: Discon.// Noise Canceler: Off// Input Capture on Falling Edge// Timer 1 Overflow Interrupt: On// Input Capture Interrupt: Off// Compare A Match Interrupt: Off// Compare B Match Interrupt: OffTCCR1A=0x00;TCCR1B=0x03;TCNT1H=0xF6;TCNT1L=0x3B;ICR1H=0x00;ICR1L=0x00;OCR1AH=0x00;OCR1AL=0x00;OCR1BH=0x00;OCR1BL=0x00;#asm(sei) //bat co cho phep ngat toan c ...
Nội dung trích xuất từ tài liệu:
Thực hành vi điều khiển AVR - Bài 4Bài 4 AVR - Cách dùng Timer trong vi điều khiển AVRĐặc tính:- Bao gồm các bộ timer 8bit 16 bit, thường có từ 3 – 4 bộ Timer- Có các kênh PWM (từ 4 đến 8 kênh tuỳ loại )- Bao gồm nhiều chế độ ngắt và PWM …- Có thể là một kênh đếm riêng biệt- Tự động xoá Timer trong chế độ so sánh(tự động nạp lại)- Có chế độ PWM- Tạo ra tần số- Đếm các dự kiện ngắt ngoài- Tạo ra các ngắt tràn và ngắt so sánh....IntroductionCác chế độ hoạt động của timer:Chế Độ Thông Thường:Đây là chế độ hoạt động đơn giản nhất của Timer .Bộ đếm sẽ liên tục đếm tăng lên cho đếnkhi vượt quá giá trị lớn nhất TOP và sau đó sẽ được khởi động lại tại giá trị Bottom.Trongcác hoạt động thông thường thì cờ tràn sẽ được thiết lập khi giá trị trong Timer đạt giá trịkhông và không bị xoá đi.Tuy nhiên nếu mà ngắt tràn được chấp nhận thì cờ ngắt sẽ tự độngbị xoá khi ngắt được thực hiện.Giá trị trong Timer có thể được viết vào bất cứ lúc nàoChế Độ So Sánh (CTC):Đấy là chế độ mà giá trị trong Timer luôn được so sánh với giá trị trong thanh ghi ORC .Khigiá trị trong Timer bằng giá trị trong thanh ghi ORC thì giá trị trong Timer sẽ bị xoá đi.Giá trịtrong ORC đóng vai trò là giá trị TOP cho bộ đếm.Chế độ này cũng cho phép tạo ra tần số sosánh ở đầu ra.Tuy nhiên trong chế độ này nếu giá trị mới ghi vào thanh ghi ORC mà nhỏ hơngiá trị tức thời của bộ đếm thì thì 1 so sánh sẽ bị lỡ, khi đó bộ đếm sẽ đếm đến giá trị lớn nhấtsau đó rơi xuống giá trị 0 trước khi so sánh tiếp theo xuất hiện. Sơ đồ thời gian của chế độ CTCChế Độ Fast PWM:Cho phép tạo ra sóng với tần số cao.Sự khác biệt cơ bản giữa Fast PWM với các loại PWMkhác là nó chỉ sử dụng 1 sườn dốc.Bộ đếm sẽ đếm từ Bottom đến Max sau đó khởi động lạitừ bottom. Trong chế độ không đảo đầu ra của chân so sánh OCx sẽ bi xoá khi có phép toánso sánh giữa TCNTx và thanh ghi ORC là bằng nhau. Và sẽ được sét lên 1 khi giá trị đạtBottom. Trong chế độ đảo ,đầu ra đảo sẽ được set lên 1 khi sự so sánh giữa thanh ghi ORC vàgiá trị trong Timer bằng nhau và sẽ bị xoá khi giá trị đạt Bottom.Trong cả hai trường hơp nàytần số của chế đô Fast PWM đều gấp đôi so với chế độ phase correct PWM sử dụng hai sườndốc.Với tần số cao này chế độ độ Fast PWM rất tốt cho các ứng dụng như ADC hay chỉnh lưu.Ngoài ra với tần số cao giúp làm giảm kích thước của thiết bị ngoài như cuộn dây tụ từ đógiúp làm giảm toàn bộ chi phí cho hệ thốngSơ đồ dưới đây mô tả chu kỳ thời gian của chế độ:Biều đồ thời gian chế độ Fast PWMChế độ 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ế độ sosá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 set 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 haisườ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 đây mô tả hoạt độngcủa toàn bộ quá trình: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 correctPWM 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.Tần số có thể tính theo công thức như sau:f=fc/N*510Trong đó N tạo ra bởi bộ chia nó có các giá trị là:1,8,64,256 hoặc 1024Các thanh ghi trong bộ Timer/ Counter:Thanh ghi điều khiển - TCCRx:Bít 3,6 –WG00-WG01: Đây là các bít chọn chế độ trong Timer.Các giá trị được mô tả trongbảng sau.Bảng chọn chế độ Timer: Bít 5-4 : COM00-COM01: Quy định giá trị đầu ra trong các phép so sánhBít 2: 0 – CS2:0 :Đây là các bít quy định xung cấp cho hoạt động của Timer.Bảng dưới đâymô tả toàn bộ các giá trịChọn chế độ cho xung ClockThanh ghi cờ ngắt-TIFR:Bít 1-OCFx : Khi hai giá trị bằng nhau bít này được set lên bằng 1Bít 1-TVOx : Khi bộ đếm vượt quá giá trị Top thì bít này được set bằng 1Thanh ghi mặt nạ ngắt-TIMSK:Bít 1 – OCIEx: khi bít này được set lên bằng 1 thì cho phép ngắt so sánhBít 0 –TOIEX : Khi bít này được set lên bằng 1 thì cho phép ngắt trànđoạn chương trình trên dùng timer1. Timer này là bộ đếm 16bit nên giá trị đếm được tối đa làFFFF. Trong phần khởi tạo Timer ta khởi tạo xung clock cho bộ đếm là 125Khz = 125000 cónghĩa là bộ đếm sẽ đếm được 125000 giá trị trong 1 giây. Ta làm phép tính như sau:125000 số ----1 giây? số----- 0,02 giây (20ms)ta tính được trong 20ms bộ timer sẽ đếm được là: 125000x0.02= 2500 số.Ta cần là làm sao cho timer1 đếm được 2500 số sẽ tràn có nghĩa là cần phải nạp vô nó một giátrị xác định trước (mặc định nó sẽ đếm từ 0000>FFFF và bị tràn) giá trị này sẽ nhỏ hơn65535(FFFF) là 2500 (9C4 Hexa) vậy ta tính được giá trị cần nạp lại sau mỗi lần tràn làFFFF- 9C4 = F63B.#includeunsigned char count=0;interrupt [TIM1_OVF] void timer1_ovf_isr(void) //ngat xay ra sau 20ms{TCNT1H=0xF6; //giá trị nạp lại TCNT1L=0x3B;// goi ham can xu li sau 20mscount++;if (count>10) {count=0;//goi ham can xu li sau 2s }}void main(void) {// Timer/Counter 1 initialization// Clock source: System Clock// Clock value: 125.000 kHz// Mode: Normal top=FFFFh// OC1A output: Discon.// OC1B output: Discon.// Noise Canceler: Off// Input Capture on Falling Edge// Timer 1 Overflow Interrupt: On// Input Capture Interrupt: Off// Compare A Match Interrupt: Off// Compare B Match Interrupt: OffTCCR1A=0x00;TCCR1B=0x03;TCNT1H=0xF6;TCNT1L=0x3B;ICR1H=0x00;ICR1L=0x00;OCR1AH=0x00;OCR1AL=0x00;OCR1BH=0x00;OCR1BL=0x00;#asm(sei) //bat co cho phep ngat toan c ...
Tìm kiếm theo từ khóa liên quan:
Thực hành điện tử hệ thống điều khiển điều khiển số vi xử lý vi điều khiển AVRGợi ý tài liệu liên quan:
-
Đề cương chi tiết học phần Vi xử lý
12 trang 297 0 0 -
Xây dựng bộ điều khiển RST số theo mô hình mẫu
4 trang 204 0 0 -
Hình thành hệ thống điều khiển trình tự xử lý các toán tử trong một biểu thức logic
50 trang 171 0 0 -
Báo cáo môn Vi xử lý - TÌM HIỂU VỀ CÁC BỘ VI XỬ LÝ XEON CỦA INTEL
85 trang 154 0 0 -
Luận văn: Xây dựng hệ thống băng tải đếm sản phẩm sử dụng PLC S7-200
61 trang 150 0 0 -
Báo cáo bài tập lớn môn Kỹ thuật vi xử lý: Thiết kế mạch quang báo - ĐH Bách khoa Hà Nội
31 trang 133 0 0 -
Bài tập lớn môn Vi xử lý, vi điều khiển: Thiết kế bộ điều khiển tốc độ của động cơ điện một chiều
27 trang 117 0 0 -
Bài tập lớn Vi xử lý: Thiết kế môn học Đèn LED đơn ghép thành đèn quảng cáo
15 trang 116 0 0 -
NGÂN HÀNG ĐỀ THI Môn: CƠ SỞ ĐIỀU KHIỂN TỰ ĐỘNG Dùng cho hệ ĐHTX, ngành Điện tử - Viễn thông
53 trang 114 1 0 -
CƠ SỞ ĐIỀU KHIỂN TỰ ĐỘNG - Học Viện Bưu Chính Viễn Thông
99 trang 109 0 0