mikrocontroller.net

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


Autor: Simson (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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):
avrdude: AVR device not responding
avrdude: initialization failed, rc=-1

kann es sein, dass meine avrdude.conf kaputt ist?
hier die ensprechenden Zeilena us der avrdude.conf
#------------------------------------------------------------
# ATtiny2313
#------------------------------------------------------------

part
     id            = "t2313";
     desc          = "ATtiny2313";
     has_debugwire = yes;
     flash_instr   = 0xB2, 0x0F, 0x1F;
     eeprom_instr  = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
               0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC,
               0x99, 0xE1, 0xBB, 0xAC;
     stk500_devcode   = 0x23;
##   Use the ATtiny26 devcode:
     avr910_devcode   = 0x5e;
     signature        = 0x1e 0x91 0x0a;
     pagel            = 0xD4;
     bs2              = 0xD6;
     reset            = io;
     chip_erase_delay = 9000;

     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
                        "x x x x  x x x x    x x x x  x x x x";

     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
                        "x x x x  x x x x    x x x x  x x x x";

    timeout    = 200;
    stabdelay    = 100;
    cmdexedelay    = 25;
    synchloops    = 32;
    bytedelay    = 0;
    pollindex    = 3;
    pollvalue    = 0x53;
    predelay    = 1;
    postdelay    = 1;
    pollmethod    = 1;

    pp_controlstack     =
        0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E,
        0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E,
        0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A,
        0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
    hventerstabdelay    = 100;
    progmodedelay       = 0;
    latchcycles         = 5;
    togglevtg           = 1;
    poweroffdelay       = 15;
    resetdelayms        = 1;
    resetdelayus        = 0;
    hvleavestabdelay    = 15;
    chiperasepulsewidth = 0;
    chiperasepolltimeout = 10;
    programfusepulsewidth = 0;
    programfusepolltimeout = 5;
    programlockpulsewidth = 0;
    programlockpolltimeout = 5;

     memory "eeprom"
         size            = 128;
        paged           = no;
        page_size       = 4;
         min_write_delay = 4000;
         max_write_delay = 4500;
         readback_p1     = 0xff;
         readback_p2     = 0xff;
         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x x",
                           "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";

         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x x",
                           "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";

  loadpage_lo  = "  1   1   0   0      0   0   0   1",
        "  0   0   0   0      0   0   0   0",
        "  0   0   0   0      0   0  a1  a0",
        "  i   i   i   i      i   i   i   i";

  writepage  = "  1   1   0   0      0   0   1   0",
        "  0   0   x   x      x   x   x   x",
        "  x  a6  a5  a4     a3  a2   0   0",
        "  x   x   x   x      x   x   x   x";

  mode    = 0x41;
  delay    = 6;
  blocksize  = 4;
  readsize  = 256;
       ;
     memory "flash"
         paged           = yes;
         size            = 2048;
         page_size       = 32;
         num_pages       = 64;
         min_write_delay = 4500;
         max_write_delay = 4500;
         readback_p1     = 0xff;
         readback_p2     = 0xff;
         read_lo         = "  0   0   1   0    0   0   0   0",
                           "  0   0   0   0    0   0  a9  a8",
                           " a7  a6  a5  a4   a3  a2  a1  a0",
                           "  o   o   o   o    o   o   o   o";

         read_hi         = "  0   0   1   0    1   0   0   0",
                           "  0   0   0   0    0   0  a9  a8",
                           " a7  a6  a5  a4   a3  a2  a1  a0",
                           "  o   o   o   o    o   o   o   o";

# The information in the data sheet of April/2004 is wrong, this works:
         loadpage_lo     = "  0   1   0   0    0   0   0   0",
                           "  0   0   0   x    x   x   x   x",
                           "  x   x   x   x   a3  a2  a1  a0",
                           "  i   i   i   i    i   i   i   i";

# The information in the data sheet of April/2004 is wrong, this works:
         loadpage_hi     = "  0   1   0   0    1   0   0   0",
                           "  0   0   0   x    x   x   x   x",
                           "  x   x   x   x   a3  a2  a1  a0",
                           "  i   i   i   i    i   i   i   i";

# The information in the data sheet of April/2004 is wrong, this works:
         writepage       = "  0  1  0  0   1  1  0  0",
                           "  0  0  0  0   0  0 a9 a8",
                           " a7 a6 a5 a4   x  x  x  x",
                           "  x  x  x  x   x  x  x  x";

  mode    = 0x41;
  delay    = 6;
  blocksize  = 32;
  readsize  = 256;
       ;
#   ATtiny2313 has Signature Bytes: 0x1E 0x91 0x0A.
     memory "signature"
         size            = 3;
         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
       ;
     memory "lock"
         size            = 1;
         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
                           "x x x x  x x x x  1 1 i i  i i i i";
         read           = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
                          "x x x x  x x x x  x x o o  o o o o";
        min_write_delay = 9000;
        max_write_delay = 9000;
       ;

     memory "lfuse"
         size            = 1;
         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
                           "x x x x  x x x x  i i i i  i i i i";

         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
                           "x x x x  x x x x  o o o o  o o o o";
        min_write_delay = 9000;
        max_write_delay = 9000;
       ;

     memory "hfuse"
         size            = 1;
         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
                           "x x x x  x x x x  i i i i  i i i i";

         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
                           "x x x x  x x x x  o o o o  o o o o";
        min_write_delay = 9000;
        max_write_delay = 9000;
       ;

     memory "efuse"
         size            = 1;
         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
                           "x x x x  x x x x  x x x x  x x x i";

         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
                           "x x x x  x x x x  o o o o  o o o o";
        min_write_delay = 9000;
        max_write_delay = 9000;
     ;
# The Tiny2313 has calibration data for both 4 MHz and 8 MHz.
# The information in the data sheet of April/2004 is wrong, this works:

     memory "calibration"
         size            = 2;
         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
     ;
  ;

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

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.

Autor: Andi ... (xaos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kein quarz angeschlossen ?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Simson (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Simson (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andi ... (xaos)
Datum:

Bewertung
0 lesenswert
nicht 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ß ;)

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

Bewertung
0 lesenswert
nicht 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-at...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.