สารบัญ:

วิธีตั้งโปรแกรม AVR (arduino) ด้วย Arduino อื่น: 7 ขั้นตอน
วิธีตั้งโปรแกรม AVR (arduino) ด้วย Arduino อื่น: 7 ขั้นตอน

วีดีโอ: วิธีตั้งโปรแกรม AVR (arduino) ด้วย Arduino อื่น: 7 ขั้นตอน

วีดีโอ: วิธีตั้งโปรแกรม AVR (arduino) ด้วย Arduino อื่น: 7 ขั้นตอน
วีดีโอ: วิธีแก้ปัญหา Arduino ไม่เจอคอมพอร์ต COM Port ลงโปรแกรมไม่ได้ ใช้กับ ESP8266 ESP32 ได้ Arduino IDE 2 2024, พฤศจิกายน
Anonim
วิธีการตั้งโปรแกรม AVR (arduino) ด้วย Arduino ตัวอื่น
วิธีการตั้งโปรแกรม AVR (arduino) ด้วย Arduino ตัวอื่น
วิธีการตั้งโปรแกรม AVR (arduino) ด้วย Arduino ตัวอื่น
วิธีการตั้งโปรแกรม AVR (arduino) ด้วย Arduino ตัวอื่น
วิธีการตั้งโปรแกรม AVR (arduino) ด้วย Arduino ตัวอื่น
วิธีการตั้งโปรแกรม AVR (arduino) ด้วย Arduino ตัวอื่น

คำแนะนำนี้มีประโยชน์หาก:

* คุณมี Arduino กับ atmega168 และคุณซื้อ atmega328 ที่ร้านขายอุปกรณ์อิเล็กทรอนิกส์ในพื้นที่ของคุณ ไม่มี bootloader arduino * คุณต้องการสร้างโปรเจ็กต์ที่ไม่ใช้ arduino - แค่ชิป AVR ปกติ (เช่น USBTinyISP) - คุณมี attiny2313/attiny48 ที่สะอาด ฯลฯ ที่คุณต้องการเบิร์นเฟิร์มแวร์ โดยปกติคุณจะต้องมี ISP (ในโปรแกรมเมอร์ระบบ) เช่น USBTinyISP เพื่อตั้งโปรแกรมชิปใหม่ของคุณ การมี Arduino คุณสามารถสอนให้เป็นโปรแกรมเมอร์ได้ ขอบคุณ Randall Bohn ที่ทำงานที่ยอดเยี่ยม เขาสร้าง Mega-ISP ซึ่งเป็นภาพสเก็ตช์ Arduino ที่ทำงานเหมือนโปรแกรมเมอร์

ขั้นตอนที่ 1: คุณต้องการอะไร

อะไรที่คุณต้องการ ?
อะไรที่คุณต้องการ ?

* Arduino ที่ใช้งานได้ (หรือโคลน - ฉันใช้ BBB - BareBonesBoard และ RBBB - RealBareBonesBoard โดย ModernDevices) * ชิปที่คุณต้องการตั้งโปรแกรม (ทดสอบด้วย atmega8, atmega168, atmega368, attiny2313, attiny13) * เขียงหั่นขนมหรือ บอร์ดที่มีส่วนหัวของ ISP * ไฟ LED 3 ตัว + ตัวต้านทาน 3 ตัว * สายเขียงหั่นขนม

ขั้นตอนที่ 2: การสร้างโปรแกรมเมอร์ Mega-isp บน Breadboard

การสร้างโปรแกรมเมอร์ Mega-isp บนเขียงหั่นขนม
การสร้างโปรแกรมเมอร์ Mega-isp บนเขียงหั่นขนม
การสร้างโปรแกรมเมอร์ Mega-isp บนเขียงหั่นขนม
การสร้างโปรแกรมเมอร์ Mega-isp บนเขียงหั่นขนม
การสร้างโปรแกรมเมอร์ Mega-isp บนเขียงหั่นขนม
การสร้างโปรแกรมเมอร์ Mega-isp บนเขียงหั่นขนม

มีสองวิธีในการเชื่อมต่อ Arduino ของคุณเพื่อตั้งโปรแกรมชิป

