Forum: Mikrocontroller und Digitale Elektronik Attiny85 (SMD) Device signature = 0xffffff


von Benno B. (microcoller)


Lesenswert?

Hallo,

ich (Anfänger) experimentiere aktuell ein wenig mit dem Attiny85 und 
habe Probleme mit einer SMD Version (Attiny85V-10SU).
Ich bekomme einfach kein Programm aufgespielt oder den Bootloader 
gebrannt.
Hier mal die Ausgabe der Arduino IDE:

1
         Using Port                    : /dev/ttyUSB0
2
         Using Programmer              : stk500v1
3
         Overriding Baud Rate          : 19200
4
         Setting bit clk period        : 5.0
5
         AVR Part                      : ATtiny85
6
         Chip Erase delay              : 400000 us
7
         PAGEL                         : P00
8
         BS2                           : P00
9
         RESET disposition             : possible i/o
10
         RETRY pulse                   : SCK
11
         serial program mode           : yes
12
         parallel program mode         : yes
13
         Timeout                       : 200
14
         StabDelay                     : 100
15
         CmdexeDelay                   : 25
16
         SyncLoops                     : 32
17
         ByteDelay                     : 0
18
         PollIndex                     : 3
19
         PollValue                     : 0x53
20
         Memory Detail                 :
21
22
                                  Block Poll               Page                       Polled
23
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
24
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
25
           eeprom        65    12     4    0 no        512    4      0  4000  4500 0xff 0xff
26
           flash         65    12    32    0 yes      8192   64    128 30000 30000 0xff 0xff
27
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
28
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
29
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
30
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
31
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
32
           calibration    0     0     0    0 no          2    0      0     0     0 0x00 0x00
33
34
         Programmer Type : STK500
35
         Description     : Atmel STK500 Version 1.x firmware
36
         Hardware Version: 2
37
         Firmware Version: 1.18
38
         Topcard         : Unknown
39
         Vtarget         : 0.0 V
40
         Varef           : 0.0 V
41
         Oscillator      : Off
42
         SCK period      : 0.1 us
43
44
avrdude: AVR device initialized and ready to accept instructions
45
46
Reading | ################################################## | 100% 0.02s
47
48
avrdude: Device signature = 0xffffff (retrying)
49
50
Reading | ################################################## | 100% 0.03s
51
52
avrdude: Device signature = 0xffffff (retrying)
53
54
Beim Hochladen des Sketches ist ein Fehler aufgetreten
55
Reading | ################################################## | 100% 0.02s
56
57
avrdude: Device signature = 0xffffff
58
avrdude: Yikes!  Invalid device signature.
59
         Double check connections and try again, or use -F to override
60
         this check.
61
62
63
avrdude done.  Thank you.



Zum Programmieren nutze ich einen Arduino Nano.

Warum in der obigen Ausgabe 0,0V angezeigt wird, weiß ich nicht.
Die Kableverbindungen sollten alle in Ordnung sein und einen 10uF Elko 
habe ich zur Sicherheit auch an den Nano geklemmt (zwischen RST und 
GND). Der Attiny85V-10SU wird mit Hilfe eines SOP-8 zu DIP-8 Adapters 
auf ein Steckbrett gesteckt. Genau auf den selben Platz, auf den ich 
zuvor einen Attiny85-20 (DIP) gesteckt habe, mit dem alles einwandfrei 
funktioniert. Ich habe nichts verändert, nur die Chips ausgetauscht und 
dennoch funktioniert es nicht.

Die Pins des Adapters habe ich auf Kurzschluss geprüft, alles in 
Ordnung. Die Verbindung zwischen den unteren Steckpins des Adapters und 
den Pins direkt am eingeklemmten Chip habe ich auf Durchgang geprüft und 
auch hier ist alles Ordnung.
Ich habe auch beim Brennen keinen externen Oszillator eingestellt.
Einen USBAsp habe ich auch versucht, gleiches Szenario: Die DIP Version 
funktioniert, die SOIC Version nicht.

Hier mal meine Einstellungen in der IDE:
1
Board: Attiny25,45,85 (no bootloader)
2
Chip: Attiny85
3
Clock secure: 1Mhz, 8MHz external oder internernal, ja nach dem.
4
Timer 1 Clock "CPU (CPU frequenzy)"
5
LTO (1.6.11+only): "Enabled"
6
millis()/ micros(): "Enabled"
7
Save EEpPROM (only set on bootload); "EEPROM retained"
8
B.O.D. Level (Only set on bootload): B.O.D. Desabled (Saves power)
9
Port:/dev/TTYUSB0
10
Programmer: "Arudino as ISP"

