Title: พอจะมีตัวอย่าง picสื่อสารแบบ usbบ้างไหมครับ Post by: s_engine on August 26, 2009, 10:28:31 AM ท่าน smitdh ครับ พอจะมีข้อมูลให้ศึกษาเกี่ยวกับการสื่อสารแบบ usb ของ pic 18f4550 หรือแนวทางว่าจะต้องเริ่มต้นศึกษา ตรงส่วนไหน ก่อนดีครับ
ขอบคุณครับ Title: Re: พอจะมีตัวอย่าง picสื่อสารแบบ usbบ้างไหมครัũ Post by: smitdh on August 26, 2009, 01:30:38 PM ไม่ทราบว่าคุณ s_engine ได้ดูหน้านี้หรือยังครับ
http://www.thaimicrotron.com/webboard2/index.php?topic=167.msg465#msg465 Windows Application จะเป็น C# ซึ่งคอยรับข้อมูลและแสดงผล ส่วน PIC ก็จะส่งข้อมูล - เมื่อกดปุ่ม - ส่งค่า A2D - แสดงผล string Title: Re: พอจะมีตัวอย่าง picสื่อสารแบบ usbบ้างไหมครัũ Post by: s_engine on August 31, 2009, 09:47:00 AM ถ้างั้น ผมก็ต้อง เป็น ใน C# ด้วยนะสิครับ เหอะๆ เดี๋ยวจะหา C#มาลงก่อน แต่ โค้ด PIC ทำไม คอมไพล์ ไม่ผ่าน ผมอยากจะเบิร์นลง pic ของผม เพื่อดูผลการทำงาน เขาไม่ได้ให้ไฟล์ .hex มาด้วย
ตอนนี้อยากได้แบบ ส่งคำสั่งไป on led สักดวง ผ่าน usb เพื่อเริ่มต้นทำความเข้าใจ แล้ว C# กับ VB ต่างกันไหมครับ คือถ้าจะให้ผมเล่น ผมอยากเล่น VBมากกว่า แต่ก็ไม่เคยเล่นทั้ง 2 ตัว คงมานั่งศึกษากันพอสมควร อีก ระยะทางอีกยาวไกล แต่ก็ต้องทำให้ได้ ถ้ามี ลิ้งค์ ดีๆ แนะนำบ้างนะครับ ขอบคุณ ครับ Title: Re: พอจะมีตัวอย่าง picสื่อสารแบบ usbบ้างไหมครัũ Post by: smitdh on September 01, 2009, 12:31:23 AM ผมลองคอมไพล์ก็ผ่านนะครับ ทั้ง CCS เวอร์ชั่น 3.249, และ 4.074
ผมคอมไพล์เป็น HEX ไฟล์รวมไว้ให้แล้วลองโหลดดูใหม่ http://www.thaimicrotron.com/Referrence/Journals/Board4550.rar - สำหรับ C# ,VB ผมเองก็ดูๆ แบบผิวเผินครับ พออ่านออก ถอดความได้ - ภาษาที่น่าใช้ก็น่าจะเป็นภาษาซีครับ เพราะเป็นพื้นฐานของหลายๆ ภาษาไปแล้วเช่น Java,Python,php ทำให้พอศึกษาไปแล้ว จะได้โครงสร้างไปอีกหลายภาษา ตัวผมเองใช้ Borland C++ Builder อยู่เพราะง่ายในการพัฒนากับไมโครฯ - แล้วคอมไพล์เลอร์ในระดับไมโครส่วนใหญ่ก็มักจะมีภาษาซี ทำให้เราสามารถใช้รูทีนเดียวกันได้ คือว่าทำรูทีนไว้อันเดียวใช้ได้หมดเลย - บางครั้งในการศึกษาโครงสร้างข้อมูลขนาดใหญ่เช่น GPS จะเขียนลง CCS เลยที่เดียวก็ลำบากเพราะหน่วยความจำ RAM มีน้อย ผมก็นำมาเขียนบน C++ Builder ก่อน(เขียนแบบ ANSI C) เพราะสามารถตรวจสอบและ debug ได้ง่าย พอเสร็จแล้วค่อย copy code มาใส่ใน CCS ทำให้ไม่ต้องโปรแกรม MCU หลายๆ ครั้งเพราะจะทำให้ MCU อายุสั้นลงไปด้วย - ส่วน C# เองไมโครซอฟท์ ก็เอาหลักการมาจาก Java แต่มาทำทำเป็น dot net framework มันก็เลยไม่แตกต่างจาก Java+C มากนักทำให้เราศึกษาต่อไปได้ง่าย PICKit2 ก็ยังใช้ C# เลยแถมยังแจกโค็ดอีก - หนทางอีกยาวไกล แต่ที่สำคัญที่ก้าวแรกครับ Title: Re: พอจะมีตัวอย่าง picสื่อสารแบบ usbบ้างไหมครัũ Post by: s_engine on September 01, 2009, 11:00:54 AM ขอคุณมากครับ ผมได้มาจาก hobby แล้ว ลองแล้ว ผลปรากฎว่า
-led 4 ดวงไม่ทำงาน -อ่านอนาลอคไม่ทำงาน -สวิตช์ 2 ตัว ปล่อยพอร์ตว่าง มันกลับอ่านว่าถุกกดสลับไปๆ อยุ่นั่นตลอดเวลา พอต่อสวิตช์เข้าไป(โดยมี r pullup เรียบร้อย มันแจ้งไม่มีการกด แต่พอกด มันก็ไม่บอกว่าถูกกด ขณะที่มีการต่อสวิตช์ใช้จริง ค่าอนาลอค โชว์ทั้ง 2 ช่อง โชว์มาครึ่งหลอด ทั้งๆไม่ได้ต่อ -lcd แสดงผลได้ดี ส่งข้อความออกได้ แต่ได้แค่ 15 ตัวอักษร แต่เดียวจะลองของท่านพี่ อีกทีครับ - ขอแถมอีกนิดครับ lcd ขอผมมันรวน ไม่เกี่ยวกับโครงงานนี้นะครับ แค่ทดสอบ lcd มันจะโชว์แค่บรรทัดเดียว ทั้งที่ส่งไป 2 กด รีเซต ก็ กลับมาทำงานปกติ แต่กดรีเซต ซ้ำๆ มันก็เป็นอีกหายไป 1 บรรทัด กดอีก ก็ปกติ เป็นแบบนี้ตลอด ส่วนพอร์ตทุกพอร์ตก่อนหน้านี้ได้ทดสอบโดย สั่ง led ติด ดับ ทีละพอร์ต ทำงานได้ปกติ รีเซตได้ ปกติ ผมลองสั่งled ติดดับพร้อมทั้งโชว์ lcd อีก lcd รวนเหมือนเดิม อีกทั้ง led ก็รวนไปด้วย เป็นเพราะ c รีเซต หรือปล่าว แม้แต่จ่ายไฟครั้งแรก ก็ทำงานได้มั่ง รวนมั่ง ยังไม่ได้เอาไปโรงงานที มันก็ปั่นป่วนซะละ Title: Re: พอจะมีตัวอย่าง picสื่อสารแบบ usbบ้างไหมครัũ Post by: smitdh on September 01, 2009, 12:41:23 PM ที่ว่าไม่ทำงานหมายถึงในเซมิฯ ใช่ไหมครับ ผมทดสอบดูแล้วก็ใช้ได้ปกติครับ
ลองดูวงจรอีกทีนะครับ อินพุตทุกตัวที่ไม่ได้ใช้จะปล่อยลอยไว้ไม่ได้นะครับ ทั้งอนาลอกและดิจิตอล จากวงจรให้ต่อ R pullupไว้ ทุกตัวครับ Title: Re: พอจะมีตัวอย่าง picสื่อสารแบบ usbบ้างไหมครัũ Post by: s_engine on September 01, 2009, 04:15:48 PM ตอนนี้ ทำงานได้ ทุกอย่างแล้วครับ sd card ไม่ได้เทส
มีปัญหาทางฮาร์ดแวร์นิดหน่อยในตอนแรก อันนี้ใช้โค้ดของพี่ และของ hobbypic ลองทั้ง 2 รอบ แล้วก็ที่ผมว่ามัน รวน มันยังเกิดอยู่นะครับ คือการกด รีเซตครับ ผมลองหลาย รอบแล้ว ประมาณนะครับ 1 ใน 5 pic จะไม่ทำงาน 1 ครั้ง ในการกดรีเซต แต่เมื่อทำงานได้ก็จะทำงานได้ปกติ 1. ปัญหาที่เจอ lcd แสดง 1 บรรทัดบนบัซเซอร์ ทำงาน ฟังก์ชั่นอื่นทำได้หมด แต่ การส่งเทค จำไม่ทำงาน ปัญหานี้จะเป็นบ่อยตอนเริ่มจ่ายไฟ ต้องกด รีเซตทุกครั้ง 2. ทุกอย่างหายหมดหรือ lcd แสดงค่าไม่ถูก ทำงานไม่ได้เลย อันนี้จะเกิดขึ้น น้อยหน่อย ไม่รู้ว่าเป็นที่ pic หรือป่าว แต่ก็เริ่มทำงานได้แล้ว ผมอยากจะให้ท่านเอา โค้ด C# มาลงให้หน่อยครับ ขอบคุณมากครับ Title: Re: พอจะมีตัวอย่าง picสื่อสารแบบ usbบ้างไหมครัũ Post by: smitdh on September 02, 2009, 05:31:43 PM เรื่องปุ่มรีเซ็ทลองดูของ PICDEV40 ซิครับ
http://www.thaimicrotron.com/Project/Picdev40/PICDEV40.htm โค้ด C# ที่ว่าเกี่ยวกับเรื่องอะไรครับ ในเซมิ(4550)ที่ให้ Link ไว้ ก็มีนะครับ Title: Re: พอจะมีตัวอย่าง picสื่อสารแบบ usbบ้างไหมครัũ Post by: s_engine on September 03, 2009, 01:50:22 PM ครับผม ได้แล้วครับ แต่ผมลอง คอมไพล์ มันฟ้อง
(http://images.temppic.com/03-09-2009/images_vertis/1251957603_0.07963300.bmp) แบบนี้อะครับ แล้วโค้ด C# นี่ คนละตัวกับ ซอฟแวร์ ที่เขาให้ลองเล่น ใช่ไหมครับ ผมนึกว่าโหลดมาผิด เห็นมี led 4 ดวง send text และ a to d อย่างอื่นไม่มี ที่มัน รวน เป็นเพระโค้ดนะครับผมว่า ผมลอง สั่ง LCD อักษรวิ่งไปมา กดรีเซต ไม่มีปัญหาเลย ก่อนหน้านี้ผมก็เลยลอง โปรแกรม LCD อักษรวิ่ง ผ่าน USB ทาง bootload มันก็เป็นเหมือนกัน อาการเหมือนกันเลย แต่ถ้าโปรแกรมผ่านเครื่องโปรแกรม ทำงานได้ปกติ ครับ ตอนนี้อยากเขียนโค้ด ด้วยตัวเอง ทั้ง pic และ C# เอาแค่กดปุ่มจาก C# แล้ว PIC ส่งไป LED 1 ดวงให้ได้ก่อน เพื่อดูลักษณะการรับส่ง มันมีโปรโตรคอลที่แน่นอนไหมครับ (ผมไม่รุ้เขาใช้คำนี้หรือป่าว ขอเรียกแบบนี้ละกัน ) ว่า 1ชุดที่ส่ง กับ 1ชุดที่รับ มีขนาดของข้อมูลที่แน่นอน มันส่งกันยังไง หรือสามารถกำหนด ขนาดที่จะส่งได้เหมือน การสื่อสารแบบ อนุกรม ในโค้ด pic ลองได้อ่านก็พอจะเข้าใจนิดๆ เหลือ แต่ไฟล์ที่ include เกี่ยวกับ usb ยังไม่ได้อ่าน คืนจะนั่งดูอีกที ขอบคุณครับ Title: Re: พอจะมีตัวอย่าง picสื่อสารแบบ usbบ้างไหมครัũ Post by: s_engine on September 08, 2009, 12:26:25 PM หลังจาก ลองแล้วลองอีก มา 1 วัน หาส่วนที่ทำ pic ผมรวน ก็ได้เจอว่า การประกาศ
#fuses HS // จะใช้งานได้ปกติ #fuses HSPLL // จะต้องรีเซตหลายครั้ง และ การจ่ายไฟครั้งแรกก็ทำงานไม่ได้ ไม่ทราบว่ามันต่างกันยังไงหรอครับ HSPLL เห็นกำหนด clock 48 M แต่ต่อจริงแค่20 ถ้ากำหนด clock 20 จะทำให้การทำงานเร็วกว่าเดิม ผมละงง แล้วก็กลัว หากงานต้องประกาศ HSPLL แล้ว งานผมคงใช้งานจริงไม่ได้แน่ๆ ไม่มีใครมานั่งกดรีเซต อยุ่เวลาก่อนใช้งาน แต่ถ้าเริ่มทำงานได้ก็จะไม่มีปัญหาเลย Code: #include <18F4550.h> มีใครเล่นเบอร์นี้แล้วเจอปัญหาแบบผมมั่ง Title: Re: พอจะมีตัวอย่าง picสื่อสารแบบ usbบ้างไหมครัũ Post by: smitdh on September 08, 2009, 05:57:32 PM - หากการทดลองทั่วไปเราสามารถกำหนดฟิวส์เป็น
#fuses XT <=4MHz #fuses HS > 4MHz - แต่ในการสื่อสารข้อมูลแบบ USB High speed ของ PIC18Fx550 จะต้องใช้ clock ที่มีความถี่สูง ซึ่งวงจรภายในสามารถสร้างความถี่ Phase Lock Loop (PLL) จากฐานเวลา ที่ใช้คริสตอลปกติครับ โดยการกำนดฟิวส์ เป็นแบบ HSPLL รวมทั้งกำหนดพารามิเตอร์ด้วยเช่น #fuses HSPLL,USBDIV,PLL5,CPUDIV1,VREGEN +ฟิวส์ตัวอื่นๆ - ผมทดสอบโปรแกรมที่ใด้มาจากวารสารเซมิฯ แล้วปกติครับ ลองดูวงจรอีกทีครับ โดยเฉพาะที่ขา MCLR - อีกอย่างหนึ่งครับ ฟังดูแล้วคล้ายๆกับอาการ ของภาคจ่ายไฟ กับ OSC ไม่ทราบว่าต่อวงจรที่ใช้ทดลองอย่างไร บนบอร์เอนกประสงค์ หรือว่าบนโปรโตบอร์ด - ทั้งสองกรณี จะต้องใส่ตัวเก็บประจุ 0.1U แบบมัลติเลเยอร์ หรือเซรามิค กับตัวเก็บประจุอิเล็คโตรไลท์ ประมาณ 4.7U ไว้ใกล้ๆ กับขา VDD ของ MCU ด้วย - สายที่ต่อจากภาคจ่ายไฟไม่ควรจะมีขนาดเล็กเกินไป ต่อตรงมาที่ MCU เลย - คริสตรัลไม่ควรต่อสายยาวเกินไปนัก ต่อไว้ให้ใกล้ MCU ที่สุด และควรต่อตัวเก็บประจุ 20-22PF ทั้งสองด้านลงกราวน์ อย่าคิดว่าแค่ลองเฉยๆ ไม่ต้องต่อ เพราะมันจะรวนมาก เมื่อใช้คริสตอล ที่ความถี่สูงๆ ยิ่งใช้ HSPLL ยิ่งแล้ว จะรวนมาก - การต่อบนโปรโตบอร์ด หากการทดลองขั้นแรก สำเร็จแล้ว ต้องการจะใช้ทดลองอย่างอื่นต่อไป ให้จัดอุปกรณ์บนเบอร์ดใหม่ และรื้อสายมาต่อใหม่ ให้กระชับตัดให้สั้นที่สุด ไม่ต้องเสียดายสาย อย่าปล่อยให้กระรุ่งกระริ้ง เดียวจะไม่คุมกับการเสียเวลา Title: Re: พอจะมีตัวอย่าง picสื่อสารแบบ usbบ้างไหมครัũ Post by: s_engine on September 09, 2009, 05:25:32 PM เป็นบอร์ดสำเร็จ ที่ผมทำขึ้น ก่อนจะได้ศึกษา PIC ตัวนี้ สั่งทำ แล้วลงอุปกรณ์
ใช้คริสตัน 20 M ต่อกับ C 22pF ทุกขา vcc มี c 0.1u แบบเซรามิค รีเซตใช้ R 4.7k pullup กับ C 0.1 uF แบบเซรามิค ลงกราวด์ ถ้ากำหนดแบบนี้ LCD ของผม ทำงานไม่มีปัญหา อะไรเลย Code: #fuses HS,PUT,BROWNOUT,NOWDT,NOPROTECT,NOLVP Code: HSpll,BROWNOUT,NOWDT,NOPROTECT,NOLVP,USBDIV,VREGEN,NODEBUG,CPUDIV1,PLL5 จากการสังเกตดูใหม่จากโค้ดด้านบน จะพบว่า LCD ที่รวน จะไปแสดง msg อื่น และวิ่งตามปกติ แต่แสดงแค่ บรรทัดเดียว และการโชหายไป 1 การทำงานแรก โดยรวมคือ ทำงานได้แต่ทำขาดไป ส่วนการสื่อสาร USB ก็มีปัญหาแบบเดียวกัน แต่เมื่อเริ่มทำงานได้ ก็จะไม่มีปัญหาหรือผิดพลาดให้เห็น Title: Re: พอจะมีตัวอย่าง picสื่อสารแบบ usbบ้างไหมครัũ Post by: s_engine on September 11, 2009, 10:30:13 PM ตอนนี้ pic ใช้งานได้แล้วครับ กำลังดูการรับส่งอยู่ การส่งค่า จาก PC ไม่มีปัญหา
แต่การ ให้ PC รับค่าจาก PIC นี่สิ คิดไม่ออกเลย การส่งเป็นลักษณะ packet สมาชิกของ data ตัวที่ 1 เป็นโหมด ตัวที่ 2 เป็น สวิตช์ กำลัง ทำ ดิปสวิคช์ 8 ตัว ให้ค่าไป โชว์ ที่ PC ทำ Lebel แสดงแทน LED ผมจะจัด packetที่ส่งจาก PIC ให้อยู่ ลักษณะ ไหนดี ครับ เพราะจะรับ ค่าจากสวิตช์ทั้ง 8 ตัว Title: Re: พอจะมีตัวอย่าง picสื่อสารแบบ usbบ้างไหมครัũ Post by: smitdh on September 13, 2009, 11:12:46 PM ตอนนี้การรับค่าบน PC ใช้ application ตัวไหนครับใช่ C# ที่เป็นตัวอย่างในเซมิหรือเปล่า ลองดูตัวอย่างการออกแบบ Package ใน http://www.thaimicrotron.com/webboard2/index.php?topic=206.msg644#msg644 Title: Re: พอจะมีตัวอย่าง picสื่อสารแบบ usbบ้างไหมครัũ Post by: s_engine on September 20, 2009, 05:49:42 PM ครับ c# ยกมาจากเซมิ ตอนนี้กำลังเล่นอยู่ ติดตรงโค้ด c#นิดหน่อย ไม่เคยเขียน
ขอบคุณครับ |