Thông báo

Collapse
No announcement yet.

Dùng phần mềm để chống xung nẩy cho ngắt ngoài!

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Dùng phần mềm để chống xung nẩy cho ngắt ngoài!

    Tui có ông thầy dạy vi điều khiển nói rằng không thể dùng phần mềm để chống xung nẩy khi gắn nút nhấn tới 2 ngắt ngoài của 89C51 là P3.2 và P3.3.
    Không biết ổng nói đúng không? Ai biết có thể làm được hay không? Chỉ cần trả lời được hoặc không nếu muốn dấu nghề! Để tui khỏi phải lao đầu vào cái không thể! Sở dĩ khó là vì con 89C51 khi ngắt ngoài xảy ra liên tiếp nhiều lần do xung nẩy thì nó nhớ những xung nẩy đó, khi làm xong ngắt ngoài nó lại tiếp tục nhảy vô ngắt ngoài làm lại nữa

  • #2
    theo mình có một cách đó là: khi bắt đầu một ngắt ngoài thì cấm chính ngắt đó, lúc đó VĐK ung dung thực hiện ngắt đó mà kô bị tác động bởi rung nẩy nút nhấn ngắt đang thực hiện. Rồi ở đoạn kết thúc ngắt ta lại cho phép ngắt đó. Cái này chỉ nghĩ thế thôi, chưa thử nên kô bit có đúng hay kô? Hy vọng sẽ bật lại đc Ông thầy!

    Comment


    • #3
      Chân tình khuyên các bạn một câu là nên dùng polling thay cho dùng ngắt ngoài. Bởi vì dùng ngắt ngoài rất dễ bị nhiễu tác động.
      AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
      Xem thêm tại Online Store ---> Click here
      Mob: 0982.083.106

      Comment


      • #4
        Nguyên văn bởi MinhVu Xem bài viết
        theo mình có một cách đó là: khi bắt đầu một ngắt ngoài thì cấm chính ngắt đó, lúc đó VĐK ung dung thực hiện ngắt đó mà kô bị tác động bởi rung nẩy nút nhấn ngắt đang thực hiện. Rồi ở đoạn kết thúc ngắt ta lại cho phép ngắt đó. Cái này chỉ nghĩ thế thôi, chưa thử nên kô bit có đúng hay kô? Hy vọng sẽ bật lại đc Ông thầy!
        Cái này mình làm rồi, đó là cách đầu tiên mà ai củng nghĩ ra, nhưng khi nạp xuống 89c51 lại vẫn bị xung nẩy! Cho dù có cấm ngắt ngoài thì nó vẫn nhớ là có ngắt, khi enable lại lập tức nó làm những cái ngắt đã nhớ! Thế mới kì, tui thử rồi tui mới dám nói.
        To bro VNarmy: Polling là gì vậy bro? Tìm tài liệu ở đâu? Nghe lạ quá!

        Comment


        • #5
          Polling nghĩa là hỏi vòng.
          AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
          Xem thêm tại Online Store ---> Click here
          Mob: 0982.083.106

          Comment


          • #6
            nếu dùng hỏi vòng thì tức là VĐK kiểm tra các cổng suốt à? khi kô cần làm việc mà muốn VĐK ở chế độ ngủ đông thì có làm đc kô? mong bác VNarmy nói rõ hơn.

            Comment


            • #7
              Nguyên văn bởi MinhVu Xem bài viết
              nếu dùng hỏi vòng thì tức là VĐK kiểm tra các cổng suốt à? khi kô cần làm việc mà muốn VĐK ở chế độ ngủ đông thì có làm đc kô? mong bác VNarmy nói rõ hơn.
              Đúng vậy, MCU liên tục kiểm tra các cổng hoặc các chân nào đó. Do vậy nó không thực hiện chế độ ngủ đông. Nhìn qua thì thấy kỹ thuật này hơi nông dân nhưng theo tôi nó cực kỳ hiệu quả và tin cậy.
              AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
              Xem thêm tại Online Store ---> Click here
              Mob: 0982.083.106

              Comment


              • #8
                Đây chính là quét phím, bro dùng từ tiếng Anh mình không hiểu! Ông thầy cũng nói vậy, muốn chống nẩy phải quét phím chứ dùng ngắt ngoài không chống nẩy được! Mình chỉ tự hỏi chẳng lẽ không được thiệt? Vì dùng ngắt thì chương trình đơn giản hơn!

                Comment


                • #9
                  Nguyên văn bởi vinh81 Xem bài viết
                  Đây chính là quét phím, bro dùng từ tiếng Anh mình không hiểu! Ông thầy cũng nói vậy, muốn chống nẩy phải quét phím chứ dùng ngắt ngoài không chống nẩy được! Mình chỉ tự hỏi chẳng lẽ không được thiệt? Vì dùng ngắt thì chương trình đơn giản hơn!
                  Hí hí. Thỉnh thoảng hơi sính ngoại.
                  Nói chung thì dùng ngắt cũng được với điều kiện bạn không làm việc trong môi trường nhiễu như động cơ, điều khiển van, relay... Mà điều này thì ít sảy ra lắm.
                  AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
                  Xem thêm tại Online Store ---> Click here
                  Mob: 0982.083.106

                  Comment


                  • #10
                    Đơn giản, vào ngắt delay qua thời gian rung cơ khí khoảng 20ms! Xong, thoát ngắt! Ok?

                    Comment


                    • #11
                      Không được bro! Nó nhớ ngắt khi đang thực hiện một ngắt!

                      Comment


                      • #12
                        Nguyên văn bởi vinh81 Xem bài viết
                        Đây chính là quét phím, bro dùng từ tiếng Anh mình không hiểu! Ông thầy cũng nói vậy, muốn chống nẩy phải quét phím chứ dùng ngắt ngoài không chống nẩy được! Mình chỉ tự hỏi chẳng lẽ không được thiệt? Vì dùng ngắt thì chương trình đơn giản hơn!
                        Nếu bạn vô hiệu hóa ngắt ngoài khi vào ngắt để chống rung mà không được thì mình thấy cũng hơi lạ, vì mình làm PIC cách này chạy ầm ầm.

                        Bạn thử cách này xem, thay vì ngắt bạn hỏi vòng cờ ngắt trong chương trình chính. Phát hiển thay đổi trạng thái cờ, xóa nó rồi nhảy đến một trình con xử lý trường hợp đó.
                        Hoặc nếu bạn vẫn muốn dùng ngắt thì bạn có thể dùng một cờ, khi vào ngắt bạn kiểm tra cờ, nếu không có cờ thì chạy chương trình xử lý phím bấm và bật cờ. Nếu có cờ rồi thì thoát khỏi ngắt. Cờ này được bật bởi ngắt nhưng được xóa bằng timer.

                        Comment


                        • #13
                          Bạn vinh81 đang hỏi với 89 mà bác PTH, với 89 thì vào 1 ngắt, ví dụ ngắt ngoài thì chỉ có ngắt ưu tiên cao hơn nó ngắt được nó thôi, chứ làm gì có chính nó ngắt nó nữa. Thế nên vào ngắt cứ delay xong thoát ngắt là xong.
                          Nhưng tóm lại ko nên dùng ngắt ngoài cho kiểu ấn nút này, nên hỏi vòng thì hay hơn. Vì khi vào ngắt delay lâu quá thì chương trình chính chạy ở mức nền (base level) sẽ bị treo, rất dở.

                          Comment


                          • #14
                            Làm như bạn Natra cũng tạm được nhưng nảy sinh vấn đề ,trong lúc delay nếu có ngắt thì CPU ko đáp ứng được .

                            Comment


                            • #15
                              Nguyên văn bởi natra2k2 Xem bài viết
                              Đơn giản, vào ngắt delay qua thời gian rung cơ khí khoảng 20ms! Xong, thoát ngắt! Ok?
                              kô đc đâu, đọc lại comment ở trên đấy. Vấn đề delay này chỉ dùng cho các chân khác ngoài 2 chân ngắt!

                              Comment

                              Về tác giả

                              Collapse

                              vinh81 Tìm hiểu thêm về vinh81

                              Bài viết mới nhất

                              Collapse

                              Đang tải...
                              X