Hat jemand eine Ahnung, was hier das Problem sein könnte?

Grüße

: Bearbeitet durch User
von H. H. (Gast)


Lesenswert?

Wo hast du die Chips gekauft?

von Benno B. (microcoller)


Lesenswert?

Ich sage es ungern: in China (Aliexpress).

von H. H. (Gast)


Lesenswert?

Benno B. schrieb:
> Ich sage es ungern: in China (Aliexpress).

Dann mach mal Fotos von Ober- und Unterseite.

Beitrag #7497957 wurde von einem Moderator gelöscht.
von Benno B. (microcoller)


Angehängte Dateien:

Lesenswert?

So, hier die Richtigen.

Der ganze vorherige Beitrag mit dem falschen Bildern kann gelöscht 
werden.

von Steve van de Grens (roehrmond)


Lesenswert?

Benno B. schrieb:
> Warum in der obigen Ausgabe 0,0V angezeigt wird, weiß ich nicht.

Weil dein Programmieradapter (der Arduino Nano) die Spannung nicht 
messen kann. Ich glaube das ist in der "Arduino as ISP" Firmware nicht 
implementiert. Das ist kein Hindernis.

Die Chips reagieren nicht auf der ISP Schnittstelle. Lies dazu mal die 
Tipps auf http://stefanfrings.de/avr_verfused/index.html

: Bearbeitet durch User
von H. H. (Gast)


Lesenswert?

Benno B. schrieb:
> So, hier die Richtigen.
>
> Der ganze vorherige Beitrag mit dem falschen Bildern kann gelöscht
> werden.

Fälschungen wohl nicht, aber refurbished. Gut möglich, dass du einen 
Takt einspeisen musst, oder einen HV-Programmer nehmen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Benno B. schrieb:
> So, hier die Richtigen.

Dieses seltsame "270 R-1" ist sehr schräg, sowas hat Atmel nie drauf 
geritzt. Die Losnummer (Rückseite) könnte passen.

Der nächste Schritt beim Debuggen wäre es jetzt, einen Logikanalysator 
auf die Pins zu klemmen und zu gucken, was passiert.

von H. H. (Gast)


Lesenswert?

Jörg W. schrieb:
> Dieses seltsame "270 R-1" ist sehr schräg, sowas hat Atmel nie drauf
> geritzt.

Das dürfte von einem Brennservice stammen.


> Die Losnummer (Rückseite) könnte passen.

Die passt. Fälscher lassen die ja gerne weg, oder sie machen dabei 
Fehler.

von Benno B. (microcoller)


Lesenswert?

Danke Euch!

Als Anfänger sind die Teile dann für mich wohl unbrauchbar?
Vom Debuggen habe ich keine Ahnung und einen HV habe ich auch nicht.
Einen USBAsp, einen Arduino Nano und einen 8 MHz Oszillator (3 Pins) 
habe ich hier nur zur Verfügung.
Das wird wohl nicht reichen, um die Dinger gangbar zu machen?

Den Text von stefanfrings.de verstehe ich auch nicht wirklich. Auf jeden 
Fall habe ich aber an den Fuses nichts verändert. Trotzdem hatte ich 
zwischenzeitlich einfach mal den 8 MHz Oszillator angeklemmt, für den 
Fall, dass da irgendwas auf extern eingestellt ist. War aber scheinbar 
nicht der Fall, denn es hat ebenfalls nicht funktioniert.

von H. H. (Gast)


Lesenswert?

Benno B. schrieb:
> 8 MHz Oszillator (3 Pins)

Für gewöhnlich haben die schon vier Pins, wenngleich einer davon oft 
ohne Funktion ist, aber nicht immer.

Und an welchen Pin des Tiny85 hast du den Takt angelegt?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Wenn du willst, kannst du mir den ATtiny85 in einen Briefumschlag 
stecken und her schicken, ich teste ihn dir. Wenn er funktioniert (von 
mir aus auch mit HV oder externem Takt), programmiere ich dir die Fuses 
nach deiner Wahl und stecke ihn in einen Briefumschlag zurück. Wenn 
nicht, ist es vermutlich preiswerter, wenn ich ihn dann in den Müll 
werfe.

Die nötige Ausrüstung habe ich.

H. H. schrieb:
> Das dürfte von einem Brennservice stammen.

Ja, wäre 'ne Möglichkeit.

: Bearbeitet durch Moderator
von Benno B. (microcoller)


Lesenswert?

@hhinz
Ich habe einen 8 MHz Keramik Resonator mit 3 Pins (an die beiden 
XTAL-Pins + GND geklemmt) und diesen hier habe ich auch noch

