Можно ли прочитать подпись устройства ATmega или ATtiny во время работы?


8

При программировании ATtiny или ATmega avrdude печатает подпись устройства, в данном примере это ATtiny.

avrdude: Device signature = 0x1e910a

Могу ли я прочитать эту подпись на работающем устройстве, используя код C ++ (avr-gcc)? Для ATmega1280 есть глава 29.6.10, в которой об этом написано, но я немного озадачен тем, как я могу написать код на C ++.

Я хочу, чтобы устройство могло отправлять свой идентификатор устройства обратно на управляющий ПК, чтобы ПК мог принимать решения по нему.


Этот вопрос тесно связан: electronics.stackexchange.com/questions/58386/…
jippie

Ответы:


7

Вы можете использовать эти макросы, которые определяются автоматически при включении <avr/io.h>:

SIGNATURE_0
SIGNATURE_1
SIGNATURE_2

Для ATmega1280 они определены как:

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

в iom1280.h(который автоматически включается <avr/io.h>при компиляции кода для m1280)

Например, это отправит три байта через UART:

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

Если вы действительно хотите прочитать предохранители, вам нужно использовать макрос boot_signature_byte_get из<avr/boot.h>


Я boot_signature_byte_get( 0x00 ), boot_signature_byte_get( 0x02 ),boot_signature_byte_get( 0x04 )
jippie
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.