Saat memprogram ATtiny atau ATmega, avrdude mencetak tanda tangan perangkat, dalam contoh ini adalah ATtiny.
avrdude: Device signature = 0x1e910a
Dapatkah saya membaca tanda tangan ini pada perangkat yang sedang berjalan menggunakan kode C ++ (avr-gcc)? Untuk ATmega1280 ada bab 29.6.10 menulis tentang itu, tapi saya agak bingung dengan bagaimana saya bisa mengkodekannya di C ++.
Saya ingin dapat membuat perangkat mengirim ID perangkatnya kembali ke PC yang mengendalikan, sehingga PC dapat membuat keputusan tentang hal itu.
Jawaban:
Anda dapat menggunakan makro ini yang didefinisikan secara otomatis saat Anda memasukkan
<avr/io.h>
:Untuk ATmega1280, mereka didefinisikan sebagai:
di
iom1280.h
(yang secara otomatis disertakan<avr/io.h>
saat Anda mengkompilasi kode untuk m1280)Misalnya, ini akan mengirim tiga byte melalui UART:
Jika Anda benar-benar ingin membaca sekering, Anda harus menggunakan boot_signature_byte_get dari makro
<avr/boot.h>
sumber
boot_signature_byte_get( 0x00 )
,boot_signature_byte_get( 0x02 )
,boot_signature_byte_get( 0x04 )