PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Giao tiếp USB, CAN, I2C, SPI, USART... (http://www.picvietnam.com/forum/forumdisplay.php?f=45)
-   -   Tốc độ của chuẩn Usb 2.0 ? (http://www.picvietnam.com/forum/showthread.php?t=3716)

trandaihai2003 27-03-2009 10:26 PM

Trích:

Nguyên văn bởi namqn (Post 24091)
Trong USB 2.0, chỉ có 2 dây dữ liệu để truyền tín hiệu dạng vi sai, làm gì có đường interrupt từ ngoại vi về host. Còn nếu bạn định nói về interrupt của host gửi về CPU của máy tính thì tôi cho rằng nó chẳng có liên quan gì đến việc cập nhật trạng thái của ngoại vi nhanh hay chậm.

Cần chú ý rằng USB là giao tiếp thuộc loại host-concentric, nghĩa là mọi sự truyền thông trên bus đều do host khởi đầu. Do đó, nếu sử dụng hi-speed mode (mà hiện nay chưa được bất kỳ vi điều khiển PIC nào hỗ trợ), thì bạn cũng chỉ có thể yêu cầu cập nhật trạng thái từ ngoại vi sau mỗi 125 us.

Thân,

Sorry. Rất tiếc bạn hông hiểu ý của tôi, mà bạn còn đặt điều này điều kia ... rất là tiếc ! Làm rõ ý người khác bằng cách như vậy thì ... không tốt chút nào.

Tôi chỉ nhắc tới khả năng sử dụng interrupt ở cả Host function và device function, ví dụ sau mỗi transaction/micro-frame sẽ có interrupt .. đó là một hướng. :)

Regards,

namqn 28-03-2009 12:07 AM

Trích:

Nguyên văn bởi trandaihai2003 (Post 24092)
Sorry. Rất tiếc bạn hông hiểu ý của tôi, mà bạn còn đặt điều này điều kia ... rất là tiếc ! Làm rõ ý người khác bằng cách như vậy thì ... không tốt chút nào.

Tôi chỉ nhắc tới khả năng sử dụng interrupt ở cả Host function và device function, ví dụ sau mỗi transaction/micro-frame sẽ có interrupt .. đó là một hướng. :)

Regards,

Xin lỗi bạn nếu như tôi giải thích sai ý của bạn.

Tôi muốn nhắc nhở bạn rằng đây là diễn đàn về PIC/dsPIC, nên bạn chú ý đến khả năng thực sự của những chip này khi đưa ra ý kiến. Vì nếu bạn đưa ra những giải pháp mà không áp dụng được với PIC/dsPIC thì có thể khiến người khác mất thời gian một cách vô ích. Nếu bạn nêu ra một giải pháp mà không có PIC/dsPIC nào đáp ứng được thì đề nghị bạn giới thiệu cụ thể một vài chip khác có khả năng đó, để tránh cho người đọc đi vào ngõ cụt.

Cụ thể trong trường hợp này, dùng interrupt ở phía device có lẽ chỉ giúp device đáp ứng với các sự kiện bus nhanh hơn, chứ không tăng được tần suất trao đổi dữ liệu giữa host và device. Và với các PIC/dsPIC hiện nay thì không thể dùng microframe.

Thân,

bien_van_khat 28-03-2009 08:52 AM

Có thể mình cũng ko hiểu ý bạn, nhưng

Nếu bạn nói đến Interrupt Transfer của USB protocol thì chữ Interrupt hoàn toàn ko có nghĩa là ngắt, nó chỉ mang ý nghĩa rằng: Host đảm bảo với các Interrupt EP rằng bọn này sẽ được host phục vụ liên tục cứ sau 1 khoảng thời gian mà thiết bị yêu cầu (1, 2, 4... frame/micro frame). Mức ưu tiên phục vụ của các loại transfer là Control > Interrupt > Isochronous > Bulk.

Nhưng host phục vụ ngay khi cần, ko có nghĩa là software của bạn cũng được báo cáo ngay lập tức. Windows ko phải là HDH thời gian thực, do đó, thời gian trễ giữa 2 sự kiện này là hoàn toàn ko thể biết trước.

