8 votos

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

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

avrdude: Device signature = 0x1e910a

¿Puedo leer esta firma en un dispositivo en funcionamiento utilizando código C++ (avr-gcc)? Para ATmega1280 hay un capítulo 29.6.10 que escribe sobre ello, pero estoy un poco desconcertado sobre cómo puedo codificarlo en C++.

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

7voto

viggity Puntos 5342

Puede utilizar estas macros que se definen automáticamente al incluir <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> al compilar el código para el m1280)

Por ejemplo, esto enviará los tres bytes vía UART:

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

Si realmente quieres leer los fusibles, tendrías que usar boot_signature_byte_get macro de <avr/boot.h>

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X