bạn học hệ nào cũng vậy không quan trọng đại học hay cao đẳng, kiến thức trên trường chỉ là cơ bản bạn muốn hiểu biết nhiều hơn thì phải học nhiều hơn nữa. firmware bạn có thể hiểu nom na là lập trình phụ thuộc vào phần cứng, như cái USB mình đang làm là lập trình cho pic giao tiếp với pc dựa vào các thanh ghi USB mà pic hổ trợ
Thông báo
Collapse
No announcement yet.
cần pro giúp đỡ về pic18f2550 !
Collapse
X
-
Nguyên văn bởi rptdnmqs Xem bài viếtminh_cly chém dữ quá.1 ngày làm xong .xỉu.đòi làm trong 1 ngày.
---------------------Mọi thứ hôm nay ta làm được không phải là ta giỏi mà đó là một quá trình một thời gian dài-------------------------Computer Science major - Vietnamese-German University
Sponsored by
Comment
-
Nguyên văn bởi minh_cly Xem bài viếtSorry, chém là cái tật của em. Nhưng cái USB ko đến nỗi mấy tháng đâu nhễ.
Comment
-
Nguyên văn bởi thelaxong Xem bài viếtbác viết thử firmware cho USB đi rồi biết ^^Computer Science major - Vietnamese-German University
Sponsored by
Comment
-
hôm nay đẹp trời ( ở HCM nóng gần chết ), em xin phép viết một bài hướng dẫn về viết firmware cho USB dùng pic18f25550/pic18f4550 ( mong các pro đi trước chỉnh sửa giúp em để em có thể hoàn thiện kiến thức, đừng chém em tội nghiệp em, em cũng chỉ muốn đóng góp công sức vào diễn đàn thôi ).
Xin nói sơ qua kết quả mình đạt được tại thời điểm này là firmware mình viết ra chỉ mới giao tiếp thành công với PC tức là khi cắm pic18f2550 vào thì PC nó nhận thành công và báo là thiết bị có thể hoạt động ( mình chưa truyền dữ liệu xuống pic được do chưa viết được driver và ứng dụng cho nó ^^ ).
Mọi việc xin bắt đầu từ đây:
Trước tiên mình xin nhắc lại một số kiến thức về USB, mình chỉ giới thiệu sơ về các bước ban đầu cần thiết để mô tả thiết bị còn các định nghĩa khác thì các bạn đọc tài liệu sẽ rõ:
Đầu tiên là về lý thuyết của USB
1. Để một thiết bị có thể thực hiện giao tiếp USB với Pc thì thiết bị phải gửi thành công các mô tả như: thiết bị, cầu hình, giao diện, endpoint...
một thiết bị có thể có nhiều giao diện và một giao diện có thể có nhiều endpoint. Trong bài này mình chỉ dùng 1 giao diện và endpoint mặc định là endpoint 0 để thực hiện việc gửi các mô tả ban đầu. Vậy giao diện và endpoint là gì ? giao diện là nơi chứa các endpoint , các enpoint là nơi chứa nội dung để gửi lên host hoặc nhận dữ liệu từ host gửi về.
2. Bạn phải xác định về loại tốc độ mà thiết bị của bạn sẽ sử dụng như: low-speed, full-speed, high-speed, sau khi xác định loại tốc độ thì bạn phải tìm các bảng mô tả phù hợp với loại tốc độ bạn dùng và các điện trở kéo lên phù hợp với loại tốc độ đó.
3. 9 bước liệt kê thiết bị của host trong tài liệu usb-in-a-nutshell ( 9 bước này rất quan trọng các bạn nên đọc kỹ ), trong bước 3 host hỏi 64byte mô tả thiết bị đầu tiên các bạn chỉ cần gửi 8 byte chỗ này là được. Lưu ý rằng khi lắp mạch thực, có thể host yêu cầu số lượng byte gửi lên sẽ khác 1 chút so với 9 bước trong usb-in-a-nutshell
4. Các tài liệu cần phải đọc là: usb-in-a-nutshell, usb 2.0 ( chapter 9 ), datasheet pic18f2550, và cái này http://www.usbmadesimple.co.uk/ums_4.htm tài liệu tham khảo là usb complete
Đối với pic 18f2550:
Tất nhiên là phải đọc datasheet của nó rồi, tuy nhiên phải đọc đọc kỹ về các thanh ghi BDSTAT cái thanh ghi này rất rắc rối. Chip 18f2550 hổ trợ 16 endpoint ( 0 -> 15) mỗi endpoint sẽ có 2 BDSTAT, và đi theo mỗi BDSTAT này sẽ có các thanh ghi sau: BDCNT, BDADRL, BDADRH ( tất nhiên các thanh ghi này sẽ tương ứng với số thứ tự của endpoint. ví dụ, endpoint 0 sẽ có 2 nhóm như sau:
BD0STAT_in, BD0CNT_in, BD0ADRL_in, BD0ADRH_in. BD0STAT_out, BD0CNT_out, BD0ADRL_out, BD0ADRH_out.
micorochip cho phép ta định nghĩa địa chỉ các thanh ghi này trong khoảng từ 400h tới 4FFh ( tùy vào chế độ ping-pong bạn dùng mà bạn định nghĩa địa chỉ của các thanh ghi này ), vùng RAM của USB từ 500h tới 7FFh bạn dùng chỗ nào thì ghi địa chỉ RAM chứa byte đầu tiên vào 2 thanh ghi BDARL, BDADRH
về chức năng của các thanh ghi như sau:
BD0STAT_in là thanh ghi trạng thái của endpoint 0 dùng để gửi dữ liệu, tức là khi bạn muốn gửi dữ liệu thì bạn phải ghi giá trị vào thanh này để gửi dữ liệu
BD0CNT_in là thanh ghi dùng để báo cho host biết có bao nhiêu byte gửi lên
BD0ADRL_in là thanh ghi chứa địa chỉ thấp của thanh ghi đầu tiên chứa dữ liệu cần gửi
BD0ADRH_in là thanh ghi chứa điạu chỉ cao của thanh ghi đầu tiên chứ dữ liệu cần gửi
Thứ tự các thanh ghi trên để gửi dữ liệu như sau:
1 kiểm tra BD0STAT_in đang ở có chế độ SIE ko ( CPU là own =0, SIE là own=1 ) ( chế độ SIE cho phép thực hiện chức năng tương ứng là gửi dữ liệu hay copy dữ liệu vào cùng RAM CPU )
2 ghi địa chỉ vùng RAM chứa byte đầu tiên vào 2 thanh ghi BD0ADRL_in và BD0ADRH, ví dụ: địa chỉ RAM USB đầu tiên để chứa dữ liệu là 0x0508, mình sẽ ghi như sau: BD0ADRL_in=08, BD0ADRH_in=0x05
3. bạn phải ghi dữ liệu vào vùng RAM USB với địa chỉ RAM ghi byte đầu tiên là 0x0508
4. ghi số lượng byte cần gửi lên host vào BD0CNT_in, ví dụ cần gửi 8 byte thì BD0CNT_in=8
5. ghi trạng thái vào thanh ghi BD0STAT_in, ví dụ: gưi dữ liệu lên với kiểu dữ liệu là DATA1 thì BD0STAT_in=0xc8;
tương tự các bạn sẽ có các chức năng của các thanh ghi BD0STAT_out, BD0CNT_out, BD0ADRL_out, BD0ADRH_out ( out là nhận dữ liệu, in là gửi dữ liệu )
Thứ tự các thanh ghi để nhận dữ liệu từ vùng RAM USB vào vùng RAM của CPU
1 kiểm tra BD0STAT_out đang ở có chế độ SIE ko ( CPU là own =0, SIE là own=1 ) ( chế độ SIE cho phép thực hiện chức năng tương ứng là gửi dữ liệu hay copy dữ liệu vào cùng RAM CPU )
2 copy dữ liệu từ vùng RAM USB vào vùng RAM CPU với độ dài là giá trị của BD0CNT_out
Cách gửi một vài lệnh đặc biệt lên host
1.báo ACK lên host
BD0CNT_in=0;
BD0STAT_in=0xc8;
2.báo lỗi lên host
BD0CNT_out= kích thước tối đa của gói mà bạn dùng; ví dụ mình dùng kích thước tối đa của gói là 8 thì BD0CNT_out=8;
BD0STAT_out=0x84;
BD0STAT_in=0x84;
Hôm nay viết tới đây thôi, mỏi tay rồi ^^ mình viết không được hay bạn nào đọc mà khó hiểu thì cứ hỏi nhé mình sẽ trả lời trong kiến thức mà mình biết. Rất mong nhận được sự ủng hộ của các bạn ^^. bài sau mình sẽ nói về các bước và cách thức để viết code cho pic
P/s: pro nào cho em hỏi làm sao để tab đầu dòng được vậy ? em làm hoài mà ko dc. ThanksLast edited by thelaxong; 26-03-2012, 18:26.
Comment
-
mình xin viết tiếp về hướng dẫn lập trình firmware USB cho pic 18f2550. Việc đầu tiên các bạn cần phải có các phần mềm cần thiết để thực hành:
1 Làm 1 mạch thực về USB
2 protues 7.8 hoặc các version khác có hổ trợ USB, các bạn có thể bật chức năng debug USB lên bằng cách: chọn debug -> chọn hình con bọ ( configure di... -> nhấn vào dấu " + " chỗ chữ pic chọn dòng USB sau đó click vào full trace hoặc debug sau đó nhấn ok. Mục đích việc này là giúp cho các bạn có thể kiểm soát được chương trình đã đọc được các thanh ghi nào và ghi nội dung gì vào thanh ghi. Theo kinh nghiệm của mình đối với USB protues không chính xác cho lắm, nó chỉ giúp bạn biết được chương trình bạn đi tới đâu và sai chỗ nào, còn khi cắm vào pc thì kết quả nó khác ( chỉ có khi nào code sai thì protues và thực tế là giống nhau )
3 phần mềm SourceUSB 3.4 đây là phần mềm phân tích các gói tin USB, nó sẽ giúp bạn biết được code của bạn sai hay đúng. Nó rất hữu ích ( còn sử dụng như thế nào thì mình sẽ nói sau, mà cái này mình ko có key hay ***** chỉ xài 30 ngày, để có key 30 ngày bạn cần đăng ký email với nó )
4 CCS, pickit... phần mềm mà bạn lập trình và nạp file hex cho chip.
Mọi việc bắt đầu từ đây:
Mình sẽ nói từng giai đoạn cho các bạn dễ thực hiện, và cung cấp các bảng mô tả khi nào tới phần mô tả. Và đây là các giai đoạn mà bạn sẽ vượt qua để có thể giao tiếp USB với pc:
Nếu các bạn đi đúng thứ tự từ trên xuống, trừ cái dòng cuối cùng, thì bạn đã mở được cổng USB để giao tiếp. Đầu tiên mình sẽ nói về giai đoạn power và default còn giai đọa attached là giai đoan khi bạn cắm USB vào pc và thiết lập các điện trở kéo lên tương ứng với tốc độ.
1.CẤU HÌNH CHO USB
Việc cấu hình cho modul USB chỉ nằm ở 2 thanh ghi đó là: UCON và UCFG, chức năng cụ thể thì các bạn đọc datasheet là rõ như ban ngày. Khi bắt đầu hàm main() các bạn phải cấu hình USB và bật hết các thanh ghi cho phép ngắt, lưu ý là các thanh ghi cho phép ngắt không phải là thanh ghi trạng thái ngắt , vì chỉ dựa vào các ngắt của thanh ghi mới biết được mình nhận được cái gì, và chỉ quan tâm tới thanh ghi trạng thái ngắt không quan tâm tới thanh ghi trang thái ngắt lỗi . Và việc thiết lập này chỉ cần thực hiện 1 lần duy nhất trong các dòng lệnh đầu tiên.
Sau khi thực hiện việc cấu hình xong, thì bạn đang ở giai đoạn power bạn kiểm tra thanh ghi trạng thái ngắt của USB sẽ thấy được các ngắt được kích hoạt, mỗi ngắt sẽ có tác dụng của nó ( datasheet ) trong đó có 1 ngắt cần quan tâm là ngắt reset, ngắt này báo rằng có 1 tín hiệu reset từ host gửi xuống và bạn cần phải reset các cấu hình cho endpoint trừ endpoint 0 ( vì endpoint 0 là endpoint mặc định để gửi các mô tả ban đầu ) và cấu hình cho endpoint 0 các thanh ghi khác đều =0 ( nếu bạn xài endpoint nào khác thì bạn cấu hình cho nó ), thanh ghi địa chỉ USB ( đây là thanh chứa địa chỉ trên bus USB để giao tiếp ), xóa thanh ghi trạng thái ngắt, bật hết các thanh ghi cho phép ngắt và thanh ghi cho phép ngắt lỗi, xóa cờ ngắt TRNIF bốn lần, đưa địa chỉ vùng RAM USB vào các thanh ghi BDADRL, BDADRH, dùng bao nhiêu endpoint thì đưa vào bấy nhiêu. Ví dụ: mình chỉ dùng endpoint 0 thì đưa địa chỉ như sau:
BDCNT_out(0)=8;
BDADRL_out(0)=0x00;
BDADRH_out(0)=0x05;
BDSTAT_out(0)=0x88;
BDADRL_in(0)=0x07;
BDADRH_in(0)=0x05;
BDSTAT_in(0)=0x00;
Và đừng quên là đưa giá trị 0x00 vào thanh ghi địa chỉ bus USB UADDR . sau khi các bạn phát hiện ra cờ ngắt reset và đi vào thực hiện việc reset thì các bạn đã đang nhập vào giai đoạn default.
THỨ TỰ XỬ LÝ CÁC THANH GHI NHƯ SAU:
1. SOF xử lý: SOF =0;
2. STALL xử lý: STALL=0;
3. IDLEIF xử lý: IDLEIF=0; SUSPND=1;
4. TRNIF xử lý: thanh ghi báo nhận được 1 yêu cầu nào và cần đi vào xử lý yêu cầu này ( phần này mình sẽ nói sau ), nếu bạn ko nhận được ngắt này thì chắc chắn phần cấu hình hoặc chỗ xử lý ngắt reset có gì đó sai.
[b] 5. ACTIVIF [b] xử lý: SUSPND=0; ACTIVF=0;
6. UERRIF xử lý: UEIR=0; UERIF=0;
7. URSTIF xử lý: đã trình bày ở trên
P/s: chúng ta chỉ làm việc trên các thanh ghi trạng thái ngắt, ngoài ra ko kiểm bất cứ thanh ghi nào khác. Vậy là các bạn đã đi qua 2 giai đoạn của USB, các bạn nên thực hiện kỹ 2 giai đọan này cấu hình đúng và xử lý các ngắt, nếu không sẽ rất rắc rối cho các giai đọan sau này, khi bạn đi đến giai đoạn nào thì lưu vào 1 biến để cho dễ kiểm soát và trả lời các yêu cầuLast edited by thelaxong; 26-03-2012, 18:25.
Comment
-
Cảm ơn bạn thelaxong, mình đang rất quan tâm tới USB-HID, mình làm board thí nghiệm rồi, nạp mấy cái source trên mạng vẫn chạy được nhưng không hiểu về nó nên việc modify lại cũng khó.
Chờ "bài giảng" tiếp theo của bạn!
*PS: bạn có ở SG không nhỉ, có thì cho mình giao lưu được không?!
Have fun!
Comment
-
Nguyên văn bởi designer Xem bài viếtCảm ơn bạn thelaxong, mình đang rất quan tâm tới USB-HID, mình làm board thí nghiệm rồi, nạp mấy cái source trên mạng vẫn chạy được nhưng không hiểu về nó nên việc modify lại cũng khó.
Chờ "bài giảng" tiếp theo của bạn!
*PS: bạn có ở SG không nhỉ, có thì cho mình giao lưu được không?!
Have fun!
mình chỉ hiểu dc 1 phần về USB, mình sẽ cố gắng viết dễ hiểu nhất. Hiện tại mình chỉ rãnh vào buổi tối nên sẽ tranh thủ viết các bài còn lại càng nhanh càng tốt để các bạn có thể tiết kiệm thời gianLast edited by thelaxong; 22-05-2012, 11:50.
Comment
-
Mình rất vui vì các bạn đã quan tâm đến chủ để USB, và mình xin viết tiếp hướng dẫn về USB dùng pic 18f2550. Mình xin nhắc lại nội dung của 2 bài trước:
Bài đầu tiên: giúp các bạn hình dung ra được các tổ chức của giao tiếp USB, các tài liệu liên quan cần phải đọc, tác dụng của các thanh ghi BDxSTAT, BDxCNT, BDxADRL, BDxADRH. Một sô lệnh cần để gửi lên host khi cần thiết, và các bước để có thể ghi hoặc đọc dữ liệu lên vùng RAM USB.
Bài thứ hai: giới thiệu với các bạn 1 vài công cụ trước khi bước vào " khai phá" USB, 1 bảng các giai đoạn cần phải vượt qua để có thể giao tiếp USB. Cách để viết code cho USB. Cách giải quyết giai đoạn power, giai đoạn reset, và tổng kết lại các việc cần xử lý khi các ngắt được kích hoạt .
P/s: các bạn lưu ý rằng cần phải cấu hình clock cho USB trước khi bước vào thực hiện viết code, vì khi cấu hình clock sai thì USB ko thể hoạt động đúng, nếu cấu hình clock đúng thì các bạn sẽ nhận được các ngắt đúng ở từng giai đoạn, mình cung cấp đoạn code cấu hình clock mà hình dùng như sau:
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CP UDIV1,VREGEN // cau hinh clock cho USB la viec lam dau tien va quan trong nhat
#use delay(clock=48000000)
một điều cũng cần phải lưu ý là CCS ko định nghĩa các thanh ghi USB sẵn cho bạn vì vậy bạn cần phải định nghĩa lại các thanh ghi của USB với địa chỉ của từng thanh ghi đã có trong datasheet, sau đây là đoạn code mình định nghĩa các thanh ghi USB mà mình dùng ( cái này cũng lấy của người khác thôi nhưng có 1 một số mình định nghĩa thêm ^^) Resister USB.txt sẽ có các thanh ghi các bạn sẽ không dùng đến nhưng mình vẫn để lại cho đầy đủ
Các bạn thông cảm khi viết 2 bài trước mình quên mất các điều quan trọng ban đầu ^^ Lúc đó vừa viết xong USB mừng quá quên hết trời đất ( ^^ )
Mọi chuyện sẽ tiếp tục từ đây:
Sau khi các bạn đăng nhập vào giai đoạn defaut và thoát khỏi giai đoạn này thành công, thì ngay sau đó host sẽ gửi địa chỉ USB cho pic 18f2550 và nội dung của đó nằm trong vùng RAM mà bạn định nghĩa cho BD0STAT_out lúc này bạn đang trong giai đoạn address, bạn cần phải đọc dữ liệu ở BD0STAT_out ( không phải BD0STAT_in vì in là truyền dữ liệu ). Lúc này bạn phải kiểm tra ngắt MCU_TRNIF ( nội dung ngắt này trong datasheet ) nếu có ngắt TRNIF thì bạn vượt qua 2 giai đoạn trước thành công và lúc này bạn cần phải kiểm tra thanh ghi USTAT để biết được nhận gói out hay in và endpoint nào được nhận vì trong trường hợp này endpoint 0 được mặc định là endpoint trong truyền dẫn điều khiển nên không cần kiểm tra endpoint nào dc nhận. Nếu bạn nhận được gói in trong lúc này thì bạn đã sai 1 chổ nào đó, lúc này bạn phải nhận được gói out, vì bạn chưa trả lời 1 yêu cầu nào của host nên việc lúc này là nhận và đọc yêu cầu đó, tiếp theo bạn kiểm tra nhận được token setup hay token out bằng cách đọc giá trị PID trong BD0STAT_out và các bạn đọc được gói token setup là đúng ( kiểm tra trong lý thuyết USB về token ). Tiếp theo bạn đi vào xử lý token setup này, bằng cách đọc yêu cầu mà host gửi xuống, thuật toán đọc dữ liệu như sau ( đây là cách đọc dữ liệu của mình, bạn có thể tự viết cách đọc dữ liệu bằng cách là tạo 1 con trỏ có địa chỉ ở địa chỉ bắt đầu từ vùng RAM USB mà bạn định nghĩa trong khi xử lý ngắt reset ) :
1. Định nghĩa 1 biến có địa chỉ là vùng RAM USB bắt đầu của BD0STAT_out
2. Đưa địa chỉ của biến trên vào 1 con trỏ
3. ghi giá trị 8 vào ( số 8 là độ dài byte ) BD0CNT_out
4. ghi giá trị 0 vào BD0STAT_in
5. kiểm tra BD0STAT_out, nếu đã nhận được gói data0 thì lần này nhận được gói data1 và ghi giá trị data tương ứng vào BD0STAT_out 0xc8 là gói data0 0x88 là gói data1
6. Đọc nội dung trong con trỏ mà bạn đã trở tới địa chỉ ở bước 1, lưu ý là bạn phải đọc 8 byte vì BD0CNT_out=8 đã được ghi vào ở bước 3
thứ tự byte sẽ là:
bmRequest
bRequest
wValue_low
wValue_high
wIndex_low
wIndex_high
wLength_low
wLength_high
Sau đó các bạn đọc byte đầu tiên các bạn chỉ cần biết nhận được "standard request hay ko " nếu ko nhận được yêu cầu này thì bạn đã sai, và cần phải kiểm tra lại việc cấu hình các ngắt và đảm bảo rằng các ngắt đã được xử lý đúng và phải qua được 2 giai đoạn trước. Nếu bạn nhận được standard request thì bạn đọc tiếp byte thứ 2, do ta đang trong giai đoạn address nên sẽ được nôi dung của nó sẽ là set address 0x05. Tại đây bạn trả lời ACK lên host ( cách trả lời nói ở bài đầu tiên ) và lưu giá trị địa chỉ USB vào 1 biến, nội dung này nằm trong wValue_low. Sau đó bạn kết thúc kiểm tra các yêu cầu và xoá bit PKTDIS ( ý nghĩa trong datasheet ), sau đó xoá tiếp cớ ngắt MCU_TRNIF.
P/s: không được ghi giá trị địa chỉ USB nhận được vào thanh ghi UADDR của pic ngay lúc này vì lúc này chưa thoát khỏi giai đoạn ADDRESS, chỉ đến khi nào bạn lặp lại kiểm tra cờ ngắt MCU_TRNIF và kiểm tra MCU_USTAT nhận được 1 gói "in" thì bạn mới được gán địa chỉ vào UADDR và trả lời " ACK" thì lúc này bạn đã thoát khỏi giai đoạn ADDRESS . Bạn có thể kiểm tra PID sau khi trả lời thành công gói "in", nếu nhận dc nội dung PID là ACK thì bạn có thể chắc chắn là đã thoát khỏi giai đaọn address. Giai đoạn address này khó trả lời nên có thể các bạn sẽ gặp rất nhiều rắc rối ở chỗ này
Tổng kết lại, cho bạn dễ hình dung:
1. Cấu hình clock USB
2. Định nghĩa các thanh ghi USB
3. Bật tất cả các ngắt, cấu hình USB với tốc độ USB, điện trở kéo lên.... ( đăng nhập vào giai đoạn power )
4. chờ cho tới khi bit SE0 = 0
5. xoá bit PKTDIS
6. kiểm tra các ngắt, nhận được các ngắt ( thoát khỏi giai đoạn power và rơi vào giai đoạn defaut ), xử lý các ngắt đặc biệt là ngắt reset phải xử lý cho khéo
7. kiểm tra các ngắt 1 lần nữa và nhận được ngắt TRNIF ( thoát khỏi giai đoạn reset, đăng nhập vào giai đoạn address )
8. Xử lý ngắt TRNIF, bằng cách đọc nội dung yêu cầu host gửi xuống và xử lý yêu cầu "set address", xoá bit PKTDIS ,xoá ngắt TRNIF
9. kiểm tra ngắt TRNIF 1 lần nữa, và nhận được gói in " gán địa chỉ USB vào thanh ghi UADDR và trả lời ACK", xoá ngắt TRNIF
10. kiểm tra ngắt TRNIF 1 lần nữa, đọc PID nếu là ACK thì thoát khỏi giai đoạn address thành côngLast edited by thelaxong; 23-05-2012, 01:29.
Comment
-
P/s: thêm 1 cách để các bạn biết được có thoát khỏi giai đoạn address thành công hay không, các bạn chỉ cần đọc yêu cầu host gửi về là gì sau khi trả lời giai đaọn adress nếu là "set address" thì các bạn chưa thoát khỏi giai đoạn address, nếu nhận được yêu cầu là "mô tả, cầu hình..." thì các bạn đã thoát khỏi thành công
Comment
Bài viết mới nhất
Collapse
-
bởi bqvietServo cuối cùng vẫn chỉ là điều chỉnh tốc độ và đọc phản hồi vị trí
Qua cổng song song LPT cổ
https://www.electronicsforu.com/elec...eed-controller
Qua cổng USB - xem thêm đám FT232RL-
Channel: Điện tử công nghiệp
22-11-2024, 15:56 -
-
bởi thiennam0703Em đang tìm hiểu cách xây dựng chương trình điều khiển động cơ Servo Yaskawa bằng máy tính tuy nhiên khi tìm kiếm trên mạng các hướng dẫn thì thường là điều khiển bằng vi điều khiển hoặc điều khiển bằng PLC hay điều khiển động cơ...
-
Channel: Điện tử công nghiệp
22-11-2024, 15:32 -
-
Trả lời cho Tổng hợp các thông tin về mạch nạp cho AVRbởi bacthoMình cũng bị như vậy mà chưa biết ở đâu
-
Channel: Vi điều khiển AVR
21-11-2024, 21:00 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi nhathung1101Câu trả lời là không dùng được.
Hai lớp dán mặt trước và mặt sau, gọi là film phân cực. Muốn hiểu rõ về nó thì chịu khó search nhé. Ở đây có rất nhiều chó cứ ngửi thấy phân là sủa nhặng, nên không giải thích nhiều....-
Channel: Thiết bị điện tử cá nhân
21-11-2024, 16:20 -
-
Comment on Tổng hợp các thông tin về mạch nạp cho AVRbởi Memem
-
Channel: Vi điều khiển AVR
21-11-2024, 15:10 -
-
Trả lời cho Tổng hợp các thông tin về mạch nạp cho AVRbởi MememMọi người ơi cho em hỏi cái này ạ, hiện tại em đang làm btl về hiển thị giá trị nhiệt độ trên led 7 thanh sử dụng atmega16, code em chạy trên mô phỏng rất oke nhưng khi lắp qua mạch thực thì bị lỗi ở led đầu tiên bị lỗi như thế này...
-
Channel: Vi điều khiển AVR
21-11-2024, 15:10 -
-
bởi mantruongepuNhờ cả nhà tìm giúp mình thông tin IC này với, thấy ghi 943B W58BAL mà mình tìm mấy ngày nay không được, nó được đóng gói dạng TSSOP 8. Cám ơn cả nhà....
-
Channel: Điện tử dành cho người mới bắt đầu
20-11-2024, 14:40 -
-
bởi TherulCảm ơn bạn đã chia sẻ câu chuyện và quá trình phát triển sản phẩm của mình. Trước tiên, thật may mắn khi bạn vượt qua tai nạn và vẫn giữ được niềm đam mê cũng như khả năng sáng tạo trong lĩnh vực kỹ thuật. Việc bạn tiếp tục...
-
Channel: từ PIC tới dsPIC
20-11-2024, 07:20 -
-
Trả lời cho Em muốn hỏi mọi người về nguyên lý hoạt động, tần số của mạch công suất trong máy rửa siêu âm ạ.bởi nguyendinhvanBạn nên nghiên cứu cái chấn lưu đèn ống Compact fluorescent lamp hay đèn compact trước đã. Nó rẻ đỡ tốn kém.
Sau khi hiểu rõ rồi thì chuyển sang cái mạch này.
Ở cái chấn lưu, tần số của nó linh tinh lắm, tùy điện áp nguồn, tùy...-
Channel: Hỗ trợ học tập
19-11-2024, 22:44 -
Comment