PDA

View Full Version : timer là gì?


phamhiepst
29-07-2010, 03:36 PM
Cho mình hỏi câu hơi ngu:
timer là gì? có chức năng gì?
thanks all

nbb3i
29-07-2010, 04:12 PM
time là thời gian.
Vậy timer là bộ tạo thời gian
đầu vào của timer là một xung nhịp chuẩn (về tần số) còn đầu ra nó là một số đếm xung nhịp đó. Hiện nay trong vi xử lý chúng ta thấy khái niệm timer. theo cách hiểu của mình thì đặc điểm của nó vẫn như vậy. Đầu vào là xung clock và đầu ra là số đếm.
Tuy nhiên trong timer của vi xử lý nó còn được kết hợp thêm nhiều các tính năng khác. như ngắt, so sánh, các thanh ghi chức năng... Muốn biết chức năng của timer là gì thì cần phải đặt nó vào trong 1 con vi xử lý nhất định và với một chức năng nào đó.

dangtran_fv
11-08-2010, 11:29 AM
xin cho hỏi các khai báo cần thiết khi muốn sử dụng timer trong pic là gi bạn có thể giải thích giup mình không .

semipower
11-08-2010, 12:02 PM
Cho mình hỏi câu hơi ngu:

Có lẽ lần sau bạn (và các bạn khác) không nên dùng cụm từ này. Biết lên diễn đàn để đặt câu hỏi thì không ... tý nào. OK!
Về Timer, bạn nbb3i đã nói đúng rồi. Mình chỉ có thêm ý kiến:
- Timer: mình đọc là "Bộ định thời".
- Bản chất: là một bộ đếm xung (cho nên trong VDK có cụm từ Timer/Counter là thế). Chỉ có điều khi làm việc ở chế độ định thời thì xung kích (có tần số ổn định) được tạo ra ngay bên trong VDK (còn ở chế độ Counter thì xung kích lấy ở bên ngoài qua chân VDK). Giả sử tần số xung kích là F (Hz) => chu kỳ xung là 1/F (s) => sau N chu kỳ thì thời gian mà Timer cho biết là (1/F)*N (s). Nhưng lưu ý là thanh ghi của Timer chỉ lưu giá trị N chứ không lưu giá trị thời gian (1/F)*N. Giá trị này phải do người lập trình tính toán. GL!

CBNN
11-08-2010, 06:12 PM
Chào các bác , sẵn nói về timer bác cho em hỏi .
-Có phải muốn đếm xung có tần số cao hơn nhiều lần tần số xung nhịp Fosc của VDK thì có bị giới hạn gì không?
-Và ta có thể sử dụng nhiều mode timer cùng một lúc không?
bài tập cụ thể là : dùng Pic 16f887 (hay con nào cũng được) làm một bộ đếm tần số 50MHz (hoặc lớn hơn), có độ phân giải là 1Hz .

Vậy phương pháp sẽ là :
-Dùng Timer 1 có thanh ghi 16 bit để đếm xung ,
-Gọi giá trị này là F_in được giá trị max là 65536 .
Mỗi lần tràn ta cộng vào F_dem 1 đon vi .

Tạo một bộ định thời , cứ mỗi 100ms lấy mẫu một lần . gọi giá trị này là F_value
F_value = (F_dem*65536+F_in ) * 10
-cho hiển thị F_value

Các bác cho em hỏi làm sao để lấy giá trị của F_in khi tới chu kỳ lấy mẫu? .

semipower
11-08-2010, 11:27 PM
"một bộ đếm tần số 50MHz (hoặc lớn hơn), có độ phân giải là 1Hz" nghĩa là sao hả bạn?

semipower
12-08-2010, 12:14 AM
Trước khi xem xét đến phương pháp của bạn, cần phải xem bộ VDK có "nhận ra" tín hiệu xung của bạn không đã. Bởi vì bản chất bộ Timer (lúc này chính xác hơn là bộ counter) không phải là đếm tín hiệu xung từ bên ngoài, mà là đếm tín hiệu đã được trích mẫu (trích mẫu đồng bộ).Nếu tần số của bạn lớn hơn tần số trích mẫu đồng bộ thì: hoặc là xung của bạn có cũng như không; hoặc là xung vào bộ đếm chính là xung trích mẫu đồng bộ. Tần số xung trích mẫu đồng bộ là: Fosc/2.

CBNN
12-08-2010, 02:10 PM
Chào bác .
ý em là làm một máy đo tần số tần số Max là 50Mhz , độ phân giải 1 Hz là đo được và hiển thị tần số nhỏ nhất là 1Hz , không bàn tới độ chính xãc .
em thấy có rất nhiều project làm cái này bằng con 16f84 . mà Fosc chỉ 4Mhz . đ6ay là link http://www.g7ltt.com/frequency_counter/

em muốn tìm hiểu hương pháp của nó , nhưng code được viết bằng ASM em khong đọc được . chứ làm thì nó cho sẵn file .hex nạp phát là chạy.

semipower
12-08-2010, 03:33 PM
Mình vẫn thắc mắc là vấn đề giới hạn tần số cho phép mà bộ đếm có thể đếm được. Không biết người ta giải quyết vấn đề này thế nào. Có ai đã nghiên cứu kỹ vấn đề này thì cho ý kiến để mọi người được rõ.

lampic
02-12-2010, 10:22 PM
Cho mình hỏi câu hơi ngu:
timer là gì? có chức năng gì?
thanks all
timer(tieng Anh) tam dich la thi-gio hay thoi-gian.
Thuong dung de an-dinh ngay gio kich hoat cho chay hoac ngung mot bo phan.
Thi du: muon den hoac 1 dong- co khoi dong chay luc 1gio trua va ngung o 3 gio trua thi phai dung timer de an- dinh thoi gian.Chuc vui