Forum: Mikrocontroller und Digitale Elektronik ATtiny13 lässt sich nicht programmieren - Brauche Ideen zum debuggen


von Peter S. (petershaw)


Angehängte Dateien:

Lesenswert?

Hallo,

ich versuche seit Tagen den Fehler zu finden - und bin kurz vorm 
Aufgeben.
Folgendes Verhalten tritt bei mir auf: ich kann über SPI die Fuses 
auslesen und setzen. Den Upload kann ich nicht ausführen.

Der Output von den Fuses:
1
avrdude -c usbasp -b 300 -p t13 -q -U lfuse:r:LOW.tmp:h -U hfuse:r:HIGH.tmmp:h
2
3
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
4
avrdude: AVR device initialized and ready to accept instructions
5
avrdude: Device signature = 0x1e9007
6
avrdude: reading lfuse memory:
7
avrdude: writing output file "LOW.tmp"
8
avrdude: reading hfuse memory:
9
avrdude: writing output file "HIGH.tmmp"
10
11
avrdude: safemode: Fuses OK

ergibt folgende Konfiguration:
1
LOW: 0x6a
2
HIGH: 0xff

Der Upload der Software bringt folgende Fehlermeldung;
1
 
2
avrdude: verifying ...
3
avrdude: verification error, first mismatch at byte 0x0000
4
         0x09 != 0xff
5
avrdude: verification error; content mismatch

Ich programmiere seit einiger Zeit Erfolgreich ATmega's. Auf dem Tiny 
bin ich neu. Für ein Projekt brauche ich viel kleine tinys und habe mir 
ein Sack-Voll bestellt. Auf meinem Programmer-Board soll ich entweder 
einen Mega328 programieren können, oder einen Tiny13.
Ich benutze den ATtiny13-20PU
Schaltplan anbei.

Zur Erklärung: Der Sockel vom Mega ist NICHT belegt! Die LED'S am Tiny 
sind (anders als auf dem Schaldplan) sind NICHT verbunden. Es handelt 
sich also um die im Netz gefundenen Basisbeschaltungen.

Anbei noch der volle Output vom avrdude. Eventuell übersehe ich etwas?
1
avrdude -c usbasp -B300 -Uflash:w:PS_AVR_Programmer.hex -p t13 -F -e -i 10 -v
2
3
avrdude: Version 5.11.1, compiled on Jul  8 2013 at 13:22:36
4
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
5
         Copyright (c) 2007-2009 Joerg Wunsch
6
7
         System wide configuration file is "/usr/local/Cellar/avrdude/5.11.1/etc/avrdude.conf"
8
         User configuration file is "/Users/petershaw/.avrduderc"
9
         User configuration file does not exist or is not a regular file, skipping
10
11
         Using Port                    : unknown
12
         Using Programmer              : usbasp
13
         Setting bit clk period        : 300.0
14
         Setting isp clock delay        :  10
15
         AVR Part                      : ATtiny13
16
         Chip Erase delay              : 4000 us
17
         PAGEL                         : P00
18
         BS2                           : P00
19
         RESET disposition             : dedicated
20
         RETRY pulse                   : SCK
21
         serial program mode           : yes
22
         parallel program mode         : yes
23
         Timeout                       : 200
24
         StabDelay                     : 100
25
         CmdexeDelay                   : 25
26
         SyncLoops                     : 32
27
         ByteDelay                     : 0
28
         PollIndex                     : 3
29
         PollValue                     : 0x53
30
         Memory Detail                 :
31
32
                                  Block Poll               Page                       Polled
33
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
34
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
35
           eeprom        65     5     4    0 no         64    4      0  4000  4000 0xff 0xff
36
           flash         65     6    32    0 yes      1024   32     32  4500  4500 0xff 0xff
37
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
38
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
39
           calibration    0     0     0    0 no          2    0      0     0     0 0x00 0x00
40
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
41
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
42
43
         Programmer Type : usbasp
44
         Description     : USBasp, http://www.fischl.de/usbasp/
