Attiny85 (SMD) Device signature = 0xffffff

#7497945
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

Beitrag #7497957 wurde von einem Moderator gelöscht.
Gast #7497962
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

#7497985
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.

Moderator Persönliche Seite #7497993
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.

#7498000
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?

Moderator Persönliche Seite #7498002
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.

Gast #7498011
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.

#7498763
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"

#7498775
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.

#7498782
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.

Gast #7498832
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.

Moderator Persönliche Seite #7498854
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.

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