Go Down

Topic: UsbTinyISP from IDE (Read 1 time) previous topic - next topic

common_ground

Oct 17, 2014, 06:54 pm Last Edit: Oct 17, 2014, 08:08 pm by common_ground Reason: 1
Well, i have problem with UsbTinyISP only from Arduino IDE ( 1.05 and 1.06 ) and only from  Win7 with:
Code: [Select]
avrdude verification error content mismatch
About 9/10 flash trials is verification error , but its ok in about 10%. There is no specific rules sometime its more success and sometime i have only upload fails.

From console on same pc same OS , same avrdude , same avrdude.conf everything is fine ( verification ok) :
Code: [Select]
avrdude -c usbtiny -p t85 -U flash:w:ATTiny_Basic_Draw.cpp.hex

From WinXP on other  PC from Arduino IDE  1.05 its fine.
On Linux , same PC , same Arduino IDE (only Linux version of course) its complete success i have never see verification error.

Must be some additional option that ArduinoIDE do when call avrdude on win7 , but i dont know what is the difference. If anyone have resolved that issue will be great. Thanks.

update:
And sometimes report verification error but sketch work fine and sometimes uploaded sketch work, but not correctly. And as i said only from IDE on Win7.

ps.
Sorry for language mistake i make. English its not my native language.

hiduino

The verification errors are due to the avrdude.conf file errors for the attiny85 definition.  You will need to edit the avrdude.conf file in the IDE install.

Under \arduino-1.0.6\hardware\tools\avr\etc\avrdude.conf:
This is the diff patch file needed:
Code: [Select]

--- avrdude.conf.orig      Wed Aug 20 12:55:40 2014
+++ avrdude.conf       Wed Aug 20 12:55:40 2014
@@ -10894,7 +10893,7 @@
      avr910_devcode   = 0x20;
      signature        = 0x1e 0x93 0x0b;
      reset            = io;
-     chip_erase_delay = 4500;
+     chip_erase_delay = 400000;

      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";
@@ -10929,7 +10928,7 @@
     hvleavestabdelay    = 100;
     resetdelay          = 25;
     chiperasepolltimeout = 40;
-    chiperasetime       = 0;
+    chiperasetime       = 400000;
     programfusepolltimeout = 25;
     programlockpolltimeout = 25;

@@ -10958,7 +10957,7 @@
                          "  x   x   x   x      x   x   x   x";

        mode            = 0x41;
-       delay           = 6;
+       delay           = 12;
        blocksize       = 4;
        readsize        = 256;
        ;
@@ -10967,8 +10966,8 @@
          size            = 8192;
          page_size       = 64;
          num_pages       = 128;
-         min_write_delay = 4500;
-         max_write_delay = 4500;
+         min_write_delay = 30000;
+         max_write_delay = 30000;
          readback_p1     = 0xff;
          readback_p2     = 0xff;
          read_lo         = "  0   0   1   0    0   0   0   0",


If you don't know how to patch, here is the full attiny85 definition replacement:
Code: [Select]

#------------------------------------------------------------
# ATtiny85
#------------------------------------------------------------
part
     id            = "t85";
     desc          = "ATtiny85";
     has_debugwire = yes;
     flash_instr   = 0xB4, 0x02, 0x12;
     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
                     0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
                     0x99, 0xE1, 0xBB, 0xAC;
## no STK500 devcode in XML file, use the ATtiny45 one
     stk500_devcode   = 0x14;
##  avr910_devcode   = ?;
##  Try the AT90S2313 devcode:
     avr910_devcode   = 0x20;
     signature        = 0x1e 0x93 0x0b;
     reset            = io;
     chip_erase_delay = 400000;

     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;

    hvsp_controlstack   =
        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
    hventerstabdelay    = 100;
    hvspcmdexedelay     = 0;
    synchcycles         = 6;
    latchcycles         = 1;
    togglevtg           = 1;
    poweroffdelay       = 25;
    resetdelayms        = 1;
    resetdelayus        = 0;
    hvleavestabdelay    = 100;
    resetdelay          = 25;
    chiperasepolltimeout = 40;
    chiperasetime       = 400000;
    programfusepolltimeout = 25;
    programlockpolltimeout = 25;

     memory "eeprom"
         size            = 512;
        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 a8",
                           "a7 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 a8",
                           "a7 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  a8",
                          " a7  a6  a5  a4     a3  a2   0   0",
                          "  x   x   x   x      x   x   x   x";

        mode            = 0x41;
        delay           = 12;
        blocksize       = 4;
        readsize        = 256;
       ;
     memory "flash"
         paged           = yes;
         size            = 8192;
         page_size       = 64;
         num_pages       = 128;
         min_write_delay = 30000;
         max_write_delay = 30000;
         readback_p1     = 0xff;
         readback_p2     = 0xff;
         read_lo         = "  0   0   1   0    0   0   0   0",
                           "  0   0   0   0  a11 a10  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  a11 a10  a9  a8",
                           " a7  a6  a5  a4   a3  a2  a1  a0",
                           "  o   o   o   o    o   o   o   o";

         loadpage_lo     = "  0   1   0   0    0   0   0   0",
                           "  0   0   0   x    x   x   x   x",
                           "  x   x   x  a4   a3  a2  a1  a0",
                           "  i   i   i   i    i   i   i   i";

         loadpage_hi     = "  0   1   0   0    1   0   0   0",
                           "  0   0   0   x    x   x   x   x",
                           "  x   x   x  a4   a3  a2  a1  a0",
                           "  i   i   i   i    i   i   i   i";

         writepage       = "  0  1  0  0   1   1   0  0",
                           "  0  0  0  0  a11 a10 a9 a8",
                           " a7 a6 a5  x   x  x  x  x",
                           "  x  x  x  x   x  x  x  x";

        mode            = 0x41;
        delay           = 6;
        blocksize       = 32;
        readsize        = 256;
       ;