คุณสามารถเสียบชิป avr ของคุณเข้ากับเขียงหั่นขนมและเชื่อมต่อ 5v และ GND กับพินที่เกี่ยวข้อง (ตรวจสอบแผ่นข้อมูล!) + ตัวต้านทานแบบดึงขึ้นเพื่อรีเซ็ตและต่อพินจาก Arduino ของคุณกับชิป นี่คือเส้นบน Arduino และฟังก์ชั่น 13 - SCK 12 - MISO 11 - MOSI 10 - RST (รีเซ็ต) หรือคุณสามารถสร้างส่วนหัว ISP 2x3pin ที่คุณสามารถเสียบเข้ากับบอร์ดที่มี (บอร์ด Arduino อื่น) Pinout สำหรับส่วนหัว ISP อยู่ในภาพที่สาม มีไฟ LED 3 ดวงเพื่อระบุสถานะของโปรแกรมเมอร์ พิน 9 - ไฟ LED สีน้ำเงิน - เป็นเสียงของโปรแกรมเมอร์ พิน 8 - ไฟ LED สีแดง - ระบุข้อผิดพลาด พิน 7 - ไฟ LED สีเขียว - แสดงว่าการเขียนโปรแกรมกำลังเกิดขึ้น (ฉันขี้เกียจดังนั้นฉันจึงไม่ตรงกับสีในการตั้งค่าของฉัน) นี่คือภาพวาดที่สร้างขึ้นใน Fritzing คุณยังสามารถสร้าง โล่ MEGA-isp Yaroslav Osadchyy ออกแบบโล่ในนกอินทรี คุณสามารถรับไฟล์อินทรีบนเว็บไซต์ของเขา:

ขั้นตอนที่ 3: การอัปโหลด Sketch

กำลังอัปโหลด Sketch
กำลังอัปโหลด Sketch

ดาวน์โหลดสเก็ตช์จาก mega-isp google code.(avrisp.03.zip ในขณะที่เขียน) แกะมันและเรียกใช้ arduino ide และเปิด avrisp.pde อัปโหลดไปยังบอร์ด Arduino ของคุณ Heartbeat led ควรเริ่มเต้น

ขั้นตอนที่ 4: การใช้กับ Avrdude

ใช้กับ Avrdude
ใช้กับ Avrdude

หากต้องการใช้กับ avrdude (และ GUI ทั้งหมดที่ใช้) คุณต้องเลือกโปรแกรมเมอร์ 'avrisp' อัตราบิตที่ปลอดภัยที่สุดคือ 19200

ในการทดสอบ atmega168 ใหม่ของคุณจาก commandline ให้ลอง: $ avrdude -p m168 -P /dev/ttyUSB0 -c avrisp -b 19200 /dev/USB0 คือพอร์ตที่ arduino เชื่อมต่อกับกล่อง linux ของฉัน (ของคุณอาจเป็น com5) สามารถตรวจสอบได้ใน arduino IDE ใน Tools -> Serial Port คุณควรได้รับ: [kabturek@hal-9000 ~]# avrdude -p m168 -P /dev/ttyUSB0 -c avrisp -b 19200 avrdude: อุปกรณ์ AVR เริ่มต้นและพร้อมที่จะยอมรับคำแนะนำ การอ่าน | ####################################################### | 100% 0.13s avrdude: ลายเซ็นอุปกรณ์ = 0x1e9406 avrdude: safemode: ฟิวส์ ตกลง avrdude เสร็จแล้ว ขอขอบคุณ. นั่นหมายความว่าทุกอย่างโอเค หากคุณได้รับข้อผิดพลาด - ตรวจสอบขั้นตอนสุดท้าย

ขั้นตอนที่ 5: การเบิร์นเฟิร์มแวร์ USBtinyISP ไปยัง Attiny2313

กำลังเบิร์นเฟิร์มแวร์ USBtinyISP ไปยัง Attiny2313
กำลังเบิร์นเฟิร์มแวร์ USBtinyISP ไปยัง Attiny2313
กำลังเบิร์นเฟิร์มแวร์ USBtinyISP ไปยัง Attiny2313
กำลังเบิร์นเฟิร์มแวร์ USBtinyISP ไปยัง Attiny2313
กำลังเบิร์นเฟิร์มแวร์ USBtinyISP ไปยัง Attiny2313
กำลังเบิร์นเฟิร์มแวร์ USBtinyISP ไปยัง Attiny2313

USBTinyISP เป็นโปรแกรมเมอร์ที่ยอดเยี่ยมจาก LadyAda ราคาถูกมาก - 22$ ฉันมี attiny2313 สำรองและบางส่วนดังนั้นฉันจึงตัดสินใจทำด้วยตัวเอง หากคุณไม่มีประสบการณ์ในการทำ PCB i แนะนำให้ซื้อชุดคิทเพราะมันมีคุณภาพสูงกว่าที่คุณสามารถสร้างเองได้:) อย่างน้อยซื้อ PCB ถ้าคุณต้องการสร้าง คุณสามารถรับมันได้จากอดาฟรุต เชื่อมต่อ ATtiny2313 ในภาพสุดท้าย คุณสามารถเห็น attiny2313 ด้วยพินที่ใช้สำหรับ ISP เป็นสีแดง รูปภาพนี้มาจากการสอน Avr ของ LadyAda การเบิร์นเฟิร์มแวร์: แกะเฟิร์มแวร์ USBTinyISP ไปที่ spi dir แล้วรัน $ avrdude -p pt2313 -P /dev/ttyUSB0 -c avrisp -b 19200 เพื่อตรวจสอบว่าทุกอย่างโอเคกับชิปหรือไม่ ตอนนี้ตั้งค่าฟิวส์: $ avrdude -P /dev/ttyUSB0 -c avrisp -b 19200 -pt2313 -U hfuse:w:0xdf:m -U lfuse:w:0xef:m ตอนนี้ คุณควรแนบออสซิลเลเตอร์ภายนอก 12mhz เข้ากับชิป. และเบิร์นเฟิร์มแวร์: $ avrdude -B 1 -pt2313 -U flash:w:main.hex -P /dev/ttyUSB0 -c avrisp -b 19200 Voila attiny2313 ของคุณมีเฟิร์มแวร์ USBTinyISP

