วันอังคารที่ 10 พฤษภาคม พ.ศ. 2559

AVR Loader วิธีง่ายๆ เพื่อใช้สัญญานนาฬิกาภายในไอซี

หลังจากที่พยายามให้ไอซี Atmega8 และ 16 ใช้ Internal Clock เพื่อลดการใช้ X-TAL โดยเบิร์น Bootloader เข้าไปก็ไม่ได้ผลเท่าที่ควร เพราะยุ่งยาก แต่ก็มีวิธีง่ายๆ สำหรับการกำหนดค่า โดยใช้โปรแกรม AVR Loader

การกำหนดค่า FUse จะเป็นการบอกว่าจะใช้สัญญานนาฬิกาจากไหน โดยโปรแกรม AVR Loader สามารถดาวน์โหลดได้จากอินเตอร์เน็ต

โปรแกรม AVR Loader สำหรับแก้ไข อัพโหลดไฟล์ .hex สำหรับ ATmega

วันจันทร์ที่ 9 พฤษภาคม พ.ศ. 2559

ATMega8 No X-TAL, ใช้งาน ATMega8 โดยไม่มีคริสตอล

X-TAL หรือ คริสตอลเป็นตัวกำเนิดสัญญานนาฬิกา หรือสร้างความถี่เพื่อให้ไอซีทำงานได้ถูกต้อง ดังนั้นบอร์ด Arduino จึงมีคริสตอลตามความถี่ของ cpu เช่น 8, 12 และ 16MHz และ ATMega8 มีรุ่นที่ใช้ความถี่ 8 และ 16MHz โดยดูจากรุ่น โดยรุ่นที่ระบุ -8PU หมายถึง 8MHz ถ้า -16PU หมายถึง 16MHz

เลือกบอร์ด ATmega8 แบบ ไม่ใช้คริสตัล

ตามปกติแล้วทุกครั้งที่ใช้ไอซี ATMega จะต้องมีคริสตัลต่อที่ขา XTAL1 และ XTAL2 ด้วย แต่อย่างไรก็ตาม ในทางปฏิบัติระบบเล็กๆ ไม่จำเป็นต้องใช้ก็ได้ เพราะภายใน Chip มีตัวกำเนิดสัญญานนาฬิกาอยู่แล้ว เรียกว่า Internal Clock ซึ่งเราสามารถใช้ได้แต่ต้องกำหนดบูตโหลดเดอร์ใหม่ เพื่อให้เรียกใช้สัญญานนาฬิกาภายใน Chip แทน

หมายเหตุ: หากต้องการกำหนดใช้หรือไม่ใช้ XTAL ให้ใช้โปรแกรม AVR Loader จะง่ายกว่า อ่านได้จากบทความเรื่อง AVR Loader

ใช้มาโครใน Arduino IDE

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

ในบทความนี้จึงยกตัวอย่างการใช้ มาโคร ในส่วนการกำหนด #define ทำให้โปรแกรมดูสวยงาม และอ่านแล้วสื่อความหมายมากกว่าปกติ (แต่บางคนอาจจะงงได้ หากไม่เข้าใจหลักการ)

ตัวอย่างการเขียนมาโครในภาษา C

วันอาทิตย์ที่ 8 พฤษภาคม พ.ศ. 2559

Atmel Studio 7: กว่าจะอัพโหลดได้

หลังจากที่ติดตั้ง USBasp ใน Windows 10 ได้แล้วก็ถึงคิวติดตั้งโปรแกรมเพื่อเขียนโปรแกรมและอัพโหลดผ่าน USBasp โดยความตั้งใจคือ ใช้โปรแกรมอื่นที่ไม่ใช่ Arduino IDE ซึ่งหลายคนอาจจะสงสัยว่าทำไม ในเมื่อ Arduino IDE ก็สามารถเขียนโปรแกรมควบคุมได้ง่ายๆ โดยไม่ต้องวุ่นวายอะไรเลย

ชุดเบิร์นโปรแกรม Atmega8/168/328 ผ่าน USBasp และสามารถต่ออุปกรณ์ได้เหมือนบอร์ด Arduino

แต่สำหรับผู้เขียนมีความรู้สึกว่า การเขียนโปรแกรมด้วย Arduino IDE เหมือนการเขียนโปรแกรมด้วย Visual Studio ของไมโครซอฟท์ที่ไม่ต้องคิดอะไรมาก อยากเขียนอะไรก็โหลดๆ ไลบรารี่ที่มีคนใจดีเขียนแจกไว้เยอะแยะไปหมด

นำมารวมกับโปรแกรมของเราแล้วเรียกใช้ตามรูปแบบที่เขากำหนดมา ก็ง่ายดี แต่บางครั้งไลบรารีเหล่านั้นก็ทำงานเกินไป ทำให้เสียพื้นที่โปรแกรม หรือไม่ได้อย่างที่เราต้องการ บางครั้งต้องการแค่นิดเดียว แต่ต้องโหลดไลบรารีมาทั้งหมด

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

ทั้งหมดนี้ก็เพื่อที่จะพัฒนาและหวังลึกๆ อยากเขียนไลบรารีแจกบ้างเหมือนกัน :-)

วันเสาร์ที่ 7 พฤษภาคม พ.ศ. 2559

ติดตั้ง USBasp บนวินโดว์ 10 (ที่บ้าน)

เมื่อวานเขียนวิธีการติดตั้งไดร์เวอร์ USBasp โดยเป็นเครื่องโน้ตบุ้คที่ทำงาน มีชื่อผู้ผลิตให้เลือกเป็น VOTI แต่วันนี้หยุดอยู่บ้านลองมาทำตามบทความที่เขียนไว้กับเครื่องที่บ้าน

เศร้าจัง! หาชื่อผู้ผลิต VOTI ไม่เจอ หาอย่างไร อ่านจากเน็ต โหลดไดร์เวอร์ โหลด inf_wizard มาติดตั้งแล้วก็ยังใช้ไม่ได้

สุดท้ายก็มั่วอีกตามเคย... เลือกอะไรก็ได้ดูสิว่าจะใช้ได้ไหม...

คำตอบ คือ ใช้ได้ อัพโหลดโปรแกรมผ่าน Arduino IDE ได้สบายๆ

USBasp ที่ซื้อมาจากเว็บออนไลน์ ราคาไม่ถึงร้อย


ติดตั้ง USBasp บนวินโดว์ 10

ปัญหาชวนปวดหัวสำหรับคนใช้วินโด์ 10 หรือระบบปฏิบัติการใหม่ๆ แต่ไดร์เวอร์ยังไม่รองรับ ก็ต้องหาทางแก้ไขกันต่อไป

รอบนี้เช่นกันสั่งชุดโปรแกรมเมอร์จากเว็บ มาถึงโหลดไดร์เวอร์จากเว็บที่แนะนำมาติดตั้งก็ยังใช้ไม่ได้ ลองหาอ่านจากเว็บอื่นก็ไม่มีคำตอบ ส่วนใหญ่จะติดตั้งกับ Windows 7 หรือ 8

จนถอดใจกะว่าจะใช้บน Linux หรือ Mac เลยลองต่อกับ Raspberry Pi ซึ่งมองเห็นรายละเอียดอุปกรณ์ ทั้งชื่อผู้ผลิต รุ่น และหมายเลขผู้ผลิต 

ระหว่างนั้นก็กลับไปเล่นที่ฝั่งวินโดว์บ้าง ลองเข้าไปดูรายละเอียดไดร์เวอร์เรื่อยๆ ก็เจอชื่อผู้ผลิตอยู่ด้วย เลยลองเลือกดู

บิงโก! ระบบมองเห็นแล้ว

วันศุกร์ที่ 6 พฤษภาคม พ.ศ. 2559

ติดตั้งคีย์บอร์ดภาษาไทยและกำหนดให้สลับคีย์บอร์ด thai-english, Raspberry Pi และ Orange Pi

หลังจากติดตั้ง Raspberry Pi ให้สามารถใช้งานโปรแกรมต่างๆ ได้แล้ว ก็ถึงคิวติดตั้งคีย์บอร์ด ไทย-อังกฤษ เบื้องต้นให้เข้าไปติดตั้งที่ raspi-config ด้วยคำสั่ง

sudo raspi-config

จากนั้นให้เลือกคีย์บอร์ดเป็น en-us และ th-th ให้เลือกทั้ง TIS และ UTF (จริงๆ จะเลือกเฉพาะ UTF ก็ได้)

เมื่อเลือกแล้วระบบยังไม่สามารถสลับคีย์บอร์ด ไทย-อังกฤษ ได้ง่ายนัก จึงต้องเข้าไปกำหนดคำสั่งที่ Terminal ก่อนดังนี้

echo "setxkbmap -option grp:switch,grp:alt_shift_toggle,grp_led:scroll us,th" > ~/.xsessionrc
เมื่อกดปุ่ม Enter แล้วระบบจะสร้างไฟล์ชื่อ .xsessionrc ไว้ใน Home Directory ของ pi แต่เวลาเข้าไปดูจะมองไม่เห็นเพราะจะถูกซ่อนไฟล์ไว้ ต้องใช้คำสั่ง ls -a ถึงจะมองเห็น

จากนั้นให้รีบูตเครื่องก่อน ก็จะสามารถสลับคีย์บอร์ดได้โดยกดปุ่ม Alt+Shift

สำหรับ Orange Pi นั้นถ้าเป็น Debian ให้กำหนด dpkg-reconfigure locales แล้วเลือกเพิ่ม th.TH-UTF8  แค่นี้ก็ใช้ได้แล้ว




Gtk4 ตอนที่ 6 Defining a Child object

Defining a Child object A Very Simple Editor ในบทความที่ผ่านมาเราสร้างโปรแกรมอ่านไฟล์ชนิดข้อความ และในบทความนี้ก็จะมาปรับแต่งโปรแกรมกันสักหน...