Bộ ñịnh thời ña nhiệm

Một phần của tài liệu Kiến trúc cơ bản của STM32 ARM Cortex m3 (Trang 74 - 79)

Tất cả các khối ñịnh thời ñều gồm bộñếm 16-bit với thanh ghi chia tần số dao

ñộng 16-bit(prescaler) và thanh ghi tự nạp(auto-reload). Bộñếm của khối ñịnh thời có thểñược cấu hình ñể ñếm lên, ñếm xuống hay trung tính(lên xuống xen kẽ nhau). Xung nhịp cho ñồng hồ có thểñược lựa chọn dựa trên 8 nguồn khác nhau: từñồng hồ chuyên biệt ñược lấy từñồng hồ hệ thống, từ xung nhịp chân ra lấy từ khối ñịnh thời khác, hoặc từ nguồn xung nhịp ngoại. Khối ñịnh thời sử dụng cổng chọn ñể lấy xung nhịp ñầu vào thích hợp, người dùng có thể sử

dụng chân ETR ñểñiều khiển cổng chọn này.

4 khối ñịnh thời với các thanh ghi 16-bit Prescaler, 16-bit Counter và Auto-reload. Xung nhịp hoạt ñộng có thể lấy từñồng hồ hệ thống, tín hiệu ngoại và các khối ñịnh thời khác

Mỗi khối ñịnh thời ñược cung cấp thêm 4 kênh Capture/Compare. Mỗi khối

ñịnh thời còn ñược hỗ trợ ngắt và DMA.

5.1.4.1.1 Khối Capture/Compare

Mỗi kênh Capture/Compare ñược ñiều khiển bởi duy nhất một thanh ghi. Chức năng của thanh ghi này có thể thay ñổi tùy thuộc cấu hình. Ở chế ñộ Capture, thanh ghi này có nhóm các bit ñảm nhận thiết lập lọc dữ liệu ñầu vào và chếñộ ñánh giá các ngõ PWM. Ở chế ñộ Compare, STM32 cung cấp hàm chuẩn so sánh và bộ tạo xung PWM.

Mỗi một kênh Capture/Compare ñều có một thanh ghi ñơn cấu hình chếñộ hoạt ñộng. Bit Capture Compare Selection dùng ñể chọn chếñộ.

5.1.4.1.2 Khối Capture

Một khối Capture cơ bản gồm có bốn kênh vào ñể cấu hình bộ phát hiện xung(Edge Detector). Khi một xung lên(rising edge) hay xung cạnh xuống( falling edge) ñược phát hiện, bộ ñếm hiện thời của sẽ ñược cập nhật vào các thanh ghi 16-bit Capture/Compare. Khi sự kiện capture xảy ra bộ ñếm có thể ñược khởi ñộng lại hoặc tạm ngưng. Một ngắt DMA có thể ñược sử dụng ở

4 kênh vào của khối Capture có các bộ lọc dữ liệu và phát hiện xung cạnh riêng. Khi sự kiện capture ñược nó có thểñược dùng ñể kích hoạt một sự kiện DMA khác.

5.1.4.1.3 Chếñộ PWM Input

Khối Capture có thểñược cấu hình dùng 2 ngõ Capture ñầu vào ñể ño tín hiệu PWM ở ngoài.

Ở chếñộño tín hiệu PWM, 2 kênh Capture ñược dùng ñểño chu kỳ Period và Duty của sóng PWM.

M3->CR1 = 0x00000000;//default

TIM3->PSC = 0x000000FF;//set max prescale TIM3->ARR = 0x00000FFF;//set max reload count

TIM3->CCMR1 = 0x00000001;//Input IC1 mapped to TI1 TIM3->CCER |= 0x00000000;//IC1 triggers on rising edge TIM3->CCMR1 |= 0x00000200;//Input IC2 mapped to TI1 TIM3->CCMR1 |= 0x00000020;//IC2 triggers on falling edge

TIM3->SMCR = 0x00000054; //Select TI1FP1 as input, rising edge trigger //reset counter

TIM3->CCER = 0x00000011;//enable capture channel TIM3->CR1 = 0x00000001;//enable timer

Ở chếñộ PWM sử dụng 2 kênh Capture. Ở thời ñiểm bắt ñầu chu kỳ PWM, bộ ñếm ñược thiết lập giá trị 0 và bắt ñầu ñếm lên khi phát hiện ra các tín hiệu cạnh lên(rising edge). Khi tín hiệu cạnh xuống ñược phát hiện(falling edge) giá trị bộñếm giá trị của chu kỳ Duty ñược tăng thêm.

5.1.4.1.4 Chếñộ PWM

Mỗi khối Timer ñều có khả năng tạo các xung nhịp PWM. Ở chế ñộ tạo xung PWM, giá trị Period ñược lưu trong thanh ghi Auto Reload. Trong khi ñó giá trị Duty ñược lưu ở thanh ghi Capture/Compare. Có hai kiểu tạo xung PWM, một là canh lề(edge-aligned) và canh lề giữa(centre-aligned). Với edge-aligned cạnh xuống của tín hiệu trùng với thời ñiểm thanh ghi reload cập nhật lại giá trị. Với centre-aligned thời ñiểm thanh ghi reload cập nhật lại là khoảng giữa của chu kỳ Duty.

Mỗi khối Timer ñều có khả năng tạo ra các xung PWM với ñộ lệch chu kỳ có thểñược cấu hình edge-aligned hoặc centre-aligned tính theo thời ñiểm cập nhật giá trị của thanh ghi Reload.

TIM2->CR1 = 0x00000000;//default

TIM2->PSC = 0x000000FF;//set max prescaler TIM2->ARR = 0x00000FFF;//set max reload count TIM2->CCMR1 = 0x00000068;//set PWM mode TIM2->CCR1 = 0x000000FF;//Set PWM start value TIM2->CCER = 0x00000101;//Enable CH1 output TIM2->DIER = 0x00000000;//enable update interrupt TIM2->EGR = 0x00000001;//enable update

5.1.4.1.5 Chếñộ One Pulse

Ở các chế ñộ ñã trình bày trên, ta thấy xung nhịp PWM ñược tạo có dạng dãy các tín hiệu liên tiếp nhau. Khối Timer còn cung cấp một chế ñộ hoạt ñộng riêng cho phép tạo duy nhất một xung PWM với tần số, bề rộng xung cùng với thời gian trễ có khả năng ñược cấu hình một cách linh ñộng.

5.1.4.3 Đồng bộ hoá các bộñịnh thời

Mặc dù các bộ ñịnh thời hoạt ñộng hoàn toàn ñộc lập với nhau, tuy nhiên chúng có thểñược ñồng bộ hóa từng ñôi một hay toàn bộ.

Mỗi khôi Timer 3 ñường vào hỗ trợ các xung sự kiện từ 3 khối Timers còn lại. Ngoài ra chân Capture từ Timer1 và Timer2(TIFP1 và TIFP2) cũng ñược ñưa khối ñiều khiển sự kiện của mỗi Timer. (adsbygoogle = window.adsbygoogle || []).push({});

Cấu hình các khối Timer kết hợp lại tạo thành mảng các Timer

Ở mô hình tạo thành một mảng Timer, một Timer ñóng vai trò Master, các Timer còn lại ñóng vai trò là Slave.

Một phần của tài liệu Kiến trúc cơ bản của STM32 ARM Cortex m3 (Trang 74 - 79)