bạn gì đó ơi, bạn có thể post sơ đồ mạch LT của mạch giao tiếp usb cho mình ko (sơ đồ trong TUT chưa đầy đủ thì phải). Và bạn cho mình hỏi cái TUT của bạn là làm giao tiếp usb, nhưng ứng dụng cụ thể của cái bạn làm là gì ? Nếu mình muốn giao tiếp với chuột or bàn phím dùng lớp hid, thì bạn có thể nói cho mình bik các bước thực hiên ko ( như sơ đồ mạch, cách viết firmware và xài 1 số phần mềm cần thiết có sẵn ). Thanks
Thông báo
Collapse
No announcement yet.
[TUT]Hướng dẫn giao tiếp USB với PIC18F
Collapse
This is a sticky topic.
X
X
-
Trong TUT này mình chỉ làm một ví dụ đơn giản về truyền dữ liệu qua USB, từ đó bạn có thể ứng dụng trong các thiết bị để thay thế các chuẩn truyền thông cũ như RS232, còn về phần nguyên lý thi như thế là khá đầy đủ cho một ứng dụng nhỏ rồi, ban chỉ cần chú ý các điểm sau:
- mach nguon, thạch anh, tu, tro treo chan RST --> đảm bảo cho con chíp của bạn chạy được.
- dây D+ và D- dây GND của cổng USB nối chung với GND nguồn.
- tụ dàng cho chân VUSB.
nếu bạn muốn làm với các ứng dụng của chuôt và fim thì có thể tham khảo các example có sẵn trong PICC.
Comment
-
thanks bạn, ai cũng nói nên tham khảo example của picc, nhưng vấn đề là mình vẫn chưa hình dung ra ứng dụng khi giao tiếp với chuột or bàn phím là ntn? Thế này nhé, trong picc có 1 example, và ứng dụng là làm con trỏ chạy vòng vòng trên màn hình( theo như 1 bạn đã HD trong topic mô phỏng usb dùng proteus), Nhưng đương nhiên là mình muốn làm 1 ứng dụng khác chứ ko phải chỉ là cho con trỏ chạy vòng vòng, bạn có thể cho mình 1 gợi ý hay định hướng ko ? ( vì mình hiện đang rất mơ hồ và ko biết nên làm ứng dụng từ đâu, mặc dù về lý thuyết mình đã đọc "usb in a nutshell" nên cũng nắm sơ dc rồi).
Mình có thể mô phỏng trên proteus các ứng dụng kiểu này dc ko? ( dưạ trên lớp hid nên chắc ko cần viết driver và mình cũng muốn mô phỏng xong xuôi mới dám làm mạch thiệt). À, còn về giao diên , mình có cái dở là biết C++ nhưng ko biết xài VC++ . Mong bạn có thể nói kĩ 1 chút, vì mình còn nhiều cái chưa bik , khi tham khảo trên web thì thấy ng ta nói nhiều về thư viện này nọ, như API xài cho lớp hid, nhưng mình ko bik nó là gì và cách tiếp cận ra sao. mình hy vọng có thể làm dc 1 mạch ứng dụng usb nho nhỏ dưạ trên lớp hid mà vẫn loay hoay về các bước thực hiện . Và cũng ko bik làm sao để hiểu và phát triển ứng dụng trên code có sẵnLast edited by phuongdua; 24-02-2010, 08:26.
Comment
-
Nguyên văn bởi hung_nguyen Xem bài viếtHIHI! vấn đề về giao tiếp USB đã có nhiều luồng bàn luận nhưng tôi thấy đa số các luồng đều chỉ bàn về một phần trong cả một project về USB, và chủ yếu là dùng driver, thư viện lập trình giao diện có sẵn của nhà sản xuất vì thế rất khó khăn khi ta muốn giao tiếp USB mà dùng loại chíp khác. Còn tài liệu thì chưa thât sự tỷ mỷ nên nhưng người mới học khó tiếp cận được đặc biệt là các sinh viên. Với mục đính hướng dẫn tốt nhất cho các bạn mới học có thể nhanh chóng tiếp cận tôi xin mở ra một luồng mới hy vọng được sự quan tâm của tất cả các bạn.
Trong tài liệu hướng dẫn này tôi đã chỉ ra cho các bạn cách làm phần cứng, viết fimware, tạo driver và viết một giao diện đơn giản trên máy tính. Mong rằng có nó sẽ giúp ích cho tất cả ai muốn làm về USB. Phần mềm mà tôi sử dụng đó là:
- CCS
- Windriver 9.21
- visual studio 2005
tài liệu này đuợc viết khi tôi làm Project nó được tổng hợp từ nhiều nguồn tài liệu, do kiến thức còn hạn chế nên có thể sẽ có sai sót mong đuợc sự chỉ giáo của tất cả các bạn từ đó xây dựng lên một tài liệu phổ thông nhất để càng ngày càng có nhiều người làm đuợc giao tiếp USB. thân ái!
down ở đây! đọc xong làm ngay..
Comment
-
Máy tính không nhận đc USB 18f4550
Hiện đang làm đề tài về giao tiếp qua USB bằng 18f4550,chạy trên proteus ngon lành rùi,trong manager computer báo nhận thiết bị,nhưng khi em cắm trên testboard thì không nhận đc,cũng có lúc nó báo USB not recognized,em nghe noí nếu đúng thì chân Vus là 3.3V phải không,nhưng em đo thì không có Vôn nào cả,em kiểm tra dây rợ khá kĩ rùi,nhưng em chỉ dùng tụ 1uF ở chân Vusb thui chứ không phải 470nF,không biết có sao khônh?em dùng thạch anh trên thực tế là 12Mhz và 2 tụ 22pF,các chân D+ và D- đã nối vô 24 và 23,2 bên Vss và Vdd cũng đã nối với nhau,đo các chân này đều lên 5V,em post code máy anh xem có vấn đề ji không,
#include "usb_demo_bulk.h"
#include <pic18_usb.h>
#include <usb_desc_scope1.h>
#include <usb.c>
#include <lcd4bit.c>
void usb_debug_task(void)
{
static int8 last_connected;
static int8 last_enumerated;
int8 new_connected;
int8 new_enumerated;
new_connected=usb_attached();
new_enumerated=usb_enumerated();
if (new_connected && !last_connected)
printf("\r\n\nUSB connected, waiting for enumaration...");
if (!new_connected && last_connected)
printf("\r\n\nUSB disconnected, waiting for connection...");
if (new_enumerated && !last_enumerated)
printf("\r\n\nUSB enumerated by PC/HOST");
if (!new_enumerated && last_enumerated)
printf("\r\n\nUSB unenumerated by PC/HOST, waiting for enumeration...");
last_connected=new_connected;
last_enumerated=new_enumerated;
}
void main()
{
int8 out_data[3];
int8 in_data[64];
int8 i=0;
char c;
int8 send_timer=0;
int8 count=0;
setup();
usb_init_cs();
lcd_init();
while (TRUE)
{
usb_task();
usb_debug_task();
if(usb_enumerated())
{
if (!send_timer)
{
count++;
send_timer=250;
out_data[0]=100;
out_data[1]=111;
out_data[2]=233;
if (usb_put_packet(1, out_data, 3, USB_DTS_TOGGLE))
printf("\r\n<-- Sending 2 bytes: 0x%X", out_data[0]);
}
if (usb_kbhit(1))
{
usb_get_packet(1, in_data, 64);
lcd_putc("\f");i=0;
for(;i<32;i++)
{
if(i==15) lcd_putc("\n");
c=in_data[i];
lcd_putc(c);
}
//printf("\r\n--> Received data: %s",in_data);
}
send_timer--;
delay_ms(1);
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <18F4550.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES WDT128 //Watch Dog Timer uses 1:128 Postscale
#FUSES EC_IO //External clock
#FUSES NOPROTECT //Code not protected from reading
#FUSES BROWNOUT //Reset when brownout detected
#FUSES BORV20 //Brownout reset at 2.0V
#FUSES NOPUT //No Power Up Timer
#FUSES NOCPD //No EE protection
#FUSES STVREN //Stack full/underflow will cause reset
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOWRT //Program memory not write protected
#FUSES NOWRTD //Data EEPROM not write protected
#FUSES IESO //Internal External Switch Over mode enabled
#FUSES FCMEN //Fail-safe clock monitor enabled
#FUSES PBADEN //PORTB pins are configured as analog input channels on RESET
#FUSES NOWRTC //configuration not registers write protected
#FUSES NOWRTB //Boot block not write protected
#FUSES NOEBTR //Memory not protected from table reads
#FUSES NOEBTRB //Boot block not protected from table reads
#FUSES NOCPB //No Boot Block code protection
#FUSES NOMCLR //Master Clear pin enabled
#FUSES LPT1OSC //Timer1 configured for low-power operation
#FUSES NOXINST //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#FUSES PLL3 // PLL PreScaler 3
#FUSES USBDIV
#FUSES VREGEN
#FUSES CPUDIV1
#FUSES HS
#DEFINE USB_HID_DEVICE FALSE
#define USB_EP1_TX_ENABLE USB_ENABLE_BULK //turn on EP1 for IN bulk/interrupt transfers
#define USB_EP1_RX_ENABLE USB_ENABLE_BULK //turn on EP1 for OUT bulk/interrupt transfers
#define USB_EP1_TX_SIZE 64 //size to allocate for the tx endpoint 1 buffer
#define USB_EP1_RX_SIZE 64 //size to allocate for the rx endpoint 1 buffer
#use delay(clock=12000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)
void setup()
{
setup_adc_ports(AN0|VSS_VDD);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
setup_low_volt_detect(FALSE);
setup_oscillator(False);
}
Còn ,mấy file kia em nghĩ không có gì quan trọng,mọi người xem giúp
Comment
-
-
giao tiếp 18f4550 với usb
em đã làm 1 mạch in thực hiện giao tiếp qua usb giữa 18f4550 với Pc,firmware đã có đảm bảo đúng 100%,em đã mắc tụ vô chân Vusb,D- cổng usb với D+ Pic và ngược lại,nhưng nó không hoạt động,nhưng khi em dùng đồng hồ VOM đặt vào 2 chân D+ Pic với chân VCC thì thấy nó báo USB not recognized,mình nghĩ phải có điện trở trong mạch này,bạn nào có kinh nghiệm ji chỉ mình voi
Comment
-
Chào mọi người
Hiện tại tớ chưa có phần cứng PIC nên chi mô phỏng bằng proteus, mô phỏng máy báo found new hardware nhưng lại không có driver.
Và khi mở file project_usb_4550.sln máy báo Unable to load DLL 'wdapi921.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
mong các bạn cho biết cách khắc phục.
tớ đang cần driver:
1. project_usb_4550_lib.dll
2. wdapi_dotnet921.dll
3. driver cho máy tính
Chúc mọi người vui vẻ.Last edited by newbie2009; 22-06-2010, 16:35.
Comment
-
chào các bác , em đang tập làm giao tiếp USB , em làm theo hướng dẫn không hiểu sao khi em biên dịch CCS lại báo lỗi này
A #DEVICE required before this line
Kiểm tra lỗi thì nó hiện ra file usb_hw_layer.h ở dòng
enum USB_DTS_BIT {USB_DTS_DATA1=1, USB_DTS_TOGGLE=2, USB_DTS_DATA0=0,
USB_DTS_STALL=3, USB_DTS_USERX=4};
mong các bác có thể giải thích giúp em lỗi này ko ạ ! thankMr. Danh Le Tran
Email:
Comment
-
to RTKP:
lỗi đó là do include file "usb_demo_bulk.h" sai đường dẫn, kiểm tra lại chỗ đó.
to newbie2009:
chạy mô phỏng khác xa nhiều so với chạy thực tế-->> bạn nên làm mạch luôn, rồi làm theo sẽ tốt hơn, tớ nghĩ cứ làm theo hướng dẫn trong luồng này sẽ chạy thôi ( tớ chưa làm nên chưa biết , nhưng thấy nhiều bạn ủng hộ chắc là làm chạy rồi ).
tớ cũng đang chuẩn bị làm ...
----^..^----
Comment
-
Hi all!
Tớ mới viết 1 phần mềm nhỏ giao tiếp USB, mời các bác xem thử.
Ban đầu viết bằng C# không được, nên chuyển sang viết bằng VB6. (nên máy phải cài VB6 mới chạy được ).
Không cần driver cho Pic18f4550, nạp firm cắm vào máy tính là tự nhận-->tự cài driver luôn ( rất tiện).
Trong chương trình có schematic luôn...
File đính kèm gồm:
1. PIC18F4550 USB Control led_VB6.exe
2. PIC18F4550 USB Control led_Xtal12Mhz.hex
3. PIC18F4550 USB Control led_Xtal20Mhz.hexAttached FilesLast edited by chuotdientu; 26-07-2010, 19:53.
----^..^----
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Mạch tự động bật nguồnbởi davidcopyChỉ cần dùng R C mắc vô phím power là ok....
-
Channel: Điện tử gia dụng
Hôm qua, 20:47 -
-
Trả lời cho Hỏi cách điều chế xungbởi davidcopydùng mach khuếch opamp...
-
Channel: Kỹ thuật điện tử tương tự
Hôm qua, 20:42 -
-
Trả lời cho Thắc mắc về hạ áp cho adapter laptopbởi davidcopy
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 18:56 -
-
bởi bqvietĐấy gọi là cái "điểm gãy" trong đồ thị điện áp - dung lượng còn lại. Dùng điện áp hở cực để xác định sắp hết hoặc gần đầy thì vẫn tạm ổn. Dùng để đo SOC/DOD thì đừng. Ngay cả số km đã đi cũng chả xác định được...
-
Channel: Điện tử dành cho người mới bắt đầu
17-01-2025, 21:36 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi dinhthuong80Vâng, em cũng nghĩ thế khi search được hãng ấy là SRNE, nên em test luôn những cái còn lại, và kết quả đều như nhau.
Nhận thấy kết quả khó chấp nhận, em cũng phân vân có nên mail cho họ để họ thử kiểm tra mã đó không; giữa...-
Channel: Điện tử công suất
17-01-2025, 11:33 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi dinhthuong80Xin cảm ơn bác bqviet luônnhiệt tình cho biết nhiều thông tin quí báu, cảm ơn bạn mèomướp có ví dụ đơn giản và dễ hiểu, cảm ơn tất cả đã bớt chút thời gian quí báu vào đây đọc bài.
Cảm ơn bác nhathung1101 cho thông tin và chúc mừng bác mua được những tấm pin NLMT cực tốt theo...-
Channel: Điện tử công suất
17-01-2025, 11:22 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi mèomướpDạ chú nhat... cứ coi pin mặt trời như 1 cái ắc qui nhìu ngăn mắc nối tiếp ấy ạ. Khi 1 ngăn yếu thì cả cái ắc qui yếu luôn ạ. Nó có nhìu bộ nối tiếp mắc song song nên bị che 1 khoảng nhỏ ảnh hưởng nhìu nhưng chắc ko đến nỗi mất 50% đâu ạ...
-
Channel: Điện tử công suất
17-01-2025, 06:36 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Nếu nói bị cái lá che sáng mà giảm 50% thì tôi càng không tin, bởi trên vườn tôi mặc kệ ông trời làm vệ sinh.
Tức là lá tự rụng, gió tự dọn. Ai hơi đâu mà leo lên dọn. Nếu phải như thế thì tôi dek thèm lắp làm gì.-
Channel: Điện tử công suất
16-01-2025, 21:44 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Chả hiểu ý cậu nói gì. Cái diode bypass quan trọng thế ư???
Cái giàn của tôi chả thấy cái diode nào mà vẫn hoạt động hơn 3 năm rồi.
Nhưng nó không có kiểu nối dây với bấm cốt như của cậu.
Tóm lại là tiền nào của nấy, đừng hoang tưởng kỹ thuật hóa. Kẻo ô tô điện đua nhau lắp diode.-
Channel: Điện tử công suất
16-01-2025, 21:31 -
-
Trả lời cho Dùng biến áp tự ngẫu 110V có tốn điện không?bởi nhathung1101Tôi dùng 4 cái điều hòa Fujitsu hàng bãi Nhật, nên phải dùng 4 cục đổi nguồn 220 xuống 100V. Để bật quanh năm, chả thấy bằng bữa bia. Chứ tắt đi là mất mấy bữa luôn.
-
Channel: Điện tử gia dụng
16-01-2025, 21:24 -
Comment