บทความนี้เป็นการแนะนำการใช้งานบอร์ด ET-BASE AVR EASU4809 ของบริษัท ETT ที่ใช้ไมโครคอนโทรลเลอร์ ATMEGA4809 ของบริษัท Microchip ซึ่งถูกนำมาใช้เป็นบอร์ด Arduino ที่ทำงานด้วยสัญญาณนาฬิกา 20MHz มาพร้อมกับหน่วยความจำ FLASH ROM ขนาด 40KB, EEPROM 256 ไบต์ หน่วยความจำ RAM จำนวน 6KB และมี ADC ความละเอียด10 บิต ซึ่งเรียกได้ว่ามีคุณสมบัติที่สูงกว่า ATmega 368P ที่ใช้กับ Arduino Uno หรือ Arduino Nano อย่างมาก แต่บอร์ดที่เลือกมาใช้ในครั้งนี้ยังมีคุณสมบัติที่มากกว่าบอร์ด Arduino พื้นฐานอีกหลายด้าน ซึ่งผู้อ่านสามารถเข้าไปอ่านได้จากหน้าเว็บของบอร์ดเพิ่มเติม

ภาพที่ 1 บอร์ด ET-BASE AVR EASY4809

ATmega4809

ไมโครคอนโทรลเลอร์ ATmega4809 เป็นไมโครคอนโทรลเลอร์ 8 บิตบนสถาปัตยกรรม RISC และมีคุณสมบัติดังนี้

  1. Flash ROM 48KB ที่เขียน/ลบได้ 10,000 ครั้ง
  2. SRAM 6KB
  3. EEPROM 256 ไบต์ ที่เขียน/ลบได้ 100,000 ครั้ง
  4. UART จำนวน 4 ช่องสัญญาณ
  5. SPI จำนวน 1 ช่องสัญญาณ
  6. i2C จำนวน 1 ช่องสัญญาณ
  7. PWM จำนวน 11 ช่องสัญญาณ
  8. Input Capture จำนวน 16 ช่องสัญญาณ
  9. Timer 16 บิต จำนวน 5 ช่องสัญญาณ
  10. ADC 10 บิต จำนวน 16 ช่องสัญญาณ
  11. Event System จำนวน 8 ช่องสัญญาณ
  12. GPIO จำนวน 41 ขา
    1. PA0..PA7
    2. PB0..PB5
    3. PC0..PC7
    4. PD0..PD7
    5. PE0..PE3
    6. PF0..PF6
  13. Asynchronous external interrupts จำนวน 10 แหล่ง
  14. Sleep mode 3 แบบ คือ Idle, Standby และ Power-down

ติดตั้งบอร์ด

ขั้นตอนการติดตั้งข้อมูลบอร์ดเพื่อใช้งานกับ Arduino IDE เป็นดังนี้

  1. ไปที่เมนู File/Preferences เพิ่มรายการต่อไปนี้ของ MCUdude
    https://mcudude.github.io/MegaCoreX/package_MCUdude_MegaCoreX_index.json
  2. เข้าเมนู Tools/Board:xxx/Board Manager …
  3. ค้นหา MegaCoreX และติดตั้ง ดังภาพที่ 2
  4. เลือกรายการบอร์ดเป็น MegaCoreX/ATmega4809 ดังภาพที่ 3
  5. พร้อมใช้งานดังภาพที่ 4 โดยให้ตรวจสอบค่าต่อไปนี้ให้ถูกต้อง
    1. clock เป็น internal 20 MHz
    2. Bootloader เป็น Optiboot (UART0 default pins)
    3. Port ที่เชื่อมต่อกับบอร์ด
ภาพที่ 2 บอร์ด MegaCoreX
ภาพที่ 3 รายการภายในบอร์ด MegaCoreX
ภาพที่ 4 รายการตั้งค่าของบอร์ด ATmega4809

ตัวอย่างโปรแกรม

ตัวอย่างโปรแกรมที่มากับบอร์ด ET-BASE AVR EASY4809 ของทาง ETT มีดังนี้

  • ตัวอย่างการใช้งาน ADC
    • ADC 0-7
    • ADC 8-11
    • ADC 12-15
  • ตัวอย่างการ Blink LED บนบอร์ด
  • ตัวอย่างการส่งข้อมูลออกขาต่าง ๆ
    • LED Moving ALL
    • LED Moving D0-D7
    • LED Moving D8-D13
    • LED Moving D14-D21
    • LED Moving D22-D29
    • LED Moving D30-D33
    • LED Moving D34-D40
  • ตัวอย่างการสื่อสาร RS232 CH1
  • ตัวอย่างการสื่อสาร RS485
    • RS485 CH1
    • RS485 CH2

ตัวอย่างการหา Prime Number จากตัวเลข 2-2,000 ตามตัวอย่างในบทความLGT8F328P ได้ผลลัพธ์เป็นดังภาพที่ 5 ซึ่งนับว่าด้วยความเร็วที่เพิ่มขึ้น 4MHz จาก 16MHz มาเป็น 20MHz ทำความเร็วได้ดีขึ้นมาก และเมื่อเปรียบเทียบกับ LGT8F328P ที่ทำงาน 32MHz แต่ทำงานได้ช้ากว่านับว่า ATmega4809 เป็นไมโครคอนโทรลเลอร์ขนาด 8 บิตที่น่าสนใจมากตัวหนึ่ง

ภาพที่ 5 ผลลัพธ์ของการทำงานหา Prime Number

สรุป

จากบทความนี้จะพบว่าทางบริษัท Microchip ได้พัฒนาไมโครคอนโทรลเลอร์ตระกูล AVR อย่างต่อเนื่อง โดยในรุ่นนี้มีศักยภาพที่สูงขึ้นอย่างเห็นได้ชัด และสามารถใช้ได้กับคลังคลาสของ Arduino ที่หลากหลาย และบอร์ด ET-BASE AVR EASY4809 ได้เปิดใช้ขาต่าง ๆ ของชิพตัวนี้ได้อย่างเต็มความสามารถ เนื่องจากพวกเราเห็นมีการนำชิพตัวนี้ใส่ในโครงของ Arduino Nano ทำให้ I/O ถูกใช้งานไม่ครบถ้วน นอกจากนี้บนบอร์ดยังมีส่วนเชื่อมต่อกับอุปกรณ์ภายนอกเอาไว้เพื่อความสะดวกในการนำไปใช้งาน สุดท้ายขอให้สนุกกับการเขียนโปรแกรมครับ

ท่านใดมีคำถามหรืออะไรแลกเปลี่ยนคอมเมนท์ไว้ได้เลยครับ

(C) 2020-2021, โดย อ.ดนัย เจษฎาฐิติกุล/อ.จารุต บุศราทิจ
ปรับปรุงเมื่อ 2021-06-28, 2021-10-05