![]() |
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 ! |
Trích:
Thân, |
Ấ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 |
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, |
_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 . |
Trích:
Thân, |
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à 12:50 AM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam