Hướng dẫn bài 6 timer/counter 0

QUAN93

Học sinh trung cấp
#11
May có anh mta_cdt ở đây em hỏi chút, giá trị ICRx trong timer đó thì mình lấy sao được huynh, cách tính dộ rộng xung chocuar nó. em đang dùng để điều kkhieenr động co mong anh giúp đỡ!
 

mta_cdt

Super Moderator
Thành viên BQT
#12
May có anh mta_cdt ở đây em hỏi chút, giá trị ICRx trong timer đó thì mình lấy sao được huynh, cách tính dộ rộng xung chocuar nó. em đang dùng để điều kkhieenr động co mong anh giúp đỡ!
Chú muốn tần số xung và sử dụng thạch anh, mode của timer1 là bao nhiêu thì mới tư vấn cho chú được.
 

QUAN93

Học sinh trung cấp
#13
Giả dụ mình muốn tính giá trị của ICRxn hẳng hạn với tần số thạch anh là 8Mhz thì tần số của timer là 1Mhz với hệ số chia là 1,tần số mong muốn là 10Khz thì giá trị ICRxn có phải bằng 100 không ạ anh mta_cdt.
 

mta_cdt

Super Moderator
Thành viên BQT
#14
Giả dụ mình muốn tính giá trị của ICRxn hẳng hạn với tần số thạch anh là 8Mhz thì tần số của timer là 1Mhz với hệ số chia là 1,tần số mong muốn là 10Khz thì giá trị ICRxn có phải bằng 100 không ạ anh mta_cdt.
Là bộ chia 8 chứ không phải bộ chia 1 nhé bạn. Còn ICR=100 là đúng nhưng chú ý 100 đây là số thập phân nhé không phải số hex.
 

QUAN93

Học sinh trung cấp
#16
mình tùy vào timer mà ta có giá trị là 16 or 8 bít ạ, cho em hỏi luôn ạ, cái Gia trị khi nó đếm từ 0 đến OCRxn thì có cạch xuống nếu chọn giá trị COMxn tương ưng hả huynh.
 

HaXuan

Học sinh trung cấp
#19
Bạn mta_cdt cho mình hỏi một chút. Nếu mình muốn tạo một xung cứ 1s nó cấp 1 xung lên trong 1 thời gian ngắn rồi trở về mặc định ban đầu thì làm như thế nào được nhỉ ? . Mình dùng ngắt timer 1s cho chân từ 0- 1 rồi 1-0 bằng 2 lệnh liên tiếp nhưng khi cho chạy thật thì khoảng thời gian chân ở mức 1 là khá lớn. Bạn giúp mình với.
 

mta_cdt

Super Moderator
Thành viên BQT
#20
Bạn mta_cdt cho mình hỏi một chút. Nếu mình muốn tạo một xung cứ 1s nó cấp 1 xung lên trong 1 thời gian ngắn rồi trở về mặc định ban đầu thì làm như thế nào được nhỉ ? . Mình dùng ngắt timer 1s cho chân từ 0- 1 rồi 1-0 bằng 2 lệnh liên tiếp nhưng khi cho chạy thật thì khoảng thời gian chân ở mức 1 là khá lớn. Bạn giúp mình với.
Cái này dùng ngắt timer được mà bạn. Trong ngắt timer bạn thiết lập 1 biến đếm số lần ngắt,
Ví dụ mình đặt là
int lanngat
Trong hàm ngắt timer thì
lanngat++;
if ((lanngat>10)&&(lanngat<20)){PORTB.0=1;}
if ((lanngat>20)&&(lanngat<30)){PORTB.0=0;}
... cứ như vậy bạn sẽ tạo được xung mà.
 

Quảng cáo Google