tach,
wer kann mir weiter helfen?
Ich hätte gerne für eine unique Device-ID den "Device Signature Imprint
Table" meines ATtiny841 ausgelesen, der an definierten Stellen die
Lot-Nummer, Wafer, X und Y bereit hält.
Bekommen tue ich aber nur 0xFF an den Stellen und die Signature Bytes an
Stellen, wo das Datenblatt sie gar nicht definiert.
Datenblatt:
http://www.atmel.com/Images/Atmel-8495-8-bit-AVR-Microcontrollers-ATtiny441-ATtiny841_Datasheet.pdf
Ich brauche die Tabelle auf Seite 221 und lese sie aus wie beschrieben
auf Seite 223,
1 | #include <avr/pgmspace.h>
|
2 | for(uint8_t i=0; i<0x1F; i++) {
|
3 | cli();
|
4 | SPMCSR = 0x21;
|
5 | tmp = __LPM_enhanced__(tmp); // --> LPM reg, Z
|
6 | sei();
|
7 | // output tmp via UART
|
8 | }
|
bzw.
1 | #include <avr/boot.h>
|
2 | for(uint8_t i=0; i<0x1F; i++) {
|
3 | cli();
|
4 | tmp = boot_signature_byte_get(tmp);
|
5 | sei();
|
6 | // output tmp via UART
|
7 | }
|
Ich weiß, Teil-/Pseudocode ist nicht beliebt, aber beide Wege führen zu
gleichem Ergebnis:
1 | 0000: 1E 4E 93 21 15 80 FF 81 FF 51 FF FF FF 69 FF FF
|
2 | 0010: FF FF FF FF FF FF FF FF 17 01 12 02 13 02 FF FF
|
Laut Tabelle im Datenblatt sollte ich meine Daten von 0x0E bis 0x17
finden ... offensichtlich nicht.
Benutzt wird Atmels aktuelle GCC-Tool-Chain mit avr-libc
(avr8-gnu-toolchain-3.4.3.1072-linux.any.x86_64).
Danke für Tipps.