Added docs

This commit is contained in:
sebastian 2011-10-18 14:23:23 +02:00
parent 7b50230314
commit 5e8fc21a11
12 changed files with 1513 additions and 8 deletions

132
doc/doc.html Normal file
View File

@ -0,0 +1,132 @@
<html>
<head>
<title>RingLock for AVR Microcontrollers</title>
</head>
<body>
<h1>RingLock</h1>
<h2>How it started</h2>
After reading about <a href="http://piclock.wordpress.com/2010/10/08/picloc/">PIClock4</a>
a inter-microcontroller mutex on <a href="http://dangerousprototypes.com/2011/09/26/piclock4-inter-microcontroller-mutex/">dangerousprototypes.com</a>,
I got curious about the actual implementation.<br/>
It uses shift registers to pass a token in form of just a single bit around.<br/>
Once the token arrives at a mcu that needs access to the resource, the mcu can stop the shifting.<br/>
After having done whatever it needs the resource for, it can start the shifting again.<br/>
Unfortunately the schematic files were down, so I had to ask for them.<br/>
The marker of piclock told me that his project was just for fun and never intended for actual usage.<br/>
Because of the huge amount of logic chips needed he suggested rather using a arduino/atmega328 to emulate the hardware in software.<br/>
That's what got me thinking initially.<br/>
Using a 32k flash mcu to emulate 9 logic ics, sounded terribly wasteful to me.<br/>
<i>First idea :</i> I could use a Attiny instead.<br/>
<i>Advantages :</i> I would not waste that much flash space. <br/>
<i>Disadvantage :</i> Attinys have only few IO-pins and therefore the amount of mcus that can be attached to the lock is limited.<br/>
<br/>
So I was looking for a solution that allows a huge number of mcus, while needing no/not much additional hardware.<br/>
At some point I got reminded of <a href="http://en.wikipedia.org/wiki/Token_ring">token ring networks</a>, something I've never seen myself,<br/>
because it's a rather old technique and at least for computer networks totally replaced by Ethernet.<br/>
It's basic ideas is that the hosts pass a token from one to the next in a ring like topology.<br/>
Once a host gets a token he is allowed to attach data to it while passing it on.<br/>
This is very similar to the bit that gets shifted around in the piclock system,<br/>
but it does not require a central piece of hardware controlling the whole process.<br/>
That sounded just like the thing I wanted.<br/>
<br/>
After googling for a while I found a few implementations for token passing on microcontrollers,<br>
but the majority of them were integrated in other projects and designed for a single usage scenario.<br/>
At that point I started experimenting with an own implementation.<br/>
It had easily configurable for different AVR mcus and applicable to various scenarios where multiple mcus access the same resource.<br/>
<br/>
<b>
It's important to notice that I don't claim this to be a full featured library.<br/>
Let's be honest, there not even enough lines of code to call this a program.<br/>
I rather wanted to present the idea behind it, as well as providing a little reference implementation.<br/>
So just think of this as a request for comments.<br/>
</b>
<h2>How it works</h2>
The basic idea is to implement a decentralized <a href="http://en.wikipedia.org/wiki/Token_passing">token passing mechanism</a>,<br>
allowing multiple mcus to share access to a resource like some kind of memory, a sensor or a communication interface of some kind.<br>
Each mcu has one of its IO Pins connected to the external interrupt pin e.g. INT0 of the next mcu.<br>
The last mcu in this chain has one of its IOs connected to the interrupt pin of the first one.<br>
This results in a ring topology as shown below.<br/>
<br/>
<img src="ringlock_idea.png"/>
<br/>
When everything is powered up somebody has to have the token and the access initially.<br/>
I called this special mcu master.<br/>
It does whatever it needs to do with the resource and then pulls his IO-pin (called PYX in the drawing) high for 1us.<br/>
Slave 1 will get interrupted because of the rising signal at his INT0.<br/>
In his ISR he will check whether the rest of his program has requested access to the resource.<br/>
This is done by simply checking a flag. If the flag is not set it will pass the token to slave 2 immediately in his ISR.<br/>
Otherwise it will set a flag, signalling the program that it can now access the resource and leave the ISR.<br/>
It's now up to the program to work with the shared resource for a while and to pass on the token.<br/>
The next mcus will do exactly the same thing and the token will circulate in the ring infinitely.<br/>
<br/>
At least theory.<br/>
In praxis you'll sooner or later lose the token, simply because of murphys law.<br/>
Imagine a mcu crashes, there is a power failure or a bad connection.<br/>
Having lost the token, the system will get stuck since no one is allowed to access the shared resource.<br/>
Every mcu waits for the token, that will never arrive.<br/>
That's the point where a time out might come handy.<br/>
Using a timer of the master mcu it's easy to implement one.<br/>
The timer gets reset every time the master gets the token back from the last mcu in the ring.<br/>
If the token doesn't arrive in time, the master assumes that it was lost and pretends to have the token.<br/>
The new token will be passed on and everything is hopefully working again.<br>
Still there is one pitfall in this approach, the timeout has to be chosen carefully.<br/>
If the master sends a new token while another is still on the ring, to mcu will try to work with the resource, <br/>
which is in fact the situation we are trying to avoid using lock.<br/>
The best idea is to use a timeout that is at least 1,5 times as long, as the longest time a token need back to the master.<br/>
<br/>
<h2>How to use it</h2>
There are two ways of getting the source code :<br/>
<ol>
<li>Get the tarball <a href="#">here</a></li>
<li>Clone the hg repository: <b>hg clone <a href="#">hg repo url here</a></b></li>
</ol>
<br/>
Once you got the source, you'll want to adjust the configuration in <i>include/ringlock.h</i>.<br/>
The config is documented there and changing it should be pretty straight forward.<br/>
<br/>
Using the makefile is a bit more complex then the usual <i>make all</i>.<br/>
There are some variables that need to be set :<br/>
<ul>
<li><b>LOCKROLE</b> sets role of the mcu in the ring. Can be master or slave.</li>
<li><b>AVRMCU</b> sets the mcu. Can be atmega8 or atmega32. If you want an other mcu add it in <i>include/ringlock.h</i>.</li>
<li><b>F_CPU</b> set the frequency of the mcu in Hz.</li>
</ul>
So if you want to build a slave for an Atmega8 with 8mHz call <i>make ROLE=slave AVRMCU=atmega8 F_CPU=8000000 all</i>.<br/>
Currently the source only supports Atmega32 as master or slave and Atmega8 as slave.<br/>
This can be changed by extending the configs in <i>include/ringlock.h</i>.<br/>
Once you have added a new mcu, it would be nice to send me patch so I can add it to the source.<br/>
<br/>
Using the ringlock in your source code is simple, it boils down to 4 functions :<br/>
<ul>
<li>rl_init() sets up timers and ports</li>
<li>rl_request_lock() tells the ISR to keep the token</li>
<li>rl_have_lock() retuns 1 if the mcu has the lock, else 0</li>
<li>rl_release_lock() releases the lock again</li>
</ul>
<h2>Example</h2>
Since this was a solution to which I didn't have a Problem I made one up :<br/>
One ATmega32 (Master) and one Atmega8 (Slave) share the TXD line of a RS232 connection.<br/>
I used the OpenBench LogicSniffer to measure the signals.<br/>
<br/>
<img src="ringlock_test.png">
<br/>
<br/>
The and gate was in a HCF4081.<br/>
If you set the TXD of the passive mcu to high-Z you won't need it, but I wanted the unmixed signals as well.<br/>
The program used in this test is bundled with the sourcecode as <i>main.c</i>.<br/>
<br/>
Here are all the signals in the jawis OLS client:<br/>
<a href="test.png"/><img src="test_short.png"></a>
<br/>
and a photo of my setup :<br/>
<img src="photo.jpg"/><br/>
<br/>
<br/>
So that's all so far.<br/>
Have fun with this stuff and <i>please</i> don't waste an entire Atmega32 on locks.<br/>
</body>
</html>

