การโปรแกรมไอซีatmega328

การโปรแกรมไอซีatmega328

เปิดโปรแกรมArduino1.0.1 โหลดข้อมูลเข้าในโปรแกรมกดโหลดโปรแกรมเข้าในไอซี

…………………………………………………

…………………………………………………

ในรูปข้างต้นเปิดโปรแกรมตัวอย่างที่มีในArduino1.0.1เป็นโปรแกรมไฟกระพริบ โปรแกรมนี้เป็นโปรแกรมที่ทดสอบง่ายที่สุด ขา13ของไอซีต่อLEDผ่านรีซิตเตอร์1Kลงไฟลบ(GND)

ในบทความที่กล่าวมาเป็นเทคนิคต่างๆที่ช่างโหน่งได้ทดลองทำดูแล้วสำเร็จจึงนำมาเผยแพร่สำหรับมือใใหม่ที่เริ่มเล่นไอซีตระกูลนี้ครับ ต่อไปเป็นเทคนิคการนำไอซีมาต่อการทำงานโดยตรง(StandAlone)ทั้งขาแบบตะขาบ(DIP)และขาแบบชิพ32ขา(TQFP)มีความยากและง่ายต่างกันครับ.

การนำไอซีไปใช้งาน(Standalone)

โครงสร้างภายในของไอซีแบบต่างๆมีการออกแบบต่างกันครับเพราะฉะนั้นการออกแบบแผ่นวงจรและการนำตัวไอซีที่เราโปรแกรมแล้วไปใช้งานหรือที่ฝรั่งเรียกว่า standalone ลงในแผ่นวงจรต้องมีเทคนิคที่แตกต่างกันครับ ก่อนอื่นเราต้องรู้จักขาของไอซีแต่ละแบบแล้วนำมาออกแบบครับ.

…………………………………………………

………………………………………………..

ในรูปเป็นขาแบบตะขาบ(DIP)และขาแบบชิพ(TQFO) จำนวนและตำแหน่งขาต่างกันครับ การต่อพื้นฐานตามรูปข้างต้นยกเว้นขาAref ไม่ต้องต่อแต่อาจจะใช้Cค่า0.1ไมโครต่อลงไฟลบไว้เพื่อลดการรบกวนจากภายนอกครับ.

การออกแบบวงจร

โครงสร้างภายในที่แตกต่างกัน เมื่อเราออกแบบแผ่นวงจรจะพบปัญหามากมาย ทดลองในตัวเขียนโปรแกรมก็ผ่านแต่พอเอามาลงปริ้นไม่ผ่าน ปัญหาเหล่านี้สำหรับไอซีตระกูลนี้คือคลื่นรบกวนและสนามแม่เหล็กเหนี่ยวนำ การออกแบบต้องมีไฟลบหรือGnd ต้องมีพื้นที่ล้อมรอบขาทั้งหมด และขาที่ไม่ได้ใช้งานออกแบบปริ้นห่างจากชิพประมาณ2เซ็นแล้วลงกราวด์จะช่วยลดการรบกวนได้ครับ โดยเฉพาะการออกแบบสำหรับชิพแบบTQFPครับ.

…………………………………………………

…………………………………………………

ตัวอย่างการออกแบบสำหรับชิพTQFP 32ขา จะมีบางขาที่ต่อร่วมกันจะสังเกตุว่ากราวด์(Gnd)จะมีพื้นที่มากแต่การนำไปลงแผ่นปริ้นยังต้องระวังคลื่นแม่เหล็กเหนี่ยวนำโดยเฉพาะการต่อไฟไปเลี้ยงวงจรด้วยครับ.

เนื้องจากชิพ32ขาจะราคาถูกกว่าเพราะการนำไปใช้งานยากกว่าสำหรับมือใหม่และไอซีตระกูลนี้โครงสร้างภายในไม่มีการป้องกันการรบกวน จึงทำให้คนไม่นิยมใช้ราคาจึงถูก แต่หากเราหาวิธีและทดสอบแล้วปัญหาต่างๆจะถูกแก้ ทำให้ต้นทุนการผลิตถูกลงและการลอกเลียนแบบทำได้ยากขึ้นครับ.

ส่วนการออกแบบไอซีแบบขาตะขาบไม่ค่อยมีปัญหาอะไรแต่ราคาค่อนข้างสูงครับ แต่เลือกไม่ได้ครับเพราะเราไม่สามารถทำแผ่นปริ้นที่มีขนาดเล็กได้ครับ.

การอ่านข้อมูลที่เขียนบนไอซีและการป้องกันCopy

ในบทความข้างต้นเราไม่สามารถเข้าถึงหน่วยความจำในไอซีได้โดยเห็นข้อมูลภายในทั้งหมด ซึ่งบางครั้งโค้ดที่เขาให้มาอาจมีการป้องกันการก๊อปใส่ค่าที่ผิดๆมาให้ หากเราใช้โปรแกรมที่สามารถเขียนข้อมูลที่เป็นภาษาเครื่อง(HexFiles)และอ่านภาษาเครื่อง(HexFiles)ออกมาเก็บไว้ได้ เราก็สามารถบันทึงลงไอซีตัวใหม่ได้ บทความนี้เขียนขึ้นเพื่อสำรองข้อมูลไอซีเก็บไว้หากไอซีตัวที่ทำงานเกิดความเสียหายขึ้นจะได้ใช้ไอซีตัวใหม่เปลี่ยนได้อย่างรวดเร็วครับ ไม่ได้แนะนำให้ก๊อปเพื่อประโยชน์ทางการค้าครับ แต่หากไอซีใส่รหัสไว้ก็เสียใจด้วยครับ.

………………………………………………..

…………………………………………………

โปรแกรมที่ช่างโหน่งใช้คือKhazama หาโหลดตามเน็ตได้ครับ เมื่อได้โปรแกรมมาแล้วเราจะเชื่อมต่อกับไอซีได้อย่างไร ในท้องตลาดมีอุปกรณ์ตัวนี้ขายอยู่มากมายครับเขาเรียกกันว่าUSBASP ราคาไม่เกินร้อยบาทครับ.

……………………………………………………..

…………………………………………………

ตัวเชื่อมต่อตัวนี้ต่อเข้าทางUSBของคอมพิวเตอร์เลยครับ สายที่ต่อออกทั้งหมดมี6เส้นครับ

…………………………………………………

…………………………………………………

ไอซีแบบตะขาบ(DIP)

Miso—pin18 ต่อเข้าขา18

Mosi—pin17 ต่อเข้าขา17

Sck—pin19 ต่อเข้าขา19

Res—pin1  ต่อเข้าขา1

Vtg–pin7,20 ต่อเข้าขา7และ20

Gnd–pin8,22 ต่อเข้าขา8และ22

ไอซีแบบชิพ(TQFP)32ขา

Miso—pin16 ต่อเข้าขา16

Mosi—pin15 ต่อเข้าขา15

Sck—pin19 ต่อเข้าขา19

Res—pin29  ต่อเข้าขา29

Vtg–pin4,6,18 ต่อเข้าขา4และ6และ18

Gnd–pin3,5,21 ต่อเข้าขา3และ5และ21

การโปรแกรมและการใช้งาน

เมื่อเปิดโปรแกรมขึ้นมาขั้นตอนแรกเราต้องเลือกเบอร์ไอซีที่เราใช้งานอยู่ในที่นี้ช่างโหน่งใชAtmega328

……………………………………………..

……………………………………………..

ต่อไปโหลดโปรแกรมที่จะเขียนลงไปในไอซีครับ โดยไฟล์ที่ใช้นี้ต้องเป็นไฟล์ภาษาเครื่องหรือHexfiles

……………………………………………..

…………………………………………….

