Forum: Mikrocontroller und Digitale Elektronik warum kann ATTiny 85 nur einmal gesflasht werden


von Manuel W. (1wire)


Lesenswert?

Hallo zusammen,

ich habe einen USBasp aus China und mit diesem kann ich komischerweise 
nur 1x einen ATTiny 85 nur einmal flashen.

Danach kommt der Fehler das die Signatur nicht passt:
1
avrdude.exe: Version 5.10, compiled on Jan 19 2010 at 10:45:23
2
             Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
3
             Copyright (c) 2007-2009 Joerg Wunsch
4
5
             System wide configuration file is "I:\Programme\AVR Thema\USBprogrammer\flashen\WinAVR-20100110\bin\avrdude.conf"
6
7
             Using Port                    : lpt1
8
             Using Programmer              : usbasp
9
             AVR Part                      : ATtiny85
10
             Chip Erase delay              : 4500 us
11
             PAGEL                         : P00
12
             BS2                           : P00
13
             RESET disposition             : possible i/o
14
             RETRY pulse                   : SCK
15
             serial program mode           : yes
16
             parallel program mode         : yes
17
             Timeout                       : 200
18
             StabDelay                     : 100
19
             CmdexeDelay                   : 25
20
             SyncLoops                     : 32
21
             ByteDelay                     : 0
22
             PollIndex                     : 3
23
             PollValue                     : 0x53
24
             Memory Detail                 :
25
26
                                      Block Poll               Page                       Polled
27
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
28
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
29
               eeprom        65     6     4    0 no        512    4      0  4000  4500 0xff 0xff
30
               flash         65     6    32    0 yes      8192   64    128  4500  4500 0xff 0xff
31
               signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
32
               lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
33
               lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
34
               hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
35
               efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
36
               calibration    0     0     0    0 no          2    0      0     0     0 0x00 0x00
37
38
             Programmer Type : usbasp
39
             Description     : USBasp, http://www.fischl.de/usbasp/
40
41
avrdude.exe: auto set sck period (because given equals null)
42
avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
43
avrdude.exe: AVR device initialized and ready to accept instructions
44
45
Reading | ################################################## | 100% 0.08s
46
47
avrdude.exe: Device signature = 0x000102
48
avrdude.exe: Expected signature for ATtiny85 is 1E 93 0B
49
             Double check chip, or use -F to override this check.
50
51
avrdude.exe done.  Thank you.

Wenn ich den ATTiny 85 dann an einen Raspi anschliesse 
(http://www.instructables.com/id/Programming-the-ATtiny85-from-Raspberry-Pi/?lang=de) 
dann funktioniert das, auch mehrere male.

Der USBasp funktioniert auch am AVR-Net-IO Board mit Atmega1284p.

Habe den ATTiny auch schon mal dort angeschlossen um darüber zu flashen, 
geht auch nur einmal.

Aber am Raspi gehts immer.

Wer kann mir helfen den Fehler zu finden oder hat eine Idee an was es 
liegen könnte?

VG
1wire

von Test (Gast)


Lesenswert?

clock settings verstellt ? isp frequenz zu hoch ?

von Ingo L. (corrtexx)


Lesenswert?

Manuel W. schrieb:
> USBasp aus China
Daran vielleicht?

von Georg G. (df2au)


Lesenswert?

Ingo L. schrieb:
> Daran vielleicht?

Das China Bashing hier im Forum ist schon sehr gewöhnungsbedürftig. Aber 
es ist ja auch bequemer, eigene Unfähigkeiten auf Andere ab zu wälzen.

Wenn der TO gesagt hätte, wie er die Fuses gesetzt hat, hätte man schon 
mehr Anhaltspunkte. Er wäre nicht der Erste, der sich via Takt Option 
oder Reset Pin Manipulation selbst abgeschossen hätte.

Und warum nimmt er diese Zeile nicht ernst?
> warning: cannot set sck period. please check for usbasp firmware update.

von Ingo L. (corrtexx)


Lesenswert?

Georg G. schrieb:
> eigene Unfähigkeiten auf Andere ab zu wälzen.
Ich hab kein Probleme wie vom TO ;), aber evtl. bin ich auch zu unfähig 
für solche Probleme... Daran wirds liegen.

> Das China Bashing hier im Forum ist schon sehr gewöhnungsbedürftig
Dann gewöhn dich dran ;)

von Manuel W. (1wire)


Lesenswert?

Das ging ja schnell, danke schon mal für die Antworten.

Georg G. schrieb:
> eigene Unfähigkeiten auf Andere ab zu wälzen.

Also mit Unfähigkeit hat das wohl wenig zu tun, wenn man hier im Board 
eine Frage stellt. Nach deiner Definition ist jeder Unfähig nur weil er 
ein Problem hier ins Board stellt. Das ist weder nett noch besonders 
hilfreich.

Also ich hab schon etliches gelesen und flashe AVRs schon seit letztem 
Jahr. Daher gestehe ich mir schon etwas mehr zu, aber hier komm ich 
einfach nicht weiter, und deshalb hab ich mich mal getraut hier diese 
Frage zu stellen. Das ich wegen dem "China" etwas komisch angeguckt 
werde, dachte ich mir schon.

ABER jetzt mal wieder sachlich:
Um die Informationslücken von meiner Seite aus zu füllen.

-Fuses bleiben wie im Auslieferzustand. L:0x62 H:0xDF
-Cannot set sck period.... Die Firmware habe ich auf dem USBasp auf 
aktuelle von Fischl.de geflahst.
-Resetpin (also RSTDISBL) wird nicht manipuliert (brauch den nicht als 
Port)

Wie schon erwähnt kann ich nach dem USBasp den Tiny über Raspi 
(Raspberry Pi B) weiterhin flashen, das geht vor und nach der Benutztung 
des USBasp.

Nur eben am USBasp  gehts 1x  - danach nicht mehr. Fuses werden nicht 
geändert. Wenn es prinzipiell nicht gehen würde, dann ok.

Ich könnte natürlich alle Tinys über Raspi + Steckbrett flashen. Aber 
wenn ich in ein paar Wochen/Monaten wieder was zu flashen habe, dann ist 
vielleicht das Steckbrett schon wieder für andere Dinge in Gebrauch 
und/oder Raspi ist für FHEM oder XMBC verwendet worden.

Wer noch eine Idee oder Vermutung, bitte gerne

VG
1wire

von jois3 (Gast)


Lesenswert?

Hi 1wire,

eine Vermutung, wenn's denn jedem Recht ist ;-):

3,3V vs. 5V.
Ich hatte mal selbiges Problem und kurz vor dem Entsorgen von 5 Chips 
die Lösung gefunden, dass ich zwar die Versorgungsspannung auf 3,3v, 
aber die Signalspannung auf 5V klemmen muss, damit nach dem ersten 
Flashen weitere Kommunikation über den ISP möglich ist.

Ich vermute zwar, das liegt am loslaufenden Programm und an meiner 
Unfähigkeit, den Kram passend zu entstören (ich werde nächstes Mal 
jedenfalls erstmal ein bisserl Kerko-Hühnerfutter passend verlöten), 
aber man nimmt ja bekanntlich, was man bekommt, wenn's denn tut. Falls 
jemandem etwas besseres einfällt, gerne her damit. Und ach ja, die 
unterschiedlichen Spannungen haben meinen SMD attiny13-ern nicht 
geschadet, was andere Chips/Chargen daraus machen, kann ich leider nicht 
sagen...

Gruß, jois3

von Timo (Gast)


Lesenswert?

Hört sich an wie ein Problem mit der ISP Verbindung oder der 
Spannungsversorgung.

Der USBasp ist doch nur ein ISP Adapter, oder? Wie Programmierst du den 
ATTiny? Am besten mal den Aufbau genau beschreiben, möglichst mit Bild.

Woher kommt die Versorgungsspannung? 5V? Ist nach dem ersten 
Programmieren das Programm richtig auf dem tiny? Die Fuses noch gleich?

von Georg G. (df2au)


Lesenswert?

Der USBasp kann nicht wissen, ob der Tiny jungfräulich ist. Also muss 
beim Flashen etwas passieren, damit die Signatur nicht mehr gelesen 
werden kann.

Was passiert, wenn du den Tiny im Rasp löscht (dann ist er wieder eine 
Jungfrau)? Kannst du ihn danach mit dem USBasp flashen?

Hast du dir im Fehlerfall mal die Signale am Tiny während des Flashens 
angesehen? Wackelt Reset? Welche Periode hat SCK? Ist die 
Betriebsspannung sauber und in richtiger Höhe?

Flash dir einen "1 Sekunde Blinker" auf den Chip. Ist es nach dem 
Flashen wirklich 1 Sekunde, stimmt also der Takt?

Ich bin zu faul, die Fuses nachzulesen. Aktivierst du beim Flashen 
Brownout und dann passt die Spannung nicht mehr?

von Axel S. (a-za-z0-9)


Lesenswert?

Manuel W. schrieb:
> -Fuses bleiben wie im Auslieferzustand. L:0x62 H:0xDF

Dann läuft der tiny85 mit 1MHz internem Takt und der ISP-Takt darf 
höchstens 250kHz betragen. AFAIK läuft der usbasp mit alter Firmware/als 
Default mit 375kHz, also zu schnell.

> -Cannot set sck period.... Die Firmware habe ich auf dem USBasp auf
> aktuelle von Fischl.de geflahst.

Sicher? Dann gäbe es die Meldung nicht.

> Wie schon erwähnt kann ich nach dem USBasp den Tiny über Raspi
> (Raspberry Pi B) weiterhin flashen, das geht vor und nach der Benutztung
> des USBasp.
>
> Nur eben am USBasp  gehts 1x  - danach nicht mehr. Fuses werden nicht
> geändert. Wenn es prinzipiell nicht gehen würde, dann ok.

Meine Vermutung ist, daß du einen zu hohen ISP-Takt verwendest. Und 
vermutlich eine zu alte Firmware auf dem usbasp hast (muß mindestens 
V1.3 sein für die Takteinstellung per avrdude & Co).

