Khi sử dụng Arduino Uno như ISP thì không có Yike! Chữ ký thiết bị không hợp lệ có nghĩa là kết nối xấu, cấu hình xấu hoặc phiên bản xấu của avrdude?


11

Tôi đang sử dụng Arduino UNO để lập trình hình ảnh hex được biên dịch sẵn thành ATTINY45, sử dụng avrdude trong thư mục Arduino IDE, trên Windows 7. Uno có bản phác thảo ISP được tải từ thư mục ví dụ và đèn LED nhịp tim hoạt động xung độc đáo.

Về phần cứng tôi có thiết lập này , ngoại trừ ATTINY được gắn trên bề mặt, được hàn vào ván lướt sóng với tất cả các chân được xác minh - được hàn bằng vôn kế. Tôi sử dụng một dải pin-tiêu đề, được giữ bằng tay để đưa các chân chạm vào ván lướt sóng, để nhận các tín hiệu từ Uno đến ATTINY.

Dưới đây là các dòng lệnh mà tôi đã lấy từ việc xem xét đầu ra gỡ lỗi của 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 

-Tôi thử chạy riêng chúng, nhưng luôn gặp lỗi này:

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

nhưng đôi khi số đó là ff0000 hoặc ffff00 hoặc ffffff

Tôi đọc được rằng "Arduino sử dụng một phiên bản avrdude được sửa đổi một chút để tải các bản phác thảo lên bảng Arduino. Các truy vấn phiên bản tiêu chuẩn cho chữ ký thiết bị của bảng theo cách mà bộ tải khởi động không hiểu được, dẫn đến lỗi này." Điều này có nghĩa là việc sử dụng Arduino avrdude với chip ATTINY mới, không có bộ tải khởi động trên nó, cũng sẽ gây ra lỗi tương tự? Nói cách khác, avrdude đã sửa đổi không có khả năng truy vấn chip AVR không khởi động được Arduino?

Hay lỗi đó chỉ đơn giản là tôi không có một liên hệ tốt giữa tất cả các chân lập trình viên của tôi và ATTINY?

Và, các cài đặt cầu chì có thực sự cần thiết không, Uno có thể lập trình flash thành một attiny chạy ở tốc độ 1 MHz và do đó giúp tôi tiết kiệm một số bước không?

(Tôi sẽ chỉ mua một lập trình viên "thực sự", nhưng cần lấy mã này trong hai ngày tới, và đang ở một vùng nông thôn của Nova Scotia)


Hãy thử thiết lập chương trình -c avrisp. Tôi nghĩ bạn có thể lập trình nó ở 1 MHz mà không gặp vấn đề gì.
dùng2973

1
Khi tôi tải lên từ IDE arduino và đặt lập trình viên thành "Arduino là ISP", nó -carduinokhông sử dụng stk500. Chỉ cần thử tải chương trình nhấp nháy lên attiny từ IDE. Bằng cách đó, bạn có thể thấy dòng lệnh chính xác ở phía dưới, nếu bạn bật "đầu ra dài dòng" trong cài đặt.
Gerben

Bạn đã tải lên bản phác thảo ArduinoISP trước?
PhillyNJ

Phil, tôi đã tải bản phác thảo ArduinoISP vào Uno trước các bước này, nó đã thành công và tôi thấy đèn LED "heartbeat" màu xanh lá cây ở chân 9 xung. Gerben / user2973, tôi đã thử "-carduino", tôi sẽ thử "-c avrisp" tiếp theo. Cảm ơn.
Yary

Điều này trông giống như một vấn đề kết nối mục tiêu <-> ISP. Bất cứ điều gì trong mạch của bạn có thể được tải các dòng? Các cầu chì ATtiny vẫn được đặt cho đồng hồ bên trong, hoặc bạn đang cung cấp một bên ngoài? Bạn có chắc chắn rằng bạn có tất cả bốn dây tín hiệu và nối đất, và theo đúng thứ tự? Có lẽ bạn nên hàn một thiết lập chỉ để xác minh đó không phải là phương pháp cầm tay của bạn (mặc dù tôi cũng đã sử dụng nó)
Chris Stratton

Câu trả lời:


11

Tôi đã hàn dây vào các miếng đệm để đảm bảo kết nối tốt và sử dụng các dây đó để lập trình từ Uno. Sau đó, lập trình viên làm việc, không có bất kỳ chỉnh sửa nào cho các dòng lệnh như được đăng trong câu hỏi. Tôi đã chạy một vài biến thể và có thể trả lời tất cả các câu hỏi của mình và một vài biến khác bên cạnh:

  1. Lỗi "Yike! Chữ ký thiết bị không hợp lệ" là do tiếp xúc kém giữa người lập trình (Uno) và chân ATTINY.

  2. Nó không có gì để làm với bộ tải khởi động không có trên vi điều khiển mới. Chip ATTINY45 mới không cần bộ tải khởi động để lập trình viên mạch hoạt động.

  3. Uno có thể lập trình ATTINY45 được cấu hình theo tốc độ của nó, 1 MHz hoặc 8 MHz. Cài đặt gốc vẫn ổn và không yêu cầu thay đổi cầu chì.

  4. Cả hai phiên bản avrdude đều hoạt động để lập trình - phiên bản 6.1 từ trang của tác giả và phiên bản sửa đổi từ Arduino IDE.

  5. avrdude lon chương trình thông qua Uno sử dụng bất kỳ -c avrisp, -c arduinohoặc -c stk500v1, nó không quan trọng mà.

Một câu hỏi nhỏ mà tôi không thể trả lời, đó là tốc độ của các chương trình Uno (tốc độ giao tiếp giữa các chân I / O và vi điều khiển Arduino được flash). Có liên quan đến tốc độ cổng nối tiếp? Nhưng hóa ra nó không thích hợp để trả lời vấn đề này. Một số người khác có thể hỏi nó nếu đủ tò mò.


2
ArduinoISP đặt giao diện SPI thành xung nhịp / 128, do đó, đối với Uno 16 MHz, AVR được kết nối được lập trình ở 16 MHz / 128 = 125 kbit / s. Nhưng các yếu tố giới hạn là tốc độ nối tiếp và khi PROG_FLICKER được đặt, độ trễ 30 ms được thêm cho mỗi cam kết trang.
dùng2973

4

Tôi đã có chính xác vấn đề này. Nếu ATtiny được đặt cho đồng hồ bên ngoài, thì ArduinoISP sẽ không thể lập trình nó nếu không có tinh thể bên ngoài. Kết nối một tinh thể 16 MHz và 2 tụ điện và hoạt động hoàn hảo.

(Sau đó tôi đã có thể đặt ATtiny thành đồng hồ bên trong, loại bỏ tinh thể và sau đó hoạt động hoàn hảo mà không cần tinh thể.)


1

Thêm bảng và mô tả cầu chì của họ từ những gì đã được thiết lập và nó sẽ hoạt động.

Để thêm chỉ C:\Program Files\Arduino\hardware\arduino\avr\boards.txtvà thêm mô tả bảng.

########
############ 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

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

Tôi đã sử dụng nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.