PDA

View Full Version : Dạy bang chủ học PIC18


falleaf
19-12-2006, 06:28 PM
Như đã viết bài lần trước, F mở ra luồng này để mời các bạn tham gia nghiên cứu về dòng High End PIC18.

Nguyên tắc hoạt động của luồng này như sau:
- Người học: falleaf
- Người dạy: tất cả các thành viên có hứng thú
- Nội dung: nghiên cứu về PIC18F4550.
- Học phí: thành viên nào dạy cho F được 5 điều, bất kể gì về PIC18F4550, thì xin liên hệ với phuongchinh2000@yahoo.com để nhận một con PIC18F4550.

Xin nhắc lại, câu chuyện của việc F đi học PIC là như thế này. Có bạn đặt vấn đề ở luồng sau: http://www.picvietnam.com/forum/showthread.php?p=6413#post6413.

F nghĩ rằng điều đó đúng và hợp lý. Cộng với sự phân tích rằng, hiện nay, về vấn đề Midrange trở xuống coi như đã giải quyết xong. Vấn đề dsPIC do anh Nam phụ trách. Vậy tóm lại, chỉ còn dòng High End là còn thiếu sót một chút.

Sau chính xác là 2.5 năm không hề đụng tới PIC, bây giờ F muốn cùng các bạn học lại từ đầu. Chỉ có cái khác, vì các bạn quá đông, cho nên nội dung bài học không phải các bạn đưa ra, mà là F sẽ đưa ra.

Trong tay F hiện có con 18F4550, có đúng 1 con duy nhất, và các bạn đừng hướng dẫn cho F để nó bị cháy là coi như F hết đồ chơi :D.

Đầu tiên, F xin một cái mạch để chạy với con 18F4550, xì ke ma tít. F không có tiền làm mạch in, cho nên F sẽ hàn mạch test.

HOÀN TOÀN KHÔNG NÓI ĐÙA MỘT TÍ NÀO VỀ CÁI LUỒNG NÀY!

Một là để thúc đẩy việc nghiên cứu dòng 18F, một mặt khác, luồng này như một luồng khuyến khích các bạn nghiên cứu và học tập. F xin treo ở đây 50 con 18F4550 và 18LF4550, xin học được 500 điều từ các bạn. Từ điều lớn đến điều nhỏ xíu, kể cả con điện trở mắc thế nào.

Bạn nào làm F bị cháy chip, thì bắt các bạn phải đền cho F 1 con chip khác bằng cách hướng dẫn F 5 điều bất kỳ mà các bạn nghĩ ra trong khi sử dụng 18F4550.

Đây là một cơ hội vừa học, vừa dạy, hoàn toàn nghiêm túc.

Cách học tốt nhất, đó là vừa học và vừa truyền đạt lại những gì mình học. Nếu mình truyền đạt được một cách suông sẻ, thì có nghĩa là mình đã nắm chắc về nó.

Các bạn cũng đừng lo mình không nhận được PIC, bởi vì nếu các bạn không nhận được PIC, có nghĩa là có một người khác nhận được, và người đó đã cung cấp cho các bạn 5 điều mà người đó biết về 18F4550 cho các bạn. Đường nào thì cũng có lợi cả.

Tại sao lại không bắt đầu nhỉ?

Tài liệu tham khảo cho luồng này có thể download ở đây, tài liệu việt nam, hoặc trên microchip. F sẽ tổng hợp nó trong quá trình học và đưa lên bài viết đầu tiên này. Trong quá trình theo dõi các luồng bên dưới, các bạn cần có những tài liệu này. Các tài liệu tham khảo được nói đến trong các phần bên dưới sẽ được cập nhật thường xuyên ở đây.

TÀI LIỆU THAM KHẢO:
[1] Datasheet 18F2455/2550/4455/4550: http://ww1.microchip.com/downloads/en/DeviceDoc/39632c.pdf
[2] PIC18C Manual: http://ww1.microchip.com/downloads/en/DeviceDoc/39500a.pdf
[3] Mạch nạp (programmer) và Bootloader: http://www.picvietnam.com/forum/forumdisplay.php?f=9
[4] Thông tin về các mạch nạp và phần mềm: http://www.picvietnam.com/forum/showthread.php?t=299
[5] Học PIC trong 1 ngày: http://www.picvietnam.com/forum/showthread.php?t=5
[6] USB Complete: http://kho.tailieuvietnam.net/index.php?option=com_docman&task=doc_details&gid=331

falleaf
19-12-2006, 06:34 PM
Câu hỏi 1: Mạch schematics để cho con 18F4550 chạy được? Có nhiều chỗ modify được, các bạn có thể cung cấp các sơ đồ mạch modify chỗ này, chỗ kia, vẫn oki, vẫn xem như là trả lời câu hỏi này.

Câu hỏi 2: Thạch anh trong mạch chạy tối đa là bao nhiêu MHz? thấp nhất là bao nhiêu? RedRose

Câu hỏi 3: Các sơ đồ mạch reset khác nhau, và nói sơ về các mạch đó, tính năng, hoạt động...

Câu hỏi 4: Các loại mạch nạp + chương trình nạp nào mà bạn biết, có thể kết hợp với nhau và nạp được cho 18F4550? (chỉ cần kể tên ra, F có thể tìm thấy trên picvietnam, hoặc trên google. Nếu bạn có lòng tốt thì đưa link cho F dễ kiếm) RedRose

Câu hỏi 5: Liệt kê các tính năng của PIC18F4550?

Chúc vui

RedRose
20-12-2006, 09:04 AM
Thanks falleaf mở luồng này.
Mình cũng mới dùng PIC8F4550 để lập trình USB. Còn lại chưa sử dụng gì khác.
Tham gia luồng này chắc sẽ học được nhiều điều.

Đầu tiên chắc chắn là cần 1 mạch nạp :). Vừa qua để làm mạch nạp cho PIC18F4550 thì mình đã lắp mạch Schear+ Mod của anh Nam và chạy rất tốt với Winpic800.
Link: https://www2.hcmut.edu.vn/~nqnam/uC.php

Hì hì, còn lại mình sẽ học tiếp ^_^

littlephoc
20-12-2006, 12:02 PM
Xin cho hỏi bang chủ lý do chọn PIC18F4550 để làm việc?

chumeodihia
20-12-2006, 01:31 PM
Dòng pic 18 theo tôi được biết thạch anh sử dụng tối đa là 40 Mhz.Nếu sử dụng mplab thì có thể sử dụng thạch anh 10Mhz sau đó thiết lâp chế độ nhân 4 lên là có thể sử dụng giống như sài thạch anh 40MHZ

falleaf
20-12-2006, 01:41 PM
Xin cho hỏi bang chủ lý do chọn PIC18F4550 để làm việc?

Câu hỏi 6: Vì sao khi học 18F, thì F lại chọn 18F4550 để học? Không ai

falleaf
20-12-2006, 01:45 PM
Dòng pic 18 theo tôi được biết thạch anh sử dụng tối đa là 40 Mhz.Nếu sử dụng mplab thì có thể sử dụng thạch anh 10Mhz sau đó thiết lâp chế độ nhân 4 lên là có thể sử dụng giống như sài thạch anh 40MHZ

Bạn có thể cụ thể hơn không? Câu hỏi của F là sử dụng thạch anh nào? Mạch thiết kế ra sao? Giá trị lớn nhất là bao nhiêu, giá trị nhỏ nhất là bao nhiêu?

Cứ mỗi lần F bấm Thanks, có nghĩa là các bạn cung cáp đầy đủ thông tin, thông tin chính xác, sớm nhất, các bạn kể như dạy cho F được một vấn đề.

Có một điểm này nữa, đó là F là người đi học, cho nên giờ F phải có một số trang bị đồ đạc để học. Cho nên bây giờ F muốn có cái schema để lắp mạch thí nghiệm lắm.

Cho luôn thông số của mạch rõ ràng, nếu không cho sai, F cháy chip là các bạn sẽ đền đó nhé. hihi

Chúc vui

falleaf
20-12-2006, 01:50 PM
Thanks falleaf mở luồng này.
Mình cũng mới dùng PIC8F4550 để lập trình USB. Còn lại chưa sử dụng gì khác.
Tham gia luồng này chắc sẽ học được nhiều điều.

Đầu tiên chắc chắn là cần 1 mạch nạp :). Vừa qua để làm mạch nạp cho PIC18F4550 thì mình đã lắp mạch Schear+ Mod của anh Nam và chạy rất tốt với Winpic800.
Link: https://www2.hcmut.edu.vn/~nqnam/uC.php

Hì hì, còn lại mình sẽ học tiếp ^_^

Bạn chưa nói cho mình biết bạn dùng phần mềm nào để nạp? Cái mình cần luôn là một bộ công cụ đầy đủ để làm việc. Mặc dù có liệt kê, nhưng chính xác thì bạn dùng chương trình nạp nào? Tối mai mình rảnh, sẽ lắp cái mạch này (hàn tay, không mạch in), và gửi lên đây, coi như là báo cáo nhé :). Nhưng phải coi thử trong lab có đủ đồ nghề không đã. Mà bạn cho mình cái phần mềm nạp đi rồi mình mới biết chắc là dùng nó có đủ bộ hay không?

<< Đang có GTP và ICD2 nhưng mà mình thích cái gợi ý này của bạn cho người mới học :). Nếu bạn vẽ mạch in của đồng chí này 1 lớp và gửi lên nữa thì cực hay. :) (nhớ sử dụng chuẩn ICSP_BLD của picvietnam).

Chúc vui

fluidmech
20-12-2006, 02:24 PM
Bang chủ ơi, em cũng đang muốn tự làm cái mạch để điều khiển robot qua USB, em cũng đang bắt đầu học VC++ thôi, mình cùng học nhé.
Em co mấy quyển ebook, làm sao mà gửi cho bang chủ được?

tda
20-12-2006, 02:36 PM
tại sao anh F ko chọn 4431 (đk động cơ) hoặc 458/4680 ( có CAN/ECAN) mà lại chọn 4550 với usb với USB vốn ko là sở trường của Cơ điện tử ???

littlephoc
20-12-2006, 02:40 PM
Về mạch nạp cho 18F4550, link sau đây hướng dẫn rất kỹ:
http://pic18fusb.online.fr/wiki/wikka.php?wakka=UsbBootload
không biết có cần thiết phải dịch sang tiếng Việt hay không?

falleaf
20-12-2006, 03:07 PM
tại sao anh F ko chọn 4431 (đk động cơ) hoặc 458/4680 ( có CAN/ECAN) mà lại chọn 4550 với usb với USB vốn ko là sở trường của Cơ điện tử ???

http://www.picvietnam.com/forum//showthread.php?t=436

Câu trả lời nằm ở đây, các bạn mất 1/5 con PIC.


Về mạch nạp cho 18F4550, link sau đây hướng dẫn rất kỹ:
http://pic18fusb.online.fr/wiki/wikk...ka=UsbBootload
không biết có cần thiết phải dịch sang tiếng Việt hay không?

Đây không phải mạch nạp, nó là bootloader. Người mới học mà dính với cái này thì hơi phiền. Nếu như bạn có thể dịch tài liệu này ra, và cung cấp một bài chi tiết về vấn đề này trên picvietnam, bạn sẽ có ngay một con PIC4550.

Chúc vui

RedRose
20-12-2006, 03:38 PM
@falleaf: Dùng phần mềm nạp là Winpic800
Link down: www.winpic800.com

PIC8F4550 có thể chạy với các nguồn:
+ Thạch anh: tối đa là 48Mhz
+ External Clock: tối đa là 48Mhz
+ Internal Oscilator Block: có thể chọn từ 31Khz-8Mhz

Chú ý khi sử dụng modul USB:
+ Với modul USB chạy ở mode Full-speed, tần số cho modul USB phải là 48Mhz. Với các bộ PLL, tần số thạch anh của mạch phải là: 4,8,12,16,20,24,40,48Mhz
và lựa chọn các số chia của bộ PLL thích hợp.
+ Với modul USB chạy ở Low-speed thì tần số cho modul USB phải là 6Mhz. Tần số này lại ko lấy từ bộ PLL mà lấy từ tần số thạch anh và được chia 4. Vì vậy thạch anh bắt buộc phải sử dụng là 24Mhz.

falleaf
20-12-2006, 04:15 PM
Vậy cuối cùng F mới học PIC18, bạn đề nghị F ráp một cái mạch như thế nào để học? Câu hỏi 1 đó vẫn chưa trả lời thì F không thể nào học được!!

falleaf
20-12-2006, 04:23 PM
Ở đây, F nói với các bạn, F cũng không quá chuối, cho nên F có ở đây MPLAB, CCS C 4.018, có HT PICC 950, có C18... nói chung là có đủ các trình dịch cả.

Vậy nói về 4 đồng chí này:

Câu hỏi 7: Bạn nào có thể cho F được 4 đoạn config mẫu cho con 18F4550? Và trong mỗi đoạn config đó giải thích cho F biết các thông số đó có ý nghĩa gì? F mới học PIC, cho nên đầu tiên là phải cài đặt làm sao cho trình dịch hiểu, và F nạp được vào con PIC cái đã nhỉ.

Nói chung, giai đoạn này giống như F từng nói về PIC16 (nhớ là PIC18 bây giờ F mới học từ các bạn), là giai đoạn chuẩn bị các công cụ để học.

Có nghĩa là, mạch nạp F có rồi, F có một con PIC, F có chương trình nạp, F có chương trình dịch. Gần như là F thiếu một cái mạch chạy PIC, và một cái đoạn config đầu.

Nhưng vì đoạn config theo F quá dễ, cho nên câu hỏi này nâng lên một chút, F muốn hỏi cho 4 loại luôn: MPASM cho PIC18, config thế nào, CCS C config thế nào, HTPICC thế nào, và C18 thế nào?

Bạn nào trả lời 3 trong số 4 đồng chí cho F thì coi như oki, lưu ý là phải nhớ ít nhất có 1 đồng chí ASM, vì F rất khá về thằng ASM, chắc F sẽ hơi thiên vị cho nó hơn.

Chúc vui

tranhuyky
20-12-2006, 04:31 PM
Câu hỏi 6: Vì sao khi học 18F, thì F lại chọn 18F4550 để học?
Trong dòng pic18 thì 18F4550 có đủ tính năng, ngoài hổ trợ USB còn có bộ nhớ lớn lập trình lụi đã luôn, hihi. Tuy bộ nhớ chưa phải là lớn nhất nhưng giá cả hợp lý. Mời các bạn xem hình

littlephoc
20-12-2006, 06:45 PM
[url]
Đây không phải mạch nạp, nó là bootloader. Người mới học mà dính với cái này thì hơi phiền. Nếu như bạn có thể dịch tài liệu này ra, và cung cấp một bài chi tiết về vấn đề này trên picvietnam, bạn sẽ có ngay một con PIC4550.
Chúc vui

Tự nhiên giật mình nhìn lại, mới hiểu mình chưa hiểu khái niệm mạch nạp là gì. Vậy mong được giải thích thế nào là mạch nạp.
Mình sẽ túc tắc dịch bài này đóng góp cho mọi người. Với PIC18 thì dùng cổng usb để nạp bootloader thì tiện hơn, hợp thời trang hơn. Và nếu Falleaf có nhã gì sau đó tặng mình 1 con 18F4550 thì mình xin nhường lại cho bạn sinh viên nào ở việt nam đang cần. Hôm nay mình mới đặt mua 2 con 18F4550 và 1 bộ ICD 2 + PICDEM 2 plus để cùng học với Falleaf rồi.
Thân

falleaf
20-12-2006, 08:04 PM
Trong dòng pic18 thì 18F4550 có đủ tính năng, ngoài hổ trợ USB còn có bộ nhớ lớn lập trình lụi đã luôn, hihi. Tuy bộ nhớ chưa phải là lớn nhất nhưng giá cả hợp lý. Mời các bạn xem hình

Câu trả lời của bạn hơi muộn, F đã trả lời trên kia rồi. Lý do chủ yếu F chọn học 18F4550, bởi vì ngoài việc hỗ trợ USB như trong bài viết, về các dòng điều khiển động cơ thì picvietnam đã có một luồng rồi. Do vậy, F chú ý đến việc chọn một con sao cho: nó có khá nhiều tính năng để học cơ bản (dường như nó có hết các tính năng cơ bản để đi từ 16F877 lên), đồng thời, nó cũng đủ hấp dẫn với các bạn tham gia chương trình này, vì nó có USB. :)

Do vậy, thấy rõ mục đích chọn con 4550 của F là như vậy, để chính các bạn tự dạy mình bằng cách dạy F. Cách học tốt nhất là tìm hiểu thật chính xác các thông tin, và tìm cách truyền đạt tốt nhất.

