ATTiny25/45/85: "Device Signature" Lesekommandos

OP #6531224
Lesenswert?

Hallo,

Ich habe hier Arduino-Code zum Auslesen der Signatur-Bytes von AVRs.
Es werden die letzten 4 Bytes der Signatur (hier vom Tiny85) korrekt 
ausgelesen, aber ich habe Verständnisprobleme bei den verwendeten 
SPI-Kommandos.
Lt. der Adresstabelle aus dem Datenblatt müssten mit den verwendeten 
Kommandos andere Informationen ausgelesen werden.
1
  uint16_t target_type = 0;
2
  Serial.print("\nReading signature: ");
3
  
4
  SPI.beginTransaction(fuses_spisettings); 
5
  
6
  target_type = spi_transaction(0x30, 0x00, 0x01, 0x00);
7
  target_type <<= 8;
8
  target_type |= spi_transaction(0x30, 0x00, 0x02, 0x00);
9
  SPI.endTransaction();
10
  
11
  Serial.println(target_type, HEX);

Anstatt zuerst der Adresse 0x01 müsste es doch 0x00 bzw. 0x04 sein.
Blöderweise ist auch die Tabelle 20-7 im Datenblatt fehlerhaft.

Danke für eure Hilfe :)
OP #6531989
Lesenswert?

S. Landolt schrieb:
> Vielleicht hilft die Zeile 'Read Signature Byte' im Anhang zum
> Verständnis.

Das ist ja verstanden, was passiert, nur passen die Kommandos
1
target_type = spi_transaction(0x30, 0x00, 0x01, 0x00);
2
  
3
target_type |= spi_transaction(0x30, 0x00, 0x02, 0x00);

nicht zu der Tabelle 20-6 (siehe Screenshot im ersten Post).
Oder sendet man als Kommando tatsächlich den Byteindex, den man auslesen 
will, anstatt der Adresse?

Übrigens ein weiterer Tippfehler auf angehängtem Bild 🙄

Und lt. Microchip ist die Byteindizierung in der Tabelle von links nach 
rechts aufsteigend.
Angehängte Dateien:
Gast #6532014
Lesenswert?

> passen die Kommandos ... nicht zu der Tabelle 20-6

?
Dort steht 'Signature byte 0,1,2', und genau so wird im SPI-Befehl $30 
adressiert.
  Dass die 3 Bytes auf 3 Worte verteilt sind, steht (wortwörtlich) auf 
einem anderen Blatt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren