/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/COPYING |
---|
0,0 → 1,674 |
GNU GENERAL PUBLIC LICENSE |
Version 3, 29 June 2007 |
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> |
Everyone is permitted to copy and distribute verbatim copies |
of this license document, but changing it is not allowed. |
Preamble |
The GNU General Public License is a free, copyleft license for |
software and other kinds of works. |
The licenses for most software and other practical works are designed |
to take away your freedom to share and change the works. By contrast, |
the GNU General Public License is intended to guarantee your freedom to |
share and change all versions of a program--to make sure it remains free |
software for all its users. We, the Free Software Foundation, use the |
GNU General Public License for most of our software; it applies also to |
any other work released this way by its authors. You can apply it to |
your programs, too. |
When we speak of free software, we are referring to freedom, not |
price. Our General Public Licenses are designed to make sure that you |
have the freedom to distribute copies of free software (and charge for |
them if you wish), that you receive source code or can get it if you |
want it, that you can change the software or use pieces of it in new |
free programs, and that you know you can do these things. |
To protect your rights, we need to prevent others from denying you |
these rights or asking you to surrender the rights. Therefore, you have |
certain responsibilities if you distribute copies of the software, or if |
you modify it: responsibilities to respect the freedom of others. |
For example, if you distribute copies of such a program, whether |
gratis or for a fee, you must pass on to the recipients the same |
freedoms that you received. You must make sure that they, too, receive |
or can get the source code. And you must show them these terms so they |
know their rights. |
Developers that use the GNU GPL protect your rights with two steps: |
(1) assert copyright on the software, and (2) offer you this License |
giving you legal permission to copy, distribute and/or modify it. |
For the developers' and authors' protection, the GPL clearly explains |
that there is no warranty for this free software. For both users' and |
authors' sake, the GPL requires that modified versions be marked as |
changed, so that their problems will not be attributed erroneously to |
authors of previous versions. |
Some devices are designed to deny users access to install or run |
modified versions of the software inside them, although the manufacturer |
can do so. This is fundamentally incompatible with the aim of |
protecting users' freedom to change the software. The systematic |
pattern of such abuse occurs in the area of products for individuals to |
use, which is precisely where it is most unacceptable. Therefore, we |
have designed this version of the GPL to prohibit the practice for those |
products. If such problems arise substantially in other domains, we |
stand ready to extend this provision to those domains in future versions |
of the GPL, as needed to protect the freedom of users. |
Finally, every program is threatened constantly by software patents. |
States should not allow patents to restrict development and use of |
software on general-purpose computers, but in those that do, we wish to |
avoid the special danger that patents applied to a free program could |
make it effectively proprietary. To prevent this, the GPL assures that |
patents cannot be used to render the program non-free. |
The precise terms and conditions for copying, distribution and |
modification follow. |
TERMS AND CONDITIONS |
0. Definitions. |
"This License" refers to version 3 of the GNU General Public License. |
"Copyright" also means copyright-like laws that apply to other kinds of |
works, such as semiconductor masks. |
"The Program" refers to any copyrightable work licensed under this |
License. Each licensee is addressed as "you". "Licensees" and |
"recipients" may be individuals or organizations. |
To "modify" a work means to copy from or adapt all or part of the work |
in a fashion requiring copyright permission, other than the making of an |
exact copy. The resulting work is called a "modified version" of the |
earlier work or a work "based on" the earlier work. |
A "covered work" means either the unmodified Program or a work based |
on the Program. |
To "propagate" a work means to do anything with it that, without |
permission, would make you directly or secondarily liable for |
infringement under applicable copyright law, except executing it on a |
computer or modifying a private copy. Propagation includes copying, |
distribution (with or without modification), making available to the |
public, and in some countries other activities as well. |
To "convey" a work means any kind of propagation that enables other |
parties to make or receive copies. Mere interaction with a user through |
a computer network, with no transfer of a copy, is not conveying. |
An interactive user interface displays "Appropriate Legal Notices" |
to the extent that it includes a convenient and prominently visible |
feature that (1) displays an appropriate copyright notice, and (2) |
tells the user that there is no warranty for the work (except to the |
extent that warranties are provided), that licensees may convey the |
work under this License, and how to view a copy of this License. If |
the interface presents a list of user commands or options, such as a |
menu, a prominent item in the list meets this criterion. |
1. Source Code. |
The "source code" for a work means the preferred form of the work |
for making modifications to it. "Object code" means any non-source |
form of a work. |
A "Standard Interface" means an interface that either is an official |
standard defined by a recognized standards body, or, in the case of |
interfaces specified for a particular programming language, one that |
is widely used among developers working in that language. |
The "System Libraries" of an executable work include anything, other |
than the work as a whole, that (a) is included in the normal form of |
packaging a Major Component, but which is not part of that Major |
Component, and (b) serves only to enable use of the work with that |
Major Component, or to implement a Standard Interface for which an |
implementation is available to the public in source code form. A |
"Major Component", in this context, means a major essential component |
(kernel, window system, and so on) of the specific operating system |
(if any) on which the executable work runs, or a compiler used to |
produce the work, or an object code interpreter used to run it. |
The "Corresponding Source" for a work in object code form means all |
the source code needed to generate, install, and (for an executable |
work) run the object code and to modify the work, including scripts to |
control those activities. However, it does not include the work's |
System Libraries, or general-purpose tools or generally available free |
programs which are used unmodified in performing those activities but |
which are not part of the work. For example, Corresponding Source |
includes interface definition files associated with source files for |
the work, and the source code for shared libraries and dynamically |
linked subprograms that the work is specifically designed to require, |
such as by intimate data communication or control flow between those |
subprograms and other parts of the work. |
The Corresponding Source need not include anything that users |
can regenerate automatically from other parts of the Corresponding |
Source. |
The Corresponding Source for a work in source code form is that |
same work. |
2. Basic Permissions. |
All rights granted under this License are granted for the term of |
copyright on the Program, and are irrevocable provided the stated |
conditions are met. This License explicitly affirms your unlimited |
permission to run the unmodified Program. The output from running a |
covered work is covered by this License only if the output, given its |
content, constitutes a covered work. This License acknowledges your |
rights of fair use or other equivalent, as provided by copyright law. |
You may make, run and propagate covered works that you do not |
convey, without conditions so long as your license otherwise remains |
in force. You may convey covered works to others for the sole purpose |
of having them make modifications exclusively for you, or provide you |
with facilities for running those works, provided that you comply with |
the terms of this License in conveying all material for which you do |
not control copyright. Those thus making or running the covered works |
for you must do so exclusively on your behalf, under your direction |
and control, on terms that prohibit them from making any copies of |
your copyrighted material outside their relationship with you. |
Conveying under any other circumstances is permitted solely under |
the conditions stated below. Sublicensing is not allowed; section 10 |
makes it unnecessary. |
3. Protecting Users' Legal Rights From Anti-Circumvention Law. |
No covered work shall be deemed part of an effective technological |
measure under any applicable law fulfilling obligations under article |
11 of the WIPO copyright treaty adopted on 20 December 1996, or |
similar laws prohibiting or restricting circumvention of such |
measures. |
When you convey a covered work, you waive any legal power to forbid |
circumvention of technological measures to the extent such circumvention |
is effected by exercising rights under this License with respect to |
the covered work, and you disclaim any intention to limit operation or |
modification of the work as a means of enforcing, against the work's |
users, your or third parties' legal rights to forbid circumvention of |
technological measures. |
4. Conveying Verbatim Copies. |
You may convey verbatim copies of the Program's source code as you |
receive it, in any medium, provided that you conspicuously and |
appropriately publish on each copy an appropriate copyright notice; |
keep intact all notices stating that this License and any |
non-permissive terms added in accord with section 7 apply to the code; |
keep intact all notices of the absence of any warranty; and give all |
recipients a copy of this License along with the Program. |
You may charge any price or no price for each copy that you convey, |
and you may offer support or warranty protection for a fee. |
5. Conveying Modified Source Versions. |
You may convey a work based on the Program, or the modifications to |
produce it from the Program, in the form of source code under the |
terms of section 4, provided that you also meet all of these conditions: |
a) The work must carry prominent notices stating that you modified |
it, and giving a relevant date. |
b) The work must carry prominent notices stating that it is |
released under this License and any conditions added under section |
7. This requirement modifies the requirement in section 4 to |
"keep intact all notices". |
c) You must license the entire work, as a whole, under this |
License to anyone who comes into possession of a copy. This |
License will therefore apply, along with any applicable section 7 |
additional terms, to the whole of the work, and all its parts, |
regardless of how they are packaged. This License gives no |
permission to license the work in any other way, but it does not |
invalidate such permission if you have separately received it. |
d) If the work has interactive user interfaces, each must display |
Appropriate Legal Notices; however, if the Program has interactive |
interfaces that do not display Appropriate Legal Notices, your |
work need not make them do so. |
A compilation of a covered work with other separate and independent |
works, which are not by their nature extensions of the covered work, |
and which are not combined with it such as to form a larger program, |
in or on a volume of a storage or distribution medium, is called an |
"aggregate" if the compilation and its resulting copyright are not |
used to limit the access or legal rights of the compilation's users |
beyond what the individual works permit. Inclusion of a covered work |
in an aggregate does not cause this License to apply to the other |
parts of the aggregate. |
6. Conveying Non-Source Forms. |
You may convey a covered work in object code form under the terms |
of sections 4 and 5, provided that you also convey the |
machine-readable Corresponding Source under the terms of this License, |
in one of these ways: |
a) Convey the object code in, or embodied in, a physical product |
(including a physical distribution medium), accompanied by the |
Corresponding Source fixed on a durable physical medium |
customarily used for software interchange. |
b) Convey the object code in, or embodied in, a physical product |
(including a physical distribution medium), accompanied by a |
written offer, valid for at least three years and valid for as |
long as you offer spare parts or customer support for that product |
model, to give anyone who possesses the object code either (1) a |
copy of the Corresponding Source for all the software in the |
product that is covered by this License, on a durable physical |
medium customarily used for software interchange, for a price no |
more than your reasonable cost of physically performing this |
conveying of source, or (2) access to copy the |
Corresponding Source from a network server at no charge. |
c) Convey individual copies of the object code with a copy of the |
written offer to provide the Corresponding Source. This |
alternative is allowed only occasionally and noncommercially, and |
only if you received the object code with such an offer, in accord |
with subsection 6b. |
d) Convey the object code by offering access from a designated |
place (gratis or for a charge), and offer equivalent access to the |
Corresponding Source in the same way through the same place at no |
further charge. You need not require recipients to copy the |
Corresponding Source along with the object code. If the place to |
copy the object code is a network server, the Corresponding Source |
may be on a different server (operated by you or a third party) |
that supports equivalent copying facilities, provided you maintain |
clear directions next to the object code saying where to find the |
Corresponding Source. Regardless of what server hosts the |
Corresponding Source, you remain obligated to ensure that it is |
available for as long as needed to satisfy these requirements. |
e) Convey the object code using peer-to-peer transmission, provided |
you inform other peers where the object code and Corresponding |
Source of the work are being offered to the general public at no |
charge under subsection 6d. |
A separable portion of the object code, whose source code is excluded |
from the Corresponding Source as a System Library, need not be |
included in conveying the object code work. |
A "User Product" is either (1) a "consumer product", which means any |
tangible personal property which is normally used for personal, family, |
or household purposes, or (2) anything designed or sold for incorporation |
into a dwelling. In determining whether a product is a consumer product, |
doubtful cases shall be resolved in favor of coverage. For a particular |
product received by a particular user, "normally used" refers to a |
typical or common use of that class of product, regardless of the status |
of the particular user or of the way in which the particular user |
actually uses, or expects or is expected to use, the product. A product |
is a consumer product regardless of whether the product has substantial |
commercial, industrial or non-consumer uses, unless such uses represent |
the only significant mode of use of the product. |
"Installation Information" for a User Product means any methods, |
procedures, authorization keys, or other information required to install |
and execute modified versions of a covered work in that User Product from |
a modified version of its Corresponding Source. The information must |
suffice to ensure that the continued functioning of the modified object |
code is in no case prevented or interfered with solely because |
modification has been made. |
If you convey an object code work under this section in, or with, or |
specifically for use in, a User Product, and the conveying occurs as |
part of a transaction in which the right of possession and use of the |
User Product is transferred to the recipient in perpetuity or for a |
fixed term (regardless of how the transaction is characterized), the |
Corresponding Source conveyed under this section must be accompanied |
by the Installation Information. But this requirement does not apply |
if neither you nor any third party retains the ability to install |
modified object code on the User Product (for example, the work has |
been installed in ROM). |
The requirement to provide Installation Information does not include a |
requirement to continue to provide support service, warranty, or updates |
for a work that has been modified or installed by the recipient, or for |
the User Product in which it has been modified or installed. Access to a |
network may be denied when the modification itself materially and |
adversely affects the operation of the network or violates the rules and |
protocols for communication across the network. |
Corresponding Source conveyed, and Installation Information provided, |
in accord with this section must be in a format that is publicly |
documented (and with an implementation available to the public in |
source code form), and must require no special password or key for |
unpacking, reading or copying. |
7. Additional Terms. |
"Additional permissions" are terms that supplement the terms of this |
License by making exceptions from one or more of its conditions. |
Additional permissions that are applicable to the entire Program shall |
be treated as though they were included in this License, to the extent |
that they are valid under applicable law. If additional permissions |
apply only to part of the Program, that part may be used separately |
under those permissions, but the entire Program remains governed by |
this License without regard to the additional permissions. |
When you convey a copy of a covered work, you may at your option |
remove any additional permissions from that copy, or from any part of |
it. (Additional permissions may be written to require their own |
removal in certain cases when you modify the work.) You may place |
additional permissions on material, added by you to a covered work, |
for which you have or can give appropriate copyright permission. |
Notwithstanding any other provision of this License, for material you |
add to a covered work, you may (if authorized by the copyright holders of |
that material) supplement the terms of this License with terms: |
a) Disclaiming warranty or limiting liability differently from the |
terms of sections 15 and 16 of this License; or |
b) Requiring preservation of specified reasonable legal notices or |
author attributions in that material or in the Appropriate Legal |
Notices displayed by works containing it; or |
c) Prohibiting misrepresentation of the origin of that material, or |
requiring that modified versions of such material be marked in |
reasonable ways as different from the original version; or |
d) Limiting the use for publicity purposes of names of licensors or |
authors of the material; or |
e) Declining to grant rights under trademark law for use of some |
trade names, trademarks, or service marks; or |
f) Requiring indemnification of licensors and authors of that |
material by anyone who conveys the material (or modified versions of |
it) with contractual assumptions of liability to the recipient, for |
any liability that these contractual assumptions directly impose on |
those licensors and authors. |
All other non-permissive additional terms are considered "further |
restrictions" within the meaning of section 10. If the Program as you |
received it, or any part of it, contains a notice stating that it is |
governed by this License along with a term that is a further |
restriction, you may remove that term. If a license document contains |
a further restriction but permits relicensing or conveying under this |
License, you may add to a covered work material governed by the terms |
of that license document, provided that the further restriction does |
not survive such relicensing or conveying. |
If you add terms to a covered work in accord with this section, you |
must place, in the relevant source files, a statement of the |
additional terms that apply to those files, or a notice indicating |
where to find the applicable terms. |
Additional terms, permissive or non-permissive, may be stated in the |
form of a separately written license, or stated as exceptions; |
the above requirements apply either way. |
8. Termination. |
You may not propagate or modify a covered work except as expressly |
provided under this License. Any attempt otherwise to propagate or |
modify it is void, and will automatically terminate your rights under |
this License (including any patent licenses granted under the third |
paragraph of section 11). |
However, if you cease all violation of this License, then your |
license from a particular copyright holder is reinstated (a) |
provisionally, unless and until the copyright holder explicitly and |
finally terminates your license, and (b) permanently, if the copyright |
holder fails to notify you of the violation by some reasonable means |
prior to 60 days after the cessation. |
Moreover, your license from a particular copyright holder is |
reinstated permanently if the copyright holder notifies you of the |
violation by some reasonable means, this is the first time you have |
received notice of violation of this License (for any work) from that |
copyright holder, and you cure the violation prior to 30 days after |
your receipt of the notice. |
Termination of your rights under this section does not terminate the |
licenses of parties who have received copies or rights from you under |
this License. If your rights have been terminated and not permanently |
reinstated, you do not qualify to receive new licenses for the same |
material under section 10. |
9. Acceptance Not Required for Having Copies. |
You are not required to accept this License in order to receive or |
run a copy of the Program. Ancillary propagation of a covered work |
occurring solely as a consequence of using peer-to-peer transmission |
to receive a copy likewise does not require acceptance. However, |
nothing other than this License grants you permission to propagate or |
modify any covered work. These actions infringe copyright if you do |
not accept this License. Therefore, by modifying or propagating a |
covered work, you indicate your acceptance of this License to do so. |
10. Automatic Licensing of Downstream Recipients. |
Each time you convey a covered work, the recipient automatically |
receives a license from the original licensors, to run, modify and |
propagate that work, subject to this License. You are not responsible |
for enforcing compliance by third parties with this License. |
An "entity transaction" is a transaction transferring control of an |
organization, or substantially all assets of one, or subdividing an |
organization, or merging organizations. If propagation of a covered |
work results from an entity transaction, each party to that |
transaction who receives a copy of the work also receives whatever |
licenses to the work the party's predecessor in interest had or could |
give under the previous paragraph, plus a right to possession of the |
Corresponding Source of the work from the predecessor in interest, if |
the predecessor has it or can get it with reasonable efforts. |
You may not impose any further restrictions on the exercise of the |
rights granted or affirmed under this License. For example, you may |
not impose a license fee, royalty, or other charge for exercise of |
rights granted under this License, and you may not initiate litigation |
(including a cross-claim or counterclaim in a lawsuit) alleging that |
any patent claim is infringed by making, using, selling, offering for |
sale, or importing the Program or any portion of it. |
11. Patents. |
A "contributor" is a copyright holder who authorizes use under this |
License of the Program or a work on which the Program is based. The |
work thus licensed is called the contributor's "contributor version". |
A contributor's "essential patent claims" are all patent claims |
owned or controlled by the contributor, whether already acquired or |
hereafter acquired, that would be infringed by some manner, permitted |
by this License, of making, using, or selling its contributor version, |
but do not include claims that would be infringed only as a |
consequence of further modification of the contributor version. For |
purposes of this definition, "control" includes the right to grant |
patent sublicenses in a manner consistent with the requirements of |
this License. |
Each contributor grants you a non-exclusive, worldwide, royalty-free |
patent license under the contributor's essential patent claims, to |
make, use, sell, offer for sale, import and otherwise run, modify and |
propagate the contents of its contributor version. |
In the following three paragraphs, a "patent license" is any express |
agreement or commitment, however denominated, not to enforce a patent |
(such as an express permission to practice a patent or covenant not to |
sue for patent infringement). To "grant" such a patent license to a |
party means to make such an agreement or commitment not to enforce a |
patent against the party. |
If you convey a covered work, knowingly relying on a patent license, |
and the Corresponding Source of the work is not available for anyone |
to copy, free of charge and under the terms of this License, through a |
publicly available network server or other readily accessible means, |
then you must either (1) cause the Corresponding Source to be so |
available, or (2) arrange to deprive yourself of the benefit of the |
patent license for this particular work, or (3) arrange, in a manner |
consistent with the requirements of this License, to extend the patent |
license to downstream recipients. "Knowingly relying" means you have |
actual knowledge that, but for the patent license, your conveying the |
covered work in a country, or your recipient's use of the covered work |
in a country, would infringe one or more identifiable patents in that |
country that you have reason to believe are valid. |
If, pursuant to or in connection with a single transaction or |
arrangement, you convey, or propagate by procuring conveyance of, a |
covered work, and grant a patent license to some of the parties |
receiving the covered work authorizing them to use, propagate, modify |
or convey a specific copy of the covered work, then the patent license |
you grant is automatically extended to all recipients of the covered |
work and works based on it. |
A patent license is "discriminatory" if it does not include within |
the scope of its coverage, prohibits the exercise of, or is |
conditioned on the non-exercise of one or more of the rights that are |
specifically granted under this License. You may not convey a covered |
work if you are a party to an arrangement with a third party that is |
in the business of distributing software, under which you make payment |
to the third party based on the extent of your activity of conveying |
the work, and under which the third party grants, to any of the |
parties who would receive the covered work from you, a discriminatory |
patent license (a) in connection with copies of the covered work |
conveyed by you (or copies made from those copies), or (b) primarily |
for and in connection with specific products or compilations that |
contain the covered work, unless you entered into that arrangement, |
or that patent license was granted, prior to 28 March 2007. |
Nothing in this License shall be construed as excluding or limiting |
any implied license or other defenses to infringement that may |
otherwise be available to you under applicable patent law. |
12. No Surrender of Others' Freedom. |
If conditions are imposed on you (whether by court order, agreement or |
otherwise) that contradict the conditions of this License, they do not |
excuse you from the conditions of this License. If you cannot convey a |
covered work so as to satisfy simultaneously your obligations under this |
License and any other pertinent obligations, then as a consequence you may |
not convey it at all. For example, if you agree to terms that obligate you |
to collect a royalty for further conveying from those to whom you convey |
the Program, the only way you could satisfy both those terms and this |
License would be to refrain entirely from conveying the Program. |
13. Use with the GNU Affero General Public License. |
Notwithstanding any other provision of this License, you have |
permission to link or combine any covered work with a work licensed |
under version 3 of the GNU Affero General Public License into a single |
combined work, and to convey the resulting work. The terms of this |
License will continue to apply to the part which is the covered work, |
but the special requirements of the GNU Affero General Public License, |
section 13, concerning interaction through a network will apply to the |
combination as such. |
14. Revised Versions of this License. |
The Free Software Foundation may publish revised and/or new versions of |
the GNU General Public License from time to time. Such new versions will |
be similar in spirit to the present version, but may differ in detail to |
address new problems or concerns. |
Each version is given a distinguishing version number. If the |
Program specifies that a certain numbered version of the GNU General |
Public License "or any later version" applies to it, you have the |
option of following the terms and conditions either of that numbered |
version or of any later version published by the Free Software |
Foundation. If the Program does not specify a version number of the |
GNU General Public License, you may choose any version ever published |
by the Free Software Foundation. |
If the Program specifies that a proxy can decide which future |
versions of the GNU General Public License can be used, that proxy's |
public statement of acceptance of a version permanently authorizes you |
to choose that version for the Program. |
Later license versions may give you additional or different |
permissions. However, no additional obligations are imposed on any |
author or copyright holder as a result of your choosing to follow a |
later version. |
15. Disclaimer of Warranty. |
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY |
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT |
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY |
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, |
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM |
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF |
ALL NECESSARY SERVICING, REPAIR OR CORRECTION. |
16. Limitation of Liability. |
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING |
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS |
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY |
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE |
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF |
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD |
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), |
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF |
SUCH DAMAGES. |
17. Interpretation of Sections 15 and 16. |
If the disclaimer of warranty and limitation of liability provided |
above cannot be given local legal effect according to their terms, |
reviewing courts shall apply local law that most closely approximates |
an absolute waiver of all civil liability in connection with the |
Program, unless a warranty or assumption of liability accompanies a |
copy of the Program in return for a fee. |
END OF TERMS AND CONDITIONS |
How to Apply These Terms to Your New Programs |
If you develop a new program, and you want it to be of the greatest |
possible use to the public, the best way to achieve this is to make it |
free software which everyone can redistribute and change under these terms. |
To do so, attach the following notices to the program. It is safest |
to attach them to the start of each source file to most effectively |
state the exclusion of warranty; and each file should have at least |
the "copyright" line and a pointer to where the full notice is found. |
<one line to give the program's name and a brief idea of what it does.> |
Copyright (C) <year> <name of author> |
This program is free software: you can redistribute it and/or modify |
it under the terms of the GNU General Public License as published by |
the Free Software Foundation, either version 3 of the License, or |
(at your option) any later version. |
This program is distributed in the hope that it will be useful, |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
GNU General Public License for more details. |
You should have received a copy of the GNU General Public License |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
Also add information on how to contact you by electronic and paper mail. |
If the program does terminal interaction, make it output a short |
notice like this when it starts in an interactive mode: |
<program> Copyright (C) <year> <name of author> |
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. |
This is free software, and you are welcome to redistribute it |
under certain conditions; type `show c' for details. |
The hypothetical commands `show w' and `show c' should show the appropriate |
parts of the General Public License. Of course, your program's commands |
might be different; for a GUI interface, you would use an "about box". |
You should also get your employer (if you work as a programmer) or school, |
if any, to sign a "copyright disclaimer" for the program, if necessary. |
For more information on this, and how to apply and follow the GNU GPL, see |
<http://www.gnu.org/licenses/>. |
The GNU General Public License does not permit incorporating your program |
into proprietary programs. If your program is a subroutine library, you |
may consider it more useful to permit linking proprietary applications with |
the library. If this is what you want to do, use the GNU Lesser General |
Public License instead of this License. But first, please read |
<http://www.gnu.org/philosophy/why-not-lgpl.html>. |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/COPYING.LESSER |
---|
0,0 → 1,165 |
GNU LESSER GENERAL PUBLIC LICENSE |
Version 3, 29 June 2007 |
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> |
Everyone is permitted to copy and distribute verbatim copies |
of this license document, but changing it is not allowed. |
This version of the GNU Lesser General Public License incorporates |
the terms and conditions of version 3 of the GNU General Public |
License, supplemented by the additional permissions listed below. |
0. Additional Definitions. |
As used herein, "this License" refers to version 3 of the GNU Lesser |
General Public License, and the "GNU GPL" refers to version 3 of the GNU |
General Public License. |
"The Library" refers to a covered work governed by this License, |
other than an Application or a Combined Work as defined below. |
An "Application" is any work that makes use of an interface provided |
by the Library, but which is not otherwise based on the Library. |
Defining a subclass of a class defined by the Library is deemed a mode |
of using an interface provided by the Library. |
A "Combined Work" is a work produced by combining or linking an |
Application with the Library. The particular version of the Library |
with which the Combined Work was made is also called the "Linked |
Version". |
The "Minimal Corresponding Source" for a Combined Work means the |
Corresponding Source for the Combined Work, excluding any source code |
for portions of the Combined Work that, considered in isolation, are |
based on the Application, and not on the Linked Version. |
The "Corresponding Application Code" for a Combined Work means the |
object code and/or source code for the Application, including any data |
and utility programs needed for reproducing the Combined Work from the |
Application, but excluding the System Libraries of the Combined Work. |
1. Exception to Section 3 of the GNU GPL. |
You may convey a covered work under sections 3 and 4 of this License |
without being bound by section 3 of the GNU GPL. |
2. Conveying Modified Versions. |
If you modify a copy of the Library, and, in your modifications, a |
facility refers to a function or data to be supplied by an Application |
that uses the facility (other than as an argument passed when the |
facility is invoked), then you may convey a copy of the modified |
version: |
a) under this License, provided that you make a good faith effort to |
ensure that, in the event an Application does not supply the |
function or data, the facility still operates, and performs |
whatever part of its purpose remains meaningful, or |
b) under the GNU GPL, with none of the additional permissions of |
this License applicable to that copy. |
3. Object Code Incorporating Material from Library Header Files. |
The object code form of an Application may incorporate material from |
a header file that is part of the Library. You may convey such object |
code under terms of your choice, provided that, if the incorporated |
material is not limited to numerical parameters, data structure |
layouts and accessors, or small macros, inline functions and templates |
(ten or fewer lines in length), you do both of the following: |
a) Give prominent notice with each copy of the object code that the |
Library is used in it and that the Library and its use are |
covered by this License. |
b) Accompany the object code with a copy of the GNU GPL and this license |
document. |
4. Combined Works. |
You may convey a Combined Work under terms of your choice that, |
taken together, effectively do not restrict modification of the |
portions of the Library contained in the Combined Work and reverse |
engineering for debugging such modifications, if you also do each of |
the following: |
a) Give prominent notice with each copy of the Combined Work that |
the Library is used in it and that the Library and its use are |
covered by this License. |
b) Accompany the Combined Work with a copy of the GNU GPL and this license |
document. |
c) For a Combined Work that displays copyright notices during |
execution, include the copyright notice for the Library among |
these notices, as well as a reference directing the user to the |
copies of the GNU GPL and this license document. |
d) Do one of the following: |
0) Convey the Minimal Corresponding Source under the terms of this |
License, and the Corresponding Application Code in a form |
suitable for, and under terms that permit, the user to |
recombine or relink the Application with a modified version of |
the Linked Version to produce a modified Combined Work, in the |
manner specified by section 6 of the GNU GPL for conveying |
Corresponding Source. |
1) Use a suitable shared library mechanism for linking with the |
Library. A suitable mechanism is one that (a) uses at run time |
a copy of the Library already present on the user's computer |
system, and (b) will operate properly with a modified version |
of the Library that is interface-compatible with the Linked |
Version. |
e) Provide Installation Information, but only if you would otherwise |
be required to provide such information under section 6 of the |
GNU GPL, and only to the extent that such information is |
necessary to install and execute a modified version of the |
Combined Work produced by recombining or relinking the |
Application with a modified version of the Linked Version. (If |
you use option 4d0, the Installation Information must accompany |
the Minimal Corresponding Source and Corresponding Application |
Code. If you use option 4d1, you must provide the Installation |
Information in the manner specified by section 6 of the GNU GPL |
for conveying Corresponding Source.) |
5. Combined Libraries. |
You may place library facilities that are a work based on the |
Library side by side in a single library together with other library |
facilities that are not Applications and are not covered by this |
License, and convey such a combined library under terms of your |
choice, if you do both of the following: |
a) Accompany the combined library with a copy of the same work based |
on the Library, uncombined with any other library facilities, |
conveyed under the terms of this License. |
b) Give prominent notice with the combined library that part of it |
is a work based on the Library, and explaining where to find the |
accompanying uncombined form of the same work. |
6. Revised Versions of the GNU Lesser General Public License. |
The Free Software Foundation may publish revised and/or new versions |
of the GNU Lesser General Public License from time to time. Such new |
versions will be similar in spirit to the present version, but may |
differ in detail to address new problems or concerns. |
Each version is given a distinguishing version number. If the |
Library as you received it specifies that a certain numbered version |
of the GNU Lesser General Public License "or any later version" |
applies to it, you have the option of following the terms and |
conditions either of that published version or of any later version |
published by the Free Software Foundation. If the Library as you |
received it does not specify a version number of the GNU Lesser |
General Public License, you may choose any version of the GNU Lesser |
General Public License ever published by the Free Software Foundation. |
If the Library as you received it specifies that a proxy can decide |
whether future versions of the GNU Lesser General Public License shall |
apply, that proxy's public statement of acceptance of any version is |
permanent authorization for you to choose that version for the |
Library. |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/Flight-Ctrl_MEGA644_V0_67g.hex |
---|
0,0 → 1,1984 |
:100000000C948E030C94AB030C94AB030C94AB03D5 |
:100010000C94AB030C94AB030C94AB030C94AB03A8 |
:100020000C94AB030C94AF0C0C94AB030C94AB038B |
:100030000C940D160C94AB030C94AB030C94AB0313 |
:100040000C94AB030C94AB030C94520D0C94E2365D |
:100050000C9453060C94AB030C941D060C94AB0348 |
:100060000C94FA0D0C94AB030C944B150C94AB034D |
:10007000EC08A409F808A409A409A4093A090B0981 |
:10008000A409A4092D0966096609660966096609B5 |
:100090003E09A409A4092609A4093609240E390E2B |
:1000A000420E4C0E690E810E9A0EB70ED40EF10E52 |
:1000B000BF0F09115111B21108125C12E01287131F |
:1000C000DD13011437147314B114EA14641569159F |
:1000D0007A15881595158D159515A9150A0A0D001F |
:1000E0004E65757472616C0048656164696E67483D |
:1000F0006F6C64000A0D537465756572756E673AAE |
:1001000020004F4B0A0D000A0D4162676C65696360 |
:1001100068204C756674647275636B73656E736F7B |
:10012000722E2E000A0D4B616C69627269657265F0 |
:10013000204B6F6D70617373000A0D42656E7574AC |
:100140007A6520506172616D657465727361747A4D |
:10015000202564000A0D414343206E6963687420C2 |
:1001600061626765676C696368656E21000A0D49A5 |
:100170006E69742E20454550524F4D3A2047656EAA |
:100180006572696572652044656661756C742D5091 |
:100190006172616D657465722E2E2E000A0D3D3DF3 |
:1001A0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D7F |
:1001B0003D3D3D3D3D3D3D3D3D3D3D3D000A0D4606 |
:1001C0006C69676874436F6E74726F6C0A0D486176 |
:1001D0007264776172653A25642E25640A0D536F47 |
:1001E0006674776172653A5625642E25642563200E |
:1001F000002E005A5F52616E67653A2020253469EF |
:1002000000595F52616E67653A20202534690058B5 |
:100210005F52616E67653A2020253469004D4D3389 |
:100220002052616E6765005A5F4F66667365743A67 |
:10023000202025336900595F4F66667365743A2044 |
:100240002025336900585F4F66667365743A202035 |
:10025000253369004D4D33204F66660052616E674D |
:10026000653A2533692D253369005374656C6C75C7 |
:100270006E673A2025336900536574706F696E7438 |
:10028000202025336900536572766F202000506F5F |
:100290007469343A202025336900506F7469333A09 |
:1002A000202025336900506F7469323A20202533AD |
:1002B0006900506F7469313A202025336900537406 |
:1002C0006172743A2020202020253569004D657325 |
:1002D00073776572743A2020253569005269636826 |
:1002E00074756E673A2020253569004B6F6D70611B |
:1002F00073732020202020202000456D70662E5032 |
:100300006567656C3A253569005370616E6E756E70 |
:10031000673A202025356900486F636820253469D5 |
:1003200020282533692900526F6C6C202534692000 |
:100330002825336929004E69636B202534692028FC |
:100340002533692900414343202D2053656E736F87 |
:100350007200476965722025346920282533692990 |
:1003600000526F6C6C2025346920282533692900E0 |
:100370004E69636B2025346920282533692900479D |
:100380006965722025346920282533692900526F58 |
:100390006C6C20253469202825336929004E696357 |
:1003A0006B20253469202825336929004779726F2D |
:1003B000202D2053656E736F720050333A253469D7 |
:1003C000202050343A253469200050313A253469D0 |
:1003D000202050323A253469200047733A25346989 |
:1003E000202047693A25346920004E693A2534694E |
:1003F0002020526F3A25346920004B373A25346962 |
:1004000020204B383A25346920004B353A25346991 |
:1004100020204B363A25346920004B333A25346985 |
:1004200020204B343A25346920004B313A25346979 |
:1004300020204B323A25346920004B6F6D70617378 |
:10044000733A20202025356900526F6C6C3A2020C9 |
:1004500020202020253569004E69636B3A2020203A |
:1004600020202025356900616B742E204C61676562 |
:100470000048F668656E726567656C756E67004B5F |
:1004800065696E6520004F66662020202020203A96 |
:1004900020253569004C756674647275636B3A206B |
:1004A00025356900536F6C6C486F6568653A202587 |
:1004B000356900486F6568653A2020202020253581 |
:1004C000690028632920486F6C6765722042757344 |
:1004D000730053657474696E673A20256420004880 |
:1004E000573A5625642E25642053573A25642E2505 |
:1004F000642563002B2B204D696B726F4B6F7074FA |
:100500006572202B2B005B25695D0000010203044E |
:100510000405060708090A0B0B0C0D0E0F1011112C |
:10052000121314151516171818191A1B1B1C1D1D4C |
:100530001E1F1F202121222323242425252627278F |
:10054000282829292A2A2B2B2C2C2D2D2D2E2E2FF5 |
:100550002F3030303131323232333333343434357A |
:100560003535363636373737373838383939393917 |
:100570003A3A3A3A3B3B3B3B3C3C3C3C3C3D3D3DC4 |
:100580003D3E3E3E3E3E3F3F3F3F3F3F404040407E |
:100590004040414141414141424242424242424344 |
:1005A000434343434343444444444444444445450F |
:1005B00045454545454545464646464646464646E2 |
:1005C00047474747474747474747474848484848B6 |
:1005D0004848484848484949494949494949494991 |
:1005E000494949494A4A4A4A4A4A4A4A4A4A4A4A6F |
:1005F0004A4A4B4B4B4B4B4B4B4B4B4B4B4B4B4B4D |
:100600004B4B4B4C4C4C4C4C4C4C4C4C4C4C4C4C2D |
:100610004C4C4C4C4C4C4D4D4D4D4D4D4D4D4D4D10 |
:100620004D4D4D4D4D4D4D4D4D4D4D4D4E4E4E4EF6 |
:100630004E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4EDA |
:100640004E4E4E4E4E4E4F4F4F4F4F4F4F4F4F4FC0 |
:100650004F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4FAA |
:100660004F4F4F4F4F0000120024003600470059F3 |
:10067000006B007D008F00A000B200C300D500E633 |
:1006800000F80009011A012B013C014D015E016FC8 |
:100690000180019001A001B101C101D101E101F08E |
:1006A0000100020F021F022E023D024B025A026895 |
:1006B00002760284029202A002AD02BA02C702D4FC |
:1006C00002E102ED02F902050310031C03270332C5 |
:1006D000033C03470351035B0364036E037703800A |
:1006E00003880390039803A003A703AF03B503BCDB |
:1006F00003C203C803CE03D303D803DD03E203E63A |
:1007000003EA03ED03F003F303F603F803FA03FC33 |
:1007100003FE03FF03FF03000400040011241FBEB7 |
:10072000CFEFD0E1DEBFCDBF13E0A0E0B1E0E8E362 |
:10073000F9E702C005900D92A23AB107D9F717E088 |
:10074000A2EAB3E001C01D92A13CB107E1F70E940B |
:10075000EB030C949B3C0C94000022E030E0D901A8 |
:100760000E947D3C802D863028F082E0D901082E41 |
:100770000E948A3C99270895FB01863008F085E0A5 |
:10078000282F2150842F9927A6E42A9FD0011124D5 |
:10079000A65FBF4F019724F001900E948A3CFACFD8 |
:1007A000A2E0B0E0022E0E948A3C0895FB01282FAF |
:1007B000863008F025E0842F99272150A6E42A9F4F |
:1007C000D0011124A65FBF4F019724F00E947D3C09 |
:1007D0000192FACF08951F93CF93DF9314B815B801 |
:1007E000189B02C08BE001C08AE08093000181E881 |
:1007F00087B98FEF88B98BE184B981E085B98EE341 |
:100800008AB9579A87EF8BB984B7877F84BF809165 |
:1008100060008861809360001092600080ED97E036 |
:100820009093C1038093C003109254041092530418 |
:1008300010920A0710920907109252041092510464 |
:100840001092500410924F04809100018A3011F4EC |
:10085000289801C0289A0E947C0C0E9423080E94BC |
:10086000F8150E94F40D0E9431150E9429397894E0 |
:100870001092080683E48093090687E080930A06B5 |
:100880002091000187E690E09F938F9383E490E0AE |
:100890009F938F931F921F92822F6AE00E94D03BFA |
:1008A000892F99279F938F93822F0E94D03B99275E |
:1008B0009F938F938DEB91E09F938F931F920E9454 |
:1008C000030A8CE991E09F938F931F920E94030A81 |
:1008D000299AA1E0B0E00E947D3C802D2DB73EB763 |
:1008E000205F3F4F2DBF843409F43FC08DE691E077 |
:1008F0009F938F931F920E94030A0E942F2310E060 |
:100900000F900F900F90123049F40E949D2246E400 |
:1009100061E377E082E00E94BC0302C0133051F42F |
:100920000E940C2246E461E377E083E00E94BC036E |
:1009300014E002C0143010F00E949D2246E461E3EE |
:1009400077E0812F0E94BC031F5F1630E0F283E046 |
:1009500022E030E0D901082E0E948A3C84E4215034 |
:100960003040D901082E0E948A3CC4E0D0E0DE016C |
:100970000E947D3C802D853050F084E591E09F936E |
:100980008F931F920E94030A0F900F900F9022974F |
:10099000DE010E947D3C802D863028F082E0DE0161 |
:1009A000082E0E948A3C46E461E377E00E94D60369 |
:1009B000DE010E947D3C802D863028F082E0DE0141 |
:1009C000082E0E948A3C99279F938F9389E391E098 |
:1009D0009F938F931F920E94030A84EF91E00E94DD |
:1009E0009A0CEC010F900F900F900F900F90CE018A |
:1009F0000E94A30C8823D9F3E0913307FF27EE0F61 |
:100A0000FF1FEB5FF84F8081918185369105C4F01F |
:100A1000E0913407FF27EE0FFF1FEB5FF84F808157 |
:100A200091818536910564F084E291E09F938F93E4 |
:100A30001F920E94030A0E945D380F900F900F9042 |
:100A40008091390780FF20C087E091E09F938F93CA |
:100A50001F920E94030A88EE93E00E949A0CEC0118 |
:100A60000E9460100F900F900F90CE010E94A30C77 |
:100A70008823D9F382E091E09F938F931F920E9485 |
:100A8000030A0F900F900F900E949E20809100010A |
:100A90008A3011F4289801C0289A80ED97E090934D |
:100AA000C1038093C00388EE93E090930306809384 |
:100AB000020685E58093FD0584EF90E09F938F9378 |
:100AC0001F920E94030A809139070F900F900F9098 |
:100AD00082FF03C088EE90E002C080EE90E09F931A |
:100AE0008F931F920E94030A0F900F900F908CED2E |
:100AF00090E09F938F931F920E94030A0E94A4107C |
:100B000088E893E190938603809385030F900F907C |
:100B10000F908091BF03882309F462C01092BF0335 |
:100B20000E94C0230E945720209100012A3011F416 |
:100B3000289801C0289A80910301882321F08150D0 |
:100B40008093030110C01092B2031092B30310926D |
:100B50006F0410926E04109271041092700410923F |
:100B600073041092720480914E04882329F08091BE |
:100B70004E04815080934E048091850390918603AA |
:100B8000892B01F585E090E090938603809385039F |
:100B90000E94D21580910403909105038F5F9F4FAF |
:100BA000F9F4809155048823D9F080E197E290937D |
:100BB000C1038093C00380E890E090930503809385 |
:100BC00004030EC080918503909186030197909352 |
:100BD0008603809385032A3011F4289801C0289A4F |
:100BE0000E943E080E94CE08CE010E94A30C8823DA |
:100BF00009F48FCF209108033091090380914907B0 |
:100C00009927281739079CF48091040390910503D4 |
:100C10008F5F9F4F61F480E797E19093C1038093CA |
:100C2000C00380E093E0909305038093040384E67F |
:100C300090E00E949A0CEC016CCF1F920F920FB6BD |
:100C40000F9211248F939F93EF93FF938091010153 |
:100C50008823E1F48091BB039091BC0301969093AB |
:100C6000BC038093BB03FC01E153FB4FE081ED30FB |
:100C700019F08639910539F41092BC031092BB0328 |
:100C800081E080930101E093C60004C01092BC0390 |
:100C90001092BB03FF91EF919F918F910F900FBE28 |
:100CA0000F901F9018951F920F920FB60F9211245C |
:100CB0002F933F934F938F939F93AF93BF93CF9374 |
:100CC000DF93EF93FF938091C6008093A60340913A |
:100CD000B603463910F01092B5038091A6038D300B |
:100CE00009F05CC08091B503823009F057C01092C2 |
:100CF000B503A42FBB27FD01E05FF94F3081ED0163 |
:100D0000CF5ED94F28818091B9039091BA03831B9C |
:100D10009109821B91099F709093BA038093B90344 |
:100D20009C0196E0369527959A95E1F7235C2093F0 |
:100D3000B803982F9F73935C9093B7038081281713 |
:100D400029F48881981711F491E006C08091A903D5 |
:100D50008F5F8093A90390E08091A703882309F017 |
:100D600064C0992309F461C081E08093A703409394 |
:100D7000AA03AE5EB94F8DE08C9380911406823544 |
:100D800009F053C088E190E02CE00FB6F894A895E4 |
:100D9000809360000FBE2093600047C08091B50330 |
:100DA0008130D9F0813018F08230E9F530C080917F |
:100DB000A603833239F48091A703882319F481E0D4 |
:100DC0008093B5038091A6038093120681E08093FF |
:100DD000B6038091A603992715C082E08093B503DE |
:100DE000E42FFF278091A603EE5EF94F80834F5FCB |
:100DF0004093B6032091A6038091B9039091BA0362 |
:100E0000820F911D9093BA038093B9030EC0E42F13 |
:100E1000FF278091A603EE5EF94F8083463938F3B1 |
:100E20001092B503E7CF1092B503FF91EF91DF91D8 |
:100E3000CF91BF91AF919F918F914F913F912F9102 |
:100E40000F900FBE0F901F901895DC0120E030E04E |
:100E500040E050E0EFECF4E005C08191280F311D37 |
:100E60004F5F5F4F4A175B07C1F73F70C90136E01C |
:100E7000969587953A95E1F7835CFD01E153FB4F29 |
:100E8000808311962F73235CFD01E153FB4F208378 |
:100E9000A053BB4F8DE08C93109201018091CF0441 |
:100EA0008093C6000895EF92FF920F931F93CF9304 |
:100EB000DF937A01722F93E29093CF046093D00472 |
:100EC0008093D10403E010E060E0A2EDB4E046C0FE |
:100ED000F701E60FF11D90816F5F715019F4E0E0AA |
:100EE00040E00FC0F701E60FF11D40816F5F7150C8 |
:100EF00011F4E0E006C0F701E60FF11DE0816F5F3D |
:100F00007150892F86958695835C8C935527892F00 |
:100F100099278370907024E0880F991F2A95E1F734 |
:100F20009A0194E0369527959A95E1F7822B835C98 |
:100F3000ED0189834F705070440F551F440F551FAA |
:100F40008E2F8295869586958370842B835C8A8309 |
:100F5000EF73E35CEB830C5F1F4F1496772309F06C |
:100F6000B7CFC8010E942507E6E0CDB7DEB70C94E5 |
:100F7000683C1F93CF93DF93EC0170E0A22FBB2757 |
:100F8000129748C0E42FFF27EE5EF94F30814F5F84 |
:100F9000E42FFF27EE5EF94F50814F5FE42FFF27CC |
:100FA000EE5EF94F10814F5FE42FFF27EE5EF94FA1 |
:100FB00020814F5F842F9927A817B90774F15D53DB |
:100FC000FE01E70FF11D3D53330F330F852F82953F |
:100FD0008F70382B3083613001F1912F9D537F5FEB |
:100FE000FE01E70FF11D71505295507F892F8695B4 |
:100FF0008695582B508363506F3F79F07E5FFE01DA |
:10100000E70FF11D9295990F990F907C2D53922B1C |
:1010100090837F5F662309F0B5CFDF91CF911F9159 |
:1010200008951F93182F8A3019F48DE00E9411083B |
:101030008091C00085FFFCCF1093C60080E090E057 |
:101040001F9108950895E1ECF0E088E18083A0EC21 |
:10105000B0E08C9182608C938081806880838081F5 |
:10106000806480838AE28093C40088EC90E00E94D0 |
:101070009A0C9093FC058093FB05089580910101E3 |
:10108000882309F48AC08091A203882371F080919B |
:101090000101882351F02BE04DEF55E06091CE0423 |
:1010A00087E40E9453071092A2038091FB05909160 |
:1010B000FC050E94A30C882321F48091A4038823BB |
:1010C000B1F080910101882391F022E448EA56E0D2 |
:1010D0006091CE0484E40E9453071092A40384EF2D |
:1010E00091E00E949A0C9093FC058093FB0560911F |
:1010F00002016F3F89F0462F552734E0440F551FFA |
:101100003A95E1F74C5F5E4F605D20E181E40E941B |
:1011100053078FEF809302018091A303882359F135 |
:1011200080910101882339F10E94AD101092A30330 |
:101130003091AC03932F9F5F9093AC03943021F0D8 |
:101140008091AD03882359F026E145E057E060E047 |
:1011500084E30E9453078FEF8093AC030CC044E1FB |
:10116000949FA0011124465E5C4F24E160E0832F30 |
:101170008F5C0E9453078091A503882371F08091B2 |
:101180000101882351F02AE048E056E06091CE0446 |
:1011900086E50E9453071092A5030895A2E0B0E0EF |
:1011A000E4EDF8E00C944F3C8091A703882309F408 |
:1011B000CDC08FEF80930301809114069927AA2751 |
:1011C000BB27FC01E156F040E631F10508F0BCC058 |
:1011D000E85CFF4F0C94773C2091AA0343E062E067 |
:1011E000CE0101960E94B907898180930201ACC0AB |
:1011F0002091AA0343E06BE08DEF95E00E94B907D0 |
:101200008091E6039091FF05892B8093E60381E0AE |
:101210008093A40399C02091AA0343E062E0CE0129 |
:1012200001960E94B9078091E6039981892B8093EA |
:10123000E6038A818F3F21F481E08093AD0302C0F1 |
:101240001092AD0381E08093A3037EC02091AA0396 |
:1012500043E064E08EEA93E006C02091AA0343E0F5 |
:1012600063E082EB93E00E94B9076EC081E0809357 |
:10127000A5036AC081E08093A20366C02091AA03FF |
:1012800043E062E0CE0101960E94B90789818F3F59 |
:1012900089F0863010F085E0898346E461E377E0E9 |
:1012A00089810E94D603898126E441E357E0609159 |
:1012B000CE0408C01091CE040E94AD0326E441E3A1 |
:1012C00057E0612F855B0E9453073EC02091AA031F |
:1012D00043E066E481E397E00E94B9078091140639 |
:1012E00046E461E377E08B560E94BC0380911406CC |
:1012F0008B56A2E0B0E0082E0E948A3C60915C0709 |
:1013000077278827992724EC39E040E050E00E94B5 |
:10131000B13B609387037093880380938903909314 |
:101320008A0360915D077727882799270E94B13B40 |
:1013300060938B0370938C0380938D0390938E0343 |
:101340000E94AD030E94F7211092A703E3E0CE5F55 |
:101350000C946B3C982F8091EA06813069F480915F |
:10136000E503E82FFF27E65EFC4F90838F5F8093B5 |
:10137000E50321E030E005C0892F0E941108282FE5 |
:101380003327C90108951F93182F04C080E30E94DA |
:10139000AA0911501116D4F31F9108951F93182F05 |
:1013A00004C080E20E94AA0911501116D4F31F91C3 |
:1013B00008950F931F93CF93DF938C01EB0108C027 |
:1013C000F8010F5F1F4FE4918E2F0E94AA09219709 |
:1013D0002097B1F7DF91CF911F910F9108950F934F |
:1013E0001F93CF93DF938C01EB0106C0F80181912D |
:1013F0008F010E94AA0921972097C1F7DF91CF9111 |
:101400001F910F910895A3E3B0E0E9E0FAE00C9496 |
:10141000403C29968FAD29978093EA06CE01855BE3 |
:101420009F4F9D838C832B968EAD9FAD2B979FA74F |
:101430008EA722243324210102C0130124010EA50A |
:101440001FA502C00F5F1F4FF801F490FF2019F095 |
:10145000F5E2FF16B9F7B8018EA59FA5681B790BB9 |
:1014600011F00E94D909FF2009F442C20F5F1F4FFB |
:101470001FA70EA71982AC81BD811BAA1AAA9FEFD4 |
:1014800099ABEEA5FFA5CF0101969FA78EA7B490BB |
:1014900095E7B91621F08B2D8062883789F4EBA986 |
:1014A000E0FF07C02D903D904D905C9013971496EF |
:1014B00007C08D919C9111971C01442455241296CC |
:1014C000F0E2BF1621F489818823D9F685C083E232 |
:1014D000B81609F483C09AE2B91621F0EDE2BE16FF |
:1014E00069F408C0FD011296E081EAABE7FFC9CFBD |
:1014F000E195EAABFBA9F061FF7D72C08BE2B81603 |
:1015000009F46AC09EE2B916B1F52EA53FA52F5F7A |
:101510003F4FEEA5FFA584918A3221F0B82E20E03E |
:1015200030E01BC0FD0112964081518157FF02C07F |
:101530004FEF5FEF49AB3FA72EA7A3CFC90103E051 |
:10154000880F991F0A95E1F7220F331F280F391FC3 |
:101550002B0D311D20533040B49031968B2D80538C |
:101560008A3060F3FFA7EEA7A90137FF02C04FEF53 |
:101570005FEF49AB8DCFF0E3BF1631F48BA984FD4B |
:1015800080CF80628BAB7DCF8B2D81538930E8F487 |
:1015900020E030E0C901F3E0880F991FFA95E1F7E8 |
:1015A000220F331F280F391F2B0D311D20533040C0 |
:1015B000EEA5FFA5CF0101969FA78EA7B4908B2D16 |
:1015C00080538A3038F32AAB63CF98E6B91651F4CA |
:1015D000EBA9E460EBAB55CFB98253CFFBA9F86020 |
:1015E000FBAB4FCF8CE6B81621F49BA991609BAB67 |
:1015F00048CFBD83AC83E3E6BE1639F41296BD83B3 |
:10160000AC8312978C918E8318C1F4E4BF1639F025 |
:1016100084E6B81639F099E6B91659F503C0EBA976 |
:10162000E160EBABFBA9F0FF08C01496BD83AC836F |
:101630005E904E903E902E900AC01296BD83AC8371 |
:101640009E918E911C01442437FC4094542C57FCED |
:1016500003C08AE088AB92C05094409430942094A8 |
:10166000211C311C411C511C8DE289839AE098ABEE |
:1016700085C0EFE4BE1629F0FFE6BF1639F488E016 |
:1016800061C09BA991609BABE8E056C0F0E7BF1634 |
:1016900071F41296BD83AC839E918E911C014424FB |
:1016A00055248BA980648BAB78E7B72E5EC0E3E747 |
:1016B000BE16D9F51296BD83AC83DE90CE90C114D0 |
:1016C000D10489F488E28E838EE68F8385E788874C |
:1016D0008CE689878A8789E28B871C8666E0C62E1E |
:1016E000D12CCC0EDD1EF9A9F7FD13C04F2F5527C5 |
:1016F00047FD509560E070E0C6010E943C3A0097BB |
:1017000011F419A90DC08C1919A981174CF4182FBF |
:1017100007C0F60101900020E9F731971E2F1C1930 |
:1017200019824201310140E094C085E5B81631F0DC |
:1017300095E7B91649F4EAE0E8AB1FC0FBA9F160F0 |
:10174000FBAB8AE088AB19C098E5B91621F0E8E751 |
:10175000BE1609F06EC0FBA9F3FD02C080E1F2CF16 |
:10176000211431044104510419F490E198AB05C0EF |
:10177000EBA9E064EBABF0E1F8AB198289A987FD36 |
:1017800003C09BA99F7D9BAB2114310441045104EC |
:1017900061F4E9A9EE2349F46624772443015EE26B |
:1017A000C52ED12CCC0EDD1E3EC04EE2C42ED12C57 |
:1017B000CC0EDD1EF8A9EF2EFF2400271127C20151 |
:1017C000B101A80197010E94033C6A3020F430E384 |
:1017D000A32EA60E08C027E5A22EA60E88E5B816F1 |
:1017E00011F49FEDA922F601A2926F01C201B1018D |
:1017F000A80197010E94033C39014A012E143F04BD |
:101800004006510618F019012A01D9CFF8A9F8307D |
:1018100051F48BA983FF07C090E3A91621F080E360 |
:10182000F60182936F01CE018C19182F125D49A920 |
:1018300010C0BB2009F45CC0BE8219824201310194 |
:1018400000E096E0C92ED12CCC0EDD1E11E021E087 |
:1018500005C0212F042F011B07FD00E0898188238B |
:1018600019F0812F8F5F07C09BA996FD02C0812FC1 |
:1018700002C0822F8E5FA82EA00EEBA9EE2EFF24B1 |
:1018800080E3482E512C4E205F204114510421F456 |
:101890008AA98A190E94CE098981882329F061E0EA |
:1018A00070E0CE01019609C0E6FE09C080E38A839C |
:1018B000BB8262E070E0CE0102960E94EF09F0E286 |
:1018C0004F16510421F48AA98A190E94C309802F56 |
:1018D0000E94C309612F772767FD7095C6010E949A |
:1018E000EF09E4FEAACD8AA98A190E94CE09A5CDE6 |
:1018F000E2E1CD5C0C945C3C82E085BD83EA84BD72 |
:1019000017BC88E788BD96E096BD83EC8093B00055 |
:101910009093B100E0E7F0E0808182608083EEE6A2 |
:10192000F0E08081816080838AE08093B300109230 |
:10193000B20008952091BD033091BE032F5F3F4F49 |
:10194000820F931F08952091BD033091BE03821B27 |
:10195000930B892F992786958074992708951F9254 |
:101960000F920FB60F921124EF92FF920F931F93D5 |
:101970002F933F934F935F936F937F938F939F9397 |
:10198000AF93BF93CF93DF93EF93FF9380910603C1 |
:101990008150809306038F3F09F069C083E88093EC |
:1019A000B00080919C03C82FDD27D093C303C09360 |
:1019B000C20380916607E0905307209101043091A3 |
:1019C0000204409103045091040480FF18C0FF24D6 |
:1019D00000271127CA01B90120E830E040E050E0BB |
:1019E0000E94253CC801B7010E94B13B20E032E0D3 |
:1019F00040E050E00E94253CC20FD31F17C0FF24D7 |
:101A000000271127CA01B90120E830E040E050E08A |
:101A10000E94253CC801B7010E94B13B20E032E0A2 |
:101A200040E050E00E94253CC21BD30BD093C3037F |
:101A3000C093C2032091C2033091C3038091540725 |
:101A400099272817390734F080915507992782176D |
:101A5000930724F49093C3038093C2038091C2033D |
:101A60008093B300809156078093060304C083E0FF |
:101A70008093B0005F98FF91EF91DF91CF91BF917C |
:101A8000AF919F918F917F916F915F914F913F9116 |
:101A90002F911F910F91FF90EF900F900FBE0F901D |
:101AA0001F9018951F920F920FB60F9211242F932B |
:101AB0003F934F935F936F937F938F939F93AF93D6 |
:101AC000BF93EF93FF938091C40381508093C4032D |
:101AD0008F3FB9F48AE08093C403809107038F5F3E |
:101AE000817080930703882319F481E08093BF03FA |
:101AF0008091BD039091BE0301969093BE038093A5 |
:101B0000BD038091C0039091C1030297B0F0809112 |
:101B1000C0039091C10301979093C1038093C003C8 |
:101B20008091C0039091C10320910403309105037B |
:101B300082239323892BD1F406C08FEF9FEF9093DC |
:101B4000050380930403809100018A3039F404C0B6 |
:101B50005A9A05C0479A03C05A9801C04798809185 |
:101B6000390783FF08C00E942B3805C0809100010F |
:101B70008A3081F7EDCFFF91EF91BF91AF919F91A7 |
:101B80008F917F916F915F914F913F912F910F9026 |
:101B90000FBE0F901F9018952091BD033091BE038A |
:101BA0002F5F3F4F280F391F4FEE02C040937A003E |
:101BB0008091BD039091BE03B901681B790B77FF3B |
:101BC000F5CF08952091BD033091BE032F5F3F4FA5 |
:101BD000280F391F8091BD039091BE03A901481BB6 |
:101BE000590B57FFF7CF089510927C008FEE80932A |
:101BF0007A0008951F920F920FB60F921124DF9270 |
:101C0000EF92FF920F931F932F933F934F935F9306 |
:101C10006F937F938F939F93AF93BF93CF93DF93F4 |
:101C2000EF93FF9310927A008091E103D82ED39422 |
:101C3000D092E103E82FFF27EB30F10508F022C234 |
:101C4000E25BFF4F0C94773C809178009091790093 |
:101C50009093E0038093DF0381E08093E20380911F |
:101C6000D9039091DA0301969093DA038093D90314 |
:101C7000FFC180917800909179009093DE0380936A |
:101C8000DD0390C080917800909179009093DC03FF |
:101C90008093DB0384E070C14091080350910903F5 |
:101CA00080917800909179009A01220F331F240FC0 |
:101CB000351F63E070E00E94DC3B260F371F36952E |
:101CC000279536952795309309032093080386E0DE |
:101CD00053C18091FB039091FC03209178003091D7 |
:101CE0007900821B930B9093EC068093EB06809116 |
:101CF000EB069091EC069093CC038093CB0387E0A6 |
:101D00003BC180917800909179002091F903309146 |
:101D1000FA03821B930B9093F7068093F60680914B |
:101D2000F6069091F7069093CE038093CD03109220 |
:101D3000E2039EC1809100012091DF033091E00316 |
:101D40008A3049F48091780090917900820F931F36 |
:101D50009695879506C08091780090917900820FC2 |
:101D6000931F9093CA038093C90381E005C18091BA |
:101D700000012091DD033091DE038A3049F4809127 |
:101D8000780090917900820F931F9695879506C0F1 |
:101D90008091780090917900820F931F9093C803EF |
:101DA0008093C70382E0E8C0809100012091DB03AB |
:101DB0003091DC038A3049F4809178009091790069 |
:101DC000820F931F9695879506C080917800909119 |
:101DD0007900820F931F9093C6038093C50385E01B |
:101DE000CBC06091780070917900E090FD03F09095 |
:101DF000FE030091FF0310910004882777FD809572 |
:101E0000982F0E94EF3AA80197010E94493A0E9438 |
:101E1000D23A7093D0036093CF032091CF033091D7 |
:101E2000D003E091EB06F091EC068091F6069091DC |
:101E3000F70697FF03C0909581959F4F64E070E08F |
:101E40000E94F03BEB01CF01F7FF03C09095819515 |
:101E50009F4F64E070E00E94F03B260F371F2C0F6D |
:101E60003D1F3093D0032093CF038091CF039091F7 |
:101E7000D003029704F16091FD037091FE038091FD |
:101E8000FF039091000420E030E048E454E40E9415 |
:101E9000F93A88230CF03CC06091FD037091FE0379 |
:101EA0008091FF03909100042AE037ED43EA5CE360 |
:101EB0000E944A3A25C08091CF039091D0038F5F52 |
:101EC0009F4F34F56091FD037091FE038091FF03F5 |
:101ED0009091000420E030E046E154E40E94FC3A96 |
:101EE0001816B4F46091FD037091FE038091FF0316 |
:101EF000909100042AE037ED43EA5CE30E94493AFE |
:101F00006093FD037093FE038093FF03909300049E |
:101F100081E08093D603809178009091790090932E |
:101F2000EE068093ED06E090CF03F090D0030027FB |
:101F3000F7FC0095102F8091390490913A04A091FC |
:101F40003B04B0913C04E80EF91E0A1F1B1FC80198 |
:101F5000B70120E034E040E050E00E94253CE21A66 |
:101F6000F30A040B150BE0923904F0923A04009343 |
:101F70003B0410933C0483E08093E20379C080919A |
:101F8000FB069091FC062091780030917900820F39 |
:101F9000931F9093FC068093FB068091F3068F5F5E |
:101FA0008093F3068091F306853008F46BC080912E |
:101FB00078009091790090930F0380930E03109214 |
:101FC000F3068091EF069091F0062091FB06309188 |
:101FD000FC06821B930B2091560430915704821B00 |
:101FE000930B9093D8038093D7036091FB06709175 |
:101FF000FC06E0900A03F0900B0300910C03109193 |
:102000000D03882777FD8095982FA8019701220F4F |
:10201000331F441F551F2E0D3F1D401F511F620FC0 |
:10202000731F841F951F24E030E040E050E00E94C1 |
:10203000253C20930A0330930B0340930C035093E9 |
:102040000D032091EF063091F00680910A039091E4 |
:102050000B03A0910C03B0910D03281B390B309397 |
:102060005704209356041092FC061092FB060AC0F7 |
:102070008091E20380937C00DD2051F08FEE80930D |
:102080007A0006C01092E2031092E10310927C00E5 |
:10209000FF91EF91DF91CF91BF91AF919F918F9180 |
:1020A0007F916F915F914F913F912F911F910F9170 |
:1020B000FF90EF90DF900F900FBE0F901F9018953C |
:1020C000CF93DF93A3E0B0E00E947D3C802DC82F2A |
:1020D000DD27C531D10508F02A97C7BD84E690E019 |
:1020E0000E94CC0D80910E0390910F038255934076 |
:1020F000D0F4C0E0D0E017C0C7BD82E390E00E94FA |
:10210000CC0D81EF91E09F938F931F920E94030A61 |
:1021100080910E0390910F030F900F900F908458B1 |
:10212000934020F02196CA3FD10530F3A3E0B0E000 |
:102130000C2E0E948A3CC093F8068CE291E00E942B |
:10214000CC0DDF91CF910895EAE1F3E080E2819335 |
:1021500093E0EA36F907D9F708951F938091E603D3 |
:10216000282F3327C90181709070682F8823A9F028 |
:102170008091E703882311F0815002C080916A03A7 |
:102180008093E703EAE1F3E080E2819393E0EA36AB |
:10219000F907D9F78FEF8093AC03A9014270507013 |
:1021A00021FF10C08091E7038F5F8093E703EAE18E |
:1021B000F3E080E2819393E0EA36F907D9F78FEFF5 |
:1021C0008093AC03662321F0452B11F01092E703B6 |
:1021D00081E18093E5038091E70399279F938F9393 |
:1021E00086E095E09F938F9381E08F930E94030A8E |
:1021F0008091E7030F900F900F900F900F90E82FB2 |
:10220000FF27ED30F10508F023C4E75AFF4F0C9487 |
:10221000773C1092E50384EF94E09F938F9311E055 |
:102220001F930E94030A84E18093E503209100013B |
:1022300087E690E09F938F9383E490E09F938F9342 |
:102240001F921F92822F6AE00E94D03B892F99270C |
:102250009F938F93822F0E94D03B99279F938F93B8 |
:102260008FED94E09F938F931F930E94030A88E25F |
:102270008093E5030E94AD0399279F938F9382ED8E |
:1022800094E09F938F931F930E94030A8CE38093A3 |
:10229000E50382EC94E09F938F931F930E94030ABF |
:1022A00088C28091390780FF44C01092E503809175 |
:1022B0005604909157049F938F9383EB94E09F93E0 |
:1022C0008F9311E01F930E94030A84E18093E5033A |
:1022D00080915804909159049F938F9384EA94E0DD |
:1022E0009F938F931F930E94030A88E28093E503D4 |
:1022F00080910E0390910F039F938F9385E994E053 |
:102300009F938F931F930E94030A8CE38093E503AE |
:102310008091F80699279F938F9386E894E09F9386 |
:102320008F931F930E94030A8DB79EB744968DBF6B |
:1023300094C384E18093E5038FE794E09F938F93A8 |
:1023400011E01F930E94030A88E28093E50381E76E |
:1023500094E09F938F931F930E94030A8DB79EB7BB |
:102360000696E5CF1092E50387E694E09F938F935E |
:1023700011E01F930E94030A84E18093E5036091BA |
:10238000010470910204809103049091040420E000 |
:1023900034E040E050E00E94253C5F934F933F9330 |
:1023A0002F9388E594E09F938F931F930E94030AD5 |
:1023B00088E28093E5036091090470910A0480919A |
:1023C0000B0490910C0420E034E040E050E00E94C7 |
:1023D000253C5F934F933F932F9389E494E09F9321 |
:1023E0008F931F930E94030A8CE38093E5038091EF |
:1023F0003D0490913E049F938F938AE394E09F93D2 |
:102400008F931F930E94030A8DB79EB746968FCF76 |
:102410001092E5038091090790910A072091070720 |
:10242000309108079F938F933F932F938AE294E014 |
:102430009F938F9311E01F930E94030A84E180937E |
:10244000E50380910D0790910E0720910B073091C5 |
:102450000C079F938F933F932F938AE194E09F9370 |
:102460008F931F930E94030A88E28093E503809173 |
:1024700011079091120720910F07309110079F9339 |
:102480008F933F932F938AE094E09F938F931F93B2 |
:102490000E94030A8CE38093E503809115079091D5 |
:1024A000160720911307309114079F938F933F9342 |
:1024B0002F938AEF93E07BC01092E503E0913207FF |
:1024C000FF27EE0FFF1FEB5FF84F20813181E09176 |
:1024D0003107FF27EE0FFF1FEB5FF84F80819181DF |
:1024E0003F932F939F938F938AEE93E09F938F93C5 |
:1024F00011E01F930E94030A84E18093E503E091B9 |
:102500003407FF27EE0FFF1FEB5FF84F208131816B |
:10251000E0913307FF27EE0FFF1FEB5FF84F80813D |
:1025200091813F932F939F938F938AED93E09F9395 |
:102530008F931F930E94030A88E28093E503E09142 |
:102540003607FF27EE0FFF1FEB5FF84F2081318129 |
:10255000E0913507FF27EE0FFF1FEB5FF84F8081FB |
:1025600091813F932F939F938F938AEC93E09F9356 |
:102570008F931F930E94030A8CE38093E503E091FD |
:102580003807FF27EE0FFF1FEB5FF84F20813181E7 |
:10259000E0913707FF27EE0FFF1FEB5FF84F8081B9 |
:1025A00091813F932F939F938F938AEB93E09F9317 |
:1025B0008F931F930E94030A8DB79EB74C96B7CE98 |
:1025C0001092E5038CEA93E09F938F9311E01F93A1 |
:1025D0000E94030A0F900F900F9080910001E091EC |
:1025E000EF03F091F0038A30F1F584E18093E50385 |
:1025F0008091C5039091C603FF93EF938E1B9F0BB1 |
:102600009F938F938DE993E09F938F931F930E94E5 |
:10261000030A88E28093E5032091F1033091F203ED |
:102620008091C7039091C8033F932F93821B930B14 |
:102630009F938F938EE893E09F938F931F930E94B5 |
:10264000030A8CE38093E5038091F3039091F403F4 |
:102650009F938F938091A0079091A1079F938F9351 |
:102660008FE793E04BC084E18093E5032091C5039D |
:102670003091C603CF0162E070E00E94F03B7F938F |
:102680006F932E1B3F0B3F932F9380E793E09F9315 |
:102690008F931F930E94030A88E28093E503E091E1 |
:1026A000F103F091F2032091C7033091C803CF01E9 |
:1026B00062E070E00E94F03B7F936F932E1B3F0B14 |
:1026C0003F932F9381E693E09F938F931F930E94F4 |
:1026D000030A8CE38093E5038091F3039091F40364 |
:1026E00062E070E00E94F03B7F936F938091A007BF |
:1026F0009091A1079F938F9382E593E09F938F938F |
:102700001F930E94030A8DB79EB7459610CE109274 |
:10271000E50385E493E09F938F9311E01F930E945C |
:10272000030A84E18093E5038091F9039091FA0311 |
:102730002091CD033091CE039F938F933F932F939E |
:1027400086E393E09F938F931F930E94030A88E28E |
:102750008093E5038091FB039091FC032091CB03D0 |
:102760003091CC039F938F933F932F9387E293E015 |
:102770009F938F931F930E94030A8CE38093E5033A |
:102780006091FD037091FE038091FF03909100041E |
:102790000E94D23A7F936F93809188079091890726 |
:1027A0009F938F9388E193E09F938F931F930E9451 |
:1027B000030A8DB79EB74896BACD84E18093E503AE |
:1027C00080910803909109039F938F9389E093E090 |
:1027D0009F938F9311E01F930E94030A88E28093D6 |
:1027E000E50380914E0499279F938F938AEF92E09F |
:1027F0009F938F931F930E94030A8DB79EB70A96EB |
:1028000096CD1092E5038BEE92E09F938F9311E0AB |
:102810001F930E94030A84E18093E50380914104A1 |
:10282000909142049F938F938CED92E09F938F93AE |
:102830001F930E94030A88E28093E50380913D0480 |
:1028400090913E049F938F938DEC92E09F938F9392 |
:102850001F930E94030A8CE38093E50380913F0459 |
:10286000909140049F938F938EEB92E0E8C010927A |
:10287000E50380914604909147049F938F9382EBE8 |
:1028800092E09F938F9311E01F930E94030A84E1CB |
:102890008093E50380914804909149049F938F931E |
:1028A00086EA92E09F938F931F930E94030A88E227 |
:1028B0008093E50380914A0490914B049F938F93FA |
:1028C0008AE992E09F938F931F930E94030A8CE3FF |
:1028D0008093E50380914C0490914D049F938F93D6 |
:1028E0008EE892E01CCD1092E50386E892E09F937B |
:1028F0008F9311E01F930E94030A84E18093E50304 |
:1029000080919C0399279F938F9388E792E09F93F0 |
:102910008F931F930E94030A88E28093E5038091BE |
:10292000C2039091C3039F938F938AE692E09F9393 |
:102930008F931F930E94030A8CE38093E503809199 |
:10294000550799279F938F938091540799279F93B9 |
:102950008F938CE592E09F938F931F930E94030ABD |
:10296000E3CC1092E50384E592E09F938F9311E00E |
:102970001F930E94030A84E18093E5038091AE07D0 |
:10298000992787FD90959F938F9385E492E09F937D |
:102990008F931F930E94030A88E28093E50380913E |
:1029A000AF07992787FD90959F938F9386E392E0D9 |
:1029B0009F938F931F930E94030A8CE38093E503F8 |
:1029C0008091B007992787FD90959F938F9387E219 |
:1029D00092E035C01092E5038DE192E09F938F93D2 |
:1029E00011E01F930E94030A84E18093E503809124 |
:1029F000B1079091B2079F938F938FE092E09F93DE |
:102A00008F931F930E94030A88E28093E5038091CD |
:102A1000B3079091B4079F938F9381E092E09F93C7 |
:102A20008F931F930E94030A8CE38093E5038091A8 |
:102A3000B5079091B6079F938F9383EF91E09F9393 |
:102A40008F931F930E94030A8DB79EB742966FCC57 |
:102A5000815080936A031092E7031092E6031F915E |
:102A600008951092B9008AE28093B800089585EA2B |
:102A70008093BC0080E090E0089584E98093BC00DE |
:102A800008951092B9008093BB0085E88093BC0044 |
:102A900080E090E008951F920F920FB60F921124DC |
:102AA0008F939F93EF93FF938091E8038F5F8093C1 |
:102AB000E8038150E82FFF27E830F10508F064C0F3 |
:102AC000EA59FF4F0C94773C8091E903880F8E5AA6 |
:102AD00009C08091E9038F5F8093E903815027C08B |
:102AE00080917B071092B9008093BB0085E88093AA |
:102AF000BC004AC084E98093BC008091E903843023 |
:102B000018F41092E80302C01092E90385EAEFCFAF |
:102B10008091EA03880F8D5AE5CF8091BB00E09148 |
:102B2000EA03FF27E350F94F80838091EA03813065 |
:102B300039F08130A8F2823031F0833029F506C0B7 |
:102B400080918007CFCF80919807CCCF80919A0752 |
:102B5000C9CF8091EA039091BB00E82FFF27E35093 |
:102B6000F94F94838F5F8093EA03843010F01092C2 |
:102B7000EA0384E98093BC008AE090E090938603A6 |
:102B8000809385031092E8038091BC008068809355 |
:102B9000BC00FF91EF919F918F910F900FBE0F900E |
:102BA0001F9018954CEB50E084E9DA018C93109259 |
:102BB000E8032BEB30E0F90180811092E90380E813 |
:102BC0008C931092BD001092BA001082E9EBF0E0F5 |
:102BD0001082A8EBB0E01C9210828AE28C9385EA06 |
:102BE000DA018C931082F901108285E88C930895A4 |
:102BF00083EC80938100EFE6F0E080818062808347 |
:102C00001092F4031092F3031092F2031092F10366 |
:102C10001092F0031092EF0308951F920F920FB6D7 |
:102C20000F9211240F931F932F933F934F935F9312 |
:102C30006F937F938F939F93AF93BF93CF93DF93C4 |
:102C4000EF93FF9320918600309187008091ED03F0 |
:102C50009091EE03281B390B80918600909187009C |
:102C60009093EE038093ED03C9018D549440C0917D |
:102C7000EB03D091EC03835F9A4158F4249714F04E |
:102C800010926B0381E090E09093EC038093EB0350 |
:102C90005CC0CA30D1050CF058C0C9018B5F9040B0 |
:102CA000845B914008F040C0A901425D5140FE01A3 |
:102CB000EE0FFF1FEB5FF84F80819181FA01E81B57 |
:102CC000F90BCF01F7FF03C0909581959F4F0697B1 |
:102CD0004CF480914E04883C28F480914E04865F29 |
:102CE00080934E04FE01EE0FFF1F8F010B5F184F04 |
:102CF000D8012D913C91C901880F991F820F931F14 |
:102D0000840F951F64E070E00E94F03BD8018D9124 |
:102D10009C9111979B01281B390BE55EF84F31837D |
:102D2000208311967C936E93FE013196F093EC0311 |
:102D3000E093EB03E530F10511F45D9A05C05D9871 |
:102D4000369711F45C9A01C05C98FF91EF91DF9186 |
:102D5000CF91BF91AF919F918F917F916F915F9133 |
:102D60004F913F912F911F910F910F900FBE0F9098 |
:102D70001F901895A2E1B0E0E0ECF6E10C94403C25 |
:102D80008091C9039091CA034090F3035090F403DB |
:102D9000481A590A5092A1074092A0078091C70390 |
:102DA0009091C803988B8F87A091F103B091F203A3 |
:102DB000BA8BA98BE091C503F091C603FE87ED871E |
:102DC0008091EF039091F0039C878B876091CD03F6 |
:102DD0007091CE03E0909D07F0909E070027F7FCCE |
:102DE0000095102F882777FD8095982F2CE030E0F4 |
:102DF00040E050E00E94B13BE60EF71E081F191F8D |
:102E0000C801B70122E030E040E050E00E94253CDC |
:102E100030939E0720939D076091CB037091CC0364 |
:102E2000E090A707F090A8070027F7FC0095102F67 |
:102E3000882777FD8095982F2CE030E040E050E027 |
:102E40000E94B13BE60EF71E081F191FC801B7010B |
:102E500022E030E040E050E00E94253C3093A8079B |
:102E60002093A7072091CF033091D003609188076A |
:102E700070918907882777FD8095982F442737FD23 |
:102E80004095542F620F731F841F951F22E030E07E |
:102E900040E050E00E94253C30938907209388074A |
:102EA0002091CD033091CE03C901880F991F820F65 |
:102EB000931F880F991F880F991FAA2797FDA09528 |
:102EC000BA2F2091110430911204409113045091B3 |
:102ED0001404280F391F4A1F5B1F209311043093DD |
:102EE000120440931304509314042091CB033091A7 |
:102EF000CC03C901880F991F820F931F880F991F58 |
:102F0000880F991FAA2797FDA095BA2F2091150425 |
:102F1000309116044091170450911804280F391F5E |
:102F20004A1F5B1F20931504309316044093170427 |
:102F300050931804E090ED06F090EE06A090FD038B |
:102F4000B090FE03C090FF03D0900004609119047C |
:102F500070911A0480911B0490911C040E94EF3A16 |
:102F60003B014C010027F7FC0095102FC801B70169 |
:102F70000E94EF3AA60195010E94493A9B01AC01DB |
:102F8000C401B3010E944A3A0E94D23A60931904E4 |
:102F900070931A0480931B0490931C045201CC2458 |
:102FA000B7FCC094DC2C60903104709032048090A7 |
:102FB0003304909034046A0C7B1C8C1C9D1C609222 |
:102FC00031047092320480923304909234048091E0 |
:102FD000350490913604A0913704B09138048A0DDD |
:102FE0009B1DAC1DBD1D8093350490933604A093AA |
:102FF0003704B093380490915E049A87992309F0BE |
:103000005FC080915F04882309F05AC0809139071E |
:1030100086FF56C0E0906C04FF24002711276091C2 |
:10302000210470912204809123049091240420E0D3 |
:1030300030E140E050E00E94253CCA01B901A801FE |
:1030400097010E94B13B9B01AC01C601B5010E94F2 |
:10305000B13B20E038E040E050E00E94253C209366 |
:10306000B5043093B6044093B7045093B80460910C |
:10307000290470912A0480912B0490912C0420E063 |
:1030800030E140E050E00E94253CCA01B901A801AE |
:1030900097010E94B13B9B01AC01C601B5010E94A2 |
:1030A000B13B20E038E040E050E00E94253C209316 |
:1030B000B1043093B2044093B3045093B40410C0ED |
:1030C0001092B1041092B2041092B3041092B4049E |
:1030D0001092B5041092B6041092B7041092B8047E |
:1030E0008091B5049091B604A091B704B091B80452 |
:1030F0008E839F83A887B9878091B1049091B20491 |
:10310000A091B304B091B4048A839B83AC83BD8344 |
:1031100080916D04282E332444245524EF84F888AC |
:10312000A989BA89EA1AFB0AEE81FF81EE0EFF1E19 |
:103130006A817B818C819D81A20191010E94B13BBA |
:1031400020E032E040E050E00E94253CE20EF31E19 |
:10315000F0927A07E09279079701442737FD40956E |
:10316000542F80912D0490912E04A0912F04B091A2 |
:103170003004820F931FA41FB51F80932D049093DA |
:103180002E04A0932F04B093300480915A049091A0 |
:103190005B04E81AF90A0027F7FC0095102F8091CC |
:1031A000290490912A04A0912B04B0912C04E80EDC |
:1031B000F91E0A1F1B1FE0922904F0922A040093B3 |
:1031C0002B0410932C04A0908B03B0908C03C09020 |
:1031D0008D03D0908E03AE14BF04C006D106C4F494 |
:1031E00080E197E2A0E0B0E08A199B09AC09BD0933 |
:1031F0008093290490932A04A0932B04B0932C0469 |
:1032000080932D0490932E04A0932F04B093300448 |
:1032100022273327A9012A193B094C095D0980910E |
:10322000290490912A04A0912B04B0912C048217B8 |
:103230009307A407B507B4F4D601C501805197429E |
:10324000A040B0408093290490932A04A0932B04BB |
:10325000B0932C0480932D0490932E04A0932F04FC |
:10326000B09330048091C7039091C8030F9734F452 |
:1032700088E19CEF90937A07809379078091C70348 |
:103280009091C803079734F480E398EF90937A07FE |
:1032900080937907F0910001F983FA30A9F48091C5 |
:1032A000C7039091C803835F934034F088EE93E0A6 |
:1032B00090937A07809379078091C7039091C80310 |
:1032C0008A5F9340DCF014C08091C7039091C803DB |
:1032D000855E974034F088EE93E090937A07809370 |
:1032E00079078091C7039091C803835F974034F0BA |
:1032F00080ED97E090937A0780937907ED84FE84C0 |
:103300008B859C85E81AF90AAA81BB81EA1AFB0A17 |
:103310006E817F8188859985A20191010E94B13BD0 |
:1033200020E032E040E050E00E94253CE21AF30A3F |
:10333000F0928207E09281079701442737FD40957C |
:10334000542F8091250490912604A0912704B091D8 |
:103350002804820F931FA41FB51F80932504909308 |
:103360002604A0932704B093280480915C049091D4 |
:103370005D04E81AF90A0027F7FC0095102F8091E8 |
:10338000210490912204A0912304B0912404E80E1A |
:10339000F91E0A1F1B1FE0922104F09222040093E1 |
:1033A000230410932404A0908703B0908803C09056 |
:1033B0008903D0908A03AE14BF04C006D106C4F4BA |
:1033C00080E197E2A0E0B0E08A199B09AC09BD0951 |
:1033D0008093210490932204A0932304B0932404A7 |
:1033E0008093250490932604A0932704B093280487 |
:1033F00022273327A9012A193B094C095D0980912D |
:10340000210490912204A0912304B09124048217F6 |
:103410009307A407B507B4F4D601C50180519742BC |
:10342000A040B0408093210490932204A0932304F1 |
:10343000B09324048093250490932604A09327043A |
:10344000B09328048091C5039091C6030F9734F47C |
:1034500088E19CEF90938207809381078091C50358 |
:103460009091C603079734F480E398EF9093820716 |
:1034700080938107B981BA30A9F48091C5039091F6 |
:10348000C603835F934034F088EE93E09093820705 |
:10349000809381078091C5039091C6038A5F934012 |
:1034A000DCF014C08091C5039091C603855E9740FF |
:1034B00034F088EE93E090938207809381078091A7 |
:1034C000C5039091C603835F974034F080ED97E089 |
:1034D00090938207809381078FEE80937A006092A9 |
:1034E0001D0470921E0480921F049092200480910B |
:1034F000210490912204A0912304B091240480938C |
:10350000010490930204A0930304B09304048091F7 |
:10351000290490912A04A0912B04B0912C0480934B |
:10352000090490930A04A0930B04B0930C048091B7 |
:10353000250490912604A0912704B091280480933B |
:10354000050490930604A0930704B09308048091A7 |
:103550002D0490912E04A0912F04B09130048093FB |
:103560000D0490930E04A0930F04B0931004809167 |
:10357000390787FF3FC0BA85BB23E1F580915F041F |
:103580008823C1F52091810730918207293C3105BC |
:1035900024F0C9018052934007C0EFEF28333E0763 |
:1035A0006CF4C901805E9C4F220F331F220F331F22 |
:1035B000280F391F309382072093810720917907C4 |
:1035C00030917A07293C310524F0C901805293409B |
:1035D00007C0FFEF28333F076CF4C901805E9C4FA2 |
:1035E000220F331F220F331F280F391F30937A0702 |
:1035F0002093790720914604309147048091350744 |
:10360000E82FFF27EE0FFF1FEB5FF84F80819181BE |
:1036100082599F4F281739071CF42F5F3F4F0CC06A |
:103620008081918182599F4F821793074CF4211515 |
:10363000310531F021503040309347042093460447 |
:10364000209148043091490480913607E82FFF27E4 |
:10365000EE0FFF1FEB5FF84F8081918182599F4FE2 |
:10366000281739071CF42F5F3F4F0CC080819181D0 |
:1036700082599F4F821793074CF42115310531F081 |
:1036800021503040309349042093480420914A044B |
:1036900030914B0480913707E82FFF27EE0FFF1F73 |
:1036A000EB5FF84F8081918182599F4F281739072E |
:1036B0001CF42F5F3F4F0CC08081918182599F4F36 |
:1036C000821793074CF42115310531F02150304019 |
:1036D00030934B0420934A0420914C0430914D04C4 |
:1036E00080913807E82FFF27EE0FFF1FEB5FF84FA1 |
:1036F0008081918182599F4F281739071CF42F5FD1 |
:103700003F4F0CC08081918182599F4F8217930750 |
:103710004CF42115310531F02150304030934D04E7 |
:1037200020934C04809146049091470497FF05C074 |
:1037300010924704109246040AC08F3F910539F059 |
:1037400034F08FEF90E0909347048093460480918B |
:1037500048049091490497FF05C0109249041092C3 |
:1037600048040AC08F3F910539F034F08FEF90E0A4 |
:10377000909349048093480480914A0490914B04AB |
:1037800097FF05C010924B0410924A040AC08F3F65 |
:10379000910539F034F08FEF90E090934B048093D3 |
:1037A0004A0480914C0490914D0497FF05C01092FB |
:1037B0004D0410924C040AC08F3F910539F034F04B |
:1037C0008FEF90E090934D0480934C04E2E1CE5E45 |
:1037D0000C945C3C10927A008091C5039091C603D2 |
:1037E00090938207809381078091C7039091C803CB |
:1037F00090937A07809379078091C9039091CA03C7 |
:103800009093A1078093A0076091CD037091CE03A0 |
:10381000882777FD8095982F2CE030E040E050E03D |
:103820000E94B13B70939E0760939D076091CB030C |
:103830007091CC03882777FD8095982F0E94B13B2B |
:103840007093A8076093A7078091CF039091D0034E |
:1038500090938907809388078FEE80937A00209158 |
:1038600046043091470480913507E82FFF27EE0F7B |
:10387000FF1FEB5FF84F8081918182599F4F28177E |
:1038800039071CF42F5F3F4F0CC080819181825912 |
:103890009F4F821793074CF42115310531F02150C9 |
:1038A00030403093470420934604209148043091DF |
:1038B000490480913607E82FFF27EE0FFF1FEB5FCB |
:1038C000F84F8081918182599F4F281739071CF446 |
:1038D0002F5F3F4F0CC08081918182599F4F82178B |
:1038E00093074CF42115310531F0215030403093CD |
:1038F00049042093480420914A0430914B0480915C |
:103900003707E82FFF27EE0FFF1FEB5FF84F80818F |
:10391000918182599F4F281739071CF42F5F3F4F21 |
:103920000CC08081918182599F4F821793074CF47C |
:103930002115310531F02150304030934B04209354 |
:103940004A0420914C0430914D0480913807E82FAF |
:10395000FF27EE0FFF1FEB5FF84F808191818259A7 |
:103960009F4F281739071CF42F5F3F4F0CC08081F1 |
:10397000918182599F4F821793074CF4211531058D |
:1039800031F02150304030934D0420934C0480910D |
:1039900046049091470497FF05C010924704109287 |
:1039A00046040AC08F3F910539F034F08FEF90E064 |
:1039B0009093470480934604809148049091490471 |
:1039C00097FF05C010924904109248040AC08F3F27 |
:1039D000910539F034F08FEF90E090934904809393 |
:1039E000480480914A0490914B0497FF05C01092BF |
:1039F0004B0410924A040AC08F3F910539F034F00D |
:103A00008FEF90E090934B0480934A0480914C0494 |
:103A100090914D0497FF05C010924D0410924C04F4 |
:103A20000AC08F3F910539F034F08FEF90E090930A |
:103A30004D0480934C0460915C0777278827992771 |
:103A400024EC39E040E050E00E94B13B60938703F2 |
:103A5000709388038093890390938A0360938B0308 |
:103A600070938C0380938D0390938E0308951F931E |
:103A700080913C078B3F98F08B3F19F4809146046E |
:103A80000EC08C3F19F48091480409C08D3F19F491 |
:103A900080914A0404C08E3F21F480914C048093AD |
:103AA000940380919403882319F41092940304C022 |
:103AB0008F3F11F48093940380913B078B3F98F0E4 |
:103AC0008B3F19F4809146040EC08C3F19F480910D |
:103AD000480409C08D3F19F480914A0404C08E3F08 |
:103AE00021F480914C048093930380919303882365 |
:103AF00019F41092930305C0843618F084E680937D |
:103B0000930380913D078B3F98F08B3F19F4809190 |
:103B100046040EC08C3F19F48091480409C08D3FC3 |
:103B200019F480914A0404C08E3F21F480914C0422 |
:103B30008093950380919503882319F4109295033F |
:103B400005C0843618F084E68093950380913F0782 |
:103B50008B3F98F08B3F19F4809146040EC08C3F48 |
:103B600019F48091480409C08D3F19F480914A04EA |
:103B700004C08E3F21F480914C0480939603809181 |
:103B80009603882319F41092960304C08F3F11F412 |
:103B900080939603809146078B3F98F08B3F19F4F2 |
:103BA000809146040EC08C3F19F48091480409C0EE |
:103BB0008D3F19F480914A0404C08E3F21F4809116 |
:103BC0004C048093970380919703882319F41092F3 |
:103BD000970304C08F3F11F48093970380914707A8 |
:103BE0008B3F98F08B3F19F4809146040EC08C3FB8 |
:103BF00019F48091480409C08D3F19F480914A045A |
:103C000004C08E3F21F480914C04809398038091EE |
:103C100098038B3010F48AE002C08F3F11F4809338 |
:103C20009803809148078B3F98F08B3F19F480915F |
:103C300046040EC08C3F19F48091480409C08D3FA2 |
:103C400019F480914A0404C08E3F21F480914C0401 |
:103C50008093990380919903882319F41092990312 |
:103C600004C08F3F11F48093990380914D078B3FDF |
:103C700098F08B3F19F4809146040EC08C3F19F4E4 |
:103C80008091480409C08D3F19F480914A0404C012 |
:103C90008E3F21F480914C0480939B0380919B0381 |
:103CA000882319F410929B0304C08F3F11F4809372 |
:103CB0009B0380914E078B3F98F08B3F19F48091C6 |
:103CC00046040EC08C3F19F48091480409C08D3F12 |
:103CD00019F480914A0404C08E3F21F480914C0471 |
:103CE0008093640480916404882319F4109264041E |
:103CF00004C08F3F11F48093640480914F078B3F81 |
:103D000098F08B3F19F4809146040EC08C3F19F453 |
:103D10008091480409C08D3F19F480914A0404C081 |
:103D20008E3F21F480914C0480936504809165045A |
:103D3000882319F41092650404C08F3F11F4809316 |
:103D40006504809150078B3F98F08B3F19F4809168 |
:103D500046040EC08C3F19F48091480409C08D3F81 |
:103D600019F480914A0404C08E3F21F480914C04E0 |
:103D70008093660480916604882319F41092660487 |
:103D800004C08F3F11F480936604809151078B3FEC |
:103D900098F08B3F19F4809146040EC08C3F19F4C3 |
:103DA0008091480409C08D3F19F480914A0404C0F1 |
:103DB0008E3F21F480914C048093670480916704C6 |
:103DC000882319F41092670404C08F3F11F4809384 |
:103DD0006704809161078B3F98F08B3F19F48091C5 |
:103DE00046040EC08C3F19F48091480409C08D3FF1 |
:103DF00019F480914A0404C08E3F21F480914C0450 |
:103E00008093680480916804882319F410926804F0 |
:103E100004C08F3F11F480936804809162078B3F48 |
:103E200098F08B3F19F4809146040EC08C3F19F432 |
:103E30008091480409C08D3F19F480914A0404C060 |
:103E40008E3F21F480914C04809369048091690431 |
:103E5000882319F41092690404C08F3F11F48093F1 |
:103E60006904809163078B3F98F08B3F19F4809130 |
:103E700046040EC08C3F19F48091480409C08D3F60 |
:103E800019F480914A0404C08E3F21F480914C04BF |
:103E900080936A0480916A04882319F410926A045A |
:103EA00004C08F3F11F480936A04809164078B3FB4 |
:103EB00098F08B3F19F4809146040EC08C3F19F4A2 |
:103EC0008091480409C08D3F19F480914A0404C0D0 |
:103ED0008E3F21F480914C0480936B0480916B049D |
:103EE000882319F410926B0404C08F3F11F480935F |
:103EF0006B04809152078B3F98F08B3F19F48091AF |
:103F000046040EC08C3F19F48091480409C08D3FCF |
:103F100019F480914A0404C08E3F21F480914C042E |
:103F200080939C0380919C03882319F410929C0336 |
:103F300004C08F3F11F480939C03809157078B3FFF |
:103F400098F08B3F19F4809146040EC08C3F19F411 |
:103F50008091480409C08D3F19F480914A0404C03F |
:103F60008E3F21F480914C0480939D0380919D03AA |
:103F7000882319F410929D0304C08F3F11F480939D |
:103F80009D0380915A078B3F98F08B3F19F48091E5 |
:103F900046040EC08C3F19F48091480409C08D3F3F |
:103FA00019F480914A0404C08E3F21F480914C049E |
:103FB00080936C0480916C04882319F410926C0433 |
:103FC00004C08F3F11F480936C0480915B078B3F9A |
:103FD00098F08B3F19F4809146040EC08C3F19F481 |
:103FE0008091480409C08D3F19F480914A0404C0AF |
:103FF0008E3F21F480914C0480936D0480916D0478 |
:10400000882319F410926D0404C08F3F11F480933B |
:104010006D04809160078B3F98F08B3F19F480917D |
:1040200046040EC08C3F19F48091480409C08D3FAE |
:1040300019F480914A0404C08E3F21F480914C040D |
:1040400080939E0380919E03882319F410929E030F |
:1040500004C08F3F11F480939E0310919B03612F46 |
:10406000772767FD7095872F972F0E94EF3A17FFEC |
:1040700006C020E030E040E853E40E944A3A27E1DD |
:1040800037EB41ED58E30E94693B60938F037093D7 |
:1040900090038093910390939203809144078093BF |
:1040A0009F0780914307809383071F910895809114 |
:1040B0005504882301F51092800710927B07109217 |
:1040C000980710929A078091AE03882311F080938D |
:1040D0007B078091AF03882311F080938007809144 |
:1040E000B003882311F080939A078091B10388234D |
:1040F00011F08093980780917B0799279093C306CE |
:104100008093C2068091800799279093C50680937B |
:10411000C40680919A0799279093C7068093C60694 |
:104120008091980799279093C9068093C8061092AA |
:10413000E8031092E9030E94371508951092FA03DC |
:104140001092F9031092FC031092FB0380E090E0C0 |
:10415000A0E0B0E08093FD039093FE03A093FF03E3 |
:10416000B09300041092F0031092EF031092F20348 |
:104170001092F1031092F4031092F30310926C0466 |
:1041800010926D040E94EA1B84E690E00E94CC0D20 |
:104190000E94EA1B8091390780FF10C080910E03B6 |
:1041A00090910F03875B934038F480910E039091B8 |
:1041B0000F038E5E924010F40E9460104091C50380 |
:1041C0005091C6035093F0034093EF032091C7032F |
:1041D0003091C8033093F2032093F1038091C90317 |
:1041E0009091CA039093F4038093F3033093F60302 |
:1041F0002093F5035093F8034093F70344E050E015 |
:10420000DA010E947D3C802D853038F18091A7072E |
:104210009091A80797FF03C0909581959F4F6CE000 |
:1042200070E00E94F03B7093FC036093FB0380916D |
:104230009D0790919E0797FF03C0909581959F4F92 |
:104240006CE070E00E94F03B7093FA036093F90316 |
:104250006091ED067091EE0639C0DA010E947D3C56 |
:10426000802D4F5F5F4FDA010E947D3C202D992702 |
:10427000982F8827820F911D9093FA038093F9035A |
:104280004F5F5F4FDA010E947D3C802D4F5F5F4F93 |
:10429000DA010E947D3C202D9927982F8827820FD4 |
:1042A000911D9093FC038093FB034F5F5F4FDA01F6 |
:1042B0000E947D3C602D4F5F5F4FDA010E947D3C84 |
:1042C000202D7727762F6627620F711D882777FDAF |
:1042D0008095982F0E94EF3A6093FD037093FE0340 |
:1042E0008093FF0390930004109221041092220403 |
:1042F0001092230410922404109225041092260494 |
:1043000010922704109228041092290410922A0473 |
:1043100010922B0410922C0410922D0410922E0453 |
:1043200010922F0410923004109231041092320433 |
:104330001092330410923404109282071092810775 |
:1043400010927A07109279071092A1071092A00795 |
:1043500080910A0390910B03A0910C03B0910D037F |
:104360009093F0068093EF061092D8031092D70333 |
:104370001092390410923A0410923B0410923C04BB |
:1043800080913D0490913E049093400480933F04BB |
:104390000E94B83682E390E09093C1038093C003FB |
:1043A00060915C0777278827992724EC39E040E063 |
:1043B00050E00E94B13B6093870370938803809321 |
:1043C000890390938A0360915D077727882799274F |
:1043D0000E94B13B60938B0370938C0380938D0399 |
:1043E00090938E031092A00310929F0308951F9341 |
:1043F000182F0EC080915504882361F484E690E064 |
:104400009093C1038093C0038AEF90E00E94E20D75 |
:10441000115080F71F91089581E08093310752E099 |
:104420005093320743E04093330774E070933407AE |
:1044300065E06093350786E08093360787E08093D8 |
:10444000370798E09093380780EC809339078EE126 |
:1044500080933A078BEF80933C073AE030933D0717 |
:1044600022E320933B0720933F0750933E0740935E |
:10447000400710924107909342078FE080934307D3 |
:104480008AEF809344078AE18093450780E8809310 |
:10449000460788EC809347078FEA809348078EE5AC |
:1044A0008093490783E280934A0784E180934B0716 |
:1044B00010924C0730934D0780E580934E07109281 |
:1044C0004F071092500710925107109261071092F7 |
:1044D0006207109263071092640794E69093520764 |
:1044E00088E280935307109266072093540786E969 |
:1044F0008093550760935607209357078AE580936A |
:104500005807209359071092650790935A073093E4 |
:104510005B0790935C0790935D0790935E077093A1 |
:104520005F0720936007ABE6B7E0ECE6F3E08CE0D2 |
:1045300001900D928150E1F7089581E08093310759 |
:1045400092E09093320783E08093330744E04093F6 |
:10455000340755E05093350786E08093360787E0AF |
:104560008093370788E08093380780E48093390789 |
:104570008EE180933A078BEF80933C073AE03093CB |
:104580003D0722E320933B0720933F0790933E078C |
:104590004093400710924107309342078FE0809389 |
:1045A00043078AEF809344078AE18093450780E8B8 |
:1045B000809346078FEA80934707809348078EE5EC |
:1045C0008093490783E280934A0784E180934B07F5 |
:1045D00010924C0780E280934D0780E580934E0750 |
:1045E00010924F07109250071092510710926107D6 |
:1045F00010926207109263071092640794E69093FA |
:10460000520788E28093530710926607209354075D |
:1046100086E98093550750935607209357078AE5FC |
:1046200080935807209359071092650790935A0773 |
:1046300030935B0790935C0790935D0790935E07C0 |
:1046400040935F078BE480936007ABE6B7E0E6E753 |
:10465000F3E08CE001900D928150E1F7089581E044 |
:104660008093310782E08093320783E080933307A1 |
:1046700034E03093340765E06093350786E080933B |
:10468000360787E08093370798E09093380780E4F7 |
:10469000809339078EE180933A078BEF80933C0734 |
:1046A0005AE050933D0722E320933B0720933F07B6 |
:1046B00030933E0730934007909341078EE08093FC |
:1046C00042078FE0809343078AEF809344078AE193 |
:1046D0008093450790E89093460788E780934707C3 |
:1046E00046E9409348078EE58093490783E280932B |
:1046F0004A0784E180934B0710924C0780E2809335 |
:104700004D0790934E0710924F071092500710924A |
:10471000510710926107109262071092630710927E |
:10472000640794E69093520788E2809353071092AF |
:1047300066072093540740935507609356072093CC |
:1047400057078AE580935807209359071092650709 |
:1047500090935A0750935B0790935C0790935D0783 |
:1047600020935E0730935F0790936007ABE6B7E056 |
:10477000EEE7F3E08CE001900D928150E1F70895AF |
:10478000A6E3B0E0E6ECF3E20C94403C0E94BA16DB |
:10479000299AE0913307FF27EE0FFF1FEB5FF84FD9 |
:1047A0000190F081E02DE858FF4F80919F079927F5 |
:1047B0004497E817F9070CF4CF019A83898397FF90 |
:1047C00002C01A82198280914E04843608F05DC0BE |
:1047D00080910301882399F480910403909105034B |
:1047E0008F5F9F4F61F488E99AE39093C1038093B0 |
:1047F000C00380E09CE090930503809304038091C4 |
:10480000930490919404009731F00197909394044D |
:104810008093930404C01092550410924404809134 |
:1048200000018A3011F4289A01C0289880918E04E2 |
:1048300090918F04815D974028F180914A07482F1D |
:1048400055275A83498381E080934404E0913107DE |
:10485000FF27EE0FFF1FEB5FF84F11821082E091F0 |
:104860003207FF27EE0FFF1FEB5FF84F1182108218 |
:10487000E0913407FF27EE0FFF1FEB5FF84F118227 |
:1048800010824FC2109255044CC280914E048D3854 |
:1048900008F447C21092440480914B0722E3829FA0 |
:1048A000C0011124909394048093930489819A8188 |
:1048B00089976CF080918E0490918F04AFEF8F3FB9 |
:1048C0009A0781F1019690938F0480938E048091D2 |
:1048D0008E0490918F04883C910520F0E981FA8143 |
:1048E000B89704F51092AD041092AE041092AF0484 |
:1048F0001092B0041092A9041092AA041092AB0472 |
:104900001092AC04109231041092320410923304CD |
:104910001092340410923504109236041092370429 |
:104920001092380429813A81293C31050CF459C18F |
:1049300080915504882309F0F4C180913407E82F51 |
:10494000FF27EE0FFF1FEB5FF84F808191818C34C2 |
:1049500091050CF4BCC0809192048F5F8093920407 |
:10496000893C08F4DEC129981092550410929204F3 |
:1049700010928F0410928E0480913107282F3327D4 |
:10498000F901EE0FFF1FEB5FF84F808191818734B3 |
:1049900091059CF4E0913207FF27EE0FFF1FEB5FBC |
:1049A000F84F0190F081E02DF7FF03C0F095E195FD |
:1049B000FF4FE734F1050CF46CC080913207682F8B |
:1049C0007727DB01AA0FBB1FAB5FB84F8D919C917E |
:1049D0001197873491053CF0F901EE0FFF1FEB5F53 |
:1049E000F84F808191818D919C918734910564F07D |
:1049F000F901EE0FFF1FEB5FF84F80819181873443 |
:104A0000910514F042E001C041E0FB01EE0FFF1FF1 |
:104A1000EB5FF84F80819181863491055CF4F90158 |
:104A2000EE0FFF1FEB5FF84F808191818734910576 |
:104A30000CF043E0FB01EE0FFF1FEB5FF84F8081AE |
:104A400091818A5B9F4F5CF4F901EE0FFF1FEB5FD2 |
:104A5000F84F80819181873491050CF044E0660F16 |
:104A6000771F6B5F784FDB018D919C918A5B9F4F25 |
:104A70005CF4220F331F2B5F384FF9018081918145 |
:104A8000863491050CF445E0A2E0B0E0042E0E94CB |
:104A90008A3C8091390780FF10C080910E0390916D |
:104AA0000F03875B934038F480910E0390910F03BE |
:104AB0008E5E924010F40E9460100E94AD0346E4A6 |
:104AC00061E377E00E94D6030E949E2082C080812D |
:104AD0009181855B9F4F0CF081C0809192048F5F24 |
:104AE00080939204893C08F41CC129988FEF04E05C |
:104AF00010E0D801082E0E948A3C109255041092B2 |
:104B0000920410928F0410928E040E949E20809135 |
:104B1000F9039091FA0360E071E00E94F03BD80144 |
:104B2000062E0E948A3C8091F9039091FA0360E07E |
:104B300071E00E94F03B0F5F1F4FD801082E0E94CA |
:104B40008A3C8091FB039091FC0360E071E00E943D |
:104B5000F03B0F5F1F4FD801062E0E948A3C8091C8 |
:104B6000FB039091FC0360E071E00E94F03B0F5F5B |
:104B70001F4FD801082E0E948A3C6091FD0370915E |
:104B8000FE038091FF03909100040E94D23ADC0161 |
:104B9000CB0160E071E00E94F03B0F5F1F4FD80136 |
:104BA000062E0E948A3C6091FD037091FE03809165 |
:104BB000FF03909100040E94D23ADC01CB0160E037 |
:104BC00071E00E94F03B0F5F1F4FD801082E0E943A |
:104BD0008A3C0E94AD030E94F721A3C01092920468 |
:104BE000A0C0E981FA81B3970CF09BC08091340793 |
:104BF000482F5527FA01EE0FFF1FEB5FF84F80811A |
:104C00009181855B9F4F0CF06DC0809191048F5F07 |
:104C100080939104893C08F467C088EC80939104E8 |
:104C200081E090E090938F0480938E0481E08093E4 |
:104C300055041092A5041092A6041092A704109295 |
:104C4000A80410923104109232041092330410928E |
:104C500034041092350410923604109237041092E6 |
:104C6000380410922104109222041092230410920E |
:104C700024041092290410922A0410922B041092FA |
:104C80002C048091010490910204A0910304B0913E |
:104C900004048093250490932604A0932704B093E2 |
:104CA00028048091090490910A04A0910B04B0910A |
:104CB0000C0480932D0490932E04A0932F04B093A2 |
:104CC00030041092AD041092AE041092AF04109212 |
:104CD000B0041092A9041092AA041092AB0410928E |
:104CE000AC0402C010929104440F551F4B5F584F03 |
:104CF000DA018D919C918C3491058CF08091900417 |
:104D00008F5F80939004893C60F01092550488EC8A |
:104D10008093900410928F0410928E0402C010921F |
:104D2000900480916B03815080936B0380916B039F |
:104D30008F3F29F080914404882309F4FCC20E942B |
:104D4000371D80913107A82EBB24D501AA0FBB1FA8 |
:104D5000FD01EB5FF84F0190F081E02DFCABEBAB78 |
:104D600080914007E82EFF24A55EB84F0D90BC91BE |
:104D7000A02DBAA7A9A780914107482E552480915C |
:104D80003207C82EDD24C601880F991FDC01AB5FF6 |
:104D9000B84F0D90BC91A02DB8A7AFA3855E984FDA |
:104DA000FC0120803180E0913407AE2FBB27AA0F91 |
:104DB000BB1FAB5FB84F0D90BC91A02DBCA3ABA3A4 |
:104DC00010919803612F772767FD7095872F972F94 |
:104DD0000E94EF3A17FF06C020E030E040E853E4BD |
:104DE0000E944A3A20E030E040E251E40E944A3A10 |
:104DF00020E030E040E85BE30E94693B3B014C016E |
:104E00006093A2077093A3078093A4079093A507CC |
:104E100010919903612F772767FD7095872F972F42 |
:104E20000E94EF3A17FF06C020E030E040E853E46C |
:104E30000E944A3A20E030EE4BE257E40E948C3A5E |
:104E400060939407709395078093960790939707C4 |
:104E50002091B303222311F40C94E3358AE090E00F |
:104E60009093C1038093C003E22FFF27E2FF09C0A4 |
:104E700080916404482F5527440F551F440F551F38 |
:104E800010C0E3FD03C040E050E00BC0809164041B |
:104E90009927880F991F880F991F44275527481B6A |
:104EA000590B20916E0430916F04C901F3E0880F13 |
:104EB000991FFA95E1F7821B930B840F951F68E009 |
:104EC00070E00E94F03B8B0170936F0460936E045E |
:104ED000E4FF09C080916404482F5527440F551FF3 |
:104EE000440F551F0FC0E5FD02C00C94F8358091AA |
:104EF00064049927880F991F880F991F4427552705 |
:104F0000481B590B2091700430917104C90163E072 |
:104F1000880F991F6A95E1F7821B930B840F951FE9 |
:104F200068E070E00E94F03B7EAB6DAB7093710463 |
:104F3000609370048091B203282F332723FF03C0AE |
:104F400082E390E004C022FF07C08EEC9FEF9093B5 |
:104F500073048093720404C010927304109272045C |
:104F600021FF09C080919F039091A0030196909327 |
:104F7000A00380939F0324FF09C080919F03909119 |
:104F8000A00301979093A00380939F034BA95CA972 |
:104F90004E9D90014F9D300D5E9D300D1124A9A5B1 |
:104FA000BAA5A49DC001A59D900DB49D900D11249E |
:104FB000280F391FC80168E070E00E94F03B260FFF |
:104FC000371F3CAB2BAB3093500420934F04EFA121 |
:104FD000F8A5EE9D8001EF9D100DFE9D100D112492 |
:104FE000249CC001259C900D349C900D1124080F29 |
:104FF000191F8DA99EA968E070E00E94F03B060F82 |
:10500000171F1093520400935104809172049091E1 |
:1050100073042BA13CA1821B930B909354048093A7 |
:1050200053048091390782FF0CC080E090E0A0E03B |
:10503000B0E08093940790939507A0939607B09360 |
:10504000970720E030E040E050E0C401B3010E9447 |
:10505000F93A882364F480E090E0A0E0B0E0809327 |
:10506000A2079093A307A093A407B093A50720E0FD |
:1050700030E040E050E06091940770919507809196 |
:105080009607909197070E94F93A882364F480E08C |
:1050900090E0A0E0B0E08093940790939507A093F0 |
:1050A0009607B093970780916507682F772784E06C |
:1050B000882E912C8622972262FD7FC063FD7DC0E1 |
:1050C00020910104309102044091030450910404A2 |
:1050D00021368AEE380780E0480780E05807E4F080 |
:1050E000C701B3E0880F991FBA95E1F7EBA9FCA9B6 |
:1050F000E81BF90BF0935004E0934F042158384318 |
:1051000041405040E4F0C701A4E0880F991FAA95E0 |
:10511000E1F7E81BF90B0FC0205A35414F4F5F4FA5 |
:1051200074F4C701E3E0880F991FEA95E1F7EBA952 |
:10513000FCA9E80FF91FF0935004E0934F0420916D |
:10514000090430910A0440910B0450910C0421365B |
:10515000FAEE3F07F0E04F07F0E05F07F4F0C70119 |
:1051600073E0880F991F7A95E1F7D801A81BB90B56 |
:10517000B0935204A0935104215838434140504009 |
:10518000E4F094E0EE0CFF1C9A95E1F7AE19BF092C |
:10519000B0935204A093510410C0205A35414F4F90 |
:1051A0005F4F5CF483E0EE0CFF1C8A95E1F70E0D77 |
:1051B0001F1D1093520400935104F601EE0FFF1FC0 |
:1051C000EB5FF84F2081318180915807482F552798 |
:1051D0004217530734F4892821F081E0809360045A |
:1051E00011C0F601EE0FFF1FEB5FF84F20813181F8 |
:1051F00080915907DA01A81BB1092A173B0714F45B |
:1052000010926004F601EE0FFF1FEB5FF84F8081F4 |
:105210009181AA27BB27A41BB50B8A179B0734F4DF |
:1052200063FF04C081E08093610417C08091610432 |
:10523000882399F0CC0CDD1CE5E0F7E0CE0EDF1EF4 |
:10524000F60120813181809159079927841B950BA4 |
:105250008217930714F410926104F501EE0FFF1FFB |
:10526000EB5FF84F808191814817590734F460FF54 |
:1052700004C081E08093630415C080916304882397 |
:1052800089F0F501EE0FFF1FEB5FF84F20813181B0 |
:1052900080915907FA01E81BF1092E173F0714F412 |
:1052A00010926304F501EE0FFF1FEB5FF84F808152 |
:1052B00091818A179B0734F461FF04C081E08093D9 |
:1052C000620417C080916204882399F0AA0CBB1C69 |
:1052D00025E037E0A20EB31ED5012D913C918091BF |
:1052E00059079927841B950B8217930714F4109282 |
:1052F000620480916004882321F4809161048823F2 |
:1053000021F081E080935F0402C010925F048091DD |
:105310006304882321F480916204882351F081E0A2 |
:1053200080935E0410925F041092600410926104F6 |
:105330000EC010925E0480915F04882311F40C94D7 |
:10534000FC3584E690E09093C1038093C003809184 |
:1053500057079927E981FA818E179F0714F49A83DA |
:10536000898380914404882341F11092540410925F |
:1053700053041092500410924F0410925204109251 |
:1053800051048DEC9CECACECBDE38093A2079093B0 |
:10539000A307A093A407B093A5078AE097EDA3EA1B |
:1053A000BBE38093940790939507A0939607B093DF |
:1053B000970710925F0410925E04209101043091CF |
:1053C000020440910304509104042FA738AB49AB69 |
:1053D0005AAB80918C0790918D07A0918E07B09168 |
:1053E0008F07820F931FA41FB51F80938C07909384 |
:1053F0008D07A0938E07B0938F0780910904909139 |
:105400000A04A0910B04B0910C048BA79CA7ADA734 |
:10541000BEA78091900790919107A0919207B091BB |
:1054200093072BA53CA54DA55EA5820F931FA41F36 |
:10543000B51F8093900790939107A0939207B09324 |
:1054400093078091050490910604A0910704B09100 |
:1054500008048F8F98A3A9A3BAA380918407909181 |
:105460008507A0918607B09187072F8D38A149A1A4 |
:105470005AA1820F931FA41FB51F80938407909396 |
:105480008507A0938607B093870780910D049091BC |
:105490000E04A0910F04B09110048B8F9C8FAD8FE0 |
:1054A000BE8F80917C0790917D07A0917E07B0917F |
:1054B0007F072B8D3C8D4D8D5E8D820F931FA41F1A |
:1054C000B51F80937C0790937D07A0937E07B093D0 |
:1054D0007F0790905E04992011F00C9454368091CF |
:1054E0005F04882311F00C9454360C94043680EE3B |
:1054F000A8168FEFB8068FEFC8068FEFD80644F4D2 |
:1055000080EEA82E8FEFB82E8FEFC82E8FEFD82EFB |
:10551000213231054105510534F010E2E12EF12C24 |
:10552000012D112D0DC0205E3F4F4F4F5F4F44F4B2 |
:10553000B0EEEB2EBFEFFB2EBFEF0B2FBFEF1B2FFD |
:105540008091210490912204A0912304B09124041D |
:105550008A199B09AC09BD09809321049093220408 |
:10556000A0932304B09324048091290490912A04E9 |
:10557000A0912B04B0912C048E199F09A00BB10BA4 |
:105580008093290490932A04A0932B04B0932C04B5 |
:105590008091D9039091DA038F3F910509F008F4C7 |
:1055A000ADC4992009F02EC480915F04882309F0CE |
:1055B00029C460918C0770918D0780918E0790911E |
:1055C0008F0720E031E040E050E00E94253C1901C7 |
:1055D0002A0120938C0730938D0740938E075093B8 |
:1055E0008F07609190077091910780919207909139 |
:1055F000930720E031E040E050E00E94253C2F8BF3 |
:10560000388F498F5A8F209390073093910740939A |
:10561000920750939307E0904507FF240027112736 |
:1056200020911104309112044091130450911404FC |
:10563000C801B7010E94B13B20E031E040E050E0FA |
:105640000E94253C39014A01209311043093120431 |
:1056500040931304509314042091150430911604C0 |
:105660004091170450911804C801B7010E94B13B42 |
:1056700020E031E040E050E00E94253C59016A0101 |
:105680002093150430931604409317045093180484 |
:105690006091190470911A0480911B0490911C046C |
:1056A00020E031E040E050E00E94253C20931904C6 |
:1056B00030931A0440931B0450931C04C201B1019F |
:1056C0006619770988099909E0905E07FF24002789 |
:1056D0001127A80197010E94253C2093860430934E |
:1056E00087044093880450938904CA01B90120E0DB |
:1056F00031E040E050E00E94253C3E8B2D8B309302 |
:105700005D0420935C046F89788D898D9A8D6A1968 |
:105710007B098C099D09A80197010E94253C79010C |
:105720008A01CA01B90120E031E040E050E00E9466 |
:10573000253C3CAB2BAB30935B0420935A04609127 |
:10574000840770918507809186079091870720E0F4 |
:1057500031E040E050E00E94253C209384073093E4 |
:105760008507409386075093870760917C07709167 |
:105770007D0780917E0790917F0720E031E040E037 |
:1057800050E00E94253C20937C0730937D07409396 |
:105790007E0750937F072F8D38A149A15AA18FA56D |
:1057A00098A9A9A9BAA9281B390B4A0B5B0B298B0D |
:1057B0003A8B4B8B5C8B2093A1043093A2044093D3 |
:1057C000A3045093A4042B8D3C8D4D8D5E8D8BA531 |
:1057D0009CA5ADA5BEA5281B390B4A0B5B0B2D87DD |
:1057E0003E874F87588B20939D0430939E044093AF |
:1057F0009F045093A00429893A894B895C8920939E |
:10580000990430939A0440939B0450939C048D8593 |
:105810009E85AF85B8898093950490939604A09354 |
:105820009704B09398048091250490912604A09148 |
:105830002704B0912804821B930BA40BB50B809313 |
:10584000250490932604A0932704B0932804809104 |
:105850002D0490912E04A0912F04B09130042D8539 |
:105860003E854F855889821B930BA40BB50B809303 |
:105870002D0490932E04A0932F04B0933004C40100 |
:10588000B3012AE130E040E050E00E94253C309333 |
:10589000CD062093CC06C601B5012AE130E040E0F8 |
:1058A00050E00E94253C3093CF062093CE064989D4 |
:1058B0005A895093D1064093D0068D859E8590934A |
:1058C000D3068093D206C201B1012AE130E040E064 |
:1058D00050E00E94253C3093D5062093D4066F8972 |
:1058E000788D898D9A8D2AE130E040E050E00E9469 |
:1058F000253C3093D7062093D606F092E506E09239 |
:10590000E4068BA99CA9880F991F2BA93CA9F3E059 |
:10591000220F331FFA95E1F7820F931F9093E7064A |
:105920008093E60681E090E0909381048093800468 |
:105930008091780490917904A0917A04B0917B04CD |
:1059400082199309A409B509815E914BAF4FBF4FEE |
:105950008F539C49A040B04008F0C5C029893A89BE |
:105960004B895C89213080E1380780E0480780E07E |
:1059700058070CF450C080917F04882309F447C075 |
:10598000DA01C901ECE0B595A79597958795EA9559 |
:10599000D1F701969093810480938004DA01C901C4 |
:1059A00073E0B595A795979587957A95D1F78093EC |
:1059B000860490938704A0938804B093890489583F |
:1059C0009341A040B04064F088E893E1A0E0B0E0EB |
:1059D0008093860490938704A0938804B0938904ED |
:1059E0006091860470918704809188049091890465 |
:1059F00020E031E040E050E00E94253C8D899E8906 |
:105A0000820F931F90935D0480935C0469C081E0D2 |
:105A100080937F0465C010927F0429893A894B895D |
:105A20005C89203080EF38078FEF48078FEF5807E9 |
:105A30000CF056C080917E04882309F44DC0DA0131 |
:105A4000C901B095A095909581959F4FAF4FBF4FDD |
:105A50006CE0B595A795979587956A95D1F70196CE |
:105A60009093810480938004CA01B90128E030E05A |
:105A700040E050E00E94253C209386043093870448 |
:105A8000409388045093890428573C4E4F4F5F4FF2 |
:105A900064F488E79CEEAFEFBFEF809386049093A9 |
:105AA0008704A0938804B093890460918604709160 |
:105AB0008704809188049091890420E031E040E0DF |
:105AC00050E00E94253CAD89BE89A20FB31FB09360 |
:105AD0005D04A0935C040BC081E080937E0407C04A |
:105AE00010927E0404C01092810410928004809170 |
:105AF0005F07082F11278091800490918104081777 |
:105B0000190724F4109381040093800429893A89A9 |
:105B10004B895C8921503440404050405CF080917A |
:105B2000EF039091F0032091800430918104820F63 |
:105B3000931F13C029893A894B895C8920503C4FB7 |
:105B40004F4F5F4F74F48091EF039091F0032091D9 |
:105B5000800430918104821B930B9093F003809317 |
:105B6000EF0381E090E09093810480938004109291 |
:105B70008204109283041092840410928504809110 |
:105B8000740490917504A0917604B09177042F89E4 |
:105B9000388D498D5A8D821B930BA40BB50B815EFA |
:105BA000914BAF4FBF4F8F539C49A040B04008F07E |
:105BB000C6C08D859E85AF85B88981509041A04033 |
:105BC000B0400CF454C080917D04882309F44BC08C |
:105BD0008D859E85AF85B8893CE0B595A79597954D |
:105BE00087953A95D1F7019690938104809380042C |
:105BF0008D859E85AF85B88923E0B595A795979546 |
:105C000087952A95D1F78093820490938304A0937B |
:105C10008404B093850489589341A040B04064F057 |
:105C200088E893E1A0E0B0E080938204909383043D |
:105C3000A0938404B09385046091820470918304DE |
:105C4000809184049091850420E031E040E050E0B0 |
:105C50000E94253C8BA99CA9820F931F90935B0403 |
:105C600080935A0469C081E080937D0465C01092DE |
:105C70007D042D853E854F855889203080EF38077B |
:105C80008FEF48078FEF58070CF056C080917C04C7 |
:105C9000882309F44DC0DA01C901B095A09590950B |
:105CA00081959F4FAF4FBF4FFCE0B595A795979556 |
:105CB0008795FA95D1F7019690938104809380049B |
:105CC000CA01B90128E030E040E050E00E94253CE4 |
:105CD000209382043093830440938404509385047A |
:105CE00028573C4E4F4F5F4F64F488E79CEEAFEF70 |
:105CF000BFEF8093820490938304A0938404B093B5 |
:105D00008504609182047091830480918404909151 |
:105D1000850420E031E040E050E00E94253CABA942 |
:105D2000BCA9A20FB31FB0935B04A0935A040BC08D |
:105D300081E080937C0407C010927C0404C0109220 |
:105D40008104109280048091820490918304909346 |
:105D5000E1068093E0068091800490918104081709 |
:105D6000190724F410938104009380042D853E8547 |
:105D70004F85588921503440404050405CF080911C |
:105D8000F1039091F2032091800430918104820FFD |
:105D9000931F13C02D853E854F85588920503C4F59 |
:105DA0004F4F5F4F74F48091F1039091F203209173 |
:105DB000800430918104821B930B9093F2038093B3 |
:105DC000F1038091EF039091F0039093D9068093B3 |
:105DD000D8068091F1039091F2032091F503309160 |
:105DE000F603821B930B9C01E3E0220F331FEA951D |
:105DF000E1F7880F991F820F931F9093DB06809322 |
:105E0000DA0608C010925B0410925A0410925D04E6 |
:105E100010925C0420E030E040E050E06091940794 |
:105E20007091950780919607909197070E94F93A93 |
:105E3000882341F410925B0410925A0410925D047E |
:105E400010925C0480918C0790918D07A0918E0731 |
:105E5000B0918F078093780490937904A0937A048B |
:105E6000B0937B048091900790919107A091920745 |
:105E7000B09193078093740490937504A093760473 |
:105E8000B09377041092110410921204109213042C |
:105E90001092140410921504109216041092170414 |
:105EA000109218041092190410921A0410921B04F4 |
:105EB00010921C0410928C0710928D0710928E077E |
:105EC00010928F07109290071092910710929207EC |
:105ED00010929307109284071092850710928607FC |
:105EE0001092870710927C0710927D0710927E0710 |
:105EF00010927F071092DA031092D9038090530416 |
:105F000090905404940197FE04C022273327281947 |
:105F10003909253131053CF08091390784FD03C0F2 |
:105F200081E080938A04E09042075901CC24B7FCB9 |
:105F3000C094DC2CB401882777FD8095982F2E2DF6 |
:105F40003327442755270E94B13B9B01AC01C60172 |
:105F5000B5010E94B13B20E032E040E050E00E94F9 |
:105F6000253C89019A01FF24E89CC001E99C900D21 |
:105F7000F89C900D112464E070E00E94F03B600FEB |
:105F8000711F882777FD8095982F6093A5047093E3 |
:105F9000A6048093A7049093A80420913104309123 |
:105FA00032044091330450913404261B370B480BC4 |
:105FB000590B2093310430933204409333045093AF |
:105FC0003404213593EC390790E0490790E05907F4 |
:105FD0002CF080E593ECA0E0B0E009C0205B3C43EE |
:105FE0004F4F5F4F64F480EB9CE3AFEFBFEF8093C4 |
:105FF000310490933204A0933304B093340480911D |
:10600000390783FFA1C080914304815080934304EA |
:106010008F3FD9F40E94303790933E0480933D0423 |
:1060200020913F0430914004821B930B845E9D4F6E |
:1060300068E671E00E94F03B845B904090934204DC |
:106040008093410482E38093430460910104709142 |
:106050000204809103049091040420E032E040E0C7 |
:1060600050E00E94253C890137FF03C0109501953F |
:106070001F4F6091090470910A0480910B04909164 |
:106080000C0420E032E040E050E00E94253CB901E1 |
:1060900037FF03C0709561957F4F601771070CF44F |
:1060A000B8016332710574F480918A04882351F039 |
:1060B00080913D0490913E049093400480933F046E |
:1060C00010928A04209197033327629FC001639F37 |
:1060D000900D729F900D112460E470E00E94F03BDF |
:1060E000261B370B121613064CF580914104909134 |
:1060F0004204FC012E9FC0012F9F900D3E9F900DEA |
:10610000112460E270E00E94F03B882777FD8095C3 |
:10611000982F2091310430913204409133045091F2 |
:106120003404260F371F481F591F20933104309322 |
:106130003204409333045093340406C08AE090E064 |
:106140009093C1038093C00380918B04815080930E |
:106150008B048F3F09F079C088E180938B04E09035 |
:106160004507FF2400271127609101047091020464 |
:106170008091030490910404A80197010E94253C9A |
:106180003093AB062093AA066091090470910A042B |
:1061900080910B0490910C04A80197010E94253C6A |
:1061A0003093AD062093AC0680919D0790919E0799 |
:1061B0009093AF068093AE068091A7079091A807B1 |
:1061C0009093B1068093B0068091A0079091A107AB |
:1061D0009093B3068093B206809156049091570431 |
:1061E0009093B5068093B4066091390470913A0497 |
:1061F00080913B0490913C0420E032E040E050E08C |
:106200000E94253C3093B7062093B60680913D044A |
:1062100090913E049093BB068093BA068091080348 |
:10622000909109039093BD068093BC0680914E0423 |
:1062300099279093BF068093BE068091880790911E |
:1062400089079093CB068093CA0680915E04C09024 |
:106250008107D0908207882391F0B601882777FDC7 |
:106260008095982F0E94EF3A2091A2073091A307C2 |
:106270004091A4075091A5070E94693B2DC06091F1 |
:1062800001047091020480910304909104040E941F |
:10629000EF3A2091940730919507409196075091DD |
:1062A00097070E94693B7B018C01B601882777FD27 |
:1062B0008095982F0E94EF3A2091A2073091A30772 |
:1062C0004091A4075091A5070E94693B9B01AC0136 |
:1062D000C801B7010E944A3A0E94D23A70938207DD |
:1062E0006093810780915F04C0907907D0907A070E |
:1062F000882391F0B601882777FD8095982F0E941A |
:10630000EF3A2091A2073091A3074091A407509142 |
:10631000A5070E94693B2DC06091090470910A0491 |
:1063200080910B0490910C040E94EF3A2091940705 |
:106330003091950740919607509197070E94693BCD |
:106340007B018C01B601882777FD8095982F0E94EC |
:10635000EF3A2091A2073091A3074091A4075091F2 |
:10636000A5070E94693B9B01AC01C801B7010E94CF |
:106370004A3A0E94D23A70937A0760937907209044 |
:10638000940730909507409096075090970760913A |
:10639000A0077091A107882777FD8095982F0E940C |
:1063A000EF3A2091A2073091A3074091A4075091A2 |
:1063B000A5070E94693B7B018C0160911D047091CF |
:1063C0001E0480911F04909120040E94EF3AA201C4 |
:1063D00091010E94693B20E030E040E05FE30E94D1 |
:1063E000693B9B01AC01C801B7010E944A3A0E9477 |
:1063F000D23A8B017093A1076093A007E0907907D0 |
:10640000F0907A07F092E306E092E20660910904C8 |
:1064100070910A0480910B0490910C040E94EF3A51 |
:10642000A20191010E94693B69877A878B879C87CB |
:106430000E94D23A7093DD066093DC0620915104ED |
:10644000309152043EA32DA33093E9062093E80631 |
:10645000809181079091820738E0813093071CF08A |
:1064600080E098E005C08050984F34F480E098EFC9 |
:10647000909382078093810751E0E51658E0F50676 |
:106480001CF080E098E007C080E0E81688EFF8068E |
:1064900034F480E098EF90937A078093790798E03E |
:1064A000013019071CF080E098E005C00050184F3B |
:1064B00034F480E098EF9093A1078093A007809137 |
:1064C0003907992780FFD9C04091940381FF0EC0FE |
:1064D000423310F58091560490915704449790935D |
:1064E0005904809358041092450419C020919F03C9 |
:1064F0003091A003240F311D80913E079927FC01A4 |
:106500002E9FC0012F9F900D3E9F900D1124449708 |
:10651000909359048093580481E0809345048091BE |
:106520004404882321F010925904109258042091B9 |
:106530005604309157044091580450915904421721 |
:1065400053070CF09AC080914504882309F495C044 |
:10655000241B350B809195039927AC01249FC00122 |
:10656000259F900D349F900D112460E170E00E94F2 |
:10657000F03B09811A81061B170B2091D70330913C |
:10658000D803809193039927DC012A9FC0012B9F98 |
:10659000900D3A9F900D112468E070E00E94F03B4E |
:1065A000061B170B6091390470913A0480913B04EB |
:1065B00090913C0420E032E040E050E00E94253C15 |
:1065C000CA01B901209196033327442755270E9419 |
:1065D000B13B20E230E040E050E00E94253CBFEFBC |
:1065E0002E3C3B0714F42EEC3FEF80918C049091ED |
:1065F0008D04AC0164E0440F551F6A95E1F7481B18 |
:10660000590B2333310514F022E330E0021B130B46 |
:10661000CA01800F911F60E170E00E94F03B70930F |
:106620008D0460938C0480913A0799276817790745 |
:106630008CF4E981FA81E817F9072CF090938D0426 |
:1066400080938C0407C029813A8130938D04209374 |
:106650008C040DC080918C0490918D0449815A81E5 |
:106660004817590724F450938D0440938C0480916B |
:106670008C0490918D049A838983A981BA81B09307 |
:10668000B906A093B806E090A007F090A10700918A |
:10669000A5041091A6042091A7043091A80480912C |
:1066A0009F07882E992454971CF41C821B8229C0B2 |
:1066B00089819A8162E070E00E94F03B9701201B83 |
:1066C000310BCB01261737070CF4C9017095619582 |
:1066D0007F4F681779070CF4BC01C401E981FA8186 |
:1066E0008E1B9F0B681779070CF4CB0129813A8127 |
:1066F000281939093C832B832817390714F49C8304 |
:106700008B8360904F04709050048091B9049091F5 |
:10671000BA04681A790A80918107909182078619D4 |
:10672000970990938B0780938A0720E030E040E040 |
:1067300050E0C201B1010E94F93A8823D1F1609181 |
:10674000AD047091AE048091AF049091B0040E94AA |
:10675000EF3A5B016C016091010470910204809139 |
:106760000304909104040E94EF3AA20191010E9457 |
:10677000693B7B018C01B301882777FD8095982FB9 |
:106780000E94EF3A9B01AC01C801B7010E94493A4F |
:106790009B01AC01C601B5010E944A3A0E94D23A5F |
:1067A0006093AD047093AE048093AF049093B004F3 |
:1067B0001CC020918A0730918B07442737FD4095F4 |
:1067C000542F8091AD049091AE04A091AF04B0918C |
:1067D000B004820F931FA41FB51F8093AD04909344 |
:1067E000AE04A093AF04B093B0048091AD04909137 |
:1067F000AE04A091AF04B091B004181619061A06A1 |
:106800001B0624F40297A109B10903C00296A11D39 |
:10681000B11D8093AD049093AE04A093AF04B093E8 |
:10682000B0048091AD049091AE04A091AF04B091FA |
:10683000B00481383EE3930730E0A30730E0B307AC |
:106840002CF080E89EE3A0E0B0E009C08058914CB5 |
:10685000AF4FBF4F64F480E891ECAFEFBFEF809390 |
:10686000AD049093AE04A093AF04B093B0046091D4 |
:106870008A0770918B0780918F0390919003A0916C |
:106880009103B09192038D839E83AF83B88788274D |
:1068900077FD8095982F0E94EF3A7B018C016091E3 |
:1068A000AD047091AE048091AF049091B0040E9449 |
:1068B000EF3A9B01AC016D817E818F8198850E94AA |
:1068C000693B9B01AC01C801B7010E944A3A0E9492 |
:1068D000D23A5B016C017CAB6BAB80919E03E82EDE |
:1068E000FF24002711278B819C8197FF03C090957F |
:1068F00081959F4F62E070E00E94F03B9B01A9816F |
:10690000BA812A0F3B1F442737FD4095542FC801F9 |
:10691000B7010E94B13B20E430E040E050E00E942B |
:10692000253C3901EBA9FCA9E217F3070CF495010A |
:10693000AA24BB24A618B708A501A216B3060CF416 |
:10694000A90189819A812B813C81820F931F840F39 |
:10695000951F97FF03C020E030E005C09401881523 |
:1069600099050CF49C0180918307C82EDD24C60193 |
:10697000C216D3060CF4C90180937B0789819A81E2 |
:10698000841B950B4B815C81840F951F97FF03C07F |
:1069900020E030E005C09401881599050CF49C01B5 |
:1069A000C601C216D3060CF4C901809380078091FA |
:1069B000BB049091BC04ADA1BEA1A81BB90BBCAB9C |
:1069C000ABAB8091790790917A078A1B9B0B9093D0 |
:1069D00078078093770720E030E040E050E0C20184 |
:1069E000B1010E94F93A882371F16091A904709174 |
:1069F000AA048091AB049091AC040E94EF3A7B0111 |
:106A00008C01EBA9FCA9BF01882777FD8095982F01 |
:106A10000E94EF3A9B01AC0169857A858B859C8544 |
:106A20000E94493A9B01AC01C801B7010E944A3A51 |
:106A30000E94D23A6093A9047093AA048093AB0495 |
:106A40009093AC041CC020917707309178074427BD |
:106A500037FD4095542F8091A9049091AA04A091EC |
:106A6000AB04B091AC04820F931FA41FB51F809399 |
:106A7000A9049093AA04A093AB04B093AC048091B2 |
:106A8000A9049091AA04A091AB04B091AC0418168B |
:106A900019061A061B0624F40297A109B10903C0BE |
:106AA0000296A11DB11D8093A9049093AA04A093FE |
:106AB000AB04B093AC048091A9049091AA04A09176 |
:106AC000AB04B091AC048138FEE39F07F0E0AF0760 |
:106AD000F0E0BF072CF080E89EE3A0E0B0E009C042 |
:106AE0008058914CAF4FBF4F64F480E891ECAFEF0A |
:106AF000BFEF8093A9049093AA04A093AB04B09332 |
:106B0000AC046091770770917807882777FD8095AE |
:106B1000982F0E94EF3A7B018C016091A90470913B |
:106B2000AA048091AB049091AC040E94EF3A9B01BF |
:106B3000AC016D817E818F8198850E94693B9B01AC |
:106B4000AC01C801B7010E944A3A0E94D23A9301AF |
:106B5000661577050CF49B01C501A216B3060CF46B |
:106B6000C90149815A81480F591FAB81BC814A1B19 |
:106B70005B0B57FF03C020E030E005C094014815CF |
:106B800059050CF49A01A601C216D3060CF4A9010A |
:106B900040939A0729813A81281B390BEB81FC81AC |
:106BA0002E1B3F0B37FF03C040E050E005C0A4019F |
:106BB000281539050CF4A901C601C416D5060CF038 |
:106BC000D1C0CA01CFC020916E0430916F04C901B9 |
:106BD00013E0880F991F1A95E1F7821B930B68E069 |
:106BE00070E00E94F03B8B0170936F0460936E0421 |
:106BF00040E050E00C94822780915E04882311F4D9 |
:106C00000C94B1290C94A729E0904507FF24002794 |
:106C100011276FA578A989A99AA9A80197010E94AF |
:106C2000253C80919D0790919E07AA2797FDA095EE |
:106C3000BA2F281B390B4A0B5B0BCA01B90120E1A3 |
:106C400030E040E050E00E94253C59016A016BA50C |
:106C50007CA58DA59EA5A80197010E94253C809149 |
:106C6000A7079091A807AA2797FDA095BA2F281BE0 |
:106C7000390B4A0B5B0BCA01B90120E130E040E05F |
:106C800050E00E94253C79018A01F1E2AF16B1047F |
:106C9000C104D10414F40C94772AB0E2AB2EB12CC9 |
:106CA000C12CD12C0C94882A109211041092120439 |
:106CB00010921304109214041092150410921604EA |
:106CC000109217041092180410928C0710928D07DE |
:106CD00010928E0710928F071092900710929107D2 |
:106CE00010929207109293071092840710928507D2 |
:106CF000109286071092870710927C0710927D07EA |
:106D000010927E0710927F078091210490912204B7 |
:106D1000A0912304B0912404809325049093260429 |
:106D2000A0932704B09328048091290490912A0409 |
:106D3000A0912B04B0912C0480932D0490932E04E9 |
:106D4000A0932F04B09330041092DA031092D90369 |
:106D500010925D0410925C0410925B0410925A042D |
:106D60000C94C82A80939807E2E1CA5C0C945C3CBE |
:106D70008091BD049091BE04A091BF04B091C00465 |
:106D80008093C5049093C604A093C704B093C8042D |
:106D90008091C1049091C204A091C304B091C40435 |
:106DA0008093C9049093CA04A093CB04B093CC04FD |
:106DB00008951092BA041092B9041092BC04109273 |
:106DC000BB0408951F920F920FB60F9211242F93B8 |
:106DD0003F934F938F939F938091B707833019F020 |
:106DE0008430A1F508C08EB58093CD041EBC84E02C |
:106DF0008093B7072BC08091CD049927382F222785 |
:106E00008EB59927282B392BC9018D509E4F875E4F |
:106E10009340D0F48091BA07853019F0863069F438 |
:106E200006C03093BC072093BB0786E00BC03093AD |
:106E3000BE072093BD0787E005C03093C0072093AD |
:106E4000BF0785E08093BA071092B7079F918F9193 |
:106E50004F913F912F910F900FBE0F901F9018955B |
:106E6000AAE0B0E0E6E3F7E30C94403CA0905007C2 |
:106E7000BB2433E0AA0CBB1C3A95E1F7CC24DD24FB |
:106E800060910104709102048091030490910404C4 |
:106E9000A60195010E94253C79018A01FF24E7FCA7 |
:106EA000F094C7010E94F1392C01C7010E94343AC5 |
:106EB0003C016091090470910A0480910B04909147 |
:106EC0000C04A60195010E94253C79018A01FF244A |
:106ED000E7FCF094C7010E94F1399A878987C701BE |
:106EE0000E94343A1C016091BB077091BC07E0908E |
:106EF000BD07F090BE072091AF07332727FD3095DF |
:106F0000E21AF30A0027F7FC0095102FA090BF07A4 |
:106F1000B090C0072091B007332727FD3095A21A03 |
:106F2000B30ACC24B7FCC094DC2C2091AE073327E5 |
:106F300027FD3095621B730B882777FD8095982F6E |
:106F4000882477FC8094982CA40193010E94B13B83 |
:106F50003B014C0189859A85AA2797FDA095BA2FF8 |
:106F60008D839E83AF83B887C201AA2797FDA09522 |
:106F7000BA2F89839A83AB83BC83C801B7012D8163 |
:106F80003E814F8158850E94B13B29813A814B81D6 |
:106F90005C810E94B13B20E034E040E050E00E9480 |
:106FA000253C620E731E841E951E442437FC4094BB |
:106FB000542CC601B501A20191010E94B13B298167 |
:106FC0003A814B815C810E94B13B20E034E040E09B |
:106FD00050E00E94253C621A730A840A950AC8018F |
:106FE000B701A20191010E94B13B7B018C01C60156 |
:106FF000B5012D813E814F8158850E94B13BE60E3F |
:10700000F71E081F191FC801B70120E034E040E057 |
:1070100050E00E94253C79018A01C401B30120E0BF |
:1070200034E040E050E00E94253CCA01B901A801CB |
:1070300097010E9445399C0197FF05C08827992731 |
:10704000821B930B04C088E691E0821B930BE2E164 |
:10705000C65F0C945C3C8091B707813041F0813071 |
:1070600018F0823049F51CC02A9A81E016C02A988F |
:107070008091BA07853011F481E305C0863011F4A0 |
:1070800082E301C083E38EBD88E090E00E949A0C09 |
:107090009093B9078093B80782E08093B70708956B |
:1070A0008091B8079091B9070E94A30C882321F022 |
:1070B0001EBC83E08093B7070895A0E0B0E0E3E64C |
:1070C000F8E30C94423C299A809100018A3011F433 |
:1070D000289801C0289AAA24BB2400E010E0882444 |
:1070E0009924EE24FF2466247724CC24DD2462E353 |
:1070F000462E55248091BB079091BC0708171907AD |
:107100002CF40091BB071091BC070BC08091BB070A |
:107110009091BC078A159B0524F4A090BB07B09002 |
:10712000BC078091BD079091BE07E816F9062CF4C4 |
:10713000E090BD07F090BE070BC08091BD07909115 |
:10714000BE078815990524F48090BD079090BE076E |
:107150008091BF079091C007C816D9062CF4C09043 |
:10716000BF07D090C0070BC08091BF079091C007A8 |
:107170008615970524F46090BF077090C0075520CE |
:1071800081F485B191E0892785B985B192E089279D |
:1071900085B982E390E09093C1038093C00352E3EA |
:1071A000552E8AE090E00E949A0CEC01CE010E94DC |
:1071B000A30C8823D9F3E0913307FF27EE0FFF1FBD |
:1071C000EB5FF84F80819181843691050CF44A94ED |
:1071D000442011F05A948ECFC8018A199B099093CC |
:1071E000B2078093B107C701881999099093B40732 |
:1071F0008093B307C601861997099093B6078093C9 |
:10720000B507EEEAF7E0C8018A0D9B1D62E070E069 |
:107210000E94F03B6093AE07C701880D991D62E0A4 |
:1072200070E00E94F03B6093AF07C601860D971D8A |
:1072300062E070E00E94F03B6093B00789E0A8E64E |
:10724000B1E0182E0E94963CE0E1CDB7DEB70C9479 |
:107250005E3C83ED8CBD84B1846A84B98091000169 |
:107260008A3019F4539A5B9802C03E9A469885E09A |
:107270008093BA071092B70789E0EEEAF7E0A8E634 |
:10728000B1E0182E0E94853C0895DF92EF92FF92A4 |
:107290000F931F937B018C01611571058105910589 |
:1072A00041F4211531054105510519F480E090E0C4 |
:1072B00092C057FD03C061E0D62E02C09FEFD92EC9 |
:1072C000E114F1040105110531F48AE52D2D2802A0 |
:1072D000C001112480C086E0220F331F441F551FB8 |
:1072E0008A95D1F7CA01B901A80197010E94253CEE |
:1072F000F90137FF03C0F095E195FF4F41E0EA3512 |
:10730000F40734F4E55FFA4F8491282F332747C000 |
:107310005CE1E73AF5071CF02AE530E040C089E07F |
:10732000ED38F8071CF029E530E039C025E0EA3BEC |
:10733000F2071CF028E530E032C044E0E731F40702 |
:107340001CF027E530E02BC053E0EE32F5071CF0CF |
:1073500026E530E024C082E0E939F8071CF025E595 |
:1073600030E01DC022E0E233F2071CF024E530E0FB |
:1073700016C041E0E73EF4071CF023E530E00FC003 |
:1073800051E0ED3AF5071CF022E530E008C0EF5778 |
:10739000F1401CF021E530E002C020E530E01E1491 |
:1073A0001F04100611066CF48D2D992787FD90950A |
:1073B000AC01249FC001259F900D349F900D112496 |
:1073C0000AC01D142CF484EB90E0821B930B03C0C5 |
:1073D000C901845B90401F910F91FF90EF90DF9067 |
:1073E0000895FC0197FD03C041E050E005C0F09511 |
:1073F000E195FF4F4FEF5FEFEB35F1055CF0CF010B |
:107400008B5590408A35910540F484EB90E08E1BBB |
:107410009F0BFC0121E030E010C0CF01855B904064 |
:107420008A35910518F4E45BF04005C088E691E0E8 |
:107430008E1B9F0BFC012FEF3FEFEE0FFF1FEB5951 |
:10744000F94F85919491BC01629FC001639F900D9B |
:10745000729F900D11249C01429FC001439F900D8B |
:10746000529F900D112408952AE530E0281B390B16 |
:10747000C9010E94F1390895FC014150504030F09B |
:1074800001900616D1F73197CF01089588279927E3 |
:1074900008955058192EEFD001D0D2C0BA17620704 |
:1074A000730784079507B1F188F40EF410940B2E3E |
:1074B000BA2FA02D062E622F202D072E732F302DD0 |
:1074C000082E842F402D092E952F502DFF27552350 |
:1074D000B9F0591B49F0573E98F0469537952795D6 |
:1074E000A795F0405395C9F776F0BA0F621F731F46 |
:1074F000841F30F4879577956795B795F0409395FD |
:1075000017FA0F2E0895BF1BBB27BA0B620B730B24 |
:10751000840BF6CFDEF6DBC0AED001D091C0552390 |
:1075200059F0992369F09F575F57951B33F442F444 |
:10753000903811F4915805C09BC091589F3F09F4B1 |
:10754000C6C0BB27112462177307840730F4660F87 |
:10755000771F881FBB1F915098F311D00F920FD047 |
:107560000F920DD0A0E82617370748071B0609F031 |
:10757000A048BA2F602D7F918F9100240895A0E834 |
:107580000024621773078407B10528F0621B730B90 |
:10759000840BB1090A2A660F771F881FBB1FA695A7 |
:1075A00081F7089597FB73D09F3738F0FEE9F91BF8 |
:1075B000982F872F762F6B2F05C086C096958795BD |
:1075C00077956795F150D0F73EF49095809570953A |
:1075D00061957F4F8F4F9F4F0895E89403C097FBAD |
:1075E0000EF4F3DFB62F672F782F892F9EE9002442 |
:1075F00027C00ED05EF004C00BD026F001C008D02A |
:1076000019F020F48FEF089580E0089581E0089547 |
:1076100097FB092E052600F8689430D0E89407FC03 |
:1076200007C0621773078407950721F008F40094D8 |
:107630000794989408959A95BB0F661F771F881F2B |
:1076400011249923A1F08823B2F79F3F59F0BB0F73 |
:1076500048F421F4002011F460FF04C06F5F7F4FF5 |
:107660008F4F9F4F881F9795879597F908952CC046 |
:107670009FEF80EC0895052E092607FA440F551F49 |
:107680005F3F79F0AA27A51708F051E04795880FCA |
:10769000991F9F3F31F0BB27B91708F091E08795FC |
:1076A00008959F919F911124E3CF97FB880F991F15 |
:1076B0009F3F31F0BB27B91708F091E087950895F7 |
:1076C0009F919F911124D4CF6627772788279927E8 |
:1076D0000895D1DF01D0B4CF992339F0552329F093 |
:1076E0009F575F57950F13F49AF1F1CF91589F3F31 |
:1076F000E1F3629FA12D0F92BB27639FA00DB11DE7 |
:10770000EE27729FA00DB11DEE1FAF93AA27649FB5 |
:10771000B00DE11D739FB00DE11DAA1F6627829F6A |
:10772000B00DE11DA61F5527749FE00DA11D551F2B |
:10773000839FE00DA11D561F849FA00D511D852F15 |
:107740007A2F6E2F1F900F9088231AF4939539F497 |
:107750008FCF000C111CBB1F661F771F881F0128CD |
:107760000895629FD001739FF001829FE00DF11D8B |
:10777000649FE00DF11D929FF00D839FF00D749FAB |
:10778000F00D659FF00D9927729FB00DE11DF91F57 |
:10779000639FB00DE11DF91FBD01CF0111240895B4 |
:1077A000991B79E004C0991F961708F0961B881F53 |
:1077B0007A95C9F780950895AA1BBB1B51E107C0B4 |
:1077C000AA1FBB1FA617B70710F0A61BB70B881F71 |
:1077D000991F5A95A9F780959095BC01CD01089500 |
:1077E00097FB092E07260AD077FD04D0E5DF06D0E7 |
:1077F00000201AF4709561957F4F0895F6F79095E3 |
:1078000081959F4F0895A1E21A2EAA1BBB1BFD0173 |
:107810000DC0AA1FBB1FEE1FFF1FA217B307E4076F |
:10782000F50720F0A21BB30BE40BF50B661F771FC7 |
:10783000881F991F1A9469F76095709580959095A7 |
:107840009B01AC01BD01CF01089597FB092E0526D0 |
:107850000ED057FD04D0D7DF0AD0001C38F4509565 |
:107860004095309521953F4F4F4F5F4F0895F6F764 |
:1078700090958095709561957F4F8F4F9F4F08959C |
:107880002F923F924F925F926F927F928F929F9230 |
:10789000AF92BF92CF92DF92EF92FF920F931F931E |
:1078A000CF93DF93CDB7DEB7CA1BDB0B0FB6F894CF |
:1078B000DEBF0FBECDBF09942A88398848885F840F |
:1078C0006E847D848C849B84AA84B984C884DF8080 |
:1078D000EE80FD800C811B81AA81B981CE0FD11D64 |
:1078E0000FB6F894DEBF0FBECDBFED010895EE0FC9 |
:1078F000FF1F0590F491E02D0994F999FECFB2BDD8 |
:10790000A1BDF89A119600B40895F7DF01921A9478 |
:10791000E1F70895F999FECFB2BDA1BD00BC119663 |
:107920000FB6F894FA9AF99A0FBE08950190F2DF13 |
:087930001A94E1F70895FFCF5E |
:107938000A01FF64496E74656772616C4E69636B16 |
:1079480020202020496E74656772616C526F6C6CE0 |
:10795800202020204163634E69636B202020202073 |
:1079680020202020416363526F6C6C20202020204F |
:10797800202020204779726F4769657220202020D7 |
:1079880020202020486F6568656E57657274202036 |
:10799800202020204163635A2020202020202020FE |
:1079A8002020202047617320202020202020202014 |
:1079B800202020204B6F6D7061737356616C756564 |
:1079C800202020205370616E6E756E672020202065 |
:1079D80020202020456D7066616E672020202020C1 |
:1079E80020202020416E616C6F67313120202020DB |
:1079F800202020204D6F746F725F566F726E652065 |
:107A0800202020204D6F746F725F48696E74656E18 |
:107A1800202020204D6F746F725F4C696E6B73204D |
:107A2800202020204D6F746F725F526563687473F5 |
:107A3800202020204163635F5A202020202020201E |
:107A4800202020204D697474656C4163634E69631E |
:107A58006B2020204D697474656C416363526F6CB0 |
:107A68006C202020496E74656772616C4572724E95 |
:107A780069636B20496E74656772616C45727252F6 |
:107A88006F6C6C204D697474656C496E744E6963D3 |
:107A98006B2020204D697474656C496E74526F6C4C |
:107AA8006C0920004E65757472616C4E69636B20B9 |
:107AB80020202020526F6C6C4F66667365742020FE |
:107AC80020202020496E74526F6C6C2A46616B74BA |
:107AD8006F722020416E616C6F6732362020202043 |
:107AE80020202020446972656B74417573676C525D |
:107AF8006F6C6C204D65737377657274526F6C6C24 |
:107B080020202020417573676C65696368526F6C2B |
:107B18006C202020492D4C616765526F6C6C2020C9 |
:107B280020202020537469636B526F6C6C202020D6 |
:107B380020202020FFFF0A016400007D0000FF03D1 |
:107B48000102030405060708090A48616C6C6F20E6 |
:107B580057656C7400000000000000000000000081 |
:107B6800000000000000000000000000000000000D |
:107B780000000000000000000000000000000000FD |
:107B880000000000000000000000000000000000ED |
:107B9800000000000000000000000C014265676959 |
:107BA8006E6E657200004E6F726D616C00005370EE |
:107BB8006F72740000640090D0030090D003001727 |
:107BC800B7D13830FB103A409696020A644664EC06 |
:027BD800FF00AC |
:00000001FF |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/FlightCtrl.aps |
---|
0,0 → 1,0 |
<AVRStudio><MANAGEMENT><ProjectName>FlightCtrl</ProjectName><Created>15-May-2007 11:20:41</Created><LastEdit>11-Oct-2007 22:58:54</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>15-May-2007 11:20:41</Created><Version>4</Version><Build>4, 13, 0, 528</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>default\Flight-Ctrl.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>F:\SVN\MikroKopter\FlightCtrl\branches\V0.64_ZeroWarnings\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>AVR Simulator</CURRENT_TARGET><CURRENT_PART>ATmega644.xml</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>0</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><Triggers></Triggers></Debugger><AVRGCCPLUGIN><FILES><SOURCEFILE>uart.c</SOURCEFILE><SOURCEFILE>analog.c</SOURCEFILE><SOURCEFILE>eeprom.c</SOURCEFILE><SOURCEFILE>fc.c</SOURCEFILE><SOURCEFILE>GPS.c</SOURCEFILE><SOURCEFILE>main.c</SOURCEFILE><SOURCEFILE>menu.c</SOURCEFILE><SOURCEFILE>printf_P.c</SOURCEFILE><SOURCEFILE>rc.c</SOURCEFILE><SOURCEFILE>timer0.c</SOURCEFILE><SOURCEFILE>twimaster.c</SOURCEFILE><HEADERFILE>uart.h</HEADERFILE><HEADERFILE>_Settings.h</HEADERFILE><HEADERFILE>analog.h</HEADERFILE><HEADERFILE>fc.h</HEADERFILE><HEADERFILE>gps.h</HEADERFILE><HEADERFILE>main.h</HEADERFILE><HEADERFILE>menu.h</HEADERFILE><HEADERFILE>old_macros.h</HEADERFILE><HEADERFILE>printf_P.h</HEADERFILE><HEADERFILE>rc.h</HEADERFILE><HEADERFILE>Settings.h</HEADERFILE><HEADERFILE>timer0.h</HEADERFILE><HEADERFILE>twimaster.h</HEADERFILE></FILES><CONFIGS><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>NO</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE></EXTERNALMAKEFILE><PART>atmega644</PART><HEX>1</HEX><LIST>1</LIST><MAP>1</MAP><OUTPUTFILENAME>Flight-Ctrl.elf</OUTPUTFILENAME><OUTPUTDIR>default\</OUTPUTDIR><ISDIRTY>1</ISDIRTY><OPTIONS><OPTION><FILE>GPS.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>analog.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>eeprom.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>fc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>main.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>menu.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>printf_P.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>rc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>timer0.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>twimaster.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>uart.c</FILE><OPTIONLIST></OPTIONLIST></OPTION></OPTIONS><INCDIRS/><LIBDIRS/><LIBS><LIB>libc.a</LIB><LIB>libm.a</LIB></LIBS><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -Wstrict-prototypes -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -DVERSION_HAUPTVERSION=0 -DVERSION_NEBENVERSION=64 -DVERSION_KOMPATIBEL=5</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>1</USES_WINAVR><GCC_LOC>C:\Program Files\WinAVR\bin\avr-gcc.exe</GCC_LOC><MAKE_LOC>C:\Program Files\WinAVR\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><IOView><usergroups/></IOView><Files><File00000><FileId>00000</FileId><FileName>main.c</FileName><Status>1</Status></File00000><File00001><FileId>00001</FileId><FileName>uart.c</FileName><Status>1</Status></File00001><File00002><FileId>00002</FileId><FileName>menu.c</FileName><Status>1</Status></File00002><File00003><FileId>00003</FileId><FileName>timer0.c</FileName><Status>1</Status></File00003><File00004><FileId>00004</FileId><FileName>fc.c</FileName><Status>1</Status></File00004><File00005><FileId>00005</FileId><FileName>fc.h</FileName><Status>1</Status></File00005><File00006><FileId>00006</FileId><FileName>menu.h</FileName><Status>1</Status></File00006><File00007><FileId>00007</FileId><FileName>TWIMASTER.C</FileName><Status>1</Status></File00007><File00008><FileId>00008</FileId><FileName>twimaster.h</FileName><Status>1</Status></File00008><File00009><FileId>00009</FileId><FileName>uart.h</FileName><Status>1</Status></File00009><File00010><FileId>00010</FileId><FileName>_Settings.h</FileName><Status>1</Status></File00010><File00011><FileId>00011</FileId><FileName>analog.h</FileName><Status>1</Status></File00011><File00012><FileId>00012</FileId><FileName>gps.h</FileName><Status>1</Status></File00012><File00013><FileId>00013</FileId><FileName>main.h</FileName><Status>1</Status></File00013><File00014><FileId>00014</FileId><FileName>old_macros.h</FileName><Status>1</Status></File00014><File00015><FileId>00015</FileId><FileName>printf_P.h</FileName><Status>1</Status></File00015><File00016><FileId>00016</FileId><FileName>rc.h</FileName><Status>1</Status></File00016><File00017><FileId>00017</FileId><FileName>Settings.h</FileName><Status>1</Status></File00017><File00018><FileId>00018</FileId><FileName>timer0.h</FileName><Status>1</Status></File00018></Files><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio> |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/GPS.c |
---|
0,0 → 1,30 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
signed int GPS_Nick = 0; |
signed int GPS_Roll = 0; |
long GpsAktuell_X = 0; |
long GpsAktuell_Y = 0; |
long GpsZiel_X = 0; |
long GpsZiel_Y = 0; |
void GPS_Neutral(void) |
{ |
GpsZiel_X = GpsAktuell_X; |
GpsZiel_Y = GpsAktuell_Y; |
} |
void GPS_BerechneZielrichtung(void) |
{ |
GPS_Nick = 0; |
GPS_Roll = 0; |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/License.txt |
---|
0,0 → 1,52 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten und nichtkommerziellen Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt und genannt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-profit use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet, our webpage (http://www.MikroKopter.de) must be |
// + clearly linked and named as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/Readme.pdf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/Settings.h |
---|
--- v0.60_MicroMag3_Nick666/Festkomma/V0.67g/_Settings.h (nonexistent) |
+++ v0.60_MicroMag3_Nick666/Festkomma/V0.67g/_Settings.h (revision 561) |
@@ -0,0 +1,50 @@ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Testmodi |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define MOTOR_OFF 0 |
+#define MOTOR_TEST 0 |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Abstimmung |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define ACC_AMPLIFY 12 |
+#define FAKTOR_P 1 |
+#define FAKTOR_I 0.0001 |
+ |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Debug-Interface |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define SIO_DEBUG 1 // Soll der Debugger aktiviert sein? |
+#define MIN_DEBUG_INTERVALL 500 // in diesem Intervall werden Degugdaten ohne Aufforderung gesendet |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Sender |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ #define K_NICK 0 |
+ #define K_ROLL 1 |
+ #define K_GAS 2 |
+ #define K_GIER 3 |
+ #define K_POTI1 4 |
+ #define K_POTI2 5 |
+ #define K_POTI3 6 |
+ #define K_POTI4 7 |
+// +++++++++++++++++++++++++++++++ |
+// + Getestete Settings: |
+// +++++++++++++++++++++++++++++++ |
+// Setting: Kamera |
+// Stick_P:3 |
+// Stick_D:0 |
+// Gyro_P: 175 |
+// Gyro_I: 175 |
+// Ki_Anteil: 10 |
+// +++++++++++++++++++++++++++++++ |
+// + Getestete Settings: |
+// +++++++++++++++++++++++++++++++ |
+// Setting: Normal |
+// Stick_P:2 |
+// Stick_D:8 |
+// Gyro_P: 80 |
+// Gyro_I: 150 |
+// Ki_Anteil: 5 |
+ |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/analog.c |
---|
0,0 → 1,147 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az, UBat = 100; |
volatile int AdWertNick = 0, AdWertRoll = 0, AdWertGier = 0; |
volatile int AdWertAccRoll = 0,AdWertAccNick = 0,AdWertAccHoch = 0; |
volatile char MessanzahlNick = 0, MessanzahlRoll = 0, MessanzahlGier = 0; |
volatile char messanzahl_AccNick = 0, messanzahl_AccRoll = 0, messanzahl_AccHoch = 0; |
volatile long Luftdruck = 32000; |
volatile int StartLuftdruck; |
volatile unsigned int MessLuftdruck = 1023; |
unsigned char DruckOffsetSetting; |
volatile int HoeheD = 0; |
volatile char messanzahl_Druck; |
volatile int tmpLuftdruck; |
volatile unsigned int ZaehlMessungen = 0; |
//####################################################################################### |
// |
void ADC_Init(void) |
//####################################################################################### |
{ |
ADMUX = 0;//Referenz ist extern |
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE); |
//Free Running Mode, Division Factor 128, Interrupt on |
} |
void SucheLuftruckOffset(void) |
{ |
unsigned int off; |
off = eeprom_read_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET]); |
if(off > 20) off -= 10; |
OCR0A = off; |
Delay_ms_Mess(100); |
if(MessLuftdruck < 850) off = 0; |
for(; off < 250;off++) |
{ |
OCR0A = off; |
Delay_ms_Mess(50); |
printf("."); |
if(MessLuftdruck < 900) break; |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET], off); |
DruckOffsetSetting = off; |
Delay_ms_Mess(300); |
} |
//####################################################################################### |
// |
SIGNAL(SIG_ADC) |
//####################################################################################### |
{ |
static unsigned char kanal=0,state = 0; |
static unsigned int gier1, roll1, nick1; |
ANALOG_OFF; |
switch(state++) |
{ |
case 0: |
gier1 = ADC; |
kanal = 1; |
ZaehlMessungen++; |
break; |
case 1: |
roll1 = ADC; |
kanal = 2; |
break; |
case 2: |
nick1 = ADC; |
kanal = 4; |
break; |
case 3: |
UBat = (3 * UBat + ADC / 3) / 4;//(UBat + ((ADC * 39) / 256) + 19) / 2; |
kanal = 6; |
break; |
case 4: |
Aktuell_ay = NeutralAccY - ADC; |
AdWertAccRoll = Aktuell_ay; |
kanal = 7; |
break; |
case 5: |
Aktuell_ax = ADC - NeutralAccX; |
AdWertAccNick = Aktuell_ax; |
kanal = 0; |
break; |
case 6: |
if(PlatinenVersion == 10) AdWertGier = (ADC + gier1) / 2; |
else AdWertGier = ADC + gier1; |
kanal = 1; |
break; |
case 7: |
if(PlatinenVersion == 10) AdWertRoll = (ADC + roll1) / 2; |
else AdWertRoll = ADC + roll1; |
kanal = 2; |
break; |
case 8: |
if(PlatinenVersion == 10) AdWertNick = (ADC + nick1) / 2; |
else AdWertNick = ADC + nick1; |
//AdWertNick = 0; |
//AdWertNick += Poti2; |
kanal = 5; |
break; |
case 9: |
AdWertAccHoch = (signed int) ADC - NeutralAccZ; |
AdWertAccHoch += abs(Aktuell_ay) / 4 + abs(Aktuell_ax) / 4; |
if(AdWertAccHoch > 1) |
{ |
if(NeutralAccZ < 800) NeutralAccZ+= 0.02; |
} |
else if(AdWertAccHoch < -1) |
{ |
if(NeutralAccZ > 600) NeutralAccZ-= 0.02; |
} |
messanzahl_AccHoch = 1; |
Aktuell_az = ADC; |
Mess_Integral_Hoch += AdWertAccHoch; // Integrieren |
Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen |
kanal = 3; |
break; |
case 10: |
tmpLuftdruck += ADC; |
if(++messanzahl_Druck >= 5) |
{ |
MessLuftdruck = ADC; |
messanzahl_Druck = 0; |
HoeheD = (int)(StartLuftdruck - tmpLuftdruck - HoehenWert); // D-Anteil = neuerWert - AlterWert |
Luftdruck = (tmpLuftdruck + 3 * Luftdruck) / 4; |
HoehenWert = StartLuftdruck - Luftdruck; |
tmpLuftdruck = 0; |
} |
kanal = 0; |
state = 0; |
break; |
default: |
kanal = 0; |
state = 0; |
break; |
} |
ADMUX = kanal; |
if(state != 0) ANALOG_ON; |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/analog.h |
---|
0,0 → 1,24 |
/*####################################################################################### |
#######################################################################################*/ |
extern volatile int UBat; |
extern volatile int AdWertNick, AdWertRoll, AdWertGier; |
extern volatile int AdWertAccRoll,AdWertAccNick,AdWertAccHoch; |
extern volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az; |
extern volatile long Luftdruck; |
extern volatile char messanzahl_Druck; |
extern volatile unsigned int ZaehlMessungen; |
extern unsigned char DruckOffsetSetting; |
extern volatile int HoeheD; |
extern volatile unsigned int MessLuftdruck; |
extern volatile int StartLuftdruck; |
extern volatile char MessanzahlNick; |
unsigned int ReadADC(unsigned char adc_input); |
void ADC_Init(void); |
void SucheLuftruckOffset(void); |
#define ANALOG_OFF ADCSRA=0 |
#define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE) |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/compass.c |
---|
0,0 → 1,243 |
/* |
Copyright 2007, Niklas Nold |
This program (files compass.c and compass.h) is free software; you can redistribute it and/or modify |
it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; |
either version 3 of the License, or (at your option) any later version. |
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; |
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
Please note: All the other files for the project "Mikrokopter" by H. Buss are under the license (license_buss.txt) published by www.mikrokopter.de |
*/ |
#include "main.h" |
struct MM3_calib_struct ee_calib EEMEM; // Reservierung im EEPROM |
struct MM3_working_struct MM3; |
struct MM3_calib_struct MM3_calib; |
//############################################################################ |
// Initialisierung |
void init_MM3(void) |
//############################################################################ |
{ |
// SPI-Schnittstelle initialisieren |
SPCR = (1<<SPIE)|(1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0); // Interrupt an, Master, 156 kHz Oszillator |
DDRB |= (1<<PB7)|(1<<PB5)|(1<<PB2); // J8, MOSI, SCK Ausgang |
if(PlatinenVersion == 10) |
{ |
DDRD |= (1<<PD3); // PD3 als Ausgang |
PORTD &= ~(1<<PD3); // J5 permanent auf Low |
} |
else |
{ |
DDRC |= (1<<PC6); // PC6 als Ausgang |
PORTC &= ~(1<<PC6); // J9 permanent auf Low |
} |
// Init Statemachine |
MM3.AXIS = MM3_X; |
MM3.STATE = MM3_RESET; |
// Kalibrierung aus dem EEprom lesen |
eeprom_read_block(&MM3_calib,&ee_calib,sizeof(struct MM3_calib_struct)); |
} |
//############################################################################ |
// Wird in der SIGNAL (SIG_OVERFLOW0) aufgerufen |
void timer0_MM3(void) |
//############################################################################ |
{ |
switch (MM3.STATE) |
{ |
case MM3_RESET: |
PORTB |= (1<<PB2); // J8 auf High, MM3 Reset |
MM3.STATE = MM3_START_TRANSFER; |
return; |
case MM3_START_TRANSFER: |
PORTB &= ~(1<<PB2); // J8 auf Low (war ~125 µs auf High) |
if (MM3.AXIS == MM3_X) SPDR = 0x31; // Schreiben ins SPDR löst automatisch SPI-Übertragung (MOSI und MISO) aus |
else if (MM3.AXIS == MM3_Y) SPDR = 0x32; // Micromag Period Select ist auf 256 (0x30) |
else SPDR = 0x33; //if (MM3.AXIS == MM3_Z) // 1: x-Achse, 2: Y-Achse, 3: Z-Achse |
MM3.DRDY = SetDelay(8); // Laut Datenblatt max. Zeit bis Messung fertig (bei PS 256 eigentlich 4 ms) |
MM3.STATE = MM3_WAIT_DRDY; |
return; |
case MM3_WAIT_DRDY: |
if (CheckDelay(MM3.DRDY)) {SPDR = 0x00;MM3.STATE = MM3_DRDY;} // Irgendwas ins SPDR, damit Übertragung ausgelöst wird, wenn Wartezeit vorbei |
return; // Jetzt gehts weiter in SIGNAL (SIG_SPI) |
} |
} |
//############################################################################ |
// SPI byte ready |
SIGNAL (SIG_SPI) |
//############################################################################ |
{ |
static char tmp; |
int wert; |
switch (MM3.STATE) |
{ |
case MM3_DRDY: // 1. Byte ist da, zwischenspeichern |
tmp = SPDR; |
SPDR = 0x00; // Übertragung von 2. Byte auslösen |
MM3.STATE = MM3_BYTE2; |
return; |
case MM3_BYTE2: // 2. Byte der entsprechenden Achse ist da |
wert = tmp; |
wert <<= 8; // 1. Byte an MSB-Stelle rücken |
wert |= SPDR; // 2. Byte dranpappen |
if(abs(wert) < Max_Axis_Value) // Spikes filtern. Zuweisung nur, wenn Max-Wert nicht überschritten |
switch (MM3.AXIS) |
{ |
case MM3_X: |
MM3.x_axis = wert; |
MM3.AXIS = MM3_Y; |
break; |
case MM3_Y: |
MM3.y_axis = wert; |
MM3.AXIS = MM3_Z; |
break; |
default: //case MM3_Z: |
MM3.z_axis = wert; |
MM3.AXIS = MM3_X; |
} |
MM3.STATE = MM3_RESET; |
} |
} |
//############################################################################ |
// Kompass kalibrieren |
void calib_MM3(void) |
//############################################################################ |
{ |
signed int x_min=0,x_max=0,y_min=0,y_max=0,z_min=0,z_max=0; |
uint8_t measurement=50,beeper=0; |
unsigned int timer; |
GRN_ON; |
ROT_OFF; |
while (measurement) |
{ |
//H_earth = MM3.x_axis*MM3.x_axis + MM3.y_axis*MM3.y_axis + MM3.z_axis*MM3.z_axis; |
if (MM3.x_axis > x_max) x_max = MM3.x_axis; |
else if (MM3.x_axis < x_min) x_min = MM3.x_axis; |
if (MM3.y_axis > y_max) y_max = MM3.y_axis; |
else if (MM3.y_axis < y_min) y_min = MM3.y_axis; |
if (MM3.z_axis > z_max) z_max = MM3.z_axis; |
else if (MM3.z_axis < z_min) z_min = MM3.z_axis; |
if (!beeper) |
{ |
ROT_FLASH; |
GRN_FLASH; |
beeptime = 50; |
beeper = 50; |
} |
beeper--; |
// Schleife mit 100 Hz |
timer = SetDelay(10); |
while(!CheckDelay(timer)); |
// Wenn Gas zurück genommen wird, Kalibrierung mit 1/2 Sekunde Verzögerung beenden |
if (PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] < 100) measurement--; |
} |
// Wertebereich der Achsen |
MM3_calib.X_range = (x_max - x_min); |
MM3_calib.Y_range = (y_max - y_min); |
MM3_calib.Z_range = (z_max - z_min); |
// Offset der Achsen |
MM3_calib.X_off = (x_max + x_min) / 2; |
MM3_calib.Y_off = (y_max + y_min) / 2; |
MM3_calib.Z_off = (z_max + z_min) / 2; |
// und im EEProm abspeichern |
eeprom_write_block(&MM3_calib,&ee_calib,sizeof(struct MM3_calib_struct)); |
} |
//############################################################################ |
// Neigungskompensierung und Berechnung der Ausrichtung |
int heading_MM3(void) |
//############################################################################ |
{ |
signed int sin_nick, cos_nick, sin_roll, cos_roll; |
long x_axis, y_axis, z_axis; |
long x_corr, y_corr; |
signed int heading; |
int8_t nicktilt,rolltilt; |
unsigned int div_faktor; |
div_faktor = (uint16_t)EE_Parameter.UserParam3 * 8; |
// Berechung von sinus und cosinus |
nicktilt = (IntegralNick/div_faktor); |
sin_nick = sin_i(nicktilt); |
cos_nick = cos_i(nicktilt); |
rolltilt = (IntegralRoll/div_faktor); |
sin_roll = sin_i(rolltilt); |
cos_roll = cos_i(rolltilt); |
// Offset |
x_axis = (MM3.x_axis - MM3_calib.X_off); |
y_axis = (MM3.y_axis - MM3_calib.Y_off); |
z_axis = (MM3.z_axis - MM3_calib.Z_off); |
/* |
// Normierung Wertebereich |
if ((MM3_calib.X_range > MM3_calib.Y_range) && (MM3_calib.X_range > MM3_calib.Z_range)) |
{ |
y_axis = (y_axis * MM3_calib.X_range) / MM3_calib.Y_range; |
z_axis = (z_axis * MM3_calib.X_range) / MM3_calib.Z_range; |
} |
else if ((MM3_calib.Y_range > MM3_calib.X_range) && (MM3_calib.Y_range > MM3_calib.Z_range)) |
{ |
x_axis = (x_axis * MM3_calib.Y_range) / MM3_calib.X_range; |
z_axis = (z_axis * MM3_calib.Y_range) / MM3_calib.Z_range; |
} |
else //if ((MM3_calib.Z_range > MM3_calib.X_range) && (MM3_calib.Z_range > MM3_calib.Y_range)) |
{ |
x_axis = (x_axis * MM3_calib.Z_range) / MM3_calib.X_range; |
y_axis = (y_axis * MM3_calib.Z_range) / MM3_calib.Y_range; |
} |
*/ |
// Neigungskompensierung |
x_corr = x_axis * cos_nick; |
x_corr += (y_axis * sin_roll * sin_nick) /1024; |
x_corr -= (z_axis * cos_roll * sin_nick) /1024; |
x_corr /= 1024; |
y_corr = y_axis * cos_roll; |
y_corr += z_axis * sin_roll; |
y_corr /= 1024; |
// Winkelberechnung |
heading = atan2_i(x_corr, y_corr); |
if (heading < 0) heading = -heading; |
else heading = 360 - heading; |
return (heading); |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/compass.h |
---|
0,0 → 1,44 |
struct MM3_working_struct |
{ |
uint8_t STATE; |
unsigned int DRDY; |
uint8_t AXIS; |
volatile signed int x_axis; |
volatile signed int y_axis; |
volatile signed int z_axis; |
}; |
struct MM3_calib_struct |
{ |
int8_t X_off; |
int8_t Y_off; |
int8_t Z_off; |
uint16_t X_range; |
uint16_t Y_range; |
uint16_t Z_range; |
}; |
extern struct MM3_working_struct MM3; |
extern struct MM3_calib_struct MM3_calib; |
void init_MM3(void); |
void timer0_MM3(void); |
void calib_MM3(void); |
int heading_MM3(void); |
#define Max_Axis_Value 500 |
// Die Werte der Statemachine |
#define MM3_RESET 0 |
#define MM3_START_TRANSFER 1 |
#define MM3_WAIT_DRDY 2 |
#define MM3_DRDY 3 |
#define MM3_BYTE2 4 |
#define MM3_X 5 |
#define MM3_Y 6 |
#define MM3_Z 7 |
#define MM3_TILT 8 |
#define MM3_IDLE 9 |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/eeprom.c |
---|
0,0 → 1,182 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Konstanten |
// + 0-250 -> normale Werte |
// + 251 -> Poti1 |
// + 252 -> Poti2 |
// + 253 -> Poti3 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
void DefaultKonstanten1(void) |
{ |
EE_Parameter.Kanalbelegung[K_NICK] = 1; |
EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
EE_Parameter.Kanalbelegung[K_GAS] = 3; |
EE_Parameter.Kanalbelegung[K_GIER] = 4; |
EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
EE_Parameter.Kanalbelegung[K_POTI4] = 8; |
EE_Parameter.GlobalConfig = CFG_ACHSENKOPPLUNG_AKTIV;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV | CFG_KOMPASS_FIX;//0x01; |
EE_Parameter.Hoehe_MinGas = 30; |
EE_Parameter.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1 |
EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
EE_Parameter.Luftdruck_D = 50; // Wert : 0-250 |
EE_Parameter.Hoehe_ACC_Wirkung = 50; // Wert : 0-250 |
EE_Parameter.Hoehe_Verstaerkung = 4; // Wert : 0-50 |
EE_Parameter.Stick_P = 4; //2 // Wert : 1-6 |
EE_Parameter.Stick_D = 8; //8 // Wert : 0-64 |
EE_Parameter.Gier_P = 14; // Wert : 1-20 |
EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
EE_Parameter.GyroAccFaktor = 26; // Wert : 1-64 |
EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
EE_Parameter.Gyro_P = 120; //80 // Wert : 0-250 |
EE_Parameter.Gyro_I = 150; // Wert : 0-250 |
EE_Parameter.UnterspannungsWarnung = 94; // Wert : 0-250 |
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
EE_Parameter.I_Faktor = 32; |
EE_Parameter.UserParam1 = 32 * 4; //zur freien Verwendung |
EE_Parameter.UserParam2 = 0; //zur freien Verwendung |
EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
EE_Parameter.UserParam5 = 0; // zur freien Verwendung |
EE_Parameter.UserParam6 = 0; // zur freien Verwendung |
EE_Parameter.UserParam7 = 0; // zur freien Verwendung |
EE_Parameter.UserParam8 = 0; // zur freien Verwendung |
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickRefresh = 5; |
EE_Parameter.LoopGasLimit = 50; |
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
EE_Parameter.LoopHysterese = 50; |
EE_Parameter.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
EE_Parameter.AchsKopplung1 = 100; |
EE_Parameter.AchsGegenKopplung1 = 10; |
EE_Parameter.WinkelUmschlagNick = 100; |
EE_Parameter.WinkelUmschlagRoll = 100; |
EE_Parameter.GyroAccAbgleich = 50; // 1/k |
EE_Parameter.Driftkomp = 4; |
EE_Parameter.DynamicStability = 100; |
memcpy(EE_Parameter.Name, "Sport\0", 12); |
} |
void DefaultKonstanten2(void) |
{ |
EE_Parameter.Kanalbelegung[K_NICK] = 1; |
EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
EE_Parameter.Kanalbelegung[K_GAS] = 3; |
EE_Parameter.Kanalbelegung[K_GIER] = 4; |
EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
EE_Parameter.Kanalbelegung[K_POTI4] = 8; |
EE_Parameter.GlobalConfig = CFG_ACHSENKOPPLUNG_AKTIV;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01; |
EE_Parameter.Hoehe_MinGas = 30; |
EE_Parameter.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1 |
EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
EE_Parameter.Luftdruck_D = 50; // Wert : 0-250 |
EE_Parameter.Hoehe_ACC_Wirkung = 50; // Wert : 0-250 |
EE_Parameter.Hoehe_Verstaerkung = 2; // Wert : 0-50 |
EE_Parameter.Stick_P = 4; //2 // Wert : 1-6 |
EE_Parameter.Stick_D = 0; //8 // Wert : 0-64 |
EE_Parameter.Gier_P = 10; // Wert : 1-20 |
EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
EE_Parameter.GyroAccFaktor = 26; // Wert : 1-64 |
EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
EE_Parameter.Gyro_P = 175; //80 // Wert : 0-250 |
EE_Parameter.Gyro_I = 175; // Wert : 0-250 |
EE_Parameter.UnterspannungsWarnung = 94; // Wert : 0-250 |
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
EE_Parameter.I_Faktor = 32; |
EE_Parameter.UserParam1 = 20 * 4; // zur freien Verwendung |
EE_Parameter.UserParam2 = 0; // zur freien Verwendung |
EE_Parameter.UserParam3 = 0; // zur freien Verwendung |
EE_Parameter.UserParam4 = 0; // zur freien Verwendung |
EE_Parameter.UserParam5 = 0; // zur freien Verwendung |
EE_Parameter.UserParam6 = 0; // zur freien Verwendung |
EE_Parameter.UserParam7 = 0; // zur freien Verwendung |
EE_Parameter.UserParam8 = 0; // zur freien Verwendung |
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickRefresh = 5; |
EE_Parameter.LoopGasLimit = 50; |
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
EE_Parameter.LoopHysterese = 50; |
EE_Parameter.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
EE_Parameter.AchsKopplung1 = 100; // Faktor, mit dem Gier die Achsen Roll und Nick verkoppelt |
EE_Parameter.AchsGegenKopplung1 = 10; |
EE_Parameter.WinkelUmschlagNick = 100; |
EE_Parameter.WinkelUmschlagRoll = 100; |
EE_Parameter.GyroAccAbgleich = 100; // 1/k |
EE_Parameter.Driftkomp = 4; |
EE_Parameter.DynamicStability = 75; |
memcpy(EE_Parameter.Name, "Normal\0", 12); |
} |
void DefaultKonstanten3(void) |
{ |
EE_Parameter.Kanalbelegung[K_NICK] = 1; |
EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
EE_Parameter.Kanalbelegung[K_GAS] = 3; |
EE_Parameter.Kanalbelegung[K_GIER] = 4; |
EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
EE_Parameter.Kanalbelegung[K_POTI4] = 8; |
EE_Parameter.GlobalConfig = CFG_DREHRATEN_BEGRENZER | CFG_ACHSENKOPPLUNG_AKTIV;///*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01; |
EE_Parameter.Hoehe_MinGas = 30; |
EE_Parameter.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1 |
EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
EE_Parameter.Luftdruck_D = 50; // Wert : 0-250 |
EE_Parameter.Hoehe_ACC_Wirkung = 50; // Wert : 0-250 |
EE_Parameter.Hoehe_Verstaerkung = 2; // Wert : 0-50 |
EE_Parameter.Stick_P = 3; //2 // Wert : 1-6 |
EE_Parameter.Stick_D = 0; //8 // Wert : 0-64 |
EE_Parameter.Gier_P = 8; // Wert : 1-20 |
EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
EE_Parameter.GyroAccFaktor = 26; // Wert : 1-64 |
EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
EE_Parameter.Gyro_P = 200; //80 // Wert : 0-250 |
EE_Parameter.Gyro_I = 175; // Wert : 0-250 |
EE_Parameter.UnterspannungsWarnung = 94; // Wert : 0-250 |
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
EE_Parameter.I_Faktor = 10; |
EE_Parameter.UserParam1 = 20 * 4; // zur freien Verwendung |
EE_Parameter.UserParam2 = 0; // zur freien Verwendung |
EE_Parameter.UserParam3 = 0; // zur freien Verwendung |
EE_Parameter.UserParam4 = 0; // zur freien Verwendung |
EE_Parameter.UserParam5 = 0; // zur freien Verwendung |
EE_Parameter.UserParam6 = 0; // zur freien Verwendung |
EE_Parameter.UserParam7 = 0; // zur freien Verwendung |
EE_Parameter.UserParam8 = 0; // zur freien Verwendung |
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickRefresh = 5; |
EE_Parameter.LoopGasLimit = 50; |
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
EE_Parameter.LoopHysterese = 50; |
EE_Parameter.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
EE_Parameter.AchsKopplung1 = 100; // Faktor, mit dem Gier die Achsen Roll und Nick verkoppelt |
EE_Parameter.AchsGegenKopplung1 = 10; |
EE_Parameter.WinkelUmschlagNick = 100; |
EE_Parameter.WinkelUmschlagRoll = 100; |
EE_Parameter.GyroAccAbgleich = 100; // 1/k |
EE_Parameter.Driftkomp = 4; |
EE_Parameter.DynamicStability = 50; |
memcpy(EE_Parameter.Name, "Beginner\0", 12); |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/fc.c |
---|
0,0 → 1,1149 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "eeprom.c" |
unsigned char h,m,s; |
volatile unsigned int I2CTimeout = 100; |
int MesswertNick,MesswertRoll,MesswertGier; |
int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0,StartNeutralRoll = 0,StartNeutralNick = 0; |
int Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch; |
volatile int NeutralAccX=0, NeutralAccY=0; |
volatile float NeutralAccZ = 0; |
long IntegralNick = 0,IntegralNick2 = 0; |
long IntegralRoll = 0,IntegralRoll2 = 0; |
long IntegralAccNick = 0,IntegralAccRoll = 0,IntegralAccZ = 0; |
long Integral_Gier = 0; |
long Mess_IntegralNick = 0,Mess_IntegralNick2 = 0; |
long Mess_IntegralRoll = 0,Mess_IntegralRoll2 = 0; |
long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0; |
long MittelIntegralNick,MittelIntegralRoll,MittelIntegralNick2,MittelIntegralRoll2; |
long Mess_Integral_Hoch = 0; |
int KompassValue = 0; |
int KompassStartwert = 0; |
int KompassRichtung = 0; |
uint8_t updKompass = 0; |
unsigned char MAX_GAS,MIN_GAS; |
unsigned char Notlandung = 0; |
unsigned char HoehenReglerAktiv = 0; |
long Umschlag180Nick = 250000L, Umschlag180Roll = 250000L; |
float GyroFaktor; |
float IntegralFaktor; |
volatile int DiffNick,DiffRoll; |
int Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0; |
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count; |
unsigned char MotorWert[5]; |
volatile unsigned char SenderOkay = 0; |
int StickNick = 0,StickRoll = 0,StickGier = 0; |
char MotorenEin = 0; |
int HoehenWert = 0; |
int SollHoehe = 0; |
int LageKorrekturRoll = 0,LageKorrekturNick = 0; |
float Ki = FAKTOR_I; |
unsigned char Looping_Nick = 0,Looping_Roll = 0; |
unsigned char Looping_Links = 0, Looping_Rechts = 0, Looping_Unten = 0, Looping_Oben = 0; |
unsigned char Parameter_Luftdruck_D = 48; // Wert : 0-250 |
unsigned char Parameter_MaxHoehe = 251; // Wert : 0-250 |
unsigned char Parameter_Hoehe_P = 16; // Wert : 0-32 |
unsigned char Parameter_Hoehe_ACC_Wirkung = 58; // Wert : 0-250 |
unsigned char Parameter_KompassWirkung = 64; // Wert : 0-250 |
unsigned char Parameter_Gyro_P = 150; // Wert : 10-250 |
unsigned char Parameter_Gyro_I = 150; // Wert : 0-250 |
unsigned char Parameter_Gier_P = 2; // Wert : 1-20 |
unsigned char Parameter_I_Faktor = 10; // Wert : 1-20 |
unsigned char Parameter_UserParam1 = 0; |
unsigned char Parameter_UserParam2 = 0; |
unsigned char Parameter_UserParam3 = 0; |
unsigned char Parameter_UserParam4 = 0; |
unsigned char Parameter_UserParam5 = 0; |
unsigned char Parameter_UserParam6 = 0; |
unsigned char Parameter_UserParam7 = 0; |
unsigned char Parameter_UserParam8 = 0; |
unsigned char Parameter_ServoNickControl = 100; |
unsigned char Parameter_LoopGasLimit = 70; |
unsigned char Parameter_AchsKopplung1 = 0; |
unsigned char Parameter_AchsGegenKopplung1 = 0; |
unsigned char Parameter_DynamicStability = 100; |
struct mk_param_struct EE_Parameter; |
signed int ExternStickNick = 0,ExternStickRoll = 0,ExternStickGier = 0, ExternHoehenValue = -20; |
void Piep(unsigned char Anzahl) |
{ |
while(Anzahl--) |
{ |
if(MotorenEin) return; //auf keinen Fall im Flug! |
beeptime = 100; |
Delay_ms(250); |
} |
} |
/* |
//############################################################################ |
// Neutrallage kalibrieren und fest im EEPROM abspeichern |
void calib_acc(void) |
//############################################################################ |
{ |
unsigned int timer; |
acc_neutral.X = 0; |
acc_neutral.Y = 0; |
acc_neutral.Z = 0; |
CalibrierMittelwert(); |
timer = SetDelay(5); |
while (!CheckDelay(timer)); |
CalibrierMittelwert(); |
acc_neutral.X = abs(Mittelwert_AccNick) / ACC_AMPLIFY; |
acc_neutral.Y = abs(Mittelwert_AccRoll) / ACC_AMPLIFY; |
acc_neutral.Z = Aktuell_az; |
eeprom_write_block(&acc_neutral,&ee_acc_neutral,sizeof(struct acc_neutral_struct)); |
} |
*/ |
//############################################################################ |
// Nullwerte ermitteln |
void SetNeutral(void) |
//############################################################################ |
{ |
NeutralAccX = 0; |
NeutralAccY = 0; |
NeutralAccZ = 0; |
AdNeutralNick = 0; |
AdNeutralRoll = 0; |
AdNeutralGier = 0; |
Parameter_AchsKopplung1 = 0; |
Parameter_AchsGegenKopplung1 = 0; |
CalibrierMittelwert(); |
Delay_ms_Mess(100); |
CalibrierMittelwert(); |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
{ |
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
} |
AdNeutralNick= AdWertNick; |
AdNeutralRoll= AdWertRoll; |
AdNeutralGier= AdWertGier; |
StartNeutralRoll = AdNeutralRoll; |
StartNeutralNick = AdNeutralNick; |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) > 4) |
{ |
NeutralAccY = abs(Mittelwert_AccRoll) / ACC_AMPLIFY; |
NeutralAccX = abs(Mittelwert_AccNick) / ACC_AMPLIFY; |
NeutralAccZ = Aktuell_az; |
} |
else |
{ |
NeutralAccX = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK+1]); |
NeutralAccY = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL+1]); |
NeutralAccZ = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_Z]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_Z+1]); |
} |
Mess_IntegralNick = 0; |
Mess_IntegralNick2 = 0; |
Mess_IntegralRoll = 0; |
Mess_IntegralRoll2 = 0; |
Mess_Integral_Gier = 0; |
MesswertNick = 0; |
MesswertRoll = 0; |
MesswertGier = 0; |
StartLuftdruck = Luftdruck; |
HoeheD = 0; |
Mess_Integral_Hoch = 0; |
KompassStartwert = KompassValue; |
GPS_Neutral(); |
beeptime = 50; |
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L; |
ExternHoehenValue = 0; |
} |
//############################################################################ |
// Bearbeitet die Messwerte |
void Mittelwert(void) |
//############################################################################ |
{ |
static signed long tmpl,tmpl2; |
MesswertGier = (signed int) AdNeutralGier - AdWertGier; |
MesswertRoll = (signed int) AdWertRoll - AdNeutralRoll; |
MesswertNick = (signed int) AdWertNick - AdNeutralNick; |
// Beschleunigungssensor ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mittelwert_AccNick = ((long)Mittelwert_AccNick * 1 + ((ACC_AMPLIFY * (long)AdWertAccNick))) / 2L; |
Mittelwert_AccRoll = ((long)Mittelwert_AccRoll * 1 + ((ACC_AMPLIFY * (long)AdWertAccRoll))) / 2L; |
Mittelwert_AccHoch = ((long)Mittelwert_AccHoch * 1 + ((long)AdWertAccHoch)) / 2L; |
IntegralAccNick += ACC_AMPLIFY * AdWertAccNick; |
IntegralAccRoll += ACC_AMPLIFY * AdWertAccRoll; |
IntegralAccZ += Aktuell_az - NeutralAccZ; |
// Gier ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mess_Integral_Gier += MesswertGier; |
Mess_Integral_Gier2 += MesswertGier; |
// Kopplungsanteil +++++++++++++++++++++++++++++++++++++ |
if(!Looping_Nick && !Looping_Roll && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV)) |
{ |
tmpl = Mess_IntegralNick / 4096L; |
tmpl *= MesswertGier; |
tmpl *= Parameter_AchsKopplung1; //125 |
tmpl /= 2048L; |
tmpl2 = Mess_IntegralRoll / 4096L; |
tmpl2 *= MesswertGier; |
tmpl2 *= Parameter_AchsKopplung1; |
tmpl2 /= 2048L; |
} |
else tmpl = tmpl2 = 0; |
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++ |
MesswertRoll += tmpl; |
MesswertRoll += (tmpl2*Parameter_AchsGegenKopplung1)/512L; //109 |
Mess_IntegralRoll2 += MesswertRoll; |
Mess_IntegralRoll += MesswertRoll - LageKorrekturRoll; |
if(Mess_IntegralRoll > Umschlag180Roll) |
{ |
Mess_IntegralRoll = -(Umschlag180Roll - 10000L); |
Mess_IntegralRoll2 = Mess_IntegralRoll; |
} |
if(Mess_IntegralRoll <-Umschlag180Roll) |
{ |
Mess_IntegralRoll = (Umschlag180Roll - 10000L); |
Mess_IntegralRoll2 = Mess_IntegralRoll; |
} |
if(AdWertRoll < 15) MesswertRoll = -1000; |
if(AdWertRoll < 7) MesswertRoll = -2000; |
if(PlatinenVersion == 10) |
{ |
if(AdWertRoll > 1010) MesswertRoll = +1000; |
if(AdWertRoll > 1017) MesswertRoll = +2000; |
} |
else |
{ |
if(AdWertRoll > 2020) MesswertRoll = +1000; |
if(AdWertRoll > 2034) MesswertRoll = +2000; |
} |
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++ |
MesswertNick -= tmpl2; |
MesswertNick -= (tmpl*Parameter_AchsGegenKopplung1)/512L; |
Mess_IntegralNick2 += MesswertNick; |
Mess_IntegralNick += MesswertNick - LageKorrekturNick; |
if(Mess_IntegralNick > Umschlag180Nick) |
{ |
Mess_IntegralNick = -(Umschlag180Nick - 10000L); |
Mess_IntegralNick2 = Mess_IntegralNick; |
} |
if(Mess_IntegralNick <-Umschlag180Nick) |
{ |
Mess_IntegralNick = (Umschlag180Nick - 10000L); |
Mess_IntegralNick2 = Mess_IntegralNick; |
} |
if(AdWertNick < 15) MesswertNick = -1000; |
if(AdWertNick < 7) MesswertNick = -2000; |
if(PlatinenVersion == 10) |
{ |
if(AdWertNick > 1010) MesswertNick = +1000; |
if(AdWertNick > 1017) MesswertNick = +2000; |
} |
else |
{ |
if(AdWertNick > 2020) MesswertNick = +1000; |
if(AdWertNick > 2034) MesswertNick = +2000; |
} |
//++++++++++++++++++++++++++++++++++++++++++++++++ |
// ADC einschalten |
ANALOG_ON; |
//++++++++++++++++++++++++++++++++++++++++++++++++ |
Integral_Gier = Mess_Integral_Gier; |
IntegralNick = Mess_IntegralNick; |
IntegralRoll = Mess_IntegralRoll; |
IntegralNick2 = Mess_IntegralNick2; |
IntegralRoll2 = Mess_IntegralRoll2; |
if(EE_Parameter.GlobalConfig & CFG_DREHRATEN_BEGRENZER && !Looping_Nick && !Looping_Roll) |
{ |
if(MesswertNick > 200) MesswertNick += 4 * (MesswertNick - 200); |
else if(MesswertNick < -200) MesswertNick += 4 * (MesswertNick + 200); |
if(MesswertRoll > 200) MesswertRoll += 4 * (MesswertRoll - 200); |
else if(MesswertRoll < -200) MesswertRoll += 4 * (MesswertRoll + 200); |
} |
if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
} |
//############################################################################ |
// Messwerte beim Ermitteln der Nullage |
void CalibrierMittelwert(void) |
//############################################################################ |
{ |
// ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
ANALOG_OFF; |
MesswertNick = AdWertNick; |
MesswertRoll = AdWertRoll; |
MesswertGier = AdWertGier; |
Mittelwert_AccNick = ACC_AMPLIFY * (long)AdWertAccNick; |
Mittelwert_AccRoll = ACC_AMPLIFY * (long)AdWertAccRoll; |
Mittelwert_AccHoch = AdWertAccHoch; |
// ADC einschalten |
ANALOG_ON; |
if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
} |
//############################################################################ |
// Senden der Motorwerte per I2C-Bus |
void SendMotorData(void) |
//############################################################################ |
{ |
if(MOTOR_OFF || !MotorenEin) |
{ |
Motor_Hinten = 0; |
Motor_Vorne = 0; |
Motor_Rechts = 0; |
Motor_Links = 0; |
if(MotorTest[0]) Motor_Vorne = MotorTest[0]; |
if(MotorTest[1]) Motor_Hinten = MotorTest[1]; |
if(MotorTest[2]) Motor_Links = MotorTest[2]; |
if(MotorTest[3]) Motor_Rechts = MotorTest[3]; |
} |
DebugOut.Analog[12] = Motor_Vorne; |
DebugOut.Analog[13] = Motor_Hinten; |
DebugOut.Analog[14] = Motor_Links; |
DebugOut.Analog[15] = Motor_Rechts; |
//Start I2C Interrupt Mode |
twi_state = 0; |
motor = 0; |
i2c_start(); |
} |
//############################################################################ |
// Trägt ggf. das Poti als Parameter ein |
void ParameterZuordnung(void) |
//############################################################################ |
{ |
#define CHK_POTI(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; if(b <= min) b = min; else if(b >= max) b = max;} |
CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe,0,255); |
CHK_POTI(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100); |
CHK_POTI(Parameter_Hoehe_P,EE_Parameter.Hoehe_P,0,100); |
CHK_POTI(Parameter_Hoehe_ACC_Wirkung,EE_Parameter.Hoehe_ACC_Wirkung,0,255); |
CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung,0,255); |
CHK_POTI(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255); |
CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I,0,255); |
CHK_POTI(Parameter_I_Faktor,EE_Parameter.I_Faktor,0,255); |
CHK_POTI(Parameter_UserParam1,EE_Parameter.UserParam1,0,255); |
CHK_POTI(Parameter_UserParam2,EE_Parameter.UserParam2,0,255); |
CHK_POTI(Parameter_UserParam3,EE_Parameter.UserParam3,0,255); |
CHK_POTI(Parameter_UserParam4,EE_Parameter.UserParam4,0,255); |
CHK_POTI(Parameter_UserParam5,EE_Parameter.UserParam5,0,255); |
CHK_POTI(Parameter_UserParam6,EE_Parameter.UserParam6,0,255); |
CHK_POTI(Parameter_UserParam7,EE_Parameter.UserParam7,0,255); |
CHK_POTI(Parameter_UserParam8,EE_Parameter.UserParam8,0,255); |
CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
CHK_POTI(Parameter_LoopGasLimit,EE_Parameter.LoopGasLimit,0,255); |
CHK_POTI(Parameter_AchsKopplung1, EE_Parameter.AchsKopplung1,0,255); |
CHK_POTI(Parameter_AchsGegenKopplung1,EE_Parameter.AchsGegenKopplung1,0,255); |
CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability,0,255); |
Ki = (float) Parameter_I_Faktor * 0.0001; |
MAX_GAS = EE_Parameter.Gas_Max; |
MIN_GAS = EE_Parameter.Gas_Min; |
} |
//############################################################################ |
// |
void MotorRegler(void) |
//############################################################################ |
{ |
int motorwert,pd_ergebnis,h,tmp_int; |
int GierMischanteil,GasMischanteil; |
static long SummeNick=0,SummeRoll=0; |
static long sollGier = 0,tmp_long,tmp_long2; |
static long IntegralFehlerNick = 0; |
static long IntegralFehlerRoll = 0; |
static unsigned int RcLostTimer; |
static unsigned char delay_neutral = 0; |
static unsigned char delay_einschalten = 0,delay_ausschalten = 0; |
static unsigned int modell_fliegt = 0; |
static int hoehenregler = 0; |
static char TimerWerteausgabe = 0; |
static char NeueKompassRichtungMerken = 0; |
static long ausgleichNick, ausgleichRoll; |
Mittelwert(); |
GRN_ON; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gaswert ermitteln |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
GasMischanteil = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120; |
if(GasMischanteil > MAX_GAS - 20) GasMischanteil = MAX_GAS - 20; |
if(GasMischanteil < 0) GasMischanteil = 0; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Emfang schlecht |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(SenderOkay < 100) |
{ |
if(!PcZugriff) |
{ |
if(BeepMuster == 0xffff) |
{ |
beeptime = 15000; |
BeepMuster = 0x0c00; |
} |
} |
if(RcLostTimer) RcLostTimer--; |
else |
{ |
MotorenEin = 0; |
Notlandung = 0; |
} |
ROT_ON; |
if(modell_fliegt > 2000) // wahrscheinlich in der Luft --> langsam absenken |
{ |
GasMischanteil = EE_Parameter.NotGas; |
Notlandung = 1; |
PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] = 0; |
PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] = 0; |
PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] = 0; |
} |
else MotorenEin = 0; |
} |
else |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Emfang gut |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(SenderOkay > 140) |
{ |
Notlandung = 0; |
RcLostTimer = EE_Parameter.NotGasZeit * 50; |
if(GasMischanteil > 40) |
{ |
if(modell_fliegt < 0xffff) modell_fliegt++; |
} |
if((modell_fliegt < 200) || (GasMischanteil < 40)) |
{ |
SummeNick = 0; |
SummeRoll = 0; |
Mess_Integral_Gier = 0; |
Mess_Integral_Gier2 = 0; |
} |
if((GasMischanteil > 200) && MotorenEin == 0) |
{ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// auf Nullwerte kalibrieren |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) // Neutralwerte |
{ |
if(++delay_neutral > 200) // nicht sofort |
{ |
GRN_OFF; |
MotorenEin = 0; |
delay_neutral = 0; |
modell_fliegt = 0; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > 70) |
{ |
unsigned char setting=1; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5; |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], setting); // aktiven Datensatz merken |
} |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
{ |
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
} |
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], sizeof(struct mk_param_struct)); |
SetNeutral(); |
Piep(GetActiveParamSetNumber()); |
} |
} |
else |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) // ACC Neutralwerte speichern |
{ |
if(++delay_neutral > 200) // nicht sofort |
{ |
GRN_OFF; |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_NICK],0xff); // Werte löschen |
MotorenEin = 0; |
delay_neutral = 0; |
modell_fliegt = 0; |
SetNeutral(); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_NICK],NeutralAccX / 256); // ACC-NeutralWerte speichern |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_NICK+1],NeutralAccX % 256); // ACC-NeutralWerte speichern |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL],NeutralAccY / 256); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL+1],NeutralAccY % 256); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_Z],(int)NeutralAccZ / 256); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_Z+1],(int)NeutralAccZ % 256); |
Piep(GetActiveParamSetNumber()); |
} |
} |
else delay_neutral = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gas ist unten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(GasMischanteil < 35) |
{ |
// Starten |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) |
{ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Einschalten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(++delay_einschalten > 200) |
{ |
delay_einschalten = 200; |
modell_fliegt = 1; |
MotorenEin = 1; |
sollGier = 0; |
Mess_Integral_Gier = 0; |
Mess_Integral_Gier2 = 0; |
Mess_IntegralNick = 0; |
Mess_IntegralRoll = 0; |
Mess_IntegralNick2 = IntegralNick; |
Mess_IntegralRoll2 = IntegralRoll; |
SummeNick = 0; |
SummeRoll = 0; |
} |
} |
else delay_einschalten = 0; |
//Auf Neutralwerte setzen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Auschalten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) |
{ |
if(++delay_ausschalten > 200) // nicht sofort |
{ |
MotorenEin = 0; |
delay_ausschalten = 200; |
modell_fliegt = 0; |
} |
} |
else delay_ausschalten = 0; |
} |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// neue Werte von der Funke |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!NewPpmData-- || Notlandung) |
{ |
int tmp_int; |
ParameterZuordnung(); |
StickNick = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P; |
StickNick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; |
StickRoll = PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P; |
StickRoll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; |
StickGier = -PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; |
GyroFaktor = ((float)Parameter_Gyro_P + 10.0) / 256.0; |
IntegralFaktor = ((float) Parameter_Gyro_I) / 44000; |
#define KEY_VALUE (Parameter_UserParam1 * 4) //(Poti3 * 8) |
if(DubWiseKeys[1]) beeptime = 10; |
if(DubWiseKeys[1] & DUB_KEY_UP) tmp_int = KEY_VALUE; else |
if(DubWiseKeys[1] & DUB_KEY_DOWN) tmp_int = -KEY_VALUE; else tmp_int = 0; |
ExternStickNick = (ExternStickNick * 7 + tmp_int) / 8; |
if(DubWiseKeys[1] & DUB_KEY_LEFT) tmp_int = KEY_VALUE; else |
if(DubWiseKeys[1] & DUB_KEY_RIGHT) tmp_int = -KEY_VALUE; else tmp_int = 0; |
ExternStickRoll = (ExternStickRoll * 7 + tmp_int) / 8; |
if(DubWiseKeys[0] & 8) ExternStickGier = 50;else |
if(DubWiseKeys[0] & 4) ExternStickGier =-50;else ExternStickGier = 0; |
if(DubWiseKeys[0] & 2) ExternHoehenValue++; |
if(DubWiseKeys[0] & 16) ExternHoehenValue--; |
StickNick += ExternStickNick / 8; |
StickRoll += ExternStickRoll / 8; |
StickGier += ExternStickGier; |
if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0; |
if(GyroFaktor < 0) GyroFaktor = 0; |
if(IntegralFaktor < 0) IntegralFaktor = 0; |
// greift in den Stick ein, um ungewolltes überschlagen zu verhindern |
if(!(EE_Parameter.LoopConfig & CFG_LOOP_LINKS) && !(EE_Parameter.LoopConfig & CFG_LOOP_RECHTS)) |
{ |
if(IntegralNick > 60000) |
{ |
StickNick -= 8 * EE_Parameter.Stick_P; |
if(IntegralNick > 80000) StickNick -= 16 * EE_Parameter.Stick_P; |
} |
else |
if(IntegralNick < -60000) |
{ |
StickNick += 8 * EE_Parameter.Stick_P; |
if(IntegralNick > 80000) StickNick -= 16 * EE_Parameter.Stick_P; |
} |
if(IntegralRoll > 60000) |
{ |
StickRoll -= 8 * EE_Parameter.Stick_P; |
if(IntegralRoll > 80000) StickRoll -= 16 * EE_Parameter.Stick_P; |
} |
else |
if(IntegralRoll < -60000) |
{ |
StickRoll += 8 * EE_Parameter.Stick_P; |
if(IntegralRoll > 80000) StickRoll -= 16 * EE_Parameter.Stick_P; |
} |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Looping? |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_LINKS) Looping_Links = 1; |
else |
{ |
{ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Links = 0; |
} |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < -EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_RECHTS) Looping_Rechts = 1; |
else |
{ |
if(Looping_Rechts) // Hysterese |
{ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Rechts = 0; |
} |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_OBEN) Looping_Oben = 1; |
else |
{ |
if(Looping_Oben) // Hysterese |
{ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Oben = 0; |
} |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_UNTEN) Looping_Unten = 1; |
else |
{ |
if(Looping_Unten) // Hysterese |
{ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Unten = 0; |
} |
} |
if(Looping_Links || Looping_Rechts) Looping_Roll = 1; else Looping_Roll = 0; |
if(Looping_Oben || Looping_Unten) {Looping_Nick = 1; Looping_Roll = 0; Looping_Links = 0; Looping_Rechts = 0;} else Looping_Nick = 0; |
} // Ende neue Funken-Werte |
if(Looping_Roll) beeptime = 100; |
if(Looping_Roll || Looping_Nick) |
{ |
if(GasMischanteil > EE_Parameter.LoopGasLimit) GasMischanteil = EE_Parameter.LoopGasLimit; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Bei Empfangsausfall im Flug |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Notlandung) |
{ |
StickGier = 0; |
StickNick = 0; |
StickRoll = 0; |
GyroFaktor = 0.1; |
IntegralFaktor = 0.005; |
Looping_Roll = 0; |
Looping_Nick = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Integrale auf ACC-Signal abgleichen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define ABGLEICH_ANZAHL 256L |
MittelIntegralNick += IntegralNick; // Für die Mittelwertbildung aufsummieren |
MittelIntegralRoll += IntegralRoll; |
MittelIntegralNick2 += IntegralNick2; |
MittelIntegralRoll2 += IntegralRoll2; |
if(Looping_Nick || Looping_Roll) |
{ |
IntegralAccNick = 0; |
IntegralAccRoll = 0; |
MittelIntegralNick = 0; |
MittelIntegralRoll = 0; |
MittelIntegralNick2 = 0; |
MittelIntegralRoll2 = 0; |
Mess_IntegralNick2 = Mess_IntegralNick; |
Mess_IntegralRoll2 = Mess_IntegralRoll; |
ZaehlMessungen = 0; |
LageKorrekturNick = 0; |
LageKorrekturRoll = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!Looping_Nick && !Looping_Roll) |
{ |
long tmp_long, tmp_long2; |
tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick); |
tmp_long /= 16; |
tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll); |
tmp_long2 /= 16; |
#define AUSGLEICH 32 //(Parameter_UserParam1 / 2) |
if(tmp_long > AUSGLEICH) tmp_long = AUSGLEICH; |
if(tmp_long < -AUSGLEICH) tmp_long =-AUSGLEICH; |
if(tmp_long2 > AUSGLEICH) tmp_long2 = AUSGLEICH; |
if(tmp_long2 <-AUSGLEICH) tmp_long2 =-AUSGLEICH; |
Mess_IntegralNick -= tmp_long; |
Mess_IntegralRoll -= tmp_long2; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(ZaehlMessungen >= ABGLEICH_ANZAHL) |
{ |
static int cnt = 0; |
static char last_n_p,last_n_n,last_r_p,last_r_n; |
static long MittelIntegralNick_Alt,MittelIntegralRoll_Alt; |
if(!Looping_Nick && !Looping_Roll) |
{ |
MittelIntegralNick /= ABGLEICH_ANZAHL; |
MittelIntegralRoll /= ABGLEICH_ANZAHL; |
IntegralAccNick = (EE_Parameter.GyroAccFaktor * IntegralAccNick) / ABGLEICH_ANZAHL; |
IntegralAccRoll = (EE_Parameter.GyroAccFaktor * IntegralAccRoll) / ABGLEICH_ANZAHL; |
IntegralAccZ = IntegralAccZ / ABGLEICH_ANZAHL; |
#define MAX_I 0//(Poti2/10) |
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++ |
IntegralFehlerNick = (long)(MittelIntegralNick - (long)IntegralAccNick); |
ausgleichNick = IntegralFehlerNick / EE_Parameter.GyroAccAbgleich; |
LageKorrekturNick = ausgleichNick / ABGLEICH_ANZAHL; |
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++ |
IntegralFehlerRoll = (long)(MittelIntegralRoll - (long)IntegralAccRoll); |
ausgleichRoll = IntegralFehlerRoll / EE_Parameter.GyroAccAbgleich; |
LageKorrekturRoll = ausgleichRoll / ABGLEICH_ANZAHL; |
// Mess_IntegralNick -= ausgleichNick; |
// Mess_IntegralRoll -= ausgleichRoll; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gyro-Drift ermitteln |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
MittelIntegralNick2 /= ABGLEICH_ANZAHL; |
MittelIntegralRoll2 /= ABGLEICH_ANZAHL; |
// tmp_long = (long)(MittelIntegralNick2 - (long)IntegralAccNick); |
// tmp_long2 = (long)(MittelIntegralRoll2 - (long)IntegralAccRoll); |
tmp_long = IntegralNick2 - IntegralNick; |
tmp_long2 = IntegralRoll2 - IntegralRoll; |
//DebugOut.Analog[25] = MittelIntegralRoll2 / 26; |
IntegralFehlerNick = tmp_long; |
IntegralFehlerRoll = tmp_long2; |
Mess_IntegralNick2 -= IntegralFehlerNick; |
Mess_IntegralRoll2 -= IntegralFehlerRoll; |
// IntegralFehlerNick = (IntegralFehlerNick * 1 + tmp_long) / 2; |
// IntegralFehlerRoll = (IntegralFehlerRoll * 1 + tmp_long2) / 2; |
DebugOut.Analog[17] = IntegralAccNick / 26; |
DebugOut.Analog[18] = IntegralAccRoll / 26; |
DebugOut.Analog[19] = IntegralFehlerNick;// / 26; |
DebugOut.Analog[20] = IntegralFehlerRoll;// / 26; |
DebugOut.Analog[21] = MittelIntegralNick / 26; |
DebugOut.Analog[22] = MittelIntegralRoll / 26; |
//DebugOut.Analog[28] = ausgleichNick; |
DebugOut.Analog[29] = ausgleichRoll; |
DebugOut.Analog[30] = LageKorrekturRoll * 10; |
#define FEHLER_LIMIT (ABGLEICH_ANZAHL * 4) |
#define FEHLER_LIMIT2 (ABGLEICH_ANZAHL * 16) |
#define BEWEGUNGS_LIMIT 20000 |
// Nick +++++++++++++++++++++++++++++++++++++++++++++++++ |
cnt = 1;// + labs(IntegralFehlerNick) / 4096; |
if(labs(MittelIntegralNick_Alt - MittelIntegralNick) < BEWEGUNGS_LIMIT) |
{ |
if(IntegralFehlerNick > FEHLER_LIMIT2) |
{ |
if(last_n_p) |
{ |
cnt += labs(IntegralFehlerNick) / FEHLER_LIMIT2; |
ausgleichNick = IntegralFehlerNick / 8; |
if(ausgleichNick > 5000) ausgleichNick = 5000; |
LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL; |
} |
else last_n_p = 1; |
} else last_n_p = 0; |
if(IntegralFehlerNick < -FEHLER_LIMIT2) |
{ |
if(last_n_n) |
{ |
cnt += labs(IntegralFehlerNick) / FEHLER_LIMIT2; |
ausgleichNick = IntegralFehlerNick / 8; |
if(ausgleichNick < -5000) ausgleichNick = -5000; |
LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL; |
} |
else last_n_n = 1; |
} else last_n_n = 0; |
} else cnt = 0; |
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp; |
if(IntegralFehlerNick > FEHLER_LIMIT) AdNeutralNick += cnt; |
if(IntegralFehlerNick < -FEHLER_LIMIT) AdNeutralNick -= cnt; |
// Roll +++++++++++++++++++++++++++++++++++++++++++++++++ |
cnt = 1;// + labs(IntegralFehlerNick) / 4096; |
ausgleichRoll = 0; |
if(labs(MittelIntegralRoll_Alt - MittelIntegralRoll) < BEWEGUNGS_LIMIT) |
{ |
if(IntegralFehlerRoll > FEHLER_LIMIT2) |
{ |
if(last_r_p) |
{ |
cnt += labs(IntegralFehlerRoll) / FEHLER_LIMIT2; |
ausgleichRoll = IntegralFehlerRoll / 8; |
if(ausgleichRoll > 5000) ausgleichRoll = 5000; |
LageKorrekturRoll += ausgleichRoll / ABGLEICH_ANZAHL; |
} |
else last_r_p = 1; |
} else last_r_p = 0; |
if(IntegralFehlerRoll < -FEHLER_LIMIT2) |
{ |
if(last_r_n) |
{ |
cnt += labs(IntegralFehlerRoll) / FEHLER_LIMIT2; |
ausgleichRoll = IntegralFehlerRoll / 8; |
if(ausgleichRoll < -5000) ausgleichRoll = -5000; |
LageKorrekturRoll += ausgleichRoll / ABGLEICH_ANZAHL; |
} |
else last_r_n = 1; |
} else last_r_n = 0; |
} else |
{ |
cnt = 0; |
} |
DebugOut.Analog[27] = ausgleichRoll; |
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp; |
//if(cnt > 1) beeptime = 50; |
if(IntegralFehlerRoll > FEHLER_LIMIT) AdNeutralRoll += cnt; |
if(IntegralFehlerRoll < -FEHLER_LIMIT) AdNeutralRoll -= cnt; |
DebugOut.Analog[23] = AdNeutralNick;//10*(AdNeutralNick - StartNeutralNick); |
DebugOut.Analog[24] = 10*(AdNeutralRoll - StartNeutralRoll); |
} |
else |
{ |
LageKorrekturRoll = 0; |
LageKorrekturNick = 0; |
} |
if(!IntegralFaktor) { LageKorrekturRoll = 0; LageKorrekturNick = 0;} // z.B. bei HH |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++ |
MittelIntegralNick_Alt = MittelIntegralNick; |
MittelIntegralRoll_Alt = MittelIntegralRoll; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++ |
IntegralAccNick = 0; |
IntegralAccRoll = 0; |
IntegralAccZ = 0; |
MittelIntegralNick = 0; |
MittelIntegralRoll = 0; |
MittelIntegralNick2 = 0; |
MittelIntegralRoll2 = 0; |
ZaehlMessungen = 0; |
} |
//DebugOut.Analog[31] = StickRoll / (26*IntegralFaktor); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gieren |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(abs(StickGier) > 20) // war 35 |
{ |
if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) NeueKompassRichtungMerken = 1; |
} |
tmp_int = (long) EE_Parameter.Gier_P * ((long)StickGier * abs(StickGier)) / 512L; // expo y = ax + bx² |
tmp_int += (EE_Parameter.Gier_P * StickGier) / 4; |
sollGier = tmp_int; |
Mess_Integral_Gier -= tmp_int; |
if(Mess_Integral_Gier > 50000) Mess_Integral_Gier = 50000; // begrenzen |
if(Mess_Integral_Gier <-50000) Mess_Integral_Gier =-50000; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Kompass |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV) |
{ |
int w,v; |
if (!updKompass--) // Aufruf mit ~10 Hz |
{ |
KompassValue = heading_MM3(); |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
updKompass = 50; |
} |
w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln |
v = abs(IntegralRoll /512); |
if(v > w) w = v; // grösste Neigung ermitteln |
if(w < 35 && NeueKompassRichtungMerken) |
{ |
KompassStartwert = KompassValue; |
NeueKompassRichtungMerken = 0; |
} |
w = (w * Parameter_KompassWirkung) / 64; // auf die Wirkung normieren |
w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln |
if(w > 0) |
{ |
Mess_Integral_Gier += (KompassRichtung * w) / 32; // nach Kompass ausrichten |
} |
else beeptime = 10; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Debugwerte zuordnen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!TimerWerteausgabe--) |
{ |
TimerWerteausgabe = 24; |
DebugOut.Analog[0] = IntegralNick / EE_Parameter.GyroAccFaktor; |
DebugOut.Analog[1] = IntegralRoll / EE_Parameter.GyroAccFaktor; |
DebugOut.Analog[2] = Mittelwert_AccNick; |
DebugOut.Analog[3] = Mittelwert_AccRoll; |
DebugOut.Analog[4] = MesswertGier; |
DebugOut.Analog[5] = HoehenWert; |
DebugOut.Analog[6] =(Mess_Integral_Hoch / 512); |
DebugOut.Analog[8] = KompassValue; |
DebugOut.Analog[9] = UBat; |
DebugOut.Analog[10] = SenderOkay; |
DebugOut.Analog[16] = Mittelwert_AccHoch; |
/* DebugOut.Analog[16] = motor_rx[0]; |
DebugOut.Analog[17] = motor_rx[1]; |
DebugOut.Analog[18] = motor_rx[2]; |
DebugOut.Analog[19] = motor_rx[3]; |
DebugOut.Analog[20] = motor_rx[0] + motor_rx[1] + motor_rx[2] + motor_rx[3]; |
DebugOut.Analog[20] /= 14; |
DebugOut.Analog[21] = motor_rx[4]; |
DebugOut.Analog[22] = motor_rx[5]; |
DebugOut.Analog[23] = motor_rx[6]; |
DebugOut.Analog[24] = motor_rx[7]; |
DebugOut.Analog[25] = motor_rx[4] + motor_rx[5] + motor_rx[6] + motor_rx[7]; |
*/ |
// DebugOut.Analog[9] = MesswertNick; |
// DebugOut.Analog[9] = SollHoehe; |
// DebugOut.Analog[10] = Mess_Integral_Gier / 128; |
// DebugOut.Analog[11] = KompassStartwert; |
// DebugOut.Analog[10] = Parameter_Gyro_I; |
// DebugOut.Analog[10] = EE_Parameter.Gyro_I; |
// DebugOut.Analog[9] = KompassRichtung; |
// DebugOut.Analog[10] = GasMischanteil; |
// DebugOut.Analog[3] = HoeheD * 32; |
// DebugOut.Analog[4] = hoehenregler; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Drehgeschwindigkeit und -winkel zu einem Istwert zusammenfassen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Looping_Nick) MesswertNick = MesswertNick * GyroFaktor; |
else MesswertNick = IntegralNick * IntegralFaktor + MesswertNick * GyroFaktor; |
if(Looping_Roll) MesswertRoll = MesswertRoll * GyroFaktor; |
else MesswertRoll = IntegralRoll * IntegralFaktor + MesswertRoll * GyroFaktor; |
// MesswertGier = MesswertGier * (GyroFaktor/2) + Integral_Gier * IntegralFaktor; |
MesswertGier = MesswertGier * (GyroFaktor) + Integral_Gier * IntegralFaktor/2; |
DebugOut.Analog[28] = MesswertRoll; |
DebugOut.Analog[25] = IntegralRoll * IntegralFaktor; |
DebugOut.Analog[31] = StickRoll;// / (26*IntegralFaktor); |
// Maximalwerte abfangen |
#define MAX_SENSOR 2048 |
if(MesswertNick > MAX_SENSOR) MesswertNick = MAX_SENSOR; |
if(MesswertNick < -MAX_SENSOR) MesswertNick = -MAX_SENSOR; |
if(MesswertRoll > MAX_SENSOR) MesswertRoll = MAX_SENSOR; |
if(MesswertRoll < -MAX_SENSOR) MesswertRoll = -MAX_SENSOR; |
if(MesswertGier > MAX_SENSOR) MesswertGier = MAX_SENSOR; |
if(MesswertGier < -MAX_SENSOR) MesswertGier = -MAX_SENSOR; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Höhenregelung |
// Die Höhenregelung schwächt lediglich das Gas ab, erhöht es allerdings nicht |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//OCR0B = 180 - (Poti1 + 120) / 4; |
//DruckOffsetSetting = OCR0B; |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung |
{ |
int tmp_int; |
if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert |
{ |
if(Parameter_MaxHoehe < 50) |
{ |
SollHoehe = HoehenWert - 20; // Parameter_MaxHoehe ist der PPM-Wert des Schalters |
HoehenReglerAktiv = 0; |
} |
else |
HoehenReglerAktiv = 1; |
} |
else |
{ |
SollHoehe = ((int) ExternHoehenValue + (int) Parameter_MaxHoehe) * (int)EE_Parameter.Hoehe_Verstaerkung - 20; |
HoehenReglerAktiv = 1; |
} |
if(Notlandung) SollHoehe = 0; |
h = HoehenWert; |
if((h > SollHoehe) && HoehenReglerAktiv) // zu hoch --> drosseln |
{ h = ((h - SollHoehe) * (int) Parameter_Hoehe_P) / 16; // Differenz bestimmen --> P-Anteil |
h = GasMischanteil - h; // vom Gas abziehen |
h -= (HoeheD * Parameter_Luftdruck_D)/8; // D-Anteil |
tmp_int = ((Mess_Integral_Hoch / 512) * (signed long) Parameter_Hoehe_ACC_Wirkung) / 32; |
if(tmp_int > 50) tmp_int = 50; |
else if(tmp_int < -50) tmp_int = -50; |
h -= tmp_int; |
hoehenregler = (hoehenregler*15 + h) / 16; |
if(hoehenregler < EE_Parameter.Hoehe_MinGas) // nicht unter MIN |
{ |
if(GasMischanteil >= EE_Parameter.Hoehe_MinGas) hoehenregler = EE_Parameter.Hoehe_MinGas; |
if(GasMischanteil < EE_Parameter.Hoehe_MinGas) hoehenregler = GasMischanteil; |
} |
if(hoehenregler > GasMischanteil) hoehenregler = GasMischanteil; // nicht mehr als Gas |
GasMischanteil = hoehenregler; |
} |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Mischer und PI-Regler |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DebugOut.Analog[7] = GasMischanteil; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gier-Anteil |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define MUL_G 1.0 |
GierMischanteil = MesswertGier - sollGier; // Regler für Gier |
//GierMischanteil = 0; |
if(GierMischanteil > (GasMischanteil / 2)) GierMischanteil = GasMischanteil / 2; |
if(GierMischanteil < -(GasMischanteil / 2)) GierMischanteil = -(GasMischanteil / 2); |
if(GierMischanteil > ((MAX_GAS - GasMischanteil))) GierMischanteil = ((MAX_GAS - GasMischanteil)); |
if(GierMischanteil < -((MAX_GAS - GasMischanteil))) GierMischanteil = -((MAX_GAS - GasMischanteil)); |
if(GasMischanteil < 20) GierMischanteil = 0; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Nick-Achse |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DiffNick = MesswertNick - (StickNick - GPS_Nick); // Differenz bestimmen |
if(IntegralFaktor) SummeNick += IntegralNick * IntegralFaktor - (StickNick - GPS_Nick); // I-Anteil bei Winkelregelung |
else SummeNick += DiffNick; // I-Anteil bei HH |
if(SummeNick > 0) SummeNick-= 2 ; else SummeNick += 2 ; |
if(SummeNick > 16000) SummeNick = 16000; |
if(SummeNick < -16000) SummeNick = -16000; |
pd_ergebnis = DiffNick + Ki * SummeNick; // PI-Regler für Nick |
// Motor Vorn |
tmp_int = ((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64; |
if(pd_ergebnis > tmp_int) pd_ergebnis = tmp_int; |
if(pd_ergebnis < -tmp_int) pd_ergebnis = -tmp_int; |
motorwert = GasMischanteil + pd_ergebnis + GierMischanteil; // Mischer |
if ((motorwert < 0)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Vorne = motorwert; |
// Motor Heck |
motorwert = GasMischanteil - pd_ergebnis + GierMischanteil; |
if ((motorwert < 0)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Hinten = motorwert; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Roll-Achse |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DiffRoll = MesswertRoll - (StickRoll - GPS_Roll); // Differenz bestimmen |
if(IntegralFaktor) SummeRoll += IntegralRoll * IntegralFaktor - (StickRoll - GPS_Roll);// I-Anteil bei Winkelregelung |
else SummeRoll += DiffRoll; // I-Anteil bei HH |
if(SummeRoll > 0) SummeRoll-= 2 ; else SummeRoll += 2 ; |
if(SummeRoll > 16000) SummeRoll = 16000; |
if(SummeRoll < -16000) SummeRoll = -16000; |
pd_ergebnis = DiffRoll + Ki * SummeRoll; // PI-Regler für Roll |
tmp_int = ((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64; |
if(pd_ergebnis > tmp_int) pd_ergebnis = tmp_int; |
if(pd_ergebnis < -tmp_int) pd_ergebnis = -tmp_int; |
// Motor Links |
motorwert = GasMischanteil + pd_ergebnis - GierMischanteil; |
if ((motorwert < 0)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Links = motorwert; |
// Motor Rechts |
motorwert = GasMischanteil - pd_ergebnis - GierMischanteil; |
if ((motorwert < 0)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Rechts = motorwert; |
// +++++++++++++++++++++++++++++++++++++++++++++++ |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/fc.h |
---|
0,0 → 1,153 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
#ifndef _FC_H |
#define _FC_H |
extern volatile unsigned int I2CTimeout; |
extern unsigned char Sekunde,Minute; |
extern long Mess_IntegralNick,Mess_IntegralNick2; |
extern long Mess_IntegralRoll,Mess_IntegralRoll2; |
extern long Mess_Integral_Hoch; |
extern long Mess_Integral_Gier,Mess_Integral_Gier2; |
extern int KompassValue; |
extern int KompassStartwert; |
extern int KompassRichtung; |
extern long IntegralNick,IntegralNick2; |
extern long IntegralRoll,IntegralRoll2; |
extern long IntegralAccNick,IntegralAccRoll,IntegralAccZ; |
extern long Integral_Gier; |
extern int HoehenWert; |
extern int SollHoehe; |
extern int MesswertNick,MesswertRoll,MesswertGier; |
extern int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch; |
extern volatile int NeutralAccX, NeutralAccY; |
extern volatile float NeutralAccZ; |
extern long Umschlag180Nick, Umschlag180Roll; |
extern signed int ExternStickNick,ExternStickRoll,ExternStickGier; |
extern unsigned char Parameter_UserParam1,Parameter_UserParam2,Parameter_UserParam3,Parameter_UserParam4,Parameter_UserParam5,Parameter_UserParam6,Parameter_UserParam7,Parameter_UserParam8; |
void MotorRegler(void); |
void SendMotorData(void); |
void CalibrierMittelwert(void); |
void Mittelwert(void); |
void SetNeutral(void); |
void Piep(unsigned char Anzahl); |
extern void DefaultKonstanten(void); |
void DefaultKonstanten1(void); |
void DefaultKonstanten2(void); |
extern unsigned char h,m,s; |
extern volatile unsigned char Timeout ; |
extern volatile int DiffNick,DiffRoll; |
extern int Poti1, Poti2, Poti3, Poti4; |
extern volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count; |
extern unsigned char MotorWert[5]; |
extern volatile unsigned char SenderOkay; |
extern int StickNick,StickRoll,StickGier; |
extern char MotorenEin; |
extern void DefaultKonstanten1(void); |
extern void DefaultKonstanten2(void); |
struct acc_neutral_struct |
{ |
volatile int X; |
volatile int Y; |
volatile float Z; |
}; |
extern struct acc_neutral_struct acc_neutral; |
extern void calib_acc(void); |
struct mk_param_struct |
{ |
unsigned char Kanalbelegung[8]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
unsigned char Hoehe_MinGas; // Wert : 0-100 |
unsigned char Luftdruck_D; // Wert : 0-250 |
unsigned char MaxHoehe; // Wert : 0-32 |
unsigned char Hoehe_P; // Wert : 0-32 |
unsigned char Hoehe_Verstaerkung; // Wert : 0-50 |
unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250 |
unsigned char Stick_P; // Wert : 1-6 |
unsigned char Stick_D; // Wert : 0-64 |
unsigned char Gier_P; // Wert : 1-20 |
unsigned char Gas_Min; // Wert : 0-32 |
unsigned char Gas_Max; // Wert : 33-250 |
unsigned char GyroAccFaktor; // Wert : 1-64 |
unsigned char KompassWirkung; // Wert : 0-32 |
unsigned char Gyro_P; // Wert : 10-250 |
unsigned char Gyro_I; // Wert : 0-250 |
unsigned char UnterspannungsWarnung; // Wert : 0-250 |
unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
unsigned char UfoAusrichtung; // X oder + Formation |
unsigned char I_Faktor; // Wert : 0-250 |
unsigned char UserParam1; // Wert : 0-250 |
unsigned char UserParam2; // Wert : 0-250 |
unsigned char UserParam3; // Wert : 0-250 |
unsigned char UserParam4; // Wert : 0-250 |
unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
unsigned char ServoNickRefresh; // |
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
unsigned char LoopHysterese; // Wert: 0-250 Hysterese für Stickausschlag |
unsigned char AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung) |
unsigned char AchsGegenKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick Gegenkoppelt (NickRollGegenkopplung) |
unsigned char WinkelUmschlagNick; // Wert: 0-250 180°-Punkt |
unsigned char WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt |
unsigned char GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung) |
unsigned char Driftkomp; |
unsigned char DynamicStability; |
unsigned char UserParam5; // Wert : 0-250 |
unsigned char UserParam6; // Wert : 0-250 |
unsigned char UserParam7; // Wert : 0-250 |
unsigned char UserParam8; // Wert : 0-250 |
//------------------------------------------------ |
unsigned char LoopConfig; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
unsigned char ServoNickCompInvert; // Wert : 0-250 0 oder 1 // WICHTIG!!! am Ende lassen |
unsigned char Reserved[4]; |
char Name[12]; |
}; |
/* |
unsigned char ServoNickMax; // Wert : 0-250 |
unsigned char ServoNickRefresh; // |
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
//------------------------------------------------ |
unsigned char LoopConfig; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
unsigned char ServoNickCompInvert; // Wert : 0-250 0 oder 1 // WICHTIG!!! am Ende lassen |
unsigned char Reserved[4]; |
char Name[12]; |
*/ |
extern struct mk_param_struct EE_Parameter; |
extern unsigned char Parameter_Luftdruck_D; |
extern unsigned char Parameter_MaxHoehe; |
extern unsigned char Parameter_Hoehe_P; |
extern unsigned char Parameter_Hoehe_ACC_Wirkung; |
extern unsigned char Parameter_KompassWirkung; |
extern unsigned char Parameter_Gyro_P; |
extern unsigned char Parameter_Gyro_I; |
extern unsigned char Parameter_Gier_P; |
extern unsigned char Parameter_ServoNickControl; |
extern unsigned char Parameter_AchsKopplung1; |
extern unsigned char Parameter_AchsGegenKopplung1; |
#endif //_FC_H |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/flight.pnproj |
---|
0,0 → 1,0 |
<Project name="Flight-Ctrl"><File path="uart.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="uart.c"></File><File path="printf_P.h"></File><File path="printf_P.c"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="old_macros.h"></File><File path="twimaster.c"></File><File path="version.txt"></File><File path="twimaster.h"></File><File path="rc.c"></File><File path="rc.h"></File><File path="fc.h"></File><File path="fc.c"></File><File path="menu.h"></File><File path="menu.c"></File><File path="_Settings.h"></File><File path="analog.c"></File><File path="analog.h"></File><File path="GPS.c"></File><File path="gps.h"></File><File path="License.txt"></File><File path="eeprom.c"></File><File path="compass.c"></File><File path="compass.h"></File><File path="mymath.c"></File><File path="mymath.h"></File></Project> |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/flight.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="Flight-Ctrl" x="true"></e></ViewState></pd> |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/gps.h |
---|
0,0 → 1,14 |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Roll; |
void GPS_Neutral(void); |
void GPS_BerechneZielrichtung(void); |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/main.c |
---|
0,0 → 1,263 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten und nicht-kommerziellen Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt und genannt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
// Reservierung im EEPROM |
unsigned char EEPromArray[10] EEMEM; |
struct mk_param_struct EEParameterArray[5] EEMEM; |
unsigned char PlatinenVersion = 10; |
// -- Parametersatz aus EEPROM lesen --- |
// number [0..5] |
void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if (number > 5) number = 5; |
number--; // Auf Index 0 bis 4 anpassen |
eeprom_read_block(buffer, &EEParameterArray[number], length); |
} |
// -- Parametersatz ins EEPROM schreiben --- |
// number [0..5] |
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if (number > 5) number = 5; |
number--; // Auf Index 0 bis 4 anpassen |
eeprom_write_block(buffer, &EEParameterArray[number], length); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken |
} |
unsigned char GetActiveParamSetNumber(void) |
{ |
unsigned char set; |
set = eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET]); |
if(set > 5) |
{ |
set = 2; |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], set); // diesen Parametersatz als aktuell merken |
} |
return(set); |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
unsigned int timer; |
//unsigned int timer2 = 0; |
DDRB = 0x00; |
PORTB = 0x00; |
for(timer = 0; timer < 1000; timer++); // verzögern |
if(PINB & 0x01) PlatinenVersion = 11; else PlatinenVersion = 10; |
DDRC = 0x81; // SCL |
PORTC = 0xff; // Pullup SDA |
DDRB = 0x1B; // LEDs und Druckoffset |
PORTB = 0x01; // LED_Rot |
DDRD = 0x3E; // Speaker & TXD & J3 J4 J5 |
DDRD |=0x80; // J7 |
PORTD = 0xF7; // LED |
MCUSR &=~(1<<WDRF); |
WDTCSR |= (1<<WDCE)|(1<<WDE); |
WDTCSR = 0; |
beeptime = 2000; |
StickGier = 0; PPM_in[K_GAS] = 0;StickRoll = 0; StickNick = 0; |
ROT_OFF; |
Timer_Init(); |
UART_Init(); |
rc_sum_init(); |
ADC_Init(); |
i2c_init(); |
init_MM3(); |
sei(); |
VersionInfo.Hauptversion = VERSION_HAUPTVERSION; |
VersionInfo.Nebenversion = VERSION_NEBENVERSION; |
VersionInfo.PCKompatibel = VERSION_KOMPATIBEL; |
printf("\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d%c ",PlatinenVersion/10,PlatinenVersion%10, VERSION_HAUPTVERSION, VERSION_NEBENVERSION,VERSION_INDEX + 'a'); |
printf("\n\r=============================="); |
GRN_ON; |
#define EE_DATENREVISION 68 // wird angepasst, wenn sich die EEPROM-Daten geändert haben |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != EE_DATENREVISION) |
{ |
printf("\n\rInit. EEPROM: Generiere Default-Parameter..."); |
DefaultKonstanten1(); |
for (unsigned char i=0;i<6;i++) |
{ |
if(i==2) DefaultKonstanten2(); // Kamera |
if(i==3) DefaultKonstanten3(); // Beginner |
if(i>3) DefaultKonstanten2(); // Kamera |
WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], sizeof(struct mk_param_struct)); |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], 3); // default-Setting |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], EE_DATENREVISION); |
} |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) > 4) |
{ |
printf("\n\rACC nicht abgeglichen!"); |
} |
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], sizeof(struct mk_param_struct)); |
printf("\n\rBenutze Parametersatz %d", GetActiveParamSetNumber()); |
//kurze Wartezeit (sonst reagiert die "Kompass kalibrieren?"-Abfrage nicht |
timer = SetDelay(500); |
while(!CheckDelay(timer)); |
//Kompass kalibrieren? |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 100 && PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 100) |
{ |
printf("\n\rKalibriere Kompass"); |
calib_MM3(); |
} |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
printf("\n\rAbgleich Luftdrucksensor.."); |
timer = SetDelay(1000); |
SucheLuftruckOffset(); |
while (!CheckDelay(timer)); |
printf("OK\n\r"); |
} |
SetNeutral(); |
ROT_OFF; |
beeptime = 2000; |
DebugIn.Analog[1] = 1000; |
DebugIn.Digital[0] = 0x55; |
printf("\n\rSteuerung: "); |
if (EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) printf("HeadingHold"); |
else printf("Neutral"); |
printf("\n\n\r"); |
LcdClear(); |
I2CTimeout = 5000; |
while (1) |
{ |
if (UpdateMotor) // ReglerIntervall |
{ |
// SPI_TransmitByte(); |
UpdateMotor=0; |
//PORTD |= 0x08; |
MotorRegler(); |
//PORTD &= ~0x08; |
SendMotorData(); |
ROT_OFF; |
if(PcZugriff) PcZugriff--; |
else |
{ |
DubWiseKeys[0] = 0; |
DubWiseKeys[1] = 0; |
ExternStickNick = 0; |
ExternStickRoll = 0; |
ExternStickGier = 0; |
} |
if(SenderOkay) SenderOkay--; |
if(!I2CTimeout) |
{ |
I2CTimeout = 5; |
i2c_reset(); |
if((BeepMuster == 0xffff) && MotorenEin) |
{ |
beeptime = 10000; |
BeepMuster = 0x0080; |
} |
} |
else |
{ |
I2CTimeout--; |
ROT_OFF; |
} |
} |
if(SIO_DEBUG) |
{ |
DatenUebertragung(); |
BearbeiteRxDaten(); |
} |
else BearbeiteRxDaten(); |
if(CheckDelay(timer)) |
{ |
if(UBat < EE_Parameter.UnterspannungsWarnung) |
{ |
if(BeepMuster == 0xffff) |
{ |
beeptime = 6000; |
BeepMuster = 0x0300; |
} |
} |
// SPI_StartTransmitPacket(); |
timer = SetDelay(100); |
} |
} |
return (1); |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/main.h |
---|
0,0 → 1,100 |
#ifndef _MAIN_H |
#define _MAIN_H |
//Hier die Quarz Frequenz einstellen |
#if defined (__AVR_ATmega32__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
#endif |
#if defined (__AVR_ATmega644__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
//#define SYSCLK 16000000L //Quarz Frequenz in Hz |
#endif |
// neue Hardware |
#define ROT_OFF {if(PlatinenVersion == 10) PORTB &=~0x01; else PORTB |= 0x01;} |
#define ROT_ON {if(PlatinenVersion == 10) PORTB |= 0x01; else PORTB &=~0x01;} |
#define ROT_FLASH PORTB ^= 0x01 |
#define GRN_OFF PORTB &=~0x02 |
#define GRN_ON PORTB |= 0x02 |
#define GRN_FLASH PORTB ^= 0x02 |
#define F_CPU SYSCLK |
//#ifndef F_CPU |
//#error ################## F_CPU nicht definiert oder ungültig ############# |
//#endif |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define EEPROM_ADR_VALID 1 |
#define EEPROM_ADR_ACTIVE_SET 2 |
#define EEPROM_ADR_LAST_OFFSET 3 |
#define EEPROM_ADR_ACC_NICK 4 |
#define EEPROM_ADR_ACC_ROLL 6 |
#define EEPROM_ADR_ACC_Z 8 |
#define CFG_HOEHENREGELUNG 0x01 |
#define CFG_HOEHEN_SCHALTER 0x02 |
#define CFG_HEADING_HOLD 0x04 |
#define CFG_KOMPASS_AKTIV 0x08 |
#define CFG_KOMPASS_FIX 0x10 |
#define CFG_GPS_AKTIV 0x20 |
#define CFG_ACHSENKOPPLUNG_AKTIV 0x40 |
#define CFG_DREHRATEN_BEGRENZER 0x80 |
#define CFG_LOOP_OBEN 0x01 |
#define CFG_LOOP_UNTEN 0x02 |
#define CFG_LOOP_LINKS 0x04 |
#define CFG_LOOP_RECHTS 0x08 |
//#define SYSCLK |
//extern unsigned long SYSCLK; |
extern volatile unsigned char SenderOkay; |
extern unsigned char PlatinenVersion; |
void ReadParameterSet (unsigned char number, unsigned char *buffer, unsigned char length); |
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length); |
extern unsigned char GetActiveParamSetNumber(void); |
extern unsigned char EEPromArray[]; |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "old_macros.h" |
#include "_Settings.h" |
#include "printf_P.h" |
#include "timer0.h" |
#include "uart.h" |
#include "analog.h" |
#include "twimaster.h" |
#include "menu.h" |
#include "rc.h" |
#include "fc.h" |
#include "gps.h" |
#include "compass.h" |
#include "mymath.h" |
#ifndef EEMEM |
#define EEMEM __attribute__ ((section (".eeprom"))) |
#endif |
#define DEBUG_DISPLAY_INTERVALL 123 // in ms |
#define DELAY_US(x) ((unsigned int)( (x) * 1e-6 * F_CPU )) |
#endif //_MAIN_H |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/makefile |
---|
0,0 → 1,419 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega644 |
F_CPU = 20000000 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 67 |
VERSION_INDEX = 6 |
VERSION_KOMPATIBEL = 7 # PC-Kompatibilität |
#------------------------------------------------------------------- |
ifeq ($(MCU), atmega32) |
# FUSE_SETTINGS= -u -U lfuse:w:0xff:m -U hfuse:w:0xcf:m |
HEX_NAME = MEGA32 |
endif |
ifeq ($(MCU), atmega644) |
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
#FUSE_SETTINGS = -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
# -u bei neuen Controllern wieder einspielen |
HEX_NAME = MEGA644 |
endif |
ifeq ($(F_CPU), 16000000) |
QUARZ = 16MHZ |
endif |
ifeq ($(F_CPU), 20000000) |
QUARZ = 20MHZ |
endif |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
ifeq ($(VERSION_INDEX), 0) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)a |
endif |
ifeq ($(VERSION_INDEX), 1) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)b |
endif |
ifeq ($(VERSION_INDEX), 2) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)c |
endif |
ifeq ($(VERSION_INDEX), 3) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)d |
endif |
ifeq ($(VERSION_INDEX), 4) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)e |
endif |
ifeq ($(VERSION_INDEX), 5) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)f |
endif |
ifeq ($(VERSION_INDEX), 6) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)g |
endif |
ifeq ($(VERSION_INDEX), 7) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)h |
endif |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c printf_P.c timer0.c analog.c menu.c |
SRC += twimaster.c rc.c fc.c GPS.c |
SRC += compass.c mymath.c |
#spi.c |
########################################################################################################## |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-mtiny-stack -mcall-prologues \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) -DVERSION_KOMPATIBEL=$(VERSION_KOMPATIBEL) -DVERSION_INDEX=$(VERSION_INDEX) |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
##LDFLAGS += -T./linkerfile/avr5.x |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
#AVRDUDE_PROGRAMMER = stk200 |
AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = ponyser |
#falls Ponyser ausgewählt wird, muss sich unsere avrdude-Configdatei im Bin-Verzeichnis des Compilers befinden |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
#AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex $(FUSE_SETTINGS) |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
AVRDUDE_FLAGS += -V |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
#ALL_CFLAGS = -mmcu=$(MCU) -DF_CPU=$(F_CPU) -I. $(CFLAGS) |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
$(REMOVE) $(TARGET).eep |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/menu.c |
---|
0,0 → 1,139 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned int TestInt = 0; |
#define ARRAYGROESSE 10 |
unsigned char Array[ARRAYGROESSE] = {1,2,3,4,5,6,7,8,9,10}; |
char DisplayBuff[80] = "Hallo Welt"; |
unsigned char DispPtr = 0; |
unsigned char RemoteTasten = 0; |
#define KEY1 0x01 |
#define KEY2 0x02 |
#define KEY3 0x04 |
#define KEY4 0x08 |
#define KEY5 0x10 |
void LcdClear(void) |
{ |
unsigned char i; |
for(i=0;i<80;i++) DisplayBuff[i] = ' '; |
} |
void Menu(void) |
{ |
static unsigned char MaxMenue = 12,MenuePunkt=0; |
if(RemoteTasten & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LcdClear(); RemotePollDisplayLine = -1; } |
if(RemoteTasten & KEY2) { MenuePunkt++; LcdClear(); RemotePollDisplayLine = -1;} |
if((RemoteTasten & KEY1) && (RemoteTasten & KEY2)) MenuePunkt = 0; |
LCD_printfxy(17,0,"[%i]",MenuePunkt); |
switch(MenuePunkt) |
{ |
case 0: |
LCD_printfxy(0,0,"++ MikroKopter ++"); |
LCD_printfxy(0,1,"HW:V%d.%d SW:%d.%d%c",PlatinenVersion/10,PlatinenVersion%10,VERSION_HAUPTVERSION, VERSION_NEBENVERSION,VERSION_INDEX+'a'); |
LCD_printfxy(0,2,"Setting: %d ",GetActiveParamSetNumber()); |
LCD_printfxy(0,3,"(c) Holger Buss"); |
// if(RemoteTasten & KEY3) TestInt--; |
// if(RemoteTasten & KEY4) TestInt++; |
break; |
case 1: |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
LCD_printfxy(0,0,"Hoehe: %5i",HoehenWert); |
LCD_printfxy(0,1,"SollHoehe: %5i",SollHoehe); |
LCD_printfxy(0,2,"Luftdruck: %5i",MessLuftdruck); |
LCD_printfxy(0,3,"Off : %5i",DruckOffsetSetting); |
} |
else |
{ |
LCD_printfxy(0,1,"Keine "); |
LCD_printfxy(0,2,"Höhenregelung"); |
} |
break; |
case 2: |
LCD_printfxy(0,0,"akt. Lage"); |
LCD_printfxy(0,1,"Nick: %5i",IntegralNick/1024); |
LCD_printfxy(0,2,"Roll: %5i",IntegralRoll/1024); |
LCD_printfxy(0,3,"Kompass: %5i",KompassValue); |
break; |
case 3: |
LCD_printfxy(0,0,"K1:%4i K2:%4i ",PPM_in[1],PPM_in[2]); |
LCD_printfxy(0,1,"K3:%4i K4:%4i ",PPM_in[3],PPM_in[4]); |
LCD_printfxy(0,2,"K5:%4i K6:%4i ",PPM_in[5],PPM_in[6]); |
LCD_printfxy(0,3,"K7:%4i K8:%4i ",PPM_in[7],PPM_in[8]); |
break; |
case 4: |
LCD_printfxy(0,0,"Ni:%4i Ro:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_NICK]],PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]); |
LCD_printfxy(0,1,"Gs:%4i Gi:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_GAS]],PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]); |
LCD_printfxy(0,2,"P1:%4i P2:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]],PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]]); |
LCD_printfxy(0,3,"P3:%4i P4:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]],PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]]); |
break; |
case 5: |
LCD_printfxy(0,0,"Gyro - Sensor"); |
if(PlatinenVersion == 10) |
{ |
LCD_printfxy(0,1,"Nick %4i (%3i)",AdWertNick - AdNeutralNick, AdNeutralNick); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AdWertRoll - AdNeutralRoll, AdNeutralRoll); |
LCD_printfxy(0,3,"Gier %4i (%3i)",MesswertGier, AdNeutralGier); |
} |
else |
{ |
LCD_printfxy(0,1,"Nick %4i (%3i)",AdWertNick - AdNeutralNick, AdNeutralNick/2); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AdWertRoll - AdNeutralRoll, AdNeutralRoll/2); |
LCD_printfxy(0,3,"Gier %4i (%3i)",MesswertGier, AdNeutralGier/2); |
} |
break; |
case 6: |
LCD_printfxy(0,0,"ACC - Sensor"); |
LCD_printfxy(0,1,"Nick %4i (%3i)",AdWertAccNick,NeutralAccX); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AdWertAccRoll,NeutralAccY); |
LCD_printfxy(0,3,"Hoch %4i (%3i)",Mittelwert_AccHoch/*accumulate_AccHoch / messanzahl_AccHoch*/,(int)NeutralAccZ); |
break; |
case 7: |
LCD_printfxy(0,1,"Spannung: %5i",UBat); |
LCD_printfxy(0,2,"Empf.Pegel:%5i",SenderOkay); |
break; |
case 8: |
LCD_printfxy(0,0,"Kompass "); |
LCD_printfxy(0,1,"Richtung: %5i",KompassRichtung); |
LCD_printfxy(0,2,"Messwert: %5i",KompassValue); |
LCD_printfxy(0,3,"Start: %5i",KompassStartwert); |
break; |
case 9: |
LCD_printfxy(0,0,"Poti1: %3i",Poti1); |
LCD_printfxy(0,1,"Poti2: %3i",Poti2); |
LCD_printfxy(0,2,"Poti3: %3i",Poti3); |
LCD_printfxy(0,3,"Poti4: %3i",Poti4); |
break; |
case 10: |
LCD_printfxy(0,0,"Servo " ); |
LCD_printfxy(0,1,"Setpoint %3i",Parameter_ServoNickControl); |
LCD_printfxy(0,2,"Stellung: %3i",ServoValue); |
LCD_printfxy(0,3,"Range:%3i-%3i",EE_Parameter.ServoNickMin,EE_Parameter.ServoNickMax); |
break; |
case 11: |
LCD_printfxy(0,0,"MM3 Off"); |
LCD_printfxy(0,1,"X_Offset: %3i",MM3_calib.X_off); |
LCD_printfxy(0,2,"Y_Offset: %3i",MM3_calib.Y_off); |
LCD_printfxy(0,3,"Z_Offset: %3i",MM3_calib.Z_off); |
break; |
case 12: |
LCD_printfxy(0,0,"MM3 Range"); |
LCD_printfxy(0,1,"X_Range: %4i",MM3_calib.X_range); |
LCD_printfxy(0,2,"Y_Range: %4i",MM3_calib.Y_range); |
LCD_printfxy(0,3,"Z_Range: %4i",MM3_calib.Z_range); |
break; |
default: MaxMenue = MenuePunkt - 1; |
MenuePunkt = 0; |
break; |
} |
RemoteTasten = 0; |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/menu.h |
---|
0,0 → 1,6 |
extern void Menu(void); |
extern void LcdClear(void); |
extern char DisplayBuff[80]; |
extern unsigned char DispPtr; |
extern unsigned char RemoteTasten; |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/mymath.c |
---|
0,0 → 1,110 |
/* |
Copyright 2007, Niklas Nold |
This program (files math.c and math.h) is free software; you can redistribute it and/or modify |
it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; |
either version 3 of the License, or (at your option) any later version. |
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; |
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
Please note: All the other files for the project "Mikrokopter" by H. Buss are under the license (license_buss.txt) published by www.mikrokopter.de |
*/ |
#include "main.h" |
const int8_t pgm_atan[346] PROGMEM = {0,1,2,3,4,4,5,6,7,8,9,10,11,11,12,13,14,15,16,17,17,18,19,20,21,21,22,23,24,24,25,26,27,27,28,29,29,30,31,31,32,33,33,34,35,35,36,36,37,37,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,45,46,46,47,47,48,48,48,49,49,50,50,50,51,51,51,52,52,52,53,53,53,54,54,54,55,55,55,55,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,60,61,61,61,61,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,68,69,69,69,69,69,69,69,69,69,70,70,70,70,70,70,70,70,70,71,71,71,71,71,71,71,71,71,71,71,72,72,72,72,72,72,72,72,72,72,72,73,73,73,73,73,73,73,73,73,73,73,73,73,73,74,74,74,74,74,74,74,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79}; |
//############################################################################ |
// Arkustangens2 im Gradmaß |
signed int atan2_i(long x, long y) |
//############################################################################ |
{ |
int i,angle; |
int8_t m; |
if (!x && !y) return 0; //atan2 = 0 für x und y = 0 |
if (y < 0) m=-1; |
else m=1; |
if (!x) return (90*m); // atan2 = 90° für x = 0 |
i = abs((y*64) / x); // Berechne i für die Lookup table (Schrittweite atan(x) ist 0,015625 -> y *64) |
if (i<346) angle = pgm_read_byte(&pgm_atan[i]); // Lookup für 1° bis 79° |
else if (i>7334) angle = 90; // Grenzwert ist 90° |
else if (i>2444) angle = 89; // 89° bis 80° über Wertebereiche |
else if (i>1465) angle = 88; |
else if (i>1046) angle = 87; |
else if (i>813) angle = 86; |
else if (i>664) angle = 85; |
else if (i>561) angle = 84; |
else if (i>486) angle = 83; |
else if (i>428) angle = 82; |
else if (i>382) angle = 81; |
else angle = 80; // (i>345) |
if (x > 0) return (angle*m); // Quadrant I und IV |
else if ((x < 0) && (m > 0)) return (-angle + 180); // Quadrant II |
else return (angle - 180); // x < 0 && y < 0 Quadrant III |
} |
const int pgm_sinus_i[91] PROGMEM = {0,18,36,54,71,89,107,125,143,160,178,195,213,230,248,265,282,299,316,333,350,367,384,400,416,433,449,465,481,496,512,527,543,558,573,587,602,616,630,644,658,672,685,698,711,724,737,749,761,773,784,796,807,818,828,839,849,859,868,878,887,896,904,912,920,928,935,943,949,956,962,968,974,979,984,989,994,998,1002,1005,1008,1011,1014,1016,1018,1020,1022,1023,1023,1024,1024}; |
//############################################################################ |
// Kosinusfunktion im Gradmaß |
signed int cos_i(signed int winkel) |
//############################################################################ |
{ |
return (sin_i(90-winkel)); |
} |
//############################################################################ |
// Sinusfunktion im Gradmaß |
signed int sin_i(signed int winkel) |
//############################################################################ |
{ |
short int m,n; |
signed int sinus; |
if (winkel < 0) |
{ |
m = -1; |
winkel = abs(winkel); |
} |
else m = +1; |
// Quadranten auswerten |
if (winkel <= 90) n=1; |
else if ((winkel > 90) && (winkel <= 180)) {winkel = 180 - winkel; n = 1;} |
else if ((winkel > 180) && (winkel <= 270)) {winkel = winkel - 180; n = -1;} |
else {winkel = 360 - winkel; n = -1;} //if ((winkel > 270) && (winkel <= 360)) |
sinus = pgm_read_word(&pgm_sinus_i[winkel]); |
return (sinus*m*n); |
} |
/* |
const uint8_t pgm_asin[201] PROGMEM = {0,0,1,1,1,1,2,2,2,3,3,3,3,4,4,4,5,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9,10,10,10,11,11,11,12,12,12,12,13,13,13,14,14,14,14,15,15,15,16,16,16,17,17,17,17,18,18,18,19,19,19,20,20,20,20,21,21,21,22,22,22,23,23,23,24,24,24,25,25,25,25,26,26,26,27,27,27,28,28,28,29,29,29,30,30,30,31,31,31,32,32,32,33,33,33,34,34,34,35,35,35,36,36,37,37,37,38,38,38,39,39,39,40,40,41,41,41,42,42,42,43,43,44,44,44,45,45,46,46,46,47,47,48,48,49,49,49,50,50,51,51,52,52,53,53,54,54,55,55,56,56,57,57,58,58,59,59,60,60,61,62,62,63,64,64,65,66,66,67,68,68,69,70,71,72,73,74,75,76,77,79,80,82,84,90}; |
//############################################################################ |
// Akurssinusfunktion im Gradmaß |
int8_t asin_i(signed int i) |
//############################################################################ |
{ |
signed char m; |
if (i < 0) {m=-1;i=abs(i);} |
else m=1; |
i %= 200; |
return (pgm_read_byte(&pgm_asin[i]) * m); |
} |
*/ |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/mymath.h |
---|
0,0 → 1,8 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
extern int atan2_i(long x, long y); |
extern signed int cos_i(signed int winkel); |
extern signed int sin_i(signed int winkel); |
//extern int8_t asin_i(signed int i); |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/old_macros.h |
---|
0,0 → 1,47 |
/* |
For backwards compatibility only. |
Ingo Busker ingo@mikrocontroller.com |
*/ |
#ifndef cbi |
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) |
#endif |
#ifndef sbi |
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) |
#endif |
#ifndef inb |
#define inb(sfr) _SFR_BYTE(sfr) |
#endif |
#ifndef outb |
#define outb(sfr, val) (_SFR_BYTE(sfr) = (val)) |
#endif |
#ifndef inw |
#define inw(sfr) _SFR_WORD(sfr) |
#endif |
#ifndef outw |
#define outw(sfr, val) (_SFR_WORD(sfr) = (val)) |
#endif |
#ifndef outp |
#define outp(val, sfr) outb(sfr, val) |
#endif |
#ifndef inp |
#define inp(sfr) inb(sfr) |
#endif |
#ifndef BV |
#define BV(bit) _BV(bit) |
#endif |
#ifndef PRG_RDB |
#define PRG_RDB pgm_read_byte |
#endif |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/printf_P.c |
---|
0,0 → 1,480 |
// Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist nicht von der Lizenz für den MikroKopter-Teil unterstellt |
/* |
Copyright (C) 1993 Free Software Foundation |
This file is part of the GNU IO Library. This library is free |
software; you can redistribute it and/or modify it under the |
terms of the GNU General Public License as published by the |
Free Software Foundation; either version 2, or (at your option) |
any later version. |
This library is distributed in the hope that it will be useful, |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
GNU General Public License for more details. |
You should have received a copy of the GNU General Public License |
along with this library; see the file COPYING. If not, write to the Free |
Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
As a special exception, if you link this library with files |
compiled with a GNU compiler to produce an executable, this does not cause |
the resulting executable to be covered by the GNU General Public License. |
This exception does not however invalidate any other reasons why |
the executable file might be covered by the GNU General Public License. */ |
/* |
* Copyright (c) 1990 Regents of the University of California. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. [rescinded 22 July 1999] |
* 4. Neither the name of the University nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
/****************************************************************************** |
This file is a patched version of printf called _printf_P |
It is made to work with avr-gcc for Atmel AVR MCUs. |
There are some differences from standard printf: |
1. There is no floating point support (with fp the code is about 8K!) |
2. Return type is void |
3. Format string must be in program memory (by using macro printf this is |
done automaticaly) |
4. %n is not implemented (just remove the comment around it if you need it) |
5. If LIGHTPRINTF is defined, the code is about 550 bytes smaller and the |
folowing specifiers are disabled : |
space # * . - + p s o O |
6. A function void uart_sendchar(char c) is used for output. The UART must |
be initialized before using printf. |
Alexander Popov |
sasho@vip.orbitel.bg |
******************************************************************************/ |
/* |
* Actual printf innards. |
* |
* This code is large and complicated... |
*/ |
#include <string.h> |
#ifdef __STDC__ |
#include <stdarg.h> |
#else |
#include <varargs.h> |
#endif |
#include "main.h" |
//#define LIGHTPRINTF |
char PrintZiel; |
char Putchar(char zeichen) |
{ |
if(PrintZiel == OUT_LCD) { DisplayBuff[DispPtr++] = zeichen; return(1);} |
else return(uart_putchar(zeichen)); |
} |
void PRINT(const char * ptr, unsigned int len) |
{ |
for(;len;len--) Putchar(*ptr++); |
} |
void PRINTP(const char * ptr, unsigned int len) |
{ |
for(;len;len--) Putchar(pgm_read_byte(ptr++)); |
} |
void PAD_SP(signed char howmany) |
{ |
for(;howmany>0;howmany--) Putchar(' '); |
} |
void PAD_0(signed char howmany) |
{ |
for(;howmany>0;howmany--) Putchar('0'); |
} |
#define BUF 40 |
/* |
* Macros for converting digits to letters and vice versa |
*/ |
#define to_digit(c) ((c) - '0') |
#define is_digit(c) ((c)<='9' && (c)>='0') |
#define to_char(n) ((n) + '0') |
/* |
* Flags used during conversion. |
*/ |
#define LONGINT 0x01 /* long integer */ |
#define LONGDBL 0x02 /* long double; unimplemented */ |
#define SHORTINT 0x04 /* short integer */ |
#define ALT 0x08 /* alternate form */ |
#define LADJUST 0x10 /* left adjustment */ |
#define ZEROPAD 0x20 /* zero (as opposed to blank) pad */ |
#define HEXPREFIX 0x40 /* add 0x or 0X prefix */ |
void _printf_P (char ziel,char const *fmt0, ...) /* Works with string from FLASH */ |
{ |
va_list ap; |
register const char *fmt; /* format string */ |
register char ch; /* character from fmt */ |
register int n; /* handy integer (short term usage) */ |
register char *cp; /* handy char pointer (short term usage) */ |
const char *fmark; /* for remembering a place in fmt */ |
register unsigned char flags; /* flags as above */ |
signed char width; /* width from format (%8d), or 0 */ |
signed char prec; /* precision from format (%.3d), or -1 */ |
char sign; /* sign prefix (' ', '+', '-', or \0) */ |
unsigned long _ulong=0; /* integer arguments %[diouxX] */ |
#define OCT 8 |
#define DEC 10 |
#define HEX 16 |
unsigned char base; /* base for [diouxX] conversion */ |
signed char dprec; /* a copy of prec if [diouxX], 0 otherwise */ |
signed char dpad; /* extra 0 padding needed for integers */ |
signed char fieldsz; /* field size expanded by sign, dpad etc */ |
/* The initialization of 'size' is to suppress a warning that |
'size' might be used unitialized. It seems gcc can't |
quite grok this spaghetti code ... */ |
signed char size = 0; /* size of converted field or string */ |
char buf[BUF]; /* space for %c, %[diouxX], %[eEfgG] */ |
char ox[2]; /* space for 0x hex-prefix */ |
PrintZiel = ziel; // bestimmt, LCD oder UART |
va_start(ap, fmt0); |
fmt = fmt0; |
/* |
* Scan the format for conversions (`%' character). |
*/ |
for (;;) { |
for (fmark = fmt; (ch = pgm_read_byte(fmt)) != '\0' && ch != '%'; fmt++) |
/* void */; |
if ((n = fmt - fmark) != 0) { |
PRINTP(fmark, n); |
} |
if (ch == '\0') |
goto done; |
fmt++; /* skip over '%' */ |
flags = 0; |
dprec = 0; |
width = 0; |
prec = -1; |
sign = '\0'; |
rflag: ch = PRG_RDB(fmt++); |
reswitch: |
#ifdef LIGHTPRINTF |
if (ch=='o' || ch=='u' || (ch|0x20)=='x') { |
#else |
if (ch=='u' || (ch|0x20)=='x') { |
#endif |
if (flags&LONGINT) { |
_ulong=va_arg(ap, unsigned long); |
} else { |
register unsigned int _d; |
_d=va_arg(ap, unsigned int); |
_ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d; |
} |
} |
#ifndef LIGHTPRINTF |
if(ch==' ') { |
/* |
* ``If the space and + flags both appear, the space |
* flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
if (!sign) |
sign = ' '; |
goto rflag; |
} else if (ch=='#') { |
flags |= ALT; |
goto rflag; |
} else if (ch=='*'||ch=='-') { |
if (ch=='*') { |
/* |
* ``A negative field width argument is taken as a |
* - flag followed by a positive field width.'' |
* -- ANSI X3J11 |
* They don't exclude field widths read from args. |
*/ |
if ((width = va_arg(ap, int)) >= 0) |
goto rflag; |
width = -width; |
} |
flags |= LADJUST; |
flags &= ~ZEROPAD; /* '-' disables '0' */ |
goto rflag; |
} else if (ch=='+') { |
sign = '+'; |
goto rflag; |
} else if (ch=='.') { |
if ((ch = PRG_RDB(fmt++)) == '*') { |
n = va_arg(ap, int); |
prec = n < 0 ? -1 : n; |
goto rflag; |
} |
n = 0; |
while (is_digit(ch)) { |
n = n*10 + to_digit(ch); |
ch = PRG_RDB(fmt++); |
} |
prec = n < 0 ? -1 : n; |
goto reswitch; |
} else |
#endif /* LIGHTPRINTF */ |
if (ch=='0') { |
/* |
* ``Note that 0 is taken as a flag, not as the |
* beginning of a field width.'' |
* -- ANSI X3J11 |
*/ |
if (!(flags & LADJUST)) |
flags |= ZEROPAD; /* '-' disables '0' */ |
goto rflag; |
} else if (ch>='1' && ch<='9') { |
n = 0; |
do { |
n = 10 * n + to_digit(ch); |
ch = PRG_RDB(fmt++); |
} while (is_digit(ch)); |
width = n; |
goto reswitch; |
} else if (ch=='h') { |
flags |= SHORTINT; |
goto rflag; |
} else if (ch=='l') { |
flags |= LONGINT; |
goto rflag; |
} else if (ch=='c') { |
*(cp = buf) = va_arg(ap, int); |
size = 1; |
sign = '\0'; |
} else if (ch=='D'||ch=='d'||ch=='i') { |
if(ch=='D') |
flags |= LONGINT; |
if (flags&LONGINT) { |
_ulong=va_arg(ap, long); |
} else { |
register int _d; |
_d=va_arg(ap, int); |
_ulong = flags&SHORTINT ? (long)(short)_d : (long)_d; |
} |
if ((long)_ulong < 0) { |
_ulong = -_ulong; |
sign = '-'; |
} |
base = DEC; |
goto number; |
} else |
/* |
if (ch=='n') { |
if (flags & LONGINT) |
*va_arg(ap, long *) = ret; |
else if (flags & SHORTINT) |
*va_arg(ap, short *) = ret; |
else |
*va_arg(ap, int *) = ret; |
continue; // no output |
} else |
*/ |
#ifndef LIGHTPRINTF |
if (ch=='O'||ch=='o') { |
if (ch=='O') |
flags |= LONGINT; |
base = OCT; |
goto nosign; |
} else if (ch=='p') { |
/* |
* ``The argument shall be a pointer to void. The |
* value of the pointer is converted to a sequence |
* of printable characters, in an implementation- |
* defined manner.'' |
* -- ANSI X3J11 |
*/ |
/* NOSTRICT */ |
_ulong = (unsigned int)va_arg(ap, void *); |
base = HEX; |
flags |= HEXPREFIX; |
ch = 'x'; |
goto nosign; |
} else if (ch=='s') { // print a string from RAM |
if ((cp = va_arg(ap, char *)) == NULL) { |
cp=buf; |
cp[0] = '('; |
cp[1] = 'n'; |
cp[2] = 'u'; |
cp[4] = cp[3] = 'l'; |
cp[5] = ')'; |
cp[6] = '\0'; |
} |
if (prec >= 0) { |
/* |
* can't use strlen; can only look for the |
* NUL in the first `prec' characters, and |
* strlen() will go further. |
*/ |
char *p = (char*)memchr(cp, 0, prec); |
if (p != NULL) { |
size = p - cp; |
if (size > prec) |
size = prec; |
} else |
size = prec; |
} else |
size = strlen(cp); |
sign = '\0'; |
} else |
#endif /* LIGHTPRINTF */ |
if(ch=='U'||ch=='u') { |
if (ch=='U') |
flags |= LONGINT; |
base = DEC; |
goto nosign; |
} else if (ch=='X'||ch=='x') { |
base = HEX; |
/* leading 0x/X only if non-zero */ |
if (flags & ALT && _ulong != 0) |
flags |= HEXPREFIX; |
/* unsigned conversions */ |
nosign: sign = '\0'; |
/* |
* ``... diouXx conversions ... if a precision is |
* specified, the 0 flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
number: if ((dprec = prec) >= 0) |
flags &= ~ZEROPAD; |
/* |
* ``The result of converting a zero value with an |
* explicit precision of zero is no characters.'' |
* -- ANSI X3J11 |
*/ |
cp = buf + BUF; |
if (_ulong != 0 || prec != 0) { |
register unsigned char _d,notlastdigit; |
do { |
notlastdigit=(_ulong>=base); |
_d = _ulong % base; |
if (_d<10) { |
_d+='0'; |
} else { |
_d+='a'-10; |
if (ch=='X') _d&=~0x20; |
} |
*--cp=_d; |
_ulong /= base; |
} while (notlastdigit); |
#ifndef LIGHTPRINTF |
// handle octal leading 0 |
if (base==OCT && flags & ALT && *cp != '0') |
*--cp = '0'; |
#endif |
} |
size = buf + BUF - cp; |
} else { //default |
/* "%?" prints ?, unless ? is NUL */ |
if (ch == '\0') |
goto done; |
/* pretend it was %c with argument ch */ |
cp = buf; |
*cp = ch; |
size = 1; |
sign = '\0'; |
} |
/* |
* All reasonable formats wind up here. At this point, |
* `cp' points to a string which (if not flags&LADJUST) |
* should be padded out to `width' places. If |
* flags&ZEROPAD, it should first be prefixed by any |
* sign or other prefix; otherwise, it should be blank |
* padded before the prefix is emitted. After any |
* left-hand padding and prefixing, emit zeroes |
* required by a decimal [diouxX] precision, then print |
* the string proper, then emit zeroes required by any |
* leftover floating precision; finally, if LADJUST, |
* pad with blanks. |
*/ |
/* |
* compute actual size, so we know how much to pad. |
*/ |
fieldsz = size; |
dpad = dprec - size; |
if (dpad < 0) |
dpad = 0; |
if (sign) |
fieldsz++; |
else if (flags & HEXPREFIX) |
fieldsz += 2; |
fieldsz += dpad; |
/* right-adjusting blank padding */ |
if ((flags & (LADJUST|ZEROPAD)) == 0) |
PAD_SP(width - fieldsz); |
/* prefix */ |
if (sign) { |
PRINT(&sign, 1); |
} else if (flags & HEXPREFIX) { |
ox[0] = '0'; |
ox[1] = ch; |
PRINT(ox, 2); |
} |
/* right-adjusting zero padding */ |
if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD) |
PAD_0(width - fieldsz); |
/* leading zeroes from decimal precision */ |
PAD_0(dpad); |
/* the string or number proper */ |
PRINT(cp, size); |
/* left-adjusting padding (always blank) */ |
if (flags & LADJUST) |
PAD_SP(width - fieldsz); |
} |
done: |
va_end(ap); |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/printf_P.h |
---|
0,0 → 1,19 |
#ifndef _PRINTF_P_H_ |
#define _PRINTF_P_H_ |
#include <avr/pgmspace.h> |
#define OUT_V24 0 |
#define OUT_LCD 1 |
void _printf_P (char, char const *fmt0, ...); |
extern char PrintZiel; |
#define printf_P(format, args...) _printf_P(OUT_V24,format , ## args) |
#define printf(format, args...) _printf_P(OUT_V24,PSTR(format) , ## args) |
#define LCD_printfxy(x,y,format, args...) { DispPtr = y * 20 + x; _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#define LCD_printf(format, args...) { _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#endif |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/rc.c |
---|
0,0 → 1,84 |
/*####################################################################################### |
Decodieren eines RC Summen Signals |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "rc.h" |
#include "main.h" |
volatile int PPM_in[11]; |
volatile int PPM_diff[11]; // das diffenzierte Stick-Signal |
volatile unsigned char NewPpmData = 1; |
//############################################################################ |
//zum decodieren des PPM-Signals wird Timer1 mit seiner Input |
//Capture Funktion benutzt: |
void rc_sum_init (void) |
//############################################################################ |
{ |
TCCR1B=(1<<CS11)|(1<<CS10)|(1<<ICES1)|(1<<ICNC1);//|(1 << WGM12); //timer1 prescale 64 |
// PWM |
//TCCR1A = (1 << COM1B1) | (1 << WGM11) | (1 << WGM10); |
//TCCR1B |= (1 << WGM12); |
//OCR1B = 55; |
TIMSK1 |= _BV(ICIE1); |
AdNeutralGier = 0; |
AdNeutralRoll = 0; |
AdNeutralNick = 0; |
return; |
} |
//############################################################################ |
//Diese Routine startet und inizialisiert den Timer für RC |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int AltICR=0; |
signed int signal = 0,tmp; |
static int index; |
signal = (unsigned int) ICR1 - AltICR; |
AltICR = ICR1; |
//Syncronisationspause? |
// if((signal > (int) Parameter_UserParam2 * 10) && (signal < 8000)) |
if((signal > 1100) && (signal < 8000)) |
{ |
if(index >= 4) NewPpmData = 0; // Null bedeutet: Neue Daten |
index = 1; |
} |
else |
{ |
if(index < 10) |
{ |
if((signal > 250) && (signal < 687)) |
{ |
signal -= 466; |
// Stabiles Signal |
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10;} |
tmp = (3 * (PPM_in[index]) + signal) / 4; |
// if(tmp > signal+1) tmp--; else |
// if(tmp < signal-1) tmp++; |
PPM_diff[index] = tmp - PPM_in[index]; |
PPM_in[index] = tmp; |
} |
index++; |
if(index == 5) PORTD |= 0x20; else PORTD &= ~0x20; // Servosignal an J3 anlegen |
if(index == 6) PORTD |= 0x10; else PORTD &= ~0x10; // Servosignal an J4 anlegen |
//if(index == 7) PORTD |= 0x08; else PORTD &= ~0x08; // Servosignal an J5 anlegen |
} |
} |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/rc.h |
---|
0,0 → 1,29 |
/*####################################################################################### |
Derkodieren eines RC Summen Signals |
#######################################################################################*/ |
#ifndef _RC_H |
#define _RC_H |
#if defined (__AVR_ATmega32__) |
#define TIMER_TEILER CK64 |
#define TIMER_RELOAD_VALUE 250 |
#endif |
#if defined (__AVR_ATmega644__) |
//#define TIMER_TEILER CK64 |
#define TIMER_RELOAD_VALUE 250 |
//#define TIMER_TEILER CK256 // bei 20MHz |
//#define TIMER_RELOAD_VALUE -78 // bei 20MHz |
#endif |
#define GAS PPM_in[2] |
extern void rc_sum_init (void); |
extern volatile int PPM_in[11]; |
extern volatile int PPM_diff[11]; // das diffenzierte Stick-Signal |
extern volatile unsigned char NewPpmData; |
#endif //_RC_H |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/timer0.c |
---|
0,0 → 1,145 |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile unsigned char UpdateMotor = 0; |
volatile unsigned int beeptime = 0; |
unsigned int BeepMuster = 0xffff; |
int ServoValue = 0; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL (SIG_OVERFLOW0) // 9,8kHz |
{ |
static unsigned char cnt_1ms = 1,cnt = 0; |
unsigned char pieper_ein = 0; |
// TCNT0 -= 250;//TIMER_RELOAD_VALUE; |
if(!cnt--) |
{ |
cnt = 10; |
cnt_1ms++; |
cnt_1ms %= 2; |
if(!cnt_1ms) UpdateMotor = 1; |
CountMilliseconds++; |
} |
if(beeptime > 1) |
{ |
beeptime--; |
if(beeptime & BeepMuster) |
{ |
pieper_ein = 1; |
} |
else pieper_ein = 0; |
} |
else |
{ |
pieper_ein = 0; |
BeepMuster = 0xffff; |
} |
if(pieper_ein) |
{ |
if(PlatinenVersion == 10) PORTD |= (1<<2); // Speaker an PORTD.2 |
else PORTC |= (1<<7); // Speaker an PORTC.7 |
} |
else |
{ |
if(PlatinenVersion == 10) PORTD &= ~(1<<2); |
else PORTC &= ~(1<<7); |
} |
if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV) timer0_MM3(); // Kompass auslesen |
} |
void Timer_Init(void) |
{ |
TCCR0B = CK8; |
TCCR0A = (1<<COM0A1)|(1<<COM0B1)|3;//fast PWM |
OCR0A = 0; |
OCR0B = 120; |
TCNT0 = (unsigned char)-TIMER_RELOAD_VALUE; // reload |
//OCR1 = 0x00; |
TCCR2A=(1<<COM2A1)|(1<<COM2A0)|3; |
TCCR2B=(0<<CS20)|(1<<CS21)|(1<<CS22); |
// TIMSK2 |= _BV(TOIE2); |
TIMSK2 |= _BV(OCIE2A); |
TIMSK0 |= _BV(TOIE0); |
OCR2A = 10; |
TCNT2 = 0; |
} |
// ----------------------------------------------------------------------- |
unsigned int SetDelay (unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(CountMilliseconds + t + 1); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
char CheckDelay(unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(((t - CountMilliseconds) & 0x8000) >> 9); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
void Delay_ms_Mess(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)) ANALOG_ON; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Servo ansteuern |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(SIG_OUTPUT_COMPARE2A) |
{ |
static unsigned char timer = 10; |
if(!timer--) |
{ |
TCCR2A=(1<<COM2A1)|(0<<COM2A0)|3; |
ServoValue = Parameter_ServoNickControl; |
if(EE_Parameter.ServoNickCompInvert & 0x01) ServoValue += ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
else ServoValue -= ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
if(ServoValue < EE_Parameter.ServoNickMin) ServoValue = EE_Parameter.ServoNickMin; |
else if(ServoValue > EE_Parameter.ServoNickMax) ServoValue = EE_Parameter.ServoNickMax; |
OCR2A = ServoValue;// + 75; |
timer = EE_Parameter.ServoNickRefresh; |
} |
else |
{ |
TCCR2A =3; |
PORTD&=~0x80; |
} |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/timer0.h |
---|
0,0 → 1,15 |
#define TIMER_TEILER CK8 |
#define TIMER_RELOAD_VALUE 250 |
void Timer_Init(void); |
void Delay_ms(unsigned int); |
void Delay_ms_Mess(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char UpdateMotor; |
extern volatile unsigned int beeptime; |
extern int ServoValue; |
extern unsigned int BeepMuster; |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/twimaster.c |
---|
0,0 → 1,152 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
unsigned char twi_state = 0; |
unsigned char motor = 0; |
unsigned char motorread = 0; |
unsigned char motor_rx[8]; |
//############################################################################ |
//Initzialisieren der I2C (TWI) Schnittstelle |
void i2c_init(void) |
//############################################################################ |
{ |
TWSR = 0; |
TWBR = ((SYSCLK/SCL_CLOCK)-16)/2; |
} |
//############################################################################ |
//Start I2C |
char i2c_start(void) |
//############################################################################ |
{ |
TWCR = (1<<TWSTA) | (1<<TWEN) | (1<<TWINT) | (1<<TWIE); |
return(0); |
} |
//############################################################################ |
//Start I2C |
void i2c_stop(void) |
//############################################################################ |
{ |
TWCR = (1<<TWEN) | (1<<TWSTO) | (1<<TWINT); |
} |
void i2c_reset(void) |
//############################################################################ |
{ |
i2c_stop(); |
twi_state = 0; |
motor = TWDR; |
motor = 0; |
TWCR = 0x80; |
TWAMR = 0; |
TWAR = 0; |
TWDR = 0; |
TWSR = 0; |
TWBR = 0; |
i2c_init(); |
i2c_start(); |
i2c_write_byte(0); |
} |
//############################################################################ |
//Start I2C |
char i2c_write_byte(char byte) |
//############################################################################ |
{ |
TWSR = 0x00; |
TWDR = byte; |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
return(0); |
} |
//############################################################################ |
//Start I2C |
SIGNAL (TWI_vect) |
//############################################################################ |
{ |
switch (twi_state++) |
{ |
case 0: |
i2c_write_byte(0x52+(motor*2)); |
break; |
case 1: |
switch(motor++) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 2: |
i2c_stop(); |
if (motor<4) twi_state = 0; |
else motor = 0; |
i2c_start(); |
break; |
//Liest Daten von Motor |
case 3: |
i2c_write_byte(0x53+(motorread*2)); |
break; |
case 4: |
switch(motorread) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 5: //1 Byte vom Motor lesen |
motor_rx[motorread] = TWDR; |
case 6: |
switch(motorread) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 7: //2 Byte vom Motor lesen |
motor_rx[motorread+4] = TWDR; |
motorread++; |
if (motorread>3) motorread=0; |
i2c_stop(); |
I2CTimeout = 10; |
twi_state = 0; |
} |
TWCR |= 0x80; |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/twimaster.h |
---|
0,0 → 1,33 |
/*############################################################################ |
############################################################################*/ |
#ifndef _I2C_MASTER_H |
#define _I2C_MASTER_H |
//############################################################################ |
// I2C Konstanten |
#define SCL_CLOCK 200000L |
#define I2C_TIMEOUT 30000 |
#define I2C_START 0x08 |
#define I2C_REPEATED_START 0x10 |
#define I2C_TX_SLA_ACK 0x18 |
#define I2C_TX_DATA_ACK 0x28 |
#define I2C_RX_SLA_ACK 0x40 |
#define I2C_RX_DATA_ACK 0x50 |
//############################################################################ |
extern unsigned char twi_state; |
extern unsigned char motor; |
extern unsigned char motorread; |
extern unsigned char motor_rx[8]; |
void i2c_reset(void); |
extern void i2c_init (void); // I2C initialisieren |
extern char i2c_start (void); // Start I2C |
extern void i2c_stop (void); // Stop I2C |
extern char i2c_write_byte (char byte); // 1 Byte schreiben |
extern void i2c_reset(void); |
#endif |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/uart.c |
---|
0,0 → 1,388 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
unsigned char DebugGetAnforderung = 0,DebugDisplayAnforderung = 0,DebugDataAnforderung = 0,GetVersionAnforderung = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NMEABuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char NeueKoordinateEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned volatile char CntCrcError = 0; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
unsigned volatile char PC_DebugTimeout = 0; |
unsigned char RemotePollDisplayLine = 0; |
unsigned char NurKanalAnforderung = 0; |
unsigned char DebugTextAnforderung = 255; |
unsigned char PcZugriff = 100; |
unsigned char MotorTest[4] = {0,0,0,0}; |
unsigned char DubWiseKeys[3] = {0,0,0}; |
unsigned char MeineSlaveAdresse; |
struct str_DebugOut DebugOut; |
struct str_Debug DebugIn; |
struct str_VersionInfo VersionInfo; |
int Debug_Timer; |
const unsigned char ANALOG_TEXT[32][16] = |
{ |
//1234567890123456 |
"IntegralNick ", //0 |
"IntegralRoll ", |
"AccNick ", |
"AccRoll ", |
"GyroGier ", |
"HoehenWert ", //5 |
"AccZ ", |
"Gas ", |
"KompassValue ", |
"Spannung ", |
"Empfang ", //10 |
"Analog11 ", |
"Motor_Vorne ", |
"Motor_Hinten ", |
"Motor_Links ", |
"Motor_Rechts ", //15 |
"Acc_Z ", |
"MittelAccNick ", |
"MittelAccRoll ", |
"IntegralErrNick ", |
"IntegralErrRoll ", //20 |
"MittelIntNick ", |
"MittelIntRoll ", |
"NeutralNick ", |
"RollOffset ", |
"IntRoll*Faktor ", //25 |
"Analog26 ", |
"DirektAusglRoll ", |
"MesswertRoll ", |
"AusgleichRoll ", |
"I-LageRoll ", //30 |
"StickRoll " |
}; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_TX) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;}; |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
{ |
NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
RxdBuffer[buf_ptr] = '\r'; |
if(RxdBuffer[2] == 'R') wdt_enable(WDTO_250MS); // Reset-Commando |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
} |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
SendeBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
if(!NeuerDatensatzEmpfangen) return; |
// unsigned int tmp_int_arr1[1]; |
// unsigned int tmp_int_arr2[2]; |
// unsigned int tmp_int_arr3[3]; |
unsigned char tmp_char_arr2[2]; |
// unsigned char tmp_char_arr3[3]; |
// unsigned char tmp_char_arr4[4]; |
//if(!MotorenEin) |
PcZugriff = 255; |
switch(RxdBuffer[2]) |
{ |
case 'a':// Texte der Analogwerte |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
DebugTextAnforderung = tmp_char_arr2[0]; |
break; |
case 'c':// Debugdaten incl. Externe IOs usw |
Decode64((unsigned char *) &DebugIn,sizeof(DebugIn),3,AnzahlEmpfangsBytes); |
/* for(unsigned char i=0; i<4;i++) |
{ |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2], DebugIn.Analog[i]); |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2 + 1], DebugIn.Analog[i] >> 8); |
}*/ |
RemoteTasten |= DebugIn.RemoteTasten; |
DebugDataAnforderung = 1; |
break; |
case 'h':// x-1 Displayzeilen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
RemoteTasten |= tmp_char_arr2[0]; |
if(tmp_char_arr2[1] == 255) NurKanalAnforderung = 1; else NurKanalAnforderung = 0; // keine Displaydaten |
DebugDisplayAnforderung = 1; |
break; |
case 't':// Motortest |
Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
break; |
case 'k':// Keys von DubWise |
Decode64((unsigned char *) &DubWiseKeys[0],sizeof(DubWiseKeys),3,AnzahlEmpfangsBytes); |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'g':// "Get"-Anforderung für Debug-Daten |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
DebugGetAnforderung = 1; |
break; |
case 'q':// "Get"-Anforderung für Settings |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
if(tmp_char_arr2[0] != 0xff) |
{ |
if(tmp_char_arr2[0] > 5) tmp_char_arr2[0] = 5; |
ReadParameterSet(tmp_char_arr2[0], (unsigned char *) &EE_Parameter.Kanalbelegung[0], sizeof(struct mk_param_struct)); |
SendOutData('L' + tmp_char_arr2[0] -1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],sizeof(struct mk_param_struct)); |
} |
else |
SendOutData('L' + GetActiveParamSetNumber()-1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],sizeof(struct mk_param_struct)); |
break; |
case 'l': |
case 'm': |
case 'n': |
case 'o': |
case 'p': // Parametersatz speichern |
Decode64((unsigned char *) &EE_Parameter.Kanalbelegung[0],sizeof(struct mk_param_struct),3,AnzahlEmpfangsBytes); |
WriteParameterSet(RxdBuffer[2] - 'l' + 1, (unsigned char *) &EE_Parameter.Kanalbelegung[0], sizeof(struct mk_param_struct)); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], RxdBuffer[2] - 'l' + 1); // aktiven Datensatz merken |
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L; |
Piep(GetActiveParamSetNumber()); |
break; |
} |
// DebugOut.AnzahlZyklen = Debug_Timer_Intervall; |
NeuerDatensatzEmpfangen = 0; |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
//if (ProgramLocation == IN_RAM) Buffer[pos] = wert; |
// else eeprom_write_byte(&EE_Buffer[pos], wert); |
// Buffer[pos] = wert; |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); |
// TX-Interrupt Freigabe |
UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR=(SYSCLK / (BAUD_RATE * 8L) - 1); |
//UBRR = 33; |
//öffnet einen Kanal für printf (STDOUT) |
//fdevopen (uart_putchar, 0); |
//sbi(PORTD,4); |
Debug_Timer = SetDelay(200); |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if(!UebertragungAbgeschlossen) return; |
if(DebugGetAnforderung && UebertragungAbgeschlossen) // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
{ |
SendOutData('G',MeineSlaveAdresse,(unsigned char *) &DebugIn,sizeof(DebugIn)); |
DebugGetAnforderung = 0; |
} |
if((CheckDelay(Debug_Timer) || DebugDataAnforderung) && UebertragungAbgeschlossen) |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
DebugDataAnforderung = 0; |
Debug_Timer = SetDelay(MIN_DEBUG_INTERVALL); |
} |
if(DebugTextAnforderung != 255) // Texte für die Analogdaten |
{ |
SendOutData('A',DebugTextAnforderung + '0',(unsigned char *) ANALOG_TEXT[DebugTextAnforderung],16); |
DebugTextAnforderung = 255; |
} |
if(DebugDisplayAnforderung && UebertragungAbgeschlossen) |
{ |
Menu(); |
DebugDisplayAnforderung = 0; |
if(++RemotePollDisplayLine == 4 || NurKanalAnforderung) |
{ |
SendOutData('4',0,(unsigned char *)&PPM_in,sizeof(PPM_in)); // DisplayZeile übertragen |
RemotePollDisplayLine = -1; |
} |
else SendOutData('0' + RemotePollDisplayLine,0,(unsigned char *)&DisplayBuff[20 * RemotePollDisplayLine],20); // DisplayZeile übertragen |
} |
if(GetVersionAnforderung && UebertragungAbgeschlossen) |
{ |
SendOutData('V',MeineSlaveAdresse,(unsigned char *) &VersionInfo,sizeof(VersionInfo)); |
GetVersionAnforderung = 0; |
} |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/uart.h |
---|
0,0 → 1,100 |
#ifndef _UART_H |
#define _UART_H |
#define MAX_SENDE_BUFF 150 |
#define MAX_EMPFANGS_BUFF 150 |
#define DUB_KEY_UP 4 |
#define DUB_KEY_DOWN 8 |
#define DUB_KEY_RIGHT 32 |
#define DUB_KEY_LEFT 16 |
#define DUB_KEY_FIRE 64 |
void BearbeiteRxDaten(void); |
extern unsigned char DebugGetAnforderung; |
extern unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
extern unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned volatile char NeueKoordinateEmpfangen; |
extern unsigned char MeineSlaveAdresse; |
extern unsigned char PcZugriff; |
extern unsigned char RemotePollDisplayLine; |
extern int Debug_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void DatenUebertragung(void); |
extern void DecodeNMEA(void); |
extern void BearbeiteRxDaten(void); |
extern unsigned char MotorTest[4]; |
extern unsigned char DubWiseKeys[3]; |
struct str_DebugOut |
{ |
unsigned char Digital[2]; |
unsigned int Analog[32]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
struct str_Debug |
{ |
unsigned char Digital[2]; |
unsigned char RemoteTasten; |
unsigned int Analog[4]; |
}; |
extern struct str_Debug DebugIn; |
struct str_VersionInfo |
{ |
unsigned char Hauptversion; |
unsigned char Nebenversion; |
unsigned char PCKompatibel; |
unsigned char Rserved[7]; |
}; |
extern struct str_VersionInfo VersionInfo; |
//Die Baud_Rate der Seriellen Schnittstelle ist 9600 Baud |
//#define BAUD_RATE 9600 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 14400 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 28800 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 38400 //Baud Rate für die Serielle Schnittstelle |
#define BAUD_RATE 57600 //Baud Rate für die Serielle Schnittstelle |
//Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird |
#if defined (__AVR_ATmega128__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICRB |
#endif |
#if defined (__AVR_ATmega32__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega644__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICR0B |
# define TXEN TXEN0 |
# define RXEN RXEN0 |
# define RXCIE RXCIE0 |
# define TXCIE TXCIE0 |
# define U2X U2X0 |
# define UCSRB UCSR0B |
# define UDRE UDRE0 |
# define INT_VEC_RX SIG_USART_RECV |
# define INT_VEC_TX SIG_USART_TRANS |
#endif |
#endif //_UART_H |
/branches/v0.60_MicroMag3_Nick666/Festkomma/V0.67g/version.txt |
---|
0,0 → 1,107 |
------- |
V0.53 27.04.2007 H.Buss |
- erste öffentliche Version |
V0.53b 29.04.2007 H.Buss |
- der FAKTOR_I war versehentlich auf Null, dann liegt der MikroKopter nicht so hart in der Luft |
V0.53c 29.04.2007 H.Buss |
- es gib ein Menü, in dem die Werte der Kanäle nach Nick, Roll, Gas,... sortiert sind. |
Die angezeigten Werte waren nicht die Werte der Funke |
V0.54 01.05.2007 H.Buss |
- die Paramtersätze können jetzt vor dem Start ausgewählt werden |
Dazu wird beim Kalibrieren der Messwerte (Gashebel oben links) der Nick-Rollhebel abgefragt: |
2 3 4 |
1 x 5 |
- - - |
Bedeutet: Nick-Rollhebel Links Mitte = Setting:1 Links Oben = Setting:2 usw. |
- der Faktor_I für den Hauptregler ist hinzugekommen. Im Heading-Hold-Modus sollte er vergössert werden, was Stabilität bringt |
V0.55 14.05.2007 H.Buss |
- es können nun Servos an J3,J4,J5 mit den Kanälen 5-7 gesteuert werden |
V0.56 14.05.2007 H.Buss |
- es gab Probleme mit Funken, die mehr als 8 Kanäle haben, wenn mehrere Kanäle dann auf Null waren |
- Funken, die nicht bis +-120 aussteuern können, sollten jetzt auch gehen |
V0.57 24.05.2007 H.Buss |
- Der Höhenregler kann nun auch mittels Schalter bedient werden |
- Bug im Gier-Algorithmus behoben; Schnelles Gieren fürhrte dazu, dass der MK zu weit gedreht hat |
- Kompass-Einfluss dämpfen bei Neigung |
- Man kann zwischen Kompass FIX (Richtung beim Kalibrieren) und Variabel (einstellbar per Gier) wählen |
- Der Motortest vom Kopter-Tool geht jetzt |
- Man kann den Parametersätzen einen Namen geben |
- Das Kamerasetting ist unter Setting 2 defaultmässig integriert |
V0.58 30.05.2007 H.Buss |
- Der Höhenregler-Algorithmus wird nun umgangen, wenn der Höhenreglerschalter aus ist |
V0.60 17.08.2007 H.Buss |
- "Schwindel-Bug" behoben |
- Die Poti-Werte werden jetzt auf Unterlauf (<0) überprüft |
- Poti4 zugefügt |
- Es werden jetzt 8 Kanäle ausgewertet |
- Kamera-Servo (an J7) |
- Die Settings müssen überschrieben werden |
V0.61 - V0.63 H.Buss 27.09.2007 |
- Poti 4 und Kanal 8 werden im Menü angezeigt |
- ein paar Kleinigkeiten bei den DefaultKonstanten2 bereinigt |
- Analog.c: Aktuell_ax korrigiert |
- auf 32 Debug-Kanäle erweitert |
- Loopings sind jetzt möglich und einzeln im KopterTool freischaltbar |
- leichte Anpassungen im Gier - Geschwindigkeit und Drift |
- die Hardwareversion V1.1 wird erkannt und das Programm stellt sich auf die geänderte Gyroverstärkung und die geänderten Portpins ein |
- die Software startet nach dem Einschalten schneller, weil der Luftdruckoffset schneller gefunden wird |
- die PPM-Ausgänge liegen wieder an den Pins an |
- Details an der Sensordatenverarbeitung -> es fliegt sich geringfügig anders |
- der MK ist bei wenig Gas nicht mehr so giftig -> soll das Landen vereinfachen |
- I2C-Bus läuft jetzt sicher nach einer Störung wieder an |
- Sticksignale werden präziser ausgewertet |
- Stick-Kanäle werden ans Kopter-Tool übertragen |
- Es muss die Version V1.47 des Kopter-Tool verwendet werden |
- Die Settings werden auf Default zurückgesetzt |
- am Piepen kann man die Fehlerart unterscheiden |
1. einzelnes Piepen beim Einschalten und Kalibrieren |
2. langsames Intervall mindestens 1 Sek -> Empfangsausfall |
3. schnelleres Intervall mindestens 1 Sek -> Akku |
4. sehr schnelles Intervall mindestens 1 Sek -> Kommunikation zu den Reglern gestört |
V0.64 H.Buss 30.09.2007 |
- beim Gieren wurden die Achsen nicht hart genug geregelt |
V0.65a H.Buss 15.10.2007 |
- Integral im Mischer wieder integriert |
- Feinabstimmung im ACC/Gyro Abgleich -> 1/32 & 100 |
- ACC/Gyro Abgleich auch bei HH |
V0.66a H.Buss 3.11.2007 |
- Messwertverarbeitung aus dem Analog-Interrupt entfernt |
- Analogmessung hängt jetzt am FC-Timing |
- Looping-Stick-Hysterese eingebaut |
- Looping-180°-Umschlag einstellbar |
- Achsenkopplung: Gierbewegung verkoppelt Nick und Roll |
- Lageregelung nach ACC-Sensor verbessert |
- zusätzlicher I-Anteil in der Lageregelung verbessert die Neutrallage |
- Gyrodriftkompensation überarbeitet |
- Bug in der Gier-Stick-Berechnung behoben |
- Gyro-Messung auf 1kHz beschleunigt |
V0.67a H.Buss 16.11.2007 |
- der Hauptregler-I-Anteil wirkt jetzt nur noch auf den Winkel (ausser im HH-Mode) |
- Gyro-Acc-Abgleich jetzt wieder in jedem Zyklus |
- Feinabstimmung |
- Beim HH-Modus gab es noch Bugs |
V0.67e H.Buss 29.11.2007 |
- Parameter: Dynamic Stability und Driftfaktor eingeführt |
- Die Namen der Analogwerte werden jetzt zum Koptertool übertragen |
- Kompatibilität zum Koptertool erhöht |
V0.67f H.Buss 04.12.2007 |
- Giersteuerwert im Mischer auf Gas/2 begrenzt |
- Die Analogwerte des ACC-Sensors können dauerhaft im EEPROM gespeichert werden |
- Das Integral des Hauptreglers wird jetzt linear entladen und nicht mehr proportional |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/COPYING |
---|
0,0 → 1,674 |
GNU GENERAL PUBLIC LICENSE |
Version 3, 29 June 2007 |
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> |
Everyone is permitted to copy and distribute verbatim copies |
of this license document, but changing it is not allowed. |
Preamble |
The GNU General Public License is a free, copyleft license for |
software and other kinds of works. |
The licenses for most software and other practical works are designed |
to take away your freedom to share and change the works. By contrast, |
the GNU General Public License is intended to guarantee your freedom to |
share and change all versions of a program--to make sure it remains free |
software for all its users. We, the Free Software Foundation, use the |
GNU General Public License for most of our software; it applies also to |
any other work released this way by its authors. You can apply it to |
your programs, too. |
When we speak of free software, we are referring to freedom, not |
price. Our General Public Licenses are designed to make sure that you |
have the freedom to distribute copies of free software (and charge for |
them if you wish), that you receive source code or can get it if you |
want it, that you can change the software or use pieces of it in new |
free programs, and that you know you can do these things. |
To protect your rights, we need to prevent others from denying you |
these rights or asking you to surrender the rights. Therefore, you have |
certain responsibilities if you distribute copies of the software, or if |
you modify it: responsibilities to respect the freedom of others. |
For example, if you distribute copies of such a program, whether |
gratis or for a fee, you must pass on to the recipients the same |
freedoms that you received. You must make sure that they, too, receive |
or can get the source code. And you must show them these terms so they |
know their rights. |
Developers that use the GNU GPL protect your rights with two steps: |
(1) assert copyright on the software, and (2) offer you this License |
giving you legal permission to copy, distribute and/or modify it. |
For the developers' and authors' protection, the GPL clearly explains |
that there is no warranty for this free software. For both users' and |
authors' sake, the GPL requires that modified versions be marked as |
changed, so that their problems will not be attributed erroneously to |
authors of previous versions. |
Some devices are designed to deny users access to install or run |
modified versions of the software inside them, although the manufacturer |
can do so. This is fundamentally incompatible with the aim of |
protecting users' freedom to change the software. The systematic |
pattern of such abuse occurs in the area of products for individuals to |
use, which is precisely where it is most unacceptable. Therefore, we |
have designed this version of the GPL to prohibit the practice for those |
products. If such problems arise substantially in other domains, we |
stand ready to extend this provision to those domains in future versions |
of the GPL, as needed to protect the freedom of users. |
Finally, every program is threatened constantly by software patents. |
States should not allow patents to restrict development and use of |
software on general-purpose computers, but in those that do, we wish to |
avoid the special danger that patents applied to a free program could |
make it effectively proprietary. To prevent this, the GPL assures that |
patents cannot be used to render the program non-free. |
The precise terms and conditions for copying, distribution and |
modification follow. |
TERMS AND CONDITIONS |
0. Definitions. |
"This License" refers to version 3 of the GNU General Public License. |
"Copyright" also means copyright-like laws that apply to other kinds of |
works, such as semiconductor masks. |
"The Program" refers to any copyrightable work licensed under this |
License. Each licensee is addressed as "you". "Licensees" and |
"recipients" may be individuals or organizations. |
To "modify" a work means to copy from or adapt all or part of the work |
in a fashion requiring copyright permission, other than the making of an |
exact copy. The resulting work is called a "modified version" of the |
earlier work or a work "based on" the earlier work. |
A "covered work" means either the unmodified Program or a work based |
on the Program. |
To "propagate" a work means to do anything with it that, without |
permission, would make you directly or secondarily liable for |
infringement under applicable copyright law, except executing it on a |
computer or modifying a private copy. Propagation includes copying, |
distribution (with or without modification), making available to the |
public, and in some countries other activities as well. |
To "convey" a work means any kind of propagation that enables other |
parties to make or receive copies. Mere interaction with a user through |
a computer network, with no transfer of a copy, is not conveying. |
An interactive user interface displays "Appropriate Legal Notices" |
to the extent that it includes a convenient and prominently visible |
feature that (1) displays an appropriate copyright notice, and (2) |
tells the user that there is no warranty for the work (except to the |
extent that warranties are provided), that licensees may convey the |
work under this License, and how to view a copy of this License. If |
the interface presents a list of user commands or options, such as a |
menu, a prominent item in the list meets this criterion. |
1. Source Code. |
The "source code" for a work means the preferred form of the work |
for making modifications to it. "Object code" means any non-source |
form of a work. |
A "Standard Interface" means an interface that either is an official |
standard defined by a recognized standards body, or, in the case of |
interfaces specified for a particular programming language, one that |
is widely used among developers working in that language. |
The "System Libraries" of an executable work include anything, other |
than the work as a whole, that (a) is included in the normal form of |
packaging a Major Component, but which is not part of that Major |
Component, and (b) serves only to enable use of the work with that |
Major Component, or to implement a Standard Interface for which an |
implementation is available to the public in source code form. A |
"Major Component", in this context, means a major essential component |
(kernel, window system, and so on) of the specific operating system |
(if any) on which the executable work runs, or a compiler used to |
produce the work, or an object code interpreter used to run it. |
The "Corresponding Source" for a work in object code form means all |
the source code needed to generate, install, and (for an executable |
work) run the object code and to modify the work, including scripts to |
control those activities. However, it does not include the work's |
System Libraries, or general-purpose tools or generally available free |
programs which are used unmodified in performing those activities but |
which are not part of the work. For example, Corresponding Source |
includes interface definition files associated with source files for |
the work, and the source code for shared libraries and dynamically |
linked subprograms that the work is specifically designed to require, |
such as by intimate data communication or control flow between those |
subprograms and other parts of the work. |
The Corresponding Source need not include anything that users |
can regenerate automatically from other parts of the Corresponding |
Source. |
The Corresponding Source for a work in source code form is that |
same work. |
2. Basic Permissions. |
All rights granted under this License are granted for the term of |
copyright on the Program, and are irrevocable provided the stated |
conditions are met. This License explicitly affirms your unlimited |
permission to run the unmodified Program. The output from running a |
covered work is covered by this License only if the output, given its |
content, constitutes a covered work. This License acknowledges your |
rights of fair use or other equivalent, as provided by copyright law. |
You may make, run and propagate covered works that you do not |
convey, without conditions so long as your license otherwise remains |
in force. You may convey covered works to others for the sole purpose |
of having them make modifications exclusively for you, or provide you |
with facilities for running those works, provided that you comply with |
the terms of this License in conveying all material for which you do |
not control copyright. Those thus making or running the covered works |
for you must do so exclusively on your behalf, under your direction |
and control, on terms that prohibit them from making any copies of |
your copyrighted material outside their relationship with you. |
Conveying under any other circumstances is permitted solely under |
the conditions stated below. Sublicensing is not allowed; section 10 |
makes it unnecessary. |
3. Protecting Users' Legal Rights From Anti-Circumvention Law. |
No covered work shall be deemed part of an effective technological |
measure under any applicable law fulfilling obligations under article |
11 of the WIPO copyright treaty adopted on 20 December 1996, or |
similar laws prohibiting or restricting circumvention of such |
measures. |
When you convey a covered work, you waive any legal power to forbid |
circumvention of technological measures to the extent such circumvention |
is effected by exercising rights under this License with respect to |
the covered work, and you disclaim any intention to limit operation or |
modification of the work as a means of enforcing, against the work's |
users, your or third parties' legal rights to forbid circumvention of |
technological measures. |
4. Conveying Verbatim Copies. |
You may convey verbatim copies of the Program's source code as you |
receive it, in any medium, provided that you conspicuously and |
appropriately publish on each copy an appropriate copyright notice; |
keep intact all notices stating that this License and any |
non-permissive terms added in accord with section 7 apply to the code; |
keep intact all notices of the absence of any warranty; and give all |
recipients a copy of this License along with the Program. |
You may charge any price or no price for each copy that you convey, |
and you may offer support or warranty protection for a fee. |
5. Conveying Modified Source Versions. |
You may convey a work based on the Program, or the modifications to |
produce it from the Program, in the form of source code under the |
terms of section 4, provided that you also meet all of these conditions: |
a) The work must carry prominent notices stating that you modified |
it, and giving a relevant date. |
b) The work must carry prominent notices stating that it is |
released under this License and any conditions added under section |
7. This requirement modifies the requirement in section 4 to |
"keep intact all notices". |
c) You must license the entire work, as a whole, under this |
License to anyone who comes into possession of a copy. This |
License will therefore apply, along with any applicable section 7 |
additional terms, to the whole of the work, and all its parts, |
regardless of how they are packaged. This License gives no |
permission to license the work in any other way, but it does not |
invalidate such permission if you have separately received it. |
d) If the work has interactive user interfaces, each must display |
Appropriate Legal Notices; however, if the Program has interactive |
interfaces that do not display Appropriate Legal Notices, your |
work need not make them do so. |
A compilation of a covered work with other separate and independent |
works, which are not by their nature extensions of the covered work, |
and which are not combined with it such as to form a larger program, |
in or on a volume of a storage or distribution medium, is called an |
"aggregate" if the compilation and its resulting copyright are not |
used to limit the access or legal rights of the compilation's users |
beyond what the individual works permit. Inclusion of a covered work |
in an aggregate does not cause this License to apply to the other |
parts of the aggregate. |
6. Conveying Non-Source Forms. |
You may convey a covered work in object code form under the terms |
of sections 4 and 5, provided that you also convey the |
machine-readable Corresponding Source under the terms of this License, |
in one of these ways: |
a) Convey the object code in, or embodied in, a physical product |
(including a physical distribution medium), accompanied by the |
Corresponding Source fixed on a durable physical medium |
customarily used for software interchange. |
b) Convey the object code in, or embodied in, a physical product |
(including a physical distribution medium), accompanied by a |
written offer, valid for at least three years and valid for as |
long as you offer spare parts or customer support for that product |
model, to give anyone who possesses the object code either (1) a |
copy of the Corresponding Source for all the software in the |
product that is covered by this License, on a durable physical |
medium customarily used for software interchange, for a price no |
more than your reasonable cost of physically performing this |
conveying of source, or (2) access to copy the |
Corresponding Source from a network server at no charge. |
c) Convey individual copies of the object code with a copy of the |
written offer to provide the Corresponding Source. This |
alternative is allowed only occasionally and noncommercially, and |
only if you received the object code with such an offer, in accord |
with subsection 6b. |
d) Convey the object code by offering access from a designated |
place (gratis or for a charge), and offer equivalent access to the |
Corresponding Source in the same way through the same place at no |
further charge. You need not require recipients to copy the |
Corresponding Source along with the object code. If the place to |
copy the object code is a network server, the Corresponding Source |
may be on a different server (operated by you or a third party) |
that supports equivalent copying facilities, provided you maintain |
clear directions next to the object code saying where to find the |
Corresponding Source. Regardless of what server hosts the |
Corresponding Source, you remain obligated to ensure that it is |
available for as long as needed to satisfy these requirements. |
e) Convey the object code using peer-to-peer transmission, provided |
you inform other peers where the object code and Corresponding |
Source of the work are being offered to the general public at no |
charge under subsection 6d. |
A separable portion of the object code, whose source code is excluded |
from the Corresponding Source as a System Library, need not be |
included in conveying the object code work. |
A "User Product" is either (1) a "consumer product", which means any |
tangible personal property which is normally used for personal, family, |
or household purposes, or (2) anything designed or sold for incorporation |
into a dwelling. In determining whether a product is a consumer product, |
doubtful cases shall be resolved in favor of coverage. For a particular |
product received by a particular user, "normally used" refers to a |
typical or common use of that class of product, regardless of the status |
of the particular user or of the way in which the particular user |
actually uses, or expects or is expected to use, the product. A product |
is a consumer product regardless of whether the product has substantial |
commercial, industrial or non-consumer uses, unless such uses represent |
the only significant mode of use of the product. |
"Installation Information" for a User Product means any methods, |
procedures, authorization keys, or other information required to install |
and execute modified versions of a covered work in that User Product from |
a modified version of its Corresponding Source. The information must |
suffice to ensure that the continued functioning of the modified object |
code is in no case prevented or interfered with solely because |
modification has been made. |
If you convey an object code work under this section in, or with, or |
specifically for use in, a User Product, and the conveying occurs as |
part of a transaction in which the right of possession and use of the |
User Product is transferred to the recipient in perpetuity or for a |
fixed term (regardless of how the transaction is characterized), the |
Corresponding Source conveyed under this section must be accompanied |
by the Installation Information. But this requirement does not apply |
if neither you nor any third party retains the ability to install |
modified object code on the User Product (for example, the work has |
been installed in ROM). |
The requirement to provide Installation Information does not include a |
requirement to continue to provide support service, warranty, or updates |
for a work that has been modified or installed by the recipient, or for |
the User Product in which it has been modified or installed. Access to a |
network may be denied when the modification itself materially and |
adversely affects the operation of the network or violates the rules and |
protocols for communication across the network. |
Corresponding Source conveyed, and Installation Information provided, |
in accord with this section must be in a format that is publicly |
documented (and with an implementation available to the public in |
source code form), and must require no special password or key for |
unpacking, reading or copying. |
7. Additional Terms. |
"Additional permissions" are terms that supplement the terms of this |
License by making exceptions from one or more of its conditions. |
Additional permissions that are applicable to the entire Program shall |
be treated as though they were included in this License, to the extent |
that they are valid under applicable law. If additional permissions |
apply only to part of the Program, that part may be used separately |
under those permissions, but the entire Program remains governed by |
this License without regard to the additional permissions. |
When you convey a copy of a covered work, you may at your option |
remove any additional permissions from that copy, or from any part of |
it. (Additional permissions may be written to require their own |
removal in certain cases when you modify the work.) You may place |
additional permissions on material, added by you to a covered work, |
for which you have or can give appropriate copyright permission. |
Notwithstanding any other provision of this License, for material you |
add to a covered work, you may (if authorized by the copyright holders of |
that material) supplement the terms of this License with terms: |
a) Disclaiming warranty or limiting liability differently from the |
terms of sections 15 and 16 of this License; or |
b) Requiring preservation of specified reasonable legal notices or |
author attributions in that material or in the Appropriate Legal |
Notices displayed by works containing it; or |
c) Prohibiting misrepresentation of the origin of that material, or |
requiring that modified versions of such material be marked in |
reasonable ways as different from the original version; or |
d) Limiting the use for publicity purposes of names of licensors or |
authors of the material; or |
e) Declining to grant rights under trademark law for use of some |
trade names, trademarks, or service marks; or |
f) Requiring indemnification of licensors and authors of that |
material by anyone who conveys the material (or modified versions of |
it) with contractual assumptions of liability to the recipient, for |
any liability that these contractual assumptions directly impose on |
those licensors and authors. |
All other non-permissive additional terms are considered "further |
restrictions" within the meaning of section 10. If the Program as you |
received it, or any part of it, contains a notice stating that it is |
governed by this License along with a term that is a further |
restriction, you may remove that term. If a license document contains |
a further restriction but permits relicensing or conveying under this |
License, you may add to a covered work material governed by the terms |
of that license document, provided that the further restriction does |
not survive such relicensing or conveying. |
If you add terms to a covered work in accord with this section, you |
must place, in the relevant source files, a statement of the |
additional terms that apply to those files, or a notice indicating |
where to find the applicable terms. |
Additional terms, permissive or non-permissive, may be stated in the |
form of a separately written license, or stated as exceptions; |
the above requirements apply either way. |
8. Termination. |
You may not propagate or modify a covered work except as expressly |
provided under this License. Any attempt otherwise to propagate or |
modify it is void, and will automatically terminate your rights under |
this License (including any patent licenses granted under the third |
paragraph of section 11). |
However, if you cease all violation of this License, then your |
license from a particular copyright holder is reinstated (a) |
provisionally, unless and until the copyright holder explicitly and |
finally terminates your license, and (b) permanently, if the copyright |
holder fails to notify you of the violation by some reasonable means |
prior to 60 days after the cessation. |
Moreover, your license from a particular copyright holder is |
reinstated permanently if the copyright holder notifies you of the |
violation by some reasonable means, this is the first time you have |
received notice of violation of this License (for any work) from that |
copyright holder, and you cure the violation prior to 30 days after |
your receipt of the notice. |
Termination of your rights under this section does not terminate the |
licenses of parties who have received copies or rights from you under |
this License. If your rights have been terminated and not permanently |
reinstated, you do not qualify to receive new licenses for the same |
material under section 10. |
9. Acceptance Not Required for Having Copies. |
You are not required to accept this License in order to receive or |
run a copy of the Program. Ancillary propagation of a covered work |
occurring solely as a consequence of using peer-to-peer transmission |
to receive a copy likewise does not require acceptance. However, |
nothing other than this License grants you permission to propagate or |
modify any covered work. These actions infringe copyright if you do |
not accept this License. Therefore, by modifying or propagating a |
covered work, you indicate your acceptance of this License to do so. |
10. Automatic Licensing of Downstream Recipients. |
Each time you convey a covered work, the recipient automatically |
receives a license from the original licensors, to run, modify and |
propagate that work, subject to this License. You are not responsible |
for enforcing compliance by third parties with this License. |
An "entity transaction" is a transaction transferring control of an |
organization, or substantially all assets of one, or subdividing an |
organization, or merging organizations. If propagation of a covered |
work results from an entity transaction, each party to that |
transaction who receives a copy of the work also receives whatever |
licenses to the work the party's predecessor in interest had or could |
give under the previous paragraph, plus a right to possession of the |
Corresponding Source of the work from the predecessor in interest, if |
the predecessor has it or can get it with reasonable efforts. |
You may not impose any further restrictions on the exercise of the |
rights granted or affirmed under this License. For example, you may |
not impose a license fee, royalty, or other charge for exercise of |
rights granted under this License, and you may not initiate litigation |
(including a cross-claim or counterclaim in a lawsuit) alleging that |
any patent claim is infringed by making, using, selling, offering for |
sale, or importing the Program or any portion of it. |
11. Patents. |
A "contributor" is a copyright holder who authorizes use under this |
License of the Program or a work on which the Program is based. The |
work thus licensed is called the contributor's "contributor version". |
A contributor's "essential patent claims" are all patent claims |
owned or controlled by the contributor, whether already acquired or |
hereafter acquired, that would be infringed by some manner, permitted |
by this License, of making, using, or selling its contributor version, |
but do not include claims that would be infringed only as a |
consequence of further modification of the contributor version. For |
purposes of this definition, "control" includes the right to grant |
patent sublicenses in a manner consistent with the requirements of |
this License. |
Each contributor grants you a non-exclusive, worldwide, royalty-free |
patent license under the contributor's essential patent claims, to |
make, use, sell, offer for sale, import and otherwise run, modify and |
propagate the contents of its contributor version. |
In the following three paragraphs, a "patent license" is any express |
agreement or commitment, however denominated, not to enforce a patent |
(such as an express permission to practice a patent or covenant not to |
sue for patent infringement). To "grant" such a patent license to a |
party means to make such an agreement or commitment not to enforce a |
patent against the party. |
If you convey a covered work, knowingly relying on a patent license, |
and the Corresponding Source of the work is not available for anyone |
to copy, free of charge and under the terms of this License, through a |
publicly available network server or other readily accessible means, |
then you must either (1) cause the Corresponding Source to be so |
available, or (2) arrange to deprive yourself of the benefit of the |
patent license for this particular work, or (3) arrange, in a manner |
consistent with the requirements of this License, to extend the patent |
license to downstream recipients. "Knowingly relying" means you have |
actual knowledge that, but for the patent license, your conveying the |
covered work in a country, or your recipient's use of the covered work |
in a country, would infringe one or more identifiable patents in that |
country that you have reason to believe are valid. |
If, pursuant to or in connection with a single transaction or |
arrangement, you convey, or propagate by procuring conveyance of, a |
covered work, and grant a patent license to some of the parties |
receiving the covered work authorizing them to use, propagate, modify |
or convey a specific copy of the covered work, then the patent license |
you grant is automatically extended to all recipients of the covered |
work and works based on it. |
A patent license is "discriminatory" if it does not include within |
the scope of its coverage, prohibits the exercise of, or is |
conditioned on the non-exercise of one or more of the rights that are |
specifically granted under this License. You may not convey a covered |
work if you are a party to an arrangement with a third party that is |
in the business of distributing software, under which you make payment |
to the third party based on the extent of your activity of conveying |
the work, and under which the third party grants, to any of the |
parties who would receive the covered work from you, a discriminatory |
patent license (a) in connection with copies of the covered work |
conveyed by you (or copies made from those copies), or (b) primarily |
for and in connection with specific products or compilations that |
contain the covered work, unless you entered into that arrangement, |
or that patent license was granted, prior to 28 March 2007. |
Nothing in this License shall be construed as excluding or limiting |
any implied license or other defenses to infringement that may |
otherwise be available to you under applicable patent law. |
12. No Surrender of Others' Freedom. |
If conditions are imposed on you (whether by court order, agreement or |
otherwise) that contradict the conditions of this License, they do not |
excuse you from the conditions of this License. If you cannot convey a |
covered work so as to satisfy simultaneously your obligations under this |
License and any other pertinent obligations, then as a consequence you may |
not convey it at all. For example, if you agree to terms that obligate you |
to collect a royalty for further conveying from those to whom you convey |
the Program, the only way you could satisfy both those terms and this |
License would be to refrain entirely from conveying the Program. |
13. Use with the GNU Affero General Public License. |
Notwithstanding any other provision of this License, you have |
permission to link or combine any covered work with a work licensed |
under version 3 of the GNU Affero General Public License into a single |
combined work, and to convey the resulting work. The terms of this |
License will continue to apply to the part which is the covered work, |
but the special requirements of the GNU Affero General Public License, |
section 13, concerning interaction through a network will apply to the |
combination as such. |
14. Revised Versions of this License. |
The Free Software Foundation may publish revised and/or new versions of |
the GNU General Public License from time to time. Such new versions will |
be similar in spirit to the present version, but may differ in detail to |
address new problems or concerns. |
Each version is given a distinguishing version number. If the |
Program specifies that a certain numbered version of the GNU General |
Public License "or any later version" applies to it, you have the |
option of following the terms and conditions either of that numbered |
version or of any later version published by the Free Software |
Foundation. If the Program does not specify a version number of the |
GNU General Public License, you may choose any version ever published |
by the Free Software Foundation. |
If the Program specifies that a proxy can decide which future |
versions of the GNU General Public License can be used, that proxy's |
public statement of acceptance of a version permanently authorizes you |
to choose that version for the Program. |
Later license versions may give you additional or different |
permissions. However, no additional obligations are imposed on any |
author or copyright holder as a result of your choosing to follow a |
later version. |
15. Disclaimer of Warranty. |
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY |
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT |
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY |
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, |
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM |
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF |
ALL NECESSARY SERVICING, REPAIR OR CORRECTION. |
16. Limitation of Liability. |
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING |
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS |
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY |
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE |
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF |
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD |
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), |
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF |
SUCH DAMAGES. |
17. Interpretation of Sections 15 and 16. |
If the disclaimer of warranty and limitation of liability provided |
above cannot be given local legal effect according to their terms, |
reviewing courts shall apply local law that most closely approximates |
an absolute waiver of all civil liability in connection with the |
Program, unless a warranty or assumption of liability accompanies a |
copy of the Program in return for a fee. |
END OF TERMS AND CONDITIONS |
How to Apply These Terms to Your New Programs |
If you develop a new program, and you want it to be of the greatest |
possible use to the public, the best way to achieve this is to make it |
free software which everyone can redistribute and change under these terms. |
To do so, attach the following notices to the program. It is safest |
to attach them to the start of each source file to most effectively |
state the exclusion of warranty; and each file should have at least |
the "copyright" line and a pointer to where the full notice is found. |
<one line to give the program's name and a brief idea of what it does.> |
Copyright (C) <year> <name of author> |
This program is free software: you can redistribute it and/or modify |
it under the terms of the GNU General Public License as published by |
the Free Software Foundation, either version 3 of the License, or |
(at your option) any later version. |
This program is distributed in the hope that it will be useful, |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
GNU General Public License for more details. |
You should have received a copy of the GNU General Public License |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
Also add information on how to contact you by electronic and paper mail. |
If the program does terminal interaction, make it output a short |
notice like this when it starts in an interactive mode: |
<program> Copyright (C) <year> <name of author> |
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. |
This is free software, and you are welcome to redistribute it |
under certain conditions; type `show c' for details. |
The hypothetical commands `show w' and `show c' should show the appropriate |
parts of the General Public License. Of course, your program's commands |
might be different; for a GUI interface, you would use an "about box". |
You should also get your employer (if you work as a programmer) or school, |
if any, to sign a "copyright disclaimer" for the program, if necessary. |
For more information on this, and how to apply and follow the GNU GPL, see |
<http://www.gnu.org/licenses/>. |
The GNU General Public License does not permit incorporating your program |
into proprietary programs. If your program is a subroutine library, you |
may consider it more useful to permit linking proprietary applications with |
the library. If this is what you want to do, use the GNU Lesser General |
Public License instead of this License. But first, please read |
<http://www.gnu.org/philosophy/why-not-lgpl.html>. |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/COPYING.LESSER |
---|
0,0 → 1,165 |
GNU LESSER GENERAL PUBLIC LICENSE |
Version 3, 29 June 2007 |
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> |
Everyone is permitted to copy and distribute verbatim copies |
of this license document, but changing it is not allowed. |
This version of the GNU Lesser General Public License incorporates |
the terms and conditions of version 3 of the GNU General Public |
License, supplemented by the additional permissions listed below. |
0. Additional Definitions. |
As used herein, "this License" refers to version 3 of the GNU Lesser |
General Public License, and the "GNU GPL" refers to version 3 of the GNU |
General Public License. |
"The Library" refers to a covered work governed by this License, |
other than an Application or a Combined Work as defined below. |
An "Application" is any work that makes use of an interface provided |
by the Library, but which is not otherwise based on the Library. |
Defining a subclass of a class defined by the Library is deemed a mode |
of using an interface provided by the Library. |
A "Combined Work" is a work produced by combining or linking an |
Application with the Library. The particular version of the Library |
with which the Combined Work was made is also called the "Linked |
Version". |
The "Minimal Corresponding Source" for a Combined Work means the |
Corresponding Source for the Combined Work, excluding any source code |
for portions of the Combined Work that, considered in isolation, are |
based on the Application, and not on the Linked Version. |
The "Corresponding Application Code" for a Combined Work means the |
object code and/or source code for the Application, including any data |
and utility programs needed for reproducing the Combined Work from the |
Application, but excluding the System Libraries of the Combined Work. |
1. Exception to Section 3 of the GNU GPL. |
You may convey a covered work under sections 3 and 4 of this License |
without being bound by section 3 of the GNU GPL. |
2. Conveying Modified Versions. |
If you modify a copy of the Library, and, in your modifications, a |
facility refers to a function or data to be supplied by an Application |
that uses the facility (other than as an argument passed when the |
facility is invoked), then you may convey a copy of the modified |
version: |
a) under this License, provided that you make a good faith effort to |
ensure that, in the event an Application does not supply the |
function or data, the facility still operates, and performs |
whatever part of its purpose remains meaningful, or |
b) under the GNU GPL, with none of the additional permissions of |
this License applicable to that copy. |
3. Object Code Incorporating Material from Library Header Files. |
The object code form of an Application may incorporate material from |
a header file that is part of the Library. You may convey such object |
code under terms of your choice, provided that, if the incorporated |
material is not limited to numerical parameters, data structure |
layouts and accessors, or small macros, inline functions and templates |
(ten or fewer lines in length), you do both of the following: |
a) Give prominent notice with each copy of the object code that the |
Library is used in it and that the Library and its use are |
covered by this License. |
b) Accompany the object code with a copy of the GNU GPL and this license |
document. |
4. Combined Works. |
You may convey a Combined Work under terms of your choice that, |
taken together, effectively do not restrict modification of the |
portions of the Library contained in the Combined Work and reverse |
engineering for debugging such modifications, if you also do each of |
the following: |
a) Give prominent notice with each copy of the Combined Work that |
the Library is used in it and that the Library and its use are |
covered by this License. |
b) Accompany the Combined Work with a copy of the GNU GPL and this license |
document. |
c) For a Combined Work that displays copyright notices during |
execution, include the copyright notice for the Library among |
these notices, as well as a reference directing the user to the |
copies of the GNU GPL and this license document. |
d) Do one of the following: |
0) Convey the Minimal Corresponding Source under the terms of this |
License, and the Corresponding Application Code in a form |
suitable for, and under terms that permit, the user to |
recombine or relink the Application with a modified version of |
the Linked Version to produce a modified Combined Work, in the |
manner specified by section 6 of the GNU GPL for conveying |
Corresponding Source. |
1) Use a suitable shared library mechanism for linking with the |
Library. A suitable mechanism is one that (a) uses at run time |
a copy of the Library already present on the user's computer |
system, and (b) will operate properly with a modified version |
of the Library that is interface-compatible with the Linked |
Version. |
e) Provide Installation Information, but only if you would otherwise |
be required to provide such information under section 6 of the |
GNU GPL, and only to the extent that such information is |
necessary to install and execute a modified version of the |
Combined Work produced by recombining or relinking the |
Application with a modified version of the Linked Version. (If |
you use option 4d0, the Installation Information must accompany |
the Minimal Corresponding Source and Corresponding Application |
Code. If you use option 4d1, you must provide the Installation |
Information in the manner specified by section 6 of the GNU GPL |
for conveying Corresponding Source.) |
5. Combined Libraries. |
You may place library facilities that are a work based on the |
Library side by side in a single library together with other library |
facilities that are not Applications and are not covered by this |
License, and convey such a combined library under terms of your |
choice, if you do both of the following: |
a) Accompany the combined library with a copy of the same work based |
on the Library, uncombined with any other library facilities, |
conveyed under the terms of this License. |
b) Give prominent notice with the combined library that part of it |
is a work based on the Library, and explaining where to find the |
accompanying uncombined form of the same work. |
6. Revised Versions of the GNU Lesser General Public License. |
The Free Software Foundation may publish revised and/or new versions |
of the GNU Lesser General Public License from time to time. Such new |
versions will be similar in spirit to the present version, but may |
differ in detail to address new problems or concerns. |
Each version is given a distinguishing version number. If the |
Library as you received it specifies that a certain numbered version |
of the GNU Lesser General Public License "or any later version" |
applies to it, you have the option of following the terms and |
conditions either of that published version or of any later version |
published by the Free Software Foundation. If the Library as you |
received it does not specify a version number of the GNU Lesser |
General Public License, you may choose any version of the GNU Lesser |
General Public License ever published by the Free Software Foundation. |
If the Library as you received it specifies that a proxy can decide |
whether future versions of the GNU Lesser General Public License shall |
apply, that proxy's public statement of acceptance of any version is |
permanent authorization for you to choose that version for the |
Library. |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/Flight-Ctrl_MEGA644_V0_60_MM3.hex |
---|
0,0 → 1,1485 |
:100000000C9455030C9472030C9472030C947203B9 |
:100010000C9472030C9472030C9472030C9472038C |
:100020000C9472030C94960B0C9472030C94720350 |
:100030000C94DF140C9472030C9472030C947203EE |
:100040000C9472030C9472030C94390C0C94782861 |
:100050000C9497050C9472030C9461050C94720334 |
:100060000C94B20C0C9472030C944C140C94720308 |
:100070000E08880888088808400821088808880829 |
:1000800088086C086C086C086C086C0844088808C0 |
:100090008808330888083C08DB0C2D0D860DE10D1F |
:1000A000FE0D210E470E2E0F6D10A11002115811DA |
:1000B000A6111F127912DA12FE1234137013AE1346 |
:1000C000E7130A0A0D004E65757472616C0048658D |
:1000D0006164696E67486F6C64000A0D53746575DE |
:1000E0006572756E673A20004F4B0A0D000A0D418C |
:1000F00062676C65696368204C75667464727563C9 |
:100100006B73656E736F722E2E000A0D4B616C69F6 |
:10011000627269657265204E65757472616C6C619E |
:100120006765000A0D4B616C6962726965726520D2 |
:100130004B6F6D70617373000A0D42656E75747A52 |
:100140006520506172616D657465727361747A20A7 |
:100150002564000A0D496E69742E20454550524FA2 |
:100160004D3A2047656E6572696572652044656623 |
:1001700061756C742D506172616D657465722E2E9F |
:100180002E000A0D3D3D3D3D3D3D3D3D3D3D3D3D4E |
:100190003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D8F |
:1001A0003D3D000A0D466C69676874436F6E74725A |
:1001B0006F6C205625642E256420002E005A5F5255 |
:1001C000616E67653A202025346900595F52616E7F |
:1001D00067653A202025346900585F52616E676573 |
:1001E0003A2020253469004D4D332052616E6765F9 |
:1001F000005A5F4F66667365743A202025336900A4 |
:10020000595F4F66667365743A202025336900583C |
:100210005F4F66667365743A2020253369004D4D43 |
:1002200033204F66660052616E67653A2533692D4B |
:10023000253369005374656C6C756E673A202533FD |
:100240006900536574706F696E74202025336900EE |
:10025000536572766F202000506F7469343A202005 |
:1002600025336900506F7469333A202025336900C3 |
:10027000506F7469323A202025336900506F7469D9 |
:10028000313A20202533690053746172743A20207A |
:10029000202020253569004D657373776572743AA7 |
:1002A0002020253569005269636874756E673A20AD |
:1002B00020253569004B6F6D7061737320202020FD |
:1002C00020202000456D70662E506567656C3A25CC |
:1002D0003569005370616E6E756E673A2020253562 |
:1002E0006900486F6368202534692028253369290F |
:1002F00000526F6C6C202534692028253369290051 |
:100300004E69636B20253469202825336929004113 |
:100310004343202D2053656E736F720047696572E9 |
:100320002025346920282533692900526F6C6C2000 |
:10033000253469202825336929004E69636B2025FF |
:100340003469202825336929004779726F202D20D0 |
:1003500053656E736F720050333A25346920204B19 |
:10036000616EE46C65200050313A253469202050DC |
:10037000323A253469200047733A253469202047F2 |
:10038000693A25346920004E693A253469202052A3 |
:100390006F3A25346920004B373A25346920204BC9 |
:1003A000616EE46C6520004B353A25346920204BA2 |
:1003B000363A25346920004B333A25346920204BE6 |
:1003C000343A25346920004B313A25346920204BDA |
:1003D000323A25346920004B6F6D706173733A2097 |
:1003E000202025356900526F6C6C3A202020202097 |
:1003F00020253569004E69636B3A2020202020209B |
:1004000025356900616B742E204C6167650048F6E4 |
:1004100068656E726567656C756E67004B65696EC1 |
:100420006520004F66662020202020203A202535B8 |
:1004300069004C756674647275636B3A2025356982 |
:1004400000536F6C6C486F6568653A20253569000C |
:10045000486F6568653A20202020202535690028EE |
:10046000632920486F6C676572204275737300536F |
:10047000657474696E673A20256420005625642EE1 |
:100480002564002B2B204D696B726F4B6F70746568 |
:1004900072202B2B005B25695D0000010203040420 |
:1004A00005060708090A0B0B0C0D0E0F101111128F |
:1004B0001314151516171818191A1B1B1C1D1D1EB1 |
:1004C0001F1F2021212223232424252526272728F6 |
:1004D0002829292A2A2B2B2C2C2D2D2D2E2E2F2F5F |
:1004E00030303031313232323333333434343535E5 |
:1004F0003536363637373737383838393939393A83 |
:100500003A3A3A3B3B3B3B3C3C3C3C3C3D3D3D3D31 |
:100510003E3E3E3E3E3F3F3F3F3F3F4040404040EB |
:1005200040414141414141424242424242424343B1 |
:10053000434343434344444444444444444545457D |
:100540004545454545454646464646464646464750 |
:100550004747474747474747474748484848484825 |
:100560004848484848494949494949494949494900 |
:100570004949494A4A4A4A4A4A4A4A4A4A4A4A4ADE |
:100580004A4B4B4B4B4B4B4B4B4B4B4B4B4B4B4BBC |
:100590004B4B4C4C4C4C4C4C4C4C4C4C4C4C4C4C9D |
:1005A0004C4C4C4C4C4D4D4D4D4D4D4D4D4D4D4D80 |
:1005B0004D4D4D4D4D4D4D4D4D4D4D4E4E4E4E4E66 |
:1005C0004E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4B |
:1005D0004E4E4E4E4E4F4F4F4F4F4F4F4F4F4F4F30 |
:1005E0004F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F1B |
:1005F0004F4F4F4F000012002400360047005900B3 |
:100600006B007D008F00A000B200C300D500E600A3 |
:10061000F80009011A012B013C014D015E016F0137 |
:1006200080019001A001B101C101D101E101F001FE |
:1006300000020F021F022E023D024B025A02680204 |
:10064000760284029202A002AD02BA02C702D4026C |
:10065000E102ED02F902050310031C032703320334 |
:100660003C03470351035B0364036E03770380037A |
:10067000880390039803A003A703AF03B503BC034B |
:10068000C203C803CE03D303D803DD03E203E603AA |
:10069000EA03ED03F003F303F603F803FA03FC03A4 |
:1006A000FE03FF03FF030004000411241FBECFEF6D |
:1006B000D0E1DEBFCDBF11E0A0E0B1E0E0E3FCE5BA |
:1006C00002C005900D92AC38B107D9F715E0ACE83F |
:1006D000B1E001C01D92AC32B107E1F70E94AA035C |
:1006E0000C94172E0C940000A2E0B0E00E94F92DAB |
:1006F000802D99270895FB01863008F085E0282F8A |
:100700002150842F9927AAE32A9FD0011124A65FA4 |
:10071000BF4F019724F001900E94062EFACFA2E06D |
:10072000B0E0022E0E94062E0895FB01282F86308D |
:1007300008F025E0842F99272150AAE32A9FD001B1 |
:100740001124A65FBF4F019724F00E94F92D01925A |
:10075000FACF08950F931F93CF93DF9381E087B96A |
:100760008FEF88B98BE184B9289A8EE38AB9579ABA |
:1007700087EF8BB984B7877F84BF809160008861E1 |
:10078000809360001092600088EE93E09093A70140 |
:100790008093A60110921D0210921C0210929A04DE |
:1007A0001092990410921B0210921A0210921902D0 |
:1007B0001092180228980E94640B0E9467070E94FA |
:1007C000CA140E94AC0C0E9430140E94B92A78947A |
:1007D0001092A8038CE38093A90384E08093AA037A |
:1007E0008CE390E09F938F931F921F9283EA91E096 |
:1007F0009F938F931F920E94E70882E891E09F9356 |
:100800008F931F920E94E708299AA1E0B0E00E940E |
:10081000F92D802D2DB73EB7265F3F4F2DBF8A3073 |
:10082000B9F183E591E09F938F931F920E94E708AF |
:100830000E942D1C4AE361EC74E080E00E947B037F |
:1008400001E00F900F900F90023049F40E94C01BFE |
:100850004AE361EC74E082E00E947B0303E04AE338 |
:1008600061EC74E0802F0E947B030F5F063060F321 |
:1008700081E022E030E0D901082E0E94062E8AE0B5 |
:1008800021503040D901082E0E94062E0E94B71D2B |
:1008900002E010E0D8010E94F92D802D4AE361ECBE |
:1008A00074E00E949503D8010E94F92D802D9927AC |
:1008B0009F938F9388E391E09F938F931F920E9461 |
:1008C000E70884EF91E00E94810BEC010F900F90FC |
:1008D0000F900F900F90CE010E948A0B8823D9F3BE |
:1008E000E091C304FF27EE0FFF1FEB56FB4F808103 |
:1008F000918185369105C4F0E091C404FF27EE0F85 |
:10090000FF1FEB56FB4F808191818536910564F086 |
:1009100083E291E09F938F931F920E94E7080E94C9 |
:10092000F3290F900F900F90E091C304FF27EE0F73 |
:10093000FF1FEB56FB4F8081918185369105C4F0F6 |
:10094000E091C404FF27EE0FFF1FEB56FB4F8081A1 |
:1009500091818C599F4F64F48AE091E09F938F932B |
:100960001F920E94E7080E94B71D0F900F900F90F2 |
:100970008091C90480FF20C08DEE90E09F938F93FB |
:100980001F920E94E70884EC99E00E94810BEC0121 |
:100990000E94C80F0F900F900F90CE010E948A0BFB |
:1009A0008823D9F388EE90E09F938F931F920E9443 |
:1009B000E7080F900F900F900E94E51C289880ED9B |
:1009C00097E09093A7018093A60188EE93E090931F |
:1009D000A3038093A20385E580939D038AED90E0B5 |
:1009E0009F938F931F920E94E7088091C9040F90F4 |
:1009F0000F900F9082FF03C08EEC90E002C086EC57 |
:100A000090E09F938F931F920E94E7080F900F90A2 |
:100A10000F9082EC90E09F938F931F920E94E708C3 |
:100A20000E940C100F900F900F908091A5018823C9 |
:100A300079F11092A5010E94301E0E949E1C2898F8 |
:100A400080910101882319F08150809301018091E8 |
:100A50001702882329F08091170281508093170292 |
:100A600020910401309105018091D904992728171C |
:100A7000390734F480ED97E09093A7018093A601A5 |
:100A80008091CF01882319F40E94301401C0289866 |
:100A90000E9482070E94F00780E090E00E948A0B8B |
:100AA000882319F280911E02882329F088B190E1F1 |
:100AB000892788B901C0449884EF91E00E94810B96 |
:100AC000B4CF1F920F920FB60F9211248F939F9362 |
:100AD000EF93FF93809100018823E1F48091A101BD |
:100AE0009091A20101969093A2018093A101FC0133 |
:100AF000E159FD4FE081ED3019F08639910539F467 |
:100B00001092A2011092A10181E080930001E09374 |
:100B1000C60004C01092A2011092A101FF91EF91B2 |
:100B20009F918F910F900FBE0F901F9018951F925D |
:100B30000F920FB60F9211242F933F934F938F93E1 |
:100B40009F93AF93BF93CF93DF93EF93FF938091E6 |
:100B5000C6008093900140919C01463910F010929C |
:100B60009B01809190018D3009F05CC080919B01C8 |
:100B7000823009F057C010929B01A42FBB27FD01C2 |
:100B8000E055FC4F3081ED01CF54DC4F288180913E |
:100B90009F019091A001831B9109821B91099F7075 |
:100BA0009093A00180939F019C0196E03695279534 |
:100BB0009A95E1F7235C20939E01982F9F73935C95 |
:100BC00090939D018081281729F48881981711F44A |
:100BD00091E006C0809193018F5F8093930190E034 |
:100BE00080919101882309F064C0992309F461C0C0 |
:100BF00081E08093910140939401AE54BC4F8DE00D |
:100C00008C938091B403823509F053C088E190E061 |
:100C10002CE00FB6F894A895809360000FBE209347 |
:100C2000600047C080919B018130D9F0813018F07D |
:100C30008230E9F530C080919001833239F480919F |
:100C40009101882319F481E080939B0180919001A8 |
:100C50008093B20381E080939C0180919001992759 |
:100C600015C082E080939B01E42FFF2780919001C3 |
:100C7000EE54FC4F80834F5F40939C012091900184 |
:100C800080919F019091A001820F911D9093A001EE |
:100C900080939F010EC0E42FFF2780919001EE54B6 |
:100CA000FC4F8083463938F310929B01E7CF1092B6 |
:100CB0009B01FF91EF91DF91CF91BF91AF919F91F8 |
:100CC0008F914F913F912F910F900FBE0F901F90DA |
:100CD0001895DC0120E030E040E050E0EFE6F2E083 |
:100CE00005C08191280F311D4F5F5F4F4A175B0789 |
:100CF000C1F73F70C90136E0969587953A95E1F7BF |
:100D0000835CFD01E159FD4F808311962F73235CB5 |
:100D1000FD01E159FD4F2083A059BD4F8DE08C931B |
:100D20001092000180916F028093C6000895EF92A7 |
:100D3000FF920F931F93CF93DF937A01722F93E269 |
:100D400090936F02609370028093710203E010E051 |
:100D500060E0A2E7B2E046C0F701E60FF11D908126 |
:100D60006F5F715019F4E0E040E00FC0F701E60F4B |
:100D7000F11D40816F5F715011F4E0E006C0F70192 |
:100D8000E60FF11DE0816F5F7150892F8695869582 |
:100D9000835C8C935527892F99278370907024E06A |
:100DA000880F991F2A95E1F79A0194E036952795C7 |
:100DB0009A95E1F7822B835CED0189834F70507027 |
:100DC000440F551F440F551F8E2F8295869586958B |
:100DD0008370842B835C8A83EF73E35CEB830C5F0B |
:100DE0001F4F1496772309F0B7CFC8010E946906F8 |
:100DF000E6E0CDB7DEB70C94E42D1F93CF93DF93DD |
:100E0000EC0170E0A22FBB27129748C0E42FFF2708 |
:100E1000EE54FC4F30814F5FE42FFF27EE54FC4F20 |
:100E200050814F5FE42FFF27EE54FC4F10814F5F3E |
:100E3000E42FFF27EE54FC4F20814F5F842F99272A |
:100E4000A817B90774F15D53FE01E70FF11D3D537B |
:100E5000330F330F852F82958F70382B308361309D |
:100E600001F1912F9D537F5FFE01E70FF11D71503E |
:100E70005295507F892F86958695582B50836350C5 |
:100E80006F3F79F07E5FFE01E70FF11D9295990F9C |
:100E9000990F907C2D53922B90837F5F662309F0EE |
:100EA000B5CFDF91CF911F9108951F93182F8A30EE |
:100EB00019F48DE00E9455078091C00085FFFCCF9A |
:100EC0001093C60080E090E01F9108950895E1EC32 |
:100ED000F0E088E18083A0ECB0E08C9182608C939C |
:100EE0008081806880838081806480838AE28093AF |
:100EF000C40088EC90E00E94810B90939C03809347 |
:100F00009B03089580910001882309F468C08091B3 |
:100F10008C01882371F080910001882351F02BE02F |
:100F20004DE953E060916E0287E40E9497061092AB |
:100F30008C0180919B0390919C030E948A0B8823D3 |
:100F400021F480918E018823B1F0809100018823E3 |
:100F500091F022E348E454E060916E0284E40E9440 |
:100F6000970610928E018AEF90E00E94810B909379 |
:100F70009C0380939B0380918D018823F1F08091E5 |
:100F800000018823D1F00E94151010928D018091EC |
:100F90009A018F5F80939A01843011F410929A0124 |
:100FA00080919A0144E1849FA00111244A5E5E4F22 |
:100FB00024E160E0805D0E94970680918F01882384 |
:100FC00071F080910001882351F02AE048EA53E053 |
:100FD00060916E0286E50E94970610928F01089537 |
:100FE000A2E0B0E0E6EFF7E00C94CB2D8091910108 |
:100FF000882309F48FC08FEF809301018091B4039F |
:101000009927AA27BB27FC01E356F040E431F105FC |
:1010100008F07EC0E85CFF4F0C94F32D2091940102 |
:1010200043E06BE08DE993E00E94FD068091C601EC |
:1010300090919F03892B8093C60181E080938E015C |
:1010400067C02091940143E062E0CE0101960E94C6 |
:10105000FD068091C6019981892B8093C60181E0AC |
:1010600080938D0155C02091940143E064E086E9AE |
:1010700091E00E94FD064CC081E080938F0148C042 |
:1010800081E080938C0144C02091940143E062E0B0 |
:10109000CE0101960E94FD0689818F3F89F086303E |
:1010A00010F085E089834AE361EC74E089810E9455 |
:1010B000950389812AE341EC54E060916E0208C0F7 |
:1010C00010916E020E9474032AE341EC54E0612FF8 |
:1010D000855B0E9497061CC02091940143E06AE35F |
:1010E00081EC94E00E94FD068091B4034AE361EC38 |
:1010F00074E08B560E947B038091B4038B56A2E070 |
:10110000B0E0082E0E94062E0E9474030E941B1E4F |
:1011100010929101E3E0CE5F0C94E72D982F80911F |
:101120007A04813069F48091C501E82FFF27EA5ED7 |
:10113000FE4F90838F5F8093C50121E030E005C0B2 |
:10114000892F0E945507282F3327C90108951F931F |
:10115000182F04C080E30E948E0811501116D4F39A |
:101160001F9108951F93182F04C080E20E948E08DB |
:1011700011501116D4F31F9108950F931F93CF931D |
:10118000DF938C01EB0108C0F8010F5F1F4FE49162 |
:101190008E2F0E948E0821972097B1F7DF91CF9173 |
:1011A0001F910F9108950F931F93CF93DF938C019D |
:1011B000EB0106C0F80181918F010E948E082197F2 |
:1011C0002097C1F7DF91CF911F910F910895A3E36D |
:1011D000B0E0EDEEF8E00C94BC2D29968FAD299788 |
:1011E00080937A04CE01855B9F4F9D838C832B96E1 |
:1011F0008EAD9FAD2B979FA78EA72224332421016C |
:1012000002C0130124010EA51FA502C00F5F1F4FCE |
:10121000F801F490FF2019F0F5E2FF16B9F7B801D4 |
:101220008EA59FA5681B790B11F00E94BD08FF20B9 |
:1012300009F446C20F5F1F4F1FA70EA71982AC818A |
:10124000BD811BAA1AAA9FEF99ABEEA5FFA5CF01FE |
:1012500001969FA78EA7B49095E7B91621F08B2D24 |
:101260008062883789F4EBA9E0FF07C02D903D909C |
:101270004D905C901397149607C08D919C91119797 |
:101280001C01442455241296F0E2BF1621F48981F2 |
:101290008823D9F685C083E2B81609F483C09AE2A0 |
:1012A000B91621F0EDE2BE1669F408C0FD011296F0 |
:1012B000E081EAABE7FFC9CFE195EAABFBA9F061BA |
:1012C000FF7D72C08BE2B81609F46AC09EE2B916BF |
:1012D000B1F52EA53FA52F5F3F4FEEA5FFA5849149 |
:1012E0008A3221F0B82E20E030E01BC0FD011296BA |
:1012F0004081518157FF02C04FEF5FEF49AB3FA7DD |
:101300002EA7A3CFC90143E0880F991F4A95E1F7A3 |
:10131000220F331F280F391F2B0D311D2053304052 |
:10132000B49031968B2D80538A3060F3FFA7EEA7DF |
:10133000A90137FF02C04FEF5FEF49AB8DCFF0E35C |
:10134000BF1631F48BA984FD80CF80628BAB7DCF3B |
:101350008B2D81538930E8F420E030E0C90113E09F |
:10136000880F991F1A95E1F7220F331F280F391F95 |
:101370002B0D311D20533040EEA5FFA5CF01019666 |
:101380009FA78EA7B4908B2D80538A3038F32AAB59 |
:1013900063CF98E6B91651F4EBA9E460EBAB55CFF7 |
:1013A000B98253CFFBA9F860FBAB4FCF8CE6B816E0 |
:1013B00021F49BA991609BAB48CFBD83AC83E3E64E |
:1013C000BE1639F41296BD83AC8312978C918E832E |
:1013D0001CC1F4E4BF1639F084E6B81639F099E67A |
:1013E000B91659F503C0EBA9E160EBABFBA9F0FF1F |
:1013F00008C01496BD83AC835E904E903E902E90B4 |
:101400000AC01296BD83AC839E918E911C01442428 |
:1014100037FC4094542C57FC03C08AE088AB96C03C |
:101420005094409430942094211C311C411C511C38 |
:101430008DE289839AE098AB89C0EFE4BE1629F06B |
:10144000FFE6BF1639F488E065C09BA991609BABAD |
:10145000E8E05AC0F0E7BF1681F41296BD83AC8372 |
:101460009E918E911C01442455248BA980648BABE2 |
:1014700090E198ABE8E7BE2E68C0E3E7BE16E9F559 |
:101480001296BD83AC83DE90CE90C114D10489F452 |
:1014900088E28E838EE68F8385E788878CE689874E |
:1014A0008A8789E28B871C8676E0C72ED12CCC0EEA |
:1014B000DD1EF9A9F7FD13C04F2F552747FD5095A5 |
:1014C00060E070E0C6010E94C42B009711F419A9D6 |
:1014D0000DC08C1919A981174CF4182F07C0F601FB |
:1014E00001900020E9F731971E2F1C191982420143 |
:1014F000310163E7B62E40E094C085E5B81631F0BF |
:1015000095E7B91649F4EAE0E8AB1FC0FBA9F16022 |
:10151000FBAB8AE088AB19C098E5B91621F0E8E783 |
:10152000BE1609F06EC0FBA9F3FD02C080E1F2CF48 |
:10153000211431044104510419F490E198AB05C021 |
:10154000EBA9E064EBABF0E1F8AB198289A987FD68 |
:1015500003C09BA99F7D9BAB21143104410451041E |
:1015600061F4E9A9EE2349F46624772443015EE29D |
:10157000C52ED12CCC0EDD1E3EC04EE2C42ED12C89 |
:10158000CC0EDD1EF8A9EF2EFF2400271127C20183 |
:10159000B101A80197010E947F2D6A3020F430E349 |
:1015A000A32EA60E08C027E5A22EA60E88E5B81623 |
:1015B00011F49FEDA922F601A2926F01C201B101BF |
:1015C000A80197010E947F2D39014A012E143F0482 |
:1015D0004006510618F019012A01D9CFF8A9F830B0 |
:1015E00051F48BA983FF07C090E3A91621F080E393 |
:1015F000F60182936F01CE018C19182F125D49A953 |
:1016000010C0BB2009F45CC0BE82198242013101C6 |
:1016100000E096E0C92ED12CCC0EDD1E11E021E0B9 |
:1016200005C0212F042F011B07FD00E089818823BD |
:1016300019F0812F8F5F07C09BA996FD02C0812FF3 |
:1016400002C0822F8E5FA82EA00EEBA9EE2EFF24E3 |
:1016500080E3482E512C4E205F204114510421F488 |
:101660008AA98A190E94B2088981882329F061E039 |
:1016700070E0CE01019609C0E6FE09C080E38A83CE |
:10168000BB8262E070E0CE0102960E94D308F0E2D5 |
:101690004F16510421F48AA98A190E94A708802FA5 |
:1016A0000E94A708612F772767FD7095C6010E94E9 |
:1016B000D308E4FEA6CD8AA98A190E94B208A1CD5A |
:1016C000E2E1CD5C0C94D82D82E085BD83EA84BD37 |
:1016D00017BC88E788BD83EC8093B00086E08093D8 |
:1016E000B100E0E7F0E0808182608083EEE6F0E028 |
:1016F0008081816080838AE08093B3001092B20081 |
:1017000008952091A3013091A4012F5F3F4F820FD4 |
:10171000931F08952091A3013091A401821B930B84 |
:10172000892F992786958074992708951F920F9283 |
:101730000FB60F921124EF92FF920F931F932F93E6 |
:101740003F934F935F936F937F938F939F93AF9349 |
:10175000BF93CF93DF93EF93FF938091020181506A |
:10176000809302018F3F09F069C083E88093B00045 |
:1017700080918901C82FDD27D093A901C093A801CA |
:101780008091E704E090E3042091D6013091D701E5 |
:101790004091D8015091D90180FF18C0FF24002743 |
:1017A0001127CA01B90120E830E040E050E00E9472 |
:1017B000A12DC801B7010E94392D20E032E040E0A0 |
:1017C00050E00E94A12DC20FD31F17C0FF24002795 |
:1017D0001127CA01B90120E830E040E050E00E9442 |
:1017E000A12DC801B7010E94392D20E032E040E070 |
:1017F00050E00E94A12DC21BD30BD093A901C0932E |
:10180000A8012091A8013091A9018091E4049927B1 |
:101810002817390734F08091E50499278217930738 |
:1018200024F49093A9018093A8018091A80180934A |
:10183000B3008091E6048093020104C083E08093AA |
:10184000B0005F98FF91EF91DF91CF91BF91AF9181 |
:101850009F918F917F916F915F914F913F912F91C8 |
:101860001F910F91FF90EF900F900FBE0F901F9060 |
:1018700018951F920F920FB60F9211242F933F933A |
:101880004F935F936F937F938F939F93AF93BF9388 |
:10189000EF93FF938091AA0181508093AA018F3F1B |
:1018A00001F58AE08093AA01809103018F5F817026 |
:1018B00080930301882319F481E08093A50180912E |
:1018C000A3019091A40101969093A4018093A30198 |
:1018D0008091CF01882329F08091CF01815080939E |
:1018E000CF018091A6019091A701029758F08091B5 |
:1018F000A6019091A70101979093A7018093A6015B |
:101900005A9A01C05A988091C90483FF02C00E946C |
:10191000C129FF91EF91BF91AF919F918F917F91DD |
:101920006F915F914F913F912F910F900FBE0F904C |
:101930001F9018952091A3013091A4012F5F3F4F74 |
:10194000280F391F8091A3019091A401A901481B80 |
:10195000590B57FFF7CF089510927C008FEC8093BE |
:101960007A0008951F920F920FB60F921124EF92F2 |
:10197000FF920F931F932F933F934F935F936F9318 |
:101980007F938F939F93AF93BF93CF93DF93EF9307 |
:10199000FF9310927A008091C1018F5F8093C10103 |
:1019A0008150E82FFF27E830F10508F0CFC2E45B53 |
:1019B000FF4F0C94F32D2091D4013091D5018091EB |
:1019C000780090917900281B390B8091AF0190919C |
:1019D000B001820F931F9093B0018093AF0180916B |
:1019E000B9018F5F8093B9018091FA019091FB0159 |
:1019F000A091FC01B091FD01442737FD4095542F83 |
:101A0000820F931FA41FB51F8093FA019093FB01CF |
:101A1000A093FC01B093FD018091FE019091FF0124 |
:101A2000A0910002B0910102820F931FA41FB51F65 |
:101A30008093FE019093FF01A0930002B0930102F6 |
:101A400081E08093C2018091BF019091C001019615 |
:101A50009093C0018093BF017DC260917800709126 |
:101A600079008091D2019091D301681B790B80910C |
:101A7000F2019091F301A091F401B091F5019B0165 |
:101A8000442737FD4095542F820F931FA41FB51F85 |
:101A90008093F2019093F301A093F401B093F501C8 |
:101AA0008091F6019091F701A091F801B091F901B0 |
:101AB000820F931FA41FB51F8093F6019093F70127 |
:101AC000A093F801B093F90180917800909179008A |
:101AD0000A9710F464E47DEF80917800909179008A |
:101AE000895E934010F06CEB72E08091AD019091B3 |
:101AF000AE01860F971F9093AE018093AD01809148 |
:101B0000B8018F5F8093B80182E058C0609178007F |
:101B1000709179008091D0019091D101681B790B6F |
:101B20008091EA019091EB01A091EC01B091ED015F |
:101B30009B01442737FD4095542F820F931FA41F0C |
:101B4000B51F8093EA019093EB01A093EC01B09351 |
:101B5000ED018091EE019091EF01A091F001B09123 |
:101B6000F101820F931FA41FB51F8093EE01909384 |
:101B7000EF01A093F001B093F10180917800909172 |
:101B800079000A9710F464E47DEF809178009091D9 |
:101B90007900895E934010F06CEB72E08091AB01AC |
:101BA0009091AC01860F971F9093AC018093AB018D |
:101BB0008091B7018F5F8093B70184E08093C20169 |
:101BC000C9C1409104015091050180917800909124 |
:101BD00079009A01220F331F240F351F63E070E054 |
:101BE0000E94582D260F371F369527953695279535 |
:101BF000309305012093040186E0E0CF8091080531 |
:101C0000909109052091780030917900821B930B07 |
:101C100090937C0480937B048091B1019091B201F8 |
:101C200020917B0430917C04820F931F9093B2012A |
:101C30008093B1018091BB018F5F8093BB0187E0EE |
:101C4000BDCF809178009091790020910605309168 |
:101C50000705821B930B90938704809386048091E1 |
:101C6000B3019091B4012091860430918704820FD2 |
:101C7000931F9093B4018093B3018091BA018F5F59 |
:101C80008093BA0185E08093C20186E0E4C0609150 |
:101C9000780070917900E0900A05F0900B050091B2 |
:101CA0000C0510910D05882777FD8095982F0E94CF |
:101CB000772CA80197010E94D12B0E945A2C709377 |
:101CC000B6016093B5012091B5013091B601E09164 |
:101CD0007B04F0917C04809186049091870497FFA7 |
:101CE00003C0909581959F4F64E070E00E946C2D39 |
:101CF000EB01CF01F7FF03C0909581959F4F64E002 |
:101D000070E00E946C2D260F371F2C0F3D1F309363 |
:101D1000B6012093B5018091B5019091B60102976B |
:101D200004F160910A0570910B0580910C0590916A |
:101D30000D0520E030E048E454E40E94812C882323 |
:101D40000CF03CC060910A0570910B0580910C0568 |
:101D500090910D052AE037ED43EA5CE30E94D22B17 |
:101D600025C08091B5019091B6018F5F9F4F34F5EA |
:101D700060910A0570910B0580910C0590910D05FD |
:101D800020E030E046E154E40E94842C1816B4F4BC |
:101D900060910A0570910B0580910C0590910D05DD |
:101DA0002AE037ED43EA5CE30E94D12B60930A05F9 |
:101DB00070930B0580930C0590930D0581E0809343 |
:101DC000BC01809178009091790090937E0480937B |
:101DD0007D0420910202309103024091040250914F |
:101DE00005028091B5019091B601AA2797FDA095B3 |
:101DF000BA2F280F391F4A1F5B1F2093020230930E |
:101E000003024093040250930502E0900202F09016 |
:101E10000302009104021091050260910202709188 |
:101E20000302809104029091050220E034E040E03A |
:101E300050E00E94A12DE21AF30A040B150BE09268 |
:101E40000202F0920302009304021093050283E061 |
:101E50008093C20187E08093C1017CC080918B0494 |
:101E600090918C042091780030917900820F931F1B |
:101E700090938C0480938B04809183048F5F809374 |
:101E8000830480918304853008F460C080917800D9 |
:101E90009091790090930B0180930A011092830432 |
:101EA00080917F049091800420918B0430918C0468 |
:101EB000821B930B20911F0230912002821B930BF7 |
:101EC0009093BE018093BD0160918B0470918C044E |
:101ED000E0900601F09007010091080110910901BE |
:101EE000882777FD8095982FA8019701220F331F2F |
:101EF000441F551F2E0D3F1D401F511F620F731FA2 |
:101F0000841F951F24E030E040E050E00E94A12DA6 |
:101F10002093060130930701409308015093090173 |
:101F200020917F04309180048091060190910701F7 |
:101F3000A0910801B0910901281B390B30932002B0 |
:101F400020931F0210928C0410928B041092C201F5 |
:101F50001092C1018091C20180937C008FEC80932C |
:101F60007A00FF91EF91DF91CF91BF91AF919F9157 |
:101F70008F917F916F915F914F913F912F911F9121 |
:101F80000F91FF90EF900F900FBE0F901F9018953C |
:101F9000CF93DF93A3E0B0E00E94F92D802DC82FEE |
:101FA000DD27C531D10508F02A97C7BD84E690E04A |
:101FB0000E949A0C80910A0190910B0182559340E6 |
:101FC000D0F4C0E0D0E017C0C7BD82E390E00E942B |
:101FD0009A0C8BEB91E09F938F931F920E94E708DE |
:101FE00080910A0190910B010F900F900F908458EF |
:101FF000934020F02196CA3FD10530F3A3E0B0E032 |
:102000000C2E0E94062EC093880488EC90E00E945B |
:102010009A0CDF91CF910895E6E1F1E080E281939F |
:1020200091E0E636F907D9F70895FF920F931F93D1 |
:102030008091C601282F3327C90181709070682FC5 |
:10204000882391F08091C701882311F0815002C04C |
:10205000809166018093C701E6E1F1E080E281931F |
:1020600091E0E636F907D9F7A9014270507021FFD7 |
:102070000DC08091C7018F5F8093C701E6E1F1E059 |
:1020800080E2819391E0E636F907D9F7662321F0E3 |
:10209000452B11F01092C70181E18093C501809119 |
:1020A000C70199279F938F9385E994E09F938F931E |
:1020B00081E08F930E94E7088091C7010F900F90F5 |
:1020C0000F900F900F90E82FFF27ED30F10508F0EB |
:1020D000BCC3EC5AFF4F0C94F32D1092C50183E85A |
:1020E00094E09F938F9311E01F930E94E70884E18F |
:1020F0008093C5018CE390E09F938F931F921F9272 |
:102100008CE794E09F938F931F930E94E70888E2E7 |
:102110008093C5010E94740399279F938F938FE644 |
:1021200094E09F938F931F930E94E7088CE3809322 |
:10213000C5018FE594E09F938F931F930E94E7085A |
:1021400080C38091C90480FF44C01092C501809172 |
:102150001F02909120029F938F9380E594E09F93BC |
:102160008F9311E01F930E94E70884E18093C501DB |
:1021700080912102909122029F938F9381E494E0B9 |
:102180009F938F931F930E94E70888E28093C50175 |
:1021900080910A0190910B019F938F9382E394E0C9 |
:1021A0009F938F931F930E94E7088CE38093C50150 |
:1021B0008091880499279F938F9383E294E09F9363 |
:1021C0008F931F930E94E7088DB79EB744968DBFEB |
:1021D00041C384E18093C5018CE194E09F938F9388 |
:1021E00011E01F930E94E70888E28093C5018EE00A |
:1021F00094E09F938F931F930E94E7088DB79EB73B |
:102200000696E5CF1092C50184E094E09F938F93EA |
:1022100011E01F930E94E70884E18093C50160915B |
:10222000D6017091D7018091D8019091D90120E019 |
:1022300034E040E050E00E94A12D5F934F933F9324 |
:102240002F9385EF93E09F938F931F930E94E7084E |
:1022500088E28093C5016091DE017091DF01809179 |
:10226000E0019091E10120E034E040E050E00E9484 |
:10227000A12D5F934F933F932F9386EE93E09F930F |
:102280008F931F930E94E7088CE38093C501809190 |
:102290000602909107029F938F9387ED93E09F939F |
:1022A0008F931F930E94E7088DB79EB746968FCFF6 |
:1022B0001092C5018091990490919A0420919704FD |
:1022C000309198049F938F933F932F9387EC93E0E3 |
:1022D0009F938F9311E01F930E94E70884E18093FE |
:1022E000C50180919D0490919E0420919B043091A2 |
:1022F0009C049F938F933F932F9387EB93E09F933F |
:102300008F931F930E94E70888E28093C501809114 |
:10231000A1049091A20420919F043091A0049F9366 |
:102320008F933F932F9387EA93E09F938F931F930D |
:102330000E94E7088CE38093C5018091A3049091EB |
:10234000A4049F938F9387E993E070C01092C50116 |
:10235000E091C204FF27EE0FFF1FEB56FB4F2081D9 |
:102360003181E091C104FF27EE0FFF1FEB56FB4FB9 |
:10237000808191813F932F939F938F9387E893E080 |
:102380009F938F9311E01F930E94E70884E180934D |
:10239000C501E091C404FF27EE0FFF1FEB56FB4F72 |
:1023A00020813181E091C304FF27EE0FFF1FEB5620 |
:1023B000FB4F808191813F932F939F938F9387E76A |
:1023C00093E09F938F931F930E94E70888E2809386 |
:1023D000C501E091C604FF27EE0FFF1FEB56FB4F30 |
:1023E00020813181E091C504FF27EE0FFF1FEB56DE |
:1023F000FB4F808191813F932F939F938F9387E62B |
:1024000093E09F938F931F930E94E7088CE3809340 |
:10241000C501E091C704FF27EE0FFF1FEB56FB4FEE |
:10242000808191819F938F9387E593E09F938F9312 |
:102430001F930E94E7088DB79EB74A96C8CE1092A8 |
:10244000C50189E493E09F938F9311E01F930E944D |
:10245000E70884E18093C5012091D0013091D1013A |
:102460008091AB019091AC016091B7013F932F93A4 |
:1024700077270E946C2D7F936F938AE393E09F935D |
:102480008F931F930E94E70888E28093C5012091F3 |
:10249000D2013091D3018091AD019091AE01609154 |
:1024A000B8013F932F9377270E946C2D7F936F93F2 |
:1024B0008BE293E09F938F931F930E94E7088CE336 |
:1024C0008093C5012091D4013091D5018091AF0155 |
:1024D0009091B0016091B9013F932F9377270E94AB |
:1024E0006C2D7F936F938CE193E09F938F931F9359 |
:1024F0005BC01092C5018FE093E09F938F9381E0C2 |
:10250000F82EFF920E94E70884E18093C501209194 |
:102510000605309107058091B3019091B401609157 |
:10252000BA013F932F9377270E946C2D7F936F936F |
:1025300080E093E09F938F93FF920E94E70888E2E8 |
:102540008093C50120910805309109058091B10162 |
:102550009091B2016091BB013F932F9377270E9426 |
:102560006C2D7F936F9381EF92E09F938F93FF92F7 |
:102570000E94E7088CE38093C50160910A05709181 |
:102580000B0580910C0590910D0500917D04109133 |
:102590007E040E945A2C7F936F931F930F9382EEB9 |
:1025A00092E09F938F93FF920E94E7088DB79EB7AA |
:1025B00048960DCE84E18093C501809104019091ED |
:1025C00005019F938F9383ED92E09F938F9311E08A |
:1025D0001F930E94E70888E28093C501809117024B |
:1025E00099279F938F9384EC92E09F938F931F93EF |
:1025F0000E94E7088DB79EB70A96E9CD1092C501F3 |
:1026000085EB92E09F938F9311E01F930E94E70860 |
:1026100084E18093C50180910A0290910B029F93FF |
:102620008F9386EA92E09F938F931F930E94E7080F |
:1026300088E28093C50180910602909107029F93E2 |
:102640008F9387E992E09F938F931F930E94E708EF |
:102650008CE38093C50180910802909109029F93B9 |
:102660008F9388E892E0E8C01092C50180910F0234 |
:10267000909110029F938F938CE792E09F938F939A |
:1026800011E01F930E94E70884E18093C5018091C7 |
:102690001102909112029F938F9380E792E09F9393 |
:1026A0008F931F930E94E70888E28093C501809171 |
:1026B0001302909114029F938F9384E692E09F936C |
:1026C0008F931F930E94E7088CE38093C50180914C |
:1026D0001502909116029F938F9388E592E06FCD3B |
:1026E0001092C50180E592E09F938F9311E01F93B4 |
:1026F0000E94E70884E18093C501809189019927B0 |
:102700009F938F9382E492E09F938F931F930E94F5 |
:10271000E70888E28093C5018091A8019091A90102 |
:102720009F938F9384E392E09F938F931F930E94D4 |
:10273000E7088CE38093C5018091E50499279F9376 |
:102740008F938091E40499279F938F9386E292E080 |
:102750009F938F931F930E94E70836CD1092C50177 |
:102760008EE192E09F938F9311E01F930E94E70800 |
:1027700084E18093C50180911905992787FD909583 |
:102780009F938F938FE092E09F938F931F930E946C |
:10279000E70888E28093C50180911A05992787FD93 |
:1027A00090959F938F9380E092E09F938F931F93D8 |
:1027B0000E94E7088CE38093C50180911B0599274F |
:1027C00087FD90959F938F9381EF91E035C0109294 |
:1027D000C50187EE91E09F938F9311E01F930E94B4 |
:1027E000E70884E18093C50180911C0590911D0547 |
:1027F0009F938F9389ED91E09F938F931F930E94F6 |
:10280000E70888E28093C50180911E0590911F051D |
:102810009F938F938BEC91E09F938F931F930E94D4 |
:10282000E7088CE38093C5018091200590912105F4 |
:102830009F938F938DEB91E09F938F931F930E94B3 |
:10284000E7088DB79EB74296C2CC8150809366014F |
:102850001092C7011092C6011F910F91FF90089529 |
:102860001092B9008AE28093B800089585EA8093B7 |
:10287000BC00089584E98093BC0008958093BB0058 |
:1028800085E88093BC00089585EC8093BC00089592 |
:1028900085E88093BC0008951F920F920FB60F92A7 |
:1028A00011248F939F93EF93FF938091C8018F5FC3 |
:1028B0008093C80181508330E9F1843028F481305D |
:1028C00081F0823078F508C08530D9F18530B8F1D3 |
:1028D000863009F04FC03EC08091C901880F8E5AE2 |
:1028E00012C08091C9018F5F8093C90181508130EE |
:1028F00081F0813030F0823079F0833009F041C0CE |
:102900000EC0809160028093BB0085E88093BC007C |
:1029100038C080916102F7CF80916402F4CF80913A |
:102920006502F1CF8091C901843010F41092C80182 |
:1029300085EAECCF8091CA01880F8D5AE4CF85ECEF |
:10294000E5CFE091CA01FF278091BB00E357FB4F21 |
:102950008083DBCF8091CA01E82FFF279091BB00D5 |
:10296000EF56FB4F90838F5F8093CA01843010F045 |
:102970001092CA0184E98093BC001092C8011092A1 |
:10298000C901FF91EF919F918F910F900FBE0F9012 |
:102990001F90189583EC80938100EFE6F0E0808132 |
:1029A000806280831092D5011092D4011092D301DD |
:1029B0001092D2011092D1011092D00108951F926D |
:1029C0000F920FB60F9211240F931F932F933F93E3 |
:1029D0004F935F936F937F938F939F93AF93BF9327 |
:1029E000CF93DF93EF93FF93209186003091870080 |
:1029F0008091CD019091CE01281B390B80918600EA |
:102A0000909187009093CE018093CD01C9018D5D97 |
:102A100095408356994148F481E090E09093CC0131 |
:102A20008093CB011092670154C0C091CB01D0912B |
:102A3000CC01CA30D1050CF04CC0C9018B5F90406D |
:102A4000845B914008F040C0A901425D5140FE0105 |
:102A5000EE0FFF1FEB56FB4F80819181FA01E81BBF |
:102A6000F90BCF01F7FF03C0909581959F4F069713 |
:102A70004CF480911702883C28F480911702865FFD |
:102A800080931702FE01EE0FFF1F8F010B561B4FA5 |
:102A9000D8012D913C91C901880F991F820F931F76 |
:102AA000840F951F64E070E00E946C2DD8018D9119 |
:102AB0009C9111979B01281B390BE555FB4F3183E6 |
:102AC000208311967C936E932196D093CC01C09372 |
:102AD000CB01FF91EF91DF91CF91BF91AF919F918A |
:102AE0008F917F916F915F914F913F912F911F91A6 |
:102AF0000F910F900FBE0F901F901895AF92BF923D |
:102B0000CF92DF92EF92FF920F931F9310927A0071 |
:102B10008091B701882369F08091AB019091AC015D |
:102B20006091B70177270E946C2D7093FE0460932B |
:102B3000FD048091B801882369F08091AD019091E6 |
:102B4000AE016091B80177270E946C2D7093FC0450 |
:102B50006093FB048091B901882369F08091AF01F3 |
:102B60009091B0016091B90177270E946C2D70930C |
:102B70001205609311058091BA018823D9F1609103 |
:102B8000B3017091B4012091BA01E0900E05F0906C |
:102B90000F050027F7FC0095102F5701680183E00F |
:102BA000AA0CBB1CCC1CDD1C8A95D1F7AE18BF0843 |
:102BB000C00AD10A882777FD8095982FB4E0660F68 |
:102BC000771F881F991FBA95D1F7332744275527B8 |
:102BD0000E94A12DA20EB31EC41ED51EC601B501B2 |
:102BE00028E030E040E050E00E94A12D30930F0536 |
:102BF00020930E058091BB018823D9F16091B1012A |
:102C00007091B2012091BB01E0901705F09018057A |
:102C10000027F7FC0095102F57016801A3E0AA0CCC |
:102C2000BB1CCC1CDD1CAA95D1F7AE18BF08C00A8E |
:102C3000D10A882777FD8095982FF4E0660F771FDB |
:102C4000881F991FFA95D1F73327442755270E94EB |
:102C5000A12DA20EB31EC41ED51EC601B50128E0CB |
:102C600030E040E050E00E94A12D30931805209301 |
:102C700017058091BC018823A1F16091B501709185 |
:102C8000B6012091BC01E0900005F09001050027FD |
:102C9000F7FC0095102F57016801E3E0AA0CBB1C5C |
:102CA000CC1CDD1CEA95D1F7AE18BF08C00AD10ACA |
:102CB000882777FD8095982F3327442755270E9432 |
:102CC000A12DA20EB31EC41ED51EC601B50128E05B |
:102CD00030E040E050E00E94A12D309301052093A8 |
:102CE00000051092AC011092AB011092B701109246 |
:102CF000AE011092AD011092B8011092B001109285 |
:102D0000AF011092B9011092B2011092B10110926C |
:102D1000BB011092B4011092B3011092BA0110924B |
:102D2000B6011092B5011092BC018091FA01909108 |
:102D3000FB01A091FC01B091FD018093E60190930D |
:102D4000E701A093E801B093E9018091EA01909135 |
:102D5000EB01A091EC01B091ED018093D60190932D |
:102D6000D701A093D801B093D9018091F20190913D |
:102D7000F301A091F401B091F5018093DE019093ED |
:102D8000DF01A093E001B093E1018091EE01909109 |
:102D9000EF01A091F001B091F1018093DA019093DD |
:102DA000DB01A093DC01B093DD018091F6019091ED |
:102DB000F701A091F801B091F9018093E20190939D |
:102DC000E301A093E401B093E5018FEC80937A00D6 |
:102DD00020910F02309110028091C504E82FFF2747 |
:102DE000EE0FFF1FEB56FB4F8081918182599F4F61 |
:102DF000281739071CF42F5F3F4F0CC08081918149 |
:102E000082599F4F821793074CF42115310531F0F9 |
:102E1000215030403093100220930F022091110274 |
:102E2000309112028091C604E82FFF27EE0FFF1F9A |
:102E3000EB56FB4F8081918182599F4F28173907AC |
:102E40001CF42F5F3F4F0CC08081918182599F4FAE |
:102E5000821793074CF42115310531F02150304091 |
:102E60003093120220931102209113023091140228 |
:102E70008091C704E82FFF27EE0FFF1FEB56FB4F93 |
:102E80008081918182599F4F281739071CF42F5F49 |
:102E90003F4F0CC08081918182599F4F82179307C9 |
:102EA0004CF42115310531F021503040309314029B |
:102EB0002093130220911502309116028091C804CC |
:102EC000E82FFF27EE0FFF1FEB56FB4F808191810C |
:102ED00082599F4F281739071CF42F5F3F4F0CC0B2 |
:102EE0008081918182599F4F821793074CF421155D |
:102EF000310531F0215030403093160220931502F5 |
:102F000080910F029091100297FF05C0109210025D |
:102F100010920F020AC08F3F910539F034F08FEF05 |
:102F200090E09093100280930F0280911102909193 |
:102F3000120297FF05C010921202109211020AC0ED |
:102F40008F3F910539F034F08FEF90E090931202AB |
:102F500080931102809113029091140297FF05C093 |
:102F600010921402109213020AC08F3F910539F09B |
:102F700034F08FEF90E090931402809313028091CD |
:102F800015029091160297FF05C01092160210923A |
:102F900015020AC08F3F910539F034F08FEF90E0B1 |
:102FA00090931602809315021F910F91FF90EF905E |
:102FB000DF90CF90BF90AF90089510927A008091EB |
:102FC000B701882369F08091AB019091AC016091C9 |
:102FD000B70177270E946C2D7093FE046093FD0467 |
:102FE0008091B801882369F08091AD019091AE0184 |
:102FF0006091B80177270E946C2D7093FC04609358 |
:10300000FB048091B901882369F08091AF01909110 |
:10301000B0016091B90177270E946C2D7093120561 |
:10302000609311058091BA018823D1F06091B301BA |
:103030007091B4012091BA01882777FD8095982F6F |
:10304000F4E0660F771F881F991FFA95D1F7332791 |
:10305000442755270E94A12D30930F0520930E057C |
:103060008091BB018823D1F06091B1017091B201D0 |
:103070002091BB01882777FD8095982FE4E0660FAB |
:10308000771F881F991FEA95D1F7332744275527C3 |
:103090000E94A12D30931805209317058091BC0143 |
:1030A000882369F08091B5019091B6016091BC01CF |
:1030B00077270E946C2D7093010560930005109294 |
:1030C000AC011092AB011092B7011092AE011092B8 |
:1030D000AD011092B8011092B0011092AF011092A0 |
:1030E000B9011092B2011092B1011092BB0110927D |
:1030F000B4011092B3011092BA011092B60110926D |
:10310000B5011092BC018FEC80937A0020910F02E0 |
:10311000309110028091C504E82FFF27EE0FFF1FAA |
:10312000EB56FB4F8081918182599F4F28173907B9 |
:103130001CF42F5F3F4F0CC08081918182599F4FBB |
:10314000821793074CF42115310531F0215030409E |
:103150003093100220930F0220911102309112023D |
:103160008091C604E82FFF27EE0FFF1FEB56FB4FA1 |
:103170008081918182599F4F281739071CF42F5F56 |
:103180003F4F0CC08081918182599F4F82179307D6 |
:103190004CF42115310531F02150304030931202AA |
:1031A0002093110220911302309114028091C704E0 |
:1031B000E82FFF27EE0FFF1FEB56FB4F8081918119 |
:1031C00082599F4F281739071CF42F5F3F4F0CC0BF |
:1031D0008081918182599F4F821793074CF421156A |
:1031E000310531F021503040309314022093130206 |
:1031F00020911502309116028091C804E82FFF2714 |
:10320000EE0FFF1FEB56FB4F8081918182599F4F3C |
:10321000281739071CF42F5F3F4F0CC08081918124 |
:1032200082599F4F821793074CF42115310531F0D5 |
:1032300021503040309316022093150280910F02E6 |
:103240009091100297FF05C01092100210920F0289 |
:103250000AC08F3F910539F034F08FEF90E09093E2 |
:10326000100280930F02809111029091120297FF39 |
:1032700005C010921202109211020AC08F3F9105F0 |
:1032800039F034F08FEF90E09093120280931102A6 |
:10329000809113029091140297FF05C010921402BE |
:1032A000109213020AC08F3F910539F034F08FEF6E |
:1032B00090E09093140280931302809115029091F4 |
:1032C000160297FF05C0109216021092150208957B |
:1032D0008F3F910539F034F08FEF90E09093160214 |
:1032E0008093150208951F938091CC048B3F98F032 |
:1032F0008B3F19F480910F020EC08C3F19F480911E |
:10330000110209C08D3F19F48091130204C08E3F51 |
:1033100021F480911502809381018091810188239D |
:1033200019F41092810104C08F3F11F48093810140 |
:103330008091CB048B3F98F08B3F19F480910F0262 |
:103340000EC08C3F19F48091110209C08D3F19F411 |
:103350008091130204C08E3F21F480911502809366 |
:10336000800180918001882319F41092800105C0AA |
:10337000843618F084E6809380018091CD048B3FE1 |
:1033800098F08B3F19F480910F020EC08C3F19F416 |
:103390008091110209C08D3F19F48091130204C07D |
:1033A0008E3F21F4809115028093820180918201E9 |
:1033B000882319F41092820105C0843618F084E63F |
:1033C000809382018091CF048B3F98F08B3F19F45A |
:1033D00080910F020EC08C3F19F48091110209C038 |
:1033E0008D3F19F48091130204C08E3F21F4809127 |
:1033F00015028093830180918301882319F4109230 |
:10340000830104C08F3F11F4809383018091D6041F |
:103410008B3F98F08B3F19F480910F020EC08C3FC8 |
:1034200019F48091110209C08D3F19F480911302A3 |
:1034300004C08E3F21F48091150280938401809115 |
:103440008401882319F41092840104C08F3F11F481 |
:10345000809384018091D7048B3F98F08B3F19F4BF |
:1034600080910F020EC08C3F19F48091110209C0A7 |
:103470008D3F19F48091130204C08E3F21F4809196 |
:10348000150280938501809185018B3010F48AE0CC |
:1034900002C08F3F11F4809385018091D8048B3F47 |
:1034A00098F08B3F19F480910F020EC08C3F19F4F5 |
:1034B0008091110209C08D3F19F48091130204C05C |
:1034C0008E3F21F4809115028093860180918601C0 |
:1034D000882319F41092860104C08F3F11F4809361 |
:1034E00086018091DD048B3F98F08B3F19F4809129 |
:1034F0000F020EC08C3F19F48091110209C08D3F5C |
:1035000019F48091130204C08E3F21F480911502BA |
:103510008093880180918801882319F41092880192 |
:1035200004C08F3F11F4809388018091DE048B3FAB |
:1035300098F08B3F19F480910F020EC08C3F19F464 |
:103540008091110209C08D3F19F48091130204C0CB |
:103550008E3F21F4809115028093230280912302F3 |
:10356000882319F41092230204C08F3F11F4809332 |
:1035700023028091DF048B3F98F08B3F19F48091F8 |
:103580000F020EC08C3F19F48091110209C08D3FCB |
:1035900019F48091130204C08E3F21F4809115022A |
:1035A0008093240280912402882319F4109224022B |
:1035B00004C08F3F11F4809324028091E0048B3F7C |
:1035C00098F08B3F19F480910F020EC08C3F19F4D4 |
:1035D0008091110209C08D3F19F48091130204C03B |
:1035E0008E3F21F48091150280932502809125025F |
:1035F000882319F41092250204C08F3F11F48093A0 |
:1036000025028091E1048B3F98F08B3F19F4809163 |
:103610000F020EC08C3F19F48091110209C08D3F3A |
:1036200019F48091130204C08E3F21F48091150299 |
:103630008093260280912602882319F41092260294 |
:1036400004C08F3F11F4809326029091E2049B3FC7 |
:10365000B0F09B3F19F480910F0204C09C3F29F405 |
:1036600080911102809389010CC09D3F19F48091D3 |
:103670001302F8CF9E3F29F480911502F3CF909367 |
:10368000890180918901882319F41092890104C06D |
:103690008F3F11F4809389019B3FB0F09B3F19F459 |
:1036A00080910F0204C09C3F29F480911102809305 |
:1036B00089010CC09D3F19F480911302F8CF9E3F01 |
:1036C00029F480911502F3CF9093890180918901AB |
:1036D000882319F41092890104C08F3F11F480935C |
:1036E00089019B3FB0F09B3F19F480910F0204C009 |
:1036F0009C3F29F480911102809389010CC09D3F69 |
:1037000019F480911302F8CF9E3F29F4809115029D |
:10371000F3CF9093890180918901882319F4109245 |
:10372000890104C08F3F11F48093890110918801B1 |
:10373000612F772767FD7095872F972F0E94772C31 |
:1037400017FF06C020E030E040E853E40E94D22B8F |
:1037500027E137EB41ED58E30E94F12C60937C01A7 |
:1037600070937D0180937E0190937F018091D404BA |
:10377000809310058091D3048093FF041F910895D6 |
:1037800081E08093C10442E04093C20483E08093CF |
:10379000C30494E09093C40435E03093C50486E0FC |
:1037A0008093C60487E08093C7041092C9048EE119 |
:1037B0008093CA048BEF8093CC048AE08093CD047D |
:1037C00022E32093CB042093CF044093CE04909324 |
:1037D000D0041092D10490E19093D2048FE08093B2 |
:1037E000D3048AEF8093D4048AE18093D504909324 |
:1037F000D6048FEA8093D7048093D8048AE5809317 |
:10380000D90483E28093DA0484E18093DB0410928C |
:10381000DC043093DD0482EB8093DE041092DF043D |
:103820001092E0041092E10484E68093E20488E2BE |
:103830008093E3041092E7042093E40486E98093E4 |
:10384000E5043093E604AFEEB4E0E8E6F1E08CE0A6 |
:1038500001900D928150E1F7089581E08093C104B9 |
:1038600052E05093C20483E08093C30444E0409349 |
:10387000C40435E03093C50486E08093C60487E035 |
:103880008093C70428E02093C8041092C9049EE1E5 |
:103890009093CA048BEF8093CC048AE08093CD048C |
:1038A00086E48093CB049093CF045093CE0440934E |
:1038B000D0042093D10490E19093D2048FE08093C0 |
:1038C000D3048AEF8093D4048AE18093D504909343 |
:1038D000D60488E78093D70496E99093D8048AE5C4 |
:1038E0008093D90483E28093DA0484E18093DB043B |
:1038F0001092DC043093DD0482EB8093DE0410929E |
:10390000DF041092E0041092E10484E68093E20464 |
:1039100088E28093E3041092E70482E38093E40456 |
:103920009093E5043093E604AFEEB4E0E0E7F1E015 |
:103930008CE001900D928150E1F7089580911E0274 |
:10394000882301F5109261021092600210926402C5 |
:103950001092650280919601882311F08093600295 |
:1039600080919701882311F08093610280919801E2 |
:10397000882311F08093650280919901882311F0CA |
:1039800080936402809160029927909373048093DE |
:103990007204809161029927909375048093740456 |
:1039A00080916502992790937704809376048091A3 |
:1039B0006402992790937904809378041092C80147 |
:1039C0001092C9010E9436140895CF93DF9310928C |
:1039D000070510920605109209051092080580E06F |
:1039E00090E0A0E0B0E080930A0590930B05A093CF |
:1039F0000C05B0930D051092D1011092D0011092D8 |
:103A0000D3011092D2011092D5011092D4010E94DC |
:103A1000DD1785E090E00E94810BEC01CE010E9451 |
:103A20008A0B8823D9F30E94DD178091C90480FF97 |
:103A300010C080910A0190910B01875B934038F48C |
:103A400080910A0190910B018E5E924010F40E94C9 |
:103A5000C80F8091FD049091FE0497FF03C09095DC |
:103A600081959F4F9093D1018093D0018091FB0469 |
:103A70009091FC0497FF03C0909581959F4F909380 |
:103A8000D3018093D201809111059091120597FF87 |
:103A900003C0909581959F4F9093D5018093D40159 |
:103AA00088E0E6E0F5E0ACE2B1E0182E0E94012EDD |
:103AB0001092EA011092EB011092EC011092ED01CC |
:103AC0001092EE011092EF011092F0011092F101AC |
:103AD0001092F2011092F3011092F4011092F5018C |
:103AE0001092F6011092F7011092F8011092F9016C |
:103AF0001092FA011092FB011092FC011092FD014C |
:103B00001092FE041092FD041092FC041092FB042B |
:103B100010921205109211058091060190910701F3 |
:103B2000A0910801B09109019093800480937F04D3 |
:103B30001092BE011092BD01109202021092030277 |
:103B400010920402109205028091060290910702E1 |
:103B500090930902809308020E944E2882E390E02D |
:103B60009093A7018093A601DF91CF910895CF9301 |
:103B7000DF93109207051092060510920905109226 |
:103B8000080580E090E0A0E0B0E080930A05909303 |
:103B90000B05A0930C05B0930D050E94DD1785E081 |
:103BA00090E00E94810BEC01CE010E948A0B8823D9 |
:103BB000D9F30E94DD1780910E0590910F0597FFB4 |
:103BC00003C0909581959F4F60E170E00E946C2D3D |
:103BD000C6E0D5E070930705609306058091170550 |
:103BE0009091180597FF03C0909581959F4F60E1D4 |
:103BF00070E00E946C2D7093090560930805609138 |
:103C00007D0470917E04882777FD8095982F0E940F |
:103C1000772C60930A0570930B0580930C059093A5 |
:103C20000D0588E0ACE2B1E0FE01182E0E94122ED4 |
:103C3000DF91CF9108951F93182F0EC080911E021F |
:103C4000882361F484E690E09093A7018093A60115 |
:103C50008AEF90E00E949A0C115080F71F9108950E |
:103C6000A6E0B0E0E6E3FEE10C94BC2D0E947E15D8 |
:103C7000299AE091C304FF27EE0FFF1FEB56FB4F7D |
:103C80004080518048E750E0440E551E57FE02C068 |
:103C90004424552480911702843608F048C080914E |
:103CA0000101882331F484EF91E09093A701809380 |
:103CB000A60180912F0290913002009731F0019778 |
:103CC0009093300280932F0204C010921E02109233 |
:103CD0000D02289A80912A0290912B02815D9740D3 |
:103CE00018F18091DA04482E552481E080930D026A |
:103CF000E091C104FF27EE0FFF1FEB56FB4F11822F |
:103D00001082E091C204FF27EE0FFF1FEB56FB4F1E |
:103D100011821082E091C404FF27EE0FFF1FEB56C3 |
:103D2000FB4F11821082CBC110921E02C8C180913C |
:103D300017028D3808F4C3C110920D028091DB0484 |
:103D400022E3829FC00111249093300280932F02BE |
:103D500069E2461651046CF080912A0290912B0280 |
:103D60007FEF8F3F970781F1019690932B0280930D |
:103D70002A0280912A0290912B02883C910520F022 |
:103D800088E24816510404F510924502109246024A |
:103D90001092470210924802109241021092420281 |
:103DA00010924302109244021092FA011092FB0109 |
:103DB0001092FC011092FD011092FE011092FF0181 |
:103DC000109200021092010299EC491651040CF471 |
:103DD000D6C080911E02882309F071C1E091C4040D |
:103DE000FF27EE0FFF1FEB56FB4F808191818C3434 |
:103DF00091050CF4C1C080912E028F5F80932E023A |
:103E0000893C08F45CC129980E94E51C10921E02AE |
:103E100010922E0210922B0210922A028091C1045D |
:103E2000282F3327F901EE0FFF1FEB56FB4F808140 |
:103E30009181873491059CF4E091C204FF27EE0F35 |
:103E4000FF1FEB56FB4F0190F081E02DF7FF03C001 |
:103E5000F095E195FF4FE734F1050CF46CC08091CB |
:103E6000C204682F7727DB01AA0FBB1FAB56BB4FDD |
:103E70008D919C911197873491053CF0F901EE0FDB |
:103E8000FF1FEB56FB4F808191818D919C91873470 |
:103E9000910564F0F901EE0FFF1FEB56FB4F808197 |
:103EA00091818734910514F042E001C041E0FB01AB |
:103EB000EE0FFF1FEB56FB4F8081918186349105F9 |
:103EC0005CF4F901EE0FFF1FEB56FB4F80819181EF |
:103ED000873491050CF043E0FB01EE0FFF1FEB561A |
:103EE000FB4F808191818A5B9F4F5CF4F901EE0F5B |
:103EF000FF1FEB56FB4F80819181873491050CF0B9 |
:103F000044E0660F771F6B567B4FFB0180819181E8 |
:103F10008A5B9F4F5CF4220F331F2B563B4FD90116 |
:103F20008D919C91863491050CF445E0A2E0B0E0BF |
:103F3000042E0E94062E0E9474034AE361EC74E092 |
:103F40000E9495030E9474030E941B1E8091C90465 |
:103F500080FFB5C080910A0190910B01875B93406F |
:103F600040F480910A0190910B018E5E924008F01E |
:103F7000A6C00E94C80FA3C010922E02A0C0F3E2F8 |
:103F80004F1651040CF09BC08091C404482F552754 |
:103F9000FA01EE0FFF1FEB56FB4F80819181855B8D |
:103FA0009F4F0CF06DC080912D028F5F80932D028A |
:103FB000893C08F467C088EC80932D0281E090E092 |
:103FC00090932B0280932A0281E080931E0210922C |
:103FD0003D0210923E0210923F0210924002109257 |
:103FE000FA011092FB011092FC011092FD01109257 |
:103FF000FE011092FF011092000210920102109235 |
:10400000EA011092EB011092EC011092ED01109276 |
:10401000F2011092F3011092F4011092F5018091D7 |
:10402000D6019091D701A091D801B091D901809388 |
:10403000EE019093EF01A093F001B093F101809114 |
:10404000DE019091DF01A091E001B091E101809348 |
:10405000F6019093F701A093F801B093F901109243 |
:1040600045021092460210924702109248021092A6 |
:10407000410210924202109243021092440202C086 |
:1040800010922D02440F551F4B565B4FDA018D9154 |
:104090009C918C3491058CF080912C028F5F8093E1 |
:1040A0002C02893C60F010921E0288EC80932C0256 |
:1040B00010922B0210922A0202C010922C028091C0 |
:1040C0006701815080936701809167018F3F29F0DC |
:1040D00080910D02882309F412C10E947319E091A6 |
:1040E000C104FF27EE0FFF1FDF01AB56BB4F8D91C1 |
:1040F0009C916091D0047727E555FB4F2081318159 |
:104100004091D1045527FC01E69FC001E79F900D27 |
:10411000F69F900D1124D901A49F9001A59F300D09 |
:10412000B49F300D1124820F931F90931902809336 |
:104130001802E091C204FF27EE0FFF1FDF01AB560C |
:10414000BB4F8D919C91E555FB4F20813181FC0146 |
:10415000E69FC001E79F900DF69F900D1124B901D5 |
:10416000649F9001659F300D749F300D1124820F64 |
:10417000931F90931B0280931A02E091C404FF27BF |
:10418000EE0FFF1FEB56FB4F80819181909581953B |
:104190009F4F90931D0280931C0210918501612F07 |
:1041A000772767FD7095872F972F0E94772C17FF31 |
:1041B00006C020E030E040E853E40E94D22B20E02B |
:1041C00030E040E251E40E94D22B20E030E040E8B1 |
:1041D0005BE30E94F12C5B016C016093130570930B |
:1041E0001405809315059093160510918601612F93 |
:1041F000772767FD7095872F972F0E94772C17FFE1 |
:1042000006C020E030E040E853E40E94D22B20E0DA |
:1042100030EE4BE257E40E94142C60930205709339 |
:10422000030580930405909305058091C90482FFDE |
:104230000CC080E090E0A0E0B0E080930205909395 |
:104240000305A0930405B093050520E030E040E0AD |
:1042500050E0C601B5010E94812C882364F480E0FF |
:1042600090E0A0E0B0E08093130590931405A09334 |
:104270001505B093160520E030E040E050E0609175 |
:1042800002057091030580910405909105050E9437 |
:10429000812C882364F480E090E0A0E0B0E080937B |
:1042A000020590930305A0930405B0930505809142 |
:1042B0000D02882321F110921D0210921C0210920F |
:1042C00019021092180210921B0210921A028DEC21 |
:1042D0009CECACECBDE38093130590931405A09384 |
:1042E0001505B09316058AE097EDA3EABBE380932A |
:1042F000020590930305A0930405B09305058091F2 |
:10430000BF019091C0018D54914008F477C0A090F6 |
:10431000D601B090D701C090D801D090D90180913A |
:10432000DA019091DB018A199B0990933402809302 |
:1043300033024091DE015091DF016091E001709104 |
:10434000E1012091E2013091E301241B350B309310 |
:104350003202209331021092C0011092BF01873ABD |
:10436000910534F08091D0019091D101019608C05F |
:104370008A559F4F4CF48091D0019091D1010197C3 |
:104380009093D1018093D001273A310534F0809188 |
:10439000D2019091D301019608C02A553F4F4CF4A9 |
:1043A0008091D2019091D30101979093D301809392 |
:1043B000D20110927A00A092EE01B092EF01C09269 |
:1043C000F001D092F1014093F6015093F701609310 |
:1043D000F8017093F9018091E6019091E701A091B5 |
:1043E000E801B091E9018093FE019093FF01A09351 |
:1043F0000002B09301028FEC80937A00E090D50424 |
:10440000FF24002711276091D6017091D701809178 |
:10441000D8019091D901A80197010E94A12D809106 |
:104420000E0590910F05AA2797FDA095BA2F281B7E |
:10443000390B4A0B5B0BCA01B90120E130E040E0C7 |
:1044400050E00E94A12D59016A0120933902309356 |
:104450003A0240933B0250933C026091DE0170911E |
:10446000DF018091E0019091E101A80197010E9494 |
:10447000A12D8091170590911805AA2797FDA09569 |
:10448000BA2F281B390B4A0B5B0BCA01B90120E17B |
:1044900030E040E050E00E94A12D2093350230939F |
:1044A00036024093370250933802E5EFAE16E1E052 |
:1044B000BE06E0E0CE06E0E0DE062CF084EF91E000 |
:1044C000A0E0B0E00DC0FCE0AF16FEEFBF06FFEFCE |
:1044D000CF06FFEFDF0664F48CE09EEFAFEFBFEF97 |
:1044E0008093390290933A02A0933B02B0933C022E |
:1044F000253F61E0360760E0460760E056072CF094 |
:1045000084EF91E0A0E0B0E009C02C503E4F4F4F47 |
:104510005F4F64F48CE09EEFAFEFBFEF8093350206 |
:1045200090933602A0933702B093380210927A002B |
:104530008091EA019091EB01A091EC01B091ED0125 |
:104540002091390230913A0240913B0250913C0255 |
:10455000821B930BA40BB50B8093EA019093EB01A4 |
:10456000A093EC01B093ED018091F2019091F301E1 |
:10457000A091F401B091F5012091350230913602FD |
:104580004091370250913802821B930BA40BB50B5C |
:104590008093F2019093F301A093F401B093F5019D |
:1045A00080901C0290901D02540197FE04C0AA2422 |
:1045B000BB24A818B90885E1A816B1043CF0809185 |
:1045C000C90484FD03C081E080938A01E090D20495 |
:1045D000CC24B7FCC094DC2CB401882777FD8095EF |
:1045E000982F2E2D3327442755270E94392D9B01C4 |
:1045F000AC01C601B5010E94392D20E032E040E057 |
:1046000050E00E94A12D89019A01FF24E89CC0017D |
:10461000E99C900DF89C900D112464E070E00E94DC |
:104620006C2D600F711F882777FD8095982F609300 |
:104630003D0270933E0280933F029093400220918E |
:10464000FA013091FB014091FC015091FD01261BC4 |
:10465000370B480B590B2093FA013093FB01409321 |
:10466000FC015093FD018091FA019091FB01A09112 |
:10467000FC01B091FD018155934CA040B04064F025 |
:1046800080E593ECA0E0B0E08093FA019093FB0109 |
:10469000A093FC01B093FD018091FA019091FB0180 |
:1046A000A091FC01B091FD01805B9C43AF4FBF4FD7 |
:1046B00064F480EB9CE3AFEFBFEF8093FA0190933B |
:1046C000FB01A093FC01B093FD018FEC80937A0075 |
:1046D0008091C90483FFA0C080910C028150809317 |
:1046E0000C028F3FD9F40E94C62890930702809352 |
:1046F00006022091080230910902821B930B845E0E |
:104700009D4F68E671E00E946C2D845B9040909311 |
:104710000B0280930A0282E380930C026091D6011F |
:104720007091D7018091D8019091D90120E032E0B9 |
:1047300040E050E00E94A12D890137FF03C0109591 |
:1047400001951F4F6091DE017091DF018091E001C2 |
:104750009091E10120E032E040E050E00E94A12D84 |
:10476000B90137FF03C0709561957F4F60177107DE |
:104770000CF4B8016332710574F480918A018823C6 |
:1047800051F0809106029091070290930902809364 |
:10479000080210928A01209184013327629FC00190 |
:1047A000639F900D729F900D112460E470E00E9451 |
:1047B0006C2DA901461B570B141615066CF51092AB |
:1047C0007A000091FA011091FB012091FC013091D7 |
:1047D000FD0180910A0290910B02BC01469FC0012D |
:1047E000479F900D569F900D112460E270E00E944B |
:1047F0006C2D882777FD8095982F060F171F281F8F |
:10480000391F0093FA011093FB012093FC013093B0 |
:10481000FD018FEC80937A00809159048F5F809323 |
:104820005904809127028150809327028F3F09F01D |
:104830007EC081E380932702E090D504FF24002707 |
:1048400011276091D6017091D7018091D801909184 |
:10485000D901A80197010E94A12D30935B042093F8 |
:104860005A046091DE017091DF018091E001909126 |
:10487000E101A80197010E94A12D30935D042093CE |
:104880005C0480910E0590910F0590935F048093D6 |
:104890005E048091170590911805909361048093B0 |
:1048A00060048091110590911205909363048093A8 |
:1048B000620480911F02909120029093650480937E |
:1048C000640460910202709103028091040290914D |
:1048D000050220E032E040E050E00E94A12D30933C |
:1048E00067042093660450926904409268048091A2 |
:1048F00006029091070290936B0480936A04809162 |
:1049000026059091270590936D0480936C04809107 |
:1049100028059091290590936F0480936E048091EF |
:104920002A0590912B0590937104809370046090F8 |
:104930000205709003058090040590900505A090F5 |
:104940001305B0901405C0901505D0901605609120 |
:10495000D6017091D7018091D8019091D9010E9420 |
:10496000772CA40193010E94F12C7B018C016091B2 |
:10497000FD047091FE04882777FD8095982F0E9492 |
:10498000772CA60195010E94F12C9B01AC01C80176 |
:10499000B7010E94D22B0E945A2C1B017093FE0477 |
:1049A0006093FD046091DE017091DF018091E00170 |
:1049B0009091E1010E94772CA40193010E94F12CB7 |
:1049C0007B018C016091FB047091FC04882777FDCA |
:1049D0008095982F0E94772CA60195010E94F12CBA |
:1049E0009B01AC01C801B7010E94D22B0E945A2C36 |
:1049F0007E836D837093FC046093FB0460911105CA |
:104A000070911205882777FD8095982F0E94772C4A |
:104A10007B018C0120E030E040E05FE3C601B5019E |
:104A20000E94F12C9B01AC01C801B7010E94F12C3E |
:104A30007B018C016091E6017091E7018091E801B2 |
:104A40009091E9010E94772CA40193010E94F12C1E |
:104A50009B01AC01C801B7010E94D22B0E945A2CC5 |
:104A60009B01709312056093110571E0271678E0A1 |
:104A700037061CF080E098E007C080E0281688EF39 |
:104A8000380634F480E098EF9093FE048093FD04A0 |
:104A9000AD81BE81A150B8401CF080E098E007C015 |
:104AA0004D815E814050584F34F480E098EF9093F0 |
:104AB000FC048093FB0478E0213037071CF080E091 |
:104AC00098E005C02050384F34F480E098EF909380 |
:104AD0001205809311058091C904992780FFBEC0FB |
:104AE0002091810181FF0EC02233B0F480911F021A |
:104AF0009091200244979093220280932102109279 |
:104B00000E020DC08091CE04289FC001112444974D |
:104B1000909322028093210281E080930E02809183 |
:104B20000D02882321F0109222021092210220917E |
:104B30001F0230912002409121025091220242171F |
:104B400053070CF08BC080910E02882309F486C0B5 |
:104B5000241B350B809182019927DC012A9FC0011B |
:104B60002B9F900D3A9F900D112460E170E00E9400 |
:104B70006C2D8201061B170B2091BD013091BE01E7 |
:104B8000809180019927FC012E9FC0012F9F900DDD |
:104B90003E9F900D112468E070E00E946C2D061B72 |
:104BA000170B6091020270910302809104029091B0 |
:104BB000050220E032E040E050E00E94A12DCA0151 |
:104BC000B901209183013327442755270E94392DAD |
:104BD00020E230E040E050E00E94A12DFFEF2E3CAB |
:104BE0003F0714F42EEC3FEF8091280290912902A8 |
:104BF000AC0164E0440F551F6A95E1F7481B590B5F |
:104C00002333310514F022E330E0021B130BCA01F9 |
:104C1000800F911F60E170E00E946C2D709329025B |
:104C2000609328028091CA049927681779073CF499 |
:104C3000481659065CF090932902809328028091CF |
:104C40002802909129024816590624F4509229020C |
:104C5000409228024090280250902902C0901105ED |
:104C6000D090120580913D0290913E02C81AD90A57 |
:104C700025E6C216D10424F014E6C12ED12C09C0B9 |
:104C80004CE9C4164FEFD40624F4BCE9CB2EBFEF99 |
:104C9000DB2E609178017091790180917A01909179 |
:104CA0007B0169837A838B839C83209118023091E6 |
:104CB00019028091490290914A02281B390B609198 |
:104CC000FD047091FE04621B730B882777FD8095AD |
:104CD000982F0E94772C9B01AC0169817A818B818E |
:104CE0009C810E94F12C0E945A2CFB01709363025C |
:104CF000609362028B01222717FD2095322F80914D |
:104D0000450290914602A0914702B0914802080FD7 |
:104D1000191F2A1F3B1F0093450210934602209340 |
:104D20004702309348021016110612061306ACF41F |
:104D3000C80117FF03C0909581959F4F60E071E017 |
:104D40000E946C2D6F5F7F4F882777FD8095982F8D |
:104D5000061B170B280B390B14C0C80117FF03C023 |
:104D6000909581959F4F60E071E00E946C2D6F5F80 |
:104D70007F4F882777FD8095982F060F171F281FD4 |
:104D8000391F009345021093460220934702309347 |
:104D900048028091450290914602A0914702B0914D |
:104DA000480281387EE3970770E0A70770E0B707F5 |
:104DB0002CF080E89EE3A0E0B0E009C08058914C60 |
:104DC000AF4FBF4F64F480E891ECAFEFBFEF80933B |
:104DD000450290934602A0934702B0934802809008 |
:104DE0007C0190907D01A0907E01B0907F01BF0179 |
:104DF000882777FD8095982F0E94772C7B018C0166 |
:104E0000609145027091460280914702909148025C |
:104E10000E94772C9B01AC01C501B4010E94F12CCA |
:104E20009B01AC01C801B7010E94D22B0E945A2CF1 |
:104E30009601260F371F240D351D66244AE04416BF |
:104E4000510414F4A1E06A2E37FD02C0662019F067 |
:104E500040E050E008C080911005482F55272417E6 |
:104E600035070CF4A9018091FF04282E3324910109 |
:104E7000241635060CF49A0120936002C201861BA9 |
:104E8000970BBC016C0D7D1D77FD02C0662019F0EB |
:104E900080E090E007C08091100599276817790796 |
:104EA0000CF4CB019101281639060CF49C012093D7 |
:104EB000610220911A0230911B0280914B02909165 |
:104EC0004C02281B390B6091FB047091FC04621B9F |
:104ED000730B882777FD8095982F0E94772C9B0174 |
:104EE000AC0169817A818B819C810E94F12C0E94A6 |
:104EF0005A2CFB0170935F0260935E028B012227A4 |
:104F000017FD2095322F8091410290914202A0918D |
:104F10004302B0914402080F191F2A1F3B1F009340 |
:104F20004102109342022093430230934402101630 |
:104F3000110612061306ACF4C80117FF03C09095C2 |
:104F400081959F4F60E071E00E946C2D6F5F7F4FF5 |
:104F5000882777FD8095982F061B170B280B390B98 |
:104F600014C0C80117FF03C0909581959F4F60E062 |
:104F700071E00E946C2D6F5F7F4F882777FD8095D1 |
:104F8000982F060F171F281F391F009341021093F7 |
:104F90004202209343023093440280914102909157 |
:104FA0004202A0914302B091440281382EE392075D |
:104FB00020E0A20720E0B2072CF080E89EE3A0E00A |
:104FC000B0E009C08058914CAF4FBF4F64F480E807 |
:104FD00091ECAFEFBFEF8093410290934202A09318 |
:104FE0004302B0934402BF01882777FD8095982F34 |
:104FF0000E94772C7B018C016091410270914202EA |
:1050000080914302909144020E94772C9B01AC0155 |
:10501000C501B4010E94F12C9B01AC01C801B7018C |
:105020000E94D22B0E945A2C9201260F371F2C1956 |
:105030003D0937FD02C0662019F040E050E008C08D |
:1050400080911005482F5527241735070CF4A90126 |
:105050009101241635060CF49A0120936502461A34 |
:10506000570AB2016C197D0977FD02C0662019F05C |
:1050700020E030E008C080911005282F3327621708 |
:1050800073070CF49B01C101221633060CF4C9010D |
:1050900080936402E2E1CA5F0C94D82D80914D02A6 |
:1050A00090914E02A0914F02B09150028093550210 |
:1050B00090935602A0935702B093580280915102E8 |
:1050C00090915202A0915302B091540280935902E0 |
:1050D00090935A02A0935B02B0935C0208951092E1 |
:1050E0004A021092490210924C0210924B0208950B |
:1050F0001F920F920FB60F9211242F933F934F934D |
:105100008F939F9380912205833019F08430A1F50D |
:1051100008C08EB580935D021EBC84E0809322059A |
:105120002BC080915D029927382F22278EB59927B1 |
:10513000282B392BC9018D509E4F875E9340D0F4A8 |
:1051400080912505853019F0863069F406C03093CA |
:1051500027052093260586E00BC030932905209370 |
:10516000280587E005C030932B0520932A0585E0AC |
:1051700080932505109222059F918F914F913F9129 |
:105180002F910F900FBE0F901F901895AAE0B0E0DE |
:10519000ECECF8E20C94BC2DA090DE04BB2433E0D0 |
:1051A000AA0CBB1C3A95E1F7CC24DD246091D60112 |
:1051B0007091D7018091D8019091D901A6019501F4 |
:1051C0000E94A12D79018A01FF24E7FCF094C70118 |
:1051D0000E94792B2C01C7010E94BC2B3C016091DD |
:1051E000DE017091DF018091E0019091E101A60163 |
:1051F00095010E94A12D79018A01FF24E7FCF0941A |
:10520000C7010E94792B9A878987C7010E94BC2B0E |
:105210001C016091260570912705E0902805F0900B |
:10522000290520911A05332727FD3095E21AF30A44 |
:105230000027F7FC0095102FA0902A05B0902B05B1 |
:1052400020911B05332727FD3095A21AB30ACC24E1 |
:10525000B7FCC094DC2C20911905332727FD30952D |
:10526000621B730B882777FD8095982F882477FC25 |
:105270008094982CA40193010E94392D3B014C018C |
:1052800089859A85AA2797FDA095BA2F8D839E833D |
:10529000AF83B887C201AA2797FDA095BA2F89834B |
:1052A0009A83AB83BC83C801B7012D813E814F81B6 |
:1052B00058850E94392D29813A814B815C810E9459 |
:1052C000392D20E034E040E050E00E94A12D620E34 |
:1052D000731E841E951E442437FC4094542CC60132 |
:1052E000B501A20191010E94392D29813A814B819A |
:1052F0005C810E94392D20E034E040E050E00E94C3 |
:10530000A12D621A730A840A950AC801B701A20185 |
:1053100091010E94392D7B018C01C601B5012D81BF |
:105320003E814F8158850E94392DE60EF71E081FD9 |
:10533000191FC801B70120E034E040E050E00E94AE |
:10534000A12D79018A01C401B30120E034E040E0DD |
:1053500050E00E94A12DCA01B901A80197010E9445 |
:10536000CD2A9C0197FF05C088279927821B930BA4 |
:1053700004C088E691E0821B930BE2E1C65F0C94C7 |
:10538000D82D80912205813041F0813018F0823093 |
:1053900049F51CC02A9A81E016C02A9880912505FB |
:1053A000853011F481E305C0863011F482E301C039 |
:1053B00083E38EBD88E090E00E94810B90932405EA |
:1053C0008093230582E08093220508958091230530 |
:1053D000909124050E948A0B882321F01EBC83E053 |
:1053E000809322050895A0E0B0E0E9EFF9E20C9483 |
:1053F000BE2D299A2898EE24FF2400E010E0AA246C |
:10540000BB24CC24DD24662477248824992462E3F9 |
:10541000462E5524809126059091270508171907D7 |
:105420002CF400912605109127050BC080912605CC |
:10543000909127058E159F0524F4E0902605F090A5 |
:1054400027058091280590912905C816D9062CF4C6 |
:10545000C0902805D09029050BC080912805909117 |
:1054600029058A159B0524F4A0902805B0902905EC |
:1054700080912A0590912B05881699062CF480902E |
:105480002A0590902B050BC080912A0590912B0541 |
:105490008615970524F460902A0570902B055520F9 |
:1054A00081F485B191E0892785B985B192E089279A |
:1054B00085B982E390E09093A7018093A60152E31F |
:1054C000552E8AE090E00E94810BEC01CE010E94F3 |
:1054D0008A0B8823D9F3E091C304FF27EE0FFF1F47 |
:1054E000EB56FB4F80819181843691050CF44A94F0 |
:1054F000442011F05A948ECFC8018E199F099093C1 |
:105500001D0580931C05C6018A199B0990931F05F0 |
:1055100080931E05C40186199709909321058093F5 |
:105520002005E9E1F5E0C8018E0D9F1D62E070E005 |
:105530000E946C2D60931905C6018A0D9B1D62E0C7 |
:1055400070E00E946C2D60931A05C401860D971DB2 |
:1055500062E070E00E946C2D60931B0589E0A4E37B |
:10556000B1E0182E0E94122EE0E1CDB7DEB70C9408 |
:10557000DA2D83ED8CBD84B1846A84B95B9885E0B3 |
:10558000809325051092220589E0E9E1F5E0A4E386 |
:10559000B1E0182E0E94012E0895DF92EF92FF9243 |
:1055A0000F931F937B018C01611571058105910596 |
:1055B00041F4211531054105510519F480E090E0D1 |
:1055C00092C057FD03C061E0D62E02C09FEFD92ED6 |
:1055D000E114F1040105110531F48AE52D2D2802AD |
:1055E000C001112480C086E0220F331F441F551FC5 |
:1055F0008A95D1F7CA01B901A80197010E94A12D8E |
:10560000F90137FF03C0F095E195FF4F41E0EA351E |
:10561000F40734F4E656FB4F8491282F332747C014 |
:105620005CE1E73AF5071CF02AE530E040C089E08C |
:10563000ED38F8071CF029E530E039C025E0EA3BF9 |
:10564000F2071CF028E530E032C044E0E731F4070F |
:105650001CF027E530E02BC053E0EE32F5071CF0DC |
:1056600026E530E024C082E0E939F8071CF025E5A2 |
:1056700030E01DC022E0E233F2071CF024E530E008 |
:1056800016C041E0E73EF4071CF023E530E00FC010 |
:1056900051E0ED3AF5071CF022E530E008C0EF5785 |
:1056A000F1401CF021E530E002C020E530E01E149E |
:1056B0001F04100611066CF48D2D992787FD909517 |
:1056C000AC01249FC001259F900D349F900D1124A3 |
:1056D0000AC01D142CF484EB90E0821B930B03C0D2 |
:1056E000C901845B90401F910F91FF90EF90DF9074 |
:1056F0000895FC0197FD03C041E050E005C0F0951E |
:10570000E195FF4F4FEF5FEFEB35F1055CF0CF0117 |
:105710008B5590408A35910540F484EB90E08E1BC8 |
:105720009F0BFC0121E030E010C0CF01855B904071 |
:105730008A35910518F4E45BF04005C088E691E0F5 |
:105740008E1B9F0BFC012FEF3FEFEE0FFF1FEC5066 |
:10575000FA4F85919491BC01629FC001639F900DA7 |
:10576000729F900D11249C01429FC001439F900D98 |
:10577000529F900D112408952AE530E0281B390B23 |
:10578000C9010E94792B0895FC014150504030F02E |
:1057900001900616D1F73197CF01089588279927F0 |
:1057A00008955058192EEFD001D0D2C0BA17620711 |
:1057B000730784079507B1F188F40EF410940B2E4B |
:1057C000BA2FA02D062E622F202D072E732F302DDD |
:1057D000082E842F402D092E952F502DFF2755235D |
:1057E000B9F0591B49F0573E98F0469537952795E3 |
:1057F000A795F0405395C9F776F0BA0F621F731F53 |
:10580000841F30F4879577956795B795F040939509 |
:1058100017FA0F2E0895BF1BBB27BA0B620B730B31 |
:10582000840BF6CFDEF6DBC0AED001D091C055239D |
:1058300059F0992369F09F575F57951B33F442F451 |
:10584000903811F4915805C09BC091589F3F09F4BE |
:10585000C6C0BB27112462177307840730F4660F94 |
:10586000771F881FBB1F915098F311D00F920FD054 |
:105870000F920DD0A0E82617370748071B0609F03E |
:10588000A048BA2F602D7F918F9100240895A0E841 |
:105890000024621773078407B10528F0621B730B9D |
:1058A000840BB1090A2A660F771F881FBB1FA695B4 |
:1058B00081F7089597FB73D09F3738F0FEE9F91B05 |
:1058C000982F872F762F6B2F05C086C096958795CA |
:1058D00077956795F150D0F73EF490958095709547 |
:1058E00061957F4F8F4F9F4F0895E89403C097FBBA |
:1058F0000EF4F3DFB62F672F782F892F9EE900244F |
:1059000027C00ED05EF004C00BD026F001C008D036 |
:1059100019F020F48FEF089580E0089581E0089554 |
:1059200097FB092E052600F8689430D0E89407FC10 |
:1059300007C0621773078407950721F008F40094E5 |
:105940000794989408959A95BB0F661F771F881F38 |
:1059500011249923A1F08823B2F79F3F59F0BB0F80 |
:1059600048F421F4002011F460FF04C06F5F7F4F02 |
:105970008F4F9F4F881F9795879597F908952CC053 |
:105980009FEF80EC0895052E092607FA440F551F56 |
:105990005F3F79F0AA27A51708F051E04795880FD7 |
:1059A000991F9F3F31F0BB27B91708F091E0879509 |
:1059B00008959F919F911124E3CF97FB880F991F22 |
:1059C0009F3F31F0BB27B91708F091E08795089504 |
:1059D0009F919F911124D4CF6627772788279927F5 |
:1059E0000895D1DF01D0B4CF992339F0552329F0A0 |
:1059F0009F575F57950F13F49AF1F1CF91589F3F3E |
:105A0000E1F3629FA12D0F92BB27639FA00DB11DF3 |
:105A1000EE27729FA00DB11DEE1FAF93AA27649FC2 |
:105A2000B00DE11D739FB00DE11DAA1F6627829F77 |
:105A3000B00DE11DA61F5527749FE00DA11D551F38 |
:105A4000839FE00DA11D561F849FA00D511D852F22 |
:105A50007A2F6E2F1F900F9088231AF4939539F4A4 |
:105A60008FCF000C111CBB1F661F771F881F0128DA |
:105A70000895629FD001739FF001829FE00DF11D98 |
:105A8000649FE00DF11D929FF00D839FF00D749FB8 |
:105A9000F00D659FF00D9927729FB00DE11DF91F64 |
:105AA000639FB00DE11DF91FBD01CF0111240895C1 |
:105AB000AA1BBB1B51E107C0AA1FBB1FA617B70734 |
:105AC00010F0A61BB70B881F991F5A95A9F7809550 |
:105AD0009095BC01CD01089597FB092E07260AD0A9 |
:105AE00077FD04D0E5DF06D000201AF470956195AB |
:105AF0007F4F0895F6F7909581959F4F0895A1E205 |
:105B00001A2EAA1BBB1BFD010DC0AA1FBB1FEE1F37 |
:105B1000FF1FA217B307E407F50720F0A21BB30B82 |
:105B2000E40BF50B661F771F881F991F1A9469F7FE |
:105B300060957095809590959B01AC01BD01CF015A |
:105B4000089597FB092E05260ED057FD04D0D7DF08 |
:105B50000AD0001C38F450954095309521953F4F60 |
:105B60004F4F5F4F0895F6F790958095709561952A |
:105B70007F4F8F4F9F4F08952F923F924F925F928A |
:105B80006F927F928F929F92AF92BF92CF92DF924D |
:105B9000EF92FF920F931F93CF93DF93CDB7DEB7B2 |
:105BA000CA1BDB0B0FB6F894DEBF0FBECDBF099446 |
:105BB0002A88398848885F846E847D848C849B849D |
:105BC000AA84B984C884DF80EE80FD800C811B81AB |
:105BD000AA81B981CE0FD11D0FB6F894DEBF0FBEDA |
:105BE000CDBFED010895EE0FFF1F0590F491E02D5C |
:105BF0000994F999FECFB2BDA1BDF89A119600B4EF |
:105C00000895F7DF01921A94E1F70895F999FECF0C |
:105C1000B2BDA1BD00BC11960FB6F894FA9AF99ADC |
:105C20000FBE08950190F2DF1A94E1F70895FFCFB7 |
:105C300001640A016400007D0000FF030102030407 |
:105C400005060708090A48616C6C6F2057656C747B |
:105C50000000000000000000000000000000000044 |
:105C60000000000000000000000000000000000034 |
:105C70000000000000000000000000000000000024 |
:105C80000000000000000000000000000000000014 |
:105C90000000000000000C014B616D6572610000A6 |
:105CA0004E6F726D616C00000000803F17B7D138F5 |
:0C5CB00030FB103A403296020A640100FA |
:00000001FF |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/GPS.c |
---|
0,0 → 1,26 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
signed int GPS_Nick = 0; |
signed int GPS_Roll = 0; |
long GpsAktuell_X = 0; |
long GpsAktuell_Y = 0; |
long GpsZiel_X = 0; |
long GpsZiel_Y = 0; |
void GPS_Neutral(void) |
{ |
GpsZiel_X = GpsAktuell_X; |
GpsZiel_Y = GpsAktuell_Y; |
} |
void GPS_BerechneZielrichtung(void) |
{ |
GPS_Nick = 0; |
GPS_Roll = 0; |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/Settings.h |
---|
--- v0.60_MicroMag3_Nick666/Festkomma/v0.60/_Settings.h (nonexistent) |
+++ v0.60_MicroMag3_Nick666/Festkomma/v0.60/_Settings.h (revision 561) |
@@ -0,0 +1,50 @@ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Testmodi |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define MOTOR_OFF 0 |
+#define MOTOR_TEST 0 |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Abstimmung |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define ACC_AMPLIFY 16 |
+#define FAKTOR_P 1 |
+#define FAKTOR_I 0.0001 |
+ |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Debug-Interface |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define SIO_DEBUG 1 // Soll der Debugger aktiviert sein? |
+#define MIN_DEBUG_INTERVALL 250 // in diesem Intervall werden Degugdaten ohne Aufforderung gesendet |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Sender |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ #define K_NICK 0 |
+ #define K_ROLL 1 |
+ #define K_GAS 2 |
+ #define K_GIER 3 |
+ #define K_POTI1 4 |
+ #define K_POTI2 5 |
+ #define K_POTI3 6 |
+ #define K_POTI4 7 |
+// +++++++++++++++++++++++++++++++ |
+// + Getestete Settings: |
+// +++++++++++++++++++++++++++++++ |
+// Setting: Kamera |
+// Stick_P:3 |
+// Stick_D:0 |
+// Gyro_P: 175 |
+// Gyro_I: 175 |
+// Ki_Anteil: 10 |
+// +++++++++++++++++++++++++++++++ |
+// + Getestete Settings: |
+// +++++++++++++++++++++++++++++++ |
+// Setting: Normal |
+// Stick_P:2 |
+// Stick_D:8 |
+// Gyro_P: 80 |
+// Gyro_I: 150 |
+// Ki_Anteil: 5 |
+ |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/analog.c |
---|
0,0 → 1,155 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az, UBat = 100; |
volatile int AccumulateNick = 0, AccumulateRoll = 0, AccumulateGier = 0; |
volatile int accumulate_AccRoll = 0,accumulate_AccNick = 0,accumulate_AccHoch = 0; |
volatile char MessanzahlNick = 0, MessanzahlRoll = 0, MessanzahlGier = 0; |
volatile char messanzahl_AccNick = 0, messanzahl_AccRoll = 0, messanzahl_AccHoch = 0; |
volatile long Luftdruck = 32000; |
volatile int StartLuftdruck; |
volatile unsigned int MessLuftdruck = 1023; |
unsigned char DruckOffsetSetting; |
volatile int HoeheD = 0; |
volatile char messanzahl_Druck; |
volatile int tmpLuftdruck; |
volatile unsigned int ZaehlMessungen = 0; |
//####################################################################################### |
// |
void ADC_Init(void) |
//####################################################################################### |
{ |
ADMUX = 0;//Referenz ist extern |
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE); |
//Free Running Mode, Division Factor 128, Interrupt on |
} |
//####################################################################################### |
// |
void SucheLuftruckOffset(void) |
//####################################################################################### |
{ |
unsigned int off; |
off = eeprom_read_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET]); |
if(off > 20) off -= 10; |
OCR0A = off; |
Delay_ms(100); |
if(MessLuftdruck < 850) off = 0; |
for(; off < 250;off++) |
{ |
OCR0A = off; |
Delay_ms(50); |
printf("."); |
if(MessLuftdruck < 900) break; |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET], off); |
DruckOffsetSetting = off; |
Delay_ms(200); |
} |
//####################################################################################### |
// |
SIGNAL(SIG_ADC) |
//####################################################################################### |
{ |
static unsigned char kanal=0,state = 0; |
signed int wert; |
ANALOG_OFF; |
switch(state++) |
{ |
case 0: |
wert = (signed int) AdNeutralGier - ADC; |
AccumulateGier += wert; // |
MessanzahlGier++; |
Mess_Integral_Gier += wert;// / 16; |
Mess_Integral_Gier2 += wert; |
kanal = 1; |
ZaehlMessungen++; |
break; |
case 1: |
wert = (signed int) ADC - AdNeutralRoll; |
Mess_IntegralRoll += wert; |
Mess_IntegralRoll2 += wert; |
if(ADC < 10) wert = -700; |
if(ADC > 1000) wert = +700; |
AccumulateRoll += wert; |
MessanzahlRoll++; |
kanal = 2; |
break; |
case 2: |
wert = (signed int) ADC - AdNeutralNick; |
Mess_IntegralNick += wert; |
Mess_IntegralNick2 += wert; |
if(ADC < 10) wert = -700; |
if(ADC > 1000) wert = +700; |
AccumulateNick += wert; |
MessanzahlNick++; |
kanal = 4; |
break; |
case 3: |
UBat = (3 * UBat + ADC / 3) / 4;//(UBat + ((ADC * 39) / 256) + 19) / 2; |
kanal = 6; |
break; |
case 4: |
Aktuell_ay = acc_neutral.Y - ADC; |
accumulate_AccRoll += Aktuell_ay; |
messanzahl_AccRoll++; |
kanal = 7; |
break; |
case 5: |
Aktuell_ax = ADC - acc_neutral.X; |
accumulate_AccNick += Aktuell_ax; |
messanzahl_AccNick++; |
kanal = 5; |
state = 6; |
break; |
case 6: |
accumulate_AccHoch = (signed int) ADC - acc_neutral.Z; |
accumulate_AccHoch += abs(Aktuell_ay) / 4 + abs(Aktuell_ax) / 4; |
if(accumulate_AccHoch > 1) |
{ |
if(acc_neutral.Z < 800) acc_neutral.Z+= 0.02; |
} |
else if(accumulate_AccHoch < -1) |
{ |
if(acc_neutral.Z > 600) acc_neutral.Z-= 0.02; |
} |
messanzahl_AccHoch = 1; |
Aktuell_az = ADC; |
Mess_Integral_Hoch += accumulate_AccHoch; // Integrieren |
Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämpfen |
kanal = 3; |
state = 7; |
break; |
case 7: |
tmpLuftdruck += ADC; |
if(++messanzahl_Druck >= 5) |
{ |
MessLuftdruck = ADC; |
messanzahl_Druck = 0; |
HoeheD = (int)(StartLuftdruck - tmpLuftdruck - HoehenWert); // D-Anteil = neuerWert - AlterWert |
Luftdruck = (tmpLuftdruck + 3 * Luftdruck) / 4; |
HoehenWert = StartLuftdruck - Luftdruck; |
tmpLuftdruck = 0; |
} |
kanal = 0; |
state = 0; |
break; |
default: |
kanal = 0; |
state = 0; |
break; |
} |
ADMUX = kanal; |
ANALOG_ON; |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/analog.h |
---|
0,0 → 1,23 |
/*####################################################################################### |
#######################################################################################*/ |
extern volatile int UBat; |
extern volatile int AccumulateNick, AccumulateRoll, AccumulateGier,accumulate_AccRoll,accumulate_AccNick,accumulate_AccHoch; |
extern volatile char MessanzahlNick, MessanzahlRoll, MessanzahlGier,messanzahl_AccNick, messanzahl_AccRoll,messanzahl_AccHoch; |
extern volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az; |
extern volatile long Luftdruck; |
extern volatile char messanzahl_Druck; |
extern volatile unsigned int ZaehlMessungen; |
extern unsigned char DruckOffsetSetting; |
extern volatile int HoeheD; |
extern volatile unsigned int MessLuftdruck; |
extern volatile int StartLuftdruck; |
extern unsigned int ReadADC(unsigned char adc_input); |
extern void ADC_Init(void); |
extern void SucheLuftruckOffset(void); |
#define ANALOG_OFF ADCSRA=0 |
#define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE) |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/compass.c |
---|
0,0 → 1,234 |
/* |
Copyright 2007, Niklas Nold |
This program (files compass.c and compass.h) is free software; you can redistribute it and/or modify |
it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; |
either version 3 of the License, or (at your option) any later version. |
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; |
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
Please note: All the other files for the project "Mikrokopter" by H. Buss are under the license (license_buss.txt) published by www.mikrokopter.de |
*/ |
#include "main.h" |
struct MM3_calib_struct ee_calib EEMEM; // Reservierung im EEPROM |
struct MM3_working_struct MM3; |
struct MM3_calib_struct MM3_calib; |
//############################################################################ |
// Initialisierung |
void init_MM3(void) |
//############################################################################ |
{ |
// SPI-Schnittstelle initialisieren |
SPCR = (1<<SPIE)|(1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0); // Interrupt an, Master, 156 kHz Oszillator |
DDRB |= (1<<PB7)|(1<<PB5)|(1<<PB2); // J8, MOSI, SCK Ausgang |
PORTD &= ~(1<<PD3); // J5 permanent auf Low |
// Init Statemachine |
MM3.AXIS = MM3_X; |
MM3.STATE = MM3_RESET; |
// Kalibrierung aus dem EEprom lesen |
eeprom_read_block(&MM3_calib,&ee_calib,sizeof(struct MM3_calib_struct)); |
} |
//############################################################################ |
// Wird in der SIGNAL (SIG_OVERFLOW0) aufgerufen |
void timer0_MM3(void) |
//############################################################################ |
{ |
switch (MM3.STATE) |
{ |
case MM3_RESET: |
PORTB |= (1<<PB2); // J8 auf High, MM3 Reset |
MM3.STATE = MM3_START_TRANSFER; |
return; |
case MM3_START_TRANSFER: |
PORTB &= ~(1<<PB2); // J8 auf Low (war ~125 µs auf High) |
if (MM3.AXIS == MM3_X) SPDR = 0x31; // Schreiben ins SPDR löst automatisch SPI-Übertragung (MOSI und MISO) aus |
else if (MM3.AXIS == MM3_Y) SPDR = 0x32; // Micromag Period Select ist auf 256 (0x30) |
else SPDR = 0x33; //if (MM3.AXIS == MM3_Z) // 1: x-Achse, 2: Y-Achse, 3: Z-Achse |
MM3.DRDY = SetDelay(8); // Laut Datenblatt max. Zeit bis Messung fertig (bei PS 256 eigentlich 4 ms) |
MM3.STATE = MM3_WAIT_DRDY; |
return; |
case MM3_WAIT_DRDY: |
if (CheckDelay(MM3.DRDY)) {SPDR = 0x00;MM3.STATE = MM3_DRDY;} // Irgendwas ins SPDR, damit Übertragung ausgelöst wird, wenn Wartezeit vorbei |
return; // Jetzt gehts weiter in SIGNAL (SIG_SPI) |
} |
} |
//############################################################################ |
// SPI byte ready |
SIGNAL (SIG_SPI) |
//############################################################################ |
{ |
static char tmp; |
int wert; |
switch (MM3.STATE) |
{ |
case MM3_DRDY: // 1. Byte ist da, zwischenspeichern |
tmp = SPDR; |
SPDR = 0x00; // Übertragung von 2. Byte auslösen |
MM3.STATE = MM3_BYTE2; |
return; |
case MM3_BYTE2: // 2. Byte der entsprechenden Achse ist da |
wert = tmp; |
wert <<= 8; // 1. Byte an MSB-Stelle rücken |
wert |= SPDR; // 2. Byte dranpappen |
if(abs(wert) < Max_Axis_Value) // Spikes filtern. Zuweisung nur, wenn Max-Wert nicht überschritten |
switch (MM3.AXIS) |
{ |
case MM3_X: |
MM3.x_axis = wert; |
MM3.AXIS = MM3_Y; |
break; |
case MM3_Y: |
MM3.y_axis = wert; |
MM3.AXIS = MM3_Z; |
break; |
default: //case MM3_Z: |
MM3.z_axis = wert; |
MM3.AXIS = MM3_X; |
} |
MM3.STATE = MM3_RESET; |
} |
} |
//############################################################################ |
// Kompass kalibrieren |
void calib_MM3(void) |
//############################################################################ |
{ |
signed int x_min=0,x_max=0,y_min=0,y_max=0,z_min=0,z_max=0; |
uint8_t measurement=50,beeper=0; |
unsigned int timer; |
GRN_ON; |
ROT_OFF; |
while (measurement) |
{ |
//H_earth = MM3.x_axis*MM3.x_axis + MM3.y_axis*MM3.y_axis + MM3.z_axis*MM3.z_axis; |
if (MM3.x_axis > x_max) x_max = MM3.x_axis; |
else if (MM3.x_axis < x_min) x_min = MM3.x_axis; |
if (MM3.y_axis > y_max) y_max = MM3.y_axis; |
else if (MM3.y_axis < y_min) y_min = MM3.y_axis; |
if (MM3.z_axis > z_max) z_max = MM3.z_axis; |
else if (MM3.z_axis < z_min) z_min = MM3.z_axis; |
if (!beeper) |
{ |
ROT_FLASH; |
GRN_FLASH; |
beeptime = 50; |
beeper = 50; |
} |
beeper--; |
// Schleife mit 100 Hz |
timer = SetDelay(10); |
while(!CheckDelay(timer)); |
// Wenn Gas zurück genommen wird, Kalibrierung mit 1/2 Sekunde Verzögerung beenden |
if (PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] < 100) measurement--; |
} |
// Wertebereich der Achsen |
MM3_calib.X_range = (x_max - x_min); |
MM3_calib.Y_range = (y_max - y_min); |
MM3_calib.Z_range = (z_max - z_min); |
// Offset der Achsen |
MM3_calib.X_off = (x_max + x_min) / 2; |
MM3_calib.Y_off = (y_max + y_min) / 2; |
MM3_calib.Z_off = (z_max + z_min) / 2; |
// und im EEProm abspeichern |
eeprom_write_block(&MM3_calib,&ee_calib,sizeof(struct MM3_calib_struct)); |
} |
//############################################################################ |
// Neigungskompensierung und Berechnung der Ausrichtung |
int heading_MM3(void) |
//############################################################################ |
{ |
signed int sin_nick, cos_nick, sin_roll, cos_roll; |
long x_axis, y_axis, z_axis; |
long x_corr, y_corr; |
signed int heading; |
int8_t nicktilt,rolltilt; |
unsigned int div_faktor; |
div_faktor = (uint16_t)EE_Parameter.UserParam1 * 8; |
// Berechung von sinus und cosinus |
nicktilt = (IntegralNick/div_faktor); |
sin_nick = sin_i(nicktilt); |
cos_nick = cos_i(nicktilt); |
rolltilt = (IntegralRoll/div_faktor); |
sin_roll = sin_i(rolltilt); |
cos_roll = cos_i(rolltilt); |
// Offset |
x_axis = (MM3.x_axis - MM3_calib.X_off); |
y_axis = (MM3.y_axis - MM3_calib.Y_off); |
z_axis = (MM3.z_axis - MM3_calib.Z_off); |
/* |
// Normierung Wertebereich |
if ((MM3_calib.X_range > MM3_calib.Y_range) && (MM3_calib.X_range > MM3_calib.Z_range)) |
{ |
y_axis = (y_axis * MM3_calib.X_range) / MM3_calib.Y_range; |
z_axis = (z_axis * MM3_calib.X_range) / MM3_calib.Z_range; |
} |
else if ((MM3_calib.Y_range > MM3_calib.X_range) && (MM3_calib.Y_range > MM3_calib.Z_range)) |
{ |
x_axis = (x_axis * MM3_calib.Y_range) / MM3_calib.X_range; |
z_axis = (z_axis * MM3_calib.Y_range) / MM3_calib.Z_range; |
} |
else //if ((MM3_calib.Z_range > MM3_calib.X_range) && (MM3_calib.Z_range > MM3_calib.Y_range)) |
{ |
x_axis = (x_axis * MM3_calib.Z_range) / MM3_calib.X_range; |
y_axis = (y_axis * MM3_calib.Z_range) / MM3_calib.Y_range; |
} |
*/ |
// Neigungskompensierung |
x_corr = x_axis * cos_nick; |
x_corr += (y_axis * sin_roll * sin_nick) /1024; |
x_corr -= (z_axis * cos_roll * sin_nick) /1024; |
x_corr /= 1024; |
y_corr = y_axis * cos_roll; |
y_corr += z_axis * sin_roll; |
y_corr /= 1024; |
// Winkelberechnung |
heading = atan2_i(x_corr, y_corr); |
if (heading < 0) heading = -heading; |
else heading = 360 - heading; |
return (heading); |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/compass.h |
---|
0,0 → 1,44 |
struct MM3_working_struct |
{ |
uint8_t STATE; |
unsigned int DRDY; |
uint8_t AXIS; |
volatile signed int x_axis; |
volatile signed int y_axis; |
volatile signed int z_axis; |
}; |
struct MM3_calib_struct |
{ |
int8_t X_off; |
int8_t Y_off; |
int8_t Z_off; |
uint16_t X_range; |
uint16_t Y_range; |
uint16_t Z_range; |
}; |
extern struct MM3_working_struct MM3; |
extern struct MM3_calib_struct MM3_calib; |
void init_MM3(void); |
void timer0_MM3(void); |
void calib_MM3(void); |
int heading_MM3(void); |
#define Max_Axis_Value 500 |
// Die Werte der Statemachine |
#define MM3_RESET 0 |
#define MM3_START_TRANSFER 1 |
#define MM3_WAIT_DRDY 2 |
#define MM3_DRDY 3 |
#define MM3_BYTE2 4 |
#define MM3_X 5 |
#define MM3_Y 6 |
#define MM3_Z 7 |
#define MM3_TILT 8 |
#define MM3_IDLE 9 |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/fc.c |
---|
0,0 → 1,846 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned char h,m,s; |
volatile unsigned char Timeout = 0; |
int MesswertNick,MesswertRoll,MesswertGier; |
volatile int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0; |
int Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch; |
long IntegralNick = 0,IntegralNick2 = 0; |
long IntegralRoll = 0,IntegralRoll2 = 0; |
long Integral_Gier = 0; |
volatile long Mess_IntegralNick = 0,Mess_IntegralNick2 = 0; |
volatile long Mess_IntegralRoll = 0,Mess_IntegralRoll2 = 0; |
volatile long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0; |
volatile long Mess_Integral_Hoch = 0; |
int KompassValue = 0; |
int KompassStartwert = 0; |
int KompassRichtung = 0; |
uint8_t updKompass = 0; |
unsigned char MAX_GAS,MIN_GAS; |
unsigned char Notlandung = 0; |
unsigned char HoehenReglerAktiv = 0; |
float GyroFaktor; |
float IntegralFaktor; |
int DiffNick,DiffRoll; |
int Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0; |
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links; |
unsigned char MotorWert[5]; |
volatile unsigned char SenderOkay = 0; |
int StickNick = 0,StickRoll = 0,StickGier = 0; |
char MotorenEin = 0; |
int HoehenWert = 0; |
int SollHoehe = 0; |
float Kp = FAKTOR_P; |
float Ki = FAKTOR_I; |
unsigned char Parameter_Luftdruck_D = 48; // Wert : 0-250 |
unsigned char Parameter_MaxHoehe = 251; // Wert : 0-250 |
unsigned char Parameter_Hoehe_P = 16; // Wert : 0-32 |
unsigned char Parameter_Hoehe_ACC_Wirkung = 58; // Wert : 0-250 |
unsigned char Parameter_KompassWirkung = 64; // Wert : 0-250 |
unsigned char Parameter_Gyro_P = 50; // Wert : 10-250 |
unsigned char Parameter_Gyro_I = 150; // Wert : 0-250 |
unsigned char Parameter_Gier_P = 2; // Wert : 1-20 |
unsigned char Parameter_I_Faktor = 10; // Wert : 1-20 |
unsigned char Parameter_UserParam1 = 0; |
unsigned char Parameter_UserParam2 = 0; |
unsigned char Parameter_UserParam3 = 0; |
unsigned char Parameter_UserParam4 = 0; |
unsigned char Parameter_ServoNickControl = 100; |
struct mk_param_struct EE_Parameter; |
struct acc_neutral_struct ee_acc_neutral EEMEM; // Reservierung im EEPROM |
struct acc_neutral_struct acc_neutral; |
void Piep(unsigned char Anzahl) |
{ |
while(Anzahl--) |
{ |
if(MotorenEin) return; //auf keinen Fall im Flug! |
beeptime = 100; |
Delay_ms(250); |
} |
} |
//############################################################################ |
// Neutrallage kalibrieren und fest im EEPROM abspeichern |
void calib_acc(void) |
//############################################################################ |
{ |
unsigned int timer; |
acc_neutral.X = 0; |
acc_neutral.Y = 0; |
acc_neutral.Z = 0; |
CalibrierMittelwert(); |
timer = SetDelay(5); |
while (!CheckDelay(timer)); |
CalibrierMittelwert(); |
acc_neutral.X = abs(Mittelwert_AccNick) / ACC_AMPLIFY; |
acc_neutral.Y = abs(Mittelwert_AccRoll) / ACC_AMPLIFY; |
acc_neutral.Z = Aktuell_az; |
eeprom_write_block(&acc_neutral,&ee_acc_neutral,sizeof(struct acc_neutral_struct)); |
} |
//############################################################################ |
// Nullwerte ermitteln |
void SetNeutral(void) |
//############################################################################ |
{ |
unsigned int timer; |
acc_neutral.X = 0; |
acc_neutral.Y = 0; |
acc_neutral.Z = 0; |
AdNeutralNick = 0; |
AdNeutralRoll = 0; |
AdNeutralGier = 0; |
CalibrierMittelwert(); |
timer = SetDelay(5); |
while (!CheckDelay(timer)); |
CalibrierMittelwert(); |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
{ |
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
} |
AdNeutralNick= abs(MesswertNick); |
AdNeutralRoll= abs(MesswertRoll); |
AdNeutralGier= abs(MesswertGier); |
eeprom_read_block(&acc_neutral,&ee_acc_neutral,sizeof(struct acc_neutral_struct)); |
Mess_IntegralNick = 0; |
Mess_IntegralNick2 = 0; |
Mess_IntegralRoll = 0; |
Mess_IntegralRoll2 = 0; |
Mess_Integral_Gier = 0; |
MesswertNick = 0; |
MesswertRoll = 0; |
MesswertGier = 0; |
StartLuftdruck = Luftdruck; |
HoeheD = 0; |
Mess_Integral_Hoch = 0; |
KompassStartwert = KompassValue; |
GPS_Neutral(); |
beeptime = 50; |
} |
//############################################################################ |
// Bildet den Mittelwert aus den Messwerten |
void Mittelwert(void) |
//############################################################################ |
{ |
// ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
ANALOG_OFF; |
if(MessanzahlNick) (MesswertNick = AccumulateNick / MessanzahlNick); |
if(MessanzahlRoll) (MesswertRoll = AccumulateRoll / MessanzahlRoll); |
if(MessanzahlGier) (MesswertGier = AccumulateGier / MessanzahlGier); |
if(messanzahl_AccNick) Mittelwert_AccNick = ((long)Mittelwert_AccNick * 7 + ((ACC_AMPLIFY * (long)accumulate_AccNick) / messanzahl_AccNick)) / 8L; |
if(messanzahl_AccRoll) Mittelwert_AccRoll = ((long)Mittelwert_AccRoll * 7 + ((ACC_AMPLIFY * (long)accumulate_AccRoll) / messanzahl_AccRoll)) / 8L; |
if(messanzahl_AccHoch) Mittelwert_AccHoch = ((long)Mittelwert_AccHoch * 7 + ((long)accumulate_AccHoch) / messanzahl_AccHoch) / 8L; |
AccumulateNick = 0; MessanzahlNick = 0; |
AccumulateRoll = 0; MessanzahlRoll = 0; |
AccumulateGier = 0; MessanzahlGier = 0; |
accumulate_AccRoll = 0;messanzahl_AccRoll = 0; |
accumulate_AccNick = 0;messanzahl_AccNick = 0; |
accumulate_AccHoch = 0;messanzahl_AccHoch = 0; |
Integral_Gier = Mess_Integral_Gier; |
// Integral_Gier2 = Mess_Integral_Gier2; |
IntegralNick = Mess_IntegralNick; |
IntegralRoll = Mess_IntegralRoll; |
IntegralNick2 = Mess_IntegralNick2; |
IntegralRoll2 = Mess_IntegralRoll2; |
// ADC einschalten |
ANALOG_ON; |
/* |
//------------------------------------------------------------------------------ |
if(MesswertNick > 200) MesswertNick += 4 * (MesswertNick - 200); |
else |
if(MesswertNick < -200) MesswertNick += 4 * (MesswertNick + 200); |
if(MesswertRoll > 200) MesswertRoll += 4 * (MesswertRoll - 200); |
else |
if(MesswertRoll < -200) MesswertRoll += 4 * (MesswertRoll + 200); |
//------------------------------------------------------------------------------ |
*/ |
if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
} |
//############################################################################ |
// Messwerte beim Ermitteln der Nullage |
void CalibrierMittelwert(void) |
//############################################################################ |
{ |
// ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
ANALOG_OFF; |
if(MessanzahlNick) (MesswertNick = AccumulateNick / MessanzahlNick); |
if(MessanzahlRoll) (MesswertRoll = AccumulateRoll / MessanzahlRoll); |
if(MessanzahlGier) (MesswertGier = AccumulateGier / MessanzahlGier); |
if(messanzahl_AccNick) Mittelwert_AccNick = ((ACC_AMPLIFY * (long)accumulate_AccNick) / messanzahl_AccNick); |
if(messanzahl_AccRoll) Mittelwert_AccRoll = (ACC_AMPLIFY * (long)accumulate_AccRoll) / messanzahl_AccRoll; |
if(messanzahl_AccHoch) Mittelwert_AccHoch = accumulate_AccHoch / messanzahl_AccHoch; |
AccumulateNick = 0; MessanzahlNick = 0; |
AccumulateRoll = 0; MessanzahlRoll = 0; |
AccumulateGier = 0; MessanzahlGier = 0; |
accumulate_AccRoll = 0;messanzahl_AccRoll = 0; |
accumulate_AccNick = 0;messanzahl_AccNick = 0; |
accumulate_AccHoch = 0;messanzahl_AccHoch = 0; |
// ADC einschalten |
ANALOG_ON; |
if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
} |
//############################################################################ |
// Senden der Motorwerte per I2C-Bus |
void SendMotorData(void) |
//############################################################################ |
{ |
if(MOTOR_OFF || !MotorenEin) |
{ |
Motor_Hinten = 0; |
Motor_Vorne = 0; |
Motor_Rechts = 0; |
Motor_Links = 0; |
if(MotorTest[0]) Motor_Vorne = MotorTest[0]; |
if(MotorTest[1]) Motor_Hinten = MotorTest[1]; |
if(MotorTest[2]) Motor_Links = MotorTest[2]; |
if(MotorTest[3]) Motor_Rechts = MotorTest[3]; |
} |
DebugOut.Analog[12] = Motor_Vorne; |
DebugOut.Analog[13] = Motor_Hinten; |
DebugOut.Analog[14] = Motor_Links; |
DebugOut.Analog[15] = Motor_Rechts; |
//Start I2C Interrupt Mode |
twi_state = 0; |
motor = 0; |
i2c_start(); |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Konstanten |
// + 0-250 -> normale Werte |
// + 251 -> Poti1 |
// + 252 -> Poti2 |
// + 253 -> Poti3 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
void DefaultKonstanten1(void) |
{ |
EE_Parameter.Kanalbelegung[K_NICK] = 1; |
EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
EE_Parameter.Kanalbelegung[K_GAS] = 3; |
EE_Parameter.Kanalbelegung[K_GIER] = 4; |
EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
EE_Parameter.Kanalbelegung[K_POTI4] = 8; |
EE_Parameter.GlobalConfig = 0;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV | CFG_KOMPASS_FIX;//0x01; |
EE_Parameter.Hoehe_MinGas = 30; |
EE_Parameter.MaxHoehe = 251; // Wert : 0-32 251 -> Poti1 |
EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
EE_Parameter.Luftdruck_D = 70; // Wert : 0-250 |
EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250 |
EE_Parameter.Hoehe_Verstaerkung = 2; // Wert : 0-50 |
EE_Parameter.Stick_P = 4; //2 // Wert : 1-6 |
EE_Parameter.Stick_D = 8; //8 // Wert : 0-64 |
EE_Parameter.Gier_P = 16; // Wert : 1-20 |
EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
EE_Parameter.GyroAccFaktor = 26; // Wert : 1-64 |
EE_Parameter.KompassWirkung = 16; // Wert : 0-250 |
EE_Parameter.Gyro_P = 120; //80 // Wert : 0-250 |
EE_Parameter.Gyro_I = 150; // Wert : 0-250 |
EE_Parameter.UnterspannungsWarnung = 90; // Wert : 0-250 |
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
EE_Parameter.I_Faktor = 5; |
EE_Parameter.UserParam1 = 178; //zur freien Verwendung |
EE_Parameter.UserParam2 = 0; //zur freien Verwendung |
EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickRefresh = 5; |
memcpy(EE_Parameter.Name, "Normal\0", 12); |
} |
void DefaultKonstanten2(void) |
{ |
EE_Parameter.Kanalbelegung[K_NICK] = 1; |
EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
EE_Parameter.Kanalbelegung[K_GAS] = 3; |
EE_Parameter.Kanalbelegung[K_GIER] = 4; |
EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
EE_Parameter.GlobalConfig = 0;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01; |
EE_Parameter.Hoehe_MinGas = 30; |
EE_Parameter.MaxHoehe = 251; // Wert : 0-32 251 -> Poti1 |
EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
EE_Parameter.Luftdruck_D = 50; // Wert : 0-250 |
EE_Parameter.Hoehe_ACC_Wirkung = 50; // Wert : 0-250 |
EE_Parameter.Hoehe_Verstaerkung = 2; // Wert : 0-50 |
EE_Parameter.Stick_P = 4; //2 // Wert : 1-6 |
EE_Parameter.Stick_D = 0; //8 // Wert : 0-64 |
EE_Parameter.Gier_P = 16; // Wert : 1-20 |
EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
EE_Parameter.GyroAccFaktor = 26; // Wert : 1-64 |
EE_Parameter.KompassWirkung = 16; // Wert : 0-250 |
EE_Parameter.Gyro_P = 175; //80 // Wert : 0-250 |
EE_Parameter.Gyro_I = 175; // Wert : 0-250 |
EE_Parameter.UnterspannungsWarnung = 90; // Wert : 0-250 |
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
EE_Parameter.I_Faktor = 5; |
EE_Parameter.UserParam1 = 178; //zur freien Verwendung |
EE_Parameter.UserParam2 = 0; //zur freien Verwendung |
EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickRefresh = 5; |
memcpy(EE_Parameter.Name, "Kamera\0", 12); |
} |
//############################################################################ |
// Trägt ggf. das Poti als Parameter ein |
void ParameterZuordnung(void) |
//############################################################################ |
{ |
#define CHK_POTI(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; if(b <= min) b = min; else if(b >= max) b = max;} |
CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe,0,255); |
CHK_POTI(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100); |
CHK_POTI(Parameter_Hoehe_P,EE_Parameter.Hoehe_P,0,100); |
CHK_POTI(Parameter_Hoehe_ACC_Wirkung,EE_Parameter.Hoehe_ACC_Wirkung,0,255); |
CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung,0,255); |
CHK_POTI(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255); |
CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I,0,255); |
CHK_POTI(Parameter_I_Faktor,EE_Parameter.I_Faktor,0,255); |
CHK_POTI(Parameter_UserParam1,EE_Parameter.UserParam1,0,255); |
CHK_POTI(Parameter_UserParam2,EE_Parameter.UserParam2,0,255); |
CHK_POTI(Parameter_UserParam3,EE_Parameter.UserParam3,0,255); |
CHK_POTI(Parameter_UserParam4,EE_Parameter.UserParam4,0,255); |
CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
Ki = (float) Parameter_I_Faktor * 0.0001; |
MAX_GAS = EE_Parameter.Gas_Max; |
MIN_GAS = EE_Parameter.Gas_Min; |
} |
//############################################################################ |
// |
void MotorRegler(void) |
//############################################################################ |
{ |
int motorwert,pd_ergebnis,h,tmp_int; |
int GierMischanteil,GasMischanteil; |
static long SummeNick=0,SummeRoll=0; |
static long sollGier = 0,tmp_long,tmp_long2; |
static int IntegralFehlerNick = 0; |
static int IntegralFehlerRoll = 0; |
static unsigned int RcLostTimer; |
static unsigned char delay_neutral = 0; |
static unsigned char delay_einschalten = 0,delay_ausschalten = 0; |
static unsigned int modell_fliegt = 0; |
static int hoehenregler = 0; |
static char TimerWerteausgabe = 0; |
static char NeueKompassRichtungMerken = 1; |
Mittelwert(); |
GRN_ON; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gaswert ermitteln |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
GasMischanteil = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120; |
if(GasMischanteil < 0) GasMischanteil = 0; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Emfang schlecht |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(SenderOkay < 100) |
{ |
if(!PcZugriff) beeptime = 500; |
if(RcLostTimer) RcLostTimer--; |
else |
{ |
MotorenEin = 0; |
Notlandung = 0; |
} |
ROT_ON; |
if(modell_fliegt > 2000) // wahrscheinlich in der Luft --> langsam absenken |
{ |
GasMischanteil = EE_Parameter.NotGas; |
Notlandung = 1; |
PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] = 0; |
PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] = 0; |
PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] = 0; |
/* Poti1 = 65; |
Poti2 = 48; |
Poti3 = 0; |
*/ } |
else MotorenEin = 0; |
} |
else |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Emfang gut |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(SenderOkay > 140) |
{ |
Notlandung = 0; |
RcLostTimer = EE_Parameter.NotGasZeit * 50; |
if(GasMischanteil > 40) |
{ |
if(modell_fliegt < 0xffff) modell_fliegt++; |
} |
if((modell_fliegt < 200) || (GasMischanteil < 40)) |
{ |
SummeNick = 0; |
SummeRoll = 0; |
Mess_Integral_Gier = 0; |
Mess_Integral_Gier2 = 0; |
} |
if((GasMischanteil > 200) && MotorenEin == 0) |
{ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// auf Nullwerte kalibrieren |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) // Neutralwerte |
{ |
unsigned char setting; |
if(++delay_neutral > 200) // nicht sofort |
{ |
GRN_OFF; |
SetNeutral(); |
MotorenEin = 0; |
delay_neutral = 0; |
modell_fliegt = 0; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > 70) |
{ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5; |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], setting); // aktiven Datensatz merken |
} |
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], sizeof(struct mk_param_struct)); |
Piep(GetActiveParamSetNumber()); |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
{ |
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
} |
} |
} |
else delay_neutral = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gas ist unten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(GasMischanteil < 35) |
{ |
// Starten |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) |
{ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Einschalten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(++delay_einschalten > 200) |
{ |
delay_einschalten = 200; |
modell_fliegt = 1; |
MotorenEin = 1; |
sollGier = 0; |
Mess_Integral_Gier = 0; |
Mess_Integral_Gier2 = 0; |
Mess_IntegralNick = 0; |
Mess_IntegralRoll = 0; |
Mess_IntegralNick2 = IntegralNick; |
Mess_IntegralRoll2 = IntegralRoll; |
SummeNick = 0; |
SummeRoll = 0; |
} |
} |
else delay_einschalten = 0; |
//Auf Neutralwerte setzen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Auschalten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) |
{ |
if(++delay_ausschalten > 200) // nicht sofort |
{ |
MotorenEin = 0; |
delay_ausschalten = 200; |
modell_fliegt = 0; |
} |
} |
else delay_ausschalten = 0; |
} |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// neue Werte von der Funke |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!NewPpmData-- || Notlandung) |
{ |
ParameterZuordnung(); |
StickNick = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P; |
StickNick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; |
StickRoll = PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P; |
StickRoll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; |
StickGier = -PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; |
GyroFaktor = ((float)Parameter_Gyro_P + 10.0) / 256.0; |
IntegralFaktor = ((float) Parameter_Gyro_I) / 44000; |
if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0; |
if(GyroFaktor < 0) GyroFaktor = 0; |
if(IntegralFaktor < 0) IntegralFaktor = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Bei Empfangsausfall im Flug |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Notlandung) |
{ |
StickGier = 0; |
StickNick = 0; |
StickRoll = 0; |
GyroFaktor = 0.1; |
IntegralFaktor = 0.005; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gyro-Drift kompensieren |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define DRIFT_FAKTOR 3 |
if(ZaehlMessungen >= 1000 / DRIFT_FAKTOR) |
{ |
IntegralFehlerNick = IntegralNick2 - IntegralNick; |
IntegralFehlerRoll = IntegralRoll2 - IntegralRoll; |
ZaehlMessungen = 0; |
if(IntegralFehlerNick > 500/DRIFT_FAKTOR) AdNeutralNick++; |
if(IntegralFehlerNick < -500/DRIFT_FAKTOR) AdNeutralNick--; |
if(IntegralFehlerRoll > 500/DRIFT_FAKTOR) AdNeutralRoll++; |
if(IntegralFehlerRoll < -500/DRIFT_FAKTOR) AdNeutralRoll--; |
//if(Mess_Integral_Gier2 > 500/DRIFT_FAKTOR) AdNeutralGier--; |
//if(Mess_Integral_Gier2 <-500/DRIFT_FAKTOR) AdNeutralGier++; |
ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
Mess_IntegralNick2 = IntegralNick; |
Mess_IntegralRoll2 = IntegralRoll; |
Mess_Integral_Gier2 = Integral_Gier; |
ANALOG_ON; // ADC einschalten |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Integrale auf ACC-Signal abgleichen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick) / 16; |
tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll) / 16; |
#define AUSGLEICH 500 |
if(tmp_long > AUSGLEICH) tmp_long = AUSGLEICH; |
if(tmp_long < -AUSGLEICH) tmp_long =-AUSGLEICH; |
if(tmp_long2 > AUSGLEICH) tmp_long2 = AUSGLEICH; |
if(tmp_long2 <-AUSGLEICH) tmp_long2 =-AUSGLEICH; |
ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
Mess_IntegralNick -= tmp_long; |
Mess_IntegralRoll -= tmp_long2; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gieren wie in .66c |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(abs(StickGier) > 20) // war 35 |
{ |
if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) NeueKompassRichtungMerken = 1; |
} |
tmp_int = (long)EE_Parameter.Gier_P * ((long)StickGier * abs(StickGier)) / 512L; // expo y = ax + bx² |
tmp_int += (EE_Parameter.Gier_P * StickGier) / 4; |
sollGier = tmp_int; |
Mess_Integral_Gier -= tmp_int; |
if(Mess_Integral_Gier > 50000) Mess_Integral_Gier = 50000; // begrenzen |
if(Mess_Integral_Gier <-50000) Mess_Integral_Gier =-50000; |
ANALOG_ON; // ADC einschalten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Kompass |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV) |
{ |
int w,v; |
if (!updKompass--) // Aufruf mit ~10 Hz |
{ |
KompassValue = heading_MM3(); |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
updKompass = 50; |
} |
w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln |
v = abs(IntegralRoll /512); |
if(v > w) w = v; // grösste Neigung ermitteln |
if(w < 35 && NeueKompassRichtungMerken) |
{ |
KompassStartwert = KompassValue; |
NeueKompassRichtungMerken = 0; |
} |
w = (w * Parameter_KompassWirkung) / 64; // auf die Wirkung normieren |
w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln |
if(w > 0) |
{ |
ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern |
Mess_Integral_Gier += (KompassRichtung * w) / 32; // nach Kompass ausrichten |
ANALOG_ON; // ADC einschalten |
} |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Debugwerte zuordnen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DebugOut.Sekunden++; |
if(!TimerWerteausgabe--) |
{ |
TimerWerteausgabe = 49; |
// DebugOut.Analog[0] = MesswertNick; |
// DebugOut.Analog[1] = MesswertRoll; |
// DebugOut.Analog[2] = MesswertGier; |
DebugOut.Analog[0] = IntegralNick / EE_Parameter.GyroAccFaktor; |
DebugOut.Analog[1] = IntegralRoll / EE_Parameter.GyroAccFaktor; |
DebugOut.Analog[2] = Mittelwert_AccNick; |
DebugOut.Analog[3] = Mittelwert_AccRoll; |
DebugOut.Analog[4] = MesswertGier; |
DebugOut.Analog[5] = HoehenWert; |
DebugOut.Analog[6] = (Mess_Integral_Hoch / 512); |
DebugOut.Analog[7] = GasMischanteil; |
DebugOut.Analog[8] = KompassValue; |
DebugOut.Analog[9] = MM3.x_axis; |
DebugOut.Analog[10] = MM3.y_axis; |
DebugOut.Analog[11] = MM3.z_axis; |
// DebugOut.Analog[9] = SollHoehe; |
// DebugOut.Analog[10] = Mess_Integral_Gier / 128; |
// DebugOut.Analog[11] = KompassStartwert; |
// DebugOut.Analog[10] = Parameter_Gyro_I; |
// DebugOut.Analog[10] = EE_Parameter.Gyro_I; |
// DebugOut.Analog[9] = KompassRichtung; |
// DebugOut.Analog[10] = GasMischanteil; |
// DebugOut.Analog[3] = HoeheD * 32; |
// DebugOut.Analog[4] = hoehenregler; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Drehgeschwindigkeit und -winkel zu einem Istwert zusammenfassen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
MesswertNick = IntegralNick * IntegralFaktor + MesswertNick * GyroFaktor; |
MesswertRoll = IntegralRoll * IntegralFaktor + MesswertRoll * GyroFaktor; |
MesswertGier = MesswertGier * (GyroFaktor/2) + Integral_Gier * IntegralFaktor; |
// Maximalwerte abfangen |
#define MAX_SENSOR 2048 |
if(MesswertNick > MAX_SENSOR) MesswertNick = MAX_SENSOR; |
if(MesswertNick < -MAX_SENSOR) MesswertNick = -MAX_SENSOR; |
if(MesswertRoll > MAX_SENSOR) MesswertRoll = MAX_SENSOR; |
if(MesswertRoll < -MAX_SENSOR) MesswertRoll = -MAX_SENSOR; |
if(MesswertGier > MAX_SENSOR) MesswertGier = MAX_SENSOR; |
if(MesswertGier < -MAX_SENSOR) MesswertGier = -MAX_SENSOR; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Höhenregelung |
// Die Höhenregelung schwächt lediglich das Gas ab, erhöht es allerdings nicht |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//OCR0B = 180 - (Poti1 + 120) / 4; |
//DruckOffsetSetting = OCR0B; |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung |
{ |
int tmp_int; |
if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert |
{ |
if(Parameter_MaxHoehe < 50) |
{ |
SollHoehe = HoehenWert - 20; // Parameter_MaxHoehe ist der PPM-Wert des Schalters |
HoehenReglerAktiv = 0; |
} |
else |
HoehenReglerAktiv = 1; |
} |
else |
{ |
SollHoehe = Parameter_MaxHoehe * EE_Parameter.Hoehe_Verstaerkung - 20; |
HoehenReglerAktiv = 1; |
} |
if(Notlandung) SollHoehe = 0; |
h = HoehenWert; |
if((h > SollHoehe) && HoehenReglerAktiv) // zu hoch --> drosseln |
{ h = ((h - SollHoehe) * (int) Parameter_Hoehe_P) / 16; // Differenz bestimmen --> P-Anteil |
h = GasMischanteil - h; // vom Gas abziehen |
h -= (HoeheD * Parameter_Luftdruck_D)/8; // D-Anteil |
tmp_int = ((Mess_Integral_Hoch / 512) * (signed long) Parameter_Hoehe_ACC_Wirkung) / 32; |
if(tmp_int > 50) tmp_int = 50; |
else if(tmp_int < -50) tmp_int = -50; |
h -= tmp_int; |
hoehenregler = (hoehenregler*15 + h) / 16; |
if(hoehenregler < EE_Parameter.Hoehe_MinGas) // nicht unter MIN |
{ |
if(GasMischanteil >= EE_Parameter.Hoehe_MinGas) hoehenregler = EE_Parameter.Hoehe_MinGas; |
if(GasMischanteil < EE_Parameter.Hoehe_MinGas) hoehenregler = GasMischanteil; |
} |
if(hoehenregler > GasMischanteil) hoehenregler = GasMischanteil; // nicht mehr als Gas |
GasMischanteil = hoehenregler; |
} |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Mischer und PI-Regler |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gier-Anteil |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
GierMischanteil = MesswertGier - sollGier; // Regler für Gier |
if(GierMischanteil > 100) GierMischanteil = 100; |
if(GierMischanteil < -100) GierMischanteil = -100; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Nick-Achse |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DiffNick = Kp * (MesswertNick - (StickNick - GPS_Nick)); // Differenz bestimmen |
SummeNick += DiffNick; // I-Anteil |
if(SummeNick > 0) SummeNick-= (abs(SummeNick)/256 + 1); else SummeNick += abs(SummeNick)/256 + 1; |
if(SummeNick > 16000) SummeNick = 16000; |
if(SummeNick < -16000) SummeNick = -16000; |
pd_ergebnis = DiffNick + Ki * SummeNick; // PI-Regler für Nick |
// Motor Vorn |
motorwert = GasMischanteil + pd_ergebnis + GierMischanteil; // Mischer |
if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Vorne = motorwert; |
// Motor Heck |
motorwert = GasMischanteil - pd_ergebnis + GierMischanteil; |
if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Hinten = motorwert; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Roll-Achse |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DiffRoll = Kp * (MesswertRoll - (StickRoll - GPS_Roll)); // Differenz bestimmen |
SummeRoll += DiffRoll; // I-Anteil |
if(SummeRoll > 0) SummeRoll-= (abs(SummeRoll)/256 + 1); else SummeRoll += abs(SummeRoll)/256 + 1; |
if(SummeRoll > 16000) SummeRoll = 16000; |
if(SummeRoll < -16000) SummeRoll = -16000; |
pd_ergebnis = DiffRoll + Ki * SummeRoll; // PI-Regler für Roll |
// Motor Links |
motorwert = GasMischanteil + pd_ergebnis - GierMischanteil; |
if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Links = motorwert; |
// Motor Rechts |
motorwert = GasMischanteil - pd_ergebnis - GierMischanteil; |
if ((motorwert < 0) | (GasMischanteil < 10)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Rechts = motorwert; |
// +++++++++++++++++++++++++++++++++++++++++++++++ |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/fc.h |
---|
0,0 → 1,113 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
#ifndef _FC_H |
#define _FC_H |
extern volatile unsigned char Timeout; |
extern unsigned char Sekunde,Minute; |
extern long IntegralNick,IntegralNick2; |
extern long IntegralRoll,IntegralRoll2; |
extern long Integral_Gier; |
extern volatile long Mess_IntegralNick,Mess_IntegralNick2; |
extern volatile long Mess_IntegralRoll,Mess_IntegralRoll2; |
extern volatile long Mess_Integral_Hoch; |
extern volatile long Mess_Integral_Gier,Mess_Integral_Gier2; |
extern int KompassValue; |
extern int KompassStartwert; |
extern int KompassRichtung; |
extern int HoehenWert; |
extern int SollHoehe; |
extern int MesswertNick,MesswertRoll,MesswertGier; |
extern int Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch; |
extern volatile int AdNeutralNick,AdNeutralRoll,AdNeutralGier; |
void MotorRegler(void); |
void SendMotorData(void); |
void CalibrierMittelwert(void); |
void Mittelwert(void); |
void SetNeutral(void); |
void Piep(unsigned char Anzahl); |
void DefaultKonstanten1(void); |
void DefaultKonstanten2(void); |
unsigned char h,m,s; |
volatile unsigned char Timeout; |
int DiffNick,DiffRoll; |
extern int Poti1, Poti2, Poti3, Poti4; |
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links; |
unsigned char MotorWert[5]; |
volatile unsigned char SenderOkay; |
int StickNick,StickRoll,StickGier; |
char MotorenEin; |
extern void DefaultKonstanten(void); |
struct mk_param_struct |
{ |
unsigned char Kanalbelegung[8]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
unsigned char Hoehe_MinGas; // Wert : 0-100 |
unsigned char Luftdruck_D; // Wert : 0-250 |
unsigned char MaxHoehe; // Wert : 0-32 |
unsigned char Hoehe_P; // Wert : 0-32 |
unsigned char Hoehe_Verstaerkung; // Wert : 0-50 |
unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250 |
unsigned char Stick_P; // Wert : 1-6 |
unsigned char Stick_D; // Wert : 0-64 |
unsigned char Gier_P; // Wert : 1-20 |
unsigned char Gas_Min; // Wert : 0-32 |
unsigned char Gas_Max; // Wert : 33-250 |
unsigned char GyroAccFaktor; // Wert : 1-64 |
unsigned char KompassWirkung; // Wert : 0-32 |
unsigned char Gyro_P; // Wert : 10-250 |
unsigned char Gyro_I; // Wert : 0-250 |
unsigned char UnterspannungsWarnung; // Wert : 0-250 |
unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
unsigned char UfoAusrichtung; // X oder + Formation |
unsigned char I_Faktor; // Wert : 0-250 |
unsigned char UserParam1; // Wert : 0-250 |
unsigned char UserParam2; // Wert : 0-250 |
unsigned char UserParam3; // Wert : 0-250 |
unsigned char UserParam4; // Wert : 0-250 |
unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
unsigned char ServoNickRefresh; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
unsigned char ServoNickCompInvert; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
unsigned char Reserved[7]; |
char Name[12]; |
}; |
struct acc_neutral_struct |
{ |
volatile int X; |
volatile int Y; |
volatile float Z; |
}; |
extern struct acc_neutral_struct acc_neutral; |
extern void calib_acc(void); |
extern struct mk_param_struct EE_Parameter; |
extern unsigned char Parameter_Luftdruck_D; |
extern unsigned char Parameter_MaxHoehe; |
extern unsigned char Parameter_Hoehe_P; |
extern unsigned char Parameter_Hoehe_ACC_Wirkung; |
extern unsigned char Parameter_KompassWirkung; |
extern unsigned char Parameter_Gyro_P; |
extern unsigned char Parameter_Gyro_I; |
extern unsigned char Parameter_Gier_P; |
extern unsigned char Parameter_ServoNickControl; |
#endif //_FC_H |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/flight.pnproj |
---|
0,0 → 1,0 |
<Project name="Flight-Ctrl"><File path="uart.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="uart.c"></File><File path="printf_P.h"></File><File path="printf_P.c"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="old_macros.h"></File><File path="twimaster.c"></File><File path="version.txt"></File><File path="twimaster.h"></File><File path="rc.c"></File><File path="rc.h"></File><File path="fc.h"></File><File path="fc.c"></File><File path="menu.h"></File><File path="menu.c"></File><File path="_Settings.h"></File><File path="analog.c"></File><File path="analog.h"></File><File path="GPS.c"></File><File path="gps.h"></File><File path="license_buss.txt"></File><File path="mymath.c"></File><File path="mymath.h"></File><File path="compass.c"></File><File path="compass.h"></File><File path="COPYING"></File><File path="COPYING.LESSER"></File></Project> |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/flight.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="Flight-Ctrl" x="true"></e></ViewState></pd> |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/gps.h |
---|
0,0 → 1,4 |
extern signed int GPS_Nick; |
extern signed int GPS_Roll; |
extern void GPS_Neutral(void); |
extern void GPS_BerechneZielrichtung(void); |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/license_buss.txt |
---|
0,0 → 1,52 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten und nichtkommerziellen Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt und genannt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-profit use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet, our webpage (http://www.MikroKopter.de) must be |
// + clearly linked and named as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/main.c |
---|
0,0 → 1,236 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten und nicht-kommerziellen Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt und genannt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
// Reservierung im EEPROM |
unsigned char EEPromArray[10] EEMEM; |
struct mk_param_struct EEParameterArray[5] EEMEM; |
// -- Parametersatz aus EEPROM lesen --- |
// number [0..5] |
void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if (number > 5) number = 5; |
number--; // Auf Index 0 bis 4 anpassen |
eeprom_read_block(buffer, &EEParameterArray[number], length); |
} |
// -- Parametersatz ins EEPROM schreiben --- |
// number [0..5] |
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if (number > 5) number = 5; |
number--; // Auf Index 0 bis 4 anpassen |
eeprom_write_block(buffer, &EEParameterArray[number], length); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken |
} |
unsigned char GetActiveParamSetNumber(void) |
{ |
return(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET])); |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
unsigned int timer; |
unsigned int timer2 = 0; |
DDRC = 0x01; // SCL |
PORTC = 0xff; // Pullup SDA |
DDRB = 0x1B; // LEDs und Druckoffset |
PORTB |= (1<<PB0); // LED_Rot |
DDRD = 0x3E; // Speaker & TXD & J3 J4 J5 |
DDRD |= (1<<PD7); // J7 |
PORTD = 0xF7; |
MCUSR &=~(1<<WDRF); |
WDTCSR |= (1<<WDCE)|(1<<WDE); |
WDTCSR = 0; |
beeptime = 1000; |
StickGier = 0; PPM_in[K_GAS] = 0;StickRoll = 0; StickNick = 0; |
ROT_OFF; |
Timer_Init(); |
UART_Init(); |
rc_sum_init(); |
ADC_Init(); |
i2c_init(); |
init_MM3(); |
sei(); |
VersionInfo.Hauptversion = VERSION_HAUPTVERSION; |
VersionInfo.Nebenversion = VERSION_NEBENVERSION; |
VersionInfo.PCKompatibel = VERSION_KOMPATIBEL; |
printf("\n\rFlightControl V%d.%d ", VERSION_HAUPTVERSION, VERSION_NEBENVERSION); |
printf("\n\r=============================="); |
GRN_ON; |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != 10) // seit V 0.60 |
{ |
printf("\n\rInit. EEPROM: Generiere Default-Parameter..."); |
DefaultKonstanten1(); |
for (unsigned char i=0;i<6;i++) |
{ |
if(i==2) DefaultKonstanten2(); |
WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], sizeof(struct mk_param_struct)); |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], 1); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], 10); |
calib_acc(); |
} |
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], sizeof(struct mk_param_struct)); |
printf("\n\rBenutze Parametersatz %d", GetActiveParamSetNumber()); |
//kurze Wartezeit (sonst reagiert die "Kompass kalibrieren?"-Abfrage nicht |
timer = SetDelay(500); |
while(!CheckDelay(timer)); |
//Kompass kalibrieren? |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 100 && PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 100) |
{ |
printf("\n\rKalibriere Kompass"); |
calib_MM3(); |
} |
//Neutrallage kalibrieren? |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 100 && PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -100) |
{ |
printf("\n\rKalibriere Neutrallage"); |
calib_acc(); |
} |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
printf("\n\rAbgleich Luftdrucksensor.."); |
timer = SetDelay(2500); |
SucheLuftruckOffset(); |
while (!CheckDelay(timer)); |
printf("OK\n\r"); |
} |
SetNeutral(); |
ROT_OFF; |
beeptime = 2000; |
DebugIn.Analog[1] = 1000; |
DebugIn.Digital[0] = 0x55; |
printf("\n\rSteuerung: "); |
if (EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) printf("HeadingHold"); |
else printf("Neutral"); |
printf("\n\n\r"); |
LcdClear(); |
while (1) |
{ |
if (UpdateMotor) // ReglerIntervall |
{ |
UpdateMotor=0; |
MotorRegler(); |
SendMotorData(); |
ROT_OFF; |
if(PcZugriff) PcZugriff--; |
if(SenderOkay) SenderOkay--; |
if (UBat < EE_Parameter.UnterspannungsWarnung) |
{ |
beeptime = 2000; |
} |
if(!Timeout) |
{ |
i2c_init(); |
} |
else |
{ |
ROT_OFF; |
} |
} |
if(SIO_DEBUG) |
{ |
DatenUebertragung(); |
BearbeiteRxDaten(); |
} |
else BearbeiteRxDaten(); |
if(CheckDelay(timer2)) |
{ |
if(MotorenEin) PORTC ^= 0x10; else PORTC &= ~0x10; |
timer = SetDelay(500); |
} |
} |
return (1); |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/main.h |
---|
0,0 → 1,87 |
#ifndef _MAIN_H |
#define _MAIN_H |
//Hier die Quarz Frequenz einstellen |
#if defined (__AVR_ATmega32__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
#endif |
#if defined (__AVR_ATmega644__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
//#define SYSCLK 16000000L //Quarz Frequenz in Hz |
#endif |
// neue Hardware |
#define ROT_OFF PORTB &=~(1<<PB0) |
#define ROT_ON PORTB |= (1<<PB0) |
#define ROT_FLASH PORTB ^= (1<<PB0) |
#define GRN_OFF PORTB &=~(1<<PB1) |
#define GRN_ON PORTB |= (1<<PB1) |
#define GRN_FLASH PORTB ^= (1<<PB1) |
//#ifndef F_CPU |
//#error ################## F_CPU nicht definiert oder ungültig ############# |
//#endif |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//#define ANZ_MITTELWERT 4 |
#define EEPROM_ADR_VALID 1 |
#define EEPROM_ADR_ACTIVE_SET 2 |
#define EEPROM_ADR_LAST_OFFSET 3 |
#define CFG_HOEHENREGELUNG 0x01 |
#define CFG_HOEHEN_SCHALTER 0x02 |
#define CFG_HEADING_HOLD 0x04 |
#define CFG_KOMPASS_AKTIV 0x08 |
#define CFG_KOMPASS_FIX 0x10 |
#define CFG_GPS_AKTIV 0x20 |
extern void ReadParameterSet (unsigned char number, unsigned char *buffer, unsigned char length); |
extern void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length); |
extern unsigned char GetActiveParamSetNumber(void); |
extern unsigned char EEPromArray[]; |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "old_macros.h" |
#include "_settings.h" |
#include "printf_P.h" |
#include "compass.h" |
#include "timer0.h" |
#include "uart.h" |
#include "analog.h" |
#include "twimaster.h" |
#include "menu.h" |
#include "rc.h" |
#include "fc.h" |
#include "gps.h" |
#include "mymath.h" |
#ifndef EEMEM |
#define EEMEM __attribute__ ((section (".eeprom"))) |
#endif |
#define DEBUG_DISPLAY_INTERVALL 123 // in ms |
#define DELAY_US(x) ((unsigned int)( (x) * 1e-6 * F_CPU )) |
#endif //_MAIN_H |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/makefile |
---|
0,0 → 1,393 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega644 |
F_CPU = 20000000 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 60 |
VERSION_KOMPATIBEL = 4 # PC-Kompatibilität |
#------------------------------------------------------------------- |
ifeq ($(MCU), atmega32) |
# FUSE_SETTINGS= -u -U lfuse:w:0xff:m -U hfuse:w:0xcf:m |
HEX_NAME = MEGA32 |
endif |
ifeq ($(MCU), atmega644) |
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
#FUSE_SETTINGS = -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
# -u bei neuen Controllern wieder einspielen |
HEX_NAME = MEGA644 |
endif |
ifeq ($(F_CPU), 16000000) |
QUARZ = 16MHZ |
endif |
ifeq ($(F_CPU), 20000000) |
QUARZ = 20MHZ |
endif |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)_MM3 |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c printf_P.c timer0.c analog.c menu.c |
SRC += twimaster.c rc.c fc.c GPS.c |
SRC += compass.c mymath.c |
########################################################################################################## |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-mtiny-stack -mcall-prologues \ |
#-Wno-pointer-sign \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) -DVERSION_KOMPATIBEL=$(VERSION_KOMPATIBEL) |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
##LDFLAGS += -T./linkerfile/avr5.x |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
#AVRDUDE_PROGRAMMER = stk200 |
AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = ponyser |
#falls Ponyser ausgewählt wird, muss sich unsere avrdude-Configdatei im Bin-Verzeichnis des Compilers befinden |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
#AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex $(FUSE_SETTINGS) |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
AVRDUDE_FLAGS += -V |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
#ALL_CFLAGS = -mmcu=$(MCU) -DF_CPU=$(F_CPU) -I. $(CFLAGS) |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
$(REMOVE) $(TARGET).eep |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/math.d |
---|
0,0 → 1,2 |
math.o math.d : math.c main.h old_macros.h _settings.h printf_P.h compass.h \ |
timer0.h uart.h analog.h twimaster.h menu.h rc.h fc.h gps.h math.h |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/menu.c |
---|
0,0 → 1,129 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned int TestInt = 0; |
#define ARRAYGROESSE 10 |
unsigned char Array[ARRAYGROESSE] = {1,2,3,4,5,6,7,8,9,10}; |
char DisplayBuff[80] = "Hallo Welt"; |
unsigned char DispPtr = 0; |
unsigned char RemoteTasten = 0; |
#define KEY1 0x01 |
#define KEY2 0x02 |
#define KEY3 0x04 |
#define KEY4 0x08 |
#define KEY5 0x10 |
void LcdClear(void) |
{ |
unsigned char i; |
for(i=0;i<80;i++) DisplayBuff[i] = ' '; |
} |
void Menu(void) |
{ |
static unsigned char MaxMenue = 12,MenuePunkt=0; |
if(RemoteTasten & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LcdClear(); } |
if(RemoteTasten & KEY2) { MenuePunkt++; LcdClear(); } |
if((RemoteTasten & KEY1) && (RemoteTasten & KEY2)) MenuePunkt = 0; |
LCD_printfxy(17,0,"[%i]",MenuePunkt); |
switch(MenuePunkt) |
{ |
case 0: |
LCD_printfxy(0,0,"++ MikroKopter ++"); |
LCD_printfxy(0,1,"V%d.%d",VERSION_HAUPTVERSION, VERSION_NEBENVERSION); |
LCD_printfxy(0,2,"Setting: %d ",GetActiveParamSetNumber()); |
LCD_printfxy(0,3,"(c) Holger Buss"); |
// if(RemoteTasten & KEY3) TestInt--; |
// if(RemoteTasten & KEY4) TestInt++; |
break; |
case 1: |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
LCD_printfxy(0,0,"Hoehe: %5i",HoehenWert); |
LCD_printfxy(0,1,"SollHoehe: %5i",SollHoehe); |
LCD_printfxy(0,2,"Luftdruck: %5i",MessLuftdruck); |
LCD_printfxy(0,3,"Off : %5i",DruckOffsetSetting); |
} |
else |
{ |
LCD_printfxy(0,1,"Keine "); |
LCD_printfxy(0,2,"Höhenregelung"); |
} |
break; |
case 2: |
LCD_printfxy(0,0,"akt. Lage"); |
LCD_printfxy(0,1,"Nick: %5i",IntegralNick/1024); |
LCD_printfxy(0,2,"Roll: %5i",IntegralRoll/1024); |
LCD_printfxy(0,3,"Kompass: %5i",KompassValue); |
break; |
case 3: |
LCD_printfxy(0,0,"K1:%4i K2:%4i ",PPM_in[1],PPM_in[2]); |
LCD_printfxy(0,1,"K3:%4i K4:%4i ",PPM_in[3],PPM_in[4]); |
LCD_printfxy(0,2,"K5:%4i K6:%4i ",PPM_in[5],PPM_in[6]); |
LCD_printfxy(0,3,"K7:%4i Kanäle ",PPM_in[7]); |
break; |
case 4: |
LCD_printfxy(0,0,"Ni:%4i Ro:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_NICK]],PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]); |
LCD_printfxy(0,1,"Gs:%4i Gi:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_GAS]],PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]); |
LCD_printfxy(0,2,"P1:%4i P2:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]],PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]]); |
LCD_printfxy(0,3,"P3:%4i Kanäle ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]]); |
break; |
case 5: |
LCD_printfxy(0,0,"Gyro - Sensor"); |
LCD_printfxy(0,1,"Nick %4i (%3i)",AccumulateNick / MessanzahlNick, AdNeutralNick); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AccumulateRoll / MessanzahlRoll, AdNeutralRoll); |
LCD_printfxy(0,3,"Gier %4i (%3i)",AccumulateGier / MessanzahlGier, AdNeutralGier); |
break; |
case 6: |
LCD_printfxy(0,0,"ACC - Sensor"); |
LCD_printfxy(0,1,"Nick %4i (%3i)",accumulate_AccNick / messanzahl_AccNick,acc_neutral.X); |
LCD_printfxy(0,2,"Roll %4i (%3i)",accumulate_AccRoll / messanzahl_AccRoll,acc_neutral.Y); |
LCD_printfxy(0,3,"Hoch %4i (%3i)",Aktuell_az/*accumulate_AccHoch / messanzahl_AccHoch*/,(int)acc_neutral.Z); |
break; |
case 7: |
LCD_printfxy(0,1,"Spannung: %5i",UBat); |
LCD_printfxy(0,2,"Empf.Pegel:%5i",SenderOkay); |
break; |
case 8: |
LCD_printfxy(0,0,"Kompass "); |
LCD_printfxy(0,1,"Richtung: %5i",KompassRichtung); |
LCD_printfxy(0,2,"Messwert: %5i",KompassValue); |
LCD_printfxy(0,3,"Start: %5i",KompassStartwert); |
break; |
case 9: |
LCD_printfxy(0,0,"Poti1: %3i",Poti1); |
LCD_printfxy(0,1,"Poti2: %3i",Poti2); |
LCD_printfxy(0,2,"Poti3: %3i",Poti3); |
LCD_printfxy(0,3,"Poti4: %3i",Poti4); |
break; |
case 10: |
LCD_printfxy(0,0,"Servo " ); |
LCD_printfxy(0,1,"Setpoint %3i",Parameter_ServoNickControl); |
LCD_printfxy(0,2,"Stellung: %3i",ServoValue); |
LCD_printfxy(0,3,"Range:%3i-%3i",EE_Parameter.ServoNickMin,EE_Parameter.ServoNickMax); |
break; |
case 11: |
LCD_printfxy(0,0,"MM3 Off"); |
LCD_printfxy(0,1,"X_Offset: %3i",MM3_calib.X_off); |
LCD_printfxy(0,2,"Y_Offset: %3i",MM3_calib.Y_off); |
LCD_printfxy(0,3,"Z_Offset: %3i",MM3_calib.Z_off); |
break; |
case 12: |
LCD_printfxy(0,0,"MM3 Range"); |
LCD_printfxy(0,1,"X_Range: %4i",MM3_calib.X_range); |
LCD_printfxy(0,2,"Y_Range: %4i",MM3_calib.Y_range); |
LCD_printfxy(0,3,"Z_Range: %4i",MM3_calib.Z_range); |
break; |
default: MaxMenue = MenuePunkt - 1; |
MenuePunkt = 0; |
break; |
} |
RemoteTasten = 0; |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/menu.h |
---|
0,0 → 1,7 |
void LcdClear(void); |
extern void Menu(void); |
extern char DisplayBuff[80]; |
extern unsigned char DispPtr; |
unsigned char RemoteTasten; |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/mymath.c |
---|
0,0 → 1,110 |
/* |
Copyright 2007, Niklas Nold |
This program (files math.c and math.h) is free software; you can redistribute it and/or modify |
it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; |
either version 3 of the License, or (at your option) any later version. |
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; |
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
Please note: All the other files for the project "Mikrokopter" by H. Buss are under the license (license_buss.txt) published by www.mikrokopter.de |
*/ |
#include "main.h" |
const int8_t pgm_atan[346] PROGMEM = {0,1,2,3,4,4,5,6,7,8,9,10,11,11,12,13,14,15,16,17,17,18,19,20,21,21,22,23,24,24,25,26,27,27,28,29,29,30,31,31,32,33,33,34,35,35,36,36,37,37,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,45,46,46,47,47,48,48,48,49,49,50,50,50,51,51,51,52,52,52,53,53,53,54,54,54,55,55,55,55,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,60,61,61,61,61,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,68,69,69,69,69,69,69,69,69,69,70,70,70,70,70,70,70,70,70,71,71,71,71,71,71,71,71,71,71,71,72,72,72,72,72,72,72,72,72,72,72,73,73,73,73,73,73,73,73,73,73,73,73,73,73,74,74,74,74,74,74,74,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79}; |
//############################################################################ |
// Arkustangens2 im Gradmaß |
signed int atan2_i(long x, long y) |
//############################################################################ |
{ |
int i,angle; |
int8_t m; |
if (!x && !y) return 0; //atan2 = 0 für x und y = 0 |
if (y < 0) m=-1; |
else m=1; |
if (!x) return (90*m); // atan2 = 90° für x = 0 |
i = abs((y*64) / x); // Berechne i für die Lookup table (Schrittweite atan(x) ist 0,015625 -> y *64) |
if (i<346) angle = pgm_read_byte(&pgm_atan[i]); // Lookup für 1° bis 79° |
else if (i>7334) angle = 90; // Grenzwert ist 90° |
else if (i>2444) angle = 89; // 89° bis 80° über Wertebereiche |
else if (i>1465) angle = 88; |
else if (i>1046) angle = 87; |
else if (i>813) angle = 86; |
else if (i>664) angle = 85; |
else if (i>561) angle = 84; |
else if (i>486) angle = 83; |
else if (i>428) angle = 82; |
else if (i>382) angle = 81; |
else angle = 80; // (i>345) |
if (x > 0) return (angle*m); // Quadrant I und IV |
else if ((x < 0) && (m > 0)) return (-angle + 180); // Quadrant II |
else return (angle - 180); // x < 0 && y < 0 Quadrant III |
} |
const int pgm_sinus_i[91] PROGMEM = {0,18,36,54,71,89,107,125,143,160,178,195,213,230,248,265,282,299,316,333,350,367,384,400,416,433,449,465,481,496,512,527,543,558,573,587,602,616,630,644,658,672,685,698,711,724,737,749,761,773,784,796,807,818,828,839,849,859,868,878,887,896,904,912,920,928,935,943,949,956,962,968,974,979,984,989,994,998,1002,1005,1008,1011,1014,1016,1018,1020,1022,1023,1023,1024,1024}; |
//############################################################################ |
// Kosinusfunktion im Gradmaß |
signed int cos_i(signed int winkel) |
//############################################################################ |
{ |
return (sin_i(90-winkel)); |
} |
//############################################################################ |
// Sinusfunktion im Gradmaß |
signed int sin_i(signed int winkel) |
//############################################################################ |
{ |
short int m,n; |
signed int sinus; |
if (winkel < 0) |
{ |
m = -1; |
winkel = abs(winkel); |
} |
else m = +1; |
// Quadranten auswerten |
if (winkel <= 90) n=1; |
else if ((winkel > 90) && (winkel <= 180)) {winkel = 180 - winkel; n = 1;} |
else if ((winkel > 180) && (winkel <= 270)) {winkel = winkel - 180; n = -1;} |
else {winkel = 360 - winkel; n = -1;} //if ((winkel > 270) && (winkel <= 360)) |
sinus = pgm_read_word(&pgm_sinus_i[winkel]); |
return (sinus*m*n); |
} |
/* |
const uint8_t pgm_asin[201] PROGMEM = {0,0,1,1,1,1,2,2,2,3,3,3,3,4,4,4,5,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9,10,10,10,11,11,11,12,12,12,12,13,13,13,14,14,14,14,15,15,15,16,16,16,17,17,17,17,18,18,18,19,19,19,20,20,20,20,21,21,21,22,22,22,23,23,23,24,24,24,25,25,25,25,26,26,26,27,27,27,28,28,28,29,29,29,30,30,30,31,31,31,32,32,32,33,33,33,34,34,34,35,35,35,36,36,37,37,37,38,38,38,39,39,39,40,40,41,41,41,42,42,42,43,43,44,44,44,45,45,46,46,46,47,47,48,48,49,49,49,50,50,51,51,52,52,53,53,54,54,55,55,56,56,57,57,58,58,59,59,60,60,61,62,62,63,64,64,65,66,66,67,68,68,69,70,71,72,73,74,75,76,77,79,80,82,84,90}; |
//############################################################################ |
// Akurssinusfunktion im Gradmaß |
int8_t asin_i(signed int i) |
//############################################################################ |
{ |
signed char m; |
if (i < 0) {m=-1;i=abs(i);} |
else m=1; |
i %= 200; |
return (pgm_read_byte(&pgm_asin[i]) * m); |
} |
*/ |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/mymath.h |
---|
0,0 → 1,8 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
extern int atan2_i(long x, long y); |
extern signed int cos_i(signed int winkel); |
extern signed int sin_i(signed int winkel); |
//extern int8_t asin_i(signed int i); |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/old_macros.h |
---|
0,0 → 1,47 |
/* |
For backwards compatibility only. |
Ingo Busker ingo@mikrocontroller.com |
*/ |
#ifndef cbi |
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) |
#endif |
#ifndef sbi |
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) |
#endif |
#ifndef inb |
#define inb(sfr) _SFR_BYTE(sfr) |
#endif |
#ifndef outb |
#define outb(sfr, val) (_SFR_BYTE(sfr) = (val)) |
#endif |
#ifndef inw |
#define inw(sfr) _SFR_WORD(sfr) |
#endif |
#ifndef outw |
#define outw(sfr, val) (_SFR_WORD(sfr) = (val)) |
#endif |
#ifndef outp |
#define outp(val, sfr) outb(sfr, val) |
#endif |
#ifndef inp |
#define inp(sfr) inb(sfr) |
#endif |
#ifndef BV |
#define BV(bit) _BV(bit) |
#endif |
#ifndef PRG_RDB |
#define PRG_RDB pgm_read_byte |
#endif |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/printf_P.c |
---|
0,0 → 1,480 |
// Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist nicht von der Lizenz für den MikroKopter-Teil unterstellt |
/* |
Copyright (C) 1993 Free Software Foundation |
This file is part of the GNU IO Library. This library is free |
software; you can redistribute it and/or modify it under the |
terms of the GNU General Public License as published by the |
Free Software Foundation; either version 2, or (at your option) |
any later version. |
This library is distributed in the hope that it will be useful, |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
GNU General Public License for more details. |
You should have received a copy of the GNU General Public License |
along with this library; see the file COPYING. If not, write to the Free |
Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
As a special exception, if you link this library with files |
compiled with a GNU compiler to produce an executable, this does not cause |
the resulting executable to be covered by the GNU General Public License. |
This exception does not however invalidate any other reasons why |
the executable file might be covered by the GNU General Public License. */ |
/* |
* Copyright (c) 1990 Regents of the University of California. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. [rescinded 22 July 1999] |
* 4. Neither the name of the University nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
/****************************************************************************** |
This file is a patched version of printf called _printf_P |
It is made to work with avr-gcc for Atmel AVR MCUs. |
There are some differences from standard printf: |
1. There is no floating point support (with fp the code is about 8K!) |
2. Return type is void |
3. Format string must be in program memory (by using macro printf this is |
done automaticaly) |
4. %n is not implemented (just remove the comment around it if you need it) |
5. If LIGHTPRINTF is defined, the code is about 550 bytes smaller and the |
folowing specifiers are disabled : |
space # * . - + p s o O |
6. A function void uart_sendchar(char c) is used for output. The UART must |
be initialized before using printf. |
Alexander Popov |
sasho@vip.orbitel.bg |
******************************************************************************/ |
/* |
* Actual printf innards. |
* |
* This code is large and complicated... |
*/ |
#include <string.h> |
#ifdef __STDC__ |
#include <stdarg.h> |
#else |
#include <varargs.h> |
#endif |
#include "main.h" |
//#define LIGHTPRINTF |
char PrintZiel; |
char Putchar(char zeichen) |
{ |
if(PrintZiel == OUT_LCD) { DisplayBuff[DispPtr++] = zeichen; return(1);} |
else return(uart_putchar(zeichen)); |
} |
void PRINT(const char * ptr, unsigned int len) |
{ |
for(;len;len--) Putchar(*ptr++); |
} |
void PRINTP(const char * ptr, unsigned int len) |
{ |
for(;len;len--) Putchar(pgm_read_byte(ptr++)); |
} |
void PAD_SP(signed char howmany) |
{ |
for(;howmany>0;howmany--) Putchar(' '); |
} |
void PAD_0(signed char howmany) |
{ |
for(;howmany>0;howmany--) Putchar('0'); |
} |
#define BUF 40 |
/* |
* Macros for converting digits to letters and vice versa |
*/ |
#define to_digit(c) ((c) - '0') |
#define is_digit(c) ((c)<='9' && (c)>='0') |
#define to_char(n) ((n) + '0') |
/* |
* Flags used during conversion. |
*/ |
#define LONGINT 0x01 /* long integer */ |
#define LONGDBL 0x02 /* long double; unimplemented */ |
#define SHORTINT 0x04 /* short integer */ |
#define ALT 0x08 /* alternate form */ |
#define LADJUST 0x10 /* left adjustment */ |
#define ZEROPAD 0x20 /* zero (as opposed to blank) pad */ |
#define HEXPREFIX 0x40 /* add 0x or 0X prefix */ |
void _printf_P (char ziel,char const *fmt0, ...) /* Works with string from FLASH */ |
{ |
va_list ap; |
register const char *fmt; /* format string */ |
register char ch; /* character from fmt */ |
register int n; /* handy integer (short term usage) */ |
register char *cp; /* handy char pointer (short term usage) */ |
const char *fmark; /* for remembering a place in fmt */ |
register unsigned char flags; /* flags as above */ |
signed char width; /* width from format (%8d), or 0 */ |
signed char prec; /* precision from format (%.3d), or -1 */ |
char sign; /* sign prefix (' ', '+', '-', or \0) */ |
unsigned long _ulong=0; /* integer arguments %[diouxX] */ |
#define OCT 8 |
#define DEC 10 |
#define HEX 16 |
unsigned char base; /* base for [diouxX] conversion */ |
signed char dprec; /* a copy of prec if [diouxX], 0 otherwise */ |
signed char dpad; /* extra 0 padding needed for integers */ |
signed char fieldsz; /* field size expanded by sign, dpad etc */ |
/* The initialization of 'size' is to suppress a warning that |
'size' might be used unitialized. It seems gcc can't |
quite grok this spaghetti code ... */ |
signed char size = 0; /* size of converted field or string */ |
char buf[BUF]; /* space for %c, %[diouxX], %[eEfgG] */ |
char ox[2]; /* space for 0x hex-prefix */ |
PrintZiel = ziel; // bestimmt, LCD oder UART |
va_start(ap, fmt0); |
fmt = fmt0; |
/* |
* Scan the format for conversions (`%' character). |
*/ |
for (;;) { |
for (fmark = fmt; (ch = pgm_read_byte(fmt)) != '\0' && ch != '%'; fmt++) |
/* void */; |
if ((n = fmt - fmark) != 0) { |
PRINTP(fmark, n); |
} |
if (ch == '\0') |
goto done; |
fmt++; /* skip over '%' */ |
flags = 0; |
dprec = 0; |
width = 0; |
prec = -1; |
sign = '\0'; |
rflag: ch = PRG_RDB(fmt++); |
reswitch: |
#ifdef LIGHTPRINTF |
if (ch=='o' || ch=='u' || (ch|0x20)=='x') { |
#else |
if (ch=='u' || (ch|0x20)=='x') { |
#endif |
if (flags&LONGINT) { |
_ulong=va_arg(ap, unsigned long); |
} else { |
register unsigned int _d; |
_d=va_arg(ap, unsigned int); |
_ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d; |
} |
} |
#ifndef LIGHTPRINTF |
if(ch==' ') { |
/* |
* ``If the space and + flags both appear, the space |
* flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
if (!sign) |
sign = ' '; |
goto rflag; |
} else if (ch=='#') { |
flags |= ALT; |
goto rflag; |
} else if (ch=='*'||ch=='-') { |
if (ch=='*') { |
/* |
* ``A negative field width argument is taken as a |
* - flag followed by a positive field width.'' |
* -- ANSI X3J11 |
* They don't exclude field widths read from args. |
*/ |
if ((width = va_arg(ap, int)) >= 0) |
goto rflag; |
width = -width; |
} |
flags |= LADJUST; |
flags &= ~ZEROPAD; /* '-' disables '0' */ |
goto rflag; |
} else if (ch=='+') { |
sign = '+'; |
goto rflag; |
} else if (ch=='.') { |
if ((ch = PRG_RDB(fmt++)) == '*') { |
n = va_arg(ap, int); |
prec = n < 0 ? -1 : n; |
goto rflag; |
} |
n = 0; |
while (is_digit(ch)) { |
n = n*10 + to_digit(ch); |
ch = PRG_RDB(fmt++); |
} |
prec = n < 0 ? -1 : n; |
goto reswitch; |
} else |
#endif /* LIGHTPRINTF */ |
if (ch=='0') { |
/* |
* ``Note that 0 is taken as a flag, not as the |
* beginning of a field width.'' |
* -- ANSI X3J11 |
*/ |
if (!(flags & LADJUST)) |
flags |= ZEROPAD; /* '-' disables '0' */ |
goto rflag; |
} else if (ch>='1' && ch<='9') { |
n = 0; |
do { |
n = 10 * n + to_digit(ch); |
ch = PRG_RDB(fmt++); |
} while (is_digit(ch)); |
width = n; |
goto reswitch; |
} else if (ch=='h') { |
flags |= SHORTINT; |
goto rflag; |
} else if (ch=='l') { |
flags |= LONGINT; |
goto rflag; |
} else if (ch=='c') { |
*(cp = buf) = va_arg(ap, int); |
size = 1; |
sign = '\0'; |
} else if (ch=='D'||ch=='d'||ch=='i') { |
if(ch=='D') |
flags |= LONGINT; |
if (flags&LONGINT) { |
_ulong=va_arg(ap, long); |
} else { |
register int _d; |
_d=va_arg(ap, int); |
_ulong = flags&SHORTINT ? (long)(short)_d : (long)_d; |
} |
if ((long)_ulong < 0) { |
_ulong = -_ulong; |
sign = '-'; |
} |
base = DEC; |
goto number; |
} else |
/* |
if (ch=='n') { |
if (flags & LONGINT) |
*va_arg(ap, long *) = ret; |
else if (flags & SHORTINT) |
*va_arg(ap, short *) = ret; |
else |
*va_arg(ap, int *) = ret; |
continue; // no output |
} else |
*/ |
#ifndef LIGHTPRINTF |
if (ch=='O'||ch=='o') { |
if (ch=='O') |
flags |= LONGINT; |
base = OCT; |
goto nosign; |
} else if (ch=='p') { |
/* |
* ``The argument shall be a pointer to void. The |
* value of the pointer is converted to a sequence |
* of printable characters, in an implementation- |
* defined manner.'' |
* -- ANSI X3J11 |
*/ |
/* NOSTRICT */ |
_ulong = (unsigned int)va_arg(ap, void *); |
base = HEX; |
flags |= HEXPREFIX; |
ch = 'x'; |
goto nosign; |
} else if (ch=='s') { // print a string from RAM |
if ((cp = va_arg(ap, char *)) == NULL) { |
cp=buf; |
cp[0] = '('; |
cp[1] = 'n'; |
cp[2] = 'u'; |
cp[4] = cp[3] = 'l'; |
cp[5] = ')'; |
cp[6] = '\0'; |
} |
if (prec >= 0) { |
/* |
* can't use strlen; can only look for the |
* NUL in the first `prec' characters, and |
* strlen() will go further. |
*/ |
char *p = (char*)memchr(cp, 0, prec); |
if (p != NULL) { |
size = p - cp; |
if (size > prec) |
size = prec; |
} else |
size = prec; |
} else |
size = strlen(cp); |
sign = '\0'; |
} else |
#endif /* LIGHTPRINTF */ |
if(ch=='U'||ch=='u') { |
if (ch=='U') |
flags |= LONGINT; |
base = DEC; |
goto nosign; |
} else if (ch=='X'||ch=='x') { |
base = HEX; |
/* leading 0x/X only if non-zero */ |
if (flags & ALT && _ulong != 0) |
flags |= HEXPREFIX; |
/* unsigned conversions */ |
nosign: sign = '\0'; |
/* |
* ``... diouXx conversions ... if a precision is |
* specified, the 0 flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
number: if ((dprec = prec) >= 0) |
flags &= ~ZEROPAD; |
/* |
* ``The result of converting a zero value with an |
* explicit precision of zero is no characters.'' |
* -- ANSI X3J11 |
*/ |
cp = buf + BUF; |
if (_ulong != 0 || prec != 0) { |
register unsigned char _d,notlastdigit; |
do { |
notlastdigit=(_ulong>=base); |
_d = _ulong % base; |
if (_d<10) { |
_d+='0'; |
} else { |
_d+='a'-10; |
if (ch=='X') _d&=~0x20; |
} |
*--cp=_d; |
_ulong /= base; |
} while (notlastdigit); |
#ifndef LIGHTPRINTF |
// handle octal leading 0 |
if (base==OCT && flags & ALT && *cp != '0') |
*--cp = '0'; |
#endif |
} |
size = buf + BUF - cp; |
} else { //default |
/* "%?" prints ?, unless ? is NUL */ |
if (ch == '\0') |
goto done; |
/* pretend it was %c with argument ch */ |
cp = buf; |
*cp = ch; |
size = 1; |
sign = '\0'; |
} |
/* |
* All reasonable formats wind up here. At this point, |
* `cp' points to a string which (if not flags&LADJUST) |
* should be padded out to `width' places. If |
* flags&ZEROPAD, it should first be prefixed by any |
* sign or other prefix; otherwise, it should be blank |
* padded before the prefix is emitted. After any |
* left-hand padding and prefixing, emit zeroes |
* required by a decimal [diouxX] precision, then print |
* the string proper, then emit zeroes required by any |
* leftover floating precision; finally, if LADJUST, |
* pad with blanks. |
*/ |
/* |
* compute actual size, so we know how much to pad. |
*/ |
fieldsz = size; |
dpad = dprec - size; |
if (dpad < 0) |
dpad = 0; |
if (sign) |
fieldsz++; |
else if (flags & HEXPREFIX) |
fieldsz += 2; |
fieldsz += dpad; |
/* right-adjusting blank padding */ |
if ((flags & (LADJUST|ZEROPAD)) == 0) |
PAD_SP(width - fieldsz); |
/* prefix */ |
if (sign) { |
PRINT(&sign, 1); |
} else if (flags & HEXPREFIX) { |
ox[0] = '0'; |
ox[1] = ch; |
PRINT(ox, 2); |
} |
/* right-adjusting zero padding */ |
if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD) |
PAD_0(width - fieldsz); |
/* leading zeroes from decimal precision */ |
PAD_0(dpad); |
/* the string or number proper */ |
PRINT(cp, size); |
/* left-adjusting padding (always blank) */ |
if (flags & LADJUST) |
PAD_SP(width - fieldsz); |
} |
done: |
va_end(ap); |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/printf_P.h |
---|
0,0 → 1,19 |
#ifndef _PRINTF_P_H_ |
#define _PRINTF_P_H_ |
#include <avr/pgmspace.h> |
#define OUT_V24 0 |
#define OUT_LCD 1 |
extern void _printf_P (char, char const *fmt0, ...); |
extern char PrintZiel; |
#define printf_P(format, args...) _printf_P(OUT_V24,format , ## args) |
#define printf(format, args...) _printf_P(OUT_V24,PSTR(format) , ## args) |
#define LCD_printfxy(x,y,format, args...) { DispPtr = y * 20 + x; _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#define LCD_printf(format, args...) { _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#endif |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/rc.c |
---|
0,0 → 1,85 |
/*####################################################################################### |
Decodieren eines RC Summen Signals |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "rc.h" |
#include "main.h" |
volatile int PPM_in[11]; |
volatile int PPM_diff[11]; // das diffenzierte Stick-Signal |
volatile unsigned char NewPpmData = 1; |
//############################################################################ |
//zum decodieren des PPM-Signals wird Timer1 mit seiner Input |
//Capture Funktion benutzt: |
void rc_sum_init (void) |
//############################################################################ |
{ |
TCCR1B=(1<<CS11)|(1<<CS10)|(1<<ICES1)|(1<<ICNC1);//|(1 << WGM12); //timer1 prescale 64 |
// PWM |
//TCCR1A = (1 << COM1B1) | (1 << WGM11) | (1 << WGM10); |
//TCCR1B |= (1 << WGM12); |
//OCR1B = 55; |
TIMSK1 |= _BV(ICIE1); |
AdNeutralGier = 0; |
AdNeutralRoll = 0; |
AdNeutralNick = 0; |
return; |
} |
//############################################################################ |
//Diese Routine startet und inizialisiert den Timer für RC |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int AltICR=0; |
signed int signal = 0; |
static int index; |
signal = (unsigned int) ICR1 - AltICR; |
AltICR = ICR1; |
//Syncronisationspause? |
if ((signal > 1500) && (signal < 8000)) |
{ |
index = 1; |
NewPpmData = 0; // Null bedeutet: Neue Daten |
// OCR2A = Poti2/2 + 80; |
} |
else |
{ |
if(index < 10) |
{ |
if((signal > 250) && (signal < 687)) |
{ |
signal -= 466; |
// Stabiles Signal |
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10;} |
signal = (3 * (PPM_in[index]) + signal) / 4; |
//373 entspricht ca. 1.5ms also Mittelstellung |
PPM_diff[index] = signal - PPM_in[index]; |
PPM_in[index] = signal; |
} |
index++; |
/* if(index == 5) PORTD |= 0x20; else PORTD &= ~0x20; // Servosignal an J3 anlegen |
if(index == 6) PORTD |= 0x10; else PORTD &= ~0x10; // Servosignal an J4 anlegen |
if(index == 7) PORTD |= 0x08; else PORTD &= ~0x08; // Servosignal an J5 anlegen */ |
} |
} |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/rc.h |
---|
0,0 → 1,29 |
/*####################################################################################### |
Derkodieren eines RC Summen Signals |
#######################################################################################*/ |
#ifndef _RC_H |
#define _RC_H |
#if defined (__AVR_ATmega32__) |
#define TIMER_TEILER CK64 |
#define TIMER_RELOAD_VALUE 250 |
#endif |
#if defined (__AVR_ATmega644__) |
//#define TIMER_TEILER CK64 |
#define TIMER_RELOAD_VALUE 250 |
//#define TIMER_TEILER CK256 // bei 20MHz |
//#define TIMER_RELOAD_VALUE -78 // bei 20MHz |
#endif |
#define GAS PPM_in[2] |
extern void rc_sum_init (void); |
extern volatile int PPM_in[11]; |
extern volatile int PPM_diff[11]; // das diffenzierte Stick-Signal |
extern volatile unsigned char NewPpmData; |
#endif //_RC_H |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/timer0.c |
---|
0,0 → 1,118 |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile unsigned char UpdateMotor = 0; |
volatile unsigned int beeptime = 0; |
int ServoValue = 0; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL (SIG_OVERFLOW0) // 9,8kHz |
{ |
static unsigned char cnt_1ms = 1,cnt = 0; |
// TCNT0 -= 250;//TIMER_RELOAD_VALUE; |
if(!cnt--) |
{ |
cnt = 10; |
cnt_1ms++; |
cnt_1ms %= 2; |
if(!cnt_1ms) UpdateMotor = 1; |
CountMilliseconds++; |
if(Timeout) Timeout--; |
} |
if(beeptime > 1) |
{ |
beeptime--; |
PORTD |= (1<<PD2); |
} |
else |
PORTD &= ~(1<<PD2); |
if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV) timer0_MM3(); // Kompass auslesen |
} |
void Timer_Init(void) |
{ |
TCCR0B = CK8; |
TCCR0A = (1<<COM0A1)|(1<<COM0B1)|3;//fast PWM |
OCR0A = 0; |
OCR0B = 120; |
//TCNT0 = -TIMER_RELOAD_VALUE; // reload |
//OCR1 = 0x00; |
TCCR2A=(1<<COM2A1)|(1<<COM2A0)|3; |
TCCR2B=(0<<CS20)|(1<<CS21)|(1<<CS22); |
// TIMSK2 |= _BV(TOIE2); |
TIMSK2 |= _BV(OCIE2A); |
TIMSK0 |= _BV(TOIE0); |
OCR2A = 10; |
TCNT2 = 0; |
} |
// ----------------------------------------------------------------------- |
unsigned int SetDelay (unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(CountMilliseconds + t + 1); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
char CheckDelay(unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(((t - CountMilliseconds) & 0x8000) >> 9); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Servo ansteuern |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(SIG_OUTPUT_COMPARE2A) |
{ |
static unsigned char timer = 10; |
if(!timer--) |
{ |
TCCR2A=(1<<COM2A1)|(0<<COM2A0)|3; |
ServoValue = Parameter_ServoNickControl; |
if(EE_Parameter.ServoNickCompInvert & 0x01) ServoValue += ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
else ServoValue -= ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
if(ServoValue < EE_Parameter.ServoNickMin) ServoValue = EE_Parameter.ServoNickMin; |
else if(ServoValue > EE_Parameter.ServoNickMax) ServoValue = EE_Parameter.ServoNickMax; |
//DebugOut.Analog[10] = ServoValue; |
OCR2A = ServoValue;// + 75; |
timer = EE_Parameter.ServoNickRefresh; |
} |
else |
{ |
TCCR2A =3; |
PORTD&=~0x80; |
} |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/timer0.h |
---|
0,0 → 1,13 |
#define TIMER_TEILER CK8 |
#define TIMER_RELOAD_VALUE 250 |
void Timer_Init(void); |
void Delay_ms(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char UpdateMotor; |
extern volatile unsigned int beeptime; |
extern int ServoValue; |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/twimaster.c |
---|
0,0 → 1,115 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
volatile unsigned char twi_state = 0; |
volatile unsigned char motor = 0; |
volatile unsigned char motor_rx[8]; |
//############################################################################ |
//Initzialisieren der I2C (TWI) Schnittstelle |
void i2c_init(void) |
//############################################################################ |
{ |
TWSR = 0; |
TWBR = ((SYSCLK/SCL_CLOCK)-16)/2; |
} |
//############################################################################ |
//Start I2C |
void i2c_start(void) |
//############################################################################ |
{ |
TWCR = (1<<TWSTA) | (1<<TWEN) | (1<<TWINT) | (1<<TWIE); |
} |
//############################################################################ |
//Stop I2C |
void i2c_stop(void) |
//############################################################################ |
{ |
TWCR = (1<<TWEN) | (1<<TWSTO) | (1<<TWINT); |
} |
//############################################################################ |
//Write to I2C |
void i2c_write_byte(char byte) |
//############################################################################ |
{ |
TWDR = byte; |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
} |
//############################################################################ |
// I2C receive byte and send ACK |
void i2c_receive_byte(void) |
//############################################################################ |
{ |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA); |
} |
//############################################################################ |
// I2C receive last byte and send NOT ACK |
void i2c_receive_last_byte(void) |
//############################################################################ |
{ |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
} |
//############################################################################ |
//Start I2C |
SIGNAL (TWI_vect) |
//############################################################################ |
{ |
static unsigned char motorread = 0; |
switch (twi_state++) // First i2c_start from SendMotorData() |
{ |
// Master Transmit |
case 0: // Address Slave SL+W |
i2c_write_byte(0x52+(motor*2)); |
break; |
case 1: // Send Data |
switch(motor++) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 2: // Repeat case 0+1 for all Slaves |
if (motor < 4) twi_state = 0; |
i2c_start(); // Repeated start -> switch salve or switch Master Transmit -> Master Receive |
break; |
// Master Receive |
case 3: // Address Slave SL+R |
i2c_write_byte(0x53+(motorread*2)); |
break; |
case 4: //1. Byte vom Motor übertragen |
i2c_receive_byte(); |
break; |
case 5: // 1. Byte lesen und 2. Byte übertragen |
motor_rx[motorread] = TWDR; |
i2c_receive_last_byte(); |
break; |
case 6: //2. Byte lesen |
motor_rx[motorread+4] = TWDR; |
motorread++; |
if (motorread > 3) motorread=0; |
default: |
i2c_stop(); |
twi_state = 0; |
motor = 0; |
} |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/twimaster.h |
---|
0,0 → 1,33 |
/*############################################################################ |
############################################################################*/ |
#ifndef _I2C_MASTER_H |
#define _I2C_MASTER_H |
//############################################################################ |
// I2C Konstanten |
#define SCL_CLOCK 200000L |
#define I2C_TIMEOUT 30000 |
#define I2C_START 0x08 |
#define I2C_REPEATED_START 0x10 |
#define I2C_TX_SLA_ACK 0x18 |
#define I2C_TX_DATA_ACK 0x28 |
#define I2C_RX_SLA_ACK 0x40 |
#define I2C_RX_DATA_ACK 0x50 |
//############################################################################ |
extern volatile unsigned char twi_state; |
extern volatile unsigned char motor; |
extern volatile unsigned char motor_rx[8]; |
void i2c_init (void); // I2C initialisieren |
void i2c_start (void); // Start I2C |
void i2c_stop (void); // Stop I2C |
void i2c_write_byte (char byte); // 1 Byte schreiben |
void i2c_receive_byte(void); // 1 Byte empfangen |
void i2c_receive_last_byte(void); // letztes Byte empfangen |
#endif |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/uart.c |
---|
0,0 → 1,328 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
unsigned char DebugGetAnforderung = 0,DebugDisplayAnforderung = 0,DebugDataAnforderung = 0,GetVersionAnforderung = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NMEABuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char NeueKoordinateEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned volatile char CntCrcError = 0; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
unsigned volatile char PC_DebugTimeout = 0; |
unsigned char PcZugriff = 100; |
unsigned char MotorTest[4] = {0,0,0,0}; |
unsigned char MeineSlaveAdresse; |
struct str_DebugOut DebugOut; |
struct str_Debug DebugIn; |
struct str_VersionInfo VersionInfo; |
int Debug_Timer; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_TX) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;}; |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
{ |
NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
RxdBuffer[buf_ptr] = '\r'; |
if(/*(RxdBuffer[1] == MeineSlaveAdresse || (RxdBuffer[1] == 'a')) && */(RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
} |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
SendeBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
if(!NeuerDatensatzEmpfangen) return; |
//unsigned int tmp_int_arr1[1]; |
//unsigned int tmp_int_arr2[2]; |
//unsigned int tmp_int_arr3[3]; |
unsigned char tmp_char_arr2[2]; |
//unsigned char tmp_char_arr3[3]; |
//unsigned char tmp_char_arr4[4]; |
//if(!MotorenEin) |
PcZugriff = 255; |
switch(RxdBuffer[2]) |
{ |
case 'c':// Debugdaten incl. Externe IOs usw |
Decode64((unsigned char *) &DebugIn,sizeof(DebugIn),3,AnzahlEmpfangsBytes); |
/* for(unsigned char i=0; i<4;i++) |
{ |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2], DebugIn.Analog[i]); |
EE_CheckAndWrite(&EE_Buffer[EE_DEBUGWERTE + i*2 + 1], DebugIn.Analog[i] >> 8); |
}*/ |
RemoteTasten |= DebugIn.RemoteTasten; |
DebugDataAnforderung = 1; |
break; |
case 'h':// x-1 Displayzeilen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
RemoteTasten |= tmp_char_arr2[0]; |
DebugDisplayAnforderung = 1; |
break; |
case 't':// Motortest |
Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'g':// "Get"-Anforderung für Debug-Daten |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
DebugGetAnforderung = 1; |
break; |
case 'q':// "Get"-Anforderung für Settings |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
if(tmp_char_arr2[0] != 0xff) |
{ |
if(tmp_char_arr2[0] > 5) tmp_char_arr2[0] = 5; |
ReadParameterSet(tmp_char_arr2[0], (unsigned char *) &EE_Parameter.Kanalbelegung[0], sizeof(struct mk_param_struct)); |
SendOutData('L' + tmp_char_arr2[0] -1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],sizeof(struct mk_param_struct)); |
} |
else |
SendOutData('L' + GetActiveParamSetNumber()-1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],sizeof(struct mk_param_struct)); |
break; |
case 'l': |
case 'm': |
case 'n': |
case 'o': |
case 'p': // Parametersatz speichern |
Decode64((unsigned char *) &EE_Parameter.Kanalbelegung[0],sizeof(struct mk_param_struct),3,AnzahlEmpfangsBytes); |
WriteParameterSet(RxdBuffer[2] - 'l' + 1, (unsigned char *) &EE_Parameter.Kanalbelegung[0], sizeof(struct mk_param_struct)); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], RxdBuffer[2] - 'l' + 1); // aktiven Datensatz merken |
Piep(GetActiveParamSetNumber()); |
break; |
} |
// DebugOut.AnzahlZyklen = Debug_Timer_Intervall; |
NeuerDatensatzEmpfangen = 0; |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
//if (ProgramLocation == IN_RAM) Buffer[pos] = wert; |
// else eeprom_write_byte(&EE_Buffer[pos], wert); |
// Buffer[pos] = wert; |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); |
// TX-Interrupt Freigabe |
UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR=(SYSCLK / (BAUD_RATE * 8L) - 1); |
//UBRR = 33; |
//öffnet einen Kanal für printf (STDOUT) |
//fdevopen (uart_putchar, 0); |
//sbi(PORTD,4); |
Debug_Timer = SetDelay(200); |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
static char dis_zeile = 0; |
if(!UebertragungAbgeschlossen) return; |
if(DebugGetAnforderung && UebertragungAbgeschlossen) // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
{ |
SendOutData('G',MeineSlaveAdresse,(unsigned char *) &DebugIn,sizeof(DebugIn)); |
DebugGetAnforderung = 0; |
} |
if((CheckDelay(Debug_Timer) || DebugDataAnforderung) && UebertragungAbgeschlossen) |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
DebugDataAnforderung = 0; |
Debug_Timer = SetDelay(MIN_DEBUG_INTERVALL); |
} |
if(DebugDisplayAnforderung && UebertragungAbgeschlossen) |
{ |
Menu(); |
DebugDisplayAnforderung = 0; |
if(++dis_zeile == 4) dis_zeile = 0; |
SendOutData('0' + dis_zeile,0,&DisplayBuff[20 * dis_zeile],20); // DisplayZeile übertragen |
} |
if(GetVersionAnforderung && UebertragungAbgeschlossen) |
{ |
SendOutData('V',MeineSlaveAdresse,(unsigned char *) &VersionInfo,sizeof(VersionInfo)); |
GetVersionAnforderung = 0; |
} |
} |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/uart.h |
---|
0,0 → 1,95 |
#ifndef _UART_H |
#define _UART_H |
#define MAX_SENDE_BUFF 150 |
#define MAX_EMPFANGS_BUFF 150 |
void BearbeiteRxDaten(void); |
extern unsigned char DebugGetAnforderung; |
extern unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
extern unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned volatile char NeueKoordinateEmpfangen; |
extern unsigned char MeineSlaveAdresse; |
extern unsigned char PcZugriff; |
extern int Debug_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void DatenUebertragung(void); |
extern void DecodeNMEA(void); |
extern unsigned char MotorTest[4]; |
struct str_DebugOut |
{ |
unsigned char Digital[13]; |
unsigned int AnzahlZyklen; |
unsigned int Zeit; |
unsigned char Sekunden; |
unsigned int Analog[16]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
struct str_Debug |
{ |
unsigned char Digital[2]; |
unsigned char RemoteTasten; |
unsigned int Analog[4]; |
}; |
extern struct str_Debug DebugIn; |
struct str_VersionInfo |
{ |
unsigned char Hauptversion; |
unsigned char Nebenversion; |
unsigned char PCKompatibel; |
unsigned char Rserved[7]; |
}; |
extern struct str_VersionInfo VersionInfo; |
//Die Baud_Rate der Seriellen Schnittstelle ist 9600 Baud |
//#define BAUD_RATE 9600 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 14400 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 28800 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 38400 //Baud Rate für die Serielle Schnittstelle |
#define BAUD_RATE 57600 //Baud Rate für die Serielle Schnittstelle |
//Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird |
#if defined (__AVR_ATmega128__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICRB |
#endif |
#if defined (__AVR_ATmega32__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega644__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICR0B |
# define TXEN TXEN0 |
# define RXEN RXEN0 |
# define RXCIE RXCIE0 |
# define TXCIE TXCIE0 |
# define U2X U2X0 |
# define UCSRB UCSR0B |
# define UDRE UDRE0 |
# define INT_VEC_RX SIG_USART_RECV |
# define INT_VEC_TX SIG_USART_TRANS |
#endif |
#endif //_UART_H |
/branches/v0.60_MicroMag3_Nick666/Festkomma/v0.60/version.txt |
---|
0,0 → 1,49 |
------- |
V0.53 27.04.2007 H.Buss |
- erste öffentliche Version |
V0.53b 29.04.2007 H.Buss |
- der FAKTOR_I war versehentlich auf Null, dann liegt der MikroKopter nicht so hart in der Luft |
V0.53c 29.04.2007 H.Buss |
- es gib ein Menü, in dem die Werte der Kanäle nach Nick, Roll, Gas,... sortiert sind. |
Die angezeigten Werte waren nicht die Werte der Funke |
V0.54 01.05.2007 H.Buss |
- die Paramtersätze können jetzt vor dem Start ausgewählt werden |
Dazu wird beim Kalibrieren der Messwerte (Gashebel oben links) der Nick-Rollhebel abgefragt: |
2 3 4 |
1 x 5 |
- - - |
Bedeutet: Nick-Rollhebel Links Mitte = Setting:1 Links Oben = Setting:2 usw. |
- der Faktor_I für den Hauptregler ist hinzugekommen. Im Heading-Hold-Modus sollte er vergössert werden, was Stabilität bringt |
V0.55 14.05.2007 H.Buss |
- es können nun Servos an J3,J4,J5 mit den Kanälen 5-7 gesteuert werden |
V0.56 14.05.2007 H.Buss |
- es gab Probleme mit Funken, die mehr als 8 Kanäle haben, wenn mehrere Kanäle dann auf Null waren |
- Funken, die nicht bis +-120 aussteuern können, sollten jetzt auch gehen |
V0.57 24.05.2007 H.Buss |
- Der Höhenregler kann nun auch mittels Schalter bedient werden |
- Bug im Gier-Algorithmus behoben; Schnelles Gieren fürhrte dazu, dass der MK zu weit gedreht hat |
- Kompass-Einfluss dämpfen bei Neigung |
- Man kann zwischen Kompass FIX (Richtung beim Kalibrieren) und Variabel (einstellbar per Gier) wählen |
- Der Motortest vom Kopter-Tool geht jetzt |
- Man kann den Parametersätzen einen Namen geben |
- Das Kamerasetting ist unter Setting 2 defaultmässig integriert |
V0.58 30.05.2007 H.Buss |
- Der Höhenregler-Algorithmus wird nun umgangen, wenn der Höhenreglerschalter aus ist |
V0.60 17.08.2007 H.Buss |
- "Schwindel-Bug" behoben |
- Die Poti-Werte werden jetzt auf Unterlauf (<0) überprüft |
- Poti4 zugefügt |
- Es werden jetzt 8 Kanäle ausgewertet |
- Kamera-Servo (an J7) |
- Die Settings müssen überschrieben werden |
/branches/v0.60_MicroMag3_Nick666/v0.60/Flight-Ctrl_MEGA644_V0_60_MM3.eep |
---|
0,0 → 1,21 |
:1000000000000000000000000000000000000000F0 |
:1000100000000000000000000000000000000000E0 |
:1000200000000000000000000000000000000000D0 |
:1000300000000000000000000000000000000000C0 |
:1000400000000000000000000000000000000000B0 |
:1000500000000000000000000000000000000000A0 |
:100060000000000000000000000000000000000090 |
:100070000000000000000000000000000000000080 |
:100080000000000000000000000000000000000070 |
:100090000000000000000000000000000000000060 |
:1000A0000000000000000000000000000000000050 |
:1000B0000000000000000000000000000000000040 |
:1000C0000000000000000000000000000000000030 |
:1000D0000000000000000000000000000000000020 |
:1000E0000000000000000000000000000000000010 |
:1000F0000000000000000000000000000000000000 |
:1001000000000000000000000000000000000000EF |
:1001100000000000000000000000000000000000DF |
:1001200000000000000000000000000000000000CF |
:0D01300000000000000000000000000000C2 |
:00000001FF |
/branches/v0.60_MicroMag3_Nick666/v0.60/Flight-Ctrl_MEGA644_V0_60_MM3.elf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/v0.60_MicroMag3_Nick666/v0.60/Flight-Ctrl_MEGA644_V0_60_MM3.lss |
---|
0,0 → 1,9405 |
Flight-Ctrl_MEGA644_V0_60_MM3.elf: file format elf32-avr |
Sections: |
Idx Name Size VMA LMA File off Algn |
0 .data 0000008c 00800100 00005e7c 00005f30 2**0 |
CONTENTS, ALLOC, LOAD, DATA |
1 .text 00005e7c 00000000 00000000 000000b4 2**1 |
CONTENTS, ALLOC, LOAD, READONLY, CODE |
2 .bss 000003a6 0080018c 0080018c 00005fbc 2**0 |
ALLOC |
3 .eeprom 0000013d 00810000 00810000 00005fbc 2**0 |
CONTENTS, ALLOC, LOAD, DATA |
4 .stab 00000378 00000000 00000000 000060fc 2**2 |
CONTENTS, READONLY, DEBUGGING |
5 .stabstr 00000071 00000000 00000000 00006474 2**0 |
CONTENTS, READONLY, DEBUGGING |
Disassembly of section .text: |
00000000 <__vectors>: |
0: 0c 94 92 03 jmp 0x724 ; 0x724 <__ctors_end> |
4: 0c 94 af 03 jmp 0x75e ; 0x75e <__bad_interrupt> |
8: 0c 94 af 03 jmp 0x75e ; 0x75e <__bad_interrupt> |
c: 0c 94 af 03 jmp 0x75e ; 0x75e <__bad_interrupt> |
10: 0c 94 af 03 jmp 0x75e ; 0x75e <__bad_interrupt> |
14: 0c 94 af 03 jmp 0x75e ; 0x75e <__bad_interrupt> |
18: 0c 94 af 03 jmp 0x75e ; 0x75e <__bad_interrupt> |
1c: 0c 94 af 03 jmp 0x75e ; 0x75e <__bad_interrupt> |
20: 0c 94 af 03 jmp 0x75e ; 0x75e <__bad_interrupt> |
24: 0c 94 b2 0b jmp 0x1764 ; 0x1764 <__vector_9> |
28: 0c 94 af 03 jmp 0x75e ; 0x75e <__bad_interrupt> |
2c: 0c 94 af 03 jmp 0x75e ; 0x75e <__bad_interrupt> |
30: 0c 94 07 19 jmp 0x320e ; 0x320e <__vector_12> |
34: 0c 94 af 03 jmp 0x75e ; 0x75e <__bad_interrupt> |
38: 0c 94 af 03 jmp 0x75e ; 0x75e <__bad_interrupt> |
3c: 0c 94 af 03 jmp 0x75e ; 0x75e <__bad_interrupt> |
40: 0c 94 af 03 jmp 0x75e ; 0x75e <__bad_interrupt> |
44: 0c 94 af 03 jmp 0x75e ; 0x75e <__bad_interrupt> |
48: 0c 94 59 0c jmp 0x18b2 ; 0x18b2 <__vector_18> |
4c: 0c 94 76 14 jmp 0x28ec ; 0x28ec <__vector_19> |
50: 0c 94 d4 05 jmp 0xba8 ; 0xba8 <__vector_20> |
54: 0c 94 af 03 jmp 0x75e ; 0x75e <__bad_interrupt> |
58: 0c 94 9e 05 jmp 0xb3c ; 0xb3c <__vector_22> |
5c: 0c 94 af 03 jmp 0x75e ; 0x75e <__bad_interrupt> |
60: 0c 94 f8 0c jmp 0x19f0 ; 0x19f0 <__vector_24> |
64: 0c 94 af 03 jmp 0x75e ; 0x75e <__bad_interrupt> |
68: 0c 94 60 18 jmp 0x30c0 ; 0x30c0 <__vector_26> |
6c: 0c 94 af 03 jmp 0x75e ; 0x75e <__bad_interrupt> |
70: 4b 08 sbc r4, r11 |
72: c5 08 sbc r12, r5 |
74: c5 08 sbc r12, r5 |
76: c5 08 sbc r12, r5 |
78: 7d 08 sbc r7, r13 |
7a: 5e 08 sbc r5, r14 |
7c: c5 08 sbc r12, r5 |
7e: c5 08 sbc r12, r5 |
80: c5 08 sbc r12, r5 |
82: a9 08 sbc r10, r9 |
84: a9 08 sbc r10, r9 |
86: a9 08 sbc r10, r9 |
88: a9 08 sbc r10, r9 |
8a: a9 08 sbc r10, r9 |
8c: 81 08 sbc r8, r1 |
8e: c5 08 sbc r12, r5 |
90: c5 08 sbc r12, r5 |
92: 70 08 sbc r7, r0 |
94: c5 08 sbc r12, r5 |
96: 79 08 sbc r7, r9 |
98: 21 0d add r18, r1 |
9a: 73 0d add r23, r3 |
9c: cc 0d add r28, r12 |
9e: 27 0e add r2, r23 |
a0: 44 0e add r4, r20 |
a2: 67 0e add r6, r23 |
a4: 8d 0e add r8, r29 |
a6: 74 0f add r23, r20 |
a8: b3 10 cpse r11, r3 |
aa: e7 10 cpse r14, r7 |
ac: 48 11 cpse r20, r8 |
ae: 9e 11 cpse r25, r14 |
b0: ec 11 cpse r30, r12 |
b2: 65 12 cpse r6, r21 |
b4: bf 12 cpse r11, r31 |
b6: 20 13 cpse r18, r16 |
b8: 44 13 cpse r20, r20 |
ba: 7a 13 cpse r23, r26 |
bc: b6 13 cpse r27, r22 |
be: f4 13 cpse r31, r20 |
c0: 2d 14 cp r2, r13 |
c2: 79 18 sub r7, r9 |
c4: 7e 18 sub r7, r14 |
c6: 9a 18 sub r9, r10 |
c8: a8 18 sub r10, r8 |
ca: ad 18 sub r10, r13 |
cc: b8 18 sub r11, r8 |
ce: c0 18 sub r12, r0 |
d0: d4 18 sub r13, r4 |
000000d2 <__c.2043>: |
d2: 0a 0a 0d 00 .... |
000000d6 <__c.2041>: |
d6: 4e 65 75 74 72 61 6c 00 Neutral. |
000000de <__c.2039>: |
de: 48 65 61 64 69 6e 67 48 6f 6c 64 00 HeadingHold. |
000000ea <__c.2037>: |
ea: 0a 0d 53 74 65 75 65 72 75 6e 67 3a 20 00 ..Steuerung: . |
000000f8 <__c.2035>: |
f8: 4f 4b 0a 0d 00 OK... |
000000fd <__c.2030>: |
fd: 0a 0d 41 62 67 6c 65 69 63 68 20 4c 75 66 74 64 ..Abgleich Luftd |
10d: 72 75 63 6b 73 65 6e 73 6f 72 2e 2e 00 rucksensor... |
0000011a <__c.2028>: |
11a: 0a 0d 4b 61 6c 69 62 72 69 65 72 65 20 4e 65 75 ..Kalibriere Neu |
12a: 74 72 61 6c 6c 61 67 65 00 trallage. |
00000133 <__c.2026>: |
133: 0a 0d 4b 61 6c 69 62 72 69 65 72 65 20 4b 6f 6d ..Kalibriere Kom |
143: 70 61 73 73 00 pass. |
00000148 <__c.2021>: |
148: 0a 0d 42 65 6e 75 74 7a 65 20 50 61 72 61 6d 65 ..Benutze Parame |
158: 74 65 72 73 61 74 7a 20 25 64 00 tersatz %d. |
00000163 <__c.2015>: |
163: 0a 0d 49 6e 69 74 2e 20 45 45 50 52 4f 4d 3a 20 ..Init. EEPROM: |
173: 47 65 6e 65 72 69 65 72 65 20 44 65 66 61 75 6c Generiere Defaul |
183: 74 2d 50 61 72 61 6d 65 74 65 72 2e 2e 2e 00 t-Parameter.... |
00000192 <__c.2013>: |
192: 0a 0d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ..============== |
1a2: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ |
... |
000001b3 <__c.2011>: |
1b3: 0a 0d 46 6c 69 67 68 74 43 6f 6e 74 72 6f 6c 20 ..FlightControl |
1c3: 56 25 64 2e 25 64 20 00 V%d.%d . |
000001cb <__c.2013>: |
1cb: 2e 00 .. |
000001cd <__c.2113>: |
1cd: 5a 5f 52 61 6e 67 65 3a 20 20 25 34 69 00 Z_Range: %4i. |
000001db <__c.2111>: |
1db: 59 5f 52 61 6e 67 65 3a 20 20 25 34 69 00 Y_Range: %4i. |
000001e9 <__c.2109>: |
1e9: 58 5f 52 61 6e 67 65 3a 20 20 25 34 69 00 X_Range: %4i. |
000001f7 <__c.2107>: |
1f7: 4d 4d 33 20 52 61 6e 67 65 00 MM3 Range. |
00000201 <__c.2104>: |
201: 5a 5f 4f 66 66 73 65 74 3a 20 20 25 33 69 00 Z_Offset: %3i. |
00000210 <__c.2102>: |
210: 59 5f 4f 66 66 73 65 74 3a 20 20 25 33 69 00 Y_Offset: %3i. |
0000021f <__c.2100>: |
21f: 58 5f 4f 66 66 73 65 74 3a 20 20 25 33 69 00 X_Offset: %3i. |
0000022e <__c.2098>: |
22e: 4d 4d 33 20 4f 66 66 00 MM3 Off. |
00000236 <__c.2095>: |
236: 52 61 6e 67 65 3a 25 33 69 2d 25 33 69 00 Range:%3i-%3i. |
00000244 <__c.2093>: |
244: 53 74 65 6c 6c 75 6e 67 3a 20 25 33 69 00 Stellung: %3i. |
00000252 <__c.2091>: |
252: 53 65 74 70 6f 69 6e 74 20 20 25 33 69 00 Setpoint %3i. |
00000260 <__c.2089>: |
260: 53 65 72 76 6f 20 20 00 Servo . |
00000268 <__c.2086>: |
268: 50 6f 74 69 34 3a 20 20 25 33 69 00 Poti4: %3i. |
00000274 <__c.2084>: |
274: 50 6f 74 69 33 3a 20 20 25 33 69 00 Poti3: %3i. |
00000280 <__c.2082>: |
280: 50 6f 74 69 32 3a 20 20 25 33 69 00 Poti2: %3i. |
0000028c <__c.2080>: |
28c: 50 6f 74 69 31 3a 20 20 25 33 69 00 Poti1: %3i. |
00000298 <__c.2077>: |
298: 53 74 61 72 74 3a 20 20 20 20 20 25 35 69 00 Start: %5i. |
000002a7 <__c.2075>: |
2a7: 4d 65 73 73 77 65 72 74 3a 20 20 25 35 69 00 Messwert: %5i. |
000002b6 <__c.2073>: |
2b6: 52 69 63 68 74 75 6e 67 3a 20 20 25 35 69 00 Richtung: %5i. |
000002c5 <__c.2071>: |
2c5: 4b 6f 6d 70 61 73 73 20 20 20 20 20 20 20 00 Kompass . |
000002d4 <__c.2068>: |
2d4: 45 6d 70 66 2e 50 65 67 65 6c 3a 25 35 69 00 Empf.Pegel:%5i. |
000002e3 <__c.2066>: |
2e3: 53 70 61 6e 6e 75 6e 67 3a 20 20 25 35 69 00 Spannung: %5i. |
000002f2 <__c.2063>: |
2f2: 48 6f 63 68 20 25 34 69 20 28 25 33 69 29 00 Hoch %4i (%3i). |
00000301 <__c.2061>: |
301: 52 6f 6c 6c 20 25 34 69 20 28 25 33 69 29 00 Roll %4i (%3i). |
00000310 <__c.2059>: |
310: 4e 69 63 6b 20 25 34 69 20 28 25 33 69 29 00 Nick %4i (%3i). |
0000031f <__c.2057>: |
31f: 41 43 43 20 2d 20 53 65 6e 73 6f 72 00 ACC - Sensor. |
0000032c <__c.2054>: |
32c: 47 69 65 72 20 25 34 69 20 28 25 33 69 29 00 Gier %4i (%3i). |
0000033b <__c.2052>: |
33b: 52 6f 6c 6c 20 25 34 69 20 28 25 33 69 29 00 Roll %4i (%3i). |
0000034a <__c.2050>: |
34a: 4e 69 63 6b 20 25 34 69 20 28 25 33 69 29 00 Nick %4i (%3i). |
00000359 <__c.2048>: |
359: 47 79 72 6f 20 2d 20 53 65 6e 73 6f 72 00 Gyro - Sensor. |
00000367 <__c.2045>: |
367: 50 33 3a 25 34 69 20 20 4b 61 6e e4 6c 65 20 00 P3:%4i Kan.le . |
00000377 <__c.2043>: |
377: 50 31 3a 25 34 69 20 20 50 32 3a 25 34 69 20 00 P1:%4i P2:%4i . |
00000387 <__c.2041>: |
387: 47 73 3a 25 34 69 20 20 47 69 3a 25 34 69 20 00 Gs:%4i Gi:%4i . |
00000397 <__c.2039>: |
397: 4e 69 3a 25 34 69 20 20 52 6f 3a 25 34 69 20 00 Ni:%4i Ro:%4i . |
000003a7 <__c.2036>: |
3a7: 4b 37 3a 25 34 69 20 20 4b 61 6e e4 6c 65 20 00 K7:%4i Kan.le . |
000003b7 <__c.2034>: |
3b7: 4b 35 3a 25 34 69 20 20 4b 36 3a 25 34 69 20 00 K5:%4i K6:%4i . |
000003c7 <__c.2032>: |
3c7: 4b 33 3a 25 34 69 20 20 4b 34 3a 25 34 69 20 00 K3:%4i K4:%4i . |
000003d7 <__c.2030>: |
3d7: 4b 31 3a 25 34 69 20 20 4b 32 3a 25 34 69 20 00 K1:%4i K2:%4i . |
000003e7 <__c.2027>: |
3e7: 4b 6f 6d 70 61 73 73 3a 20 20 20 25 35 69 00 Kompass: %5i. |
000003f6 <__c.2025>: |
3f6: 52 6f 6c 6c 3a 20 20 20 20 20 20 25 35 69 00 Roll: %5i. |
00000405 <__c.2023>: |
405: 4e 69 63 6b 3a 20 20 20 20 20 20 25 35 69 00 Nick: %5i. |
00000414 <__c.2021>: |
414: 61 6b 74 2e 20 4c 61 67 65 00 akt. Lage. |
0000041e <__c.2018>: |
41e: 48 f6 68 65 6e 72 65 67 65 6c 75 6e 67 00 H.henregelung. |
0000042c <__c.2016>: |
42c: 4b 65 69 6e 65 20 00 Keine . |
00000433 <__c.2014>: |
433: 4f 66 66 20 20 20 20 20 20 3a 20 25 35 69 00 Off : %5i. |
00000442 <__c.2012>: |
442: 4c 75 66 74 64 72 75 63 6b 3a 20 25 35 69 00 Luftdruck: %5i. |
00000451 <__c.2010>: |
451: 53 6f 6c 6c 48 6f 65 68 65 3a 20 25 35 69 00 SollHoehe: %5i. |
00000460 <__c.2008>: |
460: 48 6f 65 68 65 3a 20 20 20 20 20 25 35 69 00 Hoehe: %5i. |
0000046f <__c.2004>: |
46f: 28 63 29 20 48 6f 6c 67 65 72 20 42 75 73 73 00 (c) Holger Buss. |
0000047f <__c.2002>: |
47f: 53 65 74 74 69 6e 67 3a 20 25 64 20 00 Setting: %d . |
0000048c <__c.2000>: |
48c: 56 25 64 2e 25 64 00 V%d.%d. |
00000493 <__c.1998>: |
493: 2b 2b 20 4d 69 6b 72 6f 4b 6f 70 74 65 72 20 2b ++ MikroKopter + |
4a3: 2b 00 +. |
000004a5 <__c.1995>: |
4a5: 5b 25 69 5d 00 [%i]. |
000004aa <pgm_atan>: |
4aa: 00 01 02 03 05 06 07 08 09 0a 0b 0c 0d 0f 10 11 ................ |
4ba: 12 13 14 15 16 17 18 19 1a 1b 1b 1c 1d 1e 1f 20 ............... |
4ca: 21 21 22 23 24 25 25 26 27 27 28 29 29 2a 2b 2b !!"#$%%&''())*++ |
4da: 2c 2c 2d 2e 2e 2f 2f 30 30 31 31 32 32 33 33 34 ,,-..//001122334 |
4ea: 34 34 35 35 36 36 36 37 37 38 38 38 39 39 39 3a 445566677888999: |
4fa: 3a 3a 3b 3b 3b 3c 3c 3c 3c 3d 3d 3d 3d 3e 3e 3e ::;;;<<<<====>>> |
50a: 3e 3f 3f 3f 3f 40 40 40 40 41 41 41 41 41 42 42 >????@@@@AAAAABB |
51a: 42 42 42 43 43 43 43 43 43 44 44 44 44 44 44 45 BBBCCCCCCDDDDDDE |
52a: 45 45 45 45 45 45 46 46 46 46 46 46 46 46 47 47 EEEEEEFFFFFFFFGG |
53a: 47 47 47 47 47 47 48 48 48 48 48 48 48 48 48 49 GGGGGGHHHHHHHHHI |
54a: 49 49 49 49 49 49 49 49 49 4a 4a 4a 4a 4a 4a 4a IIIIIIIIIJJJJJJJ |
55a: 4a 4a 4a 4a 4a 4b 4b 4b 4b 4b 4b 4b 4b 4b 4b 4b JJJJJKKKKKKKKKKK |
56a: 4b 4b 4c 4c 4c 4c 4c 4c 4c 4c 4c 4c 4c 4c 4c 4c KKLLLLLLLLLLLLLL |
57a: 4c 4d 4d 4d 4d 4d 4d 4d 4d 4d 4d 4d 4d 4d 4d 4d LMMMMMMMMMMMMMMM |
58a: 4d 4d 4e 4e 4e 4e 4e 4e 4e 4e 4e 4e 4e 4e 4e 4e MMNNNNNNNNNNNNNN |
59a: 4e 4e 4e 4e 4e 4e 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f NNNNNNOOOOOOOOOO |
5aa: 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f OOOOOOOOOOOOOO |
000005b8 <pgm_sinus_f>: |
5b8: 00 00 00 00 56 f8 8e 3c c7 f2 0e 3d 46 5e 56 3d ....V..<...=F^V= |
5c8: 7f dc 8e 3d b0 7e b2 3d 0a 13 d6 3d 9d 96 f9 3d ...=.~.=...=...= |
5d8: 65 83 0e 3e 5e 30 20 3e d5 d0 31 3e 6f 63 43 3e e..>^0 >..1>ocC> |
5e8: ce e6 54 3e 8e 59 66 3e 60 ba 77 3e ed 83 84 3e ..T>.Yf>`.w>...> |
5f8: 55 20 8d 3e be b1 95 3e 7a 37 9e 3e dd b0 a6 3e U .>...>z7.>...> |
608: 42 1d af 3e ff 7b b7 3e 70 cc bf 3e e8 0d c8 3e B..>.{.>p..>...> |
618: c8 3f d0 3e 6a 61 d8 3e 2d 72 e0 3e 71 71 e8 3e .?.>ja.>-r.>qq.> |
628: 92 5e f0 3e f7 38 f8 3e 00 00 00 3f 89 d9 03 3f .^.>.8.>...?...? |
638: cb a8 07 3f 76 6d 0b 3f 44 27 0f 3f e7 d5 12 3f ...?vm.?D'.?...? |
648: 17 79 16 3f 8c 10 1a 3f fe 9b 1d 3f 24 1b 21 3f .y.?...?...?$.!? |
658: ba 8d 24 3f 7c f3 27 3f 25 4c 2b 3f 71 97 2e 3f ..$?|.'?%L+?q..? |
668: 22 d5 31 3f f4 04 35 3f a7 26 38 3f ff 39 3b 3f ".1?..5?.&8?.9;? |
678: bd 3e 3e 3f a6 34 41 3f 7c 1b 44 3f 09 f3 46 3f .>>?.4A?|.D?..F? |
688: 12 bb 49 3f 60 73 4c 3f bd 1b 4f 3f f2 b3 51 3f ..I?`sL?..O?..Q? |
698: cf 3b 54 3f 1e b3 56 3f ae 19 59 3f 51 6f 5b 3f .;T?..V?..Y?Qo[? |
6a8: d7 b3 5d 3f 14 e7 5f 3f db 08 62 3f 01 19 64 3f ..]?.._?..b?..d? |
6b8: 5d 17 66 3f ca 03 68 3f 1d de 69 3f 34 a6 6b 3f ].f?..h?..i?4.k? |
6c8: eb 5b 6d 3f 20 ff 6e 3f b2 8f 70 3f 82 0d 72 3f .[m? .n?..p?..r? |
6d8: 70 78 73 3f 63 d0 74 3f 3f 15 76 3f ea 46 77 3f pxs?c.t??.v?.Fw? |
6e8: 4d 65 78 3f 52 70 79 3f e2 67 7a 3f ec 4b 7b 3f Mex?Rpy?.gz?.K{? |
6f8: 5c 1c 7c 3f 24 d9 7c 3f 36 82 7d 3f 80 17 7e 3f \.|?$.|?6.}?..~? |
708: fd 98 7e 3f 9e 06 7f 3f 5b 60 7f 3f 2f a6 7f 3f ..~?...?[`.?/..? |
718: 13 d8 7f 3f 05 f6 7f 3f 00 00 80 3f ...?...?...? |
00000724 <__ctors_end>: |
724: 11 24 eor r1, r1 |
726: 1f be out 0x3f, r1 ; 63 |
728: cf ef ldi r28, 0xFF ; 255 |
72a: d0 e1 ldi r29, 0x10 ; 16 |
72c: de bf out 0x3e, r29 ; 62 |
72e: cd bf out 0x3d, r28 ; 61 |
00000730 <__do_copy_data>: |
730: 11 e0 ldi r17, 0x01 ; 1 |
732: a0 e0 ldi r26, 0x00 ; 0 |
734: b1 e0 ldi r27, 0x01 ; 1 |
736: ec e7 ldi r30, 0x7C ; 124 |
738: fe e5 ldi r31, 0x5E ; 94 |
73a: 02 c0 rjmp .+4 ; 0x740 <.do_copy_data_start> |
0000073c <.do_copy_data_loop>: |
73c: 05 90 lpm r0, Z+ |
73e: 0d 92 st X+, r0 |
00000740 <.do_copy_data_start>: |
740: ac 38 cpi r26, 0x8C ; 140 |
742: b1 07 cpc r27, r17 |
744: d9 f7 brne .-10 ; 0x73c <.do_copy_data_loop> |
00000746 <__do_clear_bss>: |
746: 15 e0 ldi r17, 0x05 ; 5 |
748: ac e8 ldi r26, 0x8C ; 140 |
74a: b1 e0 ldi r27, 0x01 ; 1 |
74c: 01 c0 rjmp .+2 ; 0x750 <.do_clear_bss_start> |
0000074e <.do_clear_bss_loop>: |
74e: 1d 92 st X+, r1 |
00000750 <.do_clear_bss_start>: |
750: a2 33 cpi r26, 0x32 ; 50 |
752: b1 07 cpc r27, r17 |
754: e1 f7 brne .-8 ; 0x74e <.do_clear_bss_loop> |
756: 0e 94 e7 03 call 0x7ce ; 0x7ce <main> |
75a: 0c 94 3d 2f jmp 0x5e7a ; 0x5e7a <_exit> |
0000075e <__bad_interrupt>: |
75e: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> |
00000762 <GetActiveParamSetNumber>: |
762: a2 e0 ldi r26, 0x02 ; 2 |
764: b0 e0 ldi r27, 0x00 ; 0 |
766: 0e 94 1f 2f call 0x5e3e ; 0x5e3e <__eeprom_read_byte_1F2021> |
76a: 80 2d mov r24, r0 |
76c: 99 27 eor r25, r25 |
76e: 08 95 ret |
00000770 <WriteParameterSet>: |
770: fb 01 movw r30, r22 |
772: 86 30 cpi r24, 0x06 ; 6 |
774: 08 f0 brcs .+2 ; 0x778 <WriteParameterSet+0x8> |
776: 85 e0 ldi r24, 0x05 ; 5 |
778: 28 2f mov r18, r24 |
77a: 21 50 subi r18, 0x01 ; 1 |
77c: 84 2f mov r24, r20 |
77e: 99 27 eor r25, r25 |
780: aa e3 ldi r26, 0x3A ; 58 |
782: 2a 9f mul r18, r26 |
784: d0 01 movw r26, r0 |
786: 11 24 eor r1, r1 |
788: a6 5f subi r26, 0xF6 ; 246 |
78a: bf 4f sbci r27, 0xFF ; 255 |
0000078c <.28_start>: |
78c: 01 97 sbiw r24, 0x01 ; 1 |
78e: 24 f0 brlt .+8 ; 0x798 <.28_finished> |
790: 01 90 ld r0, Z+ |
792: 0e 94 2c 2f call 0x5e58 ; 0x5e58 <__eeprom_write_byte_1F2021> |
796: fa cf rjmp .-12 ; 0x78c <.28_start> |
00000798 <.28_finished>: |
798: a2 e0 ldi r26, 0x02 ; 2 |
79a: b0 e0 ldi r27, 0x00 ; 0 |
79c: 02 2e mov r0, r18 |
79e: 0e 94 2c 2f call 0x5e58 ; 0x5e58 <__eeprom_write_byte_1F2021> |
7a2: 08 95 ret |
000007a4 <ReadParameterSet>: |
7a4: fb 01 movw r30, r22 |
7a6: 28 2f mov r18, r24 |
7a8: 86 30 cpi r24, 0x06 ; 6 |
7aa: 08 f0 brcs .+2 ; 0x7ae <ReadParameterSet+0xa> |
7ac: 25 e0 ldi r18, 0x05 ; 5 |
7ae: 84 2f mov r24, r20 |
7b0: 99 27 eor r25, r25 |
7b2: 21 50 subi r18, 0x01 ; 1 |
7b4: aa e3 ldi r26, 0x3A ; 58 |
7b6: 2a 9f mul r18, r26 |
7b8: d0 01 movw r26, r0 |
7ba: 11 24 eor r1, r1 |
7bc: a6 5f subi r26, 0xF6 ; 246 |
7be: bf 4f sbci r27, 0xFF ; 255 |
000007c0 <.49_start>: |
7c0: 01 97 sbiw r24, 0x01 ; 1 |
7c2: 24 f0 brlt .+8 ; 0x7cc <.49_finished> |
7c4: 0e 94 1f 2f call 0x5e3e ; 0x5e3e <__eeprom_read_byte_1F2021> |
7c8: 01 92 st Z+, r0 |
7ca: fa cf rjmp .-12 ; 0x7c0 <.49_start> |
000007cc <.49_finished>: |
7cc: 08 95 ret |
000007ce <main>: |
7ce: 0f 93 push r16 |
7d0: 1f 93 push r17 |
7d2: cf 93 push r28 |
7d4: df 93 push r29 |
7d6: 81 e0 ldi r24, 0x01 ; 1 |
7d8: 87 b9 out 0x07, r24 ; 7 |
7da: 8f ef ldi r24, 0xFF ; 255 |
7dc: 88 b9 out 0x08, r24 ; 8 |
7de: 8b e1 ldi r24, 0x1B ; 27 |
7e0: 84 b9 out 0x04, r24 ; 4 |
7e2: 28 9a sbi 0x05, 0 ; 5 |
7e4: 8e e3 ldi r24, 0x3E ; 62 |
7e6: 8a b9 out 0x0a, r24 ; 10 |
7e8: 57 9a sbi 0x0a, 7 ; 10 |
7ea: 87 ef ldi r24, 0xF7 ; 247 |
7ec: 8b b9 out 0x0b, r24 ; 11 |
7ee: 84 b7 in r24, 0x34 ; 52 |
7f0: 87 7f andi r24, 0xF7 ; 247 |
7f2: 84 bf out 0x34, r24 ; 52 |
7f4: 80 91 60 00 lds r24, 0x0060 |
7f8: 88 61 ori r24, 0x18 ; 24 |
7fa: 80 93 60 00 sts 0x0060, r24 |
7fe: 10 92 60 00 sts 0x0060, r1 |
802: 88 ee ldi r24, 0xE8 ; 232 |
804: 93 e0 ldi r25, 0x03 ; 3 |
806: 90 93 a7 01 sts 0x01A7, r25 |
80a: 80 93 a6 01 sts 0x01A6, r24 |
80e: 10 92 22 02 sts 0x0222, r1 |
812: 10 92 21 02 sts 0x0221, r1 |
816: 10 92 b3 04 sts 0x04B3, r1 |
81a: 10 92 b2 04 sts 0x04B2, r1 |
81e: 10 92 20 02 sts 0x0220, r1 |
822: 10 92 1f 02 sts 0x021F, r1 |
826: 10 92 1e 02 sts 0x021E, r1 |
82a: 10 92 1d 02 sts 0x021D, r1 |
82e: 28 98 cbi 0x05, 0 ; 5 |
830: 0e 94 ba 0c call 0x1974 ; 0x1974 <Timer_Init> |
834: 0e 94 a4 07 call 0xf48 ; 0xf48 <UART_Init> |
838: 0e 94 f2 18 call 0x31e4 ; 0x31e4 <rc_sum_init> |
83c: 0e 94 f2 0c call 0x19e4 ; 0x19e4 <ADC_Init> |
840: 0e 94 46 18 call 0x308c ; 0x308c <i2c_init> |
844: 0e 94 22 17 call 0x2e44 ; 0x2e44 <init_MM3> |
848: 78 94 sei |
84a: 10 92 ae 03 sts 0x03AE, r1 |
84e: 8c e3 ldi r24, 0x3C ; 60 |
850: 80 93 af 03 sts 0x03AF, r24 |
854: 84 e0 ldi r24, 0x04 ; 4 |
856: 80 93 b0 03 sts 0x03B0, r24 |
85a: 8c e3 ldi r24, 0x3C ; 60 |
85c: 90 e0 ldi r25, 0x00 ; 0 |
85e: 9f 93 push r25 |
860: 8f 93 push r24 |
862: 1f 92 push r1 |
864: 1f 92 push r1 |
866: 83 eb ldi r24, 0xB3 ; 179 |
868: 91 e0 ldi r25, 0x01 ; 1 |
86a: 9f 93 push r25 |
86c: 8f 93 push r24 |
86e: 1f 92 push r1 |
870: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
874: 82 e9 ldi r24, 0x92 ; 146 |
876: 91 e0 ldi r25, 0x01 ; 1 |
878: 9f 93 push r25 |
87a: 8f 93 push r24 |
87c: 1f 92 push r1 |
87e: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
882: 29 9a sbi 0x05, 1 ; 5 |
884: a1 e0 ldi r26, 0x01 ; 1 |
886: b0 e0 ldi r27, 0x00 ; 0 |
888: 0e 94 1f 2f call 0x5e3e ; 0x5e3e <__eeprom_read_byte_1F2021> |
88c: 80 2d mov r24, r0 |
88e: 2d b7 in r18, 0x3d ; 61 |
890: 3e b7 in r19, 0x3e ; 62 |
892: 26 5f subi r18, 0xF6 ; 246 |
894: 3f 4f sbci r19, 0xFF ; 255 |
896: 2d bf out 0x3d, r18 ; 61 |
898: 8a 30 cpi r24, 0x0A ; 10 |
89a: b9 f1 breq .+110 ; 0x90a <main+0x13c> |
89c: 83 e6 ldi r24, 0x63 ; 99 |
89e: 91 e0 ldi r25, 0x01 ; 1 |
8a0: 9f 93 push r25 |
8a2: 8f 93 push r24 |
8a4: 1f 92 push r1 |
8a6: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
8aa: 0e 94 5b 20 call 0x40b6 ; 0x40b6 <DefaultKonstanten1> |
8ae: 4a e3 ldi r20, 0x3A ; 58 |
8b0: 6a ed ldi r22, 0xDA ; 218 |
8b2: 74 e0 ldi r23, 0x04 ; 4 |
8b4: 80 e0 ldi r24, 0x00 ; 0 |
8b6: 0e 94 b8 03 call 0x770 ; 0x770 <WriteParameterSet> |
8ba: 01 e0 ldi r16, 0x01 ; 1 |
8bc: 0f 90 pop r0 |
8be: 0f 90 pop r0 |
8c0: 0f 90 pop r0 |
8c2: 02 30 cpi r16, 0x02 ; 2 |
8c4: 49 f4 brne .+18 ; 0x8d8 <main+0x10a> |
8c6: 0e 94 ee 1f call 0x3fdc ; 0x3fdc <DefaultKonstanten2> |
8ca: 4a e3 ldi r20, 0x3A ; 58 |
8cc: 6a ed ldi r22, 0xDA ; 218 |
8ce: 74 e0 ldi r23, 0x04 ; 4 |
8d0: 82 e0 ldi r24, 0x02 ; 2 |
8d2: 0e 94 b8 03 call 0x770 ; 0x770 <WriteParameterSet> |
8d6: 03 e0 ldi r16, 0x03 ; 3 |
8d8: 4a e3 ldi r20, 0x3A ; 58 |
8da: 6a ed ldi r22, 0xDA ; 218 |
8dc: 74 e0 ldi r23, 0x04 ; 4 |
8de: 80 2f mov r24, r16 |
8e0: 0e 94 b8 03 call 0x770 ; 0x770 <WriteParameterSet> |
8e4: 0f 5f subi r16, 0xFF ; 255 |
8e6: 06 30 cpi r16, 0x06 ; 6 |
8e8: 60 f3 brcs .-40 ; 0x8c2 <main+0xf4> |
8ea: 81 e0 ldi r24, 0x01 ; 1 |
8ec: 22 e0 ldi r18, 0x02 ; 2 |
8ee: 30 e0 ldi r19, 0x00 ; 0 |
8f0: d9 01 movw r26, r18 |
8f2: 08 2e mov r0, r24 |
8f4: 0e 94 2c 2f call 0x5e58 ; 0x5e58 <__eeprom_write_byte_1F2021> |
8f8: 8a e0 ldi r24, 0x0A ; 10 |
8fa: 21 50 subi r18, 0x01 ; 1 |
8fc: 30 40 sbci r19, 0x00 ; 0 |
8fe: d9 01 movw r26, r18 |
900: 08 2e mov r0, r24 |
902: 0e 94 2c 2f call 0x5e58 ; 0x5e58 <__eeprom_write_byte_1F2021> |
906: 0e 94 e5 21 call 0x43ca ; 0x43ca <calib_acc> |
90a: 02 e0 ldi r16, 0x02 ; 2 |
90c: 10 e0 ldi r17, 0x00 ; 0 |
90e: d8 01 movw r26, r16 |
910: 0e 94 1f 2f call 0x5e3e ; 0x5e3e <__eeprom_read_byte_1F2021> |
914: 80 2d mov r24, r0 |
916: 4a e3 ldi r20, 0x3A ; 58 |
918: 6a ed ldi r22, 0xDA ; 218 |
91a: 74 e0 ldi r23, 0x04 ; 4 |
91c: 0e 94 d2 03 call 0x7a4 ; 0x7a4 <ReadParameterSet> |
920: d8 01 movw r26, r16 |
922: 0e 94 1f 2f call 0x5e3e ; 0x5e3e <__eeprom_read_byte_1F2021> |
926: 80 2d mov r24, r0 |
928: 99 27 eor r25, r25 |
92a: 9f 93 push r25 |
92c: 8f 93 push r24 |
92e: 88 e4 ldi r24, 0x48 ; 72 |
930: 91 e0 ldi r25, 0x01 ; 1 |
932: 9f 93 push r25 |
934: 8f 93 push r24 |
936: 1f 92 push r1 |
938: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
93c: 84 ef ldi r24, 0xF4 ; 244 |
93e: 91 e0 ldi r25, 0x01 ; 1 |
940: 0e 94 9d 0b call 0x173a ; 0x173a <SetDelay> |
944: ec 01 movw r28, r24 |
946: 0f 90 pop r0 |
948: 0f 90 pop r0 |
94a: 0f 90 pop r0 |
94c: 0f 90 pop r0 |
94e: 0f 90 pop r0 |
950: ce 01 movw r24, r28 |
952: 0e 94 a6 0b call 0x174c ; 0x174c <CheckDelay> |
956: 88 23 and r24, r24 |
958: d9 f3 breq .-10 ; 0x950 <main+0x182> |
95a: e0 91 dc 04 lds r30, 0x04DC |
95e: ff 27 eor r31, r31 |
960: ee 0f add r30, r30 |
962: ff 1f adc r31, r31 |
964: e2 55 subi r30, 0x52 ; 82 |
966: fb 4f sbci r31, 0xFB ; 251 |
968: 80 81 ld r24, Z |
96a: 91 81 ldd r25, Z+1 ; 0x01 |
96c: 85 36 cpi r24, 0x65 ; 101 |
96e: 91 05 cpc r25, r1 |
970: c4 f0 brlt .+48 ; 0x9a2 <main+0x1d4> |
972: e0 91 dd 04 lds r30, 0x04DD |
976: ff 27 eor r31, r31 |
978: ee 0f add r30, r30 |
97a: ff 1f adc r31, r31 |
97c: e2 55 subi r30, 0x52 ; 82 |
97e: fb 4f sbci r31, 0xFB ; 251 |
980: 80 81 ld r24, Z |
982: 91 81 ldd r25, Z+1 ; 0x01 |
984: 85 36 cpi r24, 0x65 ; 101 |
986: 91 05 cpc r25, r1 |
988: 64 f0 brlt .+24 ; 0x9a2 <main+0x1d4> |
98a: 83 e3 ldi r24, 0x33 ; 51 |
98c: 91 e0 ldi r25, 0x01 ; 1 |
98e: 9f 93 push r25 |
990: 8f 93 push r24 |
992: 1f 92 push r1 |
994: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
998: 0e 94 5c 16 call 0x2cb8 ; 0x2cb8 <calib_MM3> |
99c: 0f 90 pop r0 |
99e: 0f 90 pop r0 |
9a0: 0f 90 pop r0 |
9a2: e0 91 dc 04 lds r30, 0x04DC |
9a6: ff 27 eor r31, r31 |
9a8: ee 0f add r30, r30 |
9aa: ff 1f adc r31, r31 |
9ac: e2 55 subi r30, 0x52 ; 82 |
9ae: fb 4f sbci r31, 0xFB ; 251 |
9b0: 80 81 ld r24, Z |
9b2: 91 81 ldd r25, Z+1 ; 0x01 |
9b4: 85 36 cpi r24, 0x65 ; 101 |
9b6: 91 05 cpc r25, r1 |
9b8: c4 f0 brlt .+48 ; 0x9ea <main+0x21c> |
9ba: e0 91 dd 04 lds r30, 0x04DD |
9be: ff 27 eor r31, r31 |
9c0: ee 0f add r30, r30 |
9c2: ff 1f adc r31, r31 |
9c4: e2 55 subi r30, 0x52 ; 82 |
9c6: fb 4f sbci r31, 0xFB ; 251 |
9c8: 80 81 ld r24, Z |
9ca: 91 81 ldd r25, Z+1 ; 0x01 |
9cc: 8c 59 subi r24, 0x9C ; 156 |
9ce: 9f 4f sbci r25, 0xFF ; 255 |
9d0: 64 f4 brge .+24 ; 0x9ea <main+0x21c> |
9d2: 8a e1 ldi r24, 0x1A ; 26 |
9d4: 91 e0 ldi r25, 0x01 ; 1 |
9d6: 9f 93 push r25 |
9d8: 8f 93 push r24 |
9da: 1f 92 push r1 |
9dc: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
9e0: 0e 94 e5 21 call 0x43ca ; 0x43ca <calib_acc> |
9e4: 0f 90 pop r0 |
9e6: 0f 90 pop r0 |
9e8: 0f 90 pop r0 |
9ea: 80 91 e2 04 lds r24, 0x04E2 |
9ee: 80 ff sbrs r24, 0 |
9f0: 20 c0 rjmp .+64 ; 0xa32 <main+0x264> |
9f2: 8d ef ldi r24, 0xFD ; 253 |
9f4: 90 e0 ldi r25, 0x00 ; 0 |
9f6: 9f 93 push r25 |
9f8: 8f 93 push r24 |
9fa: 1f 92 push r1 |
9fc: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
a00: 84 ec ldi r24, 0xC4 ; 196 |
a02: 99 e0 ldi r25, 0x09 ; 9 |
a04: 0e 94 9d 0b call 0x173a ; 0x173a <SetDelay> |
a08: ec 01 movw r28, r24 |
a0a: 0e 94 0e 10 call 0x201c ; 0x201c <SucheLuftruckOffset> |
a0e: 0f 90 pop r0 |
a10: 0f 90 pop r0 |
a12: 0f 90 pop r0 |
a14: ce 01 movw r24, r28 |
a16: 0e 94 a6 0b call 0x174c ; 0x174c <CheckDelay> |
a1a: 88 23 and r24, r24 |
a1c: d9 f3 breq .-10 ; 0xa14 <main+0x246> |
a1e: 88 ef ldi r24, 0xF8 ; 248 |
a20: 90 e0 ldi r25, 0x00 ; 0 |
a22: 9f 93 push r25 |
a24: 8f 93 push r24 |
a26: 1f 92 push r1 |
a28: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
a2c: 0f 90 pop r0 |
a2e: 0f 90 pop r0 |
a30: 0f 90 pop r0 |
a32: 0e 94 13 21 call 0x4226 ; 0x4226 <SetNeutral> |
a36: 28 98 cbi 0x05, 0 ; 5 |
a38: 80 ed ldi r24, 0xD0 ; 208 |
a3a: 97 e0 ldi r25, 0x07 ; 7 |
a3c: 90 93 a7 01 sts 0x01A7, r25 |
a40: 80 93 a6 01 sts 0x01A6, r24 |
a44: 88 ee ldi r24, 0xE8 ; 232 |
a46: 93 e0 ldi r25, 0x03 ; 3 |
a48: 90 93 a9 03 sts 0x03A9, r25 |
a4c: 80 93 a8 03 sts 0x03A8, r24 |
a50: 85 e5 ldi r24, 0x55 ; 85 |
a52: 80 93 a3 03 sts 0x03A3, r24 |
a56: 8a ee ldi r24, 0xEA ; 234 |
a58: 90 e0 ldi r25, 0x00 ; 0 |
a5a: 9f 93 push r25 |
a5c: 8f 93 push r24 |
a5e: 1f 92 push r1 |
a60: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
a64: 80 91 e2 04 lds r24, 0x04E2 |
a68: 0f 90 pop r0 |
a6a: 0f 90 pop r0 |
a6c: 0f 90 pop r0 |
a6e: 82 ff sbrs r24, 2 |
a70: 03 c0 rjmp .+6 ; 0xa78 <main+0x2aa> |
a72: 8e ed ldi r24, 0xDE ; 222 |
a74: 90 e0 ldi r25, 0x00 ; 0 |
a76: 02 c0 rjmp .+4 ; 0xa7c <main+0x2ae> |
a78: 86 ed ldi r24, 0xD6 ; 214 |
a7a: 90 e0 ldi r25, 0x00 ; 0 |
a7c: 9f 93 push r25 |
a7e: 8f 93 push r24 |
a80: 1f 92 push r1 |
a82: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
a86: 0f 90 pop r0 |
a88: 0f 90 pop r0 |
a8a: 0f 90 pop r0 |
a8c: 82 ed ldi r24, 0xD2 ; 210 |
a8e: 90 e0 ldi r25, 0x00 ; 0 |
a90: 9f 93 push r25 |
a92: 8f 93 push r24 |
a94: 1f 92 push r1 |
a96: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
a9a: 0e 94 52 10 call 0x20a4 ; 0x20a4 <LcdClear> |
a9e: 0f 90 pop r0 |
aa0: 0f 90 pop r0 |
aa2: 0f 90 pop r0 |
aa4: 80 91 a5 01 lds r24, 0x01A5 |
aa8: 88 23 and r24, r24 |
aaa: 79 f1 breq .+94 ; 0xb0a <main+0x33c> |
aac: 10 92 a5 01 sts 0x01A5, r1 |
ab0: 0e 94 5e 22 call 0x44bc ; 0x44bc <MotorRegler> |
ab4: 0e 94 cc 20 call 0x4198 ; 0x4198 <SendMotorData> |
ab8: 28 98 cbi 0x05, 0 ; 5 |
aba: 80 91 01 01 lds r24, 0x0101 |
abe: 88 23 and r24, r24 |
ac0: 19 f0 breq .+6 ; 0xac8 <main+0x2fa> |
ac2: 81 50 subi r24, 0x01 ; 1 |
ac4: 80 93 01 01 sts 0x0101, r24 |
ac8: 80 91 1c 02 lds r24, 0x021C |
acc: 88 23 and r24, r24 |
ace: 29 f0 breq .+10 ; 0xada <main+0x30c> |
ad0: 80 91 1c 02 lds r24, 0x021C |
ad4: 81 50 subi r24, 0x01 ; 1 |
ad6: 80 93 1c 02 sts 0x021C, r24 |
ada: 20 91 04 01 lds r18, 0x0104 |
ade: 30 91 05 01 lds r19, 0x0105 |
ae2: 80 91 f2 04 lds r24, 0x04F2 |
ae6: 99 27 eor r25, r25 |
ae8: 28 17 cp r18, r24 |
aea: 39 07 cpc r19, r25 |
aec: 34 f4 brge .+12 ; 0xafa <main+0x32c> |
aee: 80 ed ldi r24, 0xD0 ; 208 |
af0: 97 e0 ldi r25, 0x07 ; 7 |
af2: 90 93 a7 01 sts 0x01A7, r25 |
af6: 80 93 a6 01 sts 0x01A6, r24 |
afa: 80 91 d2 01 lds r24, 0x01D2 |
afe: 88 23 and r24, r24 |
b00: 19 f4 brne .+6 ; 0xb08 <main+0x33a> |
b02: 0e 94 46 18 call 0x308c ; 0x308c <i2c_init> |
b06: 01 c0 rjmp .+2 ; 0xb0a <main+0x33c> |
b08: 28 98 cbi 0x05, 0 ; 5 |
b0a: 0e 94 bf 07 call 0xf7e ; 0xf7e <DatenUebertragung> |
b0e: 0e 94 2d 08 call 0x105a ; 0x105a <BearbeiteRxDaten> |
b12: 80 e0 ldi r24, 0x00 ; 0 |
b14: 90 e0 ldi r25, 0x00 ; 0 |
b16: 0e 94 a6 0b call 0x174c ; 0x174c <CheckDelay> |
b1a: 88 23 and r24, r24 |
b1c: 19 f2 breq .-122 ; 0xaa4 <main+0x2d6> |
b1e: 80 91 23 02 lds r24, 0x0223 |
b22: 88 23 and r24, r24 |
b24: 29 f0 breq .+10 ; 0xb30 <main+0x362> |
b26: 88 b1 in r24, 0x08 ; 8 |
b28: 90 e1 ldi r25, 0x10 ; 16 |
b2a: 89 27 eor r24, r25 |
b2c: 88 b9 out 0x08, r24 ; 8 |
b2e: 01 c0 rjmp .+2 ; 0xb32 <main+0x364> |
b30: 44 98 cbi 0x08, 4 ; 8 |
b32: 84 ef ldi r24, 0xF4 ; 244 |
b34: 91 e0 ldi r25, 0x01 ; 1 |
b36: 0e 94 9d 0b call 0x173a ; 0x173a <SetDelay> |
b3a: b4 cf rjmp .-152 ; 0xaa4 <main+0x2d6> |
00000b3c <__vector_22>: |
b3c: 1f 92 push r1 |
b3e: 0f 92 push r0 |
b40: 0f b6 in r0, 0x3f ; 63 |
b42: 0f 92 push r0 |
b44: 11 24 eor r1, r1 |
b46: 8f 93 push r24 |
b48: 9f 93 push r25 |
b4a: ef 93 push r30 |
b4c: ff 93 push r31 |
b4e: 80 91 00 01 lds r24, 0x0100 |
b52: 88 23 and r24, r24 |
b54: e1 f4 brne .+56 ; 0xb8e <__vector_22+0x52> |
b56: 80 91 a1 01 lds r24, 0x01A1 |
b5a: 90 91 a2 01 lds r25, 0x01A2 |
b5e: 01 96 adiw r24, 0x01 ; 1 |
b60: 90 93 a2 01 sts 0x01A2, r25 |
b64: 80 93 a1 01 sts 0x01A1, r24 |
b68: fc 01 movw r30, r24 |
b6a: eb 58 subi r30, 0x8B ; 139 |
b6c: fd 4f sbci r31, 0xFD ; 253 |
b6e: e0 81 ld r30, Z |
b70: ed 30 cpi r30, 0x0D ; 13 |
b72: 19 f0 breq .+6 ; 0xb7a <__vector_22+0x3e> |
b74: 86 39 cpi r24, 0x96 ; 150 |
b76: 91 05 cpc r25, r1 |
b78: 39 f4 brne .+14 ; 0xb88 <__vector_22+0x4c> |
b7a: 10 92 a2 01 sts 0x01A2, r1 |
b7e: 10 92 a1 01 sts 0x01A1, r1 |
b82: 81 e0 ldi r24, 0x01 ; 1 |
b84: 80 93 00 01 sts 0x0100, r24 |
b88: e0 93 c6 00 sts 0x00C6, r30 |
b8c: 04 c0 rjmp .+8 ; 0xb96 <__vector_22+0x5a> |
b8e: 10 92 a2 01 sts 0x01A2, r1 |
b92: 10 92 a1 01 sts 0x01A1, r1 |
b96: ff 91 pop r31 |
b98: ef 91 pop r30 |
b9a: 9f 91 pop r25 |
b9c: 8f 91 pop r24 |
b9e: 0f 90 pop r0 |
ba0: 0f be out 0x3f, r0 ; 63 |
ba2: 0f 90 pop r0 |
ba4: 1f 90 pop r1 |
ba6: 18 95 reti |
00000ba8 <__vector_20>: |
ba8: 1f 92 push r1 |
baa: 0f 92 push r0 |
bac: 0f b6 in r0, 0x3f ; 63 |
bae: 0f 92 push r0 |
bb0: 11 24 eor r1, r1 |
bb2: 2f 93 push r18 |
bb4: 3f 93 push r19 |
bb6: 4f 93 push r20 |
bb8: 8f 93 push r24 |
bba: 9f 93 push r25 |
bbc: af 93 push r26 |
bbe: bf 93 push r27 |
bc0: cf 93 push r28 |
bc2: df 93 push r29 |
bc4: ef 93 push r30 |
bc6: ff 93 push r31 |
bc8: 80 91 c6 00 lds r24, 0x00C6 |
bcc: 80 93 90 01 sts 0x0190, r24 |
bd0: 40 91 9c 01 lds r20, 0x019C |
bd4: 46 39 cpi r20, 0x96 ; 150 |
bd6: 10 f0 brcs .+4 ; 0xbdc <__vector_20+0x34> |
bd8: 10 92 9b 01 sts 0x019B, r1 |
bdc: 80 91 90 01 lds r24, 0x0190 |
be0: 8d 30 cpi r24, 0x0D ; 13 |
be2: 09 f0 breq .+2 ; 0xbe6 <__vector_20+0x3e> |
be4: 5c c0 rjmp .+184 ; 0xc9e <__vector_20+0xf6> |
be6: 80 91 9b 01 lds r24, 0x019B |
bea: 82 30 cpi r24, 0x02 ; 2 |
bec: 09 f0 breq .+2 ; 0xbf0 <__vector_20+0x48> |
bee: 57 c0 rjmp .+174 ; 0xc9e <__vector_20+0xf6> |
bf0: 10 92 9b 01 sts 0x019B, r1 |
bf4: a4 2f mov r26, r20 |
bf6: bb 27 eor r27, r27 |
bf8: fd 01 movw r30, r26 |
bfa: ea 54 subi r30, 0x4A ; 74 |
bfc: fc 4f sbci r31, 0xFC ; 252 |
bfe: 30 81 ld r19, Z |
c00: ed 01 movw r28, r26 |
c02: c9 54 subi r28, 0x49 ; 73 |
c04: dc 4f sbci r29, 0xFC ; 252 |
c06: 28 81 ld r18, Y |
c08: 80 91 9f 01 lds r24, 0x019F |
c0c: 90 91 a0 01 lds r25, 0x01A0 |
c10: 83 1b sub r24, r19 |
c12: 91 09 sbc r25, r1 |
c14: 82 1b sub r24, r18 |
c16: 91 09 sbc r25, r1 |
c18: 9f 70 andi r25, 0x0F ; 15 |
c1a: 90 93 a0 01 sts 0x01A0, r25 |
c1e: 80 93 9f 01 sts 0x019F, r24 |
c22: 9c 01 movw r18, r24 |
c24: 96 e0 ldi r25, 0x06 ; 6 |
c26: 36 95 lsr r19 |
c28: 27 95 ror r18 |
c2a: 9a 95 dec r25 |
c2c: e1 f7 brne .-8 ; 0xc26 <__vector_20+0x7e> |
c2e: 23 5c subi r18, 0xC3 ; 195 |
c30: 20 93 9e 01 sts 0x019E, r18 |
c34: 98 2f mov r25, r24 |
c36: 9f 73 andi r25, 0x3F ; 63 |
c38: 93 5c subi r25, 0xC3 ; 195 |
c3a: 90 93 9d 01 sts 0x019D, r25 |
c3e: 80 81 ld r24, Z |
c40: 28 17 cp r18, r24 |
c42: 29 f4 brne .+10 ; 0xc4e <__vector_20+0xa6> |
c44: 88 81 ld r24, Y |
c46: 98 17 cp r25, r24 |
c48: 11 f4 brne .+4 ; 0xc4e <__vector_20+0xa6> |
c4a: 91 e0 ldi r25, 0x01 ; 1 |
c4c: 06 c0 rjmp .+12 ; 0xc5a <__vector_20+0xb2> |
c4e: 80 91 93 01 lds r24, 0x0193 |
c52: 8f 5f subi r24, 0xFF ; 255 |
c54: 80 93 93 01 sts 0x0193, r24 |
c58: 90 e0 ldi r25, 0x00 ; 0 |
c5a: 80 91 91 01 lds r24, 0x0191 |
c5e: 88 23 and r24, r24 |
c60: 09 f0 breq .+2 ; 0xc64 <__vector_20+0xbc> |
c62: 64 c0 rjmp .+200 ; 0xd2c <__vector_20+0x184> |
c64: 99 23 and r25, r25 |
c66: 09 f4 brne .+2 ; 0xc6a <__vector_20+0xc2> |
c68: 61 c0 rjmp .+194 ; 0xd2c <__vector_20+0x184> |
c6a: 81 e0 ldi r24, 0x01 ; 1 |
c6c: 80 93 91 01 sts 0x0191, r24 |
c70: 40 93 94 01 sts 0x0194, r20 |
c74: a8 54 subi r26, 0x48 ; 72 |
c76: bc 4f sbci r27, 0xFC ; 252 |
c78: 8d e0 ldi r24, 0x0D ; 13 |
c7a: 8c 93 st X, r24 |
c7c: 80 91 ba 03 lds r24, 0x03BA |
c80: 82 35 cpi r24, 0x52 ; 82 |
c82: 09 f0 breq .+2 ; 0xc86 <__vector_20+0xde> |
c84: 53 c0 rjmp .+166 ; 0xd2c <__vector_20+0x184> |
c86: 88 e1 ldi r24, 0x18 ; 24 |
c88: 90 e0 ldi r25, 0x00 ; 0 |
c8a: 2c e0 ldi r18, 0x0C ; 12 |
c8c: 0f b6 in r0, 0x3f ; 63 |
c8e: f8 94 cli |
c90: a8 95 wdr |
c92: 80 93 60 00 sts 0x0060, r24 |
c96: 0f be out 0x3f, r0 ; 63 |
c98: 20 93 60 00 sts 0x0060, r18 |
c9c: 47 c0 rjmp .+142 ; 0xd2c <__vector_20+0x184> |
c9e: 80 91 9b 01 lds r24, 0x019B |
ca2: 81 30 cpi r24, 0x01 ; 1 |
ca4: d9 f0 breq .+54 ; 0xcdc <__vector_20+0x134> |
ca6: 81 30 cpi r24, 0x01 ; 1 |
ca8: 18 f0 brcs .+6 ; 0xcb0 <__vector_20+0x108> |
caa: 82 30 cpi r24, 0x02 ; 2 |
cac: e9 f5 brne .+122 ; 0xd28 <__vector_20+0x180> |
cae: 30 c0 rjmp .+96 ; 0xd10 <__vector_20+0x168> |
cb0: 80 91 90 01 lds r24, 0x0190 |
cb4: 83 32 cpi r24, 0x23 ; 35 |
cb6: 39 f4 brne .+14 ; 0xcc6 <__vector_20+0x11e> |
cb8: 80 91 91 01 lds r24, 0x0191 |
cbc: 88 23 and r24, r24 |
cbe: 19 f4 brne .+6 ; 0xcc6 <__vector_20+0x11e> |
cc0: 81 e0 ldi r24, 0x01 ; 1 |
cc2: 80 93 9b 01 sts 0x019B, r24 |
cc6: 80 91 90 01 lds r24, 0x0190 |
cca: 80 93 b8 03 sts 0x03B8, r24 |
cce: 81 e0 ldi r24, 0x01 ; 1 |
cd0: 80 93 9c 01 sts 0x019C, r24 |
cd4: 80 91 90 01 lds r24, 0x0190 |
cd8: 99 27 eor r25, r25 |
cda: 15 c0 rjmp .+42 ; 0xd06 <__vector_20+0x15e> |
cdc: 82 e0 ldi r24, 0x02 ; 2 |
cde: 80 93 9b 01 sts 0x019B, r24 |
ce2: e4 2f mov r30, r20 |
ce4: ff 27 eor r31, r31 |
ce6: 80 91 90 01 lds r24, 0x0190 |
cea: e8 54 subi r30, 0x48 ; 72 |
cec: fc 4f sbci r31, 0xFC ; 252 |
cee: 80 83 st Z, r24 |
cf0: 4f 5f subi r20, 0xFF ; 255 |
cf2: 40 93 9c 01 sts 0x019C, r20 |
cf6: 20 91 90 01 lds r18, 0x0190 |
cfa: 80 91 9f 01 lds r24, 0x019F |
cfe: 90 91 a0 01 lds r25, 0x01A0 |
d02: 82 0f add r24, r18 |
d04: 91 1d adc r25, r1 |
d06: 90 93 a0 01 sts 0x01A0, r25 |
d0a: 80 93 9f 01 sts 0x019F, r24 |
d0e: 0e c0 rjmp .+28 ; 0xd2c <__vector_20+0x184> |
d10: e4 2f mov r30, r20 |
d12: ff 27 eor r31, r31 |
d14: 80 91 90 01 lds r24, 0x0190 |
d18: e8 54 subi r30, 0x48 ; 72 |
d1a: fc 4f sbci r31, 0xFC ; 252 |
d1c: 80 83 st Z, r24 |
d1e: 46 39 cpi r20, 0x96 ; 150 |
d20: 38 f3 brcs .-50 ; 0xcf0 <__vector_20+0x148> |
d22: 10 92 9b 01 sts 0x019B, r1 |
d26: e7 cf rjmp .-50 ; 0xcf6 <__vector_20+0x14e> |
d28: 10 92 9b 01 sts 0x019B, r1 |
d2c: ff 91 pop r31 |
d2e: ef 91 pop r30 |
d30: df 91 pop r29 |
d32: cf 91 pop r28 |
d34: bf 91 pop r27 |
d36: af 91 pop r26 |
d38: 9f 91 pop r25 |
d3a: 8f 91 pop r24 |
d3c: 4f 91 pop r20 |
d3e: 3f 91 pop r19 |
d40: 2f 91 pop r18 |
d42: 0f 90 pop r0 |
d44: 0f be out 0x3f, r0 ; 63 |
d46: 0f 90 pop r0 |
d48: 1f 90 pop r1 |
d4a: 18 95 reti |
00000d4c <AddCRC>: |
d4c: dc 01 movw r26, r24 |
d4e: 20 e0 ldi r18, 0x00 ; 0 |
d50: 30 e0 ldi r19, 0x00 ; 0 |
d52: 40 e0 ldi r20, 0x00 ; 0 |
d54: 50 e0 ldi r21, 0x00 ; 0 |
d56: e5 e7 ldi r30, 0x75 ; 117 |
d58: f2 e0 ldi r31, 0x02 ; 2 |
d5a: 05 c0 rjmp .+10 ; 0xd66 <AddCRC+0x1a> |
d5c: 81 91 ld r24, Z+ |
d5e: 28 0f add r18, r24 |
d60: 31 1d adc r19, r1 |
d62: 4f 5f subi r20, 0xFF ; 255 |
d64: 5f 4f sbci r21, 0xFF ; 255 |
d66: 4a 17 cp r20, r26 |
d68: 5b 07 cpc r21, r27 |
d6a: c1 f7 brne .-16 ; 0xd5c <AddCRC+0x10> |
d6c: 3f 70 andi r19, 0x0F ; 15 |
d6e: c9 01 movw r24, r18 |
d70: 36 e0 ldi r19, 0x06 ; 6 |
d72: 96 95 lsr r25 |
d74: 87 95 ror r24 |
d76: 3a 95 dec r19 |
d78: e1 f7 brne .-8 ; 0xd72 <AddCRC+0x26> |
d7a: 83 5c subi r24, 0xC3 ; 195 |
d7c: fd 01 movw r30, r26 |
d7e: eb 58 subi r30, 0x8B ; 139 |
d80: fd 4f sbci r31, 0xFD ; 253 |
d82: 80 83 st Z, r24 |
d84: 11 96 adiw r26, 0x01 ; 1 |
d86: 2f 73 andi r18, 0x3F ; 63 |
d88: 23 5c subi r18, 0xC3 ; 195 |
d8a: fd 01 movw r30, r26 |
d8c: eb 58 subi r30, 0x8B ; 139 |
d8e: fd 4f sbci r31, 0xFD ; 253 |
d90: 20 83 st Z, r18 |
d92: aa 58 subi r26, 0x8A ; 138 |
d94: bd 4f sbci r27, 0xFD ; 253 |
d96: 8d e0 ldi r24, 0x0D ; 13 |
d98: 8c 93 st X, r24 |
d9a: 10 92 00 01 sts 0x0100, r1 |
d9e: 80 91 75 02 lds r24, 0x0275 |
da2: 80 93 c6 00 sts 0x00C6, r24 |
da6: 08 95 ret |
00000da8 <SendOutData>: |
da8: ef 92 push r14 |
daa: ff 92 push r15 |
dac: 0f 93 push r16 |
dae: 1f 93 push r17 |
db0: cf 93 push r28 |
db2: df 93 push r29 |
db4: 7a 01 movw r14, r20 |
db6: 72 2f mov r23, r18 |
db8: 93 e2 ldi r25, 0x23 ; 35 |
dba: 90 93 75 02 sts 0x0275, r25 |
dbe: 60 93 76 02 sts 0x0276, r22 |
dc2: 80 93 77 02 sts 0x0277, r24 |
dc6: 03 e0 ldi r16, 0x03 ; 3 |
dc8: 10 e0 ldi r17, 0x00 ; 0 |
dca: 60 e0 ldi r22, 0x00 ; 0 |
dcc: a8 e7 ldi r26, 0x78 ; 120 |
dce: b2 e0 ldi r27, 0x02 ; 2 |
dd0: 46 c0 rjmp .+140 ; 0xe5e <SendOutData+0xb6> |
dd2: f7 01 movw r30, r14 |
dd4: e6 0f add r30, r22 |
dd6: f1 1d adc r31, r1 |
dd8: 90 81 ld r25, Z |
dda: 6f 5f subi r22, 0xFF ; 255 |
ddc: 71 50 subi r23, 0x01 ; 1 |
dde: 19 f4 brne .+6 ; 0xde6 <SendOutData+0x3e> |
de0: e0 e0 ldi r30, 0x00 ; 0 |
de2: 40 e0 ldi r20, 0x00 ; 0 |
de4: 0f c0 rjmp .+30 ; 0xe04 <SendOutData+0x5c> |
de6: f7 01 movw r30, r14 |
de8: e6 0f add r30, r22 |
dea: f1 1d adc r31, r1 |
dec: 40 81 ld r20, Z |
dee: 6f 5f subi r22, 0xFF ; 255 |
df0: 71 50 subi r23, 0x01 ; 1 |
df2: 11 f4 brne .+4 ; 0xdf8 <SendOutData+0x50> |
df4: e0 e0 ldi r30, 0x00 ; 0 |
df6: 06 c0 rjmp .+12 ; 0xe04 <SendOutData+0x5c> |
df8: f7 01 movw r30, r14 |
dfa: e6 0f add r30, r22 |
dfc: f1 1d adc r31, r1 |
dfe: e0 81 ld r30, Z |
e00: 6f 5f subi r22, 0xFF ; 255 |
e02: 71 50 subi r23, 0x01 ; 1 |
e04: 89 2f mov r24, r25 |
e06: 86 95 lsr r24 |
e08: 86 95 lsr r24 |
e0a: 83 5c subi r24, 0xC3 ; 195 |
e0c: 8c 93 st X, r24 |
e0e: 55 27 eor r21, r21 |
e10: 89 2f mov r24, r25 |
e12: 99 27 eor r25, r25 |
e14: 83 70 andi r24, 0x03 ; 3 |
e16: 90 70 andi r25, 0x00 ; 0 |
e18: 24 e0 ldi r18, 0x04 ; 4 |
e1a: 88 0f add r24, r24 |
e1c: 99 1f adc r25, r25 |
e1e: 2a 95 dec r18 |
e20: e1 f7 brne .-8 ; 0xe1a <SendOutData+0x72> |
e22: 9a 01 movw r18, r20 |
e24: 94 e0 ldi r25, 0x04 ; 4 |
e26: 36 95 lsr r19 |
e28: 27 95 ror r18 |
e2a: 9a 95 dec r25 |
e2c: e1 f7 brne .-8 ; 0xe26 <SendOutData+0x7e> |
e2e: 82 2b or r24, r18 |
e30: 83 5c subi r24, 0xC3 ; 195 |
e32: ed 01 movw r28, r26 |
e34: 89 83 std Y+1, r24 ; 0x01 |
e36: 4f 70 andi r20, 0x0F ; 15 |
e38: 50 70 andi r21, 0x00 ; 0 |
e3a: 44 0f add r20, r20 |
e3c: 55 1f adc r21, r21 |
e3e: 44 0f add r20, r20 |
e40: 55 1f adc r21, r21 |
e42: 8e 2f mov r24, r30 |
e44: 82 95 swap r24 |
e46: 86 95 lsr r24 |
e48: 86 95 lsr r24 |
e4a: 83 70 andi r24, 0x03 ; 3 |
e4c: 84 2b or r24, r20 |
e4e: 83 5c subi r24, 0xC3 ; 195 |
e50: 8a 83 std Y+2, r24 ; 0x02 |
e52: ef 73 andi r30, 0x3F ; 63 |
e54: e3 5c subi r30, 0xC3 ; 195 |
e56: eb 83 std Y+3, r30 ; 0x03 |
e58: 0c 5f subi r16, 0xFC ; 252 |
e5a: 1f 4f sbci r17, 0xFF ; 255 |
e5c: 14 96 adiw r26, 0x04 ; 4 |
e5e: 77 23 and r23, r23 |
e60: 09 f0 breq .+2 ; 0xe64 <SendOutData+0xbc> |
e62: b7 cf rjmp .-146 ; 0xdd2 <SendOutData+0x2a> |
e64: c8 01 movw r24, r16 |
e66: 0e 94 a6 06 call 0xd4c ; 0xd4c <AddCRC> |
e6a: e6 e0 ldi r30, 0x06 ; 6 |
e6c: cd b7 in r28, 0x3d ; 61 |
e6e: de b7 in r29, 0x3e ; 62 |
e70: 0c 94 0a 2f jmp 0x5e14 ; 0x5e14 <__epilogue_restores__+0x18> |
00000e74 <Decode64>: |
e74: 1f 93 push r17 |
e76: cf 93 push r28 |
e78: df 93 push r29 |
e7a: ec 01 movw r28, r24 |
e7c: 70 e0 ldi r23, 0x00 ; 0 |
e7e: a2 2f mov r26, r18 |
e80: bb 27 eor r27, r27 |
e82: 12 97 sbiw r26, 0x02 ; 2 |
e84: 48 c0 rjmp .+144 ; 0xf16 <Decode64+0xa2> |
e86: e4 2f mov r30, r20 |
e88: ff 27 eor r31, r31 |
e8a: e8 54 subi r30, 0x48 ; 72 |
e8c: fc 4f sbci r31, 0xFC ; 252 |
e8e: 30 81 ld r19, Z |
e90: 4f 5f subi r20, 0xFF ; 255 |
e92: e4 2f mov r30, r20 |
e94: ff 27 eor r31, r31 |
e96: e8 54 subi r30, 0x48 ; 72 |
e98: fc 4f sbci r31, 0xFC ; 252 |
e9a: 50 81 ld r21, Z |
e9c: 4f 5f subi r20, 0xFF ; 255 |
e9e: e4 2f mov r30, r20 |
ea0: ff 27 eor r31, r31 |
ea2: e8 54 subi r30, 0x48 ; 72 |
ea4: fc 4f sbci r31, 0xFC ; 252 |
ea6: 10 81 ld r17, Z |
ea8: 4f 5f subi r20, 0xFF ; 255 |
eaa: e4 2f mov r30, r20 |
eac: ff 27 eor r31, r31 |
eae: e8 54 subi r30, 0x48 ; 72 |
eb0: fc 4f sbci r31, 0xFC ; 252 |
eb2: 20 81 ld r18, Z |
eb4: 4f 5f subi r20, 0xFF ; 255 |
eb6: 84 2f mov r24, r20 |
eb8: 99 27 eor r25, r25 |
eba: a8 17 cp r26, r24 |
ebc: b9 07 cpc r27, r25 |
ebe: 74 f1 brlt .+92 ; 0xf1c <Decode64+0xa8> |
ec0: 5d 53 subi r21, 0x3D ; 61 |
ec2: fe 01 movw r30, r28 |
ec4: e7 0f add r30, r23 |
ec6: f1 1d adc r31, r1 |
ec8: 3d 53 subi r19, 0x3D ; 61 |
eca: 33 0f add r19, r19 |
ecc: 33 0f add r19, r19 |
ece: 85 2f mov r24, r21 |
ed0: 82 95 swap r24 |
ed2: 8f 70 andi r24, 0x0F ; 15 |
ed4: 38 2b or r19, r24 |
ed6: 30 83 st Z, r19 |
ed8: 61 30 cpi r22, 0x01 ; 1 |
eda: 01 f1 breq .+64 ; 0xf1c <Decode64+0xa8> |
edc: 91 2f mov r25, r17 |
ede: 9d 53 subi r25, 0x3D ; 61 |
ee0: 7f 5f subi r23, 0xFF ; 255 |
ee2: fe 01 movw r30, r28 |
ee4: e7 0f add r30, r23 |
ee6: f1 1d adc r31, r1 |
ee8: 71 50 subi r23, 0x01 ; 1 |
eea: 52 95 swap r21 |
eec: 50 7f andi r21, 0xF0 ; 240 |
eee: 89 2f mov r24, r25 |
ef0: 86 95 lsr r24 |
ef2: 86 95 lsr r24 |
ef4: 58 2b or r21, r24 |
ef6: 50 83 st Z, r21 |
ef8: 63 50 subi r22, 0x03 ; 3 |
efa: 6f 3f cpi r22, 0xFF ; 255 |
efc: 79 f0 breq .+30 ; 0xf1c <Decode64+0xa8> |
efe: 7e 5f subi r23, 0xFE ; 254 |
f00: fe 01 movw r30, r28 |
f02: e7 0f add r30, r23 |
f04: f1 1d adc r31, r1 |
f06: 92 95 swap r25 |
f08: 99 0f add r25, r25 |
f0a: 99 0f add r25, r25 |
f0c: 90 7c andi r25, 0xC0 ; 192 |
f0e: 2d 53 subi r18, 0x3D ; 61 |
f10: 92 2b or r25, r18 |
f12: 90 83 st Z, r25 |
f14: 7f 5f subi r23, 0xFF ; 255 |
f16: 66 23 and r22, r22 |
f18: 09 f0 breq .+2 ; 0xf1c <Decode64+0xa8> |
f1a: b5 cf rjmp .-150 ; 0xe86 <Decode64+0x12> |
f1c: df 91 pop r29 |
f1e: cf 91 pop r28 |
f20: 1f 91 pop r17 |
f22: 08 95 ret |
00000f24 <uart_putchar>: |
f24: 1f 93 push r17 |
f26: 18 2f mov r17, r24 |
f28: 8a 30 cpi r24, 0x0A ; 10 |
f2a: 19 f4 brne .+6 ; 0xf32 <uart_putchar+0xe> |
f2c: 8d e0 ldi r24, 0x0D ; 13 |
f2e: 0e 94 92 07 call 0xf24 ; 0xf24 <uart_putchar> |
f32: 80 91 c0 00 lds r24, 0x00C0 |
f36: 85 ff sbrs r24, 5 |
f38: fc cf rjmp .-8 ; 0xf32 <uart_putchar+0xe> |
f3a: 10 93 c6 00 sts 0x00C6, r17 |
f3e: 80 e0 ldi r24, 0x00 ; 0 |
f40: 90 e0 ldi r25, 0x00 ; 0 |
f42: 1f 91 pop r17 |
f44: 08 95 ret |
00000f46 <WriteProgramData>: |
f46: 08 95 ret |
00000f48 <UART_Init>: |
f48: e1 ec ldi r30, 0xC1 ; 193 |
f4a: f0 e0 ldi r31, 0x00 ; 0 |
f4c: 88 e1 ldi r24, 0x18 ; 24 |
f4e: 80 83 st Z, r24 |
f50: a0 ec ldi r26, 0xC0 ; 192 |
f52: b0 e0 ldi r27, 0x00 ; 0 |
f54: 8c 91 ld r24, X |
f56: 82 60 ori r24, 0x02 ; 2 |
f58: 8c 93 st X, r24 |
f5a: 80 81 ld r24, Z |
f5c: 80 68 ori r24, 0x80 ; 128 |
f5e: 80 83 st Z, r24 |
f60: 80 81 ld r24, Z |
f62: 80 64 ori r24, 0x40 ; 64 |
f64: 80 83 st Z, r24 |
f66: 8a e2 ldi r24, 0x2A ; 42 |
f68: 80 93 c4 00 sts 0x00C4, r24 |
f6c: 88 ec ldi r24, 0xC8 ; 200 |
f6e: 90 e0 ldi r25, 0x00 ; 0 |
f70: 0e 94 9d 0b call 0x173a ; 0x173a <SetDelay> |
f74: 90 93 a2 03 sts 0x03A2, r25 |
f78: 80 93 a1 03 sts 0x03A1, r24 |
f7c: 08 95 ret |
00000f7e <DatenUebertragung>: |
f7e: 80 91 00 01 lds r24, 0x0100 |
f82: 88 23 and r24, r24 |
f84: 09 f4 brne .+2 ; 0xf88 <DatenUebertragung+0xa> |
f86: 68 c0 rjmp .+208 ; 0x1058 <DatenUebertragung+0xda> |
f88: 80 91 8c 01 lds r24, 0x018C |
f8c: 88 23 and r24, r24 |
f8e: 71 f0 breq .+28 ; 0xfac <DatenUebertragung+0x2e> |
f90: 80 91 00 01 lds r24, 0x0100 |
f94: 88 23 and r24, r24 |
f96: 51 f0 breq .+20 ; 0xfac <DatenUebertragung+0x2e> |
f98: 2b e0 ldi r18, 0x0B ; 11 |
f9a: 43 ea ldi r20, 0xA3 ; 163 |
f9c: 53 e0 ldi r21, 0x03 ; 3 |
f9e: 60 91 74 02 lds r22, 0x0274 |
fa2: 87 e4 ldi r24, 0x47 ; 71 |
fa4: 0e 94 d4 06 call 0xda8 ; 0xda8 <SendOutData> |
fa8: 10 92 8c 01 sts 0x018C, r1 |
fac: 80 91 a1 03 lds r24, 0x03A1 |
fb0: 90 91 a2 03 lds r25, 0x03A2 |
fb4: 0e 94 a6 0b call 0x174c ; 0x174c <CheckDelay> |
fb8: 88 23 and r24, r24 |
fba: 21 f4 brne .+8 ; 0xfc4 <DatenUebertragung+0x46> |
fbc: 80 91 8e 01 lds r24, 0x018E |
fc0: 88 23 and r24, r24 |
fc2: b1 f0 breq .+44 ; 0xff0 <DatenUebertragung+0x72> |
fc4: 80 91 00 01 lds r24, 0x0100 |
fc8: 88 23 and r24, r24 |
fca: 91 f0 breq .+36 ; 0xff0 <DatenUebertragung+0x72> |
fcc: 22 e3 ldi r18, 0x32 ; 50 |
fce: 4e e4 ldi r20, 0x4E ; 78 |
fd0: 54 e0 ldi r21, 0x04 ; 4 |
fd2: 60 91 74 02 lds r22, 0x0274 |
fd6: 84 e4 ldi r24, 0x44 ; 68 |
fd8: 0e 94 d4 06 call 0xda8 ; 0xda8 <SendOutData> |
fdc: 10 92 8e 01 sts 0x018E, r1 |
fe0: 8a ef ldi r24, 0xFA ; 250 |
fe2: 90 e0 ldi r25, 0x00 ; 0 |
fe4: 0e 94 9d 0b call 0x173a ; 0x173a <SetDelay> |
fe8: 90 93 a2 03 sts 0x03A2, r25 |
fec: 80 93 a1 03 sts 0x03A1, r24 |
ff0: 80 91 8d 01 lds r24, 0x018D |
ff4: 88 23 and r24, r24 |
ff6: f1 f0 breq .+60 ; 0x1034 <DatenUebertragung+0xb6> |
ff8: 80 91 00 01 lds r24, 0x0100 |
ffc: 88 23 and r24, r24 |
ffe: d1 f0 breq .+52 ; 0x1034 <DatenUebertragung+0xb6> |
1000: 0e 94 5b 10 call 0x20b6 ; 0x20b6 <Menu> |
1004: 10 92 8d 01 sts 0x018D, r1 |
1008: 80 91 9a 01 lds r24, 0x019A |
100c: 8f 5f subi r24, 0xFF ; 255 |
100e: 80 93 9a 01 sts 0x019A, r24 |
1012: 84 30 cpi r24, 0x04 ; 4 |
1014: 11 f4 brne .+4 ; 0x101a <DatenUebertragung+0x9c> |
1016: 10 92 9a 01 sts 0x019A, r1 |
101a: 80 91 9a 01 lds r24, 0x019A |
101e: 44 e1 ldi r20, 0x14 ; 20 |
1020: 84 9f mul r24, r20 |
1022: a0 01 movw r20, r0 |
1024: 11 24 eor r1, r1 |
1026: 4a 5e subi r20, 0xEA ; 234 |
1028: 5e 4f sbci r21, 0xFE ; 254 |
102a: 24 e1 ldi r18, 0x14 ; 20 |
102c: 60 e0 ldi r22, 0x00 ; 0 |
102e: 80 5d subi r24, 0xD0 ; 208 |
1030: 0e 94 d4 06 call 0xda8 ; 0xda8 <SendOutData> |
1034: 80 91 8f 01 lds r24, 0x018F |
1038: 88 23 and r24, r24 |
103a: 71 f0 breq .+28 ; 0x1058 <DatenUebertragung+0xda> |
103c: 80 91 00 01 lds r24, 0x0100 |
1040: 88 23 and r24, r24 |
1042: 51 f0 breq .+20 ; 0x1058 <DatenUebertragung+0xda> |
1044: 2a e0 ldi r18, 0x0A ; 10 |
1046: 4e ea ldi r20, 0xAE ; 174 |
1048: 53 e0 ldi r21, 0x03 ; 3 |
104a: 60 91 74 02 lds r22, 0x0274 |
104e: 86 e5 ldi r24, 0x56 ; 86 |
1050: 0e 94 d4 06 call 0xda8 ; 0xda8 <SendOutData> |
1054: 10 92 8f 01 sts 0x018F, r1 |
1058: 08 95 ret |
0000105a <BearbeiteRxDaten>: |
105a: a2 e0 ldi r26, 0x02 ; 2 |
105c: b0 e0 ldi r27, 0x00 ; 0 |
105e: e3 e3 ldi r30, 0x33 ; 51 |
1060: f8 e0 ldi r31, 0x08 ; 8 |
1062: 0c 94 f1 2e jmp 0x5de2 ; 0x5de2 <__prologue_saves__+0x1e> |
1066: 80 91 91 01 lds r24, 0x0191 |
106a: 88 23 and r24, r24 |
106c: 09 f4 brne .+2 ; 0x1070 <BearbeiteRxDaten+0x16> |
106e: 8f c0 rjmp .+286 ; 0x118e <__stack+0x8f> |
1070: 8f ef ldi r24, 0xFF ; 255 |
1072: 80 93 01 01 sts 0x0101, r24 |
1076: 80 91 ba 03 lds r24, 0x03BA |
107a: 99 27 eor r25, r25 |
107c: aa 27 eor r26, r26 |
107e: bb 27 eor r27, r27 |
1080: fc 01 movw r30, r24 |
1082: e3 56 subi r30, 0x63 ; 99 |
1084: f0 40 sbci r31, 0x00 ; 0 |
1086: e4 31 cpi r30, 0x14 ; 20 |
1088: f1 05 cpc r31, r1 |
108a: 08 f0 brcs .+2 ; 0x108e <BearbeiteRxDaten+0x34> |
108c: 7e c0 rjmp .+252 ; 0x118a <__stack+0x8b> |
108e: e8 5c subi r30, 0xC8 ; 200 |
1090: ff 4f sbci r31, 0xFF ; 255 |
1092: 0c 94 19 2f jmp 0x5e32 ; 0x5e32 <__tablejump2__> |
1096: 20 91 94 01 lds r18, 0x0194 |
109a: 43 e0 ldi r20, 0x03 ; 3 |
109c: 6b e0 ldi r22, 0x0B ; 11 |
109e: 83 ea ldi r24, 0xA3 ; 163 |
10a0: 93 e0 ldi r25, 0x03 ; 3 |
10a2: 0e 94 3a 07 call 0xe74 ; 0xe74 <Decode64> |
10a6: 80 91 c8 01 lds r24, 0x01C8 |
10aa: 90 91 a5 03 lds r25, 0x03A5 |
10ae: 89 2b or r24, r25 |
10b0: 80 93 c8 01 sts 0x01C8, r24 |
10b4: 81 e0 ldi r24, 0x01 ; 1 |
10b6: 80 93 8e 01 sts 0x018E, r24 |
10ba: 67 c0 rjmp .+206 ; 0x118a <__stack+0x8b> |
10bc: 20 91 94 01 lds r18, 0x0194 |
10c0: 43 e0 ldi r20, 0x03 ; 3 |
10c2: 62 e0 ldi r22, 0x02 ; 2 |
10c4: ce 01 movw r24, r28 |
10c6: 01 96 adiw r24, 0x01 ; 1 |
10c8: 0e 94 3a 07 call 0xe74 ; 0xe74 <Decode64> |
10cc: 80 91 c8 01 lds r24, 0x01C8 |
10d0: 99 81 ldd r25, Y+1 ; 0x01 |
10d2: 89 2b or r24, r25 |
10d4: 80 93 c8 01 sts 0x01C8, r24 |
10d8: 81 e0 ldi r24, 0x01 ; 1 |
10da: 80 93 8d 01 sts 0x018D, r24 |
10de: 55 c0 rjmp .+170 ; 0x118a <__stack+0x8b> |
10e0: 20 91 94 01 lds r18, 0x0194 |
10e4: 43 e0 ldi r20, 0x03 ; 3 |
10e6: 64 e0 ldi r22, 0x04 ; 4 |
10e8: 86 e9 ldi r24, 0x96 ; 150 |
10ea: 91 e0 ldi r25, 0x01 ; 1 |
10ec: 0e 94 3a 07 call 0xe74 ; 0xe74 <Decode64> |
10f0: 4c c0 rjmp .+152 ; 0x118a <__stack+0x8b> |
10f2: 81 e0 ldi r24, 0x01 ; 1 |
10f4: 80 93 8f 01 sts 0x018F, r24 |
10f8: 48 c0 rjmp .+144 ; 0x118a <__stack+0x8b> |
10fa: 81 e0 ldi r24, 0x01 ; 1 |
10fc: 80 93 8c 01 sts 0x018C, r24 |
1100: 44 c0 rjmp .+136 ; 0x118a <__stack+0x8b> |
1102: 20 91 94 01 lds r18, 0x0194 |
1106: 43 e0 ldi r20, 0x03 ; 3 |
1108: 62 e0 ldi r22, 0x02 ; 2 |
110a: ce 01 movw r24, r28 |
110c: 01 96 adiw r24, 0x01 ; 1 |
110e: 0e 94 3a 07 call 0xe74 ; 0xe74 <Decode64> |
1112: 89 81 ldd r24, Y+1 ; 0x01 |
1114: 8f 3f cpi r24, 0xFF ; 255 |
1116: 89 f0 breq .+34 ; 0x113a <__stack+0x3b> |
1118: 86 30 cpi r24, 0x06 ; 6 |
111a: 10 f0 brcs .+4 ; 0x1120 <__stack+0x21> |
111c: 85 e0 ldi r24, 0x05 ; 5 |
111e: 89 83 std Y+1, r24 ; 0x01 |
1120: 4a e3 ldi r20, 0x3A ; 58 |
1122: 6a ed ldi r22, 0xDA ; 218 |
1124: 74 e0 ldi r23, 0x04 ; 4 |
1126: 89 81 ldd r24, Y+1 ; 0x01 |
1128: 0e 94 d2 03 call 0x7a4 ; 0x7a4 <ReadParameterSet> |
112c: 89 81 ldd r24, Y+1 ; 0x01 |
112e: 2a e3 ldi r18, 0x3A ; 58 |
1130: 4a ed ldi r20, 0xDA ; 218 |
1132: 54 e0 ldi r21, 0x04 ; 4 |
1134: 60 91 74 02 lds r22, 0x0274 |
1138: 08 c0 rjmp .+16 ; 0x114a <__stack+0x4b> |
113a: 10 91 74 02 lds r17, 0x0274 |
113e: 0e 94 b1 03 call 0x762 ; 0x762 <GetActiveParamSetNumber> |
1142: 2a e3 ldi r18, 0x3A ; 58 |
1144: 4a ed ldi r20, 0xDA ; 218 |
1146: 54 e0 ldi r21, 0x04 ; 4 |
1148: 61 2f mov r22, r17 |
114a: 85 5b subi r24, 0xB5 ; 181 |
114c: 0e 94 d4 06 call 0xda8 ; 0xda8 <SendOutData> |
1150: 1c c0 rjmp .+56 ; 0x118a <__stack+0x8b> |
1152: 20 91 94 01 lds r18, 0x0194 |
1156: 43 e0 ldi r20, 0x03 ; 3 |
1158: 6a e3 ldi r22, 0x3A ; 58 |
115a: 8a ed ldi r24, 0xDA ; 218 |
115c: 94 e0 ldi r25, 0x04 ; 4 |
115e: 0e 94 3a 07 call 0xe74 ; 0xe74 <Decode64> |
1162: 80 91 ba 03 lds r24, 0x03BA |
1166: 4a e3 ldi r20, 0x3A ; 58 |
1168: 6a ed ldi r22, 0xDA ; 218 |
116a: 74 e0 ldi r23, 0x04 ; 4 |
116c: 8b 56 subi r24, 0x6B ; 107 |
116e: 0e 94 b8 03 call 0x770 ; 0x770 <WriteParameterSet> |
1172: 80 91 ba 03 lds r24, 0x03BA |
1176: 8b 56 subi r24, 0x6B ; 107 |
1178: a2 e0 ldi r26, 0x02 ; 2 |
117a: b0 e0 ldi r27, 0x00 ; 0 |
117c: 08 2e mov r0, r24 |
117e: 0e 94 2c 2f call 0x5e58 ; 0x5e58 <__eeprom_write_byte_1F2021> |
1182: 0e 94 b1 03 call 0x762 ; 0x762 <GetActiveParamSetNumber> |
1186: 0e 94 49 22 call 0x4492 ; 0x4492 <Piep> |
118a: 10 92 91 01 sts 0x0191, r1 |
118e: e3 e0 ldi r30, 0x03 ; 3 |
1190: ce 5f subi r28, 0xFE ; 254 |
1192: 0c 94 0d 2f jmp 0x5e1a ; 0x5e1a <__epilogue_restores__+0x1e> |
00001196 <Putchar>: |
1196: 98 2f mov r25, r24 |
1198: 80 91 80 04 lds r24, 0x0480 |
119c: 81 30 cpi r24, 0x01 ; 1 |
119e: 69 f4 brne .+26 ; 0x11ba <Putchar+0x24> |
11a0: 80 91 c7 01 lds r24, 0x01C7 |
11a4: e8 2f mov r30, r24 |
11a6: ff 27 eor r31, r31 |
11a8: ea 5e subi r30, 0xEA ; 234 |
11aa: fe 4f sbci r31, 0xFE ; 254 |
11ac: 90 83 st Z, r25 |
11ae: 8f 5f subi r24, 0xFF ; 255 |
11b0: 80 93 c7 01 sts 0x01C7, r24 |
11b4: 21 e0 ldi r18, 0x01 ; 1 |
11b6: 30 e0 ldi r19, 0x00 ; 0 |
11b8: 05 c0 rjmp .+10 ; 0x11c4 <Putchar+0x2e> |
11ba: 89 2f mov r24, r25 |
11bc: 0e 94 92 07 call 0xf24 ; 0xf24 <uart_putchar> |
11c0: 28 2f mov r18, r24 |
11c2: 33 27 eor r19, r19 |
11c4: c9 01 movw r24, r18 |
11c6: 08 95 ret |
000011c8 <PAD_0>: |
11c8: 1f 93 push r17 |
11ca: 18 2f mov r17, r24 |
11cc: 04 c0 rjmp .+8 ; 0x11d6 <PAD_0+0xe> |
11ce: 80 e3 ldi r24, 0x30 ; 48 |
11d0: 0e 94 cb 08 call 0x1196 ; 0x1196 <Putchar> |
11d4: 11 50 subi r17, 0x01 ; 1 |
11d6: 11 16 cp r1, r17 |
11d8: d4 f3 brlt .-12 ; 0x11ce <PAD_0+0x6> |
11da: 1f 91 pop r17 |
11dc: 08 95 ret |
000011de <PAD_SP>: |
11de: 1f 93 push r17 |
11e0: 18 2f mov r17, r24 |
11e2: 04 c0 rjmp .+8 ; 0x11ec <PAD_SP+0xe> |
11e4: 80 e2 ldi r24, 0x20 ; 32 |
11e6: 0e 94 cb 08 call 0x1196 ; 0x1196 <Putchar> |
11ea: 11 50 subi r17, 0x01 ; 1 |
11ec: 11 16 cp r1, r17 |
11ee: d4 f3 brlt .-12 ; 0x11e4 <PAD_SP+0x6> |
11f0: 1f 91 pop r17 |
11f2: 08 95 ret |
000011f4 <PRINTP>: |
11f4: 0f 93 push r16 |
11f6: 1f 93 push r17 |
11f8: cf 93 push r28 |
11fa: df 93 push r29 |
11fc: 8c 01 movw r16, r24 |
11fe: eb 01 movw r28, r22 |
1200: 08 c0 rjmp .+16 ; 0x1212 <PRINTP+0x1e> |
1202: f8 01 movw r30, r16 |
1204: 0f 5f subi r16, 0xFF ; 255 |
1206: 1f 4f sbci r17, 0xFF ; 255 |
1208: e4 91 lpm r30, Z |
120a: 8e 2f mov r24, r30 |
120c: 0e 94 cb 08 call 0x1196 ; 0x1196 <Putchar> |
1210: 21 97 sbiw r28, 0x01 ; 1 |
1212: 20 97 sbiw r28, 0x00 ; 0 |
1214: b1 f7 brne .-20 ; 0x1202 <PRINTP+0xe> |
1216: df 91 pop r29 |
1218: cf 91 pop r28 |
121a: 1f 91 pop r17 |
121c: 0f 91 pop r16 |
121e: 08 95 ret |
00001220 <PRINT>: |
1220: 0f 93 push r16 |
1222: 1f 93 push r17 |
1224: cf 93 push r28 |
1226: df 93 push r29 |
1228: 8c 01 movw r16, r24 |
122a: eb 01 movw r28, r22 |
122c: 06 c0 rjmp .+12 ; 0x123a <PRINT+0x1a> |
122e: f8 01 movw r30, r16 |
1230: 81 91 ld r24, Z+ |
1232: 8f 01 movw r16, r30 |
1234: 0e 94 cb 08 call 0x1196 ; 0x1196 <Putchar> |
1238: 21 97 sbiw r28, 0x01 ; 1 |
123a: 20 97 sbiw r28, 0x00 ; 0 |
123c: c1 f7 brne .-16 ; 0x122e <PRINT+0xe> |
123e: df 91 pop r29 |
1240: cf 91 pop r28 |
1242: 1f 91 pop r17 |
1244: 0f 91 pop r16 |
1246: 08 95 ret |
00001248 <_printf_P>: |
1248: a3 e3 ldi r26, 0x33 ; 51 |
124a: b0 e0 ldi r27, 0x00 ; 0 |
124c: ea e2 ldi r30, 0x2A ; 42 |
124e: f9 e0 ldi r31, 0x09 ; 9 |
1250: 0c 94 e2 2e jmp 0x5dc4 ; 0x5dc4 <__prologue_saves__> |
1254: 29 96 adiw r28, 0x09 ; 9 |
1256: 8f ad ldd r24, Y+63 ; 0x3f |
1258: 29 97 sbiw r28, 0x09 ; 9 |
125a: 80 93 80 04 sts 0x0480, r24 |
125e: ce 01 movw r24, r28 |
1260: 85 5b subi r24, 0xB5 ; 181 |
1262: 9f 4f sbci r25, 0xFF ; 255 |
1264: 9d 83 std Y+5, r25 ; 0x05 |
1266: 8c 83 std Y+4, r24 ; 0x04 |
1268: 2b 96 adiw r28, 0x0b ; 11 |
126a: 8e ad ldd r24, Y+62 ; 0x3e |
126c: 9f ad ldd r25, Y+63 ; 0x3f |
126e: 2b 97 sbiw r28, 0x0b ; 11 |
1270: 9f a7 std Y+47, r25 ; 0x2f |
1272: 8e a7 std Y+46, r24 ; 0x2e |
1274: 22 24 eor r2, r2 |
1276: 33 24 eor r3, r3 |
1278: 21 01 movw r4, r2 |
127a: 02 c0 rjmp .+4 ; 0x1280 <_printf_P+0x38> |
127c: 13 01 movw r2, r6 |
127e: 24 01 movw r4, r8 |
1280: 0e a5 ldd r16, Y+46 ; 0x2e |
1282: 1f a5 ldd r17, Y+47 ; 0x2f |
1284: 02 c0 rjmp .+4 ; 0x128a <_printf_P+0x42> |
1286: 0f 5f subi r16, 0xFF ; 255 |
1288: 1f 4f sbci r17, 0xFF ; 255 |
128a: f8 01 movw r30, r16 |
128c: f4 90 lpm r15, Z |
128e: ff 20 and r15, r15 |
1290: 19 f0 breq .+6 ; 0x1298 <_printf_P+0x50> |
1292: f5 e2 ldi r31, 0x25 ; 37 |
1294: ff 16 cp r15, r31 |
1296: b9 f7 brne .-18 ; 0x1286 <_printf_P+0x3e> |
1298: b8 01 movw r22, r16 |
129a: 8e a5 ldd r24, Y+46 ; 0x2e |
129c: 9f a5 ldd r25, Y+47 ; 0x2f |
129e: 68 1b sub r22, r24 |
12a0: 79 0b sbc r23, r25 |
12a2: 11 f0 breq .+4 ; 0x12a8 <_printf_P+0x60> |
12a4: 0e 94 fa 08 call 0x11f4 ; 0x11f4 <PRINTP> |
12a8: ff 20 and r15, r15 |
12aa: 09 f4 brne .+2 ; 0x12ae <_printf_P+0x66> |
12ac: 42 c2 rjmp .+1156 ; 0x1732 <_printf_P+0x4ea> |
12ae: 0f 5f subi r16, 0xFF ; 255 |
12b0: 1f 4f sbci r17, 0xFF ; 255 |
12b2: 1f a7 std Y+47, r17 ; 0x2f |
12b4: 0e a7 std Y+46, r16 ; 0x2e |
12b6: 19 82 std Y+1, r1 ; 0x01 |
12b8: ac 81 ldd r26, Y+4 ; 0x04 |
12ba: bd 81 ldd r27, Y+5 ; 0x05 |
12bc: 1b aa std Y+51, r1 ; 0x33 |
12be: 1a aa std Y+50, r1 ; 0x32 |
12c0: 9f ef ldi r25, 0xFF ; 255 |
12c2: 99 ab std Y+49, r25 ; 0x31 |
12c4: ee a5 ldd r30, Y+46 ; 0x2e |
12c6: ff a5 ldd r31, Y+47 ; 0x2f |
12c8: cf 01 movw r24, r30 |
12ca: 01 96 adiw r24, 0x01 ; 1 |
12cc: 9f a7 std Y+47, r25 ; 0x2f |
12ce: 8e a7 std Y+46, r24 ; 0x2e |
12d0: b4 90 lpm r11, Z |
12d2: 95 e7 ldi r25, 0x75 ; 117 |
12d4: b9 16 cp r11, r25 |
12d6: 21 f0 breq .+8 ; 0x12e0 <_printf_P+0x98> |
12d8: 8b 2d mov r24, r11 |
12da: 80 62 ori r24, 0x20 ; 32 |
12dc: 88 37 cpi r24, 0x78 ; 120 |
12de: 89 f4 brne .+34 ; 0x1302 <_printf_P+0xba> |
12e0: eb a9 ldd r30, Y+51 ; 0x33 |
12e2: e0 ff sbrs r30, 0 |
12e4: 07 c0 rjmp .+14 ; 0x12f4 <_printf_P+0xac> |
12e6: 2d 90 ld r2, X+ |
12e8: 3d 90 ld r3, X+ |
12ea: 4d 90 ld r4, X+ |
12ec: 5c 90 ld r5, X |
12ee: 13 97 sbiw r26, 0x03 ; 3 |
12f0: 14 96 adiw r26, 0x04 ; 4 |
12f2: 07 c0 rjmp .+14 ; 0x1302 <_printf_P+0xba> |
12f4: 8d 91 ld r24, X+ |
12f6: 9c 91 ld r25, X |
12f8: 11 97 sbiw r26, 0x01 ; 1 |
12fa: 1c 01 movw r2, r24 |
12fc: 44 24 eor r4, r4 |
12fe: 55 24 eor r5, r5 |
1300: 12 96 adiw r26, 0x02 ; 2 |
1302: f0 e2 ldi r31, 0x20 ; 32 |
1304: bf 16 cp r11, r31 |
1306: 21 f4 brne .+8 ; 0x1310 <_printf_P+0xc8> |
1308: 89 81 ldd r24, Y+1 ; 0x01 |
130a: 88 23 and r24, r24 |
130c: d9 f6 brne .-74 ; 0x12c4 <_printf_P+0x7c> |
130e: 85 c0 rjmp .+266 ; 0x141a <_printf_P+0x1d2> |
1310: 83 e2 ldi r24, 0x23 ; 35 |
1312: b8 16 cp r11, r24 |
1314: 09 f4 brne .+2 ; 0x1318 <_printf_P+0xd0> |
1316: 83 c0 rjmp .+262 ; 0x141e <_printf_P+0x1d6> |
1318: 9a e2 ldi r25, 0x2A ; 42 |
131a: b9 16 cp r11, r25 |
131c: 21 f0 breq .+8 ; 0x1326 <_printf_P+0xde> |
131e: ed e2 ldi r30, 0x2D ; 45 |
1320: be 16 cp r11, r30 |
1322: 69 f4 brne .+26 ; 0x133e <_printf_P+0xf6> |
1324: 08 c0 rjmp .+16 ; 0x1336 <_printf_P+0xee> |
1326: fd 01 movw r30, r26 |
1328: 12 96 adiw r26, 0x02 ; 2 |
132a: e0 81 ld r30, Z |
132c: ea ab std Y+50, r30 ; 0x32 |
132e: e7 ff sbrs r30, 7 |
1330: c9 cf rjmp .-110 ; 0x12c4 <_printf_P+0x7c> |
1332: e1 95 neg r30 |
1334: ea ab std Y+50, r30 ; 0x32 |
1336: fb a9 ldd r31, Y+51 ; 0x33 |
1338: f0 61 ori r31, 0x10 ; 16 |
133a: ff 7d andi r31, 0xDF ; 223 |
133c: 72 c0 rjmp .+228 ; 0x1422 <_printf_P+0x1da> |
133e: 8b e2 ldi r24, 0x2B ; 43 |
1340: b8 16 cp r11, r24 |
1342: 09 f4 brne .+2 ; 0x1346 <_printf_P+0xfe> |
1344: 6a c0 rjmp .+212 ; 0x141a <_printf_P+0x1d2> |
1346: 9e e2 ldi r25, 0x2E ; 46 |
1348: b9 16 cp r11, r25 |
134a: b1 f5 brne .+108 ; 0x13b8 <_printf_P+0x170> |
134c: 2e a5 ldd r18, Y+46 ; 0x2e |
134e: 3f a5 ldd r19, Y+47 ; 0x2f |
1350: 2f 5f subi r18, 0xFF ; 255 |
1352: 3f 4f sbci r19, 0xFF ; 255 |
1354: ee a5 ldd r30, Y+46 ; 0x2e |
1356: ff a5 ldd r31, Y+47 ; 0x2f |
1358: 84 91 lpm r24, Z |
135a: 8a 32 cpi r24, 0x2A ; 42 |
135c: 21 f0 breq .+8 ; 0x1366 <_printf_P+0x11e> |
135e: b8 2e mov r11, r24 |
1360: 20 e0 ldi r18, 0x00 ; 0 |
1362: 30 e0 ldi r19, 0x00 ; 0 |
1364: 1b c0 rjmp .+54 ; 0x139c <_printf_P+0x154> |
1366: fd 01 movw r30, r26 |
1368: 12 96 adiw r26, 0x02 ; 2 |
136a: 40 81 ld r20, Z |
136c: 51 81 ldd r21, Z+1 ; 0x01 |
136e: 57 ff sbrs r21, 7 |
1370: 02 c0 rjmp .+4 ; 0x1376 <_printf_P+0x12e> |
1372: 4f ef ldi r20, 0xFF ; 255 |
1374: 5f ef ldi r21, 0xFF ; 255 |
1376: 49 ab std Y+49, r20 ; 0x31 |
1378: 3f a7 std Y+47, r19 ; 0x2f |
137a: 2e a7 std Y+46, r18 ; 0x2e |
137c: a3 cf rjmp .-186 ; 0x12c4 <_printf_P+0x7c> |
137e: c9 01 movw r24, r18 |
1380: 03 e0 ldi r16, 0x03 ; 3 |
1382: 88 0f add r24, r24 |
1384: 99 1f adc r25, r25 |
1386: 0a 95 dec r16 |
1388: e1 f7 brne .-8 ; 0x1382 <_printf_P+0x13a> |
138a: 22 0f add r18, r18 |
138c: 33 1f adc r19, r19 |
138e: 28 0f add r18, r24 |
1390: 39 1f adc r19, r25 |
1392: 2b 0d add r18, r11 |
1394: 31 1d adc r19, r1 |
1396: 20 53 subi r18, 0x30 ; 48 |
1398: 30 40 sbci r19, 0x00 ; 0 |
139a: b4 90 lpm r11, Z |
139c: 31 96 adiw r30, 0x01 ; 1 |
139e: 8b 2d mov r24, r11 |
13a0: 80 53 subi r24, 0x30 ; 48 |
13a2: 8a 30 cpi r24, 0x0A ; 10 |
13a4: 60 f3 brcs .-40 ; 0x137e <_printf_P+0x136> |
13a6: ff a7 std Y+47, r31 ; 0x2f |
13a8: ee a7 std Y+46, r30 ; 0x2e |
13aa: a9 01 movw r20, r18 |
13ac: 37 ff sbrs r19, 7 |
13ae: 02 c0 rjmp .+4 ; 0x13b4 <_printf_P+0x16c> |
13b0: 4f ef ldi r20, 0xFF ; 255 |
13b2: 5f ef ldi r21, 0xFF ; 255 |
13b4: 49 ab std Y+49, r20 ; 0x31 |
13b6: 8d cf rjmp .-230 ; 0x12d2 <_printf_P+0x8a> |
13b8: f0 e3 ldi r31, 0x30 ; 48 |
13ba: bf 16 cp r11, r31 |
13bc: 31 f4 brne .+12 ; 0x13ca <_printf_P+0x182> |
13be: 8b a9 ldd r24, Y+51 ; 0x33 |
13c0: 84 fd sbrc r24, 4 |
13c2: 80 cf rjmp .-256 ; 0x12c4 <_printf_P+0x7c> |
13c4: 80 62 ori r24, 0x20 ; 32 |
13c6: 8b ab std Y+51, r24 ; 0x33 |
13c8: 7d cf rjmp .-262 ; 0x12c4 <_printf_P+0x7c> |
13ca: 8b 2d mov r24, r11 |
13cc: 81 53 subi r24, 0x31 ; 49 |
13ce: 89 30 cpi r24, 0x09 ; 9 |
13d0: e8 f4 brcc .+58 ; 0x140c <_printf_P+0x1c4> |
13d2: 20 e0 ldi r18, 0x00 ; 0 |
13d4: 30 e0 ldi r19, 0x00 ; 0 |
13d6: c9 01 movw r24, r18 |
13d8: f3 e0 ldi r31, 0x03 ; 3 |
13da: 88 0f add r24, r24 |
13dc: 99 1f adc r25, r25 |
13de: fa 95 dec r31 |
13e0: e1 f7 brne .-8 ; 0x13da <_printf_P+0x192> |
13e2: 22 0f add r18, r18 |
13e4: 33 1f adc r19, r19 |
13e6: 28 0f add r18, r24 |
13e8: 39 1f adc r19, r25 |
13ea: 2b 0d add r18, r11 |
13ec: 31 1d adc r19, r1 |
13ee: 20 53 subi r18, 0x30 ; 48 |
13f0: 30 40 sbci r19, 0x00 ; 0 |
13f2: ee a5 ldd r30, Y+46 ; 0x2e |
13f4: ff a5 ldd r31, Y+47 ; 0x2f |
13f6: cf 01 movw r24, r30 |
13f8: 01 96 adiw r24, 0x01 ; 1 |
13fa: 9f a7 std Y+47, r25 ; 0x2f |
13fc: 8e a7 std Y+46, r24 ; 0x2e |
13fe: b4 90 lpm r11, Z |
1400: 8b 2d mov r24, r11 |
1402: 80 53 subi r24, 0x30 ; 48 |
1404: 8a 30 cpi r24, 0x0A ; 10 |
1406: 38 f3 brcs .-50 ; 0x13d6 <_printf_P+0x18e> |
1408: 2a ab std Y+50, r18 ; 0x32 |
140a: 63 cf rjmp .-314 ; 0x12d2 <_printf_P+0x8a> |
140c: 98 e6 ldi r25, 0x68 ; 104 |
140e: b9 16 cp r11, r25 |
1410: 51 f4 brne .+20 ; 0x1426 <_printf_P+0x1de> |
1412: eb a9 ldd r30, Y+51 ; 0x33 |
1414: e4 60 ori r30, 0x04 ; 4 |
1416: eb ab std Y+51, r30 ; 0x33 |
1418: 55 cf rjmp .-342 ; 0x12c4 <_printf_P+0x7c> |
141a: b9 82 std Y+1, r11 ; 0x01 |
141c: 53 cf rjmp .-346 ; 0x12c4 <_printf_P+0x7c> |
141e: fb a9 ldd r31, Y+51 ; 0x33 |
1420: f8 60 ori r31, 0x08 ; 8 |
1422: fb ab std Y+51, r31 ; 0x33 |
1424: 4f cf rjmp .-354 ; 0x12c4 <_printf_P+0x7c> |
1426: 8c e6 ldi r24, 0x6C ; 108 |
1428: b8 16 cp r11, r24 |
142a: 21 f4 brne .+8 ; 0x1434 <_printf_P+0x1ec> |
142c: 9b a9 ldd r25, Y+51 ; 0x33 |
142e: 91 60 ori r25, 0x01 ; 1 |
1430: 9b ab std Y+51, r25 ; 0x33 |
1432: 48 cf rjmp .-368 ; 0x12c4 <_printf_P+0x7c> |
1434: bd 83 std Y+5, r27 ; 0x05 |
1436: ac 83 std Y+4, r26 ; 0x04 |
1438: e3 e6 ldi r30, 0x63 ; 99 |
143a: be 16 cp r11, r30 |
143c: 39 f4 brne .+14 ; 0x144c <_printf_P+0x204> |
143e: 12 96 adiw r26, 0x02 ; 2 |
1440: bd 83 std Y+5, r27 ; 0x05 |
1442: ac 83 std Y+4, r26 ; 0x04 |
1444: 12 97 sbiw r26, 0x02 ; 2 |
1446: 8c 91 ld r24, X |
1448: 8e 83 std Y+6, r24 ; 0x06 |
144a: 18 c1 rjmp .+560 ; 0x167c <_printf_P+0x434> |
144c: f4 e4 ldi r31, 0x44 ; 68 |
144e: bf 16 cp r11, r31 |
1450: 39 f0 breq .+14 ; 0x1460 <_printf_P+0x218> |
1452: 84 e6 ldi r24, 0x64 ; 100 |
1454: b8 16 cp r11, r24 |
1456: 39 f0 breq .+14 ; 0x1466 <_printf_P+0x21e> |
1458: 99 e6 ldi r25, 0x69 ; 105 |
145a: b9 16 cp r11, r25 |
145c: 59 f5 brne .+86 ; 0x14b4 <_printf_P+0x26c> |
145e: 03 c0 rjmp .+6 ; 0x1466 <_printf_P+0x21e> |
1460: eb a9 ldd r30, Y+51 ; 0x33 |
1462: e1 60 ori r30, 0x01 ; 1 |
1464: eb ab std Y+51, r30 ; 0x33 |
1466: fb a9 ldd r31, Y+51 ; 0x33 |
1468: f0 ff sbrs r31, 0 |
146a: 08 c0 rjmp .+16 ; 0x147c <_printf_P+0x234> |
146c: 14 96 adiw r26, 0x04 ; 4 |
146e: bd 83 std Y+5, r27 ; 0x05 |
1470: ac 83 std Y+4, r26 ; 0x04 |
1472: 5e 90 ld r5, -X |
1474: 4e 90 ld r4, -X |
1476: 3e 90 ld r3, -X |
1478: 2e 90 ld r2, -X |
147a: 0a c0 rjmp .+20 ; 0x1490 <_printf_P+0x248> |
147c: 12 96 adiw r26, 0x02 ; 2 |
147e: bd 83 std Y+5, r27 ; 0x05 |
1480: ac 83 std Y+4, r26 ; 0x04 |
1482: 9e 91 ld r25, -X |
1484: 8e 91 ld r24, -X |
1486: 1c 01 movw r2, r24 |
1488: 44 24 eor r4, r4 |
148a: 37 fc sbrc r3, 7 |
148c: 40 94 com r4 |
148e: 54 2c mov r5, r4 |
1490: 57 fc sbrc r5, 7 |
1492: 03 c0 rjmp .+6 ; 0x149a <_printf_P+0x252> |
1494: 8a e0 ldi r24, 0x0A ; 10 |
1496: 88 ab std Y+48, r24 ; 0x30 |
1498: 92 c0 rjmp .+292 ; 0x15be <_printf_P+0x376> |
149a: 50 94 com r5 |
149c: 40 94 com r4 |
149e: 30 94 com r3 |
14a0: 20 94 com r2 |
14a2: 21 1c adc r2, r1 |
14a4: 31 1c adc r3, r1 |
14a6: 41 1c adc r4, r1 |
14a8: 51 1c adc r5, r1 |
14aa: 8d e2 ldi r24, 0x2D ; 45 |
14ac: 89 83 std Y+1, r24 ; 0x01 |
14ae: 9a e0 ldi r25, 0x0A ; 10 |
14b0: 98 ab std Y+48, r25 ; 0x30 |
14b2: 85 c0 rjmp .+266 ; 0x15be <_printf_P+0x376> |
14b4: ef e4 ldi r30, 0x4F ; 79 |
14b6: be 16 cp r11, r30 |
14b8: 29 f0 breq .+10 ; 0x14c4 <_printf_P+0x27c> |
14ba: ff e6 ldi r31, 0x6F ; 111 |
14bc: bf 16 cp r11, r31 |
14be: 39 f4 brne .+14 ; 0x14ce <_printf_P+0x286> |
14c0: 88 e0 ldi r24, 0x08 ; 8 |
14c2: 61 c0 rjmp .+194 ; 0x1586 <_printf_P+0x33e> |
14c4: 9b a9 ldd r25, Y+51 ; 0x33 |
14c6: 91 60 ori r25, 0x01 ; 1 |
14c8: 9b ab std Y+51, r25 ; 0x33 |
14ca: e8 e0 ldi r30, 0x08 ; 8 |
14cc: 56 c0 rjmp .+172 ; 0x157a <_printf_P+0x332> |
14ce: f0 e7 ldi r31, 0x70 ; 112 |
14d0: bf 16 cp r11, r31 |
14d2: 71 f4 brne .+28 ; 0x14f0 <_printf_P+0x2a8> |
14d4: 12 96 adiw r26, 0x02 ; 2 |
14d6: bd 83 std Y+5, r27 ; 0x05 |
14d8: ac 83 std Y+4, r26 ; 0x04 |
14da: 9e 91 ld r25, -X |
14dc: 8e 91 ld r24, -X |
14de: 1c 01 movw r2, r24 |
14e0: 44 24 eor r4, r4 |
14e2: 55 24 eor r5, r5 |
14e4: 8b a9 ldd r24, Y+51 ; 0x33 |
14e6: 80 64 ori r24, 0x40 ; 64 |
14e8: 8b ab std Y+51, r24 ; 0x33 |
14ea: 78 e7 ldi r23, 0x78 ; 120 |
14ec: b7 2e mov r11, r23 |
14ee: 5e c0 rjmp .+188 ; 0x15ac <_printf_P+0x364> |
14f0: e3 e7 ldi r30, 0x73 ; 115 |
14f2: be 16 cp r11, r30 |
14f4: d9 f5 brne .+118 ; 0x156c <_printf_P+0x324> |
14f6: 12 96 adiw r26, 0x02 ; 2 |
14f8: bd 83 std Y+5, r27 ; 0x05 |
14fa: ac 83 std Y+4, r26 ; 0x04 |
14fc: de 90 ld r13, -X |
14fe: ce 90 ld r12, -X |
1500: c1 14 cp r12, r1 |
1502: d1 04 cpc r13, r1 |
1504: 89 f4 brne .+34 ; 0x1528 <_printf_P+0x2e0> |
1506: 88 e2 ldi r24, 0x28 ; 40 |
1508: 8e 83 std Y+6, r24 ; 0x06 |
150a: 8e e6 ldi r24, 0x6E ; 110 |
150c: 8f 83 std Y+7, r24 ; 0x07 |
150e: 85 e7 ldi r24, 0x75 ; 117 |
1510: 88 87 std Y+8, r24 ; 0x08 |
1512: 8c e6 ldi r24, 0x6C ; 108 |
1514: 89 87 std Y+9, r24 ; 0x09 |
1516: 8a 87 std Y+10, r24 ; 0x0a |
1518: 89 e2 ldi r24, 0x29 ; 41 |
151a: 8b 87 std Y+11, r24 ; 0x0b |
151c: 1c 86 std Y+12, r1 ; 0x0c |
151e: 66 e0 ldi r22, 0x06 ; 6 |
1520: c6 2e mov r12, r22 |
1522: d1 2c mov r13, r1 |
1524: cc 0e add r12, r28 |
1526: dd 1e adc r13, r29 |
1528: f9 a9 ldd r31, Y+49 ; 0x31 |
152a: f7 fd sbrc r31, 7 |
152c: 13 c0 rjmp .+38 ; 0x1554 <_printf_P+0x30c> |
152e: 4f 2f mov r20, r31 |
1530: 55 27 eor r21, r21 |
1532: 47 fd sbrc r20, 7 |
1534: 50 95 com r21 |
1536: 60 e0 ldi r22, 0x00 ; 0 |
1538: 70 e0 ldi r23, 0x00 ; 0 |
153a: c6 01 movw r24, r12 |
153c: 0e 94 ea 2c call 0x59d4 ; 0x59d4 <memchr> |
1540: 00 97 sbiw r24, 0x00 ; 0 |
1542: 11 f4 brne .+4 ; 0x1548 <_printf_P+0x300> |
1544: 19 a9 ldd r17, Y+49 ; 0x31 |
1546: 0d c0 rjmp .+26 ; 0x1562 <_printf_P+0x31a> |
1548: 8c 19 sub r24, r12 |
154a: 19 a9 ldd r17, Y+49 ; 0x31 |
154c: 81 17 cp r24, r17 |
154e: 4c f4 brge .+18 ; 0x1562 <_printf_P+0x31a> |
1550: 18 2f mov r17, r24 |
1552: 07 c0 rjmp .+14 ; 0x1562 <_printf_P+0x31a> |
1554: f6 01 movw r30, r12 |
1556: 01 90 ld r0, Z+ |
1558: 00 20 and r0, r0 |
155a: e9 f7 brne .-6 ; 0x1556 <_printf_P+0x30e> |
155c: 31 97 sbiw r30, 0x01 ; 1 |
155e: 1e 2f mov r17, r30 |
1560: 1c 19 sub r17, r12 |
1562: 19 82 std Y+1, r1 ; 0x01 |
1564: 42 01 movw r8, r4 |
1566: 31 01 movw r6, r2 |
1568: 40 e0 ldi r20, 0x00 ; 0 |
156a: 94 c0 rjmp .+296 ; 0x1694 <_printf_P+0x44c> |
156c: 85 e5 ldi r24, 0x55 ; 85 |
156e: b8 16 cp r11, r24 |
1570: 31 f0 breq .+12 ; 0x157e <_printf_P+0x336> |
1572: 95 e7 ldi r25, 0x75 ; 117 |
1574: b9 16 cp r11, r25 |
1576: 49 f4 brne .+18 ; 0x158a <_printf_P+0x342> |
1578: ea e0 ldi r30, 0x0A ; 10 |
157a: e8 ab std Y+48, r30 ; 0x30 |
157c: 1f c0 rjmp .+62 ; 0x15bc <_printf_P+0x374> |
157e: fb a9 ldd r31, Y+51 ; 0x33 |
1580: f1 60 ori r31, 0x01 ; 1 |
1582: fb ab std Y+51, r31 ; 0x33 |
1584: 8a e0 ldi r24, 0x0A ; 10 |
1586: 88 ab std Y+48, r24 ; 0x30 |
1588: 19 c0 rjmp .+50 ; 0x15bc <_printf_P+0x374> |
158a: 98 e5 ldi r25, 0x58 ; 88 |
158c: b9 16 cp r11, r25 |
158e: 21 f0 breq .+8 ; 0x1598 <_printf_P+0x350> |
1590: e8 e7 ldi r30, 0x78 ; 120 |
1592: be 16 cp r11, r30 |
1594: 09 f0 breq .+2 ; 0x1598 <_printf_P+0x350> |
1596: 6e c0 rjmp .+220 ; 0x1674 <_printf_P+0x42c> |
1598: fb a9 ldd r31, Y+51 ; 0x33 |
159a: f3 fd sbrc r31, 3 |
159c: 02 c0 rjmp .+4 ; 0x15a2 <_printf_P+0x35a> |
159e: 80 e1 ldi r24, 0x10 ; 16 |
15a0: f2 cf rjmp .-28 ; 0x1586 <_printf_P+0x33e> |
15a2: 21 14 cp r2, r1 |
15a4: 31 04 cpc r3, r1 |
15a6: 41 04 cpc r4, r1 |
15a8: 51 04 cpc r5, r1 |
15aa: 19 f4 brne .+6 ; 0x15b2 <_printf_P+0x36a> |
15ac: 90 e1 ldi r25, 0x10 ; 16 |
15ae: 98 ab std Y+48, r25 ; 0x30 |
15b0: 05 c0 rjmp .+10 ; 0x15bc <_printf_P+0x374> |
15b2: eb a9 ldd r30, Y+51 ; 0x33 |
15b4: e0 64 ori r30, 0x40 ; 64 |
15b6: eb ab std Y+51, r30 ; 0x33 |
15b8: f0 e1 ldi r31, 0x10 ; 16 |
15ba: f8 ab std Y+48, r31 ; 0x30 |
15bc: 19 82 std Y+1, r1 ; 0x01 |
15be: 89 a9 ldd r24, Y+49 ; 0x31 |
15c0: 87 fd sbrc r24, 7 |
15c2: 03 c0 rjmp .+6 ; 0x15ca <_printf_P+0x382> |
15c4: 9b a9 ldd r25, Y+51 ; 0x33 |
15c6: 9f 7d andi r25, 0xDF ; 223 |
15c8: 9b ab std Y+51, r25 ; 0x33 |
15ca: 21 14 cp r2, r1 |
15cc: 31 04 cpc r3, r1 |
15ce: 41 04 cpc r4, r1 |
15d0: 51 04 cpc r5, r1 |
15d2: 61 f4 brne .+24 ; 0x15ec <_printf_P+0x3a4> |
15d4: e9 a9 ldd r30, Y+49 ; 0x31 |
15d6: ee 23 and r30, r30 |
15d8: 49 f4 brne .+18 ; 0x15ec <_printf_P+0x3a4> |
15da: 66 24 eor r6, r6 |
15dc: 77 24 eor r7, r7 |
15de: 43 01 movw r8, r6 |
15e0: 5e e2 ldi r21, 0x2E ; 46 |
15e2: c5 2e mov r12, r21 |
15e4: d1 2c mov r13, r1 |
15e6: cc 0e add r12, r28 |
15e8: dd 1e adc r13, r29 |
15ea: 3e c0 rjmp .+124 ; 0x1668 <_printf_P+0x420> |
15ec: 4e e2 ldi r20, 0x2E ; 46 |
15ee: c4 2e mov r12, r20 |
15f0: d1 2c mov r13, r1 |
15f2: cc 0e add r12, r28 |
15f4: dd 1e adc r13, r29 |
15f6: f8 a9 ldd r31, Y+48 ; 0x30 |
15f8: ef 2e mov r14, r31 |
15fa: ff 24 eor r15, r15 |
15fc: 00 27 eor r16, r16 |
15fe: 11 27 eor r17, r17 |
1600: c2 01 movw r24, r4 |
1602: b1 01 movw r22, r2 |
1604: a8 01 movw r20, r16 |
1606: 97 01 movw r18, r14 |
1608: 0e 94 a5 2e call 0x5d4a ; 0x5d4a <__udivmodsi4> |
160c: 6a 30 cpi r22, 0x0A ; 10 |
160e: 20 f4 brcc .+8 ; 0x1618 <_printf_P+0x3d0> |
1610: 30 e3 ldi r19, 0x30 ; 48 |
1612: a3 2e mov r10, r19 |
1614: a6 0e add r10, r22 |
1616: 08 c0 rjmp .+16 ; 0x1628 <_printf_P+0x3e0> |
1618: 27 e5 ldi r18, 0x57 ; 87 |
161a: a2 2e mov r10, r18 |
161c: a6 0e add r10, r22 |
161e: 88 e5 ldi r24, 0x58 ; 88 |
1620: b8 16 cp r11, r24 |
1622: 11 f4 brne .+4 ; 0x1628 <_printf_P+0x3e0> |
1624: 9f ed ldi r25, 0xDF ; 223 |
1626: a9 22 and r10, r25 |
1628: f6 01 movw r30, r12 |
162a: a2 92 st -Z, r10 |
162c: 6f 01 movw r12, r30 |
162e: c2 01 movw r24, r4 |
1630: b1 01 movw r22, r2 |
1632: a8 01 movw r20, r16 |
1634: 97 01 movw r18, r14 |
1636: 0e 94 a5 2e call 0x5d4a ; 0x5d4a <__udivmodsi4> |
163a: 39 01 movw r6, r18 |
163c: 4a 01 movw r8, r20 |
163e: 2e 14 cp r2, r14 |
1640: 3f 04 cpc r3, r15 |
1642: 40 06 cpc r4, r16 |
1644: 51 06 cpc r5, r17 |
1646: 18 f0 brcs .+6 ; 0x164e <_printf_P+0x406> |
1648: 19 01 movw r2, r18 |
164a: 2a 01 movw r4, r20 |
164c: d9 cf rjmp .-78 ; 0x1600 <_printf_P+0x3b8> |
164e: f8 a9 ldd r31, Y+48 ; 0x30 |
1650: f8 30 cpi r31, 0x08 ; 8 |
1652: 51 f4 brne .+20 ; 0x1668 <_printf_P+0x420> |
1654: 8b a9 ldd r24, Y+51 ; 0x33 |
1656: 83 ff sbrs r24, 3 |
1658: 07 c0 rjmp .+14 ; 0x1668 <_printf_P+0x420> |
165a: 90 e3 ldi r25, 0x30 ; 48 |
165c: a9 16 cp r10, r25 |
165e: 21 f0 breq .+8 ; 0x1668 <_printf_P+0x420> |
1660: 80 e3 ldi r24, 0x30 ; 48 |
1662: f6 01 movw r30, r12 |
1664: 82 93 st -Z, r24 |
1666: 6f 01 movw r12, r30 |
1668: ce 01 movw r24, r28 |
166a: 8c 19 sub r24, r12 |
166c: 18 2f mov r17, r24 |
166e: 12 5d subi r17, 0xD2 ; 210 |
1670: 49 a9 ldd r20, Y+49 ; 0x31 |
1672: 10 c0 rjmp .+32 ; 0x1694 <_printf_P+0x44c> |
1674: bb 20 and r11, r11 |
1676: 09 f4 brne .+2 ; 0x167a <_printf_P+0x432> |
1678: 5c c0 rjmp .+184 ; 0x1732 <_printf_P+0x4ea> |
167a: be 82 std Y+6, r11 ; 0x06 |
167c: 19 82 std Y+1, r1 ; 0x01 |
167e: 42 01 movw r8, r4 |
1680: 31 01 movw r6, r2 |
1682: 00 e0 ldi r16, 0x00 ; 0 |
1684: 96 e0 ldi r25, 0x06 ; 6 |
1686: c9 2e mov r12, r25 |
1688: d1 2c mov r13, r1 |
168a: cc 0e add r12, r28 |
168c: dd 1e adc r13, r29 |
168e: 11 e0 ldi r17, 0x01 ; 1 |
1690: 21 e0 ldi r18, 0x01 ; 1 |
1692: 05 c0 rjmp .+10 ; 0x169e <_printf_P+0x456> |
1694: 21 2f mov r18, r17 |
1696: 04 2f mov r16, r20 |
1698: 01 1b sub r16, r17 |
169a: 07 fd sbrc r16, 7 |
169c: 00 e0 ldi r16, 0x00 ; 0 |
169e: 89 81 ldd r24, Y+1 ; 0x01 |
16a0: 88 23 and r24, r24 |
16a2: 19 f0 breq .+6 ; 0x16aa <_printf_P+0x462> |
16a4: 81 2f mov r24, r17 |
16a6: 8f 5f subi r24, 0xFF ; 255 |
16a8: 07 c0 rjmp .+14 ; 0x16b8 <_printf_P+0x470> |
16aa: 9b a9 ldd r25, Y+51 ; 0x33 |
16ac: 96 fd sbrc r25, 6 |
16ae: 02 c0 rjmp .+4 ; 0x16b4 <_printf_P+0x46c> |
16b0: 81 2f mov r24, r17 |
16b2: 02 c0 rjmp .+4 ; 0x16b8 <_printf_P+0x470> |
16b4: 82 2f mov r24, r18 |
16b6: 8e 5f subi r24, 0xFE ; 254 |
16b8: a8 2e mov r10, r24 |
16ba: a0 0e add r10, r16 |
16bc: eb a9 ldd r30, Y+51 ; 0x33 |
16be: ee 2e mov r14, r30 |
16c0: ff 24 eor r15, r15 |
16c2: 80 e3 ldi r24, 0x30 ; 48 |
16c4: 48 2e mov r4, r24 |
16c6: 51 2c mov r5, r1 |
16c8: 4e 20 and r4, r14 |
16ca: 5f 20 and r5, r15 |
16cc: 41 14 cp r4, r1 |
16ce: 51 04 cpc r5, r1 |
16d0: 21 f4 brne .+8 ; 0x16da <_printf_P+0x492> |
16d2: 8a a9 ldd r24, Y+50 ; 0x32 |
16d4: 8a 19 sub r24, r10 |
16d6: 0e 94 ef 08 call 0x11de ; 0x11de <PAD_SP> |
16da: 89 81 ldd r24, Y+1 ; 0x01 |
16dc: 88 23 and r24, r24 |
16de: 29 f0 breq .+10 ; 0x16ea <_printf_P+0x4a2> |
16e0: 61 e0 ldi r22, 0x01 ; 1 |
16e2: 70 e0 ldi r23, 0x00 ; 0 |
16e4: ce 01 movw r24, r28 |
16e6: 01 96 adiw r24, 0x01 ; 1 |
16e8: 09 c0 rjmp .+18 ; 0x16fc <_printf_P+0x4b4> |
16ea: e6 fe sbrs r14, 6 |
16ec: 09 c0 rjmp .+18 ; 0x1700 <_printf_P+0x4b8> |
16ee: 80 e3 ldi r24, 0x30 ; 48 |
16f0: 8a 83 std Y+2, r24 ; 0x02 |
16f2: bb 82 std Y+3, r11 ; 0x03 |
16f4: 62 e0 ldi r22, 0x02 ; 2 |
16f6: 70 e0 ldi r23, 0x00 ; 0 |
16f8: ce 01 movw r24, r28 |
16fa: 02 96 adiw r24, 0x02 ; 2 |
16fc: 0e 94 10 09 call 0x1220 ; 0x1220 <PRINT> |
1700: f0 e2 ldi r31, 0x20 ; 32 |
1702: 4f 16 cp r4, r31 |
1704: 51 04 cpc r5, r1 |
1706: 21 f4 brne .+8 ; 0x1710 <_printf_P+0x4c8> |
1708: 8a a9 ldd r24, Y+50 ; 0x32 |
170a: 8a 19 sub r24, r10 |
170c: 0e 94 e4 08 call 0x11c8 ; 0x11c8 <PAD_0> |
1710: 80 2f mov r24, r16 |
1712: 0e 94 e4 08 call 0x11c8 ; 0x11c8 <PAD_0> |
1716: 61 2f mov r22, r17 |
1718: 77 27 eor r23, r23 |
171a: 67 fd sbrc r22, 7 |
171c: 70 95 com r23 |
171e: c6 01 movw r24, r12 |
1720: 0e 94 10 09 call 0x1220 ; 0x1220 <PRINT> |
1724: e4 fe sbrs r14, 4 |
1726: aa cd rjmp .-1196 ; 0x127c <_printf_P+0x34> |
1728: 8a a9 ldd r24, Y+50 ; 0x32 |
172a: 8a 19 sub r24, r10 |
172c: 0e 94 ef 08 call 0x11de ; 0x11de <PAD_SP> |
1730: a5 cd rjmp .-1206 ; 0x127c <_printf_P+0x34> |
1732: e2 e1 ldi r30, 0x12 ; 18 |
1734: cd 5c subi r28, 0xCD ; 205 |
1736: 0c 94 fe 2e jmp 0x5dfc ; 0x5dfc <__epilogue_restores__> |
0000173a <SetDelay>: |
173a: 20 91 a3 01 lds r18, 0x01A3 |
173e: 30 91 a4 01 lds r19, 0x01A4 |
1742: 2f 5f subi r18, 0xFF ; 255 |
1744: 3f 4f sbci r19, 0xFF ; 255 |
1746: 82 0f add r24, r18 |
1748: 93 1f adc r25, r19 |
174a: 08 95 ret |
0000174c <CheckDelay>: |
174c: 20 91 a3 01 lds r18, 0x01A3 |
1750: 30 91 a4 01 lds r19, 0x01A4 |
1754: 82 1b sub r24, r18 |
1756: 93 0b sbc r25, r19 |
1758: 89 2f mov r24, r25 |
175a: 99 27 eor r25, r25 |
175c: 86 95 lsr r24 |
175e: 80 74 andi r24, 0x40 ; 64 |
1760: 99 27 eor r25, r25 |
1762: 08 95 ret |
00001764 <__vector_9>: |
1764: 1f 92 push r1 |
1766: 0f 92 push r0 |
1768: 0f b6 in r0, 0x3f ; 63 |
176a: 0f 92 push r0 |
176c: 11 24 eor r1, r1 |
176e: ef 92 push r14 |
1770: ff 92 push r15 |
1772: 0f 93 push r16 |
1774: 1f 93 push r17 |
1776: 2f 93 push r18 |
1778: 3f 93 push r19 |
177a: 4f 93 push r20 |
177c: 5f 93 push r21 |
177e: 6f 93 push r22 |
1780: 7f 93 push r23 |
1782: 8f 93 push r24 |
1784: 9f 93 push r25 |
1786: af 93 push r26 |
1788: bf 93 push r27 |
178a: cf 93 push r28 |
178c: df 93 push r29 |
178e: ef 93 push r30 |
1790: ff 93 push r31 |
1792: 80 91 02 01 lds r24, 0x0102 |
1796: 81 50 subi r24, 0x01 ; 1 |
1798: 80 93 02 01 sts 0x0102, r24 |
179c: 8f 3f cpi r24, 0xFF ; 255 |
179e: 09 f0 breq .+2 ; 0x17a2 <__vector_9+0x3e> |
17a0: 6d c0 rjmp .+218 ; 0x187c <__vector_9+0x118> |
17a2: 83 e8 ldi r24, 0x83 ; 131 |
17a4: 80 93 b0 00 sts 0x00B0, r24 |
17a8: 80 91 89 01 lds r24, 0x0189 |
17ac: c8 2f mov r28, r24 |
17ae: dd 27 eor r29, r29 |
17b0: d0 93 a9 01 sts 0x01A9, r29 |
17b4: c0 93 a8 01 sts 0x01A8, r28 |
17b8: 80 91 00 05 lds r24, 0x0500 |
17bc: e0 90 fc 04 lds r14, 0x04FC |
17c0: 80 ff sbrs r24, 0 |
17c2: 1e c0 rjmp .+60 ; 0x1800 <__vector_9+0x9c> |
17c4: 60 91 db 01 lds r22, 0x01DB |
17c8: 70 91 dc 01 lds r23, 0x01DC |
17cc: 80 91 dd 01 lds r24, 0x01DD |
17d0: 90 91 de 01 lds r25, 0x01DE |
17d4: ff 24 eor r15, r15 |
17d6: 00 27 eor r16, r16 |
17d8: 11 27 eor r17, r17 |
17da: 20 e8 ldi r18, 0x80 ; 128 |
17dc: 30 e0 ldi r19, 0x00 ; 0 |
17de: 40 e0 ldi r20, 0x00 ; 0 |
17e0: 50 e0 ldi r21, 0x00 ; 0 |
17e2: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
17e6: c8 01 movw r24, r16 |
17e8: b7 01 movw r22, r14 |
17ea: 0e 94 5f 2e call 0x5cbe ; 0x5cbe <__mulsi3> |
17ee: 20 e0 ldi r18, 0x00 ; 0 |
17f0: 32 e0 ldi r19, 0x02 ; 2 |
17f2: 40 e0 ldi r20, 0x00 ; 0 |
17f4: 50 e0 ldi r21, 0x00 ; 0 |
17f6: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
17fa: c2 0f add r28, r18 |
17fc: d3 1f adc r29, r19 |
17fe: 1d c0 rjmp .+58 ; 0x183a <__vector_9+0xd6> |
1800: 60 91 db 01 lds r22, 0x01DB |
1804: 70 91 dc 01 lds r23, 0x01DC |
1808: 80 91 dd 01 lds r24, 0x01DD |
180c: 90 91 de 01 lds r25, 0x01DE |
1810: ff 24 eor r15, r15 |
1812: 00 27 eor r16, r16 |
1814: 11 27 eor r17, r17 |
1816: 20 e8 ldi r18, 0x80 ; 128 |
1818: 30 e0 ldi r19, 0x00 ; 0 |
181a: 40 e0 ldi r20, 0x00 ; 0 |
181c: 50 e0 ldi r21, 0x00 ; 0 |
181e: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
1822: c8 01 movw r24, r16 |
1824: b7 01 movw r22, r14 |
1826: 0e 94 5f 2e call 0x5cbe ; 0x5cbe <__mulsi3> |
182a: 20 e0 ldi r18, 0x00 ; 0 |
182c: 32 e0 ldi r19, 0x02 ; 2 |
182e: 40 e0 ldi r20, 0x00 ; 0 |
1830: 50 e0 ldi r21, 0x00 ; 0 |
1832: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
1836: c2 1b sub r28, r18 |
1838: d3 0b sbc r29, r19 |
183a: d0 93 a9 01 sts 0x01A9, r29 |
183e: c0 93 a8 01 sts 0x01A8, r28 |
1842: 20 91 a8 01 lds r18, 0x01A8 |
1846: 30 91 a9 01 lds r19, 0x01A9 |
184a: 80 91 fd 04 lds r24, 0x04FD |
184e: 99 27 eor r25, r25 |
1850: 28 17 cp r18, r24 |
1852: 39 07 cpc r19, r25 |
1854: 34 f0 brlt .+12 ; 0x1862 <__vector_9+0xfe> |
1856: 80 91 fe 04 lds r24, 0x04FE |
185a: 99 27 eor r25, r25 |
185c: 82 17 cp r24, r18 |
185e: 93 07 cpc r25, r19 |
1860: 24 f4 brge .+8 ; 0x186a <__vector_9+0x106> |
1862: 90 93 a9 01 sts 0x01A9, r25 |
1866: 80 93 a8 01 sts 0x01A8, r24 |
186a: 80 91 a8 01 lds r24, 0x01A8 |
186e: 80 93 b3 00 sts 0x00B3, r24 |
1872: 80 91 ff 04 lds r24, 0x04FF |
1876: 80 93 02 01 sts 0x0102, r24 |
187a: 04 c0 rjmp .+8 ; 0x1884 <__vector_9+0x120> |
187c: 83 e0 ldi r24, 0x03 ; 3 |
187e: 80 93 b0 00 sts 0x00B0, r24 |
1882: 5f 98 cbi 0x0b, 7 ; 11 |
1884: ff 91 pop r31 |
1886: ef 91 pop r30 |
1888: df 91 pop r29 |
188a: cf 91 pop r28 |
188c: bf 91 pop r27 |
188e: af 91 pop r26 |
1890: 9f 91 pop r25 |
1892: 8f 91 pop r24 |
1894: 7f 91 pop r23 |
1896: 6f 91 pop r22 |
1898: 5f 91 pop r21 |
189a: 4f 91 pop r20 |
189c: 3f 91 pop r19 |
189e: 2f 91 pop r18 |
18a0: 1f 91 pop r17 |
18a2: 0f 91 pop r16 |
18a4: ff 90 pop r15 |
18a6: ef 90 pop r14 |
18a8: 0f 90 pop r0 |
18aa: 0f be out 0x3f, r0 ; 63 |
18ac: 0f 90 pop r0 |
18ae: 1f 90 pop r1 |
18b0: 18 95 reti |
000018b2 <__vector_18>: |
18b2: 1f 92 push r1 |
18b4: 0f 92 push r0 |
18b6: 0f b6 in r0, 0x3f ; 63 |
18b8: 0f 92 push r0 |
18ba: 11 24 eor r1, r1 |
18bc: 2f 93 push r18 |
18be: 3f 93 push r19 |
18c0: 4f 93 push r20 |
18c2: 5f 93 push r21 |
18c4: 6f 93 push r22 |
18c6: 7f 93 push r23 |
18c8: 8f 93 push r24 |
18ca: 9f 93 push r25 |
18cc: af 93 push r26 |
18ce: bf 93 push r27 |
18d0: ef 93 push r30 |
18d2: ff 93 push r31 |
18d4: 80 91 aa 01 lds r24, 0x01AA |
18d8: 81 50 subi r24, 0x01 ; 1 |
18da: 80 93 aa 01 sts 0x01AA, r24 |
18de: 8f 3f cpi r24, 0xFF ; 255 |
18e0: 01 f5 brne .+64 ; 0x1922 <__vector_18+0x70> |
18e2: 8a e0 ldi r24, 0x0A ; 10 |
18e4: 80 93 aa 01 sts 0x01AA, r24 |
18e8: 80 91 03 01 lds r24, 0x0103 |
18ec: 8f 5f subi r24, 0xFF ; 255 |
18ee: 81 70 andi r24, 0x01 ; 1 |
18f0: 80 93 03 01 sts 0x0103, r24 |
18f4: 88 23 and r24, r24 |
18f6: 19 f4 brne .+6 ; 0x18fe <__vector_18+0x4c> |
18f8: 81 e0 ldi r24, 0x01 ; 1 |
18fa: 80 93 a5 01 sts 0x01A5, r24 |
18fe: 80 91 a3 01 lds r24, 0x01A3 |
1902: 90 91 a4 01 lds r25, 0x01A4 |
1906: 01 96 adiw r24, 0x01 ; 1 |
1908: 90 93 a4 01 sts 0x01A4, r25 |
190c: 80 93 a3 01 sts 0x01A3, r24 |
1910: 80 91 d2 01 lds r24, 0x01D2 |
1914: 88 23 and r24, r24 |
1916: 29 f0 breq .+10 ; 0x1922 <__vector_18+0x70> |
1918: 80 91 d2 01 lds r24, 0x01D2 |
191c: 81 50 subi r24, 0x01 ; 1 |
191e: 80 93 d2 01 sts 0x01D2, r24 |
1922: 80 91 a6 01 lds r24, 0x01A6 |
1926: 90 91 a7 01 lds r25, 0x01A7 |
192a: 02 97 sbiw r24, 0x02 ; 2 |
192c: 58 f0 brcs .+22 ; 0x1944 <__vector_18+0x92> |
192e: 80 91 a6 01 lds r24, 0x01A6 |
1932: 90 91 a7 01 lds r25, 0x01A7 |
1936: 01 97 sbiw r24, 0x01 ; 1 |
1938: 90 93 a7 01 sts 0x01A7, r25 |
193c: 80 93 a6 01 sts 0x01A6, r24 |
1940: 5a 9a sbi 0x0b, 2 ; 11 |
1942: 01 c0 rjmp .+2 ; 0x1946 <__vector_18+0x94> |
1944: 5a 98 cbi 0x0b, 2 ; 11 |
1946: 80 91 e2 04 lds r24, 0x04E2 |
194a: 83 ff sbrs r24, 3 |
194c: 02 c0 rjmp .+4 ; 0x1952 <__vector_18+0xa0> |
194e: 0e 94 2a 16 call 0x2c54 ; 0x2c54 <timer0_MM3> |
1952: ff 91 pop r31 |
1954: ef 91 pop r30 |
1956: bf 91 pop r27 |
1958: af 91 pop r26 |
195a: 9f 91 pop r25 |
195c: 8f 91 pop r24 |
195e: 7f 91 pop r23 |
1960: 6f 91 pop r22 |
1962: 5f 91 pop r21 |
1964: 4f 91 pop r20 |
1966: 3f 91 pop r19 |
1968: 2f 91 pop r18 |
196a: 0f 90 pop r0 |
196c: 0f be out 0x3f, r0 ; 63 |
196e: 0f 90 pop r0 |
1970: 1f 90 pop r1 |
1972: 18 95 reti |
00001974 <Timer_Init>: |
1974: 80 91 a3 01 lds r24, 0x01A3 |
1978: 90 91 a4 01 lds r25, 0x01A4 |
197c: 0b 96 adiw r24, 0x0b ; 11 |
197e: 90 93 ac 01 sts 0x01AC, r25 |
1982: 80 93 ab 01 sts 0x01AB, r24 |
1986: 82 e0 ldi r24, 0x02 ; 2 |
1988: 85 bd out 0x25, r24 ; 37 |
198a: 83 ea ldi r24, 0xA3 ; 163 |
198c: 84 bd out 0x24, r24 ; 36 |
198e: 17 bc out 0x27, r1 ; 39 |
1990: 88 e7 ldi r24, 0x78 ; 120 |
1992: 88 bd out 0x28, r24 ; 40 |
1994: 83 ec ldi r24, 0xC3 ; 195 |
1996: 80 93 b0 00 sts 0x00B0, r24 |
199a: 86 e0 ldi r24, 0x06 ; 6 |
199c: 80 93 b1 00 sts 0x00B1, r24 |
19a0: e0 e7 ldi r30, 0x70 ; 112 |
19a2: f0 e0 ldi r31, 0x00 ; 0 |
19a4: 80 81 ld r24, Z |
19a6: 82 60 ori r24, 0x02 ; 2 |
19a8: 80 83 st Z, r24 |
19aa: ee e6 ldi r30, 0x6E ; 110 |
19ac: f0 e0 ldi r31, 0x00 ; 0 |
19ae: 80 81 ld r24, Z |
19b0: 81 60 ori r24, 0x01 ; 1 |
19b2: 80 83 st Z, r24 |
19b4: 8a e0 ldi r24, 0x0A ; 10 |
19b6: 80 93 b3 00 sts 0x00B3, r24 |
19ba: 10 92 b2 00 sts 0x00B2, r1 |
19be: 08 95 ret |
000019c0 <Delay_ms>: |
19c0: 20 91 a3 01 lds r18, 0x01A3 |
19c4: 30 91 a4 01 lds r19, 0x01A4 |
19c8: 2f 5f subi r18, 0xFF ; 255 |
19ca: 3f 4f sbci r19, 0xFF ; 255 |
19cc: 28 0f add r18, r24 |
19ce: 39 1f adc r19, r25 |
19d0: 80 91 a3 01 lds r24, 0x01A3 |
19d4: 90 91 a4 01 lds r25, 0x01A4 |
19d8: a9 01 movw r20, r18 |
19da: 48 1b sub r20, r24 |
19dc: 59 0b sbc r21, r25 |
19de: 57 ff sbrs r21, 7 |
19e0: f7 cf rjmp .-18 ; 0x19d0 <Delay_ms+0x10> |
19e2: 08 95 ret |
000019e4 <ADC_Init>: |
19e4: 10 92 7c 00 sts 0x007C, r1 |
19e8: 8f ec ldi r24, 0xCF ; 207 |
19ea: 80 93 7a 00 sts 0x007A, r24 |
19ee: 08 95 ret |
000019f0 <__vector_24>: |
19f0: 1f 92 push r1 |
19f2: 0f 92 push r0 |
19f4: 0f b6 in r0, 0x3f ; 63 |
19f6: 0f 92 push r0 |
19f8: 11 24 eor r1, r1 |
19fa: ef 92 push r14 |
19fc: ff 92 push r15 |
19fe: 0f 93 push r16 |
1a00: 1f 93 push r17 |
1a02: 2f 93 push r18 |
1a04: 3f 93 push r19 |
1a06: 4f 93 push r20 |
1a08: 5f 93 push r21 |
1a0a: 6f 93 push r22 |
1a0c: 7f 93 push r23 |
1a0e: 8f 93 push r24 |
1a10: 9f 93 push r25 |
1a12: af 93 push r26 |
1a14: bf 93 push r27 |
1a16: cf 93 push r28 |
1a18: df 93 push r29 |
1a1a: ef 93 push r30 |
1a1c: ff 93 push r31 |
1a1e: 10 92 7a 00 sts 0x007A, r1 |
1a22: 80 91 c3 01 lds r24, 0x01C3 |
1a26: 8f 5f subi r24, 0xFF ; 255 |
1a28: 80 93 c3 01 sts 0x01C3, r24 |
1a2c: 81 50 subi r24, 0x01 ; 1 |
1a2e: e8 2f mov r30, r24 |
1a30: ff 27 eor r31, r31 |
1a32: e8 30 cpi r30, 0x08 ; 8 |
1a34: f1 05 cpc r31, r1 |
1a36: 08 f0 brcs .+2 ; 0x1a3a <__vector_24+0x4a> |
1a38: cf c2 rjmp .+1438 ; 0x1fd8 <__vector_24+0x5e8> |
1a3a: e4 5b subi r30, 0xB4 ; 180 |
1a3c: ff 4f sbci r31, 0xFF ; 255 |
1a3e: 0c 94 19 2f jmp 0x5e32 ; 0x5e32 <__tablejump2__> |
1a42: 20 91 d7 01 lds r18, 0x01D7 |
1a46: 30 91 d8 01 lds r19, 0x01D8 |
1a4a: 80 91 78 00 lds r24, 0x0078 |
1a4e: 90 91 79 00 lds r25, 0x0079 |
1a52: 28 1b sub r18, r24 |
1a54: 39 0b sbc r19, r25 |
1a56: 80 91 b1 01 lds r24, 0x01B1 |
1a5a: 90 91 b2 01 lds r25, 0x01B2 |
1a5e: 82 0f add r24, r18 |
1a60: 93 1f adc r25, r19 |
1a62: 90 93 b2 01 sts 0x01B2, r25 |
1a66: 80 93 b1 01 sts 0x01B1, r24 |
1a6a: 80 91 bb 01 lds r24, 0x01BB |
1a6e: 8f 5f subi r24, 0xFF ; 255 |
1a70: 80 93 bb 01 sts 0x01BB, r24 |
1a74: 80 91 ff 01 lds r24, 0x01FF |
1a78: 90 91 00 02 lds r25, 0x0200 |
1a7c: a0 91 01 02 lds r26, 0x0201 |
1a80: b0 91 02 02 lds r27, 0x0202 |
1a84: 44 27 eor r20, r20 |
1a86: 37 fd sbrc r19, 7 |
1a88: 40 95 com r20 |
1a8a: 54 2f mov r21, r20 |
1a8c: 82 0f add r24, r18 |
1a8e: 93 1f adc r25, r19 |
1a90: a4 1f adc r26, r20 |
1a92: b5 1f adc r27, r21 |
1a94: 80 93 ff 01 sts 0x01FF, r24 |
1a98: 90 93 00 02 sts 0x0200, r25 |
1a9c: a0 93 01 02 sts 0x0201, r26 |
1aa0: b0 93 02 02 sts 0x0202, r27 |
1aa4: 80 91 03 02 lds r24, 0x0203 |
1aa8: 90 91 04 02 lds r25, 0x0204 |
1aac: a0 91 05 02 lds r26, 0x0205 |
1ab0: b0 91 06 02 lds r27, 0x0206 |
1ab4: 82 0f add r24, r18 |
1ab6: 93 1f adc r25, r19 |
1ab8: a4 1f adc r26, r20 |
1aba: b5 1f adc r27, r21 |
1abc: 80 93 03 02 sts 0x0203, r24 |
1ac0: 90 93 04 02 sts 0x0204, r25 |
1ac4: a0 93 05 02 sts 0x0205, r26 |
1ac8: b0 93 06 02 sts 0x0206, r27 |
1acc: 81 e0 ldi r24, 0x01 ; 1 |
1ace: 80 93 c4 01 sts 0x01C4, r24 |
1ad2: 80 91 c1 01 lds r24, 0x01C1 |
1ad6: 90 91 c2 01 lds r25, 0x01C2 |
1ada: 01 96 adiw r24, 0x01 ; 1 |
1adc: 90 93 c2 01 sts 0x01C2, r25 |
1ae0: 80 93 c1 01 sts 0x01C1, r24 |
1ae4: 7d c2 rjmp .+1274 ; 0x1fe0 <__vector_24+0x5f0> |
1ae6: 60 91 78 00 lds r22, 0x0078 |
1aea: 70 91 79 00 lds r23, 0x0079 |
1aee: 80 91 d5 01 lds r24, 0x01D5 |
1af2: 90 91 d6 01 lds r25, 0x01D6 |
1af6: 68 1b sub r22, r24 |
1af8: 79 0b sbc r23, r25 |
1afa: 80 91 f7 01 lds r24, 0x01F7 |
1afe: 90 91 f8 01 lds r25, 0x01F8 |
1b02: a0 91 f9 01 lds r26, 0x01F9 |
1b06: b0 91 fa 01 lds r27, 0x01FA |
1b0a: 9b 01 movw r18, r22 |
1b0c: 44 27 eor r20, r20 |
1b0e: 37 fd sbrc r19, 7 |
1b10: 40 95 com r20 |
1b12: 54 2f mov r21, r20 |
1b14: 82 0f add r24, r18 |
1b16: 93 1f adc r25, r19 |
1b18: a4 1f adc r26, r20 |
1b1a: b5 1f adc r27, r21 |
1b1c: 80 93 f7 01 sts 0x01F7, r24 |
1b20: 90 93 f8 01 sts 0x01F8, r25 |
1b24: a0 93 f9 01 sts 0x01F9, r26 |
1b28: b0 93 fa 01 sts 0x01FA, r27 |
1b2c: 80 91 fb 01 lds r24, 0x01FB |
1b30: 90 91 fc 01 lds r25, 0x01FC |
1b34: a0 91 fd 01 lds r26, 0x01FD |
1b38: b0 91 fe 01 lds r27, 0x01FE |
1b3c: 82 0f add r24, r18 |
1b3e: 93 1f adc r25, r19 |
1b40: a4 1f adc r26, r20 |
1b42: b5 1f adc r27, r21 |
1b44: 80 93 fb 01 sts 0x01FB, r24 |
1b48: 90 93 fc 01 sts 0x01FC, r25 |
1b4c: a0 93 fd 01 sts 0x01FD, r26 |
1b50: b0 93 fe 01 sts 0x01FE, r27 |
1b54: 80 91 78 00 lds r24, 0x0078 |
1b58: 90 91 79 00 lds r25, 0x0079 |
1b5c: 0a 97 sbiw r24, 0x0a ; 10 |
1b5e: 10 f4 brcc .+4 ; 0x1b64 <__vector_24+0x174> |
1b60: 64 e4 ldi r22, 0x44 ; 68 |
1b62: 7d ef ldi r23, 0xFD ; 253 |
1b64: 80 91 78 00 lds r24, 0x0078 |
1b68: 90 91 79 00 lds r25, 0x0079 |
1b6c: 89 5e subi r24, 0xE9 ; 233 |
1b6e: 93 40 sbci r25, 0x03 ; 3 |
1b70: 10 f0 brcs .+4 ; 0x1b76 <__vector_24+0x186> |
1b72: 6c eb ldi r22, 0xBC ; 188 |
1b74: 72 e0 ldi r23, 0x02 ; 2 |
1b76: 80 91 af 01 lds r24, 0x01AF |
1b7a: 90 91 b0 01 lds r25, 0x01B0 |
1b7e: 86 0f add r24, r22 |
1b80: 97 1f adc r25, r23 |
1b82: 90 93 b0 01 sts 0x01B0, r25 |
1b86: 80 93 af 01 sts 0x01AF, r24 |
1b8a: 80 91 ba 01 lds r24, 0x01BA |
1b8e: 8f 5f subi r24, 0xFF ; 255 |
1b90: 80 93 ba 01 sts 0x01BA, r24 |
1b94: 82 e0 ldi r24, 0x02 ; 2 |
1b96: 58 c0 rjmp .+176 ; 0x1c48 <__vector_24+0x258> |
1b98: 60 91 78 00 lds r22, 0x0078 |
1b9c: 70 91 79 00 lds r23, 0x0079 |
1ba0: 80 91 d3 01 lds r24, 0x01D3 |
1ba4: 90 91 d4 01 lds r25, 0x01D4 |
1ba8: 68 1b sub r22, r24 |
1baa: 79 0b sbc r23, r25 |
1bac: 80 91 ef 01 lds r24, 0x01EF |
1bb0: 90 91 f0 01 lds r25, 0x01F0 |
1bb4: a0 91 f1 01 lds r26, 0x01F1 |
1bb8: b0 91 f2 01 lds r27, 0x01F2 |
1bbc: 9b 01 movw r18, r22 |
1bbe: 44 27 eor r20, r20 |
1bc0: 37 fd sbrc r19, 7 |
1bc2: 40 95 com r20 |
1bc4: 54 2f mov r21, r20 |
1bc6: 82 0f add r24, r18 |
1bc8: 93 1f adc r25, r19 |
1bca: a4 1f adc r26, r20 |
1bcc: b5 1f adc r27, r21 |
1bce: 80 93 ef 01 sts 0x01EF, r24 |
1bd2: 90 93 f0 01 sts 0x01F0, r25 |
1bd6: a0 93 f1 01 sts 0x01F1, r26 |
1bda: b0 93 f2 01 sts 0x01F2, r27 |
1bde: 80 91 f3 01 lds r24, 0x01F3 |
1be2: 90 91 f4 01 lds r25, 0x01F4 |
1be6: a0 91 f5 01 lds r26, 0x01F5 |
1bea: b0 91 f6 01 lds r27, 0x01F6 |
1bee: 82 0f add r24, r18 |
1bf0: 93 1f adc r25, r19 |
1bf2: a4 1f adc r26, r20 |
1bf4: b5 1f adc r27, r21 |
1bf6: 80 93 f3 01 sts 0x01F3, r24 |
1bfa: 90 93 f4 01 sts 0x01F4, r25 |
1bfe: a0 93 f5 01 sts 0x01F5, r26 |
1c02: b0 93 f6 01 sts 0x01F6, r27 |
1c06: 80 91 78 00 lds r24, 0x0078 |
1c0a: 90 91 79 00 lds r25, 0x0079 |
1c0e: 0a 97 sbiw r24, 0x0a ; 10 |
1c10: 10 f4 brcc .+4 ; 0x1c16 <__vector_24+0x226> |
1c12: 64 e4 ldi r22, 0x44 ; 68 |
1c14: 7d ef ldi r23, 0xFD ; 253 |
1c16: 80 91 78 00 lds r24, 0x0078 |
1c1a: 90 91 79 00 lds r25, 0x0079 |
1c1e: 89 5e subi r24, 0xE9 ; 233 |
1c20: 93 40 sbci r25, 0x03 ; 3 |
1c22: 10 f0 brcs .+4 ; 0x1c28 <__vector_24+0x238> |
1c24: 6c eb ldi r22, 0xBC ; 188 |
1c26: 72 e0 ldi r23, 0x02 ; 2 |
1c28: 80 91 ad 01 lds r24, 0x01AD |
1c2c: 90 91 ae 01 lds r25, 0x01AE |
1c30: 86 0f add r24, r22 |
1c32: 97 1f adc r25, r23 |
1c34: 90 93 ae 01 sts 0x01AE, r25 |
1c38: 80 93 ad 01 sts 0x01AD, r24 |
1c3c: 80 91 b9 01 lds r24, 0x01B9 |
1c40: 8f 5f subi r24, 0xFF ; 255 |
1c42: 80 93 b9 01 sts 0x01B9, r24 |
1c46: 84 e0 ldi r24, 0x04 ; 4 |
1c48: 80 93 c4 01 sts 0x01C4, r24 |
1c4c: c9 c1 rjmp .+914 ; 0x1fe0 <__vector_24+0x5f0> |
1c4e: 40 91 04 01 lds r20, 0x0104 |
1c52: 50 91 05 01 lds r21, 0x0105 |
1c56: 80 91 78 00 lds r24, 0x0078 |
1c5a: 90 91 79 00 lds r25, 0x0079 |
1c5e: 9a 01 movw r18, r20 |
1c60: 22 0f add r18, r18 |
1c62: 33 1f adc r19, r19 |
1c64: 24 0f add r18, r20 |
1c66: 35 1f adc r19, r21 |
1c68: 63 e0 ldi r22, 0x03 ; 3 |
1c6a: 70 e0 ldi r23, 0x00 ; 0 |
1c6c: 0e 94 7e 2e call 0x5cfc ; 0x5cfc <__udivmodhi4> |
1c70: 26 0f add r18, r22 |
1c72: 37 1f adc r19, r23 |
1c74: 36 95 lsr r19 |
1c76: 27 95 ror r18 |
1c78: 36 95 lsr r19 |
1c7a: 27 95 ror r18 |
1c7c: 30 93 05 01 sts 0x0105, r19 |
1c80: 20 93 04 01 sts 0x0104, r18 |
1c84: 86 e0 ldi r24, 0x06 ; 6 |
1c86: e0 cf rjmp .-64 ; 0x1c48 <__vector_24+0x258> |
1c88: 80 91 21 05 lds r24, 0x0521 |
1c8c: 90 91 22 05 lds r25, 0x0522 |
1c90: 20 91 78 00 lds r18, 0x0078 |
1c94: 30 91 79 00 lds r19, 0x0079 |
1c98: 82 1b sub r24, r18 |
1c9a: 93 0b sbc r25, r19 |
1c9c: 90 93 82 04 sts 0x0482, r25 |
1ca0: 80 93 81 04 sts 0x0481, r24 |
1ca4: 80 91 b3 01 lds r24, 0x01B3 |
1ca8: 90 91 b4 01 lds r25, 0x01B4 |
1cac: 20 91 81 04 lds r18, 0x0481 |
1cb0: 30 91 82 04 lds r19, 0x0482 |
1cb4: 82 0f add r24, r18 |
1cb6: 93 1f adc r25, r19 |
1cb8: 90 93 b4 01 sts 0x01B4, r25 |
1cbc: 80 93 b3 01 sts 0x01B3, r24 |
1cc0: 80 91 bd 01 lds r24, 0x01BD |
1cc4: 8f 5f subi r24, 0xFF ; 255 |
1cc6: 80 93 bd 01 sts 0x01BD, r24 |
1cca: 87 e0 ldi r24, 0x07 ; 7 |
1ccc: bd cf rjmp .-134 ; 0x1c48 <__vector_24+0x258> |
1cce: 80 91 78 00 lds r24, 0x0078 |
1cd2: 90 91 79 00 lds r25, 0x0079 |
1cd6: 20 91 1f 05 lds r18, 0x051F |
1cda: 30 91 20 05 lds r19, 0x0520 |
1cde: 82 1b sub r24, r18 |
1ce0: 93 0b sbc r25, r19 |
1ce2: 90 93 8d 04 sts 0x048D, r25 |
1ce6: 80 93 8c 04 sts 0x048C, r24 |
1cea: 80 91 b5 01 lds r24, 0x01B5 |
1cee: 90 91 b6 01 lds r25, 0x01B6 |
1cf2: 20 91 8c 04 lds r18, 0x048C |
1cf6: 30 91 8d 04 lds r19, 0x048D |
1cfa: 82 0f add r24, r18 |
1cfc: 93 1f adc r25, r19 |
1cfe: 90 93 b6 01 sts 0x01B6, r25 |
1d02: 80 93 b5 01 sts 0x01B5, r24 |
1d06: 80 91 bc 01 lds r24, 0x01BC |
1d0a: 8f 5f subi r24, 0xFF ; 255 |
1d0c: 80 93 bc 01 sts 0x01BC, r24 |
1d10: 85 e0 ldi r24, 0x05 ; 5 |
1d12: 80 93 c4 01 sts 0x01C4, r24 |
1d16: 86 e0 ldi r24, 0x06 ; 6 |
1d18: e4 c0 rjmp .+456 ; 0x1ee2 <__vector_24+0x4f2> |
1d1a: 60 91 78 00 lds r22, 0x0078 |
1d1e: 70 91 79 00 lds r23, 0x0079 |
1d22: e0 90 23 05 lds r14, 0x0523 |
1d26: f0 90 24 05 lds r15, 0x0524 |
1d2a: 00 91 25 05 lds r16, 0x0525 |
1d2e: 10 91 26 05 lds r17, 0x0526 |
1d32: 88 27 eor r24, r24 |
1d34: 77 fd sbrc r23, 7 |
1d36: 80 95 com r24 |
1d38: 98 2f mov r25, r24 |
1d3a: 0e 94 9d 2d call 0x5b3a ; 0x5b3a <__floatsisf> |
1d3e: a8 01 movw r20, r16 |
1d40: 97 01 movw r18, r14 |
1d42: 0e 94 f7 2c call 0x59ee ; 0x59ee <__subsf3> |
1d46: 0e 94 80 2d call 0x5b00 ; 0x5b00 <__fixsfsi> |
1d4a: 70 93 b8 01 sts 0x01B8, r23 |
1d4e: 60 93 b7 01 sts 0x01B7, r22 |
1d52: 20 91 b7 01 lds r18, 0x01B7 |
1d56: 30 91 b8 01 lds r19, 0x01B8 |
1d5a: e0 91 81 04 lds r30, 0x0481 |
1d5e: f0 91 82 04 lds r31, 0x0482 |
1d62: 80 91 8c 04 lds r24, 0x048C |
1d66: 90 91 8d 04 lds r25, 0x048D |
1d6a: 97 ff sbrs r25, 7 |
1d6c: 03 c0 rjmp .+6 ; 0x1d74 <__vector_24+0x384> |
1d6e: 90 95 com r25 |
1d70: 81 95 neg r24 |
1d72: 9f 4f sbci r25, 0xFF ; 255 |
1d74: 64 e0 ldi r22, 0x04 ; 4 |
1d76: 70 e0 ldi r23, 0x00 ; 0 |
1d78: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
1d7c: eb 01 movw r28, r22 |
1d7e: cf 01 movw r24, r30 |
1d80: f7 ff sbrs r31, 7 |
1d82: 03 c0 rjmp .+6 ; 0x1d8a <__vector_24+0x39a> |
1d84: 90 95 com r25 |
1d86: 81 95 neg r24 |
1d88: 9f 4f sbci r25, 0xFF ; 255 |
1d8a: 64 e0 ldi r22, 0x04 ; 4 |
1d8c: 70 e0 ldi r23, 0x00 ; 0 |
1d8e: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
1d92: 26 0f add r18, r22 |
1d94: 37 1f adc r19, r23 |
1d96: 2c 0f add r18, r28 |
1d98: 3d 1f adc r19, r29 |
1d9a: 30 93 b8 01 sts 0x01B8, r19 |
1d9e: 20 93 b7 01 sts 0x01B7, r18 |
1da2: 80 91 b7 01 lds r24, 0x01B7 |
1da6: 90 91 b8 01 lds r25, 0x01B8 |
1daa: 02 97 sbiw r24, 0x02 ; 2 |
1dac: 04 f1 brlt .+64 ; 0x1dee <__vector_24+0x3fe> |
1dae: 60 91 23 05 lds r22, 0x0523 |
1db2: 70 91 24 05 lds r23, 0x0524 |
1db6: 80 91 25 05 lds r24, 0x0525 |
1dba: 90 91 26 05 lds r25, 0x0526 |
1dbe: 20 e0 ldi r18, 0x00 ; 0 |
1dc0: 30 e0 ldi r19, 0x00 ; 0 |
1dc2: 48 e4 ldi r20, 0x48 ; 72 |
1dc4: 54 e4 ldi r21, 0x44 ; 68 |
1dc6: 0e 94 a7 2d call 0x5b4e ; 0x5b4e <__eqsf2> |
1dca: 88 23 and r24, r24 |
1dcc: 0c f0 brlt .+2 ; 0x1dd0 <__vector_24+0x3e0> |
1dce: 3c c0 rjmp .+120 ; 0x1e48 <__vector_24+0x458> |
1dd0: 60 91 23 05 lds r22, 0x0523 |
1dd4: 70 91 24 05 lds r23, 0x0524 |
1dd8: 80 91 25 05 lds r24, 0x0525 |
1ddc: 90 91 26 05 lds r25, 0x0526 |
1de0: 2a e0 ldi r18, 0x0A ; 10 |
1de2: 37 ed ldi r19, 0xD7 ; 215 |
1de4: 43 ea ldi r20, 0xA3 ; 163 |
1de6: 5c e3 ldi r21, 0x3C ; 60 |
1de8: 0e 94 f8 2c call 0x59f0 ; 0x59f0 <__addsf3> |
1dec: 25 c0 rjmp .+74 ; 0x1e38 <__vector_24+0x448> |
1dee: 80 91 b7 01 lds r24, 0x01B7 |
1df2: 90 91 b8 01 lds r25, 0x01B8 |
1df6: 8f 5f subi r24, 0xFF ; 255 |
1df8: 9f 4f sbci r25, 0xFF ; 255 |
1dfa: 34 f5 brge .+76 ; 0x1e48 <__vector_24+0x458> |
1dfc: 60 91 23 05 lds r22, 0x0523 |
1e00: 70 91 24 05 lds r23, 0x0524 |
1e04: 80 91 25 05 lds r24, 0x0525 |
1e08: 90 91 26 05 lds r25, 0x0526 |
1e0c: 20 e0 ldi r18, 0x00 ; 0 |
1e0e: 30 e0 ldi r19, 0x00 ; 0 |
1e10: 46 e1 ldi r20, 0x16 ; 22 |
1e12: 54 e4 ldi r21, 0x44 ; 68 |
1e14: 0e 94 aa 2d call 0x5b54 ; 0x5b54 <__gesf2> |
1e18: 18 16 cp r1, r24 |
1e1a: b4 f4 brge .+44 ; 0x1e48 <__vector_24+0x458> |
1e1c: 60 91 23 05 lds r22, 0x0523 |
1e20: 70 91 24 05 lds r23, 0x0524 |
1e24: 80 91 25 05 lds r24, 0x0525 |
1e28: 90 91 26 05 lds r25, 0x0526 |
1e2c: 2a e0 ldi r18, 0x0A ; 10 |
1e2e: 37 ed ldi r19, 0xD7 ; 215 |
1e30: 43 ea ldi r20, 0xA3 ; 163 |
1e32: 5c e3 ldi r21, 0x3C ; 60 |
1e34: 0e 94 f7 2c call 0x59ee ; 0x59ee <__subsf3> |
1e38: 60 93 23 05 sts 0x0523, r22 |
1e3c: 70 93 24 05 sts 0x0524, r23 |
1e40: 80 93 25 05 sts 0x0525, r24 |
1e44: 90 93 26 05 sts 0x0526, r25 |
1e48: 81 e0 ldi r24, 0x01 ; 1 |
1e4a: 80 93 be 01 sts 0x01BE, r24 |
1e4e: 80 91 78 00 lds r24, 0x0078 |
1e52: 90 91 79 00 lds r25, 0x0079 |
1e56: 90 93 84 04 sts 0x0484, r25 |
1e5a: 80 93 83 04 sts 0x0483, r24 |
1e5e: 20 91 07 02 lds r18, 0x0207 |
1e62: 30 91 08 02 lds r19, 0x0208 |
1e66: 40 91 09 02 lds r20, 0x0209 |
1e6a: 50 91 0a 02 lds r21, 0x020A |
1e6e: 80 91 b7 01 lds r24, 0x01B7 |
1e72: 90 91 b8 01 lds r25, 0x01B8 |
1e76: aa 27 eor r26, r26 |
1e78: 97 fd sbrc r25, 7 |
1e7a: a0 95 com r26 |
1e7c: ba 2f mov r27, r26 |
1e7e: 28 0f add r18, r24 |
1e80: 39 1f adc r19, r25 |
1e82: 4a 1f adc r20, r26 |
1e84: 5b 1f adc r21, r27 |
1e86: 20 93 07 02 sts 0x0207, r18 |
1e8a: 30 93 08 02 sts 0x0208, r19 |
1e8e: 40 93 09 02 sts 0x0209, r20 |
1e92: 50 93 0a 02 sts 0x020A, r21 |
1e96: e0 90 07 02 lds r14, 0x0207 |
1e9a: f0 90 08 02 lds r15, 0x0208 |
1e9e: 00 91 09 02 lds r16, 0x0209 |
1ea2: 10 91 0a 02 lds r17, 0x020A |
1ea6: 60 91 07 02 lds r22, 0x0207 |
1eaa: 70 91 08 02 lds r23, 0x0208 |
1eae: 80 91 09 02 lds r24, 0x0209 |
1eb2: 90 91 0a 02 lds r25, 0x020A |
1eb6: 20 e0 ldi r18, 0x00 ; 0 |
1eb8: 34 e0 ldi r19, 0x04 ; 4 |
1eba: 40 e0 ldi r20, 0x00 ; 0 |
1ebc: 50 e0 ldi r21, 0x00 ; 0 |
1ebe: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
1ec2: e2 1a sub r14, r18 |
1ec4: f3 0a sbc r15, r19 |
1ec6: 04 0b sbc r16, r20 |
1ec8: 15 0b sbc r17, r21 |
1eca: e0 92 07 02 sts 0x0207, r14 |
1ece: f0 92 08 02 sts 0x0208, r15 |
1ed2: 00 93 09 02 sts 0x0209, r16 |
1ed6: 10 93 0a 02 sts 0x020A, r17 |
1eda: 83 e0 ldi r24, 0x03 ; 3 |
1edc: 80 93 c4 01 sts 0x01C4, r24 |
1ee0: 87 e0 ldi r24, 0x07 ; 7 |
1ee2: 80 93 c3 01 sts 0x01C3, r24 |
1ee6: 7c c0 rjmp .+248 ; 0x1fe0 <__vector_24+0x5f0> |
1ee8: 80 91 91 04 lds r24, 0x0491 |
1eec: 90 91 92 04 lds r25, 0x0492 |
1ef0: 20 91 78 00 lds r18, 0x0078 |
1ef4: 30 91 79 00 lds r19, 0x0079 |
1ef8: 82 0f add r24, r18 |
1efa: 93 1f adc r25, r19 |
1efc: 90 93 92 04 sts 0x0492, r25 |
1f00: 80 93 91 04 sts 0x0491, r24 |
1f04: 80 91 89 04 lds r24, 0x0489 |
1f08: 8f 5f subi r24, 0xFF ; 255 |
1f0a: 80 93 89 04 sts 0x0489, r24 |
1f0e: 80 91 89 04 lds r24, 0x0489 |
1f12: 85 30 cpi r24, 0x05 ; 5 |
1f14: 08 f4 brcc .+2 ; 0x1f18 <__vector_24+0x528> |
1f16: 60 c0 rjmp .+192 ; 0x1fd8 <__vector_24+0x5e8> |
1f18: 80 91 78 00 lds r24, 0x0078 |
1f1c: 90 91 79 00 lds r25, 0x0079 |
1f20: 90 93 0b 01 sts 0x010B, r25 |
1f24: 80 93 0a 01 sts 0x010A, r24 |
1f28: 10 92 89 04 sts 0x0489, r1 |
1f2c: 80 91 85 04 lds r24, 0x0485 |
1f30: 90 91 86 04 lds r25, 0x0486 |
1f34: 20 91 91 04 lds r18, 0x0491 |
1f38: 30 91 92 04 lds r19, 0x0492 |
1f3c: 82 1b sub r24, r18 |
1f3e: 93 0b sbc r25, r19 |
1f40: 20 91 24 02 lds r18, 0x0224 |
1f44: 30 91 25 02 lds r19, 0x0225 |
1f48: 82 1b sub r24, r18 |
1f4a: 93 0b sbc r25, r19 |
1f4c: 90 93 c0 01 sts 0x01C0, r25 |
1f50: 80 93 bf 01 sts 0x01BF, r24 |
1f54: 60 91 91 04 lds r22, 0x0491 |
1f58: 70 91 92 04 lds r23, 0x0492 |
1f5c: e0 90 06 01 lds r14, 0x0106 |
1f60: f0 90 07 01 lds r15, 0x0107 |
1f64: 00 91 08 01 lds r16, 0x0108 |
1f68: 10 91 09 01 lds r17, 0x0109 |
1f6c: 88 27 eor r24, r24 |
1f6e: 77 fd sbrc r23, 7 |
1f70: 80 95 com r24 |
1f72: 98 2f mov r25, r24 |
1f74: a8 01 movw r20, r16 |
1f76: 97 01 movw r18, r14 |
1f78: 22 0f add r18, r18 |
1f7a: 33 1f adc r19, r19 |
1f7c: 44 1f adc r20, r20 |
1f7e: 55 1f adc r21, r21 |
1f80: 2e 0d add r18, r14 |
1f82: 3f 1d adc r19, r15 |
1f84: 40 1f adc r20, r16 |
1f86: 51 1f adc r21, r17 |
1f88: 62 0f add r22, r18 |
1f8a: 73 1f adc r23, r19 |
1f8c: 84 1f adc r24, r20 |
1f8e: 95 1f adc r25, r21 |
1f90: 24 e0 ldi r18, 0x04 ; 4 |
1f92: 30 e0 ldi r19, 0x00 ; 0 |
1f94: 40 e0 ldi r20, 0x00 ; 0 |
1f96: 50 e0 ldi r21, 0x00 ; 0 |
1f98: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
1f9c: 20 93 06 01 sts 0x0106, r18 |
1fa0: 30 93 07 01 sts 0x0107, r19 |
1fa4: 40 93 08 01 sts 0x0108, r20 |
1fa8: 50 93 09 01 sts 0x0109, r21 |
1fac: 20 91 85 04 lds r18, 0x0485 |
1fb0: 30 91 86 04 lds r19, 0x0486 |
1fb4: 80 91 06 01 lds r24, 0x0106 |
1fb8: 90 91 07 01 lds r25, 0x0107 |
1fbc: a0 91 08 01 lds r26, 0x0108 |
1fc0: b0 91 09 01 lds r27, 0x0109 |
1fc4: 28 1b sub r18, r24 |
1fc6: 39 0b sbc r19, r25 |
1fc8: 30 93 25 02 sts 0x0225, r19 |
1fcc: 20 93 24 02 sts 0x0224, r18 |
1fd0: 10 92 92 04 sts 0x0492, r1 |
1fd4: 10 92 91 04 sts 0x0491, r1 |
1fd8: 10 92 c4 01 sts 0x01C4, r1 |
1fdc: 10 92 c3 01 sts 0x01C3, r1 |
1fe0: 80 91 c4 01 lds r24, 0x01C4 |
1fe4: 80 93 7c 00 sts 0x007C, r24 |
1fe8: 8f ec ldi r24, 0xCF ; 207 |
1fea: 80 93 7a 00 sts 0x007A, r24 |
1fee: ff 91 pop r31 |
1ff0: ef 91 pop r30 |
1ff2: df 91 pop r29 |
1ff4: cf 91 pop r28 |
1ff6: bf 91 pop r27 |
1ff8: af 91 pop r26 |
1ffa: 9f 91 pop r25 |
1ffc: 8f 91 pop r24 |
1ffe: 7f 91 pop r23 |
2000: 6f 91 pop r22 |
2002: 5f 91 pop r21 |
2004: 4f 91 pop r20 |
2006: 3f 91 pop r19 |
2008: 2f 91 pop r18 |
200a: 1f 91 pop r17 |
200c: 0f 91 pop r16 |
200e: ff 90 pop r15 |
2010: ef 90 pop r14 |
2012: 0f 90 pop r0 |
2014: 0f be out 0x3f, r0 ; 63 |
2016: 0f 90 pop r0 |
2018: 1f 90 pop r1 |
201a: 18 95 reti |
0000201c <SucheLuftruckOffset>: |
201c: cf 93 push r28 |
201e: df 93 push r29 |
2020: a3 e0 ldi r26, 0x03 ; 3 |
2022: b0 e0 ldi r27, 0x00 ; 0 |
2024: 0e 94 1f 2f call 0x5e3e ; 0x5e3e <__eeprom_read_byte_1F2021> |
2028: 80 2d mov r24, r0 |
202a: c8 2f mov r28, r24 |
202c: dd 27 eor r29, r29 |
202e: c5 31 cpi r28, 0x15 ; 21 |
2030: d1 05 cpc r29, r1 |
2032: 08 f0 brcs .+2 ; 0x2036 <SucheLuftruckOffset+0x1a> |
2034: 2a 97 sbiw r28, 0x0a ; 10 |
2036: c7 bd out 0x27, r28 ; 39 |
2038: 84 e6 ldi r24, 0x64 ; 100 |
203a: 90 e0 ldi r25, 0x00 ; 0 |
203c: 0e 94 e0 0c call 0x19c0 ; 0x19c0 <Delay_ms> |
2040: 80 91 0a 01 lds r24, 0x010A |
2044: 90 91 0b 01 lds r25, 0x010B |
2048: 82 55 subi r24, 0x52 ; 82 |
204a: 93 40 sbci r25, 0x03 ; 3 |
204c: d0 f4 brcc .+52 ; 0x2082 <SucheLuftruckOffset+0x66> |
204e: c0 e0 ldi r28, 0x00 ; 0 |
2050: d0 e0 ldi r29, 0x00 ; 0 |
2052: 17 c0 rjmp .+46 ; 0x2082 <SucheLuftruckOffset+0x66> |
2054: c7 bd out 0x27, r28 ; 39 |
2056: 82 e3 ldi r24, 0x32 ; 50 |
2058: 90 e0 ldi r25, 0x00 ; 0 |
205a: 0e 94 e0 0c call 0x19c0 ; 0x19c0 <Delay_ms> |
205e: 8b ec ldi r24, 0xCB ; 203 |
2060: 91 e0 ldi r25, 0x01 ; 1 |
2062: 9f 93 push r25 |
2064: 8f 93 push r24 |
2066: 1f 92 push r1 |
2068: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
206c: 80 91 0a 01 lds r24, 0x010A |
2070: 90 91 0b 01 lds r25, 0x010B |
2074: 0f 90 pop r0 |
2076: 0f 90 pop r0 |
2078: 0f 90 pop r0 |
207a: 84 58 subi r24, 0x84 ; 132 |
207c: 93 40 sbci r25, 0x03 ; 3 |
207e: 20 f0 brcs .+8 ; 0x2088 <SucheLuftruckOffset+0x6c> |
2080: 21 96 adiw r28, 0x01 ; 1 |
2082: ca 3f cpi r28, 0xFA ; 250 |
2084: d1 05 cpc r29, r1 |
2086: 30 f3 brcs .-52 ; 0x2054 <SucheLuftruckOffset+0x38> |
2088: a3 e0 ldi r26, 0x03 ; 3 |
208a: b0 e0 ldi r27, 0x00 ; 0 |
208c: 0c 2e mov r0, r28 |
208e: 0e 94 2c 2f call 0x5e58 ; 0x5e58 <__eeprom_write_byte_1F2021> |
2092: c0 93 8e 04 sts 0x048E, r28 |
2096: 88 ec ldi r24, 0xC8 ; 200 |
2098: 90 e0 ldi r25, 0x00 ; 0 |
209a: 0e 94 e0 0c call 0x19c0 ; 0x19c0 <Delay_ms> |
209e: df 91 pop r29 |
20a0: cf 91 pop r28 |
20a2: 08 95 ret |
000020a4 <LcdClear>: |
20a4: e6 e1 ldi r30, 0x16 ; 22 |
20a6: f1 e0 ldi r31, 0x01 ; 1 |
20a8: 80 e2 ldi r24, 0x20 ; 32 |
20aa: 81 93 st Z+, r24 |
20ac: 91 e0 ldi r25, 0x01 ; 1 |
20ae: e6 36 cpi r30, 0x66 ; 102 |
20b0: f9 07 cpc r31, r25 |
20b2: d9 f7 brne .-10 ; 0x20aa <LcdClear+0x6> |
20b4: 08 95 ret |
000020b6 <Menu>: |
20b6: ff 92 push r15 |
20b8: 0f 93 push r16 |
20ba: 1f 93 push r17 |
20bc: 80 91 c8 01 lds r24, 0x01C8 |
20c0: 28 2f mov r18, r24 |
20c2: 33 27 eor r19, r19 |
20c4: c9 01 movw r24, r18 |
20c6: 81 70 andi r24, 0x01 ; 1 |
20c8: 90 70 andi r25, 0x00 ; 0 |
20ca: 68 2f mov r22, r24 |
20cc: 88 23 and r24, r24 |
20ce: 91 f0 breq .+36 ; 0x20f4 <Menu+0x3e> |
20d0: 80 91 c9 01 lds r24, 0x01C9 |
20d4: 88 23 and r24, r24 |
20d6: 11 f0 breq .+4 ; 0x20dc <Menu+0x26> |
20d8: 81 50 subi r24, 0x01 ; 1 |
20da: 02 c0 rjmp .+4 ; 0x20e0 <Menu+0x2a> |
20dc: 80 91 66 01 lds r24, 0x0166 |
20e0: 80 93 c9 01 sts 0x01C9, r24 |
20e4: e6 e1 ldi r30, 0x16 ; 22 |
20e6: f1 e0 ldi r31, 0x01 ; 1 |
20e8: 80 e2 ldi r24, 0x20 ; 32 |
20ea: 81 93 st Z+, r24 |
20ec: 91 e0 ldi r25, 0x01 ; 1 |
20ee: e6 36 cpi r30, 0x66 ; 102 |
20f0: f9 07 cpc r31, r25 |
20f2: d9 f7 brne .-10 ; 0x20ea <Menu+0x34> |
20f4: a9 01 movw r20, r18 |
20f6: 42 70 andi r20, 0x02 ; 2 |
20f8: 50 70 andi r21, 0x00 ; 0 |
20fa: 21 ff sbrs r18, 1 |
20fc: 0d c0 rjmp .+26 ; 0x2118 <Menu+0x62> |
20fe: 80 91 c9 01 lds r24, 0x01C9 |
2102: 8f 5f subi r24, 0xFF ; 255 |
2104: 80 93 c9 01 sts 0x01C9, r24 |
2108: e6 e1 ldi r30, 0x16 ; 22 |
210a: f1 e0 ldi r31, 0x01 ; 1 |
210c: 80 e2 ldi r24, 0x20 ; 32 |
210e: 81 93 st Z+, r24 |
2110: 91 e0 ldi r25, 0x01 ; 1 |
2112: e6 36 cpi r30, 0x66 ; 102 |
2114: f9 07 cpc r31, r25 |
2116: d9 f7 brne .-10 ; 0x210e <Menu+0x58> |
2118: 66 23 and r22, r22 |
211a: 21 f0 breq .+8 ; 0x2124 <Menu+0x6e> |
211c: 45 2b or r20, r21 |
211e: 11 f0 breq .+4 ; 0x2124 <Menu+0x6e> |
2120: 10 92 c9 01 sts 0x01C9, r1 |
2124: 81 e1 ldi r24, 0x11 ; 17 |
2126: 80 93 c7 01 sts 0x01C7, r24 |
212a: 80 91 c9 01 lds r24, 0x01C9 |
212e: 99 27 eor r25, r25 |
2130: 9f 93 push r25 |
2132: 8f 93 push r24 |
2134: 85 ea ldi r24, 0xA5 ; 165 |
2136: 94 e0 ldi r25, 0x04 ; 4 |
2138: 9f 93 push r25 |
213a: 8f 93 push r24 |
213c: 81 e0 ldi r24, 0x01 ; 1 |
213e: 8f 93 push r24 |
2140: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2144: 80 91 c9 01 lds r24, 0x01C9 |
2148: 0f 90 pop r0 |
214a: 0f 90 pop r0 |
214c: 0f 90 pop r0 |
214e: 0f 90 pop r0 |
2150: 0f 90 pop r0 |
2152: e8 2f mov r30, r24 |
2154: ff 27 eor r31, r31 |
2156: ed 30 cpi r30, 0x0D ; 13 |
2158: f1 05 cpc r31, r1 |
215a: 08 f0 brcs .+2 ; 0x215e <Menu+0xa8> |
215c: bc c3 rjmp .+1912 ; 0x28d6 <Menu+0x820> |
215e: ec 5a subi r30, 0xAC ; 172 |
2160: ff 4f sbci r31, 0xFF ; 255 |
2162: 0c 94 19 2f jmp 0x5e32 ; 0x5e32 <__tablejump2__> |
2166: 10 92 c7 01 sts 0x01C7, r1 |
216a: 83 e9 ldi r24, 0x93 ; 147 |
216c: 94 e0 ldi r25, 0x04 ; 4 |
216e: 9f 93 push r25 |
2170: 8f 93 push r24 |
2172: 11 e0 ldi r17, 0x01 ; 1 |
2174: 1f 93 push r17 |
2176: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
217a: 84 e1 ldi r24, 0x14 ; 20 |
217c: 80 93 c7 01 sts 0x01C7, r24 |
2180: 8c e3 ldi r24, 0x3C ; 60 |
2182: 90 e0 ldi r25, 0x00 ; 0 |
2184: 9f 93 push r25 |
2186: 8f 93 push r24 |
2188: 1f 92 push r1 |
218a: 1f 92 push r1 |
218c: 8c e8 ldi r24, 0x8C ; 140 |
218e: 94 e0 ldi r25, 0x04 ; 4 |
2190: 9f 93 push r25 |
2192: 8f 93 push r24 |
2194: 1f 93 push r17 |
2196: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
219a: 88 e2 ldi r24, 0x28 ; 40 |
219c: 80 93 c7 01 sts 0x01C7, r24 |
21a0: 0e 94 b1 03 call 0x762 ; 0x762 <GetActiveParamSetNumber> |
21a4: 99 27 eor r25, r25 |
21a6: 9f 93 push r25 |
21a8: 8f 93 push r24 |
21aa: 8f e7 ldi r24, 0x7F ; 127 |
21ac: 94 e0 ldi r25, 0x04 ; 4 |
21ae: 9f 93 push r25 |
21b0: 8f 93 push r24 |
21b2: 1f 93 push r17 |
21b4: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
21b8: 8c e3 ldi r24, 0x3C ; 60 |
21ba: 80 93 c7 01 sts 0x01C7, r24 |
21be: 8f e6 ldi r24, 0x6F ; 111 |
21c0: 94 e0 ldi r25, 0x04 ; 4 |
21c2: 9f 93 push r25 |
21c4: 8f 93 push r24 |
21c6: 1f 93 push r17 |
21c8: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
21cc: 80 c3 rjmp .+1792 ; 0x28ce <Menu+0x818> |
21ce: 80 91 e2 04 lds r24, 0x04E2 |
21d2: 80 ff sbrs r24, 0 |
21d4: 44 c0 rjmp .+136 ; 0x225e <Menu+0x1a8> |
21d6: 10 92 c7 01 sts 0x01C7, r1 |
21da: 80 91 24 02 lds r24, 0x0224 |
21de: 90 91 25 02 lds r25, 0x0225 |
21e2: 9f 93 push r25 |
21e4: 8f 93 push r24 |
21e6: 80 e6 ldi r24, 0x60 ; 96 |
21e8: 94 e0 ldi r25, 0x04 ; 4 |
21ea: 9f 93 push r25 |
21ec: 8f 93 push r24 |
21ee: 11 e0 ldi r17, 0x01 ; 1 |
21f0: 1f 93 push r17 |
21f2: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
21f6: 84 e1 ldi r24, 0x14 ; 20 |
21f8: 80 93 c7 01 sts 0x01C7, r24 |
21fc: 80 91 26 02 lds r24, 0x0226 |
2200: 90 91 27 02 lds r25, 0x0227 |
2204: 9f 93 push r25 |
2206: 8f 93 push r24 |
2208: 81 e5 ldi r24, 0x51 ; 81 |
220a: 94 e0 ldi r25, 0x04 ; 4 |
220c: 9f 93 push r25 |
220e: 8f 93 push r24 |
2210: 1f 93 push r17 |
2212: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2216: 88 e2 ldi r24, 0x28 ; 40 |
2218: 80 93 c7 01 sts 0x01C7, r24 |
221c: 80 91 0a 01 lds r24, 0x010A |
2220: 90 91 0b 01 lds r25, 0x010B |
2224: 9f 93 push r25 |
2226: 8f 93 push r24 |
2228: 82 e4 ldi r24, 0x42 ; 66 |
222a: 94 e0 ldi r25, 0x04 ; 4 |
222c: 9f 93 push r25 |
222e: 8f 93 push r24 |
2230: 1f 93 push r17 |
2232: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2236: 8c e3 ldi r24, 0x3C ; 60 |
2238: 80 93 c7 01 sts 0x01C7, r24 |
223c: 80 91 8e 04 lds r24, 0x048E |
2240: 99 27 eor r25, r25 |
2242: 9f 93 push r25 |
2244: 8f 93 push r24 |
2246: 83 e3 ldi r24, 0x33 ; 51 |
2248: 94 e0 ldi r25, 0x04 ; 4 |
224a: 9f 93 push r25 |
224c: 8f 93 push r24 |
224e: 1f 93 push r17 |
2250: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2254: 8d b7 in r24, 0x3d ; 61 |
2256: 9e b7 in r25, 0x3e ; 62 |
2258: 44 96 adiw r24, 0x14 ; 20 |
225a: 8d bf out 0x3d, r24 ; 61 |
225c: 41 c3 rjmp .+1666 ; 0x28e0 <Menu+0x82a> |
225e: 84 e1 ldi r24, 0x14 ; 20 |
2260: 80 93 c7 01 sts 0x01C7, r24 |
2264: 8c e2 ldi r24, 0x2C ; 44 |
2266: 94 e0 ldi r25, 0x04 ; 4 |
2268: 9f 93 push r25 |
226a: 8f 93 push r24 |
226c: 11 e0 ldi r17, 0x01 ; 1 |
226e: 1f 93 push r17 |
2270: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2274: 88 e2 ldi r24, 0x28 ; 40 |
2276: 80 93 c7 01 sts 0x01C7, r24 |
227a: 8e e1 ldi r24, 0x1E ; 30 |
227c: 94 e0 ldi r25, 0x04 ; 4 |
227e: 9f 93 push r25 |
2280: 8f 93 push r24 |
2282: 1f 93 push r17 |
2284: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2288: 8d b7 in r24, 0x3d ; 61 |
228a: 9e b7 in r25, 0x3e ; 62 |
228c: 06 96 adiw r24, 0x06 ; 6 |
228e: e5 cf rjmp .-54 ; 0x225a <Menu+0x1a4> |
2290: 10 92 c7 01 sts 0x01C7, r1 |
2294: 84 e1 ldi r24, 0x14 ; 20 |
2296: 94 e0 ldi r25, 0x04 ; 4 |
2298: 9f 93 push r25 |
229a: 8f 93 push r24 |
229c: 11 e0 ldi r17, 0x01 ; 1 |
229e: 1f 93 push r17 |
22a0: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
22a4: 84 e1 ldi r24, 0x14 ; 20 |
22a6: 80 93 c7 01 sts 0x01C7, r24 |
22aa: 60 91 db 01 lds r22, 0x01DB |
22ae: 70 91 dc 01 lds r23, 0x01DC |
22b2: 80 91 dd 01 lds r24, 0x01DD |
22b6: 90 91 de 01 lds r25, 0x01DE |
22ba: 20 e0 ldi r18, 0x00 ; 0 |
22bc: 34 e0 ldi r19, 0x04 ; 4 |
22be: 40 e0 ldi r20, 0x00 ; 0 |
22c0: 50 e0 ldi r21, 0x00 ; 0 |
22c2: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
22c6: 5f 93 push r21 |
22c8: 4f 93 push r20 |
22ca: 3f 93 push r19 |
22cc: 2f 93 push r18 |
22ce: 85 e0 ldi r24, 0x05 ; 5 |
22d0: 94 e0 ldi r25, 0x04 ; 4 |
22d2: 9f 93 push r25 |
22d4: 8f 93 push r24 |
22d6: 1f 93 push r17 |
22d8: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
22dc: 88 e2 ldi r24, 0x28 ; 40 |
22de: 80 93 c7 01 sts 0x01C7, r24 |
22e2: 60 91 e3 01 lds r22, 0x01E3 |
22e6: 70 91 e4 01 lds r23, 0x01E4 |
22ea: 80 91 e5 01 lds r24, 0x01E5 |
22ee: 90 91 e6 01 lds r25, 0x01E6 |
22f2: 20 e0 ldi r18, 0x00 ; 0 |
22f4: 34 e0 ldi r19, 0x04 ; 4 |
22f6: 40 e0 ldi r20, 0x00 ; 0 |
22f8: 50 e0 ldi r21, 0x00 ; 0 |
22fa: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
22fe: 5f 93 push r21 |
2300: 4f 93 push r20 |
2302: 3f 93 push r19 |
2304: 2f 93 push r18 |
2306: 86 ef ldi r24, 0xF6 ; 246 |
2308: 93 e0 ldi r25, 0x03 ; 3 |
230a: 9f 93 push r25 |
230c: 8f 93 push r24 |
230e: 1f 93 push r17 |
2310: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2314: 8c e3 ldi r24, 0x3C ; 60 |
2316: 80 93 c7 01 sts 0x01C7, r24 |
231a: 80 91 0b 02 lds r24, 0x020B |
231e: 90 91 0c 02 lds r25, 0x020C |
2322: 9f 93 push r25 |
2324: 8f 93 push r24 |
2326: 87 ee ldi r24, 0xE7 ; 231 |
2328: 93 e0 ldi r25, 0x03 ; 3 |
232a: 9f 93 push r25 |
232c: 8f 93 push r24 |
232e: 1f 93 push r17 |
2330: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2334: 8d b7 in r24, 0x3d ; 61 |
2336: 9e b7 in r25, 0x3e ; 62 |
2338: 46 96 adiw r24, 0x16 ; 22 |
233a: 8f cf rjmp .-226 ; 0x225a <Menu+0x1a4> |
233c: 10 92 c7 01 sts 0x01C7, r1 |
2340: 80 91 b2 04 lds r24, 0x04B2 |
2344: 90 91 b3 04 lds r25, 0x04B3 |
2348: 20 91 b0 04 lds r18, 0x04B0 |
234c: 30 91 b1 04 lds r19, 0x04B1 |
2350: 9f 93 push r25 |
2352: 8f 93 push r24 |
2354: 3f 93 push r19 |
2356: 2f 93 push r18 |
2358: 87 ed ldi r24, 0xD7 ; 215 |
235a: 93 e0 ldi r25, 0x03 ; 3 |
235c: 9f 93 push r25 |
235e: 8f 93 push r24 |
2360: 11 e0 ldi r17, 0x01 ; 1 |
2362: 1f 93 push r17 |
2364: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2368: 84 e1 ldi r24, 0x14 ; 20 |
236a: 80 93 c7 01 sts 0x01C7, r24 |
236e: 80 91 b6 04 lds r24, 0x04B6 |
2372: 90 91 b7 04 lds r25, 0x04B7 |
2376: 20 91 b4 04 lds r18, 0x04B4 |
237a: 30 91 b5 04 lds r19, 0x04B5 |
237e: 9f 93 push r25 |
2380: 8f 93 push r24 |
2382: 3f 93 push r19 |
2384: 2f 93 push r18 |
2386: 87 ec ldi r24, 0xC7 ; 199 |
2388: 93 e0 ldi r25, 0x03 ; 3 |
238a: 9f 93 push r25 |
238c: 8f 93 push r24 |
238e: 1f 93 push r17 |
2390: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2394: 88 e2 ldi r24, 0x28 ; 40 |
2396: 80 93 c7 01 sts 0x01C7, r24 |
239a: 80 91 ba 04 lds r24, 0x04BA |
239e: 90 91 bb 04 lds r25, 0x04BB |
23a2: 20 91 b8 04 lds r18, 0x04B8 |
23a6: 30 91 b9 04 lds r19, 0x04B9 |
23aa: 9f 93 push r25 |
23ac: 8f 93 push r24 |
23ae: 3f 93 push r19 |
23b0: 2f 93 push r18 |
23b2: 87 eb ldi r24, 0xB7 ; 183 |
23b4: 93 e0 ldi r25, 0x03 ; 3 |
23b6: 9f 93 push r25 |
23b8: 8f 93 push r24 |
23ba: 1f 93 push r17 |
23bc: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
23c0: 8c e3 ldi r24, 0x3C ; 60 |
23c2: 80 93 c7 01 sts 0x01C7, r24 |
23c6: 80 91 bc 04 lds r24, 0x04BC |
23ca: 90 91 bd 04 lds r25, 0x04BD |
23ce: 9f 93 push r25 |
23d0: 8f 93 push r24 |
23d2: 87 ea ldi r24, 0xA7 ; 167 |
23d4: 93 e0 ldi r25, 0x03 ; 3 |
23d6: 70 c0 rjmp .+224 ; 0x24b8 <Menu+0x402> |
23d8: 10 92 c7 01 sts 0x01C7, r1 |
23dc: e0 91 db 04 lds r30, 0x04DB |
23e0: ff 27 eor r31, r31 |
23e2: ee 0f add r30, r30 |
23e4: ff 1f adc r31, r31 |
23e6: e2 55 subi r30, 0x52 ; 82 |
23e8: fb 4f sbci r31, 0xFB ; 251 |
23ea: 20 81 ld r18, Z |
23ec: 31 81 ldd r19, Z+1 ; 0x01 |
23ee: e0 91 da 04 lds r30, 0x04DA |
23f2: ff 27 eor r31, r31 |
23f4: ee 0f add r30, r30 |
23f6: ff 1f adc r31, r31 |
23f8: e2 55 subi r30, 0x52 ; 82 |
23fa: fb 4f sbci r31, 0xFB ; 251 |
23fc: 80 81 ld r24, Z |
23fe: 91 81 ldd r25, Z+1 ; 0x01 |
2400: 3f 93 push r19 |
2402: 2f 93 push r18 |
2404: 9f 93 push r25 |
2406: 8f 93 push r24 |
2408: 87 e9 ldi r24, 0x97 ; 151 |
240a: 93 e0 ldi r25, 0x03 ; 3 |
240c: 9f 93 push r25 |
240e: 8f 93 push r24 |
2410: 11 e0 ldi r17, 0x01 ; 1 |
2412: 1f 93 push r17 |
2414: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2418: 84 e1 ldi r24, 0x14 ; 20 |
241a: 80 93 c7 01 sts 0x01C7, r24 |
241e: e0 91 dd 04 lds r30, 0x04DD |
2422: ff 27 eor r31, r31 |
2424: ee 0f add r30, r30 |
2426: ff 1f adc r31, r31 |
2428: e2 55 subi r30, 0x52 ; 82 |
242a: fb 4f sbci r31, 0xFB ; 251 |
242c: 20 81 ld r18, Z |
242e: 31 81 ldd r19, Z+1 ; 0x01 |
2430: e0 91 dc 04 lds r30, 0x04DC |
2434: ff 27 eor r31, r31 |
2436: ee 0f add r30, r30 |
2438: ff 1f adc r31, r31 |
243a: e2 55 subi r30, 0x52 ; 82 |
243c: fb 4f sbci r31, 0xFB ; 251 |
243e: 80 81 ld r24, Z |
2440: 91 81 ldd r25, Z+1 ; 0x01 |
2442: 3f 93 push r19 |
2444: 2f 93 push r18 |
2446: 9f 93 push r25 |
2448: 8f 93 push r24 |
244a: 87 e8 ldi r24, 0x87 ; 135 |
244c: 93 e0 ldi r25, 0x03 ; 3 |
244e: 9f 93 push r25 |
2450: 8f 93 push r24 |
2452: 1f 93 push r17 |
2454: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2458: 88 e2 ldi r24, 0x28 ; 40 |
245a: 80 93 c7 01 sts 0x01C7, r24 |
245e: e0 91 df 04 lds r30, 0x04DF |
2462: ff 27 eor r31, r31 |
2464: ee 0f add r30, r30 |
2466: ff 1f adc r31, r31 |
2468: e2 55 subi r30, 0x52 ; 82 |
246a: fb 4f sbci r31, 0xFB ; 251 |
246c: 20 81 ld r18, Z |
246e: 31 81 ldd r19, Z+1 ; 0x01 |
2470: e0 91 de 04 lds r30, 0x04DE |
2474: ff 27 eor r31, r31 |
2476: ee 0f add r30, r30 |
2478: ff 1f adc r31, r31 |
247a: e2 55 subi r30, 0x52 ; 82 |
247c: fb 4f sbci r31, 0xFB ; 251 |
247e: 80 81 ld r24, Z |
2480: 91 81 ldd r25, Z+1 ; 0x01 |
2482: 3f 93 push r19 |
2484: 2f 93 push r18 |
2486: 9f 93 push r25 |
2488: 8f 93 push r24 |
248a: 87 e7 ldi r24, 0x77 ; 119 |
248c: 93 e0 ldi r25, 0x03 ; 3 |
248e: 9f 93 push r25 |
2490: 8f 93 push r24 |
2492: 1f 93 push r17 |
2494: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2498: 8c e3 ldi r24, 0x3C ; 60 |
249a: 80 93 c7 01 sts 0x01C7, r24 |
249e: e0 91 e0 04 lds r30, 0x04E0 |
24a2: ff 27 eor r31, r31 |
24a4: ee 0f add r30, r30 |
24a6: ff 1f adc r31, r31 |
24a8: e2 55 subi r30, 0x52 ; 82 |
24aa: fb 4f sbci r31, 0xFB ; 251 |
24ac: 80 81 ld r24, Z |
24ae: 91 81 ldd r25, Z+1 ; 0x01 |
24b0: 9f 93 push r25 |
24b2: 8f 93 push r24 |
24b4: 87 e6 ldi r24, 0x67 ; 103 |
24b6: 93 e0 ldi r25, 0x03 ; 3 |
24b8: 9f 93 push r25 |
24ba: 8f 93 push r24 |
24bc: 1f 93 push r17 |
24be: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
24c2: 8d b7 in r24, 0x3d ; 61 |
24c4: 9e b7 in r25, 0x3e ; 62 |
24c6: 4a 96 adiw r24, 0x1a ; 26 |
24c8: c8 ce rjmp .-624 ; 0x225a <Menu+0x1a4> |
24ca: 10 92 c7 01 sts 0x01C7, r1 |
24ce: 89 e5 ldi r24, 0x59 ; 89 |
24d0: 93 e0 ldi r25, 0x03 ; 3 |
24d2: 9f 93 push r25 |
24d4: 8f 93 push r24 |
24d6: 11 e0 ldi r17, 0x01 ; 1 |
24d8: 1f 93 push r17 |
24da: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
24de: 84 e1 ldi r24, 0x14 ; 20 |
24e0: 80 93 c7 01 sts 0x01C7, r24 |
24e4: 20 91 d3 01 lds r18, 0x01D3 |
24e8: 30 91 d4 01 lds r19, 0x01D4 |
24ec: 80 91 ad 01 lds r24, 0x01AD |
24f0: 90 91 ae 01 lds r25, 0x01AE |
24f4: 60 91 b9 01 lds r22, 0x01B9 |
24f8: 3f 93 push r19 |
24fa: 2f 93 push r18 |
24fc: 77 27 eor r23, r23 |
24fe: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
2502: 7f 93 push r23 |
2504: 6f 93 push r22 |
2506: 8a e4 ldi r24, 0x4A ; 74 |
2508: 93 e0 ldi r25, 0x03 ; 3 |
250a: 9f 93 push r25 |
250c: 8f 93 push r24 |
250e: 1f 93 push r17 |
2510: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2514: 88 e2 ldi r24, 0x28 ; 40 |
2516: 80 93 c7 01 sts 0x01C7, r24 |
251a: 20 91 d5 01 lds r18, 0x01D5 |
251e: 30 91 d6 01 lds r19, 0x01D6 |
2522: 80 91 af 01 lds r24, 0x01AF |
2526: 90 91 b0 01 lds r25, 0x01B0 |
252a: 60 91 ba 01 lds r22, 0x01BA |
252e: 3f 93 push r19 |
2530: 2f 93 push r18 |
2532: 77 27 eor r23, r23 |
2534: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
2538: 7f 93 push r23 |
253a: 6f 93 push r22 |
253c: 8b e3 ldi r24, 0x3B ; 59 |
253e: 93 e0 ldi r25, 0x03 ; 3 |
2540: 9f 93 push r25 |
2542: 8f 93 push r24 |
2544: 1f 93 push r17 |
2546: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
254a: 8c e3 ldi r24, 0x3C ; 60 |
254c: 80 93 c7 01 sts 0x01C7, r24 |
2550: 20 91 d7 01 lds r18, 0x01D7 |
2554: 30 91 d8 01 lds r19, 0x01D8 |
2558: 80 91 b1 01 lds r24, 0x01B1 |
255c: 90 91 b2 01 lds r25, 0x01B2 |
2560: 60 91 bb 01 lds r22, 0x01BB |
2564: 3f 93 push r19 |
2566: 2f 93 push r18 |
2568: 77 27 eor r23, r23 |
256a: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
256e: 7f 93 push r23 |
2570: 6f 93 push r22 |
2572: 8c e2 ldi r24, 0x2C ; 44 |
2574: 93 e0 ldi r25, 0x03 ; 3 |
2576: 9f 93 push r25 |
2578: 8f 93 push r24 |
257a: 1f 93 push r17 |
257c: 5b c0 rjmp .+182 ; 0x2634 <Menu+0x57e> |
257e: 10 92 c7 01 sts 0x01C7, r1 |
2582: 8f e1 ldi r24, 0x1F ; 31 |
2584: 93 e0 ldi r25, 0x03 ; 3 |
2586: 9f 93 push r25 |
2588: 8f 93 push r24 |
258a: 81 e0 ldi r24, 0x01 ; 1 |
258c: f8 2e mov r15, r24 |
258e: ff 92 push r15 |
2590: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2594: 84 e1 ldi r24, 0x14 ; 20 |
2596: 80 93 c7 01 sts 0x01C7, r24 |
259a: 20 91 1f 05 lds r18, 0x051F |
259e: 30 91 20 05 lds r19, 0x0520 |
25a2: 80 91 b5 01 lds r24, 0x01B5 |
25a6: 90 91 b6 01 lds r25, 0x01B6 |
25aa: 60 91 bc 01 lds r22, 0x01BC |
25ae: 3f 93 push r19 |
25b0: 2f 93 push r18 |
25b2: 77 27 eor r23, r23 |
25b4: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
25b8: 7f 93 push r23 |
25ba: 6f 93 push r22 |
25bc: 80 e1 ldi r24, 0x10 ; 16 |
25be: 93 e0 ldi r25, 0x03 ; 3 |
25c0: 9f 93 push r25 |
25c2: 8f 93 push r24 |
25c4: ff 92 push r15 |
25c6: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
25ca: 88 e2 ldi r24, 0x28 ; 40 |
25cc: 80 93 c7 01 sts 0x01C7, r24 |
25d0: 20 91 21 05 lds r18, 0x0521 |
25d4: 30 91 22 05 lds r19, 0x0522 |
25d8: 80 91 b3 01 lds r24, 0x01B3 |
25dc: 90 91 b4 01 lds r25, 0x01B4 |
25e0: 60 91 bd 01 lds r22, 0x01BD |
25e4: 3f 93 push r19 |
25e6: 2f 93 push r18 |
25e8: 77 27 eor r23, r23 |
25ea: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
25ee: 7f 93 push r23 |
25f0: 6f 93 push r22 |
25f2: 81 e0 ldi r24, 0x01 ; 1 |
25f4: 93 e0 ldi r25, 0x03 ; 3 |
25f6: 9f 93 push r25 |
25f8: 8f 93 push r24 |
25fa: ff 92 push r15 |
25fc: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2600: 8c e3 ldi r24, 0x3C ; 60 |
2602: 80 93 c7 01 sts 0x01C7, r24 |
2606: 60 91 23 05 lds r22, 0x0523 |
260a: 70 91 24 05 lds r23, 0x0524 |
260e: 80 91 25 05 lds r24, 0x0525 |
2612: 90 91 26 05 lds r25, 0x0526 |
2616: 00 91 83 04 lds r16, 0x0483 |
261a: 10 91 84 04 lds r17, 0x0484 |
261e: 0e 94 80 2d call 0x5b00 ; 0x5b00 <__fixsfsi> |
2622: 7f 93 push r23 |
2624: 6f 93 push r22 |
2626: 1f 93 push r17 |
2628: 0f 93 push r16 |
262a: 82 ef ldi r24, 0xF2 ; 242 |
262c: 92 e0 ldi r25, 0x02 ; 2 |
262e: 9f 93 push r25 |
2630: 8f 93 push r24 |
2632: ff 92 push r15 |
2634: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2638: 8d b7 in r24, 0x3d ; 61 |
263a: 9e b7 in r25, 0x3e ; 62 |
263c: 48 96 adiw r24, 0x18 ; 24 |
263e: 0d ce rjmp .-998 ; 0x225a <Menu+0x1a4> |
2640: 84 e1 ldi r24, 0x14 ; 20 |
2642: 80 93 c7 01 sts 0x01C7, r24 |
2646: 80 91 04 01 lds r24, 0x0104 |
264a: 90 91 05 01 lds r25, 0x0105 |
264e: 9f 93 push r25 |
2650: 8f 93 push r24 |
2652: 83 ee ldi r24, 0xE3 ; 227 |
2654: 92 e0 ldi r25, 0x02 ; 2 |
2656: 9f 93 push r25 |
2658: 8f 93 push r24 |
265a: 11 e0 ldi r17, 0x01 ; 1 |
265c: 1f 93 push r17 |
265e: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2662: 88 e2 ldi r24, 0x28 ; 40 |
2664: 80 93 c7 01 sts 0x01C7, r24 |
2668: 80 91 1c 02 lds r24, 0x021C |
266c: 99 27 eor r25, r25 |
266e: 9f 93 push r25 |
2670: 8f 93 push r24 |
2672: 84 ed ldi r24, 0xD4 ; 212 |
2674: 92 e0 ldi r25, 0x02 ; 2 |
2676: 9f 93 push r25 |
2678: 8f 93 push r24 |
267a: 1f 93 push r17 |
267c: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2680: 8d b7 in r24, 0x3d ; 61 |
2682: 9e b7 in r25, 0x3e ; 62 |
2684: 0a 96 adiw r24, 0x0a ; 10 |
2686: e9 cd rjmp .-1070 ; 0x225a <Menu+0x1a4> |
2688: 10 92 c7 01 sts 0x01C7, r1 |
268c: 85 ec ldi r24, 0xC5 ; 197 |
268e: 92 e0 ldi r25, 0x02 ; 2 |
2690: 9f 93 push r25 |
2692: 8f 93 push r24 |
2694: 11 e0 ldi r17, 0x01 ; 1 |
2696: 1f 93 push r17 |
2698: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
269c: 84 e1 ldi r24, 0x14 ; 20 |
269e: 80 93 c7 01 sts 0x01C7, r24 |
26a2: 80 91 0f 02 lds r24, 0x020F |
26a6: 90 91 10 02 lds r25, 0x0210 |
26aa: 9f 93 push r25 |
26ac: 8f 93 push r24 |
26ae: 86 eb ldi r24, 0xB6 ; 182 |
26b0: 92 e0 ldi r25, 0x02 ; 2 |
26b2: 9f 93 push r25 |
26b4: 8f 93 push r24 |
26b6: 1f 93 push r17 |
26b8: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
26bc: 88 e2 ldi r24, 0x28 ; 40 |
26be: 80 93 c7 01 sts 0x01C7, r24 |
26c2: 80 91 0b 02 lds r24, 0x020B |
26c6: 90 91 0c 02 lds r25, 0x020C |
26ca: 9f 93 push r25 |
26cc: 8f 93 push r24 |
26ce: 87 ea ldi r24, 0xA7 ; 167 |
26d0: 92 e0 ldi r25, 0x02 ; 2 |
26d2: 9f 93 push r25 |
26d4: 8f 93 push r24 |
26d6: 1f 93 push r17 |
26d8: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
26dc: 8c e3 ldi r24, 0x3C ; 60 |
26de: 80 93 c7 01 sts 0x01C7, r24 |
26e2: 80 91 0d 02 lds r24, 0x020D |
26e6: 90 91 0e 02 lds r25, 0x020E |
26ea: 9f 93 push r25 |
26ec: 8f 93 push r24 |
26ee: 88 e9 ldi r24, 0x98 ; 152 |
26f0: 92 e0 ldi r25, 0x02 ; 2 |
26f2: e8 c0 rjmp .+464 ; 0x28c4 <Menu+0x80e> |
26f4: 10 92 c7 01 sts 0x01C7, r1 |
26f8: 80 91 14 02 lds r24, 0x0214 |
26fc: 90 91 15 02 lds r25, 0x0215 |
2700: 9f 93 push r25 |
2702: 8f 93 push r24 |
2704: 8c e8 ldi r24, 0x8C ; 140 |
2706: 92 e0 ldi r25, 0x02 ; 2 |
2708: 9f 93 push r25 |
270a: 8f 93 push r24 |
270c: 11 e0 ldi r17, 0x01 ; 1 |
270e: 1f 93 push r17 |
2710: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2714: 84 e1 ldi r24, 0x14 ; 20 |
2716: 80 93 c7 01 sts 0x01C7, r24 |
271a: 80 91 16 02 lds r24, 0x0216 |
271e: 90 91 17 02 lds r25, 0x0217 |
2722: 9f 93 push r25 |
2724: 8f 93 push r24 |
2726: 80 e8 ldi r24, 0x80 ; 128 |
2728: 92 e0 ldi r25, 0x02 ; 2 |
272a: 9f 93 push r25 |
272c: 8f 93 push r24 |
272e: 1f 93 push r17 |
2730: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2734: 88 e2 ldi r24, 0x28 ; 40 |
2736: 80 93 c7 01 sts 0x01C7, r24 |
273a: 80 91 18 02 lds r24, 0x0218 |
273e: 90 91 19 02 lds r25, 0x0219 |
2742: 9f 93 push r25 |
2744: 8f 93 push r24 |
2746: 84 e7 ldi r24, 0x74 ; 116 |
2748: 92 e0 ldi r25, 0x02 ; 2 |
274a: 9f 93 push r25 |
274c: 8f 93 push r24 |
274e: 1f 93 push r17 |
2750: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2754: 8c e3 ldi r24, 0x3C ; 60 |
2756: 80 93 c7 01 sts 0x01C7, r24 |
275a: 80 91 1a 02 lds r24, 0x021A |
275e: 90 91 1b 02 lds r25, 0x021B |
2762: 9f 93 push r25 |
2764: 8f 93 push r24 |
2766: 88 e6 ldi r24, 0x68 ; 104 |
2768: 92 e0 ldi r25, 0x02 ; 2 |
276a: 6f cd rjmp .-1314 ; 0x224a <Menu+0x194> |
276c: 10 92 c7 01 sts 0x01C7, r1 |
2770: 80 e6 ldi r24, 0x60 ; 96 |
2772: 92 e0 ldi r25, 0x02 ; 2 |
2774: 9f 93 push r25 |
2776: 8f 93 push r24 |
2778: 11 e0 ldi r17, 0x01 ; 1 |
277a: 1f 93 push r17 |
277c: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2780: 84 e1 ldi r24, 0x14 ; 20 |
2782: 80 93 c7 01 sts 0x01C7, r24 |
2786: 80 91 89 01 lds r24, 0x0189 |
278a: 99 27 eor r25, r25 |
278c: 9f 93 push r25 |
278e: 8f 93 push r24 |
2790: 82 e5 ldi r24, 0x52 ; 82 |
2792: 92 e0 ldi r25, 0x02 ; 2 |
2794: 9f 93 push r25 |
2796: 8f 93 push r24 |
2798: 1f 93 push r17 |
279a: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
279e: 88 e2 ldi r24, 0x28 ; 40 |
27a0: 80 93 c7 01 sts 0x01C7, r24 |
27a4: 80 91 a8 01 lds r24, 0x01A8 |
27a8: 90 91 a9 01 lds r25, 0x01A9 |
27ac: 9f 93 push r25 |
27ae: 8f 93 push r24 |
27b0: 84 e4 ldi r24, 0x44 ; 68 |
27b2: 92 e0 ldi r25, 0x02 ; 2 |
27b4: 9f 93 push r25 |
27b6: 8f 93 push r24 |
27b8: 1f 93 push r17 |
27ba: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
27be: 8c e3 ldi r24, 0x3C ; 60 |
27c0: 80 93 c7 01 sts 0x01C7, r24 |
27c4: 80 91 fe 04 lds r24, 0x04FE |
27c8: 99 27 eor r25, r25 |
27ca: 9f 93 push r25 |
27cc: 8f 93 push r24 |
27ce: 80 91 fd 04 lds r24, 0x04FD |
27d2: 99 27 eor r25, r25 |
27d4: 9f 93 push r25 |
27d6: 8f 93 push r24 |
27d8: 86 e3 ldi r24, 0x36 ; 54 |
27da: 92 e0 ldi r25, 0x02 ; 2 |
27dc: 9f 93 push r25 |
27de: 8f 93 push r24 |
27e0: 1f 93 push r17 |
27e2: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
27e6: 36 cd rjmp .-1428 ; 0x2254 <Menu+0x19e> |
27e8: 10 92 c7 01 sts 0x01C7, r1 |
27ec: 8e e2 ldi r24, 0x2E ; 46 |
27ee: 92 e0 ldi r25, 0x02 ; 2 |
27f0: 9f 93 push r25 |
27f2: 8f 93 push r24 |
27f4: 11 e0 ldi r17, 0x01 ; 1 |
27f6: 1f 93 push r17 |
27f8: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
27fc: 84 e1 ldi r24, 0x14 ; 20 |
27fe: 80 93 c7 01 sts 0x01C7, r24 |
2802: 80 91 93 04 lds r24, 0x0493 |
2806: 99 27 eor r25, r25 |
2808: 87 fd sbrc r24, 7 |
280a: 90 95 com r25 |
280c: 9f 93 push r25 |
280e: 8f 93 push r24 |
2810: 8f e1 ldi r24, 0x1F ; 31 |
2812: 92 e0 ldi r25, 0x02 ; 2 |
2814: 9f 93 push r25 |
2816: 8f 93 push r24 |
2818: 1f 93 push r17 |
281a: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
281e: 88 e2 ldi r24, 0x28 ; 40 |
2820: 80 93 c7 01 sts 0x01C7, r24 |
2824: 80 91 94 04 lds r24, 0x0494 |
2828: 99 27 eor r25, r25 |
282a: 87 fd sbrc r24, 7 |
282c: 90 95 com r25 |
282e: 9f 93 push r25 |
2830: 8f 93 push r24 |
2832: 80 e1 ldi r24, 0x10 ; 16 |
2834: 92 e0 ldi r25, 0x02 ; 2 |
2836: 9f 93 push r25 |
2838: 8f 93 push r24 |
283a: 1f 93 push r17 |
283c: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
2840: 8c e3 ldi r24, 0x3C ; 60 |
2842: 80 93 c7 01 sts 0x01C7, r24 |
2846: 80 91 95 04 lds r24, 0x0495 |
284a: 99 27 eor r25, r25 |
284c: 87 fd sbrc r24, 7 |
284e: 90 95 com r25 |
2850: 9f 93 push r25 |
2852: 8f 93 push r24 |
2854: 81 e0 ldi r24, 0x01 ; 1 |
2856: 92 e0 ldi r25, 0x02 ; 2 |
2858: 35 c0 rjmp .+106 ; 0x28c4 <Menu+0x80e> |
285a: 10 92 c7 01 sts 0x01C7, r1 |
285e: 87 ef ldi r24, 0xF7 ; 247 |
2860: 91 e0 ldi r25, 0x01 ; 1 |
2862: 9f 93 push r25 |
2864: 8f 93 push r24 |
2866: 11 e0 ldi r17, 0x01 ; 1 |
2868: 1f 93 push r17 |
286a: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
286e: 84 e1 ldi r24, 0x14 ; 20 |
2870: 80 93 c7 01 sts 0x01C7, r24 |
2874: 80 91 96 04 lds r24, 0x0496 |
2878: 90 91 97 04 lds r25, 0x0497 |
287c: 9f 93 push r25 |
287e: 8f 93 push r24 |
2880: 89 ee ldi r24, 0xE9 ; 233 |
2882: 91 e0 ldi r25, 0x01 ; 1 |
2884: 9f 93 push r25 |
2886: 8f 93 push r24 |
2888: 1f 93 push r17 |
288a: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
288e: 88 e2 ldi r24, 0x28 ; 40 |
2890: 80 93 c7 01 sts 0x01C7, r24 |
2894: 80 91 98 04 lds r24, 0x0498 |
2898: 90 91 99 04 lds r25, 0x0499 |
289c: 9f 93 push r25 |
289e: 8f 93 push r24 |
28a0: 8b ed ldi r24, 0xDB ; 219 |
28a2: 91 e0 ldi r25, 0x01 ; 1 |
28a4: 9f 93 push r25 |
28a6: 8f 93 push r24 |
28a8: 1f 93 push r17 |
28aa: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
28ae: 8c e3 ldi r24, 0x3C ; 60 |
28b0: 80 93 c7 01 sts 0x01C7, r24 |
28b4: 80 91 9a 04 lds r24, 0x049A |
28b8: 90 91 9b 04 lds r25, 0x049B |
28bc: 9f 93 push r25 |
28be: 8f 93 push r24 |
28c0: 8d ec ldi r24, 0xCD ; 205 |
28c2: 91 e0 ldi r25, 0x01 ; 1 |
28c4: 9f 93 push r25 |
28c6: 8f 93 push r24 |
28c8: 1f 93 push r17 |
28ca: 0e 94 24 09 call 0x1248 ; 0x1248 <_printf_P> |
28ce: 8d b7 in r24, 0x3d ; 61 |
28d0: 9e b7 in r25, 0x3e ; 62 |
28d2: 42 96 adiw r24, 0x12 ; 18 |
28d4: c2 cc rjmp .-1660 ; 0x225a <Menu+0x1a4> |
28d6: 81 50 subi r24, 0x01 ; 1 |
28d8: 80 93 66 01 sts 0x0166, r24 |
28dc: 10 92 c9 01 sts 0x01C9, r1 |
28e0: 10 92 c8 01 sts 0x01C8, r1 |
28e4: 1f 91 pop r17 |
28e6: 0f 91 pop r16 |
28e8: ff 90 pop r15 |
28ea: 08 95 ret |
000028ec <__vector_19>: |
28ec: 1f 92 push r1 |
28ee: 0f 92 push r0 |
28f0: 0f b6 in r0, 0x3f ; 63 |
28f2: 0f 92 push r0 |
28f4: 11 24 eor r1, r1 |
28f6: 2f 93 push r18 |
28f8: 3f 93 push r19 |
28fa: 4f 93 push r20 |
28fc: 8f 93 push r24 |
28fe: 9f 93 push r25 |
2900: 80 91 9c 04 lds r24, 0x049C |
2904: 83 30 cpi r24, 0x03 ; 3 |
2906: 19 f0 breq .+6 ; 0x290e <__vector_19+0x22> |
2908: 84 30 cpi r24, 0x04 ; 4 |
290a: a1 f5 brne .+104 ; 0x2974 <__vector_19+0x88> |
290c: 08 c0 rjmp .+16 ; 0x291e <__vector_19+0x32> |
290e: 8e b5 in r24, 0x2e ; 46 |
2910: 80 93 ca 01 sts 0x01CA, r24 |
2914: 1e bc out 0x2e, r1 ; 46 |
2916: 84 e0 ldi r24, 0x04 ; 4 |
2918: 80 93 9c 04 sts 0x049C, r24 |
291c: 2b c0 rjmp .+86 ; 0x2974 <__vector_19+0x88> |
291e: 80 91 ca 01 lds r24, 0x01CA |
2922: 99 27 eor r25, r25 |
2924: 38 2f mov r19, r24 |
2926: 22 27 eor r18, r18 |
2928: 8e b5 in r24, 0x2e ; 46 |
292a: 99 27 eor r25, r25 |
292c: 28 2b or r18, r24 |
292e: 39 2b or r19, r25 |
2930: c9 01 movw r24, r18 |
2932: 8d 50 subi r24, 0x0D ; 13 |
2934: 9e 4f sbci r25, 0xFE ; 254 |
2936: 87 5e subi r24, 0xE7 ; 231 |
2938: 93 40 sbci r25, 0x03 ; 3 |
293a: d0 f4 brcc .+52 ; 0x2970 <__vector_19+0x84> |
293c: 80 91 9f 04 lds r24, 0x049F |
2940: 85 30 cpi r24, 0x05 ; 5 |
2942: 19 f0 breq .+6 ; 0x294a <__vector_19+0x5e> |
2944: 86 30 cpi r24, 0x06 ; 6 |
2946: 69 f4 brne .+26 ; 0x2962 <__vector_19+0x76> |
2948: 06 c0 rjmp .+12 ; 0x2956 <__vector_19+0x6a> |
294a: 30 93 a1 04 sts 0x04A1, r19 |
294e: 20 93 a0 04 sts 0x04A0, r18 |
2952: 86 e0 ldi r24, 0x06 ; 6 |
2954: 0b c0 rjmp .+22 ; 0x296c <__vector_19+0x80> |
2956: 30 93 a3 04 sts 0x04A3, r19 |
295a: 20 93 a2 04 sts 0x04A2, r18 |
295e: 87 e0 ldi r24, 0x07 ; 7 |
2960: 05 c0 rjmp .+10 ; 0x296c <__vector_19+0x80> |
2962: 30 93 a5 04 sts 0x04A5, r19 |
2966: 20 93 a4 04 sts 0x04A4, r18 |
296a: 85 e0 ldi r24, 0x05 ; 5 |
296c: 80 93 9f 04 sts 0x049F, r24 |
2970: 10 92 9c 04 sts 0x049C, r1 |
2974: 9f 91 pop r25 |
2976: 8f 91 pop r24 |
2978: 4f 91 pop r20 |
297a: 3f 91 pop r19 |
297c: 2f 91 pop r18 |
297e: 0f 90 pop r0 |
2980: 0f be out 0x3f, r0 ; 63 |
2982: 0f 90 pop r0 |
2984: 1f 90 pop r1 |
2986: 18 95 reti |
00002988 <heading_MM3>: |
2988: a0 e1 ldi r26, 0x10 ; 16 |
298a: b0 e0 ldi r27, 0x00 ; 0 |
298c: ea ec ldi r30, 0xCA ; 202 |
298e: f4 e1 ldi r31, 0x14 ; 20 |
2990: 0c 94 e2 2e jmp 0x5dc4 ; 0x5dc4 <__prologue_saves__> |
2994: 60 91 db 01 lds r22, 0x01DB |
2998: 70 91 dc 01 lds r23, 0x01DC |
299c: 80 91 dd 01 lds r24, 0x01DD |
29a0: 90 91 de 01 lds r25, 0x01DE |
29a4: e0 90 f7 04 lds r14, 0x04F7 |
29a8: ff 24 eor r15, r15 |
29aa: 33 e0 ldi r19, 0x03 ; 3 |
29ac: ee 0c add r14, r14 |
29ae: ff 1c adc r15, r15 |
29b0: 3a 95 dec r19 |
29b2: e1 f7 brne .-8 ; 0x29ac <heading_MM3+0x24> |
29b4: 00 27 eor r16, r16 |
29b6: 11 27 eor r17, r17 |
29b8: a8 01 movw r20, r16 |
29ba: 97 01 movw r18, r14 |
29bc: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
29c0: 59 01 movw r10, r18 |
29c2: 6a 01 movw r12, r20 |
29c4: c9 01 movw r24, r18 |
29c6: 0e 94 de 17 call 0x2fbc ; 0x2fbc <sin_f> |
29ca: 6d 87 std Y+13, r22 ; 0x0d |
29cc: 7e 87 std Y+14, r23 ; 0x0e |
29ce: 8f 87 std Y+15, r24 ; 0x0f |
29d0: 98 8b std Y+16, r25 ; 0x10 |
29d2: c5 01 movw r24, r10 |
29d4: 0e 94 3e 18 call 0x307c ; 0x307c <cos_f> |
29d8: 69 87 std Y+9, r22 ; 0x09 |
29da: 7a 87 std Y+10, r23 ; 0x0a |
29dc: 8b 87 std Y+11, r24 ; 0x0b |
29de: 9c 87 std Y+12, r25 ; 0x0c |
29e0: 60 91 e3 01 lds r22, 0x01E3 |
29e4: 70 91 e4 01 lds r23, 0x01E4 |
29e8: 80 91 e5 01 lds r24, 0x01E5 |
29ec: 90 91 e6 01 lds r25, 0x01E6 |
29f0: a8 01 movw r20, r16 |
29f2: 97 01 movw r18, r14 |
29f4: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
29f8: 79 01 movw r14, r18 |
29fa: 8a 01 movw r16, r20 |
29fc: c9 01 movw r24, r18 |
29fe: 0e 94 de 17 call 0x2fbc ; 0x2fbc <sin_f> |
2a02: 6d 83 std Y+5, r22 ; 0x05 |
2a04: 7e 83 std Y+6, r23 ; 0x06 |
2a06: 8f 83 std Y+7, r24 ; 0x07 |
2a08: 98 87 std Y+8, r25 ; 0x08 |
2a0a: c7 01 movw r24, r14 |
2a0c: 0e 94 3e 18 call 0x307c ; 0x307c <cos_f> |
2a10: 69 83 std Y+1, r22 ; 0x01 |
2a12: 7a 83 std Y+2, r23 ; 0x02 |
2a14: 8b 83 std Y+3, r24 ; 0x03 |
2a16: 9c 83 std Y+4, r25 ; 0x04 |
2a18: a0 90 a0 04 lds r10, 0x04A0 |
2a1c: b0 90 a1 04 lds r11, 0x04A1 |
2a20: 80 91 93 04 lds r24, 0x0493 |
2a24: 99 27 eor r25, r25 |
2a26: 87 fd sbrc r24, 7 |
2a28: 90 95 com r25 |
2a2a: a8 1a sub r10, r24 |
2a2c: b9 0a sbc r11, r25 |
2a2e: 80 90 a2 04 lds r8, 0x04A2 |
2a32: 90 90 a3 04 lds r9, 0x04A3 |
2a36: 80 91 94 04 lds r24, 0x0494 |
2a3a: 99 27 eor r25, r25 |
2a3c: 87 fd sbrc r24, 7 |
2a3e: 90 95 com r25 |
2a40: 88 1a sub r8, r24 |
2a42: 99 0a sbc r9, r25 |
2a44: 40 90 a4 04 lds r4, 0x04A4 |
2a48: 50 90 a5 04 lds r5, 0x04A5 |
2a4c: 80 91 95 04 lds r24, 0x0495 |
2a50: 99 27 eor r25, r25 |
2a52: 87 fd sbrc r24, 7 |
2a54: 90 95 com r25 |
2a56: 48 1a sub r4, r24 |
2a58: 59 0a sbc r5, r25 |
2a5a: 20 90 96 04 lds r2, 0x0496 |
2a5e: 30 90 97 04 lds r3, 0x0497 |
2a62: c0 90 98 04 lds r12, 0x0498 |
2a66: d0 90 99 04 lds r13, 0x0499 |
2a6a: c2 14 cp r12, r2 |
2a6c: d3 04 cpc r13, r3 |
2a6e: d0 f4 brcc .+52 ; 0x2aa4 <heading_MM3+0x11c> |
2a70: 60 90 9a 04 lds r6, 0x049A |
2a74: 70 90 9b 04 lds r7, 0x049B |
2a78: 62 14 cp r6, r2 |
2a7a: 73 04 cpc r7, r3 |
2a7c: 98 f4 brcc .+38 ; 0x2aa4 <heading_MM3+0x11c> |
2a7e: 71 01 movw r14, r2 |
2a80: 00 27 eor r16, r16 |
2a82: 11 27 eor r17, r17 |
2a84: b4 01 movw r22, r8 |
2a86: 88 27 eor r24, r24 |
2a88: 77 fd sbrc r23, 7 |
2a8a: 80 95 com r24 |
2a8c: 98 2f mov r25, r24 |
2a8e: a8 01 movw r20, r16 |
2a90: 97 01 movw r18, r14 |
2a92: 0e 94 5f 2e call 0x5cbe ; 0x5cbe <__mulsi3> |
2a96: 96 01 movw r18, r12 |
2a98: 44 27 eor r20, r20 |
2a9a: 55 27 eor r21, r21 |
2a9c: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
2aa0: 49 01 movw r8, r18 |
2aa2: 1c c0 rjmp .+56 ; 0x2adc <heading_MM3+0x154> |
2aa4: 2c 14 cp r2, r12 |
2aa6: 3d 04 cpc r3, r13 |
2aa8: 48 f5 brcc .+82 ; 0x2afc <heading_MM3+0x174> |
2aaa: 60 90 9a 04 lds r6, 0x049A |
2aae: 70 90 9b 04 lds r7, 0x049B |
2ab2: 6c 14 cp r6, r12 |
2ab4: 7d 04 cpc r7, r13 |
2ab6: 10 f5 brcc .+68 ; 0x2afc <heading_MM3+0x174> |
2ab8: 76 01 movw r14, r12 |
2aba: 00 27 eor r16, r16 |
2abc: 11 27 eor r17, r17 |
2abe: b5 01 movw r22, r10 |
2ac0: 88 27 eor r24, r24 |
2ac2: 77 fd sbrc r23, 7 |
2ac4: 80 95 com r24 |
2ac6: 98 2f mov r25, r24 |
2ac8: a8 01 movw r20, r16 |
2aca: 97 01 movw r18, r14 |
2acc: 0e 94 5f 2e call 0x5cbe ; 0x5cbe <__mulsi3> |
2ad0: 91 01 movw r18, r2 |
2ad2: 44 27 eor r20, r20 |
2ad4: 55 27 eor r21, r21 |
2ad6: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
2ada: 59 01 movw r10, r18 |
2adc: b2 01 movw r22, r4 |
2ade: 88 27 eor r24, r24 |
2ae0: 77 fd sbrc r23, 7 |
2ae2: 80 95 com r24 |
2ae4: 98 2f mov r25, r24 |
2ae6: a8 01 movw r20, r16 |
2ae8: 97 01 movw r18, r14 |
2aea: 0e 94 5f 2e call 0x5cbe ; 0x5cbe <__mulsi3> |
2aee: 93 01 movw r18, r6 |
2af0: 44 27 eor r20, r20 |
2af2: 55 27 eor r21, r21 |
2af4: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
2af8: 29 01 movw r4, r18 |
2afa: 24 c0 rjmp .+72 ; 0x2b44 <heading_MM3+0x1bc> |
2afc: e0 90 9a 04 lds r14, 0x049A |
2b00: f0 90 9b 04 lds r15, 0x049B |
2b04: 00 27 eor r16, r16 |
2b06: 11 27 eor r17, r17 |
2b08: b5 01 movw r22, r10 |
2b0a: 88 27 eor r24, r24 |
2b0c: 77 fd sbrc r23, 7 |
2b0e: 80 95 com r24 |
2b10: 98 2f mov r25, r24 |
2b12: a8 01 movw r20, r16 |
2b14: 97 01 movw r18, r14 |
2b16: 0e 94 5f 2e call 0x5cbe ; 0x5cbe <__mulsi3> |
2b1a: 91 01 movw r18, r2 |
2b1c: 44 27 eor r20, r20 |
2b1e: 55 27 eor r21, r21 |
2b20: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
2b24: 59 01 movw r10, r18 |
2b26: b4 01 movw r22, r8 |
2b28: 88 27 eor r24, r24 |
2b2a: 77 fd sbrc r23, 7 |
2b2c: 80 95 com r24 |
2b2e: 98 2f mov r25, r24 |
2b30: a8 01 movw r20, r16 |
2b32: 97 01 movw r18, r14 |
2b34: 0e 94 5f 2e call 0x5cbe ; 0x5cbe <__mulsi3> |
2b38: 96 01 movw r18, r12 |
2b3a: 44 27 eor r20, r20 |
2b3c: 55 27 eor r21, r21 |
2b3e: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
2b42: 49 01 movw r8, r18 |
2b44: b0 92 73 04 sts 0x0473, r11 |
2b48: a0 92 72 04 sts 0x0472, r10 |
2b4c: 90 92 75 04 sts 0x0475, r9 |
2b50: 80 92 74 04 sts 0x0474, r8 |
2b54: 50 92 77 04 sts 0x0477, r5 |
2b58: 40 92 76 04 sts 0x0476, r4 |
2b5c: b5 01 movw r22, r10 |
2b5e: 88 27 eor r24, r24 |
2b60: 77 fd sbrc r23, 7 |
2b62: 80 95 com r24 |
2b64: 98 2f mov r25, r24 |
2b66: 0e 94 9d 2d call 0x5b3a ; 0x5b3a <__floatsisf> |
2b6a: 29 85 ldd r18, Y+9 ; 0x09 |
2b6c: 3a 85 ldd r19, Y+10 ; 0x0a |
2b6e: 4b 85 ldd r20, Y+11 ; 0x0b |
2b70: 5c 85 ldd r21, Y+12 ; 0x0c |
2b72: 0e 94 17 2e call 0x5c2e ; 0x5c2e <__mulsf3> |
2b76: 5b 01 movw r10, r22 |
2b78: 6c 01 movw r12, r24 |
2b7a: b4 01 movw r22, r8 |
2b7c: 88 27 eor r24, r24 |
2b7e: 77 fd sbrc r23, 7 |
2b80: 80 95 com r24 |
2b82: 98 2f mov r25, r24 |
2b84: 0e 94 9d 2d call 0x5b3a ; 0x5b3a <__floatsisf> |
2b88: 7b 01 movw r14, r22 |
2b8a: 8c 01 movw r16, r24 |
2b8c: 2d 81 ldd r18, Y+5 ; 0x05 |
2b8e: 3e 81 ldd r19, Y+6 ; 0x06 |
2b90: 4f 81 ldd r20, Y+7 ; 0x07 |
2b92: 58 85 ldd r21, Y+8 ; 0x08 |
2b94: 0e 94 17 2e call 0x5c2e ; 0x5c2e <__mulsf3> |
2b98: 2d 85 ldd r18, Y+13 ; 0x0d |
2b9a: 3e 85 ldd r19, Y+14 ; 0x0e |
2b9c: 4f 85 ldd r20, Y+15 ; 0x0f |
2b9e: 58 89 ldd r21, Y+16 ; 0x10 |
2ba0: 0e 94 17 2e call 0x5c2e ; 0x5c2e <__mulsf3> |
2ba4: 9b 01 movw r18, r22 |
2ba6: ac 01 movw r20, r24 |
2ba8: c6 01 movw r24, r12 |
2baa: b5 01 movw r22, r10 |
2bac: 0e 94 f8 2c call 0x59f0 ; 0x59f0 <__addsf3> |
2bb0: 3b 01 movw r6, r22 |
2bb2: 4c 01 movw r8, r24 |
2bb4: b2 01 movw r22, r4 |
2bb6: 88 27 eor r24, r24 |
2bb8: 77 fd sbrc r23, 7 |
2bba: 80 95 com r24 |
2bbc: 98 2f mov r25, r24 |
2bbe: 0e 94 9d 2d call 0x5b3a ; 0x5b3a <__floatsisf> |
2bc2: 5b 01 movw r10, r22 |
2bc4: 6c 01 movw r12, r24 |
2bc6: 29 81 ldd r18, Y+1 ; 0x01 |
2bc8: 3a 81 ldd r19, Y+2 ; 0x02 |
2bca: 4b 81 ldd r20, Y+3 ; 0x03 |
2bcc: 5c 81 ldd r21, Y+4 ; 0x04 |
2bce: c8 01 movw r24, r16 |
2bd0: b7 01 movw r22, r14 |
2bd2: 0e 94 17 2e call 0x5c2e ; 0x5c2e <__mulsf3> |
2bd6: 7b 01 movw r14, r22 |
2bd8: 8c 01 movw r16, r24 |
2bda: 2d 81 ldd r18, Y+5 ; 0x05 |
2bdc: 3e 81 ldd r19, Y+6 ; 0x06 |
2bde: 4f 81 ldd r20, Y+7 ; 0x07 |
2be0: 58 85 ldd r21, Y+8 ; 0x08 |
2be2: c6 01 movw r24, r12 |
2be4: b5 01 movw r22, r10 |
2be6: 0e 94 17 2e call 0x5c2e ; 0x5c2e <__mulsf3> |
2bea: 9b 01 movw r18, r22 |
2bec: ac 01 movw r20, r24 |
2bee: c8 01 movw r24, r16 |
2bf0: b7 01 movw r22, r14 |
2bf2: 0e 94 f8 2c call 0x59f0 ; 0x59f0 <__addsf3> |
2bf6: 0e 94 80 2d call 0x5b00 ; 0x5b00 <__fixsfsi> |
2bfa: 7b 01 movw r14, r22 |
2bfc: 8c 01 movw r16, r24 |
2bfe: 29 81 ldd r18, Y+1 ; 0x01 |
2c00: 3a 81 ldd r19, Y+2 ; 0x02 |
2c02: 4b 81 ldd r20, Y+3 ; 0x03 |
2c04: 5c 81 ldd r21, Y+4 ; 0x04 |
2c06: c6 01 movw r24, r12 |
2c08: b5 01 movw r22, r10 |
2c0a: 0e 94 17 2e call 0x5c2e ; 0x5c2e <__mulsf3> |
2c0e: 2d 85 ldd r18, Y+13 ; 0x0d |
2c10: 3e 85 ldd r19, Y+14 ; 0x0e |
2c12: 4f 85 ldd r20, Y+15 ; 0x0f |
2c14: 58 89 ldd r21, Y+16 ; 0x10 |
2c16: 0e 94 17 2e call 0x5c2e ; 0x5c2e <__mulsf3> |
2c1a: 9b 01 movw r18, r22 |
2c1c: ac 01 movw r20, r24 |
2c1e: c4 01 movw r24, r8 |
2c20: b3 01 movw r22, r6 |
2c22: 0e 94 f7 2c call 0x59ee ; 0x59ee <__subsf3> |
2c26: 0e 94 80 2d call 0x5b00 ; 0x5b00 <__fixsfsi> |
2c2a: dc 01 movw r26, r24 |
2c2c: cb 01 movw r24, r22 |
2c2e: b7 01 movw r22, r14 |
2c30: 0e 94 36 17 call 0x2e6c ; 0x2e6c <atan2_i> |
2c34: 9c 01 movw r18, r24 |
2c36: 97 ff sbrs r25, 7 |
2c38: 05 c0 rjmp .+10 ; 0x2c44 <heading_MM3+0x2bc> |
2c3a: 88 27 eor r24, r24 |
2c3c: 99 27 eor r25, r25 |
2c3e: 82 1b sub r24, r18 |
2c40: 93 0b sbc r25, r19 |
2c42: 04 c0 rjmp .+8 ; 0x2c4c <heading_MM3+0x2c4> |
2c44: 88 e6 ldi r24, 0x68 ; 104 |
2c46: 91 e0 ldi r25, 0x01 ; 1 |
2c48: 82 1b sub r24, r18 |
2c4a: 93 0b sbc r25, r19 |
2c4c: e2 e1 ldi r30, 0x12 ; 18 |
2c4e: c0 5f subi r28, 0xF0 ; 240 |
2c50: 0c 94 fe 2e jmp 0x5dfc ; 0x5dfc <__epilogue_restores__> |
00002c54 <timer0_MM3>: |
2c54: 80 91 9c 04 lds r24, 0x049C |
2c58: 81 30 cpi r24, 0x01 ; 1 |
2c5a: 41 f0 breq .+16 ; 0x2c6c <timer0_MM3+0x18> |
2c5c: 81 30 cpi r24, 0x01 ; 1 |
2c5e: 18 f0 brcs .+6 ; 0x2c66 <timer0_MM3+0x12> |
2c60: 82 30 cpi r24, 0x02 ; 2 |
2c62: 49 f5 brne .+82 ; 0x2cb6 <timer0_MM3+0x62> |
2c64: 1c c0 rjmp .+56 ; 0x2c9e <timer0_MM3+0x4a> |
2c66: 2a 9a sbi 0x05, 2 ; 5 |
2c68: 81 e0 ldi r24, 0x01 ; 1 |
2c6a: 16 c0 rjmp .+44 ; 0x2c98 <timer0_MM3+0x44> |
2c6c: 2a 98 cbi 0x05, 2 ; 5 |
2c6e: 80 91 9f 04 lds r24, 0x049F |
2c72: 85 30 cpi r24, 0x05 ; 5 |
2c74: 11 f4 brne .+4 ; 0x2c7a <timer0_MM3+0x26> |
2c76: 81 e3 ldi r24, 0x31 ; 49 |
2c78: 05 c0 rjmp .+10 ; 0x2c84 <timer0_MM3+0x30> |
2c7a: 86 30 cpi r24, 0x06 ; 6 |
2c7c: 11 f4 brne .+4 ; 0x2c82 <timer0_MM3+0x2e> |
2c7e: 82 e3 ldi r24, 0x32 ; 50 |
2c80: 01 c0 rjmp .+2 ; 0x2c84 <timer0_MM3+0x30> |
2c82: 83 e3 ldi r24, 0x33 ; 51 |
2c84: 8e bd out 0x2e, r24 ; 46 |
2c86: 88 e0 ldi r24, 0x08 ; 8 |
2c88: 90 e0 ldi r25, 0x00 ; 0 |
2c8a: 0e 94 9d 0b call 0x173a ; 0x173a <SetDelay> |
2c8e: 90 93 9e 04 sts 0x049E, r25 |
2c92: 80 93 9d 04 sts 0x049D, r24 |
2c96: 82 e0 ldi r24, 0x02 ; 2 |
2c98: 80 93 9c 04 sts 0x049C, r24 |
2c9c: 08 95 ret |
2c9e: 80 91 9d 04 lds r24, 0x049D |
2ca2: 90 91 9e 04 lds r25, 0x049E |
2ca6: 0e 94 a6 0b call 0x174c ; 0x174c <CheckDelay> |
2caa: 88 23 and r24, r24 |
2cac: 21 f0 breq .+8 ; 0x2cb6 <timer0_MM3+0x62> |
2cae: 1e bc out 0x2e, r1 ; 46 |
2cb0: 83 e0 ldi r24, 0x03 ; 3 |
2cb2: 80 93 9c 04 sts 0x049C, r24 |
2cb6: 08 95 ret |
00002cb8 <calib_MM3>: |
2cb8: a0 e0 ldi r26, 0x00 ; 0 |
2cba: b0 e0 ldi r27, 0x00 ; 0 |
2cbc: e2 e6 ldi r30, 0x62 ; 98 |
2cbe: f6 e1 ldi r31, 0x16 ; 22 |
2cc0: 0c 94 e4 2e jmp 0x5dc8 ; 0x5dc8 <__prologue_saves__+0x4> |
2cc4: 29 9a sbi 0x05, 1 ; 5 |
2cc6: 28 98 cbi 0x05, 0 ; 5 |
2cc8: ee 24 eor r14, r14 |
2cca: ff 24 eor r15, r15 |
2ccc: 00 e0 ldi r16, 0x00 ; 0 |
2cce: 10 e0 ldi r17, 0x00 ; 0 |
2cd0: aa 24 eor r10, r10 |
2cd2: bb 24 eor r11, r11 |
2cd4: cc 24 eor r12, r12 |
2cd6: dd 24 eor r13, r13 |
2cd8: 66 24 eor r6, r6 |
2cda: 77 24 eor r7, r7 |
2cdc: 88 24 eor r8, r8 |
2cde: 99 24 eor r9, r9 |
2ce0: 62 e3 ldi r22, 0x32 ; 50 |
2ce2: 46 2e mov r4, r22 |
2ce4: 55 24 eor r5, r5 |
2ce6: 80 91 a0 04 lds r24, 0x04A0 |
2cea: 90 91 a1 04 lds r25, 0x04A1 |
2cee: 08 17 cp r16, r24 |
2cf0: 19 07 cpc r17, r25 |
2cf2: 2c f4 brge .+10 ; 0x2cfe <calib_MM3+0x46> |
2cf4: 00 91 a0 04 lds r16, 0x04A0 |
2cf8: 10 91 a1 04 lds r17, 0x04A1 |
2cfc: 0b c0 rjmp .+22 ; 0x2d14 <calib_MM3+0x5c> |
2cfe: 80 91 a0 04 lds r24, 0x04A0 |
2d02: 90 91 a1 04 lds r25, 0x04A1 |
2d06: 8e 15 cp r24, r14 |
2d08: 9f 05 cpc r25, r15 |
2d0a: 24 f4 brge .+8 ; 0x2d14 <calib_MM3+0x5c> |
2d0c: e0 90 a0 04 lds r14, 0x04A0 |
2d10: f0 90 a1 04 lds r15, 0x04A1 |
2d14: 80 91 a2 04 lds r24, 0x04A2 |
2d18: 90 91 a3 04 lds r25, 0x04A3 |
2d1c: c8 16 cp r12, r24 |
2d1e: d9 06 cpc r13, r25 |
2d20: 2c f4 brge .+10 ; 0x2d2c <calib_MM3+0x74> |
2d22: c0 90 a2 04 lds r12, 0x04A2 |
2d26: d0 90 a3 04 lds r13, 0x04A3 |
2d2a: 0b c0 rjmp .+22 ; 0x2d42 <calib_MM3+0x8a> |
2d2c: 80 91 a2 04 lds r24, 0x04A2 |
2d30: 90 91 a3 04 lds r25, 0x04A3 |
2d34: 8a 15 cp r24, r10 |
2d36: 9b 05 cpc r25, r11 |
2d38: 24 f4 brge .+8 ; 0x2d42 <calib_MM3+0x8a> |
2d3a: a0 90 a2 04 lds r10, 0x04A2 |
2d3e: b0 90 a3 04 lds r11, 0x04A3 |
2d42: 80 91 a4 04 lds r24, 0x04A4 |
2d46: 90 91 a5 04 lds r25, 0x04A5 |
2d4a: 88 16 cp r8, r24 |
2d4c: 99 06 cpc r9, r25 |
2d4e: 2c f4 brge .+10 ; 0x2d5a <calib_MM3+0xa2> |
2d50: 80 90 a4 04 lds r8, 0x04A4 |
2d54: 90 90 a5 04 lds r9, 0x04A5 |
2d58: 0b c0 rjmp .+22 ; 0x2d70 <calib_MM3+0xb8> |
2d5a: 80 91 a4 04 lds r24, 0x04A4 |
2d5e: 90 91 a5 04 lds r25, 0x04A5 |
2d62: 86 15 cp r24, r6 |
2d64: 97 05 cpc r25, r7 |
2d66: 24 f4 brge .+8 ; 0x2d70 <calib_MM3+0xb8> |
2d68: 60 90 a4 04 lds r6, 0x04A4 |
2d6c: 70 90 a5 04 lds r7, 0x04A5 |
2d70: 55 20 and r5, r5 |
2d72: 81 f4 brne .+32 ; 0x2d94 <calib_MM3+0xdc> |
2d74: 85 b1 in r24, 0x05 ; 5 |
2d76: 91 e0 ldi r25, 0x01 ; 1 |
2d78: 89 27 eor r24, r25 |
2d7a: 85 b9 out 0x05, r24 ; 5 |
2d7c: 85 b1 in r24, 0x05 ; 5 |
2d7e: 92 e0 ldi r25, 0x02 ; 2 |
2d80: 89 27 eor r24, r25 |
2d82: 85 b9 out 0x05, r24 ; 5 |
2d84: 82 e3 ldi r24, 0x32 ; 50 |
2d86: 90 e0 ldi r25, 0x00 ; 0 |
2d88: 90 93 a7 01 sts 0x01A7, r25 |
2d8c: 80 93 a6 01 sts 0x01A6, r24 |
2d90: 52 e3 ldi r21, 0x32 ; 50 |
2d92: 55 2e mov r5, r21 |
2d94: 8a e0 ldi r24, 0x0A ; 10 |
2d96: 90 e0 ldi r25, 0x00 ; 0 |
2d98: 0e 94 9d 0b call 0x173a ; 0x173a <SetDelay> |
2d9c: ec 01 movw r28, r24 |
2d9e: ce 01 movw r24, r28 |
2da0: 0e 94 a6 0b call 0x174c ; 0x174c <CheckDelay> |
2da4: 88 23 and r24, r24 |
2da6: d9 f3 breq .-10 ; 0x2d9e <calib_MM3+0xe6> |
2da8: e0 91 dc 04 lds r30, 0x04DC |
2dac: ff 27 eor r31, r31 |
2dae: ee 0f add r30, r30 |
2db0: ff 1f adc r31, r31 |
2db2: e2 55 subi r30, 0x52 ; 82 |
2db4: fb 4f sbci r31, 0xFB ; 251 |
2db6: 80 81 ld r24, Z |
2db8: 91 81 ldd r25, Z+1 ; 0x01 |
2dba: 84 36 cpi r24, 0x64 ; 100 |
2dbc: 91 05 cpc r25, r1 |
2dbe: 0c f4 brge .+2 ; 0x2dc2 <calib_MM3+0x10a> |
2dc0: 4a 94 dec r4 |
2dc2: 44 20 and r4, r4 |
2dc4: 11 f0 breq .+4 ; 0x2dca <calib_MM3+0x112> |
2dc6: 5a 94 dec r5 |
2dc8: 8e cf rjmp .-228 ; 0x2ce6 <calib_MM3+0x2e> |
2dca: c8 01 movw r24, r16 |
2dcc: 8e 19 sub r24, r14 |
2dce: 9f 09 sbc r25, r15 |
2dd0: 90 93 97 04 sts 0x0497, r25 |
2dd4: 80 93 96 04 sts 0x0496, r24 |
2dd8: c6 01 movw r24, r12 |
2dda: 8a 19 sub r24, r10 |
2ddc: 9b 09 sbc r25, r11 |
2dde: 90 93 99 04 sts 0x0499, r25 |
2de2: 80 93 98 04 sts 0x0498, r24 |
2de6: c4 01 movw r24, r8 |
2de8: 86 19 sub r24, r6 |
2dea: 97 09 sbc r25, r7 |
2dec: 90 93 9b 04 sts 0x049B, r25 |
2df0: 80 93 9a 04 sts 0x049A, r24 |
2df4: e3 e9 ldi r30, 0x93 ; 147 |
2df6: f4 e0 ldi r31, 0x04 ; 4 |
2df8: c8 01 movw r24, r16 |
2dfa: 8e 0d add r24, r14 |
2dfc: 9f 1d adc r25, r15 |
2dfe: 62 e0 ldi r22, 0x02 ; 2 |
2e00: 70 e0 ldi r23, 0x00 ; 0 |
2e02: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
2e06: 60 93 93 04 sts 0x0493, r22 |
2e0a: c6 01 movw r24, r12 |
2e0c: 8a 0d add r24, r10 |
2e0e: 9b 1d adc r25, r11 |
2e10: 62 e0 ldi r22, 0x02 ; 2 |
2e12: 70 e0 ldi r23, 0x00 ; 0 |
2e14: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
2e18: 60 93 94 04 sts 0x0494, r22 |
2e1c: c4 01 movw r24, r8 |
2e1e: 86 0d add r24, r6 |
2e20: 97 1d adc r25, r7 |
2e22: 62 e0 ldi r22, 0x02 ; 2 |
2e24: 70 e0 ldi r23, 0x00 ; 0 |
2e26: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
2e2a: 60 93 95 04 sts 0x0495, r22 |
2e2e: 89 e0 ldi r24, 0x09 ; 9 |
2e30: ac e2 ldi r26, 0x2C ; 44 |
2e32: b1 e0 ldi r27, 0x01 ; 1 |
2e34: 18 2e mov r1, r24 |
2e36: 0e 94 38 2f call 0x5e70 ; 0x5e70 <__eeprom_write_block_1F2021> |
2e3a: e0 e1 ldi r30, 0x10 ; 16 |
2e3c: cd b7 in r28, 0x3d ; 61 |
2e3e: de b7 in r29, 0x3e ; 62 |
2e40: 0c 94 00 2f jmp 0x5e00 ; 0x5e00 <__epilogue_restores__+0x4> |
00002e44 <init_MM3>: |
2e44: 83 ed ldi r24, 0xD3 ; 211 |
2e46: 8c bd out 0x2c, r24 ; 44 |
2e48: 84 b1 in r24, 0x04 ; 4 |
2e4a: 84 6a ori r24, 0xA4 ; 164 |
2e4c: 84 b9 out 0x04, r24 ; 4 |
2e4e: 5b 98 cbi 0x0b, 3 ; 11 |
2e50: 85 e0 ldi r24, 0x05 ; 5 |
2e52: 80 93 9f 04 sts 0x049F, r24 |
2e56: 10 92 9c 04 sts 0x049C, r1 |
2e5a: 89 e0 ldi r24, 0x09 ; 9 |
2e5c: e3 e9 ldi r30, 0x93 ; 147 |
2e5e: f4 e0 ldi r31, 0x04 ; 4 |
2e60: ac e2 ldi r26, 0x2C ; 44 |
2e62: b1 e0 ldi r27, 0x01 ; 1 |
2e64: 18 2e mov r1, r24 |
2e66: 0e 94 27 2f call 0x5e4e ; 0x5e4e <__eeprom_read_block_1F2021> |
2e6a: 08 95 ret |
00002e6c <atan2_i>: |
2e6c: 1f 93 push r17 |
2e6e: cf 93 push r28 |
2e70: df 93 push r29 |
2e72: ec 01 movw r28, r24 |
2e74: 89 2b or r24, r25 |
2e76: 31 f4 brne .+12 ; 0x2e84 <atan2_i+0x18> |
2e78: 61 15 cp r22, r1 |
2e7a: 71 05 cpc r23, r1 |
2e7c: 19 f4 brne .+6 ; 0x2e84 <atan2_i+0x18> |
2e7e: 80 e0 ldi r24, 0x00 ; 0 |
2e80: 90 e0 ldi r25, 0x00 ; 0 |
2e82: 8e c0 rjmp .+284 ; 0x2fa0 <atan2_i+0x134> |
2e84: 77 fd sbrc r23, 7 |
2e86: 02 c0 rjmp .+4 ; 0x2e8c <atan2_i+0x20> |
2e88: 11 e0 ldi r17, 0x01 ; 1 |
2e8a: 01 c0 rjmp .+2 ; 0x2e8e <atan2_i+0x22> |
2e8c: 1f ef ldi r17, 0xFF ; 255 |
2e8e: 20 97 sbiw r28, 0x00 ; 0 |
2e90: 29 f4 brne .+10 ; 0x2e9c <atan2_i+0x30> |
2e92: 8a e5 ldi r24, 0x5A ; 90 |
2e94: 18 02 muls r17, r24 |
2e96: c0 01 movw r24, r0 |
2e98: 11 24 eor r1, r1 |
2e9a: 82 c0 rjmp .+260 ; 0x2fa0 <atan2_i+0x134> |
2e9c: 88 27 eor r24, r24 |
2e9e: 77 fd sbrc r23, 7 |
2ea0: 80 95 com r24 |
2ea2: 98 2f mov r25, r24 |
2ea4: 22 e3 ldi r18, 0x32 ; 50 |
2ea6: 30 e0 ldi r19, 0x00 ; 0 |
2ea8: 40 e0 ldi r20, 0x00 ; 0 |
2eaa: 50 e0 ldi r21, 0x00 ; 0 |
2eac: 0e 94 5f 2e call 0x5cbe ; 0x5cbe <__mulsi3> |
2eb0: 9e 01 movw r18, r28 |
2eb2: 44 27 eor r20, r20 |
2eb4: 37 fd sbrc r19, 7 |
2eb6: 40 95 com r20 |
2eb8: 54 2f mov r21, r20 |
2eba: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
2ebe: f9 01 movw r30, r18 |
2ec0: 37 ff sbrs r19, 7 |
2ec2: 03 c0 rjmp .+6 ; 0x2eca <atan2_i+0x5e> |
2ec4: f0 95 com r31 |
2ec6: e1 95 neg r30 |
2ec8: ff 4f sbci r31, 0xFF ; 255 |
2eca: 41 e0 ldi r20, 0x01 ; 1 |
2ecc: ee 30 cpi r30, 0x0E ; 14 |
2ece: f4 07 cpc r31, r20 |
2ed0: 34 f4 brge .+12 ; 0x2ede <atan2_i+0x72> |
2ed2: e6 55 subi r30, 0x56 ; 86 |
2ed4: fb 4f sbci r31, 0xFB ; 251 |
2ed6: 84 91 lpm r24, Z |
2ed8: 28 2f mov r18, r24 |
2eda: 33 27 eor r19, r19 |
2edc: 47 c0 rjmp .+142 ; 0x2f6c <atan2_i+0x100> |
2ede: 56 e1 ldi r21, 0x16 ; 22 |
2ee0: e7 37 cpi r30, 0x77 ; 119 |
2ee2: f5 07 cpc r31, r21 |
2ee4: 1c f0 brlt .+6 ; 0x2eec <atan2_i+0x80> |
2ee6: 2a e5 ldi r18, 0x5A ; 90 |
2ee8: 30 e0 ldi r19, 0x00 ; 0 |
2eea: 40 c0 rjmp .+128 ; 0x2f6c <atan2_i+0x100> |
2eec: 87 e0 ldi r24, 0x07 ; 7 |
2eee: e6 37 cpi r30, 0x76 ; 118 |
2ef0: f8 07 cpc r31, r24 |
2ef2: 1c f0 brlt .+6 ; 0x2efa <atan2_i+0x8e> |
2ef4: 29 e5 ldi r18, 0x59 ; 89 |
2ef6: 30 e0 ldi r19, 0x00 ; 0 |
2ef8: 39 c0 rjmp .+114 ; 0x2f6c <atan2_i+0x100> |
2efa: 44 e0 ldi r20, 0x04 ; 4 |
2efc: ee 37 cpi r30, 0x7E ; 126 |
2efe: f4 07 cpc r31, r20 |
2f00: 1c f0 brlt .+6 ; 0x2f08 <atan2_i+0x9c> |
2f02: 28 e5 ldi r18, 0x58 ; 88 |
2f04: 30 e0 ldi r19, 0x00 ; 0 |
2f06: 32 c0 rjmp .+100 ; 0x2f6c <atan2_i+0x100> |
2f08: 53 e0 ldi r21, 0x03 ; 3 |
2f0a: e4 33 cpi r30, 0x34 ; 52 |
2f0c: f5 07 cpc r31, r21 |
2f0e: 1c f0 brlt .+6 ; 0x2f16 <atan2_i+0xaa> |
2f10: 27 e5 ldi r18, 0x57 ; 87 |
2f12: 30 e0 ldi r19, 0x00 ; 0 |
2f14: 2b c0 rjmp .+86 ; 0x2f6c <atan2_i+0x100> |
2f16: 82 e0 ldi r24, 0x02 ; 2 |
2f18: e0 38 cpi r30, 0x80 ; 128 |
2f1a: f8 07 cpc r31, r24 |
2f1c: 1c f0 brlt .+6 ; 0x2f24 <atan2_i+0xb8> |
2f1e: 26 e5 ldi r18, 0x56 ; 86 |
2f20: 30 e0 ldi r19, 0x00 ; 0 |
2f22: 24 c0 rjmp .+72 ; 0x2f6c <atan2_i+0x100> |
2f24: 42 e0 ldi r20, 0x02 ; 2 |
2f26: e8 30 cpi r30, 0x08 ; 8 |
2f28: f4 07 cpc r31, r20 |
2f2a: 1c f0 brlt .+6 ; 0x2f32 <atan2_i+0xc6> |
2f2c: 25 e5 ldi r18, 0x55 ; 85 |
2f2e: 30 e0 ldi r19, 0x00 ; 0 |
2f30: 1d c0 rjmp .+58 ; 0x2f6c <atan2_i+0x100> |
2f32: 51 e0 ldi r21, 0x01 ; 1 |
2f34: e8 3b cpi r30, 0xB8 ; 184 |
2f36: f5 07 cpc r31, r21 |
2f38: 1c f0 brlt .+6 ; 0x2f40 <atan2_i+0xd4> |
2f3a: 24 e5 ldi r18, 0x54 ; 84 |
2f3c: 30 e0 ldi r19, 0x00 ; 0 |
2f3e: 16 c0 rjmp .+44 ; 0x2f6c <atan2_i+0x100> |
2f40: 81 e0 ldi r24, 0x01 ; 1 |
2f42: ec 37 cpi r30, 0x7C ; 124 |
2f44: f8 07 cpc r31, r24 |
2f46: 1c f0 brlt .+6 ; 0x2f4e <atan2_i+0xe2> |
2f48: 23 e5 ldi r18, 0x53 ; 83 |
2f4a: 30 e0 ldi r19, 0x00 ; 0 |
2f4c: 0f c0 rjmp .+30 ; 0x2f6c <atan2_i+0x100> |
2f4e: 41 e0 ldi r20, 0x01 ; 1 |
2f50: ef 34 cpi r30, 0x4F ; 79 |
2f52: f4 07 cpc r31, r20 |
2f54: 1c f0 brlt .+6 ; 0x2f5c <atan2_i+0xf0> |
2f56: 22 e5 ldi r18, 0x52 ; 82 |
2f58: 30 e0 ldi r19, 0x00 ; 0 |
2f5a: 08 c0 rjmp .+16 ; 0x2f6c <atan2_i+0x100> |
2f5c: eb 52 subi r30, 0x2B ; 43 |
2f5e: f1 40 sbci r31, 0x01 ; 1 |
2f60: 1c f0 brlt .+6 ; 0x2f68 <atan2_i+0xfc> |
2f62: 21 e5 ldi r18, 0x51 ; 81 |
2f64: 30 e0 ldi r19, 0x00 ; 0 |
2f66: 02 c0 rjmp .+4 ; 0x2f6c <atan2_i+0x100> |
2f68: 20 e5 ldi r18, 0x50 ; 80 |
2f6a: 30 e0 ldi r19, 0x00 ; 0 |
2f6c: 1c 16 cp r1, r28 |
2f6e: 1d 06 cpc r1, r29 |
2f70: 6c f4 brge .+26 ; 0x2f8c <atan2_i+0x120> |
2f72: 81 2f mov r24, r17 |
2f74: 99 27 eor r25, r25 |
2f76: 87 fd sbrc r24, 7 |
2f78: 90 95 com r25 |
2f7a: ac 01 movw r20, r24 |
2f7c: 24 9f mul r18, r20 |
2f7e: c0 01 movw r24, r0 |
2f80: 25 9f mul r18, r21 |
2f82: 90 0d add r25, r0 |
2f84: 34 9f mul r19, r20 |
2f86: 90 0d add r25, r0 |
2f88: 11 24 eor r1, r1 |
2f8a: 0a c0 rjmp .+20 ; 0x2fa0 <atan2_i+0x134> |
2f8c: 11 16 cp r1, r17 |
2f8e: 2c f4 brge .+10 ; 0x2f9a <atan2_i+0x12e> |
2f90: 84 eb ldi r24, 0xB4 ; 180 |
2f92: 90 e0 ldi r25, 0x00 ; 0 |
2f94: 82 1b sub r24, r18 |
2f96: 93 0b sbc r25, r19 |
2f98: 03 c0 rjmp .+6 ; 0x2fa0 <atan2_i+0x134> |
2f9a: c9 01 movw r24, r18 |
2f9c: 84 5b subi r24, 0xB4 ; 180 |
2f9e: 90 40 sbci r25, 0x00 ; 0 |
2fa0: df 91 pop r29 |
2fa2: cf 91 pop r28 |
2fa4: 1f 91 pop r17 |
2fa6: 08 95 ret |
00002fa8 <pgm_read_float>: |
2fa8: fc 01 movw r30, r24 |
2faa: 25 91 lpm r18, Z+ |
2fac: 34 91 lpm r19, Z |
2fae: fc 01 movw r30, r24 |
2fb0: 32 96 adiw r30, 0x02 ; 2 |
2fb2: 45 91 lpm r20, Z+ |
2fb4: 54 91 lpm r21, Z |
2fb6: ca 01 movw r24, r20 |
2fb8: b9 01 movw r22, r18 |
2fba: 08 95 ret |
00002fbc <sin_f>: |
2fbc: a0 e0 ldi r26, 0x00 ; 0 |
2fbe: b0 e0 ldi r27, 0x00 ; 0 |
2fc0: e4 ee ldi r30, 0xE4 ; 228 |
2fc2: f7 e1 ldi r31, 0x17 ; 23 |
2fc4: 0c 94 ec 2e jmp 0x5dd8 ; 0x5dd8 <__prologue_saves__+0x14> |
2fc8: 9c 01 movw r18, r24 |
2fca: 97 fd sbrc r25, 7 |
2fcc: 04 c0 rjmp .+8 ; 0x2fd6 <sin_f+0x1a> |
2fce: 41 e0 ldi r20, 0x01 ; 1 |
2fd0: c4 2e mov r12, r20 |
2fd2: d1 2c mov r13, r1 |
2fd4: 06 c0 rjmp .+12 ; 0x2fe2 <sin_f+0x26> |
2fd6: 30 95 com r19 |
2fd8: 21 95 neg r18 |
2fda: 3f 4f sbci r19, 0xFF ; 255 |
2fdc: 9f ef ldi r25, 0xFF ; 255 |
2fde: c9 2e mov r12, r25 |
2fe0: d9 2e mov r13, r25 |
2fe2: 2b 35 cpi r18, 0x5B ; 91 |
2fe4: 31 05 cpc r19, r1 |
2fe6: 5c f0 brlt .+22 ; 0x2ffe <sin_f+0x42> |
2fe8: c9 01 movw r24, r18 |
2fea: 8b 55 subi r24, 0x5B ; 91 |
2fec: 90 40 sbci r25, 0x00 ; 0 |
2fee: 8a 35 cpi r24, 0x5A ; 90 |
2ff0: 91 05 cpc r25, r1 |
2ff2: 40 f4 brcc .+16 ; 0x3004 <sin_f+0x48> |
2ff4: 84 eb ldi r24, 0xB4 ; 180 |
2ff6: 90 e0 ldi r25, 0x00 ; 0 |
2ff8: 82 1b sub r24, r18 |
2ffa: 93 0b sbc r25, r19 |
2ffc: 9c 01 movw r18, r24 |
2ffe: c1 e0 ldi r28, 0x01 ; 1 |
3000: d0 e0 ldi r29, 0x00 ; 0 |
3002: 10 c0 rjmp .+32 ; 0x3024 <sin_f+0x68> |
3004: c9 01 movw r24, r18 |
3006: 85 5b subi r24, 0xB5 ; 181 |
3008: 90 40 sbci r25, 0x00 ; 0 |
300a: 8a 35 cpi r24, 0x5A ; 90 |
300c: 91 05 cpc r25, r1 |
300e: 18 f4 brcc .+6 ; 0x3016 <sin_f+0x5a> |
3010: 24 5b subi r18, 0xB4 ; 180 |
3012: 30 40 sbci r19, 0x00 ; 0 |
3014: 05 c0 rjmp .+10 ; 0x3020 <sin_f+0x64> |
3016: 88 e6 ldi r24, 0x68 ; 104 |
3018: 91 e0 ldi r25, 0x01 ; 1 |
301a: 82 1b sub r24, r18 |
301c: 93 0b sbc r25, r19 |
301e: 9c 01 movw r18, r24 |
3020: cf ef ldi r28, 0xFF ; 255 |
3022: df ef ldi r29, 0xFF ; 255 |
3024: 22 0f add r18, r18 |
3026: 33 1f adc r19, r19 |
3028: 22 0f add r18, r18 |
302a: 33 1f adc r19, r19 |
302c: c9 01 movw r24, r18 |
302e: 88 54 subi r24, 0x48 ; 72 |
3030: 9a 4f sbci r25, 0xFA ; 250 |
3032: 0e 94 d4 17 call 0x2fa8 ; 0x2fa8 <pgm_read_float> |
3036: 7b 01 movw r14, r22 |
3038: 8c 01 movw r16, r24 |
303a: b6 01 movw r22, r12 |
303c: 88 27 eor r24, r24 |
303e: 77 fd sbrc r23, 7 |
3040: 80 95 com r24 |
3042: 98 2f mov r25, r24 |
3044: 0e 94 9d 2d call 0x5b3a ; 0x5b3a <__floatsisf> |
3048: 9b 01 movw r18, r22 |
304a: ac 01 movw r20, r24 |
304c: c8 01 movw r24, r16 |
304e: b7 01 movw r22, r14 |
3050: 0e 94 17 2e call 0x5c2e ; 0x5c2e <__mulsf3> |
3054: 7b 01 movw r14, r22 |
3056: 8c 01 movw r16, r24 |
3058: be 01 movw r22, r28 |
305a: 88 27 eor r24, r24 |
305c: 77 fd sbrc r23, 7 |
305e: 80 95 com r24 |
3060: 98 2f mov r25, r24 |
3062: 0e 94 9d 2d call 0x5b3a ; 0x5b3a <__floatsisf> |
3066: 9b 01 movw r18, r22 |
3068: ac 01 movw r20, r24 |
306a: c8 01 movw r24, r16 |
306c: b7 01 movw r22, r14 |
306e: 0e 94 17 2e call 0x5c2e ; 0x5c2e <__mulsf3> |
3072: e8 e0 ldi r30, 0x08 ; 8 |
3074: cd b7 in r28, 0x3d ; 61 |
3076: de b7 in r29, 0x3e ; 62 |
3078: 0c 94 08 2f jmp 0x5e10 ; 0x5e10 <__epilogue_restores__+0x14> |
0000307c <cos_f>: |
307c: 2a e5 ldi r18, 0x5A ; 90 |
307e: 30 e0 ldi r19, 0x00 ; 0 |
3080: 28 1b sub r18, r24 |
3082: 39 0b sbc r19, r25 |
3084: c9 01 movw r24, r18 |
3086: 0e 94 de 17 call 0x2fbc ; 0x2fbc <sin_f> |
308a: 08 95 ret |
0000308c <i2c_init>: |
308c: 10 92 b9 00 sts 0x00B9, r1 |
3090: 8a e2 ldi r24, 0x2A ; 42 |
3092: 80 93 b8 00 sts 0x00B8, r24 |
3096: 08 95 ret |
00003098 <i2c_start>: |
3098: 85 ea ldi r24, 0xA5 ; 165 |
309a: 80 93 bc 00 sts 0x00BC, r24 |
309e: 80 e0 ldi r24, 0x00 ; 0 |
30a0: 90 e0 ldi r25, 0x00 ; 0 |
30a2: 08 95 ret |
000030a4 <i2c_stop>: |
30a4: 84 e9 ldi r24, 0x94 ; 148 |
30a6: 80 93 bc 00 sts 0x00BC, r24 |
30aa: 08 95 ret |
000030ac <i2c_write_byte>: |
30ac: 10 92 b9 00 sts 0x00B9, r1 |
30b0: 80 93 bb 00 sts 0x00BB, r24 |
30b4: 85 e8 ldi r24, 0x85 ; 133 |
30b6: 80 93 bc 00 sts 0x00BC, r24 |
30ba: 80 e0 ldi r24, 0x00 ; 0 |
30bc: 90 e0 ldi r25, 0x00 ; 0 |
30be: 08 95 ret |
000030c0 <__vector_26>: |
30c0: 1f 92 push r1 |
30c2: 0f 92 push r0 |
30c4: 0f b6 in r0, 0x3f ; 63 |
30c6: 0f 92 push r0 |
30c8: 11 24 eor r1, r1 |
30ca: 8f 93 push r24 |
30cc: 9f 93 push r25 |
30ce: ef 93 push r30 |
30d0: ff 93 push r31 |
30d2: 80 91 cb 01 lds r24, 0x01CB |
30d6: 8f 5f subi r24, 0xFF ; 255 |
30d8: 80 93 cb 01 sts 0x01CB, r24 |
30dc: 81 50 subi r24, 0x01 ; 1 |
30de: e8 2f mov r30, r24 |
30e0: ff 27 eor r31, r31 |
30e2: e8 30 cpi r30, 0x08 ; 8 |
30e4: f1 05 cpc r31, r1 |
30e6: 08 f0 brcs .+2 ; 0x30ea <__vector_26+0x2a> |
30e8: 74 c0 rjmp .+232 ; 0x31d2 <__vector_26+0x112> |
30ea: ef 59 subi r30, 0x9F ; 159 |
30ec: ff 4f sbci r31, 0xFF ; 255 |
30ee: 0c 94 19 2f jmp 0x5e32 ; 0x5e32 <__tablejump2__> |
30f2: 80 91 cc 01 lds r24, 0x01CC |
30f6: 88 0f add r24, r24 |
30f8: 8e 5a subi r24, 0xAE ; 174 |
30fa: 14 c0 rjmp .+40 ; 0x3124 <__vector_26+0x64> |
30fc: 80 91 cc 01 lds r24, 0x01CC |
3100: 8f 5f subi r24, 0xFF ; 255 |
3102: 80 93 cc 01 sts 0x01CC, r24 |
3106: 81 50 subi r24, 0x01 ; 1 |
3108: 81 30 cpi r24, 0x01 ; 1 |
310a: 09 f4 brne .+2 ; 0x310e <__vector_26+0x4e> |
310c: 44 c0 rjmp .+136 ; 0x3196 <__vector_26+0xd6> |
310e: 81 30 cpi r24, 0x01 ; 1 |
3110: 38 f0 brcs .+14 ; 0x3120 <__vector_26+0x60> |
3112: 82 30 cpi r24, 0x02 ; 2 |
3114: 09 f4 brne .+2 ; 0x3118 <__vector_26+0x58> |
3116: 42 c0 rjmp .+132 ; 0x319c <__vector_26+0xdc> |
3118: 83 30 cpi r24, 0x03 ; 3 |
311a: 09 f0 breq .+2 ; 0x311e <__vector_26+0x5e> |
311c: 5a c0 rjmp .+180 ; 0x31d2 <__vector_26+0x112> |
311e: 41 c0 rjmp .+130 ; 0x31a2 <__vector_26+0xe2> |
3120: 80 91 65 02 lds r24, 0x0265 |
3124: 10 92 b9 00 sts 0x00B9, r1 |
3128: 80 93 bb 00 sts 0x00BB, r24 |
312c: 85 e8 ldi r24, 0x85 ; 133 |
312e: 80 93 bc 00 sts 0x00BC, r24 |
3132: 4f c0 rjmp .+158 ; 0x31d2 <__vector_26+0x112> |
3134: 84 e9 ldi r24, 0x94 ; 148 |
3136: 80 93 bc 00 sts 0x00BC, r24 |
313a: 80 91 cc 01 lds r24, 0x01CC |
313e: 84 30 cpi r24, 0x04 ; 4 |
3140: 18 f4 brcc .+6 ; 0x3148 <__vector_26+0x88> |
3142: 10 92 cb 01 sts 0x01CB, r1 |
3146: 02 c0 rjmp .+4 ; 0x314c <__vector_26+0x8c> |
3148: 10 92 cc 01 sts 0x01CC, r1 |
314c: 85 ea ldi r24, 0xA5 ; 165 |
314e: ef cf rjmp .-34 ; 0x312e <__vector_26+0x6e> |
3150: 80 91 cd 01 lds r24, 0x01CD |
3154: 88 0f add r24, r24 |
3156: 8d 5a subi r24, 0xAD ; 173 |
3158: e5 cf rjmp .-54 ; 0x3124 <__vector_26+0x64> |
315a: 80 91 cd 01 lds r24, 0x01CD |
315e: 81 30 cpi r24, 0x01 ; 1 |
3160: d1 f0 breq .+52 ; 0x3196 <__vector_26+0xd6> |
3162: 81 30 cpi r24, 0x01 ; 1 |
3164: e8 f2 brcs .-70 ; 0x3120 <__vector_26+0x60> |
3166: 82 30 cpi r24, 0x02 ; 2 |
3168: c9 f0 breq .+50 ; 0x319c <__vector_26+0xdc> |
316a: 83 30 cpi r24, 0x03 ; 3 |
316c: 91 f5 brne .+100 ; 0x31d2 <__vector_26+0x112> |
316e: 19 c0 rjmp .+50 ; 0x31a2 <__vector_26+0xe2> |
3170: 80 91 bb 00 lds r24, 0x00BB |
3174: e0 91 cd 01 lds r30, 0x01CD |
3178: ff 27 eor r31, r31 |
317a: ea 55 subi r30, 0x5A ; 90 |
317c: fb 4f sbci r31, 0xFB ; 251 |
317e: 80 83 st Z, r24 |
3180: 80 91 cd 01 lds r24, 0x01CD |
3184: 81 30 cpi r24, 0x01 ; 1 |
3186: 39 f0 breq .+14 ; 0x3196 <__vector_26+0xd6> |
3188: 81 30 cpi r24, 0x01 ; 1 |
318a: 50 f2 brcs .-108 ; 0x3120 <__vector_26+0x60> |
318c: 82 30 cpi r24, 0x02 ; 2 |
318e: 31 f0 breq .+12 ; 0x319c <__vector_26+0xdc> |
3190: 83 30 cpi r24, 0x03 ; 3 |
3192: f9 f4 brne .+62 ; 0x31d2 <__vector_26+0x112> |
3194: 06 c0 rjmp .+12 ; 0x31a2 <__vector_26+0xe2> |
3196: 80 91 66 02 lds r24, 0x0266 |
319a: c4 cf rjmp .-120 ; 0x3124 <__vector_26+0x64> |
319c: 80 91 69 02 lds r24, 0x0269 |
31a0: c1 cf rjmp .-126 ; 0x3124 <__vector_26+0x64> |
31a2: 80 91 6b 02 lds r24, 0x026B |
31a6: be cf rjmp .-132 ; 0x3124 <__vector_26+0x64> |
31a8: 80 91 cd 01 lds r24, 0x01CD |
31ac: 90 91 bb 00 lds r25, 0x00BB |
31b0: e8 2f mov r30, r24 |
31b2: ff 27 eor r31, r31 |
31b4: ea 55 subi r30, 0x5A ; 90 |
31b6: fb 4f sbci r31, 0xFB ; 251 |
31b8: 94 83 std Z+4, r25 ; 0x04 |
31ba: 8f 5f subi r24, 0xFF ; 255 |
31bc: 80 93 cd 01 sts 0x01CD, r24 |
31c0: 84 30 cpi r24, 0x04 ; 4 |
31c2: 10 f0 brcs .+4 ; 0x31c8 <__vector_26+0x108> |
31c4: 10 92 cd 01 sts 0x01CD, r1 |
31c8: 84 e9 ldi r24, 0x94 ; 148 |
31ca: 80 93 bc 00 sts 0x00BC, r24 |
31ce: 10 92 cb 01 sts 0x01CB, r1 |
31d2: ff 91 pop r31 |
31d4: ef 91 pop r30 |
31d6: 9f 91 pop r25 |
31d8: 8f 91 pop r24 |
31da: 0f 90 pop r0 |
31dc: 0f be out 0x3f, r0 ; 63 |
31de: 0f 90 pop r0 |
31e0: 1f 90 pop r1 |
31e2: 18 95 reti |
000031e4 <rc_sum_init>: |
31e4: 83 ec ldi r24, 0xC3 ; 195 |
31e6: 80 93 81 00 sts 0x0081, r24 |
31ea: ef e6 ldi r30, 0x6F ; 111 |
31ec: f0 e0 ldi r31, 0x00 ; 0 |
31ee: 80 81 ld r24, Z |
31f0: 80 62 ori r24, 0x20 ; 32 |
31f2: 80 83 st Z, r24 |
31f4: 10 92 d8 01 sts 0x01D8, r1 |
31f8: 10 92 d7 01 sts 0x01D7, r1 |
31fc: 10 92 d6 01 sts 0x01D6, r1 |
3200: 10 92 d5 01 sts 0x01D5, r1 |
3204: 10 92 d4 01 sts 0x01D4, r1 |
3208: 10 92 d3 01 sts 0x01D3, r1 |
320c: 08 95 ret |
0000320e <__vector_12>: |
320e: 1f 92 push r1 |
3210: 0f 92 push r0 |
3212: 0f b6 in r0, 0x3f ; 63 |
3214: 0f 92 push r0 |
3216: 11 24 eor r1, r1 |
3218: 0f 93 push r16 |
321a: 1f 93 push r17 |
321c: 2f 93 push r18 |
321e: 3f 93 push r19 |
3220: 4f 93 push r20 |
3222: 5f 93 push r21 |
3224: 6f 93 push r22 |
3226: 7f 93 push r23 |
3228: 8f 93 push r24 |
322a: 9f 93 push r25 |
322c: af 93 push r26 |
322e: bf 93 push r27 |
3230: cf 93 push r28 |
3232: df 93 push r29 |
3234: ef 93 push r30 |
3236: ff 93 push r31 |
3238: 20 91 86 00 lds r18, 0x0086 |
323c: 30 91 87 00 lds r19, 0x0087 |
3240: 80 91 d0 01 lds r24, 0x01D0 |
3244: 90 91 d1 01 lds r25, 0x01D1 |
3248: 28 1b sub r18, r24 |
324a: 39 0b sbc r19, r25 |
324c: 80 91 86 00 lds r24, 0x0086 |
3250: 90 91 87 00 lds r25, 0x0087 |
3254: 90 93 d1 01 sts 0x01D1, r25 |
3258: 80 93 d0 01 sts 0x01D0, r24 |
325c: c9 01 movw r24, r18 |
325e: 8d 5d subi r24, 0xDD ; 221 |
3260: 95 40 sbci r25, 0x05 ; 5 |
3262: 83 56 subi r24, 0x63 ; 99 |
3264: 99 41 sbci r25, 0x19 ; 25 |
3266: 48 f4 brcc .+18 ; 0x327a <__vector_12+0x6c> |
3268: 81 e0 ldi r24, 0x01 ; 1 |
326a: 90 e0 ldi r25, 0x00 ; 0 |
326c: 90 93 cf 01 sts 0x01CF, r25 |
3270: 80 93 ce 01 sts 0x01CE, r24 |
3274: 10 92 67 01 sts 0x0167, r1 |
3278: 54 c0 rjmp .+168 ; 0x3322 <__vector_12+0x114> |
327a: c0 91 ce 01 lds r28, 0x01CE |
327e: d0 91 cf 01 lds r29, 0x01CF |
3282: ca 30 cpi r28, 0x0A ; 10 |
3284: d1 05 cpc r29, r1 |
3286: 0c f0 brlt .+2 ; 0x328a <__vector_12+0x7c> |
3288: 4c c0 rjmp .+152 ; 0x3322 <__vector_12+0x114> |
328a: c9 01 movw r24, r18 |
328c: 8b 5f subi r24, 0xFB ; 251 |
328e: 90 40 sbci r25, 0x00 ; 0 |
3290: 84 5b subi r24, 0xB4 ; 180 |
3292: 91 40 sbci r25, 0x01 ; 1 |
3294: 08 f0 brcs .+2 ; 0x3298 <__vector_12+0x8a> |
3296: 40 c0 rjmp .+128 ; 0x3318 <__vector_12+0x10a> |
3298: a9 01 movw r20, r18 |
329a: 42 5d subi r20, 0xD2 ; 210 |
329c: 51 40 sbci r21, 0x01 ; 1 |
329e: fe 01 movw r30, r28 |
32a0: ee 0f add r30, r30 |
32a2: ff 1f adc r31, r31 |
32a4: e2 55 subi r30, 0x52 ; 82 |
32a6: fb 4f sbci r31, 0xFB ; 251 |
32a8: 80 81 ld r24, Z |
32aa: 91 81 ldd r25, Z+1 ; 0x01 |
32ac: fa 01 movw r30, r20 |
32ae: e8 1b sub r30, r24 |
32b0: f9 0b sbc r31, r25 |
32b2: cf 01 movw r24, r30 |
32b4: f7 ff sbrs r31, 7 |
32b6: 03 c0 rjmp .+6 ; 0x32be <__vector_12+0xb0> |
32b8: 90 95 com r25 |
32ba: 81 95 neg r24 |
32bc: 9f 4f sbci r25, 0xFF ; 255 |
32be: 06 97 sbiw r24, 0x06 ; 6 |
32c0: 4c f4 brge .+18 ; 0x32d4 <__vector_12+0xc6> |
32c2: 80 91 1c 02 lds r24, 0x021C |
32c6: 88 3c cpi r24, 0xC8 ; 200 |
32c8: 28 f4 brcc .+10 ; 0x32d4 <__vector_12+0xc6> |
32ca: 80 91 1c 02 lds r24, 0x021C |
32ce: 86 5f subi r24, 0xF6 ; 246 |
32d0: 80 93 1c 02 sts 0x021C, r24 |
32d4: fe 01 movw r30, r28 |
32d6: ee 0f add r30, r30 |
32d8: ff 1f adc r31, r31 |
32da: 8f 01 movw r16, r30 |
32dc: 02 55 subi r16, 0x52 ; 82 |
32de: 1b 4f sbci r17, 0xFB ; 251 |
32e0: d8 01 movw r26, r16 |
32e2: 2d 91 ld r18, X+ |
32e4: 3c 91 ld r19, X |
32e6: c9 01 movw r24, r18 |
32e8: 88 0f add r24, r24 |
32ea: 99 1f adc r25, r25 |
32ec: 82 0f add r24, r18 |
32ee: 93 1f adc r25, r19 |
32f0: 84 0f add r24, r20 |
32f2: 95 1f adc r25, r21 |
32f4: 64 e0 ldi r22, 0x04 ; 4 |
32f6: 70 e0 ldi r23, 0x00 ; 0 |
32f8: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
32fc: d8 01 movw r26, r16 |
32fe: 8d 91 ld r24, X+ |
3300: 9c 91 ld r25, X |
3302: 11 97 sbiw r26, 0x01 ; 1 |
3304: 9b 01 movw r18, r22 |
3306: 28 1b sub r18, r24 |
3308: 39 0b sbc r19, r25 |
330a: ec 53 subi r30, 0x3C ; 60 |
330c: fb 4f sbci r31, 0xFB ; 251 |
330e: 31 83 std Z+1, r19 ; 0x01 |
3310: 20 83 st Z, r18 |
3312: 11 96 adiw r26, 0x01 ; 1 |
3314: 7c 93 st X, r23 |
3316: 6e 93 st -X, r22 |
3318: 21 96 adiw r28, 0x01 ; 1 |
331a: d0 93 cf 01 sts 0x01CF, r29 |
331e: c0 93 ce 01 sts 0x01CE, r28 |
3322: ff 91 pop r31 |
3324: ef 91 pop r30 |
3326: df 91 pop r29 |
3328: cf 91 pop r28 |
332a: bf 91 pop r27 |
332c: af 91 pop r26 |
332e: 9f 91 pop r25 |
3330: 8f 91 pop r24 |
3332: 7f 91 pop r23 |
3334: 6f 91 pop r22 |
3336: 5f 91 pop r21 |
3338: 4f 91 pop r20 |
333a: 3f 91 pop r19 |
333c: 2f 91 pop r18 |
333e: 1f 91 pop r17 |
3340: 0f 91 pop r16 |
3342: 0f 90 pop r0 |
3344: 0f be out 0x3f, r0 ; 63 |
3346: 0f 90 pop r0 |
3348: 1f 90 pop r1 |
334a: 18 95 reti |
0000334c <Mittelwert>: |
334c: af 92 push r10 |
334e: bf 92 push r11 |
3350: cf 92 push r12 |
3352: df 92 push r13 |
3354: ef 92 push r14 |
3356: ff 92 push r15 |
3358: 0f 93 push r16 |
335a: 1f 93 push r17 |
335c: 10 92 7a 00 sts 0x007A, r1 |
3360: 80 91 b9 01 lds r24, 0x01B9 |
3364: 88 23 and r24, r24 |
3366: 69 f0 breq .+26 ; 0x3382 <Mittelwert+0x36> |
3368: 80 91 ad 01 lds r24, 0x01AD |
336c: 90 91 ae 01 lds r25, 0x01AE |
3370: 60 91 b9 01 lds r22, 0x01B9 |
3374: 77 27 eor r23, r23 |
3376: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
337a: 70 93 17 05 sts 0x0517, r23 |
337e: 60 93 16 05 sts 0x0516, r22 |
3382: 80 91 ba 01 lds r24, 0x01BA |
3386: 88 23 and r24, r24 |
3388: 69 f0 breq .+26 ; 0x33a4 <Mittelwert+0x58> |
338a: 80 91 af 01 lds r24, 0x01AF |
338e: 90 91 b0 01 lds r25, 0x01B0 |
3392: 60 91 ba 01 lds r22, 0x01BA |
3396: 77 27 eor r23, r23 |
3398: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
339c: 70 93 15 05 sts 0x0515, r23 |
33a0: 60 93 14 05 sts 0x0514, r22 |
33a4: 80 91 bb 01 lds r24, 0x01BB |
33a8: 88 23 and r24, r24 |
33aa: 69 f0 breq .+26 ; 0x33c6 <Mittelwert+0x7a> |
33ac: 80 91 b1 01 lds r24, 0x01B1 |
33b0: 90 91 b2 01 lds r25, 0x01B2 |
33b4: 60 91 bb 01 lds r22, 0x01BB |
33b8: 77 27 eor r23, r23 |
33ba: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
33be: 70 93 2b 05 sts 0x052B, r23 |
33c2: 60 93 2a 05 sts 0x052A, r22 |
33c6: 80 91 bc 01 lds r24, 0x01BC |
33ca: 88 23 and r24, r24 |
33cc: d9 f1 breq .+118 ; 0x3444 <Mittelwert+0xf8> |
33ce: e0 90 27 05 lds r14, 0x0527 |
33d2: f0 90 28 05 lds r15, 0x0528 |
33d6: 60 91 b5 01 lds r22, 0x01B5 |
33da: 70 91 b6 01 lds r23, 0x01B6 |
33de: 20 91 bc 01 lds r18, 0x01BC |
33e2: 00 27 eor r16, r16 |
33e4: f7 fc sbrc r15, 7 |
33e6: 00 95 com r16 |
33e8: 10 2f mov r17, r16 |
33ea: 57 01 movw r10, r14 |
33ec: 68 01 movw r12, r16 |
33ee: 83 e0 ldi r24, 0x03 ; 3 |
33f0: aa 0c add r10, r10 |
33f2: bb 1c adc r11, r11 |
33f4: cc 1c adc r12, r12 |
33f6: dd 1c adc r13, r13 |
33f8: 8a 95 dec r24 |
33fa: d1 f7 brne .-12 ; 0x33f0 <Mittelwert+0xa4> |
33fc: ae 18 sub r10, r14 |
33fe: bf 08 sbc r11, r15 |
3400: c0 0a sbc r12, r16 |
3402: d1 0a sbc r13, r17 |
3404: 88 27 eor r24, r24 |
3406: 77 fd sbrc r23, 7 |
3408: 80 95 com r24 |
340a: 98 2f mov r25, r24 |
340c: b4 e0 ldi r27, 0x04 ; 4 |
340e: 66 0f add r22, r22 |
3410: 77 1f adc r23, r23 |
3412: 88 1f adc r24, r24 |
3414: 99 1f adc r25, r25 |
3416: ba 95 dec r27 |
3418: d1 f7 brne .-12 ; 0x340e <Mittelwert+0xc2> |
341a: 33 27 eor r19, r19 |
341c: 44 27 eor r20, r20 |
341e: 55 27 eor r21, r21 |
3420: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
3424: a2 0e add r10, r18 |
3426: b3 1e adc r11, r19 |
3428: c4 1e adc r12, r20 |
342a: d5 1e adc r13, r21 |
342c: c6 01 movw r24, r12 |
342e: b5 01 movw r22, r10 |
3430: 28 e0 ldi r18, 0x08 ; 8 |
3432: 30 e0 ldi r19, 0x00 ; 0 |
3434: 40 e0 ldi r20, 0x00 ; 0 |
3436: 50 e0 ldi r21, 0x00 ; 0 |
3438: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
343c: 30 93 28 05 sts 0x0528, r19 |
3440: 20 93 27 05 sts 0x0527, r18 |
3444: 80 91 bd 01 lds r24, 0x01BD |
3448: 88 23 and r24, r24 |
344a: d9 f1 breq .+118 ; 0x34c2 <Mittelwert+0x176> |
344c: e0 90 30 05 lds r14, 0x0530 |
3450: f0 90 31 05 lds r15, 0x0531 |
3454: 60 91 b3 01 lds r22, 0x01B3 |
3458: 70 91 b4 01 lds r23, 0x01B4 |
345c: 20 91 bd 01 lds r18, 0x01BD |
3460: 00 27 eor r16, r16 |
3462: f7 fc sbrc r15, 7 |
3464: 00 95 com r16 |
3466: 10 2f mov r17, r16 |
3468: 57 01 movw r10, r14 |
346a: 68 01 movw r12, r16 |
346c: a3 e0 ldi r26, 0x03 ; 3 |
346e: aa 0c add r10, r10 |
3470: bb 1c adc r11, r11 |
3472: cc 1c adc r12, r12 |
3474: dd 1c adc r13, r13 |
3476: aa 95 dec r26 |
3478: d1 f7 brne .-12 ; 0x346e <Mittelwert+0x122> |
347a: ae 18 sub r10, r14 |
347c: bf 08 sbc r11, r15 |
347e: c0 0a sbc r12, r16 |
3480: d1 0a sbc r13, r17 |
3482: 88 27 eor r24, r24 |
3484: 77 fd sbrc r23, 7 |
3486: 80 95 com r24 |
3488: 98 2f mov r25, r24 |
348a: f4 e0 ldi r31, 0x04 ; 4 |
348c: 66 0f add r22, r22 |
348e: 77 1f adc r23, r23 |
3490: 88 1f adc r24, r24 |
3492: 99 1f adc r25, r25 |
3494: fa 95 dec r31 |
3496: d1 f7 brne .-12 ; 0x348c <Mittelwert+0x140> |
3498: 33 27 eor r19, r19 |
349a: 44 27 eor r20, r20 |
349c: 55 27 eor r21, r21 |
349e: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
34a2: a2 0e add r10, r18 |
34a4: b3 1e adc r11, r19 |
34a6: c4 1e adc r12, r20 |
34a8: d5 1e adc r13, r21 |
34aa: c6 01 movw r24, r12 |
34ac: b5 01 movw r22, r10 |
34ae: 28 e0 ldi r18, 0x08 ; 8 |
34b0: 30 e0 ldi r19, 0x00 ; 0 |
34b2: 40 e0 ldi r20, 0x00 ; 0 |
34b4: 50 e0 ldi r21, 0x00 ; 0 |
34b6: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
34ba: 30 93 31 05 sts 0x0531, r19 |
34be: 20 93 30 05 sts 0x0530, r18 |
34c2: 80 91 be 01 lds r24, 0x01BE |
34c6: 88 23 and r24, r24 |
34c8: a1 f1 breq .+104 ; 0x3532 <Mittelwert+0x1e6> |
34ca: e0 90 19 05 lds r14, 0x0519 |
34ce: f0 90 1a 05 lds r15, 0x051A |
34d2: 60 91 b7 01 lds r22, 0x01B7 |
34d6: 70 91 b8 01 lds r23, 0x01B8 |
34da: 20 91 be 01 lds r18, 0x01BE |
34de: 00 27 eor r16, r16 |
34e0: f7 fc sbrc r15, 7 |
34e2: 00 95 com r16 |
34e4: 10 2f mov r17, r16 |
34e6: 57 01 movw r10, r14 |
34e8: 68 01 movw r12, r16 |
34ea: e3 e0 ldi r30, 0x03 ; 3 |
34ec: aa 0c add r10, r10 |
34ee: bb 1c adc r11, r11 |
34f0: cc 1c adc r12, r12 |
34f2: dd 1c adc r13, r13 |
34f4: ea 95 dec r30 |
34f6: d1 f7 brne .-12 ; 0x34ec <Mittelwert+0x1a0> |
34f8: ae 18 sub r10, r14 |
34fa: bf 08 sbc r11, r15 |
34fc: c0 0a sbc r12, r16 |
34fe: d1 0a sbc r13, r17 |
3500: 88 27 eor r24, r24 |
3502: 77 fd sbrc r23, 7 |
3504: 80 95 com r24 |
3506: 98 2f mov r25, r24 |
3508: 33 27 eor r19, r19 |
350a: 44 27 eor r20, r20 |
350c: 55 27 eor r21, r21 |
350e: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
3512: a2 0e add r10, r18 |
3514: b3 1e adc r11, r19 |
3516: c4 1e adc r12, r20 |
3518: d5 1e adc r13, r21 |
351a: c6 01 movw r24, r12 |
351c: b5 01 movw r22, r10 |
351e: 28 e0 ldi r18, 0x08 ; 8 |
3520: 30 e0 ldi r19, 0x00 ; 0 |
3522: 40 e0 ldi r20, 0x00 ; 0 |
3524: 50 e0 ldi r21, 0x00 ; 0 |
3526: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
352a: 30 93 1a 05 sts 0x051A, r19 |
352e: 20 93 19 05 sts 0x0519, r18 |
3532: 10 92 ae 01 sts 0x01AE, r1 |
3536: 10 92 ad 01 sts 0x01AD, r1 |
353a: 10 92 b9 01 sts 0x01B9, r1 |
353e: 10 92 b0 01 sts 0x01B0, r1 |
3542: 10 92 af 01 sts 0x01AF, r1 |
3546: 10 92 ba 01 sts 0x01BA, r1 |
354a: 10 92 b2 01 sts 0x01B2, r1 |
354e: 10 92 b1 01 sts 0x01B1, r1 |
3552: 10 92 bb 01 sts 0x01BB, r1 |
3556: 10 92 b4 01 sts 0x01B4, r1 |
355a: 10 92 b3 01 sts 0x01B3, r1 |
355e: 10 92 bd 01 sts 0x01BD, r1 |
3562: 10 92 b6 01 sts 0x01B6, r1 |
3566: 10 92 b5 01 sts 0x01B5, r1 |
356a: 10 92 bc 01 sts 0x01BC, r1 |
356e: 10 92 b8 01 sts 0x01B8, r1 |
3572: 10 92 b7 01 sts 0x01B7, r1 |
3576: 10 92 be 01 sts 0x01BE, r1 |
357a: 80 91 ff 01 lds r24, 0x01FF |
357e: 90 91 00 02 lds r25, 0x0200 |
3582: a0 91 01 02 lds r26, 0x0201 |
3586: b0 91 02 02 lds r27, 0x0202 |
358a: 80 93 eb 01 sts 0x01EB, r24 |
358e: 90 93 ec 01 sts 0x01EC, r25 |
3592: a0 93 ed 01 sts 0x01ED, r26 |
3596: b0 93 ee 01 sts 0x01EE, r27 |
359a: 80 91 ef 01 lds r24, 0x01EF |
359e: 90 91 f0 01 lds r25, 0x01F0 |
35a2: a0 91 f1 01 lds r26, 0x01F1 |
35a6: b0 91 f2 01 lds r27, 0x01F2 |
35aa: 80 93 db 01 sts 0x01DB, r24 |
35ae: 90 93 dc 01 sts 0x01DC, r25 |
35b2: a0 93 dd 01 sts 0x01DD, r26 |
35b6: b0 93 de 01 sts 0x01DE, r27 |
35ba: 80 91 f7 01 lds r24, 0x01F7 |
35be: 90 91 f8 01 lds r25, 0x01F8 |
35c2: a0 91 f9 01 lds r26, 0x01F9 |
35c6: b0 91 fa 01 lds r27, 0x01FA |
35ca: 80 93 e3 01 sts 0x01E3, r24 |
35ce: 90 93 e4 01 sts 0x01E4, r25 |
35d2: a0 93 e5 01 sts 0x01E5, r26 |
35d6: b0 93 e6 01 sts 0x01E6, r27 |
35da: 80 91 f3 01 lds r24, 0x01F3 |
35de: 90 91 f4 01 lds r25, 0x01F4 |
35e2: a0 91 f5 01 lds r26, 0x01F5 |
35e6: b0 91 f6 01 lds r27, 0x01F6 |
35ea: 80 93 df 01 sts 0x01DF, r24 |
35ee: 90 93 e0 01 sts 0x01E0, r25 |
35f2: a0 93 e1 01 sts 0x01E1, r26 |
35f6: b0 93 e2 01 sts 0x01E2, r27 |
35fa: 80 91 fb 01 lds r24, 0x01FB |
35fe: 90 91 fc 01 lds r25, 0x01FC |
3602: a0 91 fd 01 lds r26, 0x01FD |
3606: b0 91 fe 01 lds r27, 0x01FE |
360a: 80 93 e7 01 sts 0x01E7, r24 |
360e: 90 93 e8 01 sts 0x01E8, r25 |
3612: a0 93 e9 01 sts 0x01E9, r26 |
3616: b0 93 ea 01 sts 0x01EA, r27 |
361a: 8f ec ldi r24, 0xCF ; 207 |
361c: 80 93 7a 00 sts 0x007A, r24 |
3620: 20 91 14 02 lds r18, 0x0214 |
3624: 30 91 15 02 lds r19, 0x0215 |
3628: 80 91 de 04 lds r24, 0x04DE |
362c: e8 2f mov r30, r24 |
362e: ff 27 eor r31, r31 |
3630: ee 0f add r30, r30 |
3632: ff 1f adc r31, r31 |
3634: e2 55 subi r30, 0x52 ; 82 |
3636: fb 4f sbci r31, 0xFB ; 251 |
3638: 80 81 ld r24, Z |
363a: 91 81 ldd r25, Z+1 ; 0x01 |
363c: 82 59 subi r24, 0x92 ; 146 |
363e: 9f 4f sbci r25, 0xFF ; 255 |
3640: 28 17 cp r18, r24 |
3642: 39 07 cpc r19, r25 |
3644: 1c f4 brge .+6 ; 0x364c <Mittelwert+0x300> |
3646: 2f 5f subi r18, 0xFF ; 255 |
3648: 3f 4f sbci r19, 0xFF ; 255 |
364a: 0c c0 rjmp .+24 ; 0x3664 <Mittelwert+0x318> |
364c: 80 81 ld r24, Z |
364e: 91 81 ldd r25, Z+1 ; 0x01 |
3650: 82 59 subi r24, 0x92 ; 146 |
3652: 9f 4f sbci r25, 0xFF ; 255 |
3654: 82 17 cp r24, r18 |
3656: 93 07 cpc r25, r19 |
3658: 4c f4 brge .+18 ; 0x366c <Mittelwert+0x320> |
365a: 21 15 cp r18, r1 |
365c: 31 05 cpc r19, r1 |
365e: 31 f0 breq .+12 ; 0x366c <Mittelwert+0x320> |
3660: 21 50 subi r18, 0x01 ; 1 |
3662: 30 40 sbci r19, 0x00 ; 0 |
3664: 30 93 15 02 sts 0x0215, r19 |
3668: 20 93 14 02 sts 0x0214, r18 |
366c: 20 91 16 02 lds r18, 0x0216 |
3670: 30 91 17 02 lds r19, 0x0217 |
3674: 80 91 df 04 lds r24, 0x04DF |
3678: e8 2f mov r30, r24 |
367a: ff 27 eor r31, r31 |
367c: ee 0f add r30, r30 |
367e: ff 1f adc r31, r31 |
3680: e2 55 subi r30, 0x52 ; 82 |
3682: fb 4f sbci r31, 0xFB ; 251 |
3684: 80 81 ld r24, Z |
3686: 91 81 ldd r25, Z+1 ; 0x01 |
3688: 82 59 subi r24, 0x92 ; 146 |
368a: 9f 4f sbci r25, 0xFF ; 255 |
368c: 28 17 cp r18, r24 |
368e: 39 07 cpc r19, r25 |
3690: 1c f4 brge .+6 ; 0x3698 <Mittelwert+0x34c> |
3692: 2f 5f subi r18, 0xFF ; 255 |
3694: 3f 4f sbci r19, 0xFF ; 255 |
3696: 0c c0 rjmp .+24 ; 0x36b0 <Mittelwert+0x364> |
3698: 80 81 ld r24, Z |
369a: 91 81 ldd r25, Z+1 ; 0x01 |
369c: 82 59 subi r24, 0x92 ; 146 |
369e: 9f 4f sbci r25, 0xFF ; 255 |
36a0: 82 17 cp r24, r18 |
36a2: 93 07 cpc r25, r19 |
36a4: 4c f4 brge .+18 ; 0x36b8 <Mittelwert+0x36c> |
36a6: 21 15 cp r18, r1 |
36a8: 31 05 cpc r19, r1 |
36aa: 31 f0 breq .+12 ; 0x36b8 <Mittelwert+0x36c> |
36ac: 21 50 subi r18, 0x01 ; 1 |
36ae: 30 40 sbci r19, 0x00 ; 0 |
36b0: 30 93 17 02 sts 0x0217, r19 |
36b4: 20 93 16 02 sts 0x0216, r18 |
36b8: 20 91 18 02 lds r18, 0x0218 |
36bc: 30 91 19 02 lds r19, 0x0219 |
36c0: 80 91 e0 04 lds r24, 0x04E0 |
36c4: e8 2f mov r30, r24 |
36c6: ff 27 eor r31, r31 |
36c8: ee 0f add r30, r30 |
36ca: ff 1f adc r31, r31 |
36cc: e2 55 subi r30, 0x52 ; 82 |
36ce: fb 4f sbci r31, 0xFB ; 251 |
36d0: 80 81 ld r24, Z |
36d2: 91 81 ldd r25, Z+1 ; 0x01 |
36d4: 82 59 subi r24, 0x92 ; 146 |
36d6: 9f 4f sbci r25, 0xFF ; 255 |
36d8: 28 17 cp r18, r24 |
36da: 39 07 cpc r19, r25 |
36dc: 1c f4 brge .+6 ; 0x36e4 <Mittelwert+0x398> |
36de: 2f 5f subi r18, 0xFF ; 255 |
36e0: 3f 4f sbci r19, 0xFF ; 255 |
36e2: 0c c0 rjmp .+24 ; 0x36fc <Mittelwert+0x3b0> |
36e4: 80 81 ld r24, Z |
36e6: 91 81 ldd r25, Z+1 ; 0x01 |
36e8: 82 59 subi r24, 0x92 ; 146 |
36ea: 9f 4f sbci r25, 0xFF ; 255 |
36ec: 82 17 cp r24, r18 |
36ee: 93 07 cpc r25, r19 |
36f0: 4c f4 brge .+18 ; 0x3704 <Mittelwert+0x3b8> |
36f2: 21 15 cp r18, r1 |
36f4: 31 05 cpc r19, r1 |
36f6: 31 f0 breq .+12 ; 0x3704 <Mittelwert+0x3b8> |
36f8: 21 50 subi r18, 0x01 ; 1 |
36fa: 30 40 sbci r19, 0x00 ; 0 |
36fc: 30 93 19 02 sts 0x0219, r19 |
3700: 20 93 18 02 sts 0x0218, r18 |
3704: 20 91 1a 02 lds r18, 0x021A |
3708: 30 91 1b 02 lds r19, 0x021B |
370c: 80 91 e1 04 lds r24, 0x04E1 |
3710: e8 2f mov r30, r24 |
3712: ff 27 eor r31, r31 |
3714: ee 0f add r30, r30 |
3716: ff 1f adc r31, r31 |
3718: e2 55 subi r30, 0x52 ; 82 |
371a: fb 4f sbci r31, 0xFB ; 251 |
371c: 80 81 ld r24, Z |
371e: 91 81 ldd r25, Z+1 ; 0x01 |
3720: 82 59 subi r24, 0x92 ; 146 |
3722: 9f 4f sbci r25, 0xFF ; 255 |
3724: 28 17 cp r18, r24 |
3726: 39 07 cpc r19, r25 |
3728: 1c f4 brge .+6 ; 0x3730 <Mittelwert+0x3e4> |
372a: 2f 5f subi r18, 0xFF ; 255 |
372c: 3f 4f sbci r19, 0xFF ; 255 |
372e: 0c c0 rjmp .+24 ; 0x3748 <Mittelwert+0x3fc> |
3730: 80 81 ld r24, Z |
3732: 91 81 ldd r25, Z+1 ; 0x01 |
3734: 82 59 subi r24, 0x92 ; 146 |
3736: 9f 4f sbci r25, 0xFF ; 255 |
3738: 82 17 cp r24, r18 |
373a: 93 07 cpc r25, r19 |
373c: 4c f4 brge .+18 ; 0x3750 <Mittelwert+0x404> |
373e: 21 15 cp r18, r1 |
3740: 31 05 cpc r19, r1 |
3742: 31 f0 breq .+12 ; 0x3750 <Mittelwert+0x404> |
3744: 21 50 subi r18, 0x01 ; 1 |
3746: 30 40 sbci r19, 0x00 ; 0 |
3748: 30 93 1b 02 sts 0x021B, r19 |
374c: 20 93 1a 02 sts 0x021A, r18 |
3750: 80 91 14 02 lds r24, 0x0214 |
3754: 90 91 15 02 lds r25, 0x0215 |
3758: 97 ff sbrs r25, 7 |
375a: 05 c0 rjmp .+10 ; 0x3766 <Mittelwert+0x41a> |
375c: 10 92 15 02 sts 0x0215, r1 |
3760: 10 92 14 02 sts 0x0214, r1 |
3764: 0a c0 rjmp .+20 ; 0x377a <Mittelwert+0x42e> |
3766: 8f 3f cpi r24, 0xFF ; 255 |
3768: 91 05 cpc r25, r1 |
376a: 39 f0 breq .+14 ; 0x377a <Mittelwert+0x42e> |
376c: 34 f0 brlt .+12 ; 0x377a <Mittelwert+0x42e> |
376e: 8f ef ldi r24, 0xFF ; 255 |
3770: 90 e0 ldi r25, 0x00 ; 0 |
3772: 90 93 15 02 sts 0x0215, r25 |
3776: 80 93 14 02 sts 0x0214, r24 |
377a: 80 91 16 02 lds r24, 0x0216 |
377e: 90 91 17 02 lds r25, 0x0217 |
3782: 97 ff sbrs r25, 7 |
3784: 05 c0 rjmp .+10 ; 0x3790 <Mittelwert+0x444> |
3786: 10 92 17 02 sts 0x0217, r1 |
378a: 10 92 16 02 sts 0x0216, r1 |
378e: 0a c0 rjmp .+20 ; 0x37a4 <Mittelwert+0x458> |
3790: 8f 3f cpi r24, 0xFF ; 255 |
3792: 91 05 cpc r25, r1 |
3794: 39 f0 breq .+14 ; 0x37a4 <Mittelwert+0x458> |
3796: 34 f0 brlt .+12 ; 0x37a4 <Mittelwert+0x458> |
3798: 8f ef ldi r24, 0xFF ; 255 |
379a: 90 e0 ldi r25, 0x00 ; 0 |
379c: 90 93 17 02 sts 0x0217, r25 |
37a0: 80 93 16 02 sts 0x0216, r24 |
37a4: 80 91 18 02 lds r24, 0x0218 |
37a8: 90 91 19 02 lds r25, 0x0219 |
37ac: 97 ff sbrs r25, 7 |
37ae: 05 c0 rjmp .+10 ; 0x37ba <Mittelwert+0x46e> |
37b0: 10 92 19 02 sts 0x0219, r1 |
37b4: 10 92 18 02 sts 0x0218, r1 |
37b8: 0a c0 rjmp .+20 ; 0x37ce <Mittelwert+0x482> |
37ba: 8f 3f cpi r24, 0xFF ; 255 |
37bc: 91 05 cpc r25, r1 |
37be: 39 f0 breq .+14 ; 0x37ce <Mittelwert+0x482> |
37c0: 34 f0 brlt .+12 ; 0x37ce <Mittelwert+0x482> |
37c2: 8f ef ldi r24, 0xFF ; 255 |
37c4: 90 e0 ldi r25, 0x00 ; 0 |
37c6: 90 93 19 02 sts 0x0219, r25 |
37ca: 80 93 18 02 sts 0x0218, r24 |
37ce: 80 91 1a 02 lds r24, 0x021A |
37d2: 90 91 1b 02 lds r25, 0x021B |
37d6: 97 ff sbrs r25, 7 |
37d8: 05 c0 rjmp .+10 ; 0x37e4 <Mittelwert+0x498> |
37da: 10 92 1b 02 sts 0x021B, r1 |
37de: 10 92 1a 02 sts 0x021A, r1 |
37e2: 0a c0 rjmp .+20 ; 0x37f8 <Mittelwert+0x4ac> |
37e4: 8f 3f cpi r24, 0xFF ; 255 |
37e6: 91 05 cpc r25, r1 |
37e8: 39 f0 breq .+14 ; 0x37f8 <Mittelwert+0x4ac> |
37ea: 34 f0 brlt .+12 ; 0x37f8 <Mittelwert+0x4ac> |
37ec: 8f ef ldi r24, 0xFF ; 255 |
37ee: 90 e0 ldi r25, 0x00 ; 0 |
37f0: 90 93 1b 02 sts 0x021B, r25 |
37f4: 80 93 1a 02 sts 0x021A, r24 |
37f8: 1f 91 pop r17 |
37fa: 0f 91 pop r16 |
37fc: ff 90 pop r15 |
37fe: ef 90 pop r14 |
3800: df 90 pop r13 |
3802: cf 90 pop r12 |
3804: bf 90 pop r11 |
3806: af 90 pop r10 |
3808: 08 95 ret |
0000380a <CalibrierMittelwert>: |
380a: 10 92 7a 00 sts 0x007A, r1 |
380e: 80 91 b9 01 lds r24, 0x01B9 |
3812: 88 23 and r24, r24 |
3814: 69 f0 breq .+26 ; 0x3830 <CalibrierMittelwert+0x26> |
3816: 80 91 ad 01 lds r24, 0x01AD |
381a: 90 91 ae 01 lds r25, 0x01AE |
381e: 60 91 b9 01 lds r22, 0x01B9 |
3822: 77 27 eor r23, r23 |
3824: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
3828: 70 93 17 05 sts 0x0517, r23 |
382c: 60 93 16 05 sts 0x0516, r22 |
3830: 80 91 ba 01 lds r24, 0x01BA |
3834: 88 23 and r24, r24 |
3836: 69 f0 breq .+26 ; 0x3852 <CalibrierMittelwert+0x48> |
3838: 80 91 af 01 lds r24, 0x01AF |
383c: 90 91 b0 01 lds r25, 0x01B0 |
3840: 60 91 ba 01 lds r22, 0x01BA |
3844: 77 27 eor r23, r23 |
3846: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
384a: 70 93 15 05 sts 0x0515, r23 |
384e: 60 93 14 05 sts 0x0514, r22 |
3852: 80 91 bb 01 lds r24, 0x01BB |
3856: 88 23 and r24, r24 |
3858: 69 f0 breq .+26 ; 0x3874 <CalibrierMittelwert+0x6a> |
385a: 80 91 b1 01 lds r24, 0x01B1 |
385e: 90 91 b2 01 lds r25, 0x01B2 |
3862: 60 91 bb 01 lds r22, 0x01BB |
3866: 77 27 eor r23, r23 |
3868: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
386c: 70 93 2b 05 sts 0x052B, r23 |
3870: 60 93 2a 05 sts 0x052A, r22 |
3874: 80 91 bc 01 lds r24, 0x01BC |
3878: 88 23 and r24, r24 |
387a: d1 f0 breq .+52 ; 0x38b0 <CalibrierMittelwert+0xa6> |
387c: 60 91 b5 01 lds r22, 0x01B5 |
3880: 70 91 b6 01 lds r23, 0x01B6 |
3884: 20 91 bc 01 lds r18, 0x01BC |
3888: 88 27 eor r24, r24 |
388a: 77 fd sbrc r23, 7 |
388c: 80 95 com r24 |
388e: 98 2f mov r25, r24 |
3890: f4 e0 ldi r31, 0x04 ; 4 |
3892: 66 0f add r22, r22 |
3894: 77 1f adc r23, r23 |
3896: 88 1f adc r24, r24 |
3898: 99 1f adc r25, r25 |
389a: fa 95 dec r31 |
389c: d1 f7 brne .-12 ; 0x3892 <CalibrierMittelwert+0x88> |
389e: 33 27 eor r19, r19 |
38a0: 44 27 eor r20, r20 |
38a2: 55 27 eor r21, r21 |
38a4: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
38a8: 30 93 28 05 sts 0x0528, r19 |
38ac: 20 93 27 05 sts 0x0527, r18 |
38b0: 80 91 bd 01 lds r24, 0x01BD |
38b4: 88 23 and r24, r24 |
38b6: d1 f0 breq .+52 ; 0x38ec <CalibrierMittelwert+0xe2> |
38b8: 60 91 b3 01 lds r22, 0x01B3 |
38bc: 70 91 b4 01 lds r23, 0x01B4 |
38c0: 20 91 bd 01 lds r18, 0x01BD |
38c4: 88 27 eor r24, r24 |
38c6: 77 fd sbrc r23, 7 |
38c8: 80 95 com r24 |
38ca: 98 2f mov r25, r24 |
38cc: e4 e0 ldi r30, 0x04 ; 4 |
38ce: 66 0f add r22, r22 |
38d0: 77 1f adc r23, r23 |
38d2: 88 1f adc r24, r24 |
38d4: 99 1f adc r25, r25 |
38d6: ea 95 dec r30 |
38d8: d1 f7 brne .-12 ; 0x38ce <CalibrierMittelwert+0xc4> |
38da: 33 27 eor r19, r19 |
38dc: 44 27 eor r20, r20 |
38de: 55 27 eor r21, r21 |
38e0: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
38e4: 30 93 31 05 sts 0x0531, r19 |
38e8: 20 93 30 05 sts 0x0530, r18 |
38ec: 80 91 be 01 lds r24, 0x01BE |
38f0: 88 23 and r24, r24 |
38f2: 99 f0 breq .+38 ; 0x391a <CalibrierMittelwert+0x110> |
38f4: 60 91 b7 01 lds r22, 0x01B7 |
38f8: 70 91 b8 01 lds r23, 0x01B8 |
38fc: 20 91 be 01 lds r18, 0x01BE |
3900: 88 27 eor r24, r24 |
3902: 77 fd sbrc r23, 7 |
3904: 80 95 com r24 |
3906: 98 2f mov r25, r24 |
3908: 33 27 eor r19, r19 |
390a: 44 27 eor r20, r20 |
390c: 55 27 eor r21, r21 |
390e: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
3912: 30 93 1a 05 sts 0x051A, r19 |
3916: 20 93 19 05 sts 0x0519, r18 |
391a: 10 92 ae 01 sts 0x01AE, r1 |
391e: 10 92 ad 01 sts 0x01AD, r1 |
3922: 10 92 b9 01 sts 0x01B9, r1 |
3926: 10 92 b0 01 sts 0x01B0, r1 |
392a: 10 92 af 01 sts 0x01AF, r1 |
392e: 10 92 ba 01 sts 0x01BA, r1 |
3932: 10 92 b2 01 sts 0x01B2, r1 |
3936: 10 92 b1 01 sts 0x01B1, r1 |
393a: 10 92 bb 01 sts 0x01BB, r1 |
393e: 10 92 b4 01 sts 0x01B4, r1 |
3942: 10 92 b3 01 sts 0x01B3, r1 |
3946: 10 92 bd 01 sts 0x01BD, r1 |
394a: 10 92 b6 01 sts 0x01B6, r1 |
394e: 10 92 b5 01 sts 0x01B5, r1 |
3952: 10 92 bc 01 sts 0x01BC, r1 |
3956: 10 92 b8 01 sts 0x01B8, r1 |
395a: 10 92 b7 01 sts 0x01B7, r1 |
395e: 10 92 be 01 sts 0x01BE, r1 |
3962: 8f ec ldi r24, 0xCF ; 207 |
3964: 80 93 7a 00 sts 0x007A, r24 |
3968: 20 91 14 02 lds r18, 0x0214 |
396c: 30 91 15 02 lds r19, 0x0215 |
3970: 80 91 de 04 lds r24, 0x04DE |
3974: e8 2f mov r30, r24 |
3976: ff 27 eor r31, r31 |
3978: ee 0f add r30, r30 |
397a: ff 1f adc r31, r31 |
397c: e2 55 subi r30, 0x52 ; 82 |
397e: fb 4f sbci r31, 0xFB ; 251 |
3980: 80 81 ld r24, Z |
3982: 91 81 ldd r25, Z+1 ; 0x01 |
3984: 82 59 subi r24, 0x92 ; 146 |
3986: 9f 4f sbci r25, 0xFF ; 255 |
3988: 28 17 cp r18, r24 |
398a: 39 07 cpc r19, r25 |
398c: 1c f4 brge .+6 ; 0x3994 <CalibrierMittelwert+0x18a> |
398e: 2f 5f subi r18, 0xFF ; 255 |
3990: 3f 4f sbci r19, 0xFF ; 255 |
3992: 0c c0 rjmp .+24 ; 0x39ac <CalibrierMittelwert+0x1a2> |
3994: 80 81 ld r24, Z |
3996: 91 81 ldd r25, Z+1 ; 0x01 |
3998: 82 59 subi r24, 0x92 ; 146 |
399a: 9f 4f sbci r25, 0xFF ; 255 |
399c: 82 17 cp r24, r18 |
399e: 93 07 cpc r25, r19 |
39a0: 4c f4 brge .+18 ; 0x39b4 <CalibrierMittelwert+0x1aa> |
39a2: 21 15 cp r18, r1 |
39a4: 31 05 cpc r19, r1 |
39a6: 31 f0 breq .+12 ; 0x39b4 <CalibrierMittelwert+0x1aa> |
39a8: 21 50 subi r18, 0x01 ; 1 |
39aa: 30 40 sbci r19, 0x00 ; 0 |
39ac: 30 93 15 02 sts 0x0215, r19 |
39b0: 20 93 14 02 sts 0x0214, r18 |
39b4: 20 91 16 02 lds r18, 0x0216 |
39b8: 30 91 17 02 lds r19, 0x0217 |
39bc: 80 91 df 04 lds r24, 0x04DF |
39c0: e8 2f mov r30, r24 |
39c2: ff 27 eor r31, r31 |
39c4: ee 0f add r30, r30 |
39c6: ff 1f adc r31, r31 |
39c8: e2 55 subi r30, 0x52 ; 82 |
39ca: fb 4f sbci r31, 0xFB ; 251 |
39cc: 80 81 ld r24, Z |
39ce: 91 81 ldd r25, Z+1 ; 0x01 |
39d0: 82 59 subi r24, 0x92 ; 146 |
39d2: 9f 4f sbci r25, 0xFF ; 255 |
39d4: 28 17 cp r18, r24 |
39d6: 39 07 cpc r19, r25 |
39d8: 1c f4 brge .+6 ; 0x39e0 <CalibrierMittelwert+0x1d6> |
39da: 2f 5f subi r18, 0xFF ; 255 |
39dc: 3f 4f sbci r19, 0xFF ; 255 |
39de: 0c c0 rjmp .+24 ; 0x39f8 <CalibrierMittelwert+0x1ee> |
39e0: 80 81 ld r24, Z |
39e2: 91 81 ldd r25, Z+1 ; 0x01 |
39e4: 82 59 subi r24, 0x92 ; 146 |
39e6: 9f 4f sbci r25, 0xFF ; 255 |
39e8: 82 17 cp r24, r18 |
39ea: 93 07 cpc r25, r19 |
39ec: 4c f4 brge .+18 ; 0x3a00 <CalibrierMittelwert+0x1f6> |
39ee: 21 15 cp r18, r1 |
39f0: 31 05 cpc r19, r1 |
39f2: 31 f0 breq .+12 ; 0x3a00 <CalibrierMittelwert+0x1f6> |
39f4: 21 50 subi r18, 0x01 ; 1 |
39f6: 30 40 sbci r19, 0x00 ; 0 |
39f8: 30 93 17 02 sts 0x0217, r19 |
39fc: 20 93 16 02 sts 0x0216, r18 |
3a00: 20 91 18 02 lds r18, 0x0218 |
3a04: 30 91 19 02 lds r19, 0x0219 |
3a08: 80 91 e0 04 lds r24, 0x04E0 |
3a0c: e8 2f mov r30, r24 |
3a0e: ff 27 eor r31, r31 |
3a10: ee 0f add r30, r30 |
3a12: ff 1f adc r31, r31 |
3a14: e2 55 subi r30, 0x52 ; 82 |
3a16: fb 4f sbci r31, 0xFB ; 251 |
3a18: 80 81 ld r24, Z |
3a1a: 91 81 ldd r25, Z+1 ; 0x01 |
3a1c: 82 59 subi r24, 0x92 ; 146 |
3a1e: 9f 4f sbci r25, 0xFF ; 255 |
3a20: 28 17 cp r18, r24 |
3a22: 39 07 cpc r19, r25 |
3a24: 1c f4 brge .+6 ; 0x3a2c <CalibrierMittelwert+0x222> |
3a26: 2f 5f subi r18, 0xFF ; 255 |
3a28: 3f 4f sbci r19, 0xFF ; 255 |
3a2a: 0c c0 rjmp .+24 ; 0x3a44 <CalibrierMittelwert+0x23a> |
3a2c: 80 81 ld r24, Z |
3a2e: 91 81 ldd r25, Z+1 ; 0x01 |
3a30: 82 59 subi r24, 0x92 ; 146 |
3a32: 9f 4f sbci r25, 0xFF ; 255 |
3a34: 82 17 cp r24, r18 |
3a36: 93 07 cpc r25, r19 |
3a38: 4c f4 brge .+18 ; 0x3a4c <CalibrierMittelwert+0x242> |
3a3a: 21 15 cp r18, r1 |
3a3c: 31 05 cpc r19, r1 |
3a3e: 31 f0 breq .+12 ; 0x3a4c <CalibrierMittelwert+0x242> |
3a40: 21 50 subi r18, 0x01 ; 1 |
3a42: 30 40 sbci r19, 0x00 ; 0 |
3a44: 30 93 19 02 sts 0x0219, r19 |
3a48: 20 93 18 02 sts 0x0218, r18 |
3a4c: 20 91 1a 02 lds r18, 0x021A |
3a50: 30 91 1b 02 lds r19, 0x021B |
3a54: 80 91 e1 04 lds r24, 0x04E1 |
3a58: e8 2f mov r30, r24 |
3a5a: ff 27 eor r31, r31 |
3a5c: ee 0f add r30, r30 |
3a5e: ff 1f adc r31, r31 |
3a60: e2 55 subi r30, 0x52 ; 82 |
3a62: fb 4f sbci r31, 0xFB ; 251 |
3a64: 80 81 ld r24, Z |
3a66: 91 81 ldd r25, Z+1 ; 0x01 |
3a68: 82 59 subi r24, 0x92 ; 146 |
3a6a: 9f 4f sbci r25, 0xFF ; 255 |
3a6c: 28 17 cp r18, r24 |
3a6e: 39 07 cpc r19, r25 |
3a70: 1c f4 brge .+6 ; 0x3a78 <CalibrierMittelwert+0x26e> |
3a72: 2f 5f subi r18, 0xFF ; 255 |
3a74: 3f 4f sbci r19, 0xFF ; 255 |
3a76: 0c c0 rjmp .+24 ; 0x3a90 <CalibrierMittelwert+0x286> |
3a78: 80 81 ld r24, Z |
3a7a: 91 81 ldd r25, Z+1 ; 0x01 |
3a7c: 82 59 subi r24, 0x92 ; 146 |
3a7e: 9f 4f sbci r25, 0xFF ; 255 |
3a80: 82 17 cp r24, r18 |
3a82: 93 07 cpc r25, r19 |
3a84: 4c f4 brge .+18 ; 0x3a98 <CalibrierMittelwert+0x28e> |
3a86: 21 15 cp r18, r1 |
3a88: 31 05 cpc r19, r1 |
3a8a: 31 f0 breq .+12 ; 0x3a98 <CalibrierMittelwert+0x28e> |
3a8c: 21 50 subi r18, 0x01 ; 1 |
3a8e: 30 40 sbci r19, 0x00 ; 0 |
3a90: 30 93 1b 02 sts 0x021B, r19 |
3a94: 20 93 1a 02 sts 0x021A, r18 |
3a98: 80 91 14 02 lds r24, 0x0214 |
3a9c: 90 91 15 02 lds r25, 0x0215 |
3aa0: 97 ff sbrs r25, 7 |
3aa2: 05 c0 rjmp .+10 ; 0x3aae <CalibrierMittelwert+0x2a4> |
3aa4: 10 92 15 02 sts 0x0215, r1 |
3aa8: 10 92 14 02 sts 0x0214, r1 |
3aac: 0a c0 rjmp .+20 ; 0x3ac2 <CalibrierMittelwert+0x2b8> |
3aae: 8f 3f cpi r24, 0xFF ; 255 |
3ab0: 91 05 cpc r25, r1 |
3ab2: 39 f0 breq .+14 ; 0x3ac2 <CalibrierMittelwert+0x2b8> |
3ab4: 34 f0 brlt .+12 ; 0x3ac2 <CalibrierMittelwert+0x2b8> |
3ab6: 8f ef ldi r24, 0xFF ; 255 |
3ab8: 90 e0 ldi r25, 0x00 ; 0 |
3aba: 90 93 15 02 sts 0x0215, r25 |
3abe: 80 93 14 02 sts 0x0214, r24 |
3ac2: 80 91 16 02 lds r24, 0x0216 |
3ac6: 90 91 17 02 lds r25, 0x0217 |
3aca: 97 ff sbrs r25, 7 |
3acc: 05 c0 rjmp .+10 ; 0x3ad8 <CalibrierMittelwert+0x2ce> |
3ace: 10 92 17 02 sts 0x0217, r1 |
3ad2: 10 92 16 02 sts 0x0216, r1 |
3ad6: 0a c0 rjmp .+20 ; 0x3aec <CalibrierMittelwert+0x2e2> |
3ad8: 8f 3f cpi r24, 0xFF ; 255 |
3ada: 91 05 cpc r25, r1 |
3adc: 39 f0 breq .+14 ; 0x3aec <CalibrierMittelwert+0x2e2> |
3ade: 34 f0 brlt .+12 ; 0x3aec <CalibrierMittelwert+0x2e2> |
3ae0: 8f ef ldi r24, 0xFF ; 255 |
3ae2: 90 e0 ldi r25, 0x00 ; 0 |
3ae4: 90 93 17 02 sts 0x0217, r25 |
3ae8: 80 93 16 02 sts 0x0216, r24 |
3aec: 80 91 18 02 lds r24, 0x0218 |
3af0: 90 91 19 02 lds r25, 0x0219 |
3af4: 97 ff sbrs r25, 7 |
3af6: 05 c0 rjmp .+10 ; 0x3b02 <CalibrierMittelwert+0x2f8> |
3af8: 10 92 19 02 sts 0x0219, r1 |
3afc: 10 92 18 02 sts 0x0218, r1 |
3b00: 0a c0 rjmp .+20 ; 0x3b16 <CalibrierMittelwert+0x30c> |
3b02: 8f 3f cpi r24, 0xFF ; 255 |
3b04: 91 05 cpc r25, r1 |
3b06: 39 f0 breq .+14 ; 0x3b16 <CalibrierMittelwert+0x30c> |
3b08: 34 f0 brlt .+12 ; 0x3b16 <CalibrierMittelwert+0x30c> |
3b0a: 8f ef ldi r24, 0xFF ; 255 |
3b0c: 90 e0 ldi r25, 0x00 ; 0 |
3b0e: 90 93 19 02 sts 0x0219, r25 |
3b12: 80 93 18 02 sts 0x0218, r24 |
3b16: 80 91 1a 02 lds r24, 0x021A |
3b1a: 90 91 1b 02 lds r25, 0x021B |
3b1e: 97 ff sbrs r25, 7 |
3b20: 05 c0 rjmp .+10 ; 0x3b2c <CalibrierMittelwert+0x322> |
3b22: 10 92 1b 02 sts 0x021B, r1 |
3b26: 10 92 1a 02 sts 0x021A, r1 |
3b2a: 08 95 ret |
3b2c: 8f 3f cpi r24, 0xFF ; 255 |
3b2e: 91 05 cpc r25, r1 |
3b30: 39 f0 breq .+14 ; 0x3b40 <CalibrierMittelwert+0x336> |
3b32: 34 f0 brlt .+12 ; 0x3b40 <CalibrierMittelwert+0x336> |
3b34: 8f ef ldi r24, 0xFF ; 255 |
3b36: 90 e0 ldi r25, 0x00 ; 0 |
3b38: 90 93 1b 02 sts 0x021B, r25 |
3b3c: 80 93 1a 02 sts 0x021A, r24 |
3b40: 08 95 ret |
00003b42 <ParameterZuordnung>: |
3b42: 1f 93 push r17 |
3b44: 80 91 e5 04 lds r24, 0x04E5 |
3b48: 8b 3f cpi r24, 0xFB ; 251 |
3b4a: 98 f0 brcs .+38 ; 0x3b72 <ParameterZuordnung+0x30> |
3b4c: 8b 3f cpi r24, 0xFB ; 251 |
3b4e: 19 f4 brne .+6 ; 0x3b56 <ParameterZuordnung+0x14> |
3b50: 80 91 14 02 lds r24, 0x0214 |
3b54: 0e c0 rjmp .+28 ; 0x3b72 <ParameterZuordnung+0x30> |
3b56: 8c 3f cpi r24, 0xFC ; 252 |
3b58: 19 f4 brne .+6 ; 0x3b60 <ParameterZuordnung+0x1e> |
3b5a: 80 91 16 02 lds r24, 0x0216 |
3b5e: 09 c0 rjmp .+18 ; 0x3b72 <ParameterZuordnung+0x30> |
3b60: 8d 3f cpi r24, 0xFD ; 253 |
3b62: 19 f4 brne .+6 ; 0x3b6a <ParameterZuordnung+0x28> |
3b64: 80 91 18 02 lds r24, 0x0218 |
3b68: 04 c0 rjmp .+8 ; 0x3b72 <ParameterZuordnung+0x30> |
3b6a: 8e 3f cpi r24, 0xFE ; 254 |
3b6c: 21 f4 brne .+8 ; 0x3b76 <ParameterZuordnung+0x34> |
3b6e: 80 91 1a 02 lds r24, 0x021A |
3b72: 80 93 81 01 sts 0x0181, r24 |
3b76: 80 91 81 01 lds r24, 0x0181 |
3b7a: 88 23 and r24, r24 |
3b7c: 19 f4 brne .+6 ; 0x3b84 <ParameterZuordnung+0x42> |
3b7e: 10 92 81 01 sts 0x0181, r1 |
3b82: 04 c0 rjmp .+8 ; 0x3b8c <ParameterZuordnung+0x4a> |
3b84: 8f 3f cpi r24, 0xFF ; 255 |
3b86: 11 f4 brne .+4 ; 0x3b8c <ParameterZuordnung+0x4a> |
3b88: 80 93 81 01 sts 0x0181, r24 |
3b8c: 80 91 e4 04 lds r24, 0x04E4 |
3b90: 8b 3f cpi r24, 0xFB ; 251 |
3b92: 98 f0 brcs .+38 ; 0x3bba <ParameterZuordnung+0x78> |
3b94: 8b 3f cpi r24, 0xFB ; 251 |
3b96: 19 f4 brne .+6 ; 0x3b9e <ParameterZuordnung+0x5c> |
3b98: 80 91 14 02 lds r24, 0x0214 |
3b9c: 0e c0 rjmp .+28 ; 0x3bba <ParameterZuordnung+0x78> |
3b9e: 8c 3f cpi r24, 0xFC ; 252 |
3ba0: 19 f4 brne .+6 ; 0x3ba8 <ParameterZuordnung+0x66> |
3ba2: 80 91 16 02 lds r24, 0x0216 |
3ba6: 09 c0 rjmp .+18 ; 0x3bba <ParameterZuordnung+0x78> |
3ba8: 8d 3f cpi r24, 0xFD ; 253 |
3baa: 19 f4 brne .+6 ; 0x3bb2 <ParameterZuordnung+0x70> |
3bac: 80 91 18 02 lds r24, 0x0218 |
3bb0: 04 c0 rjmp .+8 ; 0x3bba <ParameterZuordnung+0x78> |
3bb2: 8e 3f cpi r24, 0xFE ; 254 |
3bb4: 21 f4 brne .+8 ; 0x3bbe <ParameterZuordnung+0x7c> |
3bb6: 80 91 1a 02 lds r24, 0x021A |
3bba: 80 93 80 01 sts 0x0180, r24 |
3bbe: 80 91 80 01 lds r24, 0x0180 |
3bc2: 88 23 and r24, r24 |
3bc4: 19 f4 brne .+6 ; 0x3bcc <ParameterZuordnung+0x8a> |
3bc6: 10 92 80 01 sts 0x0180, r1 |
3bca: 05 c0 rjmp .+10 ; 0x3bd6 <ParameterZuordnung+0x94> |
3bcc: 84 36 cpi r24, 0x64 ; 100 |
3bce: 18 f0 brcs .+6 ; 0x3bd6 <ParameterZuordnung+0x94> |
3bd0: 84 e6 ldi r24, 0x64 ; 100 |
3bd2: 80 93 80 01 sts 0x0180, r24 |
3bd6: 80 91 e6 04 lds r24, 0x04E6 |
3bda: 8b 3f cpi r24, 0xFB ; 251 |
3bdc: 98 f0 brcs .+38 ; 0x3c04 <ParameterZuordnung+0xc2> |
3bde: 8b 3f cpi r24, 0xFB ; 251 |
3be0: 19 f4 brne .+6 ; 0x3be8 <ParameterZuordnung+0xa6> |
3be2: 80 91 14 02 lds r24, 0x0214 |
3be6: 0e c0 rjmp .+28 ; 0x3c04 <ParameterZuordnung+0xc2> |
3be8: 8c 3f cpi r24, 0xFC ; 252 |
3bea: 19 f4 brne .+6 ; 0x3bf2 <ParameterZuordnung+0xb0> |
3bec: 80 91 16 02 lds r24, 0x0216 |
3bf0: 09 c0 rjmp .+18 ; 0x3c04 <ParameterZuordnung+0xc2> |
3bf2: 8d 3f cpi r24, 0xFD ; 253 |
3bf4: 19 f4 brne .+6 ; 0x3bfc <ParameterZuordnung+0xba> |
3bf6: 80 91 18 02 lds r24, 0x0218 |
3bfa: 04 c0 rjmp .+8 ; 0x3c04 <ParameterZuordnung+0xc2> |
3bfc: 8e 3f cpi r24, 0xFE ; 254 |
3bfe: 21 f4 brne .+8 ; 0x3c08 <ParameterZuordnung+0xc6> |
3c00: 80 91 1a 02 lds r24, 0x021A |
3c04: 80 93 82 01 sts 0x0182, r24 |
3c08: 80 91 82 01 lds r24, 0x0182 |
3c0c: 88 23 and r24, r24 |
3c0e: 19 f4 brne .+6 ; 0x3c16 <ParameterZuordnung+0xd4> |
3c10: 10 92 82 01 sts 0x0182, r1 |
3c14: 05 c0 rjmp .+10 ; 0x3c20 <ParameterZuordnung+0xde> |
3c16: 84 36 cpi r24, 0x64 ; 100 |
3c18: 18 f0 brcs .+6 ; 0x3c20 <ParameterZuordnung+0xde> |
3c1a: 84 e6 ldi r24, 0x64 ; 100 |
3c1c: 80 93 82 01 sts 0x0182, r24 |
3c20: 80 91 e8 04 lds r24, 0x04E8 |
3c24: 8b 3f cpi r24, 0xFB ; 251 |
3c26: 98 f0 brcs .+38 ; 0x3c4e <ParameterZuordnung+0x10c> |
3c28: 8b 3f cpi r24, 0xFB ; 251 |
3c2a: 19 f4 brne .+6 ; 0x3c32 <ParameterZuordnung+0xf0> |
3c2c: 80 91 14 02 lds r24, 0x0214 |
3c30: 0e c0 rjmp .+28 ; 0x3c4e <ParameterZuordnung+0x10c> |
3c32: 8c 3f cpi r24, 0xFC ; 252 |
3c34: 19 f4 brne .+6 ; 0x3c3c <ParameterZuordnung+0xfa> |
3c36: 80 91 16 02 lds r24, 0x0216 |
3c3a: 09 c0 rjmp .+18 ; 0x3c4e <ParameterZuordnung+0x10c> |
3c3c: 8d 3f cpi r24, 0xFD ; 253 |
3c3e: 19 f4 brne .+6 ; 0x3c46 <ParameterZuordnung+0x104> |
3c40: 80 91 18 02 lds r24, 0x0218 |
3c44: 04 c0 rjmp .+8 ; 0x3c4e <ParameterZuordnung+0x10c> |
3c46: 8e 3f cpi r24, 0xFE ; 254 |
3c48: 21 f4 brne .+8 ; 0x3c52 <ParameterZuordnung+0x110> |
3c4a: 80 91 1a 02 lds r24, 0x021A |
3c4e: 80 93 83 01 sts 0x0183, r24 |
3c52: 80 91 83 01 lds r24, 0x0183 |
3c56: 88 23 and r24, r24 |
3c58: 19 f4 brne .+6 ; 0x3c60 <ParameterZuordnung+0x11e> |
3c5a: 10 92 83 01 sts 0x0183, r1 |
3c5e: 04 c0 rjmp .+8 ; 0x3c68 <ParameterZuordnung+0x126> |
3c60: 8f 3f cpi r24, 0xFF ; 255 |
3c62: 11 f4 brne .+4 ; 0x3c68 <ParameterZuordnung+0x126> |
3c64: 80 93 83 01 sts 0x0183, r24 |
3c68: 80 91 ef 04 lds r24, 0x04EF |
3c6c: 8b 3f cpi r24, 0xFB ; 251 |
3c6e: 98 f0 brcs .+38 ; 0x3c96 <ParameterZuordnung+0x154> |
3c70: 8b 3f cpi r24, 0xFB ; 251 |
3c72: 19 f4 brne .+6 ; 0x3c7a <ParameterZuordnung+0x138> |
3c74: 80 91 14 02 lds r24, 0x0214 |
3c78: 0e c0 rjmp .+28 ; 0x3c96 <ParameterZuordnung+0x154> |
3c7a: 8c 3f cpi r24, 0xFC ; 252 |
3c7c: 19 f4 brne .+6 ; 0x3c84 <ParameterZuordnung+0x142> |
3c7e: 80 91 16 02 lds r24, 0x0216 |
3c82: 09 c0 rjmp .+18 ; 0x3c96 <ParameterZuordnung+0x154> |
3c84: 8d 3f cpi r24, 0xFD ; 253 |
3c86: 19 f4 brne .+6 ; 0x3c8e <ParameterZuordnung+0x14c> |
3c88: 80 91 18 02 lds r24, 0x0218 |
3c8c: 04 c0 rjmp .+8 ; 0x3c96 <ParameterZuordnung+0x154> |
3c8e: 8e 3f cpi r24, 0xFE ; 254 |
3c90: 21 f4 brne .+8 ; 0x3c9a <ParameterZuordnung+0x158> |
3c92: 80 91 1a 02 lds r24, 0x021A |
3c96: 80 93 84 01 sts 0x0184, r24 |
3c9a: 80 91 84 01 lds r24, 0x0184 |
3c9e: 88 23 and r24, r24 |
3ca0: 19 f4 brne .+6 ; 0x3ca8 <ParameterZuordnung+0x166> |
3ca2: 10 92 84 01 sts 0x0184, r1 |
3ca6: 04 c0 rjmp .+8 ; 0x3cb0 <ParameterZuordnung+0x16e> |
3ca8: 8f 3f cpi r24, 0xFF ; 255 |
3caa: 11 f4 brne .+4 ; 0x3cb0 <ParameterZuordnung+0x16e> |
3cac: 80 93 84 01 sts 0x0184, r24 |
3cb0: 80 91 f0 04 lds r24, 0x04F0 |
3cb4: 8b 3f cpi r24, 0xFB ; 251 |
3cb6: 98 f0 brcs .+38 ; 0x3cde <ParameterZuordnung+0x19c> |
3cb8: 8b 3f cpi r24, 0xFB ; 251 |
3cba: 19 f4 brne .+6 ; 0x3cc2 <ParameterZuordnung+0x180> |
3cbc: 80 91 14 02 lds r24, 0x0214 |
3cc0: 0e c0 rjmp .+28 ; 0x3cde <ParameterZuordnung+0x19c> |
3cc2: 8c 3f cpi r24, 0xFC ; 252 |
3cc4: 19 f4 brne .+6 ; 0x3ccc <ParameterZuordnung+0x18a> |
3cc6: 80 91 16 02 lds r24, 0x0216 |
3cca: 09 c0 rjmp .+18 ; 0x3cde <ParameterZuordnung+0x19c> |
3ccc: 8d 3f cpi r24, 0xFD ; 253 |
3cce: 19 f4 brne .+6 ; 0x3cd6 <ParameterZuordnung+0x194> |
3cd0: 80 91 18 02 lds r24, 0x0218 |
3cd4: 04 c0 rjmp .+8 ; 0x3cde <ParameterZuordnung+0x19c> |
3cd6: 8e 3f cpi r24, 0xFE ; 254 |
3cd8: 21 f4 brne .+8 ; 0x3ce2 <ParameterZuordnung+0x1a0> |
3cda: 80 91 1a 02 lds r24, 0x021A |
3cde: 80 93 85 01 sts 0x0185, r24 |
3ce2: 80 91 85 01 lds r24, 0x0185 |
3ce6: 8b 30 cpi r24, 0x0B ; 11 |
3ce8: 10 f4 brcc .+4 ; 0x3cee <ParameterZuordnung+0x1ac> |
3cea: 8a e0 ldi r24, 0x0A ; 10 |
3cec: 02 c0 rjmp .+4 ; 0x3cf2 <ParameterZuordnung+0x1b0> |
3cee: 8f 3f cpi r24, 0xFF ; 255 |
3cf0: 11 f4 brne .+4 ; 0x3cf6 <ParameterZuordnung+0x1b4> |
3cf2: 80 93 85 01 sts 0x0185, r24 |
3cf6: 80 91 f1 04 lds r24, 0x04F1 |
3cfa: 8b 3f cpi r24, 0xFB ; 251 |
3cfc: 98 f0 brcs .+38 ; 0x3d24 <ParameterZuordnung+0x1e2> |
3cfe: 8b 3f cpi r24, 0xFB ; 251 |
3d00: 19 f4 brne .+6 ; 0x3d08 <ParameterZuordnung+0x1c6> |
3d02: 80 91 14 02 lds r24, 0x0214 |
3d06: 0e c0 rjmp .+28 ; 0x3d24 <ParameterZuordnung+0x1e2> |
3d08: 8c 3f cpi r24, 0xFC ; 252 |
3d0a: 19 f4 brne .+6 ; 0x3d12 <ParameterZuordnung+0x1d0> |
3d0c: 80 91 16 02 lds r24, 0x0216 |
3d10: 09 c0 rjmp .+18 ; 0x3d24 <ParameterZuordnung+0x1e2> |
3d12: 8d 3f cpi r24, 0xFD ; 253 |
3d14: 19 f4 brne .+6 ; 0x3d1c <ParameterZuordnung+0x1da> |
3d16: 80 91 18 02 lds r24, 0x0218 |
3d1a: 04 c0 rjmp .+8 ; 0x3d24 <ParameterZuordnung+0x1e2> |
3d1c: 8e 3f cpi r24, 0xFE ; 254 |
3d1e: 21 f4 brne .+8 ; 0x3d28 <ParameterZuordnung+0x1e6> |
3d20: 80 91 1a 02 lds r24, 0x021A |
3d24: 80 93 86 01 sts 0x0186, r24 |
3d28: 80 91 86 01 lds r24, 0x0186 |
3d2c: 88 23 and r24, r24 |
3d2e: 19 f4 brne .+6 ; 0x3d36 <ParameterZuordnung+0x1f4> |
3d30: 10 92 86 01 sts 0x0186, r1 |
3d34: 04 c0 rjmp .+8 ; 0x3d3e <ParameterZuordnung+0x1fc> |
3d36: 8f 3f cpi r24, 0xFF ; 255 |
3d38: 11 f4 brne .+4 ; 0x3d3e <ParameterZuordnung+0x1fc> |
3d3a: 80 93 86 01 sts 0x0186, r24 |
3d3e: 80 91 f6 04 lds r24, 0x04F6 |
3d42: 8b 3f cpi r24, 0xFB ; 251 |
3d44: 98 f0 brcs .+38 ; 0x3d6c <ParameterZuordnung+0x22a> |
3d46: 8b 3f cpi r24, 0xFB ; 251 |
3d48: 19 f4 brne .+6 ; 0x3d50 <ParameterZuordnung+0x20e> |
3d4a: 80 91 14 02 lds r24, 0x0214 |
3d4e: 0e c0 rjmp .+28 ; 0x3d6c <ParameterZuordnung+0x22a> |
3d50: 8c 3f cpi r24, 0xFC ; 252 |
3d52: 19 f4 brne .+6 ; 0x3d5a <ParameterZuordnung+0x218> |
3d54: 80 91 16 02 lds r24, 0x0216 |
3d58: 09 c0 rjmp .+18 ; 0x3d6c <ParameterZuordnung+0x22a> |
3d5a: 8d 3f cpi r24, 0xFD ; 253 |
3d5c: 19 f4 brne .+6 ; 0x3d64 <ParameterZuordnung+0x222> |
3d5e: 80 91 18 02 lds r24, 0x0218 |
3d62: 04 c0 rjmp .+8 ; 0x3d6c <ParameterZuordnung+0x22a> |
3d64: 8e 3f cpi r24, 0xFE ; 254 |
3d66: 21 f4 brne .+8 ; 0x3d70 <ParameterZuordnung+0x22e> |
3d68: 80 91 1a 02 lds r24, 0x021A |
3d6c: 80 93 88 01 sts 0x0188, r24 |
3d70: 80 91 88 01 lds r24, 0x0188 |
3d74: 88 23 and r24, r24 |
3d76: 19 f4 brne .+6 ; 0x3d7e <ParameterZuordnung+0x23c> |
3d78: 10 92 88 01 sts 0x0188, r1 |
3d7c: 04 c0 rjmp .+8 ; 0x3d86 <ParameterZuordnung+0x244> |
3d7e: 8f 3f cpi r24, 0xFF ; 255 |
3d80: 11 f4 brne .+4 ; 0x3d86 <ParameterZuordnung+0x244> |
3d82: 80 93 88 01 sts 0x0188, r24 |
3d86: 80 91 f7 04 lds r24, 0x04F7 |
3d8a: 8b 3f cpi r24, 0xFB ; 251 |
3d8c: 98 f0 brcs .+38 ; 0x3db4 <ParameterZuordnung+0x272> |
3d8e: 8b 3f cpi r24, 0xFB ; 251 |
3d90: 19 f4 brne .+6 ; 0x3d98 <ParameterZuordnung+0x256> |
3d92: 80 91 14 02 lds r24, 0x0214 |
3d96: 0e c0 rjmp .+28 ; 0x3db4 <ParameterZuordnung+0x272> |
3d98: 8c 3f cpi r24, 0xFC ; 252 |
3d9a: 19 f4 brne .+6 ; 0x3da2 <ParameterZuordnung+0x260> |
3d9c: 80 91 16 02 lds r24, 0x0216 |
3da0: 09 c0 rjmp .+18 ; 0x3db4 <ParameterZuordnung+0x272> |
3da2: 8d 3f cpi r24, 0xFD ; 253 |
3da4: 19 f4 brne .+6 ; 0x3dac <ParameterZuordnung+0x26a> |
3da6: 80 91 18 02 lds r24, 0x0218 |
3daa: 04 c0 rjmp .+8 ; 0x3db4 <ParameterZuordnung+0x272> |
3dac: 8e 3f cpi r24, 0xFE ; 254 |
3dae: 21 f4 brne .+8 ; 0x3db8 <ParameterZuordnung+0x276> |
3db0: 80 91 1a 02 lds r24, 0x021A |
3db4: 80 93 28 02 sts 0x0228, r24 |
3db8: 80 91 28 02 lds r24, 0x0228 |
3dbc: 88 23 and r24, r24 |
3dbe: 19 f4 brne .+6 ; 0x3dc6 <ParameterZuordnung+0x284> |
3dc0: 10 92 28 02 sts 0x0228, r1 |
3dc4: 04 c0 rjmp .+8 ; 0x3dce <ParameterZuordnung+0x28c> |
3dc6: 8f 3f cpi r24, 0xFF ; 255 |
3dc8: 11 f4 brne .+4 ; 0x3dce <ParameterZuordnung+0x28c> |
3dca: 80 93 28 02 sts 0x0228, r24 |
3dce: 80 91 f8 04 lds r24, 0x04F8 |
3dd2: 8b 3f cpi r24, 0xFB ; 251 |
3dd4: 98 f0 brcs .+38 ; 0x3dfc <ParameterZuordnung+0x2ba> |
3dd6: 8b 3f cpi r24, 0xFB ; 251 |
3dd8: 19 f4 brne .+6 ; 0x3de0 <ParameterZuordnung+0x29e> |
3dda: 80 91 14 02 lds r24, 0x0214 |
3dde: 0e c0 rjmp .+28 ; 0x3dfc <ParameterZuordnung+0x2ba> |
3de0: 8c 3f cpi r24, 0xFC ; 252 |
3de2: 19 f4 brne .+6 ; 0x3dea <ParameterZuordnung+0x2a8> |
3de4: 80 91 16 02 lds r24, 0x0216 |
3de8: 09 c0 rjmp .+18 ; 0x3dfc <ParameterZuordnung+0x2ba> |
3dea: 8d 3f cpi r24, 0xFD ; 253 |
3dec: 19 f4 brne .+6 ; 0x3df4 <ParameterZuordnung+0x2b2> |
3dee: 80 91 18 02 lds r24, 0x0218 |
3df2: 04 c0 rjmp .+8 ; 0x3dfc <ParameterZuordnung+0x2ba> |
3df4: 8e 3f cpi r24, 0xFE ; 254 |
3df6: 21 f4 brne .+8 ; 0x3e00 <ParameterZuordnung+0x2be> |
3df8: 80 91 1a 02 lds r24, 0x021A |
3dfc: 80 93 29 02 sts 0x0229, r24 |
3e00: 80 91 29 02 lds r24, 0x0229 |
3e04: 88 23 and r24, r24 |
3e06: 19 f4 brne .+6 ; 0x3e0e <ParameterZuordnung+0x2cc> |
3e08: 10 92 29 02 sts 0x0229, r1 |
3e0c: 04 c0 rjmp .+8 ; 0x3e16 <ParameterZuordnung+0x2d4> |
3e0e: 8f 3f cpi r24, 0xFF ; 255 |
3e10: 11 f4 brne .+4 ; 0x3e16 <ParameterZuordnung+0x2d4> |
3e12: 80 93 29 02 sts 0x0229, r24 |
3e16: 80 91 f9 04 lds r24, 0x04F9 |
3e1a: 8b 3f cpi r24, 0xFB ; 251 |
3e1c: 98 f0 brcs .+38 ; 0x3e44 <ParameterZuordnung+0x302> |
3e1e: 8b 3f cpi r24, 0xFB ; 251 |
3e20: 19 f4 brne .+6 ; 0x3e28 <ParameterZuordnung+0x2e6> |
3e22: 80 91 14 02 lds r24, 0x0214 |
3e26: 0e c0 rjmp .+28 ; 0x3e44 <ParameterZuordnung+0x302> |
3e28: 8c 3f cpi r24, 0xFC ; 252 |
3e2a: 19 f4 brne .+6 ; 0x3e32 <ParameterZuordnung+0x2f0> |
3e2c: 80 91 16 02 lds r24, 0x0216 |
3e30: 09 c0 rjmp .+18 ; 0x3e44 <ParameterZuordnung+0x302> |
3e32: 8d 3f cpi r24, 0xFD ; 253 |
3e34: 19 f4 brne .+6 ; 0x3e3c <ParameterZuordnung+0x2fa> |
3e36: 80 91 18 02 lds r24, 0x0218 |
3e3a: 04 c0 rjmp .+8 ; 0x3e44 <ParameterZuordnung+0x302> |
3e3c: 8e 3f cpi r24, 0xFE ; 254 |
3e3e: 21 f4 brne .+8 ; 0x3e48 <ParameterZuordnung+0x306> |
3e40: 80 91 1a 02 lds r24, 0x021A |
3e44: 80 93 2a 02 sts 0x022A, r24 |
3e48: 80 91 2a 02 lds r24, 0x022A |
3e4c: 88 23 and r24, r24 |
3e4e: 19 f4 brne .+6 ; 0x3e56 <ParameterZuordnung+0x314> |
3e50: 10 92 2a 02 sts 0x022A, r1 |
3e54: 04 c0 rjmp .+8 ; 0x3e5e <ParameterZuordnung+0x31c> |
3e56: 8f 3f cpi r24, 0xFF ; 255 |
3e58: 11 f4 brne .+4 ; 0x3e5e <ParameterZuordnung+0x31c> |
3e5a: 80 93 2a 02 sts 0x022A, r24 |
3e5e: 80 91 fa 04 lds r24, 0x04FA |
3e62: 8b 3f cpi r24, 0xFB ; 251 |
3e64: 98 f0 brcs .+38 ; 0x3e8c <ParameterZuordnung+0x34a> |
3e66: 8b 3f cpi r24, 0xFB ; 251 |
3e68: 19 f4 brne .+6 ; 0x3e70 <ParameterZuordnung+0x32e> |
3e6a: 80 91 14 02 lds r24, 0x0214 |
3e6e: 0e c0 rjmp .+28 ; 0x3e8c <ParameterZuordnung+0x34a> |
3e70: 8c 3f cpi r24, 0xFC ; 252 |
3e72: 19 f4 brne .+6 ; 0x3e7a <ParameterZuordnung+0x338> |
3e74: 80 91 16 02 lds r24, 0x0216 |
3e78: 09 c0 rjmp .+18 ; 0x3e8c <ParameterZuordnung+0x34a> |
3e7a: 8d 3f cpi r24, 0xFD ; 253 |
3e7c: 19 f4 brne .+6 ; 0x3e84 <ParameterZuordnung+0x342> |
3e7e: 80 91 18 02 lds r24, 0x0218 |
3e82: 04 c0 rjmp .+8 ; 0x3e8c <ParameterZuordnung+0x34a> |
3e84: 8e 3f cpi r24, 0xFE ; 254 |
3e86: 21 f4 brne .+8 ; 0x3e90 <ParameterZuordnung+0x34e> |
3e88: 80 91 1a 02 lds r24, 0x021A |
3e8c: 80 93 2b 02 sts 0x022B, r24 |
3e90: 80 91 2b 02 lds r24, 0x022B |
3e94: 88 23 and r24, r24 |
3e96: 19 f4 brne .+6 ; 0x3e9e <ParameterZuordnung+0x35c> |
3e98: 10 92 2b 02 sts 0x022B, r1 |
3e9c: 04 c0 rjmp .+8 ; 0x3ea6 <ParameterZuordnung+0x364> |
3e9e: 8f 3f cpi r24, 0xFF ; 255 |
3ea0: 11 f4 brne .+4 ; 0x3ea6 <ParameterZuordnung+0x364> |
3ea2: 80 93 2b 02 sts 0x022B, r24 |
3ea6: 90 91 fb 04 lds r25, 0x04FB |
3eaa: 9b 3f cpi r25, 0xFB ; 251 |
3eac: b0 f0 brcs .+44 ; 0x3eda <ParameterZuordnung+0x398> |
3eae: 9b 3f cpi r25, 0xFB ; 251 |
3eb0: 19 f4 brne .+6 ; 0x3eb8 <ParameterZuordnung+0x376> |
3eb2: 80 91 14 02 lds r24, 0x0214 |
3eb6: 04 c0 rjmp .+8 ; 0x3ec0 <ParameterZuordnung+0x37e> |
3eb8: 9c 3f cpi r25, 0xFC ; 252 |
3eba: 29 f4 brne .+10 ; 0x3ec6 <ParameterZuordnung+0x384> |
3ebc: 80 91 16 02 lds r24, 0x0216 |
3ec0: 80 93 89 01 sts 0x0189, r24 |
3ec4: 0c c0 rjmp .+24 ; 0x3ede <ParameterZuordnung+0x39c> |
3ec6: 9d 3f cpi r25, 0xFD ; 253 |
3ec8: 19 f4 brne .+6 ; 0x3ed0 <ParameterZuordnung+0x38e> |
3eca: 80 91 18 02 lds r24, 0x0218 |
3ece: f8 cf rjmp .-16 ; 0x3ec0 <ParameterZuordnung+0x37e> |
3ed0: 9e 3f cpi r25, 0xFE ; 254 |
3ed2: 29 f4 brne .+10 ; 0x3ede <ParameterZuordnung+0x39c> |
3ed4: 80 91 1a 02 lds r24, 0x021A |
3ed8: f3 cf rjmp .-26 ; 0x3ec0 <ParameterZuordnung+0x37e> |
3eda: 90 93 89 01 sts 0x0189, r25 |
3ede: 80 91 89 01 lds r24, 0x0189 |
3ee2: 88 23 and r24, r24 |
3ee4: 19 f4 brne .+6 ; 0x3eec <ParameterZuordnung+0x3aa> |
3ee6: 10 92 89 01 sts 0x0189, r1 |
3eea: 04 c0 rjmp .+8 ; 0x3ef4 <ParameterZuordnung+0x3b2> |
3eec: 8f 3f cpi r24, 0xFF ; 255 |
3eee: 11 f4 brne .+4 ; 0x3ef4 <ParameterZuordnung+0x3b2> |
3ef0: 80 93 89 01 sts 0x0189, r24 |
3ef4: 9b 3f cpi r25, 0xFB ; 251 |
3ef6: b0 f0 brcs .+44 ; 0x3f24 <ParameterZuordnung+0x3e2> |
3ef8: 9b 3f cpi r25, 0xFB ; 251 |
3efa: 19 f4 brne .+6 ; 0x3f02 <ParameterZuordnung+0x3c0> |
3efc: 80 91 14 02 lds r24, 0x0214 |
3f00: 04 c0 rjmp .+8 ; 0x3f0a <ParameterZuordnung+0x3c8> |
3f02: 9c 3f cpi r25, 0xFC ; 252 |
3f04: 29 f4 brne .+10 ; 0x3f10 <ParameterZuordnung+0x3ce> |
3f06: 80 91 16 02 lds r24, 0x0216 |
3f0a: 80 93 89 01 sts 0x0189, r24 |
3f0e: 0c c0 rjmp .+24 ; 0x3f28 <ParameterZuordnung+0x3e6> |
3f10: 9d 3f cpi r25, 0xFD ; 253 |
3f12: 19 f4 brne .+6 ; 0x3f1a <ParameterZuordnung+0x3d8> |
3f14: 80 91 18 02 lds r24, 0x0218 |
3f18: f8 cf rjmp .-16 ; 0x3f0a <ParameterZuordnung+0x3c8> |
3f1a: 9e 3f cpi r25, 0xFE ; 254 |
3f1c: 29 f4 brne .+10 ; 0x3f28 <ParameterZuordnung+0x3e6> |
3f1e: 80 91 1a 02 lds r24, 0x021A |
3f22: f3 cf rjmp .-26 ; 0x3f0a <ParameterZuordnung+0x3c8> |
3f24: 90 93 89 01 sts 0x0189, r25 |
3f28: 80 91 89 01 lds r24, 0x0189 |
3f2c: 88 23 and r24, r24 |
3f2e: 19 f4 brne .+6 ; 0x3f36 <ParameterZuordnung+0x3f4> |
3f30: 10 92 89 01 sts 0x0189, r1 |
3f34: 04 c0 rjmp .+8 ; 0x3f3e <ParameterZuordnung+0x3fc> |
3f36: 8f 3f cpi r24, 0xFF ; 255 |
3f38: 11 f4 brne .+4 ; 0x3f3e <ParameterZuordnung+0x3fc> |
3f3a: 80 93 89 01 sts 0x0189, r24 |
3f3e: 9b 3f cpi r25, 0xFB ; 251 |
3f40: b0 f0 brcs .+44 ; 0x3f6e <ParameterZuordnung+0x42c> |
3f42: 9b 3f cpi r25, 0xFB ; 251 |
3f44: 19 f4 brne .+6 ; 0x3f4c <ParameterZuordnung+0x40a> |
3f46: 80 91 14 02 lds r24, 0x0214 |
3f4a: 04 c0 rjmp .+8 ; 0x3f54 <ParameterZuordnung+0x412> |
3f4c: 9c 3f cpi r25, 0xFC ; 252 |
3f4e: 29 f4 brne .+10 ; 0x3f5a <ParameterZuordnung+0x418> |
3f50: 80 91 16 02 lds r24, 0x0216 |
3f54: 80 93 89 01 sts 0x0189, r24 |
3f58: 0c c0 rjmp .+24 ; 0x3f72 <ParameterZuordnung+0x430> |
3f5a: 9d 3f cpi r25, 0xFD ; 253 |
3f5c: 19 f4 brne .+6 ; 0x3f64 <ParameterZuordnung+0x422> |
3f5e: 80 91 18 02 lds r24, 0x0218 |
3f62: f8 cf rjmp .-16 ; 0x3f54 <ParameterZuordnung+0x412> |
3f64: 9e 3f cpi r25, 0xFE ; 254 |
3f66: 29 f4 brne .+10 ; 0x3f72 <ParameterZuordnung+0x430> |
3f68: 80 91 1a 02 lds r24, 0x021A |
3f6c: f3 cf rjmp .-26 ; 0x3f54 <ParameterZuordnung+0x412> |
3f6e: 90 93 89 01 sts 0x0189, r25 |
3f72: 80 91 89 01 lds r24, 0x0189 |
3f76: 88 23 and r24, r24 |
3f78: 19 f4 brne .+6 ; 0x3f80 <ParameterZuordnung+0x43e> |
3f7a: 10 92 89 01 sts 0x0189, r1 |
3f7e: 04 c0 rjmp .+8 ; 0x3f88 <ParameterZuordnung+0x446> |
3f80: 8f 3f cpi r24, 0xFF ; 255 |
3f82: 11 f4 brne .+4 ; 0x3f88 <ParameterZuordnung+0x446> |
3f84: 80 93 89 01 sts 0x0189, r24 |
3f88: 10 91 88 01 lds r17, 0x0188 |
3f8c: 61 2f mov r22, r17 |
3f8e: 77 27 eor r23, r23 |
3f90: 67 fd sbrc r22, 7 |
3f92: 70 95 com r23 |
3f94: 87 2f mov r24, r23 |
3f96: 97 2f mov r25, r23 |
3f98: 0e 94 9d 2d call 0x5b3a ; 0x5b3a <__floatsisf> |
3f9c: 17 ff sbrs r17, 7 |
3f9e: 06 c0 rjmp .+12 ; 0x3fac <ParameterZuordnung+0x46a> |
3fa0: 20 e0 ldi r18, 0x00 ; 0 |
3fa2: 30 e0 ldi r19, 0x00 ; 0 |
3fa4: 40 e8 ldi r20, 0x80 ; 128 |
3fa6: 53 e4 ldi r21, 0x43 ; 67 |
3fa8: 0e 94 f8 2c call 0x59f0 ; 0x59f0 <__addsf3> |
3fac: 27 e1 ldi r18, 0x17 ; 23 |
3fae: 37 eb ldi r19, 0xB7 ; 183 |
3fb0: 41 ed ldi r20, 0xD1 ; 209 |
3fb2: 58 e3 ldi r21, 0x38 ; 56 |
3fb4: 0e 94 17 2e call 0x5c2e ; 0x5c2e <__mulsf3> |
3fb8: 60 93 7c 01 sts 0x017C, r22 |
3fbc: 70 93 7d 01 sts 0x017D, r23 |
3fc0: 80 93 7e 01 sts 0x017E, r24 |
3fc4: 90 93 7f 01 sts 0x017F, r25 |
3fc8: 80 91 ed 04 lds r24, 0x04ED |
3fcc: 80 93 29 05 sts 0x0529, r24 |
3fd0: 80 91 ec 04 lds r24, 0x04EC |
3fd4: 80 93 18 05 sts 0x0518, r24 |
3fd8: 1f 91 pop r17 |
3fda: 08 95 ret |
00003fdc <DefaultKonstanten2>: |
3fdc: 81 e0 ldi r24, 0x01 ; 1 |
3fde: 80 93 da 04 sts 0x04DA, r24 |
3fe2: 42 e0 ldi r20, 0x02 ; 2 |
3fe4: 40 93 db 04 sts 0x04DB, r20 |
3fe8: 83 e0 ldi r24, 0x03 ; 3 |
3fea: 80 93 dc 04 sts 0x04DC, r24 |
3fee: 94 e0 ldi r25, 0x04 ; 4 |
3ff0: 90 93 dd 04 sts 0x04DD, r25 |
3ff4: 35 e0 ldi r19, 0x05 ; 5 |
3ff6: 30 93 de 04 sts 0x04DE, r19 |
3ffa: 86 e0 ldi r24, 0x06 ; 6 |
3ffc: 80 93 df 04 sts 0x04DF, r24 |
4000: 87 e0 ldi r24, 0x07 ; 7 |
4002: 80 93 e0 04 sts 0x04E0, r24 |
4006: 10 92 e2 04 sts 0x04E2, r1 |
400a: 8e e1 ldi r24, 0x1E ; 30 |
400c: 80 93 e3 04 sts 0x04E3, r24 |
4010: 8b ef ldi r24, 0xFB ; 251 |
4012: 80 93 e5 04 sts 0x04E5, r24 |
4016: 8a e0 ldi r24, 0x0A ; 10 |
4018: 80 93 e6 04 sts 0x04E6, r24 |
401c: 22 e3 ldi r18, 0x32 ; 50 |
401e: 20 93 e4 04 sts 0x04E4, r18 |
4022: 20 93 e8 04 sts 0x04E8, r18 |
4026: 40 93 e7 04 sts 0x04E7, r20 |
402a: 90 93 e9 04 sts 0x04E9, r25 |
402e: 10 92 ea 04 sts 0x04EA, r1 |
4032: 90 e1 ldi r25, 0x10 ; 16 |
4034: 90 93 eb 04 sts 0x04EB, r25 |
4038: 8f e0 ldi r24, 0x0F ; 15 |
403a: 80 93 ec 04 sts 0x04EC, r24 |
403e: 8a ef ldi r24, 0xFA ; 250 |
4040: 80 93 ed 04 sts 0x04ED, r24 |
4044: 8a e1 ldi r24, 0x1A ; 26 |
4046: 80 93 ee 04 sts 0x04EE, r24 |
404a: 90 93 ef 04 sts 0x04EF, r25 |
404e: 8f ea ldi r24, 0xAF ; 175 |
4050: 80 93 f0 04 sts 0x04F0, r24 |
4054: 80 93 f1 04 sts 0x04F1, r24 |
4058: 8a e5 ldi r24, 0x5A ; 90 |
405a: 80 93 f2 04 sts 0x04F2, r24 |
405e: 83 e2 ldi r24, 0x23 ; 35 |
4060: 80 93 f3 04 sts 0x04F3, r24 |
4064: 84 e1 ldi r24, 0x14 ; 20 |
4066: 80 93 f4 04 sts 0x04F4, r24 |
406a: 10 92 f5 04 sts 0x04F5, r1 |
406e: 30 93 f6 04 sts 0x04F6, r19 |
4072: 82 eb ldi r24, 0xB2 ; 178 |
4074: 80 93 f7 04 sts 0x04F7, r24 |
4078: 10 92 f8 04 sts 0x04F8, r1 |
407c: 10 92 f9 04 sts 0x04F9, r1 |
4080: 10 92 fa 04 sts 0x04FA, r1 |
4084: 84 e6 ldi r24, 0x64 ; 100 |
4086: 80 93 fb 04 sts 0x04FB, r24 |
408a: 88 e2 ldi r24, 0x28 ; 40 |
408c: 80 93 fc 04 sts 0x04FC, r24 |
4090: 10 92 00 05 sts 0x0500, r1 |
4094: 20 93 fd 04 sts 0x04FD, r18 |
4098: 86 e9 ldi r24, 0x96 ; 150 |
409a: 80 93 fe 04 sts 0x04FE, r24 |
409e: 30 93 ff 04 sts 0x04FF, r19 |
40a2: a8 e0 ldi r26, 0x08 ; 8 |
40a4: b5 e0 ldi r27, 0x05 ; 5 |
40a6: e8 e6 ldi r30, 0x68 ; 104 |
40a8: f1 e0 ldi r31, 0x01 ; 1 |
40aa: 8c e0 ldi r24, 0x0C ; 12 |
40ac: 01 90 ld r0, Z+ |
40ae: 0d 92 st X+, r0 |
40b0: 81 50 subi r24, 0x01 ; 1 |
40b2: e1 f7 brne .-8 ; 0x40ac <DefaultKonstanten2+0xd0> |
40b4: 08 95 ret |
000040b6 <DefaultKonstanten1>: |
40b6: 81 e0 ldi r24, 0x01 ; 1 |
40b8: 80 93 da 04 sts 0x04DA, r24 |
40bc: 52 e0 ldi r21, 0x02 ; 2 |
40be: 50 93 db 04 sts 0x04DB, r21 |
40c2: 83 e0 ldi r24, 0x03 ; 3 |
40c4: 80 93 dc 04 sts 0x04DC, r24 |
40c8: 44 e0 ldi r20, 0x04 ; 4 |
40ca: 40 93 dd 04 sts 0x04DD, r20 |
40ce: 35 e0 ldi r19, 0x05 ; 5 |
40d0: 30 93 de 04 sts 0x04DE, r19 |
40d4: 86 e0 ldi r24, 0x06 ; 6 |
40d6: 80 93 df 04 sts 0x04DF, r24 |
40da: 87 e0 ldi r24, 0x07 ; 7 |
40dc: 80 93 e0 04 sts 0x04E0, r24 |
40e0: 28 e0 ldi r18, 0x08 ; 8 |
40e2: 20 93 e1 04 sts 0x04E1, r18 |
40e6: 10 92 e2 04 sts 0x04E2, r1 |
40ea: 9e e1 ldi r25, 0x1E ; 30 |
40ec: 90 93 e3 04 sts 0x04E3, r25 |
40f0: 8b ef ldi r24, 0xFB ; 251 |
40f2: 80 93 e5 04 sts 0x04E5, r24 |
40f6: 8a e0 ldi r24, 0x0A ; 10 |
40f8: 80 93 e6 04 sts 0x04E6, r24 |
40fc: 86 e4 ldi r24, 0x46 ; 70 |
40fe: 80 93 e4 04 sts 0x04E4, r24 |
4102: 90 93 e8 04 sts 0x04E8, r25 |
4106: 50 93 e7 04 sts 0x04E7, r21 |
410a: 40 93 e9 04 sts 0x04E9, r20 |
410e: 20 93 ea 04 sts 0x04EA, r18 |
4112: 90 e1 ldi r25, 0x10 ; 16 |
4114: 90 93 eb 04 sts 0x04EB, r25 |
4118: 8f e0 ldi r24, 0x0F ; 15 |
411a: 80 93 ec 04 sts 0x04EC, r24 |
411e: 8a ef ldi r24, 0xFA ; 250 |
4120: 80 93 ed 04 sts 0x04ED, r24 |
4124: 8a e1 ldi r24, 0x1A ; 26 |
4126: 80 93 ee 04 sts 0x04EE, r24 |
412a: 90 93 ef 04 sts 0x04EF, r25 |
412e: 88 e7 ldi r24, 0x78 ; 120 |
4130: 80 93 f0 04 sts 0x04F0, r24 |
4134: 96 e9 ldi r25, 0x96 ; 150 |
4136: 90 93 f1 04 sts 0x04F1, r25 |
413a: 8a e5 ldi r24, 0x5A ; 90 |
413c: 80 93 f2 04 sts 0x04F2, r24 |
4140: 83 e2 ldi r24, 0x23 ; 35 |
4142: 80 93 f3 04 sts 0x04F3, r24 |
4146: 84 e1 ldi r24, 0x14 ; 20 |
4148: 80 93 f4 04 sts 0x04F4, r24 |
414c: 10 92 f5 04 sts 0x04F5, r1 |
4150: 30 93 f6 04 sts 0x04F6, r19 |
4154: 82 eb ldi r24, 0xB2 ; 178 |
4156: 80 93 f7 04 sts 0x04F7, r24 |
415a: 10 92 f8 04 sts 0x04F8, r1 |
415e: 10 92 f9 04 sts 0x04F9, r1 |
4162: 10 92 fa 04 sts 0x04FA, r1 |
4166: 84 e6 ldi r24, 0x64 ; 100 |
4168: 80 93 fb 04 sts 0x04FB, r24 |
416c: 88 e2 ldi r24, 0x28 ; 40 |
416e: 80 93 fc 04 sts 0x04FC, r24 |
4172: 10 92 00 05 sts 0x0500, r1 |
4176: 82 e3 ldi r24, 0x32 ; 50 |
4178: 80 93 fd 04 sts 0x04FD, r24 |
417c: 90 93 fe 04 sts 0x04FE, r25 |
4180: 30 93 ff 04 sts 0x04FF, r19 |
4184: a8 e0 ldi r26, 0x08 ; 8 |
4186: b5 e0 ldi r27, 0x05 ; 5 |
4188: e0 e7 ldi r30, 0x70 ; 112 |
418a: f1 e0 ldi r31, 0x01 ; 1 |
418c: 8c e0 ldi r24, 0x0C ; 12 |
418e: 01 90 ld r0, Z+ |
4190: 0d 92 st X+, r0 |
4192: 81 50 subi r24, 0x01 ; 1 |
4194: e1 f7 brne .-8 ; 0x418e <DefaultKonstanten1+0xd8> |
4196: 08 95 ret |
00004198 <SendMotorData>: |
4198: 80 91 23 02 lds r24, 0x0223 |
419c: 88 23 and r24, r24 |
419e: 01 f5 brne .+64 ; 0x41e0 <SendMotorData+0x48> |
41a0: 10 92 66 02 sts 0x0266, r1 |
41a4: 10 92 65 02 sts 0x0265, r1 |
41a8: 10 92 69 02 sts 0x0269, r1 |
41ac: 10 92 6b 02 sts 0x026B, r1 |
41b0: 80 91 96 01 lds r24, 0x0196 |
41b4: 88 23 and r24, r24 |
41b6: 11 f0 breq .+4 ; 0x41bc <SendMotorData+0x24> |
41b8: 80 93 65 02 sts 0x0265, r24 |
41bc: 80 91 97 01 lds r24, 0x0197 |
41c0: 88 23 and r24, r24 |
41c2: 11 f0 breq .+4 ; 0x41c8 <SendMotorData+0x30> |
41c4: 80 93 66 02 sts 0x0266, r24 |
41c8: 80 91 98 01 lds r24, 0x0198 |
41cc: 88 23 and r24, r24 |
41ce: 11 f0 breq .+4 ; 0x41d4 <SendMotorData+0x3c> |
41d0: 80 93 6b 02 sts 0x026B, r24 |
41d4: 80 91 99 01 lds r24, 0x0199 |
41d8: 88 23 and r24, r24 |
41da: 11 f0 breq .+4 ; 0x41e0 <SendMotorData+0x48> |
41dc: 80 93 69 02 sts 0x0269, r24 |
41e0: 80 91 65 02 lds r24, 0x0265 |
41e4: 99 27 eor r25, r25 |
41e6: 90 93 79 04 sts 0x0479, r25 |
41ea: 80 93 78 04 sts 0x0478, r24 |
41ee: 80 91 66 02 lds r24, 0x0266 |
41f2: 99 27 eor r25, r25 |
41f4: 90 93 7b 04 sts 0x047B, r25 |
41f8: 80 93 7a 04 sts 0x047A, r24 |
41fc: 80 91 6b 02 lds r24, 0x026B |
4200: 99 27 eor r25, r25 |
4202: 90 93 7d 04 sts 0x047D, r25 |
4206: 80 93 7c 04 sts 0x047C, r24 |
420a: 80 91 69 02 lds r24, 0x0269 |
420e: 99 27 eor r25, r25 |
4210: 90 93 7f 04 sts 0x047F, r25 |
4214: 80 93 7e 04 sts 0x047E, r24 |
4218: 10 92 cb 01 sts 0x01CB, r1 |
421c: 10 92 cc 01 sts 0x01CC, r1 |
4220: 0e 94 4c 18 call 0x3098 ; 0x3098 <i2c_start> |
4224: 08 95 ret |
00004226 <SetNeutral>: |
4226: cf 93 push r28 |
4228: df 93 push r29 |
422a: 10 92 20 05 sts 0x0520, r1 |
422e: 10 92 1f 05 sts 0x051F, r1 |
4232: 10 92 22 05 sts 0x0522, r1 |
4236: 10 92 21 05 sts 0x0521, r1 |
423a: 80 e0 ldi r24, 0x00 ; 0 |
423c: 90 e0 ldi r25, 0x00 ; 0 |
423e: a0 e0 ldi r26, 0x00 ; 0 |
4240: b0 e0 ldi r27, 0x00 ; 0 |
4242: 80 93 23 05 sts 0x0523, r24 |
4246: 90 93 24 05 sts 0x0524, r25 |
424a: a0 93 25 05 sts 0x0525, r26 |
424e: b0 93 26 05 sts 0x0526, r27 |
4252: 10 92 d4 01 sts 0x01D4, r1 |
4256: 10 92 d3 01 sts 0x01D3, r1 |
425a: 10 92 d6 01 sts 0x01D6, r1 |
425e: 10 92 d5 01 sts 0x01D5, r1 |
4262: 10 92 d8 01 sts 0x01D8, r1 |
4266: 10 92 d7 01 sts 0x01D7, r1 |
426a: 0e 94 05 1c call 0x380a ; 0x380a <CalibrierMittelwert> |
426e: 85 e0 ldi r24, 0x05 ; 5 |
4270: 90 e0 ldi r25, 0x00 ; 0 |
4272: 0e 94 9d 0b call 0x173a ; 0x173a <SetDelay> |
4276: ec 01 movw r28, r24 |
4278: ce 01 movw r24, r28 |
427a: 0e 94 a6 0b call 0x174c ; 0x174c <CheckDelay> |
427e: 88 23 and r24, r24 |
4280: d9 f3 breq .-10 ; 0x4278 <SetNeutral+0x52> |
4282: 0e 94 05 1c call 0x380a ; 0x380a <CalibrierMittelwert> |
4286: 80 91 e2 04 lds r24, 0x04E2 |
428a: 80 ff sbrs r24, 0 |
428c: 10 c0 rjmp .+32 ; 0x42ae <SetNeutral+0x88> |
428e: 80 91 0a 01 lds r24, 0x010A |
4292: 90 91 0b 01 lds r25, 0x010B |
4296: 87 5b subi r24, 0xB7 ; 183 |
4298: 93 40 sbci r25, 0x03 ; 3 |
429a: 38 f4 brcc .+14 ; 0x42aa <SetNeutral+0x84> |
429c: 80 91 0a 01 lds r24, 0x010A |
42a0: 90 91 0b 01 lds r25, 0x010B |
42a4: 8e 5e subi r24, 0xEE ; 238 |
42a6: 92 40 sbci r25, 0x02 ; 2 |
42a8: 10 f4 brcc .+4 ; 0x42ae <SetNeutral+0x88> |
42aa: 0e 94 0e 10 call 0x201c ; 0x201c <SucheLuftruckOffset> |
42ae: 80 91 16 05 lds r24, 0x0516 |
42b2: 90 91 17 05 lds r25, 0x0517 |
42b6: 97 ff sbrs r25, 7 |
42b8: 03 c0 rjmp .+6 ; 0x42c0 <SetNeutral+0x9a> |
42ba: 90 95 com r25 |
42bc: 81 95 neg r24 |
42be: 9f 4f sbci r25, 0xFF ; 255 |
42c0: 90 93 d4 01 sts 0x01D4, r25 |
42c4: 80 93 d3 01 sts 0x01D3, r24 |
42c8: 80 91 14 05 lds r24, 0x0514 |
42cc: 90 91 15 05 lds r25, 0x0515 |
42d0: 97 ff sbrs r25, 7 |
42d2: 03 c0 rjmp .+6 ; 0x42da <SetNeutral+0xb4> |
42d4: 90 95 com r25 |
42d6: 81 95 neg r24 |
42d8: 9f 4f sbci r25, 0xFF ; 255 |
42da: 90 93 d6 01 sts 0x01D6, r25 |
42de: 80 93 d5 01 sts 0x01D5, r24 |
42e2: 80 91 2a 05 lds r24, 0x052A |
42e6: 90 91 2b 05 lds r25, 0x052B |
42ea: 97 ff sbrs r25, 7 |
42ec: 03 c0 rjmp .+6 ; 0x42f4 <SetNeutral+0xce> |
42ee: 90 95 com r25 |
42f0: 81 95 neg r24 |
42f2: 9f 4f sbci r25, 0xFF ; 255 |
42f4: 90 93 d8 01 sts 0x01D8, r25 |
42f8: 80 93 d7 01 sts 0x01D7, r24 |
42fc: 88 e0 ldi r24, 0x08 ; 8 |
42fe: ef e1 ldi r30, 0x1F ; 31 |
4300: f5 e0 ldi r31, 0x05 ; 5 |
4302: a5 e3 ldi r26, 0x35 ; 53 |
4304: b1 e0 ldi r27, 0x01 ; 1 |
4306: 18 2e mov r1, r24 |
4308: 0e 94 27 2f call 0x5e4e ; 0x5e4e <__eeprom_read_block_1F2021> |
430c: 10 92 ef 01 sts 0x01EF, r1 |
4310: 10 92 f0 01 sts 0x01F0, r1 |
4314: 10 92 f1 01 sts 0x01F1, r1 |
4318: 10 92 f2 01 sts 0x01F2, r1 |
431c: 10 92 f3 01 sts 0x01F3, r1 |
4320: 10 92 f4 01 sts 0x01F4, r1 |
4324: 10 92 f5 01 sts 0x01F5, r1 |
4328: 10 92 f6 01 sts 0x01F6, r1 |
432c: 10 92 f7 01 sts 0x01F7, r1 |
4330: 10 92 f8 01 sts 0x01F8, r1 |
4334: 10 92 f9 01 sts 0x01F9, r1 |
4338: 10 92 fa 01 sts 0x01FA, r1 |
433c: 10 92 fb 01 sts 0x01FB, r1 |
4340: 10 92 fc 01 sts 0x01FC, r1 |
4344: 10 92 fd 01 sts 0x01FD, r1 |
4348: 10 92 fe 01 sts 0x01FE, r1 |
434c: 10 92 ff 01 sts 0x01FF, r1 |
4350: 10 92 00 02 sts 0x0200, r1 |
4354: 10 92 01 02 sts 0x0201, r1 |
4358: 10 92 02 02 sts 0x0202, r1 |
435c: 10 92 17 05 sts 0x0517, r1 |
4360: 10 92 16 05 sts 0x0516, r1 |
4364: 10 92 15 05 sts 0x0515, r1 |
4368: 10 92 14 05 sts 0x0514, r1 |
436c: 10 92 2b 05 sts 0x052B, r1 |
4370: 10 92 2a 05 sts 0x052A, r1 |
4374: 80 91 06 01 lds r24, 0x0106 |
4378: 90 91 07 01 lds r25, 0x0107 |
437c: a0 91 08 01 lds r26, 0x0108 |
4380: b0 91 09 01 lds r27, 0x0109 |
4384: 90 93 86 04 sts 0x0486, r25 |
4388: 80 93 85 04 sts 0x0485, r24 |
438c: 10 92 c0 01 sts 0x01C0, r1 |
4390: 10 92 bf 01 sts 0x01BF, r1 |
4394: 10 92 07 02 sts 0x0207, r1 |
4398: 10 92 08 02 sts 0x0208, r1 |
439c: 10 92 09 02 sts 0x0209, r1 |
43a0: 10 92 0a 02 sts 0x020A, r1 |
43a4: 80 91 0b 02 lds r24, 0x020B |
43a8: 90 91 0c 02 lds r25, 0x020C |
43ac: 90 93 0e 02 sts 0x020E, r25 |
43b0: 80 93 0d 02 sts 0x020D, r24 |
43b4: 0e 94 c0 2c call 0x5980 ; 0x5980 <GPS_Neutral> |
43b8: 82 e3 ldi r24, 0x32 ; 50 |
43ba: 90 e0 ldi r25, 0x00 ; 0 |
43bc: 90 93 a7 01 sts 0x01A7, r25 |
43c0: 80 93 a6 01 sts 0x01A6, r24 |
43c4: df 91 pop r29 |
43c6: cf 91 pop r28 |
43c8: 08 95 ret |
000043ca <calib_acc>: |
43ca: cf 93 push r28 |
43cc: df 93 push r29 |
43ce: 10 92 20 05 sts 0x0520, r1 |
43d2: 10 92 1f 05 sts 0x051F, r1 |
43d6: 10 92 22 05 sts 0x0522, r1 |
43da: 10 92 21 05 sts 0x0521, r1 |
43de: 80 e0 ldi r24, 0x00 ; 0 |
43e0: 90 e0 ldi r25, 0x00 ; 0 |
43e2: a0 e0 ldi r26, 0x00 ; 0 |
43e4: b0 e0 ldi r27, 0x00 ; 0 |
43e6: 80 93 23 05 sts 0x0523, r24 |
43ea: 90 93 24 05 sts 0x0524, r25 |
43ee: a0 93 25 05 sts 0x0525, r26 |
43f2: b0 93 26 05 sts 0x0526, r27 |
43f6: 0e 94 05 1c call 0x380a ; 0x380a <CalibrierMittelwert> |
43fa: 85 e0 ldi r24, 0x05 ; 5 |
43fc: 90 e0 ldi r25, 0x00 ; 0 |
43fe: 0e 94 9d 0b call 0x173a ; 0x173a <SetDelay> |
4402: ec 01 movw r28, r24 |
4404: ce 01 movw r24, r28 |
4406: 0e 94 a6 0b call 0x174c ; 0x174c <CheckDelay> |
440a: 88 23 and r24, r24 |
440c: d9 f3 breq .-10 ; 0x4404 <calib_acc+0x3a> |
440e: 0e 94 05 1c call 0x380a ; 0x380a <CalibrierMittelwert> |
4412: 80 91 27 05 lds r24, 0x0527 |
4416: 90 91 28 05 lds r25, 0x0528 |
441a: 97 ff sbrs r25, 7 |
441c: 03 c0 rjmp .+6 ; 0x4424 <calib_acc+0x5a> |
441e: 90 95 com r25 |
4420: 81 95 neg r24 |
4422: 9f 4f sbci r25, 0xFF ; 255 |
4424: 60 e1 ldi r22, 0x10 ; 16 |
4426: 70 e0 ldi r23, 0x00 ; 0 |
4428: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
442c: cf e1 ldi r28, 0x1F ; 31 |
442e: d5 e0 ldi r29, 0x05 ; 5 |
4430: 70 93 20 05 sts 0x0520, r23 |
4434: 60 93 1f 05 sts 0x051F, r22 |
4438: 80 91 30 05 lds r24, 0x0530 |
443c: 90 91 31 05 lds r25, 0x0531 |
4440: 97 ff sbrs r25, 7 |
4442: 03 c0 rjmp .+6 ; 0x444a <calib_acc+0x80> |
4444: 90 95 com r25 |
4446: 81 95 neg r24 |
4448: 9f 4f sbci r25, 0xFF ; 255 |
444a: 60 e1 ldi r22, 0x10 ; 16 |
444c: 70 e0 ldi r23, 0x00 ; 0 |
444e: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
4452: 70 93 22 05 sts 0x0522, r23 |
4456: 60 93 21 05 sts 0x0521, r22 |
445a: 60 91 83 04 lds r22, 0x0483 |
445e: 70 91 84 04 lds r23, 0x0484 |
4462: 88 27 eor r24, r24 |
4464: 77 fd sbrc r23, 7 |
4466: 80 95 com r24 |
4468: 98 2f mov r25, r24 |
446a: 0e 94 9d 2d call 0x5b3a ; 0x5b3a <__floatsisf> |
446e: 60 93 23 05 sts 0x0523, r22 |
4472: 70 93 24 05 sts 0x0524, r23 |
4476: 80 93 25 05 sts 0x0525, r24 |
447a: 90 93 26 05 sts 0x0526, r25 |
447e: 88 e0 ldi r24, 0x08 ; 8 |
4480: a5 e3 ldi r26, 0x35 ; 53 |
4482: b1 e0 ldi r27, 0x01 ; 1 |
4484: fe 01 movw r30, r28 |
4486: 18 2e mov r1, r24 |
4488: 0e 94 38 2f call 0x5e70 ; 0x5e70 <__eeprom_write_block_1F2021> |
448c: df 91 pop r29 |
448e: cf 91 pop r28 |
4490: 08 95 ret |
00004492 <Piep>: |
4492: 1f 93 push r17 |
4494: 18 2f mov r17, r24 |
4496: 0e c0 rjmp .+28 ; 0x44b4 <Piep+0x22> |
4498: 80 91 23 02 lds r24, 0x0223 |
449c: 88 23 and r24, r24 |
449e: 61 f4 brne .+24 ; 0x44b8 <Piep+0x26> |
44a0: 84 e6 ldi r24, 0x64 ; 100 |
44a2: 90 e0 ldi r25, 0x00 ; 0 |
44a4: 90 93 a7 01 sts 0x01A7, r25 |
44a8: 80 93 a6 01 sts 0x01A6, r24 |
44ac: 8a ef ldi r24, 0xFA ; 250 |
44ae: 90 e0 ldi r25, 0x00 ; 0 |
44b0: 0e 94 e0 0c call 0x19c0 ; 0x19c0 <Delay_ms> |
44b4: 11 50 subi r17, 0x01 ; 1 |
44b6: 80 f7 brcc .-32 ; 0x4498 <Piep+0x6> |
44b8: 1f 91 pop r17 |
44ba: 08 95 ret |
000044bc <MotorRegler>: |
44bc: a4 e0 ldi r26, 0x04 ; 4 |
44be: b0 e0 ldi r27, 0x00 ; 0 |
44c0: e4 e6 ldi r30, 0x64 ; 100 |
44c2: f2 e2 ldi r31, 0x22 ; 34 |
44c4: 0c 94 e2 2e jmp 0x5dc4 ; 0x5dc4 <__prologue_saves__> |
44c8: 0e 94 a6 19 call 0x334c ; 0x334c <Mittelwert> |
44cc: 29 9a sbi 0x05, 1 ; 5 |
44ce: e0 91 dc 04 lds r30, 0x04DC |
44d2: ae 2f mov r26, r30 |
44d4: bb 27 eor r27, r27 |
44d6: aa 0f add r26, r26 |
44d8: bb 1f adc r27, r27 |
44da: a2 55 subi r26, 0x52 ; 82 |
44dc: bb 4f sbci r27, 0xFB ; 251 |
44de: 0d 90 ld r0, X+ |
44e0: bc 91 ld r27, X |
44e2: a0 2d mov r26, r0 |
44e4: 9d 01 movw r18, r26 |
44e6: 28 58 subi r18, 0x88 ; 136 |
44e8: 3f 4f sbci r19, 0xFF ; 255 |
44ea: 3a 83 std Y+2, r19 ; 0x02 |
44ec: 29 83 std Y+1, r18 ; 0x01 |
44ee: 37 ff sbrs r19, 7 |
44f0: 02 c0 rjmp .+4 ; 0x44f6 <MotorRegler+0x3a> |
44f2: 1a 82 std Y+2, r1 ; 0x02 |
44f4: 19 82 std Y+1, r1 ; 0x01 |
44f6: 80 91 1c 02 lds r24, 0x021C |
44fa: 84 36 cpi r24, 0x64 ; 100 |
44fc: 08 f0 brcs .+2 ; 0x4500 <MotorRegler+0x44> |
44fe: 4a c0 rjmp .+148 ; 0x4594 <MotorRegler+0xd8> |
4500: 80 91 01 01 lds r24, 0x0101 |
4504: 88 23 and r24, r24 |
4506: 31 f4 brne .+12 ; 0x4514 <MotorRegler+0x58> |
4508: 84 ef ldi r24, 0xF4 ; 244 |
450a: 91 e0 ldi r25, 0x01 ; 1 |
450c: 90 93 a7 01 sts 0x01A7, r25 |
4510: 80 93 a6 01 sts 0x01A6, r24 |
4514: 80 91 35 02 lds r24, 0x0235 |
4518: 90 91 36 02 lds r25, 0x0236 |
451c: 00 97 sbiw r24, 0x00 ; 0 |
451e: 31 f0 breq .+12 ; 0x452c <MotorRegler+0x70> |
4520: 01 97 sbiw r24, 0x01 ; 1 |
4522: 90 93 36 02 sts 0x0236, r25 |
4526: 80 93 35 02 sts 0x0235, r24 |
452a: 04 c0 rjmp .+8 ; 0x4534 <MotorRegler+0x78> |
452c: 10 92 23 02 sts 0x0223, r1 |
4530: 10 92 12 02 sts 0x0212, r1 |
4534: 28 9a sbi 0x05, 0 ; 5 |
4536: 80 91 30 02 lds r24, 0x0230 |
453a: 90 91 31 02 lds r25, 0x0231 |
453e: 81 5d subi r24, 0xD1 ; 209 |
4540: 97 40 sbci r25, 0x07 ; 7 |
4542: 28 f1 brcs .+74 ; 0x458e <MotorRegler+0xd2> |
4544: 80 91 f3 04 lds r24, 0x04F3 |
4548: 48 2f mov r20, r24 |
454a: 55 27 eor r21, r21 |
454c: 5a 83 std Y+2, r21 ; 0x02 |
454e: 49 83 std Y+1, r20 ; 0x01 |
4550: 81 e0 ldi r24, 0x01 ; 1 |
4552: 80 93 12 02 sts 0x0212, r24 |
4556: e0 91 da 04 lds r30, 0x04DA |
455a: ff 27 eor r31, r31 |
455c: ee 0f add r30, r30 |
455e: ff 1f adc r31, r31 |
4560: e2 55 subi r30, 0x52 ; 82 |
4562: fb 4f sbci r31, 0xFB ; 251 |
4564: 11 82 std Z+1, r1 ; 0x01 |
4566: 10 82 st Z, r1 |
4568: e0 91 db 04 lds r30, 0x04DB |
456c: ff 27 eor r31, r31 |
456e: ee 0f add r30, r30 |
4570: ff 1f adc r31, r31 |
4572: e2 55 subi r30, 0x52 ; 82 |
4574: fb 4f sbci r31, 0xFB ; 251 |
4576: 11 82 std Z+1, r1 ; 0x01 |
4578: 10 82 st Z, r1 |
457a: e0 91 dd 04 lds r30, 0x04DD |
457e: ff 27 eor r31, r31 |
4580: ee 0f add r30, r30 |
4582: ff 1f adc r31, r31 |
4584: e2 55 subi r30, 0x52 ; 82 |
4586: fb 4f sbci r31, 0xFB ; 251 |
4588: 11 82 std Z+1, r1 ; 0x01 |
458a: 10 82 st Z, r1 |
458c: ce c1 rjmp .+924 ; 0x492a <MotorRegler+0x46e> |
458e: 10 92 23 02 sts 0x0223, r1 |
4592: cb c1 rjmp .+918 ; 0x492a <MotorRegler+0x46e> |
4594: 80 91 1c 02 lds r24, 0x021C |
4598: 8d 38 cpi r24, 0x8D ; 141 |
459a: 08 f4 brcc .+2 ; 0x459e <MotorRegler+0xe2> |
459c: c6 c1 rjmp .+908 ; 0x492a <MotorRegler+0x46e> |
459e: 10 92 12 02 sts 0x0212, r1 |
45a2: 80 91 f4 04 lds r24, 0x04F4 |
45a6: 22 e3 ldi r18, 0x32 ; 50 |
45a8: 82 9f mul r24, r18 |
45aa: c0 01 movw r24, r0 |
45ac: 11 24 eor r1, r1 |
45ae: 90 93 36 02 sts 0x0236, r25 |
45b2: 80 93 35 02 sts 0x0235, r24 |
45b6: 69 81 ldd r22, Y+1 ; 0x01 |
45b8: 7a 81 ldd r23, Y+2 ; 0x02 |
45ba: 69 32 cpi r22, 0x29 ; 41 |
45bc: 71 05 cpc r23, r1 |
45be: 6c f0 brlt .+26 ; 0x45da <MotorRegler+0x11e> |
45c0: 80 91 30 02 lds r24, 0x0230 |
45c4: 90 91 31 02 lds r25, 0x0231 |
45c8: 7f ef ldi r23, 0xFF ; 255 |
45ca: 8f 3f cpi r24, 0xFF ; 255 |
45cc: 97 07 cpc r25, r23 |
45ce: 81 f1 breq .+96 ; 0x4630 <MotorRegler+0x174> |
45d0: 01 96 adiw r24, 0x01 ; 1 |
45d2: 90 93 31 02 sts 0x0231, r25 |
45d6: 80 93 30 02 sts 0x0230, r24 |
45da: 80 91 30 02 lds r24, 0x0230 |
45de: 90 91 31 02 lds r25, 0x0231 |
45e2: 88 3c cpi r24, 0xC8 ; 200 |
45e4: 91 05 cpc r25, r1 |
45e6: 20 f0 brcs .+8 ; 0x45f0 <MotorRegler+0x134> |
45e8: 89 81 ldd r24, Y+1 ; 0x01 |
45ea: 9a 81 ldd r25, Y+2 ; 0x02 |
45ec: 88 97 sbiw r24, 0x28 ; 40 |
45ee: 04 f5 brge .+64 ; 0x4630 <MotorRegler+0x174> |
45f0: 10 92 4b 02 sts 0x024B, r1 |
45f4: 10 92 4c 02 sts 0x024C, r1 |
45f8: 10 92 4d 02 sts 0x024D, r1 |
45fc: 10 92 4e 02 sts 0x024E, r1 |
4600: 10 92 47 02 sts 0x0247, r1 |
4604: 10 92 48 02 sts 0x0248, r1 |
4608: 10 92 49 02 sts 0x0249, r1 |
460c: 10 92 4a 02 sts 0x024A, r1 |
4610: 10 92 ff 01 sts 0x01FF, r1 |
4614: 10 92 00 02 sts 0x0200, r1 |
4618: 10 92 01 02 sts 0x0201, r1 |
461c: 10 92 02 02 sts 0x0202, r1 |
4620: 10 92 03 02 sts 0x0203, r1 |
4624: 10 92 04 02 sts 0x0204, r1 |
4628: 10 92 05 02 sts 0x0205, r1 |
462c: 10 92 06 02 sts 0x0206, r1 |
4630: e9 81 ldd r30, Y+1 ; 0x01 |
4632: fa 81 ldd r31, Y+2 ; 0x02 |
4634: e9 3c cpi r30, 0xC9 ; 201 |
4636: f1 05 cpc r31, r1 |
4638: 0c f4 brge .+2 ; 0x463c <MotorRegler+0x180> |
463a: d6 c0 rjmp .+428 ; 0x47e8 <MotorRegler+0x32c> |
463c: 80 91 23 02 lds r24, 0x0223 |
4640: 88 23 and r24, r24 |
4642: 09 f0 breq .+2 ; 0x4646 <MotorRegler+0x18a> |
4644: 72 c1 rjmp .+740 ; 0x492a <MotorRegler+0x46e> |
4646: e0 91 dd 04 lds r30, 0x04DD |
464a: ff 27 eor r31, r31 |
464c: ee 0f add r30, r30 |
464e: ff 1f adc r31, r31 |
4650: e2 55 subi r30, 0x52 ; 82 |
4652: fb 4f sbci r31, 0xFB ; 251 |
4654: 80 81 ld r24, Z |
4656: 91 81 ldd r25, Z+1 ; 0x01 |
4658: 8c 34 cpi r24, 0x4C ; 76 |
465a: 91 05 cpc r25, r1 |
465c: 0c f4 brge .+2 ; 0x4660 <MotorRegler+0x1a4> |
465e: c1 c0 rjmp .+386 ; 0x47e2 <MotorRegler+0x326> |
4660: 80 91 34 02 lds r24, 0x0234 |
4664: 8f 5f subi r24, 0xFF ; 255 |
4666: 80 93 34 02 sts 0x0234, r24 |
466a: 89 3c cpi r24, 0xC9 ; 201 |
466c: 08 f4 brcc .+2 ; 0x4670 <MotorRegler+0x1b4> |
466e: 5d c1 rjmp .+698 ; 0x492a <MotorRegler+0x46e> |
4670: 29 98 cbi 0x05, 1 ; 5 |
4672: 0e 94 13 21 call 0x4226 ; 0x4226 <SetNeutral> |
4676: 10 92 23 02 sts 0x0223, r1 |
467a: 10 92 34 02 sts 0x0234, r1 |
467e: 10 92 31 02 sts 0x0231, r1 |
4682: 10 92 30 02 sts 0x0230, r1 |
4686: 80 91 da 04 lds r24, 0x04DA |
468a: 28 2f mov r18, r24 |
468c: 33 27 eor r19, r19 |
468e: f9 01 movw r30, r18 |
4690: ee 0f add r30, r30 |
4692: ff 1f adc r31, r31 |
4694: e2 55 subi r30, 0x52 ; 82 |
4696: fb 4f sbci r31, 0xFB ; 251 |
4698: 80 81 ld r24, Z |
469a: 91 81 ldd r25, Z+1 ; 0x01 |
469c: 87 34 cpi r24, 0x47 ; 71 |
469e: 91 05 cpc r25, r1 |
46a0: 9c f4 brge .+38 ; 0x46c8 <MotorRegler+0x20c> |
46a2: e0 91 db 04 lds r30, 0x04DB |
46a6: ff 27 eor r31, r31 |
46a8: ee 0f add r30, r30 |
46aa: ff 1f adc r31, r31 |
46ac: e2 55 subi r30, 0x52 ; 82 |
46ae: fb 4f sbci r31, 0xFB ; 251 |
46b0: 01 90 ld r0, Z+ |
46b2: f0 81 ld r31, Z |
46b4: e0 2d mov r30, r0 |
46b6: f7 ff sbrs r31, 7 |
46b8: 03 c0 rjmp .+6 ; 0x46c0 <MotorRegler+0x204> |
46ba: f0 95 com r31 |
46bc: e1 95 neg r30 |
46be: ff 4f sbci r31, 0xFF ; 255 |
46c0: e7 34 cpi r30, 0x47 ; 71 |
46c2: f1 05 cpc r31, r1 |
46c4: 0c f4 brge .+2 ; 0x46c8 <MotorRegler+0x20c> |
46c6: 6c c0 rjmp .+216 ; 0x47a0 <MotorRegler+0x2e4> |
46c8: 80 91 db 04 lds r24, 0x04DB |
46cc: 68 2f mov r22, r24 |
46ce: 77 27 eor r23, r23 |
46d0: db 01 movw r26, r22 |
46d2: aa 0f add r26, r26 |
46d4: bb 1f adc r27, r27 |
46d6: a2 55 subi r26, 0x52 ; 82 |
46d8: bb 4f sbci r27, 0xFB ; 251 |
46da: 8d 91 ld r24, X+ |
46dc: 9c 91 ld r25, X |
46de: 11 97 sbiw r26, 0x01 ; 1 |
46e0: 87 34 cpi r24, 0x47 ; 71 |
46e2: 91 05 cpc r25, r1 |
46e4: 3c f0 brlt .+14 ; 0x46f4 <MotorRegler+0x238> |
46e6: f9 01 movw r30, r18 |
46e8: ee 0f add r30, r30 |
46ea: ff 1f adc r31, r31 |
46ec: e2 55 subi r30, 0x52 ; 82 |
46ee: fb 4f sbci r31, 0xFB ; 251 |
46f0: 80 81 ld r24, Z |
46f2: 91 81 ldd r25, Z+1 ; 0x01 |
46f4: 8d 91 ld r24, X+ |
46f6: 9c 91 ld r25, X |
46f8: 87 34 cpi r24, 0x47 ; 71 |
46fa: 91 05 cpc r25, r1 |
46fc: 64 f0 brlt .+24 ; 0x4716 <MotorRegler+0x25a> |
46fe: f9 01 movw r30, r18 |
4700: ee 0f add r30, r30 |
4702: ff 1f adc r31, r31 |
4704: e2 55 subi r30, 0x52 ; 82 |
4706: fb 4f sbci r31, 0xFB ; 251 |
4708: 80 81 ld r24, Z |
470a: 91 81 ldd r25, Z+1 ; 0x01 |
470c: 87 34 cpi r24, 0x47 ; 71 |
470e: 91 05 cpc r25, r1 |
4710: 14 f0 brlt .+4 ; 0x4716 <MotorRegler+0x25a> |
4712: 42 e0 ldi r20, 0x02 ; 2 |
4714: 01 c0 rjmp .+2 ; 0x4718 <MotorRegler+0x25c> |
4716: 41 e0 ldi r20, 0x01 ; 1 |
4718: fb 01 movw r30, r22 |
471a: ee 0f add r30, r30 |
471c: ff 1f adc r31, r31 |
471e: e2 55 subi r30, 0x52 ; 82 |
4720: fb 4f sbci r31, 0xFB ; 251 |
4722: 80 81 ld r24, Z |
4724: 91 81 ldd r25, Z+1 ; 0x01 |
4726: 86 34 cpi r24, 0x46 ; 70 |
4728: 91 05 cpc r25, r1 |
472a: 5c f4 brge .+22 ; 0x4742 <MotorRegler+0x286> |
472c: f9 01 movw r30, r18 |
472e: ee 0f add r30, r30 |
4730: ff 1f adc r31, r31 |
4732: e2 55 subi r30, 0x52 ; 82 |
4734: fb 4f sbci r31, 0xFB ; 251 |
4736: 80 81 ld r24, Z |
4738: 91 81 ldd r25, Z+1 ; 0x01 |
473a: 87 34 cpi r24, 0x47 ; 71 |
473c: 91 05 cpc r25, r1 |
473e: 0c f0 brlt .+2 ; 0x4742 <MotorRegler+0x286> |
4740: 43 e0 ldi r20, 0x03 ; 3 |
4742: fb 01 movw r30, r22 |
4744: ee 0f add r30, r30 |
4746: ff 1f adc r31, r31 |
4748: e2 55 subi r30, 0x52 ; 82 |
474a: fb 4f sbci r31, 0xFB ; 251 |
474c: 80 81 ld r24, Z |
474e: 91 81 ldd r25, Z+1 ; 0x01 |
4750: 8a 5b subi r24, 0xBA ; 186 |
4752: 9f 4f sbci r25, 0xFF ; 255 |
4754: 5c f4 brge .+22 ; 0x476c <MotorRegler+0x2b0> |
4756: f9 01 movw r30, r18 |
4758: ee 0f add r30, r30 |
475a: ff 1f adc r31, r31 |
475c: e2 55 subi r30, 0x52 ; 82 |
475e: fb 4f sbci r31, 0xFB ; 251 |
4760: 80 81 ld r24, Z |
4762: 91 81 ldd r25, Z+1 ; 0x01 |
4764: 87 34 cpi r24, 0x47 ; 71 |
4766: 91 05 cpc r25, r1 |
4768: 0c f0 brlt .+2 ; 0x476c <MotorRegler+0x2b0> |
476a: 44 e0 ldi r20, 0x04 ; 4 |
476c: 66 0f add r22, r22 |
476e: 77 1f adc r23, r23 |
4770: 62 55 subi r22, 0x52 ; 82 |
4772: 7b 4f sbci r23, 0xFB ; 251 |
4774: fb 01 movw r30, r22 |
4776: 80 81 ld r24, Z |
4778: 91 81 ldd r25, Z+1 ; 0x01 |
477a: 8a 5b subi r24, 0xBA ; 186 |
477c: 9f 4f sbci r25, 0xFF ; 255 |
477e: 5c f4 brge .+22 ; 0x4796 <MotorRegler+0x2da> |
4780: 22 0f add r18, r18 |
4782: 33 1f adc r19, r19 |
4784: 22 55 subi r18, 0x52 ; 82 |
4786: 3b 4f sbci r19, 0xFB ; 251 |
4788: f9 01 movw r30, r18 |
478a: 80 81 ld r24, Z |
478c: 91 81 ldd r25, Z+1 ; 0x01 |
478e: 86 34 cpi r24, 0x46 ; 70 |
4790: 91 05 cpc r25, r1 |
4792: 0c f4 brge .+2 ; 0x4796 <MotorRegler+0x2da> |
4794: 45 e0 ldi r20, 0x05 ; 5 |
4796: a2 e0 ldi r26, 0x02 ; 2 |
4798: b0 e0 ldi r27, 0x00 ; 0 |
479a: 04 2e mov r0, r20 |
479c: 0e 94 2c 2f call 0x5e58 ; 0x5e58 <__eeprom_write_byte_1F2021> |
47a0: 0e 94 b1 03 call 0x762 ; 0x762 <GetActiveParamSetNumber> |
47a4: 4a e3 ldi r20, 0x3A ; 58 |
47a6: 6a ed ldi r22, 0xDA ; 218 |
47a8: 74 e0 ldi r23, 0x04 ; 4 |
47aa: 0e 94 d2 03 call 0x7a4 ; 0x7a4 <ReadParameterSet> |
47ae: 0e 94 b1 03 call 0x762 ; 0x762 <GetActiveParamSetNumber> |
47b2: 0e 94 49 22 call 0x4492 ; 0x4492 <Piep> |
47b6: 80 91 e2 04 lds r24, 0x04E2 |
47ba: 80 ff sbrs r24, 0 |
47bc: b6 c0 rjmp .+364 ; 0x492a <MotorRegler+0x46e> |
47be: 80 91 0a 01 lds r24, 0x010A |
47c2: 90 91 0b 01 lds r25, 0x010B |
47c6: 87 5b subi r24, 0xB7 ; 183 |
47c8: 93 40 sbci r25, 0x03 ; 3 |
47ca: 40 f4 brcc .+16 ; 0x47dc <MotorRegler+0x320> |
47cc: 80 91 0a 01 lds r24, 0x010A |
47d0: 90 91 0b 01 lds r25, 0x010B |
47d4: 8e 5e subi r24, 0xEE ; 238 |
47d6: 92 40 sbci r25, 0x02 ; 2 |
47d8: 08 f0 brcs .+2 ; 0x47dc <MotorRegler+0x320> |
47da: a7 c0 rjmp .+334 ; 0x492a <MotorRegler+0x46e> |
47dc: 0e 94 0e 10 call 0x201c ; 0x201c <SucheLuftruckOffset> |
47e0: a4 c0 rjmp .+328 ; 0x492a <MotorRegler+0x46e> |
47e2: 10 92 34 02 sts 0x0234, r1 |
47e6: a1 c0 rjmp .+322 ; 0x492a <MotorRegler+0x46e> |
47e8: 49 81 ldd r20, Y+1 ; 0x01 |
47ea: 5a 81 ldd r21, Y+2 ; 0x02 |
47ec: 43 32 cpi r20, 0x23 ; 35 |
47ee: 51 05 cpc r21, r1 |
47f0: 0c f0 brlt .+2 ; 0x47f4 <MotorRegler+0x338> |
47f2: 9b c0 rjmp .+310 ; 0x492a <MotorRegler+0x46e> |
47f4: 80 91 dd 04 lds r24, 0x04DD |
47f8: 48 2f mov r20, r24 |
47fa: 55 27 eor r21, r21 |
47fc: fa 01 movw r30, r20 |
47fe: ee 0f add r30, r30 |
4800: ff 1f adc r31, r31 |
4802: e2 55 subi r30, 0x52 ; 82 |
4804: fb 4f sbci r31, 0xFB ; 251 |
4806: 80 81 ld r24, Z |
4808: 91 81 ldd r25, Z+1 ; 0x01 |
480a: 85 5b subi r24, 0xB5 ; 181 |
480c: 9f 4f sbci r25, 0xFF ; 255 |
480e: 0c f0 brlt .+2 ; 0x4812 <MotorRegler+0x356> |
4810: 6d c0 rjmp .+218 ; 0x48ec <MotorRegler+0x430> |
4812: 80 91 33 02 lds r24, 0x0233 |
4816: 8f 5f subi r24, 0xFF ; 255 |
4818: 80 93 33 02 sts 0x0233, r24 |
481c: 89 3c cpi r24, 0xC9 ; 201 |
481e: 08 f4 brcc .+2 ; 0x4822 <MotorRegler+0x366> |
4820: 67 c0 rjmp .+206 ; 0x48f0 <MotorRegler+0x434> |
4822: 88 ec ldi r24, 0xC8 ; 200 |
4824: 80 93 33 02 sts 0x0233, r24 |
4828: 81 e0 ldi r24, 0x01 ; 1 |
482a: 90 e0 ldi r25, 0x00 ; 0 |
482c: 90 93 31 02 sts 0x0231, r25 |
4830: 80 93 30 02 sts 0x0230, r24 |
4834: 81 e0 ldi r24, 0x01 ; 1 |
4836: 80 93 23 02 sts 0x0223, r24 |
483a: 10 92 43 02 sts 0x0243, r1 |
483e: 10 92 44 02 sts 0x0244, r1 |
4842: 10 92 45 02 sts 0x0245, r1 |
4846: 10 92 46 02 sts 0x0246, r1 |
484a: 10 92 ff 01 sts 0x01FF, r1 |
484e: 10 92 00 02 sts 0x0200, r1 |
4852: 10 92 01 02 sts 0x0201, r1 |
4856: 10 92 02 02 sts 0x0202, r1 |
485a: 10 92 03 02 sts 0x0203, r1 |
485e: 10 92 04 02 sts 0x0204, r1 |
4862: 10 92 05 02 sts 0x0205, r1 |
4866: 10 92 06 02 sts 0x0206, r1 |
486a: 10 92 ef 01 sts 0x01EF, r1 |
486e: 10 92 f0 01 sts 0x01F0, r1 |
4872: 10 92 f1 01 sts 0x01F1, r1 |
4876: 10 92 f2 01 sts 0x01F2, r1 |
487a: 10 92 f7 01 sts 0x01F7, r1 |
487e: 10 92 f8 01 sts 0x01F8, r1 |
4882: 10 92 f9 01 sts 0x01F9, r1 |
4886: 10 92 fa 01 sts 0x01FA, r1 |
488a: 80 91 db 01 lds r24, 0x01DB |
488e: 90 91 dc 01 lds r25, 0x01DC |
4892: a0 91 dd 01 lds r26, 0x01DD |
4896: b0 91 de 01 lds r27, 0x01DE |
489a: 80 93 f3 01 sts 0x01F3, r24 |
489e: 90 93 f4 01 sts 0x01F4, r25 |
48a2: a0 93 f5 01 sts 0x01F5, r26 |
48a6: b0 93 f6 01 sts 0x01F6, r27 |
48aa: 80 91 e3 01 lds r24, 0x01E3 |
48ae: 90 91 e4 01 lds r25, 0x01E4 |
48b2: a0 91 e5 01 lds r26, 0x01E5 |
48b6: b0 91 e6 01 lds r27, 0x01E6 |
48ba: 80 93 fb 01 sts 0x01FB, r24 |
48be: 90 93 fc 01 sts 0x01FC, r25 |
48c2: a0 93 fd 01 sts 0x01FD, r26 |
48c6: b0 93 fe 01 sts 0x01FE, r27 |
48ca: 10 92 4b 02 sts 0x024B, r1 |
48ce: 10 92 4c 02 sts 0x024C, r1 |
48d2: 10 92 4d 02 sts 0x024D, r1 |
48d6: 10 92 4e 02 sts 0x024E, r1 |
48da: 10 92 47 02 sts 0x0247, r1 |
48de: 10 92 48 02 sts 0x0248, r1 |
48e2: 10 92 49 02 sts 0x0249, r1 |
48e6: 10 92 4a 02 sts 0x024A, r1 |
48ea: 02 c0 rjmp .+4 ; 0x48f0 <MotorRegler+0x434> |
48ec: 10 92 33 02 sts 0x0233, r1 |
48f0: 44 0f add r20, r20 |
48f2: 55 1f adc r21, r21 |
48f4: 42 55 subi r20, 0x52 ; 82 |
48f6: 5b 4f sbci r21, 0xFB ; 251 |
48f8: fa 01 movw r30, r20 |
48fa: 80 81 ld r24, Z |
48fc: 91 81 ldd r25, Z+1 ; 0x01 |
48fe: 8c 34 cpi r24, 0x4C ; 76 |
4900: 91 05 cpc r25, r1 |
4902: 8c f0 brlt .+34 ; 0x4926 <MotorRegler+0x46a> |
4904: 80 91 32 02 lds r24, 0x0232 |
4908: 8f 5f subi r24, 0xFF ; 255 |
490a: 80 93 32 02 sts 0x0232, r24 |
490e: 89 3c cpi r24, 0xC9 ; 201 |
4910: 60 f0 brcs .+24 ; 0x492a <MotorRegler+0x46e> |
4912: 10 92 23 02 sts 0x0223, r1 |
4916: 88 ec ldi r24, 0xC8 ; 200 |
4918: 80 93 32 02 sts 0x0232, r24 |
491c: 10 92 31 02 sts 0x0231, r1 |
4920: 10 92 30 02 sts 0x0230, r1 |
4924: 02 c0 rjmp .+4 ; 0x492a <MotorRegler+0x46e> |
4926: 10 92 32 02 sts 0x0232, r1 |
492a: 80 91 67 01 lds r24, 0x0167 |
492e: 81 50 subi r24, 0x01 ; 1 |
4930: 80 93 67 01 sts 0x0167, r24 |
4934: 80 91 67 01 lds r24, 0x0167 |
4938: 8f 3f cpi r24, 0xFF ; 255 |
493a: 29 f0 breq .+10 ; 0x4946 <MotorRegler+0x48a> |
493c: 80 91 12 02 lds r24, 0x0212 |
4940: 88 23 and r24, r24 |
4942: 09 f4 brne .+2 ; 0x4946 <MotorRegler+0x48a> |
4944: 12 c1 rjmp .+548 ; 0x4b6a <MotorRegler+0x6ae> |
4946: 0e 94 a1 1d call 0x3b42 ; 0x3b42 <ParameterZuordnung> |
494a: e0 91 da 04 lds r30, 0x04DA |
494e: ff 27 eor r31, r31 |
4950: ee 0f add r30, r30 |
4952: ff 1f adc r31, r31 |
4954: df 01 movw r26, r30 |
4956: a2 55 subi r26, 0x52 ; 82 |
4958: bb 4f sbci r27, 0xFB ; 251 |
495a: 8d 91 ld r24, X+ |
495c: 9c 91 ld r25, X |
495e: 60 91 e9 04 lds r22, 0x04E9 |
4962: 77 27 eor r23, r23 |
4964: ec 53 subi r30, 0x3C ; 60 |
4966: fb 4f sbci r31, 0xFB ; 251 |
4968: 20 81 ld r18, Z |
496a: 31 81 ldd r19, Z+1 ; 0x01 |
496c: 40 91 ea 04 lds r20, 0x04EA |
4970: 55 27 eor r21, r21 |
4972: fc 01 movw r30, r24 |
4974: e6 9f mul r30, r22 |
4976: c0 01 movw r24, r0 |
4978: e7 9f mul r30, r23 |
497a: 90 0d add r25, r0 |
497c: f6 9f mul r31, r22 |
497e: 90 0d add r25, r0 |
4980: 11 24 eor r1, r1 |
4982: f9 01 movw r30, r18 |
4984: e4 9f mul r30, r20 |
4986: 90 01 movw r18, r0 |
4988: e5 9f mul r30, r21 |
498a: 30 0d add r19, r0 |
498c: f4 9f mul r31, r20 |
498e: 30 0d add r19, r0 |
4990: 11 24 eor r1, r1 |
4992: 82 0f add r24, r18 |
4994: 93 1f adc r25, r19 |
4996: 90 93 1e 02 sts 0x021E, r25 |
499a: 80 93 1d 02 sts 0x021D, r24 |
499e: e0 91 db 04 lds r30, 0x04DB |
49a2: ff 27 eor r31, r31 |
49a4: ee 0f add r30, r30 |
49a6: ff 1f adc r31, r31 |
49a8: df 01 movw r26, r30 |
49aa: a2 55 subi r26, 0x52 ; 82 |
49ac: bb 4f sbci r27, 0xFB ; 251 |
49ae: 8d 91 ld r24, X+ |
49b0: 9c 91 ld r25, X |
49b2: ec 53 subi r30, 0x3C ; 60 |
49b4: fb 4f sbci r31, 0xFB ; 251 |
49b6: 20 81 ld r18, Z |
49b8: 31 81 ldd r19, Z+1 ; 0x01 |
49ba: fc 01 movw r30, r24 |
49bc: e6 9f mul r30, r22 |
49be: c0 01 movw r24, r0 |
49c0: e7 9f mul r30, r23 |
49c2: 90 0d add r25, r0 |
49c4: f6 9f mul r31, r22 |
49c6: 90 0d add r25, r0 |
49c8: 11 24 eor r1, r1 |
49ca: b9 01 movw r22, r18 |
49cc: 64 9f mul r22, r20 |
49ce: 90 01 movw r18, r0 |
49d0: 65 9f mul r22, r21 |
49d2: 30 0d add r19, r0 |
49d4: 74 9f mul r23, r20 |
49d6: 30 0d add r19, r0 |
49d8: 11 24 eor r1, r1 |
49da: 82 0f add r24, r18 |
49dc: 93 1f adc r25, r19 |
49de: 90 93 20 02 sts 0x0220, r25 |
49e2: 80 93 1f 02 sts 0x021F, r24 |
49e6: e0 91 dd 04 lds r30, 0x04DD |
49ea: ff 27 eor r31, r31 |
49ec: ee 0f add r30, r30 |
49ee: ff 1f adc r31, r31 |
49f0: e2 55 subi r30, 0x52 ; 82 |
49f2: fb 4f sbci r31, 0xFB ; 251 |
49f4: 80 81 ld r24, Z |
49f6: 91 81 ldd r25, Z+1 ; 0x01 |
49f8: 90 95 com r25 |
49fa: 81 95 neg r24 |
49fc: 9f 4f sbci r25, 0xFF ; 255 |
49fe: 90 93 22 02 sts 0x0222, r25 |
4a02: 80 93 21 02 sts 0x0221, r24 |
4a06: 10 91 85 01 lds r17, 0x0185 |
4a0a: 61 2f mov r22, r17 |
4a0c: 77 27 eor r23, r23 |
4a0e: 67 fd sbrc r22, 7 |
4a10: 70 95 com r23 |
4a12: 87 2f mov r24, r23 |
4a14: 97 2f mov r25, r23 |
4a16: 0e 94 9d 2d call 0x5b3a ; 0x5b3a <__floatsisf> |
4a1a: 17 ff sbrs r17, 7 |
4a1c: 06 c0 rjmp .+12 ; 0x4a2a <MotorRegler+0x56e> |
4a1e: 20 e0 ldi r18, 0x00 ; 0 |
4a20: 30 e0 ldi r19, 0x00 ; 0 |
4a22: 40 e8 ldi r20, 0x80 ; 128 |
4a24: 53 e4 ldi r21, 0x43 ; 67 |
4a26: 0e 94 f8 2c call 0x59f0 ; 0x59f0 <__addsf3> |
4a2a: 20 e0 ldi r18, 0x00 ; 0 |
4a2c: 30 e0 ldi r19, 0x00 ; 0 |
4a2e: 40 e2 ldi r20, 0x20 ; 32 |
4a30: 51 e4 ldi r21, 0x41 ; 65 |
4a32: 0e 94 f8 2c call 0x59f0 ; 0x59f0 <__addsf3> |
4a36: 20 e0 ldi r18, 0x00 ; 0 |
4a38: 30 e0 ldi r19, 0x00 ; 0 |
4a3a: 40 e8 ldi r20, 0x80 ; 128 |
4a3c: 5b e3 ldi r21, 0x3B ; 59 |
4a3e: 0e 94 17 2e call 0x5c2e ; 0x5c2e <__mulsf3> |
4a42: 5b 01 movw r10, r22 |
4a44: 6c 01 movw r12, r24 |
4a46: 60 93 2c 05 sts 0x052C, r22 |
4a4a: 70 93 2d 05 sts 0x052D, r23 |
4a4e: 80 93 2e 05 sts 0x052E, r24 |
4a52: 90 93 2f 05 sts 0x052F, r25 |
4a56: 10 91 86 01 lds r17, 0x0186 |
4a5a: 61 2f mov r22, r17 |
4a5c: 77 27 eor r23, r23 |
4a5e: 67 fd sbrc r22, 7 |
4a60: 70 95 com r23 |
4a62: 87 2f mov r24, r23 |
4a64: 97 2f mov r25, r23 |
4a66: 0e 94 9d 2d call 0x5b3a ; 0x5b3a <__floatsisf> |
4a6a: 17 ff sbrs r17, 7 |
4a6c: 06 c0 rjmp .+12 ; 0x4a7a <MotorRegler+0x5be> |
4a6e: 20 e0 ldi r18, 0x00 ; 0 |
4a70: 30 e0 ldi r19, 0x00 ; 0 |
4a72: 40 e8 ldi r20, 0x80 ; 128 |
4a74: 53 e4 ldi r21, 0x43 ; 67 |
4a76: 0e 94 f8 2c call 0x59f0 ; 0x59f0 <__addsf3> |
4a7a: 20 e0 ldi r18, 0x00 ; 0 |
4a7c: 30 ee ldi r19, 0xE0 ; 224 |
4a7e: 4b e2 ldi r20, 0x2B ; 43 |
4a80: 57 e4 ldi r21, 0x47 ; 71 |
4a82: 0e 94 3a 2d call 0x5a74 ; 0x5a74 <__divsf3> |
4a86: 60 93 1b 05 sts 0x051B, r22 |
4a8a: 70 93 1c 05 sts 0x051C, r23 |
4a8e: 80 93 1d 05 sts 0x051D, r24 |
4a92: 90 93 1e 05 sts 0x051E, r25 |
4a96: 80 91 e2 04 lds r24, 0x04E2 |
4a9a: 82 ff sbrs r24, 2 |
4a9c: 0c c0 rjmp .+24 ; 0x4ab6 <MotorRegler+0x5fa> |
4a9e: 80 e0 ldi r24, 0x00 ; 0 |
4aa0: 90 e0 ldi r25, 0x00 ; 0 |
4aa2: a0 e0 ldi r26, 0x00 ; 0 |
4aa4: b0 e0 ldi r27, 0x00 ; 0 |
4aa6: 80 93 1b 05 sts 0x051B, r24 |
4aaa: 90 93 1c 05 sts 0x051C, r25 |
4aae: a0 93 1d 05 sts 0x051D, r26 |
4ab2: b0 93 1e 05 sts 0x051E, r27 |
4ab6: 20 e0 ldi r18, 0x00 ; 0 |
4ab8: 30 e0 ldi r19, 0x00 ; 0 |
4aba: 40 e0 ldi r20, 0x00 ; 0 |
4abc: 50 e0 ldi r21, 0x00 ; 0 |
4abe: c6 01 movw r24, r12 |
4ac0: b5 01 movw r22, r10 |
4ac2: 0e 94 a7 2d call 0x5b4e ; 0x5b4e <__eqsf2> |
4ac6: 88 23 and r24, r24 |
4ac8: 64 f4 brge .+24 ; 0x4ae2 <MotorRegler+0x626> |
4aca: 80 e0 ldi r24, 0x00 ; 0 |
4acc: 90 e0 ldi r25, 0x00 ; 0 |
4ace: a0 e0 ldi r26, 0x00 ; 0 |
4ad0: b0 e0 ldi r27, 0x00 ; 0 |
4ad2: 80 93 2c 05 sts 0x052C, r24 |
4ad6: 90 93 2d 05 sts 0x052D, r25 |
4ada: a0 93 2e 05 sts 0x052E, r26 |
4ade: b0 93 2f 05 sts 0x052F, r27 |
4ae2: 20 e0 ldi r18, 0x00 ; 0 |
4ae4: 30 e0 ldi r19, 0x00 ; 0 |
4ae6: 40 e0 ldi r20, 0x00 ; 0 |
4ae8: 50 e0 ldi r21, 0x00 ; 0 |
4aea: 60 91 1b 05 lds r22, 0x051B |
4aee: 70 91 1c 05 lds r23, 0x051C |
4af2: 80 91 1d 05 lds r24, 0x051D |
4af6: 90 91 1e 05 lds r25, 0x051E |
4afa: 0e 94 a7 2d call 0x5b4e ; 0x5b4e <__eqsf2> |
4afe: 88 23 and r24, r24 |
4b00: 64 f4 brge .+24 ; 0x4b1a <MotorRegler+0x65e> |
4b02: 80 e0 ldi r24, 0x00 ; 0 |
4b04: 90 e0 ldi r25, 0x00 ; 0 |
4b06: a0 e0 ldi r26, 0x00 ; 0 |
4b08: b0 e0 ldi r27, 0x00 ; 0 |
4b0a: 80 93 1b 05 sts 0x051B, r24 |
4b0e: 90 93 1c 05 sts 0x051C, r25 |
4b12: a0 93 1d 05 sts 0x051D, r26 |
4b16: b0 93 1e 05 sts 0x051E, r27 |
4b1a: 80 91 12 02 lds r24, 0x0212 |
4b1e: 88 23 and r24, r24 |
4b20: 21 f1 breq .+72 ; 0x4b6a <MotorRegler+0x6ae> |
4b22: 10 92 22 02 sts 0x0222, r1 |
4b26: 10 92 21 02 sts 0x0221, r1 |
4b2a: 10 92 1e 02 sts 0x021E, r1 |
4b2e: 10 92 1d 02 sts 0x021D, r1 |
4b32: 10 92 20 02 sts 0x0220, r1 |
4b36: 10 92 1f 02 sts 0x021F, r1 |
4b3a: 8d ec ldi r24, 0xCD ; 205 |
4b3c: 9c ec ldi r25, 0xCC ; 204 |
4b3e: ac ec ldi r26, 0xCC ; 204 |
4b40: bd e3 ldi r27, 0x3D ; 61 |
4b42: 80 93 2c 05 sts 0x052C, r24 |
4b46: 90 93 2d 05 sts 0x052D, r25 |
4b4a: a0 93 2e 05 sts 0x052E, r26 |
4b4e: b0 93 2f 05 sts 0x052F, r27 |
4b52: 8a e0 ldi r24, 0x0A ; 10 |
4b54: 97 ed ldi r25, 0xD7 ; 215 |
4b56: a3 ea ldi r26, 0xA3 ; 163 |
4b58: bb e3 ldi r27, 0x3B ; 59 |
4b5a: 80 93 1b 05 sts 0x051B, r24 |
4b5e: 90 93 1c 05 sts 0x051C, r25 |
4b62: a0 93 1d 05 sts 0x051D, r26 |
4b66: b0 93 1e 05 sts 0x051E, r27 |
4b6a: 80 91 c1 01 lds r24, 0x01C1 |
4b6e: 90 91 c2 01 lds r25, 0x01C2 |
4b72: 8d 54 subi r24, 0x4D ; 77 |
4b74: 91 40 sbci r25, 0x01 ; 1 |
4b76: 08 f4 brcc .+2 ; 0x4b7a <MotorRegler+0x6be> |
4b78: 90 c0 rjmp .+288 ; 0x4c9a <MotorRegler+0x7de> |
4b7a: 20 91 df 01 lds r18, 0x01DF |
4b7e: 30 91 e0 01 lds r19, 0x01E0 |
4b82: 40 91 e1 01 lds r20, 0x01E1 |
4b86: 50 91 e2 01 lds r21, 0x01E2 |
4b8a: 80 91 db 01 lds r24, 0x01DB |
4b8e: 90 91 dc 01 lds r25, 0x01DC |
4b92: a0 91 dd 01 lds r26, 0x01DD |
4b96: b0 91 de 01 lds r27, 0x01DE |
4b9a: b9 01 movw r22, r18 |
4b9c: 68 1b sub r22, r24 |
4b9e: 79 0b sbc r23, r25 |
4ba0: 70 93 3a 02 sts 0x023A, r23 |
4ba4: 60 93 39 02 sts 0x0239, r22 |
4ba8: 20 91 e7 01 lds r18, 0x01E7 |
4bac: 30 91 e8 01 lds r19, 0x01E8 |
4bb0: 40 91 e9 01 lds r20, 0x01E9 |
4bb4: 50 91 ea 01 lds r21, 0x01EA |
4bb8: 80 91 e3 01 lds r24, 0x01E3 |
4bbc: 90 91 e4 01 lds r25, 0x01E4 |
4bc0: a0 91 e5 01 lds r26, 0x01E5 |
4bc4: b0 91 e6 01 lds r27, 0x01E6 |
4bc8: 28 1b sub r18, r24 |
4bca: 39 0b sbc r19, r25 |
4bcc: 30 93 38 02 sts 0x0238, r19 |
4bd0: 20 93 37 02 sts 0x0237, r18 |
4bd4: 10 92 c2 01 sts 0x01C2, r1 |
4bd8: 10 92 c1 01 sts 0x01C1, r1 |
4bdc: 67 3a cpi r22, 0xA7 ; 167 |
4bde: 71 05 cpc r23, r1 |
4be0: 34 f0 brlt .+12 ; 0x4bee <MotorRegler+0x732> |
4be2: 80 91 d3 01 lds r24, 0x01D3 |
4be6: 90 91 d4 01 lds r25, 0x01D4 |
4bea: 01 96 adiw r24, 0x01 ; 1 |
4bec: 08 c0 rjmp .+16 ; 0x4bfe <MotorRegler+0x742> |
4bee: 6a 55 subi r22, 0x5A ; 90 |
4bf0: 7f 4f sbci r23, 0xFF ; 255 |
4bf2: 4c f4 brge .+18 ; 0x4c06 <MotorRegler+0x74a> |
4bf4: 80 91 d3 01 lds r24, 0x01D3 |
4bf8: 90 91 d4 01 lds r25, 0x01D4 |
4bfc: 01 97 sbiw r24, 0x01 ; 1 |
4bfe: 90 93 d4 01 sts 0x01D4, r25 |
4c02: 80 93 d3 01 sts 0x01D3, r24 |
4c06: 27 3a cpi r18, 0xA7 ; 167 |
4c08: 31 05 cpc r19, r1 |
4c0a: 34 f0 brlt .+12 ; 0x4c18 <MotorRegler+0x75c> |
4c0c: 80 91 d5 01 lds r24, 0x01D5 |
4c10: 90 91 d6 01 lds r25, 0x01D6 |
4c14: 01 96 adiw r24, 0x01 ; 1 |
4c16: 08 c0 rjmp .+16 ; 0x4c28 <MotorRegler+0x76c> |
4c18: 2a 55 subi r18, 0x5A ; 90 |
4c1a: 3f 4f sbci r19, 0xFF ; 255 |
4c1c: 4c f4 brge .+18 ; 0x4c30 <MotorRegler+0x774> |
4c1e: 80 91 d5 01 lds r24, 0x01D5 |
4c22: 90 91 d6 01 lds r25, 0x01D6 |
4c26: 01 97 sbiw r24, 0x01 ; 1 |
4c28: 90 93 d6 01 sts 0x01D6, r25 |
4c2c: 80 93 d5 01 sts 0x01D5, r24 |
4c30: 10 92 7a 00 sts 0x007A, r1 |
4c34: 80 91 db 01 lds r24, 0x01DB |
4c38: 90 91 dc 01 lds r25, 0x01DC |
4c3c: a0 91 dd 01 lds r26, 0x01DD |
4c40: b0 91 de 01 lds r27, 0x01DE |
4c44: 80 93 f3 01 sts 0x01F3, r24 |
4c48: 90 93 f4 01 sts 0x01F4, r25 |
4c4c: a0 93 f5 01 sts 0x01F5, r26 |
4c50: b0 93 f6 01 sts 0x01F6, r27 |
4c54: 80 91 e3 01 lds r24, 0x01E3 |
4c58: 90 91 e4 01 lds r25, 0x01E4 |
4c5c: a0 91 e5 01 lds r26, 0x01E5 |
4c60: b0 91 e6 01 lds r27, 0x01E6 |
4c64: 80 93 fb 01 sts 0x01FB, r24 |
4c68: 90 93 fc 01 sts 0x01FC, r25 |
4c6c: a0 93 fd 01 sts 0x01FD, r26 |
4c70: b0 93 fe 01 sts 0x01FE, r27 |
4c74: 80 91 eb 01 lds r24, 0x01EB |
4c78: 90 91 ec 01 lds r25, 0x01EC |
4c7c: a0 91 ed 01 lds r26, 0x01ED |
4c80: b0 91 ee 01 lds r27, 0x01EE |
4c84: 80 93 03 02 sts 0x0203, r24 |
4c88: 90 93 04 02 sts 0x0204, r25 |
4c8c: a0 93 05 02 sts 0x0205, r26 |
4c90: b0 93 06 02 sts 0x0206, r27 |
4c94: 8f ec ldi r24, 0xCF ; 207 |
4c96: 80 93 7a 00 sts 0x007A, r24 |
4c9a: 60 91 db 01 lds r22, 0x01DB |
4c9e: 70 91 dc 01 lds r23, 0x01DC |
4ca2: 80 91 dd 01 lds r24, 0x01DD |
4ca6: 90 91 de 01 lds r25, 0x01DE |
4caa: a0 90 ee 04 lds r10, 0x04EE |
4cae: bb 24 eor r11, r11 |
4cb0: cc 24 eor r12, r12 |
4cb2: dd 24 eor r13, r13 |
4cb4: e0 90 27 05 lds r14, 0x0527 |
4cb8: f0 90 28 05 lds r15, 0x0528 |
4cbc: a6 01 movw r20, r12 |
4cbe: 95 01 movw r18, r10 |
4cc0: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
4cc4: 00 27 eor r16, r16 |
4cc6: f7 fc sbrc r15, 7 |
4cc8: 00 95 com r16 |
4cca: 10 2f mov r17, r16 |
4ccc: 2e 19 sub r18, r14 |
4cce: 3f 09 sbc r19, r15 |
4cd0: 40 0b sbc r20, r16 |
4cd2: 51 0b sbc r21, r17 |
4cd4: ca 01 movw r24, r20 |
4cd6: b9 01 movw r22, r18 |
4cd8: 20 e1 ldi r18, 0x10 ; 16 |
4cda: 30 e0 ldi r19, 0x00 ; 0 |
4cdc: 40 e0 ldi r20, 0x00 ; 0 |
4cde: 50 e0 ldi r21, 0x00 ; 0 |
4ce0: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
4ce4: 39 01 movw r6, r18 |
4ce6: 4a 01 movw r8, r20 |
4ce8: 20 93 3f 02 sts 0x023F, r18 |
4cec: 30 93 40 02 sts 0x0240, r19 |
4cf0: 40 93 41 02 sts 0x0241, r20 |
4cf4: 50 93 42 02 sts 0x0242, r21 |
4cf8: 60 91 e3 01 lds r22, 0x01E3 |
4cfc: 70 91 e4 01 lds r23, 0x01E4 |
4d00: 80 91 e5 01 lds r24, 0x01E5 |
4d04: 90 91 e6 01 lds r25, 0x01E6 |
4d08: e0 90 30 05 lds r14, 0x0530 |
4d0c: f0 90 31 05 lds r15, 0x0531 |
4d10: a6 01 movw r20, r12 |
4d12: 95 01 movw r18, r10 |
4d14: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
4d18: 00 27 eor r16, r16 |
4d1a: f7 fc sbrc r15, 7 |
4d1c: 00 95 com r16 |
4d1e: 10 2f mov r17, r16 |
4d20: 2e 19 sub r18, r14 |
4d22: 3f 09 sbc r19, r15 |
4d24: 40 0b sbc r20, r16 |
4d26: 51 0b sbc r21, r17 |
4d28: ca 01 movw r24, r20 |
4d2a: b9 01 movw r22, r18 |
4d2c: 20 e1 ldi r18, 0x10 ; 16 |
4d2e: 30 e0 ldi r19, 0x00 ; 0 |
4d30: 40 e0 ldi r20, 0x00 ; 0 |
4d32: 50 e0 ldi r21, 0x00 ; 0 |
4d34: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
4d38: 20 93 3b 02 sts 0x023B, r18 |
4d3c: 30 93 3c 02 sts 0x023C, r19 |
4d40: 40 93 3d 02 sts 0x023D, r20 |
4d44: 50 93 3e 02 sts 0x023E, r21 |
4d48: e5 ef ldi r30, 0xF5 ; 245 |
4d4a: 6e 16 cp r6, r30 |
4d4c: e1 e0 ldi r30, 0x01 ; 1 |
4d4e: 7e 06 cpc r7, r30 |
4d50: e0 e0 ldi r30, 0x00 ; 0 |
4d52: 8e 06 cpc r8, r30 |
4d54: e0 e0 ldi r30, 0x00 ; 0 |
4d56: 9e 06 cpc r9, r30 |
4d58: 2c f0 brlt .+10 ; 0x4d64 <MotorRegler+0x8a8> |
4d5a: 84 ef ldi r24, 0xF4 ; 244 |
4d5c: 91 e0 ldi r25, 0x01 ; 1 |
4d5e: a0 e0 ldi r26, 0x00 ; 0 |
4d60: b0 e0 ldi r27, 0x00 ; 0 |
4d62: 0d c0 rjmp .+26 ; 0x4d7e <MotorRegler+0x8c2> |
4d64: fc e0 ldi r31, 0x0C ; 12 |
4d66: 6f 16 cp r6, r31 |
4d68: fe ef ldi r31, 0xFE ; 254 |
4d6a: 7f 06 cpc r7, r31 |
4d6c: ff ef ldi r31, 0xFF ; 255 |
4d6e: 8f 06 cpc r8, r31 |
4d70: ff ef ldi r31, 0xFF ; 255 |
4d72: 9f 06 cpc r9, r31 |
4d74: 64 f4 brge .+24 ; 0x4d8e <MotorRegler+0x8d2> |
4d76: 8c e0 ldi r24, 0x0C ; 12 |
4d78: 9e ef ldi r25, 0xFE ; 254 |
4d7a: af ef ldi r26, 0xFF ; 255 |
4d7c: bf ef ldi r27, 0xFF ; 255 |
4d7e: 80 93 3f 02 sts 0x023F, r24 |
4d82: 90 93 40 02 sts 0x0240, r25 |
4d86: a0 93 41 02 sts 0x0241, r26 |
4d8a: b0 93 42 02 sts 0x0242, r27 |
4d8e: 25 3f cpi r18, 0xF5 ; 245 |
4d90: 61 e0 ldi r22, 0x01 ; 1 |
4d92: 36 07 cpc r19, r22 |
4d94: 60 e0 ldi r22, 0x00 ; 0 |
4d96: 46 07 cpc r20, r22 |
4d98: 60 e0 ldi r22, 0x00 ; 0 |
4d9a: 56 07 cpc r21, r22 |
4d9c: 2c f0 brlt .+10 ; 0x4da8 <MotorRegler+0x8ec> |
4d9e: 84 ef ldi r24, 0xF4 ; 244 |
4da0: 91 e0 ldi r25, 0x01 ; 1 |
4da2: a0 e0 ldi r26, 0x00 ; 0 |
4da4: b0 e0 ldi r27, 0x00 ; 0 |
4da6: 09 c0 rjmp .+18 ; 0x4dba <MotorRegler+0x8fe> |
4da8: 2c 50 subi r18, 0x0C ; 12 |
4daa: 3e 4f sbci r19, 0xFE ; 254 |
4dac: 4f 4f sbci r20, 0xFF ; 255 |
4dae: 5f 4f sbci r21, 0xFF ; 255 |
4db0: 64 f4 brge .+24 ; 0x4dca <MotorRegler+0x90e> |
4db2: 8c e0 ldi r24, 0x0C ; 12 |
4db4: 9e ef ldi r25, 0xFE ; 254 |
4db6: af ef ldi r26, 0xFF ; 255 |
4db8: bf ef ldi r27, 0xFF ; 255 |
4dba: 80 93 3b 02 sts 0x023B, r24 |
4dbe: 90 93 3c 02 sts 0x023C, r25 |
4dc2: a0 93 3d 02 sts 0x023D, r26 |
4dc6: b0 93 3e 02 sts 0x023E, r27 |
4dca: 10 92 7a 00 sts 0x007A, r1 |
4dce: 80 91 ef 01 lds r24, 0x01EF |
4dd2: 90 91 f0 01 lds r25, 0x01F0 |
4dd6: a0 91 f1 01 lds r26, 0x01F1 |
4dda: b0 91 f2 01 lds r27, 0x01F2 |
4dde: 20 91 3f 02 lds r18, 0x023F |
4de2: 30 91 40 02 lds r19, 0x0240 |
4de6: 40 91 41 02 lds r20, 0x0241 |
4dea: 50 91 42 02 lds r21, 0x0242 |
4dee: 82 1b sub r24, r18 |
4df0: 93 0b sbc r25, r19 |
4df2: a4 0b sbc r26, r20 |
4df4: b5 0b sbc r27, r21 |
4df6: 80 93 ef 01 sts 0x01EF, r24 |
4dfa: 90 93 f0 01 sts 0x01F0, r25 |
4dfe: a0 93 f1 01 sts 0x01F1, r26 |
4e02: b0 93 f2 01 sts 0x01F2, r27 |
4e06: 80 91 f7 01 lds r24, 0x01F7 |
4e0a: 90 91 f8 01 lds r25, 0x01F8 |
4e0e: a0 91 f9 01 lds r26, 0x01F9 |
4e12: b0 91 fa 01 lds r27, 0x01FA |
4e16: 20 91 3b 02 lds r18, 0x023B |
4e1a: 30 91 3c 02 lds r19, 0x023C |
4e1e: 40 91 3d 02 lds r20, 0x023D |
4e22: 50 91 3e 02 lds r21, 0x023E |
4e26: 82 1b sub r24, r18 |
4e28: 93 0b sbc r25, r19 |
4e2a: a4 0b sbc r26, r20 |
4e2c: b5 0b sbc r27, r21 |
4e2e: 80 93 f7 01 sts 0x01F7, r24 |
4e32: 90 93 f8 01 sts 0x01F8, r25 |
4e36: a0 93 f9 01 sts 0x01F9, r26 |
4e3a: b0 93 fa 01 sts 0x01FA, r27 |
4e3e: 80 91 21 02 lds r24, 0x0221 |
4e42: 90 91 22 02 lds r25, 0x0222 |
4e46: 5c 01 movw r10, r24 |
4e48: cc 24 eor r12, r12 |
4e4a: b7 fc sbrc r11, 7 |
4e4c: c0 94 com r12 |
4e4e: dc 2c mov r13, r12 |
4e50: a0 92 43 02 sts 0x0243, r10 |
4e54: b0 92 44 02 sts 0x0244, r11 |
4e58: c0 92 45 02 sts 0x0245, r12 |
4e5c: d0 92 46 02 sts 0x0246, r13 |
4e60: 97 ff sbrs r25, 7 |
4e62: 03 c0 rjmp .+6 ; 0x4e6a <MotorRegler+0x9ae> |
4e64: 90 95 com r25 |
4e66: 81 95 neg r24 |
4e68: 9f 4f sbci r25, 0xFF ; 255 |
4e6a: 84 97 sbiw r24, 0x24 ; 36 |
4e6c: 3c f0 brlt .+14 ; 0x4e7c <MotorRegler+0x9c0> |
4e6e: 80 91 e2 04 lds r24, 0x04E2 |
4e72: 84 fd sbrc r24, 4 |
4e74: 03 c0 rjmp .+6 ; 0x4e7c <MotorRegler+0x9c0> |
4e76: 81 e0 ldi r24, 0x01 ; 1 |
4e78: 80 93 8a 01 sts 0x018A, r24 |
4e7c: 60 90 ff 01 lds r6, 0x01FF |
4e80: 70 90 00 02 lds r7, 0x0200 |
4e84: 80 90 01 02 lds r8, 0x0201 |
4e88: 90 90 02 02 lds r9, 0x0202 |
4e8c: c5 01 movw r24, r10 |
4e8e: b7 fe sbrs r11, 7 |
4e90: 03 c0 rjmp .+6 ; 0x4e98 <MotorRegler+0x9dc> |
4e92: 90 95 com r25 |
4e94: 81 95 neg r24 |
4e96: 9f 4f sbci r25, 0xFF ; 255 |
4e98: 7c 01 movw r14, r24 |
4e9a: 00 27 eor r16, r16 |
4e9c: f7 fc sbrc r15, 7 |
4e9e: 00 95 com r16 |
4ea0: 10 2f mov r17, r16 |
4ea2: 20 91 eb 04 lds r18, 0x04EB |
4ea6: 33 27 eor r19, r19 |
4ea8: 44 27 eor r20, r20 |
4eaa: 55 27 eor r21, r21 |
4eac: c6 01 movw r24, r12 |
4eae: b5 01 movw r22, r10 |
4eb0: 0e 94 5f 2e call 0x5cbe ; 0x5cbe <__mulsi3> |
4eb4: 9b 01 movw r18, r22 |
4eb6: ac 01 movw r20, r24 |
4eb8: c8 01 movw r24, r16 |
4eba: b7 01 movw r22, r14 |
4ebc: 0e 94 5f 2e call 0x5cbe ; 0x5cbe <__mulsi3> |
4ec0: 20 e0 ldi r18, 0x00 ; 0 |
4ec2: 31 e0 ldi r19, 0x01 ; 1 |
4ec4: 40 e0 ldi r20, 0x00 ; 0 |
4ec6: 50 e0 ldi r21, 0x00 ; 0 |
4ec8: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
4ecc: 44 27 eor r20, r20 |
4ece: 37 fd sbrc r19, 7 |
4ed0: 40 95 com r20 |
4ed2: 54 2f mov r21, r20 |
4ed4: 62 1a sub r6, r18 |
4ed6: 73 0a sbc r7, r19 |
4ed8: 84 0a sbc r8, r20 |
4eda: 95 0a sbc r9, r21 |
4edc: 60 92 ff 01 sts 0x01FF, r6 |
4ee0: 70 92 00 02 sts 0x0200, r7 |
4ee4: 80 92 01 02 sts 0x0201, r8 |
4ee8: 90 92 02 02 sts 0x0202, r9 |
4eec: 80 91 ff 01 lds r24, 0x01FF |
4ef0: 90 91 00 02 lds r25, 0x0200 |
4ef4: a0 91 01 02 lds r26, 0x0201 |
4ef8: b0 91 02 02 lds r27, 0x0202 |
4efc: 81 53 subi r24, 0x31 ; 49 |
4efe: 95 47 sbci r25, 0x75 ; 117 |
4f00: a0 40 sbci r26, 0x00 ; 0 |
4f02: b0 40 sbci r27, 0x00 ; 0 |
4f04: 64 f0 brlt .+24 ; 0x4f1e <MotorRegler+0xa62> |
4f06: 80 e3 ldi r24, 0x30 ; 48 |
4f08: 95 e7 ldi r25, 0x75 ; 117 |
4f0a: a0 e0 ldi r26, 0x00 ; 0 |
4f0c: b0 e0 ldi r27, 0x00 ; 0 |
4f0e: 80 93 ff 01 sts 0x01FF, r24 |
4f12: 90 93 00 02 sts 0x0200, r25 |
4f16: a0 93 01 02 sts 0x0201, r26 |
4f1a: b0 93 02 02 sts 0x0202, r27 |
4f1e: 80 91 ff 01 lds r24, 0x01FF |
4f22: 90 91 00 02 lds r25, 0x0200 |
4f26: a0 91 01 02 lds r26, 0x0201 |
4f2a: b0 91 02 02 lds r27, 0x0202 |
4f2e: 80 5d subi r24, 0xD0 ; 208 |
4f30: 9a 48 sbci r25, 0x8A ; 138 |
4f32: af 4f sbci r26, 0xFF ; 255 |
4f34: bf 4f sbci r27, 0xFF ; 255 |
4f36: 64 f4 brge .+24 ; 0x4f50 <MotorRegler+0xa94> |
4f38: 80 ed ldi r24, 0xD0 ; 208 |
4f3a: 9a e8 ldi r25, 0x8A ; 138 |
4f3c: af ef ldi r26, 0xFF ; 255 |
4f3e: bf ef ldi r27, 0xFF ; 255 |
4f40: 80 93 ff 01 sts 0x01FF, r24 |
4f44: 90 93 00 02 sts 0x0200, r25 |
4f48: a0 93 01 02 sts 0x0201, r26 |
4f4c: b0 93 02 02 sts 0x0202, r27 |
4f50: 8f ec ldi r24, 0xCF ; 207 |
4f52: 80 93 7a 00 sts 0x007A, r24 |
4f56: 80 91 e2 04 lds r24, 0x04E2 |
4f5a: 83 ff sbrs r24, 3 |
4f5c: ae c0 rjmp .+348 ; 0x50ba <MotorRegler+0xbfe> |
4f5e: 80 91 11 02 lds r24, 0x0211 |
4f62: 81 50 subi r24, 0x01 ; 1 |
4f64: 80 93 11 02 sts 0x0211, r24 |
4f68: 8f 3f cpi r24, 0xFF ; 255 |
4f6a: d9 f4 brne .+54 ; 0x4fa2 <MotorRegler+0xae6> |
4f6c: 0e 94 c4 14 call 0x2988 ; 0x2988 <heading_MM3> |
4f70: 90 93 0c 02 sts 0x020C, r25 |
4f74: 80 93 0b 02 sts 0x020B, r24 |
4f78: 20 91 0d 02 lds r18, 0x020D |
4f7c: 30 91 0e 02 lds r19, 0x020E |
4f80: 82 1b sub r24, r18 |
4f82: 93 0b sbc r25, r19 |
4f84: 84 5e subi r24, 0xE4 ; 228 |
4f86: 9d 4f sbci r25, 0xFD ; 253 |
4f88: 68 e6 ldi r22, 0x68 ; 104 |
4f8a: 71 e0 ldi r23, 0x01 ; 1 |
4f8c: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
4f90: 84 5b subi r24, 0xB4 ; 180 |
4f92: 90 40 sbci r25, 0x00 ; 0 |
4f94: 90 93 10 02 sts 0x0210, r25 |
4f98: 80 93 0f 02 sts 0x020F, r24 |
4f9c: 82 e3 ldi r24, 0x32 ; 50 |
4f9e: 80 93 11 02 sts 0x0211, r24 |
4fa2: 60 91 db 01 lds r22, 0x01DB |
4fa6: 70 91 dc 01 lds r23, 0x01DC |
4faa: 80 91 dd 01 lds r24, 0x01DD |
4fae: 90 91 de 01 lds r25, 0x01DE |
4fb2: 20 e0 ldi r18, 0x00 ; 0 |
4fb4: 34 e0 ldi r19, 0x04 ; 4 |
4fb6: 40 e0 ldi r20, 0x00 ; 0 |
4fb8: 50 e0 ldi r21, 0x00 ; 0 |
4fba: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
4fbe: 89 01 movw r16, r18 |
4fc0: 37 ff sbrs r19, 7 |
4fc2: 03 c0 rjmp .+6 ; 0x4fca <MotorRegler+0xb0e> |
4fc4: 10 95 com r17 |
4fc6: 01 95 neg r16 |
4fc8: 1f 4f sbci r17, 0xFF ; 255 |
4fca: 60 91 e3 01 lds r22, 0x01E3 |
4fce: 70 91 e4 01 lds r23, 0x01E4 |
4fd2: 80 91 e5 01 lds r24, 0x01E5 |
4fd6: 90 91 e6 01 lds r25, 0x01E6 |
4fda: 20 e0 ldi r18, 0x00 ; 0 |
4fdc: 34 e0 ldi r19, 0x04 ; 4 |
4fde: 40 e0 ldi r20, 0x00 ; 0 |
4fe0: 50 e0 ldi r21, 0x00 ; 0 |
4fe2: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
4fe6: b9 01 movw r22, r18 |
4fe8: 37 ff sbrs r19, 7 |
4fea: 03 c0 rjmp .+6 ; 0x4ff2 <MotorRegler+0xb36> |
4fec: 70 95 com r23 |
4fee: 61 95 neg r22 |
4ff0: 7f 4f sbci r23, 0xFF ; 255 |
4ff2: 60 17 cp r22, r16 |
4ff4: 71 07 cpc r23, r17 |
4ff6: 0c f4 brge .+2 ; 0x4ffa <MotorRegler+0xb3e> |
4ff8: b8 01 movw r22, r16 |
4ffa: 63 32 cpi r22, 0x23 ; 35 |
4ffc: 71 05 cpc r23, r1 |
4ffe: 94 f4 brge .+36 ; 0x5024 <MotorRegler+0xb68> |
5000: 80 91 8a 01 lds r24, 0x018A |
5004: 88 23 and r24, r24 |
5006: 71 f0 breq .+28 ; 0x5024 <MotorRegler+0xb68> |
5008: 80 91 2c 02 lds r24, 0x022C |
500c: 88 23 and r24, r24 |
500e: 51 f4 brne .+20 ; 0x5024 <MotorRegler+0xb68> |
5010: 80 91 0b 02 lds r24, 0x020B |
5014: 90 91 0c 02 lds r25, 0x020C |
5018: 90 93 0e 02 sts 0x020E, r25 |
501c: 80 93 0d 02 sts 0x020D, r24 |
5020: 10 92 8a 01 sts 0x018A, r1 |
5024: 20 91 84 01 lds r18, 0x0184 |
5028: 33 27 eor r19, r19 |
502a: 62 9f mul r22, r18 |
502c: c0 01 movw r24, r0 |
502e: 63 9f mul r22, r19 |
5030: 90 0d add r25, r0 |
5032: 72 9f mul r23, r18 |
5034: 90 0d add r25, r0 |
5036: 11 24 eor r1, r1 |
5038: 60 e4 ldi r22, 0x40 ; 64 |
503a: 70 e0 ldi r23, 0x00 ; 0 |
503c: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
5040: a9 01 movw r20, r18 |
5042: 46 1b sub r20, r22 |
5044: 57 0b sbc r21, r23 |
5046: 14 16 cp r1, r20 |
5048: 15 06 cpc r1, r21 |
504a: a4 f5 brge .+104 ; 0x50b4 <MotorRegler+0xbf8> |
504c: 80 91 2c 02 lds r24, 0x022C |
5050: 88 23 and r24, r24 |
5052: 71 f5 brne .+92 ; 0x50b0 <MotorRegler+0xbf4> |
5054: 10 92 7a 00 sts 0x007A, r1 |
5058: 00 91 ff 01 lds r16, 0x01FF |
505c: 10 91 00 02 lds r17, 0x0200 |
5060: 20 91 01 02 lds r18, 0x0201 |
5064: 30 91 02 02 lds r19, 0x0202 |
5068: 80 91 0f 02 lds r24, 0x020F |
506c: 90 91 10 02 lds r25, 0x0210 |
5070: bc 01 movw r22, r24 |
5072: 46 9f mul r20, r22 |
5074: c0 01 movw r24, r0 |
5076: 47 9f mul r20, r23 |
5078: 90 0d add r25, r0 |
507a: 56 9f mul r21, r22 |
507c: 90 0d add r25, r0 |
507e: 11 24 eor r1, r1 |
5080: 60 e2 ldi r22, 0x20 ; 32 |
5082: 70 e0 ldi r23, 0x00 ; 0 |
5084: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
5088: 88 27 eor r24, r24 |
508a: 77 fd sbrc r23, 7 |
508c: 80 95 com r24 |
508e: 98 2f mov r25, r24 |
5090: 06 0f add r16, r22 |
5092: 17 1f adc r17, r23 |
5094: 28 1f adc r18, r24 |
5096: 39 1f adc r19, r25 |
5098: 00 93 ff 01 sts 0x01FF, r16 |
509c: 10 93 00 02 sts 0x0200, r17 |
50a0: 20 93 01 02 sts 0x0201, r18 |
50a4: 30 93 02 02 sts 0x0202, r19 |
50a8: 8f ec ldi r24, 0xCF ; 207 |
50aa: 80 93 7a 00 sts 0x007A, r24 |
50ae: 05 c0 rjmp .+10 ; 0x50ba <MotorRegler+0xbfe> |
50b0: 81 50 subi r24, 0x01 ; 1 |
50b2: 01 c0 rjmp .+2 ; 0x50b6 <MotorRegler+0xbfa> |
50b4: 8a ef ldi r24, 0xFA ; 250 |
50b6: 80 93 2c 02 sts 0x022C, r24 |
50ba: 80 91 5f 04 lds r24, 0x045F |
50be: 8f 5f subi r24, 0xFF ; 255 |
50c0: 80 93 5f 04 sts 0x045F, r24 |
50c4: 80 91 2d 02 lds r24, 0x022D |
50c8: 81 50 subi r24, 0x01 ; 1 |
50ca: 80 93 2d 02 sts 0x022D, r24 |
50ce: 8f 3f cpi r24, 0xFF ; 255 |
50d0: 09 f0 breq .+2 ; 0x50d4 <MotorRegler+0xc18> |
50d2: 68 c0 rjmp .+208 ; 0x51a4 <MotorRegler+0xce8> |
50d4: 81 e3 ldi r24, 0x31 ; 49 |
50d6: 80 93 2d 02 sts 0x022D, r24 |
50da: 60 91 db 01 lds r22, 0x01DB |
50de: 70 91 dc 01 lds r23, 0x01DC |
50e2: 80 91 dd 01 lds r24, 0x01DD |
50e6: 90 91 de 01 lds r25, 0x01DE |
50ea: e0 90 ee 04 lds r14, 0x04EE |
50ee: ff 24 eor r15, r15 |
50f0: 00 27 eor r16, r16 |
50f2: 11 27 eor r17, r17 |
50f4: a8 01 movw r20, r16 |
50f6: 97 01 movw r18, r14 |
50f8: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
50fc: 30 93 61 04 sts 0x0461, r19 |
5100: 20 93 60 04 sts 0x0460, r18 |
5104: 60 91 e3 01 lds r22, 0x01E3 |
5108: 70 91 e4 01 lds r23, 0x01E4 |
510c: 80 91 e5 01 lds r24, 0x01E5 |
5110: 90 91 e6 01 lds r25, 0x01E6 |
5114: a8 01 movw r20, r16 |
5116: 97 01 movw r18, r14 |
5118: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
511c: 30 93 63 04 sts 0x0463, r19 |
5120: 20 93 62 04 sts 0x0462, r18 |
5124: 80 91 27 05 lds r24, 0x0527 |
5128: 90 91 28 05 lds r25, 0x0528 |
512c: 90 93 65 04 sts 0x0465, r25 |
5130: 80 93 64 04 sts 0x0464, r24 |
5134: 80 91 30 05 lds r24, 0x0530 |
5138: 90 91 31 05 lds r25, 0x0531 |
513c: 90 93 67 04 sts 0x0467, r25 |
5140: 80 93 66 04 sts 0x0466, r24 |
5144: 80 91 2a 05 lds r24, 0x052A |
5148: 90 91 2b 05 lds r25, 0x052B |
514c: 90 93 69 04 sts 0x0469, r25 |
5150: 80 93 68 04 sts 0x0468, r24 |
5154: 80 91 24 02 lds r24, 0x0224 |
5158: 90 91 25 02 lds r25, 0x0225 |
515c: 90 93 6b 04 sts 0x046B, r25 |
5160: 80 93 6a 04 sts 0x046A, r24 |
5164: 60 91 07 02 lds r22, 0x0207 |
5168: 70 91 08 02 lds r23, 0x0208 |
516c: 80 91 09 02 lds r24, 0x0209 |
5170: 90 91 0a 02 lds r25, 0x020A |
5174: 20 e0 ldi r18, 0x00 ; 0 |
5176: 32 e0 ldi r19, 0x02 ; 2 |
5178: 40 e0 ldi r20, 0x00 ; 0 |
517a: 50 e0 ldi r21, 0x00 ; 0 |
517c: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
5180: 30 93 6d 04 sts 0x046D, r19 |
5184: 20 93 6c 04 sts 0x046C, r18 |
5188: 89 81 ldd r24, Y+1 ; 0x01 |
518a: 9a 81 ldd r25, Y+2 ; 0x02 |
518c: 90 93 6f 04 sts 0x046F, r25 |
5190: 80 93 6e 04 sts 0x046E, r24 |
5194: 80 91 0b 02 lds r24, 0x020B |
5198: 90 91 0c 02 lds r25, 0x020C |
519c: 90 93 71 04 sts 0x0471, r25 |
51a0: 80 93 70 04 sts 0x0470, r24 |
51a4: 60 91 db 01 lds r22, 0x01DB |
51a8: 70 91 dc 01 lds r23, 0x01DC |
51ac: 80 91 dd 01 lds r24, 0x01DD |
51b0: 90 91 de 01 lds r25, 0x01DE |
51b4: 20 90 1b 05 lds r2, 0x051B |
51b8: 30 90 1c 05 lds r3, 0x051C |
51bc: 40 90 1d 05 lds r4, 0x051D |
51c0: 50 90 1e 05 lds r5, 0x051E |
51c4: e0 90 16 05 lds r14, 0x0516 |
51c8: f0 90 17 05 lds r15, 0x0517 |
51cc: 60 90 2c 05 lds r6, 0x052C |
51d0: 70 90 2d 05 lds r7, 0x052D |
51d4: 80 90 2e 05 lds r8, 0x052E |
51d8: 90 90 2f 05 lds r9, 0x052F |
51dc: 0e 94 9d 2d call 0x5b3a ; 0x5b3a <__floatsisf> |
51e0: a2 01 movw r20, r4 |
51e2: 91 01 movw r18, r2 |
51e4: 0e 94 17 2e call 0x5c2e ; 0x5c2e <__mulsf3> |
51e8: 5b 01 movw r10, r22 |
51ea: 6c 01 movw r12, r24 |
51ec: 00 27 eor r16, r16 |
51ee: f7 fc sbrc r15, 7 |
51f0: 00 95 com r16 |
51f2: 10 2f mov r17, r16 |
51f4: c8 01 movw r24, r16 |
51f6: b7 01 movw r22, r14 |
51f8: 0e 94 9d 2d call 0x5b3a ; 0x5b3a <__floatsisf> |
51fc: a4 01 movw r20, r8 |
51fe: 93 01 movw r18, r6 |
5200: 0e 94 17 2e call 0x5c2e ; 0x5c2e <__mulsf3> |
5204: 9b 01 movw r18, r22 |
5206: ac 01 movw r20, r24 |
5208: c6 01 movw r24, r12 |
520a: b5 01 movw r22, r10 |
520c: 0e 94 f8 2c call 0x59f0 ; 0x59f0 <__addsf3> |
5210: 0e 94 80 2d call 0x5b00 ; 0x5b00 <__fixsfsi> |
5214: 70 93 17 05 sts 0x0517, r23 |
5218: 60 93 16 05 sts 0x0516, r22 |
521c: 60 91 e3 01 lds r22, 0x01E3 |
5220: 70 91 e4 01 lds r23, 0x01E4 |
5224: 80 91 e5 01 lds r24, 0x01E5 |
5228: 90 91 e6 01 lds r25, 0x01E6 |
522c: e0 90 14 05 lds r14, 0x0514 |
5230: f0 90 15 05 lds r15, 0x0515 |
5234: 0e 94 9d 2d call 0x5b3a ; 0x5b3a <__floatsisf> |
5238: a2 01 movw r20, r4 |
523a: 91 01 movw r18, r2 |
523c: 0e 94 17 2e call 0x5c2e ; 0x5c2e <__mulsf3> |
5240: 5b 01 movw r10, r22 |
5242: 6c 01 movw r12, r24 |
5244: 00 27 eor r16, r16 |
5246: f7 fc sbrc r15, 7 |
5248: 00 95 com r16 |
524a: 10 2f mov r17, r16 |
524c: c8 01 movw r24, r16 |
524e: b7 01 movw r22, r14 |
5250: 0e 94 9d 2d call 0x5b3a ; 0x5b3a <__floatsisf> |
5254: a4 01 movw r20, r8 |
5256: 93 01 movw r18, r6 |
5258: 0e 94 17 2e call 0x5c2e ; 0x5c2e <__mulsf3> |
525c: 9b 01 movw r18, r22 |
525e: ac 01 movw r20, r24 |
5260: c6 01 movw r24, r12 |
5262: b5 01 movw r22, r10 |
5264: 0e 94 f8 2c call 0x59f0 ; 0x59f0 <__addsf3> |
5268: 0e 94 80 2d call 0x5b00 ; 0x5b00 <__fixsfsi> |
526c: 70 93 15 05 sts 0x0515, r23 |
5270: 60 93 14 05 sts 0x0514, r22 |
5274: 60 91 2a 05 lds r22, 0x052A |
5278: 70 91 2b 05 lds r23, 0x052B |
527c: a0 90 eb 01 lds r10, 0x01EB |
5280: b0 90 ec 01 lds r11, 0x01EC |
5284: c0 90 ed 01 lds r12, 0x01ED |
5288: d0 90 ee 01 lds r13, 0x01EE |
528c: 88 27 eor r24, r24 |
528e: 77 fd sbrc r23, 7 |
5290: 80 95 com r24 |
5292: 98 2f mov r25, r24 |
5294: 0e 94 9d 2d call 0x5b3a ; 0x5b3a <__floatsisf> |
5298: 7b 01 movw r14, r22 |
529a: 8c 01 movw r16, r24 |
529c: 20 e0 ldi r18, 0x00 ; 0 |
529e: 30 e0 ldi r19, 0x00 ; 0 |
52a0: 40 e0 ldi r20, 0x00 ; 0 |
52a2: 5f e3 ldi r21, 0x3F ; 63 |
52a4: c4 01 movw r24, r8 |
52a6: b3 01 movw r22, r6 |
52a8: 0e 94 17 2e call 0x5c2e ; 0x5c2e <__mulsf3> |
52ac: 9b 01 movw r18, r22 |
52ae: ac 01 movw r20, r24 |
52b0: c8 01 movw r24, r16 |
52b2: b7 01 movw r22, r14 |
52b4: 0e 94 17 2e call 0x5c2e ; 0x5c2e <__mulsf3> |
52b8: 7b 01 movw r14, r22 |
52ba: 8c 01 movw r16, r24 |
52bc: c6 01 movw r24, r12 |
52be: b5 01 movw r22, r10 |
52c0: 0e 94 9d 2d call 0x5b3a ; 0x5b3a <__floatsisf> |
52c4: a2 01 movw r20, r4 |
52c6: 91 01 movw r18, r2 |
52c8: 0e 94 17 2e call 0x5c2e ; 0x5c2e <__mulsf3> |
52cc: 9b 01 movw r18, r22 |
52ce: ac 01 movw r20, r24 |
52d0: c8 01 movw r24, r16 |
52d2: b7 01 movw r22, r14 |
52d4: 0e 94 f8 2c call 0x59f0 ; 0x59f0 <__addsf3> |
52d8: 0e 94 80 2d call 0x5b00 ; 0x5b00 <__fixsfsi> |
52dc: 70 93 2b 05 sts 0x052B, r23 |
52e0: 60 93 2a 05 sts 0x052A, r22 |
52e4: 80 91 16 05 lds r24, 0x0516 |
52e8: 90 91 17 05 lds r25, 0x0517 |
52ec: 81 50 subi r24, 0x01 ; 1 |
52ee: 98 40 sbci r25, 0x08 ; 8 |
52f0: 34 f0 brlt .+12 ; 0x52fe <MotorRegler+0xe42> |
52f2: 80 e0 ldi r24, 0x00 ; 0 |
52f4: 98 e0 ldi r25, 0x08 ; 8 |
52f6: 90 93 17 05 sts 0x0517, r25 |
52fa: 80 93 16 05 sts 0x0516, r24 |
52fe: 80 91 16 05 lds r24, 0x0516 |
5302: 90 91 17 05 lds r25, 0x0517 |
5306: 80 50 subi r24, 0x00 ; 0 |
5308: 98 4f sbci r25, 0xF8 ; 248 |
530a: 34 f4 brge .+12 ; 0x5318 <MotorRegler+0xe5c> |
530c: 80 e0 ldi r24, 0x00 ; 0 |
530e: 98 ef ldi r25, 0xF8 ; 248 |
5310: 90 93 17 05 sts 0x0517, r25 |
5314: 80 93 16 05 sts 0x0516, r24 |
5318: 80 91 14 05 lds r24, 0x0514 |
531c: 90 91 15 05 lds r25, 0x0515 |
5320: 81 50 subi r24, 0x01 ; 1 |
5322: 98 40 sbci r25, 0x08 ; 8 |
5324: 34 f0 brlt .+12 ; 0x5332 <MotorRegler+0xe76> |
5326: 80 e0 ldi r24, 0x00 ; 0 |
5328: 98 e0 ldi r25, 0x08 ; 8 |
532a: 90 93 15 05 sts 0x0515, r25 |
532e: 80 93 14 05 sts 0x0514, r24 |
5332: 80 91 14 05 lds r24, 0x0514 |
5336: 90 91 15 05 lds r25, 0x0515 |
533a: 80 50 subi r24, 0x00 ; 0 |
533c: 98 4f sbci r25, 0xF8 ; 248 |
533e: 34 f4 brge .+12 ; 0x534c <MotorRegler+0xe90> |
5340: 80 e0 ldi r24, 0x00 ; 0 |
5342: 98 ef ldi r25, 0xF8 ; 248 |
5344: 90 93 15 05 sts 0x0515, r25 |
5348: 80 93 14 05 sts 0x0514, r24 |
534c: 80 91 2a 05 lds r24, 0x052A |
5350: 90 91 2b 05 lds r25, 0x052B |
5354: 81 50 subi r24, 0x01 ; 1 |
5356: 98 40 sbci r25, 0x08 ; 8 |
5358: 34 f0 brlt .+12 ; 0x5366 <MotorRegler+0xeaa> |
535a: 80 e0 ldi r24, 0x00 ; 0 |
535c: 98 e0 ldi r25, 0x08 ; 8 |
535e: 90 93 2b 05 sts 0x052B, r25 |
5362: 80 93 2a 05 sts 0x052A, r24 |
5366: 80 91 2a 05 lds r24, 0x052A |
536a: 90 91 2b 05 lds r25, 0x052B |
536e: 80 50 subi r24, 0x00 ; 0 |
5370: 98 4f sbci r25, 0xF8 ; 248 |
5372: 34 f4 brge .+12 ; 0x5380 <MotorRegler+0xec4> |
5374: 80 e0 ldi r24, 0x00 ; 0 |
5376: 98 ef ldi r25, 0xF8 ; 248 |
5378: 90 93 2b 05 sts 0x052B, r25 |
537c: 80 93 2a 05 sts 0x052A, r24 |
5380: 80 91 e2 04 lds r24, 0x04E2 |
5384: 99 27 eor r25, r25 |
5386: 80 ff sbrs r24, 0 |
5388: cd c0 rjmp .+410 ; 0x5524 <MotorRegler+0x1068> |
538a: 20 91 81 01 lds r18, 0x0181 |
538e: 81 ff sbrs r24, 1 |
5390: 0e c0 rjmp .+28 ; 0x53ae <MotorRegler+0xef2> |
5392: 22 33 cpi r18, 0x32 ; 50 |
5394: b0 f4 brcc .+44 ; 0x53c2 <MotorRegler+0xf06> |
5396: 80 91 24 02 lds r24, 0x0224 |
539a: 90 91 25 02 lds r25, 0x0225 |
539e: 44 97 sbiw r24, 0x14 ; 20 |
53a0: 90 93 27 02 sts 0x0227, r25 |
53a4: 80 93 26 02 sts 0x0226, r24 |
53a8: 10 92 13 02 sts 0x0213, r1 |
53ac: 0d c0 rjmp .+26 ; 0x53c8 <MotorRegler+0xf0c> |
53ae: 80 91 e7 04 lds r24, 0x04E7 |
53b2: 28 9f mul r18, r24 |
53b4: c0 01 movw r24, r0 |
53b6: 11 24 eor r1, r1 |
53b8: 44 97 sbiw r24, 0x14 ; 20 |
53ba: 90 93 27 02 sts 0x0227, r25 |
53be: 80 93 26 02 sts 0x0226, r24 |
53c2: 81 e0 ldi r24, 0x01 ; 1 |
53c4: 80 93 13 02 sts 0x0213, r24 |
53c8: 80 91 12 02 lds r24, 0x0212 |
53cc: 88 23 and r24, r24 |
53ce: 21 f0 breq .+8 ; 0x53d8 <MotorRegler+0xf1c> |
53d0: 10 92 27 02 sts 0x0227, r1 |
53d4: 10 92 26 02 sts 0x0226, r1 |
53d8: 20 91 24 02 lds r18, 0x0224 |
53dc: 30 91 25 02 lds r19, 0x0225 |
53e0: 40 91 26 02 lds r20, 0x0226 |
53e4: 50 91 27 02 lds r21, 0x0227 |
53e8: 42 17 cp r20, r18 |
53ea: 53 07 cpc r21, r19 |
53ec: 0c f0 brlt .+2 ; 0x53f0 <MotorRegler+0xf34> |
53ee: 9a c0 rjmp .+308 ; 0x5524 <MotorRegler+0x1068> |
53f0: 80 91 13 02 lds r24, 0x0213 |
53f4: 88 23 and r24, r24 |
53f6: 09 f4 brne .+2 ; 0x53fa <MotorRegler+0xf3e> |
53f8: 95 c0 rjmp .+298 ; 0x5524 <MotorRegler+0x1068> |
53fa: 24 1b sub r18, r20 |
53fc: 35 0b sbc r19, r21 |
53fe: 80 91 82 01 lds r24, 0x0182 |
5402: 99 27 eor r25, r25 |
5404: bc 01 movw r22, r24 |
5406: 26 9f mul r18, r22 |
5408: c0 01 movw r24, r0 |
540a: 27 9f mul r18, r23 |
540c: 90 0d add r25, r0 |
540e: 36 9f mul r19, r22 |
5410: 90 0d add r25, r0 |
5412: 11 24 eor r1, r1 |
5414: 60 e1 ldi r22, 0x10 ; 16 |
5416: 70 e0 ldi r23, 0x00 ; 0 |
5418: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
541c: 09 81 ldd r16, Y+1 ; 0x01 |
541e: 1a 81 ldd r17, Y+2 ; 0x02 |
5420: 06 1b sub r16, r22 |
5422: 17 0b sbc r17, r23 |
5424: 20 91 bf 01 lds r18, 0x01BF |
5428: 30 91 c0 01 lds r19, 0x01C0 |
542c: 80 91 80 01 lds r24, 0x0180 |
5430: 99 27 eor r25, r25 |
5432: fc 01 movw r30, r24 |
5434: 2e 9f mul r18, r30 |
5436: c0 01 movw r24, r0 |
5438: 2f 9f mul r18, r31 |
543a: 90 0d add r25, r0 |
543c: 3e 9f mul r19, r30 |
543e: 90 0d add r25, r0 |
5440: 11 24 eor r1, r1 |
5442: 68 e0 ldi r22, 0x08 ; 8 |
5444: 70 e0 ldi r23, 0x00 ; 0 |
5446: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
544a: 06 1b sub r16, r22 |
544c: 17 0b sbc r17, r23 |
544e: 60 91 07 02 lds r22, 0x0207 |
5452: 70 91 08 02 lds r23, 0x0208 |
5456: 80 91 09 02 lds r24, 0x0209 |
545a: 90 91 0a 02 lds r25, 0x020A |
545e: 20 e0 ldi r18, 0x00 ; 0 |
5460: 32 e0 ldi r19, 0x02 ; 2 |
5462: 40 e0 ldi r20, 0x00 ; 0 |
5464: 50 e0 ldi r21, 0x00 ; 0 |
5466: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
546a: ca 01 movw r24, r20 |
546c: b9 01 movw r22, r18 |
546e: 20 91 83 01 lds r18, 0x0183 |
5472: 33 27 eor r19, r19 |
5474: 44 27 eor r20, r20 |
5476: 55 27 eor r21, r21 |
5478: 0e 94 5f 2e call 0x5cbe ; 0x5cbe <__mulsi3> |
547c: 20 e2 ldi r18, 0x20 ; 32 |
547e: 30 e0 ldi r19, 0x00 ; 0 |
5480: 40 e0 ldi r20, 0x00 ; 0 |
5482: 50 e0 ldi r21, 0x00 ; 0 |
5484: 0e 94 c7 2e call 0x5d8e ; 0x5d8e <__divmodsi4> |
5488: ff ef ldi r31, 0xFF ; 255 |
548a: 2e 3c cpi r18, 0xCE ; 206 |
548c: 3f 07 cpc r19, r31 |
548e: 14 f4 brge .+4 ; 0x5494 <MotorRegler+0xfd8> |
5490: 2e ec ldi r18, 0xCE ; 206 |
5492: 3f ef ldi r19, 0xFF ; 255 |
5494: 80 91 2e 02 lds r24, 0x022E |
5498: 90 91 2f 02 lds r25, 0x022F |
549c: ac 01 movw r20, r24 |
549e: 64 e0 ldi r22, 0x04 ; 4 |
54a0: 44 0f add r20, r20 |
54a2: 55 1f adc r21, r21 |
54a4: 6a 95 dec r22 |
54a6: e1 f7 brne .-8 ; 0x54a0 <MotorRegler+0xfe4> |
54a8: 48 1b sub r20, r24 |
54aa: 59 0b sbc r21, r25 |
54ac: 23 33 cpi r18, 0x33 ; 51 |
54ae: 31 05 cpc r19, r1 |
54b0: 14 f0 brlt .+4 ; 0x54b6 <MotorRegler+0xffa> |
54b2: 22 e3 ldi r18, 0x32 ; 50 |
54b4: 30 e0 ldi r19, 0x00 ; 0 |
54b6: 02 1b sub r16, r18 |
54b8: 13 0b sbc r17, r19 |
54ba: ca 01 movw r24, r20 |
54bc: 80 0f add r24, r16 |
54be: 91 1f adc r25, r17 |
54c0: 60 e1 ldi r22, 0x10 ; 16 |
54c2: 70 e0 ldi r23, 0x00 ; 0 |
54c4: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
54c8: 70 93 2f 02 sts 0x022F, r23 |
54cc: 60 93 2e 02 sts 0x022E, r22 |
54d0: 80 91 e3 04 lds r24, 0x04E3 |
54d4: 99 27 eor r25, r25 |
54d6: 68 17 cp r22, r24 |
54d8: 79 07 cpc r23, r25 |
54da: 8c f4 brge .+34 ; 0x54fe <MotorRegler+0x1042> |
54dc: 29 81 ldd r18, Y+1 ; 0x01 |
54de: 3a 81 ldd r19, Y+2 ; 0x02 |
54e0: 28 17 cp r18, r24 |
54e2: 39 07 cpc r19, r25 |
54e4: 2c f0 brlt .+10 ; 0x54f0 <MotorRegler+0x1034> |
54e6: 90 93 2f 02 sts 0x022F, r25 |
54ea: 80 93 2e 02 sts 0x022E, r24 |
54ee: 07 c0 rjmp .+14 ; 0x54fe <MotorRegler+0x1042> |
54f0: 49 81 ldd r20, Y+1 ; 0x01 |
54f2: 5a 81 ldd r21, Y+2 ; 0x02 |
54f4: 50 93 2f 02 sts 0x022F, r21 |
54f8: 40 93 2e 02 sts 0x022E, r20 |
54fc: 0d c0 rjmp .+26 ; 0x5518 <MotorRegler+0x105c> |
54fe: 80 91 2e 02 lds r24, 0x022E |
5502: 90 91 2f 02 lds r25, 0x022F |
5506: 69 81 ldd r22, Y+1 ; 0x01 |
5508: 7a 81 ldd r23, Y+2 ; 0x02 |
550a: 68 17 cp r22, r24 |
550c: 79 07 cpc r23, r25 |
550e: 24 f4 brge .+8 ; 0x5518 <MotorRegler+0x105c> |
5510: 70 93 2f 02 sts 0x022F, r23 |
5514: 60 93 2e 02 sts 0x022E, r22 |
5518: 80 91 2e 02 lds r24, 0x022E |
551c: 90 91 2f 02 lds r25, 0x022F |
5520: 9a 83 std Y+2, r25 ; 0x02 |
5522: 89 83 std Y+1, r24 ; 0x01 |
5524: c0 90 2a 05 lds r12, 0x052A |
5528: d0 90 2b 05 lds r13, 0x052B |
552c: 80 91 43 02 lds r24, 0x0243 |
5530: 90 91 44 02 lds r25, 0x0244 |
5534: c8 1a sub r12, r24 |
5536: d9 0a sbc r13, r25 |
5538: 95 e6 ldi r25, 0x65 ; 101 |
553a: c9 16 cp r12, r25 |
553c: d1 04 cpc r13, r1 |
553e: 24 f0 brlt .+8 ; 0x5548 <MotorRegler+0x108c> |
5540: 14 e6 ldi r17, 0x64 ; 100 |
5542: c1 2e mov r12, r17 |
5544: d1 2c mov r13, r1 |
5546: 09 c0 rjmp .+18 ; 0x555a <MotorRegler+0x109e> |
5548: ec e9 ldi r30, 0x9C ; 156 |
554a: ce 16 cp r12, r30 |
554c: ef ef ldi r30, 0xFF ; 255 |
554e: de 06 cpc r13, r30 |
5550: 24 f4 brge .+8 ; 0x555a <MotorRegler+0x109e> |
5552: bc e9 ldi r27, 0x9C ; 156 |
5554: cb 2e mov r12, r27 |
5556: bf ef ldi r27, 0xFF ; 255 |
5558: db 2e mov r13, r27 |
555a: 40 90 78 01 lds r4, 0x0178 |
555e: 50 90 79 01 lds r5, 0x0179 |
5562: 60 90 7a 01 lds r6, 0x017A |
5566: 70 90 7b 01 lds r7, 0x017B |
556a: 60 91 16 05 lds r22, 0x0516 |
556e: 70 91 17 05 lds r23, 0x0517 |
5572: 20 91 1d 02 lds r18, 0x021D |
5576: 30 91 1e 02 lds r19, 0x021E |
557a: 40 91 4f 02 lds r20, 0x024F |
557e: 50 91 50 02 lds r21, 0x0250 |
5582: 24 1b sub r18, r20 |
5584: 35 0b sbc r19, r21 |
5586: 62 1b sub r22, r18 |
5588: 73 0b sbc r23, r19 |
558a: 88 27 eor r24, r24 |
558c: 77 fd sbrc r23, 7 |
558e: 80 95 com r24 |
5590: 98 2f mov r25, r24 |
5592: 0e 94 9d 2d call 0x5b3a ; 0x5b3a <__floatsisf> |
5596: 9b 01 movw r18, r22 |
5598: ac 01 movw r20, r24 |
559a: c3 01 movw r24, r6 |
559c: b2 01 movw r22, r4 |
559e: 0e 94 17 2e call 0x5c2e ; 0x5c2e <__mulsf3> |
55a2: 0e 94 80 2d call 0x5b00 ; 0x5b00 <__fixsfsi> |
55a6: 70 93 68 02 sts 0x0268, r23 |
55aa: 60 93 67 02 sts 0x0267, r22 |
55ae: 80 91 67 02 lds r24, 0x0267 |
55b2: 90 91 68 02 lds r25, 0x0268 |
55b6: 8c 01 movw r16, r24 |
55b8: 22 27 eor r18, r18 |
55ba: 17 fd sbrc r17, 7 |
55bc: 20 95 com r18 |
55be: 32 2f mov r19, r18 |
55c0: 80 91 4b 02 lds r24, 0x024B |
55c4: 90 91 4c 02 lds r25, 0x024C |
55c8: a0 91 4d 02 lds r26, 0x024D |
55cc: b0 91 4e 02 lds r27, 0x024E |
55d0: 08 0f add r16, r24 |
55d2: 19 1f adc r17, r25 |
55d4: 2a 1f adc r18, r26 |
55d6: 3b 1f adc r19, r27 |
55d8: 00 93 4b 02 sts 0x024B, r16 |
55dc: 10 93 4c 02 sts 0x024C, r17 |
55e0: 20 93 4d 02 sts 0x024D, r18 |
55e4: 30 93 4e 02 sts 0x024E, r19 |
55e8: 10 16 cp r1, r16 |
55ea: 11 06 cpc r1, r17 |
55ec: 12 06 cpc r1, r18 |
55ee: 13 06 cpc r1, r19 |
55f0: ac f4 brge .+42 ; 0x561c <MotorRegler+0x1160> |
55f2: c8 01 movw r24, r16 |
55f4: 17 ff sbrs r17, 7 |
55f6: 03 c0 rjmp .+6 ; 0x55fe <MotorRegler+0x1142> |
55f8: 90 95 com r25 |
55fa: 81 95 neg r24 |
55fc: 9f 4f sbci r25, 0xFF ; 255 |
55fe: 60 e0 ldi r22, 0x00 ; 0 |
5600: 71 e0 ldi r23, 0x01 ; 1 |
5602: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
5606: 6f 5f subi r22, 0xFF ; 255 |
5608: 7f 4f sbci r23, 0xFF ; 255 |
560a: 88 27 eor r24, r24 |
560c: 77 fd sbrc r23, 7 |
560e: 80 95 com r24 |
5610: 98 2f mov r25, r24 |
5612: 06 1b sub r16, r22 |
5614: 17 0b sbc r17, r23 |
5616: 28 0b sbc r18, r24 |
5618: 39 0b sbc r19, r25 |
561a: 14 c0 rjmp .+40 ; 0x5644 <MotorRegler+0x1188> |
561c: c8 01 movw r24, r16 |
561e: 17 ff sbrs r17, 7 |
5620: 03 c0 rjmp .+6 ; 0x5628 <MotorRegler+0x116c> |
5622: 90 95 com r25 |
5624: 81 95 neg r24 |
5626: 9f 4f sbci r25, 0xFF ; 255 |
5628: 60 e0 ldi r22, 0x00 ; 0 |
562a: 71 e0 ldi r23, 0x01 ; 1 |
562c: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
5630: 6f 5f subi r22, 0xFF ; 255 |
5632: 7f 4f sbci r23, 0xFF ; 255 |
5634: 88 27 eor r24, r24 |
5636: 77 fd sbrc r23, 7 |
5638: 80 95 com r24 |
563a: 98 2f mov r25, r24 |
563c: 06 0f add r16, r22 |
563e: 17 1f adc r17, r23 |
5640: 28 1f adc r18, r24 |
5642: 39 1f adc r19, r25 |
5644: 00 93 4b 02 sts 0x024B, r16 |
5648: 10 93 4c 02 sts 0x024C, r17 |
564c: 20 93 4d 02 sts 0x024D, r18 |
5650: 30 93 4e 02 sts 0x024E, r19 |
5654: 80 91 4b 02 lds r24, 0x024B |
5658: 90 91 4c 02 lds r25, 0x024C |
565c: a0 91 4d 02 lds r26, 0x024D |
5660: b0 91 4e 02 lds r27, 0x024E |
5664: 81 38 cpi r24, 0x81 ; 129 |
5666: fe e3 ldi r31, 0x3E ; 62 |
5668: 9f 07 cpc r25, r31 |
566a: f0 e0 ldi r31, 0x00 ; 0 |
566c: af 07 cpc r26, r31 |
566e: f0 e0 ldi r31, 0x00 ; 0 |
5670: bf 07 cpc r27, r31 |
5672: 2c f0 brlt .+10 ; 0x567e <MotorRegler+0x11c2> |
5674: 80 e8 ldi r24, 0x80 ; 128 |
5676: 9e e3 ldi r25, 0x3E ; 62 |
5678: a0 e0 ldi r26, 0x00 ; 0 |
567a: b0 e0 ldi r27, 0x00 ; 0 |
567c: 09 c0 rjmp .+18 ; 0x5690 <MotorRegler+0x11d4> |
567e: 80 58 subi r24, 0x80 ; 128 |
5680: 91 4c sbci r25, 0xC1 ; 193 |
5682: af 4f sbci r26, 0xFF ; 255 |
5684: bf 4f sbci r27, 0xFF ; 255 |
5686: 64 f4 brge .+24 ; 0x56a0 <MotorRegler+0x11e4> |
5688: 80 e8 ldi r24, 0x80 ; 128 |
568a: 91 ec ldi r25, 0xC1 ; 193 |
568c: af ef ldi r26, 0xFF ; 255 |
568e: bf ef ldi r27, 0xFF ; 255 |
5690: 80 93 4b 02 sts 0x024B, r24 |
5694: 90 93 4c 02 sts 0x024C, r25 |
5698: a0 93 4d 02 sts 0x024D, r26 |
569c: b0 93 4e 02 sts 0x024E, r27 |
56a0: 60 91 67 02 lds r22, 0x0267 |
56a4: 70 91 68 02 lds r23, 0x0268 |
56a8: 80 90 7c 01 lds r8, 0x017C |
56ac: 90 90 7d 01 lds r9, 0x017D |
56b0: a0 90 7e 01 lds r10, 0x017E |
56b4: b0 90 7f 01 lds r11, 0x017F |
56b8: 88 27 eor r24, r24 |
56ba: 77 fd sbrc r23, 7 |
56bc: 80 95 com r24 |
56be: 98 2f mov r25, r24 |
56c0: 0e 94 9d 2d call 0x5b3a ; 0x5b3a <__floatsisf> |
56c4: 7b 01 movw r14, r22 |
56c6: 8c 01 movw r16, r24 |
56c8: 60 91 4b 02 lds r22, 0x024B |
56cc: 70 91 4c 02 lds r23, 0x024C |
56d0: 80 91 4d 02 lds r24, 0x024D |
56d4: 90 91 4e 02 lds r25, 0x024E |
56d8: 0e 94 9d 2d call 0x5b3a ; 0x5b3a <__floatsisf> |
56dc: 9b 01 movw r18, r22 |
56de: ac 01 movw r20, r24 |
56e0: c5 01 movw r24, r10 |
56e2: b4 01 movw r22, r8 |
56e4: 0e 94 17 2e call 0x5c2e ; 0x5c2e <__mulsf3> |
56e8: 9b 01 movw r18, r22 |
56ea: ac 01 movw r20, r24 |
56ec: c8 01 movw r24, r16 |
56ee: b7 01 movw r22, r14 |
56f0: 0e 94 f8 2c call 0x59f0 ; 0x59f0 <__addsf3> |
56f4: 0e 94 80 2d call 0x5b00 ; 0x5b00 <__fixsfsi> |
56f8: 96 01 movw r18, r12 |
56fa: 26 0f add r18, r22 |
56fc: 37 1f adc r19, r23 |
56fe: 49 81 ldd r20, Y+1 ; 0x01 |
5700: 5a 81 ldd r21, Y+2 ; 0x02 |
5702: 24 0f add r18, r20 |
5704: 35 1f adc r19, r21 |
5706: 22 24 eor r2, r2 |
5708: 4a 30 cpi r20, 0x0A ; 10 |
570a: 51 05 cpc r21, r1 |
570c: 14 f4 brge .+4 ; 0x5712 <MotorRegler+0x1256> |
570e: a1 e0 ldi r26, 0x01 ; 1 |
5710: 2a 2e mov r2, r26 |
5712: 37 fd sbrc r19, 7 |
5714: 02 c0 rjmp .+4 ; 0x571a <MotorRegler+0x125e> |
5716: 22 20 and r2, r2 |
5718: 19 f0 breq .+6 ; 0x5720 <MotorRegler+0x1264> |
571a: 40 e0 ldi r20, 0x00 ; 0 |
571c: 50 e0 ldi r21, 0x00 ; 0 |
571e: 08 c0 rjmp .+16 ; 0x5730 <MotorRegler+0x1274> |
5720: 80 91 29 05 lds r24, 0x0529 |
5724: 48 2f mov r20, r24 |
5726: 55 27 eor r21, r21 |
5728: 24 17 cp r18, r20 |
572a: 35 07 cpc r19, r21 |
572c: 0c f4 brge .+2 ; 0x5730 <MotorRegler+0x1274> |
572e: a9 01 movw r20, r18 |
5730: 80 91 18 05 lds r24, 0x0518 |
5734: e8 2f mov r30, r24 |
5736: ff 27 eor r31, r31 |
5738: fc 83 std Y+4, r31 ; 0x04 |
573a: eb 83 std Y+3, r30 ; 0x03 |
573c: 9f 01 movw r18, r30 |
573e: e4 17 cp r30, r20 |
5740: f5 07 cpc r31, r21 |
5742: 0c f4 brge .+2 ; 0x5746 <MotorRegler+0x128a> |
5744: 9a 01 movw r18, r20 |
5746: 20 93 65 02 sts 0x0265, r18 |
574a: 29 81 ldd r18, Y+1 ; 0x01 |
574c: 3a 81 ldd r19, Y+2 ; 0x02 |
574e: 26 1b sub r18, r22 |
5750: 37 0b sbc r19, r23 |
5752: b9 01 movw r22, r18 |
5754: 6c 0d add r22, r12 |
5756: 7d 1d adc r23, r13 |
5758: 77 fd sbrc r23, 7 |
575a: 02 c0 rjmp .+4 ; 0x5760 <MotorRegler+0x12a4> |
575c: 22 20 and r2, r2 |
575e: 19 f0 breq .+6 ; 0x5766 <MotorRegler+0x12aa> |
5760: 80 e0 ldi r24, 0x00 ; 0 |
5762: 90 e0 ldi r25, 0x00 ; 0 |
5764: 07 c0 rjmp .+14 ; 0x5774 <MotorRegler+0x12b8> |
5766: 80 91 29 05 lds r24, 0x0529 |
576a: 99 27 eor r25, r25 |
576c: 68 17 cp r22, r24 |
576e: 79 07 cpc r23, r25 |
5770: 0c f4 brge .+2 ; 0x5774 <MotorRegler+0x12b8> |
5772: cb 01 movw r24, r22 |
5774: 2b 81 ldd r18, Y+3 ; 0x03 |
5776: 3c 81 ldd r19, Y+4 ; 0x04 |
5778: 28 17 cp r18, r24 |
577a: 39 07 cpc r19, r25 |
577c: 0c f4 brge .+2 ; 0x5780 <MotorRegler+0x12c4> |
577e: 9c 01 movw r18, r24 |
5780: 20 93 66 02 sts 0x0266, r18 |
5784: 60 91 14 05 lds r22, 0x0514 |
5788: 70 91 15 05 lds r23, 0x0515 |
578c: 20 91 1f 02 lds r18, 0x021F |
5790: 30 91 20 02 lds r19, 0x0220 |
5794: 40 91 51 02 lds r20, 0x0251 |
5798: 50 91 52 02 lds r21, 0x0252 |
579c: 24 1b sub r18, r20 |
579e: 35 0b sbc r19, r21 |
57a0: 62 1b sub r22, r18 |
57a2: 73 0b sbc r23, r19 |
57a4: 88 27 eor r24, r24 |
57a6: 77 fd sbrc r23, 7 |
57a8: 80 95 com r24 |
57aa: 98 2f mov r25, r24 |
57ac: 0e 94 9d 2d call 0x5b3a ; 0x5b3a <__floatsisf> |
57b0: 9b 01 movw r18, r22 |
57b2: ac 01 movw r20, r24 |
57b4: c3 01 movw r24, r6 |
57b6: b2 01 movw r22, r4 |
57b8: 0e 94 17 2e call 0x5c2e ; 0x5c2e <__mulsf3> |
57bc: 0e 94 80 2d call 0x5b00 ; 0x5b00 <__fixsfsi> |
57c0: 70 93 64 02 sts 0x0264, r23 |
57c4: 60 93 63 02 sts 0x0263, r22 |
57c8: 80 91 63 02 lds r24, 0x0263 |
57cc: 90 91 64 02 lds r25, 0x0264 |
57d0: 8c 01 movw r16, r24 |
57d2: 22 27 eor r18, r18 |
57d4: 17 fd sbrc r17, 7 |
57d6: 20 95 com r18 |
57d8: 32 2f mov r19, r18 |
57da: 80 91 47 02 lds r24, 0x0247 |
57de: 90 91 48 02 lds r25, 0x0248 |
57e2: a0 91 49 02 lds r26, 0x0249 |
57e6: b0 91 4a 02 lds r27, 0x024A |
57ea: 08 0f add r16, r24 |
57ec: 19 1f adc r17, r25 |
57ee: 2a 1f adc r18, r26 |
57f0: 3b 1f adc r19, r27 |
57f2: 00 93 47 02 sts 0x0247, r16 |
57f6: 10 93 48 02 sts 0x0248, r17 |
57fa: 20 93 49 02 sts 0x0249, r18 |
57fe: 30 93 4a 02 sts 0x024A, r19 |
5802: 10 16 cp r1, r16 |
5804: 11 06 cpc r1, r17 |
5806: 12 06 cpc r1, r18 |
5808: 13 06 cpc r1, r19 |
580a: ac f4 brge .+42 ; 0x5836 <MotorRegler+0x137a> |
580c: c8 01 movw r24, r16 |
580e: 17 ff sbrs r17, 7 |
5810: 03 c0 rjmp .+6 ; 0x5818 <MotorRegler+0x135c> |
5812: 90 95 com r25 |
5814: 81 95 neg r24 |
5816: 9f 4f sbci r25, 0xFF ; 255 |
5818: 60 e0 ldi r22, 0x00 ; 0 |
581a: 71 e0 ldi r23, 0x01 ; 1 |
581c: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
5820: 6f 5f subi r22, 0xFF ; 255 |
5822: 7f 4f sbci r23, 0xFF ; 255 |
5824: 88 27 eor r24, r24 |
5826: 77 fd sbrc r23, 7 |
5828: 80 95 com r24 |
582a: 98 2f mov r25, r24 |
582c: 06 1b sub r16, r22 |
582e: 17 0b sbc r17, r23 |
5830: 28 0b sbc r18, r24 |
5832: 39 0b sbc r19, r25 |
5834: 14 c0 rjmp .+40 ; 0x585e <MotorRegler+0x13a2> |
5836: c8 01 movw r24, r16 |
5838: 17 ff sbrs r17, 7 |
583a: 03 c0 rjmp .+6 ; 0x5842 <MotorRegler+0x1386> |
583c: 90 95 com r25 |
583e: 81 95 neg r24 |
5840: 9f 4f sbci r25, 0xFF ; 255 |
5842: 60 e0 ldi r22, 0x00 ; 0 |
5844: 71 e0 ldi r23, 0x01 ; 1 |
5846: 0e 94 92 2e call 0x5d24 ; 0x5d24 <__divmodhi4> |
584a: 6f 5f subi r22, 0xFF ; 255 |
584c: 7f 4f sbci r23, 0xFF ; 255 |
584e: 88 27 eor r24, r24 |
5850: 77 fd sbrc r23, 7 |
5852: 80 95 com r24 |
5854: 98 2f mov r25, r24 |
5856: 06 0f add r16, r22 |
5858: 17 1f adc r17, r23 |
585a: 28 1f adc r18, r24 |
585c: 39 1f adc r19, r25 |
585e: 00 93 47 02 sts 0x0247, r16 |
5862: 10 93 48 02 sts 0x0248, r17 |
5866: 20 93 49 02 sts 0x0249, r18 |
586a: 30 93 4a 02 sts 0x024A, r19 |
586e: 80 91 47 02 lds r24, 0x0247 |
5872: 90 91 48 02 lds r25, 0x0248 |
5876: a0 91 49 02 lds r26, 0x0249 |
587a: b0 91 4a 02 lds r27, 0x024A |
587e: 81 38 cpi r24, 0x81 ; 129 |
5880: 3e e3 ldi r19, 0x3E ; 62 |
5882: 93 07 cpc r25, r19 |
5884: 30 e0 ldi r19, 0x00 ; 0 |
5886: a3 07 cpc r26, r19 |
5888: 30 e0 ldi r19, 0x00 ; 0 |
588a: b3 07 cpc r27, r19 |
588c: 2c f0 brlt .+10 ; 0x5898 <MotorRegler+0x13dc> |
588e: 80 e8 ldi r24, 0x80 ; 128 |
5890: 9e e3 ldi r25, 0x3E ; 62 |
5892: a0 e0 ldi r26, 0x00 ; 0 |
5894: b0 e0 ldi r27, 0x00 ; 0 |
5896: 09 c0 rjmp .+18 ; 0x58aa <MotorRegler+0x13ee> |
5898: 80 58 subi r24, 0x80 ; 128 |
589a: 91 4c sbci r25, 0xC1 ; 193 |
589c: af 4f sbci r26, 0xFF ; 255 |
589e: bf 4f sbci r27, 0xFF ; 255 |
58a0: 64 f4 brge .+24 ; 0x58ba <MotorRegler+0x13fe> |
58a2: 80 e8 ldi r24, 0x80 ; 128 |
58a4: 91 ec ldi r25, 0xC1 ; 193 |
58a6: af ef ldi r26, 0xFF ; 255 |
58a8: bf ef ldi r27, 0xFF ; 255 |
58aa: 80 93 47 02 sts 0x0247, r24 |
58ae: 90 93 48 02 sts 0x0248, r25 |
58b2: a0 93 49 02 sts 0x0249, r26 |
58b6: b0 93 4a 02 sts 0x024A, r27 |
58ba: 60 91 63 02 lds r22, 0x0263 |
58be: 70 91 64 02 lds r23, 0x0264 |
58c2: 88 27 eor r24, r24 |
58c4: 77 fd sbrc r23, 7 |
58c6: 80 95 com r24 |
58c8: 98 2f mov r25, r24 |
58ca: 0e 94 9d 2d call 0x5b3a ; 0x5b3a <__floatsisf> |
58ce: 7b 01 movw r14, r22 |
58d0: 8c 01 movw r16, r24 |
58d2: 60 91 47 02 lds r22, 0x0247 |
58d6: 70 91 48 02 lds r23, 0x0248 |
58da: 80 91 49 02 lds r24, 0x0249 |
58de: 90 91 4a 02 lds r25, 0x024A |
58e2: 0e 94 9d 2d call 0x5b3a ; 0x5b3a <__floatsisf> |
58e6: 9b 01 movw r18, r22 |
58e8: ac 01 movw r20, r24 |
58ea: c5 01 movw r24, r10 |
58ec: b4 01 movw r22, r8 |
58ee: 0e 94 17 2e call 0x5c2e ; 0x5c2e <__mulsf3> |
58f2: 9b 01 movw r18, r22 |
58f4: ac 01 movw r20, r24 |
58f6: c8 01 movw r24, r16 |
58f8: b7 01 movw r22, r14 |
58fa: 0e 94 f8 2c call 0x59f0 ; 0x59f0 <__addsf3> |
58fe: 0e 94 80 2d call 0x5b00 ; 0x5b00 <__fixsfsi> |
5902: 29 81 ldd r18, Y+1 ; 0x01 |
5904: 3a 81 ldd r19, Y+2 ; 0x02 |
5906: 26 0f add r18, r22 |
5908: 37 1f adc r19, r23 |
590a: 2c 19 sub r18, r12 |
590c: 3d 09 sbc r19, r13 |
590e: 37 fd sbrc r19, 7 |
5910: 02 c0 rjmp .+4 ; 0x5916 <MotorRegler+0x145a> |
5912: 22 20 and r2, r2 |
5914: 19 f0 breq .+6 ; 0x591c <MotorRegler+0x1460> |
5916: 40 e0 ldi r20, 0x00 ; 0 |
5918: 50 e0 ldi r21, 0x00 ; 0 |
591a: 08 c0 rjmp .+16 ; 0x592c <MotorRegler+0x1470> |
591c: 80 91 29 05 lds r24, 0x0529 |
5920: 48 2f mov r20, r24 |
5922: 55 27 eor r21, r21 |
5924: 24 17 cp r18, r20 |
5926: 35 07 cpc r19, r21 |
5928: 0c f4 brge .+2 ; 0x592c <MotorRegler+0x1470> |
592a: a9 01 movw r20, r18 |
592c: 2b 81 ldd r18, Y+3 ; 0x03 |
592e: 3c 81 ldd r19, Y+4 ; 0x04 |
5930: 24 17 cp r18, r20 |
5932: 35 07 cpc r19, r21 |
5934: 0c f4 brge .+2 ; 0x5938 <MotorRegler+0x147c> |
5936: 9a 01 movw r18, r20 |
5938: 20 93 6b 02 sts 0x026B, r18 |
593c: 89 81 ldd r24, Y+1 ; 0x01 |
593e: 9a 81 ldd r25, Y+2 ; 0x02 |
5940: 86 1b sub r24, r22 |
5942: 97 0b sbc r25, r23 |
5944: bc 01 movw r22, r24 |
5946: 6c 19 sub r22, r12 |
5948: 7d 09 sbc r23, r13 |
594a: 77 fd sbrc r23, 7 |
594c: 02 c0 rjmp .+4 ; 0x5952 <MotorRegler+0x1496> |
594e: 22 20 and r2, r2 |
5950: 19 f0 breq .+6 ; 0x5958 <MotorRegler+0x149c> |
5952: 20 e0 ldi r18, 0x00 ; 0 |
5954: 30 e0 ldi r19, 0x00 ; 0 |
5956: 08 c0 rjmp .+16 ; 0x5968 <MotorRegler+0x14ac> |
5958: 80 91 29 05 lds r24, 0x0529 |
595c: 28 2f mov r18, r24 |
595e: 33 27 eor r19, r19 |
5960: 62 17 cp r22, r18 |
5962: 73 07 cpc r23, r19 |
5964: 0c f4 brge .+2 ; 0x5968 <MotorRegler+0x14ac> |
5966: 9b 01 movw r18, r22 |
5968: 8b 81 ldd r24, Y+3 ; 0x03 |
596a: 9c 81 ldd r25, Y+4 ; 0x04 |
596c: 82 17 cp r24, r18 |
596e: 93 07 cpc r25, r19 |
5970: 0c f4 brge .+2 ; 0x5974 <MotorRegler+0x14b8> |
5972: c9 01 movw r24, r18 |
5974: 80 93 69 02 sts 0x0269, r24 |
5978: e2 e1 ldi r30, 0x12 ; 18 |
597a: cc 5f subi r28, 0xFC ; 252 |
597c: 0c 94 fe 2e jmp 0x5dfc ; 0x5dfc <__epilogue_restores__> |
00005980 <GPS_Neutral>: |
5980: 80 91 53 02 lds r24, 0x0253 |
5984: 90 91 54 02 lds r25, 0x0254 |
5988: a0 91 55 02 lds r26, 0x0255 |
598c: b0 91 56 02 lds r27, 0x0256 |
5990: 80 93 5b 02 sts 0x025B, r24 |
5994: 90 93 5c 02 sts 0x025C, r25 |
5998: a0 93 5d 02 sts 0x025D, r26 |
599c: b0 93 5e 02 sts 0x025E, r27 |
59a0: 80 91 57 02 lds r24, 0x0257 |
59a4: 90 91 58 02 lds r25, 0x0258 |
59a8: a0 91 59 02 lds r26, 0x0259 |
59ac: b0 91 5a 02 lds r27, 0x025A |
59b0: 80 93 5f 02 sts 0x025F, r24 |
59b4: 90 93 60 02 sts 0x0260, r25 |
59b8: a0 93 61 02 sts 0x0261, r26 |
59bc: b0 93 62 02 sts 0x0262, r27 |
59c0: 08 95 ret |
000059c2 <GPS_BerechneZielrichtung>: |
59c2: 10 92 50 02 sts 0x0250, r1 |
59c6: 10 92 4f 02 sts 0x024F, r1 |
59ca: 10 92 52 02 sts 0x0252, r1 |
59ce: 10 92 51 02 sts 0x0251, r1 |
59d2: 08 95 ret |
000059d4 <memchr>: |
59d4: fc 01 movw r30, r24 |
59d6: 41 50 subi r20, 0x01 ; 1 |
59d8: 50 40 sbci r21, 0x00 ; 0 |
59da: 30 f0 brcs .+12 ; 0x59e8 <memchr+0x14> |
59dc: 01 90 ld r0, Z+ |
59de: 06 16 cp r0, r22 |
59e0: d1 f7 brne .-12 ; 0x59d6 <memchr+0x2> |
59e2: 31 97 sbiw r30, 0x01 ; 1 |
59e4: cf 01 movw r24, r30 |
59e6: 08 95 ret |
59e8: 88 27 eor r24, r24 |
59ea: 99 27 eor r25, r25 |
59ec: 08 95 ret |
000059ee <__subsf3>: |
59ee: 50 58 subi r21, 0x80 ; 128 |
000059f0 <__addsf3>: |
59f0: 19 2e mov r1, r25 |
59f2: ef d0 rcall .+478 ; 0x5bd2 <__fp_split3> |
59f4: 01 d0 rcall .+2 ; 0x59f8 <__addsf3x> |
59f6: d2 c0 rjmp .+420 ; 0x5b9c <__fp_merge> |
000059f8 <__addsf3x>: |
59f8: ba 17 cp r27, r26 |
59fa: 62 07 cpc r22, r18 |
59fc: 73 07 cpc r23, r19 |
59fe: 84 07 cpc r24, r20 |
5a00: 95 07 cpc r25, r21 |
5a02: b1 f1 breq .+108 ; 0x5a70 <__addsf3x+0x78> |
5a04: 88 f4 brcc .+34 ; 0x5a28 <__addsf3x+0x30> |
5a06: 0e f4 brtc .+2 ; 0x5a0a <__addsf3x+0x12> |
5a08: 10 94 com r1 |
5a0a: 0b 2e mov r0, r27 |
5a0c: ba 2f mov r27, r26 |
5a0e: a0 2d mov r26, r0 |
5a10: 06 2e mov r0, r22 |
5a12: 62 2f mov r22, r18 |
5a14: 20 2d mov r18, r0 |
5a16: 07 2e mov r0, r23 |
5a18: 73 2f mov r23, r19 |
5a1a: 30 2d mov r19, r0 |
5a1c: 08 2e mov r0, r24 |
5a1e: 84 2f mov r24, r20 |
5a20: 40 2d mov r20, r0 |
5a22: 09 2e mov r0, r25 |
5a24: 95 2f mov r25, r21 |
5a26: 50 2d mov r21, r0 |
5a28: ff 27 eor r31, r31 |
5a2a: 55 23 and r21, r21 |
5a2c: b9 f0 breq .+46 ; 0x5a5c <__addsf3x+0x64> |
5a2e: 59 1b sub r21, r25 |
5a30: 49 f0 breq .+18 ; 0x5a44 <__addsf3x+0x4c> |
5a32: 57 3e cpi r21, 0xE7 ; 231 |
5a34: 98 f0 brcs .+38 ; 0x5a5c <__addsf3x+0x64> |
5a36: 46 95 lsr r20 |
5a38: 37 95 ror r19 |
5a3a: 27 95 ror r18 |
5a3c: a7 95 ror r26 |
5a3e: f0 40 sbci r31, 0x00 ; 0 |
5a40: 53 95 inc r21 |
5a42: c9 f7 brne .-14 ; 0x5a36 <__addsf3x+0x3e> |
5a44: 76 f0 brts .+28 ; 0x5a62 <__addsf3x+0x6a> |
5a46: ba 0f add r27, r26 |
5a48: 62 1f adc r22, r18 |
5a4a: 73 1f adc r23, r19 |
5a4c: 84 1f adc r24, r20 |
5a4e: 30 f4 brcc .+12 ; 0x5a5c <__addsf3x+0x64> |
5a50: 87 95 ror r24 |
5a52: 77 95 ror r23 |
5a54: 67 95 ror r22 |
5a56: b7 95 ror r27 |
5a58: f0 40 sbci r31, 0x00 ; 0 |
5a5a: 93 95 inc r25 |
5a5c: 17 fa bst r1, 7 |
5a5e: 0f 2e mov r0, r31 |
5a60: 08 95 ret |
5a62: bf 1b sub r27, r31 |
5a64: bb 27 eor r27, r27 |
5a66: ba 0b sbc r27, r26 |
5a68: 62 0b sbc r22, r18 |
5a6a: 73 0b sbc r23, r19 |
5a6c: 84 0b sbc r24, r20 |
5a6e: f6 cf rjmp .-20 ; 0x5a5c <__addsf3x+0x64> |
5a70: de f6 brtc .-74 ; 0x5a28 <__addsf3x+0x30> |
5a72: db c0 rjmp .+438 ; 0x5c2a <__fp_zerox> |
00005a74 <__divsf3>: |
5a74: ae d0 rcall .+348 ; 0x5bd2 <__fp_split3> |
5a76: 01 d0 rcall .+2 ; 0x5a7a <__divsf3x> |
5a78: 91 c0 rjmp .+290 ; 0x5b9c <__fp_merge> |
00005a7a <__divsf3x>: |
5a7a: 55 23 and r21, r21 |
5a7c: 59 f0 breq .+22 ; 0x5a94 <__divsf3x+0x1a> |
5a7e: 99 23 and r25, r25 |
5a80: 69 f0 breq .+26 ; 0x5a9c <__divsf3x+0x22> |
5a82: 9f 57 subi r25, 0x7F ; 127 |
5a84: 5f 57 subi r21, 0x7F ; 127 |
5a86: 95 1b sub r25, r21 |
5a88: 33 f4 brvc .+12 ; 0x5a96 <__divsf3x+0x1c> |
5a8a: 42 f4 brpl .+16 ; 0x5a9c <__divsf3x+0x22> |
5a8c: 90 38 cpi r25, 0x80 ; 128 |
5a8e: 11 f4 brne .+4 ; 0x5a94 <__divsf3x+0x1a> |
5a90: 91 58 subi r25, 0x81 ; 129 |
5a92: 05 c0 rjmp .+10 ; 0x5a9e <__divsf3x+0x24> |
5a94: 9b c0 rjmp .+310 ; 0x5bcc <__fp_nan> |
5a96: 91 58 subi r25, 0x81 ; 129 |
5a98: 9f 3f cpi r25, 0xFF ; 255 |
5a9a: 09 f4 brne .+2 ; 0x5a9e <__divsf3x+0x24> |
5a9c: c6 c0 rjmp .+396 ; 0x5c2a <__fp_zerox> |
5a9e: bb 27 eor r27, r27 |
5aa0: 11 24 eor r1, r1 |
5aa2: 62 17 cp r22, r18 |
5aa4: 73 07 cpc r23, r19 |
5aa6: 84 07 cpc r24, r20 |
5aa8: 30 f4 brcc .+12 ; 0x5ab6 <__divsf3x+0x3c> |
5aaa: 66 0f add r22, r22 |
5aac: 77 1f adc r23, r23 |
5aae: 88 1f adc r24, r24 |
5ab0: bb 1f adc r27, r27 |
5ab2: 91 50 subi r25, 0x01 ; 1 |
5ab4: 98 f3 brcs .-26 ; 0x5a9c <__divsf3x+0x22> |
5ab6: 11 d0 rcall .+34 ; 0x5ada <__divsf3x+0x60> |
5ab8: 0f 92 push r0 |
5aba: 0f d0 rcall .+30 ; 0x5ada <__divsf3x+0x60> |
5abc: 0f 92 push r0 |
5abe: 0d d0 rcall .+26 ; 0x5ada <__divsf3x+0x60> |
5ac0: a0 e8 ldi r26, 0x80 ; 128 |
5ac2: 26 17 cp r18, r22 |
5ac4: 37 07 cpc r19, r23 |
5ac6: 48 07 cpc r20, r24 |
5ac8: 1b 06 cpc r1, r27 |
5aca: 09 f0 breq .+2 ; 0x5ace <__divsf3x+0x54> |
5acc: a0 48 sbci r26, 0x80 ; 128 |
5ace: ba 2f mov r27, r26 |
5ad0: 60 2d mov r22, r0 |
5ad2: 7f 91 pop r23 |
5ad4: 8f 91 pop r24 |
5ad6: 00 24 eor r0, r0 |
5ad8: 08 95 ret |
5ada: a0 e8 ldi r26, 0x80 ; 128 |
5adc: 00 24 eor r0, r0 |
5ade: 62 17 cp r22, r18 |
5ae0: 73 07 cpc r23, r19 |
5ae2: 84 07 cpc r24, r20 |
5ae4: b1 05 cpc r27, r1 |
5ae6: 28 f0 brcs .+10 ; 0x5af2 <__divsf3x+0x78> |
5ae8: 62 1b sub r22, r18 |
5aea: 73 0b sbc r23, r19 |
5aec: 84 0b sbc r24, r20 |
5aee: b1 09 sbc r27, r1 |
5af0: 0a 2a or r0, r26 |
5af2: 66 0f add r22, r22 |
5af4: 77 1f adc r23, r23 |
5af6: 88 1f adc r24, r24 |
5af8: bb 1f adc r27, r27 |
5afa: a6 95 lsr r26 |
5afc: 81 f7 brne .-32 ; 0x5ade <__divsf3x+0x64> |
5afe: 08 95 ret |
00005b00 <__fixsfsi>: |
5b00: 97 fb bst r25, 7 |
5b02: 73 d0 rcall .+230 ; 0x5bea <__fp_split1> |
5b04: 9f 37 cpi r25, 0x7F ; 127 |
5b06: 38 f0 brcs .+14 ; 0x5b16 <__fixsfsi+0x16> |
5b08: fe e9 ldi r31, 0x9E ; 158 |
5b0a: f9 1b sub r31, r25 |
5b0c: 98 2f mov r25, r24 |
5b0e: 87 2f mov r24, r23 |
5b10: 76 2f mov r23, r22 |
5b12: 6b 2f mov r22, r27 |
5b14: 05 c0 rjmp .+10 ; 0x5b20 <__fixsfsi+0x20> |
5b16: 86 c0 rjmp .+268 ; 0x5c24 <__fp_zero> |
5b18: 96 95 lsr r25 |
5b1a: 87 95 ror r24 |
5b1c: 77 95 ror r23 |
5b1e: 67 95 ror r22 |
5b20: f1 50 subi r31, 0x01 ; 1 |
5b22: d0 f7 brcc .-12 ; 0x5b18 <__fixsfsi+0x18> |
5b24: 3e f4 brtc .+14 ; 0x5b34 <__fp_lneg+0xe> |
00005b26 <__fp_lneg>: |
5b26: 90 95 com r25 |
5b28: 80 95 com r24 |
5b2a: 70 95 com r23 |
5b2c: 61 95 neg r22 |
5b2e: 7f 4f sbci r23, 0xFF ; 255 |
5b30: 8f 4f sbci r24, 0xFF ; 255 |
5b32: 9f 4f sbci r25, 0xFF ; 255 |
5b34: 08 95 ret |
00005b36 <__floatunssisf>: |
5b36: e8 94 clt |
5b38: 03 c0 rjmp .+6 ; 0x5b40 <__floatsisf+0x6> |
00005b3a <__floatsisf>: |
5b3a: 97 fb bst r25, 7 |
5b3c: 0e f4 brtc .+2 ; 0x5b40 <__floatsisf+0x6> |
5b3e: f3 df rcall .-26 ; 0x5b26 <__fp_lneg> |
5b40: b6 2f mov r27, r22 |
5b42: 67 2f mov r22, r23 |
5b44: 78 2f mov r23, r24 |
5b46: 89 2f mov r24, r25 |
5b48: 9e e9 ldi r25, 0x9E ; 158 |
5b4a: 00 24 eor r0, r0 |
5b4c: 27 c0 rjmp .+78 ; 0x5b9c <__fp_merge> |
00005b4e <__eqsf2>: |
5b4e: 0e d0 rcall .+28 ; 0x5b6c <.fp_cmp> |
5b50: 5e f0 brts .+22 ; 0x5b68 <__cmpsf2+0xe> |
5b52: 04 c0 rjmp .+8 ; 0x5b5c <__cmpsf2+0x2> |
00005b54 <__gesf2>: |
5b54: 0b d0 rcall .+22 ; 0x5b6c <.fp_cmp> |
5b56: 26 f0 brts .+8 ; 0x5b60 <__cmpsf2+0x6> |
5b58: 01 c0 rjmp .+2 ; 0x5b5c <__cmpsf2+0x2> |
00005b5a <__cmpsf2>: |
5b5a: 08 d0 rcall .+16 ; 0x5b6c <.fp_cmp> |
5b5c: 19 f0 breq .+6 ; 0x5b64 <__cmpsf2+0xa> |
5b5e: 20 f4 brcc .+8 ; 0x5b68 <__cmpsf2+0xe> |
5b60: 8f ef ldi r24, 0xFF ; 255 |
5b62: 08 95 ret |
5b64: 80 e0 ldi r24, 0x00 ; 0 |
5b66: 08 95 ret |
5b68: 81 e0 ldi r24, 0x01 ; 1 |
5b6a: 08 95 ret |
00005b6c <.fp_cmp>: |
5b6c: 97 fb bst r25, 7 |
5b6e: 09 2e mov r0, r25 |
5b70: 05 26 eor r0, r21 |
5b72: 00 f8 bld r0, 0 |
5b74: 68 94 set |
5b76: 30 d0 rcall .+96 ; 0x5bd8 <__fp_split2> |
5b78: e8 94 clt |
5b7a: 07 fc sbrc r0, 7 |
5b7c: 07 c0 rjmp .+14 ; 0x5b8c <.fp_cmp+0x20> |
5b7e: 62 17 cp r22, r18 |
5b80: 73 07 cpc r23, r19 |
5b82: 84 07 cpc r24, r20 |
5b84: 95 07 cpc r25, r21 |
5b86: 21 f0 breq .+8 ; 0x5b90 <.fp_cmp+0x24> |
5b88: 08 f4 brcc .+2 ; 0x5b8c <.fp_cmp+0x20> |
5b8a: 00 94 com r0 |
5b8c: 07 94 ror r0 |
5b8e: 98 94 clz |
5b90: 08 95 ret |
5b92: 9a 95 dec r25 |
5b94: bb 0f add r27, r27 |
5b96: 66 1f adc r22, r22 |
5b98: 77 1f adc r23, r23 |
5b9a: 88 1f adc r24, r24 |
00005b9c <__fp_merge>: |
5b9c: 11 24 eor r1, r1 |
5b9e: 99 23 and r25, r25 |
5ba0: a1 f0 breq .+40 ; 0x5bca <__fp_merge+0x2e> |
5ba2: 88 23 and r24, r24 |
5ba4: b2 f7 brpl .-20 ; 0x5b92 <.fp_cmp+0x26> |
5ba6: 9f 3f cpi r25, 0xFF ; 255 |
5ba8: 59 f0 breq .+22 ; 0x5bc0 <__fp_merge+0x24> |
5baa: bb 0f add r27, r27 |
5bac: 48 f4 brcc .+18 ; 0x5bc0 <__fp_merge+0x24> |
5bae: 21 f4 brne .+8 ; 0x5bb8 <__fp_merge+0x1c> |
5bb0: 00 20 and r0, r0 |
5bb2: 11 f4 brne .+4 ; 0x5bb8 <__fp_merge+0x1c> |
5bb4: 60 ff sbrs r22, 0 |
5bb6: 04 c0 rjmp .+8 ; 0x5bc0 <__fp_merge+0x24> |
5bb8: 6f 5f subi r22, 0xFF ; 255 |
5bba: 7f 4f sbci r23, 0xFF ; 255 |
5bbc: 8f 4f sbci r24, 0xFF ; 255 |
5bbe: 9f 4f sbci r25, 0xFF ; 255 |
5bc0: 88 1f adc r24, r24 |
5bc2: 97 95 ror r25 |
5bc4: 87 95 ror r24 |
5bc6: 97 f9 bld r25, 7 |
5bc8: 08 95 ret |
5bca: 2c c0 rjmp .+88 ; 0x5c24 <__fp_zero> |
00005bcc <__fp_nan>: |
5bcc: 9f ef ldi r25, 0xFF ; 255 |
5bce: 80 ec ldi r24, 0xC0 ; 192 |
5bd0: 08 95 ret |
00005bd2 <__fp_split3>: |
5bd2: 05 2e mov r0, r21 |
5bd4: 09 26 eor r0, r25 |
5bd6: 07 fa bst r0, 7 |
00005bd8 <__fp_split2>: |
5bd8: 44 0f add r20, r20 |
5bda: 55 1f adc r21, r21 |
5bdc: 5f 3f cpi r21, 0xFF ; 255 |
5bde: 79 f0 breq .+30 ; 0x5bfe <__fp_split1+0x14> |
5be0: aa 27 eor r26, r26 |
5be2: a5 17 cp r26, r21 |
5be4: 08 f0 brcs .+2 ; 0x5be8 <__fp_split2+0x10> |
5be6: 51 e0 ldi r21, 0x01 ; 1 |
5be8: 47 95 ror r20 |
00005bea <__fp_split1>: |
5bea: 88 0f add r24, r24 |
5bec: 99 1f adc r25, r25 |
5bee: 9f 3f cpi r25, 0xFF ; 255 |
5bf0: 31 f0 breq .+12 ; 0x5bfe <__fp_split1+0x14> |
5bf2: bb 27 eor r27, r27 |
5bf4: b9 17 cp r27, r25 |
5bf6: 08 f0 brcs .+2 ; 0x5bfa <__fp_split1+0x10> |
5bf8: 91 e0 ldi r25, 0x01 ; 1 |
5bfa: 87 95 ror r24 |
5bfc: 08 95 ret |
5bfe: 9f 91 pop r25 |
5c00: 9f 91 pop r25 |
5c02: 11 24 eor r1, r1 |
5c04: e3 cf rjmp .-58 ; 0x5bcc <__fp_nan> |
00005c06 <__fp_split_a>: |
5c06: 97 fb bst r25, 7 |
5c08: 88 0f add r24, r24 |
5c0a: 99 1f adc r25, r25 |
5c0c: 9f 3f cpi r25, 0xFF ; 255 |
5c0e: 31 f0 breq .+12 ; 0x5c1c <__fp_split_a+0x16> |
5c10: bb 27 eor r27, r27 |
5c12: b9 17 cp r27, r25 |
5c14: 08 f0 brcs .+2 ; 0x5c18 <__fp_split_a+0x12> |
5c16: 91 e0 ldi r25, 0x01 ; 1 |
5c18: 87 95 ror r24 |
5c1a: 08 95 ret |
5c1c: 9f 91 pop r25 |
5c1e: 9f 91 pop r25 |
5c20: 11 24 eor r1, r1 |
5c22: d4 cf rjmp .-88 ; 0x5bcc <__fp_nan> |
00005c24 <__fp_zero>: |
5c24: 66 27 eor r22, r22 |
5c26: 77 27 eor r23, r23 |
5c28: 88 27 eor r24, r24 |
00005c2a <__fp_zerox>: |
5c2a: 99 27 eor r25, r25 |
5c2c: 08 95 ret |
00005c2e <__mulsf3>: |
5c2e: d1 df rcall .-94 ; 0x5bd2 <__fp_split3> |
5c30: 01 d0 rcall .+2 ; 0x5c34 <__mulsf3x> |
5c32: b4 cf rjmp .-152 ; 0x5b9c <__fp_merge> |
00005c34 <__mulsf3x>: |
5c34: 99 23 and r25, r25 |
5c36: 39 f0 breq .+14 ; 0x5c46 <__mulsf3x+0x12> |
5c38: 55 23 and r21, r21 |
5c3a: 29 f0 breq .+10 ; 0x5c46 <__mulsf3x+0x12> |
5c3c: 9f 57 subi r25, 0x7F ; 127 |
5c3e: 5f 57 subi r21, 0x7F ; 127 |
5c40: 95 0f add r25, r21 |
5c42: 13 f4 brvc .+4 ; 0x5c48 <__mulsf3x+0x14> |
5c44: 9a f1 brmi .+102 ; 0x5cac <__mulsf3x+0x78> |
5c46: f1 cf rjmp .-30 ; 0x5c2a <__fp_zerox> |
5c48: 91 58 subi r25, 0x81 ; 129 |
5c4a: 9f 3f cpi r25, 0xFF ; 255 |
5c4c: e1 f3 breq .-8 ; 0x5c46 <__mulsf3x+0x12> |
5c4e: 62 9f mul r22, r18 |
5c50: a1 2d mov r26, r1 |
5c52: 0f 92 push r0 |
5c54: bb 27 eor r27, r27 |
5c56: 63 9f mul r22, r19 |
5c58: a0 0d add r26, r0 |
5c5a: b1 1d adc r27, r1 |
5c5c: ee 27 eor r30, r30 |
5c5e: 72 9f mul r23, r18 |
5c60: a0 0d add r26, r0 |
5c62: b1 1d adc r27, r1 |
5c64: ee 1f adc r30, r30 |
5c66: af 93 push r26 |
5c68: aa 27 eor r26, r26 |
5c6a: 64 9f mul r22, r20 |
5c6c: b0 0d add r27, r0 |
5c6e: e1 1d adc r30, r1 |
5c70: 73 9f mul r23, r19 |
5c72: b0 0d add r27, r0 |
5c74: e1 1d adc r30, r1 |
5c76: aa 1f adc r26, r26 |
5c78: 66 27 eor r22, r22 |
5c7a: 82 9f mul r24, r18 |
5c7c: b0 0d add r27, r0 |
5c7e: e1 1d adc r30, r1 |
5c80: a6 1f adc r26, r22 |
5c82: 55 27 eor r21, r21 |
5c84: 74 9f mul r23, r20 |
5c86: e0 0d add r30, r0 |
5c88: a1 1d adc r26, r1 |
5c8a: 55 1f adc r21, r21 |
5c8c: 83 9f mul r24, r19 |
5c8e: e0 0d add r30, r0 |
5c90: a1 1d adc r26, r1 |
5c92: 56 1f adc r21, r22 |
5c94: 84 9f mul r24, r20 |
5c96: a0 0d add r26, r0 |
5c98: 51 1d adc r21, r1 |
5c9a: 85 2f mov r24, r21 |
5c9c: 7a 2f mov r23, r26 |
5c9e: 6e 2f mov r22, r30 |
5ca0: 1f 90 pop r1 |
5ca2: 0f 90 pop r0 |
5ca4: 88 23 and r24, r24 |
5ca6: 1a f4 brpl .+6 ; 0x5cae <__mulsf3x+0x7a> |
5ca8: 93 95 inc r25 |
5caa: 39 f4 brne .+14 ; 0x5cba <__mulsf3x+0x86> |
5cac: 8f cf rjmp .-226 ; 0x5bcc <__fp_nan> |
5cae: 00 0c add r0, r0 |
5cb0: 11 1c adc r1, r1 |
5cb2: bb 1f adc r27, r27 |
5cb4: 66 1f adc r22, r22 |
5cb6: 77 1f adc r23, r23 |
5cb8: 88 1f adc r24, r24 |
5cba: 01 28 or r0, r1 |
5cbc: 08 95 ret |
00005cbe <__mulsi3>: |
5cbe: 62 9f mul r22, r18 |
5cc0: d0 01 movw r26, r0 |
5cc2: 73 9f mul r23, r19 |
5cc4: f0 01 movw r30, r0 |
5cc6: 82 9f mul r24, r18 |
5cc8: e0 0d add r30, r0 |
5cca: f1 1d adc r31, r1 |
5ccc: 64 9f mul r22, r20 |
5cce: e0 0d add r30, r0 |
5cd0: f1 1d adc r31, r1 |
5cd2: 92 9f mul r25, r18 |
5cd4: f0 0d add r31, r0 |
5cd6: 83 9f mul r24, r19 |
5cd8: f0 0d add r31, r0 |
5cda: 74 9f mul r23, r20 |
5cdc: f0 0d add r31, r0 |
5cde: 65 9f mul r22, r21 |
5ce0: f0 0d add r31, r0 |
5ce2: 99 27 eor r25, r25 |
5ce4: 72 9f mul r23, r18 |
5ce6: b0 0d add r27, r0 |
5ce8: e1 1d adc r30, r1 |
5cea: f9 1f adc r31, r25 |
5cec: 63 9f mul r22, r19 |
5cee: b0 0d add r27, r0 |
5cf0: e1 1d adc r30, r1 |
5cf2: f9 1f adc r31, r25 |
5cf4: bd 01 movw r22, r26 |
5cf6: cf 01 movw r24, r30 |
5cf8: 11 24 eor r1, r1 |
5cfa: 08 95 ret |
00005cfc <__udivmodhi4>: |
5cfc: aa 1b sub r26, r26 |
5cfe: bb 1b sub r27, r27 |
5d00: 51 e1 ldi r21, 0x11 ; 17 |
5d02: 07 c0 rjmp .+14 ; 0x5d12 <__udivmodhi4_ep> |
00005d04 <__udivmodhi4_loop>: |
5d04: aa 1f adc r26, r26 |
5d06: bb 1f adc r27, r27 |
5d08: a6 17 cp r26, r22 |
5d0a: b7 07 cpc r27, r23 |
5d0c: 10 f0 brcs .+4 ; 0x5d12 <__udivmodhi4_ep> |
5d0e: a6 1b sub r26, r22 |
5d10: b7 0b sbc r27, r23 |
00005d12 <__udivmodhi4_ep>: |
5d12: 88 1f adc r24, r24 |
5d14: 99 1f adc r25, r25 |
5d16: 5a 95 dec r21 |
5d18: a9 f7 brne .-22 ; 0x5d04 <__udivmodhi4_loop> |
5d1a: 80 95 com r24 |
5d1c: 90 95 com r25 |
5d1e: bc 01 movw r22, r24 |
5d20: cd 01 movw r24, r26 |
5d22: 08 95 ret |
00005d24 <__divmodhi4>: |
5d24: 97 fb bst r25, 7 |
5d26: 09 2e mov r0, r25 |
5d28: 07 26 eor r0, r23 |
5d2a: 0a d0 rcall .+20 ; 0x5d40 <__divmodhi4_neg1> |
5d2c: 77 fd sbrc r23, 7 |
5d2e: 04 d0 rcall .+8 ; 0x5d38 <__divmodhi4_neg2> |
5d30: e5 df rcall .-54 ; 0x5cfc <__udivmodhi4> |
5d32: 06 d0 rcall .+12 ; 0x5d40 <__divmodhi4_neg1> |
5d34: 00 20 and r0, r0 |
5d36: 1a f4 brpl .+6 ; 0x5d3e <__divmodhi4_exit> |
00005d38 <__divmodhi4_neg2>: |
5d38: 70 95 com r23 |
5d3a: 61 95 neg r22 |
5d3c: 7f 4f sbci r23, 0xFF ; 255 |
00005d3e <__divmodhi4_exit>: |
5d3e: 08 95 ret |
00005d40 <__divmodhi4_neg1>: |
5d40: f6 f7 brtc .-4 ; 0x5d3e <__divmodhi4_exit> |
5d42: 90 95 com r25 |
5d44: 81 95 neg r24 |
5d46: 9f 4f sbci r25, 0xFF ; 255 |
5d48: 08 95 ret |
00005d4a <__udivmodsi4>: |
5d4a: a1 e2 ldi r26, 0x21 ; 33 |
5d4c: 1a 2e mov r1, r26 |
5d4e: aa 1b sub r26, r26 |
5d50: bb 1b sub r27, r27 |
5d52: fd 01 movw r30, r26 |
5d54: 0d c0 rjmp .+26 ; 0x5d70 <__udivmodsi4_ep> |
00005d56 <__udivmodsi4_loop>: |
5d56: aa 1f adc r26, r26 |
5d58: bb 1f adc r27, r27 |
5d5a: ee 1f adc r30, r30 |
5d5c: ff 1f adc r31, r31 |
5d5e: a2 17 cp r26, r18 |
5d60: b3 07 cpc r27, r19 |
5d62: e4 07 cpc r30, r20 |
5d64: f5 07 cpc r31, r21 |
5d66: 20 f0 brcs .+8 ; 0x5d70 <__udivmodsi4_ep> |
5d68: a2 1b sub r26, r18 |
5d6a: b3 0b sbc r27, r19 |
5d6c: e4 0b sbc r30, r20 |
5d6e: f5 0b sbc r31, r21 |
00005d70 <__udivmodsi4_ep>: |
5d70: 66 1f adc r22, r22 |
5d72: 77 1f adc r23, r23 |
5d74: 88 1f adc r24, r24 |
5d76: 99 1f adc r25, r25 |
5d78: 1a 94 dec r1 |
5d7a: 69 f7 brne .-38 ; 0x5d56 <__udivmodsi4_loop> |
5d7c: 60 95 com r22 |
5d7e: 70 95 com r23 |
5d80: 80 95 com r24 |
5d82: 90 95 com r25 |
5d84: 9b 01 movw r18, r22 |
5d86: ac 01 movw r20, r24 |
5d88: bd 01 movw r22, r26 |
5d8a: cf 01 movw r24, r30 |
5d8c: 08 95 ret |
00005d8e <__divmodsi4>: |
5d8e: 97 fb bst r25, 7 |
5d90: 09 2e mov r0, r25 |
5d92: 05 26 eor r0, r21 |
5d94: 0e d0 rcall .+28 ; 0x5db2 <__divmodsi4_neg1> |
5d96: 57 fd sbrc r21, 7 |
5d98: 04 d0 rcall .+8 ; 0x5da2 <__divmodsi4_neg2> |
5d9a: d7 df rcall .-82 ; 0x5d4a <__udivmodsi4> |
5d9c: 0a d0 rcall .+20 ; 0x5db2 <__divmodsi4_neg1> |
5d9e: 00 1c adc r0, r0 |
5da0: 38 f4 brcc .+14 ; 0x5db0 <__divmodsi4_exit> |
00005da2 <__divmodsi4_neg2>: |
5da2: 50 95 com r21 |
5da4: 40 95 com r20 |
5da6: 30 95 com r19 |
5da8: 21 95 neg r18 |
5daa: 3f 4f sbci r19, 0xFF ; 255 |
5dac: 4f 4f sbci r20, 0xFF ; 255 |
5dae: 5f 4f sbci r21, 0xFF ; 255 |
00005db0 <__divmodsi4_exit>: |
5db0: 08 95 ret |
00005db2 <__divmodsi4_neg1>: |
5db2: f6 f7 brtc .-4 ; 0x5db0 <__divmodsi4_exit> |
5db4: 90 95 com r25 |
5db6: 80 95 com r24 |
5db8: 70 95 com r23 |
5dba: 61 95 neg r22 |
5dbc: 7f 4f sbci r23, 0xFF ; 255 |
5dbe: 8f 4f sbci r24, 0xFF ; 255 |
5dc0: 9f 4f sbci r25, 0xFF ; 255 |
5dc2: 08 95 ret |
00005dc4 <__prologue_saves__>: |
5dc4: 2f 92 push r2 |
5dc6: 3f 92 push r3 |
5dc8: 4f 92 push r4 |
5dca: 5f 92 push r5 |
5dcc: 6f 92 push r6 |
5dce: 7f 92 push r7 |
5dd0: 8f 92 push r8 |
5dd2: 9f 92 push r9 |
5dd4: af 92 push r10 |
5dd6: bf 92 push r11 |
5dd8: cf 92 push r12 |
5dda: df 92 push r13 |
5ddc: ef 92 push r14 |
5dde: ff 92 push r15 |
5de0: 0f 93 push r16 |
5de2: 1f 93 push r17 |
5de4: cf 93 push r28 |
5de6: df 93 push r29 |
5de8: cd b7 in r28, 0x3d ; 61 |
5dea: de b7 in r29, 0x3e ; 62 |
5dec: ca 1b sub r28, r26 |
5dee: db 0b sbc r29, r27 |
5df0: 0f b6 in r0, 0x3f ; 63 |
5df2: f8 94 cli |
5df4: de bf out 0x3e, r29 ; 62 |
5df6: 0f be out 0x3f, r0 ; 63 |
5df8: cd bf out 0x3d, r28 ; 61 |
5dfa: 09 94 ijmp |
00005dfc <__epilogue_restores__>: |
5dfc: 2a 88 ldd r2, Y+18 ; 0x12 |
5dfe: 39 88 ldd r3, Y+17 ; 0x11 |
5e00: 48 88 ldd r4, Y+16 ; 0x10 |
5e02: 5f 84 ldd r5, Y+15 ; 0x0f |
5e04: 6e 84 ldd r6, Y+14 ; 0x0e |
5e06: 7d 84 ldd r7, Y+13 ; 0x0d |
5e08: 8c 84 ldd r8, Y+12 ; 0x0c |
5e0a: 9b 84 ldd r9, Y+11 ; 0x0b |
5e0c: aa 84 ldd r10, Y+10 ; 0x0a |
5e0e: b9 84 ldd r11, Y+9 ; 0x09 |
5e10: c8 84 ldd r12, Y+8 ; 0x08 |
5e12: df 80 ldd r13, Y+7 ; 0x07 |
5e14: ee 80 ldd r14, Y+6 ; 0x06 |
5e16: fd 80 ldd r15, Y+5 ; 0x05 |
5e18: 0c 81 ldd r16, Y+4 ; 0x04 |
5e1a: 1b 81 ldd r17, Y+3 ; 0x03 |
5e1c: aa 81 ldd r26, Y+2 ; 0x02 |
5e1e: b9 81 ldd r27, Y+1 ; 0x01 |
5e20: ce 0f add r28, r30 |
5e22: d1 1d adc r29, r1 |
5e24: 0f b6 in r0, 0x3f ; 63 |
5e26: f8 94 cli |
5e28: de bf out 0x3e, r29 ; 62 |
5e2a: 0f be out 0x3f, r0 ; 63 |
5e2c: cd bf out 0x3d, r28 ; 61 |
5e2e: ed 01 movw r28, r26 |
5e30: 08 95 ret |
00005e32 <__tablejump2__>: |
5e32: ee 0f add r30, r30 |
5e34: ff 1f adc r31, r31 |
00005e36 <__tablejump__>: |
5e36: 05 90 lpm r0, Z+ |
5e38: f4 91 lpm r31, Z |
5e3a: e0 2d mov r30, r0 |
5e3c: 09 94 ijmp |
00005e3e <__eeprom_read_byte_1F2021>: |
5e3e: f9 99 sbic 0x1f, 1 ; 31 |
5e40: fe cf rjmp .-4 ; 0x5e3e <__eeprom_read_byte_1F2021> |
5e42: b2 bd out 0x22, r27 ; 34 |
5e44: a1 bd out 0x21, r26 ; 33 |
5e46: f8 9a sbi 0x1f, 0 ; 31 |
5e48: 11 96 adiw r26, 0x01 ; 1 |
5e4a: 00 b4 in r0, 0x20 ; 32 |
5e4c: 08 95 ret |
00005e4e <__eeprom_read_block_1F2021>: |
5e4e: f7 df rcall .-18 ; 0x5e3e <__eeprom_read_byte_1F2021> |
5e50: 01 92 st Z+, r0 |
5e52: 1a 94 dec r1 |
5e54: e1 f7 brne .-8 ; 0x5e4e <__eeprom_read_block_1F2021> |
5e56: 08 95 ret |
00005e58 <__eeprom_write_byte_1F2021>: |
5e58: f9 99 sbic 0x1f, 1 ; 31 |
5e5a: fe cf rjmp .-4 ; 0x5e58 <__eeprom_write_byte_1F2021> |
5e5c: b2 bd out 0x22, r27 ; 34 |
5e5e: a1 bd out 0x21, r26 ; 33 |
5e60: 00 bc out 0x20, r0 ; 32 |
5e62: 11 96 adiw r26, 0x01 ; 1 |
5e64: 0f b6 in r0, 0x3f ; 63 |
5e66: f8 94 cli |
5e68: fa 9a sbi 0x1f, 2 ; 31 |
5e6a: f9 9a sbi 0x1f, 1 ; 31 |
5e6c: 0f be out 0x3f, r0 ; 63 |
5e6e: 08 95 ret |
00005e70 <__eeprom_write_block_1F2021>: |
5e70: 01 90 ld r0, Z+ |
5e72: f2 df rcall .-28 ; 0x5e58 <__eeprom_write_byte_1F2021> |
5e74: 1a 94 dec r1 |
5e76: e1 f7 brne .-8 ; 0x5e70 <__eeprom_write_block_1F2021> |
5e78: 08 95 ret |
00005e7a <_exit>: |
5e7a: ff cf rjmp .-2 ; 0x5e7a <_exit> |
/branches/v0.60_MicroMag3_Nick666/v0.60/Flight-Ctrl_MEGA644_V0_60_MM3.map |
---|
0,0 → 1,1754 |
Archive member included because of file (symbol) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) |
analog.o (__subsf3) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) (__addsf3x) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3.o) |
fc.o (__divsf3) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3x.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3.o) (__divsf3x) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fixsfsi.o) |
analog.o (__fixsfsi) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) |
analog.o (__floatsisf) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
analog.o (__ltsf2) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_merge.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) (__fp_merge) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3x.o) (__fp_nanx) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_split.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) (__fp_split3) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_zero.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fixsfsi.o) (__fp_zero) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) |
compass.o (__mulsf3) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) (__mulsf3x) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_mulsi3.o) |
timer0.o (__mulsi3) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodhi4.o) |
analog.o (__udivmodhi4) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodhi4.o) |
analog.o (__divmodhi4) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodsi4.o) |
printf_P.o (__udivmodsi4) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodsi4.o) |
timer0.o (__divmodsi4) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_prologue.o) |
uart.o (__prologue_saves__) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_epilogue.o) |
uart.o (__epilogue_restores__) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_exit.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o (exit) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_tablejump.o) |
uart.o (__tablejump2__) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_copy_data.o) |
main.o (__do_copy_data) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_clear_bss.o) |
main.o (__do_clear_bss) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(memchr.o) |
printf_P.o (memchr) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_rb.1F2021.o) |
main.o (__eeprom_read_byte_1F2021) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_rblk.1F2021.o) |
compass.o (__eeprom_read_block_1F2021) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_wb.1F2021.o) |
main.o (__eeprom_write_byte_1F2021) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_wblk.1F2021.o) |
compass.o (__eeprom_write_block_1F2021) |
Allocating common symbols |
Common symbol size file |
MeineSlaveAdresse 0x1 uart.o |
EE_Parameter 0x3a fc.o |
DiffRoll 0x2 main.o |
MesswertRoll 0x2 fc.o |
Motor_Vorne 0x1 main.o |
Motor_Hinten 0x1 main.o |
MesswertNick 0x2 fc.o |
Aktuell_ay 0x2 analog.o |
MIN_GAS 0x1 fc.o |
SendeBuffer 0x96 uart.o |
NMEABuffer 0x96 uart.o |
Mittelwert_AccHoch 0x2 fc.o |
Debug_Timer 0x2 uart.o |
DiffNick 0x2 main.o |
DebugIn 0xb uart.o |
VersionInfo 0xa uart.o |
motor_rx 0x8 twimaster.o |
MM3_calib 0x9 compass.o |
PPM_in 0x16 rc.o |
IntegralFaktor 0x4 fc.o |
Motor_Rechts 0x1 main.o |
Count 0x1 main.o |
Aktuell_az 0x2 analog.o |
StartLuftdruck 0x2 analog.o |
RxdBuffer 0x96 uart.o |
acc_neutral 0x8 fc.o |
PrintZiel 0x1 printf_P.o |
Aktuell_Nick 0x2 analog.o |
messanzahl_Druck 0x1 analog.o |
Motor_Links 0x1 main.o |
Aktuell_Roll 0x2 analog.o |
Aktuell_ax 0x2 analog.o |
s 0x1 main.o |
h 0x1 main.o |
Mittelwert_AccNick 0x2 fc.o |
DebugOut 0x32 uart.o |
DruckOffsetSetting 0x1 analog.o |
Aktuell_Gier 0x2 analog.o |
MM3 0xa compass.o |
MAX_GAS 0x1 fc.o |
MesswertGier 0x2 fc.o |
GyroFaktor 0x4 fc.o |
m 0x1 main.o |
Mittelwert_AccRoll 0x2 fc.o |
MotorWert 0x5 main.o |
PPM_diff 0x16 rc.o |
tmpLuftdruck 0x2 analog.o |
Discarded input sections |
.stabstr 0x00000000 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
Memory Configuration |
Name Origin Length Attributes |
text 0x00000000 0x00020000 xr |
data 0x00800060 0x0000ffa0 rw !x |
eeprom 0x00810000 0x00010000 rw !x |
*default* 0x00000000 0xffffffff |
Linker script and memory map |
Address of section .data set to 0x800100 |
LOAD c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
LOAD main.o |
LOAD uart.o |
LOAD printf_P.o |
LOAD timer0.o |
LOAD analog.o |
LOAD menu.o |
LOAD compass.o |
LOAD math.o |
LOAD twimaster.o |
LOAD rc.o |
LOAD fc.o |
LOAD GPS.o |
LOAD c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a |
LOAD c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a |
LOAD c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a |
LOAD c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a |
.hash |
*(.hash) |
.dynsym |
*(.dynsym) |
.dynstr |
*(.dynstr) |
.gnu.version |
*(.gnu.version) |
.gnu.version_d |
*(.gnu.version_d) |
.gnu.version_r |
*(.gnu.version_r) |
.rel.init |
*(.rel.init) |
.rela.init |
*(.rela.init) |
.rel.text |
*(.rel.text) |
*(.rel.text.*) |
*(.rel.gnu.linkonce.t*) |
.rela.text |
*(.rela.text) |
*(.rela.text.*) |
*(.rela.gnu.linkonce.t*) |
.rel.fini |
*(.rel.fini) |
.rela.fini |
*(.rela.fini) |
.rel.rodata |
*(.rel.rodata) |
*(.rel.rodata.*) |
*(.rel.gnu.linkonce.r*) |
.rela.rodata |
*(.rela.rodata) |
*(.rela.rodata.*) |
*(.rela.gnu.linkonce.r*) |
.rel.data |
*(.rel.data) |
*(.rel.data.*) |
*(.rel.gnu.linkonce.d*) |
.rela.data |
*(.rela.data) |
*(.rela.data.*) |
*(.rela.gnu.linkonce.d*) |
.rel.ctors |
*(.rel.ctors) |
.rela.ctors |
*(.rela.ctors) |
.rel.dtors |
*(.rel.dtors) |
.rela.dtors |
*(.rela.dtors) |
.rel.got |
*(.rel.got) |
.rela.got |
*(.rela.got) |
.rel.bss |
*(.rel.bss) |
.rela.bss |
*(.rela.bss) |
.rel.plt |
*(.rel.plt) |
.rela.plt |
*(.rela.plt) |
.text 0x00000000 0x5e7c |
*(.vectors) |
.vectors 0x00000000 0x70 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
0x00000000 __vectors |
0x00000000 __vector_default |
*(.vectors) |
*(.progmem.gcc*) |
.progmem.gcc_sw_table |
0x00000070 0x28 uart.o |
.progmem.gcc_sw_table |
0x00000098 0x10 analog.o |
.progmem.gcc_sw_table |
0x000000a8 0x1a menu.o |
.progmem.gcc_sw_table |
0x000000c2 0x10 twimaster.o |
*(.progmem*) |
.progmem.data 0x000000d2 0xf9 main.o |
.progmem.data 0x000001cb 0x2 analog.o |
.progmem.data 0x000001cd 0x2dd menu.o |
.progmem.data 0x000004aa 0x27a math.o |
0x000005b8 pgm_sinus_f |
0x000004aa pgm_atan |
0x00000724 . = ALIGN (0x2) |
0x00000724 __trampolines_start = . |
*(.trampolines) |
.trampolines 0x00000724 0x0 linker stubs |
*(.trampolines*) |
0x00000724 __trampolines_end = . |
*(.jumptables) |
*(.jumptables*) |
*(.lowtext) |
*(.lowtext*) |
0x00000724 __ctors_start = . |
*(.ctors) |
0x00000724 __ctors_end = . |
0x00000724 __dtors_start = . |
*(.dtors) |
0x00000724 __dtors_end = . |
SORT(*)(.ctors) |
SORT(*)(.dtors) |
*(.init0) |
.init0 0x00000724 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
0x00000724 __init |
*(.init0) |
*(.init1) |
*(.init1) |
*(.init2) |
.init2 0x00000724 0xc c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
*(.init2) |
*(.init3) |
*(.init3) |
*(.init4) |
.init4 0x00000730 0x16 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_copy_data.o) |
0x00000730 __do_copy_data |
.init4 0x00000746 0x10 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_clear_bss.o) |
0x00000746 __do_clear_bss |
*(.init4) |
*(.init5) |
*(.init5) |
*(.init6) |
*(.init6) |
*(.init7) |
*(.init7) |
*(.init8) |
*(.init8) |
*(.init9) |
.init9 0x00000756 0x8 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
*(.init9) |
*(.text) |
.text 0x0000075e 0x4 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
0x0000075e __vector_1 |
0x0000075e __bad_interrupt |
0x0000075e __vector_6 |
0x0000075e __vector_3 |
0x0000075e __vector_23 |
0x0000075e __vector_25 |
0x0000075e __vector_11 |
0x0000075e __vector_13 |
0x0000075e __vector_17 |
0x0000075e __vector_7 |
0x0000075e __vector_27 |
0x0000075e __vector_5 |
0x0000075e __vector_4 |
0x0000075e __vector_2 |
0x0000075e __vector_21 |
0x0000075e __vector_15 |
0x0000075e __vector_8 |
0x0000075e __vector_14 |
0x0000075e __vector_10 |
0x0000075e __vector_16 |
.text 0x00000762 0x3da main.o |
0x00000770 WriteParameterSet |
0x000007a4 ReadParameterSet |
0x000007ce main |
0x00000762 GetActiveParamSetNumber |
.text 0x00000b3c 0x65a uart.o |
0x00000b3c __vector_22 |
0x00000f46 WriteProgramData |
0x00000f48 UART_Init |
0x0000105a BearbeiteRxDaten |
0x00000d4c AddCRC |
0x00000f7e DatenUebertragung |
0x00000e74 Decode64 |
0x00000da8 SendOutData |
0x00000ba8 __vector_20 |
0x00000f24 uart_putchar |
.text 0x00001196 0x5a4 printf_P.o |
0x00001196 Putchar |
0x00001248 _printf_P |
0x000011c8 PAD_0 |
0x000011f4 PRINTP |
0x00001220 PRINT |
0x000011de PAD_SP |
.text 0x0000173a 0x2aa timer0.o |
0x0000173a SetDelay |
0x00001974 Timer_Init |
0x0000174c CheckDelay |
0x000019c0 Delay_ms |
0x00001764 __vector_9 |
0x000018b2 __vector_18 |
.text 0x000019e4 0x6c0 analog.o |
0x000019f0 __vector_24 |
0x000019e4 ADC_Init |
0x0000201c SucheLuftruckOffset |
.text 0x000020a4 0x848 menu.o |
0x000020a4 LcdClear |
0x000020b6 Menu |
.text 0x000028ec 0x580 compass.o |
0x00002c54 timer0_MM3 |
0x00002cb8 calib_MM3 |
0x000028ec __vector_19 |
0x00002988 heading_MM3 |
0x00002e44 init_MM3 |
.text 0x00002e6c 0x220 math.o |
0x00002e6c atan2_i |
0x0000307c cos_f |
0x00002fa8 pgm_read_float |
0x00002fbc sin_f |
.text 0x0000308c 0x158 twimaster.o |
0x00003098 i2c_start |
0x000030a4 i2c_stop |
0x0000308c i2c_init |
0x000030c0 __vector_26 |
0x000030ac i2c_write_byte |
.text 0x000031e4 0x168 rc.o |
0x0000320e __vector_12 |
0x000031e4 rc_sum_init |
.text 0x0000334c 0x2634 fc.o |
0x000040b6 DefaultKonstanten1 |
0x00004198 SendMotorData |
0x0000334c Mittelwert |
0x00004492 Piep |
0x0000380a CalibrierMittelwert |
0x00004226 SetNeutral |
0x000043ca calib_acc |
0x00003fdc DefaultKonstanten2 |
0x00003b42 ParameterZuordnung |
0x000044bc MotorRegler |
.text 0x00005980 0x54 GPS.o |
0x00005980 GPS_Neutral |
0x000059c2 GPS_BerechneZielrichtung |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3x.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fixsfsi.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_merge.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_split.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_zero.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_mulsi3.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodhi4.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodhi4.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodsi4.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodsi4.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_prologue.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_epilogue.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_exit.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_tablejump.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_copy_data.o) |
.text 0x000059d4 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_clear_bss.o) |
.text 0x000059d4 0x1a c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(memchr.o) |
0x000059d4 memchr |
.text 0x000059ee 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_rb.1F2021.o) |
.text 0x000059ee 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_rblk.1F2021.o) |
.text 0x000059ee 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_wb.1F2021.o) |
.text 0x000059ee 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_wblk.1F2021.o) |
0x000059ee . = ALIGN (0x2) |
*(.text.*) |
.text.fplib 0x000059ee 0xa c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) |
0x000059ee __subsf3 |
0x000059f0 __addsf3 |
.text.fplib 0x000059f8 0x7c c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) |
0x000059f8 __addsf3x |
.text.fplib 0x00005a74 0x6 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3.o) |
0x00005a74 __divsf3 |
.text.fplib 0x00005a7a 0x86 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3x.o) |
0x00005a7a __divsf3x |
.text.fplib 0x00005b00 0x36 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fixsfsi.o) |
0x00005b00 __fixsfsi |
0x00005b26 __fp_lneg |
0x00005b00 __fixunssfsi |
.text.fplib 0x00005b36 0x18 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) |
0x00005b3a __floatsisf |
0x00005b36 __floatunssisf |
.text.fplib 0x00005b4e 0x44 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
0x00005b4e __lesf2 |
0x00005b4e __nesf2 |
0x00005b54 __gtsf2 |
0x00005b4e __eqsf2 |
0x00005b5a __cmpsf2 |
0x00005b4e __ltsf2 |
0x00005b54 __gesf2 |
.text.fplib 0x00005b92 0x3a c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_merge.o) |
0x00005b9c __fp_merge |
.text.fplib 0x00005bcc 0x6 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) |
0x00005bcc __fp_nanERANGE |
0x00005bcc __fp_nan |
0x00005bcc __fp_nanEDOM |
0x00005bcc __fp_nanx |
.text.fplib 0x00005bd2 0x52 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_split.o) |
0x00005bd2 __fp_split3 |
0x00005bd8 __fp_split2 |
0x00005bea __fp_split1 |
0x00005c06 __fp_split_a |
.text.fplib 0x00005c24 0xa c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_zero.o) |
0x00005c24 __fp_zero |
0x00005c2a __fp_zerox |
.text.fplib 0x00005c2e 0x6 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) |
0x00005c2e __mulsf3 |
.text.fplib 0x00005c34 0x8a c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) |
0x00005c34 __mulsf3x |
.text.libgcc 0x00005cbe 0x3e c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_mulsi3.o) |
0x00005cbe __mulsi3 |
.text.libgcc 0x00005cfc 0x28 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodhi4.o) |
0x00005cfc __udivmodhi4 |
.text.libgcc 0x00005d24 0x26 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodhi4.o) |
0x00005d24 __divmodhi4 |
0x00005d24 _div |
.text.libgcc 0x00005d4a 0x44 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodsi4.o) |
0x00005d4a __udivmodsi4 |
.text.libgcc 0x00005d8e 0x36 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodsi4.o) |
0x00005d8e __divmodsi4 |
.text.libgcc 0x00005dc4 0x38 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_prologue.o) |
0x00005dc4 __prologue_saves__ |
.text.libgcc 0x00005dfc 0x36 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_epilogue.o) |
0x00005dfc __epilogue_restores__ |
.text.libgcc 0x00005e32 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_exit.o) |
.text.libgcc 0x00005e32 0xc c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_tablejump.o) |
0x00005e36 __tablejump__ |
0x00005e32 __tablejump2__ |
.text.libgcc 0x00005e3e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_copy_data.o) |
.text.libgcc 0x00005e3e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_clear_bss.o) |
.text.eeprom 0x00005e3e 0x10 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_rb.1F2021.o) |
0x00005e3e __eeprom_read_byte_1F2021 |
.text.eeprom 0x00005e4e 0xa c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_rblk.1F2021.o) |
0x00005e4e __eeprom_read_block_1F2021 |
.text.eeprom 0x00005e58 0x18 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_wb.1F2021.o) |
0x00005e58 __eeprom_write_byte_1F2021 |
.text.eeprom 0x00005e70 0xa c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_wblk.1F2021.o) |
0x00005e70 __eeprom_write_block_1F2021 |
0x00005e7a . = ALIGN (0x2) |
*(.fini9) |
.fini9 0x00005e7a 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_exit.o) |
0x00005e7a exit |
0x00005e7a _exit |
*(.fini9) |
*(.fini8) |
*(.fini8) |
*(.fini7) |
*(.fini7) |
*(.fini6) |
*(.fini6) |
*(.fini5) |
*(.fini5) |
*(.fini4) |
*(.fini4) |
*(.fini3) |
*(.fini3) |
*(.fini2) |
*(.fini2) |
*(.fini1) |
*(.fini1) |
*(.fini0) |
.fini0 0x00005e7a 0x2 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_exit.o) |
*(.fini0) |
0x00005e7c _etext = . |
.data 0x00800100 0x8c load address 0x00005e7c |
0x00800100 PROVIDE (__data_start, .) |
*(.data) |
.data 0x00800100 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
.data 0x00800100 0x0 main.o |
.data 0x00800100 0x2 uart.o |
0x00800101 PcZugriff |
0x00800100 UebertragungAbgeschlossen |
.data 0x00800102 0x0 printf_P.o |
.data 0x00800102 0x2 timer0.o |
.data 0x00800104 0x8 analog.o |
0x00800104 UBat |
0x0080010a MessLuftdruck |
0x00800106 Luftdruck |
.data 0x0080010c 0x5b menu.o |
0x0080010c Array |
0x00800116 DisplayBuff |
.data 0x00800167 0x0 compass.o |
.data 0x00800167 0x0 math.o |
.data 0x00800167 0x0 twimaster.o |
.data 0x00800167 0x1 rc.o |
0x00800167 NewPpmData |
.data 0x00800168 0x23 fc.o |
0x0080017c Ki |
0x00800180 Parameter_Luftdruck_D |
0x00800184 Parameter_KompassWirkung |
0x00800189 Parameter_ServoNickControl |
0x00800185 Parameter_Gyro_P |
0x00800182 Parameter_Hoehe_P |
0x00800183 Parameter_Hoehe_ACC_Wirkung |
0x00800186 Parameter_Gyro_I |
0x00800181 Parameter_MaxHoehe |
0x00800188 Parameter_I_Faktor |
0x00800178 Kp |
0x00800187 Parameter_Gier_P |
.data 0x0080018b 0x0 GPS.o |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3x.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fixsfsi.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_merge.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_split.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_zero.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_mulsi3.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodhi4.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodhi4.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodsi4.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodsi4.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_prologue.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_epilogue.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_exit.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_tablejump.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_copy_data.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_clear_bss.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(memchr.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_rb.1F2021.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_rblk.1F2021.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_wb.1F2021.o) |
.data 0x0080018b 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_wblk.1F2021.o) |
*(.data*) |
*(.rodata) |
*(.rodata*) |
*(.gnu.linkonce.d*) |
0x0080018c . = ALIGN (0x2) |
*fill* 0x0080018b 0x1 00 |
0x0080018c _edata = . |
0x0080018c PROVIDE (__data_end, .) |
.bss 0x0080018c 0x3a6 |
0x0080018c PROVIDE (__bss_start, .) |
*(.bss) |
.bss 0x0080018c 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
.bss 0x0080018c 0x0 main.o |
.bss 0x0080018c 0x17 uart.o |
0x0080018c DebugGetAnforderung |
0x00800190 SioTmp |
0x00800195 PC_DebugTimeout |
0x0080018f GetVersionAnforderung |
0x00800192 NeueKoordinateEmpfangen |
0x0080018e DebugDataAnforderung |
0x00800196 MotorTest |
0x00800191 NeuerDatensatzEmpfangen |
0x0080018d DebugDisplayAnforderung |
0x00800193 CntCrcError |
0x00800194 AnzahlEmpfangsBytes |
.bss 0x008001a3 0x0 printf_P.o |
.bss 0x008001a3 0xa timer0.o |
0x008001a6 beeptime |
0x008001a3 CountMilliseconds |
0x008001a5 UpdateMotor |
0x008001a8 ServoValue |
.bss 0x008001ad 0x18 analog.o |
0x008001bf HoeheD |
0x008001b1 AccumulateGier |
0x008001bc messanzahl_AccNick |
0x008001be messanzahl_AccHoch |
0x008001af AccumulateRoll |
0x008001c1 ZaehlMessungen |
0x008001b7 accumulate_AccHoch |
0x008001bd messanzahl_AccRoll |
0x008001b3 accumulate_AccRoll |
0x008001b9 MessanzahlNick |
0x008001bb MessanzahlGier |
0x008001b5 accumulate_AccNick |
0x008001ad AccumulateNick |
0x008001ba MessanzahlRoll |
.bss 0x008001c5 0x5 menu.o |
0x008001c7 DispPtr |
0x008001c8 RemoteTasten |
0x008001c5 TestInt |
.bss 0x008001ca 0x1 compass.o |
.bss 0x008001cb 0x0 math.o |
.bss 0x008001cb 0x3 twimaster.o |
0x008001cb twi_state |
0x008001cd motorread |
0x008001cc motor |
.bss 0x008001ce 0x4 rc.o |
.bss 0x008001d2 0x7d fc.o |
0x00800203 Mess_Integral_Gier2 |
0x00800221 StickGier |
0x008001f3 Mess_IntegralNick2 |
0x008001df IntegralNick2 |
0x0080021c SenderOkay |
0x008001eb Integral_Gier |
0x0080021d StickNick |
0x00800216 Poti2 |
0x00800223 MotorenEin |
0x008001d9 CosinusNickWinkel |
0x00800224 HoehenWert |
0x008001fb Mess_IntegralRoll2 |
0x00800218 Poti3 |
0x00800228 Parameter_UserParam1 |
0x008001d5 AdNeutralRoll |
0x00800212 Notlandung |
0x008001db IntegralNick |
0x00800207 Mess_Integral_Hoch |
0x008001ff Mess_Integral_Gier |
0x0080022b Parameter_UserParam4 |
0x0080020d KompassStartwert |
0x00800229 Parameter_UserParam2 |
0x0080020b KompassValue |
0x0080020f KompassRichtung |
0x008001f7 Mess_IntegralRoll |
0x0080021f StickRoll |
0x008001d3 AdNeutralNick |
0x008001d2 Timeout |
0x008001e7 IntegralRoll2 |
0x00800214 Poti1 |
0x0080022a Parameter_UserParam3 |
0x008001d7 AdNeutralGier |
0x00800211 updKompass |
0x008001da CosinusRollWinkel |
0x00800213 HoehenReglerAktiv |
0x00800226 SollHoehe |
0x0080021a Poti4 |
0x008001ef Mess_IntegralNick |
0x008001e3 IntegralRoll |
.bss 0x0080024f 0x14 GPS.o |
0x0080025b GpsZiel_X |
0x00800257 GpsAktuell_Y |
0x0080024f GPS_Nick |
0x00800253 GpsAktuell_X |
0x0080025f GpsZiel_Y |
0x00800251 GPS_Roll |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3x.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fixsfsi.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_merge.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_split.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_zero.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_mulsi3.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodhi4.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodhi4.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodsi4.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodsi4.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_prologue.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_epilogue.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_exit.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_tablejump.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_copy_data.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_clear_bss.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(memchr.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_rb.1F2021.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_rblk.1F2021.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_wb.1F2021.o) |
.bss 0x00800263 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_wblk.1F2021.o) |
*(.bss*) |
*(COMMON) |
COMMON 0x00800263 0x11 main.o |
0x00800263 DiffRoll |
0x00800265 Motor_Vorne |
0x00800266 Motor_Hinten |
0x00800267 DiffNick |
0x00800269 Motor_Rechts |
0x0080026a Count |
0x0080026b Motor_Links |
0x0080026c s |
0x0080026d h |
0x0080026e m |
0x0080026f MotorWert |
COMMON 0x00800274 0x20c uart.o |
0x00800274 MeineSlaveAdresse |
0x00800275 SendeBuffer |
0x0080030b NMEABuffer |
0x008003a1 Debug_Timer |
0x008003a3 DebugIn |
0x008003ae VersionInfo |
0x008003b8 RxdBuffer |
0x0080044e DebugOut |
COMMON 0x00800480 0x1 printf_P.o |
0x00800480 PrintZiel |
COMMON 0x00800481 0x12 analog.o |
0x00800481 Aktuell_ay |
0x00800483 Aktuell_az |
0x00800485 StartLuftdruck |
0x00800487 Aktuell_Nick |
0x00800489 messanzahl_Druck |
0x0080048a Aktuell_Roll |
0x0080048c Aktuell_ax |
0x0080048e DruckOffsetSetting |
0x0080048f Aktuell_Gier |
0x00800491 tmpLuftdruck |
COMMON 0x00800493 0x13 compass.o |
0x00800493 MM3_calib |
0x0080049c MM3 |
COMMON 0x008004a6 0x8 twimaster.o |
0x008004a6 motor_rx |
COMMON 0x008004ae 0x2c rc.o |
0x008004ae PPM_in |
0x008004c4 PPM_diff |
COMMON 0x008004da 0x58 fc.o |
0x008004da EE_Parameter |
0x00800514 MesswertRoll |
0x00800516 MesswertNick |
0x00800518 MIN_GAS |
0x00800519 Mittelwert_AccHoch |
0x0080051b IntegralFaktor |
0x0080051f acc_neutral |
0x00800527 Mittelwert_AccNick |
0x00800529 MAX_GAS |
0x0080052a MesswertGier |
0x0080052c GyroFaktor |
0x00800530 Mittelwert_AccRoll |
0x00800532 PROVIDE (__bss_end, .) |
0x00005e7c __data_load_start = LOADADDR (.data) |
0x00005f08 __data_load_end = (__data_load_start + SIZEOF (.data)) |
.noinit 0x00800532 0x0 |
0x00800532 PROVIDE (__noinit_start, .) |
*(.noinit*) |
0x00800532 PROVIDE (__noinit_end, .) |
0x00800532 _end = . |
0x00800532 PROVIDE (__heap_start, .) |
.eeprom 0x00810000 0x13d |
*(.eeprom*) |
.eeprom 0x00810000 0x12c main.o |
0x00810000 EEPromArray |
0x0081000a EEParameterArray |
.eeprom 0x0081012c 0x9 compass.o |
0x0081012c ee_calib |
.eeprom 0x00810135 0x8 fc.o |
0x00810135 ee_acc_neutral |
0x0081013d __eeprom_end = . |
.stab 0x00000000 0x378 |
*(.stab) |
.stab 0x00000000 0x378 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
.stabstr 0x00000000 0x71 |
*(.stabstr) |
.stabstr 0x00000000 0x71 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
.stab.excl |
*(.stab.excl) |
.stab.exclstr |
*(.stab.exclstr) |
.stab.index |
*(.stab.index) |
.stab.indexstr |
*(.stab.indexstr) |
.comment |
*(.comment) |
.debug |
*(.debug) |
.line |
*(.line) |
.debug_srcinfo |
*(.debug_srcinfo) |
.debug_sfnames |
*(.debug_sfnames) |
.debug_aranges |
*(.debug_aranges) |
.debug_pubnames |
*(.debug_pubnames) |
.debug_info |
*(.debug_info) |
*(.gnu.linkonce.wi.*) |
.debug_abbrev |
*(.debug_abbrev) |
.debug_line |
*(.debug_line) |
.debug_frame |
*(.debug_frame) |
.debug_str |
*(.debug_str) |
.debug_loc |
*(.debug_loc) |
.debug_macinfo |
*(.debug_macinfo) |
OUTPUT(Flight-Ctrl_MEGA644_V0_60_MM3.elf elf32-avr) |
LOAD linker stubs |
Cross Reference Table |
Symbol File |
ADC_Init analog.o |
main.o |
AccumulateGier analog.o |
fc.o |
menu.o |
AccumulateNick analog.o |
fc.o |
menu.o |
AccumulateRoll analog.o |
fc.o |
menu.o |
AdNeutralGier fc.o |
rc.o |
menu.o |
analog.o |
AdNeutralNick fc.o |
rc.o |
menu.o |
analog.o |
AdNeutralRoll fc.o |
rc.o |
menu.o |
analog.o |
AddCRC uart.o |
Aktuell_Gier analog.o |
Aktuell_Nick analog.o |
Aktuell_Roll analog.o |
Aktuell_ax analog.o |
Aktuell_ay analog.o |
Aktuell_az fc.o |
menu.o |
analog.o |
AnzahlEmpfangsBytes uart.o |
Array menu.o |
BearbeiteRxDaten uart.o |
main.o |
CalibrierMittelwert fc.o |
CheckDelay timer0.o |
fc.o |
compass.o |
uart.o |
main.o |
CntCrcError uart.o |
CosinusNickWinkel fc.o |
GPS.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
CosinusRollWinkel fc.o |
GPS.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Count GPS.o |
fc.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
CountMilliseconds timer0.o |
DatenUebertragung uart.o |
main.o |
DebugDataAnforderung uart.o |
DebugDisplayAnforderung uart.o |
DebugGetAnforderung uart.o |
DebugIn uart.o |
main.o |
DebugOut fc.o |
compass.o |
uart.o |
Debug_Timer uart.o |
Decode64 uart.o |
DefaultKonstanten1 fc.o |
main.o |
DefaultKonstanten2 fc.o |
main.o |
Delay_ms timer0.o |
fc.o |
analog.o |
DiffNick GPS.o |
fc.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
DiffRoll GPS.o |
fc.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
DispPtr menu.o |
printf_P.o |
DisplayBuff menu.o |
printf_P.o |
uart.o |
DruckOffsetSetting menu.o |
analog.o |
EEParameterArray main.o |
EEPromArray main.o |
fc.o |
analog.o |
uart.o |
EE_Parameter fc.o |
compass.o |
menu.o |
timer0.o |
uart.o |
main.o |
GPS_BerechneZielrichtung GPS.o |
GPS_Neutral GPS.o |
fc.o |
GPS_Nick GPS.o |
fc.o |
GPS_Roll GPS.o |
fc.o |
GetActiveParamSetNumber main.o |
fc.o |
menu.o |
uart.o |
GetVersionAnforderung uart.o |
GpsAktuell_X GPS.o |
GpsAktuell_Y GPS.o |
GpsZiel_X GPS.o |
GpsZiel_Y GPS.o |
GyroFaktor fc.o |
HoeheD analog.o |
fc.o |
HoehenReglerAktiv fc.o |
HoehenWert fc.o |
menu.o |
analog.o |
IntegralFaktor fc.o |
IntegralNick fc.o |
GPS.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
IntegralNick2 fc.o |
GPS.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
IntegralRoll fc.o |
GPS.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
IntegralRoll2 fc.o |
GPS.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Integral_Gier fc.o |
GPS.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Ki fc.o |
KompassRichtung fc.o |
menu.o |
KompassStartwert fc.o |
menu.o |
KompassValue fc.o |
menu.o |
Kp fc.o |
LcdClear menu.o |
main.o |
Luftdruck analog.o |
fc.o |
MAX_GAS fc.o |
MIN_GAS fc.o |
MM3 compass.o |
MM3_calib compass.o |
menu.o |
MeineSlaveAdresse uart.o |
Menu menu.o |
uart.o |
MessLuftdruck analog.o |
fc.o |
menu.o |
Mess_IntegralNick fc.o |
GPS.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Mess_IntegralNick2 fc.o |
GPS.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Mess_IntegralRoll fc.o |
GPS.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Mess_IntegralRoll2 fc.o |
GPS.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Mess_Integral_Gier fc.o |
GPS.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Mess_Integral_Gier2 fc.o |
analog.o |
Mess_Integral_Hoch fc.o |
analog.o |
MessanzahlGier analog.o |
fc.o |
menu.o |
MessanzahlNick analog.o |
fc.o |
menu.o |
MessanzahlRoll analog.o |
fc.o |
menu.o |
MesswertGier fc.o |
MesswertNick fc.o |
MesswertRoll fc.o |
Mittelwert fc.o |
Mittelwert_AccHoch fc.o |
Mittelwert_AccNick fc.o |
Mittelwert_AccRoll fc.o |
MotorRegler fc.o |
main.o |
MotorTest uart.o |
fc.o |
MotorWert GPS.o |
fc.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Motor_Hinten GPS.o |
fc.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Motor_Links GPS.o |
fc.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Motor_Rechts GPS.o |
fc.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Motor_Vorne GPS.o |
fc.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
MotorenEin fc.o |
GPS.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
NMEABuffer uart.o |
NeueKoordinateEmpfangen uart.o |
NeuerDatensatzEmpfangen uart.o |
NewPpmData rc.o |
fc.o |
Notlandung fc.o |
PAD_0 printf_P.o |
PAD_SP printf_P.o |
PC_DebugTimeout uart.o |
PPM_diff fc.o |
rc.o |
PPM_in fc.o |
rc.o |
compass.o |
menu.o |
main.o |
PRINT printf_P.o |
PRINTP printf_P.o |
ParameterZuordnung fc.o |
Parameter_Gier_P fc.o |
Parameter_Gyro_I fc.o |
Parameter_Gyro_P fc.o |
Parameter_Hoehe_ACC_Wirkung fc.o |
Parameter_Hoehe_P fc.o |
Parameter_I_Faktor fc.o |
Parameter_KompassWirkung fc.o |
Parameter_Luftdruck_D fc.o |
Parameter_MaxHoehe fc.o |
Parameter_ServoNickControl fc.o |
menu.o |
timer0.o |
Parameter_UserParam1 fc.o |
Parameter_UserParam2 fc.o |
Parameter_UserParam3 fc.o |
Parameter_UserParam4 fc.o |
PcZugriff uart.o |
fc.o |
main.o |
Piep fc.o |
uart.o |
Poti1 fc.o |
menu.o |
Poti2 fc.o |
menu.o |
Poti3 fc.o |
menu.o |
Poti4 fc.o |
menu.o |
PrintZiel printf_P.o |
Putchar printf_P.o |
ReadParameterSet main.o |
fc.o |
uart.o |
RemoteTasten menu.o |
GPS.o |
fc.o |
rc.o |
twimaster.o |
math.o |
compass.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
RxdBuffer uart.o |
SendMotorData fc.o |
main.o |
SendOutData uart.o |
SendeBuffer uart.o |
SenderOkay fc.o |
GPS.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
ServoValue timer0.o |
menu.o |
SetDelay timer0.o |
fc.o |
compass.o |
uart.o |
main.o |
SetNeutral fc.o |
main.o |
SioTmp uart.o |
SollHoehe fc.o |
menu.o |
StartLuftdruck fc.o |
analog.o |
StickGier fc.o |
GPS.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
StickNick fc.o |
GPS.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
StickRoll fc.o |
GPS.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
SucheLuftruckOffset analog.o |
fc.o |
main.o |
TestInt menu.o |
Timeout fc.o |
GPS.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
Timer_Init timer0.o |
main.o |
UART_Init uart.o |
main.o |
UBat analog.o |
menu.o |
main.o |
UebertragungAbgeschlossen uart.o |
UpdateMotor timer0.o |
main.o |
VersionInfo uart.o |
main.o |
WriteParameterSet main.o |
uart.o |
WriteProgramData uart.o |
ZaehlMessungen analog.o |
fc.o |
__addsf3 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) |
fc.o |
compass.o |
analog.o |
__addsf3x c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) |
__bad_interrupt c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__bss_end c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_clear_bss.o) |
__bss_start c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_clear_bss.o) |
__cmpsf2 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
__data_end c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_copy_data.o) |
__data_load_start c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_copy_data.o) |
__data_start c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_copy_data.o) |
__divmodhi4 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodhi4.o) |
fc.o |
rc.o |
compass.o |
menu.o |
analog.o |
__divmodsi4 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodsi4.o) |
fc.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
__divsf3 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3.o) |
fc.o |
__divsf3x c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3x.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3.o) |
__do_clear_bss c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_clear_bss.o) |
GPS.o |
fc.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
__do_copy_data c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_copy_data.o) |
GPS.o |
fc.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
__eeprom_read_block_1F2021 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_rblk.1F2021.o) |
fc.o |
compass.o |
__eeprom_read_byte_1F2021 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_rb.1F2021.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_rblk.1F2021.o) |
analog.o |
main.o |
__eeprom_write_block_1F2021 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_wblk.1F2021.o) |
fc.o |
compass.o |
__eeprom_write_byte_1F2021 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_wb.1F2021.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(ee_wblk.1F2021.o) |
fc.o |
analog.o |
uart.o |
main.o |
__epilogue_restores__ c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_epilogue.o) |
fc.o |
math.o |
compass.o |
printf_P.o |
uart.o |
__eqsf2 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
__fixsfsi c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fixsfsi.o) |
fc.o |
compass.o |
menu.o |
analog.o |
__fixunssfsi c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fixsfsi.o) |
__floatsisf c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) |
fc.o |
math.o |
compass.o |
analog.o |
__floatunssisf c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) |
__fp_lneg c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fixsfsi.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) |
__fp_merge c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_merge.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) |
__fp_nan c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_split.o) |
__fp_nanEDOM c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) |
__fp_nanERANGE c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) |
__fp_nanx c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3x.o) |
__fp_split1 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_split.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fixsfsi.o) |
__fp_split2 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_split.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
__fp_split3 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_split.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) |
__fp_split_a c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_split.o) |
__fp_zero c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_zero.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_merge.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fixsfsi.o) |
__fp_zerox c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_zero.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(divsf3x.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) |
__gesf2 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
__gtsf2 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
analog.o |
__heap_end c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__init c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__lesf2 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
__ltsf2 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
fc.o |
analog.o |
__mulsf3 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) |
fc.o |
math.o |
compass.o |
__mulsf3x c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) |
__mulsi3 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_mulsi3.o) |
fc.o |
math.o |
compass.o |
timer0.o |
__nesf2 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) |
__prologue_saves__ c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_prologue.o) |
fc.o |
math.o |
compass.o |
printf_P.o |
uart.o |
__stack c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__subsf3 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libm.a(addsf3.o) |
compass.o |
analog.o |
__tablejump2__ c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_tablejump.o) |
twimaster.o |
menu.o |
analog.o |
uart.o |
__tablejump__ c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_tablejump.o) |
__udivmodhi4 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodhi4.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodhi4.o) |
analog.o |
__udivmodsi4 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_udivmodsi4.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodsi4.o) |
printf_P.o |
__vector_1 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_10 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_11 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_12 rc.o |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_13 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_14 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_15 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_16 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_17 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_18 timer0.o |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_19 compass.o |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_2 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_20 uart.o |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_21 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_22 uart.o |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_23 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_24 analog.o |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_25 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_26 twimaster.o |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_27 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_3 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_4 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_5 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_6 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_7 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_8 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_9 timer0.o |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vector_default c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
__vectors c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
_div c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_divmodhi4.o) |
_exit c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_exit.o) |
_printf_P printf_P.o |
menu.o |
analog.o |
main.o |
acc_neutral fc.o |
menu.o |
analog.o |
accumulate_AccHoch analog.o |
fc.o |
accumulate_AccNick analog.o |
fc.o |
menu.o |
accumulate_AccRoll analog.o |
fc.o |
menu.o |
atan2_i math.o |
compass.o |
beeptime timer0.o |
fc.o |
compass.o |
main.o |
calib_MM3 compass.o |
main.o |
calib_acc fc.o |
main.o |
cos_f math.o |
compass.o |
ee_acc_neutral fc.o |
ee_calib compass.o |
exit c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_exit.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
h GPS.o |
fc.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
heading_MM3 compass.o |
fc.o |
i2c_init twimaster.o |
main.o |
i2c_start twimaster.o |
fc.o |
i2c_stop twimaster.o |
i2c_write_byte twimaster.o |
init_MM3 compass.o |
main.o |
m GPS.o |
fc.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
main main.o |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5/crtm644.o |
memchr c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(memchr.o) |
printf_P.o |
messanzahl_AccHoch analog.o |
fc.o |
messanzahl_AccNick analog.o |
fc.o |
menu.o |
messanzahl_AccRoll analog.o |
fc.o |
menu.o |
messanzahl_Druck analog.o |
motor twimaster.o |
fc.o |
motor_rx twimaster.o |
motorread twimaster.o |
pgm_atan math.o |
pgm_read_float math.o |
pgm_sinus_f math.o |
rc_sum_init rc.o |
main.o |
s GPS.o |
fc.o |
rc.o |
twimaster.o |
math.o |
compass.o |
menu.o |
analog.o |
timer0.o |
printf_P.o |
uart.o |
main.o |
sin_f math.o |
compass.o |
timer0_MM3 compass.o |
timer0.o |
tmpLuftdruck analog.o |
twi_state twimaster.o |
fc.o |
uart_putchar uart.o |
printf_P.o |
updKompass fc.o |
/branches/v0.60_MicroMag3_Nick666/v0.60/Flight-Ctrl_MEGA644_V0_60_MM3.sym |
---|
0,0 → 1,482 |
00000000 W __heap_end |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 a __tmp_reg__ |
00000000 W __vector_default |
00000000 T __vectors |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
00000001 a __zero_reg__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003d a __SP_L__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003e a __SP_H__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
0000003f a __SREG__ |
000000d2 t __c.2043 |
000000d6 t __c.2041 |
000000de t __c.2039 |
000000ea t __c.2037 |
000000f8 t __c.2035 |
000000fd t __c.2030 |
0000011a t __c.2028 |
00000133 t __c.2026 |
00000148 t __c.2021 |
00000163 t __c.2015 |
00000192 t __c.2013 |
000001b3 t __c.2011 |
000001cb t __c.2013 |
000001cd t __c.2113 |
000001db t __c.2111 |
000001e9 t __c.2109 |
000001f7 t __c.2107 |
00000201 t __c.2104 |
00000210 t __c.2102 |
0000021f t __c.2100 |
0000022e t __c.2098 |
00000236 t __c.2095 |
00000244 t __c.2093 |
00000252 t __c.2091 |
00000260 t __c.2089 |
00000268 t __c.2086 |
00000274 t __c.2084 |
00000280 t __c.2082 |
0000028c t __c.2080 |
00000298 t __c.2077 |
000002a7 t __c.2075 |
000002b6 t __c.2073 |
000002c5 t __c.2071 |
000002d4 t __c.2068 |
000002e3 t __c.2066 |
000002f2 t __c.2063 |
00000301 t __c.2061 |
00000310 t __c.2059 |
0000031f t __c.2057 |
0000032c t __c.2054 |
0000033b t __c.2052 |
0000034a t __c.2050 |
00000359 t __c.2048 |
00000367 t __c.2045 |
00000377 t __c.2043 |
00000387 t __c.2041 |
00000397 t __c.2039 |
000003a7 t __c.2036 |
000003b7 t __c.2034 |
000003c7 t __c.2032 |
000003d7 t __c.2030 |
000003e7 t __c.2027 |
000003f6 t __c.2025 |
00000405 t __c.2023 |
00000414 t __c.2021 |
0000041e t __c.2018 |
0000042c t __c.2016 |
00000433 t __c.2014 |
00000442 t __c.2012 |
00000451 t __c.2010 |
00000460 t __c.2008 |
0000046f t __c.2004 |
0000047f t __c.2002 |
0000048c t __c.2000 |
00000493 t __c.1998 |
000004a5 t __c.1995 |
000004aa T pgm_atan |
000005b8 T pgm_sinus_f |
00000724 T __ctors_end |
00000724 T __ctors_start |
00000724 T __dtors_end |
00000724 T __dtors_start |
00000724 W __init |
00000724 T __trampolines_end |
00000724 T __trampolines_start |
00000730 T __do_copy_data |
0000073c t .do_copy_data_loop |
00000740 t .do_copy_data_start |
00000746 T __do_clear_bss |
0000074e t .do_clear_bss_loop |
00000750 t .do_clear_bss_start |
0000075e T __bad_interrupt |
0000075e W __vector_1 |
0000075e W __vector_10 |
0000075e W __vector_11 |
0000075e W __vector_13 |
0000075e W __vector_14 |
0000075e W __vector_15 |
0000075e W __vector_16 |
0000075e W __vector_17 |
0000075e W __vector_2 |
0000075e W __vector_21 |
0000075e W __vector_23 |
0000075e W __vector_25 |
0000075e W __vector_27 |
0000075e W __vector_3 |
0000075e W __vector_4 |
0000075e W __vector_5 |
0000075e W __vector_6 |
0000075e W __vector_7 |
0000075e W __vector_8 |
00000762 T GetActiveParamSetNumber |
00000770 T WriteParameterSet |
0000078c t .28_start |
00000798 t .28_finished |
000007a4 T ReadParameterSet |
000007c0 t .49_start |
000007cc t .49_finished |
000007ce T main |
00000b3c T __vector_22 |
00000ba8 T __vector_20 |
00000d4c T AddCRC |
00000da8 T SendOutData |
00000e74 T Decode64 |
00000f24 T uart_putchar |
00000f46 T WriteProgramData |
00000f48 T UART_Init |
00000f7e T DatenUebertragung |
0000105a T BearbeiteRxDaten |
000010ff W __stack |
00001196 T Putchar |
000011c8 T PAD_0 |
000011de T PAD_SP |
000011f4 T PRINTP |
00001220 T PRINT |
00001248 T _printf_P |
0000173a T SetDelay |
0000174c T CheckDelay |
00001764 T __vector_9 |
000018b2 T __vector_18 |
00001974 T Timer_Init |
000019c0 T Delay_ms |
000019e4 T ADC_Init |
000019f0 T __vector_24 |
0000201c T SucheLuftruckOffset |
000020a4 T LcdClear |
000020b6 T Menu |
000028ec T __vector_19 |
00002988 T heading_MM3 |
00002c54 T timer0_MM3 |
00002cb8 T calib_MM3 |
00002e44 T init_MM3 |
00002e6c T atan2_i |
00002fa8 T pgm_read_float |
00002fbc T sin_f |
0000307c T cos_f |
0000308c T i2c_init |
00003098 T i2c_start |
000030a4 T i2c_stop |
000030ac T i2c_write_byte |
000030c0 T __vector_26 |
000031e4 T rc_sum_init |
0000320e T __vector_12 |
0000334c T Mittelwert |
0000380a T CalibrierMittelwert |
00003b42 T ParameterZuordnung |
00003fdc T DefaultKonstanten2 |
000040b6 T DefaultKonstanten1 |
00004198 T SendMotorData |
00004226 T SetNeutral |
000043ca T calib_acc |
00004492 T Piep |
000044bc T MotorRegler |
00005980 T GPS_Neutral |
000059c2 T GPS_BerechneZielrichtung |
000059d4 T memchr |
000059ee T __subsf3 |
000059f0 T __addsf3 |
000059f8 T __addsf3x |
00005a74 T __divsf3 |
00005a7a T __divsf3x |
00005b00 T __fixsfsi |
00005b00 T __fixunssfsi |
00005b26 T __fp_lneg |
00005b36 T __floatunssisf |
00005b3a T __floatsisf |
00005b4e T __eqsf2 |
00005b4e T __lesf2 |
00005b4e T __ltsf2 |
00005b4e T __nesf2 |
00005b54 T __gesf2 |
00005b54 T __gtsf2 |
00005b5a T __cmpsf2 |
00005b6c t .fp_cmp |
00005b9c T __fp_merge |
00005bcc T __fp_nan |
00005bcc T __fp_nanEDOM |
00005bcc T __fp_nanERANGE |
00005bcc T __fp_nanx |
00005bd2 T __fp_split3 |
00005bd8 T __fp_split2 |
00005bea T __fp_split1 |
00005c06 T __fp_split_a |
00005c24 T __fp_zero |
00005c2a T __fp_zerox |
00005c2e T __mulsf3 |
00005c34 T __mulsf3x |
00005cbe T __mulsi3 |
00005cfc T __udivmodhi4 |
00005d04 t __udivmodhi4_loop |
00005d12 t __udivmodhi4_ep |
00005d24 T __divmodhi4 |
00005d24 T _div |
00005d38 t __divmodhi4_neg2 |
00005d3e t __divmodhi4_exit |
00005d40 t __divmodhi4_neg1 |
00005d4a T __udivmodsi4 |
00005d56 t __udivmodsi4_loop |
00005d70 t __udivmodsi4_ep |
00005d8e T __divmodsi4 |
00005da2 t __divmodsi4_neg2 |
00005db0 t __divmodsi4_exit |
00005db2 t __divmodsi4_neg1 |
00005dc4 T __prologue_saves__ |
00005dfc T __epilogue_restores__ |
00005e32 T __tablejump2__ |
00005e36 T __tablejump__ |
00005e3e T __eeprom_read_byte_1F2021 |
00005e4e T __eeprom_read_block_1F2021 |
00005e58 T __eeprom_write_byte_1F2021 |
00005e70 T __eeprom_write_block_1F2021 |
00005e7a t __stop_program |
00005e7a T _exit |
00005e7a W exit |
00005e7c A __data_load_start |
00005e7c T _etext |
00005f08 A __data_load_end |
00800100 D __data_start |
00800100 D UebertragungAbgeschlossen |
00800101 D PcZugriff |
00800102 d timer.2066 |
00800103 d cnt_1ms.1996 |
00800104 D UBat |
00800106 D Luftdruck |
0080010a D MessLuftdruck |
0080010c D Array |
00800116 D DisplayBuff |
00800166 d MaxMenue.1993 |
00800167 D NewPpmData |
00800178 D Kp |
0080017c D Ki |
00800180 D Parameter_Luftdruck_D |
00800181 D Parameter_MaxHoehe |
00800182 D Parameter_Hoehe_P |
00800183 D Parameter_Hoehe_ACC_Wirkung |
00800184 D Parameter_KompassWirkung |
00800185 D Parameter_Gyro_P |
00800186 D Parameter_Gyro_I |
00800187 D Parameter_Gier_P |
00800188 D Parameter_I_Faktor |
00800189 D Parameter_ServoNickControl |
0080018a d NeueKompassRichtungMerken.2366 |
0080018c B __bss_start |
0080018c D __data_end |
0080018c D _edata |
0080018c B DebugGetAnforderung |
0080018d B DebugDisplayAnforderung |
0080018e B DebugDataAnforderung |
0080018f B GetVersionAnforderung |
00800190 B SioTmp |
00800191 B NeuerDatensatzEmpfangen |
00800192 B NeueKoordinateEmpfangen |
00800193 B CntCrcError |
00800194 B AnzahlEmpfangsBytes |
00800195 B PC_DebugTimeout |
00800196 B MotorTest |
0080019a b dis_zeile.2257 |
0080019b b UartState.2020 |
0080019c b buf_ptr.2019 |
0080019d b crc2.2018 |
0080019e b crc1.2017 |
0080019f b crc.2016 |
008001a1 b ptr.2003 |
008001a3 B CountMilliseconds |
008001a5 B UpdateMotor |
008001a6 B beeptime |
008001a8 B ServoValue |
008001aa b cnt.1997 |
008001ab b tim_main |
008001ad B AccumulateNick |
008001af B AccumulateRoll |
008001b1 B AccumulateGier |
008001b3 B accumulate_AccRoll |
008001b5 B accumulate_AccNick |
008001b7 B accumulate_AccHoch |
008001b9 B MessanzahlNick |
008001ba B MessanzahlRoll |
008001bb B MessanzahlGier |
008001bc B messanzahl_AccNick |
008001bd B messanzahl_AccRoll |
008001be B messanzahl_AccHoch |
008001bf B HoeheD |
008001c1 B ZaehlMessungen |
008001c3 b state.2032 |
008001c4 b kanal.2031 |
008001c5 B TestInt |
008001c7 B DispPtr |
008001c8 B RemoteTasten |
008001c9 b MenuePunkt.1994 |
008001ca b tmp.2014 |
008001cb B twi_state |
008001cc B motor |
008001cd B motorread |
008001ce b index.1994 |
008001d0 b AltICR.1992 |
008001d2 B Timeout |
008001d3 B AdNeutralNick |
008001d5 B AdNeutralRoll |
008001d7 B AdNeutralGier |
008001d9 B CosinusNickWinkel |
008001da B CosinusRollWinkel |
008001db B IntegralNick |
008001df B IntegralNick2 |
008001e3 B IntegralRoll |
008001e7 B IntegralRoll2 |
008001eb B Integral_Gier |
008001ef B Mess_IntegralNick |
008001f3 B Mess_IntegralNick2 |
008001f7 B Mess_IntegralRoll |
008001fb B Mess_IntegralRoll2 |
008001ff B Mess_Integral_Gier |
00800203 B Mess_Integral_Gier2 |
00800207 B Mess_Integral_Hoch |
0080020b B KompassValue |
0080020d B KompassStartwert |
0080020f B KompassRichtung |
00800211 B updKompass |
00800212 B Notlandung |
00800213 B HoehenReglerAktiv |
00800214 B Poti1 |
00800216 B Poti2 |
00800218 B Poti3 |
0080021a B Poti4 |
0080021c B SenderOkay |
0080021d B StickNick |
0080021f B StickRoll |
00800221 B StickGier |
00800223 B MotorenEin |
00800224 B HoehenWert |
00800226 B SollHoehe |
00800228 B Parameter_UserParam1 |
00800229 B Parameter_UserParam2 |
0080022a B Parameter_UserParam3 |
0080022b B Parameter_UserParam4 |
0080022c b SignalSchlecht.2370 |
0080022d b TimerWerteausgabe.2365 |
0080022e b hoehenregler.2364 |
00800230 b modell_fliegt.2363 |
00800232 b delay_ausschalten.2362 |
00800233 b delay_einschalten.2361 |
00800234 b delay_neutral.2360 |
00800235 b RcLostTimer.2359 |
00800237 b IntegralFehlerRoll.2358 |
00800239 b IntegralFehlerNick.2357 |
0080023b b tmp_long2.2356 |
0080023f b tmp_long.2355 |
00800243 b sollGier.2354 |
00800247 b SummeRoll.2353 |
0080024b b SummeNick.2352 |
0080024f B GPS_Nick |
00800251 B GPS_Roll |
00800253 B GpsAktuell_X |
00800257 B GpsAktuell_Y |
0080025b B GpsZiel_X |
0080025f B GpsZiel_Y |
00800263 B DiffRoll |
00800265 B Motor_Vorne |
00800266 B Motor_Hinten |
00800267 B DiffNick |
00800269 B Motor_Rechts |
0080026a B Count |
0080026b B Motor_Links |
0080026c B s |
0080026d B h |
0080026e B m |
0080026f B MotorWert |
00800274 B MeineSlaveAdresse |
00800275 B SendeBuffer |
0080030b B NMEABuffer |
008003a1 B Debug_Timer |
008003a3 B DebugIn |
008003ae B VersionInfo |
008003b8 B RxdBuffer |
0080044e B DebugOut |
00800480 B PrintZiel |
00800481 B Aktuell_ay |
00800483 B Aktuell_az |
00800485 B StartLuftdruck |
00800487 B Aktuell_Nick |
00800489 B messanzahl_Druck |
0080048a B Aktuell_Roll |
0080048c B Aktuell_ax |
0080048e B DruckOffsetSetting |
0080048f B Aktuell_Gier |
00800491 B tmpLuftdruck |
00800493 B MM3_calib |
0080049c B MM3 |
008004a6 B motor_rx |
008004ae B PPM_in |
008004c4 B PPM_diff |
008004da B EE_Parameter |
00800514 B MesswertRoll |
00800516 B MesswertNick |
00800518 B MIN_GAS |
00800519 B Mittelwert_AccHoch |
0080051b B IntegralFaktor |
0080051f B acc_neutral |
00800527 B Mittelwert_AccNick |
00800529 B MAX_GAS |
0080052a B MesswertGier |
0080052c B GyroFaktor |
00800530 B Mittelwert_AccRoll |
00800532 B __bss_end |
00800532 A _end |
00810000 D EEPromArray |
0081000a D EEParameterArray |
0081012c D ee_calib |
00810135 D ee_acc_neutral |
0081013d D __eeprom_end |
/branches/v0.60_MicroMag3_Nick666/v0.60/GPS.d |
---|
0,0 → 1,2 |
GPS.o GPS.d : GPS.c main.h old_macros.h _settings.h printf_P.h compass.h \ |
timer0.h uart.h analog.h twimaster.h menu.h rc.h fc.h gps.h math.h |
/branches/v0.60_MicroMag3_Nick666/v0.60/analog.d |
---|
0,0 → 1,2 |
analog.o analog.d : analog.c main.h old_macros.h _settings.h printf_P.h compass.h \ |
timer0.h uart.h analog.h twimaster.h menu.h rc.h fc.h gps.h math.h |
/branches/v0.60_MicroMag3_Nick666/v0.60/compass.d |
---|
0,0 → 1,2 |
compass.o compass.d : compass.c main.h old_macros.h _settings.h printf_P.h compass.h \ |
timer0.h uart.h analog.h twimaster.h menu.h rc.h fc.h gps.h math.h |
/branches/v0.60_MicroMag3_Nick666/v0.60/fc.d |
---|
0,0 → 1,2 |
fc.o fc.d : fc.c main.h old_macros.h _settings.h printf_P.h compass.h timer0.h \ |
uart.h analog.h twimaster.h menu.h rc.h fc.h gps.h math.h |
/branches/v0.60_MicroMag3_Nick666/v0.60/main.d |
---|
0,0 → 1,2 |
main.o main.d : main.c main.h old_macros.h _settings.h printf_P.h compass.h \ |
timer0.h uart.h analog.h twimaster.h menu.h rc.h fc.h gps.h math.h |
/branches/v0.60_MicroMag3_Nick666/v0.60/math.d |
---|
0,0 → 1,2 |
math.o math.d : math.c main.h old_macros.h _settings.h printf_P.h compass.h \ |
timer0.h uart.h analog.h twimaster.h menu.h rc.h fc.h gps.h math.h |
/branches/v0.60_MicroMag3_Nick666/v0.60/menu.d |
---|
0,0 → 1,2 |
menu.o menu.d : menu.c main.h old_macros.h _settings.h printf_P.h compass.h \ |
timer0.h uart.h analog.h twimaster.h menu.h rc.h fc.h gps.h math.h |
/branches/v0.60_MicroMag3_Nick666/v0.60/printf_P.d |
---|
0,0 → 1,3 |
printf_P.o printf_P.d : printf_P.c main.h old_macros.h _settings.h printf_P.h \ |
compass.h timer0.h uart.h analog.h twimaster.h menu.h rc.h fc.h gps.h \ |
math.h |
/branches/v0.60_MicroMag3_Nick666/v0.60/rc.d |
---|
0,0 → 1,2 |
rc.o rc.d : rc.c rc.h main.h old_macros.h _settings.h printf_P.h compass.h \ |
timer0.h uart.h analog.h twimaster.h menu.h fc.h gps.h math.h |
/branches/v0.60_MicroMag3_Nick666/v0.60/timer0.d |
---|
0,0 → 1,2 |
timer0.o timer0.d : timer0.c main.h old_macros.h _settings.h printf_P.h compass.h \ |
timer0.h uart.h analog.h twimaster.h menu.h rc.h fc.h gps.h math.h |
/branches/v0.60_MicroMag3_Nick666/v0.60/twimaster.d |
---|
0,0 → 1,3 |
twimaster.o twimaster.d : twimaster.c main.h old_macros.h _settings.h printf_P.h \ |
compass.h timer0.h uart.h analog.h twimaster.h menu.h rc.h fc.h gps.h \ |
math.h |
/branches/v0.60_MicroMag3_Nick666/v0.60/uart.d |
---|
0,0 → 1,2 |
uart.o uart.d : uart.c main.h old_macros.h _settings.h printf_P.h compass.h \ |
timer0.h uart.h analog.h twimaster.h menu.h rc.h fc.h gps.h math.h |