เมื่อใช้ Arduino Uno เนื่องจาก ISP ใช้คำว่า“ Yikes! ลายเซ็นอุปกรณ์ไม่ถูกต้อง” หมายถึงการเชื่อมต่อที่ไม่ดี, การปรับแต่งที่ไม่ดีหรือ avrdude เวอร์ชันที่ไม่ดี?


12

ฉันใช้ Arduino UNO เพื่อตั้งโปรแกรมรูปเลขฐานสิบหกที่คอมไพล์ล่วงหน้าเป็น ATTINY45 โดยใช้ avrdude ในไดเรกทอรี Arduino IDE บน Windows 7 Uno มีร่าง ISP ที่โหลดจากไดเรกทอรีตัวอย่างและใช้งานได้กับ LED heartbeat พัลส์อย่างดี

ในด้านฮาร์ดแวร์ฉันมีการตั้งค่านี้ยกเว้น ATTINY ติดตั้งบนพื้นผิวเชื่อมต่อกับกระดานโต้คลื่นด้วยหมุดทั้งหมดที่ตรวจสอบแล้วบัดกรีด้วยโวลต์มิเตอร์ ฉันใช้แถบเฮดเดอร์พินซึ่งจับด้วยมือเพื่อให้พินแตะกระดานโต้คลื่นเพื่อรับสัญญาณจาก Uno ไปยัง ATTINY

นี่คือบรรทัดคำสั่งที่ฉันเอาจากการดูผลลัพธ์การดีบักของ IDE:

REM set the fuse for 8MHz, so the ISP programmer can work
C:\Progra~1\Arduino\hardware\tools\avr\bin\avrdude -CC:\Progra~1\Arduino\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -pattiny45 -cstk500v1 -P\\.\COM7 -b19200 -e -Uefuse:w:0xff:m -Uhfuse:w:0xdf:m -Ulfuse:w:0xe2:m 
REM load the program
C:\Progra~1\Arduino\hardware\tools\avr\bin\avrdude -CC:\Progra~1\Arduino\hardware/tools/avr/etc/avrdude.conf -v -pattiny45 -cstk500v1 -P\\.\COM7 -b19200 -Uflash:w:firefly.hex:i
REM set fuse for 1MHz, as the project requires
C:\Progra~1\Arduino\hardware/tools/avr/bin/avrdude -CC:\Progra~1\Arduino\hardware/tools/avr/etc/avrdude.conf -v -pattiny45 -cstk500v1 -P\\.\COM7 -b19200 -e -Uefuse:w:0xff:m -Uhfuse:w:0xdf:m -Ulfuse:w:0x62:m 

- ฉันลองเรียกใช้แยกต่างหาก แต่รับข้อผิดพลาดนี้เสมอ:

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
     Double check connections and try again, or use -F to override
     this check.

แต่บางครั้งจำนวนคือ ff0000 หรือ ffff00 หรือ ffffff

ฉันอ่านว่า "Arduino ใช้ avrdude รุ่นที่แก้ไขเล็กน้อยเพื่ออัปโหลดภาพร่างไปยังบอร์ด Arduino รุ่นมาตรฐานจะค้นหาลายเซ็นอุปกรณ์ของบอร์ดในลักษณะที่ bootloader ไม่เข้าใจซึ่งทำให้เกิดข้อผิดพลาดนี้" นี่หมายความว่าการใช้ Arduino avrdude กับชิป ATTINY ใหม่ซึ่งไม่มี bootloader อยู่นั้นจะทำให้เกิดข้อผิดพลาดเดียวกันได้หรือไม่ กล่าวอีกนัยหนึ่งคือ avrdude ที่ได้รับการแก้ไขไม่สามารถทำการค้นหาชิพ AVR ที่ไม่ใช่ของ Arduino-bootloaded ได้หรือไม่?

หรือข้อผิดพลาดนั้นก็หมายความว่าฉันไม่ได้ติดต่อที่ดีระหว่างหมุดโปรแกรมเมอร์ของฉันและ ATTINY?

และจำเป็นต้องตั้งค่าฟิวส์อย่างแท้จริงหรือไม่โปรแกรม Uno สามารถแฟลชเข้าไปใน attiny ที่ทำงานที่ 1MHz และช่วยฉันได้ไหม?

(ฉันเพิ่งจะซื้อโปรแกรมเมอร์ "ของจริง" แต่ต้องได้รับรหัสนี้ในอีกสองวันข้างหน้าและอยู่ในเขตชนบทของ Nova Scotia)


-c avrispลองตั้งค่าโปรแกรมเมอร์ที่จะ ฉันคิดว่าคุณสามารถตั้งโปรแกรมที่ 1 MHz ได้โดยไม่มีปัญหา
user2973

1
เมื่อฉันอัปโหลดจาก arduino IDE และตั้งค่าโปรแกรมเมอร์เป็น "Arduino as ISP" จะ-carduinoไม่ใช้stk500 เพียงลองอัปโหลดโปรแกรมกะพริบไปยัง attiny จาก IDE ด้วยวิธีนี้คุณจะเห็นบรรทัดคำสั่งที่ถูกต้องที่ด้านล่างหากคุณเปิดใช้งาน "เอาท์พุท verbose" ในการตั้งค่า
Gerben

คุณอัพโหลดภาพร่าง ArduinoISP เป็นอันดับแรกหรือไม่?
PhillyNJ

Phil ฉันโหลดภาพร่าง ArduinoISP ลงใน Uno ก่อนที่จะทำตามขั้นตอนเหล่านี้มันประสบความสำเร็จและฉันเห็น LED "heartbeat" สีเขียวในพัลส์ 9 Gerben / user2973 ฉันลอง "-carduino" ฉันจะลอง "-c avrisp" ต่อไป ขอบคุณ
Yary