Dreh also die ISP-Frequenz runter. Wenn es weiterhin die Meldung über zu 
alte Firmware gibt, update die Firmware. Alternativ hat der usbasp einen 
Jumper "slow clock". Damit kannst du auch mit der alten Firmware den 
ISP-Takt runterstellen (dann allerding wirklich langsam).


XL

von 1wire (Gast)


Lesenswert?

Hallo zusammen,
also hab jetzt hier anhand von euren Ideen noch einiges geprüft und ich 
denke auch das es am zu schnellen ISP liegt.
Der 1284 mag das wohl können aber der kleine 85er wohl nicht.
Habe den USBasp über Raspi geflasht, zumindest war ich der Meinung weil 
keine Fehlermeldung gab und das verify auch ok war.
Aber da die Meldung kommt, hat das wohl nicht funktioniert (J2 
SelfProgramming war eingebaut)

ob ich einen AVR wieder zur Jungfrau bekomme und dann wieder 1x flashen 
kann, habe ich noch nicht probiert ist aber auch eine gute Idee.

Irgendwas muss da noch passieren, nach oder während dem ersten flashen, 
da bin voll eurer Meinung. mal sehen ob Ich/Wir es schaffen das 
herauszufinden.

Da ich jetzt nicht die FW schneller bekomme, versuche ich mal den Ansatz 
von Axel den Tiny so zu fusen das er einen schnelleren ISP akzeptiert.

ISP ist ein viertel von intern Takt. Richtig?

Laut http://www.engbedded.com/fusecalc/ hab ich bei L:0x62 einen intern 
Takt 8MHz mit Divide clock by 8 internally; [CKDIV8=0] also 1 MHZ

Meine Überlegung: Ich flashe L:0xE2 also Divide clock by 8 internally; 
CKDIV8=1
dann habe ich intern 8MHz und ISP 2MHz. Stimmt das, oder bin ich jetzt 
total verpeilt?

VG
1wire

von Peter X. (peter_x)


Lesenswert?

1wire schrieb:
> also Divide clock by 8 internally
       ^^^^^^

???

von Thomas E. (thomase)


Lesenswert?

1wire schrieb:
> oder bin ich jetzt total verpeilt?
Nein.

mfg.

von Philipp K. (philipp_k59)


Lesenswert?

Ich habe einen auf Fischl basierenden Adapter der als avrdude Parameter 
-B60 benötigt.

von Manuel W. (1wire)


Lesenswert?

Hallo zusammen,
ich hab mit eurer Hilfe das ganze zum funktionieren gebracht. Beim 
ersten Flashen wird wohl die interne Geschwindigkeit reduziert. Warum 
auch immer, ich setzt da ja keine Fuses.

So funktionierts bei mir:

- neuer ATTiny85, erstmal die Fuses auf L:0xe2 H:0xdf E:0xff
   damit setze ich den internen Takt von 8MHz auch auf 8MHz, weil ich 
Divide clock by 8 internally ausschalte, (die 8MHz werden also NICHT 
durch 8 geteilt)
Somit darf der ISP bis zu 2MHz schnell sein.
- USBasp macht wohl immer ISP 375kHz. also passt das jetzt
- mit avrdude -p t85 -c usbasp -e -U flash:w:DATEI.HEX -v flashen
geht dann auch mehrfach!!!

Ich habe 2 USBasp. Einer ist original und einer ist vermeintlich 
geflasht. Aber das oben beschriebene funktioniert mit beiden.

Zustätzl. habe ich den Flashbefehl mit -B16 oder -B64 erweitert und 
stelle bei beiden USBasp eine langsamere Flashgeschwindigkeit fest. So 
wie es zu erwarten war. Also funktioniert -B wohl.

Also würde ich hier den Thread mit SOLVED schliessen und bedanke mich 
bei allen Beteiligten.

Nachtrag: Hab grad die "alten" ATTiny85 die ich nicht mehr flashen 
konnte, die Fuses mit -B16 auf L:0xe2 gesetzt. Damit geht jetzt alles. 
SUPER.

VG
1wire

von Paul Baumann (Gast)


Lesenswert?

Du kannst auch aus dem USBASP einen AVRDOPER machen:
http://www.obdev.at/products/vusb/avrdoper.html

In dem letzten Archiv findet sich eine .hex-Datei, die das erlaubt:
USBASP MEGA8 12 MHZ.hex

Vortei: Dieses Gerät macht keine Zicken. Ich hatte mit der 
"Originalsoft-
ware" nur Sackgang.

MfG Paul

von Bernd K. (prof7bit)


Lesenswert?

Wenn auf der Platine draufsteht: "MX-USBISP-V3.01" dann kannst Du die 
originale Fischl-Firmware auf das Gerät flashen, danach kann man dann in 
avrdude die -B Option verwenden. Das was ab Werk da drauf ist scheint 
eine modifizierte USBASP Version zu sein die eigenmächtig versucht die 
SCK Bitrate automatisch zu setzen, möglicherweise geht das in die Hose. 
Ich hab auch so ein Teil und meine erste Aktion war die original 
Fischl-Firmware draufzumachen.

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.