Thầy ThS. Cao Hào Thi, Quản lý công nghiệp, BK HCM, một lần nói với lớp F mà F nhớ mãi: "Khi anh hiểu một vấn đề, anh có thể nói vấn đề đó trong một năm cũng được, nói trong 45 tiết cũng được, nói trong 1 tiết cũng được, nói trong 15 phút cũng được, và thậm chí nói bằng 3 câu anh cũng nói được về vấn đề đó. Đó là anh hiểu vấn đề!". Thầy nói trong giờ giảng về môn Thống kê. Bởi vì giờ của Pháp quy định dạy cho bọn F chỉ có 15 tiết (tương đương với 1 đơn vị học trình, vừa học thống kê, vừa học hồi quy, vừa học ra quyết định bằng phương pháp định lượng. Thầy từng dạy giáo trình này ở Mỹ, và vì vậy thầy tin tưởng vào bài giảng của mình, thầy muốn tạo lòng tin cho sinh viên rằng thầy có thể truyền đạt được cho sinh viên đủ về nội dung được yêu cầu, nếu các bạn cố gắng học. Kết quả, môn thầy dạy được lớp F rất thích, và đến bây giờ F vẫn dùng nó khá hiệu quả.

Đây chính là vấn đề của luồng này. Và mong rằng các bạn thực sự tập trung vì càng về sau F sẽ càng không biết gì, và khi không biết gì, có nghĩa là F hỏi các bạn càng khó trả lời, hoặc phải lôi hàng lô hàng lốc tài liệu ra để chỉ giảng cho F về một vấn đề cực kỳ ngắn nào đó (ngắn nhưng chưa chắc đơn giản). Chính các bạn tự làm thầy giáo của mình.

Lâu lâu F nhắc lại câu chuyện này trên diễn đàn, để khích lệ và động viên, nhất là những bạn hiện đang là sinh viên, các bạn hoàn toàn có thể làm được. Nghĩ khác, làm khác, thay vì đi học, thì chúng ta học bằng cách dạy. Nghiêm túc, hoàn toàn nghiêm túc.

Chúc vui

falleaf
20-12-2006, 08:07 PM
Tự nhiên giật mình nhìn lại, mới hiểu mình chưa hiểu khái niệm mạch nạp là gì. Vậy mong được giải thích thế nào là mạch nạp.
Mình sẽ túc tắc dịch bài này đóng góp cho mọi người. Với PIC18 thì dùng cổng usb để nạp bootloader thì tiện hơn, hợp thời trang hơn. Và nếu Falleaf có nhã gì sau đó tặng mình 1 con 18F4550 thì mình xin nhường lại cho bạn sinh viên nào ở việt nam đang cần. Hôm nay mình mới đặt mua 2 con 18F4550 và 1 bộ ICD 2 + PICDEM 2 plus để cùng học với Falleaf rồi.
Thân

Bạn chưa được nhường, vì bạn chưa dịch tài liệu này ra tiếng Việt :D, tài liệu này F biết từ lâu rồi, chỉ tặng bạn nếu bạn dịch ra tiếng Việt thôi, và điều đó cũng tương ứng với việc nếu bất kỳ bạn sinh viên nào dịch tài liệu của littlephoc gửi ra tiếng Việt thì cũng được tặng 1 con PIC, và tất nhiên là dịch hoàn chỉnh nhé :). Dịch cũng là một cách học rất tốt :).

Dear littlephoc, rất vui là có bạn cùng học.

Các bạn hướng dẫn nhớ chấm điểm và xếp hạng nhé, vì bây giờ lớp học có hai người rồi :)

Chúc vui.

ntc
21-12-2006, 11:44 AM
Chuẩn bị gửi mạch nạp và mấy con 18F4550 qua cho bang chủ học đây.

:D

falleaf
21-12-2006, 12:33 PM
Chuẩn bị gửi mạch nạp và mấy con 18F4550 qua cho bang chủ học đây.

:D

Khà khà, mạch chú gửi là để anh làm cái haptics, đã hứa là làm cái mạch do các bạn chỉ thì sẽ làm đúng như vậy chứ không có ý định chơi ăn gian. :)

Đã nói là làm, không có lỡ hẹn với các bạn đâu :)

Chúc vui

dandiennang
21-12-2006, 03:25 PM
18F4550 có nạp được bằng mạch Pic1 không bang chủ?
Em mới học PIC thấy bang chủ học nên em cũng học ké.Hehe

falleaf
21-12-2006, 03:31 PM
Báo cáo với các bạn là hôm nay F định làm cái mạch nạp cổng song song, nhưng mà sau đó cúi xuống coi cái máy tính, thì...

Hôm bữa bị cháy máy, bác thầy sắm cho con Duo core của Dell, nguyên một con máy bộ, từ đầu tới chân, kể cả đến bộ loa... chẳng làm gì được vì trong lab không mở loa ầm ỹ được :D.

Và một điều rất vui là vì mua máy bộ, cho nên một chuyện khá chuối xảy ra là, máy F ngoại trừ có 8 cổng USB ra, thì nó chẳng còn cái cổng song song hay COM nào khác!!

Vậy nên đành xin lỗi các bạn về cái mạch nạp mà F nói sẽ làm, vì có làm đi nữa cũng không thể dùng được!!! Phải nói là chuối một nải to đùng luôn...

Anyway, F sẽ sử dụng mạch GTP mà Chính sắp gửi sang cho F vậy.

Chúc vui

falleaf
21-12-2006, 03:36 PM
18F4550 có nạp được bằng mạch Pic1 không bang chủ?
Em mới học PIC thấy bang chủ học nên em cũng học ké.Hehe

Mạch nạp thì hoàn toàn không có gì khác nhau cả, nó chỉ đảm bảo vấn đề điện áp chuyển sang mode nạp, và đảm bảo tín hiệu truyền về mặt điện. Còn lại mọi thứ là do chương trình nạp quyết định.

Mạch PIC1 là mạch được làm lại từ mạch PG2C, PG2C được làm lại từ JDM, JDM được làm lại từ NOPPP. Phiên bản của NOPPP dùng trên Linux là SNOPPP (Son of NOPPP).

Bạn thử mở IC-PROG và WinPIC800 mới nhất lên thì bạn sẽ trả lời được câu hỏi này thôi.

Chúc vui

littlephoc
21-12-2006, 04:30 PM
Mạch nạp là cái chi chi vậy Falleaf? có phải là mạch để tải chương trình vào cho con chip nó chạy hay ko? Nếu vậy sao không dùng cổng usb?

phamthaihoa
21-12-2006, 05:50 PM
Dạy bang chủ học PIC18 mà cứ như dạy bang chủ làm PIC USB ấy :D, em không thấy cái hay của dòng 18 hơn so với 16 ở đâu cả.
Em cũng tò mò về con PIC18 này lắm, mà em mới chỉ biết PIC16 thui, cụ thể là con 877, em có một số câu hỏi muốn hỏi:

1.Câu đầu tiên là về phần dao động, iem thấy 18F4550 ngoài bộ dao động ngoài, còn có bộ dao động trong nữa, config nó thể nào đây ạ :confused:
Em thấy khi config USB PLL thì nó cứ nhân chia tần kiểu gì ấy ?, vì sao thạch anh cắm vào lại là 4,8,12,16,20,24,48 Mhz, không cắm được các loại như 10,18.432 hay 7,3728Mhz :o
Mà em nghe nói con này có thể chạy được ở 48Mhz :confused: , sao vậy nhỉ, với PIC16 thì khi cắm thạch anh 20Mhz thì nó chỉ chạy ở 5MIPS thui chứ, em nghe nói con này cắm thạch anh 4Mhz có thể chạy ở 12MIPS cơ :eek:
Bác nào giải thích cho em với ???

2. Câu hỏi này em hỏi về các chân IO, ở thằng 18F4550 này em thấy chân MCLR/Vpp còn có chân RE3 nữa, dùng nó thế nào nhỉ ???
Để điểu khiển các chân IO, em thầy ngoài thanh ghi PORTx, TRISx còn có thanh ghi LATx, tác dụng của nó là gỉ nhỉ ? mà tại sao PIC16 không có cái nì ???
Sau khi Reset thì trạng thái các chân ADC của 18F4550 thế nào nhỉ, có khác gì so với 877 không, mà em còn thấy chân RA4 của nó cũng khác 877, các bác giải thích dùm :D

3. Em hỏi về Timer, thằng này em thấy có 4 Timer, timer0 của nó khác với 877 ???
Cái Timer3 em còn thấy dùng làm gì nữa í ???

4. Em hỏi về CCP, ngoài đầy đủ tính năng CCP như 877, 4550 còn có ECCP, nó là gì nhỉ, có gì hay, em đọc thấy nó còn dùng để điều khiển động cơ nữa đó :D, haft bridge, full bridge ???
PROGRAMMABLE DEAD-BAND là gì nhỉ, ứng dụng nó làm gì ???
Ngoài ra em có thấy nó có tính năng Auto-Shutdown and Auto-Restart lạ nhỉ ???

5. Em hỏi về USB. Em nghe nói USB cũng là một chuẩn truyền dữ liệu dạng nối tiếp thế thì nó khác RS232 cơ bản ở điểm gì nhỉ ?
Chuẩn giao tiếp USB nói là nó hoạt động ở điện áp 3v3, em có thấy 3v3 ở chỗ nào của PIC đâu nhỉ ? còn chân Vusb dùng để làm gì ? Có thể nối 5V vào đây được không ?
Trong một số project em thấy có thể dùng 4550 làm USB1.1, thể thì phân biệt giữa USB2.0 và 1.1 như thế nào trên cơ sở phần cứng và phần mềm !
Trong các thanh ghi của 4550, không có thanh ghi nào nói jack USB có được nối vào PIC hay không, làm thể nào để phát hiện ra nhỉ ?
Em chỉ hỏi rất cơ bản thế thôi, còn hơi để em hỏi bác bien_van_khat, ngoc du, ntc :D

6. Về SPI, I2C em thấy nó khác giống với 877, nhưng I2C em thấy nó có chế độ Multi-Master ??? bác nào có thể nói qua cho em Multi-Master khác Master-Slave ở chỗ nào nhỉ ?
Tại sao I2C lại có chế độ 7 bit, 10bit ??? Làm sao để biết Master đang yêu cầu Slave truyền hay nhận dữ liệu ? Dữ liệu nhận được gần nhất là địa chỉ hay dữ liệu ? Giả sử em dùng chế độ 7bit, em gửi địa chỉ 0b11111111 hay 0b11111110 thì khác nhau gì nhỉ ? Em gửi thế vẫn là 7bit đó.

7. 4550 có bộ EUSART, nó hơn USART ở chỗ nào chỉ ? Các bác có thể giải thích cho em thế nào là truyền đồng bộ thế nào là truyền không đồng bộ ?
Thằng này còn có AUTO-BAUD RATE DETECT dùng nó sao nhỉ ?? :confused:

8. Em thấy bộ ADC của 4550 xịn hơn của 877, bác nào có thể giới thiệu một chút được không ?

9. Ngoài ra còn một số thắc mắc nhỏ như HLVD là zi ??? Watchdog của 4550 khác gì so với 877, theo các bác, con 4550 đang chạy với thạch anh bình thường nếu thạch anh bị hỏng, nó có chạy tiếp không nhỉ ???

Em ngu lâu khó đào tạo, hôm nay chỉ hỏi vậy, có gì mai em hỏi tiếp :D

Trả lời được câu hỏi của em chắc bang chủ cũng cho PIC chứ nhỉ :D

tda
21-12-2006, 06:57 PM
8. Em thấy bộ ADC của 4550 xịn hơn của 877, bác nào có thể giới thiệu một chút được không ?

xịn hơn à, mới thấy ADC của 4431 là xịn nhất trong 18FXXX thôi, bộ ADC của con này khác với truyền thống, ko biết ADC của 4550 có giống ko?

falleaf
21-12-2006, 08:09 PM
Này, chú làm thế làm sao anh học hả? Chú phải biết là anh mới tập tễnh học, chú hỏi thế thì anh hết sạch PIC vẫn chưa học được gì đâu đấy. hì hì..

Chúc vui

falleaf
21-12-2006, 10:23 PM
Đang quan tâm vấn đề làm cái mạch thí nghiệm, nên F giải thích câu đầu tiên của chú Hoà bằng hai hình sau.

Các bạn tham khảo datasheet 18F4550 trang 29 sẽ có hai hình này, và nó giải thích câu hỏi của PTH ở trên kia. Đây là câu thứ nhất, chú Hoà nợ anh 1/5 con PIC :).

Tạm thời các bạn đừng chú ý quá nhiều, các bạn mà hướng dẫn F kiểu đó thì đúng là bội thực. Chúng ta vừa quan tâm xong phần dao động. Bây giờ đến câu hỏi thứ hai mà PTH đặt ra F nghĩ rất là hay, và đó cũng là câu F đặt ra trên kia, mạch RESET.

Như đã trao đổi trước đây về PIC16, một mạch chạy PIC, đơn giản chỉ cần có nguồn, phần dao động (có hai loại nội, ngoại), và phần reset. Chỉ cần 3 phần này là một con PIC có thể chạy. Vậy bạn nào hướng dẫn F cái phần RESET cái nhỉ? F phải làm thế nào đây?


http://i32.photobucket.com/albums/d28/picvietnam/datasheet-p29-osc-picusb.jpg
http://i32.photobucket.com/albums/d28/picvietnam/datasheet-p30-osc-picusb.jpg

namqn
22-12-2006, 12:53 AM
Mạch nạp là cái chi chi vậy Falleaf? có phải là mạch để tải chương trình vào cho con chip nó chạy hay ko? Nếu vậy sao không dùng cổng usb?
Trước tiên, bạn nhìn thử xem ICD 2 của bạn dùng bao nhiêu dây để nối với board thử nghiệm (PICDEM 2 Plus chẳng hạn).

Để nạp chương trình vào một vi điều khiển PIC, cần tối thiểu 5 dây để cấp nguồn cũng như các tín hiệu. Nếu dùng USB thì cần phải có smart chip trên mạch nạp, là điều khá khó khăn và không mong muốn đối với những mạch nạp ra đời trước họ PIC18F4550 (dùng PIC16C765/PIC16C745 vẫn có khó khăn). Do đó, những mạch nạp như kiểu của David Tait (công bố năm 1996) thường dùng cách truy xuất trực tiếp cổng ngoại vi (với mạch của David Tait là cổng song song). Mọi logic thực hiện các giải thuật nạp chương trình được phần mềm trên PC đảm nhiệm => phần cứng đơn giản.

Thân,

littlephoc
22-12-2006, 05:10 AM
Hiện tại mình không dùng PICDEM bỏad nữa mà dùng mạch riêng trong việc nghiên cứu của mình. Để nạp chương trình cho chip, mình vẫn dùng ICD 2 nối với mạch :
Vpp(nguồn), Vss(mát), RB6,RB7(data), và 1 line clock. tổng cộng hết 5 dây.
Tất cả những chip xử lý truớc đây đều dùng cách nạp thông qua cổng ngoại vi là serial rs-232, hoặc cổng song song. Có lẽ do thời truớc USB interface chưa phổ biến.
Còn bây giờ, càng ngày càng hiếm máy tính dùng cổng seiral mà thay vào đó là cổng usb, và con chíp thì nó đã hỗ trợ giao tiếp usb. Mạch nạp thì đơn giản, chỉ cấp nguồn cho nó bằng nguồn của usb, dữ liệu nối vào cổng RC4,RC5
thế là xong, đâu có thêm chi tiết nào vào mạch để nó phức tạp đâu ???
Cái này là ý kiến của /me, ai thấy sai thì mong chỉ cho mình, như thế mình sẽ thấy đuợc cái dốt của mình ở chỗ nào mà sửa.

falleaf
22-12-2006, 01:28 PM
Hiện tại mình không dùng PICDEM bỏad nữa mà dùng mạch riêng trong việc nghiên cứu của mình. Để nạp chương trình cho chip, mình vẫn dùng ICD 2 nối với mạch :
Vpp(nguồn), Vss(mát), RB6,RB7(data), và 1 line clock. tổng cộng hết 5 dây.
Tất cả những chip xử lý truớc đây đều dùng cách nạp thông qua cổng ngoại vi là serial rs-232, hoặc cổng song song. Có lẽ do thời truớc USB interface chưa phổ biến.
Còn bây giờ, càng ngày càng hiếm máy tính dùng cổng seiral mà thay vào đó là cổng usb, và con chíp thì nó đã hỗ trợ giao tiếp usb. Mạch nạp thì đơn giản, chỉ cấp nguồn cho nó bằng nguồn của usb, dữ liệu nối vào cổng RC4,RC5
thế là xong, đâu có thêm chi tiết nào vào mạch để nó phức tạp đâu ???
Cái này là ý kiến của /me, ai thấy sai thì mong chỉ cho mình, như thế mình sẽ thấy đuợc cái dốt của mình ở chỗ nào mà sửa.

Bạn xem lại, nó là VPP = MCLR* (nâng lên mức điện âp cao, chuyển PIC vào chế độ nạp, đẩy lên khoảng 13V), VDD = VDD (nguồn 5V), VSS = GND, RB6, RB7 thực ra là PGD và PGC (không nhớ thứ tự), nó mới là data và clock.

Tuy nhiên, tránh làm loãng vấn đề về PIC18, bạn chuyển vấn đề thảo luận này sang luồng của về "Thông tin về mạch nạp và chương trình nạp" do anh Nam chủ trì, nằm trong box Programmer và Bootloader.

Chúc vui

RedRose
22-12-2006, 04:57 PM
Về thạch anh thì các bạn xem hình sau chắc sẽ hiểu ngay.
+Vì tần số vào bộ PLL2 là (4Mhz Input only), và bộ PLL1 có các số chia 1,2,3,4,5,6,10,12 nên tần số thạch anh phải là thế.
+Tần số của CPU có thể được lấy từ bộ PLL2 nên có thể hoạt động ở tốc độ cao với crystal thấp.

+ USB hoạt động ở 3,3V. Trong PIC đã có modul ổn áp rồi, khi sử dụng USB bạn phải cấu hình bật nó lên (USB Voltage Regulator). Chân Vusb là chân đầu ra của bộ ổn áp này, dùng để nối với điện trở ngoài nếu cần. Nối với điện trở ngoài để xác lập USB chạy ở tốc độ nào (low or full). Trong pic đã có điện trở này nên thường bạn ko cần nối với điện trở ngoài nữa. Thường chỉ cần nối với 1 tụ điện nhỏ. Dĩ nhiên không được nối 5V vào đó.