ดูเหมือนว่าปัญหาการเชื่อมต่อเป้าหมายของ ISP <-> มีอะไรในวงจรของคุณที่สามารถโหลดสาย? ฟิวส์ ATtiny ยังคงถูกตั้งค่าสำหรับนาฬิกาภายในหรือไม่หรือคุณให้ฟิวส์ภายนอก? คุณแน่ใจหรือว่าคุณมีทั้งสี่สายสัญญาณและกราวด์ที่เชื่อมต่อและในลำดับที่ถูกต้อง? บางทีคุณควรกลัดประสานการติดตั้งเพียงแค่การตรวจสอบก็ไม่ได้เป็นวิธีการที่มือถือของคุณ (แม้ว่าฉันยังใช้นั้น)
คริสแตรทตัน

คำตอบ:


12

ฉันบัดกรีสายไฟให้กับแผ่นอิเล็กโทรดเพื่อให้แน่ใจว่าการเชื่อมต่อนั้นดีและใช้สายเหล่านั้นสำหรับการเขียนโปรแกรมจาก Uno จากนั้นโปรแกรมเมอร์ก็ทำงานได้โดยไม่ต้องแก้ไขบรรทัดคำสั่งดังที่โพสต์ไว้ในคำถาม ฉันวิ่งไปหลายรูปแบบและสามารถตอบคำถามของฉันทั้งหมดและอีกไม่กี่:

  1. ข้อผิดพลาด "ลายเซ็นอุปกรณ์ Yikes! อุปกรณ์ไม่ถูกต้อง" เกิดจากการติดต่อที่ไม่ดีระหว่างโปรแกรมเมอร์ (Uno) และหมุด ATTINY

  2. มันไม่มีส่วนเกี่ยวข้องกับ bootloader ที่ไม่ได้อยู่ในไมโครคอนโทรลเลอร์ตัวใหม่ ชิป ATTINY45 ใหม่ไม่จำเป็นต้องใช้ bootloader เพื่อให้โปรแกรมเมอร์ในวงจรทำงานได้

  3. Uno สามารถตั้งโปรแกรม ATTINY45 ที่ตั้งค่าไว้ที่ความเร็ว 1MHz หรือ 8MHz การตั้งค่าจากโรงงานดีและไม่ต้องการเปลี่ยนฟิวส์

  4. ทั้งสองรุ่นavrdudeทำงานสำหรับการเขียนโปรแกรม - 6.1 จากเว็บไซต์ของผู้เขียนและหนึ่งแก้ไขจาก Arduino IDE

  5. avrdudeโปรแกรมสามารถผ่าน Uno โดยใช้ใด ๆ ของ-c avrisp, -c arduinoหรือ-c stk500v1มันไม่ได้เรื่อง

คำถามเล็ก ๆ น้อย ๆ ข้อหนึ่งที่ฉันไม่สามารถตอบได้คือความเร็วของโปรแกรม Uno ที่ (ความเร็วในการสื่อสารระหว่าง Arduino I / O pins และไมโครคอนโทรลเลอร์ถูกแฟลช) มันเกี่ยวข้องกับความเร็วของพอร์ตอนุกรมหรือไม่? แต่กลับกลายเป็นว่าไม่เกี่ยวข้องกับการตอบปัญหานี้ คนอื่นสามารถถามได้ถ้าอยากรู้อยากเห็นพอ


2
ArduinoISP ตั้งค่าอินเทอร์เฟซ SPI เป็นนาฬิกา / 128 ดังนั้นสำหรับ 16 MHz Uno AVR ที่เชื่อมต่ออยู่จะถูกตั้งโปรแกรมที่ 16 MHz / 128 = 125 kbit / s แต่ปัจจัย จำกัด คือความเร็วอนุกรมและเมื่อตั้งค่า PROG_FLICKER จะมีการเพิ่มความล่าช้า 30 ms สำหรับการส่งหน้าแต่ละครั้ง
user2973

4

ฉันมีปัญหาตรงนี้ หาก ATtiny ถูกตั้งค่าสำหรับนาฬิกาภายนอกดังนั้น ArduinoISP จะไม่สามารถตั้งโปรแกรมได้หากไม่มีคริสตัลภายนอก เชื่อมต่อคริสตัล 16 MHz และตัวเก็บประจุ 2 ตัวและทำงานได้อย่างสมบูรณ์แบบ

(จากนั้นฉันสามารถตั้งค่า ATtiny เป็นนาฬิกาภายในเอาคริสตัลออกและทำงานได้อย่างสมบูรณ์แบบโดยไม่ต้องใช้คริสตัล)


1

เพิ่มบอร์ดและคำอธิบายฟิวส์จากสิ่งที่ตั้งไว้แล้วและมันจะทำงาน

สำหรับการเพิ่มเพียงC:\Program Files\Arduino\hardware\arduino\avr\boards.txtและเพิ่มคำอธิบายบอร์ด

########
############ Definitions for ATmega 8MHz 
##############################################################
atmega16-8.name=Atmega16 (internal 8MHz clock)

atmega16-8.upload.tool=avrdude

atmega16-8.upload.protocol=stk500v1

atmega16-8.upload.maximum_size=14336
atmega16-8.upload.speed=19200

atmega16-8.bootloader.low_fuses=0xE8
atmega16-8.bootloader.high_fuses=0x99

atmega16-8.build.mcu=atmega16
atmega16-8.build.f_cpu=8000000L
atmega16-8.build.core=arduino:arduino
atmega16-8.build.variant=mega16

##############################################################
############################

ฉันใช้มัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.