Hi Leute
ich habe immer noch Probleme diese Tabelle auszulesen, könnte jem. bitte
darauf einen Blick werfen?
Wenn ich die Daten auslese, erhalte ich folgendes (Erster Wert 1E = Byte
address 0x00 internal)
1E 3C 93 1B 15 80 FF 81 FF 40 FF FF FF 69 FF FF FF FF FF FF FF FF FF FF
17 01 12 02 13 02 FF FF 1F FF 08 39 44 16 80 85 BB 9E F8 B8 7D 17
Wobei hier schon die erste Frage auftaucht:
1E 93 15
Das ist die Signatur für ATTiny841 - in Tabelle 23-6 taucht diese
Variable gar nicht auf, steht auf "reserved". Auch sonst finde ich im
Datenblatt keinen Hinweis drauf, nur dass die 3 Signatur Werte eben
diese Werte sein sollen die in der Device Imprint Table stehen sollen.
In der Tabelle gibt es aber keinen Signature Parameter.
Dann ab der 15. Hexziffer (gleich nach der 69) sollte die Lot# stehen,
bei mir steht aber 6x FF. Dann zwei Byte weiter die WaferNr. = FF. usw.
Es scheint so als wären die Daten entweder nicht einprogrammiert, oder
die Tabelle stimmt nicht überein mit der Adress Map die ich auslese.
Wie kann man eigentlich diese Daten aus Atmel Studio heraus rauslesen?
Beim Xmega tauchen nach dem Connect ja diese Werte auf, ich finde das
beim ATtiny841 und STK600 leider nicht. Dann könnte ich wenigstens
vergleichen ob es wirklich an der Tabelle im Datenblatt liegt.
Der Code:
#define __BOOT_SIGROW_READ (_BV(__SPM_ENABLE) | _BV(RSIG))
#define boot_signature_byte_get(addr) \
(__extension__({ \
uint8_t __result; \
_asm__ __volatile_ \
( \
"sts %1, %2\n\t" \
"lpm %0, Z\n\t" \
: "=r" (__result) \
: "i" (_SFR_MEM_ADDR(__SPM_REG)), \
"r" ((uint8_t)(__BOOT_SIGROW_READ)), \
"z" ((uint16_t)(addr)) \
); \
__result; \
}))
for(uint16_t i=0; i<0x2E; i++) {
BufTx[9+i] = boot_signature_byte_get(i);
IloscTx++;
}