45
46
avrdude: set SCK frequency to 2000 Hz
47
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
48
avrdude: AVR device initialized and ready to accept instructions
49
50
Reading | ################################################## | 100% 0.00s
51
52
avrdude: Device signature = 0x1e9007
53
avrdude: safemode: lfuse reads as 6A
54
avrdude: safemode: hfuse reads as FF
55
avrdude: erasing chip
56
avrdude: set SCK frequency to 2000 Hz
57
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
58
avrdude: reading input file "PS_AVR_Programmer.hex"
59
avrdude: input file PS_AVR_Programmer.hex auto detected as Intel Hex
60
avrdude: writing flash (124 bytes):
61
62
Writing | ################################################## | 100% 0.06s
63
64
65
66
avrdude: 124 bytes of flash written
67
avrdude: verifying flash memory against PS_AVR_Programmer.hex:
68
avrdude: load data flash data from input file PS_AVR_Programmer.hex:
69
avrdude: input file PS_AVR_Programmer.hex auto detected as Intel Hex
70
avrdude: input file PS_AVR_Programmer.hex contains 124 bytes
71
avrdude: reading on-chip flash data:
72
73
Reading | ################################################## | 100% 0.04s
74
75
76
77
avrdude: verifying ...
78
avrdude: verification error, first mismatch at byte 0x0000
79
         0x09 != 0x00
80
avrdude: verification error; content mismatch
81
82
avrdude: safemode: lfuse reads as 0
83
avrdude: safemode: hfuse reads as 0
84
avrdude: safemode: lfuse changed! Was 6a, and is now 0

Für jegliche Idee über einen Möglichen Fehler wäre ich dankbar.

von Norbi (Gast)


Lesenswert?

avrdude: warning: cannot set sck period. please check for usbasp 
firmware update

Wär das nicht was?

von Axel R. (Gast)


Lesenswert?

>avrdude: set SCK frequency to 2000 Hz
zu langsam, um den Flash zu beschreiben, stell es schneller.
Wo steht, das Du den takt auf 2Khz setzen sollst? Willst Du mitpfeiffen?
ZUm Fuse auslesen gehen 2khz, aber nicht zum Flashen.

von Peter S. (petershaw)


Lesenswert?

Hallo Norbi,

Die Version 5.11.1 ist die aktuelle. Alle Lötpunkte habe ich 
kontrolliert.
Die Meldung verwirrt mich.

von Perfekt (Gast)


Lesenswert?

Warum ist N$13 (Pin 8) am 8-pol Sockel nicht auch Vcc, so wie an dem 
anderen Sockel?

von Axel R. (Gast)


Lesenswert?

Genau: bekommt der Tiny keine VCC? das wärs ja jetzt :))

von Peter S. (petershaw)


Lesenswert?

Hm,
Fehler in der Zeichnung. Der Chip hat Spannung.

Zum Firmware update. Der Sck wird ja durch den Programmer bestimmt. Ich 
benutze einen USBASP-Clone.
Ehrlich - ich weiß nicht wie man den updaten soll...

von Axel R. (Gast)


Lesenswert?

die Option -b 300 stellt das ding langsam. lass doch mal "-b 300" weg. 
probier mal.

von Perfekt (Gast)


Lesenswert?

Peter Shaw schrieb:
> Hm,
> Fehler in der Zeichnung. Der Chip hat Spannung.

Und warum zum Kuckuck konfrontierst du uns mit falschen Voraussetzungen? 
Du solltest deine Arbeitsweise grundlegend überdenken.

von Peter S. (petershaw)


Angehängte Dateien:

Lesenswert?

Hi Axel,

avrdude: auto set sck period (because given equals null)
avrdude: warning: cannot set sck period. please check for usbasp 
firmware update.
avrdude: error: programm enable: target doesn't answer. 1

Ich verwende den Programmer im Bild..

von Axel R. (Gast)


Lesenswert?

-B, nicht -b. Ist Case-sensitiv

hier:
> Der Output von den Fuses:

>avrdude -c usbasp -b 300 -p t13 -q -U lfuse:r:LOW.tmp:h -U >hfuse:r:HIGH.tmmp:h

und hier:
>Anbei noch der volle Output vom avrdude. Eventuell übersehe ich etwas?

>avrdude -c usbasp -B300 -Uflash:w:PS_AVR_Programmer.hex -p t13 -F -e -i 10 -v

