PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Ngắt on-change của PIC16F887 (http://www.picvietnam.com/forum/showthread.php?t=5509)

pk178 12-12-2009 10:59 AM

Ngắt on-change của PIC16F887
 
Chào các bác !!!

Các bác cho em hỏi về ngắt on change của con 16F887, em xem trong datasheet thì thấy có nói là tất cả các chân của PORTB đều có thể cấu hình làm ngắt on-change :

"All of the PORTB pins are individually configurable as an interrupt-on-change pin. Control bits IOCB<7:0> enable or disable the interrupt function for each pin" - Trang 52

Em cũng mở file 16F887.h của CCS, cũng thấy mình có thể cấu hình tất cả các chân của PORTB làm ngắt on-change, nhưng không hiểu sao em làm lại không được, chỉ có thể làm ngắt on change đối với các chân từ RB4 đến RB7 thôi.

Mong các bác giải thích giúp em với ạ ! Thanks các bác nhiều !

khangspkt 24-02-2011 10:30 PM

Trích:

Nguyên văn bởi pk178 (Post 32174)
Chào các bác !!!

Các bác cho em hỏi về ngắt on change của con 16F887, em xem trong datasheet thì thấy có nói là tất cả các chân của PORTB đều có thể cấu hình làm ngắt on-change :

"All of the PORTB pins are individually configurable as an interrupt-on-change pin. Control bits IOCB<7:0> enable or disable the interrupt function for each pin" - Trang 52

Em cũng mở file 16F887.h của CCS, cũng thấy mình có thể cấu hình tất cả các chân của PORTB làm ngắt on-change, nhưng không hiểu sao em làm lại không được, chỉ có thể làm ngắt on change đối với các chân từ RB4 đến RB7 thôi.

Mong các bác giải thích giúp em với ạ ! Thanks các bác nhiều !

Trong datasheet có mô tả khi sử dụng chức năng này, khi khở tạo bạn nên cấu hình digital cho các chân RB (ANSEL=ANSELH=0) và enable chức năng interrupt-on-change (IOCB=0xFF). khi đó mình có thể sử dụng chức năng interrup-on-change.

hangocminh1989 18-04-2011 05:04 PM

Trích:

Nguyên văn bởi khangspkt (Post 41981)
Trong datasheet có mô tả khi sử dụng chức năng này, khi khở tạo bạn nên cấu hình digital cho các chân RB (ANSEL=ANSELH=0) và enable chức năng interrupt-on-change (IOCB=0xFF). khi đó mình có thể sử dụng chức năng interrup-on-change.

em hỏi một câu hơi ngu, mong bác thông cảm nói cho em biết, cấu hình digital cho các chân rb của pic 16f887 làm như thế nào bác?

stupid11 30-04-2011 12:09 AM

Các bạn cho mình hỏi mình viết chương trình bằng CCS ,sử dụng 2 ngắt.

Giả sử trong khi xử lý trong chương trình ngắt 1,thì ngắt 2 xảy ra...vậy sau khi thoát ngắt 1 ,nó có nhảy vào ngắt 2 hay không..hay là nó trở về chỗ bắt đầu xảy ra ngắt 1.

tanbka 30-04-2011 12:42 AM

Trích:

Nguyên văn bởi stupid11 (Post 44524)
Các bạn cho mình hỏi mình viết chương trình bằng CCS ,sử dụng 2 ngắt.

Giả sử trong khi xử lý trong chương trình ngắt 1,thì ngắt 2 xảy ra...vậy sau khi thoát ngắt 1 ,nó có nhảy vào ngắt 2 hay không..hay là nó trở về chỗ bắt đầu xảy ra ngắt 1.

Oh mình cũng không rõ tại thời điểm này con trỏ chương trình được nạp luôn địa chỉ của ngắt tiếp theo hay là nạp lại vị trí chương trình bị ngắt trước đó, sau đó mới nạp lại địa chỉ của ngắt tiếp theo. Tuy nhiên có điều chắc chắn là điều đó không ảnh hưởng đến chương trình của bạn, bới vì khi thực hiện xong hết các ngắt, CPU mới thực hiện lệnh tiếp theo.

stupid11 30-04-2011 12:51 AM

Trích:

Nguyên văn bởi tanbka (Post 44528)
Oh mình cũng không rõ tại thời điểm này con trỏ chương trình được nạp luôn địa chỉ của ngắt tiếp theo hay là nạp lại vị trí chương trình bị ngắt trước đó, sau đó mới nạp lại địa chỉ của ngắt tiếp theo. Tuy nhiên có điều chắc chắn là điều đó không ảnh hưởng đến chương trình của bạn, bới vì khi thực hiện xong hết các ngắt, CPU mới thực hiện lệnh tiếp theo.

Nhưng bạn ơi..mình sử dụng ngắt nhận RDA với ngắt Timer 1...giả sử chương trình đang xử lý trong ngắt timer 1 mà xảy ra ngắt nhận RDA..nếu mà sau khi thoát ngắt Timer 1 nó mà không vào ngắt nhận RDA thì sẽ bị mất dữ liệu..

tanbka 30-04-2011 11:47 AM

Trích:

Nguyên văn bởi stupid11 (Post 44530)
Nhưng bạn ơi..mình sử dụng ngắt nhận RDA với ngắt Timer 1...giả sử chương trình đang xử lý trong ngắt timer 1 mà xảy ra ngắt nhận RDA..nếu mà sau khi thoát ngắt Timer 1 nó mà không vào ngắt nhận RDA thì sẽ bị mất dữ liệu..

Bạn yên tâm, chắc chắn sau khi thoát ngắt T1 nó sẽ nhảy vào ngắt RDA, chương trình chính sẽ không được thực hiện gì trước khi thực hiện hết các ngắt.

stupid11 30-04-2011 01:39 PM

Trích:

Nguyên văn bởi tanbka (Post 44536)
Bạn yên tâm, chắc chắn sau khi thoát ngắt T1 nó sẽ nhảy vào ngắt RDA, chương trình chính sẽ không được thực hiện gì trước khi thực hiện hết các ngắt.

Nếu bạn đã quả quyết như vậy thì mình yên tâm rồi..cảm ơn bạn nhiều nhé.


Múi giờ GMT. Hiện tại là 01:25 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