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 ittcChán quá các bác, em nhạt nhẽo quá nên tán em nào cũng tạch, tuyệt vọng vô cùng, nay lại được mấy anh đồng nghiệp cty đối tác mách cho em gái kia sinh năm 2K đầu, em chả biết nhóm đối tượng này phải tán ra sao bây giờ ?
Tính ra em...-
Channel: Tâm tình dân kỹ thuật
hôm nay, 00:18 -
-
bởi bqvietCó thể, ví dụ phần phản hồi gồm vi mạch cách ly quang, zener thứ cấp, transistor và điện trở phản hồi dòng ... Bất kỳ linh kiện nào nhóm đó hỏng dẫn tới mất đường phản hồi. TNY chính hãng phát hiện được chuyện đó nhưng linh kiện...
-
Channel: Điện tử công suất
Hôm qua, 18:36 -
-
bởi Nexus 6Pcho e hỏi, khi mạch có linh kiện nào đó hư thì có làm hỏng led đắt tiền (osram) không?
-
Channel: Điện tử công suất
Hôm qua, 10:42 -
-
bởi chinhnguyen9· Thí nghiệm 1 (Mạch boost, Vcc=12V, kích bằng dao động PƯM, duty 10%):
* Không có snubber + không tải: Xuất hiện hiện tượng dao động tắt dần tại cực D Mosfet (ringing). Hình 1 cho thấy trong chu kỳ đầu, điện áp spike lên tới hàng trăm V, điện...-
Channel: Hướng dẫn sử dụng diễn đàn
04-02-2026, 09:16 -
-
bởi Nexus 6Pe dùng KiCad 9.0 và đã xuất được file PDF mạch in gòi bác...
-
Channel: Điện tử công suất
03-02-2026, 16:25 -
-
bởi bqvietBấm chuột vào các tệp sẽ bật ra chương trình tương ứng. Nên dùng bản KiCAD sau
https://kicad-downloads.s3.cern.ch/a...ll_version.exe-
Channel: Điện tử công suất
03-02-2026, 14:57 -
-
bởi Nexus 6Pe cài KiCAD 2012 khi mở ra nó chỉ hiện ntn...
-
Channel: Điện tử công suất
03-02-2026, 11:20 -
-
bởi bqvietThực tế bạn nào không tải được tệp nén thiết kế thì căn cứ theo ảnh sơ đồ mạch có thể vẽ lại sơ đồ bằng chương trình EDA nào đó rồi làm mạch được mà. Càng thêm quen thuộc với sơ đồ. Sau đó tùy ý chuyển sang TinySwitch-III hoặc TinySwitch-4.
-
Channel: Điện tử công suất
02-02-2026, 21:13 -
-
bởi Nexus 6PCó ai có bản in của mạch in không, cho em xin file để đi in với ạ
-
Channel: Điện tử công suất
02-02-2026, 14:37 -
-
bởi Nexus 6PLink hư rồi ạ, xin lại link của bản thiết kế cũ ạ...
-
Channel: Điện tử công suất
02-02-2026, 10:48 -

Comment