วันศุกร์ที่ 9 ธันวาคม พ.ศ. 2554
ต่อจอ lcd 16x2
ไมโครคอนโทรลเลอร์ก็เหมือนกับเคสคอมพิวเตอร์ย่อขนาดมาใส่ไว้ในชิบ ในบทความนี้จะพาต่อจอแสดงผลออกมาครับ ซึ่งจอแสดงผลที่เป็นพื้นฐานที่นำมาต่อกับไมโครคอนโทรลเลอร์คือจอ LCD Character แต่จอแสดงผลแบบนี้จะมี IC คอนโทรลอีกที่ IC ตัวนั้นคือ IC เบอร์ hd44780 ซึ่งตอนแรกผมตั้งใจจะเขียน library ติดด่อกับ hd44780 แต่พอได้ไปดู library ที่เขาเขียนไว้แล้วเอาของเขาดีกว่า เขียนดีกว่าเราเยอะ lib ที่เอามานี้ผมเอามาจาก avrfreaks.net สาวก avr ควรไปสมัครเป็นสมาชิกไว้ เพราะจะโหลด lib เขาต้องเป็นสมาชิกก่อนถึงจะโหลดได้
วันอังคารที่ 6 ธันวาคม พ.ศ. 2554
รีจิสเตอร์ คืออะไร
registers คือวงจรภายในที่ทำหน้าที่ควบคุมการทำงานของไมโครคอนโทรลเลอร์ เราสามารถติดต่อกับรีจิสเตอร์ผ่าน RAM โดยมีการแบ่งได้หลายแบบ ถ้าแบ่งตามลักษณะการทำงานจะแบ่งได้ 3 ชนิด
- control register ทำหน้าที่ควบคุมการทำงาน
- data register ทำหน้าที่รับส่งข้อมูล
- status register ทำหน้าที่บอกสถานะ
ยกตัวอย่าง register ที่เกี่ยวกับ I/O ของ atmega8 มีอยู่ 3 ตัว คือ DDR ,PORT และ PIN DDR เป็น control register PORT และ PIN เป็น data register มาดูโปรแกรมกัน
- #include <avr/io.h>
- int main()
- {
- DDRB = 0xFF ;
- DDRC = 0x00 ;
- while(1)
- {
- PORTB = PINC ;
- }
- }
วันจันทร์ที่ 5 ธันวาคม พ.ศ. 2554
เริ่มต้นเขียนโปรแกรม Microcontroller
ในการเริ่มต้นเขียนโปรแกรมไมโครคอนโทรลเลอร์นั้นจริงๆ จะต้องศึกษาสถาปัตยกรรมภายในของไมโครคอนโทรลเลอร์ของเบอร์ที่เราจเขียน แต่ถ้าเขียนด้วยภาษาซีแล้วอาจจะไม่ต้องไปทำความเข้าใจถึงขนาดนั้นเอาแค่ทำความเข้าใจเรื่องรีจิสเตอร์ ในตอนแรกนี้จะมีรีจิสเตอร์ที่เกี่ยวข้องอยู่สองตัวคือ DDR (รีจิสเคอร์ควบคุมกำหนดทิศทางของข้อมูล) กับ PORT (เป็นรีจิสเตอร์ข้อมูลที่ใช้เก็บข้อมูลที่เช้า ออก ผ่าน port)
สำหรับภาษาซีที่เขียนในคอนโทรลเลอร์นั้นหลักๆ จะแยกออกสองส่วนที่อยู่ในฟังก์ชั่นหลัก ( main )
สำหรับภาษาซีที่เขียนในคอนโทรลเลอร์นั้นหลักๆ จะแยกออกสองส่วนที่อยู่ในฟังก์ชั่นหลัก ( main )
- int main()
- {
- ประกาศตัวแปร เซ็ตรีจิสเตอร์(ส่วนที่1)
- while loop
- {
- งานที่จะทำ (ส่วนที่2)
- }
- }
วันพฤหัสบดีที่ 9 มิถุนายน พ.ศ. 2554
USART Transmit
USART ย่อมาจาก The Universal Synchronous and Asynchronous serial Receiver and Transmitter เป็นการรับส่งข้อมูลแบบ serial ในบทความนี้ผมได้ให้ ATmega16 ส่งตัวอักษรไปยัง com port ในโปรแกรม proteus สำหรับ code ก็เอามาจากใน datasheet ของ ATmega16 เลย ซึ่ง datasheet เป็นสิ่งที่จำเป็นที่จะต้องรู้อย่างมากในการเขียนโปรแกรม microcontroller
วันเสาร์ที่ 21 พฤษภาคม พ.ศ. 2554
Interrupt in avr studio 5
ถ้าแบ่งการเขียนโปรแกรม mcu ออก 2 แบบคือ แบบใช้ interrupt กับแบบไม่ใช้ interrupt(เรียกอีกอย่างว่า polling )
Polling คือการเขียนโปรแกรมแบบวนลูป interrupt คือการเขียนโปรแกรมขัดจังหวะ เป็นอย่างไรมาดูกัน สมมติ mcu เรามีร้านขาย ic มีงานอยู่สองอย่าง คือ ดูหน้าร้านกับเขียนโปรแกรมหลังร้าน ถ้าทำแบบ polling จะวนลูปทำสองอย่างเช่น เขียนโปรแกรมได้ หนึ่งบรรทัดแล้วออกมาดูหน้าร้านว่ามีคมมารึเปล่า แต่ interrupt จะไม่ต้องทำอย่างนั้น interrupt จะ เขียนโปรแกรมไปเรื่อยจนกว่าจะมีคนมาจึงออกไปขายของหน้าร้านไม่ต้องออกมาเช็คบ่อย
ครั้งนี้ผมจะมาแสดงการก็อป source code แล้วแก้ไขจะเห็นว่าง่ายมาก แต่ต้องอ่าน datasheet มาก่อนว่า register ตัวนี้มีีไว้ทำไม
Polling คือการเขียนโปรแกรมแบบวนลูป interrupt คือการเขียนโปรแกรมขัดจังหวะ เป็นอย่างไรมาดูกัน สมมติ mcu เรามีร้านขาย ic มีงานอยู่สองอย่าง คือ ดูหน้าร้านกับเขียนโปรแกรมหลังร้าน ถ้าทำแบบ polling จะวนลูปทำสองอย่างเช่น เขียนโปรแกรมได้ หนึ่งบรรทัดแล้วออกมาดูหน้าร้านว่ามีคมมารึเปล่า แต่ interrupt จะไม่ต้องทำอย่างนั้น interrupt จะ เขียนโปรแกรมไปเรื่อยจนกว่าจะมีคนมาจึงออกไปขายของหน้าร้านไม่ต้องออกมาเช็คบ่อย
ครั้งนี้ผมจะมาแสดงการก็อป source code แล้วแก้ไขจะเห็นว่าง่ายมาก แต่ต้องอ่าน datasheet มาก่อนว่า register ตัวนี้มีีไว้ทำไม
สงสัยตรงไหนโพสถามได้ครับ
วันอังคารที่ 3 พฤษภาคม พ.ศ. 2554
ทำความรู้จัก AVR studio 5
ams AVR studio 5 เป็น IDE ( integrated development environment ) ทำหน้าที่เป็นพื้นที่ในการเขียนโปรแกรม ( text editor ) และ แปลงภาษาซีให้เป็นภาษาเครื่อง ( compiler ) โดยจะเริ่มจากเราเขียนโปรแกรมภาษาซี ( source code ) จากนั้น compiler จะ compile เป็น object file( .o) แล้วเรียกใช้ linker แปลง ให้เป็น hex file ( .hex ) ซึ่ง .hex จะเป็น file ที่จะเอาไปใส่ใน MCU
เราจะต้องรู้การทำงานของ IDE เพื่อที่จะได้เซตค่าให้ถูก และแก้ปัญหาในบ้างครั้ง เอาแค่นี้ก่อนมาเริ่มลองกะของจริงเลยดีกว่า เปิด AVR studio 5 ขึ้นมาเลยครับจะเจอหน้าแรกแบบนี้
สมัครสมาชิก:
บทความ (Atom)