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

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • vinh81
    Thành viên mới
    • Jun 2007
    • 15

    #1

    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
  • MinhVu
    Thành viên mới
    • Apr 2007
    • 16

    #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

    • VNarmy
      Moderator
      • Feb 2007
      • 1413

      #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

      • vinh81
        Thành viên mới
        • Jun 2007
        • 15

        #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

        • VNarmy
          Moderator
          • Feb 2007
          • 1413

          #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

          • MinhVu
            Thành viên mới
            • Apr 2007
            • 16

            #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

            • VNarmy
              Moderator
              • Feb 2007
              • 1413

              #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

              • vinh81
                Thành viên mới
                • Jun 2007
                • 15

                #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

                • VNarmy
                  Moderator
                  • Feb 2007
                  • 1413

                  #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

                  • natra2k2
                    Thành viên tích cực
                    • Oct 2005
                    • 481

                    #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

                    • vinh81
                      Thành viên mới
                      • Jun 2007
                      • 15

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

                      Comment

                      • phamthaihoa
                        Thành viên hơi tích cực
                        • Jul 2005
                        • 1103

                        #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

                        • natra2k2
                          Thành viên tích cực
                          • Oct 2005
                          • 481

                          #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

                          • duycuong289
                            Thành viên chính thức
                            • Oct 2006
                            • 75

                            #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

                            • MinhVu
                              Thành viên mới
                              • Apr 2007
                              • 16

                              #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...