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 Thắc mắc về hạ áp cho adapter laptopbởi nhathung1101
-
Channel: Điện tử dành cho người mới bắt đầu
31-12-2024, 17:39 -
-
Comment on Thắc mắc về hạ áp cho adapter laptopbởi nguyendinhvan
-
Channel: Điện tử dành cho người mới bắt đầu
29-12-2024, 23:20 -
-
Trả lời cho Thắc mắc về hạ áp cho adapter laptopbởi nguyendinhvanPhải làm đúng quy chình thì mới được
Bươc 1 lấy cái nguồn điều chỉnh, set về đúng 12v, cấp cho đường out 19v như hình. Chú ý là phần đầu vào adaptor không cấp điện.
Bước 2 . Kiểm tra điện áp tại chân số 3 das001 có đúng...-
Channel: Điện tử dành cho người mới bắt đầu
29-12-2024, 23:20 -
-
Trả lời cho Thắc mắc về hạ áp cho adapter laptopbởi LamVoNhấp nháy có thể do chu kỳ hoạt động bị rút ngắn quá dẫn đến không đủ nguồn nuôi ic, bác thử tăng giá trị tụ nguồn phụ nuôi ic và giảm giá trị điện trở hạn dòng cho nó xem có cải thiện không....
-
Channel: Điện tử dành cho người mới bắt đầu
29-12-2024, 08:45 -
-
Trả lời cho Mạch tự động bật nguồnbởi nhathung1101Bác đúng là hệ Pháp, nên toàn quên chữ "d".
Nếu em được như bác, đúng 0h mới được stand by với hũ rượu và vợ thì tuyệt.
Nhưng đời không như là mơ, em và lão Đinh Vặn ngấm đủ mà.
Lão Đinh Vặn...-
Channel: Điện tử gia dụng
29-12-2024, 00:17 -
-
Trả lời cho Thắc mắc về hạ áp cho adapter laptopbởi nhathung1101Vì bản chất của nó hoạt động theo dòng. Áp chỉ để mức giới hạn.
Cứ hiểu như bạn khôn hơn 10 người, nhưng khả năng thu nhận kiến thức chỉ bằng 1/10 người khác, thì nó sẽ tự điều chỉnh thôi.-
Channel: Điện tử dành cho người mới bắt đầu
28-12-2024, 23:41 -
-
Trả lời cho Mạch tự động bật nguồnbởi nhathung1101Ựa... có lý...
Dưng mà lão chỉ dùng 1 con opto là nguy hiểm lắm.
Có khi nó on lúc lão với ấy ấy về nhà lúc vắng vợ thì khổ. Nên phải thêm cái mạch logic nữa mới được....-
Channel: Điện tử gia dụng
28-12-2024, 23:20 -
-
Trả lời cho Thắc mắc về hạ áp cho adapter laptopbởi lct1610Bác có cách nào khác ngoài quấnlại/rút bớt vòng dây BA (và mua mới ) k nhỉ ? Tại gỡ ra cũng khá lằng nhằng và kì công...
-
Channel: Điện tử dành cho người mới bắt đầu
28-12-2024, 19:30 -
-
Trả lời cho Thắc mắc về hạ áp cho adapter laptopbởi mèomướpDạ với mức áp chênh lệch quá nhìu thì ngoài chỉnh hồi tiếp thì chú cần quấn lại thứ cấp biến áp nữa ạ. Tùy loại mà có thể sẽ khéo léo rút bớt vòng dây đỡ phải tách lõi ferit ạ...
-
Channel: Điện tử dành cho người mới bắt đầu
28-12-2024, 18:57 -
-
bởi lct1610E có adapter laptop cũ hiệu asus chạy tốt ,có đầu ra ổn định ở 19,4v dòng 3,42A ( công suất 60w). E định là hạ nó xuống 12v để cấp nguồn cho đầu camera. Và e đã thử bằng cách can thiệp vào phần hồi tiếp (sử dụng ic DAS001 hay TSM103W) thông...
-
Channel: Điện tử dành cho người mới bắt đầu
28-12-2024, 18:44 -
Comment