Während der Programmierung eines ATtiny oder ATmega druckt avrdude die Gerätesignatur. In diesem Beispiel handelt es sich um einen ATtiny.
avrdude: Device signature = 0x1e910a
Kann ich diese Signatur auf einem laufenden Gerät mit C ++ - Code (avr-gcc) lesen? Für ATmega1280 gibt es ein Kapitel 29.6.10, in dem darüber geschrieben wird, aber ich bin etwas verwirrt darüber, wie ich es in C ++ codieren kann.
Ich möchte in der Lage sein, das Gerät dazu zu bringen, seine Geräte-ID an den steuernden PC zurückzusenden, damit der PC Entscheidungen darüber treffen kann.
Antworten:
Sie können diese Makros verwenden, die automatisch definiert werden, wenn Sie Folgendes einschließen
<avr/io.h>
:Für ATmega1280 sind sie definiert als:
in
iom1280.h
(das wird automatisch<avr/io.h>
eingefügt, wenn Sie Code für den m1280 kompilieren)Dies sendet beispielsweise die drei Bytes über UART:
Wenn Sie die Sicherungen wirklich lesen möchten , müssen Sie das Makro boot_signature_byte_get von verwenden
<avr/boot.h>
quelle
boot_signature_byte_get( 0x00 )
,boot_signature_byte_get( 0x02 )
,boot_signature_byte_get( 0x04 )