falleaf
23-12-2006, 10:26 AM
Vậy tóm lại các bạn có định cho F một cái mạch chạy tạm thời không nhỉ? Không có mạch thì cuối cùng F cũng chỉ là học chay thôi đó.

Phần dao động tạm thông qua, còn phần RESET nữa nhỉ?

Chúc vui

tda
23-12-2006, 12:14 PM
+ USB hoạt động ở 3,3V. Trong PIC đã có modul ổn áp rồi, khi sử dụng USB bạn phải cấu hình bật nó lên (USB Voltage Regulator). Chân Vusb là chân đầu ra của bộ ổn áp này, dùng để nối với điện trở ngoài nếu cần. Nối với điện trở ngoài để xác lập USB chạy ở tốc độ nào (low or full). Trong pic đã có điện trở này nên thường bạn ko cần nối với điện trở ngoài nữa. Thường chỉ cần nối với 1 tụ điện nhỏ. Dĩ nhiên không được nối 5V vào đó.

Vậy có dùng được chân này nối vào các con IC dùng nguồn 3.3 V ko? như 33dsPIC chẳng hạn.

Và nếu vậy 2 con PIC dùng nguồn khác nhau thì có giao tiếp trực tiếp thông qua các chân được ko nhỉ ? (như I2C - chân nối vào chân)?

thắc mắc

falleaf
23-12-2006, 12:50 PM
undefinedVậy có dùng được chân này nối vào các con IC dùng nguồn 3.3 V ko? như 33dsPIC chẳng hạn.

Và nếu vậy 2 con PIC dùng nguồn khác nhau thì có giao tiếp trực tiếp thông qua các chân được ko nhỉ ? (như I2C - chân nối vào chân)?

thắc mắc

Các bạn chuyển qua các phần khác thảo luận thêm về USB và I2C, CAN nhé.. Luồng này để làm phần cơ bản thôi. Please...

Lý do chính của luồng này các bạn cũng đã biết rồi. Nó không phải dành cho những thứ quá "cao siêu", F không thích cái gì xa quá cả. F chỉ đơn giản mỗi ngày dành ra 15 phút cho cái này, làm theo các bạn. Thực tế đang lắp cái mạch chạy trên test board, nói nghe hơi buồn cười nhưng mà bạn nào gửi cho F cái mạch chạy đi, không F lại lắp sai, cháy chip thì toi....

Chúc vui

falleaf
23-12-2006, 01:01 PM
Nhắc lại câu hỏi 5: Liệt kê các tính năng của PIC18F4550.

Chúc vui

falleaf
23-12-2006, 01:04 PM
Bang chủ ơi, em cũng đang muốn tự làm cái mạch để điều khiển robot qua USB, em cũng đang bắt đầu học VC++ thôi, mình cùng học nhé.
Em co mấy quyển ebook, làm sao mà gửi cho bang chủ được?

Bạn lên Tài liệu Việt Nam download cuốn USB Complete nhé.

Chúc vui

namqn
23-12-2006, 11:42 PM
+ USB hoạt động ở 3,3V. Trong PIC đã có modul ổn áp rồi, khi sử dụng USB bạn phải cấu hình bật nó lên (USB Voltage Regulator). Chân Vusb là chân đầu ra của bộ ổn áp này, dùng để nối với điện trở ngoài nếu cần. Nối với điện trở ngoài để xác lập USB chạy ở tốc độ nào (low or full). Trong pic đã có điện trở này nên thường bạn ko cần nối với điện trở ngoài nữa. Thường chỉ cần nối với 1 tụ điện nhỏ. Dĩ nhiên không được nối 5V vào đó.
Chú ý: xem hình 17-1, trang 163 của datasheet cho PIC18F4550 family (DS39632C), nếu có dùng điện trở pull-up bên ngoài thì người ta nối nó với nguồn ngoài 3.3V. Lý do chính để đưa chân VUSB ra vỏ chip là cần có một tụ (mà RedRose nói là tụ điện nhỏ).

RedRose nói tụ điện nhỏ thì bao nhiêu có thể coi là nhỏ, và bao nhiêu có thể coi là đủ? (câu này hỏi RedRose)

Một câu hỏi nữa là tại sao cần có tụ điện cho chân VUSB (mà Microchip nhắc nhở rất nhiều lần về việc dùng giá trị đúng cho nó)?

Hy vọng chú F cũng tính điểm cho phần trả lời của các câu hỏi này.

Thân,

falleaf
24-12-2006, 03:40 PM
Chú ý: xem hình 17-1, trang 163 của datasheet cho PIC18F4550 family (DS39632C), nếu có dùng điện trở pull-up bên ngoài thì người ta nối nó với nguồn ngoài 3.3V. Lý do chính để đưa chân VUSB ra vỏ chip là cần có một tụ (mà RedRose nói là tụ điện nhỏ).

RedRose nói tụ điện nhỏ thì bao nhiêu có thể coi là nhỏ, và bao nhiêu có thể coi là đủ? (câu này hỏi RedRose)

Một câu hỏi nữa là tại sao cần có tụ điện cho chân VUSB (mà Microchip nhắc nhở rất nhiều lần về việc dùng giá trị đúng cho nó)?

Hy vọng chú F cũng tính điểm cho phần trả lời của các câu hỏi này.

Thân,

Sure, miễn là có một điều để học về 18F4550, thì sẽ tính điểm trả lời.

Chúc vui

phamthaihoa
24-12-2006, 04:11 PM
RedRose nói tụ điện nhỏ thì bao nhiêu có thể coi là nhỏ, và bao nhiêu có thể coi là đủ? (câu này hỏi RedRose)

Một câu hỏi nữa là tại sao cần có tụ điện cho chân VUSB (mà Microchip nhắc nhở rất nhiều lần về việc dùng giá trị đúng cho nó)?



Câu hỏi khó nhất trong luồng này đây, trả lời hoàn chỉnh câu này anh F phải tính cho 2 nháy mới ổn :D

[edit lại]

Em mới xem lại cấu trúc của chân Vusb của PIC, nó mắc vào đầu ra của con internal 3v3 regulator, đầu ra này treo 2 chân D+,D- hai trở treo trong, có thế điều khiển qua 2 con fet kênh P.
Nếu mắc như vậy thì theo em con tụ đó chỉ có tác dụng ổn áp cho nguồn 3v3, em đã lấy mạch thay thử một vài giá trị tụ khác nhau, vẫn hoạt động bình thường.

http://i58.photobucket.com/albums/g271/phamthaihoa/2-2.jpg

Trong nhiều thiết kế cũng thấy các giá trị khác nhau, trong ICD2 trên EDA thì giá trị này cỡ 150nF,220nF. Nhưng trong SCH ví dụ của PIC Basic về Easy HID hay sixca.com thì giá trị này là 47uF,470uF.

http://www.mecanique.co.uk/products/usb/schematic-small.gif

Microchip cho vào chân này con 220nF+-20%, giá trị này theo Microchip là được tính sao cho đủ tích nạp cho tải đỉnh với sụt áp thấp nhất. Nhưng ngay sau đó Microchip thêm câu này "These parameters are characterized but not tested." quả là làm nản lòng chiến sĩ.

Ngoài ra, trong USB Spec còn nối đến tụ làm nhiệm vụ "Edge Rate Control" tại chân D+, D-
http://i58.photobucket.com/albums/g271/phamthaihoa/1-4.jpg
Việc dùng đúng giá trị tụ này khác nhau giữa LowSpeed và FullSpeed, ở đây ta quan tâm đến chuẩn FullSpeed, nên em chỉ nói cho nó.

Đối với chuẩn FullSpeed ta nối con tụ 50pF cho mỗi chân D+,D- . Giá trị này được tính để đảm bảo nạp cho chân D+,D- từ 0V đến Vih(min) trong khoảng 2.5uS.
Giá trị này còn phải phối hợp với dung kháng và trở kháng của dây D+,D-, với dung kháng đầu vào của host, hub, đảm bảo falltime và risetime của tín hiệu trong khoảng 4-->20ns.

Đối với LowSpeed thì lằng nhằng rắc rối hơn, nó phân biệt giữa downstream và upstream, nếu ai muốn tìm hiểu thì có thể đọc USB Spec, có nói khá chi tiết.

Ngoài ra còn một giá trị tụ khác, là tụ nối vào chân Vbus (1 trong bốn chân của dây USB, D+,D-, GND, Vbus), giá trị này phải đảm bảo sụt áp khi cắm, rút thiết bị, hay thay đổi thông số self power, không quá 350mV nếu kết nối với Hub, và 125mV nếu nối 2 thiết bị từ cổng A đến B(host-->device). Giá trị này không quá 10uF.

namqn: chú Hòa edit lại đi, đơn vị của tụ không đúng rồi!
tonamqn: Anh check lại xem đúng vậy không, em đọc chương 7: Electrical của USB Spec.

namqn
24-12-2006, 11:54 PM
Chú Hòa trả lời tốt câu hỏi về tụ VUSB.

Chuyện dùng tụ để điều chỉnh độ dốc của cạnh sóng thì đúng là USB Spec. có đề cập, nhưng với họ PIC18F4550 của Microchip thì chúng nó đã gộp Rs vào cái driver rồi (xem bảng 28-4, datasheet của họ PIC18F4550), do đó chưa từng thấy có thiết kế nào lại nối tụ cỡ vài mươi pF vào D+ và D- của họ PIC18F4550.

Khi xét đến ngoại vi USB, chúng ta chỉ nói đến upstream, nên chỉ cần quan tâm đến các yêu cầu đối với upstream.

Chú Hòa nên ưu tiên cho học viên, đừng đặt nhiều câu hỏi quá nhé!

Thân,

RedRose
25-12-2006, 09:13 AM
Về tụ USB trong datasheet thì Microchip cũng chỉ ghi:
"An external 220 nF (±20%) capacitor is required for stability"
nên em cũng chỉ nghĩ giống bạn Hòa.

Thực tế giá trị 220nF cũng ko phải là chuẩn. Bản thân mạch PICDEM FS USB của Microchip cũng sử dụng tụ 470nF. Em cho rằng sử dụng các giá trị trong khoảng này là ổn. Chắc ko đến đơn vị uF.

Chân Vusb này có thể lắp điện trở ngoài như hình 17-3 trang 167 datasheet.

Cũng như Hòa đã nói, chân Vbus cũng cần 1 tụ điện có trị số trong khoảng 1uF-10uF.

falleaf
25-12-2006, 12:11 PM
Các đồng chí thiết kế mạch quá cao siêu, tóm lại, con PIC18F4550 hỗ trợ những tính năng gì?

Câu hỏi đặt ra này có vẻ hơi ngớ ngẩn, nhưng đừng cho rằng nó quá ngớ ngẩn, bởi vì hãy nhìn một người mới học, khi đọc luồng này, họ đang bị dội vì những cái có thể nói là chả hiểu gì vả chả có gì để mà hiểu?

Làm việc luôn có một mục đích, một đối tượng cụ thể, các đồng chí đi quá xa vấn đề, và dường như các đồng chí đang làm cho những người muốn thực hành từng bước bị dội thì phải?

Nếu làm vậy, thì nói thực là picvietnam không thể mạnh được đâu. picvietnam mạnh được là nhờ rất nhiều người cùng học cùng nghiên cứu, chứ picvietnam không thể mạnh nhờ những mod giỏi.

Đúng như anh Nam nhắc nhở, việc thảo luận USB tạm thời chấm dứt ở đây, chúng ta sẽ nói lại vấn đề USB ở phần cuối của 4550.

Oki, trong lúc nói về USB, PTH đã gửi cho chúng ta một cái sơ đồ nguyên lý. F sẽ sử dụng sơ đồ nguyên lý này để lắp mạch chạy

Các bạn làm theo mạch này chú ý, F sẽ không lắp phần USB, và các bạn cũng khoan lắp phần USB. Chúng ta trước tiên đơn giản nói về I/O, I/O và tập lệnh là cái mà chúng ta đang cần quan tâm ở đây.

http://www.picvietnam.com/download/taplenh.pdf

Chắc các bạn còn nhớ bản tập lệnh này. Nó cần cho người đọc thế nào, thì F cũng rất muốn soạn lại phần tập lệnh này cho người học 18F. Vậy bạn nào soạn lại tài liệu này theo chuẩn form của picvietnam, F xin gửi tặng ngay các bạn 5 con PIC18F4550.

Nếu chịu khó ngồi làm việc, các bạn làm việc 1 ngày liên tục để soạn lại, các bạn dường như được trả lương với một cái giá 80K x 5 = 400K cho một ngày làm việc, và các bạn đem lại một lợi ích là 30 phút (đọc, chưa chắc hiểu tập lệnh) x 100 người/ngày = 3000 phút/ngày. = 50 giờ /ngày.

Lương kỹ sư 3 triệu/tháng (là thấp lắm rồi) = 100K/ngày = 15K/giờ (cực thấp).

Vậy với việc làm này các bạn giúp cho xã hội một ngày 15K x 50 = 750K/ngày.

Các bạn bỏ ra 1 ngày làm việc, và các bạn nhận được mức lương 400K/ngày, công việc của các bạn đem lại lợi ích 750K/ngày cho xã hội. Chừng nào picvietnam còn tồn tại, chừng đó lợi ích này vẫn còn.

Mỗi năm picvietnam tồn tại, công việc của các bạn đem lại cho xã hội 750K x 300 ngày = 225000K/năm. Cụ thể là 225 triệu VND/năm.

Các bạn không tin vào các con số mà F tính toán? Các bạn thử soạn bộ tập lệnh đi rồi các bạn sẽ biết hiệu quả của nó.

Riêng picvietnam chỉ ngồi nói dóc 1 năm, kéo được công ty sản xuất vi điều khiển 8bit vào VN, thì đó không phải là nói dóc nữa. Và chúng ta sẽ xem thử VN có lợi được bao nhiêu trong vụ này?

Vậy nên, F trả lương 5 con PIC cho người nào soạn lại bộ tập lệnh này có ý nghĩa của nó chứ nhỉ? Cái giá bèo là tại vì F không có tiền :D. Hoàn toàn nghiêm túc nhé.

Chúc vui

phamthaihoa
25-12-2006, 02:03 PM
Thế thôi, em đóng góp cho luồng này của anh F vậy :D

Trả lời câu 5: Việc muốn biết tính năng của bất cứ tính năng nào của con PIC thì nơi tốt nhất phải là datasheet của nó, tất cả những điều hay của con PIC đều được Microchip giới thiệu ở trang thứ 3 của Datasheet.
Mục lục của Datasheet đó cũng gần như là giới thiệu tính năng của con PIC đó.

Ở đống câu hỏi dài ngoằng của em ở trên, có nói về hầu hết các tính năng mới của 18F4550, em hỏi cho vui thôi, bạn nào muốn trả lời những câu hỏi đó tớ sẵn sàng giúp.

falleaf
25-12-2006, 04:31 PM
Oki, thế giờ F về lắp cái mạch 4MHz rồi nhờ các bạn chỉ cho cách config nhé.

Chúc vui

phamthaihoa
26-12-2006, 09:53 PM
Cái này em viết từ trước, dùng HTPICC18

__CONFIG(1,HSPLL & USBPLL & PLLDIV5 & CPUDIV1 & FCMDIS & IESODIS);
// Thạch anh HighSpeed với PLL, USB với PLL, PLLDIV5 dùng cho thạch anh 20Mhz
// chia 5 để được 4MHz, nếu dùng thạch anh 48Mhz thì config là PLLDIV12, tần
// số này sẽ được dùng để tạo tần số làm việc cho USB.
// CPUDIV1 tức là không chia, dùng tốc độ của thạch anh ngoài cho PIC.
// FCMDIS: disabled chế độ fail-safe clock monitor
// IESODIS: disabled chế độ Internal/External Oscillator Switchover

__CONFIG(2,VREGEN & PWRTDIS & BOREN & BORV20 & WDTDIS & WDTPS32K);
//VREGEN: USB Internal Voltage Regulator Enable
//PWRTDIS: Power-up Timer disabled
//BOREN: Brown-out Reset enabled
//BORV20: Brown-out Reset Voltage
//WDTDIS: Watchdog disabled
//WDTPS32K: Watchdog Timer Postscaler là 32768

__CONFIG(3,CCP2RC1 & PBADDIS & LPT1DIS & MCLREN);
//CCP2RC1: CCP2 input/output is multiplexed with RC1
//PBADDIS: Cổng RB<4:0> được config là digital I/O mỗi lần Reset
//LPT1DIS: Timer chạy cần năng lượng cao
//MCLREN: Master Clear được bật, vô hiệu hóa RE3

__CONFIG(4,STVREN & LVPDIS & XINSTDIS & DEBUGDIS);
//STVREN: Stack Full/Underflow Reset enabled
//LVPDIS: Low Voltage Programming Dis
//XINSTDIS: Extended Instruction Set disabled
//DEGUGDIS: disables chế độ DEBUG

__CONFIG(5,UNPROTECT);
__CONFIG(6,UNPROTECT);
__CONFIG(7,UNPROTECT);

falleaf
27-12-2006, 11:28 PM
Thế có đồng chí nào config cho F bằng ASM và bằng CCS C không nhỉ, hoặc C18.