BIN
doc/photo.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

BIN
doc/ringlock_idea.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

393
doc/ringlock_idea.svg Normal file
View File

@ -0,0 +1,393 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg2"
version="1.1"
inkscape:version="0.48.2 r9819"
sodipodi:docname="ringlock2.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7"
inkscape:cx="189.83548"
inkscape:cy="578.09184"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1280"
inkscape:window-height="971"
inkscape:window-x="0"
inkscape:window-y="31"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid2985"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
spacingx="2mm"
units="mm"
spacingy="2mm"
dotted="true" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<text
xml:space="preserve"
style="font-size:22.00000007px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
x="716.28436"
y="15.776946"
id="text4246"
sodipodi:linespacing="125%"
transform="matrix(0.44514723,0.89545739,-0.89545739,0.44514723,0,0)"><tspan
sodipodi:role="line"
x="716.28436"
y="15.776946"
id="tspan4254"
style="font-size:22.00000007px">Openbench Logicsniffer</tspan></text>
<text
xml:space="preserve"
style="font-size:22px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="120.47244"
y="194.88187"
id="text4309"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4311"
x="120.47244"
y="194.88187">Master</tspan></text>
<g
id="g4405">
<rect
transform="scale(-1,1)"
y="204.8681"
x="-198.4252"
height="280.56494"
width="70.86615"
id="rect3047-4"
style="fill:none;stroke:#000000;stroke-width:2.96083784;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
transform="matrix(0,1,-1,0,0,0)"
sodipodi:linespacing="125%"
id="text3817-2"
y="-155.90552"
x="308.2677"
style="font-size:27.14279366px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="-155.90552"
x="308.2677"
id="tspan3819-4"
sodipodi:role="line">MCU0</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3868-4"
y="471.25983"
x="134.64568"
style="font-size:14px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="471.25983"
x="134.64568"
id="tspan3870-9"
sodipodi:role="line">INT0</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3876-2"
y="223.22832"
x="162.99213"
style="font-size:14px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="223.22832"
x="162.99213"
id="tspan3878-5"
sodipodi:role="line">PYX</tspan></text>
<path
inkscape:connector-curvature="0"
id="path4399"
d="m 198.4252,223.22832 21.25984,0"
style="fill:none;stroke:#000000;stroke-width:3.54330708999999988;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4403"
d="m 127.55906,471.25982 -21.25985,0"
style="fill:none;stroke:#000000;stroke-width:3.54330708999999988;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:0;stroke-dasharray:none" />
</g>
<g
transform="translate(127.55905,4.325326e-6)"
id="g4405-0">
<rect
transform="scale(-1,1)"
y="204.8681"
x="-198.4252"
height="280.56494"
width="70.86615"
id="rect3047-4-1"
style="fill:none;stroke:#000000;stroke-width:2.96083784;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
transform="matrix(0,1,-1,0,0,0)"
sodipodi:linespacing="125%"
id="text3817-2-2"
y="-155.90552"
x="308.2677"
style="font-size:27.14279366px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="-155.90552"
x="308.2677"
id="tspan3819-4-2"
sodipodi:role="line">MCU1</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3868-4-1"
y="471.25983"
x="134.64568"
style="font-size:14px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="471.25983"
x="134.64568"
id="tspan3870-9-2"
sodipodi:role="line">INT0</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3876-2-6"
y="223.22832"
x="162.99213"
style="font-size:14px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="223.22832"
x="162.99213"
id="tspan3878-5-7"
sodipodi:role="line">PYX</tspan></text>
<path
inkscape:connector-curvature="0"
id="path4399-1"
d="m 198.4252,223.22832 21.25984,0"
style="fill:none;stroke:#000000;stroke-width:3.54330707;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4403-0"
d="m 127.55906,471.25982 -21.25985,0"
style="fill:none;stroke:#000000;stroke-width:3.54330707;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="translate(255.11811,4.325326e-6)"
id="g4405-0-8">
<rect
transform="scale(-1,1)"
y="204.8681"
x="-198.4252"
height="280.56494"
width="70.86615"
id="rect3047-4-1-4"
style="fill:none;stroke:#000000;stroke-width:2.96083784;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
transform="matrix(0,1,-1,0,0,0)"
sodipodi:linespacing="125%"
id="text3817-2-2-1"
y="-155.90552"
x="308.2677"
style="font-size:27.14279366px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="-155.90552"
x="308.2677"
id="tspan3819-4-2-3"
sodipodi:role="line">MCU2</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3868-4-1-4"
y="471.25983"
x="134.64568"
style="font-size:14px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="471.25983"
x="134.64568"
id="tspan3870-9-2-4"
sodipodi:role="line">INT0</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3876-2-6-3"
y="223.22832"
x="162.99213"
style="font-size:14px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="223.22832"
x="162.99213"
id="tspan3878-5-7-9"
sodipodi:role="line">PYX</tspan></text>
<path
inkscape:connector-curvature="0"
id="path4399-1-6"
d="m 198.4252,223.22832 21.25984,0"
style="fill:none;stroke:#000000;stroke-width:3.54330707;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4403-0-2"
d="m 127.55906,471.25982 -21.25985,0"
style="fill:none;stroke:#000000;stroke-width:3.54330707;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="translate(446.4567,4.325326e-6)"
id="g4405-0-8-4">
<rect
transform="scale(-1,1)"
y="204.8681"
x="-198.4252"
height="280.56494"
width="70.86615"
id="rect3047-4-1-4-0"
style="fill:none;stroke:#000000;stroke-width:2.96083784;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
transform="matrix(0,1,-1,0,0,0)"
sodipodi:linespacing="125%"
id="text3817-2-2-1-7"
y="-155.90552"
x="308.2677"
style="font-size:27.14279366px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="-155.90552"
x="308.2677"
id="tspan3819-4-2-3-9"
sodipodi:role="line">MCUn</tspan><tspan
y="-121.97703"
x="308.2677"
sodipodi:role="line"
id="tspan4551" /></text>
<text
sodipodi:linespacing="125%"
id="text3868-4-1-4-0"
y="471.25983"
x="134.64568"
style="font-size:14px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="471.25983"
x="134.64568"
id="tspan3870-9-2-4-9"
sodipodi:role="line">INT0</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3876-2-6-3-1"
y="223.22832"
x="162.99213"
style="font-size:14px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="223.22832"
x="162.99213"
id="tspan3878-5-7-9-0"
sodipodi:role="line">PYX</tspan></text>
<path
inkscape:connector-curvature="0"
id="path4399-1-6-4"
d="m 198.4252,223.22832 21.25984,0"
style="fill:none;stroke:#000000;stroke-width:3.54330707;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4403-0-2-2"
d="m 127.55906,471.25982 -21.25985,0"
style="fill:none;stroke:#000000;stroke-width:3.54330707;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none" />
</g>
<path
style="fill:none;stroke:#000000;stroke-width:3.54330709;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:3.54330709,42.51968504;marker-start:none;marker-end:none;stroke-dashoffset:0"
d="m 474.80315,223.22832 77.95276,248.0315 0,0"
id="path4557"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-size:22px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="255.1181"
y="194.88187"
id="text4919"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4921"
x="255.1181"
y="194.88187">Slave 1</tspan></text>
<text
xml:space="preserve"
style="font-size:22px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="382.67715"
y="194.88187"
id="text4919-5"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4921-1"
x="382.67715"
y="194.88187">Slave 2</tspan></text>
<text
xml:space="preserve"
style="font-size:22px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="574.01575"
y="194.88187"
id="text4944"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4946"
x="574.01575"
y="194.88187">Slave n</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:3.54330708999999988;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 219.68504,223.22832 14.17323,248.0315 0,0"
id="path4948"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:3.54330708999999988;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 347.24409,223.22832 14.17323,248.0315"
id="path4950"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:3.54330708999999988;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 666.14173,223.22832 0,290.55119 0,0 -559.84252,0 0,-42.51969"
id="path4952"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#00f200;stroke-width:7.08661416999999982;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 212.59843,350.78738 14.17322,14.17323 14.17323,-14.17323"
id="path4954"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#00f200;stroke-width:7.08661413;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 340.15749,343.70076 14.17322,14.17323 14.17323,-14.17323"
id="path4954-8"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#00f200;stroke-width:7.08661413;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 498.0519,352.36112 19.27093,5.51287 5.51286,-19.27094"
id="path4954-8-3"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#00f200;stroke-width:7.08661413;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 413.47915,502.58821 -16.62876,11.1913 11.19131,16.62875"
id="path4954-8-5"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

