実行中にATmegaまたはATtinyデバイスの署名を読み取ることはできますか?


8

ATtinyまたはATmegaをプログラミングする間、avrdudeはデバイス署名を出力します、この例ではそれはATtinyです。

avrdude: Device signature = 0x1e910a

C ++コード(avr-gcc)を使用して、実行中のデバイスでこの署名を読み取ることはできますか?ATmega1280については、それについて書く29.6.10の章がありますが、C ++でそれをコード化する方法に少し戸惑っています。

デバイスがデバイスIDを制御PCに送り返して、PCがそれを決定できるようにしたいと考えています。


この質問は密接に関連している:electronics.stackexchange.com/questions/58386/...
jippie

回答:


7

以下を含めると自動的に定義されるこれらのマクロを使用できます<avr/io.h>

SIGNATURE_0
SIGNATURE_1
SIGNATURE_2

ATmega1280の場合、それらは次のように定義されています:

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

in iom1280.h<avr/io.h>m1280のコードをコンパイルすると自動的に含まれます)

たとえば、これはUARTを介して3バイトを送信します。

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

ヒューズを本当に読みたい場合は、boot_signature_byte_getマクロを使用する必要があります。 <avr/boot.h>


私が使用しboot_signature_byte_get( 0x00 )boot_signature_byte_get( 0x02 )boot_signature_byte_get( 0x04 )
jippie
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.