Thông báo

Collapse
No announcement yet.

cần pro giúp đỡ về pic18f2550 !

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

  • #16
    Cái phần đó đọc cho bít cách hoạt động của USB thoy, chúng ta ko thể xen vào cái thủ tục đó đc. Chỉ khi enumelated, bạn mới có thể điều khiển thông qua máy tính.
    Nếu bị Unknows device thì đó là do PIC của bạn:
    kiểm tra chân VUSB có bằng 3.3V chưa, mắc tụ chưa (khoảng 10 - 47 uF, tui mắc như vậy ko à, theo datasheet của nó là 470nF)
    Nếu lập trình bằng C: kiểm tra có đầy đủ các hàm gọi chưa (usb_init() hay usb_init_cs() + usb_task())
    Xác lập VID và PID của nó để đừng bị trùng vs thằng khác.
    Mắc đúng D+ vs D- chưa.
    Nếu dùng nguồn ngoài: đã nối GND nguồn ngoài vs GND của USB chưa.
    Computer Science major - Vietnamese-German University
    Sponsored by

    Comment


    • #17
      Về các hàm tui đơn giản như sau: (dùng CCS)
      Mới vào khai báo bằng:
      Nguồn USB: usb_init() //Khai báo cấu hình USB và chờ cho đến khi connected
      Nguồn ngoài: usb_init_cs() //Khai báo cấu hình USB nhưng ko chờ
      Nếu dùng nguồn ngoài, phải dùng vòng lặp và gọi hàm usb_task() để xem USB đã kết nối chưa. Nếu kết nối, hàm sẽ chuẩn bị cho kết nối USB.

      Để bít rằng USB có kết nối chưa, mắc VCC của USB vào 1 pin nào đó sau đó define nó:
      #define USB_CON_SENSE_PIN PIN_XX (PIN_XX là pin mà bạn mắc vào, ví dụ PIN_B4)

      Để giao tiếp, chắc chắn rằng USB phải đc enumerated:
      if (usb_enumerated()) { //Code here }
      Sau đó trong vòng lặp chính của chương trình, lần lượt chờ đợi tín hiệu bằng cách
      if (usb_kbhit(EP)) {
      int outdata[size];
      // Tạo buffer
      usb_get_packet(EP, outdata, size);
      //Nhận gói // Xử lý outdata
      }
      vs EP là Endpoint (thường vs HID chỉ có 1 endpoint ra (so với Com) nên EP là 1), size là kích thước gói (vs HID tốc đa là 63 (mất 1 byte để làm report gì đó)

      Gửi gói dữ liệu bằng lệnh:
      int indata[size] // Tạo 1 mảng buffer
      // Nhập dữ liệu vào buffer
      usb_put_packet(EP, indata, size, USB_DTS_TOGGLE);
      // Gửi gói
      Computer Science major - Vietnamese-German University
      Sponsored by

      Comment


      • #18
        Bạn thelaxong cần viết code và hiểu tường tận cái giao tiếp usb này.Ko phải chỉ đơn giản lấy mấy cái hàm của CCS.Yêu cầu của bạn ấy hơi khó.Vì các tài liệu như usb complete cũng kô nói rõ cái này.Do đó mình cũng chia sẻ sơ sơ cái vụ này rồi.Tốt nhất nên dÙng code của CCS sài luôn.Chứ khi viết xong cái vụ này lại thấy vô nghĩa.
        , , ,

        Comment


        • #19
          À quên nữa, cái dễ dàng bị Unknows device nhất đó là bạn chưa viết driver.
          Trong các prototype, chỉ có HID là có sẵn driver trong máy khi cài Win nên ko cần viết driver. Nếu mới vào vụ USB này, bạn nên tập giao tiếp HID cho quen (đổi lại tốc độ thấp).
          Computer Science major - Vietnamese-German University
          Sponsored by

          Comment


          • #20
            thanks, bạn minh_cly đã trả lời, mình cũng mới tìm hiểu USB nên còn nhiều điều không hiểu. Mong bạn tiếp tục hướng dẫn.

            Comment


            • #21
              Bạn Hienclub có thể chia sẻ driver của bạn để các bạn học hỏi được không ?

              Comment


              • #22
                Nguyên văn bởi ThanhPhuc Xem bài viết
                Bạn Hienclub có thể chia sẻ driver của bạn để các bạn học hỏi được không ?
                Bác ấy tạo driver bằng cái này nè, bác làm theo tut là đc.
                http://www.dientuvietnam.net/forums/...-2010-a-99358/
                Computer Science major - Vietnamese-German University
                Sponsored by

                Comment


                • #23
                  mọi người cho em hỏi nếu nhận được gói token in thì phải trả lời làm sao ?

                  Comment


                  • #24
                    mọi người cho em hỏi giải quyết lỗi này như thế nào ? sau vài ngày viết code và nạp thử thì em toàn bị lỗi này, không hiểu nguyên nhân là do đâu ?


                    em sử dụng để trở kéo lên và kéo xuống có trong con pic 18f2550, tụ điện kết nối chân Vbus là 0.1uF
                    code em như sau:
                    code.txt
                    mạch của em sử dụng thạch anh 20Mhz
                    mọi người giúp em với !
                    Last edited by thelaxong; 13-02-2012, 00:24.

                    Comment


                    • #25
                      Hay quá, mình cũng muốn làm USB nhưng trình độ còn hạn chế quá!

                      Thanks all and have fun!

                      Comment


                      • #26
                        không ai giúp em sao ? hic hic !

                        Comment


                        • #27
                          Nguyên văn bởi thelaxong Xem bài viết
                          mọi người cho em hỏi giải quyết lỗi này như thế nào ? sau vài ngày viết code và nạp thử thì em toàn bị lỗi này, không hiểu nguyên nhân là do đâu ?


                          em sử dụng để trở kéo lên và kéo xuống có trong con pic 18f2550, tụ điện kết nối chân Vbus là 0.1uF
                          code em như sau:
                          code.txt
                          mạch của em sử dụng thạch anh 20Mhz
                          mọi người giúp em với !
                          Cái tụ nối VBus giá trị chẳng quan trọng mấy, tôi dùng 10uF nè.
                          Hãy kiểm tra chân D+ và D- có đúng ko.
                          Tôi hồi xưa cũng đã bị trường hợp này. Bạn có dùng nguồn ngoài ko, nếu có thì hãy chuyển sang nguồn USB thử xem. (Vì hồi xưa xài nguồn ngoài là bị lỗi như vậy, chuyển sang nguồn USB thì hết)
                          Bạn hãy kiểm tra xem cách xác lập tần số có chính xác ko: làm theo tutorial của bạn hienclub ở http://www.dientuvietnam.net/forums/...-2010-a-99358/ (Cái này đảm bảo là firmware đúng, nếu sai là do phần cứng)
                          Computer Science major - Vietnamese-German University
                          Sponsored by

                          Comment


                          • #28
                            giả sử rằng nếu như phần cứng mình đúng và việc cấu hình tần số hoặc các cấu hình liên quan ban đầu là đúng nhưng code trả lời các yêu cầu của mình không đúng thì khi cắm pic18f2550 vào PC thì nó có hiện thông báo trên không hay là nó báo một thông báo nói rằng không biết thiết bị ?

                            Comment


                            • #29
                              Tôi đã đọc cái code của bạn, rất hết hồn, bạn xài C mà cứ như xài ASM, xác lập từng thanh ghi. Nếu đã xài 1 chương trình viết code C nào đó như CCS hay MPLAB thì cũng có hàm chuẩn để giao tiếp USB rồi mà.
                              Tiếp theo, CPUDIV2 tức 96MHz/2 = 48MHz mà sao để clock là 20 MHz, chỉnh đồng hồ sai là chạy ko đúng đâu. Tần số thạch anh vô đã xác lập là PLL5 rồi tức 20MHz/5 = 4MHz. Bạn đọc bài [tut] trên rồi so sánh xem.
                              Nếu dùng nguồn ngoài, hãy tắt trở kéo nguồn trong pic, kéo trở ngoài lên dây 5V của USB lun (khoảng 1k ~ 1k5), để xem có khắc phục được gì ko.
                              Computer Science major - Vietnamese-German University
                              Sponsored by

                              Comment


                              • #30
                                ok, thanks bạn. Mình đã khắc phục lỗi đó xong. Đúng là mình thiết lập các thông số clock sai. Mình viết code theo thanh ghi của pic là do mình quen với việc lập trình theo thanh ghi rồi, mình không thích dùng hàm có sẵn nhiều quá nó làm mình ko hiểu mình đang đi tớ đâu ? Hiện tại, mình đang tìm cách trả lời các yêu cầu mà hót gửi xuống sao cho đúng.

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X