Forum: Mikrocontroller und Digitale Elektronik Signatur stimmt nicht mehr


von Carsten (Gast)


Lesenswert?

Hallo,

mir ist es leider passiert, dass die Signatur sich geändert hat. Ich 
vermute, dass mir das durch einen Kurzschluss passiert ist.
Leider kann ich nun meinen atmega48 auch nicht mehr programmieren.
Ich benutze zum programmieren das STK500.
Kann man die Signatur wiederherstellen oder sind die dann endgültig 
zerstört?

mfg

von Mehmet K. (mkmk)


Lesenswert?

Ich glaube nicht, dass es dir gelungen ist, die Signatur zu zerstören.
Diese Meldung kommt meist, wenn die max. SPI-Frequenz überschritten 
wurde (max. 1/4 der Quarz-Frequenz) oder der angesprochene Controller 
nicht mit dem ausgewaehltem übereinstimmt.

von Joachim R. (jorath)


Lesenswert?

Hallo,

Mehmet Kendi wrote:
> Ich glaube nicht, dass es dir gelungen ist, die Signatur zu zerstören.
> Diese Meldung kommt meist, wenn die max. SPI-Frequenz überschritten
> wurde (max. 1/4 der Quarz-Frequenz) oder der angesprochene Controller
> nicht mit dem ausgewaehltem übereinstimmt.

Zitat aus dem datasheet Seite 289:
The ATmega48/88/168 has a byte calibration value for the internal RC 
Oscillator. This byte resides in the high byte of address 0x000 in the 
signature address space...

nichts ist unmöglich

@Carsten
versuche mal den AVR im STK500 via High - Voltage Programming zu 
reanimieren.


Gruß aus dem Odenwald

von Mehmet K. (mkmk)


Lesenswert?

@Joachim Rath

Das, was Du meinst, ist nicht die Signatur, sondern die Calibration.
Mit der Signatur stellt der Host (Programmer, JTAG etc.) fest, welcher 
Controller angeschlossen ist.
Mit der Calibration Byte tut man die die interne RC-Frequenz fine tunen.

von Joachim R. (jorath)


Lesenswert?

Mehmet Kendi wrote:
> @Joachim Rath
>
> Das, was Du meinst, ist nicht die Signatur, sondern die Calibration.
> Mit der Signatur stellt der Host (Programmer, JTAG etc.) fest, welcher
> Controller angeschlossen ist.
> Mit der Calibration Byte tut man die die interne RC-Frequenz fine tunen.

Signatur und Calibration Byte liegen im gleichen Adressbereich.

Gruß aus dem Odenwald

von Kachel - Heinz (Gast)


Lesenswert?

> Signatur und Calibration Byte liegen im gleichen Adressbereich.

Nicht nur im gleichen, sondern im selben Adressbereich. Die Signatur 
steht in den unteren Bytes der adressierten Worte, die Calibration ligt 
in den oberen Bytes der adressierten Worte.

Es gab hier schon mehrere Threads, in denen das Problem diskutiert 
wurde. Es ist also nicht der erste AVR, der seine Signatur vergessen 
hat. Alltäglich ist das aber nicht.

KH

von uwegw (Gast)


Lesenswert?

Beim Mega8 besteht laut den Errata die Möglichkeit, sich die Signatur zu 
zerschießen, wenn bei ISP-Vorgang was schief läuft:
1
Signature may be Erased in Serial Programming Mode
2
If the signature bytes are read before a chiperase command is completed, the sig-
3
nature may be erased causing the device ID and calibration bytes to disappear. This
4
is critical, especially, if the part is running on internal RC oscillator.

 Und ich hab hier auch noch andere AVRs liegen, die nicht mehr wissen 
wer sie sind, aber ansonsten noch ganz normal funktionieren...

von Mehmet K. (mkmk)


Lesenswert?

Tatsaechlich. Ist mir noch nie aufgefallen, dass Signature und 
Calibration zum Teil dieselbe Adresse benutzen. Tja, schauen und 
erkennen. Danke für die Belehrung.

von Kachel - Heinz (Gast)


Lesenswert?

> Danke für die Belehrung.

Sorry, als Oberlehrer wollte ich eigentlich nicht auftreten. ;-)

Es ist aber schon so, dass die Adresse ein 16-Bit-Wort adressiert, wobei 
das untere Byte ein Signature-Byte enthält und das obere ein 
Calibrationsbyte. Bei einigen AVRs können 4 Worte adressiert werden, da 
es bis zu 4 Calibrationsbytes gibt. Siehe auch AVR-Appnote 053.

Das hat aber nichts mit dem hier vorliegenden Problem des Vergessens der 
eigenen ID zu tun, ich wollte halt nur Deine Aussage präzisieren...

Frohe Weihnachten...

KH

von Mehmet K. (mkmk)


Lesenswert?

Kachel - Heinz wrote:
>> Danke für die Belehrung.
>
> Sorry, als Oberlehrer wollte ich eigentlich nicht auftreten. ;-)
>

So habe ich es auch nicht aufgefasst. Vielleicht eine etwas unglückliche 
Wortwahl.
Auch Euch allen ein frohes Weihnachtsfest und ein glückliches neues 
Jahr.

MfG aus Istanbul

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

konnte man das Calibrationbyte nicht manipulieren?
Da sollte es doch auch mit dem signaturbyte gehen?

Was mir allerdings aufgefallen ist, dass wenn ich den Quarz vergesse ins 
brett zustecken gelegentlich eine falsche Signatur ausgelesen wird.  ;-)

von Kachel - Heinz (Gast)


Lesenswert?

> konnte man das Calibrationbyte nicht manipulieren?

Es gibt einen Unterschied zwischen den Calibrationsbytes im 
Signature-Space (der nur von einem Programmer erreichbar ist), dem 
Calibrationsbyte in der letzten Flash- und EEP-Zelle bei Auslieferung 
und dem Wert im I/O-Register OSCCAL. Den Wert in OSCCAL kann das 
AVR-Programm jederzeit manipulieren, die Kopien in Flash und EEP werden 
beim Brennen sowiso meist gelöscht, der Signature-Space sollte Readonly 
sein, wenn das ISP-Protokoll eingehalten wird, also nicht grenzwertig 
ist.

> Da sollte es doch auch mit dem signaturbyte gehen?

Normalerweise nicht, vermutlich aber mit undokumentierten ISP-Kommandos 
oder durch grenzwertiges Timing.

> Was mir allerdings aufgefallen ist, dass wenn ich den Quarz vergesse ins
> brett zustecken gelegentlich eine falsche Signatur ausgelesen wird.  ;-)

Das könnte dann grenzwertiges Timing sein.

Mit der Signature hatte ich noch keinerlei Trödel, mit der Calibration 
hatte ich mich mal intensiv beschäftigt, als die AVRs noch nicht 
selbstständig beim Reset calibrierten, was z.B. bei Tiny12 und Tiny15 
der Fall war, aber auch bei Mega8 uns vielen seiner Brüder, wenn man 
einen internen Takt ungleich 1MHz aktiviert hat. Bei moderneren AVRs 
wird die Calibration beim Hardware-Reset automatisch ausgeführt.

KH

von Joachim R. (jorath)


Lesenswert?

Morgen,

Zitat aus dem M8 datasheet Seite 296:

3. Signature may be Erased in Serial Programming Mode
If the signature bytes are read before a chiperase command is completed, 
the signature may be erased causing the device ID and calibration bytes 
to disappear. This is critical, especially,if the part is running on 
internal RC oscillator.
Problem Fix / Workaround:
Ensure that the chiperase command has exceeded before applying the next 
command.

Gruß aus dem Odenwald

von Carsten (Gast)


Lesenswert?

hallo,

ja also ich habe sie seither immer mit "High Voltage" programmiert, was 
auch sehr gut funktionierte. wenn ich bei den Fuses schaue, und ich will 
eine umprogrammieren, dann geht das auch nicht mehr! Er bringt dann 
"Validation failed". Ich kann sie auch nicht mehr über ISP prgrammieren, 
weil ich die Fuse nicht mehr gesetzt ist.
Bei einem habe ich das aber wieder hinbekommen! Aber diesen kann ich 
nicht mehr mit "High Voltage" programmieren und dieser tut auch so nicht 
mehr das, was er eigentlich sollte...

Alles etwas sehr seltsam..

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.