avrdude-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[avrdude-dev] [bug #34027] avrdude AT90S1200 Problem


From: Joerg Wunsch
Subject: [avrdude-dev] [bug #34027] avrdude AT90S1200 Problem
Date: Mon, 29 Aug 2011 09:45:10 +0000
User-agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.0.19) Gecko/2010071610 Firefox/3.0.19

Update of bug #34027 (project avrdude):

                  Status:               Confirmed => In Progress            
             Assigned to:                    None => joerg_wunsch           

    _______________________________________________________

Follow-up Comment #3:

Things are pretty mysterious with this ancient device.

The analysis from comment #2 applies to modern programmers (like the
AVRISPmkII) which apparently nobody has ever been testing with an
AT90S1200 before.

Bitbang programmers, however, have been in extensive use back in the
days of the AT90S1200, and they used to work with AVRDUDE quite fine.
Now, there are programming failures where the high byte of a
particular cell always has more bits written than desired.  Reducing
the ISP speed (way below the allowable one!) remedies the situation,
but as the logic analyzer shows no glitches or other time-dependent
signal distortions, this could not be the solution.  (The logic
analyzer traces reflect the -vvvv data 100 %.)

The failure always happens in a pattern like this:

001: bitbang_cmd(): [ 20 00 0B 00 ] [ 00 20 01 FF ]
002: bitbang_cmd(): [ 40 00 0B F9 ] [ 00 40 00 0B ]
003: bitbang_cmd(): [ 20 00 0B 00 ] [ F9 20 01 FF ]
004: bitbang_cmd(): [ 20 00 0B 00 ] [ 00 20 01 F9 ]
005: bitbang_cmd(): [ 28 00 0B 00 ] [ 00 28 01 F9 ]
006: bitbang_cmd(): [ 48 00 0B CF ] [ 00 48 00 0B ]
007: bitbang_cmd(): [ 28 00 0B 00 ] [ CF 28 01 FF ]
008: bitbang_cmd(): [ 28 00 0B 00 ] [ 00 28 01 C9 ]
009: bitbang_cmd(): [ 28 00 0B 00 ] [ 00 28 01 C9 ]
010: bitbang_cmd(): [ 28 00 0B 00 ] [ 00 28 01 C9 ]
011: bitbang_cmd(): [ 28 00 0B 00 ] [ 00 28 01 C9 ]
012: bitbang_cmd(): [ 28 00 0B 00 ] [ 00 28 01 C9 ]

In line 1, the low byte of cell 0x0b (i.e. address 0x16) is tested,
and yields 0xff (erased).  Then (line 2), this byte is written to
0xF9, and polled (lines 3 and 4) until it returns 0xF9.

In line 5, the high byte of cell 0x0b (address 0x17) is tested (to see
whether it already contains the desired value), and this byte is
returned as 0xf9 rather than the expected 0xff for an erased byte.
Subsequently (line 6), it is attempted to be programmed to 0xcf, and
the result of the write operation is polled (lines 7 through 12 and
beyond).  While line 7 still shows it as 0xff (erased), all further
polls yield the ANDed value between the 0xf9 from the low byte, and
the 0xcf from the desired high byte = 0xc9.  I have no idea *why* that
happens, but leaving out the pre-write test avoids that problem, so I
implemented a respective workaround for the AT90S1200.

Part 2 of the problem, the requirement to release /RESET after a chip
erase for non-bitbang programmers, has not been fixed yet, but the
current SVN version should make it work with bitbang programmers
again.


    _______________________________________________________

Reply to this item at:

  <http://savannah.nongnu.org/bugs/?34027>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.nongnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]