die anderen Command-linwe options muss ich erst nachsehen...

von Axel R. (Gast)


Lesenswert?

Wenn er die sck nicht einstellen kann, stimmt tatsächlich was nicht. ich 
dachte, er kann keine krummen Werte einstellen und sträubt sich deshalb.

von Peter S. (petershaw)


Lesenswert?

hm, komisch das die Megas so problemlos gehen,

hier der output, vieleicht hilft es:
1
avrdude -c usbasp -Uflash:w:PS_AVR_Programmer.hex -p t13 -e -v
2
3
avrdude: Version 5.11.1, compiled on Jul  8 2013 at 13:22:36
4
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
5
         Copyright (c) 2007-2009 Joerg Wunsch
6
7
         System wide configuration file is "/usr/local/Cellar/avrdude/5.11.1/etc/avrdude.conf"
8
         User configuration file is "/Users/kris/.avrduderc"
9
         User configuration file does not exist or is not a regular file, skipping
10
11
         Using Port                    : unknown
12
         Using Programmer              : usbasp
13
         AVR Part                      : ATtiny13
14
         Chip Erase delay              : 4000 us
15
         PAGEL                         : P00
16
         BS2                           : P00
17
         RESET disposition             : dedicated
18
         RETRY pulse                   : SCK
19
         serial program mode           : yes
20
         parallel program mode         : yes
21
         Timeout                       : 200
22
         StabDelay                     : 100
23
         CmdexeDelay                   : 25
24
         SyncLoops                     : 32
25
         ByteDelay                     : 0
26
         PollIndex                     : 3
27
         PollValue                     : 0x53
28
         Memory Detail                 :
29
30
                                  Block Poll               Page                       Polled
31
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
32
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
33
           eeprom        65     5     4    0 no         64    4      0  4000  4000 0xff 0xff
34
           flash         65     6    32    0 yes      1024   32     32  4500  4500 0xff 0xff
35
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
36
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
37
           calibration    0     0     0    0 no          2    0      0     0     0 0x00 0x00
38
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
39
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
40
41
         Programmer Type : usbasp
42
         Description     : USBasp, http://www.fischl.de/usbasp/
43
44
avrdude: auto set sck period (because given equals null)
45
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
46
avrdude: error: programm enable: target doesn't answer. 1 
47
avrdude: initialization failed, rc=-1
48
         Double check connections and try again, or use -F to override
49
         this check.
50
51
52
avrdude done.  Thank you.
53
54
make: *** [upload] Error 1

von isnah (Gast)


Lesenswert?

Jetzt da du die -F Option weggelassen hast siehst du, dass nicht einmal 
das Auslesen der Chipidentifikation funktioniert. Und die Fehlermeldung 
auf ein HW-Verbindungsproblem hinweist.
Ich nehme an die Falschnummerierung am ISP-Srecker ist ein 
Zeichnungsfehler, sonst müsstest du das ändern.
Was ich sicher einmal in deiner Schaltung ändern würde ist, einen der 
beiden 10k Widerstände, die anscheinend parallel sind, entfernen. Und 
die beiden Led-Pfade an MISO und MOSI, welche ca 10 mA brauchen ausser 
Betrieb setzen. Denn es ist gut möglich, dass es bei den Megas 
Funktioniert, aber beim ATtiny nicht.

isnah

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


Lesenswert?

Peter Shaw schrieb:
1
> avrdude: safemode: lfuse reads as 6A 
2
> avrdude: safemode: hfuse reads as FF 
3
...
4
> avrdude: safemode: lfuse reads as 0 
5
> avrdude: safemode: hfuse reads as 0 
6
> avrdude: safemode: lfuse changed! Was 6a, and is now 0

Der verliert zwischendurch die Synchronisation.  Deine
ISP-Verkabelung ist zu wackelig (zu lang, zu schlechte Leitungen,
was auch immer). Sie funktioniert prinzipiell (zumindest im hier
zitierten ersten Beispiel, später wohl gar nicht mehr), denn Fuses
und Signatur ließen sich ja lesen.

