การใช้งาน ATtiny85 ด้วย เครื่องโปรแกรม AVR รุ่น USBasp
การใช้งาน ATtiny85 ด้วย เครื่องโปรแกรม AVR รุ่น USBasp
AVR เป็นไมโครคอนโทรลเลอร์รุ่นต่อมาที่มีการ พัฒนาต่อมาจาก MCS-51 โดยบริษัท ATMEL อัน เนื่องมาจากว่า MCS-51 ยุคหลังนี้ไม่ค่อยมีคนใช้ งานจริง และมีใช้งานแต่เฉพาะในสถาบันการศึกษา เป็นเช่นนี้ก็เพราะว่าการออกออกแบบวงจรที่ ค่อนข้างยุ่งยาก และต้องอาศัยการต่ออุปกรณ์ร่วม เยอะนั้นเอง
ATtiny85 ไอซีตะกูล AVR ขนาดเล็ก มีพื้นที่โปรแกรม 8KB สามารถใช้บอร์ด Arduino ในการโปรแกรมแบบ ISP ได้ และยังสามารถใช้โค้ด Arduino ในการเขียนโปรแกรมให้ไอซีทำงานได้อีกด้วย เหมาะสำหรับการเรียนรู้การใช้งาน ไมโครคอนโทรลเลอร์ AVR ขั้นพื้นฐาน รายละเอียดเพิ่มเติม ตามลิงค์ด้านล่าง
โดยบทความนี้จะแสดงวิธีการ ขั้นตอนการเขียนโปรแกรม ( code ) ลงบน AVR ด้วยการโปรแกรมแบบ ISP (In System Programming) จาก เครื่องโปรแกรม AVR รุ่น USBasp
การใช้งาน ISP (In System Programming)
- MOSI == Master Out Slave In: data input
- MISO == Master In Slave out : data output
- SCK == Serial ClocK : clock input
- RST == RESET: used to activate the serial Programming
จากข้างบนจะเห็นว่า ขาที่เป็น MOSI นั้น จะเป็นขาส่งข้อมูลออก ( Output ) ของตัวแม่ ( Master )
MISO นั้น เป็นขาที่รับข้อมูล (Input ) ที่ส่งมาจากลูก ( Slave )
SCK นั้น เป็นตัวนาฬิกาคอยให้จังหวะการส่งข้อมูล
ขาสุดท้ายก็คือ RST นั้น คือตัวที่เริ่มให้มีการเขียนโปรแกรมลง Chip
ขั้นตอนการทํางาน
1 : ลงไดร์เวอร์ให้ เครื่องโปรแกรม AVR รุ่น USBasp
เสียบ USBasp ไปที่ USB ของ คอมพิวเตอร์
คลิกขวา ที่ Start เลือกไปที่ Device Manager
แสดงการติดตั้งไดรเวอร์ที่ยังไม่สมบูรณ์
ดาวน์โหลดไดร์เวอร์ USBasp ตามลิงค์ด้านล่าง
เมื่อดาว์นโหลดไฟล์เสร็จแล้ว ให้คลายไฟล์นำไปวางไว้ในโฟลเดอร์
คลิก เลือกไฟล์ InstallDriver เพื่อติดตั้งไดรเวอร์
คลิก Next >
คลิก Finish
ตรวจสอบไดร์เวอร์ USBasp หลังติดตั้ง ต้องแสดงการติดตั้งไดรเวอร์ USBasp ที่พร้อมใช้งานแล้ว
2 : เพิ่มบอร์ด ATtiny85 ให้ Arduino IDE
เพิ่มบอร์ด ATtiny85 ให้กับ Arduino IDE ตามขั้นตอนลิงค์ด้านล่าง
3 : ต่อวงจรสำหรับ อัพโหลดโปรแกรม
ต่อวงจร เครื่องโปรแกรม AVR รุ่น USBasp กับ ATtiny85 ตามภาพด้านล่าง
เชื่อมต่อวงจรดังนี้:
- MOSI – เชื่อมต่อ USBasp ขา MOSI กับ ATtiny85 ขา 5
- RST – เชื่อมต่อ USBasp ขา RST กับ ATtiny85 ขา 1
- SCK – เชื่อมต่อ USBasp ขา SCK กับ ATtiny85 ขา 7
- MISO – เชื่อมต่อ USBasp ขา MISO กับ ATtiny85 ขา 6
- VCC – เชื่อมต่อ USBasp ขา VCC กับ ATtiny85 ขา 8
- GND – เชื่อมต่อ USBasp ขา GND กับ ATtiny85 ขา 4
4 : ต่อวงจร LED เพิ่ม เพื่อทดสอบการทำงาน
เพื่อทดสอบการใช้งาน ขา OUTPUT ของ ATtiny85 แบบ Digital โดยสั่งให้ ATtiny85 เปิด/ปิด ไฟ LED
โดย การต่อ LED ขายาว และ รีซิสเตอร์ 220 OHM เพิ่มที่ขา 3 และ LED ขาสั้น ไปที่ขา 4 ดังรูปด้านล่าง
5 : โปรแกรมแรกกับ ATtiny85
ในตัวอย่างนี้ เราจะมาทดลองสั่งงาน เปิด/ปิด หลอดไฟ LED โดยโปรแกรม Blink หรือ ไฟกระพริบ ATtiny85
เซ็ตขา PB4 ของ ATtiny85 ให้เป็นโหมดเอาท์พุท ด้วยคำสั่ง pinMode(4, OUTPUT);
คำสั่ง digitalWrite(4, HIGH); ใช้ในการควบคุม LED โดย HIGH = ไฟติด , LOW = ไฟดับ
คำสั่งหน่วงเวลา delay(500); โดย 500 คือ 500 มิลลิวินาที หรือ 0.5 วินาที และ 1000 คือ 1000 มิลลิวินาที หรือ 1 วินาที
เปิดโปรแกรม Arduino IDE เขียนโปรแกรม ตามโค้ดด้านล่างนี้
void setup()
{
//The 8-pin ATTinys (25/45/85) all have 5 usable digital output pins 0-4
pinMode(4, OUTPUT);
}
void loop()
{
digitalWrite(4, HIGH); //Set the LED pins to HIGH. This gives power to the LED and turns it on
delay(500); // Wait for a half a second
digitalWrite(4, LOW); // Set the LED pins to LOW. This turns it off
delay(1000); // Wait for a half second
}
ไปที่ Tools -> Board แล้วเลือกให้ตรงกับบอร์ดที่ใช้งาน สำหรับ ATtiny85 ให้เลือกบอร์ดเป็น ATtiny25/45/85
ไปที่ Tools -> Processor -> ATtiny85
ไปที่ Tools -> Programmer -> USBasp
ไปที่ Tools -> Clock -> Internal 8 MHz
ผลลัพธ์การทำงานคือ ไฟ LED สีแดงกระพริบ แสดงว่า การอัพโหลดโค้ด โปรแกรมแรกของคุณ กับ ATtiny85 สำเร็จแล้ว
6 : รายการอุปกรณ์
- 1. USBasp USBisp AVR Programmer
- 2. Jumper (M2F) 30cm Male to Female
- 3. ATtiny85 ATTINY85-20PU 8-bit AVR
- 4. Jumper (M2M) 20cm Male to Male
- 5. หลอดไฟ LED 5mm สีแดง
- 6. รีซิสเตอร์ 220 OHM 1/4W 5%
- 7. Mini Breadboard 170 holes
credit : http://riteshkhanna.com/2016/04/20/programming-attiny45attiny85-with-a-usbasp-avr-programmer/