PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 28-12-2011, 06:14 PM   #1
ElecTel
Đệ tử 2 túi
 
Tham gia ngày: Jan 2011
Bài gửi: 36
:
Đếm xung encoder cho 2 động cơ

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 ???
ElecTel vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-12-2011, 10:03 PM   #2
daokhanhvimaru
Nhập môn đệ tử
 
Tham gia ngày: Dec 2011
Bài gửi: 2
:
Trích:
Nguyên văn bởi ElecTel View Post
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 ???
ở 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 !
daokhanhvimaru vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-12-2011, 01:54 AM   #3
ElecTel
Đệ tử 2 túi
 
Tham gia ngày: Jan 2011
Bài gửi: 36
:
Trích:
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 !
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 !

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
            }
     } 
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 ???
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ỉ ???

thay đổi nội dung bởi: ElecTel, 29-12-2011 lúc 03:57 AM.
ElecTel vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 06:48 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam