วันพุธที่ 11 เมษายน พ.ศ. 2555
เริ่มต้น 32 bit กับ STM32
STM32 เป็นไมโครคอนโทรลเลอร์ 32 บิต ซึ่งหน่วยประมวลผลกลางเป็น ARM Cortex-M3 สำหรับความสามารถและความเร็วของไมโครคอนโทรลเลอร์ 32 บิต นั้นดีกว่า 8 บิต พอสมควรแต่ต้องแลกกับความยากในการเขียนโปรแกรม เนื่องจากว่าโครงสร้างภายในมีความซับซ้อนมากว่าจึงทำให้การกำหนดค่ารีจิสเตอร์ต่างจะมากกว่า แต่สำหรับไมโครคอนโทรลเลอร์ STM32 นั้น มีชุดความสั่งในการกำหนดรีจิสเตอร์ไว้ให้ ชุดคำสั่งนี้เรียกชื่อเต็มว่า STM32F10x Standard Peripherals Library สามารถดาวน์โหลดได้ฟรีที่ เวปของ ST (www.st.com) หรือ ที่นี้
วันอาทิตย์ที่ 29 มกราคม พ.ศ. 2555
เปิดโปรแกรมด้วย RUN
ในเวลาที่เราลงโปรแกรมไปเยอะสิ่งหนึ่งที่เจอะคือเวลาจะเปิดโปรแกรมจาก start menu เราต้องเสียเวลาในการหา แต่มีตัวช่วยที่จะทำให้เราเปิดโปรแกรมที่ต้องการได้เร็วขึ้น คือ RUN โดยการเรียกใช้ RUN นั้นจะไปที่ start -> RUN หรือกดปุ๋ม windown+R แต่อีกปัญหาคือเราจะรู้ได้อย่างว่าโปรแกรมที่ต้องการจะเปิดต้องพิมพ์ว่าอย่างไร วิธีแรกเราก็พิมพ์มันไปทั้ง path ที่โปรแกรมนั้นอยู่ เช่น C:\Program Files\Atmel\AVR Studio 5.0\avrstudio5.exe แล้ว AVR Studio 5 ก็จะเปิดขึ้นมา แ่ต่ถ้าเราขี้เกียจพิมพ์ยาวขนาดนั้นก็พิมพ์แค่ avrstudio5 ก็พอ แต่ใช่ว่าทุกโปรแกรมจะเป็นเหมือนกันบางโปรแกรมที่ลงไว้อาจจะยังไม่ได้เซ็ืต path ไว้จึงเรียกใช้ไม่ได้แต่เราสามารถเซ็ตเองได้ โดยการเข้าไปแก้ที่ regedit ดังนี้
1. start > RUN พิมพ์ regedit
2. ไปที่ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\windowns\CurrentVersion\App Path
แล้วทำการแก้ตรงนี้ ตามวิดีโอ(เดี๋ยวอัพให้)
วันศุกร์ที่ 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 ตัวนี้มีีไว้ทำไม
สงสัยตรงไหนโพสถามได้ครับ
สมัครสมาชิก:
บทความ (Atom)