วันพุธที่ 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 ชนิด


  1. control register ทำหน้าที่ควบคุมการทำงาน
  2. data register   ทำหน้าที่รับส่งข้อมูล
  3. status register  ทำหน้าที่บอกสถานะ
ยกตัวอย่าง register ที่เกี่ยวกับ I/O ของ atmega8 มีอยู่ 3 ตัว คือ DDR ,PORT และ PIN DDR เป็น control register PORT และ PIN เป็น data register มาดูโปรแกรมกัน

  1. #include <avr/io.h>

  2. int main()
  3. {
  4. DDRB = 0xFF ;
  5. DDRC = 0x00 ;
  6. while(1)
  7. {
  8. PORTB = PINC ;
  9. }
  10. }
จากโปรแกรมผมเซ็ต port B ให้เป็น output เซ็ต port C ให้เป็น input แล้วนำข้อมูลจาก port C มาออกที่ port B ข้อมูลของregister สามารถหาอ่านได้ ใน use manual ของ mcu เบอร์นั้นๆ นะครับ

วันจันทร์ที่ 5 ธันวาคม พ.ศ. 2554

เริ่มต้นเขียนโปรแกรม Microcontroller

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

     สำหรับภาษาซีที่เขียนในคอนโทรลเลอร์นั้นหลักๆ จะแยกออกสองส่วนที่อยู่ในฟังก์ชั่นหลัก ( main )


  1.           int main()
  2.          {
  3.                ประกาศตัวแปร เซ็ตรีจิสเตอร์(ส่วนที่1)

  4.                       while loop 
  5.                       {
  6.                         งานที่จะทำ   (ส่วนที่2)
  7.                        }
  8.           }


วันพฤหัสบดีที่ 9 มิถุนายน พ.ศ. 2554

USART Transmit

USART ย่อมาจาก The Universal Synchronous and Asynchronous serial Receiver and Transmitter เป็นการรับส่งข้อมูลแบบ serial ในบทความนี้ผมได้ให้ ATmega16 ส่งตัวอักษรไปยัง com port ในโปรแกรม proteus สำหรับ code ก็เอามาจากใน datasheet ของ ATmega16 เลย ซึ่ง datasheet เป็นสิ่งที่จำเป็นที่จะต้องรู้อย่างมากในการเขียนโปรแกรม microcontroller