Lors de la programmation d'un ATtiny ou ATmega, avrdude imprime la signature du périphérique, dans cet exemple, il s'agit d'un ATtiny.
avrdude: Device signature = 0x1e910a
Puis-je lire cette signature sur un appareil en cours d'exécution à l'aide du code C ++ (avr-gcc)? Pour ATmega1280, il y a un chapitre 29.6.10 qui écrit à ce sujet, mais je suis un peu perplexe sur la façon dont je peux le coder en C ++.
Je souhaite que l'appareil puisse renvoyer son ID d'appareil au PC de contrôle, afin que le PC puisse prendre des décisions à ce sujet.
Réponses:
Vous pouvez utiliser ces macros qui sont définies automatiquement lorsque vous incluez
<avr/io.h>
:Pour ATmega1280, ils sont définis comme:
dans
iom1280.h
(qui est automatiquement inclus<avr/io.h>
lors de la compilation du code pour le m1280)Par exemple, cela enverra les trois octets via UART:
Si vous voulez vraiment lire les fusibles, vous devez utiliser la macro boot_signature_byte_get de
<avr/boot.h>
la source
boot_signature_byte_get( 0x00 )
,boot_signature_byte_get( 0x02 )
,boot_signature_byte_get( 0x04 )