Dapatkah tanda tangan perangkat ATmega atau ATtiny dibaca saat berjalan?


8

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:


7

Anda dapat menggunakan makro ini yang didefinisikan secara otomatis saat Anda memasukkan <avr/io.h>:

SIGNATURE_0
SIGNATURE_1
SIGNATURE_2

Untuk ATmega1280, mereka didefinisikan sebagai:

/* Signature */
#define SIGNATURE_0 0x1E
#define SIGNATURE_1 0x97
#define SIGNATURE_2 0x03

di iom1280.h(yang secara otomatis disertakan <avr/io.h>saat Anda mengkompilasi kode untuk m1280)

Misalnya, ini akan mengirim tiga byte melalui UART:

uart_putc(SIGNATURE_0)
uart_putc(SIGNATURE_1)
uart_putc(SIGNATURE_2)

Jika Anda benar-benar ingin membaca sekering, Anda harus menggunakan boot_signature_byte_get dari makro<avr/boot.h>


Saya menggunakan boot_signature_byte_get( 0x00 ), boot_signature_byte_get( 0x02 ),boot_signature_byte_get( 0x04 )
jippie
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.