Suatu saat di masa lalu, saya membakar bootloader pada batch baru empat ATmega328-PU menggunakan Arduino IDE (perhatikan tidak ada P setelah 328 - ini adalah versi non-picopower dari MCU yang sedikit lebih murah, jangan bingung dengan ATmega328P- PU dengan P ), dan terkejut dengan pesan berikut dari avrdude:
avrdude: Device signature = 0x1e950F
avrdude: Expected signature for ATMEGA328 is 1E 95 14
Double check chip, or use -F to override this check.
Itu berarti avrdude mengira chip itu tidak sesuai dengan labelnya. Kemudian saya mengubah tipe chip pada IDE Arduino saya menjadi ATmega328P-PU dan avrdude membakar bootloader tanpa keluhan. Artinya adalah bahwa chip diberi label sebagai satu MCU dan secara internal itu merespons sebagai yang lain, sedikit berbeda.
Yang ingin saya ketahui adalah:
Seberapa jarang acara ini? Adakah yang punya pengalaman serupa?( Pertanyaan awal, di luar topik )Apakah mungkin untuk memperbaikinya? Bagaimana saya bisa memperbaiki tanda tangan sehingga avrdude mengenali chip dengan benar?
Ini adalah cross-posting dari EE.SE . Saya memposting pertanyaan ini di sana tetapi tidak menarik banyak perhatian, jadi saya ingin melihat apakah ada orang dari komunitas kami yang memiliki pengalaman serupa.
Jawaban:
Saat menjelajah sparkfun, saya telah menemukan beberapa posting berita yang menunjukkan perjuangan mereka dengan chip yang salah label. Berikut ini beberapa di antaranya:
Sparkfun telah menerima pengiriman yang dipertanyakan jika IC dari penjual baru di Cina. Mereka memutuskan untuk menguji mereka sebelum mengirim mereka ke produksi, dan tidak ada papan tes mereka yang berfungsi. Menggunakan asam nitrat, mereka mampu menghilangkan kasing IC dan membentuk sebongkah logam yang terlihat seperti tembaga.
Dalam artikel lain, mereka membedah beberapa IC yang mencurigakan dari Atmel, dan menemukan sebuah wafer silikon semikonduktor ON di dalamnya. Chip tidak fungsional ATmegas, tetapi mereka memang memiliki silikon, tidak seperti yang lain.
sumber
Bukan cara yang disukai untuk memperbaiki hal-hal dan tentu saja bukan solusi pertama yang perlu dipertimbangkan, tetapi Anda dapat mempertimbangkan pemrograman byte tanda tangan. Sebelum mencoba ini, pastikan Anda benar-benar ingin melakukan ini dan Anda telah menyelidiki apa yang terlibat untuk membatalkan ini. Ini mungkin melibatkan mengubah file konfigurasi di komputer Anda ...
Bagaimanapun cara untuk mengatur byte tanda tangan pengendali adalah sebagai berikut (belum teruji, saya tidak memiliki AVR cadangan yang tersedia):
sumber
avrdude: writing signature (3 bytes)
- namun gagal melakukannya:avrdude: verification error, first mismatch at byte 0x0002: 0x14 != 0x0f