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

  • #31
    Em xin được phép "đào" topic này lên, vì hôm nay em mới dính phải nó, vì ngẫm mãi mà xem ra chưa có cách nào hơn là cách quét phím như bác VNArmy nói cả .

    Chả hiểu sao theo "lý" thì ta nghĩ là sẽ được mà theo "tình" lại không được.

    Tự disable ngắt ngay trong chương trình ngắt đó thì được, mà sau khi chờ rồi enable nó lại thì lại nhảy.

    Tụ thì có hiệu quả tốt hơn nhiều so với không gắn tụ. Nhưng mà vẫn không ổn định hoàn toàn.

    Có lẽ phải ngâm cứu con IC chống nảy fím MC14490 nhưng mà k biết ở VN mình có bán không.

    Comment


    • #32
      Để tôi thử lại xem nhé. Lần trước tôi cũng làm như vậy nhưng không chạy được... Lần đó cách đây cũng lâu lắm rồi.(vài năm rồi) và tôi đã không dùng ngắt nữa.

      Comment


      • #33
        Hôm trước em có hỏi bác VNArmy, thấy bác cũng chỉ cho cách kết hợp lấy mẫu và delay, nhưng hình như thời gian delay 5ms của bác hơi nhiều thì phải, vì em thấy nó vẫn bị rung (cũng có khi do em code sai), nhưng phương pháp này thấy cũng hay và dễ hiểu. Định post bài của em cho mọi người xem mà không biết có ai sửa cho không nữa.
        Phương pháp lấy mẫu & delay: viết theo asm
        - Nhấn phím
        - Delay khoảng 5ms
        - Kiểm tra xem có phím nhấn không (Px.y có = 1 hay không)
        - Nếu không thì quay lại từ đầu
        - Nếu có thì nạp giá trị 1 vào biến count
        tiếp tục delay và kiểm tra như vậy khoảng 9,10 lần gì đó.
        - Sau đó so sánh biến count với 1 số nào đó <10. chẳng hạn so sánh với 5 chẳng hạn
        - Nếu count <5, quay lại từ đầu (coi như ta không nhận phím)
        - Nếu count >5, nhận phím và ghi nhận đó là 1 lần nhấn phím--> thực hiện đếm......
        (Đề nghị các bác xem thử phương pháp này xem có được không nhé, đây là em hiểu theo bác VN nói, bác Vn cũng kiểm tra dùm xem em hiểu vậy có đúng không nha). Thanks

        Comment


        • #34
          À, có ai có nhiều ví dụ về ASM, nhất là về khoản ngắt, chống rung, ma trận phím, ma trận led. thì thỉnh thoảng post lên cho mọi người xem với. Lý thuyết thì nhiều mà ví dụ thì chả có, nói không làm sao hiểu hết được. Nhân đây em cũng muốn hỏi các bác là em học asm 1 tháng rồi mà mới quét được led7, đang gà vịt về chống rung. Không hiểu em học vậy là nhanh hay chậm, đề nghị các bác cho em ý kiến để em yên tâm học hành.
          """ Ở nhà có cha, ra đường có bạn bè, lên forum có thầy cô anh chị em đi trước""". Helf me!

          Comment


          • #35
            ko phải 5 ms đâu nhé mà là 20ms và số lần kiểm tra chính xác là 10 lần nhé. Để tổng thời gian delay cho 1 lần bấm là 200ms 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


            • #36
              phamduy

              ua mà chương trình ngắt ngoài để làm gi thế a?e mới học nên ko bít?

              Comment


              • #37
                Mình chưa làm ngắt ngoài với 89c51, chỉ làm với philip 89v51 thôi. Nếu là ngắt cạnh thì không vấn để gì. Chỉ cần đặt điều kiện trong chương trình ngắt là được , không cần phải tốn thêm một ngắt timer nữa làm gì. Khi gọi chương trình ngắt, sẽ kiểm tra nếu phim được giữ trong khoảng thời gian bạn coi là ổn thỉ nhảy đến đoạn thực thi chương trình. Còn không thì thoát. Tuy nhiên vậy ngắt sẽ tốn thời gian cho những chương trình đáp ứng nhanh như điều khiển động cơ chẳng hạn. Nên bạn có thể để độ ưu tiên ngắt ở mức thấp hơn những tác vụ quan trọng khác là tốt thôi.
                Cường - Giải Pháp IOT Việt
                https://iotvn.vn

                Comment


                • #38
                  Nguyên văn bởi Tubes Xem bài viết
                  Xử lý phím bấm không phải đơn giản như mọi người nghĩ đâu.
                  Bạn nào nghĩ lắp thếm 1 tụ là có thể xử lý được nút bấm thì hoàn toàn nhầm đấy. Nếu dùng tụ thì phải lắp như sơ đồ gửi kèm.

                  Không phải tự dưng mà một số hãng lại đâm đầu vào sản xuất IC chống rung cho bàn phím đâu
                  Xem IC sau
                  MC14490-D.PDF
                  Chà chà , nếu phải thêm IC chống rung thì coi như là giải quyết vấn đề xung nẩy bằng phần cứng rùi.
                  Mình làm mạch đồng hồ, cho 2 chân ngắt ngoài để chỉnh giờ, phút. Chống xung nẩy bằng cách cho nhấn xuống rùi nhả lên thì nó mới chạy tiếp chương trình. Cụ thể là như vầy:
                  ORG 0003H ;NGAT NGOAI 0 CHINH GIO
                  LJMP CHINHGIO
                  ...
                  ...
                  CHINHGIO:

                  JNB P3.2,THOATCHINH ; DÙNG HÀNG LỆNH NÀY ĐỂ CHỐNG NHIỄU, ;NHẢ PHÍM LÊN THÌ MỚI CHẠY TIẾP XUỐNG, ĐÈ PHÍM LUN THÌ VỀ RETI
                  ...
                  ...
                  THOATCHINH:
                  RETI

                  Cách này mình đã thử và cũng tạm được. Mỗi lần nhấn phím xuống rùi nhả ra thì nó mới có tác động chạy ct ngắt, Nếu đè phím lun thì sẽ ko có chuyện gì, và ct chính vẫn chạy bình thường (vì khí đó nó về lệnh THOATCHINH)

                  Comment


                  • #39
                    em đã thử dùng delay nhưng vẫn không được
                    ''Thà một phút huy hoàng rồi chợt tắt
                    Còn hơn buồn le lói suốt trăm năm''

                    Comment


                    • #40
                      Nguyên văn bởi vinh81 Xem bài viết
                      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
                      Tôi đã sử dụng ngắt ngoài để làm bàn phím và đã sử dụng tốt trong thiết bị tạo Ô xy không bị nhiễu mặc dù đặt bên cạnh motor khoảng 1 ngựa. Nó dùng để tăng giảm lưu lượng Ô xy :
                      File đính kèm
                      Attached Files

                      Comment


                      • #41
                        choy ah ,chống nảy dễ òm mà
                        Code:
                        if(!button) {delay_ms(50); // nếu phím đc nhấn thì trước hết delay50ms để wa chỗ nảy khi nhấn phím
                                        while(!button) continue; // nếu phím chưa đc thả thì nhảy tại chỗ
                                        delay_ms(10); // khi phím đã đc nhả , delay10ms để wa chỗ nảy khi nhả phím
                                       ...... viết chương trình ......
                                       }

                        Comment


                        • #42
                          Nguyên văn bởi Zz_Bi_zZ Xem bài viết
                          choy ah ,chống nảy dễ òm mà
                          Code:
                          if(!button) {delay_ms(50); // nếu phím đc nhấn thì trước hết delay50ms để wa chỗ nảy khi nhấn phím
                                          while(!button) continue; // nếu phím chưa đc thả thì nhảy tại chỗ
                                          delay_ms(10); // khi phím đã đc nhả , delay10ms để wa chỗ nảy khi nhả phím
                                         ...... viết chương trình ......
                                         }
                          Bạn thử chạy ở mạch thật chưa
                          123...

                          Comment


                          • #43
                            Chà chà!
                            hay đây chương trình phím bấm này trước tôi cũng dính phải nó ban đầu cũng không làm được nên cũng định dùng ngắt ngoài để làm việc.
                            nhưng nghĩ dùng ngăt ngoài thì phiền!
                            nên sau cùng cũng làm chương trình bình thường như của bác Zz_Bi_Zz thế là chạy mà. Nhưng nhớ phải cấu hình cho port nhe!:

                            Nguyên văn bởi: Zz_Bi_zZ
                            choy ah ,chống nảy dễ òm mà

                            Code:
                            if(!button) {delay_ms(50); // nếu phím đc nhấn thì trước hết delay50ms để wa chỗ nảy khi nhấn phím
                            while(!button) continue; // nếu phím chưa đc thả thì nhảy tại chỗ
                            delay_ms(10); // khi phím đã đc nhả , delay10ms để wa chỗ nảy khi nhả phím
                            ...... viết chương trình ......
                            }

                            Last edited by tran truong; 31-08-2008, 22:48.

                            Comment


                            • #44
                              Nguyên văn bởi nbb3i Xem bài viết
                              Bạn thử chạy ở mạch thật chưa
                              hic ,pa zui tính wa .

                              Comment


                              • #45
                                code í viết thế, nếu lỡ đang quét led mà quét bàn phím nữa thì k ổn...nếu giữ phím nhấn khá lâu thì sao ...

                                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