View Full Version : Tự định nghĩa ngắt trong PIC
thienthan_den
19-09-2008, 11:20 AM
Có một vấn đề nhỏ là: ta không muốn dùng các ngắt chuẩn mà Pic hỗ trợ (có thể vì dùng hết rùi...) mà ta muốn định nghĩa một ngắt khác. VD ngắt trên chân RD0 của Pic chẳng hạn. Vậy thì phải làm cách nào??? Nếu có ai biết thì chỉ cho em với.
PS: Em có giải pháp này không biết chấp nhận được không, đó là dùng multithread (đa tiến trình) để lập trình cho Pic. Không biết thế nào nữa. Nhưng đến bây giờ vẫn chưa có tài liệu gì về vấn đề này. Xin mọi người giúp đỡ
Thanks very much.
minhsondaklak
19-09-2008, 03:32 PM
1. Nhận tín hiệu vào RD0 như là ngắt:
Void MAIN()
{
...
while (1)
{
...
if (RD0 == 1) {Muốn làm gi thi làm}
}
}
Mình chỉ biết có vậy, dùng biện pháp quét RD0 trong vòng lặp While.
Kết quả không đáp ứng 100% như ngắt.
Nếu thời gian xảy ra sự kiện RD0=1 ngắn hơn thời gian chạy hết 1 vòng lặp While thì "lần ngắt" đó có thể bị bỏ qua.
2. multithread: Bạn hỏi Google, tôi đã gặp bên "dientuvietnam" thì phải.
namqn
19-09-2008, 05:20 PM
Có một vấn đề nhỏ là: ta không muốn dùng các ngắt chuẩn mà Pic hỗ trợ (có thể vì dùng hết rùi...) mà ta muốn định nghĩa một ngắt khác. VD ngắt trên chân RD0 của Pic chẳng hạn. Vậy thì phải làm cách nào??? Nếu có ai biết thì chỉ cho em với.
PS: Em có giải pháp này không biết chấp nhận được không, đó là dùng multithread (đa tiến trình) để lập trình cho Pic. Không biết thế nào nữa. Nhưng đến bây giờ vẫn chưa có tài liệu gì về vấn đề này. Xin mọi người giúp đỡ
Thanks very much.
PIC chỉ là một vi điều khiển, không hỗ trợ multithread một cách tự nhiên. Hệ thống nhúng với PIC làm bộ não là một máy tính chuyên dụng, chứ không phải máy tính đa dụng. Do đó, nhiều khái niệm của máy tính đa dụng không áp dụng cho hệ thống nhúng dùng vi điều khiển.
Thân,
thienthan_den
20-09-2008, 10:37 AM
Cảm ơn anh Nam, em hiểu rồi.
Vậy là cách dùng multithread không được rồi. Không biết còn cách nào khác không?
Làm như bạn minhsondaklak thì đúng là có rắc rối như bạn nói, nhất là với những chương trình có hàm main() dài!!!
Có bạn nào biết cách làm không, chỉ mình với.
minhsondaklak
20-09-2008, 10:45 AM
Không sợ Main() dài, chỉ sợ While() dài thôi !
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.