BIN
doc/ringlock_test.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

314
doc/ringlock_test.svg Normal file
View File

@ -0,0 +1,314 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg2"
version="1.1"
inkscape:version="0.48.2 r9819"
sodipodi:docname="ringlock.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7"
inkscape:cx="259.61935"
inkscape:cy="530.41092"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1280"
inkscape:window-height="971"
inkscape:window-x="0"
inkscape:window-y="31"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid2985"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
spacingx="2mm"
units="mm"
spacingy="2mm"
dotted="true" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g4222">
<rect
y="201.96848"
x="531.49603"
height="280.56494"
width="67.966515"
id="rect3047"
style="fill:none;stroke:#000000;stroke-width:2.89963078;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
transform="matrix(0,1,-1,0,0,0)"
sodipodi:linespacing="125%"
id="text3817"
y="-559.84253"
x="279.92123"
style="font-size:27.14279366px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="-559.84253"
x="279.92123"
id="tspan3819"
sodipodi:role="line">Atmega8</tspan></text>
<path
inkscape:connector-curvature="0"
id="path3866"
d="m 496.06299,223.22832 35.43307,0 0,0"
style="fill:none;stroke:#000000;stroke-width:3.54330707;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
sodipodi:linespacing="125%"
id="text3868"
y="223.22832"
x="538.5827"
style="font-size:14px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="223.22832"
x="538.5827"
id="tspan3870"
sodipodi:role="line">INT0</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3872"
y="471.25983"
x="538.5827"
style="font-size:14px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="471.25983"
x="538.5827"
id="tspan3874"
sodipodi:role="line">TXD</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3876"
y="428.74014"
x="538.5827"
style="font-size:14px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="428.74014"
x="538.5827"
id="tspan3878"
sodipodi:role="line">PYX</tspan></text>
<path
inkscape:connector-curvature="0"
id="path3880"
d="m 531.49606,428.74014 -28.34645,0"
style="fill:none;stroke:#000000;stroke-width:3.54330707;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path3882"
d="m 531.49606,471.25982 -28.34645,0 0,0"
style="fill:none;stroke:#000000;stroke-width:3.54330707;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
id="g4196">
<rect
transform="scale(-1,1)"
y="201.96849"
x="-205.51183"
height="280.56494"
width="67.966515"
id="rect3047-4"
style="fill:none;stroke:#000000;stroke-width:2.89963078;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
transform="matrix(0,1,-1,0,0,0)"
sodipodi:linespacing="125%"
id="text3817-2"
y="-166.21362"
x="258.66141"
style="font-size:27.14279366px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="-166.21362"
x="258.66141"
id="tspan3819-4"
sodipodi:role="line">Atmega32</tspan></text>
<path
inkscape:connector-curvature="0"
id="path3866-6"
d="m 240.94488,223.22832 -35.43307,0 0,0"
style="fill:none;stroke:#000000;stroke-width:3.54330707;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
sodipodi:linespacing="125%"
id="text3868-4"
y="223.22833"
x="165.91344"
style="font-size:14px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="223.22833"
x="165.91344"
id="tspan3870-9"
sodipodi:role="line">INT0</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3872-8"
y="471.25983"
x="170.07874"
style="font-size:14px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="471.25983"
x="170.07874"
id="tspan3874-4"
sodipodi:role="line">TXD</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3876-2"
y="428.74014"
x="170.07874"
style="font-size:14px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="428.74014"
x="170.07874"
id="tspan3878-5"
sodipodi:role="line">PYX</tspan></text>
<path
inkscape:connector-curvature="0"
id="path3880-7"
d="m 205.51181,428.74014 28.34645,0"
style="fill:none;stroke:#000000;stroke-width:3.54330707;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path3882-2"
d="m 205.51181,471.25982 28.34645,0 0,0"
style="fill:none;stroke:#000000;stroke-width:3.54330707;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="matrix(0,1,-1,0,923.84241,-569.98421)"
style="display:inline"
id="g3196">
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccssc"
id="path4683"
d="m 1126.2834,534.41537 0,28.00972 14.1733,7e-4 c 21.2598,10e-4 21.2598,-28.00866 0,-28.00972 l -14.1733,-7e-4 z"
style="color:#000000;fill:none;stroke:#000000;stroke-width:3.54330707;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc"
id="path4687"
d="m 1154.6299,548.58929 14.1732,-6.8e-4"
style="color:#000000;fill:none;stroke:#000000;stroke-width:3.54330707;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc"
id="path4695"
d="m 1112.1102,541.50267 14.1732,0"
style="color:#000000;fill:none;stroke:#000000;stroke-width:3.54330707;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc"
id="path4697"
d="m 1112.1102,555.67591 14.1732,0"
style="color:#000000;fill:none;stroke:#000000;stroke-width:3.54330707;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
</g>
<path
style="fill:none;stroke:#000000;stroke-width:3.54330708999999988;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 240.94488,223.22832 262.20473,205.51182 0,0"
id="path4236"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:3.54330709;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 233.85827,428.74014 262.20472,-205.51182 0,0"
id="path4238"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:3.54330708999999988;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 233.85827,471.25982 127.55905,0 7.08662,0 0,70.86614"
id="path4240"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:3.54330708999999988;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 382.67717,542.12596 0,-70.86614 120.47244,0"
id="path4242"
inkscape:connector-curvature="0" />
<rect
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:3.54330707;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect4244"
width="141.73228"
height="255.1181"
x="297.63779"
y="634.25195" />
<text
xml:space="preserve"
style="font-size:22.00000007px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
x="716.28436"
y="15.776946"
id="text4246"
sodipodi:linespacing="125%"
transform="matrix(0.44514723,0.89545739,-0.89545739,0.44514723,0,0)"><tspan
sodipodi:role="line"
x="716.28436"
y="15.776946"
id="tspan4254"
style="font-size:22.00000007px">Openbench Logicsniffer</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:3.54330707;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 375.59055,598.81888 0,35.43307"
id="path4258"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:3.54330708999999988;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 219.68504,428.74014 0,134.64566 99.2126,0 0,70.86615"
id="path4262"
inkscape:connector-curvature="0" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.64690256;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
id="path2404"
sodipodi:cx="265.89667"
sodipodi:cy="92.007843"
sodipodi:rx="1.7716535"
sodipodi:ry="1.7716535"
d="m 267.66832,92.007843 a 1.7716535,1.7716535 0 1 1 -3.54331,0 1.7716535,1.7716535 0 1 1 3.54331,0 z"
transform="matrix(1.33866,0,0,1.33866,-136.26019,305.57292)" />
<path
style="fill:none;stroke:#000000;stroke-width:3.54330707;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 517.32284,428.74014 0,134.64566 -99.2126,0 0,70.86615"
id="path4262-1"
inkscape:connector-curvature="0" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.64690256;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
id="path2404-7"
sodipodi:cx="265.89667"
sodipodi:cy="92.007843"
sodipodi:rx="1.7716535"
sodipodi:ry="1.7716535"
d="m 267.66832,92.007843 a 1.7716535,1.7716535 0 1 1 -3.54331,0 1.7716535,1.7716535 0 1 1 3.54331,0 z"
transform="matrix(1.33866,0,0,1.33866,161.04181,305.44665)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