https://www.reichelt.de/smd-resonator-8-00-mhz-cstcc-8-00-p42491.html?&trstct=pos_0&nbc=1

Letzteren habe ich noch nicht probiert, aber der Keramik (bei mir blaues 
Gehäuse) hat mit der DIP Version gut funktioniert.

@dl8dtl
Vielen Dank für das Angebot. Ich komme ggf. darauf zurück. Habe hier 4 
von den Dingern.

Worauf muss ich denn in Zukunft achten, dass ich nicht noch mal so ein 
Zeug kaufe?

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Benno B. schrieb:
> Worauf muss ich denn in Zukunft achten, dass ich nicht noch mal so ein
> Zeug kaufe?

Originale kaufen?

Ist ja nichts grundsätzlich dagegen einzuwenden, dass jemand das Zeug 
"refurbished", aber dann sollte er zumindest in der Lage sein, 1.) nicht 
nur die Flash-Inhalte zu löschen, sondern auch die Fuses auf Werkzustand 
zurückzusetzen und 2.) wenigstens die grundlegende Funktion zu testen.

Aber mit so viel Arbeit ließe sich mit dem Recycling wahrscheinlich kein 
Geld mehr machen. Einen ATtiny85 bekommst du von einem Distri für einen 
reichlichen Euro, und da vedient der noch was dran. Wenn nun jemand die 
recycelten Teile verkaufen will, muss er nochmal eine ganze Runde da 
drunter bleiben, da kannst du dir vorstellen, wieviel Arbeit er damit 
zubringen darf, damit der Laden rentabel bleibt. So billig sind auch 
chinesiche Arbeitsstunden halt nicht.

von Steve van de Grens (roehrmond)


Lesenswert?

Benno B. schrieb:
> Worauf muss ich denn in Zukunft achten, dass ich nicht noch mal so ein
> Zeug kaufe?

Bei einer seriösen Quelle kaufen. Händler auf Aliexpress, Ebay und 
Amazon sind das häufig nicht.

Bei Mouser und Digikey bekommt du immer originale Neuware.

von H. H. (Gast)


Lesenswert?

Benno B. schrieb:
> Ich habe einen 8 MHz Keramik Resonator mit 3 Pins (an die beiden
> XTAL-Pins + GND geklemmt) und diesen hier habe ich auch noch
>
> 
https://www.reichelt.de/smd-resonator-8-00-mhz-cstcc-8-00-p42491.html?&trstct=pos_0&nbc=1
>
> Letzteren habe ich noch nicht probiert, aber der Keramik (bei mir blaues
> Gehäuse) hat mit der DIP Version gut funktioniert.

Der funktioniert aber nicht in jeder Einstellung des µC.

Eben weil es nur ein Resonator ist, kein Oszillator.

von Benno B. (microcoller)


Lesenswert?

Besten Dank für Eure Informationen und Tipps! Das war sehr hilfreich!
@dl8dtl Auch an Dich noch mal vielen Dank für das Angebot! Ich werde 
mich ggf. noch mal über PN bei Dir melden.

H. H. schrieb:
> Der funktioniert aber nicht in jeder Einstellung des µC.
>
> Eben weil es nur ein Resonator ist, kein Oszillator.

Gut zu wissen! Welche Einstellungen wären das?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Benno B. schrieb:
> Welche Einstellungen wären das?

Die Fusebits CKSELx in der low fuse. Worst case: 0b0000 = "external 
clock". Aber auch nicht jede der Einstellungen für einen externen 
Resonator muss deiner funktionieren.

von Benno B. (microcoller)


Lesenswert?

Jörg W. schrieb:
> Benno B. schrieb:
>> Welche Einstellungen wären das?
>
> Die Fusebits CKSELx in der low fuse. Worst case: 0b0000 = "external
> clock". Aber auch nicht jede der Einstellungen für einen externen
> Resonator muss deiner funktionieren.

Danke! :)

von Sebastian W. (wangnick)


Lesenswert?

Benno B. schrieb:
> Das wird wohl nicht reichen, um die Dinger gangbar zu machen?

Du könntest noch versuchen, einen 1MHz Takt auf XTAL1 einzuspeisen. Dazu 
könntest du z.B. PWM auf dem Attiny85 benutzen, der schon einen 
Bootloader drauf hat, oder jeden anderen Arduino. GND zu GND nicht 
vergessen.

LG, Sebastian

von Benno B. (microcoller)


Lesenswert?

Danke Dir! Ich behalte das mal im Hinterkopf.

von H. H. (Gast)


Lesenswert?

