Nguyên văn bởi jackychan
Xem bài viết
Thông báo
Collapse
No announcement yet.
Timer - Watchdog - Dao động...
Collapse
X
-
gửi bạn đoạn chương trình sau tham khảo nhé.Nguyên văn bởi fcvanbachc1 Xem bài viếtem mới vào nghề,có bài sau muốn hỏi.em đang đọc về ngắt của con dspic,thử lập trình ngắt cho nháy đèn led từ 0-9 cho nó.chương trình của em gặp vấn đề thì phải,vì khi em thay đổi giá trị của PR1 thì thời gian nháy vẫn thế.nó vẫn nháy loạn lên.vậy mong các anh sửa giúp em với,và tư vấn cho em chút it về ngắt.sau đây là đoạn chương trình của em:
#define __dsPIC33FJ12MC202__
#include <p33fj12mc202.h>
int led[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6 7};
int i;
void _ISR _T1Interrupt(void)
{
_T1IF = 0;
}
main()
{
TMR1=0;
PR1=0x2625A; //cho phep ngat sau 1 giay
T1CON=0x8030; //chon ti le dem trc la 256
_T1IF=0; //xoa co ngat TMR1
_T1IE=1; //cho phep ngat
TRISB=0xff00;
while(1)
{
for (i=0;i<10;i++)
{
PORTB=led[i];
}
}
}
#include <p33FJ12MC202.h>
int led[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 8};
int i = 0;
//Cac prototype cho cac chuong trinh con
void Init_PORTS(void);
void Init_TMR1(void);
//Chuong trinh chinh
int main(void) {
Init_PORTS(); //Khoi tao cac cong I/O
Init_TMR1(); //Khoi tao Timer 1
while (1) { //Vong lap chinh
};
}
//Chuong trinh con khoi tao cac cong I/O, de noi voi LED
void Init_PORTS(void) {
PORTB = 0xffff;
TRISB = 0x0000; //LED noi vao chan RB, la ngo ra
}
//Chuong trinh con khoi tao Timer 1, tran sau moi 1 giay o muc xung 40 Mips
void Init_TMR1(void) {
TMR1 = 0x0000; //Xoa so dem trong TMR1
PR1 = 0x2625A; //Nguong tran la 1 giay tuong ung voi clock = 80 MHz
_T1IF = 0; //Xoa co ngat cua Timer 1
T1CON = 0x8030; //Dung fcy lam clock, prescale = 1:256
_T1IE = 1; //Cho phep ngat Timer 1
}
//chuong trinh ngat
void _ISR _T1Interrupt(void)
{
_T1IF = 0; //Xoa co ngat
if (i>9)
{i=0;}
else
{PORTB = led[i];
i++;
}
}
tôi đã test bằng protues thấy tạm ổn.nhưng theo tính toàn của tôi là trễ 1 giây nhưng lúc mô phỏng thì lên đến 2s thì phải.mong các cao thủ chỉ giáo thêm
Comment
-
watchdog mình cũng ko rành lắm.
giờ cho hỏi mình muốn reset thì có thể dùng ngắt được ko?
ko cần phải chờ tràn bộ nhớ gì cả.
VD : mình cài đặt ngắt TiMER ,khi ngắt xảy ra thì vào ngắt reset lại toàn bộ được ko?
nếu dc hay ko gì thì cũng cho hỏi khi reset wachdog cần set những bít nào. cách tính toán thời gian tràn ra sao? cho xin tài liệu tham khảo càng tốt
thanks!
Comment
-
Sử dụng được. Nhưng nó :Nguyên văn bởi Lenh Ho Xem bài viếtủa, em chưa thử nhưng vì WDT là một timer nên có thể sử dụng nó như một timer được không>
- Nó không ổn định di bộ dao động RC bị phụ thuộc môi trường => không thể làm bộ đếm+ hẹn giờ do ko chính xác.
- Nếu chương trình chạy ổn định thì timer không bao giờ tràn => không dùng được ngắt.
Vậy bạn muốn ứng dụng nó vào việc gì đây ?
Comment
Bài viết mới nhất
Collapse
-
bởi Andrea14Chào mọi người,
Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...-
Channel: Điện tử truyền hình
12-12-2025, 12:42 -
-
Trả lời cho Đấu tắt điện cho máy tính bảngbởi bqvietBqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
-
Channel: Thiết bị điện tử cá nhân
06-12-2025, 17:17 -
-
Trả lời cho Xin hỏi về mạch thu FM/AM trong catsettebởi nguyendinhvanTheo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
-
Channel: Điện thanh
05-12-2025, 19:59 -

Comment