การโปรแกรมไอซีatmega328
เปิดโปรแกรมArduino1.0.1 โหลดข้อมูลเข้าในโปรแกรมกดโหลดโปรแกรมเข้าในไอซี
…………………………………………………
![](http://solarwato.com/wp-content/uploads/2022/12/image-96.png)
![](http://solarwato.com/wp-content/uploads/2022/12/image-98.png)
…………………………………………………
ในรูปข้างต้นเปิดโปรแกรมตัวอย่างที่มีในArduino1.0.1เป็นโปรแกรมไฟกระพริบ โปรแกรมนี้เป็นโปรแกรมที่ทดสอบง่ายที่สุด ขา13ของไอซีต่อLEDผ่านรีซิตเตอร์1Kลงไฟลบ(GND)
ในบทความที่กล่าวมาเป็นเทคนิคต่างๆที่ช่างโหน่งได้ทดลองทำดูแล้วสำเร็จจึงนำมาเผยแพร่สำหรับมือใใหม่ที่เริ่มเล่นไอซีตระกูลนี้ครับ ต่อไปเป็นเทคนิคการนำไอซีมาต่อการทำงานโดยตรง(StandAlone)ทั้งขาแบบตะขาบ(DIP)และขาแบบชิพ32ขา(TQFP)มีความยากและง่ายต่างกันครับ.
การนำไอซีไปใช้งาน(Standalone)
โครงสร้างภายในของไอซีแบบต่างๆมีการออกแบบต่างกันครับเพราะฉะนั้นการออกแบบแผ่นวงจรและการนำตัวไอซีที่เราโปรแกรมแล้วไปใช้งานหรือที่ฝรั่งเรียกว่า standalone ลงในแผ่นวงจรต้องมีเทคนิคที่แตกต่างกันครับ ก่อนอื่นเราต้องรู้จักขาของไอซีแต่ละแบบแล้วนำมาออกแบบครับ.
…………………………………………………
![](http://solarwato.com/wp-content/uploads/2022/12/image-100.png)
![](http://solarwato.com/wp-content/uploads/2022/12/image-56.jpeg)
………………………………………………..
ในรูปเป็นขาแบบตะขาบ(DIP)และขาแบบชิพ(TQFO) จำนวนและตำแหน่งขาต่างกันครับ การต่อพื้นฐานตามรูปข้างต้นยกเว้นขาAref ไม่ต้องต่อแต่อาจจะใช้Cค่า0.1ไมโครต่อลงไฟลบไว้เพื่อลดการรบกวนจากภายนอกครับ.
การออกแบบวงจร
โครงสร้างภายในที่แตกต่างกัน เมื่อเราออกแบบแผ่นวงจรจะพบปัญหามากมาย ทดลองในตัวเขียนโปรแกรมก็ผ่านแต่พอเอามาลงปริ้นไม่ผ่าน ปัญหาเหล่านี้สำหรับไอซีตระกูลนี้คือคลื่นรบกวนและสนามแม่เหล็กเหนี่ยวนำ การออกแบบต้องมีไฟลบหรือGnd ต้องมีพื้นที่ล้อมรอบขาทั้งหมด และขาที่ไม่ได้ใช้งานออกแบบปริ้นห่างจากชิพประมาณ2เซ็นแล้วลงกราวด์จะช่วยลดการรบกวนได้ครับ โดยเฉพาะการออกแบบสำหรับชิพแบบTQFPครับ.
…………………………………………………
![](http://solarwato.com/wp-content/uploads/2022/12/image-97.png)
![](http://solarwato.com/wp-content/uploads/2022/12/image-99.png)
…………………………………………………
ตัวอย่างการออกแบบสำหรับชิพTQFP 32ขา จะมีบางขาที่ต่อร่วมกันจะสังเกตุว่ากราวด์(Gnd)จะมีพื้นที่มากแต่การนำไปลงแผ่นปริ้นยังต้องระวังคลื่นแม่เหล็กเหนี่ยวนำโดยเฉพาะการต่อไฟไปเลี้ยงวงจรด้วยครับ.
เนื้องจากชิพ32ขาจะราคาถูกกว่าเพราะการนำไปใช้งานยากกว่าสำหรับมือใหม่และไอซีตระกูลนี้โครงสร้างภายในไม่มีการป้องกันการรบกวน จึงทำให้คนไม่นิยมใช้ราคาจึงถูก แต่หากเราหาวิธีและทดสอบแล้วปัญหาต่างๆจะถูกแก้ ทำให้ต้นทุนการผลิตถูกลงและการลอกเลียนแบบทำได้ยากขึ้นครับ.
ส่วนการออกแบบไอซีแบบขาตะขาบไม่ค่อยมีปัญหาอะไรแต่ราคาค่อนข้างสูงครับ แต่เลือกไม่ได้ครับเพราะเราไม่สามารถทำแผ่นปริ้นที่มีขนาดเล็กได้ครับ.
การอ่านข้อมูลที่เขียนบนไอซีและการป้องกันCopy
ในบทความข้างต้นเราไม่สามารถเข้าถึงหน่วยความจำในไอซีได้โดยเห็นข้อมูลภายในทั้งหมด ซึ่งบางครั้งโค้ดที่เขาให้มาอาจมีการป้องกันการก๊อปใส่ค่าที่ผิดๆมาให้ หากเราใช้โปรแกรมที่สามารถเขียนข้อมูลที่เป็นภาษาเครื่อง(HexFiles)และอ่านภาษาเครื่อง(HexFiles)ออกมาเก็บไว้ได้ เราก็สามารถบันทึงลงไอซีตัวใหม่ได้ บทความนี้เขียนขึ้นเพื่อสำรองข้อมูลไอซีเก็บไว้หากไอซีตัวที่ทำงานเกิดความเสียหายขึ้นจะได้ใช้ไอซีตัวใหม่เปลี่ยนได้อย่างรวดเร็วครับ ไม่ได้แนะนำให้ก๊อปเพื่อประโยชน์ทางการค้าครับ แต่หากไอซีใส่รหัสไว้ก็เสียใจด้วยครับ.
………………………………………………..
![](http://solarwato.com/wp-content/uploads/2022/12/image-101.png)
…………………………………………………
โปรแกรมที่ช่างโหน่งใช้คือKhazama หาโหลดตามเน็ตได้ครับ เมื่อได้โปรแกรมมาแล้วเราจะเชื่อมต่อกับไอซีได้อย่างไร ในท้องตลาดมีอุปกรณ์ตัวนี้ขายอยู่มากมายครับเขาเรียกกันว่าUSBASP ราคาไม่เกินร้อยบาทครับ.
……………………………………………………..
![](http://solarwato.com/wp-content/uploads/2022/12/image-102.png)
![](http://solarwato.com/wp-content/uploads/2022/12/image-57.jpeg)
…………………………………………………
ตัวเชื่อมต่อตัวนี้ต่อเข้าทางUSBของคอมพิวเตอร์เลยครับ สายที่ต่อออกทั้งหมดมี6เส้นครับ
…………………………………………………
![](http://solarwato.com/wp-content/uploads/2022/12/image-58.jpeg)
…………………………………………………
ไอซีแบบตะขาบ(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
……………………………………………..
![](http://solarwato.com/wp-content/uploads/2022/12/image-103.png)
……………………………………………..
ต่อไปโหลดโปรแกรมที่จะเขียนลงไปในไอซีครับ โดยไฟล์ที่ใช้นี้ต้องเป็นไฟล์ภาษาเครื่องหรือHexfiles
……………………………………………..
![](http://solarwato.com/wp-content/uploads/2022/12/image-104.png)
…………………………………………….
เราจะเอาHexFiles(เฮ็กไฟล์)นี้มาจากใหนครับ ในโปรแกรมของArduino ก็เป็นนามสกุลINOจะแปลงเป็นนามสกุลHexได้อย่างไรครับ ในโปรแกรมอาดุยโน่ที่เขียนลงไปในเครื่องต้องเป็นภาษาเครื่องเท่านั้นครับ(HexFiles)ซึ่งโปรแกรมเขาไม่ได้แสดงออกมาให้เราเห็นเขาทำสำเร็จสะดวกสำหรับการใช้งานครับแต่หากเราต้องการHexFilesมีวิธีดังนี้ครับ ช่างโหน่งใช้ระบบวินโด้XPอยู่นะครับหากใครใช้ระบบอื่นอยู่ก็หาที่เก็บHexFilesตามนี้ครับ.
………………………………………………..
![](http://solarwato.com/wp-content/uploads/2022/12/image-105.png)
![](http://solarwato.com/wp-content/uploads/2022/12/image-106.png)
…………………………………………………
เข้าไปที่Start—Run แล้วพิมพ์%temp% เราก็จะเข้าไปถึงสถานที่เก็บHexFilesเมื่ออาดุยโน่แปล(compiles)ก่อนที่จะเขียนลงไอซีครับ แต่เมื่ออาดุยโน่เขียนเสร็จแล้วไฟล์ที่เก็บไว้ในtempก็จะถูกลบไปโดยอัตโนมัตเราจะไม่ให้ลบได้อย่างไรงานนี้ต้องไปกำหนดค่าที่โปรแกรมอาดุยโน่ครับ.
…………………………………………………
![](http://solarwato.com/wp-content/uploads/2022/12/image-107.png)
![](http://solarwato.com/wp-content/uploads/2022/12/image-108.png)
…………………………………………………
เปิดโปรแกรมอาดุยโน่ขึ้นมาเข้าไปที่Preferences กดเครื่องหมายถูกตามรูปแล้วกดOKด้านล่างครับ เมื่อเรากดแปล(compiles)เราจะปรากฏเห็นHexFilesอยู่ในสถานที่ที่กล่าวมาในข้างต้นครับ.
…………………………………………………
![](http://solarwato.com/wp-content/uploads/2022/12/image-109.png)
………………………………………………..
เราได้HexFilesแล้วก็ก๊อปไปเก็บไว้ที่แฟ้มอื่นเพื่อสะดวกต่อการหาไปเขียนครับในที่นี้ช่างโหน่งก๊อปไปที่ฮาร์ดดิส ไดร์Cครับ.
…………………………………………….
![](http://solarwato.com/wp-content/uploads/2022/12/image-110.png)
![](http://solarwato.com/wp-content/uploads/2022/12/image-111.png)
……………………………………………..
เมื่อโหลดได้แล้วก็กดAuto Programeครับ.
………………………………………..
![](http://solarwato.com/wp-content/uploads/2022/12/image-112.png)
………………………………………..
โปรแกรมก็จะเขียนจนเสร็จครับ หากขึ้นเออเร่อ(Error)มาก็ตรวจเช็คการต่อสายและอุปกรณ์ครับ.
การโหลดข้อมูลในไอซีมาเก็บไว้
หากในตัวไอซีนั้นไม่มีการล๊อครหัสไว้เราก็สามารถโหลดเอาข้อมูลมาเก็บไว้แต่ข้อมูลนี้เป็นภาษาเครื่องนะครับ(HexFiles)เราสามารถสำรองข้อมูลในไอซีตัวนั้นเก็บไว้เพื่อเขียนในตัวใหม่หากตัวเดิมเสียหายไปครับ.
……………………………………………..
![](http://solarwato.com/wp-content/uploads/2022/12/image-113.png)
![](http://solarwato.com/wp-content/uploads/2022/12/image-114.png)
………………………………………………
การใส่รหัสเพื่อป้องกันการก๊อบ(Copy)
การป้องกันการCopyมีไว้ในโปรแกรมสำหรับไมโครคอนโทลเลอร์ทุกตัวครับ ก็คงเป็นความคิดของใครของมันหากไปจดลิขสิทธิไว้ก็จะมีค่าใช้จ่ายมากถึงอย่างไรมันก็แอบละเมิดอีกอยู่ดีครับ ทางที่ดีใส่รหัสไว้ก็ยังดีกว่าไม่ใส่ครับ ไม่ใช้ไม่มีทางถอดรหัสได้แต่ก็ยากหน่อยหรือไอซีอาจเสียหายไปเลยก็มีครับ.
…………………………………………………
![](http://solarwato.com/wp-content/uploads/2022/12/image-115.png)
![](http://solarwato.com/wp-content/uploads/2022/12/image-116.png)
…………………………………………………
ใส่รหัสเข้าไปแล้วกดSave ถ่ายรูปจำไว้ด้วยนะครับเดี๋ยวจะลืม เมื่อเสร็จแล้วเราไม่สามารถโหลดข้อมมูลออกมาได้ครับ