Lý do, với các đồng chí 18F trở xuống, F quen dùng ASM, nên thân thuộc với CCS C. Còn với các đồng chí dsPIC thì chúng ta có C30 rồi, xài vi vu.

Một ghi chú nhỏ, bảng config bằng ASM được trình bày ở tài liệu [2] PIC18C Manual Section 29.

Ở bảng 29-1, có nói về phần dao động. Có bạn nào trình bày cho F hiểu phần dao động này và khi config cho thạch anh 4MHz thì dùng như thế nào không?

Câu hỏi 8: Nếu dùng thạch anh 4MHz, thì có mấy cách lựa chọn? Lý do, F đã nói F chọn thạch anh 4MHz để dùng rồi.

Câu hỏi 9: F thấy cái OSC Switch nó hơi lạ so với đồng chí 16F, bạn nào giải thích cho F cái này với?

Câu hỏi 10: Tạm thời F chưa dùng cái gì hết, cho nên một số tính năng CCP, WDT.. F không quan tâm, nhưng đọc vào thấy cái liên quan đến Processor thì quan tâm. Đó là cái Processor Mode, bạn nào giải thích cho F biết cái này để làm cái gì vậy?

Câu hỏi 11: Hàng loạt các giá trị config phía dưới, liên quan tới các bus, vậy câu hỏi:

11a) Tại sao phải có phần config mấy cái quỷ nhỏ này?
11b) Giải thích các giá trị config này

Chú ý, chỉ giải thích vừa đủ hiểu, không giải thích quá chi tiết thì nó sẽ đụng chạm lung tung, lằng nhằng. Vì F mới học, cho nên F chỉ quan tâm đơn giản vừa đủ hiểu thôi.

Chúc vui

phamthaihoa
28-12-2006, 03:37 AM
Thế có đồng chí nào config cho F bằng ASM và bằng CCS C không nhỉ, hoặc C18.



CCS C:

#include <18F4550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CP UDIV1,VREGEN

Cái này cho thạch anh 12Mhz, tùy giá trị PLLx mà các bác sửa, cái nì chạy ở 48Mhz, CPUDIV1

ASM:

__CONFIG _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
__CONFIG _CONFIG1H, _FOSC_HSPLL_HS_1H
__CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
__CONFIG _CONFIG3H, _PBADEN_OFF_3H
__CONFIG _CONFIG4L, _LVP_OFF_4L & _ICPRT_OFF_4L & _XINST_OFF_4L

Thạch anh 20Mhz

hoặc chơi kiểu nì:

;__CONFIG _CONFIG1L, _PLLDIV_1_1L & _CPUDIV_OSC3_PLL4_1L & _USBDIV_2_1L
;__CONFIG _CONFIG1H, _FOSC_XTPLL_XT_1H & _FCMEM_OFF_1H & _IESO_OFF_1H
;__CONFIG _CONFIG2L, _PWRT_OFF_2L & _BOR_ON_2L & _BORV_21_2L & _VREGEN_ON_2L
;__CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_32768_2H
;__CONFIG _CONFIG3H, _MCLRE_ON_3H & _LPT1OSC_OFF_3H & _PBADEN_OFF_3H & _CCP2MX_ON_3H
;__CONFIG _CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _ICPRT_OFF_4L & _XINST_OFF_4L & _DEBUG_OFF_4L
;__CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
;__CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
;__CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
;__CONFIG _CONFIG6H, _WRTB_OFF_6H & _WRTC_OFF_6H & _WRTD_OFF_6H
;__CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
;__CONFIG _CONFIG7H, _EBTRB_OFF_7H

config PLLDIV = 1
config CPUDIV = OSC3_PLL4
config USBDIV = 2
config FOSC = XTPLL_XT
config FCMEM = OFF
config IESO = OFF
config PWRT = OFF
config BOR = ON
config BORV = 21
config VREGEN = ON
config WDT = OFF
config WDTPS = 32768
config MCLRE = ON
config LPT1OSC = OFF
config PBADEN = OFF
config CCP2MX = ON
config STVREN = ON
config LVP = OFF
config ICPRT = OFF
config XINST = OFF
config DEBUG = OFF
config CP0 = OFF
config CP1 = OFF
config CP2 = OFF
config CP3 = OFF
config CPB = OFF
config CPD = OFF
config WRT0 = OFF
config WRT1 = OFF
config WRT2 = OFF
config WRT3 = OFF
config WRTB = OFF
config WRTC = OFF
config WRTD = OFF
config EBTR0 = OFF
config EBTR1 = OFF
config EBTR2 = OFF
config EBTR3 = OFF
config EBTRB = OFF
Ý nghĩa thì các bác tự tra datasheet :D

C18

#include <p18f4550.h>

#pragma config PLLDIV = 1
#pragma config CPUDIV = OSC3_PLL4
#pragma config USBDIV = 2
#pragma config FOSC = XTPLL_XT
#pragma config FCMEM = OFF
#pragma config IESO = OFF
#pragma config PWRT = OFF
#pragma config BOR = ON
#pragma config BORV = 21
#pragma config VREGEN = ON
#pragma config WDT = OFF
#pragma config WDTPS = 32768
#pragma config MCLRE = ON
#pragma config LPT1OSC = OFF
#pragma config PBADEN = OFF
#pragma config CCP2MX = ON
#pragma config STVREN = ON
#pragma config LVP = OFF
#pragma config ICPRT = OFF
#pragma config XINST = OFF
#pragma config DEBUG = OFF
#pragma config CP0 = OFF
#pragma config CP1 = OFF
#pragma config CP2 = OFF
#pragma config CP3 = OFF
#pragma config CPB = OFF
#pragma config CPD = OFF
#pragma config WRT0 = OFF
#pragma config WRT1 = OFF
#pragma config WRT2 = OFF
#pragma config WRT3 = OFF
#pragma config WRTB = OFF
#pragma config WRTC = OFF
#pragma config WRTD = OFF
#pragma config EBTR0 = OFF
#pragma config EBTR1 = OFF
#pragma config EBTR2 = OFF
#pragma config EBTR3 = OFF
#pragma config EBTRB = OFF

Có cần PicBasic mà MikroC không anh F nhẩy :D

phamthaihoa
28-12-2006, 03:41 AM
Câu hỏi 8: Nếu dùng thạch anh 4MHz, thì có mấy cách lựa chọn? Lý do, F đã nói F chọn thạch anh 4MHz để dùng rồi.



Nếu dùng thạch anh 4Mhz thì theo em có kiểu sau:

- Dùng bộ dao động nội 8Mhz của PIC, quên thằng 4Mhz đi :D
- Config thạch anh 4Mhz là XT hay HS không dùng USBPLL
- Dùng USBPLL đầu vào thạch anh không chia (do đã là 4Mhz) tần số có thể dùng 96Mhz PLL div 2,3,4,6.

phamthaihoa
28-12-2006, 03:50 AM
Câu hỏi 9: F thấy cái OSC Switch nó hơi lạ so với đồng chí 16F, bạn nào giải thích cho F cái này với?



Em chưa tìm thấy cấu trúc của các OSC Switch của PIC16 nên nhớ nào nói vậy, tìm thấy bổ sung sau.

Với PIC18 thì bắt đầu xuất hiện PLL, với 18F4550 thì ta có thể có các tùy chọn sau với OSC:

- Dùng Primary Oscillator, tức là có thể config như PIC16, nhưng cũng có thể dùng PLL
- Dùng Secondary Oscillator, đầu vào bộ dao động lấy từ chân T1OSO, T1OSI
- Dùng Internal Oscillator 8Mhz.
- Ngoài ra 18F4550 còn có chế độ fail-safe clock monitor, Internal/External Oscillator Switchover, quản lý clock, khi clock ngoài không hoạt động thì dùng clock trong.

--> tất nhiên OSC Switch sẽ khác.

Với PIC16 thì không nhớ con nào có PLL, còn có bộ dao động nội thì hình như chỉ có ở bọn 10F,12F thì phải :D

phamthaihoa
28-12-2006, 04:08 AM
Câu hỏi 10: Tạm thời F chưa dùng cái gì hết, cho nên một số tính năng CCP, WDT.. F không quan tâm, nhưng đọc vào thấy cái liên quan đến Processor thì quan tâm. Đó là cái Processor Mode, bạn nào giải thích cho F biết cái này để làm cái gì vậy?



PM1:PM0: Processor Mode Select bits
These bits select the processor operating mode for the device. The processor operating mode specifies how the program memory is mapped (internal/external) and the default configuration of the system bus pins.
11 = Microprocessor mode
10 = Microcontroller mode
01 = Reserved
00 = Extended microcontroller mode

Processor Mode chỉ ra chế độ hoạt động là vi xử lý hay vi điều khiển, hiểu đơn giản nhất là quay lại định nghĩa vi điều khiển và vi xử lý.

Vi xử lý chỉ bao gồm bộ xử lý trung tâm, cái mà loằng ngoằng bao gồm ALU, khối tính toán số học... và không bao gồm ngoại vi.
Vi điều khiển = Vi xử lý + Ngoại vi: cái đề cập chính ở đây là bộ nhớ chương trình, vi điều khiển có, còn vi xử lý thì không.

Hai chế độ này khác nhau ở cách thức định địa chỉ (mapped) và cách thức truy xuất bộ nhớ.

Với chế độ vi xử lý thì ta phải truy xuất bộ nhớ ngoài, liên quan trực tiếp đến việc truy xuất qua bus, ngoài ra còn liên quan đến chế độ định địa chỉ bộ nhớ, các hoạt động như Table Reads, Writes...
Muốn truy cập được bộ nhớ ngoài thì phải config là Microprocessor mode hoặc Extended microcontroller mode.

8051 có tính năng gần như vậy ở chân EA\ (External Access), nếu là mức cao thì dùng bộ nhớ trong(giống như chế độ controller), mức thấp thì truy xuất bộ nhớ ngoài (giống như chế độ processor).

phamthaihoa
28-12-2006, 04:14 AM
Câu hỏi 11: Hàng loạt các giá trị config phía dưới, liên quan tới các bus, vậy câu hỏi:

11a) Tại sao phải có phần config mấy cái quỷ nhỏ này?
11b) Giải thích các giá trị config này



Mạng ở Vn đang điên điên, không vô trang Microchip mà lấy tài liệu về System Bus được, hôm sau trả lời nốt.

Em vừa cho mấy thằng bạn mấy chú 877A, giờ nhà còn ít PIC, lại có cơ hội ngon, bổ, rẻ thế này, em kiếm mấy con về dùng, các bác thông cảm :D

Anh F còn câu hỏi gì thì post nhanh lên ạ :D

falleaf
28-12-2006, 12:22 PM
Mạng ở Vn đang điên điên, không vô trang Microchip mà lấy tài liệu về System Bus được, hôm sau trả lời nốt.

Em vừa cho mấy thằng bạn mấy chú 877A, giờ nhà còn ít PIC, lại có cơ hội ngon, bổ, rẻ thế này, em kiếm mấy con về dùng, các bác thông cảm :D

Anh F còn câu hỏi gì thì post nhanh lên ạ :D

"Tiên sư chú", chú cần PIC thì chú gọi về cho thằng Chính nó gửi ra, cần gì phải trả lời ka ka... chú trả lời thế anh em không kịp học, mất hết ý nghĩa của việc tạo luồng của anh.

Uhm, mạng ở VN bị động đất ở Đài Loan, nên chập chờn, mọi người cứ thoải mái nhé. Chú PTH không cho trả lời nữa, đứng một bên để cho anh học. Anh mà cần làm gì anh đâu có làm nữa, giao cho chú với Chính làm hết rồi kaka...

Ờ, chuẩn bị gửi anh Phước ra HN, có lẽ sau đó sẽ gửi Chính ra (sau khi anh Phước về). Bây giờ anh gọi về VN không được nữa, cho nên anh nhắn lên đây. Khoảng tầm sau tết thì chú coi đứa nào còn chỗ ở, nhắn anh một tiếng, để anh còn sắp xếp cho anh Phước.

Thế nhé.

falleaf
28-12-2006, 12:34 PM
Processor Mode chỉ ra chế độ hoạt động là vi xử lý hay vi điều khiển, hiểu đơn giản nhất là quay lại định nghĩa vi điều khiển và vi xử lý.

Vi xử lý chỉ bao gồm bộ xử lý trung tâm, cái mà loằng ngoằng bao gồm ALU, khối tính toán số học... và không bao gồm ngoại vi.
Vi điều khiển = Vi xử lý + Ngoại vi: cái đề cập chính ở đây là bộ nhớ chương trình, vi điều khiển có, còn vi xử lý thì không.

Hai chế độ này khác nhau ở cách thức định địa chỉ (mapped) và cách thức truy xuất bộ nhớ.

Với chế độ vi xử lý thì ta phải truy xuất bộ nhớ ngoài, liên quan trực tiếp đến việc truy xuất qua bus, ngoài ra còn liên quan đến chế độ định địa chỉ bộ nhớ, các hoạt động như Table Reads, Writes...
Muốn truy cập được bộ nhớ ngoài thì phải config là Microprocessor mode hoặc Extended microcontroller mode.

8051 có tính năng gần như vậy ở chân EA\ (External Access), nếu là mức cao thì dùng bộ nhớ trong(giống như chế độ controller), mức thấp thì truy xuất bộ nhớ ngoài (giống như chế độ processor).

Thấy chú nói hăng say quá, câu này anh hỏi riêng, sẵn tiện trình bày cho mọi người luôn. Nghe chú nói nào là bộ nhớ trong, nào là bộ nhớ ngoài, CPU, Vi xử lý, vi điều khiển... anh hơi bối rối. Nhưng anh đi mua con CPU gắn vào máy tính, thì đơn giản nó là con vi xử lý rồi. Vậy thì anh thường đọc thấy cái thông số của nó có phần Cache 2M, 4M... vậy thì cái cache đó là cái gì? Hoạt động của nó ra sao?

Câu hỏi này ngoài luồng, vì chú Hòa đang ngâm cứu ARM, ngoài ra, cũng muốn giúp các bạn làm rõ nghĩa một số khái niệm về bộ nhớ ở phần này, vì lên tới dòng 18F và dòng dsPIC, một số vấn đề về bộ nhớ nó sẽ gây rắc rối cho các bạn.

Đặc biệt, làm việc với 18F, giúp các bạn một bước chuẩn bị tốt để tiến tới sử dụng dsPIC hiệu quả hơn, và từ dsPIC, các bạn tiến tới sử dụng các loại DSP khác không có gì khó khăn, cũng giống như khi học PIC16 và sử dụng các vi điều khiển khác vậy.

À, vụ ARM, cuối tháng 1, bạn anh về VN, anh gửi cho chú bộ kit đầy đủ ARM, có thể thực hành và dùng JTAG qua USB ảo của nó. Có đầy đủ CD và kit, cable... Có gì anh sẽ trao đổi thêm với anh BA về định hướng phát triển của phòng. Thực sự chủ trương của anh không muốn phát triển ARM, lý do anh sẽ trao đổi sau. Nhưng anh vẫn chủ trương phát triển TI ở Việt Nam, mặc dù thị phần của ARM mạnh hơn TI trên thế giới. Oki, việc này không bàn xa ở đây.

Thế nhé.

ntc
28-12-2006, 12:45 PM
Thế chú Hòa cần con chip gì. :D

Có trả lời thì từ từ thôi. Theo cho kịp chú cũng đuối.

Bữa giờ cũng viết firmware cho con này, nhưng cứ lấy C18 mà phang đùng đùng, lấy cái Application Maestro ra mà dộng ầm ầm. Kết quả là ... mất căn bản trầm trọng. :(.

Chịu khó đứng ở ngoài, lắng nghe và thấu hiểu.

Thư giãn chút xíu đi.

http://nhacso.net/Music/Song/Rock-Viet/2005/10/05F5F011/

:D

phamthaihoa
28-12-2006, 11:17 PM
Thế thui, em không trả lời nữa, có thì bổ xung thôi :D

Anh F với anh Chính có con PIC nào không dùng nữa, đểu đểu thui, em xin vài con, đem cho mấy thằng bạn cho nó đốt, chứ PIC thì em thiếu gì nhưng toàn dsPIC, đem cho em hơi tiếc :D

Anh F nói đến con vi xử lý có nói đến bộ nhớ đệm cache L1,L2,L3 của nó, mà cỡ 6M em mới chỉ biết có con Itanium 2 của Intel mới lớn đến như vậy.
Bộ nhớ này được dùng làm nháp và nạp trước lệnh vào vi xử lý, thông thường, tốc độ tính toán của vi xử lý dùng cho máy tính cá nhân như con PIV hay Athlon nhanh hơn tốc độ nạp lệnh vào bộ xử lý, nên để hạn chế hiện tượng này, mã lệnh của chương trình được nạp vào bộ nhớ đệm nằm trên chip, nên bộ nhớ đệm càng lớn thì càng tránh được hiện tượng thắt cổ chai. Bác nào đã dùng em Celeron với cache 128K thì thấy khác hẳn với PIV 512K cache, mặc dù cùng tốc độ xung nhịp, rõ nhất là khi dùng nhiều chương trình cùng lúc.
Ngoài ra, tận dụng các bộ nhớ đệm này, Intel và AMD còn có công nghệ dự đoán lệnh tiếp theo và tối ưu thứ tự tính toán, còn tốc độ giao tiếp với CPU thì bộ nhớ này có tốc độ cao nhất, em nhớ không nhầm là 6.4GB.
Nhưng trong sách vở không thấy nói thằng này thuộc bộ nhớ trong hay bộ nhớ ngoài.
Bộ nhớ trong: RAM, ROM
Bộ nhớ ngoài: Đĩa cứng, đĩa quang, băng từ...
Chứ thằng này em chưa thấy nó vô chỗ nào :D

Em cám ơn anh F trước về cái KIT ARM nhá :)
Em đi theo hướng ARM để dùng nó làm con trung tâm điều khiển hệ thống, mà chủ yếu nhằm vào RTOS, lợi dụng khả năng quản lý tác vụ của hệ điều hành để quản lý hệ thống lớn, chứ cứ ngồi mà lập trình không có quản lý thì cỡ trên vài ngàn dòng lệnh thì nếu sai thì không biết đằng nào mà lần, nếu có nó quản lý thì sai module nào ta sửa module đó. Chứ em không đi sâu quá nhiều vào ARM. Hướng chính của em sẽ tập trung vào DSC để điều khiển, em đang xem qua họ HCS12, DSP56800 của FreeScale, bọn này thực sự mạnh, nhưng nếu anh định dùng đồ TI thì em xoay sang TMS320 cũng OK.