ขั้นตอนที่ 6: การเบิร์น Arduino Bootloader

เบิร์น Arduino Bootloader
เบิร์น Arduino Bootloader
เบิร์น Arduino Bootloader
เบิร์น Arduino Bootloader
เบิร์น Arduino Bootloader
เบิร์น Arduino Bootloader

การเชื่อมต่อฉันโกงเล็กน้อยเพราะฉันใช้ RBBB เพื่อทำให้การเชื่อมต่อง่ายขึ้น สคีมาอยู่ในรูปที่ #2 หากคุณใช้ 2 arduinos ให้ใช้รูปภาพ #3 และเชื่อมต่อพิน ISP กับส่วนหัว ICSP 2x3 บน Arduino ตัวที่สอง (ทาส) ต่อไฟ usb เข้ากับบอร์ดแรกเท่านั้น วิธี GUI นี่เป็นสาเหตุที่ยุ่งยากเล็กน้อยคุณไม่สามารถใช้เครื่องมือ -> Burn Bootloader -> w/ AVR ISP ได้เนื่องจากความเร็วเริ่มต้นใหญ่เกินไปสำหรับ mega-isp ค้นหา avrdude.conf ที่มาพร้อมกับ arduino IDE (ใน arduino/hardware/tools/avrdude.conf) และเปลี่ยนขอบเขตสำหรับโปรแกรมเมอร์ avrisp จาก 115200 เป็น 19200 (ประมาณบรรทัดที่ 312) ค้นหาและเปลี่ยนใน avrdude.conf programmer id = "avrisp"; desc = "Atmel AVR ISP"; อัตรารับส่งข้อมูล = 115200; # ค่าเริ่มต้นคือ 115200 ประเภท = stk500;; ถึง: programmer id = "avrisp"; desc = "Atmel AVR ISP"; อัตรารับส่งข้อมูล = 19200; # ค่าเริ่มต้นคือ 115200 ประเภท = stk500;; ตอนนี้คุณสามารถใช้ Tools -> Burn Bootloader -> w/ AVR ISP (หลังจากคุณเลือกบอร์ดที่เหมาะสมจากเมนู Tools)Commanline คุณยังสามารถใช้ commandline: Edit arduino/hardware/bootloaders/atmega/Makefile และเปลี่ยน ISPTOOL/PORT /ความเร็วไปที่: # ป้อนพารามิเตอร์สำหรับเครื่องมือ avrdude isp ISPTOOL = avrisp ISPPORT = /dev/ttyUSB0 ISPSPEED = -b 19200 ไม่ คุณสามารถเขียน $ make diecimila_isp เพื่อเบิร์นฟิวส์และ bootloader ทดสอบ ตอนนี้เชื่อมต่อ arduino ใหม่กับ usb และ เผาไฟกระพริบ!

ขั้นตอนที่ 7: การแก้ไขปัญหา

การแก้ไขปัญหา
การแก้ไขปัญหา

ข้อผิดพลาด Avrdude: avrdude: ser_open(): can't open device "/dev/ttyUSB0": ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว คุณระบุพอร์ตผิด (-P) หรือ Arduino ของคุณไม่ได้เชื่อมต่อ ตรวจสอบการเชื่อมต่อ avrdude: ลายเซ็นอุปกรณ์ = 0x000000 avrdude: Yikes! ลายเซ็นอุปกรณ์ไม่ถูกต้อง ตรวจสอบการเชื่อมต่ออีกครั้งแล้วลองอีกครั้ง หรือใช้ -F เพื่อแทนที่การตรวจสอบนี้ นี่เป็นข้อผิดพลาดทั่วไป ชิปของคุณไม่เป็นที่รู้จัก ตรวจสอบการเชื่อมต่อบนบอร์ด (GND / 5V เชื่อมต่อกับพิน ?) คุณจะได้รับข้อผิดพลาดนี้เมื่อชิปของคุณได้รับการกำหนดค่าให้ใช้ออสซิลเลเตอร์ภายนอกและมันไม่ทำงาน (ไม่มีหรือไม่มีการสั่นที่เหมาะสม - แคป 22pf หายไป ?)

แนะนำ: