Forum: Mikrocontroller und Digitale Elektronik Invalid Device Signature bei ATtiny 13A nach Fuse Änderung


von Timo T. (timo_technik)


Lesenswert?

Hallo liebe Forum community,

als elektronik Anfänger habe ich eine Frage zur Programmierung des 
ATtiny 13A mikrochips.
Die Problematik ist folgende:

Ich möchte eine Hexadezimaldatei über einen Arduino Uno (als ISP) auf 
einen ATtiny 13A laden. Dabei muss ich, da für diese Anwendung 
notwendig, die Fuses des ATtiny auf folgende werte sezten: High byte: 
0xFF, Low byte: 0x7B.

Nachdem ich den Arduino as ISP-Sketch erfolgreich auf den Arduino Uno 
hochgeladen habe und die Funktion überprüft habe, wurde der ATtiny laut 
den im Netz kursierenden Schaltplänen angeschlossen und der Ground und 
Reset Pin am Arduino mit einem 10uF Elko verbunden.
Danach habe ich mit einem Avrdude befehl die Fuses gebrannt, laut 
Rückmeldung mit erfolg (Siehe unten).
Dann wollte ich die Hexadezimaldatei hochladen, bekomme aber die 
Fehlermeldung:
"avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check."

Hier nochmal die gesamten eingaben:

C:\Users\[Mein Name]>avrdude -v -v -pattiny13 -cstk500v1 -PCOM5 -b19200 
-U lfuse:w:0x7B:m -U hfuse:w:0xFF:m

avrdude: Version 5.10, compiled on Jan 19 2010 at 10:45:23
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is 
"C:\WinAVR-20100110\bin\avrdude.conf"

         Using Port                    : COM5
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
         AVR Part                      : ATtiny13
         Chip Erase delay              : 4000 us
         PAGEL                         : P00
         BS2                           : P00
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page 
Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages 
MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ 
----- ----- ---------
           eeprom        65     5     4    0 no         64    4      0 
4000  4000 0xff 0xff
           flash         65     6    32    0 yes      1024   32     32 
4500  4500 0xff 0xff
           signature      0     0     0    0 no          3    0      0 
0     0 0x00 0x00
           lock           0     0     0    0 no          1    0      0 
4500  4500 0x00 0x00
           calibration    0     0     0    0 no          2    0      0 
0     0 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0 
4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0 
4500  4500 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: please define PAGEL and BS2 signals in the configuration file 
for part ATtiny13
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 
0.05s

avrdude: Device signature = 0x1e9007
avrdude: safemode: lfuse reads as 6A
avrdude: safemode: hfuse reads as FF
avrdude: reading input file "0x7B"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 
0.03s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0x7B:
avrdude: load data lfuse data from input file 0x7B:
avrdude: input file 0x7B contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 
0.01s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: reading input file "0xFF"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 
0.01s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xFF:
avrdude: load data hfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 
0.01s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified

avrdude: safemode: lfuse reads as 7B
avrdude: safemode: hfuse reads as FF
avrdude: safemode: Fuses OK

avrdude done.  Thank you.


C:\Users\[Mein Name]>avrdude -v -v -pattiny13 -cstk500v1 -PCOM5 -b19200 
-Uflash:w:Ebike_ATtiny13A_final.hex

avrdude: Version 5.10, compiled on Jan 19 2010 at 10:45:23
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is 
"C:\WinAVR-20100110\bin\avrdude.conf"

         Using Port                    : COM5
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
         AVR Part                      : ATtiny13
         Chip Erase delay              : 4000 us
         PAGEL                         : P00
         BS2                           : P00
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page 
Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages 
MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ 
----- ----- ---------
           eeprom        65     5     4    0 no         64    4      0 
4000  4000 0xff 0xff
           flash         65     6    32    0 yes      1024   32     32 
4500  4500 0xff 0xff
           signature      0     0     0    0 no          3    0      0 
0     0 0x00 0x00
           lock           0     0     0    0 no          1    0      0 
4500  4500 0x00 0x00
           calibration    0     0     0    0 no          2    0      0 
0     0 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0 
4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0 
4500  4500 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: please define PAGEL and BS2 signals in the configuration file 
for part ATtiny13
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 
0.03s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.





Nachdem ich so bereits 3 Chips "zerstört" habe und ca. 1 Woche zeit 
investiert habe, bin ich mehr oder weniger am verzweifeln...

Ich wäre extrem dankbar über eure Hilfe! :)

Liebe Grüße,

Timo

von Hubert G. (hubertg)


Lesenswert?

Wenn du zuerst das Programm geladen hättest und dann die Fuses 
umgestellt, dann würde es funktionieren. Vorausgesetzt das Programm ist 
OK.
Du hast den Oszillator auf 128kHz gestellt. Der Programmiertakt muss 
daher geringer als ein viertel des Oszillatortakts sein.

von Karl M. (Gast)


Lesenswert?

Hallo,
ich hatte mal einen versehentliche Programmierung der Fuse-Bits auf 
Oszillator auf 128kHz.
Da war dann nichts mehr zu machen, <=1/4 Takt war nicht machbar.

Also lieber den Taktgenerator über das Programm einstellen, ob das beim 
tn13a geht, muss im Datenblatt stehen.

von malsehen (Gast)


Lesenswert?

Timo T. schrieb:
> C:\Users\[Mein Name]>avrdude -v -v -pattiny13 -cstk500v1 -PCOM5 -b19200
> -U lfuse:w:0x7B:m -U hfuse:w:0xFF:m

