Forum: Mikrocontroller und Digitale Elektronik AtTiny2313 mit "avrdude" keine Verbindung mehr


von Simson (Gast)


Lesenswert?

hallo,

wir haben in der schule ein eval-board gebaut mit einem AtTiny2313 als 
MC,
einem Display, Tastern,...

Programmer: Ponyser

Bis vor kurzem konnte ich diesen MC problemlos programmieren seit kurzem 
gibt mir AVRDUDE folgende Fehlermeldungen bei sämtlichen Aktionen (Flash 
schreiben/lesen, Fuses schreiben/lesen):
1
avrdude: AVR device not responding
2
avrdude: initialization failed, rc=-1

kann es sein, dass meine avrdude.conf kaputt ist?
hier die ensprechenden Zeilena us der avrdude.conf
1
#------------------------------------------------------------
2
# ATtiny2313
3
#------------------------------------------------------------
4
5
part
6
     id            = "t2313";
7
     desc          = "ATtiny2313";
8
     has_debugwire = yes;
9
     flash_instr   = 0xB2, 0x0F, 0x1F;
10
     eeprom_instr  = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
11
               0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC,
12
               0x99, 0xE1, 0xBB, 0xAC;
13
     stk500_devcode   = 0x23;
14
##   Use the ATtiny26 devcode:
15
     avr910_devcode   = 0x5e;
16
     signature        = 0x1e 0x91 0x0a;
17
     pagel            = 0xD4;
18
     bs2              = 0xD6;
19
     reset            = io;
20
     chip_erase_delay = 9000;
21
22
     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
23
                        "x x x x  x x x x    x x x x  x x x x";
24
25
     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
26
                        "x x x x  x x x x    x x x x  x x x x";
27
28
    timeout    = 200;
29
    stabdelay    = 100;
30
    cmdexedelay    = 25;
31
    synchloops    = 32;
32
    bytedelay    = 0;
33
    pollindex    = 3;
34
    pollvalue    = 0x53;
35
    predelay    = 1;
36
    postdelay    = 1;
37
    pollmethod    = 1;
38
39
    pp_controlstack     =
40
        0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E,
41
        0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E,
42
        0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A,
43
        0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
44
    hventerstabdelay    = 100;
45
    progmodedelay       = 0;
46
    latchcycles         = 5;
47
    togglevtg           = 1;
48
    poweroffdelay       = 15;
49
    resetdelayms        = 1;
50
    resetdelayus        = 0;
51
    hvleavestabdelay    = 15;
52
    chiperasepulsewidth = 0;
53
    chiperasepolltimeout = 10;
54
    programfusepulsewidth = 0;
55
    programfusepolltimeout = 5;
56
    programlockpulsewidth = 0;
57
    programlockpolltimeout = 5;
58
59
     memory "eeprom"
60
         size            = 128;
61
        paged           = no;
62
        page_size       = 4;
63
         min_write_delay = 4000;
64
         max_write_delay = 4500;
65
         readback_p1     = 0xff;
66
         readback_p2     = 0xff;
67
         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x x",
68
                           "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
69
70
         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x x",
71
                           "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
72
73
  loadpage_lo  = "  1   1   0   0      0   0   0   1",
74
        "  0   0   0   0      0   0   0   0",
75
        "  0   0   0   0      0   0  a1  a0",
76
        "  i   i   i   i      i   i   i   i";
77
78
  writepage  = "  1   1   0   0      0   0   1   0",
79
        "  0   0   x   x      x   x   x   x",
80
        "  x  a6  a5  a4     a3  a2   0   0",
81
        "  x   x   x   x      x   x   x   x";
82
83
  mode    = 0x41;
84
  delay    = 6;
85
  blocksize  = 4;
86
  readsize  = 256;
87
       ;
88
     memory "flash"
89
         paged           = yes;
90
         size            = 2048;
91
         page_size       = 32;
92
         num_pages       = 64;
93
         min_write_delay = 4500;
94
         max_write_delay = 4500;
95
         readback_p1     = 0xff;
96
         readback_p2     = 0xff;
97
         read_lo         = "  0   0   1   0    0   0   0   0",
98
                           "  0   0   0   0    0   0  a9  a8",
99
                           " a7  a6  a5  a4   a3  a2  a1  a0",
100
                           "  o   o   o   o    o   o   o   o";
101
102
         read_hi         = "  0   0   1   0    1   0   0   0",
103
                           "  0   0   0   0    0   0  a9  a8",
104
                           " a7  a6  a5  a4   a3  a2  a1  a0",
105
                           "  o   o   o   o    o   o   o   o";
106
107
# The information in the data sheet of April/2004 is wrong, this works:
108
         loadpage_lo     = "  0   1   0   0    0   0   0   0",
109
                           "  0   0   0   x    x   x   x   x",
110
                           "  x   x   x   x   a3  a2  a1  a0",
111
                           "  i   i   i   i    i   i   i   i";
112
113
# The information in the data sheet of April/2004 is wrong, this works:
114
         loadpage_hi     = "  0   1   0   0    1   0   0   0",
115
                           "  0   0   0   x    x   x   x   x",
116
                           "  x   x   x   x   a3  a2  a1  a0",
117
                           "  i   i   i   i    i   i   i   i";
118
119
# The information in the data sheet of April/2004 is wrong, this works:
120
         writepage       = "  0  1  0  0   1  1  0  0",
121
                           "  0  0  0  0   0  0 a9 a8",
122
                           " a7 a6 a5 a4   x  x  x  x",
123
                           "  x  x  x  x   x  x  x  x";
124
125
  mode    = 0x41;
126
  delay    = 6;
127
  blocksize  = 32;
128
  readsize  = 256;
129
       ;
130
#   ATtiny2313 has Signature Bytes: 0x1E 0x91 0x0A.
131
     memory "signature"
132
         size            = 3;
133
         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
134
                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
135
       ;
136
     memory "lock"
137
         size            = 1;
138
         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
139
                           "x x x x  x x x x  1 1 i i  i i i i";
140
         read           = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
141
                          "x x x x  x x x x  x x o o  o o o o";
142
        min_write_delay = 9000;
143
        max_write_delay = 9000;
144
       ;
145
146
     memory "lfuse"
147
         size            = 1;
148
         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
149
                           "x x x x  x x x x  i i i i  i i i i";
150
151
         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
152
                           "x x x x  x x x x  o o o o  o o o o";
153
        min_write_delay = 9000;
154
        max_write_delay = 9000;
155
       ;
156
157
     memory "hfuse"
158
         size            = 1;
159
         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
160
                           "x x x x  x x x x  i i i i  i i i i";
161
162
         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
163
                           "x x x x  x x x x  o o o o  o o o o";
164
        min_write_delay = 9000;
165
        max_write_delay = 9000;
166
       ;
167
168
     memory "efuse"
169
         size            = 1;
170
         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
171
                           "x x x x  x x x x  x x x x  x x x i";
172
173
         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
174
                           "x x x x  x x x x  o o o o  o o o o";
175
        min_write_delay = 9000;
176
        max_write_delay = 9000;
177
     ;
178
# The Tiny2313 has calibration data for both 4 MHz and 8 MHz.
179
# The information in the data sheet of April/2004 is wrong, this works:
180
181
     memory "calibration"
182
         size            = 2;
183
         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
184
                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
185
     ;
186
  ;

und für "ponyser"
1
programmer
2
  id    = "ponyser";
3
  desc  = "design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts";
4
  type  = serbb;
5
  reset = ~3;
6
  sck   = 7;
7
  mosi  = 4;
8
  miso  = 8;
9
;

Kann es daran liegen, dass die Fuses falsch gesetzt sind?
Kann man den AtTiny2313 auch in den Werksmodus zurücksetzten?
Oder ist der AtTiny2313 kaputt?

Ich bin noch Anfänger in diesem Thema, also verzeiht es mir, wenn banale 
Fragen dabei sind.

von TestX .. (xaos)


Lesenswert?

kein quarz angeschlossen ?

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


Lesenswert?

Simson schrieb:
> Kann es daran liegen, dass die Fuses falsch gesetzt sind?

Das ist das Wahrscheinlichste.  Weißt du denn noch, was du als
letztes damit getan hast?

> Kann man den AtTiny2313 auch in den Werksmodus zurücksetzten?

Man kann ihn mittels einer sogenannten Hochspannungsprogrammierung
(HV programming) in jedem Falle noch programmieren (und damit die
Fuses korrigieren), solange er insgesamt noch intakt ist.  Die
"Hochspannung" bezieht sich dabei auf 12 V, die an /RESET anzulegen
sind, aber insgesamt ist das dafür notwendige Programmierprotokoll
so verschieden vom ISP-Protokoll, dass man dafür ein eigenes
Programmiergerät benötigt; dein "ponyser" kannst du dafür nicht
benutzen.  Geeignet wären ein STK500, STK600 oder AVR Dragon.

Wenn nur die Fuse für die Takteinstellung "vergurkt" ist, kann es
oft genügen, dass man an XTAL1 einen externen Takt von vielleicht
1 MHz einspeist.

von Simson (Gast)


Lesenswert?

wenn ich das richtig verstehe ist das wahrscheinlichste, dass der Takt 
nicht passt.
Ich benutze einen externen 10MHz Quarz, also ist dieser vermutlich 
kaputt?
Gibt es eine Möglichkeit die 1MHz ohne Laborgeräte zu erzeugen?

Vielen Dank für die schnelle Hilfe

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


Lesenswert?

Simson schrieb:
> Gibt es eine Möglichkeit die 1MHz ohne Laborgeräte zu erzeugen?

Viele. ;-)  Das beginnt mit einem einfachen astabilen Multivibrator
aus paar Transistoren, über einen NE555 mit etwas externer Beschaltung,
bis hin zu einem weiteren Controller, den man (bspw. mit einem Timer)
so beschaltet, dass er an einem Ausgang einen Takt erzeugt.

von Simson (Gast)


Lesenswert?

danke für den Tipp
ich hab jetzt mit einem anderen Controller 1MHz an XTAL1 angelegt, doch 
auch das tut nicht. Heißt das, dass der AtTiny2313 kaputt ist? Soll ich 
einen neuen kaufen? Oder gibt es noch andere Möglichkeiten den Tiny 
eventuell wieder zum Laufen zu bringen, die ich auch zu Hause ohne 
Laborgeräte durchführen kann.
MfG Simson

von TestX .. (xaos)


Lesenswert?

Simson schrieb:
> danke für den Tipp
> ich hab jetzt mit einem anderen Controller 1MHz an XTAL1 angelegt, doch
> auch das tut nicht. Heißt das, dass der AtTiny2313 kaputt ist? Soll ich
> einen neuen kaufen? Oder gibt es noch andere Möglichkeiten den Tiny
> eventuell wieder zum Laufen zu bringen, die ich auch zu Hause ohne
> Laborgeräte durchführen kann.
> MfG Simson

kauf dir nen neuen und spar die die arbeit...ohne vernünftiges equipment 
macht das keinen spaß ;)

von Max D. (Firma: No RISC, no fun.) (metalfan)


Lesenswert?

kosten der wiedererweckung > 5€, kosten neuer tiny <1,50 € -> lass es
wenn´s unbedingt sein muss, dass der wiederbelebt wird, hier ne rel. 
einfache HV-Progger anleitung (nich von mir, aber gut um zu sehen wie 
sinnlos des wegen 1nem tiny is da rumzueiern):
http://www.instructables.com/id/How-to-fix-dead-atmega-and-attiny-avr-chips/

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


Lesenswert?

Simson schrieb:
> die ich auch zu Hause ohne
> Laborgeräte durchführen kann.

Nun, einen AVR Dragon würde ich nicht als "Laborgerät" bezeichnen.
Wenn du dir so ein Teil leisten kannst, wäre es eine lohnende
Investition.  Nicht, um die wenigen Euros für den verfuseten
ATtiny2313 zu sparen, sondern:

. er taugt als Programmiergerät meilenweit besser als dein
  Billigstaufbau mit dem "ponyser"

. du kannst lernen, wie man überhaupt die HV-Programmierung angeht,
  mit der man jeden AVR als "letzte Reserve" immer wieder ansprechen
  kann, solange er nicht kaputt ist; das ist insbesondere dann
  interessant, wenn du mal in die Verlegenheit kommen solltest, bei
  einem AVR auch noch die /RESET-Leitung als IO-Pin definieren zu
  wollen (indem man die RSTDSBL-Fuse setzt); dein ATtiny2313 wäre nur
  ein sinnvoller Kandidat dafür

. du kannst mittels debugWIRE deinen AVR online debuggen (bzw. die
  größeren ATmegas via JTAG)

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.