Jörg W. schrieb:
> Einen ATtiny85 bekommst du von einem Distri für einen
> reichlichen Euro,

In SO-8 zur Zeit ausverkauft.

von Hermann W. (hermannw)


Lesenswert?

Es könnte ja auch sein, dass da noch ein altes Programm drauf ist, bei 
dem der Takt über clkpr runter gesetzt wurde. Der lässt sich dann nur 
mit einem entsprechend langsamen Takt programmieren. Oder mit der 
brutalen Methode: bevor Vcc angelegt wird, den Reset hart auf Gnd legen 
und Reset erst nach dem Programmieren wieder freigeben. Das hatten wir 
mal hier rausgefunden:
Beitrag "Re: ATmega1284p lässt sich nur einmal laden"

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Hermann W. schrieb:
> Es könnte ja auch sein, dass da noch ein altes Programm drauf ist, bei
> dem der Takt über clkpr runter gesetzt wurde.

ISP erfolgt während Reset, da interessieren nur die Fuses.

von S. L. (sldt)


Lesenswert?

Kommt sehr darauf an, Jörg Wunsch - probieren Sie es einmal mit Ihrem 
eigenen Programmiergerät: 'Low Frequency Crystal Oscillator' mit einem 
Programm, das den Teiler auf 256 setzt, und schauen Sie, was 
anschließend passiert.

PS:
Für einen solchen Fall geht mein Selbstbaugerät bis auf 29 Hz herunter - 
vielleicht haben Sie ja etwas Besseres.

: Bearbeitet durch User
von Hermann W. (hermannw)


Lesenswert?

Jörg W. schrieb:
> ISP erfolgt während Reset, da interessieren nur die Fuses.
Es ist aber so, dass beim normalen Programmieren zuerst Vcc angelegt 
wird, dann läuft das vorhandene Programm los und wird über clkpr auf 
niedrigen Takt gesetzt. Dann geht der normale Programmiertakt nicht 
mehr. Die Fuses werden erst gesetzt, wenn er aus dem Powerdown oder 
Reset heraus kommt. Also beim Start zu früh, da danach clkpr gesetzt 
wird und dann geht schon nichts mehr.
Hatte ich gerade wieder, als ich einen schon mal programmierten Chip 
nutzen wollte, da hat AVR-Studio gleich über falsche Signatur gemeckert, 
weil er sie nicht lesen konnte. Mit dem Trick über Hart-Reset ging alles 
wieder.

von S. L. (sldt)


Lesenswert?

> ... beim normalen Programmieren zuerst Vcc angelegt wird ...

Genau. Das ist ja schließlich beim echten 'In-System Programming' der 
Regelfall.

von Steve van de Grens (roehrmond)


Lesenswert?

Jörg W. schrieb:
> ISP erfolgt während Reset, da interessieren nur die Fuses.

Das ist nicht ganz richtig. Der Clock Prescaler wird nicht beim Eintrit 
in den Reset Zustand zurück gesetzt, sondern beim Verlassen.

Nehmen wir an, das Programm läuft und hat die Taktrate herunter gesetzt. 
Jetzt zieht der Programmieradapter die Reset Leitung auf LOW, um in den 
ISP Modul zu wechseln. Dann ist die Taktrate immer noch niedrig!

Um dieses Problem zu umgehen besteht die Möglichkeit (und ich glaube 
dein Avrdude macht das auch), die Reset Leitung kurz auf LOW zu Pulsen, 
und dann ein zweites mal auf LOW zu ziehen (und zu halten). Wenn das 
Programm die Taktfrequenz bis dahin nicht schon wieder herab gesetzt 
hat, dann funktioniert die ISP Kommunikation nun schnell. Deswegen gibt 
es den Tipp, am Anfang des Programms eine Sekunde zu warten, bevor man 
die Taktrate herunter setzt. Wer das bisher immer so gemacht hat, kennt 
das "Problem" womöglich gar nicht.

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Steve van de Grens schrieb:
> Um dieses Problem zu umgehen besteht die Möglichkeit (und ich glaube
> dein Avrdude macht das auch), die Reset Leitung kurz auf LOW zu Pulsen,
> und dann ein zweites mal auf LOW zu ziehen (und zu halten)

Das ist letztlich die seit Jahr und Tag*) von Atmel empfohlene 
Vorgehensweise.

*) Einzige Ausnahme: beim AT90S1200 stand dies noch nicht in der 
Vorschrift drin. Der hatte aber auch keinen clock prescaler. ;-)

Ansonsten spricht natürlich auch nichts dagegen, dass man /RESET vorab 
auf low zieht und dann erst Vcc anlegt.

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.