Du setzt den AVRDUDE auf attiny13 und benutzt attiny13a,
zwei komplett unterschiedliche Controller.

von malsehen (Gast)


Lesenswert?

Hoppla. Lag ich wohl etwas daneben.

Versuche trotzdem mal -pattiny13a

von dupdidu (Gast)


Lesenswert?

>der Ground und
>Reset Pin am Arduino mit einem 10uF Elko verbunden.

oha...

von Einer K. (Gast)


Lesenswert?

dupdidu schrieb:
>>der Ground und
>>Reset Pin am Arduino mit einem 10uF Elko verbunden.
>
> oha...

Wieso "oha" ?
Das ist voll korrekt.
Dürfen auch ruhig 100µF sein


Timo T. schrieb:
> Nachdem ich so bereits 3 Chips "zerstört" habe

Ein HV Programmer kanns wieder richten.

von Timo T. (timo_technik)


Lesenswert?

Liebe Alle,

vielen Dank für eure schnelle Hilfe,

ich hebe gerade zuerst die Datei hochgeladen und dann die Fuses geändert 
und es hat funktioniert :))

Vielen Dank auf jeden Fall nochmals an Alle

Liebe Grüße,

Timo

von Stefan F. (Gast)


Lesenswert?

> Wieso "oha" ?
> Das ist voll korrekt.
> Dürfen auch ruhig 100µF sein

Weil der Reset Ausgang des Programmers mit dem Reset Eingang des µC 
verbunden ist. Der AUsgang des Programmer wird durch den dicken 
Kondensator quasi kurzgeschlossen. Das tut dem Programmer nicht gut. 
Wenn der Kondensator zu groß ist, schafft der Reset-Ausgang es nicht 
schnell genug, den Pin auf Low zu ziehen. Und dann bricht die Software 
mit einer Kommunikationsstörung ab.

Wenn der Kondensator größer als 100nF ist, rate ich dazu, einen 220 Ohm 
Widerstand in Reihe zu schalten, damit der Programmer den Pin 
zuverlässig schnell genug runter ziehen kann. Manche Leute verwenden an 
dieser Stelle einen Jumper, um den Kondensator abzuklemmen.

von Einer K. (Gast)


Lesenswert?

Stefan U. schrieb:
> Wenn der Kondensator zu groß ist, schafft der Reset-Ausgang es nicht
> schnell genug, den Pin auf Low zu ziehen. Und dann bricht die Software
> mit einer Kommunikationsstörung ab.

Wenn der Kondensator zu KLEIN ist bricht die Software mit einer 
Kommunikationsstörung ab.


1. Der Reset, des als ISP Programmer laufenden UNO, soll unterbunden 
werden.
Da gibt es 3 Möglichkeiten:
A. Den Reset mit dem 10µF bis 100µF Kondensator zwischen GND und Reset 
unterbinden.
B: Einen niederohmigen Widerstand zwischen Vcc und Reset
C: Die RST-EN Lötbrücke auf dem UNO auftrennen.

Vorsicht bei A und B, diese belasten den Resettaster über Gebühr.
Bitte in dem Zustand nicht betätigen.

> Wenn der Kondensator größer als 100nF ist, rate ich dazu, einen 220 Ohm
> Widerstand in Reihe zu schalten, damit der Programmer den Pin
> zuverlässig schnell genug runter ziehen kann.
Ein 100nF Kondensator ist fehl am Platze.
Als Abblockkondensator an der Versorgung, ok, aber sonst, nööö.

von Stefan F. (Gast)


Lesenswert?

> Wenn der Kondensator zu KLEIN ist bricht die Software mit einer
> Kommunikationsstörung ab.

Das ist nicht richtig. Die ISP Schnittstelle funktioniert ganz ohne 
Konensator am Reste Pin.

> Der Reset, des als ISP Programmer laufenden UNO, soll
> unterbunden werden.

Wie kommst du jetzt darauf? Es soll ein ATTiny13 programmiert werden. Um 
den geht es. Am Arduino UNO braucht niemand herum zu basteln, der 
funktioniert so wie er verkauft wurde.

von Einer K. (Gast)


Lesenswert?

Stefan U. schrieb:
> Am Arduino UNO braucht niemand herum zu basteln, der
> funktioniert so wie er verkauft wurde.

Blödsinn!
Der UNO soll als ISP Programmieradapter genutzt werden.
Dazu bedarf es dieser/einer Anpassung.
Und das genau mit einer der 3 von mir genannten Methoden.


Bitte lesen:
https://www.arduino.cc/en/Tutorial/ArduinoISP
> Note for the Arduino Uno: you'll need to add a
> 10 uF capacitor between reset and ground.

Jetzt alle Klarheiten beseitigt?

von Stefan F. (Gast)


Lesenswert?

Ich denke schon.
Du bist beim Reset Pin des Arduinos, der als ISP Programmer fungiert.
Ich bin beim Reset Pin des Targets.

von Einer K. (Gast)


Lesenswert?

Stefan U. schrieb:
> Du bist beim Reset Pin des Arduinos, der als ISP Programmer fungiert.
Genau!

Timo T. schrieb:
> und der Ground und
> Reset Pin am Arduino mit einem 10uF Elko verbunden.
Und das hat er richtig gemacht.

Worauf dann:

dupdidu schrieb:
> oha...
Sich geirrt und damit diese Verwirrung angestiftet hat.

Stefan U. schrieb:
> Ich denke schon.
Ich auch.

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.