#   ATtiny85 has Signature Bytes: 0x1E 0x93 0x08.
     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";
        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;
     ;

     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";
     ;
  ;

common_ground

Thats it :) Works now perfectly.
Thank you  hiduino.
So it was flash timing problem, it is strange that only flashing from IDE on win7 is problem, but doesn't matter - works now.

common_ground

#3
Oct 19, 2014, 06:22 pm Last Edit: Oct 19, 2014, 06:41 pm by common_ground Reason: 1
Well, same problem with ATtiny13 and i change timings similar like hiduino do for Attiny85 and now works fine from Arduino IDE on win7.
In \arduino-1.0.6\hardware\tools\avr\etc\avrdude.conf:
modified ATtiny13 part in avrdude.conf:

Code: [Select]
#------------------------------------------------------------
# ATtiny13
#------------------------------------------------------------

part
   id                  = "t13";
   desc                = "ATtiny13";
    has_debugwire = yes;
    flash_instr   = 0xB4, 0x0E, 0x1E;
    eeprom_instr  = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
            0xBC, 0x0E, 0xB4, 0x0E, 0xBA, 0x0D, 0xBB, 0xBC,
            0x99, 0xE1, 0xBB, 0xAC;
   stk500_devcode      = 0x14;
   signature           = 0x1e 0x90 0x07;
   chip_erase_delay    = 400000;
   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;

   hvsp_controlstack     =
0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
       0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
       0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
       0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
   hventerstabdelay    = 100;
   progmodedelay       = 0;
   hvspcmdexedelay     = 0;
   synchcycles         = 6;
   latchcycles         = 1;
   togglevtg           = 1;
   poweroffdelay       = 25;
   resetdelayms        = 0;
   resetdelayus        = 90;
   hvleavestabdelay    = 100;
   resetdelay          = 25;
   chiperasepolltimeout = 40;
   chiperasetime       = 400000;
   programfusepolltimeout = 25;
   programlockpolltimeout = 25;

   memory "eeprom"
       size            = 64;
       page_size       = 4;
       min_write_delay = 4000;
       max_write_delay = 4000;
       readback_p1     = 0xff;
       readback_p2     = 0xff;
       read            = "1  0  1  0   0  0  0  0    0 0 0 x  x x x x",
                         "x  x 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  x 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   x  a5  a4     a3  a2   0   0",
 "  x   x   x   x      x   x   x   x";

mode = 0x41;
delay = 5;
blocksize = 4;
readsize = 256;
   ;

   memory "flash"
       paged           = yes;
       size            = 1024;
       page_size       = 32;
       num_pages       = 32;
       min_write_delay = 30000;
       max_write_delay = 30000;
       readback_p1     = 0xff;
       readback_p2     = 0xff;
       read_lo         = "  0  0  1  0   0  0  0  0",
                         "  0  0  0  0   0  0  0 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  0 a8",
                         " a7 a6 a5 a4  a3 a2 a1 a0",
                         "  o  o  o  o   o  o  o  o";

       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";

       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";

       writepage       = "  0  1  0  0   1  1  0  0",
                         "  0  0  0  0   0  0  0 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;
   ;

   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;
       min_write_delay = 4500;
       max_write_delay = 4500;

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";

       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";
   ;

   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";
   ;

   memory "lfuse"
       size            = 1;
       min_write_delay = 4500;
       max_write_delay = 4500;

       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";
     ;

   memory "hfuse"
       size            = 1;
       min_write_delay = 4500;
       max_write_delay = 4500;

       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";
     ;

;


It works fine but if anyone knows that something  else must be corrected for ATtiny13 , please post it.

jsbuggy1

I am having the exact same issues as described on this page using an Arduino UNO R3 with 328P chip.  I have spent hours trying to modify my avrdude.conf file.  I have not gotten it to work any better.  My issue is verbatim what common_ground was having.

I have tried multiple computers, multiple OS (win7 & winXP), multiple USB cables, different USB ports, different UNO R3's, etc.

The programmer works 100% of the time on all computers using avrdude command line from the Arduino directory. 

One computer 100% fail using the 1.0.6 IDE to program through avrdude.  Another computer about 50/50 success/fail using the same method.

Something in the 1.0.6 IDE must be configuring avrdude wrong.  I just havn't figured it out yet.

Can someone please help me with this. 

Thanks

hiduino

The flash timing is different for the mega328p than the tiny avr mcu, so I think this could be a different problem.  Most often the verification issues to an Arduino Uno m328p is due to connection problems or clocking problems to the target avr mcu.

You will need to provide more details of what kind of programmer you are using?  What kind of target device, Arduino board or breadboard or whatever?  The exact error messages.  What ever details you can provide the better.

Go Up