Còn nhà cửa thì anh alo cho anh BA, cả Phương, anh Đoàn, Hùng đều đang ở trọ, thiếu gì nhà :D

falleaf
29-12-2006, 12:00 AM
Oki, vụ nhà cửa oki.

Chuyển hướng qua TMS320 đi thôi, ARM làm thì được, nhưng chỉ đi làm thuê thôi, vì mình không sản xuất được chip. Bọn nó sản xuất chip dùng core ARM đã tính toán để dùng cho một số loại ứng dụng nào đó rồi. Để ý, thằng nào cũng có con ARM. Riêng thằng TI, sau khi phát triển dòng ARM thì nó cho lên dĩa luôn.

Mà thôi, bàn chuyện này xa quá. Em đọc thêm nhiều về phần xử lý cache, vì phần đó dù DSP nào thì cũng cần. Mấy con ARM chắc chắn có.

Còn về phần mấy con Intel hay AMD thì anh nói là đi mua chip, để nói thí dụ thôi, chứ cache thì giá rất cao, cho nên không thể làm dung lượng lớn trong mấy con DSP được (hy vọng sau này càng ngày càng tăng).

Oki, tạm dừng ở đó.

Bây giờ phần config coi như đã làm xong. F cũng vừa hàn xong cái mạch, gọi là chạy được. Lưu ý, F vẫn dùng thạch anh 4MHz dao động ngoài.

Oki, các bạn thích dùng thạch anh khác cũng được, nhưng các phần bài toán tính toán các bạn nhớ xem xét lại cho đúng.

Oki, bây giờ chúng ta dùng CCS C bản 4.018 được cung cấp trên tailieuvietnam nhé. Và song song đó, chúng ta dùng ASM để phân tích vấn đề.

Lý do, dùng CCS C, nó gần ASM, và F hiện giờ không có thời gian để đọc code nữa. Khi cần, chúng ta sẽ dùng ASM để phân tích vấn đề.

Chúc vui.

ntc
29-12-2006, 04:04 PM
Thế chú Hòa có cần chip của TI không?

:D

Gửi vài con ra cho chú nhé.

falleaf
01-01-2007, 02:35 PM
Sau khi config xong, bây giờ F đang muốn làm một chương trình nhỏ, xuất ra port B, cho đèn nhấp nháy từ B0 đến B7. B0 sáng, rồi tắt, rồi B1 sáng, rồi tắt... cứ như vậy... lặp lại.

Xin cho F một quả ASM và một quả CCS C nhé, để F thực hành. Nhớ cho chương trình đầy đủ và có phân tích cụ thể.

Thanks các bạn.

Chúc vui.

falleaf
01-01-2007, 08:51 PM
http://i32.photobucket.com/albums/d28/picvietnam/hocpic1.jpg

Làm xong mạch nghiêm túc, bây giờ chờ có chương trình để nạp vào thử.

À, tất nhiên là chờ cả cái mạch nạp Chính gửi sang.

Chúc vui

PS> Mà này, F nghiêm chỉnh học hành, các bạn cũng nghiêm chỉnh hướng dẫn nhé. Ngoại trừ các MOD của picvietnam, dientuvietnam, F không cho tham gia (Chính, Bắc, Hoà,...) còn lại tất cả các bạn đều có thể tham gia. Đây là một cơ hội để học, và để thử nghiệm từng chút một, rất đơn giản, và hiệu quả.

Đừng ngồi chờ người khác bày sẵn cho mình, các bạn có thể vào cuộc ngay.

Chúc vui

chungthanhcong
24-02-2007, 11:18 PM
Chào mọi người,
Mình đang làm về mạch usb với con 18F4550.
Mình muốn chạy các vd về usb của compiler CCS, như vd: ex_usb_hid.c trong thư mục PICC\Examples. Mình đã ráp thử mạch và nạp chương trình này cho PIC nhưng không giao tiếp được với PC.
Bạn nào biết chỉ mình với.
Xin cảm ơn.

namqn
24-02-2007, 11:23 PM
Chào mọi người,
Mình đang làm về mạch usb với con 18F4550.
Mình muốn chạy các vd về usb của compiler CCS, như vd: ex_usb_hid.c trong thư mục PICC\Examples. Mình đã ráp thử mạch và nạp chương trình này cho PIC nhưng không giao tiếp được với PC.
Bạn nào biết chỉ mình với.
Xin cảm ơn.
Bạn nên post mạch mà bạn đã dùng thì mới tiện cho người hướng dẫn.

Thân,

chungthanhcong
25-02-2007, 10:20 AM
Bạn nên post mạch mà bạn đã dùng thì mới tiện cho người hướng dẫn.

Thân,
Mình đã lắp mạch theo sơ đồ này, khi nạp chương trình ex_usb_hid trong phần example của CCS thì chạy không được, không biết do phần mềm hay phần cứng nữa. Mong các bạn giúp mình với.

namqn
25-02-2007, 07:43 PM
Mạch này chắc không phải của CCS rồi, bạn đang dùng râu ông nọ cắm cằm bà kia. Nó chạy được mới là chuyện lạ.

Có phải trong tập tin ex_usb_hid.c của bạn có những dòng này:
//// USB HID example, for use with the PIC16C765 slow speed USB ////
//// peripheral or National's USBN960x full speed USB peripheral. ////
ở đầu tập tin?

Bạn có được sơ đồ phần cứng đó ở đâu thì nên đọc phần hướng dẫn tương ứng ở đó. Tôi đoán là bạn có được sơ đồ này từ pic18fusb.online.fr, trong phần nói về bootloader. Nếu đúng thì sơ đồ đó được dùng với bootloader của Microchip.

Thân,

chungthanhcong
25-02-2007, 09:02 PM
Có phải trong tập tin ex_usb_hid.c của bạn có những dòng này:
//// USB HID example, for use with the PIC16C765 slow speed USB ////
//// peripheral or National's USBN960x full speed USB peripheral. ////

code này có hỗ trợ cả 18Fxx5x nữa. Anh có biết sơ đồ mạch dành cho con 18F để chạy vd này không?

namqn
25-02-2007, 11:00 PM
Bạn dùng PIC18F4550 nên mã nguồn sẽ sử dụng chân power sense (chân RB2 của PIC), sơ đồ nối như trong phần chú thích trong mã nguồn của bạn (từ Vbus có 2 điện trở 100k đi đến RB2 và GND).

CCS cung cấp một chương trình mẫu trên host PC, tên là hiddemo.exe, chỉ có trong bộ USB Development Kit của họ, để dùng với ví dụ này.

Ngoại vi của PIC khá đơn giản, dùng AN0 để đọc tín hiệu analog, có 3 LED nối vào RB4, RB5, và RA5. Những chân OSC1, OSC2, Vusb, MCLR, D+ và D- thì giống như mạch của pic18usb.online.fr.

Những thông tin về phần cứng này nằm trong tập tin nguồn mà bạn vừa cung cấp.

Thân,

le vu
27-02-2007, 09:58 AM
tôi giới thiệu web mới viết về 18f2550 www.semifluid.com

05foreverdlt
27-02-2007, 11:10 AM
Chào tất cả mọi người trong diễn đàn, mình mới bắt đầu tìm hiểu vi điều khiển và mình rất quan tâm đến PIC. Mình gia nhạp diễn đàn với mục đích tìm hiểu và học hỏi nên rất mong các bạn chỉ giáo.

omen
27-02-2007, 06:27 PM
Chào các bác
Em đang tập lập trình cho con 18f4550 nhưng chỉ định làm 1 cái ctrinh nhấp nháy led thôi mà mãi ko đc
Các chân set high a1 a3 thì sáng, nhưng ko nhấp nháy

Mạch của em chỉ có : chân 11-12 :vcc-gnd , 13-14 : thạch anh +tụ

Code sinh từ CCS C 3.227

