Lab 1 AVR I/O Port

หลังจากที่ได้ติดตั้ง CodeVisionAVR ไปแล้วเรามาทำการทดลองเลยครับ การทดลองนี้จะทดลองเกี่ยวกับ I/O Port ของ AVR ขา PORT ของ AVR จะมี Register ที่เกียวข้องอยู่ 3 Register

1. Data Register – PORTx คือค่าที่ต้องการส่งไปยัง PORT

2. Data Direction Register – DDRx เป็น Register ที่ใช้กำหนดทิศทางของ port ว่าจะให้เป็นอินพุตหรือเอาต์พุต ถ้ามีค่าเป็น “1″ จะเป็นเอาต์พุต ในทางตรงกันข้ามถ้ามีค่าเป็น “0″ จะเป็นการกำหนดให้พอร์ตนั้นเป็นอินพุต

3. Port Input Pins – PINx เป็นค่าอินพุตของพอร์ตนั้นสามารถอ่านได้อย่างเดียว

นอกจาก Register 3 ตัวแล้วยังมี Register ที่กำหนดว่าจะให้พอร์ตนั้นมีการ Pull-up หรือไม่ โดยการสั่งให้ pull-up ทำได้โดยให้บิต PUD ใน SFIOR(Speacial Function I/O Register) มีค่าเป็น “0″ จะได้ความสัมพันธ์ดังตารางที่ 1

ตารางที่ 1 Port/Pin Configuration

หลังจากที่ได้เรียนรู้หลักการคร่าวๆ ไปแล้วเรามาลองต่อวงจรทดลองกันเลยครับ

?คลิกที่รูปเพื่อขยายภาพ

รูปที่ 1 วงจรการทดลอง

การทดลองนี้ผมกำหนดให้ PORT A1 และ A2 เป็นเอาต์พุตซึ่งจะแสดงผลที่ LED และ PORT B3 และ A5 จะเป็นอินพุต รับค่าจากสวิตช์ เมื่อทำการกดสวิตช์ SW1 (PINB.0) LED1(PORTA.2) ก็จะติด และเมื่อทำการกดสวิตช์ SW2 (PINA.5) LED2(PORTA.1) ก็จะติด

รูปที่ 2 ทำการทดลอง

หลังจากโปรแกรม HEX file ลง IC แล้ว ถ้าไม่ได้ผลลัพธ์ดังข้างบนให้ลองเช็คไฟที่จุดต่างๆดูครับ โดยเฉพาะขา RESET จะต้องมีค่าเป็น “1″ ถึงจะทำงาน หลังจากการทดลองนี้คิดว่าคงจะพอเข้าใจหลักการทำงานของ Port I/O มากขึ้นนะครับ

Download Code การทดลองที่ 1

เริ่มต้นใช้งาน CodeVisionAVR

เมื่อพูดถึงไมโครคอนโทรลเลอร์ในบ้านเรา AVR จะเป็นอีกหนึ่งตระกูลที่มีผู้ใช้เป็นจำนวนมาก ในการเขียนโปรแกรมสามารถเขียนได้หลายภาษาเช่นกัน ในวันนี้ผมจะแนะนำการเริ่มต้นใช้งาน CodeVisionAVR ตัวนี้จะเป็น Software ลิขสิทธ์นะครับ แต่สามารถทดลองใช้ได้โดยการ Download ตัว demo จากเวบมาลองใช้

หลังจากลงโปรแกรมเสร็จแล้วเรามาเริ่มกันเลยครับ ของผมจะเป็น Version 1.24.0 Standard ถ้าหน้าจอไม่เหมือนกับของผมอาจเป็นไปได้ว่า เพราะ Version ที่ต่างกัน

1. ทำการเปิดโปรแกรมขึ้นมา จะใช้วิธีดับเบิ้ลคลิกที่ Desktop ก็ได้ครับ คลิก File —> New

รูปที่ 1

2. เลือก Project แล้วกด OK

รูปที่ 2

3. จะมีหน้าต่างมาถามเราว่าต้องจะสร้างโปรเจคด้วย CodeWizardAVR หรือเปล่า ให้กด Yes ไปครับ ตรงนี้จะเป็น Feature ที่เด่นอย่างนึงของ CodeVisionAVR เราสามารถ initial & Config ได้โดยการคลิกๆๆ

รูปที่ 3

4. เราจะเจอ Tab อยู่หลายอย่าง ให้ตั้งค่าตามที่ต้องการ

รูปที่ 4

  • Chip เบอร์ AVR ที่ใช้งาน, ความถี่ที่ใช้ี่ ชนิดของโปรแกรม
  • Ports ไว้กำหนดว่าเป็นอินพุต/เอาต์พุต Pull up
  • External IRQ Enable ขาอินเตอร์รัปภายนอก
  • Timers ตั้งรูปแบบการทำงาน Timer รวมทั้ง Watchdog
  • USART การรับส่งข้อมูลผ่านพอร์ตอนุกรม
  • Analog Comparator ใช่/ไม่ใช้ Analog Comparator
  • ADC ตั้งค่า ADC ภายในของ AVR
  • LCD กำหนดพอร์ตที่ใช้งานจอ LCD มีฟังก์ชัน LCD ให้ ไม่ต้องเขียนฟังก์ชันเอง
  • ฺBit-Banged กำหนดพอร์ต ที่ใช้ติดต่อกับ DS1302
  • Project Information ไว้เขียนรายละเอียดเกี่ยวกับโปรเจค
  • SPI ตั้งค่าการใช้งาน SPI
  • I2C ตั้งค่าการใช้งาน I2C เลือก I2C device
  • 1 Wire ตั้งค่าการใช้งาน 1 Wire (DS1820)
  • 2 Wire (I2C) ตั้งค่าเพิ่มเติม I2C

5. หลังจากที่ตั้งค่าเสร็จแล้ว ให้เลือก Generate, Save and Exit โปรแกรมจะทำการ Generate Code ตามที่เราตั้งค่าไว้ในขั้นตอนที่ 4

รูปที่ 5

6. ตั้งชื่อ File โดยปกติจะตั้งชื่อว่า main

รูปที่ 6

7. ตั้งชื่อโปรเจค

รูปที่ 7

8. ตั้งชื่อ CodeWizardAVR โปรเจค

รูปที่ 8

9. หลังจากคลิก Save ในขั้นตอนที่ 8 แล้ว โปรแกรมจะ Generate โปรเจคมาให้ เราสามารถเพิ่ม Code เพิ่ม File .h, .C เข้าไปในโปรเจคได้เลย

รูปที่ 9

10. เมื่อเขียนโปรแกรมเสร็จแล้วให้กด Shift+F9 เพื่อ Compile โปรแกรมที่เราเขียนไป ถ้าไม่มีข้อผิดพลาดจะเห็น หน้าต่างขึ้นมาดังรูปที่ 10

รูปที่ 10

11. File .HEX ที่ได้มาจากการ Compile จะอยู่ในโฟลเดอร์โปรเจคที่เราเซฟไว้ หลังจากนั้นเรานำ .HEX ไป burn ใส่ IC เป็นอันเสร็จครับ :) บทความหน้าผมจะสร้างโปรเจคง่ายๆไว้ทดลองกันครับ