PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   dsPIC - Bộ điều khiển tín hiệu số 16-bit (http://www.picvietnam.com/forum/forumdisplay.php?f=29)
-   -   Thắc mắc về ngắt ngoài (http://www.picvietnam.com/forum/showthread.php?t=1888)

photoman 09-01-2008 12:23 PM

Thắc mắc về ngắt ngoài
 
Mình đang dùng con dsPic30f4011 ,đến phần ngắt ngoài của nó thì thậy có điểm lạ như sau :

void Init_INT2(void)
{
_INT2IF=0;
_INT2EP=1;
_INT2IE=1;
}

void Init_PortsForINT2(void)
{
_TRISD1=0;
_LATD1=0;
}

trên đây là hai hàm dùng để thiết lập port và ngắt cho INT2 , _INT2EP là bit chọn sườn ngắt (lên hoặc xuống) . Điều lạ là với cùng một giá trị của LATD1 thì việc thay đổi _INT2EP không có tác động gì :
_LATD1=0 --> sườn tác động luôn là sườn lên.
_LATD1=1 --> sườn tác động luôn là sườn xuống.

Nếu vậy thì bit _INT2EP có ý nghĩa gì nhỉ ?
Thêm một điểm nữa em thấy dsPic rất vô lý khi muốn kiểm tra một đầu vào thì phải đặt nó là đầu ra ( _TRISD1=0;) nghe nó chả logic gì cả .

Các bác làm ơn giải thích giùm em mấy cái trên với. Thanks lot !

namqn 09-01-2008 06:08 PM

Trích:

Nguyên văn bởi photoman (Post 13768)
Mình đang dùng con dsPic30f4011 ,đến phần ngắt ngoài của nó thì thậy có điểm lạ như sau :

void Init_INT2(void)
{
_INT2IF=0;
_INT2EP=1;
_INT2IE=1;
}

void Init_PortsForINT2(void)
{
_TRISD1=0;
_LATD1=0;
}

trên đây là hai hàm dùng để thiết lập port và ngắt cho INT2 , _INT2EP là bit chọn sườn ngắt (lên hoặc xuống) . Điều lạ là với cùng một giá trị của LATD1 thì việc thay đổi _INT2EP không có tác động gì :
_LATD1=0 --> sườn tác động luôn là sườn lên.
_LATD1=1 --> sườn tác động luôn là sườn xuống.

Nếu vậy thì bit _INT2EP có ý nghĩa gì nhỉ ?
Thêm một điểm nữa em thấy dsPic rất vô lý khi muốn kiểm tra một đầu vào thì phải đặt nó là đầu ra ( _TRISD1=0;) nghe nó chả logic gì cả .

Các bác làm ơn giải thích giùm em mấy cái trên với. Thanks lot !

Bạn cũng không có lý lắm khi chỉ đưa code mà không cho biết mạch phần cứng ra sao, và code trên được lấy từ đâu.

Thân,

photoman 09-01-2008 06:56 PM

Ấy .Chỉ là kiểm tra ngắt ngoài là chân D1 để thử nghiệm thôi mà ,với lại mạch em chỉ có thach anh với jump thui .Hi Hi .
Code trên là do em tự viết . Tất cả code đều chỉ có thế với hàm xử lý ngắt nữa thui , em thấy không quan trọng nên không copy lên .
Mong bác giải đáp giùm em

namqn 09-01-2008 10:34 PM

Bạn đã thử với _TRISD1 = 1 chưa?

Khi đặt _TRISD1 = 0, làm thế nào bạn tạo ra xung ngắt tại chân D1? Bạn có thực hiện thao tác gì trong main() không?

Thân,

photoman 09-01-2008 10:51 PM

_TRISD1 = 1 thì ngắt sảy ra liên tục không thể kiểm soát được .
Còn khi đặt _TRISD1=0 , em tạo xung ngát bằng cách dùng dây châm +5v hoặc 0v vào pin D1 thôi .
Hàm main() em hiển thị LCD , trong ngắt em đặt một biến để đếm số lần ngắt rôig hiển thị biến đó ra LCD .

namqn 09-01-2008 11:03 PM

Trích:

Nguyên văn bởi photoman (Post 13790)
_TRISD1 = 1 thì ngắt sảy ra liên tục không thể kiểm soát được .
Còn khi đặt _TRISD1=0 , em tạo xung ngát bằng cách dùng dây châm +5v hoặc 0v vào pin D1 thôi .
Hàm main() em hiển thị LCD , trong ngắt em đặt một biến để đếm số lần ngắt rôig hiển thị biến đó ra LCD .

Tôi đoán ra bạn đã dùng cách đó để tạo ngắt khi đặt _TRISD1=0 (làm cách đó dễ làm hỏng chân của vi mạch lắm). Từ thông tin rằng với _TRISD1 = 1 thì dsPIC bị ngắt liên tục, tôi cho rằng chân D1 đang bị nhiễu mạnh. Bạn nên dùng một điện trở khoảng vài k để kéo lên/kéo xuống chân D1, kết hợp với một nút nhấn nối thích hợp vào chân D1 để tạo xung ngõ vào. Có lẽ bây giờ bạn hiểu rằng vì sao tôi đề nghị bạn cho biết mạch phần cứng. Nếu bạn không chịu khó vẽ một mạch nguyên lý cho phần cứng đang dùng để thử nghiệm, và post lên diễn đàn, những người đang tìm cách giúp bạn như tôi sẽ phải giả thiết rất nhiều điều, và sẽ gặp nhiều khó khăn để chỉ ra cho bạn những chỗ không ổn.

Thân,

photoman 10-01-2008 11:50 AM

cám ơn bác namqn đã giúp đỡ. ĐÚng là trong mạch em không có điện trở treo vào các chân vdk . Trong lập trình em khắc phục bằng cách đặt _TRIS=0 và cho LAT=1 để kiểm tra mức 0 ở ngõ vào . Bây giờ mọi vấn đề đã được giải quyết . zui wa' ha ha


Múi giờ GMT. Hiện tại là 05:41 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam