RP Store Tìm linh kiện theo mã, gửi BOM nhận báo giá Gửi BOM

Đếm xung encoder cho 2 động cơ

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • ElecTel
    Đệ tử 2 túi
    • Jan 2011
    • 36

    #1

    Đế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 ???
  • daokhanhvimaru
    Nhập môn đệ tử
    • Dec 2011
    • 2

    #2
    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 !

    Comment

    • ElecTel
      Đệ tử 2 túi
      • Jan 2011
      • 36

      #3
      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ỉ ???
      Last edited by ElecTel; 29-12-2011, 02:57 AM.

      Comment

      Working...