วันนี้ผมมีเรื่องอยากจะเล่าให้ฟัง เรื่องต่อวงจรอเลคทรอนิกส์ วงจรแรกในชีวิตที่สหรัฐอเมริกา
สมัยที่เรียนปริญญาตรีในเมืองไทย ผมจำได้อย่างแม่นยำเลยว่า ผมต้องเสียเวลาให้กับการต่อไมโครคอนโทรลเลอร์ กับวงจรภายนอกไปเยอะมากๆ แต่มันก็ได้มาซึ่งประสบการณ์นะครับ ทำให้เรารู้อะไรหลายๆอย่าง เพราะเราสามารถนำทฤษฏีมาปฏิบัติงานได้ ครั้งแรกที่ได้สัมผัส ก็เป็น z80 ครับเป็นบอร์ดสำเร็จรูป เราเริ่มเขียนโปรแกรมก็ต้องทำตามคู่มือที่เขาให้มาเลย ปรากฏว่าไม่ประสบผลสำเร็จเท่าไร เพราะถึงผลลัพธ์จะออกมาได้แต่ เรื่องฮาร์ดแวร์ ได้ความรู้มาน้อยมาก ที่ได้ก็คงจะเป็นแอสเซมบลีละครับ รู้ว่ามันยากเย็นแสนเข็ญยังไง ตอนนั้นก็ปีสามแล้ว ที่ทำไปเพราะการบ้านครับ ก็ต้องใช้มัน พอเทอมสองก็ใช้ 8051 ครับ เบอร์นี้เป็นที่นิยมกันมากในเมืองไทย ผมยังสงสัยอยู่เลยว่าทั้งๆที่เรียน z80 ทั้งฮาร์ดแวร์และซอฟท์แวร์ แต่พอทำโพรเจค เกือบร้อยเปอร์เซนต์จะไม่ใช้ z80 จะหันไปใช้ตัวอื่นกันซะมากกว่า และที่มากที่สุดเห็นจะเป็น 8051 ครับ เพราะมันเป็นชิปเดี่ยว บางรุ่นมี eprom ภายในตัวเลยง่ายดี บางตัวก็มี flash memory เลยยิ่งง่ายไปใหญ่ เดี๋ยวจะทำตารางเปรียบเทียบให้ดูละกันว่ารุ่นไหนดียังไง ก็ง่ายขึ้นมาหน่อย อย่างน้อยเราก็ไม่ได้ไปพึ่งคู่มือบริษัทที่ขายบอร์ดสำเร็จรูปให้เรา โดยที่คู่มือก็โอเคนะ (ก็คงบ่นเขาไม่ได้หรอก) การต่อ 8051 มันง่ายขึ้นมาอีกระดับหนึ่งแต่ปัญหาก็ยังมีอยู่แน่นอน ถ้าใครใจไม่รักจริง หรือไม่อึด ก็จะทำให้เบื่อกับไมโครคอนโทรลเลอร์ไปได้เหมือนกัน บางคนไม่ชอบคอมพิวเตอร์ไปเลย แต่ก็มีคนที่มีความคิดตรงกันข้ามไปเลยก็มีนะ ยิ่งต่อวงจรยิ่งสนุก ได้รับความรู้เต็มที่ เพราะมันเป็นพื้นฐานของ พีซี (ถ้าคุณสามารถทำความเข้าใจกับไมโครคอนดโทรลเลอร์ 8051 และต่อกับวงจรภายนอกสองสามวงจรแล้วเวิร์ก คุณจะเข้าใจการทำงานของฮาร์ดแวร์ของพีซี ไป 90 เปอร์เซนต์เลย หรือถ้าเป็นในแง่ของหลักการ ก็ใช้หลักการเดียวกันเลย แต่คุณต้องทำเองคนเดียวนะ ทุกๆอย่าง) การใช้งานมันก็คือ ต่อ clock เข้าไปและปุ่มรีเซตและ eeprom เข้าไป ก็ใช้งานได้เลย แต่คุณจะต้องเขียนโปรแกรมแอสแซมบลีให้เสร็จก่อนจากนั้นก็อัดโปรแกรมลงไปในชิปนั้น ปัญหาก็คือคุณต้องมั่นใจให้ได้ว่าโปรแกรมที่คุณเขียนไปมันเวิร์กร้อยเปอร์เซนต์ เพราะแอสแซมบลีต้องใช้ความละเอียดอ่อนอย่งมาก จากนั้นก็นำชิป ที่เป็น eeprom ไปอัดโปรแกรมลงไป แล้วก็นำมาใส่ในวงจร และก็รันดู ถ้าเป็นรุ่น มี flash memory ภายในตัวก็ดีนะ เพราะคุณไม่ต้องใช้ชิป eeprom ต่างหาก ก็ง่ายขึ้นมาหน่อย แต่ยังไงคุณก็ต้องนำชิปดังกล่าวไปเข้าเครื่องอัดโปรแกรมลงไปอยู่ดีนะ ตรงนี้มันยากเย็นแสนเข็ญก็ตรงที่ แอสแซมบลีนี่ละครับ เพราะ ถ้าทำโพรเจค มันไม่ใช่แค่ แอสแซมบลีอย่างเดียวแต่วงจรภายนอกคุณอีก ยิ่งถ้าซับซ้อน มันอาจจะทำให้ผลงานคุณออกมาไม่ดีก็ได้ ถ้ามุมมองของคุณยังไม่กว้างพอในเรื่องของการทำโพรเจค ตอนนั้นผมยังคิดเลยว่าน่าจะมีภาษาที่ระดับสูงกว่านี้นะ เพื่อนำมาใช้ใน ไมโครคอนโทรลเลอร์ก็พยายามโหลด C compiler มาใช้ก็ปรากฏว่าไม่ทันซะแล้ว โพรเจคจะต้องเสร็จให้ทันกำหนด ไอ้ที่มันยากสำหรับ C compiler ก็คือมันค่อนข้างจะอ้างโมดูลที่เป็นแอสแซมบลีอยู่แล้ว ผมยังจะต้องมาเสียเวลากับข้อกำหนดต่างของ Compiler ตัวนั่นอีก ก็เลยตัดสินใจไม่ใช้มัน เพราะตอนนั้นนั่งดูได้วันสองวันก็ตัดสินใจไปใช้แอสแซมบลีดีกว่า เพราะเรามั่นใจมากกว่าอีกอย่างเราคุ้นเคย อีกอย่าง C compiler ตัวนั้นก็ไม่ได้ดีเลิศหรูอย่างที่คิดเอาไว้นะ
ตอนเขียนโปรแกรมให้ติดต่อกับวงจรภายนอกนั้น จริงแล้วถ้าเรานำความรู้ในวิชา Advance microcontroller มาใช้คำนวณทุกอย่างมันก็โอเคนะ ไม่ว่าจะเป็นลูป หรือรูทีนต่างๆ เพราะเราสามารถคำนวณจาก Clock และก็แมชชีนไซเคิลได้เลย แต่ปัญหามันอยู่ตรงที่ว่าถ้าคุณเปลี่ยนแปลงโค้ดบางส่วนไปนิดหนึ่งคุณก็ต้องคำนวนใหม่ตลอด ก็เลยไม่คำนวนกันตอนนั้นเช่น การทำให้ LED กระพริบ จะวนลูป ถ้าน้อยไปก็วนมันอีกรอบหนึ่ง ถ้าน้อยไปอีกก็อาจจะสร้างลูปคร่อมมันมาอีกทีหนึ่ง จริงมันก็ไม่ใช่เป็นการเขียนโปรแกรมที่ดีสักเท่าไร แต่ทำไงได้ เพราะทฤษฏีมีก็ไม่นำมาใช้ ก็เป็นซะอย่างนี้แหละ ก็เลยทำให้โปรแกรมและงานออกมาไม่ค่อยดีเท่าไร หรือไม่ค่อยเวิร์กในบางครั้ง ผมเคยใช้พีซีมาควบคุมการทำงานของหุ่นยนต์นะ เพราะต้องการตัดปัญหาเรื่องเวลา อยากใช้ภาษาระดับสูงขึ้นมาหน่อย แต่มันก็เวิร์กนะ แต่ถ้าพูดถึงในหลักการแล้วมันไม่ถูกต้องเลยซะทีเดียว เพราะเอาโน้ตบุ้คใส่บนหุ่นยนต์แล้วให้มันทำงานไป มันเวิร์กนะ แต่ไม่เหมาะสม ผมต้องหาแบตเตอร์รี้ให้มันค่อนข้างเยอะ แต่งานนั้นก็รอดไป ก็ได้ประสบการณ์ขึ้นมาอีกเยอะเลย ไม่ว่าจะเป็นการร่วมงาน หรือเรื่องการต่อวงจรที่ซับซ้อนมากขึ้นมาอีก รวมทั้งวงจรทั้งที่เป็น small signal มารวมกับ power circuit ตีกันไปหมด จริงๆถ้านำหลักทฤษฏีมาใช้แก้ปัญหามันก็โอเคนะ แต่ตอนนั้นคงเป็นเพราะว่าทฤษฏีเราเองก็ไม่แน่นเท่าที่ควร
แต่ทุกอย่างก็ผ่านมาด้วยดี มาทุกวันนี้ความก้าวหน้าทางเทคโนโลยีมากขึ้น มีทางเลือกให้กับนักประดิษฐ์มากขึ้น การใช้งานก็สะดวก อุปกรณ์ก็น้อยลง ข้อมูลข่าวสารก็หาง่ายมากเลย โดยหาในอินเทอร์เนต ภาษาที่ใช้ในไมโครคอนโทรลเลอร์ก็มีภาษาระดับสูงขึ้นไปอีก
หมายเหตุ ความแตกต่างระหว่างไมโครคอนโทรลเลอร์กับไมโครโพรเซสเซอร์(CPU ในพีซี)ก็คือ ไมโครคอนโทรลเลอร์จะสามารถทำงานในระดับบิตเป็นซะส่วนใหญ่โดยสามารถเข้าถึงการทำงานในระดับที่เล็กที่สุดของตัวเลขทางคอมพิวเตอร์ แต่ไมโครโพรเซสเซอร์ใช้ในการคำนวนและมันจะใช้ในดับไบต์ขึ้นไปก็คือ 8 บิตขึ้นไปนั่นเอง
พูดต่อละกันภาษาระดับสูงที่ว่าก็คือ C หรือ เบสิก โดยบางตัวก็ยกระดับมาโดยการพัฒนาทางซอฟท์แวร แต่บางตัวก็ยกระดับมากโดยการพัฒนาทางด้านฮาร์แวร์ ผมจะยกตัวอย่างไมโครคอนโทรลเลอร์ตัวหนึ่งก็เบสิกแสตมป์ ที่เรียกแบบนี้เพราะตัวมันเท่ากับแสตมป์ตัวหนึ่งเท่านั้นเองโดยมีมีทุกอย่างอยู่บนวงจรอยู่แล้ไม่ว่าจะเป็น clock หรือวงจรที่สามารถติดต่อกับพอร์ต rs232 คุณเพียงแค่นำไพเลียงที่เป็นดีซี ระหว่าง 5-17 โวลท์ต่อเข้าไป ตรงนี้ก็ทุ่นไปเยอะแล้ว แต่ตอนนี้ยังแพงอยู่นะ คงเป็นเพราะช่วงแรกๆ ผมว่าตอนนี้อาจจะ 50 เหรียญแต่ต่อไปผมว่าเหลือ 2 เหรียญหรือตำกว่านั้นแน่นอนเหมือน ชิป AT80C2051 ราคาในเมืองไทยไม่ถึง 2 เหรียญนะครับ หาดีๆได้ราคาตำมากๆ
เบสิกแสตมป์ผมจะไม่กล่าวรายละเอียดนะครับ ไว้กล่าวอีกหัวข้อหนึ่ง เจ้าคอนโทรลเลอร์ตัวนี้จะมีซอฟท์แวรให้เขียนบนพีซี แล้วก็ดาวน์โหลดลงไปในชิปเลยนะ ที่ง่ายก็คือภาษาเบสิกครับ อ๋อ ภาษาที่ก็จะเรียกว่าภาษาเบสิกเลยก็ไม่ได้ซะทีเดียวแต่มันคล้ายกันมาก แต่อย่างไรก็ตามก็ต้องอ่านคู่มือการใช้ภาษานั้นก่อนให้ดีนะครับ ทีผมเห็นว่ามันดีก็ตรงที่ถ้าผม ต้องการทำให้เครื่องโทรศัพท์ที่บ้านผม สามารถเปิดคอมพิวเตอร์ได้เลยโดยผมโทรมาจากข้างนอก หรือสั่งต้มนำก่อนเข้ามาถึงในบ้าน ผมก็ต้องหาชิปที่เป็น DTMF มาใช้จากนั้นก็ใช้เบสิกแสตมป์นี่แหละครับเขียนโปรแกรมก่อนเลย เพื่อทดสอบการทำงานของชิป DTMF เพราะลดระยะเวลาในการเขียนโปรแกรมไปเยอะมาก เช่นคำสั่งให้ LED กระพริบหนึ่งครั้งต่อหนึ่งนาที่ เราสามารถใช้ คำสั่ง pause 1000 ได้เลย หมายถึงให้หยุดเพื่อให้มีการแสดงตรงนั้นเป็นเวลา 1 วินาที แต่ยังไงก็แล้วแต่ถ้ามันเวิร์แล้วผมก็คงต้องซื้อชิป 8051 ราคาไม่ถึงสองเหรียญมาทำอยู่ดี ถ้าคิดจะทำเป็นโพรดักส์เพราะตรงนั้นมันเป็นเรื่องของต้นทุนและกำไรแล้วครับ ไม่ใช่ที่ความยากหรือง่ายที่จะเป็นแฟกเตอร์สำคัญ
ผมกับเพื่อนซึ่งจบอิเลคทรอนิกส์มาด้วยกัน แต่ไม่เคยร่วมงานกันนะโดยเพื่อนผมเรียน ปริญญาโท ส่วนผมก็เรียนภาษาอังกฤษอยู่ ก็คิดถึงเรื่องการต่อวงจรสมัยปริญญาตรี ก็เลยตัดสินใจซื้อเบสิกแสตมป์มา โดยเลือก Basic stamp II ราคาก็ 49 เหรียญต่อตัว และซื้อสายไฟและเคเบิลที่เป็น NullModem รวมแล้วก็ออกคนละ 31 เหรียญ อ๋อ เพื่อนผมบอกว่าตอนซื้อ คนขายเขาบอกว่ามันมีชุดสำเร็จรูปเลยนะ ราคาก็ประมาณ 100 กว่าเหรียญแต่พวกผม คุยกันไว้แล้วว่า จะเอาเฉพาะชิปมันมาก็พอ เพราะคู่มือ จะโหลดจากอินเทอร์เน็ตรวมทั้งซอฟท์แวร์ แต่คนขายซึ่งเป็นฝรั่งคงกลัวว่าพวกผมจะมีความยากลำบากในการทำงานก็เลยแนะนำมาอย่างนั้นอีกอย่าง คนอเมริกันที่ซื้อก็ไม่ค่อยมีใครซื้อชิปมาอันเดียวนะ ส่วนใหญ่ก็เลือก ชุด 100 กว่าเหรียญที่ว่า สุดท้ายเพื่อนผมก็ได้ชิปมาอันเดียวเท่านั้น สายไฟและก็เคเบิ้ลทึ่ต่อกับคอมพิวเตอร์ เมื่อได้มาแล้วก็ต่อเลยครับปรากฏว่า มีปัญหานิดหน่อยเรื่องสาย NullModem เพราะการต่อสายของมันมัน ไขว้กันอยู่ อันนี้ต้องไปดูรายละเอียดของสาย NullModem ครับว่าข้างในเป็นยังไง เสียเวลาไปหน่อยนึง จากนั้นเราก็มี LED ตัวหนึ่งกับ R หนึ่งตัวเท่านั้นเอง ไม่เหมือนตอนที่เรียนปริญญาตรีในเมืองไทยครับในห้องแล็ป มีเยอะมาก ถ้าไม่พอก็วิ่งไปอีกห้องไปขอเพื่อน แต่ที่นี่สหรัฐครับ ถ้าไม่ซื้อก็ไปขอใครไม่ได้หรอก ตกลงวันนี้ก็มี LED กับ R 1.2k ใช้อย่างละตัวจริงๆ ถ้ามันเสียไปนี่คงต้องรออีกวันไปซื้อที่ร้าน Radioshack ที่นี่ราคาอุปกรณ์อิเลคทรอนิกส์ค่อนข้างแพงนะครับ แต่เขาจะแพ็กขายอย่างดี สังเกตุของส่วนใหญ่จะทำในจีน กับไต้หวันนะ และแล้วเราก็ต่อวงจรรวมทั้งเขียนโปรแกรมเวิร์กครับลองดูนิครับโปรแกรมสั่งให้ ไดร์ว LED ที่ขา p0 กระพริบทุกหนึ่งวินาที
output 0 ' สั่งให้ขา P0 เป็นเอาท์พอร์ต
reblink: 'รูทีน
out0=0 'ส่ง 0 ไปที่พอร์ต
pause 1000 'หยุด 1000 มิลลิวินาที
out0=1 'ส่ง 1 ไปที่พอร์ต
pause 1000 ' หยุด 1000 มิลลิวินาที
goto reblink ' กระโดดไปที่รูทีน reblink
Parallax Inc. รายละเอียดเพิ่มเติม
1
Hosted by www.Geocities.ws