#include "C:\Program Files\PICC\Examples\18f4550\Vinh.h"
#use delay(clock=4000000)
#use fast_io(a)
void main()
{
setup_adc_ports(NO_ANALOGS|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(VREF_LOW|-2);
setup_low_volt_detect(FALSE);
setup_oscillator(False);
set_tris_a(0x00);
while(true)
{
output_high(pin_a1);
output_low(pin_a2)
output_high(pin_a3)
delay_ms(500);
delay_ms(500);
output_low(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
delay_ms(500);
delay_ms(500);
}
}

Em đã thử dùng cả dao động nội nhưng nó vẫn ko chịu chạy, bỏ delay, dùng vòng lặp cũng ko đc
Ko rõ là bị làm sao, mong các bác chỉ giáo, nếu có 1 ctrinh sample cho em thì tốt quá :)

namqn
27-02-2007, 07:20 PM
PIC18F4550 có 2 cặp chân nguồn, Vdd ở 11 và 32, Gnd ở 12 và 31. Bạn có đủ những chân đó nối vào chỗ cần thiết chưa?

Thân,

omen
27-02-2007, 08:44 PM
Chân 31-32 Em nối rồi, kết quả vẫn như vậy cứ chân nào lúc đầu set lên high thì nó lên high còn ko thì nó low, gần như là chỉ set đc 1 lần duy nhất

namqn
28-02-2007, 01:26 AM
Dim digit As Byte
Dim mask As Byte

TRISB = %00000000
OSCCON = OSCCON Or 0x70
loop:
For digit = 0 To 7
mask = LookUp(0xfc, 0xf9, 0xf3, 0xe7, 0xcf, 0x9f, 0x3f, 0x7e), digit
LATB = mask
WaitMs 500
Next digit
Goto loop

Trên đây là code trong Basic compiler của PIC18 Simulator, dùng 8 bit của port B để thử LED, kiểu knight rider, anode của các LED nối lên Vdd qua điện trở thanh. Đã compile với cấu hình bộ dao động nội. Bạn nạp thử tập tin hex gửi kèm xem mạch có làm việc không.

Thân,

linhnc308
28-02-2007, 12:30 PM
code này có hỗ trợ cả 18Fxx5x nữa. Anh có biết sơ đồ mạch dành cho con 18F để chạy vd này không?

mạch chạy cho PIC4550 về cơ bản đều giống nhau, các bạn nào lắp mạch test LED mà ko thấy chạy thì cần xem xét lại phần config cho nó trước khi nạp, xem kỹ các fuse của nó.
@Chuthanhcong: mạch của bạn ko chạy được mình nghĩ vấn đề chắc chắn là ở việc lựa chọn thạch anh và tần số hoạt động chưa đúng với cấu hình nên PC ko nhận điện đc thiết bị USB. Trước mình đã làm rồi, gắn vô PC nó sẽ nhận diện đc thiết bị. Trong bản CCS 4 phần sample còn có thêm code tạo Visual COM tức USB >> COM, mình đã dùng thử cổng COM này để giao tiếp thấy cũng khá ổn.
Thới gian này đang bận chuyển nhà và cũng một phần vì công việc, sẽ cố gắng có một bài viết cụ thể về 4550 chia sẻ với các bạn.
Chúc thành công!

omen
28-02-2007, 03:09 PM
Em đã thử chương trình của bác namnq, mạch có chạy , 2 đèn sáng mỗi lần, nhưng mỗi đèn sáng tầm 15s mới chịu tắt :(

Một điều kì lạ là nếu em 1 tay sờ vào vỏ hộp nguồn ( em dùng nguồn pc để cấp điện) 1 tay sờ vào board mạch thì nó lại nhấp nháy đc led( code nhấp nháy led ko phải knighrider), thả ra lại hết đèn sáng ko nhấp, thử dùng nguồn khác ( nguồn usb ) thì cũng tương tự, 1 tay chạm vào vỏ máy, 1 tay chạm vào board mạch thì mạch lại chạy .
Em đã thử cả trên board cắm lẫn board hàn, cả PIC18f4550 lẫn 16f877A, không hiểu nó cảm ứng kiểu gì, em đã cấp nguồn âm dương đầy đủ cho nó.

namqn
28-02-2007, 05:31 PM
Em đã thử chương trình của bác namnq, mạch có chạy , 2 đèn sáng mỗi lần, nhưng mỗi đèn sáng tầm 15s mới chịu tắt :(

Một điều kì lạ là nếu em 1 tay sờ vào vỏ hộp nguồn ( em dùng nguồn pc để cấp điện) 1 tay sờ vào board mạch thì nó lại nhấp nháy đc led( code nhấp nháy led ko phải knighrider), thả ra lại hết đèn sáng ko nhấp, thử dùng nguồn khác ( nguồn usb ) thì cũng tương tự, 1 tay chạm vào vỏ máy, 1 tay chạm vào board mạch thì mạch lại chạy .
Em đã thử cả trên board cắm lẫn board hàn, cả PIC18f4550 lẫn 16f877A, không hiểu nó cảm ứng kiểu gì, em đã cấp nguồn âm dương đầy đủ cho nó.
Tôi quên thêm đoạn code set up tần số cho bộ dao động nội, nên nó chạy ở tần số mặc định thay vì 8 MHz như dự định (thực hiện OR thanh ghi OSCCON với 0x70 để có tần số bộ dao động nội là 8 MHz). (Đã sửa ở post gốc)

Hiện tượng này giống như chân MCLR bị thả nổi.

Thân,

thaithienanh
01-03-2007, 10:06 PM
ô là la mới mua nhầm 1 chú pic 18 thôi kệ học đại vậy, dzị mà nạp chương trình vào pic xong cho chạy chạy được 1 nhịp rồi nín khe, vịn vào nguồn cấp âm hoặc dương thì đều chạy tốt định lên hỏi mấy anh nhưng trời ơi thấy cũng giống hệt mình, mấy anh có kinh nghiệm giải quyết vụ này chỉ bảo em với (em cũng đang tìm hiểu sự cố này mặc dù nguồn đã được nắn lọc cực tốt)

namqn: đã nói trên kia rồi, có thể chân MCLR bị thả nổi.

omen
02-03-2007, 10:51 AM
Hic gặp được người đồng cảnh ngộ mừng quá :p
Em vẫn chưa giải quyết đc cái vụ này, dù chân MCLR đã nối lên Vcc qua 1 trở 10K , làm nút reset đàng hoàng nhưng tình hình vẫn vậy, cứ chạm tay vào GND thì mới chạy bỏ ra là tịt :(

linhnc308
02-03-2007, 01:34 PM
Trang WEB ma ban "Le vu" đưa ra khá hay. Tôi đã lặp các mạch cho con 2550 theo như trên web và tất cả đều chạy rất tốt, code chương trinh cũng đơn giản và dễ hiểu, gúp cho người dùng dễ dàng modifê lại.
Liệt kê các Project:
- Làm OSC đơn giản (tần số thấp)
- Quét led RGB
- Giao tiếp GLCD, làm OSC
- Giao tiếp không dây chuẩn ZigBee (bộ RF-24 ở VN có ai bán ko nhỉ, giá cả ?)
...
Mọi người cung tham khảo.

namqn
02-03-2007, 07:14 PM
Hic gặp được người đồng cảnh ngộ mừng quá :p
Em vẫn chưa giải quyết đc cái vụ này, dù chân MCLR đã nối lên Vcc qua 1 trở 10K , làm nút reset đàng hoàng nhưng tình hình vẫn vậy, cứ chạm tay vào GND thì mới chạy bỏ ra là tịt :(
Liệu trong số những bạn đang gặp trường hợp này có ai có nguồn accu 6V hay 12V không? Nếu bạn nào có thì thử xem tình trạng có thay đổi không.

Thân,

thaithienanh
02-03-2007, 08:38 PM
A ha vui quá bạn omen ơi mình tìm ra nguyên nhân rồi đúng như anh linh đã nói đúng là nguyên nhân do ta khai báo config không đủ : trong các loại config sau có một cái gây ra lỗi nhưng mình hong rõ là cái nào nữa: NOBROWNOUT,NOCPD,NOWRT,NODEBUG cái này chắc phải nhờ trưởng lão giải thích hộ tụi mình thôi.

namqn
02-03-2007, 09:23 PM
A ha vui quá bạn omen ơi mình tìm ra nguyên nhân rồi đúng như anh linh đã nói đúng là nguyên nhân do ta khai báo config không đủ : trong các loại config sau có một cái gây ra lỗi nhưng mình hong rõ là cái nào nữa: NOBROWNOUT,NOCPD,NOWRT,NODEBUG cái này chắc phải nhờ trưởng lão giải thích hộ tụi mình thôi.
NOBROWNOUT: tắt bộ phát hiện nguồn suy giảm, cái này không có khả năng gây ra lỗi, vì nguồn tốt, và nếu nó tác động thì chỉ reset lại chip thôi.
NOCPD: tắt bảo vệ data EEPROM, hoàn toàn không liên quan.
NOWRT: tắt bảo vệ ghi (cái này là mặc nhiên), cũng hoàn toàn không liên quan.
NODEBUG: tắt bộ background debugger, cái này mà để bật thì nó sẽ đi vào chế độ gỡ rối, nghĩa là giống như đang được debug bằng ICD 2 vậy. Nếu vào chế độ stepping thì phải có lệnh từ ICD 2 nó mới chạy 1 lệnh.

Chỉ thử với NODEBUG xem. Mà các bạn viết code gài kiểu này thì ai mà gỡ rối cho nổi.

Quy tắc cần phát biểu ở đây: "Cấu hình đầy đủ cho chip rồi hãy thử chương trình".

Thân,

omen
02-03-2007, 11:55 PM
Ôi mừng quá bác namnq và bác thaithienanh ơi :p em tìm ra rồi, đó là bỏ check cái option LVP (low voltage programming ) trong tap Setting của Winpic800 đi, thế là được, nạp xong chạy vù vù :)
Tuy nhiên đó là em mới thử được trên 16F877a, chưa thử được trên 18F4550, con 18F4550 của em ... nó ... đi về nơi xa lắm rồi :(( , và thế là sẽ ko theo được luồng này nữa rồi, h chuyển qua luồng "CCS C for 16F877a" vậy :)

Bác thaithienanh thử uncheck cái LVP xem có được ko , chúc bác may mắn :)

namqn: Ở đâu đó trên forum này tôi đã nói là dùng LVP thì phải xác định điện áp cho chân PGM (kéo nó xuống GND qua điện trở vài k), không thả nổi nó mà. Đúng là mỗi người một bệnh.

The lastest
09-05-2007, 02:15 PM
Mình dùng Pic 18f4580 để lập trình với ứng dựng đơn giản để thử thì gặp lỗi mà không khắc phục được
Ứng dụng của mình chỉ hiển thị ra led 7 đoạn và tăng giá trị sau mỗi phím bấm
Tuy nhiên , quá trình chạy thử thì có vấn đề như sau:
vấn đề : khi bộ đếm đến 4 thì reset trở về lại đầu chương trình
lúc đó ,
- khi thực hiện lệnh MOVF COUNT,W,0 thì
thanh ghi PCL có giá trị là 0x0000CC h ,Status : 0x01 h, STKPTR : 0x01 , thanh ghi W có giá trị là 0x0A , biến COUNT có giá trị là 0x0A h
- khi thực hiện lệnh CALL TABLE thì nhảy đến vị trí có nhãn là TABLE , thanh ghi PCL có giá trị là 0x000F4 h , Status : 0x01 h , STKPTR : 0x02 dỉnh ngăn xếp TOS là : 0x0000D0
- khi thực hiện lệnh ADDWF PCL ,f,1 thì PCL có giá trị là 0x00000 và reset lại tại vị trí ban đầu (không phải reset chưong trình vì tất cả các giá trị khác vẫn không bị reset như thanh ghi STKPTR vẫn còn giá trị là 0x02) và thực hiện từ đầu chương trình
Tại sao trong những lần thực hiện lệnh ADDWF PCL,f,1 không xảy ra reset mà chỉ khi biến COUNT có giá trị là0x0A . Mình cũng có một số thay đổi khác thì cũng xảy ra trường hợp giống như vậy khi biến COUNT có giá trị là 0x006
Như vậy nguyên nhân do đâu mà xảy ra reset như trên, cách khắc phục.
Mình cũng đã thử viết chương trình với những ứng dụng khác đơn giản hơn như nháy led hay chạy led lan dần thì không gặp vấn đề gì cả , chứng tỏ là config cho PIC là đúng
Sau đây là mã viết bằng ASM

LIST P=18F4580 ;CHON PIC HOAT DONG
#include <P18F4580.INC> ;CAC DINH NGHIA CAC THANH GHI CHO PIC

;************************************************* ****************************
; CAU HINH CHO PIC
__CONFIG _CONFIG1H, _OSC_HS_1H & _FCMENB_OFF_1H
__CONFIG _CONFIG2L, _PWRT_OFF_2L & _BOR_OFF_2L & _BORV_20_2L
__CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_32768_2H
__CONFIG _CONFIG3H, _MCLRE_ON_3H & _PBADEN_OFF_3H
__CONFIG _CONFIG4L, _DEBUG_OFF_4L & _XINST_OFF_4L & _BBSIZ_2048_4L & _LVP_OFF_4L & _STVREN_OFF_4L
__CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L
__CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
__CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L
__CONFIG _CONFIG6H, _WRTB_OFF_6H & _WRTC_OFF_6H & _WRTD_OFF_6H
__CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L
__CONFIG _CONFIG7H, _EBTRB_OFF_7H & _DEVID1 & _IDLOC0

;************************************************* ****************************
;KHAI BAO BIEN

CBLOCK 0x080
WREG_TEMP ;BIEN TAM DE LUU GIA TRI THANH GHI W
STATUS_TEMP ;BIEN TAM DE LUU GIA TRI THANH GHI STATUS
BSR_TEMP ;BIEN TAM DE LUU GIA TRI THANH GHI BSR
ENDC

CBLOCK 0x120
COUNT ;example of a variable in access RAM
COUNT1
COUNT2
COUNT3
ENDC

;************************************************* ****************************

ORG 0X0000 ;Reset vector
GOTO MAIN

;************************************************* ****************************
;CHUONG TRINH CHINH BAT DAU TU DAY
;PORT B LA OUT PUT XUAT TIN HIEU DE LED NHAY
;RC0 KICH LED 7 DOAN DE HIEN THI
;RC7 LA INPUT DE TANG GIA TRI CUA LED 7 DOAN
;************************************************* ****************************

ORG 0x0080 ;go to start of main code

MAIN
MOVLB 0X0F ;CHON BANK15
SETF LATB,1
CLRF LATD,1
CLRF LATC,1
MOVLW 0X07
MOVWF ADCON1,1

CONFIG_B ;THIET LAP CAU HINH CHO PORTB
MOVLW 0X00
MOVWF TRISB,1
CONFIG_D ;THIET LAP CAU HINH CHO PORTD
MOVWF TRISD,1
CONFIG_E ;THIET LAP CAU HINH CHO PORTC
MOVLW 0XF0
MOVWF TRISC,1

WAIT
MOVLW 0X00
MOVWF COUNT,0
NEXT
CALL DATA_DISPLAY
BTFSC PORTC,7,1 ;kiem tra nut duoc bam hay chua
GOTO NEXT ;neu ko thi tro lai
CHK
CALL DELAY ;tre mot luc
BTFSC PORTC,7,1 ;kiem tra nut dc nha ra chua
GOTO INC ;nhay den tang bien dem
CALL DATA_DISPLAY ;neu khong thi hien thi led
GOTO CHK ;nhay den CHK va den khi nut duoc nha ra
INC
INCF COUNT,F,0
INCF COUNT,F,0 ;tang bien dem moi lan 2 don vi
MOVF COUNT,W,0
MOVWF LATD,0
SUBLW 0X20 ;kiem tra da hien thi xong mot vong (hien thi chu F)
BTFSC STATUS,Z,1
GOTO WAIT ;nhay noi bat dau va tro lai mot vong moi
GOTO NEXT ;con khong thi tiep tuc tang cho den F

DATA_DISPLAY ;bieu dien hien thi LED
MOVF COUNT,W,0
CALL TABLE ;goi bang lay du lieu hien thi
MOVWF LATB,1
CALL DELAY
RETURN

DELAY
CLRF COUNT1,0
CLRF COUNT2,0
MOVLW D'13'
MOVWF COUNT3,0
LOOP
DECFSZ COUNT1,f,0
GOTO LOOP
DECFSZ COUNT2,f,0
GOTO LOOP
DECFSZ COUNT3,f,0
GOTO LOOP
RETURN

TABLE
ADDWF PCL,F,1
RETLW 0XC0 ;SO 0
RETLW 0XF9 ;SO 1
RETLW 0XA4 ;SO 2
RETLW 0XB0 ;SO 3
RETLW 0X99 ;SO 4
RETLW 0X92 ;SO 5
RETLW 0X82 ;SO 6
RETLW 0XF8 ;SO 7
RETLW 0X80 ;SO 8
RETLW 0X90 ;SO 9
RETLW 0X88 ;chu A
RETLW 0X83 ;chu B
RETLW 0XC6 ;chu C
RETLW 0XA1 ;chu D
RETLW 0X86 ;chu E
RETLW 0X8E ;chu F

RETLW 0XFF ;OFF

;************************************************* ****************************
;End of program

END

namqn
09-05-2007, 07:37 PM
Phần code để giải mã của bạn đang nằm gần biên của các trang 256 byte. Như bạn đã cho biết, PCL = 0xF4 khi nhảy đến TABLE. Trước khi thực hiện lệnh cộng thì PCL sẽ được tăng thêm 2, cộng với giá trị mà bạn muốn giải mã là 0x0A thì bạn có thể thấy tại sao PCL = 0x00 (PCL = 0xF4 + 0x02 + 0x0A).

Bạn tìm hiểu lại về vấn đề xử lý PCH và PCL khi dùng kỹ thuật bảng.

Thân,

Jerry
10-05-2007, 10:02 AM
Để sửa lỗi trên thì bạn nên sửa như sau ở đoạn Table:

org 0x100
TABLE:
movlw high(TABLE)
movwf PCLATH
movf Count,0
ADDWF PCL,F,1
RETLW 0XC0 ;SO 0
RETLW 0XF9 ;SO 1
RETLW 0XA4 ;SO 2
RETLW 0XB0 ;SO 3
RETLW 0X99 ;SO 4
RETLW 0X92 ;SO 5
RETLW 0X82 ;SO 6
RETLW 0XF8 ;SO 7
RETLW 0X80 ;SO 8
RETLW 0X90 ;SO 9
RETLW 0X88 ;chu A
RETLW 0X83 ;chu B
RETLW 0XC6 ;chu C
RETLW 0XA1 ;chu D
RETLW 0X86 ;chu E
RETLW 0X8E ;chu F

RETLW 0XFF ;OFF

Jerry
10-05-2007, 10:03 AM
nếu còn thắc mắc gì thì cứ chat với tôi nhé, sẵn sàng giúp đỡ, :D. YM: hiendl2k42

tungtot_vl
18-10-2007, 08:27 AM
em mới học pic18f4550 nên cũng chưa biết gì cả mong các anh chỉ giúp.
1. trong proteus em không thấy cong 18f4550 hoặc con 18f4455 đâu cả. thế để mô phỏng nó thì làm thế nào hả các bác. hay có con nào tương tự trong proteus không
2.chân rb4 mắc điện trỏ 10k lên 5v là để làm gì hả các bác. thế khi điều khiển đèn bằng portb có cần mắc con này không.
3. em viết chương trình bằng ccs 3.249. và con 18f có cần khai báo thêm device*=16 ADC = 8 có tác dụng không để dùng toàn bộ RAM không. em thấy có khai báo hay không vẫn tốn dung lượnng RAN như nhau.
em viết thử 1 đoạn code điều khiển đèn nhưng không mô phỏng được và cũng chưa có mạch để text thử nên nhờ các đại ca xem thử
#include <18F4550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CP UDIV1,VREGEN
#device*=16 adc=8
#use delay(clock=20000000)
#use fast_io(b)
#byte portb=0x6
#use fast_io(a)
#byte porta=0x5
unsigned char tam[] = {0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80};


main()
{int i;
set_tris_b(0);
set_tris_a(0);

while(true)
{ porta = 0xff;
for(i=0;i<8;i++)
{
portb=tam[i];
delay_ms(500);
}
}
}
có chổ nào sai mong các anh chỉ giáo

tungtot_vl
20-10-2007, 12:23 PM
đã có mạch tẽt thủ nhưng không thấy chạy gì cả không biết có phải config sai không. mạch text thì em dùng mạch của của con 16f877a chạy tốt và chỉ thêm mấy cái tụ 104 và 5v và mass thôi.
xin mấy đại ca chỉ giáo

ghosttn
21-10-2007, 11:18 AM
mấy anh chỉ hộ em mấy con IC chuyển song song --> nối tiếp với.
//======================================
dạng vào n bit -->lock n bit--> clock out 1
em đang cần con này để trị thằng 595.

namqn
23-10-2007, 05:46 PM
đã có mạch tẽt thủ nhưng không thấy chạy gì cả không biết có phải config sai không. mạch text thì em dùng mạch của của con 16f877a chạy tốt và chỉ thêm mấy cái tụ 104 và 5v và mass thôi.
xin mấy đại ca chỉ giáo
Bạn so sánh sơ đồ chân của PIC16F877A và PIC18F4550. Hai chip này không hoàn toàn giống nhau. Trong luồng này đã có một vài mạch thử nghiệm cho PIC18F4550 rồi. Bạn cũng có thể vào các trang sau để tham khảo mạch thử nghiệm tối thiểu.

http://www.sixca.com/eng/articles/usbdaq/index.html (chân 18 cần tụ 470 nF chứ không phải 470 pF)
http://www.electronicfr.com/usb.html
http://pic18fusb.online.fr/wiki/wikka.php?wakka=WikiHome

Trong những sơ đồ trên bạn đều thấy là chân 18 của PIC18F4550 cần phải có một tụ 470 nF.

Thân,

hampic
23-10-2007, 10:34 PM
Chú ý: xem hình 17-1, trang 163 của datasheet cho PIC18F4550 family (DS39632C), nếu có dùng điện trở pull-up bên ngoài thì người ta nối nó với nguồn ngoài 3.3V. Lý do chính để đưa chân VUSB ra vỏ chip là cần có một tụ (mà RedRose nói là tụ điện nhỏ).

RedRose nói tụ điện nhỏ thì bao nhiêu có thể coi là nhỏ, và bao nhiêu có thể coi là đủ? (câu này hỏi RedRose)

Một câu hỏi nữa là tại sao cần có tụ điện cho chân VUSB (mà Microchip nhắc nhở rất nhiều lần về việc dùng giá trị đúng cho nó)?

Hy vọng chú F cũng tính điểm cho phần trả lời của các câu hỏi này.

Thân,

hehe, nghe nói có treo thưởng nên làm liều trả lời 1 phát thử có trúng ko, nếu trúng thì kiếm con pic vọc cũng đở bùn,hihi.
Theo em, thì cái tụ nhỏ này là khoảng 470uF. Lý do vì sao cần tụ này thì theo mình, do Vbus cấp điện áp cho D+ và D- thông qua điện trở kéo lên bên trong (có thể thay thế bằng R bên ngoài nếu muốn), mà 2 tín hiệu vi sai này là ngỏ ra dữ liệu của USB, được dao động ở tần số 12MHz(Full speed), cho nên để ổn định nguồn này thì chắc cần phải có tụ ở đây rùi. Hihi, giải thích như vậy ko biết có đúng ko nữa, hên xui thui, hihi.

namqn
24-10-2007, 12:23 AM
hehe, nghe nói có treo thưởng nên làm liều trả lời 1 phát thử có trúng ko, nếu trúng thì kiếm con pic vọc cũng đở bùn,hihi.
Theo em, thì cái tụ nhỏ này là khoảng 470uF. Lý do vì sao cần tụ này thì theo mình, do Vbus cấp điện áp cho D+ và D- thông qua điện trở kéo lên bên trong (có thể thay thế bằng R bên ngoài nếu muốn), mà 2 tín hiệu vi sai này là ngỏ ra dữ liệu của USB, được dao động ở tần số 12MHz(Full speed), cho nên để ổn định nguồn này thì chắc cần phải có tụ ở đây rùi. Hihi, giải thích như vậy ko biết có đúng ko nữa, hên xui thui, hihi.
Câu hỏi này đã được phamthaihoa trả lời tốt ở post #41. Bạn nên đọc lại post đó để biết mình trả lời chưa được chính xác. Để lấy được PIC thì bạn phải trả lời tốt khoảng 5 câu hỏi.

Thân,

ghosttn
24-10-2007, 08:06 PM
--------------------------------------------------------------------------------

mấy anh chỉ hộ em mấy con IC chuyển song song --> nối tiếp với.
//======================================
dạng vào n bit -->lock n bit--> clock out 1
em đang cần con này để trị thằng 595.
//==============================
hây sao mấy anh không hộ em ti'
thế này sao lên được đệ tử 1 túi.
ăn mày kiểu này chắc thành xương lâu rồi.

namqn
24-10-2007, 09:53 PM
--------------------------------------------------------------------------------

mấy anh chỉ hộ em mấy con IC chuyển song song --> nối tiếp với.
//======================================
dạng vào n bit -->lock n bit--> clock out 1
em đang cần con này để trị thằng 595.
//==============================
hây sao mấy anh không hộ em ti'
thế này sao lên được đệ tử 1 túi.
ăn mày kiểu này chắc thành xương lâu rồi.
Linh kiện mà bạn cần là parallel-in/serial-out shift register, 74HC/HCT165 chẳng hạn. Tuy nhiên, nếu bạn đã dùng vi điều khiển thì việc dịch các bit ra 595 không có gì là phức tạp cả, và bạn sẽ tiết kiệm được khá nhiều chân của vi điều khiển.

Thân,

tungtot_vl
25-10-2007, 03:03 PM
Bạn so sánh sơ đồ chân của PIC16F877A và PIC18F4550. Hai chip này không hoàn toàn giống nhau. Trong luồng này đã có một vài mạch thử nghiệm cho PIC18F4550 rồi. Bạn cũng có thể vào các trang sau để tham khảo mạch thử nghiệm tối thiểu.

http://www.sixca.com/eng/articles/usbdaq/index.html (chân 18 cần tụ 470 nF chứ không phải 470 pF)
http://www.electronicfr.com/usb.html
http://pic18fusb.online.fr/wiki/wikka.php?wakka=WikiHome

Trong những sơ đồ trên bạn đều thấy là chân 18 của PIC18F4550 cần phải có một tụ 470 nF.

Thân,

không có tụ 470n nên em dùng 2 tụ 1u nối tiếp nhưng vẫn không thấy chạy gì cả. em nghĩ phần cứng không có vấn đề gì vì khi em dùng portb = 0xff và = 0; thì không thấy đèn nháy nhưng khi thay output_high(..) hay output_low(..) thì thấy đèn nhấp nháy theo chu kỳ bình thường.
không biết vì sao lại xuất bằng port không được hả anh nam trong khi đã khai báo đầy đủ #byte portb = 0x06 và trisb(0).
mong anh chỉ giúp

namqn
25-10-2007, 05:41 PM
không có tụ 470n nên em dùng 2 tụ 1u nối tiếp nhưng vẫn không thấy chạy gì cả. em nghĩ phần cứng không có vấn đề gì vì khi em dùng portb = 0xff và = 0; thì không thấy đèn nháy nhưng khi thay output_high(..) hay output_low(..) thì thấy đèn nhấp nháy theo chu kỳ bình thường.
không biết vì sao lại xuất bằng port không được hả anh nam trong khi đã khai báo đầy đủ #byte portb = 0x06 và trisb(0).
mong anh chỉ giúp
Bạn dùng thanh ghi LATB thay cho PORTB thử xem. Bạn cũng có thể dùng hàm OUTPUT_B() của CCS C. Không nên thao tác trực tiếp các thanh ghi PORTx của PIC18, khi cần xuất dữ liệu.

Tôi cho rằng các trình dịch đã định nghĩa sẵn các thanh ghi của PIC, do đó không cần định nghĩa lại như bạn đã làm với #byte portb = 0x06. Tôi cũng cho rằng hàm thiết lập thanh ghi TRISB của CCS C là SET_TRIS_B().

Thân,

tungtot_vl
27-10-2007, 10:17 AM
cảm ơn anh nam nhiều. quả nhiên dùng outputB(value) thì có hiệu quả ngay. kết quả thật bất ngờ nhưng không hiểu nối dùng port và output có gì khác nhau và 18f4550 kkhông cho dùng port

vandungevn
27-10-2007, 11:39 AM
Trong CCS nó chỉ có hiểu là outport_x chứ nó không hiêu portx là gì cả.
Trong MPLAB thì mới có khái niêm portx

tungtot_vl
21-12-2007, 07:35 AM
các bác ơi sao con 18f4550 chạy kém ổn định quá.
khi em dùng 18f4550 cho 1 số mạch thì nó chạy tốt nhưng có 1 số mạch khi đang chạy thì nó hay reset lại từ đầu. khi em dùng phần mềm này chạy cho con 16f877a và dùng chung phần cứng thì nó chạy tốt không biết vì sao hả các bác. bác nào biết chỉ cho em với

namqn
21-12-2007, 07:00 PM
các bác ơi sao con 18f4550 chạy kém ổn định quá.
khi em dùng 18f4550 cho 1 số mạch thì nó chạy tốt nhưng có 1 số mạch khi đang chạy thì nó hay reset lại từ đầu. khi em dùng phần mềm này chạy cho con 16f877a và dùng chung phần cứng thì nó chạy tốt không biết vì sao hả các bác. bác nào biết chỉ cho em với
Những mạch nào của bạn khiến PIC18F4550 chạy không ổn định, code tương ứng của các mạch ra sao? Bạn không nên nhanh chóng kết luận PIC18F4550 chạy kém ổn định. Tôi tin là đã có nhiều người thực hiện các mạch khác nhau với PIC18F4550, nhưng ít nghe phản ánh về độ tin cậy của nó. Mong bạn cung cấp thêm thông tin để việc phản hồi được tin cậy và chính xác hơn.

Thân,

tungtot_vl
22-12-2007, 11:35 AM
em đang làm mạch quang báo bằng con 4550. khi em gắn tụ 10u song song với điện trở 4,7k ở cực B của tranistor a1013 và cho chạy bằng con 4550. khi bật nguồn lên được vài dây thì nó cứ reset lại từ đầu, do đó không chạy chử được. nhưng nếu em tháo tụ 10u ra thì nó chạy bình thường. và nếu em gắn tụ 10u vào và chạy bằng con 877a thì chạy cũng bình thường. không có vấn đề gì cả. điều quang trong là em muốn giử tụ 10u lại và chạy bằng con 4550 thì làm thế nào hả anh.
à. mà anh nam ơi nếu em không dùng chân usb của 4550 thì không gắn tụ 470p vào chân 18 thì có ảnh hưởng gì đến hoạt động của 4550. lâu nay em chạy bình thường mà không cần gắn tụ 470p vào chân này. mong anh chỉ giúp.

namqn
22-12-2007, 05:49 PM
Bạn không cho biết mạch nguyên lý cùng với code chương trình thì những mô tả trên của bạn cũng chẳng giúp ích gì cho những người khác đang thử tìm hiểu vấn đề của bạn. Giả sử với cùng phần cứng ngoại vi, bạn viết code cho PIC16 và PIC18 sẽ khác nhau đôi chút, vì PIC18 có những tính năng bổ sung mà PIC16 không có (đã từng có bạn viết code thử nghiệm PIC18 rất đơn giản mà không chạy, lý do đơn giản vì bạn ấy bỏ qua các thiết lập ban đầu cho các từ cấu hình, nên phản ứng của PIC18 là không biết trước). Cần phải xem bạn kết nối phần cứng ra sao, và viết code cho PIC18 thế nào thì mới tìm hiểu xem vấn đề nằm ở đâu được.

Tụ nối vào chân VUSB của PIC18 là 470 nF chứ không phải 470 pF. Chân đó chỉ có nhiệm vụ làm VUSB thì nên nối hẳn tụ vào, mặc dù điều này là không cần thiết nếu bạn không dùng module USB của PIC.

Thân,

tungtot_vl
24-12-2007, 02:01 PM
#include<18f4550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CP UDIV1,VREGEN
#use delay(clock=48000000)
#include<E:\LED MATRIX\18f4550\fontchu.c>
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)
trên là phần khai báo của em cho 18f4550.
vì code dài quá không port hết được
và mạch nguyên lý như hình vẽ.
khi không có tụ 10u thì 18f4550 chạy bình thường. nếu nối tụ vào thì có hiện tượng như đã nói ở trên, nhưng nếu dùng 16f877a thì chạy tốt.
không hiểu vì sao.

namqn
26-12-2007, 02:13 AM
trên là phần khai báo của em cho 18f4550.
vì code dài quá không port hết được
và mạch nguyên lý như hình vẽ.
khi không có tụ 10u thì 18f4550 chạy bình thường. nếu nối tụ vào thì có hiện tượng như đã nói ở trên, nhưng nếu dùng 16f877a thì chạy tốt.
không hiểu vì sao.
Bạn cho biết lý do của việc gắn tụ điện 10 uF song song với điện trở cực base của transistor. Tôi không thấy có lý do nào cần gắn tụ điện này.

Thân,

electronicltv
26-12-2007, 10:10 AM
em đang làm mạch quang báo bằng con 4550. khi em gắn tụ 10u song song với điện trở 4,7k ở cực B của tranistor a1013 và cho chạy bằng con 4550. khi bật nguồn lên được vài dây thì nó cứ reset lại từ đầu, do đó không chạy chử được. nhưng nếu em tháo tụ 10u ra thì nó chạy bình thường. và nếu em gắn tụ 10u vào và chạy bằng con 877a thì chạy cũng bình thường. không có vấn đề gì cả. điều quang trong là em muốn giử tụ 10u lại và chạy bằng con 4550 thì làm thế nào hả anh.

Bạn thấy có hiện tượng reset lại từ đầu như thế nào? Bạn mô tả chi tiết hiện tượng mà bạn thấy. Bạn nên chèn thêm một đoạn lệnh xuất dữ liệu ra RS232 hoặc ra một pin nào đó để kiểm tra xem có phải PIC reset lại hay không ? (nếu chương trình chạy trở lại void main() thì xuât, k thì thôi). Tôi nghĩ hiện tượng xảy ra ở đây không phải là reset, vì PIC thường bị reset khi bạn điều khiển động cơ, rơ le,... chứ điều khiển mấy cái led này thì hơi khó bị reset. Bạn nên xem xét lại kĩ nhá.

bien_van_khat
26-12-2007, 10:35 AM
Cái tụ 10u song song với điện trở cực B của transistor mình thấy chẳng có lợi ích gì mà còn có hại. Khi tụ nạp dòng điện nạp lúc đầu rất lớn, nếu chân IO ko có khả năng chịu dòng điện lớn trong thời gian ngắn có thể bị hư.

Hơn nữa trong mạch thực tế, bạn cần 1 điện trở nối từ cực B lên Vdd để phân cực cho transistor, nếu thiếu, transistor sẽ đóng rất chậm làm LED có bóng mờ.

Thân.

tungtot_vl
26-12-2007, 05:01 PM
Bạn thấy có hiện tượng reset lại từ đầu như thế nào? Bạn mô tả chi tiết hiện tượng mà bạn thấy. Bạn nên chèn thêm một đoạn lệnh xuất dữ liệu ra RS232 hoặc ra một pin nào đó để kiểm tra xem có phải PIC reset lại hay không ? (nếu chương trình chạy trở lại void main() thì xuât, k thì thôi). Tôi nghĩ hiện tượng xảy ra ở đây không phải là reset, vì PIC thường bị reset khi bạn điều khiển động cơ, rơ le,... chứ điều khiển mấy cái led này thì hơi khó bị reset. Bạn nên xem xét lại kĩ nhá.

em đã kiểm tra kỷ rồi và cũng gởi lên pc dòng lệnh trước while(). cho chữ dịch sang trái hoặc phải. khi dịch gần được 1 chữ (1 led) thì reset lại và tiếp tục như thế. và đương nhiên là trên pc cũng có dòng kiểm tra reset của pic. nếu không có mạch hiển thị chữ tức là chỉ kiểm tra pic không hoặc kô có tụ thì chạy bình thường.
Cái tụ 10u song song với điện trở cực B của transistor mình thấy chẳng có lợi ích gì mà còn có hại. Khi tụ nạp dòng điện nạp lúc đầu rất lớn, nếu chân IO ko có khả năng chịu dòng điện lớn trong thời gian ngắn có thể bị hư.

cái tụ này rất hiệu quả đấy anh ạ. nêu ta mắc thêm tụ này sẽ làm cho a1013 phóng nhanh và mạch hơn đồng thời dòng rất ổn định
khi mắc tụ này vào bảng led sẽ sáng hơn rất nhiều và sẽ làm giảm đi rất đáng kể hiện tượng cột nào có nhiều điểm sáng thì mờ và ít điểm sáng thì rỏ, nói chung khi có tụ này thì sẽ làm cho bảng quang báo rỏ và sáng điều các led hơn.

electronicltv
26-12-2007, 09:54 PM
Tụ 10uF có chức năng cản thiện cạnh xung: Khi Y7 ở mức 0 thì điện áp trên cực B của Q1 gần bằng 5V, tụ điện được nạp điện. Khi Y7 chuyển lên mức 1, điện áp trên cực B của Q1 gần bằng điện áp trên Y7 + điện áp trên tụ => Q1 tắt nhanh và áp trên cực B của Q1 > 5V rất nhiều.Khi Y7 đang ở mức 1, tụ điện xả điện qua điện trở, Y7 chuyển xuống mức 0, dòng qua cực B của Q1 gồm dòng qua điện trở và dòng nạp tụ rất lớn => Q1 dẫn rất nhanh, dòng dẫn mạnh. Vì vậy tác dụng cải thiện cạnh xung của Q1 vô tình tạo xung nhiễu > 5V làm ảnh hưởng đến PIC => reset PIC. Tùy vào khả năng chịu nhiễu và dòng tải của 877 hay 4550 sẽ cho kết quả khác nhau. Vì vậy trong ứng dụng này không nên sử dụng tụ điện cải thiện cạnh xung. Ta chỉ cần giảm điện trở 4.7k xuống khoảng 2.2k và gắn thêm điện trở 10k từ cực B lên VCC là hoạt động tốt. Nên gắn thêm điện trở hạn dòng cho Led.

tungtot_vl
27-12-2007, 05:01 PM
Tụ 10uF có chức năng cản thiện cạnh xung: Khi Y7 ở mức 0 thì điện áp trên cực B của Q1 gần bằng 5V, tụ điện được nạp điện. Khi Y7 chuyển lên mức 1, điện áp trên cực B của Q1 gần bằng điện áp trên Y7 + điện áp trên tụ => Q1 tắt nhanh và áp trên cực B của Q1 > 5V rất nhiều.Khi Y7 đang ở mức 1, tụ điện xả điện qua điện trở, Y7 chuyển xuống mức 0, dòng qua cực B của Q1 gồm dòng qua điện trở và dòng nạp tụ rất lớn => Q1 dẫn rất nhanh, dòng dẫn mạnh. Vì vậy tác dụng cải thiện cạnh xung của Q1 vô tình tạo xung nhiễu > 5V làm ảnh hưởng đến PIC => reset PIC. Tùy vào khả năng chịu nhiễu và dòng tải của 877 hay 4550 sẽ cho kết quả khác nhau. Vì vậy trong ứng dụng này không nên sử dụng tụ điện cải thiện cạnh xung. Ta chỉ cần giảm điện trở 4.7k xuống khoảng 2.2k và gắn thêm điện trở 10k từ cực B lên VCC là hoạt động tốt. Nên gắn thêm điện trở hạn dòng cho Led.

đúng như anh nói khả năng chịu dòng của 877 tốt hơn 4550. em đã cho bộ đệm vào portb và led để khéo dòng xuống max. còn portb chỉ điểu khiển bộ đệm quả nhiên là 4550 không reset nữa và chạy rất ổn định. tìm hoài mới ra đúng là khổ thật.

tungtot_vl
31-12-2007, 08:16 AM
còn một vấn đề này nữa em chưa giải quyết được mong các anh giúp em luôn.
em viết chương trình cho gởi ký tự từ pc xuống pic.
nếu chương trình ngắn thì sau khi thực hiện ngắt để nhận tín hiệu từ pc thì chương trình quay về vị trí tại điểm ngắt bình thường để thực hiện các lệnh tiếp theo.
nhưng nếu chương trình quá dài thì sau khi ngắt để thực hiện tín hiệu từ pc xuống nó không quay về vị trí cũ nữa. do đó ko thực hiện các lệnh tiếp theo được. nhưng nếu tiếp tục gởi tín hiệu từ pc xuống thì nó vận nhận bình thường.
có phải vì chương trình quá dài nên sau khi thực hiện ngắt nó nhảy không tới được vị trí cũ không hả các anh.

footballer
27-01-2008, 01:38 AM
Chào các anh, em đang học con PIC18F4550 theo luồng này, có anh nào có thể send cho em quyển tài liệu "USB complete" được không?
email của em: quang.dktd@gmail.com

tungtot_vl
14-02-2008, 03:26 PM
chào các anh. em dùng mạch nạp propic2, winpic800. nạp bình thường bằng socket và icsp cho pic 877 nhưng riêng pic 18 thì chỉ nạp được chương trình trên socket còn nạp bằng icsp thì không được. đã thử cả 18f4550 và 18f4580 qua cổng ICSP nhưng Winpic không nhận dạng được. vì sao các đại ca chỉ cho em biết với

namqn
14-02-2008, 05:27 PM
chào các anh. em dùng mạch nạp propic2, winpic800. nạp bình thường bằng socket và icsp cho pic 877 nhưng riêng pic 18 thì chỉ nạp được chương trình trên socket còn nạp bằng icsp thì không được. đã thử cả 18f4550 và 18f4580 qua cổng ICSP nhưng Winpic không nhận dạng được. vì sao các đại ca chỉ cho em biết với
Một số PIC18 nhạy cảm với nhiễu trên các chân PGD và PGC khi nạp chương trình. Khi nạp bằng socket ở trên mạch nạp, bạn không nối vi điều khiển với bất kỳ mạch ngoài nào, và các đường tín hiệu thường khá ngắn (chỉ vài cm). Khi nạp bằng ICSP thì bạn thường dùng cáp để nối từ mạch nạp sang mạch đích, cáp này có thể bị nhiễu. Ngoài ra, các mạch ngoài nối vào vi điều khiển cũng cần được thiết kế thích hợp để không ảnh hưởng đến việc nạp bằng ICSP. Bạn đọc thêm ở luồng sau về một số điều cần chú ý khi dùng ICSP (chú ý post #15):

http://www.picvietnam.com/forum/showthread.php?t=429

Thân,

tallht
18-07-2008, 09:38 AM
bang chủ không học nữa ah?

tranhuyky
17-04-2009, 12:06 PM
Chào mọi người.
Mình đang làm với 18F4550 và CCS. Mình gặp vấn đề về bộ nhớ.
Hiện tại chương trình của mình chiếm 60% RAM và 100% ROM.
Mình viết thêm thì bị báo không đủ bộ nhớ.
Có cách nào giải quyết không?
Mong mọi người giúp đở.

tungtot_vl
17-04-2009, 03:53 PM
có thể dung pic có rom, ram lớn hơn để thay nhưng 4550 chạy ở 48M nên nhanh hơn các con khác một tý. nếu bạn ko dùng chức năng giao tiếp USB thì có thể dùng pic 18f4680 có rom, ram gấp đôi 18f4550

manhha2799
17-04-2009, 10:57 PM
Có con 18f4685 còn có bộ nhớ ROM RAM lớn hơn mấy con khác mà chân Dip. Bạn thử dùng con này cũng oki.

newboystylew
14-05-2009, 01:22 AM
bang chủ ơi cho em hỏi có con IC nào có tính năng ngược lại con IC 74hc154 không? 74154 nay giai mã ngõ ra tích cực mức thấp giờ em mún cũng giống như con 74154 này nhung ngõ ra tích cực mức cao.
em đang cần gấp bang chủ giúp em zới nha. thask nhìu

nongdanngheo
25-10-2009, 08:35 PM
Câu hỏi 6: Vì sao khi học 18F, thì F lại chọn 18F4550 để học? Không ai

pic 18f4450 có thể giao tiếp tốt với PC và nó còn có thể dùng làm con master để điều khiển các con slaver khác trong việc điều khiển nhiều động cơ liên tục
em chỉ biết vậy thui vì em đang làm robot scara với 3 động cơ nên em dùng 18f4450 làm con master và 3 con slaver là 18f4431.

tam.sakura
08-01-2010, 11:16 AM
hihi!
Nhờ các bật tiền bối giúp em nhé! em mới học Pic, ai có souce code chớp - tắt đèn 8Led,cho em xin nhé!
arigatoo gozaimasu!

bravesoldier
22-02-2010, 11:31 AM
#include <18f4550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,PLL3,CPUDIV1,V REGEN
#device *=16 ADC=8
#use delay(clock=48000000) // thạch anh lắp vào mạch là 12MHz

#use fast_io(b)
#byte portb=0xf81
#byte latb=0xf8a

byte numm[]={
0b01000000, //- 0
0b01111001, //- 1
0b00100100, //- 2
0b00110000, //- 3
0b00011001, //- 4
0b00010010, //- 5
0b00000010, //- 6
0b01011000, //- 7
0b00000000, //- 8
0b00010000 //- 9
};

void main()
{
byte i;

set_tris_b(0);
i=0;
while(true)
{
latb=numm[i];
delay_ms(250);
i++;
if (i==10) i=0;
}
}

mong các tiền bối xem xét và góp ý. mạch này cho LED 7 thanh đếm từ 0->9 em mô phỏng bằng proteus 7.6 (mới down hôm qua) cũng ok. em muốn học thêm về USB để làm quang báo có trao đổi data với máy tính. :)
http://i387.photobucket.com/albums/oo318/bravesoldier/a.gif

thundernhut
09-05-2010, 08:52 PM
ở trang 4 thấy có bro nào có vẻ giỏi quá, liệt kê liên hồi cách config cho 18f4550 thì phải
Nhưng mà tiếc người ấy có hiểu biết nhưng hoặc là hiểu biết nữa vời hoặc không có tâm khi chi dẫn người mới.
Cách chỉ đó chỉ là cho người ta con cá không cho cần câu, ví như truyền cho quyền cước chưa truyền cho nội công tâm pháp. tiếc quá

Minh tìm hiểu mãi mới biết ý nghĩa các phần config nó nằm trong cái file tên_PIC_tương_ứng.INC trong thư mục cài đặt của phần mềm MPLAD chánh hãng.

vào đó xem nó có liệt kê mọi thông số, ý nghĩa và nhiều tùy chọn cho 1 thông số theo đó mà ta cấu hình cho đúng ý muốn
Còn bạn gì chỉ cho mình 1 đống dòng config mẫu thế là mình máy móc copy vào. Đáng tiếc nếu bạn gì cũng đang học theo kiểu này thì mình khuyện bạn sựa lại nếu ko thì thành tựu chỉ có hạn thôi.
còn nếu bạn giấu nghề thì ok , biểu diễn như vậy là vừa đủ khoe tài mà không ai biết gì cả. Bạn khéo lắm . bái phục bái phục

manh.monitor
23-07-2010, 03:16 AM
ô hay, cái luồng này là dành cho những người mới học pic 18f.sao mấy người cứ hỏi lằng nhằng đâu đâu vậy
bác F ko lên nữa ah, đang học mà

manh.monitor
23-07-2010, 03:18 AM
em là người mới tìm hiểu về pic 18f.đang muốn các bác chỉ giùm thì các bác cứ chuyền hết sang các vấn đề đâu đâu thế

phamhiepst
23-07-2010, 09:11 AM
mình ko hiểu dòng #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,PLL3,CPUDIV1,V REGEN
để lảm gì nữa

bravesoldier
25-07-2010, 04:59 PM
mình ko hiểu dòng #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,PLL3,CPUDIV1,V REGEN
để lảm gì nữa

PLL3 là liên quan đến thạch anh cứng 12MHz để cấp 12/3=4MHz cho bộ nhân tần, CPUDIV1 - 96/2=48MHz cấp clock cho CPU. Mình xem các post của luồng này mà rút ra chứ xem datasheet thì lờ mờ lắm - tiếng Anh kém mà. Cái mạch trên mình cắm breadboard đã chạy được, song có lẽ config vẫn chưa chuẩn.

bravesoldier
15-01-2011, 11:13 PM
Có bác nào dùng CCS-C và PIC18F4550 pha màu cho LED RGB chưa?
Em đang thử mà chật vật quá.

hieu89tx
01-03-2011, 06:22 PM
chào các bạn
có ai làm việc với dòng pic18F97j60 chưa cho mình hỏi với
mình đang gặp khó khăn trong việc dùng con pic này để truyền thông với vdk khác qua modul ESUART ,ứng dụng để đo lường và dk nhiệt độ ,độ ẩm hiển thị lcd ,
ai có sơ đồ nguyên lý giúp mình với

hieu89tx
01-03-2011, 06:27 PM
chào các bạn
có ai làm việc với dòng pic18F97j60 chưa cho mình hỏi với
mình đang gặp khó khăn trong việc dùng con pic này để truyền thông với vdk khác qua modul ESUART ,ứng dụng để đo lường và dk nhiệt độ ,độ ẩm hiển thị lcd ,
ai có sơ đồ nguyên lý giúp mình với

hieu89tx
05-03-2011, 10:47 AM
sao k bac nao giup em ha

nhoczin
06-03-2011, 07:27 PM
Apnote của Microchip cho 18F97J60 về Ethernet đủ cả, lên Microchip mà seach, Dùng 18F97J60 để làm những cái kia liệu có phải lấy máy chém ra thịt gà ko ? còn ứng dụng của bạn chỉ cần mấy em 16F low cost là đủ, vd 16F887 có ESUART

hieu89tx
07-03-2011, 01:46 PM
nhưng thầy giáo giao đề tài la dùng con này ,, và phải giao tiếp với 2 con vdk , mà 16f887 nó chỉ có 1 eusart thui ,em mới học về pic ,mong anh chỉ giúp với

hieu89tx
11-03-2011, 11:39 PM
mọi người có ai đã làm về cái nay giup minh voi
minh nan qua

goldstar09
07-04-2011, 11:15 AM
Em cung tim hieu ve pic 18f4550, nhung sao gio moi nguoi khong tham gia nua vay?

caremlanh
16-04-2011, 03:55 PM
Dạo này không ai dạy ban chủ học pic nữa àh. có lẽ đã "nội công thâm hậu rồi", vậy có ai giúp mình không vậy???????????????

buồn quá đã lâu lắm rồi nhưng k ai trả lời hết

Bạn mở thư mục MPASM Suite, mở 2 file P18F1320.INC và P18f4520.INC
Trong 2 file đó tìm đến đoạn nói về OSC (khoảng gần cuối) và so sánh các thanh ghi, kết quả như sau
FSCM -> FCMEN
BOR -> BOREN
STVR -> STVREN
INTIO2 -> INTIO67

Sau đó tìm đoạn CONFIG, thì thấy giá trị khác nhau ở đây thôi

_BOR_ON_2L EQU H'FF' ; Brown-out Reset enabled
_BOR_OFF_2L EQU H'FD' ; Brown-out Reset disabled

_BOREN_OFF_2L EQU H'F9' ; Brown-out Reset disabled in hardware and software
_BOREN_ON_2L EQU H'FB' ; Brown-out Reset enabled and controlled by software

Các thanh ghi kia tên thì khác nhưng giá trị ON, OFF giống nhau
Chúc bạn thành công. Bạn nên đưa code lên thì dễ kiểm tra hơn nha :D

caremlanh
16-04-2011, 05:58 PM
gửi project lun đi bạn :D
bạn để code ở trên trong thẻ [ code]...[ /code] đi, để vậy dài quá đọc hoa mắt @-)

caremlanh
16-04-2011, 06:43 PM
mail minh đi quangtri7121@gmail.com
yahoo thì dưới avatar đó

headman8x
15-05-2011, 04:02 AM
Chào tất cả mọi người!
Các bạn giúp mình cách đổi Port xuất dữ liệu từ thư viện LCD420.c với.
hiện tại trong thư viện LCD420.C của trình biên dịch CCS complier mặc định PortB xuất dữ liệu ra LCD 4x16 . Bây giờ mình muốn thay portB bằng PortD cho phù hợp với bài toán của mình , mình đã thử nhưng không đúng. Mong mọi người giúp đỡ

cảm ơn tất cả !

////////////////////////////////////////////////////////////////////////////
//// LCD420.C ////
//// Driver for common 4x20 LCD modules ////
//// ////
//// lcd_init() Must be called before any other function. ////
//// ////
//// lcd_putc(c) Will display c on the next position of the LCD. ////
//// The following have special meaning: ////
//// \f Clear display ////
//// \n Go to start of second line ////
//// \b Move back one position ////
//// ////
//// lcd_gotoxy(x,y) Set write position on LCD (upper left is 1,1) ////
//// ////
//// lcd_getc(x,y) Returns character at position x,y on LCD ////
//// ////
////////////////////////////////////////////////////////////////////////////
//// (C) Copyright 1996,1997 Custom Computer Services ////
//// This source code may only be used by licensed users of the CCS C ////
//// compiler. This source code may only be distributed to other ////
//// licensed users of the CCS C compiler. No other use, reproduction ////
//// or distribution is permitted without written permission. ////
//// Derivative programs created using this software in object code ////
//// form are not restricted in any way. ////
////////////////////////////////////////////////////////////////////////////

// As defined in the following structure the pin connection is as follows:
// B0 enable
// B1 rs
// B2 rw
// B4 D4
// B5 D5
// B6 D6
// B7 D7
//
// LCD pins D0-D3 are not used and PIC B3 is not used.

struct lcd_pin_map { // This structure is overlayed
BOOLEAN enable; // on to an I/O port to gain
BOOLEAN rs; // access to the LCD pins.
BOOLEAN rw; // The bits are allocated from
BOOLEAN unused; // low order up. ENABLE will
int data : 4; // be pin B0.
} lcd;

#byte lcd = 6 // This puts the entire structure
// on to port B (at address 6)

#define lcd_type 2 // 0=5x7, 1=5x10, 2=2 lines


BYTE const LCD_INIT_STRING[4] = {0x20 | (lcd_type << 2), 0xc, 1, 6};
// These bytes need to be sent to the LCD
// to start it up.


// The following are used for setting
// the I/O port direction register.

struct lcd_pin_map const LCD_WRITE = {0,0,0,0,0}; // For write mode all pins are out
struct lcd_pin_map const LCD_READ = {0,0,0,0,15}; // For read mode data pins are in


BYTE lcdline;

BYTE lcd_read_byte() {
BYTE low,high;

set_tris_b(LCD_READ);
lcd.rw = 1;
delay_cycles(1);
lcd.enable = 1;
delay_cycles(1);
high = lcd.data;
lcd.enable = 0;
delay_cycles(1);
lcd.enable = 1;
delay_us(1);
low = lcd.data;
lcd.enable = 0;
set_tris_b(LCD_WRITE);
return( (high<<4) | low);
}


void lcd_send_nibble( BYTE n ) {
lcd.data = n;
delay_cycles(1);
lcd.enable = 1;
delay_us(2);
lcd.enable = 0;
}


void lcd_send_byte( BYTE address, BYTE n ) {

lcd.rs = 0;
while ( bit_test(lcd_read_byte(),7) ) ;
lcd.rs = address;
delay_cycles(1);
lcd.rw = 0;
delay_cycles(1);
lcd.enable = 0;
lcd_send_nibble(n >> 4);
lcd_send_nibble(n & 0xf);
}


void lcd_init() {
BYTE i;

set_tris_b(LCD_WRITE);
lcd.rs = 0;
lcd.rw = 0;
lcd.enable = 0;
delay_ms(15);
for(i=1;i<=3;++i) {
lcd_send_nibble(3);
delay_ms(5);
}
lcd_send_nibble(2);
for(i=0;i<=3;++i)
lcd_send_byte(0, LCD_INIT_STRING[i]);
}


void lcd_gotoxy( BYTE x, BYTE y) {
BYTE address;

switch(y) {
case 1 : address=0x80;break;
case 2 : address=0xc0;break;
case 3 : address=0x90;break;
case 4 : address=0xd0;break;
}
address+=x-1;
lcd_send_byte(0,address);
}

void lcd_putc( char c) {
switch (c) {
case '\f' : lcd_send_byte(0,1);
lcdline=1;
delay_ms(2);
break;
case '\n' : lcd_gotoxy(1,++lcdline); break;
case '\b' : lcd_send_byte(0,0x10); break;
default : lcd_send_byte(1,c); break;
}
}

char lcd_getc( BYTE x, BYTE y) {
char value;

lcd_gotoxy(x,y);
lcd.rs=1;
value = lcd_read_byte();
lcd.rs=0;
return(value);
}

hc.coltech
17-08-2011, 10:46 AM
Các pro giúp hộ cái..em dùng pic 18F2550 định built ra file .hex nhưng không có thư viện của p18cxxx.h nên ko built được ..pro nào có share cho với ...thanks nhiều

pdkxlily
28-09-2011, 04:11 AM
mình đang làm mạch nạp dùng con 18f4550 giao tiếp usb . bạn nào share mình đc ko

nhat_minh1
07-10-2011, 05:09 PM
vậy ma nói học lại tu đầu

nhat_minh1
07-10-2011, 05:12 PM
mọi người viết từng đoạn code cơ bản + mạch (có kèm chu thích nha)
gửi lên cho em học với,
bất đầu bằng việc điều khiển led trước di
thanks cả nhà

trungduc
17-02-2012, 11:38 AM
Mình mới mua 1 con pic18f4550 về học tài liệu về con này ít so với 16f877a. Mình bắt đầu bằng bài bật tắt LED nhưng vẫn chưa được. Các bạn nhiệt tình cho mình 1 đoạn code về tham khảo với. (ASM nha ).
Cảm ơn nhiều!

kyanh911
18-04-2012, 05:35 PM
trungduc: hoc asm làm chi cho khổ....xài ccs đi bác ơi

kyanh911
18-04-2012, 05:50 PM
em có đoạn code này giao tiếp lcd 4bit đã chạy ổn định....chân rs,rw,e đã nói trong code. còn chân D7 của LCD nối chân RB0, D6 nối RB1, D5 nối RB2, D4 nối RB3

#include<18f4550.h>
#fuses nowdt,hs,noprotect,nolvp
#use delay(clock=20000000)
#use fast_io(b)
#define rs pin_b7
#define rw pin_b6
#define e pin_b5

int8 dao(int8 xx)
{
int8 buff;
buff=0;
buff+=(xx>>7)&0x01;
buff+=(xx>>5)&0x02;
buff+=(xx>>3)&0x04;
buff+=(xx>>1)&0x08;

buff+=(xx<<1)&0x10;
buff+=(xx<<3)&0x20;
buff+=(xx<<5)&0x40;
buff+=(xx>>7)&0x80;
return buff;
}

void ghilenh(int8 malenh)
{
int8 tam;
tam=dao(malenh);
output_b(tam&0xf); //xuat 4 bit cao truoc
output_low(rs); //chon thanh ghi lenh
output_low(rw); //cho phep ghi
delay_us(2);
output_high(e);
delay_us(5);
output_low(e);
delay_us(500);

output_b(tam>>4); //xuat 4 bit thap sau
output_low(rs);
output_low(rw);
delay_us(2);
output_high(e);
delay_us(5);
output_low(e);
delay_us(500);
}

void ghikytu(int8 makytu)
{
int8 tam;
tam=dao(makytu);
output_b(tam&0xf);
output_high(rs);
output_low(rw);
delay_us(2);
output_high(e);
delay_us(5);
output_low(e);
delay_us(500);

output_b(tam>>4);
output_high(rs);
output_low(rw);
delay_us(2);
output_high(e);
delay_us(5);
output_low(e);
delay_us(500);
}
void khoitaolcd()
{
ghilenh(0x28);
ghilenh(0x28); //mã 28 chu k phai 38
delay_ms(10);
ghilenh(0x28); //vi giao tiep 4 bit
delay_ms(10);

ghilenh(0x28);
delay_ms(1);
ghilenh(0x0c);
delay_ms(1);
ghilenh(0x01);
delay_ms(1);
ghilenh(0x06);
delay_ms(100);
}
main()
{
set_tris_b(0x00);
khoitaolcd();
ghikytu('N');
ghikytu('b');
}


Vấn đề thắc mắc ở đây là sao đưa qua port D thì lại hổng chạy?