<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
*sigh*<br>
<br>
It seems a combination of changing the placement of the chips in the
socket and some of the pins not being grounded (despite being
tristated in the chip) may be responsible for some (or a lot) of the
variation. I'll repeat the tests whe I get chance.<br>
<br>
(Also the same power supply was used - the voltages seem to be
stable around 5.18-5.22)<br>
<br>
James<br>
<br>
<div class="moz-cite-prefix">On 28/07/14 12:13, Simon Hollis wrote:<br>
</div>
<blockquote
cite="mid:CAGn6LBPK5kZy7F0ykrQ1f7rUE-dpHjwyqMgqh0PJ96NgpLdtqw@mail.gmail.com"
type="cite">
<div dir="ltr">Hi James,
<div><br>
</div>
<div>These are some really interesting results. The magnitude of
the variation is unexpected to me, and the inverse correlation
with temperature even more so.</div>
<div><br>
</div>
<div>
A couple of thoughts:</div>
<div><br>
</div>
<div>1) Was the same (USB) power source used on both days. A
higher supply voltage would give a higher power reading even
if everything else remained the same. We have the voltage
data, so can you check the voltage measurements on both
occasions.</div>
<div><br>
</div>
<div>2) Perhaps the oscillator crystal has a positive
temperature coefficient on frequency? So a hotter day would
lead to higher frequency operation and less leakage?</div>
<div><br>
</div>
<div>Simon</div>
</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">On 27 July 2014 18:24, James Pallister
<span dir="ltr"><<a moz-do-not-send="true"
href="mailto:James.Pallister@bristol.ac.uk"
target="_blank">James.Pallister@bristol.ac.uk</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Thanks.<br>
<br>
I've focussed on RAM/flash/ALU at the moment, since this
is likely what we will have to cope with when using the
compiler, in MAGEEC. Hopefully the variability that may
occur the other areas you list won't be affected by
compiler optimizations too much. However, for the purposes
of completeness I may extend the tests to do EEPROM and
some other peripheral access also.<br>
<br>
Cheers,<br>
James
<div>
<div class="h5"><br>
<br>
<div>On 27/07/14 17:56, Alex J Lennon wrote:<br>
</div>
<blockquote type="cite"> <br>
Ah OK. Thanks for the explanation. Very interesting
work. <br>
<br>
It occurs to me that there may be some interesting
results to be obtained from testing running, say,
repeated interrupts, running timers, access to
EEPROM, GPIO reads, ADC sampling and so forth?<br>
<br>
I guess it would depend what you're trying to look
at specifically.<br>
<br>
Thanks again,<br>
<br>
Alex<br>
<br>
<div>On 27/07/2014 17:47, James Pallister wrote:<br>
</div>
<blockquote type="cite">
<div>Ah yes, the flash tests were purely for read
access from different areas of flash, based on
the idea that there may be silicon variation
between parts of the address space.<br>
<br>
It was actually program execution from different
areas of flash, by putting a tight loop in a
specific area and measuring the power. For
example (flash1):<br>
<br>
<tt> .balign 2048</tt><tt><br>
</tt><tt> .rept 6 ; Change between 0,
6, 126, and 2046 for flash0, flash1, flash2,
and flash3</tt><tt><br>
</tt><tt> nop</tt><tt><br>
</tt><tt> .endr</tt><tt><br>
</tt><tt>loop:</tt><tt><br>
</tt><tt> nop</tt><tt><br>
</tt><tt> inc r16</tt><tt><br>
</tt><tt> cpse r0, r16</tt><tt><br>
</tt><tt> jmp loop</tt><tt><br>
</tt><br>
<br>
The procedure for each test:<br>
1. Invoke the bootloader, and upload program
code<br>
2. The program code runs, and toggles a pin to
trigger the energy measurement<br>
3. When the test is finished, the ATMEGA328
toggles the pin again to stop the measurement<br>
4. Measurement results are downloaded from the
energy measurement board.<br>
<br>
I haven't done any flash writing/erasing tests,
but I agree it would be interesting to do some.
I'd expect the power during a write/erase to be
much higher.<br>
<br>
Hope this helps,<br>
James<br>
<br>
On 27/07/14 17:32, Alex J Lennon wrote:<br>
</div>
<blockquote type="cite"> <br>
<div>On 27/07/2014 17:27, James Pallister wrote:<br>
</div>
<blockquote type="cite">
<div>No JTAG - the chips are flashed with a
bootloader, which is only active on chip
reset. Everything is programmed via a
USB-to-serial thingy.<br>
<br>
</div>
</blockquote>
<br>
Sorry, I don't think I'm understanding fully
James. So the flash area tests are via JTAG? I
guess that would mean that the test is a read
only test?<br>
<br>
(I'm just asking because I'm quite interested in
power utilisation during write/erase cycles vs
read. If you're not doing that could I suggest
it might be an interesting test?)<br>
<br>
BR. Alex<br>
<br>
<blockquote type="cite">
<div> On 27/07/14 17:25, Steve Kerrison wrote:<br>
</div>
<blockquote type="cite">
<p dir="ltr">Is JTAG connected during test
runs? Interested to know how much
difference that makes, although it should
be constant thus irrelevant.</p>
<div class="gmail_quote">On 27 Jul 2014
17:13, "James Pallister" <<a
moz-do-not-send="true"
href="mailto:James.Pallister@bristol.ac.uk"
target="_blank">James.Pallister@bristol.ac.uk</a>>
wrote:<br type="attribution">
<blockquote class="gmail_quote"
style="margin:0 0 0 .8ex;border-left:1px
#ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
Hi All,<br>
<br>
Some preliminary findings on
variations in the ATMEGA328 chips.<br>
<br>
I've tested 28 chips. For each chip 9
tests were ran:<br>
<br>
<table border="1" cellpadding="2"
cellspacing="2" width="733"
height="58">
<tbody>
<tr>
<td valign="top">flash0<br>
</td>
<td valign="top">Test the area
of flash 0x0800-0x0810<br>
</td>
</tr>
<tr>
<td valign="top">flash1<br>
</td>
<td valign="top">Test the area
of flash 0x080C-0x081C</td>
</tr>
<tr>
<td valign="top">flash2<br>
</td>
<td valign="top">Test the area
of flash 0x08FC-0x090C</td>
</tr>
<tr>
<td valign="top">flash3<br>
</td>
<td valign="top">Test the area
of flash 0x0FFC-0x100C</td>
</tr>
<tr>
<td valign="top">ram0<br>
</td>
<td valign="top">Repeatedly
access 0x0000 - 0x0020<br>
</td>
</tr>
<tr>
<td valign="top">ram1<br>
</td>
<td valign="top">Repeatedly
access 0xF007 - 0xF017<br>
</td>
</tr>
<tr>
<td valign="top">alu<br>
</td>
<td valign="top">Perform
combinations of mul, fmul, inc
and dec<br>
</td>
</tr>
<tr>
<td valign="top">nop<br>
</td>
<td valign="top">Lots of nops<br>
</td>
</tr>
<tr>
<td valign="top">branch<br>
</td>
<td valign="top">Repeatedly
branch randomly in low flash<br>
</td>
</tr>
</tbody>
</table>
<br>
Each test was run 8 times, and
outliers excluded. All were run in the
same harness, with the same crystal,
resistors, etc.<br>
<br>
Results across each test. These show
the distributions of the measurements
taken, where the distribution consists
of the 28 chips.<br>
<img
src="cid:part3.09020302.08040303@bristol.ac.uk"
alt=""><br>
<br>
From the first graph: there is a
significant different, even on a day
to day basis. I'm not sure what causes
this - I'd expect the power to be
lower at lower temperatures, which we
don't see.<br>
<br>
For each chip:<br>
<img
src="cid:part4.01070807.02090509@bristol.ac.uk"
alt=""><br>
Mean power for each chip:<br>
<img
src="cid:part5.04030605.07020601@bristol.ac.uk"
alt=""><br>
<br>
<br>
The average power changes quite a lot,
going from < 80mW to > 100mW. In
almost all cases, the average power
was higher on Saturday - not sure why
this is, the temperature difference
was only 3-4 degrees (and I'd expect
the temperature to go down with lower
temperature).<br>
<br>
The chips tend to vary as a whole,
e.g. rather than the ALU varying
significantly in one part rather than
another. The following graph marks the
average power for each test, divided
by test type (different color/marker
combinations) per chip. This should
allow hopefully allow us to do a
calibration run first.<br>
<img
src="cid:part6.00020006.03040108@bristol.ac.uk"
alt=""><br>
Legend for the above graph:<br>
<table border="1" cellpadding="2"
cellspacing="2" width="318"
height="58">
<tbody>
<tr>
<td valign="top">Blue cross<br>
</td>
<td valign="top">ram1<br>
</td>
</tr>
<tr>
<td valign="top">Red star<br>
</td>
<td valign="top">ram0<br>
</td>
</tr>
<tr>
<td valign="top">Green plus<br>
</td>
<td valign="top">alu<br>
</td>
</tr>
<tr>
<td valign="top">Black plus<br>
</td>
<td valign="top">flash3<br>
</td>
</tr>
<tr>
<td valign="top">Green cross<br>
</td>
<td valign="top">flash2<br>
</td>
</tr>
<tr>
<td valign="top">Blue star<br>
</td>
<td valign="top">flash1<br>
</td>
</tr>
<tr>
<td valign="top">Red plus<br>
</td>
<td valign="top">flash0<br>
</td>
</tr>
<tr>
<td valign="top">Black star<br>
</td>
<td valign="top">nop<br>
</td>
</tr>
</tbody>
</table>
<br>
<br>
Any thoughts / ideas for more tests
are welcome.<br>
<br>
<br>
James<br>
</div>
</blockquote>
</div>
</blockquote>
<br>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
mageec mailing list
<a moz-do-not-send="true" href="mailto:mageec@mageec.org" target="_blank">mageec@mageec.org</a>
<a moz-do-not-send="true" href="http://mageec.org/cgi-bin/mailman/listinfo/mageec" target="_blank">http://mageec.org/cgi-bin/mailman/listinfo/mageec</a>
</pre>
</blockquote>
</blockquote>
</blockquote>
<div>
<div> </div>
</div>
</blockquote>
<br>
</div>
</div>
</div>
<br>
_______________________________________________<br>
mageec mailing list<br>
<a moz-do-not-send="true" href="mailto:mageec@mageec.org">mageec@mageec.org</a><br>
<a moz-do-not-send="true"
href="http://mageec.org/cgi-bin/mailman/listinfo/mageec"
target="_blank">http://mageec.org/cgi-bin/mailman/listinfo/mageec</a><br>
<br>
</blockquote>
</div>
<br>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
mageec mailing list
<a class="moz-txt-link-abbreviated" href="mailto:mageec@mageec.org">mageec@mageec.org</a>
<a class="moz-txt-link-freetext" href="http://mageec.org/cgi-bin/mailman/listinfo/mageec">http://mageec.org/cgi-bin/mailman/listinfo/mageec</a>
</pre>
</blockquote>
<br>
</body>
</html>