670
doc/test.ols Normal file
View File

@ -0,0 +1,670 @@
;Size: 662
;Rate: 20000000
;Channels: 32
;EnabledChannels: 255
;TriggerPosition: 7208
;Compressed: true
;AbsoluteLength: 1223475
;CursorEnabled: false
00000010@0
00000018@7209
0000001c@7210
00000014@9240
00000010@9241
00000018@11270
0000001c@11271
0000001e@18207
0000001c@18226
0000000c@18539
00000008@18540
00000018@20568
0000001c@20569
0000000c@22598
00000008@22599
0000001c@32747
0000000c@34776
00000008@34777
00000018@36806
0000001c@36807
0000001d@43740
0000001c@43759
00000014@43890
00000010@43891
00000018@47952
0000001c@47953
00000014@49983
00000010@49984
00000018@58106
0000001c@58107
00000014@60137
00000010@60138
00000018@62168
0000001c@62169
0000001e@69107
0000001c@69126
0000000c@69410
00000008@69411
00000018@71440
0000001c@71441
0000000c@73470
00000008@73471
00000018@83618
0000001c@83619
0000000c@85648
00000008@85649
00000018@87677
0000001c@87678
0000001d@94616
0000001c@94635
00000014@94788
00000010@94789
00000018@98850
0000001c@98851
00000014@100881
00000010@100882
00000018@109005
0000001c@109006
00000014@111036
00000010@111037
00000018@113067
0000001c@113068
0000001e@120006
0000001c@120026
0000000c@120282
00000008@120283
00000018@122312
0000001c@122313
0000000c@124341
00000008@124343
00000018@134490
0000001c@134491
0000000c@136519
00000008@136521
00000018@138549
0000001c@138550
0000001d@145483
0000001c@145502
00000014@145689
00000010@145690
00000018@149751
0000001c@149752
00000014@151782
00000010@151783
00000018@159907
0000001c@159908
00000014@161938
00000010@161939
00000018@163969
0000001c@163970
0000001e@170908
0000001c@170928
0000000c@171281
00000008@171282
00000018@173310
0000001c@173311
0000000c@175340
00000008@175341
00000018@185488
0000001c@185489
0000000c@187518
00000008@187519
00000018@189548
0000001c@189549
0000001d@196481
0000001c@196501
00000014@196718
00000010@196719
00000018@200780
0000001c@200781
00000014@202811
00000010@202812
00000018@210935
0000001c@210936
00000014@212966
00000010@212967
00000018@214997
0000001c@214998
0000001e@221936
0000001c@221956
0000000c@222279
00000008@222280
00000018@224309
0000001c@224310
0000000c@226338
00000008@226340
00000018@236487
0000001c@236488
0000000c@238516
00000008@238518
00000018@240546
0000001c@240547
0000001d@247480
0000001c@247499
00000014@247618
00000010@247619
00000018@251680
0000001c@251681
00000014@253711
00000010@253712
00000018@261835
0000001c@261836
00000014@263865
00000010@263867
00000018@265896
0000001c@265897
0000001e@272836
0000001c@272855
0000000c@273151
00000008@273152
00000018@275180
0000001c@275181
0000000c@277210
00000008@277211
00000018@287358
0000001c@287359
0000000c@289388
00000008@289389
00000018@291417
0000001c@291418
0000001d@298351
0000001c@298371
00000014@298517
00000010@298518
00000018@302579
0000001c@302580
00000014@304610
00000010@304611
00000018@312734
0000001c@312735
00000014@314765
00000010@314766
00000018@316796
0000001c@316797
0000001e@323732
0000001c@323752
0000000c@324022
00000008@324023
00000018@326052
0000001c@326053
0000000c@328082
00000008@328083
00000018@338230
0000001c@338231
0000000c@340259
00000008@340260
00000018@342289
0000001c@342290
0000001d@349225
0000001c@349245
00000014@349416
00000010@349417
0000001c@353478
00000014@355508
00000010@355510
00000018@363632
0000001c@363633
00000014@365663
00000010@365664
00000018@367694
0000001c@367695
0000001e@374633
0000001c@374652
0000000c@374893
00000008@374895
00000018@376923
0000001c@376924
0000000c@378953
00000008@378954
00000018@389101
0000001c@389102
0000000c@391131
00000008@391132
0000001c@393161
0000001d@400094
0000001c@400114
00000014@400314
00000010@400315
00000018@404376
0000001c@404377
00000014@406406
00000010@406408
00000018@414530
0000001c@414531
00000014@416561
00000010@416562
00000018@418592
0000001c@418593
0000001e@425533
0000001c@425553
0000000c@425892
00000008@425893
00000018@427922
0000001c@427923
0000000c@429951
00000008@429952
0000001c@440100
0000000c@442129
00000008@442130
00000018@444159
0000001c@444160
0000001d@451098
0000001c@451117
00000014@451339
00000010@451340
00000018@455401
0000001c@455402
00000014@457431
00000010@457433
00000018@465555
0000001c@465556
00000014@467586
00000010@467587
00000018@469617
0000001c@469618
0000001e@476558
0000001c@476578
0000000c@476890
00000008@476891
00000018@478920
0000001c@478921
0000000c@480950
00000008@480951
00000018@491098
0000001c@491099
0000000c@493128
00000008@493129
00000018@495157
0000001c@495158
0000001d@502096
0000001c@502115
00000014@502237
00000010@502238
00000018@506299
0000001c@506300
00000014@508330
00000010@508331
00000018@516454
0000001c@516455
00000014@518485
00000010@518486
00000018@520516
0000001c@520517
0000001e@527453
0000001c@527473
0000000c@527762
00000008@527763
00000018@529791
0000001c@529792
0000000c@531821
00000008@531822
00000018@541969
0000001c@541970
0000000c@543999
00000008@544000
0000001c@546029
0000001d@552967
0000001c@552987
00000014@553138
00000010@553139
00000018@557200
0000001c@557201
00000014@559231
00000010@559232
00000018@567355
0000001c@567356
00000014@569386
00000010@569387
00000018@571417
0000001c@571418
0000001e@578354
0000001c@578374
0000000c@578633
00000008@578634
0000001c@580663
0000000c@582692
00000008@582693
00000018@592840
0000001c@592841
0000000c@594870
00000008@594871
00000018@596900
0000001c@596901
0000001d@603833
0000001c@603853
00000014@604039
00000010@604040
00000018@608101
0000001c@608102
00000014@610131
00000010@610133
0000001c@618256
00000014@620286
00000010@620288
00000018@622317
0000001c@622318
0000001e@629259
0000001c@629279
0000000c@629631
00000008@629632
00000018@631661
0000001c@631662
0000000c@633691
00000008@633692
00000018@643839
0000001c@643840
0000000c@645868
00000008@645869
00000018@647898
0000001c@647899
0000001d@654831
0000001c@654851
00000014@655065
00000010@655066
00000018@659126
0000001c@659127
00000014@661157
00000010@661158
00000018@669281
0000001c@669282
00000014@671312
00000010@671313
00000018@673343
0000001c@673344
0000001e@680284
0000001c@680304
0000000c@680629
00000008@680630
0000001c@682659
0000000c@684688
00000008@684689
0000001c@694837
0000000c@696866
00000008@696867
00000018@698896
0000001c@698897
0000001d@705830
0000001c@705849
00000014@705963
00000010@705964
00000018@710025
0000001c@710026
00000014@712056
00000010@712057
00000018@720180
0000001c@720181
00000014@722210
00000010@722212
00000018@724241
0000001c@724242
0000001e@731183
0000001c@731202
0000000c@731501
00000008@731502
00000018@733530
0000001c@733531
0000000c@735560
00000008@735561
00000018@745708
0000001c@745709
0000000c@747738
00000008@747739
00000018@749767
0000001c@749768
0000001d@756704
0000001c@756723
00000014@756861
00000010@756862
00000018@760923
0000001c@760924
00000014@762954
00000010@762955
00000018@771078
0000001c@771079
00000014@773108
00000010@773110
00000018@775139
0000001c@775140
0000001e@782078
0000001c@782098
0000000c@782372
00000008@782373
00000018@784401
0000001c@784402
0000000c@786431
00000008@786432
00000018@796579
0000001c@796580
0000000c@798609
00000008@798610
00000018@800639
0000001c@800640
0000001d@807573
0000001c@807592
00000014@807759
00000010@807760
0000001c@811821
00000014@813851
00000010@813853
00000018@821975
0000001c@821976
00000014@824006
00000010@824007
00000018@826037
0000001c@826038
0000001e@832978
0000001c@832998
0000000c@833243
00000008@833245
00000018@835273
0000001c@835274
0000000c@837303
00000008@837304
00000018@847451
0000001c@847452
0000000c@849481
00000008@849482
00000018@851510
0000001c@851511
0000001d@858449
0000001c@858468
00000014@858657
00000010@858658
00000018@862719
0000001c@862720
00000014@864749
00000010@864751
00000018@872873
0000001c@872874
00000014@874904
00000010@874905
00000018@876935
0000001c@876936
0000001e@883876
0000001c@883896
0000000c@884242
00000008@884243
00000018@886271
0000001c@886272
0000000c@888301
00000008@888302
00000018@898449
0000001c@898450
0000000c@900479
00000008@900480
00000018@902508
0000001c@902509
0000001d@909447
0000001c@909467
00000014@909682
00000010@909683
00000018@913744
0000001c@913745
00000014@915775
00000010@915776
00000018@923899
0000001c@923900
00000014@925930
00000010@925931
00000018@927961
0000001c@927962
0000001e@934903
0000001c@934923
0000000c@935240
00000008@935241
00000018@937269
0000001c@937270
0000000c@939299
00000008@939300
00000018@949447
0000001c@949448
0000000c@951477
00000008@951478
00000018@953507
0000001c@953508
0000001d@960445
0000001c@960465
00000014@960583
00000010@960584
00000018@964645
0000001c@964646
00000014@966676
00000010@966677
00000018@974800
0000001c@974801
00000014@976831
00000010@976832
00000018@978862
0000001c@978863
0000001e@985803
0000001c@985823
0000000c@986111
00000008@986112
00000018@988141
0000001c@988142
0000000c@990171
00000008@990172
00000018@1000319
0000001c@1000320
0000000c@1002348
00000008@1002350
00000018@1004378
0000001c@1004379
0000001d@1011317
0000001c@1011336
00000014@1011483
00000010@1011484
00000018@1015545
0000001c@1015546
00000014@1017576
00000010@1017577
00000018@1025700
0000001c@1025701
00000014@1027731
00000010@1027732
00000018@1029762
0000001c@1029763
0000001e@1036703
0000001c@1036723
0000000c@1036982
00000008@1036983
00000018@1039012
0000001c@1039013
0000000c@1041042
00000008@1041043
00000018@1051190
0000001c@1051191
0000000c@1053219
00000008@1053221
00000018@1055249
0000001c@1055250
0000001d@1062183
0000001c@1062202
00000014@1062383
00000010@1062384
00000018@1066445
0000001c@1066446
00000014@1068476
00000010@1068477
00000018@1076600
0000001c@1076601
00000014@1078631
00000010@1078632
0000001c@1080662
0000001e@1087601
0000001c@1087620
0000000c@1087981
00000008@1087982
00000018@1090010
0000001c@1090011
0000000c@1092040
00000008@1092041
00000018@1102188
0000001c@1102189
0000000c@1104218
00000008@1104219
00000018@1106247
0000001c@1106248
0000001d@1113181
0000001c@1113201
00000014@1113408
00000010@1113410
00000018@1117470
0000001c@1117471
00000014@1119501
00000010@1119502
00000018@1127625
0000001c@1127626
00000014@1129655
00000010@1129657
00000018@1131686
0000001c@1131687
0000001e@1138623
0000001c@1138642
0000000c@1138979
00000008@1138980
00000018@1141008
0000001c@1141009
0000000c@1143038
00000008@1143039
00000018@1153186
0000001c@1153187
0000000c@1155216
00000008@1155217
00000018@1157245
0000001c@1157246
0000001d@1164182
0000001c@1164201
00000014@1164306
00000010@1164307
00000018@1168368
0000001c@1168369
00000014@1170399
00000010@1170400
00000018@1178522
0000001c@1178523
00000014@1180553
00000010@1180554
00000018@1182584
0000001c@1182585
0000001e@1189525
0000001c@1189545
0000000c@1189850
00000008@1189852
00000018@1191880
0000001c@1191881
0000000c@1193910
00000008@1193911
00000018@1204058
0000001c@1204059
0000000c@1206088
00000008@1206089
00000018@1208118
0000001c@1208119
0000001d@1215056
0000001c@1215076
00000014@1215204
00000010@1215205
00000018@1219266
0000001c@1219267
00000014@1221296
00000010@1221298

BIN
doc/test.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

BIN
doc/test_short.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@ -1,5 +1,5 @@
/*
* ringlock.c
* ringlock.c
*
* Created on: Sep 28, 2011
* Author: sebastian

View File

@ -1,5 +1,5 @@
/*
* ringlock.h
* ringlock.h
*
* Created on: Sep 28, 2011
* Author: sebastian

8
main.c
View File

@ -1,12 +1,8 @@
/*
* main.c
* main.c
*
* Created on: Sep 28, 2011
* Author: sebastian
*
* Makefile
* Created on: Sep 28, 2011
* Author: sebastian
* Author: sebastian
*
* This file is part of the RingLock-library for Atmel AVR MCUS.
*