Đố vui về PIC, các câu đố cực vui và cực hay... hehe..

Collapse
This topic is closed.
X
This is a sticky topic.
X
X
 
  • Giờ
  • Show
Clear All
new posts
  • CHIBANG
    Thành viên tích cực
    • Jul 2005
    • 398

    #316
    Nguyên văn bởi KHHGD
    em xin hỏi các bác !!! Làm thế nào để em có thể mở rộng số ngắt ngoài cho PIC .Em xin hết(cụ thể em cần tới 16 ngắt ngòai chẳng hạn)
    Không giám qua mặt các bác !!!
    Cách 1: nối 16 lối vào vào 16 chân PIC, sau đó dùng vài IC số thiết kế mạch AND 16 lối vào này và lối ra cho vào chân INT ngoài.
    Khi có ngắt, chỉ chân đọc 16 chân của PIC sẽ xác định được nguồn ngắt?
    Cách này tạm chấp nhận được ko?
    Nhưng chú đố hay là chú hỏi? phải phân biệt rõ đó. He he...
    -------------------

    Comment

    • KHHGD
      Thành viên mới
      • Mar 2006
      • 17

      #317
      He he he !!! CÁch cảu bác cũng được nhưng tốn chân quá !!! Vậy em muốn dùng 32 ngắt thì phải mất 32 chân hả !!!

      Comment

      • CHIBANG
        Thành viên tích cực
        • Jul 2005
        • 398

        #318
        Tại chú ko nói rõ yêu cầu tiết kiệm chân chớ.
        Nếu dùng chuyển mạch điện tử kiểu như 4051 chọn kênh thì chỉ mất khoảng: 6-7 chân tất cả với 32 đầu vào
        -------------------

        Comment

        • KHHGD
          Thành viên mới
          • Mar 2006
          • 17

          #319
          Bác định dùng MUX hả !!! he he he !!! Như thế vẫn chưa tiết kiệm 1 chân !!!

          Comment

          • KHHGD
            Thành viên mới
            • Mar 2006
            • 17

            #320
            Bác dùng cái khác sẽ tiết kiệm hơn 1 chân

            Comment

            • CHIBANG
              Thành viên tích cực
              • Jul 2005
              • 398

              #321
              Nguyên văn bởi KHHGD
              Bác dùng cái khác sẽ tiết kiệm hơn 1 chân
              Tóm lại là chú thiết kế 32 kênh cần bao nhiêu chân? Ví dụ N chân, thì tớ có giải pháp N-1 chân ngay. He he...
              -------------------

              Comment

              • CHIBANG
                Thành viên tích cực
                • Jul 2005
                • 398

                #322
                Đáp số ít chân nhất có thể là:
                1 chân ngắt
                2 chân I/O
                Vậy mất 3 chân tất cả. Chú mở rộng ra ba vạn sáu ngàn kênh cũng chỉ mất tất cả 3 chân thôi.
                -------------------

                Comment

                • CHIBANG
                  Thành viên tích cực
                  • Jul 2005
                  • 398

                  #323
                  Vậy bây giờ tui đố lại chú, 4 chân uC(trong đó có 1 chân ngắt ngoài), chú làm sao làm mở rộng được 100 ngắt ngoài?
                  -------------------

                  Comment

                  • thaithutrang
                    Thành viên tích cực
                    • Jan 2006
                    • 913

                    #324
                    Hihi... thấy bài toán hay hay, em lại muốn vào tham gia diễn đàn rùi.
                    Cách sử dụng 3 chân: INT+ 2 chân I/O như thế này:
                    Giả sử có N đầu vào ngắt và tích cực theo mức L:
                    -Ta dùng N diot+1 điện trở tạo thành mạch AND. Lối ra cho vào chân INT của uC.
                    -Dùng N/8 con ghi dịch 8 bit, nối nối tiếp với nhau, và các chân Load được nối với nhau và nối với INT.
                    -Khi có ngắt, thì dữ liệu được nạp vào ghi dịch, ta chỉ cần viết lệnh dùng 2 chân để làm Clock, một chân để nhận data.
                    Vậy kết quả có thể lên 3 vạn chín ngàn kênh như anh CB nói, mà tốn chỉ 1 chan ngắt ngoài + 2 chân I/O bất kỳ. Hihi...

                    Comment

                    • HPECOM
                      Thành viên tích cực
                      • Oct 2005
                      • 361

                      #325
                      Nguyên văn bởi thaithutrang
                      Hihi... thấy bài toán hay hay, em lại muốn vào tham gia diễn đàn rùi.
                      Cách sử dụng 3 chân: INT+ 2 chân I/O như thế này:
                      Giả sử có N đầu vào ngắt và tích cực theo mức L:
                      -Ta dùng N diot+1 điện trở tạo thành mạch AND. Lối ra cho vào chân INT của uC.
                      Mong 3T giải thích rõ hơn về cách nối N diode thành cổng AND, mà sao lại là AND mà không phải là OR?
                      Nếu được mong 3T vẽ hình cho mọi người cùng chiêm ngưỡng.
                      Cảm ơn.
                      Một bông hồng cho những ai đang còn mẹ,
                      Đang còn mẹ để lòng vui sướng hơn ..

                      Comment

                      • thaithutrang
                        Thành viên tích cực
                        • Jan 2006
                        • 913

                        #326
                        N1-------<|----------COM
                        N2-------<|----------COM
                        .....
                        Nn-------<|----------COM
                        Chân COM nối chung nhau và nối với chân ngắt và đồng thời nối 1 điện trở khoảng 2.2 K lên Vcc.
                        Khi Ni=0 thì COM=0, vậy sinh ra ngắt. Còn khi tất cả Ni=1(mọi i) thì COM=1.

                        Comment

                        • KHHGD
                          Thành viên mới
                          • Mar 2006
                          • 17

                          #327
                          Cách của bác CB và 3T rất hay !!! Nhưng 3T đã tính đến khoảng thời gian mà Ngắt của 3T yêu cầu đến khi được phục vụ chưa !!!
                          Quay trở lại câu hỏi em đã hỏi !!!
                          Với 32 đường vào ngắt thì em dùng một mạch Encoder tạo thành tổ hợp mã có 5 bit twcs là dùng 5 chân của Port .Còng đường báo ngắt thì dùng như của 3T không ai chê được rồi !!!
                          Vấn đề bây giờ làm thế nào để xây dựng đưởng bảng véc tơ ngắt động sao cho thời gian đáp ứng là ngắn nhất với số câu lệnh ít nhất ,thời gian sử dụng CPU là ngắt nhất (Kể từ khi có ngắt đến khi xác định được nguồn báo ngắt và gọi chương trình phục vụ ngắt !!!)
                          Không giám qua mặt các cao thủ !!!

                          Comment

                          • thaithutrang
                            Thành viên tích cực
                            • Jan 2006
                            • 913

                            #328
                            Nguyên văn bởi KHHGD
                            Cách của bác CB và 3T rất hay !!! Nhưng 3T đã tính đến khoảng thời gian mà Ngắt của 3T yêu cầu đến khi được phục vụ chưa !!!
                            Quay trở lại câu hỏi em đã hỏi !!!
                            Với 32 đường vào ngắt thì em dùng một mạch Encoder tạo thành tổ hợp mã có 5 bit twcs là dùng 5 chân của Port .Còng đường báo ngắt thì dùng như của 3T không ai chê được rồi !!!
                            Vấn đề bây giờ làm thế nào để xây dựng đưởng bảng véc tơ ngắt động sao cho thời gian đáp ứng là ngắn nhất với số câu lệnh ít nhất ,thời gian sử dụng CPU là ngắt nhất (Kể từ khi có ngắt đến khi xác định được nguồn báo ngắt và gọi chương trình phục vụ ngắt !!!)
                            Không giám qua mặt các cao thủ !!!
                            Tại anh đưa ra câu đố không chặt chẽ mà cứ theo ý của anh. Đáng lẽ anh phải post từ đầu là yêu cầu:
                            1-Tốn ít cổng nhất.
                            2-Tốn ít thời gian nhất
                            Thỉnh thoảng, anh lại thêm một điều kiện thế thì..hihi...
                            vậy em lại thêm điều kiện: tốn ít chân nhất, mạch đơn giản nhất.. thì sao?

                            Comment

                            • thaithutrang
                              Thành viên tích cực
                              • Jan 2006
                              • 913

                              #329
                              Cách mã hóa của anh KHHGD sẽ có thể bị lỗi bỏ sót ngắt nếu >1 ngắt đồng thời xảy ra.

                              Comment

                              • thaithutrang
                                Thành viên tích cực
                                • Jan 2006
                                • 913

                                #330
                                Còn việc mã hóa 2^N đường(1 lúc chỉ được 1 kênh) thành N đường thì kiến thức cơ bản rồi. Có lẽ câu này ko nên đưa vào đây

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...