¿Se puede leer una firma de dispositivo ATmega o ATtiny mientras se ejecuta?

8

Al programar una ATtiny o ATmega, avrdude imprime la firma del dispositivo, en este ejemplo es una ATtiny.

avrdude: Device signature = 0x1e910a

¿Puedo leer esta firma en un dispositivo en ejecución usando el código C ++ (avr-gcc)? Para ATmega1280 hay un capítulo 29.6.10 que escribe al respecto, pero me sorprende un poco cómo puedo codificarlo en C ++.

Quiero poder hacer que el dispositivo envíe su ID de dispositivo a la PC controladora, para que la PC pueda tomar decisiones al respecto.

    
pregunta jippie

1 respuesta

7

Puede usar estas macros que se definen automáticamente cuando incluye <avr/io.h> :

SIGNATURE_0
SIGNATURE_1
SIGNATURE_2

Para ATmega1280, se definen como:

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

en iom1280.h (que se incluye automáticamente a través de <avr/io.h> cuando compila el código para el m1280)

Por ejemplo, esto enviará los tres bytes a través de UART:

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

Si realmente quieres leer los fusibles, deberías usar boot_signature_byte_get macro desde <avr/boot.h>

    
respondido por el ksk

Lea otras preguntas en las etiquetas