สารบัญ:

การเขียนโปรแกรม ATTiny85, ATTiny84 และ ATMega328P: Arduino As ISP: 9 ขั้นตอน (พร้อมรูปภาพ)
การเขียนโปรแกรม ATTiny85, ATTiny84 และ ATMega328P: Arduino As ISP: 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: การเขียนโปรแกรม ATTiny85, ATTiny84 และ ATMega328P: Arduino As ISP: 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: การเขียนโปรแกรม ATTiny85, ATTiny84 และ ATMega328P: Arduino As ISP: 9 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: #เรียนรู้การโปรแกรมAttiny85 #Attiny85bootloader 2024, พฤศจิกายน
Anonim
การเขียนโปรแกรม ATTiny85, ATTiny84 และ ATMega328P: Arduino As ISP
การเขียนโปรแกรม ATTiny85, ATTiny84 และ ATMega328P: Arduino As ISP
การเขียนโปรแกรม ATTiny85, ATTiny84 และ ATMega328P: Arduino As ISP
การเขียนโปรแกรม ATTiny85, ATTiny84 และ ATMega328P: Arduino As ISP

คำนำ

ฉันเพิ่งพัฒนาโปรเจ็กต์ IoT ที่ใช้ ESP8266 สองสามโปรเจ็กต์ และพบว่าตัวประมวลผลหลักกำลังดิ้นรนเพื่อทำงานทั้งหมดที่ฉันต้องการเพื่อจัดการ ดังนั้นฉันจึงตัดสินใจแจกจ่ายกิจกรรมที่มีความสำคัญน้อยกว่าบางส่วนไปยังไมโครคอนโทรลเลอร์ต่างๆ ใน วิธีนี้ทำให้ ESP8266 ว่างเพื่อทำงานเป็นอุปกรณ์ IoT

เนื่องจากฉันต้องการเผยแพร่โครงการของฉันไปยังผู้ชมในวงกว้างที่สุดเท่าที่จะเป็นไปได้ ฉันจึงเลือกใช้ Arduino IDE เป็นแพลตฟอร์มการพัฒนาที่เลือกได้ เนื่องจากมีชุมชนที่ได้รับการสนับสนุนอย่างกว้างขวาง

ข้อจำกัดในการออกแบบ

เพื่อที่จะจัดเตรียมอุปกรณ์เป้าหมายที่เหมาะสมเพื่อให้สามารถเลือกไมโครคอนโทรลเลอร์ที่เหมาะสมกับการใช้งานได้ ฉันจึงตัดสินใจใช้ชิ้นส่วน Atmel ต่อไปนี้ ATMega328P, ATTiny84 และ ATTiny85 เพื่อจำกัดความซับซ้อนของโปรแกรมเมอร์ที่จำเป็น ฉันจำกัดตัวเลือกของนาฬิกาเป็นภายในสำหรับอุปกรณ์ทั้งหมด และ 16MHz ภายนอกสำหรับ ATMega328P และ ATTiny84 เท่านั้น

ต่อไปนี้เป็นชุดของบันทึกย่อเกี่ยวกับการเขียนโปรแกรมด้วย Arduino และคำอธิบายว่าฉันรวบรวมโปรแกรมเมอร์ที่ใช้ Arduino Uno แบบง่าย ๆ สำหรับอุปกรณ์เหล่านี้ได้อย่างไร (ภาพด้านบน)

ฉันต้องการชิ้นส่วนอะไร?

ในการสร้างโปรแกรมเมอร์ คุณจะต้องมีส่วนประกอบดังต่อไปนี้

  1. 1 จาก Arduino Uno
  2. 2 ปิด 28 พิน Zero Insertion Force (ZIF) ซ็อกเก็ต DIP (เพื่อเก็บ ATMega328P, ATTiny85, ATTiny84)
  3. 1 จากโล่ต้นแบบ Arduino (ฉันได้ของฉันที่นี่;
  4. 2 ปิด 5MM LEDs
  5. ตัวต้านทาน 1K ลด 2 ตัว
  6. 1 ปิดตัวต้านทาน 10K
  7. 4 ปิด 22pF ตัวเก็บประจุเซรามิก
  8. 2 ปิด 16MHz คริสตัล
  9. 3 ปิด 0.1uF ตัวเก็บประจุเซรามิก
  10. 1 ปิด 47uF ตัวเก็บประจุด้วยไฟฟ้า
  11. 1 ปิด 10uF ตัวเก็บประจุด้วยไฟฟ้า
  12. ลวดพันลวดความยาวต่างๆ

ฉันต้องการซอฟต์แวร์อะไร

Arduino IDE 1.6.9

ฉันต้องการทักษะอะไร?

  1. ความรู้เกี่ยวกับ Arduino IDE
  2. ความรู้บางอย่างเกี่ยวกับอุปกรณ์อิเล็กทรอนิกส์และวิธีการบัดกรี
  3. ความคล่องแคล่วว่องไวมากมาย
  4. อดทนและสายตาดี

หัวข้อที่ครอบคลุม

  1. บทนำทั่วไปเกี่ยวกับการเขียนโปรแกรม Atmel Microcontrollers
  2. ISP หรือ Bootloader: ค่อนข้างจะสับสน
  3. ภาพรวมวงจร
  4. การตั้งค่าโปรแกรมเมอร์ของคุณ
  5. การใช้โปรแกรมเมอร์ Arduino ISP ของคุณ
  6. การพัฒนาโค้ดบนระบบเป้าหมายของคุณ
  7. Gotchas
  8. บทสรุป
  9. ข้อมูลอ้างอิงที่ใช้

ข้อจำกัดความรับผิดชอบ

เช่นเคย คุณใช้คำแนะนำเหล่านี้โดยยอมรับความเสี่ยงเองและไม่รองรับ

ขั้นตอนที่ 1: บทนำทั่วไปเกี่ยวกับการเขียนโปรแกรม Atmel Microcontrollers

บทนำทั่วไปเกี่ยวกับการเขียนโปรแกรม Atmel Microcontrollers
บทนำทั่วไปเกี่ยวกับการเขียนโปรแกรม Atmel Microcontrollers
บทนำทั่วไปเกี่ยวกับการเขียนโปรแกรม Atmel Microcontrollers
บทนำทั่วไปเกี่ยวกับการเขียนโปรแกรม Atmel Microcontrollers
บทนำทั่วไปเกี่ยวกับการเขียนโปรแกรม Atmel Microcontrollers
บทนำทั่วไปเกี่ยวกับการเขียนโปรแกรม Atmel Microcontrollers

มีสองวิธีในการเขียนโปรแกรมไมโครคอนโทรลเลอร์ Atmel;

  1. ในการเขียนโปรแกรมระบบ (ISP)
  2. การเขียนโปรแกรมด้วยตนเอง (ผ่าน bootloader)

วิธีเดิม (1) ตั้งโปรแกรมไมโครคอนโทรลเลอร์โดยตรงผ่านอินเทอร์เฟซ SPI หลังจากรีเซ็ตอุปกรณ์ในครั้งแรก เว้นแต่จะได้รับคำแนะนำเป็นอย่างอื่น โปรแกรมต้นทางที่คอมไพล์แล้วจะถูกเขียนไปยังอุปกรณ์ทีละน้อยในหน่วยความจำโค้ดจากตำแหน่งที่รันเมื่อเริ่มทำงาน มีอุปกรณ์ ISP จำนวนมากที่สามารถเขียนโปรแกรมอุปกรณ์ Atmel ได้ ซึ่งบางส่วนเป็น (รูปที่ 1); AVRISPmkII, Atmel-ICE, Olimex AVR-ISP-MK2, Olimex AVR-ISP500 ภาพที่ 2 แสดงให้เห็นว่าอุปกรณ์ ISP เชื่อมต่อกับ ATMega328P (ICSP ที่มีเครื่องหมายผิดปกติ) บนบอร์ด Arduino Uno R3 อย่างไร (รูปที่ 3 ให้พิน ISP) นอกจากนี้ยังสามารถตั้งโปรแกรมไมโครคอนโทรลเลอร์ Atmel ผ่านอินเทอร์เฟซ SPI โดยใช้ Arduino Uno เป็น ISP (รูปภาพ 4) ที่นี่ Uno ถูกใช้เพื่อตั้งโปรแกรม ATMega328P

วิธีหลัง (2) ใช้โครงโค้ดขนาดเล็กที่เรียกว่า 'bootloader' ถาวรในหน่วยความจำโค้ดที่ปฏิบัติการได้ (โดยปกติจะถูกล็อคเพื่อป้องกันการเขียนทับโดยไม่ได้ตั้งใจ รูปที่ 5) รหัสนี้ทำงานเป็นอย่างแรกเมื่อเปิดเครื่องหรือรีเซ็ตอุปกรณ์ และอนุญาตให้ไมโครคอนโทรลเลอร์ตั้งโปรแกรมใหม่เองด้วยรหัสใหม่ที่ได้รับผ่านอินเทอร์เฟซอันใดอันหนึ่งจากแหล่งภายนอกสู่ตัวมันเอง Arduino IDE ใช้วิธี bootloader เพื่อตั้งโปรแกรม Arduinos ใหม่โดยแมปเป็นพอร์ต USB comm บนพีซี (หรือกล่อง MAC, Linux ฯลฯ รูปที่ 6) และในกรณีของ Arduino Uno จะสื่อสารกับอุปกรณ์ Atmel ผ่านทาง อินเทอร์เฟซแบบอนุกรมบน IC Pins 2 และ 3 ของ ATMega328P นอกจากนี้ Arduino Uno (ที่ถอดไมโครคอนโทรลเลอร์ ATMega328P ออก) ยังสามารถใช้เพื่อตั้งโปรแกรม ATMega328P ผ่านวิธี bootloader ซึ่งทำหน้าที่เป็นอุปกรณ์อะแดปเตอร์ USB กับซีเรียลได้อย่างมีประสิทธิภาพ (รูปที่ 7)

อะแดปเตอร์ USB เป็นซีเรียลคืออะไร?

อะแดปเตอร์ USB กับซีเรียลคือชิ้นส่วนของฮาร์ดแวร์ที่เสียบเข้ากับพอร์ต USB ของพีซีของคุณ และดูเหมือนพอร์ตคอมแบบอนุกรม (เป็นมรดกจากครั้งก่อนๆ เมื่อคอมพิวเตอร์ใช้มาตรฐานการสื่อสารแบบอนุกรมที่เรียกว่า EIA-232, V24 หรือ RS232) ช่วยให้คุณ ส่งและรับข้อมูลอนุกรมที่ระดับไฟฟ้าเดียวกันของไมโครคอนโทรลเลอร์ เมื่อคุณเลือกเครื่องมือ -> พอร์ต -> COMx จาก Arduino IDE คุณกำลังเชื่อมต่อ/เชื่อมต่อพีซีของคุณกับ Arduino

อุปกรณ์เช่นนี้บางครั้งเรียกว่า FTDI (รูปที่ 8 ซึ่งจริงๆ แล้วเป็นชื่อแบรนด์) หรือ CH340G เป็นต้น USB แบบอนุกรมบน Arduino uno ทำได้โดยใช้ ATMega16U2-MU(R) IC ZU4 เช่นเดียวกับใน Arduino Schematic ด้านล่าง.

เพื่อความชัดเจน ภาพที่ 9 ระบุอุปกรณ์ Atmel สองตัวและตัวเชื่อมต่อ ISP ตามลำดับบน Arduino Uno R3

หมายเหตุ 1: หากคุณเลือกที่จะลงเส้นทางอุปกรณ์ FTDI ให้แน่ใจว่าคุณซื้อจากผู้ขายที่มีชื่อเสียง เนื่องจากมีอุปกรณ์ปลอมแปลงราคาถูกจำนวนมากในตลาดซึ่งล้มเหลวจากการใช้การอัปเดต windows

แนะนำ: