Mientras programa 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 ejecución usando el código C++ (avr-gcc)? Para ATmega1280 hay un capítulo 29.6.10 que escribe al respecto, pero estoy un poco desconcertado sobre cómo puedo codificarlo en C++.
Quiero poder hacer que el dispositivo envíe su ID de dispositivo a la PC de control, para que la PC pueda tomar decisiones al respecto.
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
in iom1280.h
(que se incluye automáticamente <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 desea leer los fusibles, debe usar la macro boot_signature_byte_get de<avr/boot.h>
boot_signature_byte_get( 0x00 )
, boot_signature_byte_get( 0x02 )
,boot_signature_byte_get( 0x04 )
yippie