Da du außerdem ein USBasp mit zu alter Firmware hast, kannst du die
ISP-Taktrate nicht runtersetzen, was noch (in Grenzen) als Würgaround
für ein schlechtes Kabel ansonsten nutzbar gewesen wäre.

von Peter S. (petershaw)


Lesenswert?

Danke für die Ausführungen und die Hinweise zu den Zeichnungsfehlern.
Ich habe die Zeichnung aktualisiert und werde nochmals die Verkabelung 
prüfen und die Pullups ändern. Klar so sind sie parallel, das habe ich 
beim Bau der Tiny-Sektion nicht beachtet.

Am Ende muss ich mir wohl einen eigenen USBasp bauen, der nue neuste 
Firmeware hat, nicht wahr?

von axelr. (Gast)


Lesenswert?

der usbasp muss sich doch updaten lassen. Du hast den nicht 
selbstgebaut, sonder fertig gekauft. Hmm - tue also einfach so, als wenn 
Du dir selbst einen baust und verwende den gekauften statt dessen. 
Firmwareupdate geht bei mir über den USB. Ist aber ein wenig her. Müsste 
ich mich wieder einlesen. Ich glaube, ich hatte bei meinem USB-Dingens 
die Möglichkeit, mehrere Software Varianten "aufzuspielen". USBasp war 
da auch bei.
Evtl. möchte jemand das ausführen, der der mehr im Stoff steht.
axelr.

von Georg G. (df2au)


Lesenswert?

Hier:
http://www.ullihome.de/wiki/USBAVRLab/download
findest du alles, was du brauchst. Und es funktioniert sogar!

von F. F. (foldi)


Lesenswert?

Jörg Wunsch schrieb:

>
> Der verliert zwischendurch die Synchronisation.  Deine
> ISP-Verkabelung ist zu wackelig (zu lang, zu schlechte Leitungen,
> was auch immer). Sie funktioniert prinzipiell (zumindest im hier
> zitierten ersten Beispiel, später wohl gar nicht mehr), denn Fuses
> und Signatur ließen sich ja lesen.

Ich mache auch einige Zeit mit den Tiny13 rum und im Anfang ging alles 
gut, dann wieder nicht.
Letzten Endes war es die Spannungsversorgung. Die Tinys scheinen wohl 
deutlich empfindlicher auf die Spannungsversorgung zu reagieren. Wenn 
dann noch eine lange Leitung da dran ist, dann hatte ich zumindest die 
gleichen Probleme.
Für den 328ger war das kein Ding, aber war bei gleicher Konfiguration 
der Tiny im Zif, dann kamen genau solche Probleme.
Vielleicht schaust du mal nach deiner Spannung!
Auch "etwas" zu viel scheinen die nicht zu mögen.

von Peter S. (petershaw)


Lesenswert?

Hallo,

danke für die Tipps. Bisher hatte ich mit Austausch der Komponenten und 
verkürzen der Kabel noch keinen Erfolg.
Ich werde mir das die Tage nochmals auf dem Breadboard anschauen. 
Eventuell ist es ein Versuch wert eine externe Stromversorgung zu 
benutzen statt die aus dem USB-Port.

Lieben Dank,
ps

von Klaus I. (klauspi)


Lesenswert?

Sorry, wenn ich jetzt dumm frage. Ziemlich viel hier im Thread kann ich 
noch nicht verstehen.

Aber seitdem ich einen neuen PC mit Win 7 (64bit mit dem neuen PC) 
benutze habe ich mit ansonsten unveränderter Hardware auf einmal 
ähnliche Fehlermeldungen.

Ich benutze das Pollin board und flashe abwechselnd mit RS232 oder einen 
usbasp-clone.
Trotz Fehlermeldungen wird bei mir meistens das Programm richtig 
übertragen und funktioniert.

Mit einer bestimmten Schaltung die am Pollin-Board dranhing, konnt ich 
gar nicht mehr flashen, obwohl die identische Schaltung mit altem PC und 
Win 7 32bit problemlos war. Nach einigen Versuchen bin ich 
draufgekommen, entweder die Schaltung vom Pollin-Board zu entfernen oder 
manuell den Reset-Taster während des Flashen zu drücken und schon ist es 
wieder gegangen.

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.