Trích:

Nguyên văn bởi trandaihai2003 (Post 24089)
Ta có thể đặt ngưỡng để xảy ra interrupt là từ 1 tới 8 micro-frame trong frame sẽ xảy ra interrupt.

Note: Interrupt này là đường interrupt của USB về Interrupt controller của CPU.

Làm cách nào bạn đặt được "ngưỡng để xảy ra interrupt" của USB host controller?
Làm cách nào bạn phục vụ ngắt của Host controller về CPU trong phần mềm của bạn?

Mình nghĩ ý tưởng của bạn là cho máy tính boot từ bootloader của bạn, load phần mềm của bạn. Phần mềm của bạn bây giờ chạy hoàn toàn ko dựa trên bất kỳ hệ điều hành nào, lúc đó, với toàn quyền truy xuất phần cứng bạn có thể viết driver cho cả USB Host controller, VGA, Sound, ethernet..., tha hồ thao túng hệ thống, sound cool, :D

mgdaubo 28-05-2009 12:24 AM

cũng đang làm 1 device update data lên máy tính liên tục, nhưng em chỉ cần tần suất khoảng 1 lần/1ms là được. Em định dùng usb_cdc của CCS làm, usb->rs232 có baud tối đa đến 921600bps, ko biết với baud rate đó thì có phải là truyền 1 byte sẽ chỉ mất khoảng 10.85us ?? (8bit data, start bit, stop bit) và liệu có thể truyền liên tục các byte ?? nếu được như vậy thì nếu khung data chỉ 1 byte thì ta có thể có tần suất update data lên PC đạt gần 100000 lần/s (chỉ xét đến truyền data, chưa xét đến vđk còn phải làm việc khác) ??
Em chỉ mới trong giai đoạn thiết kế mạch chứ chưa thi công phần cứng nên chưa thử được, xin hỏi mấy anh có kinh nghiệm là với baud đó thì update data lên PC nhanh nhất được bao nhiêu?

namqn 28-05-2009 09:25 AM

Trích:

Nguyên văn bởi mgdaubo (Post 26152)
cũng đang làm 1 device update data lên máy tính liên tục, nhưng em chỉ cần tần suất khoảng 1 lần/1ms là được. Em định dùng usb_cdc của CCS làm, usb->rs232 có baud tối đa đến 921600bps, ko biết với baud rate đó thì có phải là truyền 1 byte sẽ chỉ mất khoảng 10.85us ?? (8bit data, start bit, stop bit) và liệu có thể truyền liên tục các byte ?? nếu được như vậy thì nếu khung data chỉ 1 byte thì ta có thể có tần suất update data lên PC đạt gần 100000 lần/s (chỉ xét đến truyền data, chưa xét đến vđk còn phải làm việc khác) ??
Em chỉ mới trong giai đoạn thiết kế mạch chứ chưa thi công phần cứng nên chưa thử được, xin hỏi mấy anh có kinh nghiệm là với baud đó thì update data lên PC nhanh nhất được bao nhiêu?

Baud rate nào thì bạn vẫn chỉ có thể gửi loạt dữ liệu mới sau mỗi ms. Tuy nhiên, nếu việc lấy mẫu dữ liệu là đều đặn và bạn chỉ gửi dữ liệu từ thiết bị lên máy tính thì bạn có thể dùng thuật toán để có tốc độ cập nhật dữ liệu trên PC cao hơn 1 lần/ms (các dao động ký PC-based là ví dụ cho trường hợp này).

Thân,

ngocduc3000 30-05-2009 11:52 PM

Mấy anh ơi em tìm hiểu thử về USB nhưng lại không hiểu enumerate và endpoint là gì ? Mong các anh hổ trợ em với ! chuối quá..

phungtung 31-05-2009 12:03 AM

Tìm lớp dạy thêm đi thì hiểu ngay thôi.


Múi giờ GMT. Hiện tại là 12:42 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam