Chào các anh ! em đang tìm hiểu điều khiển động cơ .... đọc tài liệu cũng nhiều .... Em có thắc mắc thế này : nhiều người sử dụng ngắt ngoài để đếm xung từ 1 encoder của 1 động cơ .... mà trong PIC16F877a thì chỉ có 1 chân B0 ... vậy khi sử dụng từ 2 động cơ muốn đọc xung từ 2 động cơ thì phải làm thế nào ???
Đếm xung encoder cho 2 động cơ
Collapse
X
-
ở Pic 16F877a chỉ có 1 chân ngắt ngoài theo cạnh nhưng cả cổng B có chế độ ngắt khi có sự thay đổi trên chân . Như vậy vậy có thể sử dụng ngắt cổng B khi có sự thay đổi nhưng chú ý 1 sự thay đổi chỉ ứng với T/2 không phải T như như ngắt ngoài .Nguyên văn bởi ElecTel View PostChào các anh ! em đang tìm hiểu điều khiển động cơ .... đọc tài liệu cũng nhiều .... Em có thắc mắc thế này : nhiều người sử dụng ngắt ngoài để đếm xung từ 1 encoder của 1 động cơ .... mà trong PIC16F877a thì chỉ có 1 chân B0 ... vậy khi sử dụng từ 2 động cơ muốn đọc xung từ 2 động cơ thì phải làm thế nào ???
chúc bạn thành công !
-
Cảm ơn anh ! Đây là ý tưởng cho chương trình của em ...... rất mong ý kiến đánh giá của anh !Nguyên văn bởi daokhanhvimaru View Postở Pic 16F877a chỉ có 1 chân ngắt ngoài theo cạnh nhưng cả cổng B có chế độ ngắt khi có sự thay đổi trên chân . Như vậy vậy có thể sử dụng ngắt cổng B khi có sự thay đổi nhưng chú ý 1 sự thay đổi chỉ ứng với T/2 không phải T như như ngắt ngoài .
chúc bạn thành công !
Trong đoạn code trên dùng ngắt ngoài trên portB vậy lỡ khi 2 xung đồng thời tới trên 2 chân thì có ảnh hưởng gì tới việc đọc được xung ???Code:#byte portb=0x06 #byte intcon=0x000B #bit RB4=portb.4 #bit RB5=portb.5 #bit RBIF=intcon.0 //dinh nghia co ngat RB #bit RBIE=intcon.3 //dinh nghia bit cho phep ngat RB int ec1=0; int ec2=0;// Chuong trinh ngat #int_RB void ngat_RB() { if((RBIF)&&(RBIE)) { { if(RB4==1) // // doc ec1 { if(ec1==255) ec1=0; ec1 ++; } } { if(RB5==1) ///// doc ec2 { if(ec2==255) ec2=0; ec2 ++; } RBIF=0; //Xoa co ngat RB } }
Em vẫn chưa hiểu về T với T/2 ..... em nghĩ ngắt ngoài thì khi nào có tác động ngoài thì ngắt mới hoặt động chứ nhỉ ???Last edited by ElecTel; 29-12-2011, 02:57 AM.
Comment
Comment