เราจะเอาHexFiles(เฮ็กไฟล์)นี้มาจากใหนครับ ในโปรแกรมของArduino ก็เป็นนามสกุลINOจะแปลงเป็นนามสกุลHexได้อย่างไรครับ ในโปรแกรมอาดุยโน่ที่เขียนลงไปในเครื่องต้องเป็นภาษาเครื่องเท่านั้นครับ(HexFiles)ซึ่งโปรแกรมเขาไม่ได้แสดงออกมาให้เราเห็นเขาทำสำเร็จสะดวกสำหรับการใช้งานครับแต่หากเราต้องการHexFilesมีวิธีดังนี้ครับ ช่างโหน่งใช้ระบบวินโด้XPอยู่นะครับหากใครใช้ระบบอื่นอยู่ก็หาที่เก็บHexFilesตามนี้ครับ.

………………………………………………..

…………………………………………………

เข้าไปที่Start—Run แล้วพิมพ์%temp% เราก็จะเข้าไปถึงสถานที่เก็บHexFilesเมื่ออาดุยโน่แปล(compiles)ก่อนที่จะเขียนลงไอซีครับ แต่เมื่ออาดุยโน่เขียนเสร็จแล้วไฟล์ที่เก็บไว้ในtempก็จะถูกลบไปโดยอัตโนมัตเราจะไม่ให้ลบได้อย่างไรงานนี้ต้องไปกำหนดค่าที่โปรแกรมอาดุยโน่ครับ.

…………………………………………………

…………………………………………………

เปิดโปรแกรมอาดุยโน่ขึ้นมาเข้าไปที่Preferences กดเครื่องหมายถูกตามรูปแล้วกดOKด้านล่างครับ เมื่อเรากดแปล(compiles)เราจะปรากฏเห็นHexFilesอยู่ในสถานที่ที่กล่าวมาในข้างต้นครับ.

…………………………………………………

………………………………………………..

เราได้HexFilesแล้วก็ก๊อปไปเก็บไว้ที่แฟ้มอื่นเพื่อสะดวกต่อการหาไปเขียนครับในที่นี้ช่างโหน่งก๊อปไปที่ฮาร์ดดิส ไดร์Cครับ.

…………………………………………….

……………………………………………..

เมื่อโหลดได้แล้วก็กดAuto Programeครับ.

………………………………………..

………………………………………..

โปรแกรมก็จะเขียนจนเสร็จครับ หากขึ้นเออเร่อ(Error)มาก็ตรวจเช็คการต่อสายและอุปกรณ์ครับ.

การโหลดข้อมูลในไอซีมาเก็บไว้

หากในตัวไอซีนั้นไม่มีการล๊อครหัสไว้เราก็สามารถโหลดเอาข้อมูลมาเก็บไว้แต่ข้อมูลนี้เป็นภาษาเครื่องนะครับ(HexFiles)เราสามารถสำรองข้อมูลในไอซีตัวนั้นเก็บไว้เพื่อเขียนในตัวใหม่หากตัวเดิมเสียหายไปครับ.

……………………………………………..

………………………………………………

การใส่รหัสเพื่อป้องกันการก๊อบ(Copy)

การป้องกันการCopyมีไว้ในโปรแกรมสำหรับไมโครคอนโทลเลอร์ทุกตัวครับ ก็คงเป็นความคิดของใครของมันหากไปจดลิขสิทธิไว้ก็จะมีค่าใช้จ่ายมากถึงอย่างไรมันก็แอบละเมิดอีกอยู่ดีครับ ทางที่ดีใส่รหัสไว้ก็ยังดีกว่าไม่ใส่ครับ ไม่ใช้ไม่มีทางถอดรหัสได้แต่ก็ยากหน่อยหรือไอซีอาจเสียหายไปเลยก็มีครับ.

…………………………………………………

…………………………………………………

ใส่รหัสเข้าไปแล้วกดSave ถ่ายรูปจำไว้ด้วยนะครับเดี๋ยวจะลืม เมื่อเสร็จแล้วเราไม่สามารถโหลดข้อมมูลออกมาได้ครับ