/programy/C/avr/LX200/COPYING |
---|
0,0 → 1,340 |
GNU GENERAL PUBLIC LICENSE |
Version 2, June 1991 |
Copyright (C) 1989, 1991 Free Software Foundation, Inc. |
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
Everyone is permitted to copy and distribute verbatim copies |
of this license document, but changing it is not allowed. |
Preamble |
The licenses for most software are designed to take away your |
freedom to share and change it. By contrast, the GNU General Public |
License is intended to guarantee your freedom to share and change free |
software--to make sure the software is free for all its users. This |
General Public License applies to most of the Free Software |
Foundation's software and to any other program whose authors commit to |
using it. (Some other Free Software Foundation software is covered by |
the GNU Library General Public License instead.) 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 |
this service 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 make restrictions that forbid |
anyone to deny you these rights or to ask you to surrender the rights. |
These restrictions translate to certain responsibilities for you if you |
distribute copies of the software, or if you modify it. |
For example, if you distribute copies of such a program, whether |
gratis or for a fee, you must give the recipients all the rights that |
you have. 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. |
We protect your rights with two steps: (1) copyright the software, and |
(2) offer you this license which gives you legal permission to copy, |
distribute and/or modify the software. |
Also, for each author's protection and ours, we want to make certain |
that everyone understands that there is no warranty for this free |
software. If the software is modified by someone else and passed on, we |
want its recipients to know that what they have is not the original, so |
that any problems introduced by others will not reflect on the original |
authors' reputations. |
Finally, any free program is threatened constantly by software |
patents. We wish to avoid the danger that redistributors of a free |
program will individually obtain patent licenses, in effect making the |
program proprietary. To prevent this, we have made it clear that any |
patent must be licensed for everyone's free use or not licensed at all. |
The precise terms and conditions for copying, distribution and |
modification follow. |
GNU GENERAL PUBLIC LICENSE |
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
0. This License applies to any program or other work which contains |
a notice placed by the copyright holder saying it may be distributed |
under the terms of this General Public License. The "Program", below, |
refers to any such program or work, and a "work based on the Program" |
means either the Program or any derivative work under copyright law: |
that is to say, a work containing the Program or a portion of it, |
either verbatim or with modifications and/or translated into another |
language. (Hereinafter, translation is included without limitation in |
the term "modification".) Each licensee is addressed as "you". |
Activities other than copying, distribution and modification are not |
covered by this License; they are outside its scope. The act of |
running the Program is not restricted, and the output from the Program |
is covered only if its contents constitute a work based on the |
Program (independent of having been made by running the Program). |
Whether that is true depends on what the Program does. |
1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the |
notices that refer to this License and to the absence of any warranty; |
and give any other recipients of the Program a copy of this License |
along with the Program. |
You may charge a fee for the physical act of transferring a copy, and |
you may at your option offer warranty protection in exchange for a fee. |
2. You may modify your copy or copies of the Program or any portion |
of it, thus forming a work based on the Program, and copy and |
distribute such modifications or work under the terms of Section 1 |
above, provided that you also meet all of these conditions: |
a) You must cause the modified files to carry prominent notices |
stating that you changed the files and the date of any change. |
b) You must cause any work that you distribute or publish, that in |
whole or in part contains or is derived from the Program or any |
part thereof, to be licensed as a whole at no charge to all third |
parties under the terms of this License. |
c) If the modified program normally reads commands interactively |
when run, you must cause it, when started running for such |
interactive use in the most ordinary way, to print or display an |
announcement including an appropriate copyright notice and a |
notice that there is no warranty (or else, saying that you provide |
a warranty) and that users may redistribute the program under |
these conditions, and telling the user how to view a copy of this |
License. (Exception: if the Program itself is interactive but |
does not normally print such an announcement, your work based on |
the Program is not required to print an announcement.) |
These requirements apply to the modified work as a whole. If |
identifiable sections of that work are not derived from the Program, |
and can be reasonably considered independent and separate works in |
themselves, then this License, and its terms, do not apply to those |
sections when you distribute them as separate works. But when you |
distribute the same sections as part of a whole which is a work based |
on the Program, the distribution of the whole must be on the terms of |
this License, whose permissions for other licensees extend to the |
entire whole, and thus to each and every part regardless of who wrote it. |
Thus, it is not the intent of this section to claim rights or contest |
your rights to work written entirely by you; rather, the intent is to |
exercise the right to control the distribution of derivative or |
collective works based on the Program. |
In addition, mere aggregation of another work not based on the Program |
with the Program (or with a work based on the Program) on a volume of |
a storage or distribution medium does not bring the other work under |
the scope of this License. |
3. You may copy and distribute the Program (or a work based on it, |
under Section 2) in object code or executable form under the terms of |
Sections 1 and 2 above provided that you also do one of the following: |
a) Accompany it with the complete corresponding machine-readable |
source code, which must be distributed under the terms of Sections |
1 and 2 above on a medium customarily used for software interchange; or, |
b) Accompany it with a written offer, valid for at least three |
years, to give any third party, for a charge no more than your |
cost of physically performing source distribution, a complete |
machine-readable copy of the corresponding source code, to be |
distributed under the terms of Sections 1 and 2 above on a medium |
customarily used for software interchange; or, |
c) Accompany it with the information you received as to the offer |
to distribute corresponding source code. (This alternative is |
allowed only for noncommercial distribution and only if you |
received the program in object code or executable form with such |
an offer, in accord with Subsection b above.) |
The source code for a work means the preferred form of the work for |
making modifications to it. For an executable work, complete source |
code means all the source code for all modules it contains, plus any |
associated interface definition files, plus the scripts used to |
control compilation and installation of the executable. However, as a |
special exception, the source code distributed need not include |
anything that is normally distributed (in either source or binary |
form) with the major components (compiler, kernel, and so on) of the |
operating system on which the executable runs, unless that component |
itself accompanies the executable. |
If distribution of executable or object code is made by offering |
access to copy from a designated place, then offering equivalent |
access to copy the source code from the same place counts as |
distribution of the source code, even though third parties are not |
compelled to copy the source along with the object code. |
4. You may not copy, modify, sublicense, or distribute the Program |
except as expressly provided under this License. Any attempt |
otherwise to copy, modify, sublicense or distribute the Program is |
void, and will automatically terminate your rights under this License. |
However, parties who have received copies, or rights, from you under |
this License will not have their licenses terminated so long as such |
parties remain in full compliance. |
5. You are not required to accept this License, since you have not |
signed it. However, nothing else grants you permission to modify or |
distribute the Program or its derivative works. These actions are |
prohibited by law if you do not accept this License. Therefore, by |
modifying or distributing the Program (or any work based on the |
Program), you indicate your acceptance of this License to do so, and |
all its terms and conditions for copying, distributing or modifying |
the Program or works based on it. |
6. Each time you redistribute the Program (or any work based on the |
Program), the recipient automatically receives a license from the |
original licensor to copy, distribute or modify the Program subject to |
these terms and conditions. You may not impose any further |
restrictions on the recipients' exercise of the rights granted herein. |
You are not responsible for enforcing compliance by third parties to |
this License. |
7. If, as a consequence of a court judgment or allegation of patent |
infringement or for any other reason (not limited to patent issues), |
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 |
distribute so as to satisfy simultaneously your obligations under this |
License and any other pertinent obligations, then as a consequence you |
may not distribute the Program at all. For example, if a patent |
license would not permit royalty-free redistribution of the Program by |
all those who receive copies directly or indirectly through you, then |
the only way you could satisfy both it and this License would be to |
refrain entirely from distribution of the Program. |
If any portion of this section is held invalid or unenforceable under |
any particular circumstance, the balance of the section is intended to |
apply and the section as a whole is intended to apply in other |
circumstances. |
It is not the purpose of this section to induce you to infringe any |
patents or other property right claims or to contest validity of any |
such claims; this section has the sole purpose of protecting the |
integrity of the free software distribution system, which is |
implemented by public license practices. Many people have made |
generous contributions to the wide range of software distributed |
through that system in reliance on consistent application of that |
system; it is up to the author/donor to decide if he or she is willing |
to distribute software through any other system and a licensee cannot |
impose that choice. |
This section is intended to make thoroughly clear what is believed to |
be a consequence of the rest of this License. |
8. If the distribution and/or use of the Program is restricted in |
certain countries either by patents or by copyrighted interfaces, the |
original copyright holder who places the Program under this License |
may add an explicit geographical distribution limitation excluding |
those countries, so that distribution is permitted only in or among |
countries not thus excluded. In such case, this License incorporates |
the limitation as if written in the body of this License. |
9. The Free Software Foundation may publish revised and/or new versions |
of the 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 a version number of this License which applies to it and "any |
later version", you have the option of following the terms and conditions |
either of that version or of any later version published by the Free |
Software Foundation. If the Program does not specify a version number of |
this License, you may choose any version ever published by the Free Software |
Foundation. |
10. If you wish to incorporate parts of the Program into other free |
programs whose distribution conditions are different, write to the author |
to ask for permission. For software which is copyrighted by the Free |
Software Foundation, write to the Free Software Foundation; we sometimes |
make exceptions for this. Our decision will be guided by the two goals |
of preserving the free status of all derivatives of our free software and |
of promoting the sharing and reuse of software generally. |
NO WARRANTY |
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. |
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING |
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR |
REDISTRIBUTE 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. |
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 |
convey 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) 19yy <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 2 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, write to the Free Software |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
Also add information on how to contact you by electronic and paper mail. |
If the program is interactive, make it output a short notice like this |
when it starts in an interactive mode: |
Gnomovision version 69, Copyright (C) 19yy name of author |
Gnomovision 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, the commands you use may |
be called something other than `show w' and `show c'; they could even be |
mouse-clicks or menu items--whatever suits your program. |
You should also get your employer (if you work as a programmer) or your |
school, if any, to sign a "copyright disclaimer" for the program, if |
necessary. Here is a sample; alter the names: |
Yoyodyne, Inc., hereby disclaims all copyright interest in the program |
`Gnomovision' (which makes passes at compilers) written by James Hacker. |
<signature of Ty Coon>, 1 April 1989 |
Ty Coon, President of Vice |
This 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 Library General |
Public License instead of this License. |
/programy/C/avr/LX200/Makefile |
---|
0,0 → 1,115 |
PRG = eq6 |
OBJ = eq6.o paddle.o combine.o stepper.o driver.o serial.o \ |
pguide.o sr.o |
MCU_TARGET = atmega162 |
OPTIMIZE = -O2 |
DEFS = |
LIBS = |
# You should not have to change anything below here. |
CC = avr-gcc |
# Override is only needed by avr-lib build system. |
override CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) $(DEFS) |
override LDFLAGS = -Wl,-Map,$(PRG).map |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
all: $(PRG).cof lst text eeprom |
$(PRG).elf: $(OBJ) |
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) |
$(PRG).cof: $(PRG).elf |
$(OBJCOPY) \ |
--debugging \ |
-O coff-ext-avr \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 \ |
$(PRG).elf $(PRG).cof |
release: |
$(MAKE) clean |
$(MAKE) DEFS=-DCLK_RATE=8000000 |
mv eq6.hex eq6_8MHz.sav |
$(MAKE) clean |
$(MAKE) DEFS=-DCLK_RATE=16000000 |
mv eq6.hex eq6_16MHz.sav |
$(MAKE) clean |
mv eq6_8MHz.sav eq6_8MHz.hex |
mv eq6_16MHz.sav eq6_16MHz.hex |
clean: |
rm -rf *.o $(PRG).elf *.eps *.png *.pdf *.bak |
rm -rf *.lst *.map $(EXTRA_CLEAN_FILES) |
lst: $(PRG).lst |
%.lst: %.elf |
$(OBJDUMP) -h -S $< > $@ |
# Rules for building the .text rom images |
text: hex bin srec |
hex: $(PRG).hex |
bin: $(PRG).bin |
srec: $(PRG).srec |
%.hex: %.elf |
$(OBJCOPY) -j .text -j .data -O ihex $< $@ |
%.srec: %.elf |
$(OBJCOPY) -j .text -j .data -O srec $< $@ |
%.bin: %.elf |
$(OBJCOPY) -j .text -j .data -O binary $< $@ |
# Rules for building the .eeprom rom images |
eeprom: ehex ebin esrec |
ehex: $(PRG)_eeprom.hex |
ebin: $(PRG)_eeprom.bin |
esrec: $(PRG)_eeprom.srec |
%_eeprom.hex: %.elf |
$(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@ |
%_eeprom.srec: %.elf |
$(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O srec $< $@ |
%_eeprom.bin: %.elf |
$(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O binary $< $@ |
# Every thing below here is used by avr-libc's build system and can be ignored |
# by the casual user. |
FIG2DEV = fig2dev |
EXTRA_CLEAN_FILES = *.hex *.bin *.srec |
dox: eps png pdf |
eps: $(PRG).eps |
png: $(PRG).png |
pdf: $(PRG).pdf |
%.eps: %.fig |
$(FIG2DEV) -L eps $< $@ |
%.pdf: %.fig |
$(FIG2DEV) -L pdf $< $@ |
%.png: %.fig |
$(FIG2DEV) -L png $< $@ |
/programy/C/avr/LX200/combine.c |
---|
0,0 → 1,101 |
/* |
* Copyright (C) 2004 Darren Hutchinson (dbh@gbdt.com.au) |
* |
* This program is free software; you can redistribute it and/or modify |
* it under the terms of the GNU Library General Public License as published by |
* the Free Software Foundation; either version 2 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 Library General Public |
* License for more details. |
* |
* You should have received a copy of the GNU Library General Public License |
* along with this software; see the file COPYING. If not, write to |
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
* MA 02111-1307, USA. |
* |
* $Id: combine.c,v 1.5 2004/04/05 06:42:15 dbh Exp $ |
*/ |
#include <avr/io.h> |
#include "combine.h" |
#include "stepper.h" |
/* Instance of rate input/output variables. Normally we would pass these via |
* pointers, but this is a small code/data/environment, so they're |
* accessed globally |
*/ |
struct rateInput_s rateInput = {SPEED_0_X, SPEED_0_X, SPEED_0_X, SPEED_0_X, SPEED_0_X, SPEED_0_X, SPEED_0_X}; |
struct rateOutput_s rateOutput = {SPEED_0_X, SPEED_0_X}; |
/* TEST: defeat tracking for testing */ |
uint8_t noTrack = 0; |
/* updateMountSpeed() takes the various speed inputs from the paddle, |
* serial port, and guiding inputs and determines the actual RA and |
* DEC rates |
* |
* Passed: |
* nothing |
* |
* Returns: |
* nothing |
* |
* Notes: |
* Updates rateOutput global structure |
*/ |
void |
updateMountSpeed(void) |
{ |
int8_t guideRate; |
/* Determine the DEC rate. This is the simple one! */ |
if (rateInput.paddleDecRate != SPEED_0_X) |
guideRate = rateInput.paddleDecRate; |
else if (rateInput.serialDecRate != SPEED_0_X) |
guideRate = rateInput.serialDecRate; |
else if (rateInput.guideDecRate != SPEED_0_X) |
guideRate = rateInput.guideDecRate; |
else |
guideRate = SPEED_0_X; |
rateOutput.decRate = guideRate; |
setDecSpeed(rateOutput.decRate); |
/* Determine the RA rate. This is complicated by the need to perform |
* tracking as well as guiding on this axis |
*/ |
if (rateInput.paddleRaRate != SPEED_0_X) |
guideRate = rateInput.paddleRaRate; |
else if (rateInput.serialRaRate != SPEED_0_X) |
guideRate = rateInput.serialRaRate; |
else if (rateInput.guideRaRate != SPEED_0_X) |
guideRate = rateInput.guideRaRate; |
else |
guideRate = SPEED_0_X; |
/* Now we need to add the traking rate to the guiding rate. Fractional |
* guiding rates simply adjust the tracking rate, x1 guiding |
* doubles/stops the motion, higher tracking rate override the |
* guiding rate. |
*/ |
if (noTrack || (guideRate > SPEED_1_X) || (guideRate < -SPEED_1_X)) |
rateOutput.raRate = guideRate; |
else if ((guideRate < SPEED_1_X) && (guideRate > -SPEED_1_X)) |
rateOutput.raRate = rateInput.siderialRate + guideRate; |
else if ((guideRate == SPEED_1_X) && (rateInput.siderialRate == SPEED_1_X)) |
rateOutput.raRate = SPEED_2_X; |
else if ((guideRate == -SPEED_1_X) && (rateInput.siderialRate == -SPEED_1_X)) |
rateOutput.raRate = -SPEED_2_X; |
else |
rateOutput.raRate = SPEED_0_X; |
/* The RA axis needs to turn in the opposite direction of the |
* DEC axis. This is the simplest place to do it |
*/ |
setRaSpeed(-rateOutput.raRate); |
/* All done! */ |
} |
/programy/C/avr/LX200/combine.h |
---|
0,0 → 1,77 |
/* |
* Copyright (C) 2004 Darren Hutchinson (dbh@gbdt.com.au) |
* |
* This program is free software; you can redistribute it and/or modify |
* it under the terms of the GNU Library General Public License as published by |
* the Free Software Foundation; either version 2 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 Library General Public |
* License for more details. |
* |
* You should have received a copy of the GNU Library General Public License |
* along with this software; see the file COPYING. If not, write to |
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
* MA 02111-1307, USA. |
* |
* $Id: combine.h,v 1.4 2004/04/05 06:42:15 dbh Exp $ |
*/ |
#ifndef _COMBINE_H_ |
#define _COMBINE_H_ |
#include <inttypes.h> |
/* This file gives the "public" interface for the "combining" function |
* that takes the various inputs (siderial rate, paddle buttons, serial |
* input, guider input) to derive speeds for the RA and DEC axis |
*/ |
/* Speed definitions */ |
#define SPEED_0_X 0 |
#define SPEED_0_33_X 1 |
#define SPEED_0_67_X 2 |
#define SPEED_1_X 3 |
#define SPEED_1_33_X 4 |
#define SPEED_1_67_X 5 |
#define SPEED_2_X 6 |
#define SPEED_4_X 7 |
#define SPEED_8_X 8 |
#define SPEED_16_X 9 |
#define SPEED_SPIN 10 |
#define SPEED_SIDERIAL SPEED_1_X |
struct rateInput_s |
{ |
int8_t siderialRate; |
int8_t paddleRaRate; |
int8_t paddleDecRate; |
int8_t serialRaRate; |
int8_t serialDecRate; |
int8_t guideRaRate; |
int8_t guideDecRate; |
}; |
extern struct rateInput_s rateInput; |
struct rateOutput_s |
{ |
int8_t raRate; |
int8_t decRate; |
}; |
extern struct rateOutput_s rateOutput; |
void updateMountSpeed(void); |
/* TEST: defeat tracking for testing */ |
extern uint8_t noTrack; |
#endif /* _COMBINE_H_ */ |
/programy/C/avr/LX200/driver.c |
---|
0,0 → 1,197 |
/* |
* Copyright (C) 2004 Darren Hutchinson (dbh@gbdt.com.au) |
* |
* This program is free software; you can redistribute it and/or modify |
* it under the terms of the GNU Library General Public License as published by |
* the Free Software Foundation; either version 2 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 Library General Public |
* License for more details. |
* |
* You should have received a copy of the GNU Library General Public License |
* along with this software; see the file COPYING. If not, write to |
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
* MA 02111-1307, USA. |
* |
* $Id: driver.c,v 1.4 2004/04/04 06:54:05 dbh Exp $ |
*/ |
/* This file contains the code that takes the excitation values for each |
* coil (determined by the stepper module) and performs a crude PWM |
* and generates the output values for the stepper drivers. |
* |
* This module has it's own timer at a high frequency timer, so efficiency |
* is an important issue. |
*/ |
#include <avr/io.h> |
#include <avr/interrupt.h> |
#include <inttypes.h> |
#include "eq6.h" |
#include "stepper.h" |
#include "driver.h" |
/* Like the stepper.h module this one is heavily table-driven. Basically |
* each excitation value corresponds to 4, 8 bit lists of values are used |
* for 8 clock cycles. This gives a crude PWM system. |
* |
* The hardware is orginized such that both "ends" of a coil are in |
* adjacent bits, so each pair of 8 bits is interleaved into a single |
* 16 bit word where the bits are used two at a time. |
* |
* Note: The high side and low side tables here were different - basically if |
* a high side was driven for one coil, the low side should be driven for the |
* other. |
* |
* However the low side bits are reversed because of the bit numbers running |
* in the opposite direction for Port A (low side) vs Port C (high side), so |
* it turns out that the same table can be used for both! |
* |
* Of course the bits for the coils are composed in the opposite direction |
* too, but that happens below |
*/ |
uint8_t driveTbl[] = |
{ |
[EX_M_1] = 0xaa, |
[EX_M_0_67] = 0x2a, |
[EX_M_0_4] = 0x22, |
[EX_M_0_2] = 0x02, |
[EX_0] = 0x00, |
[EX_P_0_2] = 0x01, |
[EX_P_0_4] = 0x11, |
[EX_P_0_67] = 0x15, |
[EX_P_1] = 0x55 |
}; |
#define PWM_RATE 48000 /* PWM update speed */ |
#define PWM_STEPS 4 /* Steps per PWM cycle */ |
/* driverInit() initializes the port used by the stepper motors and the timer |
* used to update the stepper driver state |
* |
* Passed: |
* Nothing |
* |
* Returns: |
* Nothing |
* |
*/ |
void |
driverInit(void) |
{ |
/* Set up port A and C as outputs and set them to a safe default state |
* i.e. no outputs driven |
*/ |
PORTA = 0x00; // Disable high-side drivers |
DDRA = 0xff; // Set as outputs |
PORTC = 0xff; // Disable low-side drivers |
DDRC = 0xff; // Set as outputs |
/* Setup the "magic" relay bit as an output */ |
MAGIC_PORT &= ~_BV(MAGIC_BIT); |
MAGIC_DDR |= _BV(MAGIC_BIT); |
/* Setup timer 0 to generate interrupts for PWM */ |
OCR0 = (CLK_RATE / PWM_RATE / 8); |
TCCR0 = _BV(WGM01) | _BV(CS01); // Divied by 8, CTC mode |
/* Enable interrupt generation from timer 0 */ |
TIMSK |= _BV(OCIE0); |
} |
/* driverInt() is called whenever a timer 0 overflow interrupt occurs |
* |
* Passed: |
* Nothing |
* |
* Returns: |
* Nothing |
*/ |
SIGNAL(SIG_OUTPUT_COMPARE0) |
{ |
static uint8_t raCoil1States; |
static uint8_t raCoil2States; |
static uint8_t decCoil1States; |
static uint8_t decCoil2States; |
static uint8_t ctr = PWM_STEPS - 1; |
uint8_t highSidePort; |
uint8_t lowSidePort; |
// PORTA = ~excitation.ra; |
// PORTC = ~excitation.dec; |
/* Increment the step count. Reinitialize the states entries |
* if the counter wraps around |
*/ |
if (++ctr == PWM_STEPS) |
{ |
uint8_t tmp; |
ctr = 0; |
/* Update states */ |
tmp = _GET_C1(raExcitation.excitation); |
raCoil1States = driveTbl[tmp]; |
tmp = _GET_C2(raExcitation.excitation); |
raCoil2States = driveTbl[tmp]; |
tmp = _GET_C1(decExcitation.excitation); |
decCoil1States = driveTbl[tmp]; |
tmp = _GET_C2(decExcitation.excitation); |
decCoil2States = driveTbl[tmp]; |
/* Update magic relay state */ |
if (raExcitation.useRelay) |
MAGIC_PORT &= ~_BV(MAGIC_BIT); |
else |
MAGIC_PORT |= _BV(MAGIC_BIT); |
} |
/* Build the high_side driver output value */ |
highSidePort = decCoil2States & 0x3; |
highSidePort <<= 2; |
highSidePort |= decCoil1States & 0x3; |
highSidePort <<= 2; |
highSidePort |= raCoil2States & 0x3; |
highSidePort <<= 2; |
highSidePort |= raCoil1States & 0x3; |
/* Build the low-side driver states. Note that, due to the |
* reverse pin pordering for Port A vs Port C that these are built in |
* the opposite direction |
*/ |
lowSidePort = raCoil1States & 0x3; |
lowSidePort <<= 2; |
raCoil1States >>= 2; |
lowSidePort |= raCoil2States & 0x3; |
lowSidePort <<= 2; |
raCoil2States >>= 2; |
lowSidePort |= decCoil1States & 0x3; |
lowSidePort <<= 2; |
decCoil1States >>= 2; |
lowSidePort |= decCoil2States & 0x3; |
decCoil2States >>= 2; |
/* Potential safety check: rev (PortA) & PortC == 0 */ |
/* Write the values to the output ports */ |
PORTC = highSidePort; |
PORTA = ~lowSidePort; |
} |
/programy/C/avr/LX200/driver.h |
---|
0,0 → 1,39 |
/* |
* Copyright (C) 2004 Darren Hutchinson (dbh@gbdt.com.au) |
* |
* This program is free software; you can redistribute it and/or modify |
* it under the terms of the GNU Library General Public License as published by |
* the Free Software Foundation; either version 2 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 Library General Public |
* License for more details. |
* |
* You should have received a copy of the GNU Library General Public License |
* along with this software; see the file COPYING. If not, write to |
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
* MA 02111-1307, USA. |
* |
* $Id: driver.h,v 1.1.1.1 2004/02/22 08:12:42 dbh Exp $ |
*/ |
#ifndef _DRIVER_H_ |
#define _DRIVER_H_ |
/* This file contains the interface for the actual stepper motor driver */ |
/* Bit use to connect to the "magic" relay that determines which |
* set ot RA coils are connected. This allows low current operation when |
* not slewing at high speed |
*/ |
#define MAGIC_PORT PORTB |
#define MAGIC_DDR DDRB |
#define MAGIC_BIT PB4 |
/* Interface prototypes */ |
void driverInit(void); |
#endif /* _DRIVER_H_ */ |
/programy/C/avr/LX200/eq6-mnt.txt |
---|
0,0 → 1,156 |
EQ6 Mount controller analysis (v1 - 10 Jan 2004) |
Darren Hutchinson |
dbh@gbdt.com.au |
$Id: eq6-mnt.txt,v 1.3 2004/03/07 07:44:59 dbh Exp $ |
Overview: |
CPU: AT87F51 |
Clock speed: 3.52 MHz (measured at pin 18 of CPU) |
Firmware: MotorDrive DW3505010 |
RA connector |
1 RA coil A Driven RA=2,8,16x |
2 RA coil C Driven RA=2,8,16x |
3 RA coil A Driven RA=1x, 22R to 1, 178R to 4 |
4 RA coli B Driven RA=Any, 157R to 1, 178R to 3 |
5 RA coil C Driven RA=1x 173R to 6, 155R to 2 |
6 RA coil D Driven RA=Any 173R to 5, 22R to 2 |
DEC connector |
1 DEC coil A A/B are coil with 16R3 resistance |
2 DEC coil B |
3 DEC coil C C/D are coil with 16R3 resistance |
4 DEC coil D |
Drive waveforms: |
RA 0X: Coils not driven |
RA 1X: Driven +12V for 114 ms, 0V for 114 ms, not driven for 38ms b/w |
driven states, overall time is 302ms [OSC only accurate to 2ms] |
Each coil driven at 90deg to other coil. |
Timing correct for half step mode |
RA 2X: Driven +12V for 75ms, 0V for 76ms, overall time is 151 ms, each coil |
at 90deg to other coil |
RA 8X: Overall period is 38ms, no undriven time, |
coils at 90deg |
RA 16X: Overall period is 12.8 ms, no undriven time, coils at 90deg |
- Timing indicates full step mode |
- No evidence of velocity ramp in x2, x8, x16 mode |
- RA 1X timinig is correct assuming 180 tooth worm and 1:132 transfer gear |
& gearbox reduction ratio |
DEC 0X: Outputs not driven |
DEC 2X: Overall period 151 ms, no undriven time |
DEC 8X: Overall period 37.8ms, no undriven time, coils at 90 deg |
DEC 16X: Overall period 12.6ms, no undriven time, coils at 90 deg |
- Timing indicates full step mode |
- No evidence of velocity ramp in x16, x8, or x2 mode |
Drive circuit: |
The drive circuit is a fairly plain "H" driver with one quirk that may, or |
may not, be intentional design from Synta. |
The half-"H" is built from a pair on PNP/NPN transistors operating in |
common-emitter mode. This is somewhat unusual as circuits intended to |
drive high currents typically operate in common collector mode. |
Anyway, the PNP transistor that pulls the output high has a base current of |
about 11 mA (depending on the supply voltage). With a transistor hfe of |
40 this should give an output current of at least 500 mA. |
The other part of the bridge is another issue. The identical circuit is used to |
drive the base of this NPN transistor, but in this case it will only give |
the transistor 1.2 mA, leading to a lower current. |
The rated hfe of the transistor only guarantees a current of about 50 mA, but |
the hfe is typically much higher. In the unit measured the coil current seemed |
to be limited to about 250 mA. |
This may be an attempt to limit the current in fault conditions where |
both the NPN and PNP transistors are active, or it may just be bad circuit |
design. |
In any case there are two practical effects: |
First the transistor may not be saturated, so it will run hot. |
Second the coil current is limited, giving less torque. |
Both of these effect mean that the existing electronics would be |
a poor choice as the basis of a GOTO design (but I guess you knew |
that ....) |
MCU Pin Label Use |
1 P1.0 1 = RA at 1x, 0 = RA != 1x |
2 P1.1 Same as P1.0 |
3 P1.2 Same as P1.0 |
4 P1.3 Same as P1.0 |
5 P1.4 Same as P1.0 but connected to relay (1 = relay off, 0 = on) |
6 P1.5 Same as P1.0 |
7 P1.6 Same as P1.0 |
8 P1.7 Same as P1.0 |
9 RST R/C reset circuit, C = 22uF, R = 5K1, active high |
10 RXD Data from controller via 1K resistor |
11 TXD No data |
12 INT0 0V |
13 INT1 +5V |
14 T0 +5V |
15 T1 +5V |
16 *WR +5V |
17 *RD +5V |
18 XTAL xtal out (freq meas point) |
19 XTAL Xtal in |
20 GND 0V |
21 P2.0 1 = RA coil A to +12v, 0 = No effect |
22 P2.1 1 = RA coil B to +12v , 0 = No effect |
23 P2.2 1 = RA coil C to +12v , 0 = No effect |
24 P2.3 1 = RA coil D to +12v, 0 = No effect |
25 P2.4 1 = DEC coil A to +12v, 0 = No effect |
26 P2.5 1 = DEC coil B to +12v, 0 = No effect |
27 P2.6 1 = DEC coil C to +12v, 0 = No effect |
28 P2.7 1 = DEC coil D to +12v, 0 = No effect |
29 *PSEN +5V |
30 ALE Toggle at 602 KHz (high 540 ns, low 1.1 us) [~6 clk / ALE ] |
31 *EA +5V |
32 P0.7 1 = No effect, 0 = RA coil A to 0V |
33 P0.6 1 = No effect, 0 = RA coil B to 0V |
34 P0.5 1 = No effect, 0 = RA coil C to 0V |
35 P0.4 1 = No effect, 0 = RA coil D to 0V |
36 P0.3 1 = No effect, 0 = DEC coil A to 0V |
37 P0.2 1 = No effect, 0 = DEC coil B to 0V |
38 P0.1 1 = No effect, 0 = DEC coil C to 0V |
39 P0.0 1 = No effect, 0 = DEC coil D to 0V |
40 Vcc +5V |
Controller connector port: |
Pin numbers from RIGHT looking into socket with tab up (as numbered on |
controller board) |
1: Switched +12V from hand controller |
2: Ground |
3: Data from hand controller via 1K resistor |
4: Short to pin 1 |
5: +12V from source via diode |
6: Short to pin 5 |
Notes: |
- Northern hemisphere selected during measurements |
- Relay is 5V, but appears to be driven via a resistor from the 12V supply |
- Finder LED has buffering (Q2) |
- Controller is series diode protected from reverse power connection |
Mechanical details: |
14mm from PCB to inside of cover plate |
5mm from PCB to top of MCU socket |
9mm from PCB to top of MCU |
/programy/C/avr/LX200/eq6-serial.txt |
---|
0,0 → 1,125 |
EQ-6/Atlas handpaddle protocol (v3 - 11 Jan 2004). |
Darren Hutchinson |
dbh@gbdt.com.au |
$Id: eq6-serial.txt,v 1.3 2004/03/07 07:44:59 dbh Exp $ |
Introduction: |
The EQ-6/Atlas hand controller is used to control the operation of the |
Atlas/EQ-6 mount. The hand controller also acts as a power switch for |
the mount. |
The communication bewteen the controller and the mount is |
unidirectional, with data being sent from the controller to the mount |
over a single wire. The other wires provide ground, +12V from the mount |
to the controller, and switched 12V back to the mount. |
Cable pinout TBD. |
Physical format: |
The signal is a 0/5V signal, with a '1' represented by 5 V. Start bits |
are '0', stop bits are '1' |
Data format: |
The data is a set of 6 asynchronous words with a format of 1 start bit, |
9 data bits, and 1 stop bit. The bits are transmitted at rate of 935 |
bits per second. The six words are transmitted every 76.2 ms. |
Note that there is no indication in the data of which word is actually |
the first in the set of words. The ordering below is a guess based on |
the distribution of extra stop bits in the set of words. |
The distribution of extra stop bits between the six words depends on |
which keys are pressed but it seems unlikely that this is detected or |
used by the mount. |
The six words are divided into two sets of three, one set for RA, the |
other for DEC. Each set contains a sync word, a direction word, and a |
speed word. |
All words below are shown with the most significant bit on the left. The |
least significant bit is transmitted first, immediately after the start |
bit. All RA words have bit 8 set to 0, all DEC words have bit 8 set to 1. |
Word 1: RA sync |
This word is always the bit pattern 001111110 (0x07e). |
B0: Always 0 |
B1 - B6: Always 1 |
B7 - B8: Always 0 |
Word 2: RA direction |
This word determines the rotation direction of the RA axis, |
B0: 0 = RA left, 1 = RA right. |
B1 - Bit 8: Always 0 |
Note: When no keys are pressed Bit 0 is 0 when the controller is set for |
southern hemisphere operation, and 1 when set for northern hemisphere |
operation. |
Word 3: RA speed |
This word determines the speed of the RA axis in multiples of the |
sideral rate. There seems to be some logic in the controller for the x2 |
speed to help with guiding: |
B3 - 0 Rate |
0000 x0 (RA button for opposite direction to hemisphere RA in x2 mode) |
0001 x1 (No RA button pressed) |
0010 x2 (RA button for same direction to hemisphere RA in x2 mode) |
0100 x8 |
1000 x16 |
B8 to B4: All 0 |
Word 4: DEC sync (?) |
This word seems to be used to synchronize the start of the DEC |
information, but it could be used for something else |
B0 - B7: All 0 |
B9: Always '1' |
Word 5: DEC direction |
This word determines the direction of DEC axis rotation. |
B0: 0 = DEC UP, 1 = DEC DOWN |
B1 - B7: All 0 |
B8: Always 1 |
Word 6: DEC speed: |
This word determines the spped of rotation of the DEC axis. |
B3 - B0 Speed |
0000 x0 (no motion) |
0010 x2 |
0100 x8 |
1000 x16 |
B7 - B4: All 0 |
B8: Always 1 |
Notes: |
- The DEC reverse and RA reverse seem to be inputs to the controller MCU |
but only control the interpretation of the buttons and are not sent |
directly to the mount. |
- see eq6-mnt.txt for pinout of cable |
Further work: |
- Need to determine correct "first word" in set by monitoring data from |
startup |
- Need to check for any special startup words by monitoring data from |
startup |
/programy/C/avr/LX200/eq6.c |
---|
0,0 → 1,86 |
/* |
* Copyright (C) 2004 Darren Hutchinson (dbh@gbdt.com.au) |
* |
* This program is free software; you can redistribute it and/or modify |
* it under the terms of the GNU Library General Public License as published by |
* the Free Software Foundation; either version 2 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 Library General Public |
* License for more details. |
* |
* You should have received a copy of the GNU Library General Public License |
* along with this software; see the file COPYING. If not, write to |
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
* MA 02111-1307, USA. |
* |
* $Id: eq6.c,v 1.4 2004/04/04 10:32:50 dbh Exp $ |
*/ |
#include <avr/interrupt.h> |
#include "eq6.h" |
#include "paddle.h" |
#include "stepper.h" |
#include "driver.h" |
#include "serial.h" |
#include "pguide.h" |
#include "sr.h" |
volatile uint32_t idleCtr; |
/* main() is called after the basic system initialization. This |
* initialises the program modules (these are, generally, interrupt |
* driver), and then waits for the end of civilization as we know it |
* |
* Passed: |
* Nothing |
* |
* Returns: |
* Nothing |
* |
* Notes: |
* There is little to do here but wait. |
*/ |
int |
main(void) |
{ |
DDRA = 0xff; |
DDRC = 0xff; |
PORTA = 0x0; |
PORTC = 0x0; |
/* Initialize the modules */ |
paddleInit(); |
stepperInit(); |
driverInit(); |
serialInit(); |
pguideInit(); |
/* Load save data (if any) from the EEPROM */ |
srLoadState(); |
setupRateTable(transRatio); |
setTrackRate(0); |
setTrackRate(trackingRate); |
/* Enable interrupts */ |
sei(); |
/* Increment the idle counter to get some idea of the system |
* idle time |
*/ |
for (;;) |
{ |
if (doSave) |
{ |
doSave = 0; |
srSaveState(); |
} |
} |
/* NOTREACHED */ |
return 0; |
} |
/programy/C/avr/LX200/eq6.h |
---|
0,0 → 1,43 |
/* |
* Copyright (C) 2004 Darren Hutchinson (dbh@gbdt.com.au) |
* |
* This program is free software; you can redistribute it and/or modify |
* it under the terms of the GNU Library General Public License as published by |
* the Free Software Foundation; either version 2 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 Library General Public |
* License for more details. |
* |
* You should have received a copy of the GNU Library General Public License |
* along with this software; see the file COPYING. If not, write to |
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
* MA 02111-1307, USA. |
* |
* $Id: eq6.h,v 1.3 2004/04/04 10:32:50 dbh Exp $ |
*/ |
#ifndef _EQ6_H_ |
#define _EQ6_H_ |
#include <inttypes.h> |
/* Define the default clock rate used by the software |
* replacement firmware |
*/ |
#define DEF_CLK_RATE (8L * 1000L * 1000L) // 8 MHz |
#ifndef CLK_RATE |
#define CLK_RATE DEF_CLK_RATE |
#endif /* CLK_RATE */ |
/* Set the default transmission (gearbox) ratio used by the software. The |
* value set via the serial port will override this. |
* |
* Note: this does not include the worm/worm gear ratio |
*/ |
#define DEF_TRANS_RATIO 132 |
#endif /* _EQ6_H_ */ |
/programy/C/avr/LX200/eq6_cof.aps |
---|
0,0 → 1,0 |
<AVRStudio><MANAGEMENT><ProjectName>eq6_cof</ProjectName><Created>22-Feb-2004 13:09:53</Created><LastEdit>10-Apr-2004 17:56:42</LastEdit><ICON>Object.bmp</ICON><ProjectType>1</ProjectType><Created>22-Feb-2004 13:09:53</Created><Version>4</Version><Build>310</Build><ProjectTypeName>Atmel AVR Assembler</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>H:\atlas\eq6_ver1\eq6.cof</ObjectFile><EntryFile></EntryFile><SaveFolder>H:\atlas\eq6_ver1\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>AVR Simulator</CURRENT_TARGET><CURRENT_PART>ATmega162</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><Item>51</Item><Item>636</Item><Item>547</Item><Item>34</Item><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><Variables>pEntry</Variables></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><FilesInProject><Object><OpenString>Object File (*.hex)|*.hex;|AllFiles(*.*)|*.*</OpenString><File>H:\atlas\eq6_ver1\eq6.cof</File></Object></FilesInProject><Files><File00000><FileId>00000</FileId><Path>h:\atlas\eq6_ver1/</Path><Name>eq6.c</Name><Status>259</Status></File00000><File00001><FileId>00001</FileId><Path>h:\atlas\eq6_ver1/</Path><Name>paddle.c</Name><Status>258</Status></File00001><File00002><FileId>00002</FileId><Path>h:\atlas\eq6_ver1/</Path><Name>combine.c</Name><Status>258</Status></File00002><File00003><FileId>00003</FileId><Path>h:\atlas\eq6_ver1/</Path><Name>stepper.c</Name><Status>259</Status></File00003><File00004><FileId>00004</FileId><Path>h:\atlas\eq6_ver1/</Path><Name>driver.c</Name><Status>258</Status></File00004><File00005><FileId>00005</FileId><Path>h:\atlas\eq6_ver1/</Path><Name>serial.c</Name><Status>258</Status></File00005><File00006><FileId>00006</FileId><Path>h:\atlas\eq6_ver1/</Path><Name>pguide.c</Name><Status>258</Status></File00006><File00007><FileId>00007</FileId><Path>h:\atlas\eq6_ver1/</Path><Name>sr.c</Name><Status>258</Status></File00007><File00008><FileId>00008</FileId><Path>H:\atlas\eq6_ver1\</Path><Name><built-in></Name><Status>258</Status></File00008></Files><Workspace><File00000><Position>3407 3085 3905 3329</Position><LineCol>47 0</LineCol></File00000><File00003><Position>3429 3107 4004 3420</Position><LineCol>0 0</LineCol></File00003></Workspace><Events><Breakpoints><File00000></File00000><File00001></File00001><File00002></File00002><File00003><B0><Line>325</Line><Value>}</Value><Enabeled>TRUE</Enabeled></B0></File00003><File00004></File00004><File00005></File00005><File00006></File00006><File00007></File00007><File00008></File00008></Breakpoints><Tracepoints><File00000></File00000><File00001></File00001><File00002></File00002><File00003></File00003><File00004></File00004><File00005></File00005><File00006></File00006><File00007></File00007><File00008></File00008></Tracepoints><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio> |
/programy/C/avr/LX200/lx200.kontrollerlab |
---|
0,0 → 1,70 |
<!DOCTYPE KontrollerLab> |
<PROJECT VERSION="0.8.0-beta1" > |
<FILES> |
<FILE SHOWN="FALSE" NAME="combine.c" /> |
<FILE SHOWN="FALSE" NAME="combine.h" /> |
<FILE SHOWN="FALSE" NAME="driver.c" /> |
<FILE SHOWN="FALSE" NAME="driver.h" /> |
<FILE SHOWN="FALSE" NAME="eq6.c" /> |
<FILE SHOWN="FALSE" NAME="eq6.h" /> |
<FILE SHOWN="FALSE" NAME="paddle.c" /> |
<FILE SHOWN="FALSE" NAME="paddle.h" /> |
<FILE SHOWN="FALSE" NAME="pguide.c" /> |
<FILE SHOWN="FALSE" NAME="pguide.h" /> |
<FILE SHOWN="FALSE" NAME="serial.c" /> |
<FILE SHOWN="FALSE" NAME="serial.h" /> |
<FILE SHOWN="FALSE" NAME="sr.c" /> |
<FILE SHOWN="FALSE" NAME="sr.h" /> |
<FILE VIEWS="0,0,1024,445,5," SHOWN="TRUE" NAME="stepper.c" /> |
<FILE SHOWN="FALSE" NAME="stepper.h" /> |
</FILES> |
<SETTINGS> |
<ASSEMBLER_COMMAND VALUE="avr-gcc" /> |
<BUILD_SYSTEM VALUE="BUILT_IN_BUILD" /> |
<CLOCK VALUE="8e+06" /> |
<COMPILER_CALL_PROLOGUES VALUE="FALSE" /> |
<COMPILER_COMMAND VALUE="avr-gcc" /> |
<COMPILER_F_CPU VALUE="FALSE" /> |
<COMPILER_GDEBUG VALUE="FALSE" /> |
<COMPILER_OPT_LEVEL VALUE="s" /> |
<COMPILER_STRICT_PROTOTYPES VALUE="TRUE" /> |
<COMPILER_WALL VALUE="TRUE" /> |
<CPU VALUE="ATMega162" /> |
<HEX_FILE VALUE="project.hex" /> |
<LINKER_COMMAND VALUE="avr-gcc" /> |
<LINKER_FLAGS VALUE="" /> |
<MAKE_CLEAN_TARGET VALUE="clean" /> |
<MAKE_COMMAND VALUE="make" /> |
<MAKE_DEFAULT_TARGET VALUE="all" /> |
<MAP_FILE VALUE="project.map" /> |
<OBJCOPY_COMMAND VALUE="avr-objcopy" /> |
</SETTINGS> |
<DEBUGGER_SETTINGS/> |
<PROGRAMMERCONFIG> |
<AVRDUDE_CONNECTION_PORT VALUE="/dev/parport0" /> |
<AVRDUDE_COUNT_ERASE VALUE="FALSE" /> |
<AVRDUDE_DISABLE_AUTO_ERASE VALUE="FALSE" /> |
<AVRDUDE_OVERRIDE_INVALID_SIGNATURE VALUE="FALSE" /> |
<AVRDUDE_PROGRAMMER_TYPE VALUE="dapa" /> |
<AVRDUDE_TEST_MODE VALUE="FALSE" /> |
<PROGRAMMER_COMMAND VALUE="avrdude" /> |
<PROGRAMMER_NAME VALUE="AVRDUDE" /> |
<UISP_PARALLEL_AT89S VALUE="FALSE" /> |
<UISP_PARALLEL_DISABLE_RETRIES VALUE="FALSE" /> |
<UISP_PARALLEL_EEPROM_MAX_WRITE_DELAY VALUE="2777" /> |
<UISP_PARALLEL_FLASH_MAX_WRITE_DELAY VALUE="2777" /> |
<UISP_PARALLEL_NO_DATA_POLLING VALUE="FALSE" /> |
<UISP_PARALLEL_PORT VALUE="" /> |
<UISP_PARALLEL_RESET_HIGH_TIME VALUE="0" /> |
<UISP_PARALLEL_SCK_HIGH_LOW_TIME VALUE="0" /> |
<UISP_PARALLEL_VOLTAGE VALUE="0" /> |
<UISP_PROGRAMMER_TYPE VALUE="" /> |
<UISP_SERIAL_PORT VALUE="" /> |
<UISP_SERIAL_SPEED VALUE="9600" /> |
<UISP_SPECIFY_PART VALUE="FALSE" /> |
<UISP_STK500_AREF_VOLTAGE VALUE="0" /> |
<UISP_STK500_OSCILLATOR_FREQUENCY VALUE="14.1" /> |
<UISP_STK500_USE_HIGH_VOLTAGE VALUE="FALSE" /> |
<UISP_STK500_VTARGET_VOLTAGE VALUE="0" /> |
</PROGRAMMERCONFIG> |
</PROJECT> |
/programy/C/avr/LX200/paddle.c |
---|
0,0 → 1,246 |
/* |
* Copyright (C) 2004 Darren Hutchinson (dbh@gbdt.com.au) |
* |
* This program is free software; you can redistribute it and/or modify |
* it under the terms of the GNU Library General Public License as published by |
* the Free Software Foundation; either version 2 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 Library General Public |
* License for more details. |
* |
* You should have received a copy of the GNU Library General Public License |
* along with this program; see the file COPYING. If not, write to |
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
* MA 02111-1307, USA. |
* |
* $Id: paddle.c,v 1.4 2004/03/03 07:37:11 dbh Exp $ |
*/ |
/* This file handles the interface to the EQ-6/Atlas hand paddle. |
* |
* This paddle generates a continuous serial stream containing information |
* about the state of the paddle. Unlike many simple paddles the EQ-6 has a |
* small microprocessor to handle the various functions (debouncing, switch |
* refersal, etc) |
* |
* See the file eq6-serial.txt for further information on the prototcol |
* used by the hand paddle. |
*/ |
#include <avr/io.h> |
#include <avr/interrupt.h> |
#include <inttypes.h> |
#include "paddle.h" |
#include "eq6.h" |
#include "combine.h" |
uint8_t paddleGuideRate = SPEED_1_X; |
/* paddleInit() initializes the serial port used for the EQ6/Atlas |
* hand paddle. The communication with this port is only in one |
* direction (from paddle to mount). |
* |
* Passed: |
* Nothing |
* |
* Returns: |
* Nothing. |
*/ |
void |
paddleInit(void) |
{ |
// The handpaddle is connected to UART port #0 (pin 10) |
// Set serial rate |
UBRR0H = (CLK_RATE / PADDLE_RATE / 16 - 1) >> 8; |
UBRR0L = (CLK_RATE / PADDLE_RATE / 16 - 1) & 0xff; |
/* Setup registers |
* 9 bits, RX enable |
*/ |
UCSR0B = 0; // Disable all interrupts |
UCSR0C = _BV(URSEL0) | _BV(UCSZ01) | _BV(UCSZ00); |
UCSR0B = _BV(RXCIE0) | _BV(UCSZ02) | _BV(RXEN0); |
} |
/* paddleInt() is called whenever a character is received on USART0. |
* These characters are send by the hand paddle |
* |
* Passed: |
* Nothing |
* |
* Returns: |
* Nothing |
* |
* Notes: |
* This function inplemented a state machine to properly |
* synchronize with the incoming character stream. |
* |
* Interrupts are disabled during processing |
*/ |
SIGNAL(SIG_USART0_RECV) |
{ |
uint8_t lowerByte; |
uint8_t b8; |
static void *pLabel = &&wait_for_sync; |
static uint8_t raDir = 0; |
static uint8_t raSpeed = 0; |
static uint8_t decDir = 0; |
static uint8_t oldRaDir = (uint8_t)-1; |
static uint8_t oldRaSpeed = (uint8_t)-1; |
static uint8_t oldDecDir = (uint8_t)-1; |
static uint8_t oldDecSpeed = (uint8_t)-1; |
/* Read the nine bits of transferred data. We don't do this |
* during initialization as the order is important! |
*/ |
b8 = UCSR0B & _BV(RXB80); |
lowerByte = UDR0; |
/* Jump to the code that handles the current reception system. Note that |
* this feature is GCC specific. |
*/ |
goto *pLabel; |
/* Wait for the RA sync byte |
*/ |
wait_for_sync: |
if ((b8 == 0) && (lowerByte == RA_SYNC)) |
pLabel = &&get_ra_direction; |
return; |
/* Get the RA direction - this will have b8 == 0 |
*/ |
get_ra_direction: |
if (b8 == 0) |
{ |
raDir = lowerByte & _BV(RA_DIR_BIT); |
pLabel = &&get_ra_speed; |
} |
else |
pLabel = &&wait_for_sync; |
return; |
/* Get the RA speed - this will have b8 == 0 |
*/ |
get_ra_speed: |
if (b8 == 0) |
{ |
raSpeed = lowerByte & RA_SPEED_MASK; |
pLabel = &&get_dec_sync; |
} |
else |
pLabel = &&wait_for_sync; |
return; |
/* Get the mystery fourth byte |
*/ |
get_dec_sync: |
if (b8 != 0) |
{ |
pLabel = &&get_dec_direction; |
} |
else |
pLabel = &&wait_for_sync; |
return; |
/* Get the DEC direction - this will have b8 != 0 |
*/ |
get_dec_direction: |
if (b8 != 0) |
{ |
decDir = lowerByte & _BV(DEC_DIR_BIT); |
pLabel = &&get_dec_speed; |
} |
else |
pLabel = &&wait_for_sync; |
return; |
/* Get the RA speed - this will have b8 == 0 |
*/ |
get_dec_speed: |
// We've got all the words - the next state will always be wait for sync |
pLabel = &&wait_for_sync; |
lowerByte &= DEC_SPEED_MASK; |
/* If the parity is correct and any of the bytes are different then |
* process them |
*/ |
if ( b8 != 0 |
&& ( (oldRaDir != raDir) |
|| (oldRaSpeed != raSpeed) |
|| (oldDecDir != decDir) |
|| (oldDecSpeed != lowerByte))) |
{ |
/* Update "old" indications */ |
oldRaDir = raDir; |
oldRaSpeed = raSpeed; |
oldDecDir = decDir; |
oldDecSpeed = lowerByte; |
/* Process the data from the paddle |
* - if the RA speed is one then setup the siderial speed |
* - convert the RA speed/direction into a device independent form |
* - convert the DEC speed/direction into a device independent form |
*/ |
if (raSpeed == RA_SPEED_0) |
{ |
rateInput.paddleRaRate = -paddleGuideRate; |
/* This is a little trick because the "direction" bit doesn't |
* work then the speed is zero. Do a pre-invert if the |
* siderial rate is for the northern hemisphere |
*/ |
if (rateInput.siderialRate == SPEED_SIDERIAL) |
rateInput.paddleRaRate = -rateInput.paddleRaRate; |
} |
else if (raSpeed == RA_SPEED_1) |
{ |
rateInput.paddleRaRate = SPEED_0_X; |
rateInput.siderialRate = raDir ? SPEED_SIDERIAL : -SPEED_SIDERIAL; |
} |
else if (raSpeed == RA_SPEED_2) |
rateInput.paddleRaRate = paddleGuideRate; |
else if (raSpeed == RA_SPEED_8) |
rateInput.paddleRaRate = SPEED_8_X; |
else if (raSpeed == RA_SPEED_16) |
rateInput.paddleRaRate = SPEED_16_X; |
#if 0 |
/* The direction of the RA keys is reversed when operating in |
* the southern hemisphere, so modify them back |
*/ |
if ((raDir == 0) ^ (rateInput.siderialRate == SPEED_SIDERIAL)) |
rateInput.paddleRaRate = -rateInput.paddleRaRate; |
#else |
/* Use the keys as returned by the paddle. These are reversed when |
* operating in the southern hemisphere. This ensures that the |
* "right" key always increases the RA angle |
*/ |
if (raDir == 0) |
rateInput.paddleRaRate = -rateInput.paddleRaRate; |
#endif |
if (lowerByte == DEC_SPEED_0) |
rateInput.paddleDecRate = SPEED_0_X; |
else if (lowerByte == DEC_SPEED_2) |
rateInput.paddleDecRate = paddleGuideRate; |
else if (lowerByte == DEC_SPEED_8) |
rateInput.paddleDecRate = SPEED_8_X; |
else if (lowerByte == DEC_SPEED_16) |
rateInput.paddleDecRate = SPEED_16_X; |
if (decDir != 0) |
rateInput.paddleDecRate = -rateInput.paddleDecRate; |
/* Ok, all parsed. Force an update of the combined speed |
*/ |
updateMountSpeed(); |
} |
} |
/programy/C/avr/LX200/paddle.h |
---|
0,0 → 1,109 |
/* |
* Copyright (C) 2004 Darren Hutchinson (dbh@gbdt.com.au) |
* |
* This program is free software; you can redistribute it and/or modify |
* it under the terms of the GNU Library General Public License as published by |
* the Free Software Foundation; either version 2 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 Library General Public |
* License for more details. |
* |
* You should have received a copy of the GNU Library General Public License |
* along with this software; see the file COPYING. If not, write to |
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
* MA 02111-1307, USA. |
* |
* $Id: paddle.h,v 1.2 2004/03/03 07:37:11 dbh Exp $ |
*/ |
#ifndef _PADDLE_H_ |
#define _PADDLE_H_ |
/* This file describes the data in the EQ6/Atlas hand paddle serial stream. |
* |
* This is a one-directional serial stream at 935 bits/sec. This is a fairly |
* wierd speed that seems to be used to give an overall serial stream time |
* of 76.2ms [basically the full-step time for siderial rate, which is |
* half of the actual half-step rate]. |
* |
* See the file eq6-serial.txt for further details. |
*/ |
#include <inttypes.h> |
/* Define the serial rate used by the paddle |
*/ |
#define PADDLE_RATE 935L /* Bit rate for the paddle */ |
/* The serial stream is a set of 6, 9 bit words. The first three words |
* are for RA control, the second three words are for DEC control. |
* |
* Note that the ordering here is arbitary (through reverse engineering), but |
* seems sensible. |
* |
* Word1: RA sync (B8 = 0) |
* Word2: RA direction (B8 = 0) |
* Word3: RA speed (B8 = 0) |
* Word4: ??? (Assumed to be DEC sync) (B8 = 1) |
* Word5: DEC direction (B8 = 1) |
* Word6: DEC speed (B8 = 1) |
* |
*/ |
/* Word #1 - RA SYNC |
*/ |
#define RA_SYNC 0x7e |
/* Word #2 - RA DIRECTION |
*/ |
#define RA_DIR_BIT 0 // RA Direction bit |
#define RA_DIR_LEFT 0 |
#define RA_DIR_RIGHT (1 << RA_DIR_BIT) |
/* Note: Will be 0 for southern hemispere siderial, 1 for northern siderial |
*/ |
/* Word #3 - RA SPEED |
*/ |
#define RA_SPEED_MASK 0x0f // Speed bits |
#define RA_SPEED_0 0x00 // x2, opposite direction to siderial |
#define RA_SPEED_1 0x01 // No RA button pressed |
#define RA_SPEED_2 0x02 // x2, same direction as siderial |
#define RA_SPEED_8 0x04 // siderial x8 |
#define RA_SPEED_16 0x08 // siderial x16 |
/* Word #4 - ???. This word always seems to be zero. Assume it's a sync word |
* unless we hear something different |
*/ |
#define DEC_SYNC 0x00 |
/* Word #5 - DEC DIRECTION |
*/ |
#define DEC_DIR_BIT 0 // DEC Direction bit |
#define DEC_DIR_UP 0 |
#define DEC_DIR_DOWN (1 << DEC_DIR_BIT) |
/* Word #6 - DEC SPEED |
*/ |
#define DEC_SPEED_MASK 0x0f // Speed bits |
#define DEC_SPEED_0 0x00 // No buttons pressed |
#define DEC_SPEED_2 0x02 // siderial x2 |
#define DEC_SPEED_8 0x04 // siderial x8 |
#define DEC_SPEED_16 0x08 // siderial x16 |
/* Prototypes for paddle.c functions that can be called from outside |
*/ |
extern void paddleInit(void); |
extern uint8_t paddleDecRate; |
extern uint8_t paddleRaRate; |
extern uint8_t siderialRate; |
/* Configuration variable - sets whether the 2X rate for the paddle should |
* be considered as 1X or 0.3X |
*/ |
extern uint8_t paddleGuideRate; |
#endif /* _PADDLE_H_ */ |
/programy/C/avr/LX200/pguide.c |
---|
0,0 → 1,125 |
/* |
* Copyright (C) 2004 Darren Hutchinson (dbh@gbdt.com.au) |
* |
* This program is free software; you can redistribute it and/or modify |
* it under the terms of the GNU Library General Public License as published by |
* the Free Software Foundation; either version 2 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 Library General Public |
* License for more details. |
* |
* You should have received a copy of the GNU Library General Public License |
* along with this software; see the file COPYING. If not, write to |
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
* MA 02111-1307, USA. |
* |
* $Id: pguide.c,v 1.1.1.1 2004/02/22 08:12:42 dbh Exp $ |
*/ |
/* This file contains the code that takes inputs from a parallel output |
* guider (such as the SBIG ST-4) and uses them to make guiding |
* adjustments. |
*/ |
#include <avr/io.h> |
#include <avr/interrupt.h> |
#include <inttypes.h> |
#include "eq6.h" |
#include "combine.h" |
#include "pguide.h" |
#define GUIDE_BITS (_BV(G_UP) | _BV(G_DN) | _BV(G_RT) | _BV(G_LT)) |
/* This module polls the input bits from the guider, applies some |
* crude debouncing, and then applies the requested speed adjustment. |
* |
* This code assumes that the inputs are active low (i.e. they are connected |
* to a relay or optocoupler connecting the "active" input to ground). |
* |
* The polling rate is generated by a 8-bit timer with /256 |
*/ |
/* pguideInit() initializes the timer used to poll the parallel guiding |
* input bits and sets those bit as inputs. |
* |
* Passed: |
* Nothing |
* |
* Returns: |
* Nothing |
* |
*/ |
void |
pguideInit(void) |
{ |
/* Set guide bits as inputs with pullups */ |
GUIDE_DDR &= ~GUIDE_BITS; |
GUIDE_PORT |= GUIDE_BITS; |
/* Setup timer 2 to generate interrupts for PWM to the selected |
* rate (in CTC mode) |
*/ |
OCR2 = (CLK_RATE / GUIDE_RATE / 1024); |
TCCR2 = _BV(WGM21) | _BV(CS22) | _BV(CS20); |
/* Enable interrupt generation from timer 2 */ |
TIMSK |= _BV(OCIE2); |
} |
/* pguideInt() is called whenever a timer 2 overflow interrupt occurs |
* |
* Passed: |
* Nothing |
* |
* Returns: |
* Nothing |
*/ |
SIGNAL(SIG_OUTPUT_COMPARE2) |
{ |
uint8_t guideBits; |
static uint8_t lastState = GUIDE_BITS; |
static uint8_t lastUsed = GUIDE_BITS; |
/* Get the guide bits */ |
guideBits = GUIDE_PIN & GUIDE_BITS; |
/* See if they're the same as the last set. If they are then we |
* assume that the guide bits are stable |
*/ |
if (guideBits != lastState) |
{ |
/* Bits are changing */ |
lastState = guideBits; |
} |
else if (lastUsed != lastState) |
{ |
/* They're stable and different from the last used set, so |
* update the guiding information |
*/ |
if ((guideBits & _BV(G_UP)) == 0) |
rateInput.guideDecRate = SPEED_0_33_X; |
else if ((guideBits & _BV(G_DN)) == 0) |
rateInput.guideDecRate = -SPEED_0_33_X; |
else |
rateInput.guideDecRate = SPEED_0_X; |
if ((guideBits & _BV(G_RT)) == 0) |
rateInput.guideRaRate = SPEED_0_33_X; |
else if ((guideBits & _BV(G_LT)) == 0) |
rateInput.guideRaRate = -SPEED_0_33_X; |
else |
rateInput.guideRaRate = SPEED_0_X; |
/* Update the overall rate */ |
updateMountSpeed(); |
/* Update the last used state ('cuz we used it) */ |
lastUsed = lastState; |
} |
} |
/programy/C/avr/LX200/pguide.h |
---|
0,0 → 1,49 |
/* |
* Copyright (C) 2004 Darren Hutchinson (dbh@gbdt.com.au) |
* |
* This program is free software; you can redistribute it and/or modify |
* it under the terms of the GNU Library General Public License as published by |
* the Free Software Foundation; either version 2 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 Library General Public |
* License for more details. |
* |
* You should have received a copy of the GNU Library General Public License |
* along with this software; see the file COPYING. If not, write to |
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
* MA 02111-1307, USA. |
* |
* $Id: pguide.h,v 1.1.1.1 2004/02/22 08:12:42 dbh Exp $ |
*/ |
#ifndef _PGUIDE_H_ |
#define _PGUIDE_H_ |
/* This file has the definitions used to poll the parallel guiding input |
* pins. |
* |
* These pins are pulled high by the internal CPU pullups and should be |
* driven low by the guiding input |
*/ |
#define GUIDE_PORT PORTD |
#define GUIDE_PIN PIND |
#define GUIDE_DDR DDRD |
#define G_UP PD4 |
#define G_DN PD5 |
#define G_RT PD6 |
#define G_LT PD7 |
/* Define the polling rate (in HZ). For the current software the |
* range is 30Hz to 7800Hz @ 8 MHz, and 60Hz to 15KHz @ 16MHz. |
* |
* A good value would be about 200 Hz (ie. 5ms debounce time) |
*/ |
#define GUIDE_RATE 200 |
/* Prototypes */ |
void pguideInit(void); |
#endif /* _PGUIDE_H_ */ |
/programy/C/avr/LX200/project.hex |
---|
0,0 → 1,269 |
:100000000C9438000C9455000C9455000C94550039 |
:100010000C9455000C9455000C9455000C9455000C |
:100020000C9455000C9455000C9441020C9455000E |
:100030000C9455000C944B070C9455000C945500EF |
:100040000C94AA000C9455000C9455000C94680173 |
:100050000C9486020C9455000C9455000C94550099 |
:100060000C9455000C9455000C9455000C945500BC |
:1000700011241FBECFEFD4E0DEBFCDBF11E0A0E062 |
:10008000B1E0E8E2F0E102C005900D92A039B107BD |
:10009000D9F711E0A0E9B1E001C01D92A53FB10779 |
:1000A000E1F70E9438010C9412080C940000809132 |
:1000B0009201882331F480919401882311F4809176 |
:1000C0009601809398010E94FC05909191019923DB |
:1000D00031F490919301992311F4909195018091BD |
:1000E0009901882359F494304CF49D3F3CF0892FBA |
:1000F0008E5F853030F480919001980F9093970136 |
:1001000014C0933031F480919001833061F486E023 |
:1001100007C09D3F41F4809190018D3F21F48AEF0B |
:100120008093970102C01092970180919701819569 |
:100130000E94F10508951BBA8FEF8ABB85BB84BB73 |
:10014000C498BC9A84E181BF8AE083BF89B781608B |
:1001500089BF08951F920F920FB60F9211242F930B |
:100160003F934F935F936F937F938F939F93AF933F |
:10017000BF93EF93FF9380910D018F5F80930D01EB |
:10018000843079F510920D01A091ED01EA2FE295EE |
:10019000EF70F0E0E050FF4F808180939D01B0E070 |
:1001A000AF70B070A050BF4F8C9180939C01A09114 |
:1001B000F101EA2FE295EF70F0E0E050FF4F80810F |
:1001C00080939B01B0E0AF70B070A050BF4F8C9196 |
:1001D00080939A018091EE01882311F0C49801C0A8 |
:1001E000C49A50919A01E52FE37040919B01742FBE |
:1001F00073702E2F220F220F272B30919C01632F1B |
:100200006370220F220F262B90919D01220F220F47 |
:10021000892F8370282B9695969590939D01880F32 |
:10022000880F862B3695369530939C01880F880F62 |
:10023000872B4695469540939B01880F880F8E2B00 |
:100240005695569550939A0125BB80958BBBFF918F |
:10025000EF91BF91AF919F918F917F916F915F913E |
:100260004F913F912F910F900FBE0F901F901895B7 |
:100270008FEF8ABB84BB1BBA15BA0E945E010E9435 |
:10028000F9040E949B000E947D020E9433020E949A |
:10029000A204809118010E949C0580E00E94C00584 |
:1002A0008091B3010E94C00578948091B9018823A0 |
:1002B000E1F31092B9010E944704F7CF82E080BDBC |
:1002C00085E189B91AB886E880BD84E98AB90895BC |
:1002D0001F920F920FB60F9211240F931F932F931B |
:1002E0003F934F938F939F93EF93FF931AB11270A5 |
:1002F0000CB1E0911301F09114010994112309F05C |
:10030000A4C00E3709F0A1C087E891E007C011230F |
:10031000F9F401700093A00183E991E09093140136 |
:100320008093130192C0112399F40F7000939F01E1 |
:100330008BE991E0F3CF112359F080EA91E0EECF01 |
:10034000112331F0017000939E018BEA91E0E6CF1A |
:100350008EE791E0E3CF8EE791E0909314018093D4 |
:100360001301112309F471C0202F2F703091A001C7 |
:1003700080911201831789F49091110180919F015E |
:10038000981759F49091100180919E01981729F4C3 |
:1003900080910F01821709F458C0309312018091A7 |
:1003A0009F018093110140919E0140931001209381 |
:1003B0000F01882369F490910E01892F8195809314 |
:1003C0009101809190018330E9F4909391011AC0DA |
:1003D000813051F410929101332311F48DEF01C05B |
:1003E00083E0809390010EC0823019F480910E0159 |
:1003F00007C0843011F488E003C0883019F489E024 |
:1004000080939101332329F4809191018195809308 |
:100410009101222319F4109292010EC0223019F496 |
:1004200080910E0107C0243011F488E003C0283009 |
:1004300019F489E080939201442329F0809192017C |
:100440008195809392010E945700FF91EF919F91B7 |
:100450008F914F913F912F911F910F910F900FBE50 |
:100460000F901F90189581B38F7081BB82B3806FFE |
:1004700082BB87E282BD8DE087BD89B7806189BF7D |
:1004800008951F920F920FB60F9211242F938F93FE |
:100490009F9390B3907F80911601981719F09093D5 |
:1004A000160123C0809115018917F9F0292F94FDB9 |
:1004B00002C081E003C095FD04C08FEF80939601D8 |
:1004C00002C01092960126FD02C081E003C097FD94 |
:1004D00004C08FEF8093950102C0109295010E9495 |
:1004E000570080911601809315019F918F912F9154 |
:1004F0000F900FBE0F901F9018951CBE83E380B91C |
:1005000011B886E88CBF88E981B908951F920F92CF |
:100510000FB60F9211242F933F934F938F939F9376 |
:10052000EF93FF9343B18091A101882309F0EEC0BE |
:10053000443409F478C0453410F54A3368F4403344 |
:1005400008F044C0433209F459C04D3209F45DC08B |
:10055000463009F064C1D2C04E3309F45DC04F3358 |
:1005600038F44A3309F4CCC04C3309F058C151C0B7 |
:10057000423409F46AC0433409F051C10FC1443513 |
:1005800009F4A5C0453580F44C3409F452C04D340B |
:1005900020F4473409F043C190C04D3409F477C0CA |
:1005A000423509F03CC142C0473609F49DC0483687 |
:1005B00030F44535A9F1423609F031C13DC04D3620 |
:1005C00009F44FC0443709F02AC193C08091B001AB |
:1005D0009091B1019C01220F331F220F331F220F74 |
:1005E000331F880F991F280F391F240F311D2053E7 |
:1005F00030403093B1012093B00136C11092B10167 |
:100600001092B0011092AF012FC181E08093AF0131 |
:100610002BC11092B20128C181E08093B20124C1A4 |
:100620008091B201AAC08091B201ABC08091B201A9 |
:10063000ACC08091B201ADC08091B0019091B10188 |
:100640009093CF018093CE0108C08091B00190912A |
:10065000B1019093E0018093DF0181E08093B901C3 |
:1006600003C11092D0011092D1018091B0019091FC |
:10067000B101892B91F38091AF01882321F081E0B2 |
:100680008093D101EACF81E08093D001E6CF109230 |
:10069000E1011092E2018091B0019091B101892BAA |
:1006A000E1F28091AF01882321F081E08093E201A3 |
:1006B000D4CF81E08093E101D0CF8091B201882333 |
:1006C00011F483E001C081E080930E01C6CF8091D8 |
:1006D000AF01882321F08091B001819502C0809103 |
:1006E000B0010E94C005B9CF8091B001809318017C |
:1006F000B4CF8091B2018093B401B6C080E590C0C0 |
:1007000081E08093A1011092A201AEC08091A2016C |
:10071000433281F0E82FF0E0ED55FE4F40838F5FCC |
:100720008093A201883009F09FC08FE383B91092B3 |
:10073000A1019AC01092A101882309F495C090915B |
:10074000A301913549F1923509F44BC09D3409F06C |
:1007500066C0823009F088C08091A4018E3661F0B5 |
:100760008F3624F4853609F057C00EC0833741F028 |
:10077000873709F051C00CC081E08093AE0182C080 |
:1007800081E08093AD017EC081E08093AB017AC0AF |
:1007900081E08093AC0176C0813039F41092AB01D6 |
:1007A0001092AC011092AD0110C08230C1F5809161 |
:1007B000A4018E3651F08F361CF4853669F50BC0D6 |
:1007C000833731F0873741F509C01092AE015AC026 |
:1007D0001092AD0157C01092AB0154C01092AC0101 |
:1007E00051C0823009F040C08091A401873451F09B |
:1007F00088341CF4833481F407C08D3439F0833598 |
:1008000059F408C081E003C083E001C088E0809310 |
:10081000170138C089E0FBCF8FE383B933C08FE382 |
:1008200083B922C08091170107C08091AD01882350 |
:1008300031F08091170181958093940102C010924C |
:1008400094018091AB01882319F08091170107C0B2 |
:100850008091AC01882331F08091170181958093BC |
:10086000930102C0109293010E945700FF91EF91F3 |
:100870009F918F914F913F912F910F900FBE0F90AD |
:100880001F9018958091AE01882361F6CECFDF933B |
:10089000CF93CDB7DEB72C970FB6F894DEBF0FBE5F |
:1008A000CDBFF8948091D00189838091D1018A8352 |
:1008B0008091CE019091CF019C838B838091E10147 |
:1008C0008D838091E2018E838091DF019091E00120 |
:1008D00098878F8380910E0189878091B3018A87E1 |
:1008E000809118018B87789490E0FE0131969E01EB |
:1008F000245F3F4F8191980FE217F307D9F79C8748 |
:10090000FE0131964E2F54E096E09E01245F3F4F4A |
:100910008E2F841BE199FECF1FBA8EBB80818DBBC9 |
:10092000F8945CBB9CBB7894E217F30711F0319606 |
:10093000EFCF2C960FB6F894DEBF0FBECDBFCF9190 |
:10094000DF910895DF93CF93CDB7DEB72C970FB625 |
:10095000F894DEBF0FBECDBFFE0131964E2F91E061 |
:100960009E01245F3F4F8E2F841BE199FECF1FBA5B |
:100970008EBB9CBB8DB38083E217F30711F03196D9 |
:10098000F2CF90E0FE0131969E01245F3F4F8191AE |
:10099000980FE217F307D9F78C85891709F5898134 |
:1009A0008093D0018A818093D1018B819C81909327 |
:1009B000CF018093CE018D818093E1018E81809360 |
:1009C000E2018F8198859093E0018093DF01898512 |
:1009D00080930E018A858093B3018B8580931801E3 |
:1009E0002C960FB6F894DEBF0FBECDBFCF91DF912E |
:1009F00008951092ED011092EE018DEE91E090932A |
:100A0000CD018093CC011092F10181EF91E09093A0 |
:100A1000DE018093DD0189B7806489BF08956F92FC |
:100A20007F928F929F92AF92BF92CF92DF92EF927E |
:100A3000FF920F931F93CF93DF93EC01E62ECA0131 |
:100A4000B9010E94B6075B016C01FF2400E010E0D1 |
:100A5000C801B7010E94B6077B018C019595879567 |
:100A6000779567956A0D7B1D8C1D9D1DA8019701CB |
:100A70000E94D507922E832E742E652E622F732F1F |
:100A8000842F952FA80197010E94B6079B01AC0106 |
:100A90002A193B094C095D09C601B5010E94D50719 |
:100AA00079018A01292D382D472D562DC901DA01EA |
:100AB000883E23E0920720E0A20720E0B20724F45A |
:100AC00088EE93E0A0E0B0E09983888317FD11C021 |
:100AD0001C8280E0E81680E0F80681E0080780E0EC |
:100AE00018071CF020E030E001C097013B832A8307 |
:100AF00014C081E08C8321E0E21620E0F2062FEFA3 |
:100B000002072FEF12071CF480E090E004C0882752 |
:100B100099278E199F099B838A83DF91CF911F911B |
:100B20000F91FF90EF90DF90CF90BF90AF909F908C |
:100B30008F907F906F900895FF920F931F93F82EE0 |
:100B40000AEB11E024E930E541E050E0682FC801EC |
:100B50000E940F0520E831E541E050E06F2DC8010B |
:100B600005960E940F052DED3CE541E050E06F2D0C |
:100B7000C8010A960E940F051F910F91FF900895DA |
:100B80008093B30187FF04C081E0809399010895A9 |
:100B9000833030F510929901992787FD9095FC01DB |
:100BA000EE0FFF1FEE0FFF1FE80FF91FE654FE4F79 |
:100BB000808191819BBD8ABD1DBC1CBC1FBC89E08E |
:100BC0008EBD1092F0011092EF018281938190937B |
:100BD000F4018093F30184818093C9011092CA01CA |
:100BE0000895982F8091DA01882319F481E0809389 |
:100BF000DA019093CB010895982F8091EB0188231F |
:100C000019F481E08093EB019093DC010895E62FC5 |
:100C1000F0E0EE0FFF1FE758FE4F2081FC01278711 |
:100C20000895CF93DF93EC0189859A85892B21F470 |
:100C300087E296E09A8789878D81882329F08E81C3 |
:100C4000882311F01E821D82E985FA850994888126 |
:100C5000882381F48E81882309F062C08091790114 |
:100C60008F87E981FA811082E981FA81118287E216 |
:100C700096E015C018160CF490C052C088818823E5 |
:100C800089F48D81882381F4809179018F87E981AE |
:100C9000FA811082E981FA8111828EE396E09A87C7 |
:100CA0008987F6C087FDB2C08B819C81892B79F240 |
:100CB00020918E011C861B8680918D018F8721FDDE |
:100CC00003C089E591E009C08091B401882319F43B |
:100CD00089E191E002C089E391E09E878D87E981F7 |
:100CE000FA812170218387E796E09A878987A98115 |
:100CF000BA818F81ED85FE85E80FF11D80818C938F |
:100D00008F818F5F8F718F838B859C8501969C87E8 |
:100D10008B872B813C812817390708F498CFB8C0FE |
:100D20008B819C81892B09F4A9CF20918E011C868F |
:100D30001B8680918D018F8721FD03C089E591E09D |
:100D400009C08091B401882319F489E191E002C0BF |
:100D500089E391E09E878D87E981FA812170218363 |
:100D600084EB96E09A878987A981BA818F81ED8586 |
:100D7000FE85E80FF11D80818C938F8181508F71EA |
:100D80008F838B859C8501969C878B872B813C81EB |
:100D90002817390708F472CF7BC0E82FFF27E7FD3B |
:100DA000F095EE0FFF1FE758FE4F2181E82FF0E08E |
:100DB000EE0FFF1FE758FE4F80818F8721FD03C094 |
:100DC00089E591E009C08091B401882319F489E193 |
:100DD00091E002C089E391E09E878D87E981FA81E5 |
:100DE0002170218385EF96E03CC098858881981713 |
:100DF00009F02DCFA981BA818F81ED85FE85E80F9D |
:100E0000F11D80818C938F818F5F40C0E82FFF2779 |
:100E1000E7FDF095EE0FFF1FF095E195FF4FE758C6 |
:100E2000FE4F21818195E82FF0E0EE0FFF1FE7587C |
:100E3000FE4F80818F8721FD03C089E591E009C0C5 |
:100E40008091B401882319F489E191E002C089E31B |
:100E500091E09E878D87E981FA812170218386E365 |
:100E600097E09A8789878881888712C098858881CA |
:100E7000981709F003CFA981BA818F81ED85FE858E |
:100E8000E80FF11D80818C938F8181508F718F834A |
:100E9000DF91CF9108951F920F920FB60F921124F8 |
:100EA0002F933F938F939F932091EF013091F00107 |
:100EB0002F5F3F4F3093F0012093EF018091C901E4 |
:100EC0009091CA01892B71F08091F3019091F40106 |
:100ED000009741F02817390728F01092F00110927E |
:100EE000EF013BC09091DA01992369F08091DB0119 |
:100EF0008F5F8093DB01891730F01092DB018BEC60 |
:100F000091E00E9411069091EB01992369F0809184 |
:100F1000EC018F5F8093EC01891730F01092EC01A7 |
:100F20008CED91E00E9411068091C9019091CA0157 |
:100F3000892B99F42091F3013091F40121153105A9 |
:100F400061F08091EF019091F0018217930728F0F2 |
:100F50001092F0011092EF01C5CF9F918F913F91B8 |
:100F60002F910F900FBE0F901F901895629FD00188 |
:100F7000739FF001829FE00DF11D649FE00DF11D54 |
:100F8000929FF00D839FF00D749FF00D659FF00D03 |
:100F90009927729FB00DE11DF91F639FB00DE11DF0 |
:100FA000F91FBD01CF011124089597FB092E0526D5 |
:100FB0000ED057FD04D014D00AD0001C38F4509540 |
:100FC0004095309521953F4F4F4F5F4F0895F6F76D |
:100FD00090958095709561957F4F8F4F9F4F0895A5 |
:100FE000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F2D |
:100FF000EE1FFF1FA217B307E407F50720F0A21B9F |
:10100000B30BE40BF50B661F771F881F991F1A940B |
:1010100069F760957095809590959B01AC01BD0135 |
:08102000CF010895F894FFCF01 |
:1010280000011115550000000002222AAA0303FF3F |
:10103800FFFFFF7E01F0F00184041424344443428E |
:101048004140494A4B4C3C2C1C0C9CACBCCCCBCAF8 |
:10105800C9C0C1C2C3C4B4A4944444444440404039 |
:10106800404C4C4C4C0C0C0C0CCCCCCCCCC0C0C068 |
:10107800C0C4C4C4C40404040444444444444444AC |
:10108800444C4C4C4C4C4C4C4CCCCCCCCCCCCCCC20 |
:10109800CCC4C4C4C4C4C4C4C4010290024802304D |
:1010A8000224021C0218030C0306030301030000B8 |
:00000001FF |
/programy/C/avr/LX200/project.map |
---|
0,0 → 1,460 |
Archive member included because of file (symbol) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_mulsi3.o) |
stepper.o (__mulsi3) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_divmodsi4.o) |
stepper.o (__divmodsi4) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_exit.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/crtm162.o (exit) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_copy_data.o) |
combine.o (__do_copy_data) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_clear_bss.o) |
combine.o (__do_clear_bss) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_udivmodsi4.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_divmodsi4.o) (__udivmodsi4) |
Allocating common symbols |
Common symbol size file |
trackRateTable 0xf stepper.o |
doSave 0x1 sr.o |
doDropInt 0x2 stepper.o |
idleCtr 0x4 eq6.o |
raState 0x11 stepper.o |
decState 0x11 stepper.o |
raExcitation 0x2 stepper.o |
adjCtr 0x2 stepper.o |
decExcitation 0x2 stepper.o |
adjLimit 0x2 stepper.o |
Memory Configuration |
Name Origin Length Attributes |
text 0x00000000 0x00020000 xr |
data 0x00800060 0x0000ffa0 rw !x |
eeprom 0x00810000 0x00010000 rw !x |
fuse 0x00820000 0x00000400 rw !x |
lock 0x00830000 0x00000400 rw !x |
signature 0x00840000 0x00000400 rw !x |
*default* 0x00000000 0xffffffff |
Linker script and memory map |
Address of section .data set to 0x800100 |
LOAD /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/crtm162.o |
LOAD combine.o |
LOAD driver.o |
LOAD eq6.o |
LOAD paddle.o |
LOAD pguide.o |
LOAD serial.o |
LOAD sr.o |
LOAD stepper.o |
LOAD /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a |
LOAD /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a |
LOAD /usr/lib/gcc/avr/4.3.0/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 0x1028 |
*(.vectors) |
.vectors 0x00000000 0x70 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/crtm162.o |
0x00000000 __vectors |
0x00000000 __vector_default |
*(.vectors) |
*(.progmem.gcc*) |
*(.progmem*) |
0x00000070 . = ALIGN (0x2) |
0x00000070 __trampolines_start = . |
*(.trampolines) |
.trampolines 0x00000070 0x0 linker stubs |
*(.trampolines*) |
0x00000070 __trampolines_end = . |
*(.jumptables) |
*(.jumptables*) |
*(.lowtext) |
*(.lowtext*) |
0x00000070 __ctors_start = . |
*(.ctors) |
0x00000070 __ctors_end = . |
0x00000070 __dtors_start = . |
*(.dtors) |
0x00000070 __dtors_end = . |
SORT(*)(.ctors) |
SORT(*)(.dtors) |
*(.init0) |
.init0 0x00000070 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/crtm162.o |
0x00000070 __init |
*(.init0) |
*(.init1) |
*(.init1) |
*(.init2) |
.init2 0x00000070 0xc /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/crtm162.o |
*(.init2) |
*(.init3) |
*(.init3) |
*(.init4) |
.init4 0x0000007c 0x16 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_copy_data.o) |
0x0000007c __do_copy_data |
.init4 0x00000092 0x10 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_clear_bss.o) |
0x00000092 __do_clear_bss |
*(.init4) |
*(.init5) |
*(.init5) |
*(.init6) |
*(.init6) |
*(.init7) |
*(.init7) |
*(.init8) |
*(.init8) |
*(.init9) |
.init9 0x000000a2 0x8 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/crtm162.o |
*(.init9) |
*(.text) |
.text 0x000000aa 0x4 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/crtm162.o |
0x000000aa __vector_22 |
0x000000aa __vector_1 |
0x000000aa __vector_24 |
0x000000aa __vector_12 |
0x000000aa __bad_interrupt |
0x000000aa __vector_6 |
0x000000aa __vector_3 |
0x000000aa __vector_23 |
0x000000aa __vector_25 |
0x000000aa __vector_11 |
0x000000aa __vector_17 |
0x000000aa __vector_7 |
0x000000aa __vector_27 |
0x000000aa __vector_5 |
0x000000aa __vector_4 |
0x000000aa __vector_9 |
0x000000aa __vector_2 |
0x000000aa __vector_21 |
0x000000aa __vector_15 |
0x000000aa __vector_8 |
0x000000aa __vector_26 |
0x000000aa __vector_14 |
0x000000aa __vector_18 |
.text 0x000000ae 0x88 combine.o |
0x000000ae updateMountSpeed |
.text 0x00000136 0x13a driver.o |
0x00000136 driverInit |
0x00000154 __vector_16 |
.text 0x00000270 0x4c eq6.o |
0x00000270 main |
.text 0x000002bc 0x1aa paddle.o |
0x000002bc paddleInit |
0x000002d0 __vector_19 |
.text 0x00000466 0x94 pguide.o |
0x00000466 pguideInit |
0x00000482 __vector_10 |
.text 0x000004fa 0x394 serial.o |
0x000004fa serialInit |
0x0000050c __vector_20 |
.text 0x0000088e 0x164 sr.o |
0x0000088e srSaveState |
0x00000944 srLoadState |
.text 0x000009f2 0x57a stepper.o |
0x00000b38 setupRateTable |
0x00000bf8 setDecSpeed |
0x00000c22 stepperProcess |
0x00000e96 __vector_13 |
0x00000b80 setTrackRate |
0x00000c0e setTickRate |
0x000009f2 stepperInit |
0x00000be2 setRaSpeed |
.text 0x00000f6c 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_mulsi3.o) |
.text 0x00000f6c 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_divmodsi4.o) |
.text 0x00000f6c 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_exit.o) |
.text 0x00000f6c 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_copy_data.o) |
.text 0x00000f6c 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_clear_bss.o) |
.text 0x00000f6c 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_udivmodsi4.o) |
0x00000f6c . = ALIGN (0x2) |
*(.text.*) |
.text.libgcc 0x00000f6c 0x3e /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_mulsi3.o) |
0x00000f6c __mulsi3 |
.text.libgcc 0x00000faa 0x36 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_divmodsi4.o) |
0x00000faa __divmodsi4 |
.text.libgcc 0x00000fe0 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_exit.o) |
.text.libgcc 0x00000fe0 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_copy_data.o) |
.text.libgcc 0x00000fe0 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_clear_bss.o) |
.text.libgcc 0x00000fe0 0x44 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_udivmodsi4.o) |
0x00000fe0 __udivmodsi4 |
0x00001024 . = ALIGN (0x2) |
*(.fini9) |
.fini9 0x00001024 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_exit.o) |
0x00001024 exit |
0x00001024 _exit |
*(.fini9) |
*(.fini8) |
*(.fini8) |
*(.fini7) |
*(.fini7) |
*(.fini6) |
*(.fini6) |
*(.fini5) |
*(.fini5) |
*(.fini4) |
*(.fini4) |
*(.fini3) |
*(.fini3) |
*(.fini2) |
*(.fini2) |
*(.fini1) |
*(.fini1) |
*(.fini0) |
.fini0 0x00001024 0x4 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_exit.o) |
*(.fini0) |
0x00001028 _etext = . |
.data 0x00800100 0x90 load address 0x00001028 |
0x00800100 PROVIDE (__data_start, .) |
*(.data) |
.data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/crtm162.o |
.data 0x00800100 0x0 combine.o |
.data 0x00800100 0xe driver.o |
0x00800100 driveTbl |
.data 0x0080010e 0x0 eq6.o |
.data 0x0080010e 0x7 paddle.o |
0x0080010e paddleGuideRate |
.data 0x00800115 0x2 pguide.o |
.data 0x00800117 0x1 serial.o |
.data 0x00800118 0x0 sr.o |
.data 0x00800118 0x77 stepper.o |
0x00800119 microTable |
0x00800179 rateConvert |
0x00800139 halfTable |
0x00800159 fullTable |
0x00800118 transRatio |
.data 0x0080018f 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_mulsi3.o) |
.data 0x0080018f 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_divmodsi4.o) |
.data 0x0080018f 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_exit.o) |
.data 0x0080018f 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_copy_data.o) |
.data 0x0080018f 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_clear_bss.o) |
.data 0x0080018f 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_udivmodsi4.o) |
*(.data*) |
*(.rodata) |
*(.rodata*) |
*(.gnu.linkonce.d*) |
0x00800190 . = ALIGN (0x2) |
*fill* 0x0080018f 0x1 00 |
0x00800190 _edata = . |
0x00800190 PROVIDE (__data_end, .) |
.bss 0x00800190 0x65 load address 0x000010b8 |
0x00800190 PROVIDE (__bss_start, .) |
*(.bss) |
.bss 0x00800190 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/crtm162.o |
.bss 0x00800190 0xa combine.o |
0x00800197 rateOutput |
0x00800190 rateInput |
0x00800199 noTrack |
.bss 0x0080019a 0x4 driver.o |
.bss 0x0080019e 0x0 eq6.o |
.bss 0x0080019e 0x3 paddle.o |
.bss 0x008001a1 0x0 pguide.o |
.bss 0x008001a1 0x12 serial.o |
.bss 0x008001b3 0x0 sr.o |
.bss 0x008001b3 0x2 stepper.o |
0x008001b4 doHalfStep |
0x008001b3 trackingRate |
.bss 0x008001b5 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_mulsi3.o) |
.bss 0x008001b5 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_divmodsi4.o) |
.bss 0x008001b5 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_exit.o) |
.bss 0x008001b5 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_copy_data.o) |
.bss 0x008001b5 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_clear_bss.o) |
.bss 0x008001b5 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_udivmodsi4.o) |
*(.bss*) |
*(COMMON) |
COMMON 0x008001b5 0x4 eq6.o |
0x008001b5 idleCtr |
COMMON 0x008001b9 0x1 sr.o |
0x008001b9 doSave |
COMMON 0x008001ba 0x3b stepper.o |
0x008001ba trackRateTable |
0x008001c9 doDropInt |
0x008001cb raState |
0x008001dc decState |
0x008001ed raExcitation |
0x008001ef adjCtr |
0x008001f1 decExcitation |
0x008001f3 adjLimit |
0x008001f5 PROVIDE (__bss_end, .) |
0x00001028 __data_load_start = LOADADDR (.data) |
0x000010b8 __data_load_end = (__data_load_start + SIZEOF (.data)) |
.noinit 0x008001f5 0x0 |
0x008001f5 PROVIDE (__noinit_start, .) |
*(.noinit*) |
0x008001f5 PROVIDE (__noinit_end, .) |
0x008001f5 _end = . |
0x008001f5 PROVIDE (__heap_start, .) |
.eeprom 0x00810000 0x0 |
*(.eeprom*) |
0x00810000 __eeprom_end = . |
.fuse |
*(.fuse) |
*(.lfuse) |
*(.hfuse) |
*(.efuse) |
.lock |
*(.lock*) |
.signature |
*(.signature*) |
.stab 0x00000000 0x6b4 |
*(.stab) |
.stab 0x00000000 0x6b4 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/crtm162.o |
.stabstr 0x00000000 0x54 |
*(.stabstr) |
.stabstr 0x00000000 0x54 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/crtm162.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(project.out elf32-avr) |
LOAD linker stubs |
/programy/C/avr/LX200/project.out |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programy/C/avr/LX200/serial.c |
---|
0,0 → 1,416 |
/* |
* Copyright (C) 2004 Darren Hutchinson (dbh@gbdt.com.au) |
* |
* This program is free software; you can redistribute it and/or modify |
* it under the terms of the GNU Library General Public License as published by |
* the Free Software Foundation; either version 2 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 Library General Public |
* License for more details. |
* |
* You should have received a copy of the GNU Library General Public License |
* along with this program; see the file COPYING. If not, write to |
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
* MA 02111-1307, USA. |
* |
* $Id: serial.c,v 1.10 2004/04/04 10:32:50 dbh Exp $ |
*/ |
#include <inttypes.h> |
#include <avr/io.h> |
#include "eq6.h" |
#include "serial.h" |
#include "combine.h" |
#include "stepper.h" |
#include "paddle.h" |
#include "sr.h" |
/* This file accepts serial data from a serial guider and performs the |
* requested guiding operation. |
* |
* This interface is also is designed to support future mount management |
* operations via the same serial interface |
* |
* The current protocol is: |
* |
* [0-9] Add the number to the "accumulator" |
* - Denote accumulator as negative |
* # Clear the accumulator and flag |
* < Clear the flag |
* > Set the flag |
* U Copy flag state to the DEC UP key |
* D Copy flag state to the DEC DOWN key |
* L Copy flag state to the RA left key |
* R Copy flag state to the RA right key |
* C Release all keys |
* |
* B Set DEC backlash to accum |
* M Set DEC backlash mode (+ = finish pos, 0 = none, - = finish neg) |
* b Set RA backlash to accum |
* m Set RA backlash mode (see DEC backlash) |
* |
* G Set 2X paddle to guiding speed (0.3x) if flag set, 1X if clear |
* |
* t Use halfStep for slow step if flag set, microStep if clear (TEST) |
* |
* T Set the tracking rate as-per the accumulator |
* -1 = No tracking (Terrestial) |
* 0 = Sidereal |
* 1 = Solar / Planetary |
* 2 = Lunar |
* |
* g Set transmission (gearbox) ratio |
* |
* The '#' and accumulator support future value-based entries |
* |
* A subset of LX200 commands are supported for compatibility |
* with various autoguiding programs. |
* |
* :Me# :Mw# :Ms# :Mn# Start slewing East(right), West(left), |
* North (up), South (down) |
* :Qe# :Qw# :Qs# :Qn# :Q# Halt selected or all slews |
* :RG# :RC# :RM# :RS# Set guiding rate for LX200 motions |
* G = 0.3x |
* C = 1x |
* M = 8x |
* S = 16x |
* |
* ACK Returns alignment mode (always 'P' polar) |
*/ |
#include <avr/interrupt.h> |
#include <inttypes.h> |
#include "paddle.h" |
#include "eq6.h" |
#include "combine.h" |
/* serialInit() initializes the serial port used for the |
* serial guider input. |
* |
* Passed: |
* Nothing |
* |
* Returns: |
* Nothing. |
*/ |
void |
serialInit(void) |
{ |
// The serial guider is attached to USART1 |
// Set serial rate |
UBRR1H = (CLK_RATE / GUIDE_BAUD / 16 - 1) >> 8; |
UBRR1L = (CLK_RATE / GUIDE_BAUD / 16 - 1) & 0xff; |
/* Setup registers |
* 8 bits, no parity, RX enable, TX enable. Only the Rx interrupts are |
* enabled at this point. |
*/ |
UCSR1B = 0; // Disable all interrupts |
UCSR1C = _BV(URSEL1) | _BV(UCSZ11) | _BV(UCSZ10); |
UCSR1B = _BV(RXCIE1) | _BV(RXEN1) | _BV(TXEN1); |
} |
/* serialInt() is called whenever a character is received on USART1. |
* These characters are send by the serial guider |
* |
* Passed: |
* Nothing |
* |
* Returns: |
* Nothing |
* |
* Notes: |
* Interrupts are disabled during processing |
*/ |
SIGNAL(SIG_USART1_RECV) |
{ |
/* Variables for flags/accumulator */ |
static uint8_t flag = 0; |
static uint16_t accum = 0; |
static uint8_t sign = 0; |
/* Variable holding current guiding rate */ |
static int8_t guideRate = SPEED_0_33_X; |
/* Flags holding current requested slewing directions */ |
static uint8_t upFlag; |
static uint8_t downFlag; |
static uint8_t leftFlag; |
static uint8_t rightFlag; |
/* LX200 command state */ |
#define LX200_CMD_LEN 8 |
static char lxCmd[LX200_CMD_LEN]; |
static uint8_t lxPos; |
uint8_t ch; |
uint8_t dirChg; |
static uint8_t lxMode; |
/* Get the character from the port. This will dismiss the interrupt |
*/ |
dirChg = 0; |
ch = UDR1; |
/* UDR1 = ch; /* Echo for debugging */ |
/* This code processes commands when a LX200 command is not currently |
* being processed. |
*/ |
if (lxMode == 0) |
{ |
switch(ch) |
{ |
case '0' ... '9': |
/* Add it to the accumulator */ |
accum = (accum * 10) + ch - '0'; |
break; |
case '#': |
/* Clear the accumulator */ |
accum = 0; |
sign = 0; |
break; |
case '-': |
/* Set the sign of the accumulator to negative */ |
sign = 1; |
break; |
case '<': |
/* Clear the flag */ |
flag = 0; |
break; |
case '>': |
/* Set the flag */ |
flag = 1; |
break; |
case 'U': |
/* Guide UP (DEC) */ |
upFlag = flag; |
dirChg = 1; |
break; |
case 'D': |
/* Guide DOWN (DEC) */ |
downFlag = flag; |
dirChg = 1; |
break; |
case 'R': |
/* Guide RIGHT (RA) */ |
rightFlag = flag; |
dirChg = 1; |
break; |
case 'L': |
/* Guide LEFT (RA) */ |
leftFlag = flag; |
dirChg = 1; |
break; |
case 'C': |
/* Clear all keys */ |
upFlag = downFlag = leftFlag = rightFlag = 0; |
dirChg = 1; |
break; |
case 'b': |
/* Set RA backlash steps */ |
raState.backlash = accum; |
doSave = 1; |
break; |
case 'B': |
/* Set DEC backlash steps */ |
decState.backlash = accum; |
doSave = 1; |
break; |
case 'm': |
/* Set RA backlash mode */ |
raState.finNeg = raState.finPos = 0; |
if (accum != 0) |
{ |
if (sign) |
raState.finNeg = 1; |
else |
raState.finPos = 1; |
} |
doSave = 1; |
break; |
case 'M': |
/* Set DEC backlash mode */ |
decState.finNeg = decState.finPos = 0; |
if (accum != 0) |
{ |
if (sign) |
decState.finNeg = 1; |
else |
decState.finPos = 1; |
} |
doSave = 1; |
break; |
case 'G': |
/* Set the speed for the 2x paddle button. This has |
* no effect on the rate used for serial commands |
*/ |
paddleGuideRate = flag ? SPEED_0_33_X : SPEED_1_X; |
doSave = 1; |
break; |
case 'T': |
/* Set the tracking speed */ |
setTrackRate(sign ? -accum : accum); |
doSave = 1; |
break; |
case 'g': /* Set transmission (gearbox) ratio */ |
transRatio = accum; |
doSave = 1; |
break; |
case 't': |
/* *TEST* Allow half step table to be specified instead of |
* the microstep table |
*/ |
doHalfStep = flag; |
break; |
case '\006': /* LX200: ACK */ |
UDR1 = 'P'; |
break; |
case ':': /* LX200: Start command */ |
/* This indicates the start of a LX200 command */ |
lxMode = 1; |
lxPos = 0; |
break; |
default: |
/* OK, now we're confused .... */ |
UDR1 = '?'; |
break; |
} |
} |
else |
{ |
/* This section of code supports the LX200 commands. They |
* have a fundimentally different syntax to the existing |
* commands, so they are implemented in this code seperately |
* for clarity. |
*/ |
if (ch != '#') |
{ |
/* Add this to the command characters so far */ |
lxCmd[lxPos++] = ch; |
if (lxPos == LX200_CMD_LEN) |
{ |
/* Too much data for any command */ |
UDR1 = '?'; |
lxMode = 0; |
} |
} |
else |
{ |
/* We are going back to native mode after this */ |
lxMode = 0; |
if (lxPos >= 1) |
{ |
/* We have a complete LX200 command (without the delimiters). |
* Do what it asks |
*/ |
switch(lxCmd[0]) |
{ |
case 'M': // Start guiding in specified direction |
if (lxPos == 2) |
{ |
// We have the right number of chars */ |
switch (lxCmd[1]) |
{ |
case 'n': upFlag = 1; break; |
case 's': downFlag = 1; break; |
case 'e': rightFlag = 1; break; |
case 'w': leftFlag = 1; break; |
default: UDR1 = '?'; break; |
} |
dirChg = 1; |
} |
break; |
case 'Q': // Stop guiding in specified direction |
if (lxPos == 1) |
{ |
// Stop slewing |
upFlag = downFlag = leftFlag = rightFlag = 0; |
dirChg = 1; |
} |
else if (lxPos == 2) |
{ |
// Stop slewing is specified direction |
switch (lxCmd[1]) |
{ |
case 'n': upFlag = 0; break; |
case 's': downFlag = 0; break; |
case 'e': rightFlag = 0; break; |
case 'w': leftFlag = 0; break; |
default: UDR1 = '?'; break; |
} |
dirChg = 1; |
} else |
UDR1 = '?'; |
break; |
case 'R': // Set guiding speed |
if (lxPos == 2) |
{ |
switch (lxCmd[1]) |
{ |
case 'G': guideRate = SPEED_0_33_X; break; |
case 'C': guideRate = SPEED_1_X; break; |
case 'M': guideRate = SPEED_8_X; break; |
case 'S': guideRate = SPEED_16_X; break; |
default: UDR1 = '?'; break; |
} |
dirChg = 1; |
} |
break; |
default: |
UDR1 = '?'; |
} |
} |
} |
} |
/* Update the serial guiding rate data if it has changed */ |
if (dirChg) |
{ |
if (upFlag) |
rateInput.serialDecRate = guideRate; |
else if (downFlag) |
rateInput.serialDecRate = -guideRate; |
else |
rateInput.serialDecRate = SPEED_0_X; |
if (rightFlag) |
rateInput.serialRaRate = guideRate; |
else if (leftFlag) |
rateInput.serialRaRate = -guideRate; |
else |
rateInput.serialRaRate = SPEED_0_X; |
} |
updateMountSpeed(); |
} |
/programy/C/avr/LX200/serial.h |
---|
0,0 → 1,33 |
/* |
* Copyright (C) 2004 Darren Hutchinson (dbh@gbdt.com.au) |
* |
* This program is free software; you can redistribute it and/or modify |
* it under the terms of the GNU Library General Public License as published by |
* the Free Software Foundation; either version 2 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 Library General Public |
* License for more details. |
* |
* You should have received a copy of the GNU Library General Public License |
* along with this software; see the file COPYING. If not, write to |
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
* MA 02111-1307, USA. |
* |
* $Id: serial.h,v 1.1.1.1 2004/02/22 08:12:42 dbh Exp $ |
*/ |
#ifndef _SERIAL_H_ |
#define _SERIAL_H_ |
/* Define the constants for the guiding input |
*/ |
#define GUIDE_BAUD 9600 |
/* Initialization function */ |
void serialInit(void); |
#endif /* _SERIAL_H_ */ |
/programy/C/avr/LX200/sr.c |
---|
0,0 → 1,194 |
/* |
* Copyright (C) 2004 Darren Hutchinson (dbh@gbdt.com.au) |
* |
* This program is free software; you can redistribute it and/or modify |
* it under the terms of the GNU Library General Public License as published by |
* the Free Software Foundation; either version 2 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 Library General Public |
* License for more details. |
* |
* You should have received a copy of the GNU Library General Public License |
* along with this software; see the file COPYING. If not, write to |
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
* MA 02111-1307, USA. |
* |
* $Id: sr.c,v 1.4 2004/04/04 10:32:50 dbh Exp $ |
*/ |
/* This file contains the code to save and restore the "configurable |
* parameters" of the program. These are held in the internal EEPROM |
* |
* These functions are expected to be executed with interrupts enabled and |
* will not return until complete. |
*/ |
#include <avr/io.h> |
#include <inttypes.h> |
#include <avr/interrupt.h> |
#include "stepper.h" |
#include "paddle.h" |
/* Define the staging structure used to save configurable parameters */ |
struct sr_s |
{ |
uint8_t raFinPos; |
uint8_t raFinNeg; |
uint16_t raBacklash; |
uint8_t decFinPos; |
uint8_t decFinNeg; |
uint16_t decBacklash; |
uint8_t paddleGuideRate; |
int8_t trackingRate; |
uint8_t transRatio; |
uint8_t csum; // Two's complement of other fields |
}; |
volatile uint8_t doSave; |
/* srSaveState() collects the configurable parameters from all over the |
* system and saves them into the EEPROM |
* |
* Passed |
* Nothing |
* |
* Returns |
* Nothing |
* |
* Notes: |
* This function assumes that the interrupts are enabled on |
* entry. |
*/ |
void |
srSaveState(void) |
{ |
struct sr_s state; |
uint8_t i; |
uint8_t *p; |
/* Turn off the interrupts while we "snapshot" the current |
* state |
*/ |
cli(); |
/* Copy the current state */ |
state.raFinPos = raState.finPos; |
state.raFinNeg = raState.finNeg; |
state.raBacklash = raState.backlash; |
state.decFinPos = decState.finPos; |
state.decFinNeg = decState.finNeg; |
state.decBacklash = decState.backlash; |
state.paddleGuideRate = paddleGuideRate; |
state.trackingRate = trackingRate; |
state.transRatio = transRatio; |
/* Reenable interrupts */ |
sei(); |
/* Calculate the checksum of the structure */ |
for (p = (uint8_t *)&state, i = 0 ; p != (uint8_t *)&state.csum ; ) |
i += *p++; |
state.csum = i; |
/* Write the complete structure into the EEPROM */ |
for (i = 0, p = (uint8_t *)&state ; i < sizeof(state) ; ++i, ++p) |
{ |
/* Wait for EEWE to become zero (ie. EEPROM not writting) */ |
while (EECR & _BV(EEWE)) |
; |
/* Setup the address */ |
EEARH = 0; |
EEARL = i; |
/* Put the data in place */ |
EEDR = *p; |
/* Perform the write */ |
cli(); |
EECR = _BV(EEMWE); |
EECR = _BV(EEMWE) | _BV(EEWE); |
sei(); |
} |
/* All done */ |
} |
/* srLoadState() reads the configurable parameters from EEPROM and copies |
* them to where they need to do. |
* |
* The data is protected by a checksum calculated when the data was |
* saved. |
* |
* Passed |
* Nothing |
* |
* Returns |
* Nothing |
* |
* Notes: |
* This interrupt does not change the interrupt state and does |
* not return until all the data is read |
*/ |
void |
srLoadState(void) |
{ |
struct sr_s state; |
uint8_t i; |
uint8_t *p; |
/* Read the state data from the EEPROM */ |
for (i = 0, p = (uint8_t *)&state ; i < sizeof(state) ; ++i, ++p) |
{ |
/* Wait for EEWE to become zero (ie. EEPROM not writting) */ |
while (EECR & _BV(EEWE)) |
; |
/* Setup the address */ |
EEARH = 0; |
EEARL = i; |
/* Read the data. The device will stall until the data is |
* ready |
*/ |
EECR = _BV(EERE); |
/* Get the data */ |
*p = EEDR; |
} |
/* Calculate the checksum of the structure. If it doesn't |
* match then the data is either corrupt or not initialized |
* |
* Either way keep the current data |
*/ |
for (p = (uint8_t *)&state, i = 0 ; p != (uint8_t *)&state.csum ; ) |
i += *p++; |
if (state.csum != i) |
return; |
/* Copy the restored data to the current state */ |
raState.finPos = state.raFinPos; |
raState.finNeg = state.raFinNeg; |
raState.backlash = state.raBacklash; |
decState.finPos = state.decFinPos; |
decState.finNeg = state.decFinNeg; |
decState.backlash = state.decBacklash; |
paddleGuideRate = state.paddleGuideRate; |
trackingRate = state.trackingRate; |
transRatio = state.transRatio; |
/* All done */ |
} |
/programy/C/avr/LX200/sr.h |
---|
0,0 → 1,31 |
/* |
* Copyright (C) 2004 Darren Hutchinson (dbh@gbdt.com.au) |
* |
* This program is free software; you can redistribute it and/or modify |
* it under the terms of the GNU Library General Public License as published by |
* the Free Software Foundation; either version 2 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 Library General Public |
* License for more details. |
* |
* You should have received a copy of the GNU Library General Public License |
* along with this software; see the file COPYING. If not, write to |
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
* MA 02111-1307, USA. |
* |
* $Id: sr.h,v 1.2 2004/04/04 10:32:50 dbh Exp $ |
*/ |
#ifndef _SR_H_ |
#define _SR_H_ |
void srSaveState(void); |
void srLoadState(void); |
/* Flag to request parameter save */ |
extern volatile uint8_t doSave; |
#endif /* _SR_H_ */ |
/programy/C/avr/LX200/stepper.c |
---|
0,0 → 1,765 |
/* |
* Copyright (C) 2004 Darren Hutchinson (dbh@gbdt.com.au) |
* |
* This program is free software; you can redistribute it and/or modify |
* it under the terms of the GNU Library General Public License as published by |
* the Free Software Foundation; either version 2 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 Library General Public |
* License for more details. |
* |
* You should have received a copy of the GNU Library General Public License |
* along with this software; see the file COPYING. If not, write to |
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
* MA 02111-1307, USA. |
* |
* $Id: stepper.c,v 1.9 2004/04/05 06:42:15 dbh Exp $ |
*/ |
/* This file converts the RA and DEC speed indications into drive values for |
* the stepper motor coils. |
*/ |
#include <inttypes.h> |
#include <avr/io.h> |
#include <avr/interrupt.h> |
#include "eq6.h" |
#include "combine.h" |
#include "stepper.h" |
int8_t trackingRate = 0; |
uint8_t transRatio = DEF_TRANS_RATIO; |
#define STEPS_PER_CYCLE 32L /* Steps per cycle (complete set of phases) */ |
#define CYCLES_PER_ROTN 12L /* Cycles per stepper motor rotation */ |
#define SIDERIAL_LCM (long)(3 * 16) /* Divides to give all speeds */ |
#define WORM_RATIO 180L /* Tooth on worm gear */ |
#define SECS_PER_SDAY 86164L /* 23h, 56m, 4s [Sidereal] */ |
#define SECS_PER_DAY 86400L /* 24h, 0m, 0s [Solar] */ |
#define SECS_PER_LDAY 89309L /* 1 + 1/27.3 sidereal days */ |
/* Structure holding information used to generate stepper pulses |
* that generate motion at the siderial, solar, and lunar tracking |
* rates |
*/ |
struct trackRate_s |
{ |
uint16_t div; // tint |
uint16_t adj; // add/drop one int every .... |
uint8_t doDropInt; // drop ints if true, add extra ints if false |
} trackRateTable[3]; |
/* Define the stepping table. This defines the excitation to be used |
* over a complete "cycle" of the stepper motor |
* |
* These are signed, four bit values. Coil 1 is the LSN, Coil 2 is the MSN |
*/ |
#if 1 |
/* Step table. Values scaled such that one coil is always fully driven. |
* Gives lots of torque, but the actual travel is lumpy |
*/ |
uint8_t microTable[STEPS_PER_CYCLE] = |
{ |
_EX_ENTRY(EX_0, EX_P_1), _EX_ENTRY(EX_P_0_2, EX_P_1), |
_EX_ENTRY(EX_P_0_4, EX_P_1), _EX_ENTRY(EX_P_0_67, EX_P_1), |
_EX_ENTRY(EX_P_1, EX_P_1), _EX_ENTRY(EX_P_1, EX_P_0_67), |
_EX_ENTRY(EX_P_1, EX_P_0_4), _EX_ENTRY(EX_P_1, EX_P_0_2), |
_EX_ENTRY(EX_P_1, EX_0), _EX_ENTRY(EX_P_1, EX_M_0_2), |
_EX_ENTRY(EX_P_1, EX_M_0_4), _EX_ENTRY(EX_P_1, EX_M_0_67), |
_EX_ENTRY(EX_P_1, EX_M_1), _EX_ENTRY(EX_P_0_67, EX_M_1), |
_EX_ENTRY(EX_P_0_4, EX_M_1), _EX_ENTRY(EX_P_0_2, EX_M_1), |
_EX_ENTRY(EX_0, EX_M_1), _EX_ENTRY(EX_M_0_2, EX_M_1), |
_EX_ENTRY(EX_M_0_4, EX_M_1), _EX_ENTRY(EX_M_0_67, EX_M_1), |
_EX_ENTRY(EX_M_1, EX_M_1), _EX_ENTRY(EX_M_1, EX_M_0_67), |
_EX_ENTRY(EX_M_1, EX_M_0_4), _EX_ENTRY(EX_M_1, EX_M_0_2), |
_EX_ENTRY(EX_M_1, EX_0), _EX_ENTRY(EX_M_1, EX_P_0_2), |
_EX_ENTRY(EX_M_1, EX_P_0_4), _EX_ENTRY(EX_M_1, EX_P_0_67), |
_EX_ENTRY(EX_M_1, EX_P_1), _EX_ENTRY(EX_M_0_67, EX_P_1), |
_EX_ENTRY(EX_M_0_4, EX_P_1), _EX_ENTRY(EX_M_0_2, EX_P_1), |
}; |
#else |
/* Conventional microstep table. Torque vector with magnitude 1. Gives |
* less torque that the first table, but the change in smoothness doesn't |
* seem to be worth the loss of torque |
*/ |
uint8_t microTable[STEPS_PER_CYCLE] = |
{ |
_EX_ENTRY(EX_0, EX_P_1), _EX_ENTRY(EX_P_0_2, EX_P_1), |
_EX_ENTRY(EX_P_0_2, EX_P_1), _EX_ENTRY(EX_P_0_4, EX_P_0_67), |
_EX_ENTRY(EX_P_0_67, EX_P_0_67), _EX_ENTRY(EX_P_0_67, EX_P_0_4), |
_EX_ENTRY(EX_P_1, EX_P_0_2), _EX_ENTRY(EX_P_1, EX_P_0_2), |
_EX_ENTRY(EX_P_1, EX_0), _EX_ENTRY(EX_P_1, EX_M_0_2), |
_EX_ENTRY(EX_P_1, EX_M_0_2), _EX_ENTRY(EX_P_0_67, EX_M_0_4), |
_EX_ENTRY(EX_P_0_67, EX_M_0_67), _EX_ENTRY(EX_P_0_4, EX_M_0_67), |
_EX_ENTRY(EX_P_0_2, EX_M_1), _EX_ENTRY(EX_P_0_2, EX_M_1), |
_EX_ENTRY(EX_0, EX_M_1), _EX_ENTRY(EX_M_0_2, EX_M_1), |
_EX_ENTRY(EX_M_0_2, EX_M_1), _EX_ENTRY(EX_M_0_4, EX_M_0_67), |
_EX_ENTRY(EX_M_0_67, EX_M_0_67), _EX_ENTRY(EX_M_0_67, EX_M_0_4), |
_EX_ENTRY(EX_M_1, EX_M_0_2), _EX_ENTRY(EX_M_1, EX_M_0_2), |
_EX_ENTRY(EX_M_1, EX_0), _EX_ENTRY(EX_M_1, EX_P_0_2), |
_EX_ENTRY(EX_M_1, EX_P_0_2), _EX_ENTRY(EX_M_0_67, EX_P_0_4), |
_EX_ENTRY(EX_M_0_67, EX_P_0_67), _EX_ENTRY(EX_M_0_4, EX_P_0_67), |
_EX_ENTRY(EX_M_0_2, EX_P_1), _EX_ENTRY(EX_M_0_2, EX_P_1) |
}; |
#endif /* 0 */ |
uint8_t halfTable[STEPS_PER_CYCLE] = |
{ |
_EX_ENTRY(EX_P_1, EX_P_1), _EX_ENTRY(EX_P_1, EX_P_1), |
_EX_ENTRY(EX_P_1, EX_P_1), _EX_ENTRY(EX_P_1, EX_P_1), |
_EX_ENTRY(EX_P_1, EX_0), _EX_ENTRY(EX_P_1, EX_0), |
_EX_ENTRY(EX_P_1, EX_0), _EX_ENTRY(EX_P_1, EX_0), |
_EX_ENTRY(EX_P_1, EX_M_1), _EX_ENTRY(EX_P_1, EX_M_1), |
_EX_ENTRY(EX_P_1, EX_M_1), _EX_ENTRY(EX_P_1, EX_M_1), |
_EX_ENTRY(EX_0, EX_M_1), _EX_ENTRY(EX_0, EX_M_1), |
_EX_ENTRY(EX_0, EX_M_1), _EX_ENTRY(EX_0, EX_M_1), |
_EX_ENTRY(EX_M_1, EX_M_1), _EX_ENTRY(EX_M_1, EX_M_1), |
_EX_ENTRY(EX_M_1, EX_M_1), _EX_ENTRY(EX_M_1, EX_M_1), |
_EX_ENTRY(EX_M_1, EX_0), _EX_ENTRY(EX_M_1, EX_0), |
_EX_ENTRY(EX_M_1, EX_0), _EX_ENTRY(EX_M_1, EX_0), |
_EX_ENTRY(EX_M_1, EX_P_1), _EX_ENTRY(EX_M_1, EX_P_1), |
_EX_ENTRY(EX_M_1, EX_P_1), _EX_ENTRY(EX_M_1, EX_P_1), |
_EX_ENTRY(EX_0, EX_P_1), _EX_ENTRY(EX_0, EX_P_1), |
_EX_ENTRY(EX_0, EX_P_1), _EX_ENTRY(EX_0, EX_P_1), |
}; |
uint8_t fullTable[STEPS_PER_CYCLE] = |
{ |
_EX_ENTRY(EX_P_1, EX_P_1), _EX_ENTRY(EX_P_1, EX_P_1), |
_EX_ENTRY(EX_P_1, EX_P_1), _EX_ENTRY(EX_P_1, EX_P_1), |
_EX_ENTRY(EX_P_1, EX_P_1), _EX_ENTRY(EX_P_1, EX_P_1), |
_EX_ENTRY(EX_P_1, EX_P_1), _EX_ENTRY(EX_P_1, EX_P_1), |
_EX_ENTRY(EX_P_1, EX_M_1), _EX_ENTRY(EX_P_1, EX_M_1), |
_EX_ENTRY(EX_P_1, EX_M_1), _EX_ENTRY(EX_P_1, EX_M_1), |
_EX_ENTRY(EX_P_1, EX_M_1), _EX_ENTRY(EX_P_1, EX_M_1), |
_EX_ENTRY(EX_P_1, EX_M_1), _EX_ENTRY(EX_P_1, EX_M_1), |
_EX_ENTRY(EX_M_1, EX_M_1), _EX_ENTRY(EX_M_1, EX_M_1), |
_EX_ENTRY(EX_M_1, EX_M_1), _EX_ENTRY(EX_M_1, EX_M_1), |
_EX_ENTRY(EX_M_1, EX_M_1), _EX_ENTRY(EX_M_1, EX_M_1), |
_EX_ENTRY(EX_M_1, EX_M_1), _EX_ENTRY(EX_M_1, EX_M_1), |
_EX_ENTRY(EX_M_1, EX_P_1), _EX_ENTRY(EX_M_1, EX_P_1), |
_EX_ENTRY(EX_M_1, EX_P_1), _EX_ENTRY(EX_M_1, EX_P_1), |
_EX_ENTRY(EX_M_1, EX_P_1), _EX_ENTRY(EX_M_1, EX_P_1), |
_EX_ENTRY(EX_M_1, EX_P_1), _EX_ENTRY(EX_M_1, EX_P_1) |
}; |
/* Setup the table of divisors of the siderial interrupt use to |
* achieve the required tracking rate. |
*/ |
struct |
{ |
uint8_t divisor; // Siderial interrupts per step |
uint8_t flags; // Control flags |
#define USE_RELAY 0 // Activate the magic relay [RA only] |
#define USE_MICRO 1 // Use the microstep table |
} rateConvert[] = |
{ |
[SPEED_0_X] = {1, _BV(USE_MICRO)}, // Special value |
[SPEED_0_33_X] = {3 * SIDERIAL_LCM, _BV(USE_MICRO)}, |
[SPEED_0_67_X] = {(3 * SIDERIAL_LCM) / 2, _BV(USE_MICRO)}, |
[SPEED_1_X] = {SIDERIAL_LCM, _BV(USE_MICRO)}, |
[SPEED_1_33_X] = {(3 * SIDERIAL_LCM) / 4, _BV(USE_MICRO)}, |
[SPEED_1_67_X] = {(3 * SIDERIAL_LCM) / 5, _BV(USE_MICRO)}, |
[SPEED_2_X] = {SIDERIAL_LCM / 2, _BV(USE_MICRO) | _BV(USE_RELAY)}, |
[SPEED_4_X] = {SIDERIAL_LCM / 4, _BV(USE_MICRO) | _BV(USE_RELAY)}, |
[SPEED_8_X] = {SIDERIAL_LCM / 8, _BV(USE_MICRO) | _BV(USE_RELAY)}, |
[SPEED_16_X] = {SIDERIAL_LCM / 16, _BV(USE_RELAY)}, |
[SPEED_SPIN] = {SIDERIAL_LCM / 16, 0} |
}; |
/* Create the instance of the stepper excitation info |
*/ |
struct excitation_s raExcitation; |
struct excitation_s decExcitation; |
/* Define instances of stepper state info |
*/ |
struct stepState_s raState; |
struct stepState_s decState; |
uint8_t doHalfStep = 0; |
/* Info for tracking rate correction */ |
uint16_t adjCtr; |
uint16_t adjLimit; |
uint16_t doDropInt; |
/* stepperInit() initializes the state of the stepper code. |
* |
* The current implementation uses a single 16-bit timer with a fixed |
* period shared between RA and DEC. |
* |
* Passed: |
* Nothing |
* |
* Returns: |
* Nothing |
* |
* Notes: |
* An alternate implementation would use a pair of 16 bit timers with |
* their timeouts set to the step period. This would minimize the |
* number of interrupts, but would take an extra timer. |
* |
* The current implementation is preferred until we're sure the extra |
* timer isn't needed elsewhere or until there is a performance |
* problem caused by the extra interrupt load caused by having |
* multiple interrupts per step. |
*/ |
void |
stepperInit(void) |
{ |
/* Initialize the excitation state */ |
raExcitation.excitation = EX_0; |
raExcitation.useRelay = 0; |
raState.pExcite = &raExcitation; |
decExcitation.excitation = EX_0; |
decState.pExcite = &decExcitation; |
/* Initialize the siderial rate timer */ |
TIMSK |= _BV(OCIE1A); |
} |
/* calculateRateEntry() creates an entry in the rate table |
* |
* Passed: |
* pEntry Pointer to entry |
* transRatio Transmission (gearbox) ratio |
* secPerDay Seconds per sideral/lunar/solar dat |
* |
* Returns: |
* nothing |
*/ |
static void |
calculateRateEntry( struct trackRate_s *pEntry, |
uint8_t transRatio, |
uint32_t secsPerDay) |
{ |
/* To do this calculation would (without optimization) would need about |
* 40 bit arithmetic, which isn't available in this copmiler. |
* |
* To get the required precision down to below 32 bits the |
* numerator and denominator are divided through by 1280. |
* |
* This gives an exact result for 8/16 MHz with a 180 tooth wormgear |
* |
* The formula gives the clock divisor for the siderial clock interrupt |
* divisor: |
* |
* (CLK_RATE * SECS_PER_SDAY) / (MECH_DIV * STEPS_PER_CYCLE * SIDERIAL_LCM) |
* |
* This, by itself, does not give great accuracy because the divisor is |
* an integer. With a typical divisor of about 1500 there is a maximum error |
* of about 1 / 3000 (0.033%). |
* |
* For most purposes this should be accurate enough, but the accuracy can |
* be improved by adding or dropping the occasional interrupt. |
* |
* This function calculates both the divisor and how often to |
* drop an timer interrupt, or to insert an extra one to improve the |
* timer accuracy |
*/ |
#define CLK_FACTOR 1280L // Common divisor for numerator & divisor |
#define WORM_CLK_LCM (WORM_RATIO * CYCLES_PER_ROTN * SIDERIAL_LCM) |
#define SCALED_CLK (CLK_RATE / CLK_FACTOR) |
#define MIN_DIV 1000 /* Minimum allowed divisor to avoid |
* interrupt saturation |
*/ |
long top; |
long bottom; |
long div; // Clock divisor for interrupt generation |
long adj; // Add/drop adjustment |
long adj_denom; |
top = SCALED_CLK * secsPerDay; |
bottom = (WORM_CLK_LCM / CLK_FACTOR) * transRatio * STEPS_PER_CYCLE; |
/* Calculate divisor, round to nearest integer */ |
div = (top + (bottom / 2)) / bottom; |
/* Calculate adjustment */ |
adj = SCALED_CLK * secsPerDay; |
adj_denom = (div * bottom) - (SCALED_CLK * secsPerDay); |
adj /= adj_denom; |
/* Fill in the entry */ |
pEntry->div = (div > MIN_DIV) ? div : MIN_DIV; |
if (adj >= 0) |
{ |
pEntry->doDropInt = 0; |
pEntry->adj = (adj >= (1L << 16)) ? 0 : adj; |
} |
else |
{ |
pEntry->doDropInt = 1; |
pEntry->adj = (adj <= -(1L << 16)) ? 0 : -adj; |
} |
} |
/* setupRateTable() fills the tracking rate table with values |
* that are correct for the transmission ratio of the system. |
* |
* Passed |
* transRatio Transmission (gearbox) ratio |
* |
* Returns |
* nothing |
*/ |
void |
setupRateTable(uint8_t transRatio) |
{ |
calculateRateEntry(&trackRateTable[0], transRatio, SECS_PER_SDAY); |
calculateRateEntry(&trackRateTable[1], transRatio, SECS_PER_DAY); |
calculateRateEntry(&trackRateTable[2], transRatio, SECS_PER_LDAY); |
} |
/* setTrackRate() sets the tracking rate used by the stepper module. |
* |
* Passed: |
* rate The tracking rate (index) |
* |
* Returns: |
* Nothing |
* |
* Note: |
* If an illegal rate is entered the current rate will not be changed |
*/ |
void |
setTrackRate(int8_t rate) |
{ |
/* If the track rate is <0 then disable siderial rate use in |
* combine.c and return, leaving the current clock steup |
*/ |
trackingRate = rate; |
if (rate < 0) |
{ |
noTrack = 1; |
return; |
} |
/* Do nothing if the rate is not supported */ |
if (rate >= (sizeof(trackRateTable) / sizeof(struct trackRate_s))) |
return; |
/* Enable tracking */ |
noTrack = 0; |
/* Update the tracking rate timer */ |
OCR1A = trackRateTable[rate].div; |
TCNT1 = 0; |
TCCR1A = 0; |
TCCR1B = _BV(WGM12) | _BV(CS10); |
/* Update adjustment data */ |
adjCtr = 0; |
adjLimit = trackRateTable[rate].adj; |
doDropInt = trackRateTable[rate].doDropInt; |
} |
/* setSpeed() is called by by the combiner to set the requested speed |
* for the axis |
* |
* Passed: |
* pState Axis state |
* rate Requested rate |
* |
* Returns: |
* Nothing |
* |
* Notes: |
* setRaSpeed() and setDecSpeed() are wrappers used by the combiner |
*/ |
static void |
setSpeed(struct stepState_s *pState, int8_t speed) |
{ |
/* If the current speed is zero then start the clock */ |
if (pState->clkDivRatio == 0) |
pState->clkDivRatio = 1; // Almost immediate clock |
pState->reqSpeed = speed; |
} |
void |
setRaSpeed(int8_t speed) |
{ |
setSpeed(&raState, speed); |
} |
void |
setDecSpeed(int8_t speed) |
{ |
setSpeed(&decState, speed); |
} |
/* setTickRate() is called by the state machine to set the clock interrupt |
* rate. |
* |
* Passed |
* pState The axis state |
* tickRate The clock rate to set |
* |
* Returns |
* nothing |
*/ |
void |
setTickRate(struct stepState_s *pState, uint8_t tickRate) |
{ |
pState->clkDivRatio = rateConvert[tickRate].divisor; |
} |
/* stepperProcess is the state machine that makes this whole thing |
* work! It is executed each axis interrupt to run the state machine |
* that handles operation and backlash processing. |
* |
* Like the other state machines in the program it takes advantage |
* of the GNU computed goto to operate very efficiently. |
* |
* Passed |
* pState The axis state |
* |
* Returns |
* Nothing |
*/ |
#define _GET_TABLE(f) ((f) ? (doHalfStep ? halfTable : microTable) : fullTable) |
void |
stepperProcess(struct stepState_s *pState) |
{ |
// Step up the initial state pointer |
if (pState->pState == 0) |
pState->pState = &&enter_idle_pos; |
/* Make sure both finPos and finNeg are not set - that will |
* lead to a loop as the code tries to meet both! |
*/ |
if (pState->finPos && pState->finNeg) |
pState->finPos = pState->finNeg = 0; |
// Jump to the current state |
goto *pState->pState; |
/* There are six states in the machine |
* |
* - idle_pos Idle (last move in positive direction) |
* - spin_pos Taking up backlash in positive direction |
* - move_pos Moving in the positive direction |
* |
* There are "negative" versions of these states. |
* |
* Just to make things simple we use the "idle" state as a central |
* decision point. |
*/ |
enter_idle_pos: |
/* We're about to move into the idle_pos state. We end up here if |
* we're stopping or changing direction |
*/ |
if (pState->reqSpeed == SPEED_0_X) |
{ |
/* We're going to stop - if we're in the correct direction then |
* stop, else start spinning in the other direction |
*/ |
if (pState->finNeg) |
goto enter_spin_neg; |
else |
{ |
/* Stop now! */ |
setTickRate(pState, SPEED_0_X); |
pState->pExcite->excitation = EX_0; |
pState->pExcite->useRelay = 0; |
// For this state just call the entry point each interrupt |
pState->pState = &&enter_idle_pos; |
} |
} |
else if (pState->reqSpeed > SPEED_0_X) |
{ |
/* We're now moving in the positive direction. As we are |
* already engaged in the positive direction we can start |
* running |
*/ |
goto enter_move_pos; |
} |
else |
{ |
/* Must be a negative move direction. Take up the backlash |
* in the negative direction |
*/ |
goto enter_spin_neg; |
} |
return; |
enter_idle_neg: |
/* We're about to move into the idle_neg state. We end up here if |
* we're stopping or changing direction |
*/ |
if (pState->reqSpeed == SPEED_0_X) |
{ |
/* We're going to stop - if we're in the correct direction then |
* stop, else start spinning in the other direction |
*/ |
if (pState->finPos) |
goto enter_spin_pos; |
else |
{ |
/* Stop now! */ |
setTickRate(pState, SPEED_0_X); |
pState->pExcite->excitation = EX_0; |
pState->pExcite->useRelay = 0; |
// For this state just call the entry point each interrupt |
pState->pState = &&enter_idle_neg; |
} |
} |
else if (pState->reqSpeed < SPEED_0_X) |
{ |
/* We're now moving in the negative direction. As we are |
* already engaged in the negative direction we can start |
* running |
*/ |
goto enter_move_neg; |
} |
else |
{ |
/* Must be a positive move direction. Take up the backlash |
* in the positive direction |
*/ |
goto enter_spin_pos; |
} |
return; |
enter_spin_pos: |
/* Spin in the positive direction to take up backlash in the |
* gear chain |
*/ |
if (pState->backlash == 0) |
{ |
/* No backlash - go to the idle_pos state which will take us |
* to the correct place |
*/ |
goto enter_idle_pos; |
} |
else |
{ |
uint8_t flags = rateConvert[SPEED_SPIN].flags; |
/* There is a backlash setting - get ready to spin! */ |
pState->count = 0; |
setTickRate(pState, SPEED_SPIN); |
pState->pTable = _GET_TABLE(flags & _BV(USE_MICRO)); |
pState->pExcite->useRelay = flags & _BV(USE_RELAY); |
pState->pState = &&run_spin_pos; |
// Fall through to run the spin state |
} |
run_spin_pos: |
// Update excitation value |
pState->pExcite->excitation = pState->pTable[pState->stepCtr]; |
pState->stepCtr = (pState->stepCtr + 1) & (STEPS_PER_CYCLE - 1); |
/* Check the count. If we've spun enough then go back to the |
* idle_pos state which will send us the right way |
*/ |
if (++pState->count > pState->backlash) |
goto enter_idle_pos; |
return; |
enter_spin_neg: |
/* Spin in the negative direction to take up backlash in the |
* gear chain |
*/ |
if (pState->backlash == 0) |
{ |
/* No backlash - go to the idle_neg state which will take us |
* to the correct place |
*/ |
goto enter_idle_neg; |
} |
else |
{ |
uint8_t flags = rateConvert[SPEED_SPIN].flags; |
/* There is a backlash setting - get ready to spin! */ |
pState->count = 0; |
setTickRate(pState, SPEED_SPIN); |
pState->pTable = _GET_TABLE(flags & _BV(USE_MICRO)); |
pState->pExcite->useRelay = flags & _BV(USE_RELAY); |
pState->pState = &&run_spin_neg; |
// Fall through to run the spin state |
} |
run_spin_neg: |
// Update excitation value |
pState->pExcite->excitation = pState->pTable[pState->stepCtr]; |
pState->stepCtr = (pState->stepCtr - 1) & (STEPS_PER_CYCLE - 1); |
/* Check the count. If we've spun enough then go back to the |
* idle_neg state which will send us the right way |
*/ |
if (++pState->count > pState->backlash) |
goto enter_idle_neg; |
return; |
enter_move_pos: |
/* Start moving in the positive direction. Save the requested |
* speed as the current speed so we can detect changes in the |
* requested speed |
*/ |
if (pState->reqSpeed > SPEED_0_X) |
{ |
uint8_t flags = rateConvert[pState->reqSpeed].flags; |
setTickRate(pState, pState->reqSpeed); |
pState->pTable = _GET_TABLE(flags & _BV(USE_MICRO)); |
pState->pExcite->useRelay = flags & _BV(USE_RELAY); |
pState->pState = &&run_move_pos; |
pState->curSpeed = pState->reqSpeed; |
/* Fall through to move action */ |
} |
else |
{ |
/* We're not going in the positive direction any more */ |
goto enter_idle_pos; |
} |
return; |
run_move_pos: |
if (pState->curSpeed == pState->reqSpeed) |
{ |
/* We're still moving at the same speed. Do it |
*/ |
pState->pExcite->excitation = pState->pTable[pState->stepCtr]; |
pState->stepCtr = (pState->stepCtr + 1) & (STEPS_PER_CYCLE - 1); |
} |
else |
{ |
/* Go baxk to idle_pos that will decide the next state */ |
goto enter_idle_pos; |
} |
return; |
enter_move_neg: |
/* Start moving in the negative direction. Save the requested |
* speed as the current speed so we can detect changes in the |
* requested speed |
*/ |
if (pState->reqSpeed < SPEED_0_X) |
{ |
uint8_t flags = rateConvert[-pState->reqSpeed].flags; |
setTickRate(pState, -pState->reqSpeed); |
pState->pTable = _GET_TABLE(flags & _BV(USE_MICRO)); |
pState->pExcite->useRelay = flags & _BV(USE_RELAY); |
pState->pState = &&run_move_neg; |
pState->curSpeed = pState->reqSpeed; |
/* Fall through to move action */ |
} |
else |
{ |
/* We're not going in the negative direction any more. Stop and |
* continue from there |
*/ |
goto enter_idle_neg; |
} |
return; |
run_move_neg: |
if (pState->curSpeed == pState->reqSpeed) |
{ |
/* We're still moving at the same speed. Do it |
*/ |
pState->pExcite->excitation = pState->pTable[pState->stepCtr]; |
pState->stepCtr = (pState->stepCtr - 1) & (STEPS_PER_CYCLE - 1); |
} |
else |
{ |
/* Go back to the idle_neg. It will determine the next state */ |
goto enter_idle_neg; |
} |
return; |
} |
/* stepperInt() is called each siderial interrupt. This is divided down |
* in software to derive the actual stepper timing. |
* |
* Passed: |
* Nothing |
* |
* Returns: |
* Nothing |
*/ |
SIGNAL(SIG_OUTPUT_COMPARE1A) |
{ |
/* Update the tracking rate adjustment counter */ |
++adjCtr; |
/* If we're dropping then drop if necessary */ |
if (doDropInt && adjLimit && adjCtr >= adjLimit) |
{ |
/* Drop interrupt */ |
adjCtr = 0; |
return; |
} |
do_again: |
/* Run the state machine for the DEC and RA axis */ |
if (raState.clkDivRatio != 0 && ++raState.divCtr >= raState.clkDivRatio) |
{ |
// Execute the RA state machine |
raState.divCtr = 0; |
stepperProcess(&raState); |
} |
if (decState.clkDivRatio != 0 && ++decState.divCtr >= decState.clkDivRatio) |
{ |
// Execute the DEC state machine |
decState.divCtr = 0; |
stepperProcess(&decState); |
} |
/* If we need to "insert" an interrupt do it now */ |
if (!doDropInt && adjLimit && adjCtr >= adjLimit) |
{ |
adjCtr = 0; |
goto do_again; |
} |
} |
/programy/C/avr/LX200/stepper.h |
---|
0,0 → 1,103 |
/* |
* Copyright (C) 2004 Darren Hutchinson (dbh@gbdt.com.au) |
* |
* This program is free software; you can redistribute it and/or modify |
* it under the terms of the GNU Library General Public License as published by |
* the Free Software Foundation; either version 2 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 Library General Public |
* License for more details. |
* |
* You should have received a copy of the GNU Library General Public License |
* along with this software; see the file COPYING. If not, write to |
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
* MA 02111-1307, USA. |
* |
* $Id: stepper.h,v 1.7 2004/04/05 06:42:15 dbh Exp $ |
*/ |
#ifndef _STEPPER_H_ |
#define _STEPPER_H_ |
/* Define the encoding used to hold the exictation values for each |
* stepper coil. |
*/ |
#define _EX_ENTRY(c1, c2) (((c1) << 4) | (c2)) |
#define _GET_C1(e) ((e) >> 4) |
#define _GET_C2(e) ((e) & 0xf) |
#define EX_0 0x0 // Inactive |
#define EX_P_0_2 0x1 // +0.2 active |
#define EX_P_0_4 0x2 // +0.4 active |
#define EX_P_0_67 0x3 // +0.67 active |
#define EX_P_1 0x4 // +Active |
#define EX_M_0_2 0x9 // -0.2 active |
#define EX_M_0_4 0xa // -0.4 active |
#define EX_M_0_67 0xb // -0.67 active |
#define EX_M_1 0xc // -Active |
/* Define the struture used to pass excitation information from |
* the stepper module to the excitation module |
*/ |
struct excitation_s |
{ |
uint8_t excitation; |
uint8_t useRelay; |
}; |
extern struct excitation_s raExcitation; |
extern struct excitation_s decExcitation; |
/* Define a structure to hold the current "state" for each axis. This |
* allows up to use the same code for both axis, so I don't feel |
* tempted to skimp on the features |
*/ |
struct stepState_s |
{ |
// Input (from the combiner) |
int8_t reqSpeed; // Rate requested |
// Output (to the driver) |
struct excitation_s *pExcite; |
// Configuration |
uint16_t backlash; // #steps to counteract backlash |
uint8_t finPos; // Finish movement in positive direction |
uint8_t finNeg; // Finish movement in negative direction |
// Machine state |
uint8_t stepCtr; // Current step in cycle |
int8_t curSpeed; // Current rate (when moving after spin) |
void *pState; // State pointer |
uint16_t count; // Counter used in states |
uint8_t *pTable; // Current step table |
// Support function state |
uint8_t clkDivRatio; // Current clock div |
uint8_t divCtr; // Clock division counter |
}; |
/* These are held in stepper.c */ |
extern struct stepState_s raState; |
extern struct stepState_s decState; |
extern int8_t trackingRate; |
extern uint8_t transRatio; |
/* Prototypes */ |
void stepperInit(void); |
void setRaSpeed(int8_t speed); |
void setDecSpeed(int8_t speed); |
void setupRateTable(uint8_t transRatio); |
void setTrackRate(int8_t rate); |
/* DEBUG: Uses half step instread of microstep if true */ |
extern uint8_t doHalfStep; |
#endif /* _STEPPER_H_ */ |
/programy/C/avr/akcelerometr/.hfuse |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programy/C/avr/akcelerometr/.lfuse |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programy/C/avr/akcelerometr/a2dtest.c |
---|
19,28 → 19,27 |
#include <math.h> |
#include "global.h" // include our global settings |
#include "uart.h" // include uart function library |
#include "uart2.h" // include uart function library |
#include "rprintf.h" // include printf function library |
#include "timer.h" // include timer function library (timing, PWM, etc) |
#include "a2d.h" // include A/D converter function library |
//----- Begin Code ------------------------------------------------------------ |
#define BUFLEN 32 |
#define BUFLEN 64 |
int main(void) |
{ |
u08 i=0; |
s16 x=0,y=0; |
double fi; |
s16 fia; |
u16 fib; |
u16 i,x,y; |
double fi, err, fibuf[BUFLEN]; |
s16 fia, erra; |
u16 fib, errb; |
// initialize our libraries |
// initialize the UART (serial port) |
uartInit(); |
uartSetBaudRate(9600); |
uartSetBaudRate(0,9600); |
// make all rprintf statements use uart for output |
rprintfInit(uartSendByte); |
rprintfInit(uart0SendByte); |
// initialize the timer system |
timerInit(); |
// turn on and initialize A/D converter |
47,9 → 46,9 |
a2dInit(); |
// configure a2d port (PORTA) as input |
// so we can receive analog signals |
DDRC = 0x00; |
DDRA = 0x00; |
// make sure pull-up resistors are turned off |
PORTC = 0x00; |
PORTA = 0x00; |
// set the a2d prescaler (clock division ratio) |
// - a lower prescale setting will make the a2d converter go faster |
68,19 → 67,28 |
while(1) |
{ |
fi=0; |
err=0; |
for(i=0; i<BUFLEN; i++) |
{ |
x += a2dConvert10bit(0); |
y += a2dConvert10bit(1); |
x = a2dConvert10bit(ADC_CH_ADC0); |
y = a2dConvert10bit(ADC_CH_ADC1); |
fibuf[i] = atan2((double)x-511,(double)y-511); // record computed angles to buffer for post processing |
} |
x = x/BUFLEN - 512; |
y = y/BUFLEN - 512; |
for(i=0; i<BUFLEN; i++) fi += fibuf[i]; // sum recorded angles |
fi = atan2(y,x) * 180.0 / PI; |
fi = ((fi/BUFLEN)+PI) * 180.0 / PI; // average recorded angles and convert product to degrees |
for(i=0; i<BUFLEN; i++) err += (fibuf[i]-fi)*(fibuf[i]-fi); // sum cubic errors |
err = sqrt(err/(BUFLEN-1))/sqrt(BUFLEN); // compute average cubic error |
erra = floor(err); |
errb = floor((err - erra)*1000); |
fia = floor(fi); |
fib = floor((fi - fia)); |
rprintf("X:%d Y:%d fi:%d.%d \r\n", x, y, fia, fib); |
fib = floor((fi - fia)*1000); |
rprintf("fi:%d.%d +- %d.%d \r\n", fia, fib, erra, errb); |
} |
return 0; |
} |
/programy/C/avr/akcelerometr/gmetr.kontrollerlab |
---|
1,7 → 1,7 |
<!DOCTYPE KontrollerLab> |
<PROJECT VERSION="0.8.0-beta1" > |
<FILES> |
<FILE VIEWS="0,0,1024,482,5," SHOWN="TRUE" NAME="a2dtest.c" /> |
<FILE VIEWS="0,0,1024,445,5," SHOWN="TRUE" NAME="a2dtest.c" /> |
<FILE SHOWN="FALSE" NAME="avrlibdefs.h" /> |
<FILE SHOWN="FALSE" NAME="avrlibtypes.h" /> |
<FILE SHOWN="FALSE" NAME="a2d.c" /> |
13,10 → 13,8 |
<FILE SHOWN="FALSE" NAME="rprintf.h" /> |
<FILE SHOWN="FALSE" NAME="timer.c" /> |
<FILE SHOWN="FALSE" NAME="timer.h" /> |
<FILE VIEWS="4,480,1,1,6," SHOWN="TRUE" NAME="uart.c" /> |
<FILE SHOWN="FALSE" NAME="uart.h" /> |
<FILE SHOWN="FALSE" NAME="vt100.c" /> |
<FILE SHOWN="FALSE" NAME="vt100.h" /> |
<FILE SHOWN="FALSE" NAME="uart2.c" /> |
<FILE SHOWN="FALSE" NAME="uart2.h" /> |
</FILES> |
<SETTINGS> |
<ASSEMBLER_COMMAND VALUE="avr-gcc" /> |
29,7 → 27,7 |
<COMPILER_OPT_LEVEL VALUE="s" /> |
<COMPILER_STRICT_PROTOTYPES VALUE="TRUE" /> |
<COMPILER_WALL VALUE="TRUE" /> |
<CPU VALUE="ATMega8" /> |
<CPU VALUE="ATMega64" /> |
<HEX_FILE VALUE="project.hex" /> |
<LINKER_COMMAND VALUE="avr-gcc" /> |
<LINKER_FLAGS VALUE="" /> |
/programy/C/avr/akcelerometr/project.hex |
---|
1,480 → 1,674 |
:100000004AC064C063C05DC6D1C53EC603C61FC634 |
:10001000B0C568C55BC0AFC659C0E2C615C156C001 |
:1000200055C054C053C0084AD73B3BCE016E84BC78 |
:10003000BFFDC12F3D6C74319ABD56833DDA3D0042 |
:10004000C77F11BED9E4BB4C3E916BAAAABE00008B |
:1000500000803F583A256420593A25642066693A61 |
:1000600025642E2564200D0A0030313233343536B4 |
:10007000373839414243444546000000010008003A |
:1000800040000001000400000100080020004000C2 |
:1000900080000001000411241FBECFE5D4E0DEBFC4 |
:1000A000CDBF11E0A0E6B0E0EAEDFCE102C00590B2 |
:1000B0000D92A836B107D9F712E0A8E6B1E001C069 |
:1000C0001D92AA3DB107E1F702D005CE99CF9F92CC |
:1000D000AF92BF92CF92DF92EF92FF920F931F9356 |
:1000E000CF93DF93EBD660E875E280E090E00BD62B |
:1000F00083EA96E060D139D360D014BA15BA87E0AC |
:100100006FD080E072D0CC24DD2410E0C0E0D0E0DD |
:1001100033E5A32E30E0B32E9924939409C080E0F8 |
:1001200079D0C80FD91F81E075D0C80ED91E1F5FC6 |
:100130001032A8F3CE0160E270E0E3DAEB01C050C8 |
:10014000D240C60160E270E0DCDAC12C2EEFD22E84 |
:10015000C60ED71EBE01882777FD8095982F5FD8E1 |
:100160007B018C01B601882777FD8095982F57D8A1 |
:10017000A80197015CDB20E030E044E353E4B5D60E |
:100180002BED3FE049E450E4A5D70ADC1F921F9213 |
:10019000A0D87F936F93DF92CF92DF93CF93BF92DC |
:1001A000AF929F9254D210E08DB79EB70B960FB6C8 |
:1001B000F8949EBF0FBE8DBFB2CF379A359886B1E7 |
:1001C000887F866086B987B18F73806487B93D98D0 |
:1001D000339A1092B9027894089533983798089515 |
:1001E00096B1987F982B96B9089597B18295880F0C |
:1001F000880F807C9F73982B97B9089597B18F7162 |
:10020000907E892B87B90895349A369A089586B1DD |
:10021000807408951092B90297B18F71907E892BE6 |
:1002200087B9349A369A3699FECF24B145B1942FC6 |
:1002300080E030E0282B392BC9010895EBDF96953B |
:1002400087959695879508951F920F920FB60F92F6 |
:1002500011248F938FEF8093B9028F910F900FBE6F |
:100260000F901F901895FC018FB7F89471836083ED |
:100270005383428317821682158214828FBF08959A |
:10028000CF93DF93DC014FB7F894EC018C819D8113 |
:10029000892B11F4E0E01CC0FD0186819781ED916E |
:1002A000FC911197E80FF91FE0810196ED019F8302 |
:1002B0008E832A813B818217930720F0821B930B48 |
:1002C0009F838E83ED018C819D8101979D838C831B |
:1002D0004FBF8E2FDF91CF910895FC014FB7F89457 |
:1002E0008481958168177907B0F486819781860F9C |
:1002F000971F97838683228133818217930720F08B |
:10030000821B930B9783868384819581861B970B31 |
:100310009583848302C0158214824FBF0895FC0127 |
:10032000CB012FB7F8942FBF26813781628173816B |
:10033000820F931FD2D90190F081E02DE80FF91FB1 |
:10034000808108951F93CF93DF93EC01162F4FB751 |
:10035000F8942C813D816A817B812617370790F4C0 |
:100360008E819F81820F931FB8D9E881F981E80FB0 |
:10037000F91F10838C819D8101969D838C834FBFD3 |
:100380008FEF02C04FBF80E0DF91CF911F910895A2 |
:10039000FC018FB7F8948FBF2281338184819581CE |
:1003A000281B390BC9010895FC018FB7F8941582F9 |
:1003B00014828FBF08959093690180936801089516 |
:1003C0001F93182F8A3031F4E0916801F091690190 |
:1003D0008DE00995E0916801F0916901812F0995FF |
:1003E0001F910895CF93DF93EC01009719F405C096 |
:1003F0002196E6DF88818823D9F7DF91CF91089590 |
:10040000EF92FF920F931F93CF93DF938C017A01AA |
:100410000097E1F020E030E02617370738F4F801C4 |
:1004200081918F012F5F3F4F8823B1F7C0E0D0E06B |
:100430000AC0F8018081882319F00F5F1F4F01C0A7 |
:1004400080E2BEDF2196CE15DF0598F3DF91CF91D4 |
:100450001F910F91FF90EF900895CF93DF93EC01E0 |
:10046000009711F406C0ACDFFE0121968491882329 |
:10047000D1F7DF91CF9108958AE0A2DF0895E82FA8 |
:10048000F0E0EF70F070E759FF4FE4918E2F98DFA6 |
:1004900008951F93182F82958F70F1DF812FEFDF62 |
:1004A0001F9108951F93182F892FF3DF812FF1DFFC |
:1004B0001F910895EF92FF920F931F937B018C0180 |
:1004C000C801AA27BB27EEDFC701ECDF1F910F9100 |
:1004D000FF90EF9008952F923F924F925F926F920C |
:1004E0007F928F929F92AF92BF92CF92DF92EF92C4 |
:1004F000FF920F931F93DF93CF93CDB7DEB7A397F0 |
:100500000FB6F894DEBF0FBECDBF4AA32BA33701B1 |
:100510004801442351F017FF08C0EE24FF2487014F |
:10052000E618F7080809190902C084017301262E8C |
:10053000262F215090E03AA1311191E0291B29A3E7 |
:1005400018A2A82EBB24A7FCB094CB2CDB2CC8018E |
:10055000B701A6019501E8D8FB01EF70F070E759EB |
:10056000FF4F64916F8FC801B701A6019501DCD8D8 |
:10057000C901DA017C018D019EE1492E512C4C0EFE |
:100580005D1E39A023C0E114F10401051105B9F085 |
:10059000C801B701A6019501C7D8FB01EF70F07043 |
:1005A000E759FF4F6491F2016083C801B701A601CA |
:1005B0009501BAD8C901DA017C018D0103C02BA1D4 |
:1005C000F20120833A940894410851083320D9F667 |
:1005D000CE014F968C0139A1031B11098AA18823F2 |
:1005E000D9F097FE05C08DE2F80182938F0114C007 |
:1005F000C8010197611471048104910419F08C0100 |
:100600008BE202C08C0180E2F801808305C0F80112 |
:1006100081918F01D5DE2A942220C9F7A3960FB6C7 |
:10062000F894DEBF0FBECDBFCF91DF911F910F9128 |
:10063000FF90EF90DF90CF90BF90AF909F908F9002 |
:100640007F906F905F904F903F902F9008957F9292 |
:100650008F929F92AF92BF92CF92DF92EF92FF92D2 |
:100660000F931F93DF93CF93CDB7DEB77888C988F8 |
:10067000DA8853E1E52EF12CEC0EFD1E13C0882321 |
:1006800081F480E090E0CF91DF911F910F91FF9076 |
:10069000EF90DF90CF90BF90AF909F908F907F9022 |
:1006A00008958EDE96012F5F3F4F772021F0F601EF |
:1006B0006901849103C0F601808169018532F9F6F0 |
:1006C0002F5F3F4F772021F0F6016901849103C02D |
:1006D000F60180816901843629F0883781F08336FC |
:1006E00001F706C000E117E24AE0A42EB12C0CC0CD |
:1006F000F701808122E030E0E20EF31ED2CF00E06D |
:1007000010E130E1A32EB12C22E0822E912C8E0C30 |
:100710009F1CF701E080F1808436A1F4F7FE0FC042 |
:10072000F094E194F108F3948DE24ADE08C0C80128 |
:100730006AE070E0D2D78B016230710518F0E016E4 |
:10074000F106A8F3C701B801C8D7862F98DEC70104 |
:10075000B801C3D77C01C801B501BFD78B016115B2 |
:10076000710581F774019ECF089580E090E0FC014F |
:10077000EE0FFF1FE659FE4F11821082019687305F |
:100780009105A9F783B7887F826083BF12BE89B7BE |
:10079000816089BF1092BA021092BB021092BC0213 |
:1007A0001092BD028EB5887F83608EBD1DBC1CBCBF |
:1007B00089B7846089BF85B5887F846085BD14BC96 |
:1007C00089B7806489BF1092C2021092C30210924E |
:1007D000C4021092C5027894089583B7887F82601E |
:1007E00083BF12BE89B7816089BF1092BA0210928E |
:1007F000BB021092BC021092BD0208958EB5887F94 |
:1008000083608EBD1DBC1CBC89B7846089BF089500 |
:1008100085B5887F846085BD14BC89B7806489BF35 |
:100820001092C2021092C3021092C4021092C5022A |
:10083000089593B7987F982B93BF08959EB5987F9E |
:10084000982B9EBD089595B5987F982B95BD0895DA |
:1008500083B7E82FF0E0E770F070EE0FFF1FE65867 |
:10086000FF4F25913491C90108958EB5E82FF0E02E |
:10087000E770F070EE0FFF1FE658FF4F259134919F |
:10088000C901089585B5E82FF0E0E770F070EE0F2C |
:10089000FF1FEA57FF4F25913491C9010895873012 |
:1008A00040F4E82FF0E0EE0FFF1FE659FE4F718392 |
:1008B00060830895873040F4E82FF0E0EE0FFF1FCB |
:1008C000E659FE4F118210820895EF92FF920F9326 |
:1008D0001F93CF93DF93EC0112B71092BE021092D8 |
:1008E000BF021092C0021092C10283B7E82FF0E05D |
:1008F000E770F070EE0FFF1FE658FF4F259134911F |
:1009000040E050E060E072E18AE790E02FD7B90163 |
:10091000CA01693B2DE8720726E0820720E09207B2 |
:1009200090F437E2C131D30770F49E0140E050E00B |
:10093000B5D628EE33E040E050E0F6D6C901DA0142 |
:10094000BC01CD011FC028EE33E040E050E0ECD602 |
:10095000CA01B9019E0140E050E0A0D613C08091C9 |
:10096000BE029091BF02A091C002B091C10285B7B2 |
:100970008F7885BF85B7806885BF889585B78F7765 |
:1009800085BF08C09B01AC01210F311D411D511DC8 |
:1009900079018A012091BE023091BF024091C002CC |
:1009A0005091C10282B790E0A0E0B0E0542F432FF5 |
:1009B000322F2227822B932BA42BB52B8E159F052C |
:1009C000A007B10760F2DF91CF911F910F91FF90C7 |
:1009D000EF9008951092BA021092BB021092BC02DE |
:1009E0001092BD0208952091BA023091BB0240914D |
:1009F000BC025091BD02B901CA0108951092C20211 |
:100A00001092C3021092C4021092C5020895209160 |
:100A1000C2023091C3024091C4025091C502B90193 |
:100A2000CA010895893031F48FB582608FBD8FB5CA |
:100A30008E7F0AC08A3019F48FB5826002C08FB5EC |
:100A40008D7F8FBD8FB581608FBD1BBC1ABC19BC5B |
:100A500018BC08952FB52E7F2FBD2FB522602FBD56 |
:100A60002EB528602EBD2EB520612EBD97BD86BD4A |
:100A70001BBC1ABC19BC18BC08958FB58D7F8FBDE7 |
:100A80008FB58E7F8FBD8FB58F778FBD8FB58F7BE5 |
:100A90008FBD8FB58F7D8FBD8FB58F7E8FBD089534 |
:100AA0008FB580688FBD8FB58F7B8FBD08958FB553 |
:100AB00080628FBD8FB58F7E8FBD08958FB58F7784 |
:100AC0008FBD8FB58F7B8FBD08958FB58F7D8FBD07 |
:100AD0008FB58F7E8FBD08959BBD8ABD089599BD4A |
:100AE00088BD08951F920F920FB60F9211248F9315 |
:100AF0009F93AF93BF93EF93FF938091BA0290912E |
:100B0000BB02A091BC02B091BD020196A11DB11D16 |
:100B10008093BA029093BB02A093BC02B093BD0233 |
:100B20008091BE029091BF02A091C002B091C1021B |
:100B30000196A11DB11D8093BE029093BF02A093A8 |
:100B4000C002B093C10280916A0190916B01892B20 |
:100B500029F0E0916A01F0916B010995FF91EF9105 |
:100B6000BF91AF919F918F910F900FBE0F901F90EB |
:100B700018951F920F920FB60F9211248F939F9387 |
:100B8000EF93FF9380916C0190916D01892B29F077 |
:100B9000E0916C01F0916D010995FF91EF919F91AA |
:100BA0008F910F900FBE0F901F9018951F920F926C |
:100BB0000FB60F9211248F939F93AF93BF93EF9330 |
:100BC000FF938091C2029091C302A091C402B091A0 |
:100BD000C5020196A11DB11D8093C2029093C3026C |
:100BE000A093C402B093C5028091740190917501E5 |
:100BF000892B29F0E0917401F09175010995FF911D |
:100C0000EF91BF91AF919F918F910F900FBE0F9079 |
:100C10001F9018951F920F920FB60F9211248F9369 |
:100C20009F93EF93FF9380916E0190916F01892BB9 |
:100C300029F0E0916E01F0916F010995FF91EF911C |
:100C40009F918F910F900FBE0F901F9018951F923C |
:100C50000F920FB60F9211248F939F93EF93FF93F0 |
:100C60008091700190917101892B29F0E0917001C0 |
:100C7000F09171010995FF91EF919F918F910F90E4 |
:100C80000FBE0F901F9018951F920F920FB60F92E4 |
:100C900011248F939F93EF93FF9380917201909112 |
:100CA0007301892B29F0E0917201F091730109958C |
:100CB000FF91EF919F918F910F900FBE0F901F901A |
:100CC00018951F920F920FB60F9211248F939F9336 |
:100CD000EF93FF938091760190917701892B29F012 |
:100CE000E0917601F09177010995FF91EF919F9145 |
:100CF0008F910F900FBE0F901F9018959093B80290 |
:100D00008093B70208959B01AC01605C7D4B804FDE |
:100D10009F4FF3E0660F771F881F991FFA95D1F751 |
:100D2000E4E0220F331F441F551FEA95D1F7FCD48E |
:100D30002150304029B930BD089587EC92E00895E4 |
:100D400080ED92E00895982F8091C6028823E1F308 |
:100D50009CB91092C60208951092CC021092CB0258 |
:100D600008958091CB029091CC02892B11F080E004 |
:100D700008958FEF08951F920F920FB60F921124CE |
:100D80006F938F939F93EF93FF936CB18091B70212 |
:100D90009091B802892B39F0E091B702F091B80236 |
:100DA000862F09950EC087EC92E0CCDA882349F4AF |
:100DB0008091D8029091D90201969093D9028093A4 |
:100DC000D802FF91EF919F918F916F910F900FBE7D |
:100DD0000F901F901895682F80ED92E0B3DA089578 |
:100DE0001F920F920FB60F9211248F939F938091B1 |
:100DF000CF02882369F08091D4029091D502892B8B |
:100E000029F080ED92E03CDA8CB905C01092CF0257 |
:100E10008FEF8093C6029F918F910F900FBE0F901E |
:100E20001F9018958FEF8093CF0280ED92E028DA23 |
:100E3000982F8091C6028823E1F39CB91092C602D4 |
:100E40000895CF93DF93EC018091C9029091CA027B |
:100E5000892B61F08091CB029091CC02892B31F0EB |
:100E600087EC92E00DDA88838FEF01C080E0DF919C |
:100E7000CF910895DF93CF930F92CDB7DEB7CE0118 |
:100E80000196DFDF882319F42FEF3FEF03C089813C |
:100E9000282F30E0C9010F90CF91DF9108954FEFD7 |
:100EA00050E068E771E087EC92E0DDD940E450E083 |
:100EB00067E772E080ED92E0D6D90895F0DF1092F6 |
:100EC000B8021092B70288ED8AB960E875E280E056 |
:100ED00090E019DF8FEF8093C6021092CF0210923C |
:100EE000D9021092D80278940895A0E2B0E0EAE71F |
:100EF000F7E057C469837A838B839C832D833E8379 |
:100F00004F835887BE01675F7F4FCE01019656D34E |
:100F1000BE016F5E7F4FCE01059650D3998592300A |
:100F200088F089898230C8F0943019F4823051F405 |
:100F300004C0843029F4923081F480E690E0C6C089 |
:100F4000923049F420E09A858A89981321E02A8713 |
:100F5000CE010996BBC0823049F420E09A858A8987 |
:100F6000981321E02A8BCE014196B0C02D843E8497 |
:100F70004F8458886D887E888F88988CEE24FF2453 |
:100F80008701AA24BB24650140E050E060E070E0E6 |
:100F9000E0E0F0E0C10181709070892BE9F0E60C8F |
:100FA000F71C081D191D9A01AB012A0D3B1D4C1D94 |
:100FB0005D1D80E090E0A0E0B0E0E614F7040805D5 |
:100FC000190520F481E090E0A0E0B0E0BA01A901A9 |
:100FD000480F591F6A1F7B1FAA0CBB1CCC1CDD1CB1 |
:100FE00097FE08C081E090E0A0E0B0E0A82AB92A0E |
:100FF000CA2ADB2A3196E032F10549F0660C771CEB |
:10100000881C991C5694479437942794C3CFFA852B |
:10101000EA892B893C898B859C85280F391F2E5F97 |
:101020003F4F17C0CA0181709070892B61F01695EF |
:101030000795F794E79480E090E0A0E0B0E8E82A14 |
:10104000F92A0A2B1B2B76956795579547952F5FA5 |
:101050003F4F77FDE7CF0CC0440F551F661F771F2A |
:1010600017FD4160EE0CFF1C001F111F2150304086 |
:10107000403090E0590790E0690790E4790760F309 |
:101080002B8F3C8FDB01CA018F779070A070B070FE |
:1010900080349105A105B10561F447FD0AC0E11452 |
:1010A000F1040105110529F0405C5F4F6F4F7F4F40 |
:1010B00040781A8EFE1711F081E08A8F4D8F5E8F77 |
:1010C0006F8F78A383E0898FCE014996A2D1A09635 |
:1010D000E2E183C3A8E1B0E0EFE6F8E06AC3698328 |
:1010E0007A838B839C832D833E834F835887B9E01B |
:1010F000EB2EF12CEC0EFD1EB701CE0101965ED257 |
:101100008E010F5E1F4FB801CE01059657D229857B |
:10111000223008F47CC03989323010F4B8017AC02A |
:101120008A859A8989278A87243011F0223031F400 |
:10113000231709F06CC060E670E06CC0343039F4FD |
:101140001D861E861F86188A1C861B8604C03230A8 |
:1011500021F484E08987B7015DC02B853C858B89AC |
:101160009C89281B390B3C872B87ED84FE840F85D7 |
:101170001889AD88BE88CF88D88CEA14FB040C058A |
:101180001D0540F4EE0CFF1C001F111F21503040C4 |
:101190003C872B8720E030E040E050E080E090E0AA |
:1011A000A0E0B0E46FE170E0EA14FB040C051D055B |
:1011B00040F0282B392B4A2B5B2BEA18FB080C0933 |
:1011C0001D09B695A79597958795EE0CFF1C001FF6 |
:1011D000111F6150704041F7DA01C9018F7790709B |
:1011E000A070B07080349105A105B10561F427FDB0 |
:1011F0000AC0E114F1040105110529F0205C3F4FFC |
:101200004F4F5F4F20782D873E874F87588BBE0109 |
:10121000675F7F4FCB01FDD06896EAE0E6C2A8E0A9 |
:10122000B0E0E4E1F9E0C6C29B01AC0183E0898350 |
:10123000DA01C9018827B7FD83959927AA27BB271B |
:10124000B82E211531054105510519F482E0898335 |
:1012500039C08823A9F0203080E0380780E04807B3 |
:1012600080E8580729F460E070E080E09FEC2EC031 |
:10127000EE24FF248701E21AF30A040B150B02C0C7 |
:1012800079018A018EE1C82ED12CDC82CB82ED82DD |
:10129000FE820F831887C801B7016CD0019718161A |
:1012A000190684F4082E04C0EE0CFF1C001F111F49 |
:1012B0000A94D2F7ED82FE820F831887C81AD90AE2 |
:1012C000DC82CB82BA82CE010196A3D02896E9E0D7 |
:1012D0008DC2ACE0B0E0EEE6F9E073C269837A83D8 |
:1012E0008B839C83BE016B5F7F4FCE01019666D1DD |
:1012F0008D81823061F1823050F1843021F48E8111 |
:10130000882351F12EC02F81388537FD20C06E8192 |
:101310002F3131051CF06623F9F023C08EE190E0F7 |
:10132000821B930B29853A854B855C8504C05695B5 |
:101330004795379527958A95D2F76623B1F0509552 |
:101340004095309521953F4F4F4F5F4F0EC020E0A5 |
:1013500030E040E050E009C02FEF3FEF4FEF5FE794 |
:1013600004C020E030E040E050E8B901CA012C960A |
:10137000E2E043C2EF92FF920F931F937B018C0137 |
:1013800080E0E81680E0F80681E0080780E01807B2 |
:1013900088F48FEFE816F1040105110531F028F00B |
:1013A00088E090E0A0E0B0E017C080E090E0A0E02E |
:1013B000B0E012C080E0E81680E0F80680E00807A0 |
:1013C00081E0180728F088E190E0A0E0B0E004C0D8 |
:1013D00080E190E0A0E0B0E020E230E040E050E0CA |
:1013E000281B390B4A0B5B0B04C016950795F79425 |
:1013F000E7948A95D2F7F701E859FF4F8081281BBF |
:10140000310941095109C9011F910F91FF90EF90D6 |
:101410000895DF92EF92FF920F931F93FC01E480F7 |
:10142000F58006811781D1808081823048F480E088 |
:1014300090E0A0E1B0E0E82AF92A0A2B1B2BA5C016 |
:10144000843009F49FC0823021F4EE24FF24870108 |
:1014500005C0E114F1040105110519F4E0E0F0E024 |
:1014600096C0628173819FEF623879070CF05BC090 |
:1014700022E83FEF261B370B2A3131052CF020E004 |
:1014800030E040E050E02AC0B801A701022E04C0BD |
:1014900076956795579547950A94D2F781E090E045 |
:1014A000A0E0B0E004C0880F991FAA1FBB1F2A95B7 |
:1014B000D2F70197A109B1098E219F21A023B12361 |
:1014C0000097A105B10521F081E090E0A0E0B0E037 |
:1014D0009A01AB01282B392B4A2B5B2BDA01C9016E |
:1014E0008F779070A070B07080349105A105B10520 |
:1014F00039F427FF09C0205C3F4F4F4F5F4F04C0B6 |
:10150000215C3F4F4F4F5F4FE0E0F0E02030A0E024 |
:101510003A07A0E04A07A0E45A0710F0E1E0F0E043 |
:1015200079018A0127C06038710564F5FB01E15833 |
:10153000FF4FD801C7018F779070A070B0708034D2 |
:101540009105A105B10539F4E7FE0DC080E490E0F6 |
:10155000A0E0B0E004C08FE390E0A0E0B0E0E80ECF |
:10156000F91E0A1F1B1F17FF05C016950795F79454 |
:10157000E794319687E016950795F794E7948A9556 |
:10158000D1F705C0EE24FF248701EFEFF0E06E2FC6 |
:10159000679566276795902F9F77D794DD24D7941A |
:1015A0008E2F8695492F462B582F5D29B701CA01EA |
:1015B0001F910F91FF90EF90DF900895FC01DB01E8 |
:1015C000408151812281622F6F7770E0221F222794 |
:1015D000221F9381892F880F822B282F30E0991F9B |
:1015E0009927991FFD0191832115310581F5411539 |
:1015F00051056105710511F482E032C082E89FEF68 |
:10160000FD01938382839A01AB0167E0220F331FB0 |
:10161000441F551F6A95D1F783E08C930AC0220FAF |
:10162000331F441F551FFD018281938101979383CE |
:1016300082832030F0E03F07F0E04F07F0E45F07DF |
:1016400070F3FD01248335834683578308952F3F2C |
:10165000310581F4411551056105710519F484E0E6 |
:101660008C93089564FF03C081E08C9301C01C92A9 |
:10167000FD010FC02F573040FD013383228383E0EB |
:101680008C9387E0440F551F661F771F8A95D1F70B |
:10169000706444835583668377830895629FD00185 |
:1016A000739FF001829FE00DF11D649FE00DF11D1D |
:1016B000929FF00D839FF00D749FF00D659FF00DCC |
:1016C0009927729FB00DE11DF91F639FB00DE11DB9 |
:1016D000F91FBD01CF0111240895AA1BBB1B51E1C5 |
:1016E00007C0AA1FBB1FA617B70710F0A61BB70B92 |
:1016F000881F991F5A95A9F780959095BC01CD0137 |
:10170000089597FB092E07260AD077FD04D0E5DF60 |
:1017100006D000201AF4709561957F4F0895F6F772 |
:10172000909581959F4F0895A1E21A2EAA1BBB1B8D |
:10173000FD010DC0AA1FBB1FEE1FFF1FA217B3079D |
:10174000E407F50720F0A21BB30BE40BF50B661FB3 |
:10175000771F881F991F1A9469F760957095809577 |
:1017600090959B01AC01BD01CF01089597FB092E17 |
:1017700005260ED057FD04D0D7DF0AD0001C38F460 |
:1017800050954095309521953F4F4F4F5F4F0895AD |
:10179000F6F790958095709561957F4F8F4F9F4F8D |
:1017A00008952F923F924F925F926F927F928F9205 |
:1017B0009F92AF92BF92CF92DF92EF92FF920F93E0 |
:1017C0001F93CF93DF93CDB7DEB7CA1BDB0B0FB6EA |
:1017D000F894DEBF0FBECDBF09942A8839884888A7 |
:1017E0005F846E847D848C849B84AA84B984C8843D |
:1017F000DF80EE80FD800C811B81AA81B981CE0F34 |
:10180000D11D0FB6F894DEBF0FBECDBFED01089518 |
:1018100033D158F080E891E009F49EEF34D128F0FC |
:1018200040E851E059F45EEF09C0FEC07DC1E92FE8 |
:10183000E07841D168F3092E052AC1F3261737074E |
:101840004807590738F00E2E07F8E02569F0E02523 |
:10185000E0640AC0EF6307F8009407FADB01B901FE |
:101860009D01DC01CA01AD01EF9341D013D10AD033 |
:101870005F91552331F02BED3FE049E450FD49ECF9 |
:10188000C6C10895DF93DD27B92FBF7740E85FE336 |
:101890001616170648075B0710F4D92F4CD19F93F3 |
:1018A0008F937F936F93AFD1E6E2F0E0C0D0F2D098 |
:1018B0002F913F914F915F914FD1DD2349F0905887 |
:1018C000A2EA2AED3FE049EC5FE3D0785D27B0D192 |
:1018D000DF91E0C0D8D040F0CFD030F021F45F3FAE |
:1018E00019F071C0511121C19FC0E5D098F399231F |
:1018F000C9F35523B1F3951B550BBB27AA276217D4 |
:101900007307840738F09F5F5F4F220F331F441F18 |
:10191000AA1FA9F333D00E2E3AF0E0E830D0915050 |
:101920005040E695001CCAF729D0FE2F27D0660F3D |
:10193000771F881FBB1F261737074807AB07B0E87C |
:1019400009F0BB0B802DBF01FF2793585F4F2AF092 |
:101950009E3F510568F037C0E8C05F3FECF3983E0A |
:10196000DCF3869577956795B795F7959F5FC9F7EF |
:10197000880F911D9695879597F90895E1E0660F78 |
:10198000771F881FBB1F621773078407BA0720F0F1 |
:10199000621B730B840BBA0BEE1F88F7E09508955A |
:1019A000ACD080F09F3740F491110EF0BEC060E0E3 |
:1019B00070E080E89FEB089526F41B16611D711DF1 |
:1019C000811D07C021C097F99F6780E870E060E043 |
:1019D0000895882371F4772321F09850872B762F70 |
:1019E00007C0662311F499270DC09051862B70E033 |
:1019F00060E02AF09A95660F771F881FDAF7880F44 |
:101A00009695879597F908959F3F49F0915028F44E |
:101A1000869577956795B7959F5F80389F4F880F1C |
:101A20009695879597F908959FEF80EC0895DF9339 |
:101A3000CF931F930F93FF92EF92DF927B018C0164 |
:101A4000689405C0DA2EEF0187D0FE01E894A591D5 |
:101A50002591359145915591AEF3EF01E9D0FE0105 |
:101A60009701A801DA9479F7DF90EF90FF900F913A |
:101A70001F91CF91DF91089500240A94161617063E |
:101A800018060906089500240A941216130614066F |
:101A900005060895092E0394000C11F4882352F0D2 |
:101AA000BB0F40F4BF2B11F460FF04C06F5F7F4F8A |
:101AB0008F4F9F4F089557FD9058440F551F59F071 |
:101AC0005F3F71F04795880F97FB991F61F09F3F2B |
:101AD00079F087950895121613061406551FF2CF54 |
:101AE0004695F1DF08C0161617061806991FF1CFA4 |
:101AF00086957105610508940895E5DFA0F0BEE7BD |
:101B0000B91788F4BB279F3860F41616B11D672FEC |
:101B1000782F8827985FF7CF869577956795B11DC1 |
:101B200093959639C8F30895E894BB2766277727DD |
:101B3000CB0197F908959B01AC0160E070E080E86B |
:101B40009FE3C8CA99DF28F09EDF18F0952309F0BB |
:101B50003ACF6ACF1124E9CFAEDFA0F3959FD1F33E |
:101B6000950F50E0551F629FF001729FBB27F00D4B |
:101B7000B11D639FAA27F00DB11DAA1F649F6627A0 |
:101B8000B00DA11D661F829F2227B00DA11D621FEF |
:101B9000739FB00DA11D621F839FA00D611D221FA9 |
:101BA000749F3327A00D611D231F849F600D211D8D |
:101BB000822F762F6A2F11249F5750408AF0E1F030 |
:101BC00088234AF0EE0FFF1FBB1F661F771F881F79 |
:101BD00091505040A9F79E3F510570F0F4CEA5CF2B |
:101BE0005F3FECF3983EDCF3869577956795B79564 |
:101BF000F795E7959F5FC1F7FE2B880F911D96958E |
:101C0000879597F908959B01AC016FC95058BB2780 |
:101C1000AA270ED03FCF30DF30F035DF20F031F48F |
:101C20009F3F11F41EF400CF0EF4E095E7FBCBCEFE |
:101C3000E92F41DF80F3BA1762077307840795071E |
:101C400018F071F49EF570CF0EF4E0950B2EBA2FBC |
:101C5000A02D0B01B90190010C01CA01A0011124B2 |
:101C6000FF27591B99F0593F50F4503E68F11A165E |
:101C7000F040A22F232F342F4427585FF3CF4695EF |
:101C800037952795A795F0405395C9F77EF41F1611 |
:101C9000BA0B620B730B840BBAF09150A1F0FF0FDB |
:101CA000BB1F661F771F881FC2F70EC0BA0F621FC7 |
:101CB000731F841F48F4879577956795B795F795B7 |
:101CC0009E3F08F0B3CF9395880F08F09927EE0F49 |
:0A1CD000979587950895F894FFCFCB |
:101CDA0000000000000000000001020203030303E9 |
:101CEA0004040404040404040505050505050505A2 |
:101CFA000505050505050505060606060606060682 |
:101D0A000606060606060606060606060606060669 |
:101D1A000606060606060606070707070707070751 |
:101D2A000707070707070707070707070707070739 |
:101D3A000707070707070707070707070707070729 |
:101D4A000707070707070707070707070707070719 |
:101D5A000707070707070707080808080808080801 |
:101D6A0008080808080808080808080808080808E9 |
:101D7A0008080808080808080808080808080808D9 |
:101D8A0008080808080808080808080808080808C9 |
:101D9A0008080808080808080808080808080808B9 |
:101DAA0008080808080808080808080808080808A9 |
:101DBA000808080808080808080808080808080899 |
:101DCA000808080808080808080808080808080889 |
:081DDA000808080808080808C1 |
:100000000C947E000C949B000C949B000C949B0021 |
:100010000C949B000C949B000C949B000C949B00F4 |
:100020000C949B000C94B6070C940E070C94990743 |
:100030000C945F070C947C070C94F1060C94420717 |
:100040000C94AA060C949B000C948F080C949B00B3 |
:100050000C9463090C943E020C949B000C949B003E |
:100060000C949B000C949B000C949B000C949B00A4 |
:100070000C949B000C949B000C9480080C949B00A7 |
:100080000C9454090C949B000C949B00084AD73B99 |
:100090003BCE016E84BCBFFDC12F3D6C74319ABD57 |
:1000A00056833DDA3D00C77F11BED9E4BB4C3E917B |
:1000B0006BAAAABE000000803F66693A25642E251F |
:1000C0006420202B2D2025642E2564200D0A00306D |
:1000D00031323334353637383941424344454600AE |
:1000E00000000100080040000001000400000100C1 |
:1000F00008002000400080000001000411241FBE01 |
:10010000CFEFD0E1DEBFCDBF12E0A0E0B1E0E8EF7D |
:10011000F8E202C005900D92A830B107D9F713E0BC |
:10012000A8E0B2E001C01D92A337B107E1F70E9439 |
:100130009D000C947A140C9400002F923F924F92E1 |
:100140005F926F927F928F929F92AF92BF92CF9267 |
:10015000DF92EF92FF920F931F93DF93CF93CDB770 |
:10016000DEB7C650D1400FB6F894DEBF0FBECDBF8C |
:100170000E945B0A40E855E260E070E080E00E9487 |
:10018000DE078EE298E00E94F7020E94E8040E94D7 |
:10019000F6011ABA1BBA87E00E94090280E00E94A9 |
:1001A0000E02882499249E012F5F3E4FCB5FDE4FC5 |
:1001B00039832883C550D14037C080E00E94230294 |
:1001C0007C0181E00E942302A0E0B0E0BC01CD01EF |
:1001D0000E94B90E20E030E84FEF53E40E94D50BA7 |
:1001E0005B016C0100E010E0C801B7010E94B90E8C |
:1001F00020E030E84FEF53E40E94D50BA6019501B3 |
:100200000E94D611F401EE0FFF1FEE0FFF1F21E039 |
:1002100030E02C0F3D1FE20FF31F60837183828358 |
:1002200093830894811C911C30E48316910428F276 |
:100230006E010894C11CD11C460160E070E080E0B2 |
:1002400090E0F40121913191419151914F010E942F |
:10025000060CCB5FDE4F28813981C550D140821614 |
:10026000930679F720E030E040E85CE30E94330C2D |
:100270002BED3FE049E450E40E94060C20E030E022 |
:1002800044E353E40E94330C2BED3FE049E450E497 |
:100290000E942D0DCF5FDE4F688379838A839B8315 |
:1002A000C150D1400F2EF0E0EF2EF0E0FF2EF0E035 |
:1002B0000F2FF0E01F2FF02DCF5FDE4F2881398107 |
:1002C0004A815B81C150D140F60161917191819168 |
:1002D00091916F010E94D50B9B01AC010E94330CE0 |
:1002E0009B01AC01C801B7010E94060C7B018C0187 |
:1002F000C814D90409F720E030E04CE752E40E942A |
:100300002D0D0E94C61320E030E040E05EE30E9425 |
:10031000330C7B018C010E948F120E94650E1B0121 |
:100320002C01B101882777FD8095982F0E94070E38 |
:100330009B01AC01C801B7010E94D50B20E030E061 |
:100340004AE754E40E94330C0E948F123B014C0197 |
:10035000CF5FDE4F688179818A819B81C150D14016 |
:100360000E948F120E94650E5B016C01B501882707 |
:1003700077FD8095982F0E94070E9B01AC01CF5FFF |
:10038000DE4F688179818A819B81C150D1400E9472 |
:10039000D50B20E030E04AE754E40E94330C0E9481 |
:1003A0008F127B018C01C401B3010E94600A7F930C |
:1003B0006F933F922F92C801B7010E94600A7F930A |
:1003C0006F93BF92AF9229EB30E03F932F9381E080 |
:1003D0008F930E945304882499248DB79EB70B965F |
:1003E0000FB6F8949EBF0FBE8DBF1ECF379A3598BB |
:1003F00086B1887F866086B987B18F73806487B93C |
:100400003D98339A10923E03789408953398379824 |
:10041000089596B1987F982B96B9089597B18295D3 |
:10042000880F880F807C9F73982B97B9089597B198 |
:100430008F71907E892B87B90895349A369A0895E2 |
:1004400086B18074089510923E0397B18F71907EAB |
:10045000892B87B9349A369A3699FECF24B145B1A3 |
:10046000942F80E030E0282B392BC90108950E9499 |
:100470002302969587959695879508951F920F92DA |
:100480000FB60F9211248F938FEF80933E038F91BD |
:100490000F900FBE0F901F901895FC018FB7F89426 |
:1004A000718360835383428317821682158214827C |
:1004B0008FBF0895CF93DF93DC014FB7F894EC0121 |
:1004C0008C819D81892B11F4E0E01CC0FD018681A7 |
:1004D0009781ED91FC911197E80FF91FE08101964A |
:1004E000ED019F838E832A813B818217930720F041 |
:1004F000821B930B9F838E83ED018C819D810197DD |
:100500009D838C834FBF8E2FDF91CF910895FC0187 |
:100510004FB7F8948481958168177907B0F4868184 |
:100520009781860F971F9783868322813381821755 |
:10053000930720F0821B930B978386838481958198 |
:10054000861B970B9583848302C0158214824FBF4C |
:100550000895FC01CB012FB7F8942FBF2681378176 |
:1005600062817381820F931F0E943F110190F0817D |
:10057000E02DE80FF91F808108951F93CF93DF933B |
:10058000EC01162F4FB7F8942C813D816A817B8155 |
:100590002617370798F48E819F81820F931F0E9440 |
:1005A0003F11E881F981E80FF91F10838C819D814B |
:1005B00001969D838C834FBF8FEF02C04FBF80E0B9 |
:1005C000DF91CF911F910895FC018FB7F8948FBFF1 |
:1005D0002281338184819581281B390BC9010895BB |
:1005E000FC018FB7F894158214828FBF0895909301 |
:1005F00009028093080208951F93182F8A3031F45E |
:10060000E0910802F09109028DE00995E09108025D |
:10061000F0910902812F09951F910895CF93DF93DF |
:10062000EC01009721F406C021960E94FC0288810B |
:100630008823D1F7DF91CF910895EF92FF920F9326 |
:100640001F93CF93DF938C017A010097E9F020E0AC |
:1006500030E02617370738F4F80181918F012F5FBA |
:100660003F4F8823B1F7C0E0D0E00BC0F801808194 |
:10067000882319F00F5F1F4F01C080E20E94FC0227 |
:100680002196CE15DF0590F3DF91CF911F910F9149 |
:10069000FF90EF900895CF93DF93EC01009719F44A |
:1006A00007C00E94FC02FE01219684918823C9F7AD |
:1006B000DF91CF9108958AE00E94FC020895E82F0F |
:1006C000F0E0EF70F070E153FF4FE4918E2F0E9445 |
:1006D000FC0208951F93182F82958F700E945F036C |
:1006E000812F0E945F031F9108951F93182F892F58 |
:1006F0000E946A03812F0E946A031F910895EF925E |
:10070000FF920F931F937B018C01C801AA27BB277F |
:100710000E947503C7010E9475031F910F91FF90FE |
:10072000EF9008952F923F924F925F926F927F9237 |
:100730008F929F92AF92BF92CF92DF92EF92FF92F1 |
:100740000F931F93DF93CF93CDB7DEB7A3970FB669 |
:10075000F894DEBF0FBECDBF4AA32BA337014801DB |
:10076000442351F017FF08C0EE24FF248701E61848 |
:10077000F7080809190902C084017301262E262FE3 |
:10078000215090E03AA1311191E0291B29A318A230 |
:10079000A82EBB24A7FCB094CB2CDB2CC801B7013E |
:1007A000A60195010E945311FB01EF70F070E15317 |
:1007B000FF4F64916F8FC801B701A60195010E9498 |
:1007C0005311C901DA017C018D019EE1492E512CA2 |
:1007D0004C0E5D1E39A025C0E114F1040105110580 |
:1007E000C9F0C801B701A60195010E945311FB0190 |
:1007F000EF70F070E153FF4F6491F2016083C80124 |
:10080000B701A60195010E945311C901DA017C01CB |
:100810008D0103C02BA1F20120833A940894410872 |
:1008200051083320C9F6CE014F968C0139A1031B24 |
:1008300011098AA18823E1F097FE05C08DE2F80135 |
:1008400082938F0115C0C80101976114710481045E |
:10085000910419F08C018BE202C08C0180E2F80156 |
:10086000808306C0F80181918F010E94FC022A94C6 |
:100870002220C1F7A3960FB6F894DEBF0FBECDBFFE |
:10088000CF91DF911F910F91FF90EF90DF90CF906C |
:10089000BF90AF909F908F907F906F905F904F90A0 |
:1008A0003F902F9008957F928F929F92AF92BF9228 |
:1008B000CF92DF92EF92FF920F931F93DF93CF932C |
:1008C000CDB7DEB77888C988DA8853E1E52EF12CF8 |
:1008D000EC0EFD1E14C0882381F480E090E0CF91DF |
:1008E000DF911F910F91FF90EF90DF90CF90BF901D |
:1008F000AF909F908F907F9008950E94FC02960188 |
:100900002F5F3F4F772021F0F6016901849103C0EA |
:10091000F601808169018532F1F62F5F3F4F772024 |
:1009200021F0F6016901849103C0F601808169011B |
:10093000843629F0883781F08336F9F606C000E165 |
:1009400017E24AE0A42EB12C0CC0F701808122E00E |
:1009500030E0E20EF31ED1CF00E010E130E1A32E33 |
:10096000B12C22E0822E912C8E0C9F1CF701E0808E |
:10097000F1808436B1F4F7FE11C0F094E194F108EF |
:10098000F3948DE20E94FC0209C0C8016AE070E0A5 |
:100990000E943F118B016230710518F0E016F106DC |
:1009A000A0F3C701B8010E943F11862F0E945F0388 |
:1009B000C701B8010E943F117C01C801B5010E9426 |
:1009C0003F118B016115710561F7740198CF08958E |
:1009D00080E090E0FC01EE0FFF1FE65FFD4F11820B |
:1009E0001082019688309105A9F783B7887F8260CD |
:1009F00083BF12BE87B7816087BF10923F031092FA |
:100A0000400310924103109242038EB5887F8360A9 |
:100A10008EBD1DBC1CBC87B7846087BF85B5887F31 |
:100A2000846085BD14BC87B7806487BF109247037C |
:100A3000109248031092490310924A037894089543 |
:100A400083B7887F826083BF12BE87B7816087BF0C |
:100A500010923F0310924003109241031092420300 |
:100A600008958EB5887F83608EBD1DBC1CBC87B782 |
:100A7000846087BF089585B5887F846085BD14BC78 |
:100A800087B7806487BF1092470310924803109283 |
:100A9000490310924A03089593B7987F982B93BF08 |
:100AA00008959EB5987F982B9EBD089595B5987F23 |
:100AB000982B95BD089583B7E82FF0E0E770F070AC |
:100AC000EE0FFF1FE052FF4F25913491C9010895A9 |
:100AD0008EB5E82FF0E0E770F070EE0FFF1FE052E8 |
:100AE000FF4F25913491C901089585B5E82FF0E0B5 |
:100AF000E770F070EE0FFF1FE451FF4F2591349126 |
:100B0000C9010895883040F4E82FF0E0EE0FFF1F90 |
:100B1000E65FFD4F718360830895883040F4E82FCD |
:100B2000F0E0EE0FFF1FE65FFD4F11821082089587 |
:100B3000EF92FF920F931F93CF93DF93EC0112B7C5 |
:100B400010924303109244031092450310924603FF |
:100B500083B7E82FF0E0E770F070EE0FFF1FE05270 |
:100B6000FF4F2591349140E050E060E072E18AE768 |
:100B700090E00E947511B901CA01693B2DE8720726 |
:100B800026E0820720E09207A0F437E2C131D307C4 |
:100B900080F49E0140E050E00E94201128EE33E0F6 |
:100BA00040E050E00E945311C901DA01BC01CD01BF |
:100BB00021C028EE33E040E050E00E945311CA010A |
:100BC000B9019E0140E050E00E94201113C08091C5 |
:100BD000430390914403A0914503B091460385B728 |
:100BE000837E85BF85B7806285BF889585B78F7DF9 |
:100BF00085BF08C09B01AC01210F311D411D511D56 |
:100C000079018A01209143033091440340914503C7 |
:100C10005091460382B790E0A0E0B0E0542F432FFC |
:100C2000322F2227822B932BA42BB52B8E159F05B9 |
:100C3000A007B10760F2DF91CF911F910F91FF9054 |
:100C4000EF90089510923F031092400310924103D9 |
:100C500010924203089520913F0330914003409148 |
:100C6000410350914203B901CA010895109247030C |
:100C7000109248031092490310924A03089520915C |
:100C80004703309148034091490350914A03B90109 |
:100C9000CA010895893031F48FB582608FBD8FB558 |
:100CA0008E7F0AC08A3019F48FB5826002C08FB57A |
:100CB0008D7F8FBD8FB581608FBD1BBC1ABC19BCE9 |
:100CC00018BC08952FB52E7F2FBD2FB522602FBDE4 |
:100CD0002EB528602EBD2EB520612EBD97BD86BDD8 |
:100CE0001BBC1ABC19BC18BC08958FB58D7F8FBD75 |
:100CF0008FB58E7F8FBD8FB58F778FBD8FB58F7B73 |
:100D00008FBD8FB58F7D8FBD8FB58F7E8FBD0895C1 |
:100D10008FB580688FBD8FB58F7B8FBD08958FB5E0 |
:100D200080628FBD8FB58F7E8FBD08958FB58F7711 |
:100D30008FBD8FB58F7B8FBD08958FB58F7D8FBD94 |
:100D40008FB58F7E8FBD08959BBD8ABD089599BDD7 |
:100D500088BD08951F920F920FB60F9211248F93A2 |
:100D60009F93AF93BF93EF93FF9380913F03909135 |
:100D70004003A0914103B09142030196A11DB11D12 |
:100D800080933F0390934003A0934103B0934203A9 |
:100D90008091430390914403A0914503B091460391 |
:100DA0000196A11DB11D8093430390934403A0932A |
:100DB0004503B093460380910A0290910B02892B60 |
:100DC00029F0E0910A02F0910B020995FF91EF9151 |
:100DD000BF91AF919F918F910F900FBE0F901F9079 |
:100DE00018951F920F920FB60F9211248F939F9315 |
:100DF000EF93FF9380910C0290910D02892B29F0C3 |
:100E0000E0910C02F0910D020995FF91EF919F91F5 |
:100E10008F910F900FBE0F901F9018951F920F92F9 |
:100E20000FB60F9211248F939F93AF93BF93EF93BD |
:100E3000FF938091470390914803A0914903B0919B |
:100E40004A030196A11DB11D809347039093480367 |
:100E5000A0934903B0934A03809114029091150224 |
:100E6000892B29F0E0911402F09115020995FF9168 |
:100E7000EF91BF91AF919F918F910F900FBE0F9007 |
:100E80001F9018951F920F920FB60F9211248F93F7 |
:100E90009F93EF93FF938091180290911902892BF1 |
:100EA00029F0E0911802F09119020995FF91EF9154 |
:100EB0009F918F910F900FBE0F901F9018951F92CA |
:100EC0000F920FB60F9211248F939F93EF93FF937E |
:100ED00080910E0290910F02892B29F0E0910E0271 |
:100EE000F0910F020995FF91EF919F918F910F90D3 |
:100EF0000FBE0F901F9018951F920F920FB60F9272 |
:100F000011248F939F93EF93FF9380911002909100 |
:100F10001102892B29F0E0911002F091110209953C |
:100F2000FF91EF919F918F910F900FBE0F901F90A7 |
:100F300018951F920F920FB60F9211248F939F93C3 |
:100F4000EF93FF938091120290911302892B29F065 |
:100F5000E0911202F09113020995FF91EF919F9198 |
:100F60008F910F900FBE0F901F9018951F920F92A8 |
:100F70000FB60F9211248F939F93EF93FF9380915D |
:100F8000160290911702892B29F0E0911602F09138 |
:100F900017020995FF91EF919F918F910F900FBECE |
:100FA0000F901F901895823040F4E82FF0E0EE0F7C |
:100FB000FF1FE65CFC4F7183608308951F93182F19 |
:100FC0009A01AB01CA01B901605C7D4B804F9F4F14 |
:100FD000F3E0660F771F881F991FFA95D1F7E4E0B9 |
:100FE000220F331F441F551FEA95D1F70E9453115A |
:100FF00021503040112329F020939900309398001C |
:1010000003C029B9309390001F910895282F30E034 |
:10101000A3E0220F331FAA95E1F7235B3C4FC901E0 |
:101020000895282F30E0B3E0220F331FBA95E1F77F |
:10103000215A3C4FC9010895E82F882339F0809147 |
:101040009B0085FFFCCF60939C0003C05D9BFECF9F |
:101050006CB9F0E0E55BFC4F108208955D9BFECF1C |
:101060008CB910924B030895982F80919B0085FFB7 |
:10107000FCCF90939C0010924C03089520E0E82F41 |
:10108000F0E083E0EE0FFF1F8A95E1F7EF5AFC4F87 |
:1010900080819181892B09F421E0822F0895CF93DB |
:1010A000DF93882319F060919C0001C06CB1282F58 |
:1010B00030E0E901CC0FDD1FFE01E65CFC4F8081D2 |
:1010C0009181892B31F00190F081E02D862F0995D7 |
:1010D00014C093E0220F331F9A95E1F7C901835B97 |
:1010E0009C4F0E94BD02882341F4FE01E159FC4F50 |
:1010F00080819181019691838083DF91CF910895C2 |
:101100001F920F920FB60F9211248F9381E00E94CD |
:101110004F088F910F900FBE0F901F9018951F9240 |
:101120000F920FB60F9211248F9380E00E944F0808 |
:101130008F910F900FBE0F901F9018958F929F92D6 |
:10114000AF92BF92CF92DF92EF92FF920F931F93D5 |
:10115000CF93DF93882EDB01E82EFF24F70113E005 |
:10116000EE0FFF1F1A95E1F7ED59FC4F20813181F9 |
:10117000240F351FF70173E0EE0FFF1F7A95E1F79B |
:10118000EF59FC4F8081918128173907D0F541151F |
:101190005105B9F19C90670163E0CC0CDD1C6A95A8 |
:1011A000E1F78FE593E0C80ED91E8D01C0E0D0E0D5 |
:1011B0005A010894A108B10806C0F8016081C6016F |
:1011C0000E94BD0221960F5F1F4FCA15DB05A8F3D1 |
:1011D000F701E35AFC4F8FEF8083882039F080912C |
:1011E0009B0085FFFCCF90929C0003C05D9BFECFCF |
:1011F0009CB88BE493E0E80EF91EF70110828FEFA4 |
:1012000001C080E0DF91CF911F910F91FF90EF908F |
:10121000DF90CF90BF90AF909F908F90089590E017 |
:1012200023E0880F991F2A95E1F7815A9C4F0E946D |
:10123000BD020895682F87E693E00E94BD020895DD |
:10124000682F8FE593E00E94BD020895CF93DF934E |
:10125000282FA82FB0E0ED01C35ADC4F88818823E6 |
:10126000E1F0FD0133E0EE0FFF1F3A95E1F7ED5994 |
:10127000FC4F80819181892B79F0222339F087E618 |
:1012800093E00E945A0280939C000BC08FE593E08C |
:101290000E945A028CB905C01882A55BBC4F8FEF23 |
:1012A0008C93DF91CF9108951F920F920FB60F92FA |
:1012B00011248F9381E00E9426098F910F900FBE19 |
:1012C0000F901F9018951F920F920FB60F92112436 |
:1012D0008F9380E00E9426098F910F900FBE0F9090 |
:1012E0001F9018951F93CF93DF93182FC82FD0E02E |
:1012F000FE01E35AFC4F8FEF8083CE0143E0880F5D |
:10130000991F4A95E1F7815A9C4F0E945A02982FE3 |
:10131000112339F080919B0085FFFCCF90939C00B6 |
:1013200003C05D9BFECF9CB9C55BDC4F1882DF918B |
:10133000CF911F910895CF93DF93EB01282F30E0D9 |
:10134000F90173E0EE0FFF1F7A95E1F7E15BFC4FC7 |
:1013500080819181892BC9F0F90163E0EE0FFF1FB5 |
:101360006A95E1F7EF5AFC4F80819181892B69F0F2 |
:1013700053E0220F331F5A95E1F7C901835B9C4F5D |
:101380000E945A0288838FEF01C080E0DF91CF91E5 |
:101390000895DF93CF930F92CDB7DEB7BE016F5F95 |
:1013A0007F4F81E00E949B09882319F42FEF3FEFC4 |
:1013B00003C08981282F30E0C9010F90CF91DF91C0 |
:1013C0000895DF93CF930F92CDB7DEB7BE016F5F65 |
:1013D0007F4F80E00E949B09882319F42FEF3FEF95 |
:1013E00003C08981282F30E0C9010F90CF91DF9190 |
:1013F000089590E0E3E0880F991FEA95E1F7835B99 |
:101400009C4F0E94F002089540E850E06AEA72E0C2 |
:1014100085E593E00E944D0240E150E06AE273E00E |
:1014200087E693E00E944D0208950E94040A1092FC |
:101430003D0310923C0388ED80939A0040E855E20A |
:1014400060E070E081E00E94DE078FEF80934C0344 |
:1014500010925E03109272031092710378940895B3 |
:1014600040E850E06AE172E08DE493E00E944D02B2 |
:1014700040E150E06AE972E08FE593E00E944D029E |
:1014800008950E94300A10923B0310923A0388EDAF |
:101490008AB940E855E260E070E080E00E94DE0733 |
:1014A0008FEF80934B0310925D03109270031092A4 |
:1014B0006F03789408950E94410A0E94150A0895C6 |
:1014C000EF92FF920F931F937B018C0120E030E09D |
:1014D00040E05FE40E94D70D88238CF020E030E0EC |
:1014E00040E05FE4C801B7010E94D50B0E94650E81 |
:1014F0009B01AC01205030404040504806C0C8011C |
:10150000B7010E94650E9B01AC01B901CA011F9190 |
:101510000F91FF90EF900895A0E0B0E0E2E9FAE0CB |
:101520000C949011DC012B01FA019C91923008F48B |
:1015300036C1EB018881823008F430C1943061F407 |
:10154000843009F02CC1FD0191818981981709F43B |
:1015500026C1A0E0B1E023C1843009F41FC182306C |
:10156000A9F4923009F01BC19A01AD0188E0EA01AB |
:101570000990AE01E90109929E018150C1F7E20193 |
:101580008981ED0199818923818306C1923009F413 |
:1015900005C1ED012A803B80EB018A819B81ED0131 |
:1015A000AC80BD80CE80DF80EB01EC80FD800E81C1 |
:1015B0001F819101281B390BB90137FF04C0662731 |
:1015C0007727621B730B603271050CF061C0121635 |
:1015D00013066CF537014801062E04C096948794D3 |
:1015E000779467940A94D2F721E030E040E050E02D |
:1015F00004C0220F331F441F551F6A95D2F7215094 |
:101600003040404050402E213F214023512321159E |
:1016100031054105510521F021E030E040E050E086 |
:1016200079018A01E628F728082919293CC0232BCB |
:10163000D1F1260E371E35014601062E04C09694C0 |
:101640008794779467940A94D2F721E030E040E0E1 |
:1016500050E004C0220F331F441F551F6A95D2F774 |
:1016600021503040404050402A213B214C215D21F7 |
:10167000211531054105510521F021E030E040E020 |
:1016800050E059016A01A628B728C828D9280BC0FC |
:10169000821593052CF01C01AA24BB24650103C00C |
:1016A000EE24FF248701ED019981E20189819817D9 |
:1016B00009F445C0992339F0A80197012A193B097B |
:1016C0004C095D0906C0A60195012E193F09400B82 |
:1016D000510B57FD08C01182338222822483358347 |
:1016E000468357831DC081E081833382228288270D |
:1016F0009927DC01821B930BA40BB50B8483958384 |
:10170000A683B7830DC0220F331F441F551F2483A8 |
:1017100035834683578382819381019793838283A4 |
:101720002481358146815781DA01C9010197A109D8 |
:10173000B1098F5F9F4FAF4FBF4328F30BC0918319 |
:1017400033822282EA0CFB1C0C1D1D1DE482F582F3 |
:101750000683178383E08083248135814681578106 |
:1017600057FF1AC0C901AA2797FDA095BA2F81700B |
:101770009070A070B0705695479537952795822B3D |
:10178000932BA42BB52B84839583A683B783828167 |
:101790009381019693838283DF0101C0D201CD0141 |
:1017A000CDB7DEB7E2E10C94AC11A0E2B0E0EBED16 |
:1017B000FBE00C949C1169837A838B839C832D833B |
:1017C0003E834F835887E9E0EE2EF12CEC0EFD1E90 |
:1017D000B701CE0101960E9456108E010F5E1F4F79 |
:1017E000B801CE0105960E9456108A8991E089279A |
:1017F0008A8BAE01475E5F4FB801C7010E948C0A19 |
:101800000E94810FA096E6E00C94B811A0E2B0E02F |
:10181000ECE0FCE00C949C1169837A838B839C83BD |
:101820002D833E834F835887F9E0EF2EF12CEC0E89 |
:10183000FD1EB701CE0101960E9456108E010F5E6B |
:101840001F4FB801CE0105960E945610AE01475EAB |
:101850005F4FB801C7010E948C0A0E94810FA096B9 |
:10186000E6E00C94B811A0E2B0E0E9E3FCE00C94EF |
:10187000901169837A838B839C832D833E834F836E |
:101880005887BE01675F7F4FCE0101960E945610B8 |
:10189000BE016F5E7F4FCE0105960E94561099855E |
:1018A000923088F089898230C8F0943019F48230FF |
:1018B00051F404C0843029F4923081F480E091E046 |
:1018C000C6C0923049F420E09A858A89981321E0B5 |
:1018D0002A87CE010996BBC0823049F420E09A8560 |
:1018E0008A89981321E02A8BCE014196B0C02D84BD |
:1018F0003E844F8458886D887E888F88988CEE242B |
:10190000FF248701AA24BB24650140E050E060E089 |
:1019100070E0E0E0F0E0C10181709070892BE9F0A7 |
:10192000E60CF71C081D191D9A01AB012A0D3B1D81 |
:101930004C1D5D1D80E090E0A0E0B0E0E614F704EF |
:101940000805190520F481E090E0A0E0B0E0BA01BC |
:10195000A901480F591F6A1F7B1FAA0CBB1CCC1C76 |
:10196000DD1C97FE08C081E090E0A0E0B0E0A82A6E |
:10197000B92ACA2ADB2A3196E032F10549F0660C11 |
:10198000771C881C991C5694479437942794C3CF8E |
:10199000FA85EA892B893C898B859C85280F391F1C |
:1019A0002E5F3F4F17C0CA0181709070892B61F084 |
:1019B00016950795F794E79480E090E0A0E0B0E8F2 |
:1019C000E82AF92A0A2B1B2B769567955795479598 |
:1019D0002F5F3F4F77FDE7CF0CC0440F551F661FA9 |
:1019E000771F17FD4160EE0CFF1C001F111F2150D7 |
:1019F0003040403090E0590790E0690790E4790763 |
:101A000060F32B8F3C8FDB01CA018F779070A07041 |
:101A1000B07080349105A105B10561F447FD0AC09D |
:101A2000E114F1040105110529F0405C5F4F6F4F8F |
:101A30007F4F40781A8EFE1711F081E08A8F4D8F0C |
:101A40005E8F6F8F78A383E0898FCE0149960E94C5 |
:101A5000810FA096E2E10C94AC11A8E1B0E0E3E3C1 |
:101A6000FDE00C94981169837A838B839C832D838A |
:101A70003E834F835887B9E0EB2EF12CEC0EFD1E10 |
:101A8000B701CE0101960E9456108E010F5E1F4FC6 |
:101A9000B801CE0105960E9456102985223008F41F |
:101AA0007CC03989323010F4B8017AC08A859A89AD |
:101AB00089278A87243011F0223031F4231709F066 |
:101AC0006CC060E071E06CC0343039F41D861E8655 |
:101AD0001F86188A1C861B8604C0323021F484E0DD |
:101AE0008987B7015DC02B853C858B899C89281B24 |
:101AF000390B3C872B87ED84FE840F851889AD88D0 |
:101B0000BE88CF88D88CEA14FB040C051D0540F470 |
:101B1000EE0CFF1C001F111F215030403C872B870B |
:101B200020E030E040E050E080E090E0A0E0B0E471 |
:101B30006FE170E0EA14FB040C051D0540F0282B52 |
:101B4000392B4A2B5B2BEA18FB080C091D09B695AB |
:101B5000A79597958795EE0CFF1C001F111F6150EC |
:101B6000704041F7DA01C9018F779070A070B070B2 |
:101B700080349105A105B10561F427FD0AC0E11487 |
:101B8000F1040105110529F0205C3F4F4F4F5F4FD5 |
:101B900020782D873E874F87588BBE01675F7F4F28 |
:101BA000CB010E94810F6896EAE00C94B411A8E181 |
:101BB000B0E0EDEDFDE00C949C1169837A838B839A |
:101BC0009C832D833E834F83588789E0E82EF12C38 |
:101BD000EC0EFD1EB701CE0101960E9456108E013B |
:101BE0000F5E1F4FB801CE0105960E9456108985E1 |
:101BF000823040F08989823028F0B801C7010E9404 |
:101C0000C61001C08FEF6896E6E00C94B811A8E00A |
:101C1000B0E0EDE0FEE00C9499119B01AC0183E093 |
:101C20008983DA01C9018827B7FD83959927AA27F7 |
:101C3000BB27B82E211531054105510519F482E065 |
:101C400089833AC08823A9F0203080E0380780E0FB |
:101C5000480780E8580729F460E070E080E09FECD6 |
:101C600030C0EE24FF248701E21AF30A040B150B9F |
:101C700002C079018A018EE1C82ED12CDC82CB8290 |
:101C8000ED82FE820F831887C801B7010E94320FD0 |
:101C900001971816190684F4082E04C0EE0CFF1CD8 |
:101CA000001F111F0A94D2F7ED82FE820F8318875E |
:101CB000C81AD90ADC82CB82BA82CE0101960E9470 |
:101CC000810F2896E9E00C94B511ACE0B0E0EBE6AA |
:101CD000FEE00C94A01169837A838B839C83BE0100 |
:101CE0006B5F7F4FCE0101960E9456108D8182302E |
:101CF00061F1823050F1843021F48E81882351F1DA |
:101D00002EC02F81388537FD20C06E812F313105DF |
:101D10001CF06623F9F023C08EE190E0821B930B48 |
:101D200029853A854B855C8504C05695479537953E |
:101D300027958A95D2F76623B1F050954095309556 |
:101D400021953F4F4F4F5F4F0EC020E030E040E005 |
:101D500050E009C02FEF3FEF4FEF5FE704C020E0F6 |
:101D600030E040E050E8B901CA012C96E2E00C9462 |
:101D7000BC11A8E0B0E0EFEBFEE00C949A117B01FF |
:101D80008C01611571058105910519F482E0898343 |
:101D900060C083E089838EE1C82ED12CDC82CB82A7 |
:101DA000ED82FE820F831887C801B7010E94320FAF |
:101DB000BC016150704077FF39C0EE27FF27E61B5A |
:101DC000F70B20E030E040E050E081E090E0A0E060 |
:101DD000B0E00E2E04C0880F991FAA1FBB1F0A94E3 |
:101DE000D2F70197A109B1098E219F21A023B12328 |
:101DF0000097A105B10521F021E030E040E050E07E |
:101E000004C016950795F794E794EA95D2F72E2922 |
:101E10003F29402B512B2D833E834F8358878EE1E2 |
:101E200090E0861B970B9C838B8313C06115710513 |
:101E300081F0062E04C0EE0CFF1C001F111F0A9437 |
:101E4000D2F7ED82FE820F831887C61AD70ADC828A |
:101E5000CB821A82CE0101960E94810F2896E8E07B |
:101E60000C94B611EF92FF920F931F937B018C019C |
:101E700080E0E81680E0F80681E0080780E01807B7 |
:101E800088F48FEFE816F1040105110531F028F010 |
:101E900088E090E0A0E0B0E017C080E090E0A0E033 |
:101EA000B0E012C080E0E81680E0F80680E00807A5 |
:101EB00081E0180728F088E190E0A0E0B0E004C0DD |
:101EC00080E190E0A0E0B0E020E230E040E050E0CF |
:101ED000281B390B4A0B5B0B04C016950795F7942A |
:101EE000E7948A95D2F7F701E85FFE4F8081281BBF |
:101EF000310941095109C9011F910F91FF90EF90DC |
:101F00000895DF92EF92FF920F931F93FC01E480FC |
:101F1000F58006811781D1808081823048F480E08D |
:101F200090E0A0E1B0E0E82AF92A0A2B1B2BA5C01B |
:101F3000843009F49FC0823021F4EE24FF2487010D |
:101F400005C0E114F1040105110519F4E0E0F0E029 |
:101F500096C0628173819FEF623879070CF05BC095 |
:101F600022E83FEF261B370B2A3131052CF020E009 |
:101F700030E040E050E02AC0B801A701022E04C0C2 |
:101F800076956795579547950A94D2F781E090E04A |
:101F9000A0E0B0E004C0880F991FAA1FBB1F2A95BC |
:101FA000D2F70197A109B1098E219F21A023B12366 |
:101FB0000097A105B10521F081E090E0A0E0B0E03C |
:101FC0009A01AB01282B392B4A2B5B2BDA01C90173 |
:101FD0008F779070A070B07080349105A105B10525 |
:101FE00039F427FF09C0205C3F4F4F4F5F4F04C0BB |
:101FF000215C3F4F4F4F5F4FE0E0F0E02030A0E02A |
:102000003A07A0E04A07A0E45A0710F0E1E0F0E048 |
:1020100079018A0127C06038710564F5FB01E15838 |
:10202000FF4FD801C7018F779070A070B0708034D7 |
:102030009105A105B10539F4E7FE0DC080E490E0FB |
:10204000A0E0B0E004C08FE390E0A0E0B0E0E80ED4 |
:10205000F91E0A1F1B1F17FF05C016950795F79459 |
:10206000E794319687E016950795F794E7948A955B |
:10207000D1F705C0EE24FF248701EFEFF0E06E2FCB |
:10208000679566276795902F9F77D794DD24D7941F |
:102090008E2F8695492F462B582F5D29B701CA01EF |
:1020A0001F910F91FF90EF90DF900895FC01DB01ED |
:1020B000408151812281622F6F7770E0221F222799 |
:1020C000221F9381892F880F822B282F30E0991FA0 |
:1020D0009927991FFD0191832115310581F541153E |
:1020E00051056105710511F482E032C082E89FEF6D |
:1020F000FD01938382839A01AB0167E0220F331FB6 |
:10210000441F551F6A95D1F783E08C930AC0220FB4 |
:10211000331F441F551FFD018281938101979383D3 |
:1021200082832030F0E03F07F0E04F07F0E45F07E4 |
:1021300070F3FD01248335834683578308952F3F31 |
:10214000310581F4411551056105710519F484E0EB |
:102150008C93089564FF03C081E08C9301C01C92AE |
:10216000FD010FC02F573040FD013383228383E0F0 |
:102170008C9387E0440F551F661F771F8A95D1F710 |
:102180007064448355836683778308951F93CF9348 |
:10219000DF93DC01FB019C91923008F444C0808104 |
:1021A000823008F440C0943051F4ED01198184303C |
:1021B00081F58181682F70E0611B71093CC084301A |
:1021C00021F0923031F48230A1F18181882371F1C4 |
:1021D0002AC0ED0119818230E1F081811817C9F41C |
:1021E000ED012A813B8182819381821793078CF0D4 |
:1021F00028173907B4F0ED018C819D81AE81BF8134 |
:102200002481358146815781281739074A075B07A2 |
:1022100018F4112341F00AC082179307A407B507E9 |
:1022200040F4112319F061E070E005C06FEF7FEF1B |
:1022300002C060E070E0CB01DF91CF911F91089563 |
:10224000629FD001739FF001829FE00DF11D649F9A |
:10225000E00DF11D929FF00D839FF00D749FF00D26 |
:10226000659FF00D9927729FB00DE11DF91F639FC7 |
:10227000B00DE11DF91FBD01CF0111240895AA1B66 |
:10228000BB1B51E107C0AA1FBB1FA617B70710F061 |
:10229000A61BB70B881F991F5A95A9F78095909593 |
:1022A000BC01CD010895A1E21A2EAA1BBB1BFD01A2 |
:1022B0000DC0AA1FBB1FEE1FFF1FA217B307E40725 |
:1022C000F50720F0A21BB30BE40BF50B661F771F7D |
:1022D000881F991F1A9469F760957095809590955D |
:1022E0009B01AC01BD01CF01089597FB092E052686 |
:1022F0000ED057FD04D0D7DF0AD0001C38F450951B |
:102300004095309521953F4F4F4F5F4F0895F6F719 |
:1023100090958095709561957F4F8F4F9F4F089551 |
:102320002F923F924F925F926F927F928F929F92E5 |
:10233000AF92BF92CF92DF92EF92FF920F931F93D3 |
:10234000CF93DF93CDB7DEB7CA1BDB0B0FB6F89484 |
:10235000DEBF0FBECDBF09942A88398848885F84C4 |
:102360006E847D848C849B84AA84B984C884DF8035 |
:10237000EE80FD800C811B81AA81B981CE0FD11D19 |
:102380000FB6F894DEBF0FBECDBFED01089533D177 |
:1023900058F080E891E009F49EEF34D128F040E84D |
:1023A00051E059F45EEF09C0FEC07DC1E92FE0782D |
:1023B00041D168F3092E052AC1F3261737074807CC |
:1023C000590738F00E2E07F8E02569F0E025E064A3 |
:1023D0000AC0EF6307F8009407FADB01B9019D0119 |
:1023E000DC01CA01AD01EF9341D013D10AD05F9156 |
:1023F000552331F02BED3FE049E450FD49EC06CA8E |
:102400000895DF93DD27B92FBF7740E85FE3161605 |
:10241000170648075B0710F4D92F4CD19F938F9371 |
:102420007F936F93FDD1ECE8F0E0C0D0F2D02F9114 |
:102430003F914F915F914FD1DD2349F09058A2EA2F |
:102440002AED3FE049EC5FE3D0785D27F9D1DF91D9 |
:10245000E0C0D8D040F0CFD030F021F45F3F19F089 |
:1024600071C0511121C19FC0E5D098F39923C9F3E0 |
:102470005523B1F3951B550BBB27AA27621773078A |
:10248000840738F09F5F5F4F220F331F441FAA1F3E |
:10249000A9F333D00E2E3AF0E0E830D091505040FE |
:1024A000E695001CCAF729D0FE2F27D0660F771FAC |
:1024B000881FBB1F261737074807AB07B0E809F08E |
:1024C000BB0B802DBF01FF2793585F4F2AF09E3F23 |
:1024D000510568F037C0E8C05F3FECF3983EDCF38D |
:1024E000869577956795B795F7959F5FC9F7880F9C |
:1024F000911D9695879597F90895E1E0660F771FEE |
:10250000881FBB1F621773078407BA0720F0621B7E |
:10251000730B840BBA0BEE1F88F7E0950895ACD0CF |
:1025200080F09F3740F491110EF0BEC060E070E083 |
:1025300080E89FEB089526F41B16611D711D811D17 |
:1025400007C021C097F99F6780E870E060E00895B8 |
:10255000882371F4772321F09850872B762F07C0BA |
:10256000662311F499270DC09051862B70E060E02E |
:102570002AF09A95660F771F881FDAF7880F9695CD |
:10258000879597F908959F3F49F0915028F48695D3 |
:1025900077956795B7959F5F80389F4F880F969581 |
:1025A000879597F908959FEF80EC0895DF93CF9377 |
:1025B0001F930F93FF92EF92DF927B018C0168943F |
:1025C00005C0DA2EEF0187D0FE01E894A591259190 |
:1025D000359145915591AEF3EF0132D1FE0197014E |
:1025E000A801DA9479F7DF90EF90FF900F911F9197 |
:1025F000CF91DF91089500240A9416161706180645 |
:102600000906089500240A941216130614060506F6 |
:102610000895092E0394000C11F4882352F0BB0F87 |
:1026200040F4BF2B11F460FF04C06F5F7F4F8F4FEA |
:102630009F4F089557FD9058440F551F59F05F3F25 |
:1026400071F04795880F97FB991F61F09F3F79F0D4 |
:1026500087950895121613061406551FF2CF469556 |
:10266000F1DF08C0161617061806991FF1CF8695D8 |
:102670007105610508940895E5DFA0F0BEE7B9177C |
:1026800088F4BB279F3860F41616B11D672F782F8A |
:102690008827985FF7CF869577956795B11D9395B5 |
:1026A0009639C8F30895E894BB2766277727CB01AE |
:1026B00097F908959B01AC0160E070E080E89FE32A |
:1026C000CCC999DF28F09EDF18F0952309F03ACFA6 |
:1026D0006ACF1124E9CFAEDFA0F3959FD1F3950F18 |
:1026E00050E0551F629FF001729FBB27F00DB11D96 |
:1026F000639FAA27F00DB11DAA1F649F6627B00D26 |
:10270000A11D661F829F2227B00DA11D621F739F0E |
:10271000B00DA11D621F839FA00D611D221F749F1C |
:102720003327A00D611D231F849F600D211D822F63 |
:10273000762F6A2F11249F5750408AF0E1F08823AA |
:102740004AF0EE0FFF1FBB1F661F771F881F9150B7 |
:102750005040A9F79E3F510570F0F4CEA5CF5F3FE2 |
:10276000ECF3983EDCF3869577956795B795F795EA |
:10277000E7959F5FC1F7FE2B880F911D9695879572 |
:1027800097F9089511F40EF40ECFFDCE5BDFD0F370 |
:102790009923D9F3CEF39F57550B87FFA4D05695B5 |
:1027A0009795B0E020F4660F771F881FBB1F1F931B |
:1027B0000F9300249001A0018001F001A0E80E0F0A |
:1027C0001F1F0A1E511D601B710B8009B50B48F4B9 |
:1027D000600F711F801DB51F0E1B1F0B0A0A5109C8 |
:1027E00007C02E0F3F1F4A1F0E0F1F1F0A1E511D2D |
:1027F000660F771F881FBB1FA695F795E795F8F61C |
:102800000617170708065B07211D311D411D0F9193 |
:102810001F91B901842F9158880F96958795089537 |
:102820009B01AC0120C8E7DE30F0ECDE20F031F493 |
:102830009F3F11F41EF4B7CE0EF4E095E7FB82CE75 |
:10284000E92FF8DE80F3BA1762077307840795074C |
:1028500018F071F49EF527CF0EF4E0950B2EBA2FE9 |
:10286000A02D0B01B90190010C01CA01A001112496 |
:10287000FF27591B99F0593F50F4503E68F11A1642 |
:10288000F040A22F232F342F4427585FF3CF4695D3 |
:1028900037952795A795F0405395C9F77EF41F16F5 |
:1028A000BA0B620B730B840BBAF09150A1F0FF0FBF |
:1028B000BB1F661F771F881FC2F70EC0BA0F621FAB |
:1028C000731F841F48F4879577956795B795F7959B |
:1028D0009E3F08F0B3CF9395880F08F09927EE0F2D |
:1028E00097958795089591505040660F771F881FE0 |
:0828F000D2F70895F894FFCF20 |
:1028F80000000000000000000001020203030303BF |
:102908000404040404040404050505050505050577 |
:102918000505050505050505060606060606060657 |
:10292800060606060606060606060606060606063F |
:102938000606060606060606070707070707070727 |
:10294800070707070707070707070707070707070F |
:1029580007070707070707070707070707070707FF |
:1029680007070707070707070707070707070707EF |
:1029780007070707070707070808080808080808D7 |
:1029880008080808080808080808080808080808BF |
:1029980008080808080808080808080808080808AF |
:1029A800080808080808080808080808080808089F |
:1029B800080808080808080808080808080808088F |
:1029C800080808080808080808080808080808087F |
:1029D800080808080808080808080808080808086F |
:1029E800080808080808080808080808080808085F |
:0829F800080808080808080897 |
:00000001FF |
/programy/C/avr/akcelerometr/project.map |
---|
1,107 → 1,111 |
Archive member included because of file (symbol) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_mulsi3.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_mulsi3.o) |
timer.o (__mulsi3) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_udivmodhi4.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_udivmodhi4.o) |
buffer.o (__udivmodhi4) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_divmodhi4.o) |
a2dtest.o (__divmodhi4) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_udivmodsi4.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_udivmodsi4.o) |
rprintf.o (__udivmodsi4) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_divmodsi4.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_divmodsi4.o) |
timer.o (__divmodsi4) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_exit.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o (exit) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_copy_data.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_exit.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/crtm64.o (exit) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_copy_data.o) |
a2dtest.o (__do_copy_data) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_clear_bss.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_clear_bss.o) |
a2dtest.o (__do_clear_bss) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_fixunssfsi.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_fixunssfsi.o) |
a2dtest.o (__fixunssfsi) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_addsub_sf.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_addsub_sf.o) |
a2dtest.o (__subsf3) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_mul_sf.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_mul_sf.o) |
a2dtest.o (__mulsf3) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_div_sf.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_div_sf.o) |
a2dtest.o (__divsf3) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_ge_sf.o) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_fixunssfsi.o) (__gesf2) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_si_to_sf.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_ge_sf.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_fixunssfsi.o) (__gesf2) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_si_to_sf.o) |
a2dtest.o (__floatsisf) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_sf_to_si.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_sf_to_si.o) |
a2dtest.o (__fixsfsi) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_thenan_sf.o) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_addsub_sf.o) (__thenan_sf) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_prologue.o) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_addsub_sf.o) (__prologue_saves__) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_epilogue.o) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_addsub_sf.o) (__epilogue_restores__) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_clzsi2.o) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_si_to_sf.o) (__clzsi2) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_pack_sf.o) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_addsub_sf.o) (__pack_f) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_unpack_sf.o) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_addsub_sf.o) (__unpack_f) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_fpcmp_parts_sf.o) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_ge_sf.o) (__fpcmp_parts_f) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_clz.o) |
/usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_clzsi2.o) (__clz_tab) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan2.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_thenan_sf.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_addsub_sf.o) (__thenan_sf) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_usi_to_sf.o) |
a2dtest.o (__floatunsisf) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_prologue.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_addsub_sf.o) (__prologue_saves__) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_epilogue.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_addsub_sf.o) (__epilogue_restores__) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_clzsi2.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_si_to_sf.o) (__clzsi2) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_pack_sf.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_addsub_sf.o) (__pack_f) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_unpack_sf.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_addsub_sf.o) (__unpack_f) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_fpcmp_parts_sf.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_ge_sf.o) (__fpcmp_parts_f) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_clz.o) |
/usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_clzsi2.o) (__clz_tab) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan2.o) |
a2dtest.o (atan2) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan2.o) (atan) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(divsf3x.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan2.o) (__divsf3_pse) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(floor.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan2.o) (atan) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(divsf3x.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan2.o) (__divsf3_pse) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(floor.o) |
a2dtest.o (floor) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_inf.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(divsf3x.o) (__fp_inf) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_mintl.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(floor.o) (__fp_mintl) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_mpack.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(floor.o) (__fp_mpack) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_nan.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan2.o) (__fp_nan) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_powser.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan.o) (__fp_powser) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_pscA.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan2.o) (__fp_pscA) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_pscB.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan2.o) (__fp_pscB) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_round.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan2.o) (__fp_round) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_split3.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan2.o) (__fp_split3) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_trunc.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(floor.o) (__fp_trunc) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_zero.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan2.o) (__fp_zero) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(inverse.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan.o) (inverse) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(mulsf3x.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan.o) (__mulsf3x) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(square.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan.o) (square) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(addsf3x.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan.o) (__addsf3x) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_inf.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(divsf3x.o) (__fp_inf) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_mintl.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(floor.o) (__fp_mintl) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_mpack.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(floor.o) (__fp_mpack) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_nan.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan2.o) (__fp_nan) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_powser.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan.o) (__fp_powser) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_pscA.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan2.o) (__fp_pscA) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_pscB.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan2.o) (__fp_pscB) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_round.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan2.o) (__fp_round) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_split3.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan2.o) (__fp_split3) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_trunc.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(floor.o) (__fp_trunc) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_zero.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan2.o) (__fp_zero) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(inverse.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan.o) (inverse) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(mulsf3x.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan.o) (__mulsf3x) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(sqrt.o) |
a2dtest.o (sqrt) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(square.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan.o) (square) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(addsf3x.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan.o) (__addsf3x) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_norm2.o) |
/usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(sqrt.o) (__fp_norm2) |
Allocating common symbols |
Common symbol size file |
uartReadyTx 0x1 uart.o |
uartReadyTx 0x2 uart2.o |
Timer0Reg0 0x4 timer.o |
uartRxBuffer 0x8 uart.o |
uartRxBuffer 0x10 uart2.o |
TimerPauseReg 0x4 timer.o |
Timer2Reg0 0x4 timer.o |
uartBufferedTx 0x1 uart.o |
uartBufferedTx 0x2 uart2.o |
a2dCompleteFlag 0x1 a2d.o |
uartTxBuffer 0x8 uart.o |
uartRxOverflow 0x2 uart.o |
uartTxBuffer 0x10 uart2.o |
uartRxOverflow 0x4 uart2.o |
Memory Configuration |
Name Origin Length Attributes |
text 0x00000000 0x00002000 xr |
text 0x00000000 0x00020000 xr |
data 0x00800060 0x0000ffa0 rw !x |
eeprom 0x00810000 0x00010000 rw !x |
fuse 0x00820000 0x00000400 rw !x |
111,16 → 115,17 |
Linker script and memory map |
LOAD /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o |
Address of section .data set to 0x800100 |
LOAD /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/crtm64.o |
LOAD a2dtest.o |
LOAD a2d.o |
LOAD buffer.o |
LOAD rprintf.o |
LOAD timer.o |
LOAD uart.o |
LOAD /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a |
LOAD /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a |
LOAD /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a |
LOAD uart2.o |
LOAD /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a |
LOAD /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a |
LOAD /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a |
.hash |
*(.hash) |
212,55 → 217,55 |
.rela.plt |
*(.rela.plt) |
.text 0x00000000 0x2186 |
.text 0x00000000 0x28f8 |
*(.vectors) |
.vectors 0x00000000 0x26 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o |
.vectors 0x00000000 0x8c /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/crtm64.o |
0x00000000 __vectors |
0x00000000 __vector_default |
*(.vectors) |
*(.progmem.gcc*) |
.progmem.gcc_fplib |
0x00000026 0x2d /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan.o) |
0x0000008c 0x2d /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan.o) |
*(.progmem*) |
.progmem.data 0x00000053 0x16 a2dtest.o |
.progmem.data 0x00000069 0x11 rprintf.o |
.progmem.data 0x0000007a 0x1c timer.o |
0x00000086 TimerRTCPrescaleFactor |
0x0000007a TimerPrescaleFactor |
0x00000096 . = ALIGN (0x2) |
0x00000096 __trampolines_start = . |
.progmem.data 0x000000b9 0x16 a2dtest.o |
.progmem.data 0x000000cf 0x11 rprintf.o |
.progmem.data 0x000000e0 0x1c timer.o |
0x000000ec TimerRTCPrescaleFactor |
0x000000e0 TimerPrescaleFactor |
0x000000fc . = ALIGN (0x2) |
0x000000fc __trampolines_start = . |
*(.trampolines) |
.trampolines 0x00000096 0x0 linker stubs |
.trampolines 0x000000fc 0x0 linker stubs |
*(.trampolines*) |
0x00000096 __trampolines_end = . |
0x000000fc __trampolines_end = . |
*(.jumptables) |
*(.jumptables*) |
*(.lowtext) |
*(.lowtext*) |
0x00000096 __ctors_start = . |
0x000000fc __ctors_start = . |
*(.ctors) |
0x00000096 __ctors_end = . |
0x00000096 __dtors_start = . |
0x000000fc __ctors_end = . |
0x000000fc __dtors_start = . |
*(.dtors) |
0x00000096 __dtors_end = . |
0x000000fc __dtors_end = . |
SORT(*)(.ctors) |
SORT(*)(.dtors) |
*(.init0) |
.init0 0x00000096 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o |
0x00000096 __init |
.init0 0x000000fc 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/crtm64.o |
0x000000fc __init |
*(.init0) |
*(.init1) |
*(.init1) |
*(.init2) |
.init2 0x00000096 0xc /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o |
.init2 0x000000fc 0xc /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/crtm64.o |
*(.init2) |
*(.init3) |
*(.init3) |
*(.init4) |
.init4 0x000000a2 0x16 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_copy_data.o) |
0x000000a2 __do_copy_data |
.init4 0x000000b8 0x10 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_clear_bss.o) |
0x000000b8 __do_clear_bss |
.init4 0x00000108 0x16 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_copy_data.o) |
0x00000108 __do_copy_data |
.init4 0x0000011e 0x10 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_clear_bss.o) |
0x0000011e __do_clear_bss |
*(.init4) |
*(.init5) |
*(.init5) |
271,225 → 276,256 |
*(.init8) |
*(.init8) |
*(.init9) |
.init9 0x000000c8 0x4 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o |
.init9 0x0000012e 0x8 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/crtm64.o |
*(.init9) |
*(.text) |
.text 0x000000cc 0x2 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o |
0x000000cc __vector_1 |
0x000000cc __vector_12 |
0x000000cc __bad_interrupt |
0x000000cc __vector_17 |
0x000000cc __vector_2 |
0x000000cc __vector_15 |
0x000000cc __vector_10 |
0x000000cc __vector_16 |
0x000000cc __vector_18 |
.text 0x000000ce 0x116 a2dtest.o |
0x000000ce main |
.text 0x000001e4 0xac a2d.o |
0x00000238 a2dIsComplete |
0x00000266 a2dConvert8bit |
0x00000204 a2dOff |
0x0000020a a2dSetPrescaler |
0x0000023e a2dConvert10bit |
0x000001e4 a2dInit |
0x00000214 a2dSetReference |
0x00000272 __vector_14 |
0x00000226 a2dSetChannel |
0x00000232 a2dStartConvert |
.text 0x00000290 0x150 buffer.o |
0x000003ba bufferIsNotFull |
0x000002aa bufferGetFromFront |
0x00000348 bufferGetAtIndex |
0x00000304 bufferDumpFromFront |
0x00000290 bufferInit |
0x0000036e bufferAddToEnd |
0x000003d2 bufferFlush |
.text 0x000003e0 0x3b2 rprintf.o |
0x00000678 rprintf1RamRom |
0x000004bc rprintfu08 |
0x000004de rprintfu32 |
0x0000040e rprintfStr |
0x0000042a rprintfStrLen |
0x00000484 rprintfProgStr |
0x000004ce rprintfu16 |
0x000003e0 rprintfInit |
0x000003ea rprintfChar |
0x000004a2 rprintfCRLF |
0x000004a8 rprintfu04 |
0x00000500 rprintfNum |
.text 0x00000792 0x594 timer.o |
0x00000a38 timer2GetOverflowCount |
0x000008de timerDetach |
0x00000866 timer1SetPrescaler |
0x00000af4 timer1PWMBOff |
0x000008ae timer2GetPrescaler |
0x00000c3e __vector_6 |
0x00000804 timer0Init |
0x00000ae6 timer1PWMAOff |
0x00000b08 timer1PWMBSet |
0x00000cec __vector_3 |
0x00000a7e timer1PWMInitICR |
0x0000087a timer0GetPrescaler |
0x00000c78 __vector_7 |
0x00000a10 timer0GetOverflowCount |
0x00000cb2 __vector_5 |
0x00000794 timerInit |
0x00000870 timer2SetPrescaler |
0x00000aca timer1PWMAOn |
0x0000085c timer0SetPrescaler |
0x00000792 delay_us |
0x00000bd6 __vector_4 |
0x000009fe timer0ClearOverflowCount |
0x00000b0e __vector_9 |
0x00000826 timer1Init |
0x00000a4e timer1PWMInit |
0x00000ad8 timer1PWMBOn |
0x0000083a timer2Init |
0x00000b9c __vector_8 |
0x00000b02 timer1PWMASet |
0x000008c8 timerAttach |
0x00000aa4 timer1PWMOff |
0x00000894 timer1GetPrescaler |
0x00000a26 timer2ClearOverflowCount |
0x000008f4 timerPause |
.text 0x00000d26 0x1ee uart.o |
0x00000e4e uartSendTxBuffer |
0x00000d70 uartSendByte |
0x00000ec8 uartInitBuffers |
0x00000e6c uartReceiveByte |
0x00000e00 uartAddToTxBuffer |
0x00000da0 __vector_11 |
0x00000d26 uartSetRxHandler |
0x00000e0a __vector_13 |
0x00000d82 uartFlushReceiveBuffer |
0x00000ee6 uartInit |
0x00000d8c uartReceiveBufferIsEmpty |
0x00000d30 uartSetBaudRate |
0x00000d6a uartGetTxBuffer |
0x00000e9e uartGetByte |
0x00000d64 uartGetRxBuffer |
.text 0x00000f14 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_mulsi3.o) |
.text 0x00000f14 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_udivmodhi4.o) |
.text 0x00000f14 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_divmodhi4.o) |
.text 0x00000f14 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_udivmodsi4.o) |
.text 0x00000f14 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_divmodsi4.o) |
.text 0x00000f14 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_exit.o) |
.text 0x00000f14 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_copy_data.o) |
.text 0x00000f14 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_clear_bss.o) |
.text 0x00000f14 0x50 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_fixunssfsi.o) |
0x00000f14 __fixunssfsi |
.text 0x00000f64 0x332 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_addsub_sf.o) |
0x000011f2 __subsf3 |
0x00001248 __addsf3 |
.text 0x00001296 0x1ea /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_mul_sf.o) |
0x00001296 __mulsf3 |
.text 0x00001480 0x14a /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_div_sf.o) |
0x00001480 __divsf3 |
.text 0x000015ca 0x56 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_ge_sf.o) |
0x000015ca __gesf2 |
.text 0x00001620 0xb4 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_si_to_sf.o) |
0x00001620 __floatsisf |
.text 0x000016d4 0xa2 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_sf_to_si.o) |
0x000016d4 __fixsfsi |
.text 0x00001776 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_thenan_sf.o) |
.text 0x00001776 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_prologue.o) |
.text 0x00001776 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_epilogue.o) |
.text 0x00001776 0x9e /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_clzsi2.o) |
0x00001776 __clzsi2 |
.text 0x00001814 0x1aa /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_pack_sf.o) |
0x00001814 __pack_f |
.text 0x000019be 0xe0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_unpack_sf.o) |
0x000019be __unpack_f |
.text 0x00001a9e 0xb4 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_fpcmp_parts_sf.o) |
0x00001a9e __fpcmp_parts_f |
.text 0x00001b52 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_clz.o) |
.text 0x00001b52 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan2.o) |
.text 0x00001b52 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan.o) |
.text 0x00001b52 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(divsf3x.o) |
.text 0x00001b52 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(floor.o) |
.text 0x00001b52 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_inf.o) |
.text 0x00001b52 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_mintl.o) |
.text 0x00001b52 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_mpack.o) |
.text 0x00001b52 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_nan.o) |
.text 0x00001b52 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_powser.o) |
.text 0x00001b52 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_pscA.o) |
.text 0x00001b52 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_pscB.o) |
.text 0x00001b52 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_round.o) |
.text 0x00001b52 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_split3.o) |
.text 0x00001b52 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_trunc.o) |
.text 0x00001b52 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_zero.o) |
.text 0x00001b52 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(inverse.o) |
.text 0x00001b52 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(mulsf3x.o) |
.text 0x00001b52 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(square.o) |
.text 0x00001b52 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(addsf3x.o) |
0x00001b52 . = ALIGN (0x2) |
.text 0x00000136 0x4 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/crtm64.o |
0x00000136 __vector_22 |
0x00000136 __vector_28 |
0x00000136 __vector_1 |
0x00000136 __vector_34 |
0x00000136 __vector_24 |
0x00000136 __bad_interrupt |
0x00000136 __vector_6 |
0x00000136 __vector_31 |
0x00000136 __vector_3 |
0x00000136 __vector_23 |
0x00000136 __vector_25 |
0x00000136 __vector_17 |
0x00000136 __vector_19 |
0x00000136 __vector_7 |
0x00000136 __vector_27 |
0x00000136 __vector_5 |
0x00000136 __vector_33 |
0x00000136 __vector_4 |
0x00000136 __vector_2 |
0x00000136 __vector_29 |
0x00000136 __vector_8 |
0x00000136 __vector_26 |
.text 0x0000013a 0x2b2 a2dtest.o |
0x0000013a main |
.text 0x000003ec 0xae a2d.o |
0x00000440 a2dIsComplete |
0x0000046e a2dConvert8bit |
0x0000040c a2dOff |
0x00000412 a2dSetPrescaler |
0x00000446 a2dConvert10bit |
0x000003ec a2dInit |
0x0000041c a2dSetReference |
0x0000047c __vector_21 |
0x0000042e a2dSetChannel |
0x0000043a a2dStartConvert |
.text 0x0000049a 0x154 buffer.o |
0x000005c8 bufferIsNotFull |
0x000004b4 bufferGetFromFront |
0x00000552 bufferGetAtIndex |
0x0000050e bufferDumpFromFront |
0x0000049a bufferInit |
0x0000057a bufferAddToEnd |
0x000005e0 bufferFlush |
.text 0x000005ee 0x3e0 rprintf.o |
0x000008a6 rprintf1RamRom |
0x000006d4 rprintfu08 |
0x000006fe rprintfu32 |
0x0000061c rprintfStr |
0x0000063a rprintfStrLen |
0x00000696 rprintfProgStr |
0x000006ea rprintfu16 |
0x000005ee rprintfInit |
0x000005f8 rprintfChar |
0x000006b6 rprintfCRLF |
0x000006be rprintfu04 |
0x00000724 rprintfNum |
.text 0x000009ce 0x5d8 timer.o |
0x00000c7e timer2GetOverflowCount |
0x00000b1a timerDetach |
0x00000aa2 timer1SetPrescaler |
0x00000ebe __vector_12 |
0x00000d3a timer1PWMBOff |
0x00000aea timer2GetPrescaler |
0x00000a40 timer0Init |
0x00000d2c timer1PWMAOff |
0x00000d4e timer1PWMBSet |
0x00000f32 __vector_11 |
0x00000cc4 timer1PWMInitICR |
0x00000ef8 __vector_13 |
0x00000ab6 timer0GetPrescaler |
0x00000c56 timer0GetOverflowCount |
0x000009d0 timerInit |
0x00000aac timer2SetPrescaler |
0x00000d10 timer1PWMAOn |
0x00000a98 timer0SetPrescaler |
0x000009ce delay_us |
0x00000c44 timer0ClearOverflowCount |
0x00000f6c __vector_9 |
0x00000a62 timer1Init |
0x00000e84 __vector_15 |
0x00000c94 timer1PWMInit |
0x00000d1e timer1PWMBOn |
0x00000a76 timer2Init |
0x00000d48 timer1PWMASet |
0x00000b04 timerAttach |
0x00000cea timer1PWMOff |
0x00000de2 __vector_14 |
0x00000e1c __vector_10 |
0x00000d54 __vector_16 |
0x00000ad0 timer1GetPrescaler |
0x00000c6c timer2ClearOverflowCount |
0x00000b30 timerPause |
.text 0x00000fa6 0x51a uart2.o |
0x000012e4 uartSendTxBuffer |
0x000012a8 __vector_32 |
0x0000109e uartReceiveService |
0x00001038 uartSendByte |
0x00001460 uart0InitBuffers |
0x00001392 uart1GetByte |
0x00001336 uartReceiveByte |
0x0000113c uartSendBuffer |
0x00001100 __vector_30 |
0x000013c2 uart0GetByte |
0x0000121e uartAddToTxBuffer |
0x0000124c uartTransmitService |
0x00000fa6 uartSetRxHandler |
0x00001482 uart0Init |
0x0000142a uart1Init |
0x000013f2 uartFlushReceiveBuffer |
0x000014b6 uartInit |
0x0000105c uart0SendByte |
0x0000107c uartReceiveBufferIsEmpty |
0x00000fbc uartSetBaudRate |
0x00001068 uart1SendByte |
0x00001022 uartGetTxBuffer |
0x0000100c uartGetRxBuffer |
0x00001408 uart1InitBuffers |
0x00001240 uart0AddToTxBuffer |
0x0000111e __vector_18 |
0x00001234 uart1AddToTxBuffer |
0x000012c6 __vector_20 |
.text 0x000014c0 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_mulsi3.o) |
.text 0x000014c0 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_udivmodhi4.o) |
.text 0x000014c0 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_udivmodsi4.o) |
.text 0x000014c0 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_divmodsi4.o) |
.text 0x000014c0 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_exit.o) |
.text 0x000014c0 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_copy_data.o) |
.text 0x000014c0 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_clear_bss.o) |
.text 0x000014c0 0x58 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_fixunssfsi.o) |
0x000014c0 __fixunssfsi |
.text 0x00001518 0x34e /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_addsub_sf.o) |
0x000017aa __subsf3 |
0x0000180c __addsf3 |
.text 0x00001866 0x1f4 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_mul_sf.o) |
0x00001866 __mulsf3 |
.text 0x00001a5a 0x154 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_div_sf.o) |
0x00001a5a __divsf3 |
.text 0x00001bae 0x60 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_ge_sf.o) |
0x00001bae __gesf2 |
.text 0x00001c0e 0xbc /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_si_to_sf.o) |
0x00001c0e __floatsisf |
.text 0x00001cca 0xa8 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_sf_to_si.o) |
0x00001cca __fixsfsi |
.text 0x00001d72 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_thenan_sf.o) |
.text 0x00001d72 0xf2 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_usi_to_sf.o) |
0x00001d72 __floatunsisf |
.text 0x00001e64 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_prologue.o) |
.text 0x00001e64 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_epilogue.o) |
.text 0x00001e64 0x9e /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_clzsi2.o) |
0x00001e64 __clzsi2 |
.text 0x00001f02 0x1aa /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_pack_sf.o) |
0x00001f02 __pack_f |
.text 0x000020ac 0xe0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_unpack_sf.o) |
0x000020ac __unpack_f |
.text 0x0000218c 0xb4 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_fpcmp_parts_sf.o) |
0x0000218c __fpcmp_parts_f |
.text 0x00002240 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_clz.o) |
.text 0x00002240 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan2.o) |
.text 0x00002240 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan.o) |
.text 0x00002240 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(divsf3x.o) |
.text 0x00002240 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(floor.o) |
.text 0x00002240 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_inf.o) |
.text 0x00002240 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_mintl.o) |
.text 0x00002240 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_mpack.o) |
.text 0x00002240 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_nan.o) |
.text 0x00002240 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_powser.o) |
.text 0x00002240 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_pscA.o) |
.text 0x00002240 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_pscB.o) |
.text 0x00002240 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_round.o) |
.text 0x00002240 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_split3.o) |
.text 0x00002240 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_trunc.o) |
.text 0x00002240 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_zero.o) |
.text 0x00002240 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(inverse.o) |
.text 0x00002240 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(mulsf3x.o) |
.text 0x00002240 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(sqrt.o) |
.text 0x00002240 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(square.o) |
.text 0x00002240 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(addsf3x.o) |
.text 0x00002240 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_norm2.o) |
0x00002240 . = ALIGN (0x2) |
*(.text.*) |
.text.libgcc 0x00001b52 0x3e /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_mulsi3.o) |
0x00001b52 __mulsi3 |
.text.libgcc 0x00001b90 0x28 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_udivmodhi4.o) |
0x00001b90 __udivmodhi4 |
.text.libgcc 0x00001bb8 0x26 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_divmodhi4.o) |
0x00001bb8 __divmodhi4 |
0x00001bb8 _div |
.text.libgcc 0x00001bde 0x44 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_udivmodsi4.o) |
0x00001bde __udivmodsi4 |
.text.libgcc 0x00001c22 0x36 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_divmodsi4.o) |
0x00001c22 __divmodsi4 |
.text.libgcc 0x00001c58 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_exit.o) |
.text.libgcc 0x00001c58 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_copy_data.o) |
.text.libgcc 0x00001c58 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_clear_bss.o) |
.text.libgcc 0x00001c58 0x38 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_prologue.o) |
0x00001c58 __prologue_saves__ |
.text.libgcc 0x00001c90 0x36 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_epilogue.o) |
0x00001c90 __epilogue_restores__ |
.text.fplib 0x00001cc6 0x74 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan2.o) |
0x00001ce4 atan2 |
.text.fplib 0x00001d3a 0x50 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan.o) |
0x00001d3a atan |
.text.fplib 0x00001d8a 0xcc /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(divsf3x.o) |
0x00001da0 __divsf3x |
0x00001da4 __divsf3_pse |
.text.fplib 0x00001e56 0x26 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(floor.o) |
0x00001e56 floor |
.text.fplib 0x00001e7c 0xc /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_inf.o) |
0x00001e7c __fp_inf |
.text.fplib 0x00001e88 0x36 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_mintl.o) |
0x00001e88 __fp_mintl |
.text.fplib 0x00001ebe 0x20 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_mpack.o) |
0x00001ebe __fp_mpack |
.text.fplib 0x00001ede 0x6 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_nan.o) |
0x00001ede __fp_nan |
.text.fplib 0x00001ee4 0x4a /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_powser.o) |
0x00001ee4 __fp_powser |
.text.fplib 0x00001f2e 0xe /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_pscA.o) |
0x00001f2e __fp_pscA |
.text.fplib 0x00001f3c 0xe /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_pscB.o) |
0x00001f3c __fp_pscB |
.text.fplib 0x00001f4a 0x22 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_round.o) |
0x00001f4a __fp_round |
.text.fplib 0x00001f6c 0x44 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_split3.o) |
0x00001f6c __fp_split3 |
0x00001f7c __fp_splitA |
.text.fplib 0x00001fb0 0x2e /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_trunc.o) |
0x00001fb0 __fp_trunc |
.text.fplib 0x00001fde 0xe /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_zero.o) |
0x00001fde __fp_zero |
0x00001fe0 __fp_szero |
.text.fplib 0x00001fec 0xe /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(inverse.o) |
0x00001fec inverse |
.text.fplib 0x00001ffa 0xc2 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(mulsf3x.o) |
0x00002012 __mulsf3_pse |
0x0000200e __mulsf3x |
.text.fplib 0x000020bc 0x6 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(square.o) |
0x000020bc square |
.text.fplib 0x000020c2 0xc0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(addsf3x.o) |
0x000020dc __addsf3x |
0x00002182 . = ALIGN (0x2) |
.text.libgcc 0x00002240 0x3e /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_mulsi3.o) |
0x00002240 __mulsi3 |
.text.libgcc 0x0000227e 0x28 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_udivmodhi4.o) |
0x0000227e __udivmodhi4 |
.text.libgcc 0x000022a6 0x44 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_udivmodsi4.o) |
0x000022a6 __udivmodsi4 |
.text.libgcc 0x000022ea 0x36 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_divmodsi4.o) |
0x000022ea __divmodsi4 |
.text.libgcc 0x00002320 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_exit.o) |
.text.libgcc 0x00002320 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_copy_data.o) |
.text.libgcc 0x00002320 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_clear_bss.o) |
.text.libgcc 0x00002320 0x38 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_prologue.o) |
0x00002320 __prologue_saves__ |
.text.libgcc 0x00002358 0x36 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_epilogue.o) |
0x00002358 __epilogue_restores__ |
.text.fplib 0x0000238e 0x74 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan2.o) |
0x000023ac atan2 |
.text.fplib 0x00002402 0x50 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan.o) |
0x00002402 atan |
.text.fplib 0x00002452 0xcc /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(divsf3x.o) |
0x00002468 __divsf3x |
0x0000246c __divsf3_pse |
.text.fplib 0x0000251e 0x26 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(floor.o) |
0x0000251e floor |
.text.fplib 0x00002544 0xc /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_inf.o) |
0x00002544 __fp_inf |
.text.fplib 0x00002550 0x36 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_mintl.o) |
0x00002550 __fp_mintl |
.text.fplib 0x00002586 0x20 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_mpack.o) |
0x00002586 __fp_mpack |
.text.fplib 0x000025a6 0x6 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_nan.o) |
0x000025a6 __fp_nan |
.text.fplib 0x000025ac 0x4a /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_powser.o) |
0x000025ac __fp_powser |
.text.fplib 0x000025f6 0xe /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_pscA.o) |
0x000025f6 __fp_pscA |
.text.fplib 0x00002604 0xe /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_pscB.o) |
0x00002604 __fp_pscB |
.text.fplib 0x00002612 0x22 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_round.o) |
0x00002612 __fp_round |
.text.fplib 0x00002634 0x44 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_split3.o) |
0x00002634 __fp_split3 |
0x00002644 __fp_splitA |
.text.fplib 0x00002678 0x2e /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_trunc.o) |
0x00002678 __fp_trunc |
.text.fplib 0x000026a6 0xe /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_zero.o) |
0x000026a6 __fp_zero |
0x000026a8 __fp_szero |
.text.fplib 0x000026b4 0xe /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(inverse.o) |
0x000026b4 inverse |
.text.fplib 0x000026c2 0xc2 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(mulsf3x.o) |
0x000026da __mulsf3_pse |
0x000026d6 __mulsf3x |
.text.fplib 0x00002784 0x9c /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(sqrt.o) |
0x0000278c sqrt |
.text.fplib 0x00002820 0x6 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(square.o) |
0x00002820 square |
.text.fplib 0x00002826 0xc0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(addsf3x.o) |
0x00002840 __addsf3x |
.text.fplib 0x000028e6 0xe /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_norm2.o) |
0x000028e6 __fp_norm2 |
0x000028f4 . = ALIGN (0x2) |
*(.fini9) |
.fini9 0x00002182 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_exit.o) |
0x00002182 exit |
0x00002182 _exit |
.fini9 0x000028f4 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_exit.o) |
0x000028f4 exit |
0x000028f4 _exit |
*(.fini9) |
*(.fini8) |
*(.fini8) |
508,148 → 544,152 |
*(.fini1) |
*(.fini1) |
*(.fini0) |
.fini0 0x00002182 0x4 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_exit.o) |
.fini0 0x000028f4 0x4 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_exit.o) |
*(.fini0) |
0x00002186 _etext = . |
0x000028f8 _etext = . |
.data 0x00800060 0x108 load address 0x00002186 |
0x00800060 PROVIDE (__data_start, .) |
.data 0x00800100 0x108 load address 0x000028f8 |
0x00800100 PROVIDE (__data_start, .) |
*(.data) |
.data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o |
.data 0x00800060 0x0 a2dtest.o |
.data 0x00800060 0x0 a2d.o |
.data 0x00800060 0x0 buffer.o |
.data 0x00800060 0x0 rprintf.o |
.data 0x00800060 0x0 timer.o |
.data 0x00800060 0x0 uart.o |
.data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_mulsi3.o) |
.data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_udivmodhi4.o) |
.data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_divmodhi4.o) |
.data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_udivmodsi4.o) |
.data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_divmodsi4.o) |
.data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_exit.o) |
.data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_copy_data.o) |
.data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_clear_bss.o) |
.data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_fixunssfsi.o) |
.data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_addsub_sf.o) |
.data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_mul_sf.o) |
.data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_div_sf.o) |
.data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_ge_sf.o) |
.data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_si_to_sf.o) |
.data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_sf_to_si.o) |
.data 0x00800060 0x8 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_thenan_sf.o) |
0x00800060 __thenan_sf |
.data 0x00800068 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_prologue.o) |
.data 0x00800068 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_epilogue.o) |
.data 0x00800068 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_clzsi2.o) |
.data 0x00800068 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_pack_sf.o) |
.data 0x00800068 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_unpack_sf.o) |
.data 0x00800068 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_fpcmp_parts_sf.o) |
.data 0x00800068 0x100 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_clz.o) |
0x00800068 __clz_tab |
.data 0x00800168 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan2.o) |
.data 0x00800168 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan.o) |
.data 0x00800168 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(divsf3x.o) |
.data 0x00800168 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(floor.o) |
.data 0x00800168 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_inf.o) |
.data 0x00800168 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_mintl.o) |
.data 0x00800168 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_mpack.o) |
.data 0x00800168 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_nan.o) |
.data 0x00800168 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_powser.o) |
.data 0x00800168 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_pscA.o) |
.data 0x00800168 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_pscB.o) |
.data 0x00800168 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_round.o) |
.data 0x00800168 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_split3.o) |
.data 0x00800168 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_trunc.o) |
.data 0x00800168 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_zero.o) |
.data 0x00800168 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(inverse.o) |
.data 0x00800168 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(mulsf3x.o) |
.data 0x00800168 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(square.o) |
.data 0x00800168 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(addsf3x.o) |
.data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/crtm64.o |
.data 0x00800100 0x0 a2dtest.o |
.data 0x00800100 0x0 a2d.o |
.data 0x00800100 0x0 buffer.o |
.data 0x00800100 0x0 rprintf.o |
.data 0x00800100 0x0 timer.o |
.data 0x00800100 0x0 uart2.o |
.data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_mulsi3.o) |
.data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_udivmodhi4.o) |
.data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_udivmodsi4.o) |
.data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_divmodsi4.o) |
.data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_exit.o) |
.data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_copy_data.o) |
.data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_clear_bss.o) |
.data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_fixunssfsi.o) |
.data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_addsub_sf.o) |
.data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_mul_sf.o) |
.data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_div_sf.o) |
.data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_ge_sf.o) |
.data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_si_to_sf.o) |
.data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_sf_to_si.o) |
.data 0x00800100 0x8 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_thenan_sf.o) |
0x00800100 __thenan_sf |
.data 0x00800108 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_usi_to_sf.o) |
.data 0x00800108 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_prologue.o) |
.data 0x00800108 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_epilogue.o) |
.data 0x00800108 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_clzsi2.o) |
.data 0x00800108 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_pack_sf.o) |
.data 0x00800108 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_unpack_sf.o) |
.data 0x00800108 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_fpcmp_parts_sf.o) |
.data 0x00800108 0x100 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_clz.o) |
0x00800108 __clz_tab |
.data 0x00800208 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan2.o) |
.data 0x00800208 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan.o) |
.data 0x00800208 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(divsf3x.o) |
.data 0x00800208 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(floor.o) |
.data 0x00800208 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_inf.o) |
.data 0x00800208 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_mintl.o) |
.data 0x00800208 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_mpack.o) |
.data 0x00800208 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_nan.o) |
.data 0x00800208 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_powser.o) |
.data 0x00800208 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_pscA.o) |
.data 0x00800208 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_pscB.o) |
.data 0x00800208 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_round.o) |
.data 0x00800208 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_split3.o) |
.data 0x00800208 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_trunc.o) |
.data 0x00800208 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_zero.o) |
.data 0x00800208 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(inverse.o) |
.data 0x00800208 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(mulsf3x.o) |
.data 0x00800208 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(sqrt.o) |
.data 0x00800208 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(square.o) |
.data 0x00800208 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(addsf3x.o) |
.data 0x00800208 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_norm2.o) |
*(.data*) |
*(.rodata) |
*(.rodata*) |
*(.gnu.linkonce.d*) |
0x00800168 . = ALIGN (0x2) |
0x00800168 _edata = . |
0x00800168 PROVIDE (__data_end, .) |
0x00800208 . = ALIGN (0x2) |
0x00800208 _edata = . |
0x00800208 PROVIDE (__data_end, .) |
.bss 0x00800168 0x172 load address 0x0000228e |
0x00800168 PROVIDE (__bss_start, .) |
.bss 0x00800208 0x16b load address 0x00002a00 |
0x00800208 PROVIDE (__bss_start, .) |
*(.bss) |
.bss 0x00800168 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o |
.bss 0x00800168 0x0 a2dtest.o |
.bss 0x00800168 0x0 a2d.o |
.bss 0x00800168 0x0 buffer.o |
.bss 0x00800168 0x2 rprintf.o |
.bss 0x0080016a 0xe timer.o |
.bss 0x00800178 0x141 uart.o |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_mulsi3.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_udivmodhi4.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_divmodhi4.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_udivmodsi4.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_divmodsi4.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_exit.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_copy_data.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_clear_bss.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_fixunssfsi.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_addsub_sf.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_mul_sf.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_div_sf.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_ge_sf.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_si_to_sf.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_sf_to_si.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_thenan_sf.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_prologue.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_epilogue.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_clzsi2.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_pack_sf.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_unpack_sf.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_fpcmp_parts_sf.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/avr4/libgcc.a(_clz.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan2.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(divsf3x.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(floor.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_inf.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_mintl.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_mpack.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_nan.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_powser.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_pscA.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_pscB.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_round.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_split3.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_trunc.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_zero.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(inverse.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(mulsf3x.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(square.o) |
.bss 0x008002b9 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(addsf3x.o) |
.bss 0x00800208 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/crtm64.o |
.bss 0x00800208 0x0 a2dtest.o |
.bss 0x00800208 0x0 a2d.o |
.bss 0x00800208 0x0 buffer.o |
.bss 0x00800208 0x2 rprintf.o |
.bss 0x0080020a 0x10 timer.o |
.bss 0x0080021a 0x124 uart2.o |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_mulsi3.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_udivmodhi4.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_udivmodsi4.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_divmodsi4.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_exit.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_copy_data.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_clear_bss.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_fixunssfsi.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_addsub_sf.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_mul_sf.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_div_sf.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_ge_sf.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_si_to_sf.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_sf_to_si.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_thenan_sf.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_usi_to_sf.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_prologue.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_epilogue.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_clzsi2.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_pack_sf.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_unpack_sf.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_fpcmp_parts_sf.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/avr5/libgcc.a(_clz.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan2.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(divsf3x.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(floor.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_inf.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_mintl.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_mpack.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_nan.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_powser.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_pscA.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_pscB.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_round.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_split3.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_trunc.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_zero.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(inverse.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(mulsf3x.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(sqrt.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(square.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(addsf3x.o) |
.bss 0x0080033e 0x0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_norm2.o) |
*(.bss*) |
*(COMMON) |
COMMON 0x008002b9 0x1 a2d.o |
0x008002b9 a2dCompleteFlag |
COMMON 0x008002ba 0xc timer.o |
0x008002ba Timer0Reg0 |
0x008002be TimerPauseReg |
0x008002c2 Timer2Reg0 |
COMMON 0x008002c6 0x14 uart.o |
0x008002c6 uartReadyTx |
0x008002c7 uartRxBuffer |
0x008002cf uartBufferedTx |
0x008002d0 uartTxBuffer |
0x008002d8 uartRxOverflow |
0x008002da PROVIDE (__bss_end, .) |
0x00002186 __data_load_start = LOADADDR (.data) |
0x0000228e __data_load_end = (__data_load_start + SIZEOF (.data)) |
COMMON 0x0080033e 0x1 a2d.o |
0x0080033e a2dCompleteFlag |
COMMON 0x0080033f 0xc timer.o |
0x0080033f Timer0Reg0 |
0x00800343 TimerPauseReg |
0x00800347 Timer2Reg0 |
COMMON 0x0080034b 0x28 uart2.o |
0x0080034b uartReadyTx |
0x0080034d uartRxBuffer |
0x0080035d uartBufferedTx |
0x0080035f uartTxBuffer |
0x0080036f uartRxOverflow |
0x00800373 PROVIDE (__bss_end, .) |
0x000028f8 __data_load_start = LOADADDR (.data) |
0x00002a00 __data_load_end = (__data_load_start + SIZEOF (.data)) |
.noinit 0x008002da 0x0 |
0x008002da PROVIDE (__noinit_start, .) |
.noinit 0x00800373 0x0 |
0x00800373 PROVIDE (__noinit_start, .) |
*(.noinit*) |
0x008002da PROVIDE (__noinit_end, .) |
0x008002da _end = . |
0x008002da PROVIDE (__heap_start, .) |
0x00800373 PROVIDE (__noinit_end, .) |
0x00800373 _end = . |
0x00800373 PROVIDE (__heap_start, .) |
.eeprom 0x00810000 0x0 |
*(.eeprom*) |
667,51 → 707,55 |
.signature |
*(.signature*) |
.stab 0x00000000 0x270c |
.stab 0x00000000 0x2b74 |
*(.stab) |
.stab 0x00000000 0x6b4 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o |
.stab 0x000006b4 0x2f4 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan2.o) |
.stab 0x00000000 0x6b4 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/crtm64.o |
.stab 0x000006b4 0x2f4 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan2.o) |
0x300 (size before relaxing) |
.stab 0x000009a8 0x210 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(atan.o) |
.stab 0x000009a8 0x210 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(atan.o) |
0x21c (size before relaxing) |
.stab 0x00000bb8 0x510 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(divsf3x.o) |
.stab 0x00000bb8 0x510 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(divsf3x.o) |
0x51c (size before relaxing) |
.stab 0x000010c8 0x114 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(floor.o) |
.stab 0x000010c8 0x114 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(floor.o) |
0x120 (size before relaxing) |
.stab 0x000011dc 0x78 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_inf.o) |
.stab 0x000011dc 0x78 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_inf.o) |
0x84 (size before relaxing) |
.stab 0x00001254 0x174 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_mintl.o) |
.stab 0x00001254 0x174 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_mintl.o) |
0x180 (size before relaxing) |
.stab 0x000013c8 0xf0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_mpack.o) |
.stab 0x000013c8 0xf0 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_mpack.o) |
0xfc (size before relaxing) |
.stab 0x000014b8 0x54 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_nan.o) |
.stab 0x000014b8 0x54 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_nan.o) |
0x60 (size before relaxing) |
.stab 0x0000150c 0x1ec /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_powser.o) |
.stab 0x0000150c 0x1ec /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_powser.o) |
0x1f8 (size before relaxing) |
.stab 0x000016f8 0x84 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_pscA.o) |
.stab 0x000016f8 0x84 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_pscA.o) |
0x90 (size before relaxing) |
.stab 0x0000177c 0x84 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_pscB.o) |
.stab 0x0000177c 0x84 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_pscB.o) |
0x90 (size before relaxing) |
.stab 0x00001800 0xfc /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_round.o) |
.stab 0x00001800 0xfc /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_round.o) |
0x108 (size before relaxing) |
.stab 0x000018fc 0x1d4 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_split3.o) |
.stab 0x000018fc 0x1d4 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_split3.o) |
0x1e0 (size before relaxing) |
.stab 0x00001ad0 0x144 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_trunc.o) |
.stab 0x00001ad0 0x144 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_trunc.o) |
0x150 (size before relaxing) |
.stab 0x00001c14 0x90 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(fp_zero.o) |
.stab 0x00001c14 0x90 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_zero.o) |
0x9c (size before relaxing) |
.stab 0x00001ca4 0x84 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(inverse.o) |
.stab 0x00001ca4 0x84 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(inverse.o) |
0x90 (size before relaxing) |
.stab 0x00001d28 0x4d4 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(mulsf3x.o) |
.stab 0x00001d28 0x4d4 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(mulsf3x.o) |
0x4e0 (size before relaxing) |
.stab 0x000021fc 0x54 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(square.o) |
.stab 0x000021fc 0x3e4 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(sqrt.o) |
0x3f0 (size before relaxing) |
.stab 0x000025e0 0x54 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(square.o) |
0x60 (size before relaxing) |
.stab 0x00002250 0x4bc /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/libc.a(addsf3x.o) |
.stab 0x00002634 0x4bc /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(addsf3x.o) |
0x4c8 (size before relaxing) |
.stab 0x00002af0 0x84 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/libc.a(fp_norm2.o) |
0x90 (size before relaxing) |
.stabstr 0x00000000 0x3bc |
.stabstr 0x00000000 0x416 |
*(.stabstr) |
.stabstr 0x00000000 0x3bc /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o |
.stabstr 0x00000000 0x416 /usr/lib/gcc/avr/4.3.0/../../../../avr/lib/avr5/crtm64.o |
.stab.excl |
*(.stab.excl) |