/branches/v090d_Ernstl_4-Motoren+Sexpander/debug.c |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/old_macros.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/spi.c |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/debug.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/gps.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/spi.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/led.c |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/main.lst |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/led.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/Spektrum.c |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/spi.lst |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/Spektrum.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/timer0.lst |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/jetimenu.c |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/version.txt |
---|
File deleted |
\ No newline at end of file |
/branches/v090d_Ernstl_4-Motoren+Sexpander/isqrt.lst |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/jetimenu.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/fc.c |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/GPS.c |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/sbus.lst |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/capacity.c |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/fc.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/mymath.c |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/analog.c |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/capacity.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/hottmenu.c |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/mymath.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/rc.c |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/analog.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/hottmenu.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/rc.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/GPS.lst |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/uart.c |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/capacity.lst |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/mymath.lst |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/uart.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/analog.lst |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/isqrt.S |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/user_receiver.lst |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/hottmenu.lst |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/main.c |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/menu.lst |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/jeti_ex.c |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/main.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/uart.lst |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/makefile |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/jeti_ex.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/timer0.c |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/timer0.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/debug.lst |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/isqrt.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/jeti_ex.lst |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/sbus.c |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/License.txt |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/twimaster.c |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/sbus.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/twimaster.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/led.lst |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/libfc.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/printf_P.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/eeprom.c |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/Spektrum.lst |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/eeprom.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/twimaster.lst |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/jetimenu.lst |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/user_receiver.c |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/flight.pnproj |
---|
File deleted |
\ No newline at end of file |
/branches/v090d_Ernstl_4-Motoren+Sexpander/FlightCtrl.aps |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/Hex-Files/Flight-Ctrl_MEGA1284P_V0_90d_SVN.hex |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/menu.c |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/vector.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/eeprom.lst |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/user_receiver.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/fc.lst |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/menu.h |
---|
File deleted |
/branches/v090d_Ernstl_4-Motoren+Sexpander/flight.pnps |
---|
File deleted |
\ No newline at end of file |
/branches/v090d_Ernstl_4-Motoren+Sexpander/rc.lst |
---|
File deleted |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/FlightCtrl.aps |
---|
0,0 → 1,0 |
<AVRStudio><MANAGEMENT><ProjectName>FlightCtrl</ProjectName><Created>15-May-2007 11:20:41</Created><LastEdit>11-Oct-2007 22:58:54</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>15-May-2007 11:20:41</Created><Version>4</Version><Build>4, 13, 0, 528</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>default\Flight-Ctrl.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>F:\SVN\MikroKopter\FlightCtrl\branches\V0.64_ZeroWarnings\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>AVR Simulator</CURRENT_TARGET><CURRENT_PART>ATmega644.xml</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>0</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><Triggers></Triggers></Debugger><AVRGCCPLUGIN><FILES><SOURCEFILE>uart.c</SOURCEFILE><SOURCEFILE>analog.c</SOURCEFILE><SOURCEFILE>eeprom.c</SOURCEFILE><SOURCEFILE>fc.c</SOURCEFILE><SOURCEFILE>GPS.c</SOURCEFILE><SOURCEFILE>main.c</SOURCEFILE><SOURCEFILE>menu.c</SOURCEFILE><SOURCEFILE>printf_P.c</SOURCEFILE><SOURCEFILE>rc.c</SOURCEFILE><SOURCEFILE>timer0.c</SOURCEFILE><SOURCEFILE>twimaster.c</SOURCEFILE><HEADERFILE>uart.h</HEADERFILE><HEADERFILE>_Settings.h</HEADERFILE><HEADERFILE>analog.h</HEADERFILE><HEADERFILE>fc.h</HEADERFILE><HEADERFILE>gps.h</HEADERFILE><HEADERFILE>main.h</HEADERFILE><HEADERFILE>menu.h</HEADERFILE><HEADERFILE>old_macros.h</HEADERFILE><HEADERFILE>printf_P.h</HEADERFILE><HEADERFILE>rc.h</HEADERFILE><HEADERFILE>Settings.h</HEADERFILE><HEADERFILE>timer0.h</HEADERFILE><HEADERFILE>twimaster.h</HEADERFILE></FILES><CONFIGS><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>NO</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE></EXTERNALMAKEFILE><PART>atmega644</PART><HEX>1</HEX><LIST>1</LIST><MAP>1</MAP><OUTPUTFILENAME>Flight-Ctrl.elf</OUTPUTFILENAME><OUTPUTDIR>default\</OUTPUTDIR><ISDIRTY>1</ISDIRTY><OPTIONS><OPTION><FILE>GPS.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>analog.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>eeprom.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>fc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>main.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>menu.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>printf_P.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>rc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>timer0.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>twimaster.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>uart.c</FILE><OPTIONLIST></OPTIONLIST></OPTION></OPTIONS><INCDIRS/><LIBDIRS/><LIBS><LIB>libc.a</LIB><LIB>libm.a</LIB></LIBS><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -Wstrict-prototypes -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -DVERSION_HAUPTVERSION=0 -DVERSION_NEBENVERSION=64 -DVERSION_KOMPATIBEL=5</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>1</USES_WINAVR><GCC_LOC>C:\Program Files\WinAVR\bin\avr-gcc.exe</GCC_LOC><MAKE_LOC>C:\Program Files\WinAVR\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><IOView><usergroups/></IOView><Files><File00000><FileId>00000</FileId><FileName>main.c</FileName><Status>1</Status></File00000><File00001><FileId>00001</FileId><FileName>uart.c</FileName><Status>1</Status></File00001><File00002><FileId>00002</FileId><FileName>menu.c</FileName><Status>1</Status></File00002><File00003><FileId>00003</FileId><FileName>timer0.c</FileName><Status>1</Status></File00003><File00004><FileId>00004</FileId><FileName>fc.c</FileName><Status>1</Status></File00004><File00005><FileId>00005</FileId><FileName>fc.h</FileName><Status>1</Status></File00005><File00006><FileId>00006</FileId><FileName>menu.h</FileName><Status>1</Status></File00006><File00007><FileId>00007</FileId><FileName>TWIMASTER.C</FileName><Status>1</Status></File00007><File00008><FileId>00008</FileId><FileName>twimaster.h</FileName><Status>1</Status></File00008><File00009><FileId>00009</FileId><FileName>uart.h</FileName><Status>1</Status></File00009><File00010><FileId>00010</FileId><FileName>_Settings.h</FileName><Status>1</Status></File00010><File00011><FileId>00011</FileId><FileName>analog.h</FileName><Status>1</Status></File00011><File00012><FileId>00012</FileId><FileName>gps.h</FileName><Status>1</Status></File00012><File00013><FileId>00013</FileId><FileName>main.h</FileName><Status>1</Status></File00013><File00014><FileId>00014</FileId><FileName>old_macros.h</FileName><Status>1</Status></File00014><File00015><FileId>00015</FileId><FileName>printf_P.h</FileName><Status>1</Status></File00015><File00016><FileId>00016</FileId><FileName>rc.h</FileName><Status>1</Status></File00016><File00017><FileId>00017</FileId><FileName>Settings.h</FileName><Status>1</Status></File00017><File00018><FileId>00018</FileId><FileName>timer0.h</FileName><Status>1</Status></File00018></Files><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio> |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/GPS.c |
---|
0,0 → 1,16 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) Holger Buss, Ingo Busker |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
signed int GPS_Nick = 0; |
signed int GPS_Roll = 0; |
unsigned char GPS_Aid_StickMultiplikator = 0; // 64 = 100% |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/GPS.lst |
---|
0,0 → 1,37 |
1 .file "GPS.c" |
2 .arch atmega1284p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .global GPS_Aid_StickMultiplikator |
11 .global GPS_Aid_StickMultiplikator |
12 .section .bss |
15 GPS_Aid_StickMultiplikator: |
16 0000 00 .skip 1,0 |
17 .global GPS_Roll |
18 .global GPS_Roll |
21 GPS_Roll: |
22 0001 0000 .skip 2,0 |
23 .global GPS_Nick |
24 .global GPS_Nick |
27 GPS_Nick: |
28 0003 0000 .skip 2,0 |
29 /* File "GPS.c": code 0 = 0x0000 ( 0), prologues 0, epilogues 0 */ |
DEFINED SYMBOLS |
*ABS*:00000000 GPS.c |
C:\Temp/ccF4dSPb.s:3 *ABS*:0000003f __SREG__ |
C:\Temp/ccF4dSPb.s:4 *ABS*:0000003e __SP_H__ |
C:\Temp/ccF4dSPb.s:5 *ABS*:0000003d __SP_L__ |
C:\Temp/ccF4dSPb.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Temp/ccF4dSPb.s:7 *ABS*:00000001 __zero_reg__ |
C:\Temp/ccF4dSPb.s:15 .bss:00000000 GPS_Aid_StickMultiplikator |
C:\Temp/ccF4dSPb.s:21 .bss:00000001 GPS_Roll |
C:\Temp/ccF4dSPb.s:27 .bss:00000003 GPS_Nick |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/Hex-Files/Flight-Ctrl_MEGA1284P_V0_90d_SVN.hex |
---|
0,0 → 1,4714 |
:100000000C94F9080C9448090C9448090C9448097C |
:100010000C9448090C9448090C9448090C9448091C |
:100020000C9448090C94591C0C9448090C944809E8 |
:100030000C946A360C9448090C9448090C944809AD |
:100040000C9448090C9448090C947C180C944809A9 |
:100050000C94AA0E0C9448090C94740E0C94480944 |
:100060000C94491F0C9448090C94F0310C944809E5 |
:100070000C94668F0C9448090C9495860C9448094E |
:100080000C9448090C9448090C944809701F751F7A |
:100090007A1F831F9A1FB11FC11FD11F0C20F5218A |
:1000A000B11FB720C820F720152132218C21E7216C |
:1000B0000224CF245E25DE251626B926C0282A294B |
:1000C000A429ED29372A652A922AF52A3F2B892B64 |
:1000D000822C0F3243328632F6320E334F330634DF |
:1000E000CD34CD34CD34CD34CD34CD34CD34CD3408 |
:1000F000CD34CD34CD34823484348934A134A33426 |
:10010000F469B36A386B676A8E6BBE6B286A966A4D |
:1001100098773678BB781D797179DA793A815B7A8C |
:100120008D7A8D7A8D7A8D7A8D7A8D7A8D7A8D7A97 |
:100130008D7ABB7A367BCB7BF07B337C8B7C167DD8 |
:10014000FF7D667E667E667E667E667E667E667EF7 |
:10015000667E667E9E7EBC7EE17E3D7F797FE87F07 |
:100160001580B5803A81158115811581158115811C |
:10017000158115811581B98DBC8DBC8DBC8DC58D4A |
:10018000C88DCB8DDD8DDA8D0A0D3D3D3D3D3D3D6C |
:100190003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D8F |
:1001A0003D3D3D3D3D3D3D3D3D3D3D3D3D000A0D1F |
:1001B000426174743A002025642043656C6C73209E |
:1001C00000204C6F77207761726E696E673A202548 |
:1001D000642E2564000A0D466F756E6420424C2D16 |
:1001E0004374726C3A20002564000A0D0A0D212127 |
:1001F000204D495353494E4720424C2D4354524CB5 |
:100200003A202564202121000A0D43616C69627245 |
:100210006174696E6720707265737375726520739F |
:10022000656E736F722E2E004F4B0A0D000A0D463D |
:100230006C696768742D74696D65202575206D691A |
:100240006E20546F74616C3A2575206D696E0041A3 |
:100250006E676C654E69636B202020202020204152 |
:100260006E676C65526F6C6C20202020202020412E |
:1002700063634E69636B20202020202020202041D2 |
:100280006363526F6C6C2020202020202020205996 |
:1002900061774779726F202020202020202020487D |
:1002A00065696768742056616C756520202020415F |
:1002B00063635A2020202020202020202020204757 |
:1002C0006173202020202020202020202020204377 |
:1002D0006F6D706173732056616C756520202056B8 |
:1002E0006F6C74616765205B302E31565D20205243 |
:1002F00065636569766572204C6576656C2020477C |
:1003000079726F20436F6D70617373202020204DD0 |
:100310006F746F7220312020202020202020204D5B |
:100320006F746F7220322020202020202020204D4A |
:100330006F746F7220332020202020202020204D39 |
:100340006F746F7220342020202020202020203144 |
:100350003620202020202020202020202020203176 |
:100360003720202020202020202020202020203165 |
:100370003820202020202020202020202020203154 |
:100380003920202020202020202020202020205321 |
:100390006572766F202020202020202020202048F9 |
:1003A0006F76657267617320202020202020204313 |
:1003B000757272656E74205B302E31415D20204372 |
:1003C00061706163697479205B6D41685D202048CC |
:1003D000656967687420536574706F696E74203244 |
:1003E00035202020202020202020202020202032E6 |
:1003F00036202020202020202020202020202043C4 |
:100400006F6D7061737320536574706F696E74499A |
:1004100032432D4572726F7220202020202020420E |
:100420004C204C696D69742020202020202020471A |
:1004300050535F4E69636B202020202020202047EE |
:1004400050535F526F6C6C202020202020202021F0 |
:10045000212120494E434F4D50415449424C4520A3 |
:10046000212121002A002E000A0D20444143206F43 |
:100470007220493243204552524F52212043686531 |
:10048000636B204932432C2033567265662C20441E |
:10049000414320616E6420424C2D4374726C005BBA |
:1004A00025695D005B25695D002B204D696B726FCE |
:1004B0004B6F70746572202B0048573A5625642E96 |
:1004C00025642053573A25642E256425632056342D |
:1004D0000053657474696E673A2564202573004D76 |
:1004E00069786572204572726F72210045525225FB |
:1004F00032643A00486172647761726520457272B5 |
:100500006F7220313A2564202121004D697373698F |
:100510006E6720424C2D4374726C3A256421210091 |
:10052000493243204552524F5221212100486569EA |
:100530006768743A202025356900536574706F69C7 |
:100540006E743A2535690050726573737572653A39 |
:10055000253569004F66667365743A202025356934 |
:100560000048656967687420636F6E74726F6C0011 |
:1005700044495341424C4544006163742E206265F6 |
:100580006172696E67004E69636B3A2020202020FB |
:100590002025356900526F6C6C3A202020202020E5 |
:1005A00025356900436F6D706173733A20202025F3 |
:1005B0003569004B25693A25346920204B25693A75 |
:1005C00025346920004E693A2534692020526F3A5B |
:1005D000253469200047733A253469202047693A59 |
:1005E000253469200050313A253469202050323AB0 |
:1005F000253469200050333A253469202050343A9C |
:1006000025346920004779726F202D2053656E7361 |
:100610006F72004E69636B25346920282533692E7B |
:1006200025692900526F6C6C2534692028253369AF |
:100630002E256929004769657225346920282533EC |
:100640006929004E69636B202534692028253369A8 |
:100650002E25782900526F6C6C20253469202825BE |
:1006600033692E25782900596177202025346920A7 |
:100670002825336929004E69636B202534692028B9 |
:1006800025336929282533692900526F6C6C202590 |
:1006900034692028253369292825336929005961BF |
:1006A00077202025346920282533692928253369B6 |
:1006B0002900414343202D2053656E736F72004E15 |
:1006C00069636B2025346920282533692900526F1E |
:1006D0006C6C20253469202825336929005A202094 |
:1006E000202025346920282533692900566F6C7431 |
:1006F0006167653A2020202533692E25316956002F |
:1007000043757272656E743A2020202533692E2558 |
:1007100031694100506F7765723A202020202025F2 |
:10072000346957004469736368617267653A2025CC |
:1007300035696D416800526563656976657200527E |
:10074000432D525353493A2020202025346900522A |
:10075000432D5175616C6974793A202534690052D2 |
:10076000432D4368616E6E656C733A2534690043AE |
:100770006F6D70617373004D61676E65743A202010 |
:1007800020253569004779726F3A202020202025E6 |
:10079000356900536574706F696E743A2025356948 |
:1007A00000506F746925693A202025336900506F25 |
:1007B000746925693A202025336900536572766F84 |
:1007C000202000536574706F696E74202025336992 |
:1007D00000506F736974696F6E3A20253369005257 |
:1007E000616E67653A2533692D25336900424C2DCA |
:1007F0004374726C204572726F72732000253364EB |
:100800002025336420253364202533642000424CA6 |
:100810002054656D7065726174757265002533646E |
:100820002025336420253364202533642000424C86 |
:100830002D4374726C20666F756E642000202563F2 |
:1008400020202025632020202563202020256320D0 |
:1008500000202563202020256320202025632020E0 |
:1008600020256320002025632020202D2020202DFE |
:100870002020202D2000313000313100313200465F |
:100880006C696768742D54696D65202000546F741D |
:10089000616C3A2535756D696E004163743A2020AC |
:1008A0002535756D696E0028726573657429000AB7 |
:1008B0000D47656E65726174696E67206465666177 |
:1008C000756C7420506172616D657465722053653A |
:1008D00074202564000A0D5573696E67205061729B |
:1008E000616D6574657220536574202564000A0D7E |
:1008F00047656E65726174696E67206465666175CF |
:100900006C74204D69786572205461626C65000AD0 |
:100910000D4D697865722D436F6E6669673A2027C1 |
:1009200025732720282575204D6F746F7273290059 |
:100930000A0D414343206E6F742063616C696272DB |
:1009400061746564210D0A0000008F001E01AD0175 |
:100950003B02CA025803E603740402058F051B0616 |
:10096000A7063307BE074808D2085B09E3096B0AEC |
:10097000F20A780BFD0B810C040D860D070E870E15 |
:10098000060F840F00107B10F5106E11E5115B123D |
:10099000CF124213B31323149214FE146A15D31505 |
:1009A0003B16A11605176717C81727188318DE18F6 |
:1009B00037198E19E319361A871AD61A231B6E1B9C |
:1009C000B61BFD1B411C831CC31C001D3C1D751D5B |
:1009D000AB1DE01D121E421E6F1E9A1EC31EE91E95 |
:1009E0000D1F2E1F4D1F691F841F9B1FB01FC31F8C |
:1009F000D31FE11FEC1FF51FFB1FFF1F002000008E |
:100A000005000500040106010800060102000400BB |
:100A100004000700070007000700070007000700A1 |
:100A200003010301050017010F01060009010A0176 |
:100A300019010501050119011A010F0100004E6F8E |
:100A4000204572726F722020202020202020004E2E |
:100A50006F7420636F6D70617469626C6520200033 |
:100A60004D4B334D6167206E6F7420636F6D706105 |
:100A7000004E6F20464320636F6D6D756E69636134 |
:100A80007400436F6D7061737320636F6D6D756E6D |
:100A900069630047505320636F6D6D756E696361C4 |
:100AA00074696F00636F6D706173732076616C752C |
:100AB00065202020005243205369676E616C206CD2 |
:100AC0006F73742020004643207370692072782071 |
:100AD0006572726F7220004E6F204E4320636F6DFF |
:100AE0006D756E69636174004643204E69636B20C7 |
:100AF0004779726F2020202000464320526F6C6C93 |
:100B0000204779726F2020202000464320596177CA |
:100B1000204779726F2020202020004643204E6914 |
:100B2000636B204143432020202020004643205275 |
:100B30006F6C6C204143432020202020004643203E |
:100B40005A2D414343202020202020202000507295 |
:100B50006573737572652073656E736F72200049DB |
:100B600032432046432D3E424C2D4374726C20008C |
:100B7000426C204D697373696E672020202020200D |
:100B8000004D69786572204572726F7220202020B6 |
:100B900020004361726566726565204572726F72EE |
:100BA00020200047505320466978206C6F737420D2 |
:100BB000202020004D61676E6574204572726F724F |
:100BC00020202020004D6F746F7220726573746155 |
:100BD000727420202000424C204C696D697461744D |
:100BE000696F6E202020004750532052616E676568 |
:100BF00020202020202020004E6F2053442D4361D0 |
:100C000072642020202020200053442D4C6F676701 |
:100C1000696E67206572726F7200466C79696E67E3 |
:100C20002072616E676521202020004D617820418F |
:100C30006C74697475646521202020004E6F204714 |
:100C400050532066697820202020202000636F6D9B |
:100C500070617373206E6F742063616C2E002021AD |
:100C600021204C69506F20766F6C7461676520217C |
:100C70002120200020202020204D696B726F4B6FB7 |
:100C80007074657220202020200020202020202049 |
:100C90002020202020202020202020202020200074 |
:100CA00020202532692E253169562020002020255C |
:100CB00032692E25316956202000414C543A2534A2 |
:100CC000696D20256300414C543A2534696D20201C |
:100CD00000414C543A2D2D2D2D2000202025326925 |
:100CE0003A2530326920200020202532693A25300B |
:100CF00032692020004449523A202533642563009C |
:100D000043002000202025356920200020202535A3 |
:100D100069202000493A2532692E25316941200099 |
:100D20003A003A003A002D2D2D2D2D2D2D2D2D2B55 |
:100D30002D2D2D2D2D2D2D2D2D2D2D002D2D2D2D10 |
:100D40002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DD3 |
:100D50002D003A005341543A25326420004449534F |
:100D6000543A2533646D00442000334400212100AF |
:100D70004D41473A25337525252000484D3A253306 |
:100D800064256320256300696E636C3A253264250F |
:100D900063282532692900202020202532756D2FF7 |
:100DA000733A2020484D3A2533642563202563009B |
:100DB0004552523A202532642021004552523A20B1 |
:100DC000002121204C69506F20766F6C746167653B |
:100DD00020212100207777772E4D696B726F4B6F42 |
:100DE000707465722E6465202000202532693A25D2 |
:100DF00030326920202532692E253169562025346C |
:100E0000696D416800202532693A25303269202019 |
:100E10002532692E25316956202534696D416800D7 |
:100E20004449523A253364256300414C543A2534F1 |
:100E3000696D00414C543A2534696D00414C543A77 |
:100E40002D2D2D2D2000256300484D3A2533642596 |
:100E5000632020444953543A2533646D20256300B0 |
:100E60005057523A2532692E25316941202825698B |
:100E7000572920004346002020004750533A25328E |
:100E8000756D2F73205341543A2564200020203380 |
:100E90004420004E4F4649580044475053200020FC |
:100EA00020204E6F204E6176694374726C202020A2 |
:100EB00020202020002532692E2569202532692E28 |
:100EC0002569202532692E2569202532692E25695C |
:100ED00041002533692025336920253369202533D6 |
:100EE00069256343002532692E2569202532692E44 |
:100EF000256941002532692E2569202532692E2574 |
:100F000069202532692E2569202532692E256941FF |
:100F100000253369202533692563432020202020C4 |
:100F200020202000253369202533692025336920BE |
:100F3000253369256343004552523A202532642007 |
:100F400021004552523A20002121204C69506F2047 |
:100F5000766F6C7461676520212100207777772E8A |
:100F60004D696B726F4B6F707465722E64652020D3 |
:100F70000053657474696E673A25752025732000E7 |
:100F80004D696E3A2532692E253169562025732028 |
:100F900000414C543A00504F54493A2533752000D3 |
:100FA000284F4E29202000284F46462920004C4932 |
:100FB0004D495400564152494F0044495341424C17 |
:100FC00045440043463A0044495341424C4544009D |
:100FD00020284F4E29200020284F46462900205423 |
:100FE00045414348004750533A0044495341424C1D |
:100FF0004544002846524545290028484F4D45297B |
:10100000002841494429200028484F4C4429002009 |
:1010100046533A257573656B2000484F4D45204176 |
:101020004C543A0025756D00484F4C4420004E69E1 |
:101030003A25346920526F3A25346920433A2533E2 |
:10104000690047733A2534692059613A253469208B |
:101050000050313A2534692050323A253469203322 |
:101060003A2533690050343A2534692050353A2501 |
:10107000346920363A25336900434F55504C494E68 |
:1010800047204F46462120004C4F4F50494E4721A4 |
:1010900020004848212000434F4D50415353204FDA |
:1010A0004646212000004F50515253545356574842 |
:1010B000005859005A5545464748410049424A4A56 |
:1010C0000000000000000000000000444C4D000043 |
:1010D0000000004E0000004B00430A0D7777772E8A |
:1010E0004D696B726F4B6F707465722E646520284A |
:1010F000632920486953797374656D7320476D6265 |
:1011000048000A0D74686520757365206F66207449 |
:1011100068697320736F66747761726520697320E4 |
:101120006F6E6C79207065726D6974746564200AE5 |
:101130000D6F6E206F726967696E616C204D696B0F |
:10114000726F4B6F707465722D4861726477617253 |
:1011500065005573657200486F5454205634004141 |
:1011600043542044534C004A657469005370656BC6 |
:101170007472756D0050504D000A0D5265636569BB |
:101180007665723A2000532E42757300756E6B6E51 |
:101190006F776E2E205573696E672050504D2E2E3E |
:1011A0002E006E6F7420737570706F72746564209A |
:1011B000627920686172647761726521000A0D4668 |
:1011C0006C69676874436F6E74726F6C0A0D486166 |
:1011D0007264776172653A25642E25640A0D536F37 |
:1011E0006674776172653A5625642E2564256320FE |
:1011F000000011241FBECFEFD0E4DEBFCDBF12E050 |
:10120000A0E0B1E0ECE9F4E201E00BBF02C007901E |
:101210000D92A43DB107D9F71BE0A4EDB2E001C0E7 |
:101220001D92AC3DB107E1F77AEAE2E0F0E081E23D |
:1012300080935700D4907E010894E11CF11C20EFAC |
:1012400037EF41E050E087016FE0DA01C9012F5F1D |
:101250003F4F4F4F5F4FABBFFC018791F801819328 |
:101260008F01615067FFF1CFF7016EE08191782720 |
:101270007095615067FFFACF8889781729F0F7E9F0 |
:10128000DF1611F40000FECF0E941B0A0C944D9251 |
:101290000C94000088E891E09F938F9380E695E19D |
:1012A0009F938F93E0913B05F0913C0509950F903A |
:1012B0000F900F900F90089580918407E82FFF27DB |
:1012C000EE0FFF1FE954F74F808191818D5E9F4F94 |
:1012D00014F010920201808191818A5B9F4FCCF4BF |
:1012E000809102018823A9F481E08093020180911A |
:1012F0006F058F5F80936F05853038F088EE93E03F |
:10130000909309038093080304C066E970E00E948B |
:10131000043A80916F0599279093070780930607F9 |
:1013200008951F93CF93DF93182F882389F08EEAB7 |
:1013300091E09F938F9380E695E19F938F93E09147 |
:101340003B05F0913C0509950F900F900F900F9081 |
:101350008091A707823308F044C084EF91E00E9497 |
:101360006F19EC01112329F0CE010E94781988230E |
:10137000D9F3C2E0D0E026E530E080911F019091E2 |
:1013800020018217930730F02196255D3F4FC7302B |
:10139000D10598F38091A7079927C89F9001C99F0D |
:1013A000300DD89F300D1124209300011123D9F066 |
:1013B00068EC70E08C2F0E94043ADF93CF9386EBA9 |
:1013C00091E09F938F9380E695E19F938F93E091B7 |
:1013D0003B05F0913C0509958DB79EB706968DBFEC |
:1013E00002C080930001112311F1809100016AE095 |
:1013F0000E94A091892F99279F938F93809100013C |
:101400000E94A09199279F938F9381EC91E09F93E5 |
:101410008F9380E695E19F938F93E0913B05F09148 |
:101420003C0509952DB73EB7285F3F4F2DBFDF9193 |
:10143000CF911F910895CFEFD0E4DEBFCDBF8824B8 |
:10144000992414B815B8B7EEEB2EB3E0FB2E2EECB2 |
:101450003FEFE20EF31EF7FEFACF199B02C085E1C3 |
:1014600001C086E18093010181E887B93E9A8FEF40 |
:1014700088B98BE184B981E085B98EE38AB987E4C4 |
:101480008BB9469A84B7877F84BF8091600088615A |
:10149000809360001092600084EC99E090930903BF |
:1014A0008093080310921404109213041092BC0845 |
:1014B0001092BB0810921604109215041092180492 |
:1014C0001092170420910101243128F084EC94E05B |
:1014D000A0E0B0E004C08BE095E0A0E0B0E0809335 |
:1014E0003C0190933D01A0933E01B0933F012A300F |
:1014F00011F0243110F0289801C0289A2C3010F0F7 |
:10150000263111F4299A01C029980E94D8190E9405 |
:10151000A9190E9468150E9441360E94DA1D81E0D7 |
:101520000E94A4310E9486680E943D720E94318E02 |
:10153000809101018C3010F0863111F4299A01C09C |
:10154000299878940E94C33080914D0382608093E3 |
:101550004D03109250030E94504584EF91E00E9489 |
:101560006F197C0180914D0380FD05C0C7010E9469 |
:1015700078198823B9F385ED91E09F938F93A0E6C6 |
:10158000AA2EA5E1BA2EBF92AF92E0913B05F09151 |
:101590003C05099580EA9FE00E946F197C01C0E03C |
:1015A000D0E00F900F900F900F9009E518E0FDE04C |
:1015B000CF2EF8E0DF2E0E94504580914D0380FD34 |
:1015C00005C0C7010E9478198823B9F3F60180810C |
:1015D0001816ACF40BC00E94504580914D0380FD5D |
:1015E00005C0C7010E9478198823B9F3C7010E947A |
:1015F0007819882321F4F8018081882364F7F801A1 |
:10160000808187FF19C02196DF93CF93219787EEC2 |
:1016100091E09F938F93BF92AF92E0913B05F09141 |
:101620003C0509958091D5028F5F8093D5022DB737 |
:101630003EB72A5F3F4F2DBF219684E090E0C80E51 |
:10164000D91E085F1F4FCC30D10508F4B4CFC0E0DD |
:10165000D0E006E518E0EDE0EE2EE8E0FE2EF80121 |
:10166000838187FD1DC0F70180811816CCF4219677 |
:10167000DF93CF9321978AEE91E09F938F9380E63B |
:1016800095E19F938F93E0913B05F0913C0509957F |
:1016900082E0809306032DB73EB72A5F3F4F2DBFF0 |
:1016A000F801838180788383219624E030E0E20E84 |
:1016B000F31E085F1F4FCC30D10588F20E944A0903 |
:1016C000909182078091D502981728F48091550552 |
:1016D00080618093550588E092E09F938F93C0E6E8 |
:1016E000D5E1DF93CF93E0913B05F0913C0509955F |
:1016F00088EE93E00E946F197C010E94E01D0F901C |
:101700000F900F900F90C7010E9478198823D9F38A |
:1017100088E292E09F938F93DF93CF93E0913B0514 |
:10172000F0913C05099580E00E94E83A8091010122 |
:101730000F900F900F900F908A3011F0843110F0BD |
:10174000289801C0289A80ED97E090930903809330 |
:10175000080385E5809371058EE090E00E94E72EF6 |
:101760009927182F00278FE090E00E94E72E080F9E |
:10177000111D1093DB020093DA028AE090E00E94D0 |
:10178000E72E9927182F00278BE090E00E94E72E84 |
:10179000080F111D1093D9020093D8020F5F1F4F3D |
:1017A00039F08091DA029091DB028F5F9F4F41F414 |
:1017B0001092DB021092DA021092D9021092D80233 |
:1017C0008091D8029091D9029F938F938091DA02F1 |
:1017D0009091DB029F938F938DE292E09F938F9382 |
:1017E000DF93CF93E0913B05F0913C0509950E9472 |
:1017F000742388E893E19093370180933601C1E028 |
:10180000C09370058C2F0E9491098091AA070E94B5 |
:101810007D8D0E944A0980ED97E00E946F197C013E |
:101820008AEF90E00E946F1983E08093DE061092A9 |
:10183000D4028091F1072DB73EB7285F3F4F2DBFEF |
:1018400084FF02C0C093DC028091DE02882311F085 |
:101850004798FECF80910C03882309F43DC2809104 |
:101860001101882309F438C210920C0380916F058E |
:10187000882319F00E945C0902C00E948F480E94D0 |
:101880005045209101012A3011F0243110F02898A0 |
:1018900001C0289A80910704882331F080910704C1 |
:1018A0008150809307040EC080916F008062809306 |
:1018B0006F001092B8081092B708809155058860A3 |
:1018C000809355058091360190913701019790934F |
:1018D0003701809336018091360190913701892B31 |
:1018E00021F080914E038823C9F1809136019091B7 |
:1018F0003701892BD9F40E94CE3185E090E0909396 |
:10190000370180933601809118079091190701964D |
:1019100090931907809318078091550581608093F3 |
:1019200055058091DF0682608093DF068091090172 |
:1019300090910A018F5F9F4FC1F480910604882324 |
:10194000A1F088EA91E6909309038093080380E868 |
:1019500090E090930A018093090107C02A3011F0AA |
:10196000243110F0289801C0289A0E94E98E8091B5 |
:101970000C03882309F0B0C180911C05882319F05D |
:101980000E94BE81A9C180910F01882311F00E949D |
:10199000311A0E94AC150E94FA10C7010E947819F2 |
:1019A000882309F495C184E190E0E80EF91E0E94B5 |
:1019B000EF198091AA07863019F40E945C7704C061 |
:1019C000843011F40E948E8280914E03882349F066 |
:1019D000809155058260809355058091DF06826075 |
:1019E0000FC08091080390910903892B59F48091CD |
:1019F000360190913701079728F08091DF068D7F9F |
:101A00008093DF068091DC02882361F080910704D7 |
:101A1000873940F01092DC0288E893E19093090343 |
:101A20008093080380910401882321F081508093E2 |
:101A300004012EC080937B051092DB031092DA0321 |
:101A40001092D9031092D8031092D7031092D603A4 |
:101A5000809107048823E1F48091090190910A01A3 |
:101A60008F5F9F4FA9F42091DC02223089F088E932 |
:101A70009AE3909309038093080380E09CE090939D |
:101A80000A0180930901222319F082E08093DC028D |
:101A900080919701893C48F0815080939701809113 |
:101AA00055058B7F809355053FC080919809882309 |
:101AB000F9F08091550584608093550589E0809305 |
:101AC000E2048091090190910A018F5F9F4F81F498 |
:101AD00080910604882361F088E99AE390930903D2 |
:101AE0008093080380E098EA90930A0180930901AB |
:101AF0001092D4041092D3041092D2041092D10404 |
:101B00001092D00410928B091092CA091092C90940 |
:101B10001092CC091092CB098FEF9FEF9093C809D8 |
:101B20008093C7091092970180910001282F3327D5 |
:101B300080911F019091200182179307CCF480912E |
:101B4000CF0380628093CF038091090190910A01B5 |
:101B50008F5F9F4FC1F480E797E1909309038093D3 |
:101B6000080380E093E090930A01809309010BC081 |
:101B70008091080390910903892B29F48091CF0368 |
:101B80008F7D8093CF030E947D6D84E08093070357 |
:101B90008091DD028F5F8093DD02813309F04FC0B9 |
:101BA0001092DD028091CF0381FF0AC08091D6029E |
:101BB0009091D70201969093D7028093D6023FC0AE |
:101BC0005AEA852E55E0952E809127079091280797 |
:101BD0009C01442737FD4095542F80911701909127 |
:101BE0001801A0911901B0911A01281739074A0765 |
:101BF0005B0734F4809127079091280701961BC05A |
:101C000080912707909128079C01442737FD409534 |
:101C1000542F8091170190911801A0911901B09152 |
:101C20001A0182179307A407B5074CF48091270780 |
:101C3000909128070197909328078093270708948D |
:101C4000811C911C32E783163BE0930609F040C0EB |
:101C5000882499242091DA023091DB022F5F3F4FD4 |
:101C60003093DB022093DA028091D8029091D9025E |
:101C700001969093D9028093D802832F9927682FD9 |
:101C80008EE090E00E94EF2E8091DA029091DB02CC |
:101C90009070682F8FE090E00E94EF2E8091D80224 |
:101CA0009091D902892F9927682F8AE090E00E94AD |
:101CB000EF2E8091D8029091D9029070682F8BE01E |
:101CC00090E00E94EF2E84E190E00E946F197C0169 |
:101CD0000E94CD6D0E94547280910703882309F001 |
:101CE000B3CD0E94A768B0CD1F920F920FB60F928E |
:101CF00011248F939F93EF93FF9380910601882384 |
:101D0000E1F48091F8029091F90201969093F90222 |
:101D10008093F802FC01E15DF94FE081ED3019F0AC |
:101D20008F3A910539F41092F9021092F80281E08D |
:101D300080930601E093C60004C01092F90210924D |
:101D4000F802FF91EF919F918F910F900FBE0F902E |
:101D50001F9018951F920F920FB60F9211242F9378 |
:101D60003F934F935F936F937F938F939F93AF9323 |
:101D7000BF93CF93EF93FF9390E08091DE02813089 |
:101D800029F48091C6008093CE00CCC08091DE0201 |
:101D9000823029F48091C60080937E05C3C0809173 |
:101DA000C6008093F0025091FE025F3A10F09093CB |
:101DB000FF028091F0028D3009F065C08091FF0232 |
:101DC000823009F060C09093FF02852F99278258D6 |
:101DD0009A4FFC01329740812091FA023091FB0228 |
:101DE000241B3109DC0111978C91281B3109C90191 |
:101DF0009F709093FB028093FA0246E09695879538 |
:101E00004A95E1F7982F935C9093FC022F73307002 |
:101E1000235C2093FD028081981729F48C91281768 |
:101E200011F491E006C090E08091ED028F5F809305 |
:101E3000ED02C091EF02CC2309F074C0992309F49C |
:101E400071C081E08093EF02580F5093EC02515023 |
:101E5000E52FFF27E258FA4F8DE0808380918005BF |
:101E6000823509F05FC00E94742388E190E02CE085 |
:101E70000FB6F894A895809360000FBE2093600081 |
:101E8000C09306034FC02091FF02822F9927813013 |
:101E90009105F9F0823091051CF4892B21F040C0A6 |
:101EA000029711F13DC08091F002833239F48091A4 |
:101EB000EF02882319F481E08093FF028091F00201 |
:101EC00080937E0581E08093FE028091F002992745 |
:101ED00022C02F5F2093FF02E52FFF27E258FA4F21 |
:101EE0008091F002808309C0E52FFF27E258FA4F66 |
:101EF0008091F00280835F3A20F45F5F5093FE028E |
:101F000002C01092FF022091F0028091FA0290919B |
:101F1000FB02820F911D9093FB028093FA0202C094 |
:101F20001092FF02FF91EF91CF91BF91AF919F91DE |
:101F30008F917F916F915F914F913F912F910F9072 |
:101F40000FBE0F901F901895AC01A0E0B0E09D016E |
:101F5000A817B90748F4EFE2F6E08191280F311D88 |
:101F60001196A417B507C8F33F70FD01E15DF94F65 |
:101F7000C90156E0969587955A95E1F7835C808371 |
:101F80001196FD01E15DF94F2F733070822F835C54 |
:101F90008083A05DB94F8DE08C93109206018091F3 |
:101FA0002F068093C6000895A0E0B0E0EAEDFFE0C0 |
:101FB0000C9419922C859D850E85BB2483E2809319 |
:101FC0002F069F59909330062093310633E0E32E7D |
:101FD000F12C002309F49EC0CF84D888BE016D5E29 |
:101FE0007F4FA989BA890150109709F493C01097BF |
:101FF000B9F0F601EB0DF11DB3949081119791F4B6 |
:10200000002349F1FB016E5F7F4FDB01C080D1806F |
:102010006E5F7F4F0D90BC91A02DBB24015002C07C |
:1020200090E019C01097B9F0F601EB0DF11DB394D3 |
:102030004081119791F4002341F1FB016E5F7F4FC6 |
:10204000DB01C080D1806E5F7F4F0D90BC91A02DD1 |
:10205000BB24015002C040E018C01097B1F0F60157 |
:10206000EB0DF11DB3941081119781F4002371F0F1 |
:10207000FB013296DB01CD90DC90BF016E5F7F4F9C |
:10208000A081B181BB24015001C010E0F701E15DE6 |
:10209000F94F892F86958695835C80830894E11C8F |
:1020A000F11CF701E15DF94F892F9927837090703A |
:1020B00024E0880F991F2A95E1F755279A0194E0AB |
:1020C000369527959A95E1F7822B835C8083089457 |
:1020D000E11CF11CF701E15DF94F4F705070440FA6 |
:1020E000551F440F551F812F992726E096958795F8 |
:1020F0002A95E1F7842B835C80830894E11CF11C12 |
:10210000F701E15DF94F1F73135C10830894E11C24 |
:10211000F11C6ACFC7010E94A40FE9E00C9435922C |
:10212000A3E07A2F4091EC024650442309F458C0B2 |
:10213000E72FFF27E258FA4F80818D537F5FE72F0B |
:10214000FF27E258FA4F20812D537F5FE72FFF27AB |
:10215000E258FA4F30813D537F5FE72FFF27E25867 |
:10216000FA4F60816D537F5F9927880F991F880F01 |
:10217000991F522F52955F70582B822F99278F707D |
:102180009070F4E0880F991FFA95E1F7232F2695B8 |
:102190002695282B832F992783709070E6E0880F6F |
:1021A000991FEA95E1F7682B41504F3FC9F0EA2F9C |
:1021B000FF27E258FA4F5083AF5F41504F3F81F005 |
:1021C000EA2FFF27E258FA4F2083AF5F41504F3F7D |
:1021D00039F0EA2FFF27E258FA4F6083AF5FA5CFAF |
:1021E00081E895E09093EB028093EA02A350A093DC |
:1021F000E9020895A2E0B0E0E0E0F1E10C941F9262 |
:102200008091EF02882309F457C40E9490108091B6 |
:102210007F05823609F023C3809180059927803796 |
:10222000910509F4AFC081379105C4F48A36910550 |
:1022300009F480C28B36910544F48B34910571F119 |
:102240008636910509F45FC10AC38D36910509F4FC |
:1022500069C08E36910509F44DC001C384379105DC |
:1022600041F1853791054CF48137910509F491C00E |
:102270008337910509F4DFC0F2C28737910509F46D |
:102280001BC2883791052CF48537910509F4D7C115 |
:10229000E6C28937910509F46DC1E1C2E091EA0215 |
:1022A000F091EB0280819181909389018093880164 |
:1022B000D6C28091EC02A091EA02B091EB02853186 |
:1022C00040F080E1E9E5F5E00D9001928A95E1F7B3 |
:1022D0000DC08D919D910D90BC91A02D80935905BD |
:1022E00090935A05A0935B05B0935C0580EF8093B3 |
:1022F000E7024BC0809106018823E1F38DE490E072 |
:102300009F938F9380E098E09F938F9381E08F93CA |
:102310008F938EE48F930E94D40F8DB79EB707964C |
:102320008DBF9DC2A091EA02B091EB021C911130C9 |
:1023300081F48DE4E0E0F8E00D9001928A95E1F7F8 |
:102340000E9400301983809155058F7E809355053A |
:1023500001C01982809106018823E1F381E090E0B9 |
:102360009F938F93CE0101969F938F9381E08F93DC |
:102370008F938DE48F930E94D40FADB7BEB717969D |
:10238000ADBF6DC281E08093F2028FEF80930401B4 |
:1023900066C2E091EA02F091EB02E0818E2F8A5052 |
:1023A0008A3058F48983882311F481E003C0863091 |
:1023B00010F085E0898361E00EC08E2F84518A3051 |
:1023C00070F48983882311F481E003C0863010F013 |
:1023D00085E0898360E089810E94803012C0E983B2 |
:1023E000EF3F19F40E94633089838981882311F4B7 |
:1023F00081E003C0863010F085E0898389810E94E6 |
:10240000052F809106018823E1F38CE790E09F93EC |
:102410008F9383E897E09F938F9381E090E09F9361 |
:102420008F93CE0101969F938F9382E08F9381E0EB |
:102430008F9381E577C12091EA023091EB02D901B7 |
:102440008C918150853008F045C0F90181818C352F |
:1024500009F040C0809106048823E1F52F5F3F4FCB |
:102460008CE7E3E8F7E0D9010D9001928A95E1F756 |
:10247000F90182910E94702F8091C4079927AA27A1 |
:10248000BB27BC01CD0124EC39E040E050E00E94C4 |
:102490008191DC01CB018093800190938101A09315 |
:1024A0008201B09383018091C5079927AA27BB2792 |
:1024B000BC01CD010E948191DC01CB0180937C01A4 |
:1024C00090937D01A0937E01B0937F010E946330C1 |
:1024D000898301C01982809106018823E1F381E09C |
:1024E00090E09F938F93CE0101969F938F9381E00D |
:1024F0008F938F9383E58F930E94D40F8DB79EB7F0 |
:1025000007968DBF26C0E091EA02F091EB02E081D0 |
:102510008E2F8150853018F48E2F0E94052F0E9437 |
:1025200063308983809106018823E1F381E090E0A4 |
:102530009F938F93CE0101969F938F9381E08F930A |
:102540008F9386E48F930E94D40FADB7BEB71796D2 |
:10255000ADBF80910604882329F46EE670E089817E |
:102560000E94043A80E00E9491098091AA070E948B |
:102570007D8D75C1E091EA02F091EB02808199278F |
:1025800087FD90959093D2088093D10881819927F7 |
:1025900087FD90959093D4088093D30882819927E2 |
:1025A00087FD90959093D6088093D50883819927CD |
:1025B00087FD90959093D8088093D70884819927B8 |
:1025C00087FD90959093DA088093D90885819927A3 |
:1025D00087FD90959093DC088093DB08868199278E |
:1025E00087FD90959093DE088093DD088781992779 |
:1025F00087FD90959093E0088093DF088085992768 |
:1026000087FD90959093E2088093E1088185992752 |
:1026100087FD90959093E4088093E308828599273D |
:1026200087FD90959093E6088093E5088385992728 |
:1026300087FD90959093E8088093E70810C1E0919A |
:10264000EA02F091EB0280810E949A358A83882306 |
:1026500019F481E0898301C01982809106018823E1 |
:10266000E1F388E090E09F938F938EE498E09F934E |
:102670008F9321E030E03F932F938091EA02909175 |
:10268000EB029F938F933F932F93CE0102969F93DC |
:102690008F933F932F93CE01820F931F9F938F931E |
:1026A00084E08F9381E08F9385E58F930E94D40F10 |
:1026B000EDB7FEB773963CC08091E902893008F40B |
:1026C000CEC02091EA023091EB022F5F3F4F88E0AD |
:1026D000AEE4B8E0F90101900D928A95E1F7D901D5 |
:1026E0008E910E94F0348A83882319F481E08983D3 |
:1026F00001C01982809106018823E1F321E030E0D6 |
:102700003F932F93CE0102969F938F933F932F93E6 |
:10271000CE01820F931F9F938F9382E08F9381E06E |
:102720008F9387E58F930E94D40FEDB7FEB73B964A |
:10273000EDBF95C080910604882309F090C00E94E7 |
:10274000308D8983823019F0843009F088C020E40C |
:1027500030E0F8948091C1008F738093C100809124 |
:10276000C9008F738093C9008091C100877E8093D8 |
:10277000C1008091C900877E8093C9008091C80004 |
:1027800087FF03C08091CE00F9CF8091C00087FF02 |
:1027900003C08091C600F9CFE091EA02F091EB020C |
:1027A000E081E13021F482E08093DE022EC0E43645 |
:1027B00011F421E830E081E08093DE02832F992735 |
:1027C0008093CD002093CC008091CD008093C500F4 |
:1027D0008091CC008093C4008091CA008F7D80934B |
:1027E000CA008091CA008F7E8093CA008091C90080 |
:1027F0008B7F8093C9008091CA0084608093CA0057 |
:102800008091CA0082608093CA008091CA00877F4D |
:102810008093CA008091C200877F8093C20080911C |
:10282000C9008E7F8093C9008091C1008861809328 |
:10283000C1008091C90088618093C9008091C10066 |
:1028400080688093C1008091C90080688093C9002E |
:1028500010926E0010926F00109270007894809128 |
:10286000800599278436910509F4BBC0853691050A |
:10287000ACF48136910509F46FC0823691052CF4D1 |
:102880008B34910509F45DC00FC18236910509F4BE |
:1028900070C08336910509F47FC006C18C3691055E |
:1028A00009F4EDC08D3691054CF48736910509F495 |
:1028B000F8C08836910509F4B2C0F6C08437910596 |
:1028C00029F08637910509F4E8C0EEC08091EC024A |
:1028D000A091EA02B091EB02803140F080E1E9E59D |
:1028E000F5E00D9001928A95E1F70DC08D919D91D3 |
:1028F0000D90BC91A02D8093590590935A05A093FB |
:102900005B05B0935C05809106018823E1F31F927B |
:10291000809103018F9384E58F930E94D40F8AEFF7 |
:102920008093E7028FEF8093040180EA9FE00E948A |
:102930006F199093E0028093DF020F900F900F9039 |
:10294000B3C0E091EA02F091EB0280819181909313 |
:10295000890180938801A8C0E091EA02F091EB021E |
:10296000808180930501803298F08FE1809305018A |
:102970000FC0A091EA02B091EB028BE0E1E7F5E035 |
:102980000D9001928A95E1F780917A058093200756 |
:102990008FEF8093040188C08091E3029091E4025C |
:1029A000892B89F4E091EA02F091EB02E081EE23B9 |
:1029B00051F08AE0E89FC00111240E946F199093A2 |
:1029C0004C0580934B05E091EA02F091EB02908177 |
:1029D0008AE0989FC00111249093E4028093E3025F |
:1029E00015C08FEF80930401E091EA02F091EB02B1 |
:1029F00090818AE0989FC00111249093E602809311 |
:102A0000E502892B19F081E08093F40280EA9FE0CF |
:102A10000E946F199093E0028093DF0245C08FEF10 |
:102A200080930401E091EA02F091EB02908197FD1E |
:102A300008C082E08093F1021092E2021092E1025B |
:102A40001AC0909580914603892B8093460391810B |
:102A50008AE0989FC00111249093E2028093E102E2 |
:102A600084E08093F10280EA9FE00E946F199093C6 |
:102A7000E0028093DF0281E08093F50215C08FEFC2 |
:102A800080930401E091EA02F091EB02808180934F |
:102A9000470381E08093F60207C081E08093F30250 |
:102AA00003C081E08093F7021092EF021092EB02D4 |
:102AB0001092EA021092E902E3E0CE5F0C943B929E |
:102AC000982F8091C00085FFFCCF9093C600089599 |
:102AD0000F931F9388E18093C1008091C0008260B2 |
:102AE0008093C0008091C10080688093C100809174 |
:102AF000C10080648093C10000E010E00093C50035 |
:102B00008AE290E08093C4008091E5029091E60211 |
:102B10000E946F1990934E0580934D058CED90E0C7 |
:102B20000E946F1990937D0580937C0510924F054C |
:102B30008AE58093500583E0809353058BE0809372 |
:102B40005105109252051093EB020093EA02109285 |
:102B5000E9021F910F910895A0E1B0E0E2EBF5E1E9 |
:102B60000C941C9280910601882309F4C1C28091C3 |
:102B7000DF029091E0020E947819882361F01092A0 |
:102B8000E2021092E1021092E6021092E502109227 |
:102B9000E4021092E3028091E1029091E202892B1B |
:102BA00041F080912D0690912E060E94781988237D |
:102BB00029F48091F502882309F460C08091060110 |
:102BC000882309F45BC08091F10202E317E08430AE |
:102BD000A8F00E948A2380E590E09F938F931F9333 |
:102BE0000F9381E08F938F9388E48F930E94D40F8B |
:102BF0002DB73EB7295F3F4F2DBF34C01092480319 |
:102C00008FE494E09F938F938DE793E29F938F934C |
:102C1000E0913B05F0913C05099584E190E09F939C |
:102C20008F931F930F9381E090E09F938F9381EF99 |
:102C300092E09F938F9382E08F9381E08F9388E45B |
:102C40008F930E94D40F8091F102982F8F5F809311 |
:102C5000F1022DB73EB7215F3F4F2DBF943010F0EA |
:102C60001092F1028091E1029091E2020E946F19AC |
:102C700090932E0680932D061092F5028091F60215 |
:102C8000882351F180910601882331F10E948A2323 |
:102C900080E590E09F938F9382E397E09F938F93DB |
:102CA00021E030E03F932F9381E291E09F938F9357 |
:102CB0003F932F9387E493E09F938F9383E08F93C9 |
:102CC00081E08F938CE48F930E94D40F1092F602D0 |
:102CD0008DB79EB70F968DBF8091F3028823D1F0F8 |
:102CE000809106018823B1F08AE090E09F938F9352 |
:102CF0008FE495E09F938F9381E08F938F9386E588 |
:102D00008F930E94D40F1092F3022DB73EB7295F24 |
:102D10003F4F2DBF8091F7028823D9F080910601A3 |
:102D20008823B9F08BE090E09F938F9381E795E043 |
:102D30009F938F9381E08F93809103018F9387E41A |
:102D40008F930E94D40F1092F7028DB79EB707960B |
:102D50008DBF80917C0590917D050E947819882314 |
:102D600009F461C080910601882309F45CC0809158 |
:102D70009F079927880F991F880F991F7C010027AB |
:102D8000F7FC0095102F8091610490916204A0914E |
:102D90006304B0916404BC01CD01A80197010E94B5 |
:102DA000F59130936A0520936905809159049091BB |
:102DB0005A04A0915B04B0915C04BC01CD01A80150 |
:102DC00097010E94F59130936C0520936B058091DB |
:102DD000E40380936D058091E30380936E0588E0A2 |
:102DE00090E09F938F9389E695E09F938F9381E086 |
:102DF0008F9383E08F938BE68F930E94D40F809103 |
:102E00006F052DB73EB7295F3F4F2DBF853018F0B6 |
:102E100086E080936F0583E690E00E946F1990939F |
:102E20007D0580937C058091E5029091E602892BD7 |
:102E300041F080914D0590914E050E9478198823AC |
:102E400021F48091F402882339F1809106018823CE |
:102E500019F10E94EE3882E490E09F938F938EEDFB |
:102E600096E09F938F9381E08F938F9384E48F9369 |
:102E70000E94D40F1092F4028DB79EB707968DBFB3 |
:102E80008091E5029091E602009731F00E946F195F |
:102E900090934E0580934D058091E3029091E4025A |
:102EA000892B09F4B8C080914B0590914C050E9484 |
:102EB0007819882309F4AFC080910601882309F4AA |
:102EC000AAC080919F079927880F991F880F991F83 |
:102ED0007C010027F7FC0095102F809161049091F0 |
:102EE0006204A0916304B0916404BC01CD01A80107 |
:102EF00097010E94F59130933E0520933D05809106 |
:102F0000590490915A04A0915B04B0915C04BC01F7 |
:102F1000CD01A80197010E94F591309340052093BF |
:102F20003F0520918009309181094091820950919B |
:102F30008309DA01C90163E0880F991FAA1FBB1F2B |
:102F40006A95D1F7820F931FA41FB51F820F931F9D |
:102F5000A41FB51F20913C0130913D0140913E01DD |
:102F600050913F01BC01CD010E94F5913093420583 |
:102F7000209341058091290490912A04A0912B046B |
:102F8000B0912C0449E0B595A795979587954A95FA |
:102F9000D1F7809343058091250490912604A09158 |
:102FA0002704B091280439E0B595A79597958795A2 |
:102FB0003A95D1F780934405809131049091320481 |
:102FC000A0913304B091340429E0B595A795979565 |
:102FD00087952A95D1F7809345058EE090E09F93E1 |
:102FE0008F938DE395E09F938F9381E08F938F93E1 |
:102FF00083E48F930E94D40F8091E3029091E402C6 |
:103000000E946F1990934C0580934B052DB73EB7E6 |
:10301000295F3F4F2DBF809105018F3F71F19927A7 |
:1030200004E0880F991F0A95E1F7815B9D4F40E10D |
:1030300050E0BC01CE0101960E94CB8F80E190E070 |
:103040009F938F93CE0101969F938F9381E090E0A1 |
:103050009F938F9385E091E09F938F9382E08F936E |
:1030600081E08F9381E48F930E94D40F8FEF809340 |
:1030700005018DB79EB70B968DBF809120078823E1 |
:10308000D1F0809106018823B1F081E090E09F9318 |
:103090008F9380E297E09F938F9381E08F938F933C |
:1030A00082E48F930E94D40F109220072DB73EB771 |
:1030B000295F3F4F2DBF8091F2028823C9F0809194 |
:1030C00006018823A9F084E390E09F938F9387EB18 |
:1030D00098E09F938F9381E08F938F9380E58F93F8 |
:1030E0000E94D40F1092F2028DB79EB707968DBF43 |
:1030F000E6E0C05F0C9438921F920F920FB60F92C9 |
:1031000011242F933F935F936F937F938F939F939C |
:10311000AF93BF93EF93FF9320E080910703882341 |
:1031200029F0809107038150809307038091F60472 |
:10313000882319F081508093F60480910F03815009 |
:1031400080930F038F3F09F05BC089E080930F03EA |
:1031500080910D0390910E03019690930E0380933E |
:103160000D03809110018F5F81708093100188237F |
:1031700019F481E080930C03349903C081E08093BB |
:1031800010038091080390910903892B21F180910C |
:103190000803909109030B9750F0809108039091D8 |
:1031A00009030A97909309038093080304C01092BF |
:1031B000090310920803809108039091090320915C |
:1031C000090130910A0182239323892B11F021E018 |
:1031D00008C020E006C08FEF9FEF90930A01809314 |
:1031E000090180910101222331F08A3011F45A9AA9 |
:1031F00007C0479A05C08A3011F45A9801C0479811 |
:1032000080911003882309F45AC02091970122234A |
:1032100009F055C08091700983FF51C086B199278C |
:10322000FC01E071F07084FF13C080910A0390915B |
:103230000B03019690930B0380930A0380910A037A |
:1032400090910B03895E9340D0F12093100337C017 |
:1032500080910A0390910B03892B69F180910A03F5 |
:1032600090910B038A56914030F580910A0390911A |
:103270000B0369E270E00E94AC9180910A03909187 |
:103280000B03860F971F90930B0380930A03809183 |
:103290000A0390910B030B9750F080910A039091D1 |
:1032A0000B030A97909389018093880104C0F093DF |
:1032B0008901E093880110920B0310920A03FF9199 |
:1032C000EF91BF91AF919F918F917F916F915F919E |
:1032D0003F912F910F900FBE0F901F901895209146 |
:1032E0000D0330910E03280F391FC901019608956F |
:1032F00020910D0330910E03821B930B892F992788 |
:103300008695807490700895CF93DF930E946F1913 |
:10331000EC01CE010E9478198823D9F3DF91CF9177 |
:103320000895CF93DF930E946F19EC0109C080913B |
:103330001101882329F0909311018FEC80937A007A |
:10334000CE010E947819982F882389F3DF91CF91BD |
:1033500008959FB7F8945F983E9A469A8091B0007E |
:103360008F708093B0008091B00083608093B00034 |
:103370008091B1008B738093B1008091B1008B601C |
:103380008093B1001092B2008FEF8093B3008091D0 |
:10339000B00080688093B000809170008A7F809335 |
:1033A0007000809170008260809370009FBF0895CC |
:1033B0008AE090E00E946F19909322078093210782 |
:1033C00082E085BD83EA84BD17BC84EB88BD86E0BE |
:1033D00086BD80916E00816080936E00089580911B |
:1033E000F0072091670182FF30C09091B3078CE312 |
:1033F000989FB00111249091B20780E5989FA00199 |
:103400001124922F905897FD9D5F9595959586E094 |
:103410009802C00111242091070130910801281B56 |
:10342000390B3093080120930701421753072CF002 |
:10343000509308014093070108952617370784F039 |
:1034400070930801609307010895822F992736E051 |
:10345000880F991F3A95E1F790930801809307012F |
:103460000895A0E0B0E0E7E3FAE10C941B928091AC |
:10347000BA07E82FFF27EE5BFE4F9681D080809140 |
:103480000F01A92FBB27A7FDB095CB2FDB2F8130D4 |
:1034900009F017C1209161043091620440916304E6 |
:1034A00050916404BD01CE010E94819197FF04C038 |
:1034B00061587F4F8F4F9F4F7B018C01C7E015955F |
:1034C0000795F794E794CA95D1F78D2D992787FD35 |
:1034D0009095A92FB92F2091590430915A04409109 |
:1034E0005B0450915C04BC01CD010E94819197FF67 |
:1034F00004C061587F4F8F4F9F4FB7E095958795D8 |
:1035000077956795BA95D1F7F801E701C61BD70BF8 |
:10351000E80BF90B2091DB043091DC04C901A3E036 |
:10352000880F991FAA95E1F7821B930BAA2797FD95 |
:10353000A095BA2FC81BD90BEA0BFB0B8091B107E2 |
:103540009927AA27BB27BC01CD019E01AF010E948C |
:10355000819197FF04C061507E4F8F4F9F4FFC01B8 |
:10356000EB0179E0F595E795D795C7957A95D1F771 |
:103570001091F007609107017091080112FF05C0DA |
:1035800070930E0160930D0118C040910D01509190 |
:103590000E018091B907282F3327CB01841B950B8F |
:1035A000B9010E94C09180910D0190910E01860F8A |
:1035B000971F90930E0180930D0110FF14C080910E |
:1035C0000D0190910E0197FD0F9664E095958795FA |
:1035D0006A95E1F7AA2797FDA095BA2FC80FD91FC2 |
:1035E000EA1FFB1F15C080910D0190910E0197FD00 |
:1035F0000F9654E0959587955A95E1F7AA2797FD80 |
:10360000A095BA2F8C1B9D0BAE0BBF0BFD01EC01DF |
:103610002091ED07222321F133278091020390911D |
:103620000303829FA001839F500D929F500D112490 |
:10363000CA01AA2797FDA095BA2F8C0F9D1FAE1F18 |
:10364000BF1F2F5F3F4F442737FD4095542FBC01CC |
:10365000CD010E94F591309303032093020304C02F |
:10366000D0930303C09302038091B207282F33271E |
:10367000220F331F220F331F809102039091030307 |
:10368000821793077CF08091B307282F3327220FEE |
:10369000331F220F331F80910203909103032817D9 |
:1036A000390724F43093030320930203809101012E |
:1036B000843108F4F7C080910F018F5F80930F0170 |
:1036C000F3C02091590430915A0440915B04509109 |
:1036D0005C04BD01CE010E94819197FF04C0615836 |
:1036E0007F4F8F4F9F4F7B018C0187E0159507958A |
:1036F000F794E7948A95D1F78D2D992787FD9095BA |
:10370000A92FB92F20916104309162044091630484 |
:1037100050916404BC01CD010E9481919B01AC01D8 |
:1037200097FF04C021583F4F4F4F5F4FC7E055955B |
:10373000479537952795CA95D1F72E0D3F1D401F08 |
:10374000511F8091B5079927AA27BB27BC01CD013E |
:103750000E94819197FF04C061507E4F8F4F9F4F11 |
:10376000FC01EB01B9E0F595E795D795C795BA95BA |
:10377000D1F7809166019927A6E0880F991FAA9535 |
:10378000E1F740910B0150910C012091B9073327CB |
:10379000841B950BB9010E94C09180910B019091FF |
:1037A0000C01860F971F90930C0180930B01809161 |
:1037B000F00781FF14C080910B0190910C0197FDDF |
:1037C0000F9674E0959587957A95E1F7AA2797FD6E |
:1037D000A095BA2FC80FD91FEA1FFB1F15C08091F3 |
:1037E0000B0190910C0197FD0F9664E095958795DC |
:1037F0006A95E1F7AA2797FDA095BA2F8C1B9D0B20 |
:10380000AE0BBF0BFD01EC012091EE07222321F14D |
:1038100033278091000390910103829FA001839F31 |
:10382000500D929F500D1124CA01AA2797FDA09513 |
:10383000BA2F8C0F9D1FAE1FBF1F2F5F3F4F442716 |
:1038400037FD4095542FBC01CD010E94F591309376 |
:1038500001032093000304C0D0930103C09300032D |
:103860008091B607282F3327220F331F220F331FD3 |
:103870008091000390910103821793077CF080915F |
:10388000B707282F3327220F331F220F331F8091B2 |
:103890000003909101032817390724F430930103A2 |
:1038A0002093000310920F01E7E0CDB7DEB70C9430 |
:1038B00037921F920F920FB60F9211242F933F93BE |
:1038C0004F935F938F939F93EF93FF9380910101A9 |
:1038D00090911103843108F04CC0992309F029C15B |
:1038E0008091B00086FF24C08091B0008F7B8093D0 |
:1038F000B000809102039091030387559E4F9093EF |
:1039000005038093040325E08D3D920718F08CEDAC |
:1039100095E005C08757914030F487E791E0909398 |
:103920000503809304038091040390910503C2C0B2 |
:103930008091B00080648093B0008091B807282FF8 |
:1039400033278DED96E0289FA001299F500D389FC9 |
:10395000500D1124CA012091120330911303821BD0 |
:10396000930B909305038093040381E080930F01F0 |
:10397000DDC0992309F0DDC08091B00086FF9FC0B3 |
:103980008091B0008F7B8093B000E0911403209170 |
:10399000B807EE23D9F433278DED96E0289FA001D8 |
:1039A000299F500D389F500D1124CA0120911203F8 |
:1039B00030911303821B930B9093050380930403B0 |
:1039C0001092130310921203469AB0C02E1738F4C7 |
:1039D0008AE090E09093050380930403A7C089EAEE |
:1039E00093E090930503809304038E2F99278330EF |
:1039F0009105D9F08430910534F48130910549F076 |
:103A0000029761F020C08430910591F0059799F0FC |
:103A10001AC0809102039091030304C080910003B7 |
:103A20009091010387559E4F1DC080914C0905C0A0 |
:103A30008091250902C0809155099927880F991F07 |
:103A4000880F991FEFCFFF27EE0FFF1FE954F74FA5 |
:103A500020813181220F331F80910403909105034F |
:103A6000820F931F909305038093040380910403B6 |
:103A70009091050355E08D3D950718F08CED95E08C |
:103A800005C08757914030F487E791E09093050394 |
:103A90008093040320910403309105032C5B304094 |
:103AA0003093050320930403809112039091130334 |
:103AB000820F931F909313038093120337C080915A |
:103AC000B00080648093B0008CEB90E0909305038D |
:103AD00080930403809112039091130384549F4FA9 |
:103AE000909313038093120380910603882321F09F |
:103AF00080910704882321F480910603823011F419 |
:103B0000469801C0469A809114038F5F80931403F6 |
:103B1000282F33278091B80799270196821793079A |
:103B20002CF481E080930F011092140381E08093C4 |
:103B30001103209104033091050341E02F3734072E |
:103B400030F08FEF8093B3002F5F30400FC02F3FD6 |
:103B50003105C9F0C0F0A9014F5F50404F37510502 |
:103B600050F480E88093B300205830403093050330 |
:103B70002093040312C08FEF8093B300509305038A |
:103B8000409304030AC0809104038093B300109211 |
:103B900005031092040310921103FF91EF919F917E |
:103BA0008F915F914F913F912F910F900FBE0F908A |
:103BB0001F90189510927C008FEC80937A000895E6 |
:103BC000CF93DF931092190386E987BD83E090E0DD |
:103BD0000E94E72EC82F863E08F4C65FC8BD84E663 |
:103BE00090E00E94911980911501909116018152E7 |
:103BF000934010F0C0EF02C0C530F8F0C8BD82E3BA |
:103C000090E00E94911984E694E09F938F9380E660 |
:103C100095E19F938F93E0913B05F0913C050995C9 |
:103C200080911501909116010F900F900F900F90B9 |
:103C30008152934010F4C550DFCF6C2F83E090E0A9 |
:103C40000E94EF2ECF3018F0CCE8D0E002C0C0E0E8 |
:103C5000D0E0CA3FD105F8F4C7BD82E390E00E94EE |
:103C6000911986E694E09F938F9380E695E19F9368 |
:103C70008F93E0913B05F0913C05099580911501EA |
:103C8000909116010F900F900F900F9080529340DB |
:103C900010F02196DECFC0932F078091900780FF10 |
:103CA00009C08C2F8A508B3E28F080915405806487 |
:103CB00080935405C7BD8CE291E00E949119DF9179 |
:103CC000CF910895EF92FF921F93CF9310E080ED74 |
:103CD00097E00E946F197C01CCE8133019F4CB30C7 |
:103CE00008F0C9E010E080912803909129038C5FCF |
:103CF000934024F48091140181500AC080912803DC |
:103D0000909129038750944034F0809114018F5F83 |
:103D10008093140101C011E0809126039091270344 |
:103D20008C5F934024F48091130181500AC08091EC |
:103D30002603909127038750944034F0809113011B |
:103D40008F5F8093130101C01F5F809124039091C6 |
:103D500025038C5F934024F48091120181500AC0A6 |
:103D6000809124039091250387509440C4F0809162 |
:103D700012018F5F8093120113C088E694E09F9335 |
:103D80008F9380E695E19F938F93E0913B05F091AF |
:103D90003C0509950F900F900F900F905FC01F5F2B |
:103DA00082E18093530380914D038E7F80934D0376 |
:103DB00085EA8093BC00809114018A3040F48091A0 |
:103DC00054058160809354058AE0809314018091AA |
:103DD0001401863F40F08091540581608093540522 |
:103DE00085EF80931401809113018A3040F4809113 |
:103DF00054058260809354058AE08093130180917A |
:103E00001301863F40F080915405826080935405F1 |
:103E100085EF80931301809112018A3040F48091E4 |
:103E200054058460809354058AE080931201809148 |
:103E30001201863F40F080915405846080935405C0 |
:103E400085EF8093120180915303882339F0C701D5 |
:103E50000E947819882309F090CFF5CF10921101B4 |
:103E60008FEC80937A00809111018823E1F3CA30AE |
:103E700020F48AE090E00E949119C15009F02DCF02 |
:103E800086E490E00E949119CF911F91FF90EF90EE |
:103E900008951F920F920FB60F921124EF92FF9286 |
:103EA0000F931F932F933F934F935F936F937F9342 |
:103EB0008F939F93AF93BF93EF93FF9380913103C1 |
:103EC000282F3327442755278F5F80933103F9012B |
:103ED0002231310508F0E3C3EA5BFF4F0C944792AF |
:103EE000809178009091790046C0809178009091FF |
:103EF000790047C1809178009091790090933403C4 |
:103F00008093330372C180916A0490916B04209175 |
:103F1000780030917900821B930B90932407809353 |
:103F20002307809123079091240790933E03809369 |
:103F30003D0379C1809178009091790020916C04C3 |
:103F400030916D04821B930B90932E0780932D0765 |
:103F500080912D0790912E079093400380933F030B |
:103F6000A0C380913703909138032091780030915D |
:103F70007900820F931F909338038093370381E079 |
:103F800091C3809135039091360320917800309150 |
:103F90007900820F931F909336038093350384E05A |
:103FA00081C38091F10783FF1AC080911F01909116 |
:103FB00020019C01220F331F280F391F40917800E8 |
:103FC000509179008BE090E0489FB001499F700DBF |
:103FD000589F700D1124CB016EE170E00FC08091ED |
:103FE0001F01909120019C01220F331F280F391FC0 |
:103FF000809178009091790063E070E00E94AC912C |
:10400000260F371F36952795369527953093200133 |
:1040100020931F0185E046C380917800909179003C |
:104020004091660450916704841B950B90931F0385 |
:1040300080931E0380911E0390911F03029704F149 |
:1040400072E04E3E570784F4209132032B5F209399 |
:10405000320325508091D0039091D103845F914029 |
:1040600018F4215F2093320380913203853684F166 |
:104070004F5F5F4F5093670440936604845626C099 |
:1040800080911E0390911F038F5F9F4F0CF572E08C |
:1040900047325707ECF0209132032550209332032A |
:1040A0002B5F8091D0039091D103845F914018F4ED |
:1040B0002F5020933203809132038C394CF44150BD |
:1040C000504050936704409366048C5980933203A8 |
:1040D000809178009091790090932607809325072E |
:1040E00080911E0390911F039C01442737FD40954A |
:1040F000542F8091210490912204A0912304B09127 |
:104100002404820F931FA41FB51F80932104909352 |
:104110002204A0932304B09324042091210430911D |
:104120002204409123045091240457FF04C02150DD |
:104130003C4F4F4F5F4F6AE0559547953795279510 |
:104140006A95D1F78091210490912204A0912304D3 |
:10415000B0912404821B930BA40BB50B8093210414 |
:1041600090932204A0932304B09324042EC1809141 |
:104170003503909136032091780030917900820FB9 |
:10418000931F9093360380933503109230038CC2B3 |
:10419000809101018A3071F48091780090917900CA |
:1041A0002091330330913403820F931F019696952B |
:1041B000879517C04091330350913403843158F0F0 |
:1041C0002091780030917900240F351F8FEF97E010 |
:1041D000821B930B06C08091780090917900840F28 |
:1041E000951F909325038093240386E05BC2809102 |
:1041F0006A0490916B042091780030917900821BC1 |
:10420000930B909324078093230780912307909129 |
:10421000240720913D0330913E03820F931F90931A |
:1042200023038093220387E03DC280917800909120 |
:10423000790020916C0430916D04821B930B909354 |
:104240002E0780932D0780912D0790912E072091A6 |
:104250003F0330914003820F931F9093210380937B |
:1042600020031FC2209137033091380380917800DA |
:1042700090917900280F391F30933803209337032A |
:10428000809101018A3019F4220F331F04C0220FDC |
:10429000331F220F331F30933803209337032091AD |
:1042A000370330913803C90137FD079603E0959530 |
:1042B00087950A95E1F790932903809328038091CD |
:1042C000390390913A03820F931F97FD01969595BC |
:1042D000879590933A038093390320917604309127 |
:1042E0007704821B930B90931E0180931D012091F4 |
:1042F0002E0330912F0380911D0190911E01280FF4 |
:10430000391F37FF02C02F5F3F4F359527953093F8 |
:104310002F0320932E0333CE2091350330913603A3 |
:104320008091780090917900280F391F30933603DF |
:1043300020933503809101018A3019F4220F331F35 |
:1043400004C0220F331F220F331F309336032093F4 |
:1043500035032091350330913603C90137FD0796A7 |
:10436000F3E095958795FA95E1F79093270380936D |
:10437000260380913B0390913C03820F931F97FD8E |
:1043800001969595879590933C0380933B032091EC |
:10439000740430917504821B930B90931C018093DD |
:1043A0001B0120912C0330912D0380911B019091D2 |
:1043B0001C01280F391F37FF02C02F5F3F4F359573 |
:1043C000279530932D0320932C0383E06BC110922B |
:1043D000310381E0809311018091150390911603C0 |
:1043E0000196909316038093150380917800909125 |
:1043F0007900909316018093150180911501909199 |
:104400001601AA27BB272091410330914203409116 |
:10441000430350914403280F391F4A1F5B1F209309 |
:1044200041033093420340934303509344038091EC |
:1044300045038F5F80934503803108F432C180913A |
:10444000170190911801A0911901B0911A017C01F6 |
:104450008D0163E0EE0CFF1C001F111F6A95D1F760 |
:10446000E81AF90A0A0B1B0BE20EF31E041F151FB4 |
:1044700080911903992787FD9095A92FB92FBC0129 |
:10448000CD0120EB30E240E050E00E948191DC0160 |
:10449000CB01E81AF90A0A0B1B0BD801C7010496D5 |
:1044A000A11DB11DB7FF05C0D801C7010B96A11D05 |
:1044B000B11D23E0B595A795979587952A95D1F7D6 |
:1044C0008093170190931801A0931901B0931A01DA |
:1044D00080912707909128077C010027F7FC009521 |
:1044E000102F8091170190911801A0911901B0919E |
:1044F0001A01E81AF90A0A0B1B0BE0920104F09268 |
:104500000204009303041093040420911A033091D1 |
:104510001B0340911C0350911D0357FF04C0215FF2 |
:104520003F4F4F4F5F4F84E05595479537952795FF |
:104530008A95D1F780911A0390911B03A0911C03D7 |
:10454000B0911D03821B930BA40BB50B80931A0330 |
:1045500090931B03A0931C03B0931D0380911A0337 |
:1045600090911B03A0911C03B0911D038E0D9F1D04 |
:10457000A01FB11F80931A0390931B03A0931C03E9 |
:10458000B0931D0380911A0390911B03A0911C030B |
:10459000B0911D03B7FF03C00F96A11DB11D14E01C |
:1045A000B595A795979587951A95D1F72091010410 |
:1045B00030910204281B390B64E0213036071CF0CF |
:1045C00020E034E006C07CEF2030370714F420E010 |
:1045D0003CEF8091170390911803809117039091FD |
:1045E000180397FF03C0909581959F4FA901F3E0B1 |
:1045F000440F551FFA95E1F78D5B9240C4F080910E |
:104600001703909118039C01E4E0220F331FEA95F1 |
:10461000E1F7281B390B240F351F37FF02C0215F3C |
:104620003F4F74E0359527957A95E1F717C0809153 |
:104630001703909118039C0165E0220F331F6A95C0 |
:10464000E1F7281B390B240F351F37FF02C0215E0D |
:104650003F4F45E0359527954A95E1F7309318038C |
:10466000209317038091410390914203A09143034B |
:10467000B0914403B7FF03C00196A11DB11DB595CC |
:10468000A795979587958093410390934203A093B4 |
:104690004303B093440388E08093450302C0109223 |
:1046A000310382E0809330038091300380937C005B |
:1046B00080913103882319F08FEC80937A00FF9169 |
:1046C000EF91BF91AF919F918F917F916F915F918A |
:1046D0004F913F912F911F910F91FF90EF900F906D |
:1046E0000FBE0F901F90189590E2E2E3F7E08FE481 |
:1046F0009193815087FFFCCF0895909148039035A6 |
:1047000040F4E92FFF27EE5CF84F80839F5F909382 |
:1047100048030895AF92BF92CF92DF92FF920F931A |
:104720001F93CF93DF932091460320FF0AC080910F |
:104730004703882311F0815002C0809121018093AA |
:10474000470321FF0CC090914703809121019817E6 |
:1047500019F41092470303C09F5F90934703822F81 |
:10476000992780FF04C081FF02C0109247030E9476 |
:10477000742380914703282F33279DE7C92E93E2A6 |
:10478000D92EC0913B05D0913C058A3098F481E147 |
:10479000809348033F932F938FE994E09F938F93E7 |
:1047A000DF92CF92FE0109952DB73EB72A5F3F4FAA |
:1047B0002DBF11C080E1809348033F932F9384EA7B |
:1047C00094E09F938F93DF92CF92FE0109958DB76E |
:1047D0009EB706968DBF20914703822F9927AA275F |
:1047E000BB27FC01419710F00C94E22CE85AFF4FD4 |
:1047F0000DE7C02E03E2D02EC0913B05D0913C05C1 |
:104800000C9447921092480389EA94E09F938F9307 |
:104810000DE713E2DF92CF92FE01099584E18093C8 |
:1048200048030F900F900F900F9084E690E09F93B5 |
:104830008F938AE590E09F938F931F921F928091B0 |
:1048400001016AE00E94A091892F99279F938F937D |
:10485000809101010E94A09199279F938F9389EBEA |
:1048600094E09F938F93DF92CF92E0913B05F0917C |
:104870003C05099588E280934803EDB7FEB73E9664 |
:10488000EDBF81E098E09F938F930E94633099275A |
:104890009F938F9381ED94E09F938F93DF92CF92BC |
:1048A000E0913B05F0913C050995809155059927CC |
:1048B0002DB73EB7285F3F4F2DBFEC01C071D070C0 |
:1048C00084FF06C08CE3809348038FED94E0F1C031 |
:1048D0009091E204992349F18CE380934803892F56 |
:1048E00099279F938F938CEE94E09F938F931F93C0 |
:1048F0000F93E0913B05F0913C050995DF93CF9331 |
:104900009091E20481E1989FC0011124825C954F4F |
:104910009F938F931F930F93E0913B05F0913C057C |
:1049200009958DB79EB70C9647C190915405992370 |
:10493000B1F08CE380934803892F99279F938F933D |
:1049400084EF94E09F938F931F930F93E0913B0527 |
:10495000F0913C050995EDB7FEB7369679C4909174 |
:104960004E03992371F08CE380934803892F992794 |
:104970009F938F938BE095E09F938F931F930F935B |
:10498000D9C48091360190913701069710F00C94AC |
:10499000EB2C8CE38093480380E295E0A5C78091DF |
:1049A00070091DE7C12E13E2D12EC0913B05D091B5 |
:1049B0003C0580FF6BC010924803809101049091E8 |
:1049C0000204A0910304B0910404BC01CD0125E0D0 |
:1049D00030E040E050E00E94F5913F932F938DE24C |
:1049E00095E09F938F93DF92CF92FE01099584E12A |
:1049F000809348038DB79EB706968DBF8091FD03C7 |
:104A00009091FE03A091FF03B0910004BC01CD0181 |
:104A100025E030E040E050E00E94F5913F932F9375 |
:104A20008AE395E09F938F93DF92CF92E0913B05CD |
:104A3000F0913C05099588E280934803EDB7FEB7F5 |
:104A40003696EDBF80911501909116019F938F933B |
:104A500087E495E09F938F93DF92CF92E0913B059F |
:104A6000F0913C0509958CE3809348032DB73EB740 |
:104A70002A5F3F4F2DBF87B599279F938F9384E57A |
:104A800095E09F938F93DF92CF928EC01092480350 |
:104A900081E695E09F938F93DF92CF92FE01099577 |
:104AA00084E1809348030F900F900F900F9080E760 |
:104AB00095E09F938F93DF92CF921AC7109248038D |
:104AC00089E795E09F938F930DE713E2DF92CF92F2 |
:104AD000FE01099584E1809348030F900F900F9099 |
:104AE0000F908091610490916204A0916304B09151 |
:104AF0006404B7FF04C081509C4FAF4FBF4FCAE062 |
:104B0000B595A79597958795CA95D1F7BF93AF931C |
:104B10009F938F9386E895E09F938F931F930F93B6 |
:104B2000E0913B05F0913C05099588E280934803AC |
:104B3000EDB7FEB73896EDBF8091590490915A04B5 |
:104B4000A0915B04B0915C04B7FF04C081509C4FFE |
:104B5000AF4FBF4FFAE0B595A79597958795FA9512 |
:104B6000D1F7BF93AF939F938F9385E995E09F9380 |
:104B70008F931F930F93E0913B05F0913C050995AE |
:104B80008CE3809348032DB73EB7285F3F4F2DBF7E |
:104B900080912D0990912E099F938F9384EA95E03F |
:104BA0009F938F931F930F93E0913B05F0913C05EA |
:104BB00009958DB79EB706968DBF0DC7E1E0FE2E15 |
:104BC000C1E0D0E009EB18E09F2D969584E1989F15 |
:104BD000C001112480934803F801828193819F933F |
:104BE0008F932196DF93CF932197808191819F931B |
:104BF0008F93DF93CF9383EB95E09F938F938DE714 |
:104C000093E29F938F93E0913B05F0913C050995CA |
:104C10002DB73EB7245F3F4F2DBF32E0F30E2296F3 |
:104C20000C5F1F4F88E08F1578F6D5C610924803A9 |
:104C300080918507E82FFF27EE0FFF1FE954F74FFC |
:104C4000808191819F938F9380918407E82FFF2724 |
:104C5000EE0FFF1FE954F74F808191819F938F934F |
:104C600085EC95E09F938F93DF92CF92FE0109959B |
:104C700084E180934803EDB7FEB73896EDBF80918D |
:104C80008707E82FFF27EE0FFF1FE954F74F8081BA |
:104C900091819F938F9380918607E82FFF27EE0FD6 |
:104CA000FF1FE954F74F8081918181589F4F9F9357 |
:104CB0008F9385ED95E09F938F93DF92CF92E09154 |
:104CC0003B05F0913C05099588E2809348032DB798 |
:104CD0003EB7285F3F4F2DBF80918907E82FFF2700 |
:104CE000EE0FFF1FE954F74F8081918181589F4F4C |
:104CF0009F938F9380918807E82FFF27EE0FFF1F68 |
:104D0000E954F74F8081918181589F4F9F938F93F2 |
:104D100085EE95E09F938F93DF92CF92E0913B05D4 |
:104D2000F0913C0509958CE3809348038DB79EB7BD |
:104D300008968DBF80918B07E82FFF27EE0FFF1F8E |
:104D4000E954F74F8081918181589F4F9F938F93B2 |
:104D500080918A07E82FFF27EE0FFF1FE954F74FD6 |
:104D60008081918181589F4F9F938F9385EF95E02C |
:104D700063C21092480385E096E09F938F930DE7FE |
:104D800013E2DF92CF92FE010995809101010F900D |
:104D90000F900F900F908A3009F09DC084E18093AE |
:104DA000480380917604909177049C0197FF02C09C |
:104DB000295F3F4F287F821B930B9F938F93809196 |
:104DC00076049091770497FD079673E09595879503 |
:104DD0007A95E1F79F938F93209176043091770431 |
:104DE00037FF02C0295F3F4F63E0359527956A95ED |
:104DF000E1F78091280390912903821B930B9F93E5 |
:104E00008F9383E196E09F938F931F930F93E0918D |
:104E10003B05F0913C05099588E2809348032DB746 |
:104E20003EB7265F3F4F2DBF80917404909175046B |
:104E30009C0197FF02C0295F3F4F287F821B930B85 |
:104E40009F938F93809174049091750497FD0796BA |
:104E500053E0959587955A95E1F79F938F9320910D |
:104E600074043091750437FF02C0295F3F4F43E05F |
:104E7000359527954A95E1F7809126039091270370 |
:104E8000821B930B9F938F9384E296E09F938F9363 |
:104E90001F930F93E0913B05F0913C0509958CE33E |
:104EA000809348038DB79EB70A968DBF8091720498 |
:104EB000909173049F938F938091720490917304E7 |
:104EC0002091240330912503821B930B9F938F9392 |
:104ED00085E396E0ADC08B3019F0843108F4ADC0A5 |
:104EE00084E18093480380917604909177049C013B |
:104EF00097FF02C0215F3F4F207F821B930B97FDDE |
:104F00000196959587959F938F93809176049091C4 |
:104F1000770497FD0F9624E0959587952A95E1F7FC |
:104F20009F938F93209176043091770437FF02C0CE |
:104F3000295F3F4FC3E035952795CA95E1F78091EA |
:104F4000280390912903821B930B9F938F9383E4F3 |
:104F500096E09F938F931F930F93E0913B05F09101 |
:104F60003C05099588E2809348032DB73EB7265F3C |
:104F70003F4F2DBF80917404909175049C0197FF61 |
:104F800002C0215F3F4F207F821B930B97FD01964C |
:104F9000959587959F938F93809174049091750454 |
:104FA00097FD0F96A4E095958795AA95E1F79F93B5 |
:104FB0008F93209174043091750437FF02C0295FEC |
:104FC0003F4FF3E035952795FA95E1F78091260359 |
:104FD00090912703821B930B9F938F9385E596E017 |
:104FE0009F938F931F930F93E0913B05F0913C05A6 |
:104FF00009958CE3809348038DB79EB70A968DBFC1 |
:10500000809172049091730497FD01969595879510 |
:105010009F938F9380917204909173042091240345 |
:1050200030912503821B930B9F938F9387E696E025 |
:105030009F938F931F930F9303C18D3009F0CBC4BF |
:1050400084E1809348038091140199279F938F9363 |
:10505000809176049091770497FD0F9674E0959572 |
:1050600087957A95E1F79F938F93209176043091FD |
:10507000770437FF02C0295F3F4F63E035952795DE |
:105080006A95E1F78091280390912903821B930B85 |
:105090009F938F9386E796E09F938F931F930F9331 |
:1050A000E0913B05F0913C05099588E28093480327 |
:1050B0002DB73EB7265F3F4F2DBF80911301992733 |
:1050C0009F938F93809174049091750497FD0F9630 |
:1050D00054E0959587955A95E1F79F938F9320918A |
:1050E00074043091750437FF02C0295F3F4F43E0DD |
:1050F000359527954A95E1F78091260390912703EE |
:10510000821B930B9F938F938AE896E09F938F93D4 |
:105110001F930F93E0913B05F0913C0509958CE3BB |
:10512000809348038DB79EB70A968DBF8091120178 |
:1051300099279F938F93809172049091730497FDA8 |
:105140000196959587959F938F9380917204909186 |
:1051500073042091240330912503821B930B9F93AA |
:105160008F938EE996E09F938F931F930F93E09117 |
:105170003B05F0913C050995EDB7FEB73A9668C03E |
:105180001092480382EB96E09F938F93DF92CF9229 |
:10519000FE01099584E1809348030F900F900F90D2 |
:1051A0000F9080916C0490916D049F938F938091E8 |
:1051B0002003909121039F938F938FEB96E09F9311 |
:1051C0008F93DF92CF92E0913B05F0913C050995DA |
:1051D00088E2809348032DB73EB7285F3F4F2DBF2D |
:1051E00080916A0490916B049F938F938091220326 |
:1051F000909123039F938F938EEC96E09F938F93D0 |
:10520000DF92CF92E0913B05F0913C0509958CE34C |
:10521000809348038DB79EB708968DBF8091660432 |
:10522000909167049F938F9380911E0390911F0329 |
:105230009F938F938DED96E09F938F93DF92CF9204 |
:10524000E0913B05F0913C050995EDB7FEB7389626 |
:10525000EDBFC1C31092480380911F0190912001BE |
:105260006AE070E00E94C0919F938F9380911F012C |
:10527000909120016AE070E00E94C0917F936F934B |
:105280008CEE96E09F938F93DF92CF92FE0109956B |
:1052900084E1809348032DB73EB7285F3F4F2DBF71 |
:1052A0008091100A9091110A6AE070E00E94AC911E |
:1052B0009F938F938091100A9091110A6AE070E099 |
:1052C0000E94AC917F936F9380E097E09F938F93C0 |
:1052D000DF92CF92E0913B05F0913C05099588E281 |
:1052E000809348038DB79EB708968DBF8091120AB0 |
:1052F0009091130A9F938F9384E197E09F938F93EC |
:10530000DF92CF92E0913B05F0913C0509958CE34B |
:1053100080934803EDB7FEB73696EDBF8091140A2F |
:105320009091150A9F938F9384E297E09F938F93B8 |
:10533000DF92CF92E0913B05F0913C0509952DB7A6 |
:105340003EB72A5F3F4F4FC11092480386E397E074 |
:105350009F938F93DF92CF92FE01099584E1809312 |
:1053600048030F900F900F900F908091B708909185 |
:10537000B8089F938F938FE397E09F938F93DF926B |
:10538000CF92E0913B05F0913C05099588E280932E |
:1053900048038DB79EB706968DBF80910704992765 |
:1053A0009F938F938FE497E09F938F93DF92CF9299 |
:1053B000E0913B05F0913C0509958CE3809348030F |
:1053C000EDB7FEB73696EDBF8091B60899270197E5 |
:1053D0009F938F938FE597E0A9CF109248038FE6B4 |
:1053E00097E09F938F93DF92CF92FE01099584E11E |
:1053F000809348030F900F900F900F908091880139 |
:10540000909189019F938F9387E797E09F938F9364 |
:10541000DF92CF92E0913B05F0913C05099588E23F |
:10542000809348038DB79EB706968DBF80912D0956 |
:1054300090912E099F938F9385E897E09F938F9388 |
:10544000DF92CF92E0913B05F0913C0509958CE30A |
:1054500080934803EDB7FEB73696EDBF80911F04E9 |
:10546000909120049F938F9383E997E05FCFC8E0EA |
:10547000CC2EC4E0DC2E20E030E0E901B3E0FB2ECE |
:10548000C0934803F60181916F0199279F938F93F1 |
:1054900089010F5F1F4F1F930F9381EA97E09F933E |
:1054A0008F938DE793E29F938F93E0913B05F0916B |
:1054B0003C0509952DB73EB7285F3F4F2DBFFA94A5 |
:1054C00064969801F7FEDCCF86C2ACE0CA2EA4E059 |
:1054D000DA2EC0E0D0E08E01F3E0FF2E0093480307 |
:1054E000F60181916F0199279F938F932596DF9302 |
:1054F000CF938EEA97E09F938F938DE793E29F93EC |
:105500008F93E0913B05F0913C0509952DB73EB78F |
:10551000285F3F4F2DBFFA940C5E1F4F2497F7FE74 |
:10552000DDCF59C2109248038BEB97E09F938F9386 |
:105530000DE713E2DF92CF92FE01099584E180939B |
:1055400048030F900F900F900F908091670199275B |
:105550009F938F9383EC97E09F938F93DF92CF92EB |
:10556000E0913B05F0913C05099588E28093480362 |
:105570008DB79EB706968DBF80910203909103036D |
:1055800097FD039695958795959587959F938F930E |
:1055900081ED97E09F938F931F930F93E0913B05CD |
:1055A000F0913C0509958CE380934803EDB7FEB775 |
:1055B0003696EDBF8091B30799279F938F93809183 |
:1055C000B20799279F938F938FED97E09F938F93C7 |
:1055D0001F930F93E0913B05F0913C0509952DB782 |
:1055E0003EB7285F3F4F2DBFF6C1109248038DEEA6 |
:1055F00097E09F938F937DE7A72E73E2B72EDF92FC |
:10560000CF92FE0109950F900F900F900F90C6E575 |
:10561000D8E000E010E062E0F62E802F8C5E8093F0 |
:1056200048038B8D99278F7790709F938F938B89E9 |
:1056300099278F7790709F938F938B8599278F777A |
:1056400090709F938F938B8199278F7790709F9302 |
:105650008F938DEF97E09F938F93BF92AF92E091DE |
:105660003B05F0913C0509958DB79EB70C968DBF13 |
:10567000FA940C5E1F4FA096F7FECFCFACC11092EC |
:1056800048038EE098E09F938F935DE7A52E53E249 |
:10569000B52EDF92CF92FE0109950F900F900F90DB |
:1056A0000F90C6E5D8E000E010E042E0F42E802F35 |
:1056B0008C5E809348038F8D992787FD90959F93EB |
:1056C0008F938F89992787FD90959F938F938F85CF |
:1056D000992787FD90959F938F938F81992787FDB9 |
:1056E00090959F938F938DE198E09F938F93BF92B6 |
:1056F000AF92E0913B05F0913C050995EDB7FEB7FF |
:105700003C96EDBFFA940C5E1F4FA096F7FECFCFEC |
:1057100062C1109248038EE298E09F938F930DE749 |
:1057200013E2DF92CF92FE01099584E18093480352 |
:105730000F900F900F900F9080917108881F88270D |
:10574000881F97E0899FC00111248D969F938F93A6 |
:1057500080916908881F8827881F96E0899FC0016B |
:1057600011248D969F938F9380916108881F8827BD |
:10577000881F95E0899FC00111248D969F938F9378 |
:1057800080915908881F8827881F9927880F991F9B |
:10579000880F991F8D969F938F938DE398E09F9329 |
:1057A0008F93DF92CF92E0913B05F0913C050995F4 |
:1057B00088E2809348032DB73EB7245F3F4F2DBF4B |
:1057C00080919108881F8827881F9BE0899FC001CE |
:1057D00011248D969F938F9380918908881F882725 |
:1057E000881F9AE0899FC00111248D969F938F9303 |
:1057F00080918108881F8827881F99E0899FC001B0 |
:1058000011248D969F938F9380917908881F882704 |
:10581000881F992723E0880F991F2A95E1F78D9615 |
:105820009F938F9381E598E09F938F93DF92CF9220 |
:10583000E0913B05F0913C0509958CE3809348038A |
:105840008DB79EB70C968DBF80919908881F8827C9 |
:10585000881F9CE0899FC00111248D969F938F9390 |
:1058600085E698E09F938F93DF92CF92E0913B057E |
:10587000F0913C0509958091A108EDB7FEB73696E9 |
:10588000EDBF87FF12C080E48093480386E798E06D |
:105890009F938F93DF92CF92E0913B05F0913C056F |
:1058A00009950F900F900F900F908091A90887FF96 |
:1058B00012C084E48093480389E798E09F938F9314 |
:1058C0001F930F93E0913B05F0913C0509950F90D4 |
:1058D0000F900F900F908091B10887FF7CC088E4F3 |
:1058E000809348038CE798E09F938F931F930F93C7 |
:1058F000E0913B05F0913C0509950F900F900F90BA |
:105900000F9069C0109248038FE798E09F938F93A0 |
:10591000DF92CF92FE01099584E1809348030F90B6 |
:105920000F900F900F908091D8029091D9029F9381 |
:105930008F938DE898E09F938F93DF92CF92E091C1 |
:105940003B05F0913C05099588E2809348032DB70B |
:105950003EB72A5F3F4F2DBF8091DA029091DB0264 |
:105960009F938F938AE998E09F938F93DF92CF92D2 |
:10597000E0913B05F0913C05099589E4809348034B |
:105980008DB79EB706968DBF87EA98E09F938F9359 |
:10599000DF92CF92E0913B05F0913C050995809113 |
:1059A00046030F900F900F900F9083FF14C010923A |
:1059B000DB021092DA0260E070E08EE090E00E947C |
:1059C000002F09C080912101281719F4215020933C |
:1059D00021011092470310924603DF91CF911F914E |
:1059E0000F91FF90DF90CF90BF90AF900895F999FD |
:1059F000FECF92BD81BDF89A80B599270895F99997 |
:105A0000FECF1FBA92BD81BD60BD0FB6F894FA9A61 |
:105A1000F99A0FBE08954AEA20E030E026173707CA |
:105A200040F4FC018191480F2F5F3F4F2617370745 |
:105A3000C8F3842F99270895EAEA40E050E046171A |
:105A4000570778F49C01F999FECF32BD21BDF89A31 |
:105A500080B5E80F4F5F5F4F2F5F3F4F46175707E7 |
:105A600090F38E2F9927089581E08093860782E036 |
:105A70008093850783E08093840784E08093870781 |
:105A800085E08093880786E08093890787E080938C |
:105A90008A0788E080938B0789E080938C078AE0EF |
:105AA00080938D078BE080938E078CE080938F0727 |
:105AB00008958CE5809383078CE0E3EFF7E0119283 |
:105AC0008A95E9F780910101843150F08AE0809352 |
:105AD000A3071092C7078BE180939F078EE40AC04B |
:105AE00083E08093A30780E28093C7078EE18093D1 |
:105AF0009F0785E58093C4078093C50780E2809364 |
:105B0000C6071092EF078AE68093900782E280939F |
:105B1000F10780E48093F20766E06093AA07109291 |
:105B2000E7071092E40748E040939D0756EE509334 |
:105B30009E078093A0079EE1909391078FEF80933B |
:105B400093072FE020939407909392071092960763 |
:105B50004093970784E180939807109299072093C8 |
:105B600095071092AC071092AD071092AE071092F5 |
:105B7000AF071092C9071092CA071092CB07109274 |
:105B8000CC0790E89093B00732E33093B10782E0FE |
:105B90008093F0072093B2075093B30784E080937B |
:105BA000B8078DE78093BB078093BC078093BD0740 |
:105BB0009093B40725E52093B50786E48093B60754 |
:105BC0008CED8093B7078CE38093B9071092BA07E6 |
:105BD0008FE58093CD0783EF8093CF078AEA809388 |
:105BE000D1078093D20788E28093CE078093D007B5 |
:105BF0001092D3073093BE079AE59093BF07309376 |
:105C0000C0078EEF8093D40784E68093D5079093E6 |
:105C1000D6079093D7079093D8078BE48093D90742 |
:105C20002093DA078093DB071092DC076093DD078F |
:105C30004093DE079093DF078AE28093E00785EFC9 |
:105C40008093E1078CE88093E20785E08093E30787 |
:105C50001092E5071092E60781E28093A70781E49E |
:105C60008093A8079093A9071092E8071092E9077C |
:105C70001092EA0786E98093EB079093C10787E3C8 |
:105C80008093C2071092EC071092ED071092EE0776 |
:105C900008950E94592D8AE080939A0780E18093AD |
:105CA0009B0726E020939C079AE59093A10788E73D |
:105CB0008093A2079093A4078093A5072093A6073B |
:105CC00080E28093AB078CE38093C3078BE48093DF |
:105CD000C80786E491E6A3E7B4E78093F3079093BF |
:105CE000F407A093F507B093F6076CE770E083E83C |
:105CF00097E00E940B2D8093FF070895CF93DF93C9 |
:105D00000E94592D88E080939A0730E130939B07D9 |
:105D100026E020939C0794E69093A10788E7809360 |
:105D2000A2079093A4078093A5072093A60730931A |
:105D3000AB0786E48093C3078093C807A3EFB7E05F |
:105D4000E2E2F1E0ED01019009922A95E1F76CE7BA |
:105D500070E0CD01805790400E940B2D8093FF078B |
:105D6000DF91CF9108950E94592D26E020939A0744 |
:105D70008AE080939B0784E080939C0794E690934D |
:105D8000A10788E78093A2079093A4078093A507B3 |
:105D90002093A60780E18093AB0786E48093C30736 |
:105DA0008093C80785E491E6A3E7B9E78093F307FA |
:105DB0009093F407A093F507B093F6076CE770E0B3 |
:105DC00083E897E00E940B2D8093FF070895F999CF |
:105DD000FECF92BD81BDF89A80B599270895F999B3 |
:105DE000FECF1FBA92BD81BD60BD0FB6F894FA9A7E |
:105DF000F99A0FBE089567EF7CE20E940F90089514 |
:105E00004FEF5CE20E9449900895EF92FF920F934A |
:105E10001F93CF93C82F8150853008F0C3E08DE7E2 |
:105E2000C89F8001112487EEE82E8FEFF82EE00E38 |
:105E3000F11E6CE770E0C7010E941C2D682F9801CD |
:105E40002D593F4F8FB39927AC014270507081FD9F |
:105E5000F9CF32BD21BDF89A80B5861711F0CA017D |
:105E600023C08FB399279C012270307081FDF9CF38 |
:105E7000F2BCE1BCF89A80B58C3511F0C90114C0B0 |
:105E80008DE7C89FC0011124499727EF3CE24DE7F9 |
:105E900050E0BC0183E897E00E94EA8F0E94BE6D4B |
:105EA0000E94C78B81E090E0CF911F910F91FF90EE |
:105EB000EF900895282F863010F025E003C0882346 |
:105EC00009F421E0F999FECF1FBA82E090E092BD7B |
:105ED00081BD20BD0FB6F894FA9AF99A0FBE0895C5 |
:105EE000CF93C82F809183078C3509F051C0C630FD |
:105EF00010F0C5E003C0CC2309F44AC00E94D38E41 |
:105F00008091F20782FF07C08091A807843618F0BD |
:105F100080E58093A8076CE770E083E897E00E9433 |
:105F20000B2D8093FF078DE7C89FC00111242FEF31 |
:105F30003CE24DE750E063E877E049970E94279004 |
:105F40002FEF3CE24CE050E064E877E080E590E041 |
:105F50000E9427906CE070E084E897E00E940B2D8F |
:105F6000282FF999FECF1FBA8CE590E092BD81BD34 |
:105F700020BD0FB6F894FA9AF99A0FBE8C2F0E94A2 |
:105F80005A2F0E94BE6D0E94C78B81E090E002C034 |
:105F900080E090E0CF9108956DE470E088EE93E0AA |
:105FA0000E941C2D482F8FB399279C0122703070BE |
:105FB00081FDF9CF85E394E092BD81BDF89A80B56B |
:105FC000841779F48FB399279C012270307081FD7A |
:105FD000F9CF88EE93E092BD81BDF89A80B581300B |
:105FE00011F0C901089527EF3CE24EE450E068EE5D |
:105FF00073E080E098E00E94EA8F81E090E00895ED |
:10600000809100088130A9F46DE470E080E098E0B0 |
:106010000E940B2D80934D082FEF3CE24EE450E0A0 |
:1060200060E078E088EE93E00E94279081E090E0C5 |
:10603000089580E090E00895CF93DF9381E080930E |
:106040000008E0E0F8E08FE0158616861786108AD3 |
:106050008150349687FFF8CF80E480930D088093B9 |
:106060000E0810920F08809310088093110890EC8E |
:1060700090931208109213088093140880931508C7 |
:106080001092160890931708909318088093190897 |
:1060900010921A0880931B0890931C08A1E0B8E0A6 |
:1060A0008CE0E9E2F1E0ED01019009928A95E1F7D7 |
:1060B0006DE470E0CD0101970E940B2D80934D0897 |
:1060C000DF91CF910895F999FECF82E090E092BDE3 |
:1060D00081BDF89A80B5282F863078F023E0322FE2 |
:1060E000F999FECF1FBA82E090E092BD81BD30BD2C |
:1060F0000FB6F894FA9AF99A0FBE822F992708954D |
:106100001F93CF93C82F162F863010F0C5E003C021 |
:10611000882309F4C1E08C2F99278230910541F042 |
:106120008330910544F4019731F40E94492E05C053 |
:106130000E947E2E02C00E94B32E1123E1F06CE07B |
:1061400070E080E590E00E941C2D282FF999FECF89 |
:106150008CE590E092BD81BDF89A80B5821759F424 |
:1061600027EF3CE24CE050E060E570E084E897E027 |
:106170000E94EA8F02C00E94342D8C2F0E94702F43 |
:10618000CF911F910895DF92EF92FF920F931F938B |
:10619000CF93FF24DF2CEF2C81E090E00E94E72ECC |
:1061A0008C3511F031E0E32E6CE070E080E590E09A |
:1061B0000E941C2DC82FF999FECF8CE590E092BD6E |
:1061C00081BDF89A80B58C1711F421E0D22EC1E080 |
:1061D00001E010E0EE2029F48C2F0E94052F882387 |
:1061E000C9F591E0F92E1F930F938FEA98E09F93E2 |
:1061F0008F9380E695E19F938F93E0913B05F0911B |
:106200003C0509952DB73EB72A5F3F4F2DBF0230A1 |
:10621000110549F0033011054CF40130110531F43A |
:106220000E94492E05C00E947E2E02C00E94B32EFD |
:10623000DD2059F027EF3CE24CE050E060E570E0F3 |
:1062400084E897E00E94EA8F02C00E94342D8C2FD0 |
:106250000E94702FCF5F0F5F1F4FC63008F4BACF78 |
:10626000FF2019F083E00E945A2F0E946330C82F4C |
:106270000E94052F8C2F99279F938F9385ED98E08F |
:106280009F938F9300E615E11F930F93E0913B05D9 |
:10629000F0913C05099581E090E00E94E72E2DB732 |
:1062A0003EB72A5F3F4F2DBF8F3F21F00E94CC2F7A |
:1062B000882399F48EEE98E09F938F931F930F930A |
:1062C000E0913B05F0913C0509950E941C300E942D |
:1062D00000300F900F900F900F90EE2029F06CE59A |
:1062E00081E090E00E94EF2E1092820790E0EDE0B6 |
:1062F000F8E0CFE08081349618160CF49F5FC1500F |
:10630000C7FFF8CF90938207892F99279F938F9388 |
:1063100081E098E09F938F938FE099E09F938F9314 |
:106320001F930F93E0913B05F0913C0509950E9466 |
:106330004A098DB79EB708968DBFCF911F910F91D7 |
:10634000FF90EF90DF900895982F2FB7F894399829 |
:10635000389A88B1836088B98091B9008C7F809326 |
:10636000B9008AE28093B80010925303109251034F |
:1063700010925003992379F0E6E5F8E08BE0108263 |
:106380001182128213821482158216821782815022 |
:10639000389687FFF4CF78942FBF08951092530357 |
:1063A00084E98093BC0080E88093BC001092BD001B |
:1063B0001092BA001092BB001092B9001092B8006F |
:1063C00010924F0380E00E94A4311092BB0085E838 |
:1063D0008093BC0080914D03826080934D030895AB |
:1063E0001F920F920FB60F9211242F933F934F934A |
:1063F0005F938F939F93EF93FF9380915303282F85 |
:106400003327442755278F5F80935303F9012731A2 |
:10641000310508F0C2C2E759FF4F0C94479281E062 |
:1064200080934F0309C0809151038C3090F4809188 |
:1064300051038F5F8093510380915103E82FFF2711 |
:10644000EE0FFF1FEE0FFF1FE050F84F8585181667 |
:1064500054F7809151038C3070F010924C031092DD |
:106460004B031092510385E08093530380915003B6 |
:10647000880F8D5A04C080915103880F8E5A8093E3 |
:10648000BB0085E87FC280915103E82FFF2783E09E |
:10649000EE0FFF1F8A95E1F7EA5AF74F818180934B |
:1064A000BB0085E88093BC0080915103E82FFF2753 |
:1064B000EE0FFF1FEE0FFF1FEE0FFF1FEA5AF74F01 |
:1064C000808180FF91C080915103E82FFF27EE0F5C |
:1064D000FF1FEE0FFF1FEE0FFF1FEA5AF74F8281DB |
:1064E000882329F080918207873008F46CC280915C |
:1064F0004B0390914C03892B09F065C280914903AD |
:1065000090914A03892B09F05EC26EC080915103BD |
:1065100021E030E002C0220F331F8A95E2F780911C |
:10652000490390914A0328233923232B79F0809142 |
:106530005103E82FFF27EE0FFF1FEE0FFF1FEE0F97 |
:10654000FF1FEA5AF74F80E184830DC08091510309 |
:10655000E82FFF27EE0FFF1FEE0FFF1FEE0FFF1FAD |
:10656000EA5AF74F148280915103E82FFF2753E036 |
:10657000EE0FFF1F5A95E1F7EA5AF74F8481282F53 |
:10658000332743E0220F331F4A95E1F780915103EF |
:10659000E82FFF2793E0EE0FFF1F9A95E1F7EA5AE5 |
:1065A000F74F82818770822B8093BB0085E88093B0 |
:1065B000BC002091510381E090E002C0880F991F38 |
:1065C0002A95E2F720914B0330914C0382239323C9 |
:1065D000892B51F08EE498E09093570380935603F3 |
:1065E00088E080935803EFC184E089C1E0915603AD |
:1065F000F091570381918093BB0085E88093BC00A4 |
:10660000F0935703E0935603809158038150809391 |
:106610005803882309F4D7C183E071C18091B90080 |
:10662000803351F580915403882329F480915103DC |
:106630008F5F8093540380915103E82FFF2783E0FD |
:10664000EE0FFF1F8A95E1F7EA5AF74F83819927EA |
:106650008F7790708F3791057CF480915103E82FEC |
:10666000FF27EE0FFF1FEE0FFF1FEE0FFF1FEA5A6F |
:10667000F74F83818F5F83831092530384E9809364 |
:10668000BC008AE090E090933701809336018091BE |
:1066900051038F5F80935103109253036DC180911A |
:1066A000B9008034C9F180915003E82FFF27EE0F25 |
:1066B000FF1FEE0FFF1FEE0FFF1FEA5AF74F8381F8 |
:1066C0008F778383809150038F5F809350038091F5 |
:1066D00050038C30A0F01092500310924A03109295 |
:1066E0004903809155038F5F809355038C3038F0B8 |
:1066F0001092550380914D038D7F80934D038091BF |
:106700004D03816080934D031092530384E980937D |
:10671000BC0010924F0373C080915003E82FFF27F5 |
:10672000EE0FFF1FEE0FFF1FEE0FFF1FEA5AF74F8E |
:1067300083818068838380915003E82FFF27EE0FC9 |
:10674000FF1FEE0FFF1FEE0FFF1FEA5AF74F80816A |
:1067500080FF2FC080915003E82FFF2753E0EE0FFA |
:10676000FF1F5A95E1F7EA5AF74F8481992700975E |
:1067700051F04097D9F58EE498E0909357038093B9 |
:10678000560388E031C080915003992743E0880F79 |
:10679000991F4A95E1F7855A974F90935703809335 |
:1067A000560390915003809155039817E1F483E0CC |
:1067B0001BC080915003992733E0880F991F3A95A9 |
:1067C000E1F7855A974F9093570380935603809132 |
:1067D0004D0381FD06C09091500380915503981799 |
:1067E00011F482E001C081E0809358038091580346 |
:1067F000813011F485E801C085EC8093BC00809164 |
:10680000540380934E0310925403DDC0E09156036D |
:10681000F09157038091BB00808380915603909143 |
:106820005703019690935703809356038091580322 |
:10683000815080935803823010F085EC5DC0813028 |
:1068400011F485E859C080914D0381FF2DC08091DE |
:10685000CF0380FD1DC080915003E82FFF2723E068 |
:10686000EE0FFF1F2A95E1F7EA5AF74F86818A3F1C |
:1068700079F480915003E82FFF2793E0EE0FFF1F7C |
:106880009A95E1F7EA5AF74F8081816080830CC0C6 |
:1068900080915003E82FFF2783E0EE0FFF1F8A95BA |
:1068A000E1F7EA5AF74F1082809150038F5F80938F |
:1068B0005003809150038C30A0F01092500310923E |
:1068C0004A0310924903809155038F5F80935503CB |
:1068D0008C3038F01092550380914D038D7F80935A |
:1068E0004D031092530384E98093BC0080914D03C3 |
:1068F000816080934D0365C08093BC0086E08093E7 |
:10690000530361C088E9BBCD80915203880F805F3B |
:10691000B6CD8091520399278130910561F0823084 |
:1069200091051CF4892B21F04EC0029739F04BC021 |
:1069300080911401A4CD80911301A1CD8091120109 |
:106940009ECD80E89CCD1092530384E98093BC00D7 |
:1069500010924F038AE090E09093370180933601C4 |
:1069600080915203823088F4809152038F5F80932C |
:10697000520382E18093530380914D038E7F809375 |
:106980004D0385EA8093BC001EC010925203809193 |
:106990004D03816080934D0316C01092530384E928 |
:1069A0008093BC0080914D03816080934D038AE009 |
:1069B00090E090933701809336011092510310922A |
:1069C000500310924F03FF91EF919F918F915F9130 |
:1069D0004F913F912F910F900FBE0F901F901895E0 |
:1069E0001F93CF93DF93182F80910604882321F4FF |
:1069F0008091E702882319F081E090E097C01D3074 |
:106A000008F092C01123B1F0E12FFF2723E0EE0F31 |
:106A1000FF1F2A95E1F7EA5AF74F3597808135969F |
:106A200088230CF081C03897808180FD03C083E00B |
:106A300090E07CC080914E08823019F084E090E0B4 |
:106A400075C067E070E08EE498E00E940B2D909195 |
:106A50005508891719F085E090E068C080ED97E04F |
:106A60000E946F19EC0180914D0380FD05C0CE019D |
:106A70000E9478198823B9F3112319F48FEF90E05D |
:106A80000BC0212F33272150304081E090E002C01D |
:106A9000880F991F2A95E2F790934C0380934B033C |
:106AA000A1E0B0E0E6E5F8E040E050E06BE0CD01C9 |
:106AB000042E02C0880F991F0A94E2F720914B031D |
:106AC00030914C0382239323892B11F0118212827F |
:106AD00061504F5F5F4F389667FFE9CF10925103C7 |
:106AE0001092530380914D038E7F80934D0385EA6E |
:106AF0008093BC0080914D0380FD05C0CE010E94B3 |
:106B000078198823B9F380914B0390914C03892B1A |
:106B100029F0CE010E947819882311F380914B034C |
:106B200090914C03009711F082E090E0DF91CF91BB |
:106B30001F9108950F931F93CF93DF93982F809108 |
:106B40000604882321F48091E702882319F081E06C |
:106B500090E092C09D30A0F4992319F486E090E073 |
:106B60008BC0C92FDD27FE0133E0EE0FFF1F3A95E2 |
:106B7000E1F7EA5AF74F35978081359687FD03C0D4 |
:106B800082E090E079C03897808180FD03C083E087 |
:106B900090E072C080ED97E00E946F198C018091A7 |
:106BA0004D0380FD05C0C8010E9478198823B9F300 |
:106BB000219721E030E0C90102C0880F991FCA95D2 |
:106BC000E2F790934A0380934903D901E6E5F8E0A0 |
:106BD00040E050E06BE0CD01042E02C0880F991F09 |
:106BE0000A94E2F72091490330914A0382239323C8 |
:106BF000892B11F01182128261504F5F5F4F3896DE |
:106C000067FFE9CF1092500310924E08109255087A |
:106C10001092530380914D038E7F80934D0385EA3C |
:106C20008093BC0080914D0380FD05C0C8010E9487 |
:106C300078198823B9F38091490390914A03892BED |
:106C400029F0C8010E947819882311F380914E0819 |
:106C5000823019F084E090E00FC067E070E08EE4CD |
:106C600098E00E940B2D90915508891719F085E046 |
:106C700090E002C080E090E0DF91CF911F910F91F2 |
:106C80000895CF93DF9380E021E83FEFCBEED8E08B |
:106C9000E7EBF8E0DF01853020F411961C921E929C |
:106CA00002C0318320831982188222968F5F129648 |
:106CB00032968A3180F3109273041092720410920B |
:106CC0007504109274041092770410927604DF9188 |
:106CD000CF9108951F920F920FB60F9211240F9328 |
:106CE0001F932F933F934F935F936F937F938F9354 |
:106CF0009F93AF93BF93CF93DF93EF93FF938091D5 |
:106D0000F10782FDE1C0409186005091870080919B |
:106D10005A0390915B03481B590B80918600909118 |
:106D2000870090935B0380935A03CA018D5494406B |
:106D3000A0915C03B0915D03835F9A4178F48091E8 |
:106D40005C038093B608149714F010923A0181E026 |
:106D500090E090935D0380935C032BC2AD30B1054E |
:106D60000CF027C2CA018B5F9040845B914008F011 |
:106D700086C08091380190913901481B590BE091F0 |
:106D8000EC07EE2351F0FF27EE0FFF1FE954F74FFA |
:106D90008081918184369105ECF4FD01EA0FFB1F9F |
:106DA000E954F74F80819181FA01E81BF90BCF017B |
:106DB000F7FF03C0909581959F4F06975CF48091F3 |
:106DC0000704883C20F480910704865F01C088ECAA |
:106DD00080930704FD01EA0FFB1FE954F74F808100 |
:106DE00091819C01220F331F280F391F240F351F5B |
:106DF00037FF02C02D5F3F4FE901D595C795D59567 |
:106E0000C795CA0101968C179D0714F4219706C0F7 |
:106E100041505040C417D5070CF4219680910704C7 |
:106E2000833CE0F08D010A0F1B1FF801E954F74F76 |
:106E3000808191819E01281B390BC90163E070E0BC |
:106E40000E94C091CB01880F991F860F971F055193 |
:106E5000174FD80111969C938E9307C0AA0FBB1FA2 |
:106E6000A551B74F11961C921E92E0915C03F091D0 |
:106E70005D03EE0FFF1FE954F74FD183C0832091CC |
:106E80005C0330915D032F5F3F4F30935D03209390 |
:106E90005C0380910101843108F08BC125303105FC |
:106EA00011F45D9A01C05D9880915C0390915D033F |
:106EB0008630910511F45C9A01C05C98079711F433 |
:106EC0005B9A77C15B9875C14091860050918700AD |
:106ED00080915E0390915F03481B590B809186005F |
:106EE0009091870090935F0380935E03CA018D5455 |
:106EF00094406091C803835F9A4108F07AC0609320 |
:106F0000590380915903843008F453C09091B60816 |
:106F100080915903981709F04CC05091C9035B3018 |
:106F200008F43FC010923A011092C80340E05F316C |
:106F3000C0F0E42FFF27EE0FFF1F9F012C563C4FA0 |
:106F4000DF01A954B74F8D919C91D9018D939C93EA |
:106F5000DF01A551B74F8D919C91E255FC4F918374 |
:106F60008083E42FFF27EE0FFF1F9F012954374F27 |
:106F7000DF01A05ABC4F8D919C91D90111969C9331 |
:106F80008E93DF01A658BC4F8D919C91E551F74F30 |
:106F900091838083842F8F5F482F8D3040F28093C0 |
:106FA000C8038091C9038F3FB9F08F5F8093C903F5 |
:106FB00013C08091C903853620F08AE08093C9030D |
:106FC00002C01092C903809101018A3011F084310E |
:106FD00010F0289A01C0289881E08093C80380911E |
:106FE0000604882309F0E5C0809159038093B60810 |
:106FF000E0C06D3008F0B5C0CA018B5F9040845B83 |
:10700000914008F090C08091380190913901481B5F |
:10701000590BE62FFF27EE0FFF1FE05AFC4F808130 |
:107020009181FA01E81BF90BCF0105960B9720F52A |
:10703000E091EC07EE2351F0FF27EE0FFF1FE9541C |
:10704000F74F8081918184369105B4F48091C90312 |
:107050008A3120F080910704865F05C08B3028F0CC |
:10706000809107048E5F8093070480910704893C18 |
:1070700018F088EC80930704E62FFF27EE0FFF1F20 |
:10708000E05AFC4F808191819C01220F331F280F11 |
:10709000391F240F351F37FF02C02D5F3F4FE90115 |
:1070A000D595C795D595C795CA0101968C179D07AB |
:1070B00014F4219706C041505040C417D5070CF472 |
:1070C0002196809107048E3BD8F0E62FFF27EE0F24 |
:1070D000FF1FDF01A05ABC4F8D919C919E01281B80 |
:1070E000390BC90163E070E00E94C091CB01880FA9 |
:1070F000991F860F971FE658FC4F9183808308C025 |
:10710000E62FFF27EE0FFF1FE658FC4F118210827B |
:107110008091C803E82FFF27EE0FFF1FE05AFC4FB6 |
:10712000D183C08309C0809101018A3011F084317C |
:1071300010F0289A01C0289880910101843188F4C8 |
:107140008091C803853011F45D9A05C05D98863042 |
:1071500011F45C9A05C05C98873011F45B9A01C009 |
:107160005B988091C803843120F48F5F8093C803BB |
:1071700020C08431F1F4809101018A3011F0843112 |
:1071800010F0289A01C028988EE18093C8032CE063 |
:10719000CBEED8E0A4E9B3E0E7EBF8E08D919D9168 |
:1071A000918380833296198218822296215027FF7C |
:1071B000F5CFFF91EF91DF91CF91BF91AF919F916B |
:1071C0008F917F916F915F914F913F912F911F917F |
:1071D0000F910F900FBE0F901F901895EF92FF9296 |
:1071E0000F931F9380919F079927880F991F880FEE |
:1071F000991F7C010027F7FC0095102F80916104F6 |
:1072000090916204A0916304B0916404BC01CD012B |
:10721000A80197010E94F5913093E1062093E006C2 |
:107220008091590490915A04A0915B04B0915C0440 |
:10723000BC01CD01A80197010E94F5913093E306AE |
:107240002093E206809174099091750997FD039649 |
:1072500095958795959587959093E5068093E40697 |
:10726000809184099091850997FD0396959587955E |
:10727000959587959093E7068093E6068091720432 |
:10728000909173042091240330912503821B930B6A |
:107290009093E9068093E80680910104909102049E |
:1072A000A0910304B0910404BC01CD0125E030E0BD |
:1072B00040E050E00E94F5913093EB062093EA06FF |
:1072C00080911E0390911F039093ED068093EC062E |
:1072D00080918801909189019093F1068093F00646 |
:1072E00080911F01909120019093F3068093F20604 |
:1072F0008091070499279093F5068093F406809176 |
:107300002D0990912E099093F7068093F6068091AF |
:10731000570899279093F9068093F80680915F08A3 |
:1073200099279093FB068093FA0680916708992726 |
:107330009093FD068093FC0680916F0899279093A7 |
:10734000FF068093FE0680910203909103039093C1 |
:107350000907809308078091100A9091110A909371 |
:107360000D0780930C078091140A9091150A909351 |
:107370000F0780930E078091FD039091FE03A0916B |
:10738000FF03B0910004BC01CD0125E030E040E0F6 |
:1073900050E00E94F59130931107209310078091DF |
:1073A0001F049091200490931707809316078091F3 |
:1073B000160A992790931B0780931A078091D3048C |
:1073C0009091D40490931D0780931C078091D10461 |
:1073D0009091D20490931F0780931E0780915405CB |
:1073E000882321F480915505882321F08091DF06C0 |
:1073F000816003C08091DF068E7F8093DF061F913E |
:107400000F91FF90EF900895EF92FF921F93CF930B |
:10741000DF93182F7B0180910604882391F58091DA |
:1074200001018C3010F0863111F4299801C0299A9D |
:1074300011501F3FE9F0F0920903E0920803E701C1 |
:107440008091080390910903892B11F4209781F30F |
:1074500080910C038823A1F310920C038091080300 |
:1074600090910903892B09F421970E94E98EE8CFB6 |
:10747000809101018C3010F0863111F4299A01C0FD |
:107480002998DF91CF911F91FF90EF900895CF93AE |
:10749000DF93809101018D3011F40E94621E1092E1 |
:1074A0007A00809128039091290390933909809361 |
:1074B000380980912603909127039093290980939E |
:1074C0002809809124039091250390937A09809351 |
:1074D00079092091200330912103C901880F991F58 |
:1074E000880F991F820F931F820F931F9093750926 |
:1074F000809374092091220330912303C901880FDE |
:10750000991F880F991F820F931F820F931F9093CB |
:107510008509809384098FEC80937A00A8E0B4E019 |
:10752000C8E8D7E097E08991E82FFF27EE0FFF1F0B |
:10753000E954F74F0190F081E02DE158FF4F1E16FE |
:107540001F061CF0E0E0F0E005C0EF3FF10514F08D |
:10755000EFEFF0E08C91282F3327E217F30714F4B4 |
:10756000815004C02E173F0714F48F5F8C93915005 |
:10757000119697FFD8CF8091C4079927AA27BB27D8 |
:10758000BC01CD0124EC39E040E050E00E94819143 |
:10759000DC01CB018093800190938101A093820153 |
:1075A000B09383018091C5079927AA27BB27BC0107 |
:1075B000CD010E948191DC01CB0180937C019093ED |
:1075C0007D01A0937E01B0937F01DF91CF9108955B |
:1075D000A0E0B0E0EEEEFAE30C941692882EC0E044 |
:1075E000D0E07E016E0110925405D0936D04C093DB |
:1075F0006C04D0936B04C0936A04D0936704C09367 |
:107600006604D0937704C0937604D0937504C09336 |
:107610007404D0937304C0937204109264011092A6 |
:107620006301109219030E94473A84E690E00E9499 |
:1076300091190E94473A8091900780FF10C0809175 |
:10764000150190911601875B934038F480911501E4 |
:10765000909116018E5E924010F40E94E01D0FE1A1 |
:107660008AE090E00E949119809124039091250373 |
:10767000C80FD91F8091280390912903E80EF91EA5 |
:107680008091260390912703C80ED91E015007FF51 |
:10769000E7CF9701205F3F4F369527953695279581 |
:1076A0003093770420937604C6014096969587958B |
:1076B0009695879590937504809374046096F5E091 |
:1076C000D695C795FA95E1F7D0937304C0937204E9 |
:1076D000909371048093700430936F0420936E0430 |
:1076E000882009F441C0809174099091750997FF31 |
:1076F00003C0909581959F4F6CE070E00E94C0910F |
:107700009B0170936D0460936C0480918409909147 |
:10771000850997FF03C0909581959F4F6CE070E0BD |
:107720000E94C09170936B0460936A048091250756 |
:10773000909126079093670480936604B90184E0D2 |
:1077400090E00E94002F60916A0470916B0486E0C3 |
:1077500090E00E94002F609166047091670488E0B9 |
:1077600090E00E94002F65C084E090E00E94FB2E14 |
:1077700090936D0480936C0486E090E00E94FB2E51 |
:1077800090936B0480936A0488E090E00E94FB2E43 |
:107790009C01909367048093660480916C0490919F |
:1077A0006D048150984050F480916A0490916B046C |
:1077B0008150984018F421503440D8F180E399E08A |
:1077C0009F938F9380E695E19F938F93E0913B0584 |
:1077D000F0913C050995809174099091750997FF86 |
:1077E00003C0909581959F4F6CE070E00E94C0911E |
:1077F00070936D0460936C04809184099091850965 |
:1078000097FF03C0909581959F4F6CE070E00E94B8 |
:10781000C09170936B0460936A04809125079091E6 |
:10782000260790936704809366040F900F900F9043 |
:107830000F9010923909109238091092290910926C |
:10784000280910927A091092790984E690E00E9442 |
:10785000911980912003909121039C01220F331FE5 |
:10786000220F331F280F391F280F391F3093750936 |
:107870002093740980912203909123038C01000FBF |
:10788000111F000F111F080F191F080F191F109348 |
:1078900085090093840980919F07C82EDD24EE247A |
:1078A000FF24442737FD4095542FC701B6010E949D |
:1078B00081914B015C016093610470936204809339 |
:1078C0006304909364049801442737FD4095542F36 |
:1078D000C701B6010E948191DC01CB01809359045C |
:1078E00090935A04A0935B04B0935C04809241048B |
:1078F00090924204A0924304B092440480933904CD |
:1079000090933A04A0933B04B0933C04109231044A |
:1079100010923204109233041092340480911701B3 |
:1079200090911801A0911901B0911A019093280724 |
:1079300080932707109218031092170310922104C6 |
:1079400010922204109223041092240400918801C2 |
:10795000109189011093200400931F0484E690E0A5 |
:10796000909385018093840182E390E090930903D2 |
:10797000809308038091C4079927AA27BB27BC01DD |
:10798000CD0124EC39E040E050E00E948191DC011F |
:10799000CB018856954CAF4FBF4F80938001909399 |
:1079A0008101A0938201B09383018091C50799273B |
:1079B000AA27BB27BC01CD010E948191DC01CB012C |
:1079C0008856954CAF4FBF4F80937C0190937D01BB |
:1079D000A0937E01B0937F0110924101109240016B |
:1079E000C801AA2797FDA095BA2F20913C0130919C |
:1079F0003D0140913E0150913F01BC01CD010E94EB |
:107A00008191DC01CB018093800990938109A0933F |
:107A10008209B093830910921C0410921B040E94E7 |
:107A2000BE6D8091CF0384608093CF038FEF8093EE |
:107A3000000A1092010A80E28093020AC8E0D4E0B2 |
:107A4000A8E8B7E007E08D91E82FFF27EE0FFF1FB2 |
:107A5000E954F74F8081918181588993015007FF44 |
:107A6000F2CF84E68093070480910603882311F007 |
:107A7000579A06C080E091E1909308018093070136 |
:107A8000809176049091770480569940815C9B4266 |
:107A900028F080915405816080935405809174048E |
:107AA0009091750480569940815C9B4228F08091AA |
:107AB0005405826080935405809172049091730400 |
:107AC0008C5291408957954028F0809154058460EC |
:107AD0008093540580916C0490916D048C52914078 |
:107AE000835C914028F08091540588608093540510 |
:107AF00080916A0490916B048C529140835C914018 |
:107B000028F080915405806180935405809166042B |
:107B100090916704805092408355914028F0809165 |
:107B2000540580628093540586E4809377010E9417 |
:107B3000C78BECE0CDB7DEB70C943292A3E1B0E096 |
:107B4000E4EAFDE30C941092809172049091730426 |
:107B50002091240330912503821B930B90937A0983 |
:107B60008093790980912E0390912F0397FD0796BA |
:107B70009C0113E0359527951A95E1F73093390963 |
:107B80002093380980912C0390912D0397FD07963F |
:107B9000B3E095958795BA95E1F79093290980937D |
:107BA0002809309344092093430990933C0980931A |
:107BB0003B098091740990917509AC01440F551FE0 |
:107BC000480F591F2091200330912103C901880FCC |
:107BD000991F880F991F820F931F820F931F480FC1 |
:107BE000591F57FF02C04D5F5F4F559547955595FB |
:107BF0004795509375094093740980918409909139 |
:107C00008509AC01440F551F480F591F20912203CD |
:107C100030912303C901880F991F880F991F820F84 |
:107C2000931F820F931F480F591F57FF02C04D5FCC |
:107C30005F4F5595479555954795509385094093C6 |
:107C400084092091200330912103C901880F991FD5 |
:107C5000880F991F820F931F820F931F9C01442747 |
:107C600037FD4095542F8091510490915204A0917A |
:107C70005304B0915404820F931FA41FB51F809327 |
:107C8000510490935204A0935304B0935404209150 |
:107C9000220330912303C901880F991F880F991F70 |
:107CA000820F931F820F931F9C01442737FD40953D |
:107CB000542F80914D0490914E04A0914F04B091A7 |
:107CC0005004820F931FA41FB51F80934D049093FF |
:107CD0004E04A0934F04B093500480914D099091AD |
:107CE0004E092091200330912103820F931F90931E |
:107CF0004E0980934D0980917C0990917D092091D6 |
:107D0000220330912303820F931F90937D09809368 |
:107D10007C098091680490916904019690936904AC |
:107D2000809368048091250790912607209166042E |
:107D300030916704821B930B9C01442737FD4095CB |
:107D4000542F8091490490914A04A0914B04B09122 |
:107D50004C04820F931FA41FB51F80934904909376 |
:107D60004A04A0934B04B0934C048FEC80937A00A8 |
:107D7000109211012091390430913A0440913B0452 |
:107D800050913C0429873A874B875C8729543B46AE |
:107D9000414050402CF028E43BE641E050E00DC06B |
:107DA00089859A85AB85BC85885B9449AE4FBF4F6A |
:107DB0004CF428EB34E94EEF5FEF2D833E834F8385 |
:107DC000588708C089859A85AB85BC858D839E833D |
:107DD000AF83B8872091410430914204409143041D |
:107DE000509144042D873E874F87588B29543B463A |
:107DF000414050402CF028E43BE641E050E00DC00B |
:107E00008D859E85AF85B889885B9449AE4FBF4FFD |
:107E10004CF428EB34E94EEF5FEF29833A834B8330 |
:107E20005C8308C08D859E85AF85B88989839A83D8 |
:107E3000AB83BC83A0917909B0917A09BB8BAA8BE3 |
:107E4000FD01CF01AA2797FDA095BA2FA09031047C |
:107E5000B0903204C0903304D0903404A80EB91E00 |
:107E6000CA1EDB1EA0923104B0923204C0923304C9 |
:107E7000D0923404E0908009F09081090091820949 |
:107E800010918309E80EF91E0A1F1B1FE09280095A |
:107E9000F09281090093820910938309F091EA031B |
:107EA000F98BFF2309F098C18091E903882309F039 |
:107EB00093C18091700986FF8FC1809128099091AC |
:107EC0002909AA2797FDA095BA2FBC01CD012981C8 |
:107ED0003A814B815C810E9481919B01AC0197FFAB |
:107EE00004C02150384F4F4F5F4FBBE05595479529 |
:107EF00037952795BA95D1F780916301682E77243D |
:107F000088249924CA01B901A40193010E94819196 |
:107F1000DC01CB018093820490938304A0938404BA |
:107F2000B0938504B7FF04C08150904FAF4FBF4F4F |
:107F30001C012D01ACE05594479437942794AA95E1 |
:107F4000D1F72092820430928304409284045092AC |
:107F500085048091380990913909AA2797FDA09549 |
:107F6000BA2FBC01CD012D813E814F8158850E94E1 |
:107F7000819197FF04C06150784F8F4F9F4FFBE076 |
:107F80009595879577956795FA95D1F7A401930113 |
:107F90000E948191DC01CB01809386049093870439 |
:107FA000A0938804B0938904B7FF04C08150904F18 |
:107FB000AF4FBF4F9C01AD01ECE05595479537950C |
:107FC0002795EA95D1F72093860430938704409350 |
:107FD0008804509389048091820490918304909343 |
:107FE000200980931F0980918604909187049093C3 |
:107FF0002409809323092219330944095509209340 |
:108000008604309387044093880450938904E20ED9 |
:10801000F31E041F151FE0928009F092810900935E |
:10802000820910938309809162018823B1F457FF7C |
:1080300004C02F5F3F4F4F4F5F4F55954795379582 |
:108040002795A21AB30AC40AD50AA0923104B092A5 |
:108050003204C0923304D09234042A893B897901D6 |
:108060000027F7FC0095102F8091860490918704DB |
:10807000A0918804B0918904E80EF91E0A1F1B1F05 |
:10808000C801B70129813A814B815C810E948191AD |
:108090009B01AC0197FF04C02150384F4F4F5F4FF9 |
:1080A0006BE055954795379527956A95D1F780915F |
:1080B0006401A82EBB24CC24DD24CA01B901A60189 |
:1080C00095010E948191DC01CB0180937A04909309 |
:1080D0007B04A0937C04B0937D04B7FF04C081505F |
:1080E000904FAF4FBF4F3C014D013CE095948794BA |
:1080F000779467943A95D1F760927A0470927B04F2 |
:1081000080927C0490927D04C801B7012D813E814C |
:108110004F8158850E94819197FF04C06150784F2C |
:108120008F4F9F4F2BE095958795779567952A956B |
:10813000D1F7A60195010E948191DC01CB018093CA |
:108140007E0490937F04A0938004B0938104B7FFD2 |
:1081500004C08150904FAF4FBF4FAC01BD018CE0C8 |
:1081600075956795579547958A95D1F740937E0405 |
:1081700050937F0460938004709381042A893B8923 |
:1081800037FF03C0309521953F4F21343105E4F18D |
:10819000D401C30197FE07C0B095A0959095819535 |
:1081A0009F4FAF4FBF4F81389105A105B10584F4B2 |
:1081B000DB01CA0177FF07C0B095A0959095819526 |
:1081C0009F4FAF4FBF4F81389105A105B105E4F036 |
:1081D00081E080931D0418C0109224091092230995 |
:1081E0001092200910921F0910927E0410927F04B1 |
:1081F000109280041092810410927A0410927B04F1 |
:1082000010927C0410927D0480917E0490917F04F2 |
:10821000A0918004B0918104BC01CD0124E630E03E |
:1082200040E050E00E94F591E0907A04F0907B04E9 |
:10823000E21AF30AF0923709E092360980917A0443 |
:1082400090917B04A0917C04B0917D04BC01CD0190 |
:1082500024E630E040E050E00E94F591DA01C901E7 |
:1082600020917E0430917F048C01021B130B10932C |
:108270002B0900932A0980913C0190913D01A09126 |
:108280003E01B0913F01BC01CD0128E631E040E064 |
:1082900050E00E94819120918009309181094091A4 |
:1082A000820950918309261737074807590764F058 |
:1082B000261B370B480B590B2093800930938109FB |
:1082C000409382095093830920918009309181095C |
:1082D000409182095091830957FF0CC0260F371F28 |
:1082E000481F591F209380093093810940938209C8 |
:1082F0005093830960912809709129096E0D7F1DA3 |
:108300009B01442737FD4095542F8091350490916F |
:108310003604A0913704B0913804820F931FA41F34 |
:10832000B51F8093350490933604A0933704B0931F |
:1083300038048091EF039091F003681B790BCB0117 |
:10834000AA2797FDA095BA2F29853A854B855C858C |
:10835000820F931FA41FB51F8093390490933A0492 |
:10836000A0933B04B0933C04C0907C01D0907D016D |
:10837000E0907E01F0907F01C816D906EA06FB0660 |
:10838000C4F488EA91E6A0E0B0E08C199D09AE093A |
:10839000BF098093390490933A04A0933B04B093AF |
:1083A0003C048093350490933604A0933704B09333 |
:1083B000380422273327A9012C193D094E095F09EA |
:1083C0008091390490913A04A0913B04B0913C040F |
:1083D00082179307A407B507B4F4D701C601885ADA |
:1083E0009146A040B0408093390490933A04A09302 |
:1083F0003B04B0933C048093350490933604A093DF |
:108400003704B09338046091380970913909600FCE |
:10841000711F9B01442737FD4095542F80913D04E7 |
:1084200090913E04A0913F04B0914004820F931FAD |
:10843000A41FB51F80933D0490933E04A0933F0476 |
:10844000B09340048091ED039091EE03681B790B8B |
:10845000CB01AA2797FDA095BA2F2D853E854F8584 |
:108460005889820F931FA41FB51F809341049093D6 |
:108470004204A0934304B0934404E0908001F09040 |
:1084800081010091820110918301E816F9060A0723 |
:108490001B07C4F488EA91E6A0E0B0E08E199F09BA |
:1084A000A00BB10B8093410490934204A09343042A |
:1084B000B093440480933D0490933E04A0933F0402 |
:1084C000B093400422273327A9012E193F09400BFE |
:1084D000510B8091410490914204A0914304B091CA |
:1084E000440482179307A407B507B4F4D801C70161 |
:1084F000885A9146A040B040809341049093420432 |
:10850000A0934304B093440480933D0490933E04AD |
:10851000A0933F04B09340048091310490913204C1 |
:10852000A0913304B09134048093450490934604A1 |
:10853000A0934704B0934804809141049091420471 |
:10854000A0914304B0914404809361049093620429 |
:10855000A0936304B09364048091390490913A0429 |
:10856000A0913B04B0913C048093590490935A0429 |
:10857000A0935B04B0935C0480913D0490913E0411 |
:10858000A0913F04B091400480935D0490935E04F9 |
:10859000A0935F04B09360048091350490913604F9 |
:1085A000A0913704B09138048093550490935604F9 |
:1085B000A0935704B093580480911D0190911E011F |
:1085C00097FD079603E0959587950A95E1F79093B7 |
:1085D00039098093380980911B0190911C0197FD06 |
:1085E000079613E0959587951A95E1F790932909D9 |
:1085F0008093280980912803909129030F9734F4E0 |
:1086000088E19CEF90933909809338098091280381 |
:1086100090912903079734F480E398EF90933909F8 |
:1086200080933809209101012A30A9F48091280310 |
:1086300090912903835F934034F088EE93E0909308 |
:1086400039098093380980912803909129038A5F22 |
:108650009340DCF014C08091280390912903815D40 |
:10866000974034F088EE93E090933909809338096D |
:108670008091280390912903805E974034F080ED2B |
:1086800097E090933909809338098091260390915F |
:1086900027030F9734F488E19CEF90932909809386 |
:1086A00028098091260390912703079734F480E3EB |
:1086B00098EF90932909809328092A30A9F4809192 |
:1086C000260390912703835F934034F088EE93E074 |
:1086D000909329098093280980912603909127037C |
:1086E0008A5F9340DCF014C08091260390912703A9 |
:1086F000815D974034F088EE93E090932909809350 |
:1087000028098091260390912703805E974034F0DA |
:1087100080ED97E0909329098093280960916E017C |
:10872000662309F4AFC040911D0150911E01809154 |
:108730008A0490918B04481B590B509391044093E9 |
:10874000900420911D0130911E01280F391F37FF21 |
:1087500002C02F5F3F4F3595279530938B042093B0 |
:108760008A04413851051CF080E890E005C040586B |
:108770005F4F34F480E89FEF9093910480939004CE |
:1087800040911B0150911C0180918C0490918D04AB |
:10879000481B590B50938F0440938E0420911B016A |
:1087A00030911C01280F391F37FF02C02F5F3F4F48 |
:1087B0003595279530938D0420938C0441385105CD |
:1087C0001CF080E890E005C040585F4F34F480E82A |
:1087D0009FEF90938F0480938E04462F55278091AE |
:1087E000900490919104849FB001859F700D949F97 |
:1087F000700D11249B0177FF02C0215F3F4FF4E011 |
:1088000035952795FA95E1F78091380990913909C6 |
:10881000820F931F909339098093380980918E04B9 |
:1088200090918F04849FD001859FB00D949FB00DCF |
:108830001124AD019D01B7FF02C0215F3F4FE4E06D |
:1088400035952795EA95E1F78091280990912909B6 |
:10885000820F931F909329098093280980911D010D |
:1088600090911E01860F971F90931E0180931D010A |
:1088700080911B0190911C01840F951F90931C0106 |
:1088800080931B0100913B0910913C0980911F09C5 |
:1088900090912009101611065CF59C0197FF04C009 |
:1088A00022273327281B390BC901AA2797FDA0953A |
:1088B000BA2F20916201332744275527BC01CD01EF |
:1088C0000E9481919B01AC0197FF04C0215C3F4F46 |
:1088D0004F4F5F4F76E055954795379527957A9599 |
:1088E000D1F78091360990913709820F931F27C0E5 |
:1088F00097FF03C0909581959F4FAA2797FDA0955C |
:10890000BA2F20916201332744275527BC01CD019E |
:108910000E9481919B01AC0197FF04C0215C3F4FF5 |
:108920004F4F5F4F66E055954795379527956A9568 |
:10893000D1F78091360990913709821B930B909360 |
:10894000370980933609E0904309F09044098091FB |
:108950002309909124091E141F045CF59C0197FFC4 |
:1089600004C022273327281B390BC901AA2797FDEA |
:10897000A095BA2F20916201332744275527BC01C7 |
:10898000CD010E9481919B01AC0197FF04C0215C45 |
:108990003F4F4F4F5F4F96E0559547953795279539 |
:1089A0009A95D1F780912A0990912B09820F931FF4 |
:1089B00027C097FF03C0909581959F4FAA2797FDE9 |
:1089C000A095BA2F20916201332744275527BC0177 |
:1089D000CD010E9481919B01AC0197FF04C0215CF5 |
:1089E0003F4F4F4F5F4F86E05595479537952795F9 |
:1089F0008A95D1F780912A0990912B09821B930BBC |
:108A000090932B0980932A098091700987FF44C0B5 |
:108A1000B989BB2309F040C08091E9038823E1F5BF |
:108A2000E1E0EE16E1E0FE064CF08091380990910D |
:108A300039098E0D9F1D805091400DC0F0E0EF165A |
:108A4000FFEFFF0664F480913809909139098E0D8B |
:108A50009F1D80509F4F909339098093380921E0E2 |
:108A6000013012074CF08091280990912909800F5C |
:108A7000911F805091400CC03FEF0030130764F409 |
:108A80008091280990912909800F911F80509F4F54 |
:108A90009093290980932809E2E1CD5E0C942C92F1 |
:108AA00080910604882301F58091CF038C7F809309 |
:108AB000CF03A9E5B5E0E6E5F8E09BE08091E702A9 |
:108AC000882309F48C938D9181831282915038967A |
:108AD00097FFF4CF8091E702882359F08091E70255 |
:108AE00081508093E70205C08091CF03816080931D |
:108AF000CF0380914F03882319F010924F030895FC |
:108B0000809351038093530380914D038E7F809314 |
:108B10004D0385EA8093BC000895CF93DF93A8E0CE |
:108B2000B4E0C8E8D7E057E09991E92FFF27EE0FAE |
:108B3000FF1FE954F74F0190F081E02DE158FF4FFE |
:108B4000EF3FF10521F01CF0EFEFF0E004C0F7FF7C |
:108B500002C0E0E0F0E0993111F4EC931BC04C91BD |
:108B6000242F3327E217F307A9F0CF01821B930BC1 |
:108B700097FD03969595879595958795242F280FB2 |
:108B80002C93822F9927E817F90714F4215001C07C |
:108B90002F5F2C935150119657FFC6CF80919207AB |
:108BA000883F38F0EFEFF0E0E81BF109E85FFB4F9A |
:108BB00080818093740180917401882329F0843628 |
:108BC00018F084E68093740180919407883F38F010 |
:108BD000EFEFF0E0E81BF109E85FFB4F8081809345 |
:108BE000720180917201882329F0843618F084E69E |
:108BF000809372018091A107883F38F0EFEFF0E099 |
:108C0000E81BF109E85FFB4F808180936D01809143 |
:108C10006D018B3010F48AE002C08F3F11F4809315 |
:108C20006D018091CE07883F38F0EFEFF0E0E81B50 |
:108C3000F109E85FFB4F808180934F0980914F09D4 |
:108C4000863010F485E002C08F3F11F480934F0905 |
:108C50008091D007883F38F0EFEFF0E0E81BF10992 |
:108C6000E85FFB4F80818093770980917709863098 |
:108C700010F485E002C08F3F11F480937709809152 |
:108C8000BB07873F19F4429905C006C0863F31F4FF |
:108C9000439B02C08CE80BC086E409C0883F38F0D3 |
:108CA000EFEFF0E0E81BF109E85FFB4F8081809374 |
:108CB0004C098091BC07873F19F4429905C006C052 |
:108CC000863F31F4439B02C08CE80BC086E409C0A8 |
:108CD000883F38F0EFEFF0E0E81BF109E85FFB4F69 |
:108CE0008081809325098091BD07883F38F0EFEFA0 |
:108CF000F0E0E81BF109E85FFB4F808180935509A4 |
:108D000080919307883F38F0EFEFF0E0E81BF1091E |
:108D1000E85FFB4F80818093730180919607883FC5 |
:108D200038F0EFEFF0E0E81BF109E85FFB4F8081DE |
:108D30008093710180919807883F38F0EFEFF0E061 |
:108D4000E81BF109E85FFB4F808180936F01809100 |
:108D5000A007883F38F0EFEFF0E0E81BF109E85F8B |
:108D6000FB4F8081809370018091A207883F38F08B |
:108D7000EFEFF0E0E81BF109E85FFB4F80818093A3 |
:108D80006C018091A307883F38F0EFEFF0E0E81B1B |
:108D9000F109E85FFB4F808180936E018091A40709 |
:108DA000883F38F0EFEFF0E0E81BF109E85FFB4F98 |
:108DB000808180936B018091A507883F38F0EFEFA9 |
:108DC000F0E0E81BF109E85FFB4F808180936A01C6 |
:108DD0008091AB07883F38F0EFEFF0E0E81BF10936 |
:108DE000E85FFB4F8081809368018091AC07883FEA |
:108DF00038F0EFEFF0E0E81BF109E85FFB4F80810E |
:108E00008093E4038091AD07883F38F0EFEFF0E006 |
:108E1000E81BF109E85FFB4F80818093E3038091B9 |
:108E2000AE07883F38F0EFEFF0E0E81BF109E85FAC |
:108E3000FB4F80818093E2038091AF07883F38F039 |
:108E4000EFEFF0E0E81BF109E85FFB4F80818093D2 |
:108E5000E1038091C907883F38F0EFEFF0E0E81BAD |
:108E6000F109E85FFB4F80818093E0038091CA079E |
:108E7000883F38F0EFEFF0E0E81BF109E85FFB4FC7 |
:108E800080818093DF038091CB07883F38F0EFEF3C |
:108E9000F0E0E81BF109E85FFB4F80818093DE037F |
:108EA0008091CC07883F38F0EFEFF0E0E81BF10944 |
:108EB000E85FFB4F80818093DD038091B007883F9E |
:108EC00038F0EFEFF0E0E81BF109E85FFB4F80813D |
:108ED000809367018091B407883F38F0EFEFF0E0AE |
:108EE000E81BF109E85FFB4F808180936601809168 |
:108EF000BE07883F38F0EFEFF0E0E81BF109E85FCC |
:108F0000FB4F8081809365018091C107883F38F0D5 |
:108F1000EFEFF0E0E81BF109E85FFB4F8081809301 |
:108F200064018091C207883F38F0EFEFF0E0E81B62 |
:108F3000F109E85FFB4F8081809363018091C30753 |
:108F4000883F38F0EFEFF0E0E81BF109E85FFB4FF6 |
:108F50008081809362018091EB07883F38F0EFEFCA |
:108F6000F0E0E81BF109E85FFB4F80818093340952 |
:108F70009091DD04992321F080913409981720F015 |
:108F800080913409882311F49093340980919007DB |
:108F9000809370098091F107809354098091C807EC |
:108FA000883F38F0EFEFF0E0E81BF109E85FFB4F96 |
:108FB0008081809361018091E407883F38F0EFEF72 |
:108FC000F0E0E81BF109E85FFB4F8081809387099F |
:108FD00080916801282F33272F5F3F4F8CE398E261 |
:108FE000B9010E94C09170937601609375018091E0 |
:108FF0009E078093780980919D0780933D09909109 |
:10900000E607933308F44AC081E08093DC03983F7D |
:1090100058F0EFEFF0E0E91BF109E85FFB4F8081CA |
:10902000823310F41092DC03809177012091DC03ED |
:10903000821721F18330F8F430919D01222351F001 |
:109040008CED95E09093090380930803332369F432 |
:109050008EE209C088EC90E09093090380930803A6 |
:10906000332319F487E180939D0185E08093F10318 |
:109070002093770103C08150809377018091C709C5 |
:109080009091C80997FF0FC08091DC03882359F0A5 |
:109090008091540580688093540505C01092DC03CC |
:1090A0008AE0809377018091C7099091C80997FF62 |
:1090B0001DC0809106048823C9F08091DC038823B9 |
:1090C000A9F08091090190910A018F5F9F4F71F47F |
:1090D00088E99AE3909309038093080380E094EA77 |
:1090E00090930A01809309011092DC038091DC03C4 |
:1090F000882369F08091CE0381608093CE038091B4 |
:109100006401823D48F4825E8093640105C08091D1 |
:10911000CE038E7F8093CE03DF91CF910895A7E198 |
:10912000B0E0E5E9F8E40C9410920E949E3D809135 |
:10913000CF03992784719070892B91F58091F20764 |
:1091400082FF27C08091EB039091EC030097F1F030 |
:1091500002E088359007D4F49C0197FF02C02D5F90 |
:109160003F4F35952795359527958091A8079927E5 |
:10917000289FA001299F500D389F500D1124CA012E |
:1091800064E670E00E94C091CB0106C08DE290E0E1 |
:1091900003C08091A80799279093CD038093CC03B7 |
:1091A0002091CA033091CB0355E72033350759F49A |
:1091B000109212041092110480913D099927909306 |
:1091C000CD038093CC0360911104709112047A83D3 |
:1091D000698380913D0999270A966817790714F4E5 |
:1091E0009A83898380910704843608F06AC080914D |
:1091F000CE0382FD66C08091A6049091A7040097DB |
:1092000031F001979093A7048093A6040BC01092AD |
:1092100006049093D1038093D0038091CF038D7E79 |
:109220008093CF03809101018A3011F0843110F0D6 |
:10923000289A01C028988091D0039091D103895E2B |
:109240009340E0F18091160A8536C0F18091CC03FD |
:109250009091CD039A8389838091CF03806180931D |
:10926000CF0380918407A82FBB27AA0FBB1FFD0146 |
:10927000E551F74F1182108280918507282F3327FF |
:10928000220F331FC9018551974FFC0111821082B3 |
:10929000A954B74F11961C921E922954374FD901E9 |
:1092A00011961C921E9280918707E82FFF27EE0FE0 |
:1092B000FF1FE954F74F118210823FC3109206043A |
:1092C0003CC3809107048D3808F40DC38091CF030F |
:1092D0008F7E8093CF039091A90782E3989FC0016E |
:1092E00011249093A7048093A604E981FA81B99789 |
:1092F0008CF080910604882369F08091D0039091CE |
:10930000D103FFEF8F3F9F0729F001969093D10380 |
:109310008093D0038091D0039091D1038F3F91052A |
:1093200009F008F51092290410922A0410922B04D7 |
:1093300010922C04109225041092260410922704F7 |
:1093400010922804109292041092930410929404A4 |
:10935000109295041092310410923204109233044A |
:109360001092340405C08091CF0382608093CF03B4 |
:1093700080918607E82FFF27EE0FFF1FE954F74F74 |
:1093800080819181813591050CF438C120910604CA |
:10939000222309F033C180918707E82FFF27EE0FC2 |
:1093A000FF1FE954F74F808191818C3491050CF4B3 |
:1093B000FFC08091A8048F5F8093A804893C08F4C3 |
:1093C0001DC12093A8041092D1031092D0033091B4 |
:1093D0008407E32FFF27EE0FFF1FE954F74F80812B |
:1093E000918187349105B4F480918507E82FFF2798 |
:1093F000EE0FFF1FE954F74F808191810190F081BA |
:10940000E02DF7FF03C0F095E195FF4FE734F1053C |
:109410000CF478C041E020918507A22FBB27AA0F4A |
:10942000BB1FA954B74F8D919C911197873491051B |
:1094300044F0E32FFF27EE0FFF1FE954F74F808121 |
:1094400091818D919C918734910574F0809184076E |
:10945000E82FFF27EE0FFF1FE954F74F808191811E |
:10946000873491050CF042E0E22FFF27EE0FFF1F3B |
:10947000E954F74F808191818634910574F480918D |
:109480008407E82FFF27EE0FFF1FE954F74F808175 |
:109490009181873491050CF043E0E22FFF27EE0F16 |
:1094A000FF1FE954F74F808191818A5B9F4F74F4CD |
:1094B00080918407E82FFF27EE0FFF1FE954F74F35 |
:1094C00080819181873491050CF044E0E22FFF27E1 |
:1094D000EE0FFF1FE954F74F808191818A5B9F4F08 |
:1094E00074F480918407E82FFF27EE0FFF1FE954E3 |
:1094F000F74F80819181863491050CF445E0842FEB |
:109500000E945A2F80918507E82FFF27EE0FFF1F3B |
:10951000E954F74F808191810190F081E02DF7FFB0 |
:1095200003C0F095E195FF4F7E97CCF480918407BE |
:10953000E82FFF27EE0FFF1FE954F74F808191813D |
:109540008A5B9F4F64F481E080936F051092F20371 |
:1095500088EE93E090930903809308034FC00E9424 |
:1095600063300E94052F80E00E9491098091AA0734 |
:109570000E947D8D8091700980FF10C0809115013F |
:1095800090911601875B934038F48091150190917A |
:1095900016018E5E924010F40E94E01D80E00E9451 |
:1095A000E83A81E08093F20380930603579A1AC049 |
:1095B00080819181855B9F4FFCF48091A8048F5F2F |
:1095C0008093A804893CD0F0209306042093A8043B |
:1095D0001092D1031092D00381E00E94E83A81E01A |
:1095E0008093F20388E180939D010E94633068E7D5 |
:1095F00070E00E94043A02C02093A804809186077C |
:10960000E82FFF27EE0FFF1FE954F74F808191816C |
:109610008B5A9F4F0CF060C12091E707E22FFF2784 |
:10962000EF77F070EE0FFF1FE551F74F80819181CA |
:10963000069714F084E606C0808191818B5F9F4F6E |
:109640001CF48CE98093AB0480910604E0918707B9 |
:10965000882309F0ECC0FF27EE0FFF1FE954F74FF6 |
:1096600080819181855B9F4F9CF48091F20783FDFF |
:109670000BC0E22FFF27EE0FFF1FE954F74F808149 |
:109680009181855B9F4FDCF08091E7078823B9F0DB |
:109690008091F20783FFC8C08091E707E82FFF277A |
:1096A000EE0FFF1FE954F74F80819181875F9F4F35 |
:1096B0000CF4BAC08091AB04843609F0B5C0209197 |
:1096C000F203222329F08091CF0388608093CF0397 |
:1096D0008091A9048F5F8093A9048E3F08F4EEC0A7 |
:1096E0001092A90480915405882309F092C0222386 |
:1096F00009F48FC08091E204882309F08AC081E0D8 |
:1097000090E09093D1038093D00381E0809306048E |
:109710001092920410929304109294041092950463 |
:1097200010923104109232041092330410923404D7 |
:1097300010922D0410922E0410922F0410923004D7 |
:1097400080919F07E82EFF2400271127809174093C |
:10975000909175099C01442737FD4095542FC8010D |
:10976000B7010E948191DC01CB0180934104909369 |
:109770004204A0934304B0934404809184099091DF |
:1097800085099C01442737FD4095542FC801B70136 |
:109790000E948191DC01CB018093390490933A04BB |
:1097A000A0933B04B0933C048091610490916204C7 |
:1097B000A0916304B091640480933D0490933E04AF |
:1097C000A0933F04B09340048091590490915A04AF |
:1097D000A0915B04B0915C048093350490933604AF |
:1097E000A0933704B09338041092290410922A04ED |
:1097F00010922B0410922C0410922504109226042F |
:10980000109227041092280484E68093F10384E3E5 |
:1098100050C08CED95E090930903809308032223B8 |
:1098200009F04CC081E045C01092A90447C0FF2751 |
:10983000EE0FFF1FE954F74F808191818C34910521 |
:109840009CF08091F20783FD0BC0E22FFF27EE0F03 |
:10985000FF1FE954F74F80819181855B9F4FCCF0CA |
:109860008091E7078823A9F08091F20783FF24C045 |
:109870008091E707E82FFF27EE0FFF1FE954F74F0E |
:10988000808191818E5C9F4FBCF48091AB048C39B8 |
:1098900099F48091AA048F5F8093AA048B3F70F0A3 |
:1098A000109206041092AA041092D1031092D003D1 |
:1098B00086E280939D0102C01092AA048091CA039F |
:1098C0009091CB0313E0883E9107B8F501969093F1 |
:1098D000CB038093CA0331C01092AB041092CB0328 |
:1098E0001092CA032AC02E5E324038F180918F094F |
:1098F000909190098059914000F5809101049091D8 |
:109900000204A0910304B09104048C5D9540A04032 |
:10991000B0409CF480E395E79093CB038093CA0317 |
:109920008091D0039091D1038A5E934030F089EE0C |
:1099300093E09093D1038093D00380913A018150BA |
:1099400080933A0180913A018F3F21F08091CF03BB |
:1099500084FFA9C30E948D45B0909A078091B404FA |
:109960009091B5049C01220F331F280F391FC0901E |
:109970008407AC2DBB27AA0FBB1FFD01E954F74F8D |
:109980004B2D552780819181849FF001859FF00D9B |
:10999000949FF00D11242E0F3F1F37FF02C02D5F43 |
:1099A0003F4FB9017595679575956795A551B74F67 |
:1099B00080919B07082F11278D919C91809F7001AA |
:1099C000819FF00C909FF00C11246E0D7F1D709301 |
:1099D000B5046093B4048091B6049091B7049C01DF |
:1099E000220F331F280F391FD0908507AD2DBB27BD |
:1099F000AA0FBB1FFD01E954F74F80819181849F1D |
:109A0000F001859FF00D949FF00D11242E0F3F1F44 |
:109A100037FF02C02D5F3F4FA901559547955595DA |
:109A20004795A551B74F8D919C91809F7001819F63 |
:109A3000F00C909FF00C11244E0D5F1D5093B70455 |
:109A40004093B6048091DC03882309F448C0CB011D |
:109A500077FD0396DC01B595A795B595A795CA0145 |
:109A600057FD0396FC01F595E795F595E7958091EF |
:109A70009801682F772767FD70956A9F90016B9F0B |
:109A8000300D7A9F300D11248091E404482F552722 |
:109A900047FD50954E9FC0014F9F900D5E9F900DCA |
:109AA0001124280F391F37FF02C0295F3F4F93E071 |
:109AB000359527959A95E1F730931804209317046C |
:109AC0006E9F90016F9F300D7E9F300D11244A9F35 |
:109AD000C0014B9F900D5A9F900D11243FC0809163 |
:109AE000E507E82FFF27EE5BFE4F86818093980104 |
:109AF00090819093E404A82FBB27A7FDB095A69F63 |
:109B00009001A79F300DB69F300D1124E92FFF273C |
:109B1000E7FDF095E49FC001E59F900DF49F900D47 |
:109B20001124280F391F37FF02C0295F3F4F83E000 |
:109B3000359527958A95E1F73093180420931704FB |
:109B4000A49F9001A59F300DB49F300D1124E69F76 |
:109B5000C001E79F900DF69F900D1124281B390B33 |
:109B600037FF02C0295F3F4F03E0359527950A95DF |
:109B7000E1F7309316042093150480918707E82FAE |
:109B8000FF27EE0FFF1FE954F74F808191819095D9 |
:109B900081959F4F90931404809313048530910511 |
:109BA00014F0049705C00FEF8C3F900734F404962F |
:109BB000909314048093130404C010921404109220 |
:109BC00013048091D004882309F43EC0282F332742 |
:109BD000809117049091180497FD079613E09595CE |
:109BE00087951A95E1F7289FA001299F500D389F6E |
:109BF000500D1124CA0157FD0F96B4E09595879535 |
:109C0000BA95E1F790931804809317048091150496 |
:109C10009091160497FD0796A3E095958795AA95D0 |
:109C2000E1F7289FB001299F700D389F700D112416 |
:109C3000CB0177FD0F96F4E095958795FA95E1F7BE |
:109C40009093160480931504809017049090180444 |
:109C50008091D3049091D404881A990A90921804A0 |
:109C60008092170400911504109116048091D1047C |
:109C70009091D204081B190B10931604009315043D |
:109C800080918607E82FFF27EE0FFF1FE954F74F5B |
:109C9000E080F1808FE790E0E80EF91EF092120468 |
:109CA000E092110480916D019927AA2797FDA09554 |
:109CB000BA2FBC01CD010E94F590DC01CB0120E060 |
:109CC00030E040E251E4BC01CD010E946390DC0130 |
:109CD000CB01BC01CD010E94C790DC01CB01809378 |
:109CE0007E0980916C018093560980916B019927C0 |
:109CF000AA2797FDA095BA2FBC01CD010E94F5902F |
:109D0000DC01CB0120E030E040E251E4BC01CD01B8 |
:109D10000E946390DC01CB01BC01CD010E94C79081 |
:109D2000DC01CB0180932F0980916A018093450962 |
:109D300080917B0580FF59C080918709813808F4A4 |
:109D400054C080917405992787FD90952B2D33275A |
:109D5000829FD001839FB00D929FB00D11248A0E77 |
:109D60009B1E909218048092170480917505992784 |
:109D700087FD9095829FF001839FF00D929FF00DDB |
:109D800011240E0F1F1F10931604009315048091C9 |
:109D90007605282F332727FD309580911304909165 |
:109DA0001404820F931F90931404809313048091E2 |
:109DB0007805282F332727FD30958091950799271F |
:109DC000289F8001299F100D389F100D112410939A |
:109DD0004101009340018091770599278E159F05D9 |
:109DE00024F49093120480931104809111049091B3 |
:109DF000120497FF04C01092120410921104809173 |
:109E0000700982FF02C010925609409117045091C8 |
:109E10001804CA0157FD03969C0135952795359581 |
:109E2000279537FF03C0309521953F4F8091D4038C |
:109E30009091D50382179307B4F4CA0157FF03C06A |
:109E4000909581959F4F97FD03969595879595954C |
:109E500087959093D5038093D4038536910544F07C |
:109E600084E690E001C001979093D5038093D403DA |
:109E70004091150450911604CA0157FD03969C01A8 |
:109E8000359527953595279537FF03C03095219552 |
:109E90003F4F8091D2039091D30382179307B4F47C |
:109EA000CA0157FF03C0909581959F4F97FD039678 |
:109EB00095958795959587959093D3038093D20335 |
:109EC0008536910544F084E690E001C001979093B7 |
:109ED000D3038093D2038091CF0384FF08C01092F4 |
:109EE000D5031092D4031092D3031092D203ED2D18 |
:109EF000FF27EE0FFF1FE954F74F4091BF07242FB4 |
:109F00003327808191812817390744F48091EF0726 |
:109F100082FF04C081E08093E80313C0ED2DFF278A |
:109F2000EE0FFF1FE954F74F842F99272091C007A8 |
:109F3000821B9109208131812817390714F410926E |
:109F4000E80340918507E42FFF27EE0FFF1FE95438 |
:109F5000F74F5091BF07852F992722273327281BBA |
:109F6000390B808191818217930744F48091EF0728 |
:109F700083FF04C081E08093E70316C08091E7036C |
:109F8000882391F0E42FFF27EE0FFF1FE954F74FCE |
:109F90008091C0079927851B910920813181821703 |
:109FA000930714F41092E703EC2DFF27EE0FFF1F29 |
:109FB000E954F74F4091BF07242F332780819181C7 |
:109FC0002817390744F48091EF0780FF04C081E02F |
:109FD0008093E50317C08091E503882399F0EC2D69 |
:109FE000FF27EE0FFF1FE954F74F842F9927209189 |
:109FF000C007821B9109208131812817390714F489 |
:10A000001092E50340918407E42FFF27EE0FFF1F16 |
:10A01000E954F74F5091BF07852F992722273327FF |
:10A02000281B390B808191818217930744F480911A |
:10A03000EF0781FF04C081E08093E60316C08091A2 |
:10A04000E603882391F0E42FFF27EE0FFF1FE9546A |
:10A05000F74F8091C0079927851B91092081318195 |
:10A060008217930714F41092E6038091E803882383 |
:10A0700019F48091E703811181E08093E9038091D5 |
:10A08000E503882321F48091E603882351F081E0E1 |
:10A090008093EA031092E9031092E8031092E70319 |
:10A0A00002C08093EA038091E903882321F4809120 |
:10A0B000EA03882369F08091BE07992729813A81B4 |
:10A0C0008217930714F49A83898381E080931D0497 |
:10A0D0008091CE0399279C012470307082FF2DC09F |
:10A0E0008091D3049091D404909581959F4F909343 |
:10A0F0001804809317048091D1049091D204909514 |
:10A1000081959F4F909316048093150480917A0156 |
:10A1100090917B01909312048093110480917009B7 |
:10A120008B778B6680937009809154098C7B809328 |
:10A13000540988EC809373011EC08091CF0384FF83 |
:10A140001AC03093140420931304309318042093FE |
:10A15000170430931604209315049AE590937E0912 |
:10A1600088E78093560990932F09809345091092B0 |
:10A17000E9031092EA038091480990914909A0915E |
:10A180004A09B0914B0920916104309162044091D9 |
:10A19000630450916404820F931FA41FB51F809322 |
:10A1A000480990934909A0934A09B0934B098091BB |
:10A1B000500990915109A0915209B0915309E09032 |
:10A1C0005904F0905A0400915B0410915C04EB82F6 |
:10A1D000FC820D831E838E0D9F1DA01FB11F8093D7 |
:10A1E000500990935109A0935209B093530980915B |
:10A1F0003F0990914009A0914109B0914209E09036 |
:10A200005D04F0905E0400915F0410916004EF82A1 |
:10A21000F88609871A878E0D9F1DA01FB11F809396 |
:10A220003F0990934009A0934109B093420980915E |
:10A23000300990913109A0913209B0913309E09031 |
:10A240005504F09056040091570410915804EB8681 |
:10A25000FC860D871E878E0D9F1DA01FB11F80934A |
:10A26000300990933109A0933209B0933309F090EB |
:10A27000EA03FF86FF2029F48091E903882309F48B |
:10A2800060C0109251041092520410925304109224 |
:10A29000540410924D0410924E0410924F041092E8 |
:10A2A0005004109248091092490910924A091092DC |
:10A2B0004B091092500910925109109252091092B4 |
:10A2C000530910923F0910924009109241091092CF |
:10A2D00042091092300910923109109232091092FD |
:10A2E00033098091410490914204A0914304B091BC |
:10A2F000440480933D0490933E04A0933F04B093A4 |
:10A3000040048091390490913A04A0913B04B091AB |
:10A310003C048093350490933604A0933704B093A3 |
:10A32000380410921603109215031092EE03109247 |
:10A33000ED031092F0031092EF030F85002309F054 |
:10A34000D0C18091E903882309F0CBC18091250712 |
:10A3500090912607815092402CF480910604882326 |
:10A3600009F4BFC19090000AA0909F072090740943 |
:10A3700030907509409084095090850919140CF0AB |
:10A38000BBC0BB24CC24DD24CA01B901A6019501C0 |
:10A390000E94F59179018A018091C9099091CA09B9 |
:10A3A000281A390AC101AA2797FDA095BA2FE81AE1 |
:10A3B000F90A0A0B1B0B6B817C818D819E81A601A2 |
:10A3C00095010E94F59159016A018091CB09909104 |
:10A3D000CC09481A590AC201AA2797FDA095BA2F9D |
:10A3E000A81AB90ACA0ADB0A292C332427FC30949C |
:10A3F000432C532CC801B701A20191010E94819105 |
:10A4000097FF04C061507E4F8F4F9F4F3B014C011F |
:10A4100009E095948794779467940A95D1F7C601DB |
:10A42000B501A20191010E94819197FF04C0615082 |
:10A430007E4F8F4F9F4F5B016C0119E0D594C794FD |
:10A44000B794A7941A95D1F78091D4039091D5032E |
:10A45000813491053CF48091D2039091D3038134EF |
:10A460009105D4F0D401C30197FE03C00196A11D4C |
:10A47000B11D3C014D019594879477946794D60162 |
:10A48000C501D7FE03C00196A11DB11D5C016D0180 |
:10A49000D594C794B794A7948091020A282F3327A4 |
:10A4A00027FD3095432F532F2615370548055905AD |
:10A4B00014F439014A01992787FD9095909581956B |
:10A4C0009F4FAA2797FDA095BA2F681679068A068E |
:10A4D0009B0614F43C014D012A153B054C055D0516 |
:10A4E00014F459016A01A816B906CA06DB060CF075 |
:10A4F000D0C05C016D01CDC0EA2CFF2400271127DC |
:10A50000CA01B901A80197010E94F59139014A01D8 |
:10A51000C101AA2797FDA095BA2F681A790A8A0A5D |
:10A520009B0A6B817C818D819E81A80197010E948D |
:10A53000F59159016A01C201AA2797FDA095BA2F8A |
:10A54000A81AB90ACA0ADB0AD401C30197FE03C0DC |
:10A550000F96A11DB11D3C014D01F4E09594879427 |
:10A5600077946794FA95D1F7D601C501D7FE03C059 |
:10A570000F96A11DB11D5C016D01E4E0D594C79457 |
:10A58000B794A794EA95D1F78091D4039091D5031D |
:10A59000813491053CF48091D2039091D3038134AE |
:10A5A0009105A4F0C401B30123E030E040E050E0A5 |
:10A5B0000E94F59139014A01C601B50123E030E05E |
:10A5C00040E050E00E94F59159016A0180918707AF |
:10A5D000E82FFF27EE0FFF1FE954F74F808191818D |
:10A5E0000190F081E02DF7FF03C0F095E195FF4F5A |
:10A5F0007A97A4F0C401B30123E030E040E050E0DA |
:10A600000E94F59139014A01C601B50123E030E00D |
:10A6100040E050E00E94F59159016A0189E1809380 |
:10A62000860121E262167104810491042CF070E22B |
:10A63000672E712C812C912C30EE63163FEF730640 |
:10A640003FEF83063FEF930644F460EE662E6FEF14 |
:10A65000762E6FEF862E6FEF962E41E2A416B10490 |
:10A66000C104D1042CF050E2A52EB12CC12CD12C68 |
:10A6700050EEA5165FEFB5065FEFC5065FEFD50696 |
:10A6800044F440EEA42E4FEFB42E4FEFC42E4FEF04 |
:10A69000D42E8091410490914204A0914304B09142 |
:10A6A000440486199709A809B90980934104909335 |
:10A6B0004204A0934304B0934404809139049091E0 |
:10A6C0003A04A0913B04B0913C048A199B09AC095F |
:10A6D000BD098093390490933A04A0933B04B0934E |
:10A6E0003C0480911503909116038F3F910509F06A |
:10A6F00008F4C4C56F85662309F04EC58091E9034F |
:10A70000882309F049C580911D04882309F044C5B8 |
:10A710007091C707788B772309F43EC5809148096B |
:10A7200090914909A0914A09B0914B09B7FF04C023 |
:10A7300081509F4FAF4FBF4FE92EFA2E0B2F11279D |
:10A7400007FD1A95E0924809F092490900934A09D9 |
:10A7500010934B098091500990915109A091520991 |
:10A76000B0915309B7FF04C081509F4FAF4FBF4F07 |
:10A77000892F9A2FAB2FBB27A7FDBA95898B9A8B70 |
:10A78000AB8BBC8B8093500990935109A0935209D5 |
:10A79000B093530980919F07A82EBB24CC24DD24BD |
:10A7A000209151043091520440915304509154042B |
:10A7B000C601B5010E94819197FF04C061507F4F8F |
:10A7C0008F4F9F4F672E782E892E992487FC9A945D |
:10A7D00060925104709252048092530490925404F7 |
:10A7E00020914D0430914E0440914F0450915004FB |
:10A7F000C601B5010E94819197FF04C061507F4F4F |
:10A800008F4F9F4F272E382E492E552447FC5A94A0 |
:10A8100020924D0430924E0440924F0450925004C6 |
:10A820008091490490914A04A0914B04B0914C044A |
:10A83000B7FF04C081509F4FAF4FBF4F892F9A2F52 |
:10A84000AB2FBB27A7FDBA958093490490934A0488 |
:10A85000A0934B04B0934C04D801C7018619970903 |
:10A86000A809B90980939E0490939F04A093A00423 |
:10A87000B093A1042091C607E22EFF2400271127E0 |
:10A88000BC01CD01A80197010E94F59159016A010F |
:10A890002093AC043093AD044093AE045093AF04C6 |
:10A8A00089899A89AB89BC8982199309A409B50958 |
:10A8B0008093A2049093A304A093A404B093A5044E |
:10A8C000BC01CD01A80197010E94F5912093B0042D |
:10A8D0003093B1044093B2045093B304D601C50140 |
:10A8E000D7FE04C081509F4FAF4FBF4F892F9A2F83 |
:10A8F000AB2FBB27A7FDBA959093EE038093ED0392 |
:10A9000057FF04C021503F4F4F4F5F4FBB2757FDAC |
:10A91000BA95A52F942F832F9093F0038093EF0384 |
:10A920008091D4039091D50381349105DCF480911A |
:10A93000D2039091D30381349105A4F480918707C9 |
:10A94000E82FFF27EE0FFF1FE954F74F8081918119 |
:10A950000190F081E02DF7FF03C0F095E195FF4FE6 |
:10A960007A97E4F08091000A8F3FC1F48091ED0363 |
:10A970009091EE0397FD0196959587959093EE0340 |
:10A980008093ED038091EF039091F00397FD019682 |
:10A99000959587959093F0038093EF0380913F09FD |
:10A9A00090914009A0914109B0914209B7FF04C0BC |
:10A9B00081509F4FAF4FBF4F892F9A2FAB2FBB278F |
:10A9C000A7FDBA9580933F0990934009A093410950 |
:10A9D000B09342098091300990913109A0913209D8 |
:10A9E000B0913309B7FF04C081509F4FAF4FBF4FA5 |
:10A9F000892F9A2FAB2FBB27A7FDBA9580933009DB |
:10AA000090933109A0933209B09333098091610486 |
:10AA100090916204A0916304B09164042F81388501 |
:10AA200049855A85281B390B4A0B5B0B20939604EA |
:10AA3000309397044093980450939904809159045B |
:10AA400090915A04A0915B04B0915C04EB84FC8467 |
:10AA50000D851E85E81AF90A0A0B1B0BE0929A0471 |
:10AA6000F0929B0400939C0410939D0420939E04F9 |
:10AA700030939F044093A0045093A104E092A20459 |
:10AA8000F092A3040093A4041093A50480913D04C4 |
:10AA900090913E04A0913F04B0914004821B930B1F |
:10AAA000A40BB50B80933D0490933E04A0933F0408 |
:10AAB000B09340048091350490913604A0913704FE |
:10AAC000B09138048E199F09A00BB10B8093350407 |
:10AAD00090933604A0933704B09338048889882370 |
:10AAE000E1F020911B0430911C04213831054CF019 |
:10AAF00080917204909173040196909373048093F3 |
:10AB0000720420583F4F4CF480917204909173046A |
:10AB10000197909373048093720410921C04109216 |
:10AB20001B0481E090E09093B9048093B804E09016 |
:10AB30009E04F0909F040091A0041091A104D801FC |
:10AB4000C70117FF07C088279927DC018E199F09C5 |
:10AB5000A00BB10B81509240A040B04034F084E093 |
:10AB600090E09093B9048093B8048091BE049091D2 |
:10AB7000BF04A091C004B091C10420914809309154 |
:10AB8000490940914A0950914B09821B930BA40B30 |
:10AB9000B50B815E914BAF4FBF4F8F539C49A04087 |
:10ABA000B04028F08091010A89310CF4FFC021E007 |
:10ABB000E21620E1F20620E0020720E012070CF482 |
:10ABC00073C08091BA04882309F46AC0D801C70110 |
:10ABD00017FF07C088279927DC018E199F09A00B52 |
:10ABE000B10B9C01AD01B7FF04C021503E4F4F4F48 |
:10ABF0005F4FF9E05595479537952795FA95D1F729 |
:10AC00008091B8049091B904820F931F9093B90476 |
:10AC10008093B804D801C70117FF03C00796A11D90 |
:10AC2000B11DE3E0B595A79597958795EA95D1F77E |
:10AC30008093AC049093AD04A093AE04B093AF04A2 |
:10AC400089589341A040B04064F088E893E1A0E0C7 |
:10AC5000B0E08093AC049093AD04A093AE04B093A5 |
:10AC6000AF042091AC043091AD044091AE045091FA |
:10AC7000AF0457FF04C021503F4F4F4F5F4F232F6A |
:10AC8000342F452F552747FD5A958091ED0390911C |
:10AC9000EE03820F931F9093EE038093ED0306C0A3 |
:10ACA00081E08093BA0402C01092BA0440E0E41636 |
:10ACB00040EFF4064FEF04074FEF14070CF073C09A |
:10ACC0008091BB04882309F46AC0D801C70117FF2B |
:10ACD00007C088279927DC018E199F09A00BB10BAB |
:10ACE0009C01AD01B7FF04C021503E4F4F4F5F4F55 |
:10ACF00069E055954795379527956A95D1F78091E5 |
:10AD0000B8049091B904820F931F9093B904809373 |
:10AD1000B804D801C70117FF03C00796A11DB11DD4 |
:10AD200023E0B595A795979587952A95D1F78093B8 |
:10AD3000AC049093AD04A093AE04B093AF048857D5 |
:10AD40009C4EAF4FBF4F64F488E79CEEAFEFBFEF70 |
:10AD50008093AC049093AD04A093AE04B093AF0481 |
:10AD60002091AC043091AD044091AE045091AF04F9 |
:10AD700057FF04C021503F4F4F4F5F4F232F342FB9 |
:10AD8000452F552747FD5A958091ED039091EE038D |
:10AD9000820F931F9093EE038093ED0311C081E027 |
:10ADA0008093BB040DC01092BB040AC01092B9047A |
:10ADB0001092B80484E690E090938501809384011A |
:10ADC0006889262F33278091B8049091B9042817F9 |
:10ADD000390724F43093B9042093B8041091010A80 |
:10ADE000112379F0212F332727FD30958091B80466 |
:10ADF0009091B9042817390724F43093B9042093AB |
:10AE0000B80440919E0450919F046091A0047091F9 |
:10AE1000A104413851056105710574F080917604F3 |
:10AE2000909177042091B8043091B904820F931F58 |
:10AE3000909377048093760440585F4F6F4F7F4F15 |
:10AE400074F480917604909177042091B804309145 |
:10AE5000B904821B930B909377048093760481E06E |
:10AE600090E09093B9048093B804C090A204D0906D |
:10AE7000A304E090A404F090A504D701C601F7FE56 |
:10AE800007C088279927DC018C199D09AE09BF09E5 |
:10AE900081509240A040B04034F084E090E0909324 |
:10AEA000B9048093B8048091C2049091C304A09126 |
:10AEB000C404B091C50420915009309151094091CA |
:10AEC000520950915309821B930BA40BB50B815E61 |
:10AED000914BAF4FBF4F8F539C49A040B04018F0EB |
:10AEE00019310CF4FFC001E0C01600E1D00600E00B |
:10AEF000E00600E0F0060CF473C08091BC048823E7 |
:10AF000009F46AC0D701C601F7FE07C08827992750 |
:10AF1000DC018C199D09AE09BF099C01AD01B7FF89 |
:10AF200004C021503E4F4F4F5F4F09E05595479564 |
:10AF3000379527950A95D1F78091B8049091B90477 |
:10AF4000820F931F9093B9048093B804D701C60170 |
:10AF5000F7FE03C00796A11DB11D13E0B595A79597 |
:10AF6000979587951A95D1F78093B0049093B10483 |
:10AF7000A093B204B093B30489589341A040B04069 |
:10AF800064F088E893E1A0E0B0E08093B00490938F |
:10AF9000B104A093B204B093B3042091B0043091F3 |
:10AFA000B1044091B2045091B30457FF04C0215042 |
:10AFB0003F4F4F4F5F4F232F342F452F552747FDCE |
:10AFC0005A958091EF039091F003820F931F909315 |
:10AFD000F0038093EF0306C081E08093BC0402C0BD |
:10AFE0001092BC0420E0C21620EFD2062FEFE2063A |
:10AFF0002FEFF2060CF073C08091BD04882309F492 |
:10B000006AC0D701C601F7FE07C088279927DC016F |
:10B010008C199D09AE09BF099C01AD01B7FF04C0A1 |
:10B0200021503E4F4F4F5F4FE9E05595479537957B |
:10B030002795EA95D1F78091B8049091B904820FD1 |
:10B04000931F9093B9048093B804D701C601F7FE0B |
:10B0500003C00796A11DB11D73E0B595A7959795FF |
:10B0600087957A95D1F78093B0049093B104A0931B |
:10B07000B204B093B30488579C4EAF4FBF4F64F4F3 |
:10B0800088E79CEEAFEFBFEF8093B0049093B104DC |
:10B09000A093B204B093B3042091B0043091B104F2 |
:10B0A0004091B2045091B30457FF04C021503F4F68 |
:10B0B0004F4F5F4F232F342F452F552747FD5A956C |
:10B0C0008091EF039091F003820F931F9093F00310 |
:10B0D0008093EF0311C081E08093BD040DC01092F6 |
:10B0E000BD040AC01092B9041092B80484E690E03E |
:10B0F00090938501809384014889242F3327809180 |
:10B10000B8049091B9042817390724F43093B9048E |
:10B110002093B8048091010A882379F0282F3327DF |
:10B1200027FD30958091B8049091B904281739070C |
:10B1300024F43093B9042093B8044091A2045091B0 |
:10B14000A3046091A4047091A504413851056105E0 |
:10B15000710574F080917404909175042091B80485 |
:10B160003091B904820F931F9093750480937404F7 |
:10B1700040585F4F6F4F7F4FCCF480917404909193 |
:10B1800075042091B8043091B904821B930B9093FD |
:10B190007504809374040AC01092F0031092EF03B8 |
:10B1A0001092EE031092ED0310921D048091560947 |
:10B1B000882341F41092F0031092EF031092EE03F3 |
:10B1C0001092ED038091480990914909A0914A0994 |
:10B1D000B0914B098093BE049093BF04A093C00428 |
:10B1E000B093C1048091500990915109A0915209E6 |
:10B1F000B09153098093C2049093C304A093C404F4 |
:10B20000B093C5041092510410925204109253044A |
:10B210001092540410924D0410924E0410924F0458 |
:10B22000109250041092490410924A0410924B0458 |
:10B2300010924C04109248091092490910924A0940 |
:10B2400010924B0910925009109251091092520914 |
:10B250001092530910923F0910924009109241092F |
:10B26000109242091092300910923109109232095D |
:10B27000109233091092160310921503E0901304F4 |
:10B28000F0901404C701F7FE04C0882799278E198F |
:10B290009F0904973CF08091700984FD03C082E30C |
:10B2A0008093F10310919C07A12EBB24CC24DD24B4 |
:10B2B000B701882777FD8095982F9701F7FE04C086 |
:10B2C000222733272E193F09442737FD4095542F55 |
:10B2D0000E9481919B01AC01C601B5010E94819140 |
:10B2E00097FF04C061507E4F8F4F9F4F59E0959557 |
:10B2F0008795779567955A95D1F79B01812F992767 |
:10B300008E9DD0018F9DB00D9E9DB00D1124CD015D |
:10B31000B7FD03969595879595958795280F391FC5 |
:10B320008091F3039091F403280F391F442737FDD0 |
:10B330004095542F209392043093930440939404A7 |
:10B34000509395048091310490913204A09133047C |
:10B35000B0913404821B930BA40BB50B8093310482 |
:10B3600090933204A0933304B09334048155934CEA |
:10B37000A040B04064F080E593ECA0E0B0E08093A2 |
:10B38000310490933204A0933304B0933404809139 |
:10B39000310490913204A0913304B0913404805B65 |
:10B3A0009C43AF4FBF4F64F480EB9CE3AFEFBFEF24 |
:10B3B0008093310490933204A0933304B093340407 |
:10B3C000009188011091890117FDFCC080917009DE |
:10B3D00083FFF8C080918701815080938701882383 |
:10B3E00009F0F4C08DE08093870180916104909111 |
:10B3F0006204A0916304B0916404B7FF04C081505B |
:10B400009E4FAF4FBF4F39E0B595A795979587955C |
:10B410003A95D1F77C0197FF04C0F094E194F108CC |
:10B42000F3948091590490915A04A0915B04B091D7 |
:10B430005C04B7FF04C081509E4FAF4FBF4F29E05F |
:10B44000B595A795979587952A95D1F79C0197FF74 |
:10B4500003C0309521953F4FE216F3060CF47901B5 |
:10B46000B701F7FE02C0695F7F4F2B01A3E055943F |
:10B470004794AA95E1F722E030E0420E531E609017 |
:10B4800080097090810980908209909083092091B1 |
:10B490003C0130913D0140913E0150913F01C4017A |
:10B4A000B3010E94F59159016A0130932E0920934E |
:10B4B0002D09021B130BC801845E9D4F68E671E0E5 |
:10B4C0000E94C0919C01245B304080918401909146 |
:10B4D0008501009731F00197909385018093840155 |
:10B4E0001BC049E1E416F104BCF480911B04909167 |
:10B4F0001C04820F931F90931C0480931B04809163 |
:10B50000F103882349F081508093F103882321F4CB |
:10B51000B0922004A0921F04809184019091850133 |
:10B52000892BF9F4809186019927289FB001299FE2 |
:10B53000700D389F700D1124CB01B2010E94C09193 |
:10B54000CB01AA2797FDA095BA2F680E791E8A1EF7 |
:10B550009B1E60928009709281098092820990926C |
:10B5600083098091F103882369F580911F049091EC |
:10B57000200420912D0930912E09821B930B845EAB |
:10B580009D4F68E671E00E94C0919C01245B3040B1 |
:10B590008091700186959927289FD001299FB00D31 |
:10B5A000389FB00D11249D01B7FF02C0215F3F4FAE |
:10B5B000F4E035952795FA95E1F73093F40320935D |
:10B5C000F30304C01092F4031092F30380911D045E |
:10B5D000882381F0109225041092260410922704EB |
:10B5E000109228041092290410922A0410922B041D |
:10B5F00010922C04F090EA03FF20F1F48091560998 |
:10B60000282F3327442755278091610490916204A5 |
:10B61000A0916304B0916404BC01CD010E948191AA |
:10B62000DC01CB01BC01CD0128EF3AE240E050E063 |
:10B630000E94F591390102C066247724E090E90365 |
:10B64000EE20F1F480915609282F332744275527FF |
:10B650008091590490915A04A0915B04B0915C04CC |
:10B66000BC01CD010E948191DC01CB01BC01CD0167 |
:10B6700028EF3AE240E050E00E94F591290102C033 |
:10B680004424552480912A0990912B09893C9105E5 |
:10B690001CF088EC90E005C088539F4F34F488E399 |
:10B6A0009FEF90932B0980932A09809136099091FE |
:10B6B0003709893C91051CF088EC90E005C088535F |
:10B6C0009F4F34F488E39FEF9093370980933609B6 |
:10B6D0008091380990913909AA2797FDA095BA2F32 |
:10B6E00020917E09A22EBB24CC24DD24BC01CD01F7 |
:10B6F000A60195010E9481919B01AC0180912A09CC |
:10B7000090912B09AA2797FDA095BA2FE7E0880F03 |
:10B71000991FAA1FBB1FEA95D1F7280F391F4A1F8F |
:10B720005B1F57FF04C0215C3F4F4F4F5F4F76E0D8 |
:10B7300055954795379527957A95D1F78301020F4F |
:10B74000131F1093390900933809809128099091AB |
:10B750002909AA2797FDA095BA2FBC01CD01A60102 |
:10B7600095010E9481919B01AC01809136099091D5 |
:10B770003709AA2797FDA095BA2F67E0880F991F70 |
:10B78000AA1FBB1F6A95D1F7280F391F4A1F5B1FDD |
:10B7900057FF04C0215C3F4F4F4F5F4FF6E0559578 |
:10B7A000479537952795FA95D1F74201820E931E5A |
:10B7B00090922909809228098091790990917A09BB |
:10B7C000880F991FAA2797FDA095BA2F20912F09BE |
:10B7D000332744275527BC01CD010E9481915B018D |
:10B7E0006C0197FF08C02FE330E040E050E0A20E6C |
:10B7F000B31EC41ED51EE6E0D594C794B794A79493 |
:10B80000EA95D1F780914509282F332744275527FA |
:10B810008091450490914604A0914704B09148045A |
:10B82000BC01CD010E948191DC01CB01BC01CD01A5 |
:10B8300020EF35E540E050E00E94F591B501620F40 |
:10B84000731F70937A09609379090150104134F0A5 |
:10B8500080E090E19093390980933809809138090C |
:10B86000909139098050904F34F480E090EF90939C |
:10B8700039098093380951E0851650E1950634F076 |
:10B8800080E090E19093290980932809809128090C |
:10B89000909129098050904F34F480E090EF90937C |
:10B8A0002909809328096150704134F080E090E1CB |
:10B8B00090937A09809379098091790990917A0916 |
:10B8C0008050904F34F480E090EF90937A09809309 |
:10B8D000790980910001482F552780911F0190918F |
:10B8E00020014817590794F420911F01309120013D |
:10B8F00009811A81049FC001059F900D149F900D2E |
:10B900001124B9010E94AC917A83698329813A811B |
:10B91000220F331F220F331F3A832983409170096E |
:10B9200040FD02C00C949C64EE2011F00C949C64C9 |
:10B93000FF2011F00C949C6400E010E0480180911D |
:10B94000EB039091EC0390930B0780930A072091EF |
:10B950007804309179042115310509F03FC08091B8 |
:10B960001501909116018959934058F087B5803F91 |
:10B9700020F480911903815011C081E08093CF049D |
:10B980004EC080911501909116018436910508F5FD |
:10B9900087B58031D0F0809119038F5F80931903B0 |
:10B9A0009FE089029001112480912F07821B87BD9F |
:10B9B0008CE291E090930903809308038EE591E077 |
:10B9C00090937904809378042AC081E08093CE0418 |
:10B9D00026C0F092CE04F092CF0421C080910104E1 |
:10B9E00090910204A0910304B091040464E0880FD4 |
:10B9F000991FAA1FBB1F6A95D1F780931A039093D2 |
:10BA00001B03A0931C03B0931D0310931803009312 |
:10BA1000170321503040309379042093780420910B |
:10BA2000730141FF3CC0223348F580918A01815067 |
:10BA300080938A018F3F09F052C080919D01882335 |
:10BA400039F480911E04882319F088E280939D01C7 |
:10BA500010921E048091010490910204A0910304AD |
:10BA6000B09104048093FD039093FE03A093FF0321 |
:10BA7000B093000481E080938A0131C0273478F1CB |
:10BA800080919D01882339F480911E04882319F444 |
:10BA900087E280939D0188EC80938A011DC080918C |
:10BAA000400190914101820F911D2091950733270C |
:10BAB000829FA001839F500D929F500D1124CA01B7 |
:10BAC000AA2797FDA095BA2F8093FD039093FE03BC |
:10BAD000A093FF03B093000481E080931E04809143 |
:10BAE000610490916204A0916304B0916404E090B9 |
:10BAF0003C01F0903D0100913E0110913F01BC01DD |
:10BB0000CD01A80197010E94F59159016A01809128 |
:10BB1000590490915A04A0915B04B0915C04BC015B |
:10BB2000CD01A80197010E94F591B901C5010E94BC |
:10BB30002F845C01CC971CF05CE3A52EB12CC501D1 |
:10BB40000E942D725C0180E280933B011092FC0305 |
:10BB50001092FB0380911E04882309F45FC5809135 |
:10BB6000CF0399279C012071307084FD57C58091C7 |
:10BB7000CE0382608093CE0370915409872F99275A |
:10BB800041E0C42ED12CC822D92280FD04C080916E |
:10BB9000700981FD10C0C980DA803093C7042093FA |
:10BBA000C6043093FC032093FB038091CF03806C89 |
:10BBB0008093CF03ABC28091CF0381FF7AC2009103 |
:10BBC0007A0110917B01C8010F96209011043090EA |
:10BBD0001204821593050CF058C08091CE0488237E |
:10BBE00009F053C08091CF0387FF15C08091CF0328 |
:10BBF0008F778093CF038091010490910204A091EC |
:10BC00000304B09104048093FD039093FE03A0937A |
:10BC1000FF03B09300048091CF0380648093CF032F |
:10BC2000E0903409EE20F1F08091FD039091FE0345 |
:10BC3000A091FF03B0910004BC01CD0124E630E0E7 |
:10BC400040E050E00E94F5918E2D9927AA27BB274E |
:10BC500082179307A407B5072CF4D092FC03C09277 |
:10BC6000FB0310C0C101801B910B0F9797FF03C00E |
:10BC7000909581959F4F9093FC038093FB038BE2FB |
:10BC800080933B011092F50316C1C8010F97281647 |
:10BC90003906C4F52091CF042223A1F58091CF036A |
:10BCA00086FF15C08091CF038F7B8093CF03809157 |
:10BCB000010490910204A0910304B09104048093C4 |
:10BCC000FD039093FE03A093FF03B09300048091C3 |
:10BCD000CF0380688093CF03C101801B910B0F9627 |
:10BCE00097FF03C0909581959F4F909581959F4FA9 |
:10BCF0009093FC038093FB038DE280933B012093A0 |
:10BD0000F503D9C08DE380933B016091F603662370 |
:10BD100071F12091F7033091F8034091F9035091AC |
:10BD2000FA038091FD039091FE03A091FF03B0916F |
:10BD3000000482179307A407B507CCF48091CF03C2 |
:10BD400080648093CF03862F99279093FC03809380 |
:10BD5000FB038AE08093F5038EE580933B0180919D |
:10BD6000CF0387FFA8C08091CF038F7733C06623AE |
:10BD700009F443C02091F7033091F8034091F9038F |
:10BD80005091FA038091FD039091FE03A091FF036F |
:10BD9000B0910004281739074A075B0774F58091B2 |
:10BDA000CF0380688093CF03862F99279095819544 |
:10BDB0009F4F9093FC038093FB0386EF8093F503E2 |
:10BDC00086E780933B018091CF0386FF74C080910A |
:10BDD000CF038F7B8093CF03809101049091020465 |
:10BDE000A0910304B09104048093FD039093FE039B |
:10BDF000A093FF03B09300045EC08091CF03807CCA |
:10BE000009F459C08091F503882379F5E090010485 |
:10BE1000F09002040091030410910404D801C701BA |
:10BE200080589040A040B0402091FD033091FE0327 |
:10BE30004091FF035091000482179307A407B507B0 |
:10BE40005CF4D801C70180589F4FAF4FBF4F2817F0 |
:10BE500039074A075B075CF08093FD039093FE036C |
:10BE6000A093FF03B093000402C01092F5038091E9 |
:10BE7000CF038F738093CF031092C7041092C60430 |
:10BE800071FF06C084EF91E090930903809308034B |
:10BE900080910504882379F4809101049091020433 |
:10BEA000A0910304B0910404C397A105B1051CF04F |
:10BEB00081E0809305046091C6047091C70480916D |
:10BEC000FB039091FC03680F791F7093C704609384 |
:10BED000C604CB0177FF04C088279927861B970BE0 |
:10BEE000855F91400CF4CEC04091F503442389F165 |
:10BEF0008091F7039091F8032091FD033091FE03A8 |
:10BF0000821B930B0996439748F48091F703909115 |
:10BF1000F803A091F903B091FA0312C0242F33273C |
:10BF200027FD3095432F532F8091FD039091FE0301 |
:10BF3000A091FF03B0910004820F931FA41FB51FAF |
:10BF40008093FD039093FE03A093FF03B09300043E |
:10BF500024C0809195072091FD033091FE0340910C |
:10BF6000FF03509100041616170644F463E00E9484 |
:10BF7000A091280F311D411D511D07C063E00E9493 |
:10BF8000A091281B3109410951092093FD033093E9 |
:10BF9000FE034093FF03509300041092C7041092D5 |
:10BFA000C604E0900104F090020400910304109193 |
:10BFB0000404D801C70180509440A040B0402091B3 |
:10BFC000FD033091FE034091FF035091000482175E |
:10BFD0009307A407B5075CF4D801C70180509C4FB4 |
:10BFE000AF4FBF4F281739074A075B0744F08093CC |
:10BFF000FD039093FE03A093FF03B0930004809190 |
:10C00000540981FF06C084E690E090930903809371 |
:10C010000803809199078823A9F58091F603882366 |
:10C0200089F54091EB035091EC0357FF02C04D5F3F |
:10C030005F4F559547955595479580911F01909174 |
:10C040002001209100013327489FF001499FF00D06 |
:10C05000589FF00D1124CF01B9010E94C091709337 |
:10C060007B0160937A01663471051CF486E490E0EC |
:10C0700005C06739710534F086E990E090937B0143 |
:10C0800080937A018091780490917904892BD1F181 |
:10C090008091010490910204A0910304B0910404E2 |
:10C0A0008093FD039093FE03A093FF03B0930004DD |
:10C0B00029C08091010490910204A0910304B091E1 |
:10C0C000040480599140A040B0408093FD039093B8 |
:10C0D000FE03A093FF03B093000480919907882387 |
:10C0E00011F0992702C088E790E090937B0180933C |
:10C0F0007A01E980FA80F092EC03E092EB038EE2A1 |
:10C1000080933B01C090EB03D090EC03E0900104DE |
:10C11000F090020400910304109104042091FD03A7 |
:10C120003091FE034091FF03509100042E153F050E |
:10C130004007510724F08091540980FDBBC28091D3 |
:10C14000780490917904892B39F0C090EB03D0905A |
:10C15000EC0300E010E0D7C0D801C701821B930BAD |
:10C16000A40BB50B8093960490939704A093980426 |
:10C17000B0939904823000E890070FEFA0070FEF0B |
:10C18000B0072CF481E090E8AFEFBFEF09C08F5FFC |
:10C190009F47A040B04064F08FEF9FE7A0E0B0E081 |
:10C1A0008093960490939704A0939804B093990475 |
:10C1B000009196041091970480917201282F3327E3 |
:10C1C000442755278091960490919704A091980454 |
:10C1D000B0919904BC01CD010E94819197FF04C0E8 |
:10C1E000615E7F4F8F4F9F4F25E09595879577959F |
:10C1F00067952A95D1F7609396047093970480937E |
:10C2000098049093990465302EEF72072FEF820700 |
:10C210002FEF92072CF484E09EEFAFEFBFEF09C041 |
:10C22000605074408040904064F080E094E0A0E072 |
:10C23000B0E08093960490939704A0939804B093F1 |
:10C240009904809096049090970420911703309160 |
:10C25000180337FF02C0295F3F4F83E035952795CC |
:10C260008A95E1F74FEF223834071CF421E83FEFBD |
:10C2700005C02038310514F020E830E0C901AA27B4 |
:10C2800097FDA095BA2F2091740133274427552795 |
:10C29000BC01CD010E94819197FF04C06D5F7F4F6B |
:10C2A0008F4F9F4FB2E09595879577956795BA9593 |
:10C2B000D1F79B015FEF613075071CF420E03FEF81 |
:10C2C00006C06F3F710519F014F020E031E0809155 |
:10C2D000CF03807C49F0C90137FD03969C01359559 |
:10C2E0002795359527950DC08091540980FF09C089 |
:10C2F000C90137FD07969C01F3E035952795FA951E |
:10C30000E1F7820E931E20917101222309F454C09B |
:10C31000609121047091220480912304909124045F |
:10C3200097FF04C061587F4F8F4F9F4FE7E095956F |
:10C33000879577956795EA95D1F733274427552751 |
:10C340000E94819197FF04C0615E7F4F8F4F9F4F86 |
:10C3500055E095958795779567955A95D1F76093B0 |
:10C36000960470939704809398049093990461388D |
:10C37000AFEF7A07AFEF8A07AFEF9A072CF480E8A8 |
:10C380009FEFAFEFBFEF0AC06F3F710581059105C9 |
:10C3900069F064F080E091E0A0E0B0E08093960462 |
:10C3A00090939704A0939804B09399048091960475 |
:10C3B00090919704880E991E80916F01282F332742 |
:10C3C0008091040A992787FD9095289FF001299F65 |
:10C3D000F00D389FF00D11249F01F7FF02C0215886 |
:10C3E0003F4F220F232F221F330BFFEF21383F0730 |
:10C3F0001CF420E83FEF06C02F3F310519F014F080 |
:10C4000020E031E0820E931EC401AA2797FDA0957B |
:10C41000BA2FE090EB03F090EC039701442737FD2F |
:10C420004095542FBC01CD010E94819197FF04C01B |
:10C4300061507E4F8F4F9F4F29E095958795779557 |
:10C4400067952A95D1F7C61AD70A8091FB03909178 |
:10C45000FC03892B09F060C01E141F040CF05CC0A3 |
:10C46000980117FF03C0309521953F4F2D333105BB |
:10C4700040F48091190490911A048C159D0574F56F |
:10C4800026C02C53304085E0369527958A95E1F7F4 |
:10C490002031310510F02FE030E040911904509127 |
:10C4A0001A0410161106E4F480E190E0821B930B4D |
:10C4B000489F9001499F300D589F300D1124B4E0E2 |
:10C4C00036952795BA95E1F72C153D0520F5809115 |
:10C4D000780190917901C816D906F4F06C011CC05E |
:10C4E000205F3F4F8091780190917901829F800178 |
:10C4F000839F100D929F100D11249801A4E0369592 |
:10C500002795AA95E1F74C155D0514F06A0104C062 |
:10C51000C216D30608F06901C601AA2797FDA095A7 |
:10C52000BA2FFDE0880F991FAA1FBB1FFA95D1F7FC |
:10C530009501442737FD4095542FBC01CD010E9441 |
:10C54000F59120939A0430939B0440939C0450935C |
:10C550009D04C0909A04D0909B048091C80490914F |
:10C56000C9049C01220F331F280F391F2C0D3D1DBC |
:10C5700037FF02C02D5F3F4FA9015595479555954F |
:10C5800047955093C9044093C80480919107282F80 |
:10C590003327220F331F220F331F241735076CF464 |
:10C5A00080917809282F3327220F331F220F331F42 |
:10C5B000205530404217530724F03093C90420938C |
:10C5C000C8048091540980FF14C08091C8049091E0 |
:10C5D000C90429813A818217930724F03093C90452 |
:10C5E0002093C8044091C8045091C9045A834983D8 |
:10C5F00061C029813A812E193F0937FF02C02D5FA2 |
:10C600003F4F35952795359527956091C8047091D2 |
:10C61000C904620F731F7A8369834CC080919907A4 |
:10C62000882301F56091EB037091EC0377FF02C062 |
:10C630006D5F7F4F759567957595679540911F0163 |
:10C640005091200180910001282F3327649FC00161 |
:10C65000659F900D749F900D1124B9010E94C091A7 |
:10C66000CB0101C0992790937B0180937A0180913F |
:10C670007A0190917B01873491051CF486E490E067 |
:10C6800005C08639910534F086E990E090937B01EE |
:10C6900080937A0189819A819093C9048093C80418 |
:10C6A0008091CF03806C8093CF038091CE038D7FE8 |
:10C6B0008093CE038091CF0399279C012270307024 |
:10C6C00081FF2BC18091CA049091CB04A091CC042E |
:10C6D000B091CD040097A105B10521F0809105042A |
:10C6E0008130B1F4E981FA81CF01AA2797FDA095A5 |
:10C6F000BA2F1EE0880F991FAA1FBB1F1A95D1F7EA |
:10C700008093CA049093CB04A093CC04B093CD043F |
:10C7100080910504813019F482E080930504E9805A |
:10C72000FA80C701AA2797FDA095BA2F9501442743 |
:10C7300037FD4095542FBC01CD010E948191DC0151 |
:10C74000CB0180939A0490939B04A0939C04B09394 |
:10C750009D04B7FF04C08150904EAF4FBF4F7C0186 |
:10C760008D01ADE015950795F794E794AA95D1F75B |
:10C77000E0929A04F0929B0400939C0410939D0411 |
:10C780006091D0037091D1032FE0603A720750F5A9 |
:10C790008091CA049091CB04A091CC04B091CD04B7 |
:10C7A0009C01AD01FAE05695479537952795FA9586 |
:10C7B000D1F7821B930BA40BB50BA8019701E4E002 |
:10C7C000220F331F441F551FEA95D1F7820F931F85 |
:10C7D000A41FB51F8093CA049093CB04A093CC04EC |
:10C7E000B093CD0460547F4118F58091CA049091B4 |
:10C7F000CB04A091CC04B091CD049C01AD016CE0C0 |
:10C8000056954795379527956A95D1F7821B930BD7 |
:10C81000A40BB50BA8019701F2E0220F331F441FB0 |
:10C82000551FFA95D1F7820F931FA41FB51F38C06B |
:10C83000809117039091180380911703909118032A |
:10C8400097FF03C0909581959F4F8436910584F59D |
:10C8500080910104909102042091FD033091FE0328 |
:10C86000821B930B81509F4F8F5F914008F5809101 |
:10C87000CA049091CB04A091CC04B091CD049C014A |
:10C88000AD01EEE05695479537952795EA95D1F796 |
:10C89000821B930BA40BB50B8E0D9F1DA01FB11F08 |
:10C8A0008093CA049093CB04A093CC04B093CD049E |
:10C8B0008091CA049091CB04A091CC04B091CD0496 |
:10C8C0007EE0B695A795979587957A95D1F7909341 |
:10C8D000EC038093EB0340919707442399F055278D |
:10C8E0009C01BA010E94C091C901861B970B9093CD |
:10C8F0001A0480931904260F371F3093790120936F |
:10C9000078011FC010921A04109219048FEF93E05F |
:10C91000909379018093780114C0109205041092CD |
:10C92000CA041092CB041092CC041092CD04309320 |
:10C93000EC032093EB0305C08091CF03806C8093C0 |
:10C94000CF038091DE0481FF37C089819A8197FDF2 |
:10C95000039695958795959587952091CC03309171 |
:10C96000CD032817390760F48091EB039091EC0315 |
:10C97000892B31F0220F331F220F331F3A83298373 |
:10C980008091010490910204A0910304B0910404E9 |
:10C990008093FD039093FE03A093FF03B0930004E4 |
:10C9A00088E99AE3909309038093080380E09EE06E |
:10C9B00090930A018093090120913D09822F9927C4 |
:10C9C000880F991F880F991F889669817A81861729 |
:10C9D000970714F09A838983709178097D8B872F4C |
:10C9E0009927880F991F880F991F80559040A9811A |
:10C9F000BA818A179B0714F49A83898380914E0326 |
:10CA0000882341F48091160A8F3F21F48091E2043B |
:10CA10008823E9F08091D0039091D1030297C097C9 |
:10CA2000B0F4E981FA811E161F068CF481E090E0D3 |
:10CA30009093D1038093D003E22EFF24EE0CFF1CD1 |
:10CA4000EE0CFF1C8701085D1F4F1A8309832981A3 |
:10CA50003A813093EF062093EE06809192049091F4 |
:10CA60009304A0919404B091950412E0880F991F4B |
:10CA7000AA1FBB1F1A95D1F70091790910917A0965 |
:10CA8000081B190B213A31058CF0C90137FD0196BD |
:10CA900095958795801791070CF48C019095819559 |
:10CAA0009F4F081719076CF48C010BC00135110555 |
:10CAB00014F000E510E03FEF003B130714F400EB27 |
:10CAC0001FEF4D89242F3327220F331F220F331FCF |
:10CAD000C90169817A81861B970B801791070CF435 |
:10CAE0008C0189819A81821B930B081719070CF41A |
:10CAF0008C018091380990913909609117047091E7 |
:10CB00001804861B970B9093470980934609D09091 |
:10CB100056092091290430912A0440912B04509108 |
:10CB20002C04DD2041F0661A770AC301AA2797FD7D |
:10CB3000A095BA2F04C0AA2797FDA095BA2F280F59 |
:10CB4000391F4A1F5B1F2093290430932A04409306 |
:10CB50002B0450932C048091290490912A04A091D5 |
:10CB60002B04B0912C0481509A4FA040B04064F047 |
:10CB700080E09AEFA0E0B0E08093290490932A042B |
:10CB8000A0932B04B0932C048091290490912A0443 |
:10CB9000A0912B04B0912C0480509640AF4FBF4F12 |
:10CBA00064F480E096E0AFEFBFEF809329049093A8 |
:10CBB0002A04A0932B04B0932C04C090A6072091C4 |
:10CBC00046093091470978E0E72EEC1498F08C2D57 |
:10CBD0009927829FA001839F500D929F500D112491 |
:10CBE000CA0157FD07967C0163E0F594E7946A95C6 |
:10CBF000E1F712C08C2D86959927829FB001839F03 |
:10CC0000700D929F700D1124CB0177FD03967C016E |
:10CC1000F594E794F594E794A0907501B0907601AF |
:10CC20009501442737FD4095542F80912904909118 |
:10CC30002A04A0912B04B0912C04BC01CD010E94C8 |
:10CC4000F591E20EF31E90906101692D77278827F8 |
:10CC50009927980117FF04C022273327201B310B87 |
:10CC600037FF02C02F5F3F4F35952795A981BA81C5 |
:10CC70002A0F3B1F442737FD4095542F0E94819176 |
:10CC800097FF04C0615C7F4F8F4F9F4F26E09595C3 |
:10CC90008795779567952A95D1F79B016E157F0546 |
:10CCA0000CF47B01309521953F4FE216F3060CF40E |
:10CCB000790180912809909129096091150470915A |
:10CCC0001604861B970B90932709809326092091C1 |
:10CCD0002504309126044091270450912804DD203A |
:10CCE00041F0461A570AC201AA2797FDA095BA2F0C |
:10CCF00004C0AA2797FDA095BA2F280F391F4A1FF5 |
:10CD00005B1F2093250430932604409327045093FF |
:10CD100028048091250490912604A0912704B091C5 |
:10CD2000280481509A4FA040B04064F080E09AEF10 |
:10CD3000A0E0B0E08093250490932604A0932704FC |
:10CD4000B09328048091250490912604A091270493 |
:10CD5000B091280480509640AF4FBF4F64F480E0FC |
:10CD600096E0AFEFBFEF8093250490932604A09345 |
:10CD70002704B0932804209126093091270948E020 |
:10CD80004C1598F08C2D9927829FB001839F700DD0 |
:10CD9000929F700D1124CB0177FD07966C01B3E0D3 |
:10CDA000D594C794BA95E1F712C0C6948C2D9927F3 |
:10CDB000829FD001839FB00D929FB00D1124CD01B1 |
:10CDC000B7FD03966C01D594C794D594C79495018B |
:10CDD000442737FD4095542F8091250490912604D7 |
:10CDE000A0912704B0912804BC01CD010E94F591C7 |
:10CDF000C20ED31E692D772788279927980117FF20 |
:10CE000004C022273327201B310B37FF02C02F5FBE |
:10CE10003F4F35952795E981FA812E0F3F1F442713 |
:10CE200037FD4095542F0E94819197FF04C0615CAB |
:10CE30007F4F8F4F9F4FE6E0959587957795679544 |
:10CE4000EA95D1F79B016C157D050CF46B013095CB |
:10CE500021953F4FC216D3060CF4690180913D091C |
:10CE6000282E33245090E80766E5862E68E0962E3B |
:10CE70005DE0A52E58E0B52E4BE0442E37E5632E3D |
:10CE800039E0732ED5012C9112160CF029C12034F3 |
:10CE900029F4E981FA81FF8BEE8B1FC049815A8109 |
:10CEA000CA01AA2797FDA095BA2F332727FD3095F1 |
:10CEB000432F532FBC01CD010E94819197FF04C0E5 |
:10CEC000615C7F4F8F4F9F4F26E0959587957795B3 |
:10CED00067952A95D1F77F8B6E8BF50121812034E0 |
:10CEE00039F42E893F892E0D3F1D3F8B2E8B2AC092 |
:10CEF000203C39F44E895F894E195F095F8B4E8B58 |
:10CF000021C0C701AA2797FDA095BA2F332727FD77 |
:10CF10003095432F532FBC01CD010E94819197FF83 |
:10CF200004C0615C7F4F8F4F9F4FB6E0959587950A |
:10CF300077956795BA95D1F7AE89BF89A60FB71FC8 |
:10CF4000BF8BAE8BF5012281203439F42E893F89C5 |
:10CF50002C0D3D1D3F8B2E8B2AC0203C39F44E8971 |
:10CF60005F894C195D095F8B4E8B21C0C601AA27D2 |
:10CF700097FDA095BA2F332727FD3095432F532FC8 |
:10CF8000BC01CD010E94819197FF04C0615C7F4F7D |
:10CF90008F4F9F4FA6E09595879577956795AA95B2 |
:10CFA000D1F7AE89BF89A60FB71FBF8BAE8BF50136 |
:10CFB0002381203439F42E893F89200F311F3F8B84 |
:10CFC0002E8B2AC0203C39F44E895F89401B510BBF |
:10CFD0005F8B4E8B21C0C801AA2797FDA095BA2F61 |
:10CFE000332727FD3095432F532FBC01CD010E94DD |
:10CFF000819197FF04C0615C7F4F8F4F9F4FF6E098 |
:10D000009595879577956795FA95D1F7AE89BF89FC |
:10D01000A60FB71FBF8BAE8BF301808191812E8944 |
:10D020003F898217930764F4B901680F791F77FF6E |
:10D0300002C06F5F7F4F759567957F8B6E8B1DC0AC |
:10D04000552049F44E895F89440F551F481B590BE1 |
:10D050005F8B4E8B12C051E0551578F4252D332788 |
:10D060006E897F89861B970BB9010E94C091AE899A |
:10D07000BF89A60FB71FBF8BAE8BC101880F991F49 |
:10D08000880F991FEE89FF898E179F0764F4FD8929 |
:10D090008F2F9927880F991F880F991F2E893F89F5 |
:10D0A0002817390714F09F8B8E8B8E899F8997FDE7 |
:10D0B00003969595879595958795F4018183880FBB |
:10D0C000991F880F991F2E893F89281B390BC90189 |
:10D0D000880F8283EE89FF89D301ED93FC9303C00F |
:10D0E000F401118212824A9422E030E0620E731E33 |
:10D0F00044E050E0A40EB51E68E070E0860E971E76 |
:10D1000047FEC0CEE2E1C95E0C942C9284B1806AE5 |
:10D1100084B93D9A82E58CBD1DBC459A81E080931F |
:10D120008A098AEA80939B0983E880939C098AE0B4 |
:10D1300080939D0910929F0910929E091092A10957 |
:10D140001092A0091092030A1092BF09089530911D |
:10D150008A09332309F085C00DB407FE82C084E03C |
:10D1600080930703459A2EB58091E5049927813075 |
:10D17000910589F0823091051CF4892B21F03EC085 |
:10D180000297B9F03BC03093BE092093E6042138E2 |
:10D19000A9F581E008C0253549F48091E604820FA5 |
:10D1A0008093E60482E08093E50428C03093E50490 |
:10D1B00025C08091BE09E82FFF27E052F64F20835B |
:10D1C0008F5F8093BE099091E6048032A0F029170A |
:10D1D00069F480E2A0EEB9E0E0ECF9E00D90019294 |
:10D1E0008A95E1F781E08093BF0902C03093BF09BF |
:10D1F0001092E50403C0920F9093E60420919A09DF |
:10D20000223208F028C0459800000000000000000D |
:10D21000000000000000000000000000000000000E |
:10D2200000000000000000000000000000000000FE |
:10D230000000000000000000E0919309F0919409C3 |
:10D24000E20FF11D80818EBD8091BC099081890F14 |
:10D250008093BC0903C081E080938A092F5F2093EB |
:10D260009A090895EF92FF920F931F9380919F0761 |
:10D270009927880F991F880F991F7C010027F7FCB9 |
:10D280000095102F8091610490916204A091630435 |
:10D29000B0916404BC01CD01A80197010E94F591F1 |
:10D2A00030939F0920939E098091590490915A04CC |
:10D2B000A0915B04B0915C04BC01CD01A801970171 |
:10D2C0000E94F5913093A1092093A0092091800933 |
:10D2D000309181094091820950918309DA01C90195 |
:10D2E00063E0880F991FAA1FBB1F6A95D1F7820FB1 |
:10D2F000931FA41FB51F820F931FA41FB51F20915A |
:10D300003C0130913D0140913E0150913F01BC01F3 |
:10D31000CD010E94F5913093A7092093A609809131 |
:10D320007204909173042091240330912503821B91 |
:10D33000930B9093AD098093AC09E0916804F09150 |
:10D34000690480914D0990914E09BF010E94C091DE |
:10D350009B01220F331F220F331F260F371F260F6B |
:10D36000371F37FF02C02D5F3F4F35952795359505 |
:10D3700027953093A3092093A20980917C0990916D |
:10D380007D09BF010E94C0919B01220F331F220F14 |
:10D39000331F260F371F260F371F37FF02C02D5FA1 |
:10D3A0003F4F35952795359527953093A5092093BF |
:10D3B000A409109269041092680410924E09109208 |
:10D3C0004D0910927D0910927C0980919D09992741 |
:10D3D000AA27BB27FC013A97E830F10508F0FEC107 |
:10D3E000E058FF4F0C9447928091E4038093B0097A |
:10D3F0008091E3038093B1098091E2038093B209A5 |
:10D400008091E1038093B3098091E0038093B40994 |
:10D410008091DF038093B5098091DE038093B60984 |
:10D420008091DD038093B7098091CF038093B80981 |
:10D430008091CF03837F8093CF030E9463308093DA |
:10D44000B9098091E9078093BA098091CE03C4C1DC |
:10D450008091100A9091110A9093B1098093B009BC |
:10D460008091140A9091150A9093B3098093B209A0 |
:10D4700080911F01909120018093B4098091000157 |
:10D480008093B50980913B018093B6099091E704A0 |
:10D490009093B709E92FFF27A3E0EE0FFF1FAA958E |
:10D4A000E1F7EA5AF74F86818093B8098381809328 |
:10D4B000B90987818093BA0985818093BB09892F37 |
:10D4C0008F5F6CE00E94A0919093E70487C18091E8 |
:10D4D000D4078093B0098091D5078093B1098091DA |
:10D4E000D6078093B2098091D7078093B3098091C2 |
:10D4F000D8078093B4098091DC078093B5098091A7 |
:10D50000DD078093B6098091DE078093B70980918B |
:10D51000E1078093B8098091DF078093B909809172 |
:10D52000E0078093BA098091E20756C18091D30742 |
:10D530008093B0098091AA07863081F08091D4024F |
:10D54000823451F00E946F73E82FFF27EB55FF4E96 |
:10D5500084918093D40202C00E946F7380910A0567 |
:10D560008093B1093BC1F89480918607E82FFF278B |
:10D57000EE0FFF1FE954F74F0190F081E02DE038E6 |
:10D58000F1051CF0EFE7F0E006C02FEFE138F207FD |
:10D5900014F4E1E8FFEFE093B00980918707E82FEA |
:10D5A000FF27EE0FFF1FE954F74F0190F081E02DA8 |
:10D5B000E038F1051CF0EFE7F0E006C07FEFE1385E |
:10D5C000F70714F4E1E8FFEFE093B10980918507D4 |
:10D5D000E82FFF27EE0FFF1FE954F74F0190F0816E |
:10D5E000E02DE038F1051CF0EFE7F0E006C08FEF2A |
:10D5F000E138F80714F4E1E8FFEFE093B209809115 |
:10D600008407E82FFF27EE0FFF1FE954F74F019023 |
:10D61000F081E02DE038F1051CF0EFE7F0E006C006 |
:10D620002FEFE138F20714F4E1E8FFEF7894E0938C |
:10D63000B309809108048093B40980910904809310 |
:10D64000B50980910A048093B60980910B048093F8 |
:10D65000B70980910C048093B80980910D048093E0 |
:10D66000B90980910E048093BA0980910F04B4C067 |
:10D6700080916F05863018F010926F0585E08093D9 |
:10D68000B0098091E3078093B109809101049091E2 |
:10D690000204A0910304B0910404BC01CD0125E073 |
:10D6A00030E040E050E00E94F5913093B3092093C0 |
:10D6B000B2098091FD039091FE03A091FF03B09108 |
:10D6C0000004BC01CD0125E030E040E050E00E94C4 |
:10D6D000F5913093B5092093B4098091D9078093CF |
:10D6E000B6098091DA078093B7098091DB078093B0 |
:10D6F000B809809107048093B9098091B708909187 |
:10D70000B8088093BA098091EE069091EF0697FDD4 |
:10D71000039695958795959587955EC01092B0096B |
:10D720008AE58093B10983E08093B20984E3809312 |
:10D73000B309809101018093B409809154058093CD |
:10D74000B509909155059093B6098F77809354054C |
:10D75000907190935505809156058093B7098091FB |
:10D7600070098093B809809154098093B909809118 |
:10D77000E5078093BA098091F2072EC08091B8071F |
:10D780008093B0098091F0078093B109809167017F |
:10D790008093B2098091B1078093B3098091B20759 |
:10D7A0008093B4098091B3078093B5098091660195 |
:10D7B0008093B6098091B5078093B7098091B60729 |
:10D7C0008093B8098091B7078093B9098091160AB0 |
:10D7D0008093BA09809118078093BB098091BF0993 |
:10D7E000882309F47DC16091C0098091990168176F |
:10D7F00019F08AEF809397016093990181E08093FB |
:10D8000087014091C1095091C209CA0181509E4FC0 |
:10D810008F5F9340B0F42091C3093091C409C901CE |
:10D8200081509E4F8F5F934060F48091900785FFF9 |
:10D8300008C05093D4044093D3043093D20420936F |
:10D84000D1048091C7099091C80921E089369207D7 |
:10D8500024F490938901809388012091D10930911B |
:10D86000D20980910803909109038217930740F42D |
:10D870008091DC02882321F430930903209308036C |
:10D88000862F99278936910509F4A5C08A36910516 |
:10D8900044F48736910571F08836910509F462C029 |
:10D8A00027C18A36910509F414C18B36910509F414 |
:10D8B000E2C01EC18091D3098093000A8091D409EF |
:10D8C0008093020A8091D5098093010A8091D6093C |
:10D8D000809386018091D7098093040A8091D809AA |
:10D8E000809398018091D9098093E4048091DA09AA |
:10D8F0008093D0048091DC038823F9F02091DB0928 |
:10D900003091DC0937FD19C03093200420931F04A7 |
:10D910009091BA07992389F08FE0989FC001112454 |
:10D92000281B390BC90188599E4F68E671E00E9497 |
:10D93000C0919093200480931F042091DB043091C8 |
:10D94000DC048091DD099091DE09280F391F37FF33 |
:10D9500002C02F5F3F4F359527953093DC0420930D |
:10D96000DB04C6C08091D309809395098091D409C6 |
:10D97000809396098091D509809397098091D60963 |
:10D98000809398098091D709809399098091DE0648 |
:10D990009091D809892B8093DE069091DF069370D1 |
:10D9A0008091D9098C70982B9093DF068091DA09C9 |
:10D9B0008093E2048091DB0980938B018091DC09E4 |
:10D9C0008093030A8091DD098093DE048091DE0953 |
:10D9D0008093DD048DC08091D30980938B09809161 |
:10D9E000D40980938C098091D50980938D09809109 |
:10D9F000D60980938E098091D7099091D809909388 |
:10DA0000900980938F098091D9099091DA099093B8 |
:10DA10009209809391098091DB09992787FD909560 |
:10DA20009093EA088093E9088091DC098093F603DB |
:10DA30008091DD099091DE099C01442737FD4095D6 |
:10DA4000542FDA01C90163E0880F991FAA1FBB1F79 |
:10DA50006A95D1F7820F931FA41FB51F820F931FE2 |
:10DA6000A41FB51F8093F7039093F803A093F903C5 |
:10DA7000B093FA033DC08091D3098093E104809173 |
:10DA8000D4098093E0048091D5098093DF049091BC |
:10DA9000D609992349F080919D01882319F081517D |
:10DAA000833010F490939D018091D70980930F05E6 |
:10DAB0008091D80980930E058091D9099091DA0957 |
:10DAC00090930C0580930B058091DB0980930D05E5 |
:10DAD0000FC08091AA07863059F40E94C87308C00D |
:10DAE0001092D4041092D3041092D2041092D10454 |
:10DAF0001F910F91FF90EF90089580918A098823DC |
:10DB000009F43BC045988BE999E090939409809380 |
:10DB100093099091E304E92FFF27E457FE4F9F5F9D |
:10DB20009093E304808180939D099B3010F01092C4 |
:10DB3000E30410928A090E94326981E080939A0975 |
:10DB400000000000000000000000000000000000D5 |
:10DB500000000000000000000000000000000000C5 |
:10DB600000000000000000000000000000000000B5 |
:10DB700080919B098093BC098EBD089587B18C600C |
:10DB800087B9429843981092E90480E880939B01FA |
:10DB90001092E80480939A0108958091EE048150D8 |
:10DBA0008093EE048F3F09F055C189E08093EE0425 |
:10DBB0008091E9089091EA0881589F4F39F080914F |
:10DBC000E9089091EA0881588093F3048091CF038B |
:10DBD000992780739070892B21F48091550580FFDF |
:10DBE0001DC08091D107882351F08091F1048823D2 |
:10DBF00019F484E08093E90481E08093F10480913A |
:10DC0000D2078823B9F08091F204882319F484E0C4 |
:10DC10008093E80481E08093F2040CC01092F10438 |
:10DC20001092F2048091CD078093EF048091CF078A |
:10DC30008093F0048091F104882309F073C08091EF |
:10DC4000EF07282F332724FF07C08091060488237D |
:10DC500019F425FD80C081C09091CE07983F48F00F |
:10DC600080914F098D3D28F08091EF0488236CF05E |
:10DC70000AC0983F68F080914F09853049F480913F |
:10DC8000EF0487FF02C0429801C0429A81E032C08F |
:10DC90008091E90481508093E9048F3F09F05EC0D0 |
:10DCA0008091F20785FF29C09091F304892F869512 |
:10DCB0008093E904992351F48091EF0487FF02C017 |
:10DCC000429801C0429A10929B0148C080919B01EA |
:10DCD0009091EF04882341F48093F30480E88093CB |
:10DCE0009B019923D4F137C0982311F0429A01C0C7 |
:10DCF0004298869580939B0131C080914F0986950B |
:10DD00008093E90480919B01813021F41092F30407 |
:10DD100080E801C0869580939B0180919B01909142 |
:10DD2000EF0417C08091E90481508093E9048F3F8C |
:10DD3000A9F489E08093E90480919B01813011F47A |
:10DD400080E801C0869580939B0180919B01909112 |
:10DD5000D107892311F0429A01C042988091F204C0 |
:10DD6000882309F043C09091EF0797FF07C0809187 |
:10DD70000604882319F496FD52C053C09091D00731 |
:10DD8000983F48F0809177098D3D28F08091F0040C |
:10DD900088236CF00AC0983F78F08091770985302D |
:10DDA00059F48091F00487FF02C0439801C0439A60 |
:10DDB00081E080939A0136C08091E804815080937D |
:10DDC000E8048F3F79F58091770986958093E80480 |
:10DDD00080919A01813011F480E801C0869580938A |
:10DDE0009A0180919A019091F00417C08091E80403 |
:10DDF00081508093E8048F3FA9F489E08093E80480 |
:10DE000080919A01813011F480E801C08695809359 |
:10DE10009A0180919A019091D207892311F0439A37 |
:10DE200001C04398429B04C08091CE03886003C028 |
:10DE30008091CE03877F8093CE03439B06C0809161 |
:10DE4000CE0380618093CE0308958091CE038F7EB0 |
:10DE50008093CE0308950F931F93CF93DF93482FA2 |
:10DE6000EB0180910704E42FFF27843BD8F08F015A |
:10DE70000E0F1F1FF801E954F74F808191819B011C |
:10DE8000281B390BC90163E070E00E94C091CB01EF |
:10DE9000880F991F860F971F0551174FF80191831F |
:10DEA000808306C0EE0FFF1FE551F74F11821082ED |
:10DEB000E42FFF27EE0FFF1FE954F74FD183C083F4 |
:10DEC000DF91CF911F910F9108954FB724E130E07A |
:10DED000F8948091C9008F778093C9008091C90020 |
:10DEE0008F7B8093C9008091C9008F7D8093C9008A |
:10DEF0005A9A52985B9A539A832F99278093CD0010 |
:10DF00002093CC008091C80082608093C80080E19B |
:10DF10008093C9008091CA008F778093CA00809156 |
:10DF2000CA008F7B8093CA008091CA008F7D809346 |
:10DF3000CA008091CA008F7E8093CA008091CA0077 |
:10DF4000877F8093CA008091C9008B7F8093C9002E |
:10DF50008091CA0084608093CA008091CA00826068 |
:10DF60008093CA008091C80087FF03C08091CE00D3 |
:10DF7000F9CF8091C90080688093C9004FBF089590 |
:10DF8000EF92FF920F931F93CF93DF93482F00E000 |
:10DF900010E080919C01813061F410929C0184E436 |
:10DFA0008093F6041092F8041092F7041092F9048A |
:10DFB00003C28091F604882319F421E030E001C007 |
:10DFC00098019091F704992371F4232B11F081E0CB |
:10DFD00010C084E48093F6049093F8049093F704BF |
:10DFE0009093F904D2C1913069F4232B09F0C3C195 |
:10DFF00082E08093F7048091F8048F5F8093F804A7 |
:10E0000083E0C1C19230D1F4232B09F0B4C183E085 |
:10E010008093F6044093F9049091F804923039F417 |
:10E020001092FA0447FF03C081E08093FA0483E072 |
:10E030008093F7049F5F9093F804A7C1933009F091 |
:10E040009AC1232B09F097C19093F60482E0809344 |
:10E05000F7048091F8048F5F8093F8042091F9040D |
:10E06000822F9927782F6627842F9927682B792B61 |
:10E070008091AA07813051F47370CB018050924097 |
:10E0800063E070E00E94C091EB0119C0823069F436 |
:10E090007770CB018050944066E070E00E94C091A0 |
:10E0A000EB012695269526950CC0EB01D370C8563A |
:10E0B000D140CE01D7FD0196EC01D595C7952695A7 |
:10E0C0002695022F11270F7010700F5F1F4F0D3014 |
:10E0D000110508F049C10230110519F404E010E0FF |
:10E0E00005C00430110511F402E010E0D801A00FC2 |
:10E0F000B11FFD01E954F74F808191819E01281BDA |
:10E10000390BC90137FF03C0909581959F4F069742 |
:10E1100004F5E091EC07EE2351F0FF27EE0FFF1F0F |
:10E12000E954F74F808191818436910594F4809170 |
:10E130000704883C30F480910704865F80930704CD |
:10E1400008C088EC8093070480916F008F7D8093D6 |
:10E150006F00A954B74F8D919C91BC01660F771F3A |
:10E16000680F791F6C0F7D1F77FF02C06D5F7F4FB7 |
:10E170007B01F594E794F594E794CE0101968E1512 |
:10E180009F0524F40894E108F10808C0CE01019726 |
:10E19000E816F9061CF40894E11CF11C0630110580 |
:10E1A00009F0CEC0C536D1050CF4A5C09091F50498 |
:10E1B000E92FFF27EB5FF54FE081ED3729F48091E0 |
:10E1C000F40480958093F404963061F48091F40413 |
:10E1D000882311F0E338B9F0882309F088C0ED37BF |
:10E1E00091F085C0993009F082C08091F4048823B1 |
:10E1F00029F480910E0A833831F079C080910E0A9B |
:10E200008D3709F074C08091060A8D3739F48091FA |
:10E21000070A833899F463E87FEF0DC0833871F4FF |
:10E220008091070A833819F460E070E004C08D37EC |
:10E2300029F46DE770E085E00E942B6F8091080A59 |
:10E24000992787FD9095BC0186E00E942B6F8091F5 |
:10E25000090A992787FD9095BC018BE00E942B6FDE |
:10E2600080910A0A992787FD9095BC018CE00E9455 |
:10E270002B6F8091F5048930D1F580910C0A8D3790 |
:10E2800049F48091C7089091C8080596BC0188E0C0 |
:10E290000E942B6F80910D0A8D3749F48091C70839 |
:10E2A0009091C8080597BC0188E00E942B6F80916F |
:10E2B000C7089091C80883589F4F1CF483E89FEFCC |
:10E2C00009C08091C7089091C8088E37910534F035 |
:10E2D0008DE790E09093C8088093C70880910B0A5F |
:10E2E000992787FD9095BC018AE00E942B6F1092C0 |
:10E2F000F5041092F404CA30D1055CF48091F50461 |
:10E300008F5F8093F504E82FFF27EB5FF54F83E8DD |
:10E3100080838091F5048A3011F41092F5048FEF18 |
:10E32000CC39D8076CF48091F504E82FFF27EB5F18 |
:10E33000F54F8DE780838091F40480958093F404F9 |
:10E340000530110518F4B701802F0BC005301105F9 |
:10E3500019F4BE0187E005C007301105B1F4BE0114 |
:10E3600089E00E942B6F11C00231110570F081E02D |
:10E3700080939C010AC081E080939C011092F80474 |
:10E380001092FA0484E48093F6048091F8048031BA |
:10E3900098F08091FA04882331F480919C018823BD |
:10E3A00011F480933A011092F8041092FA0410923A |
:10E3B000F70484E48093F604E6E0CDB7DEB70C946E |
:10E3C0003892CF93FC0197FF05C0CFEFF095E19510 |
:10E3D000FF4F01C0C1E028E631E0CF01B9010E9442 |
:10E3E000C091FC018B35910554F08B5590408A35D6 |
:10E3F000910538F484EB90E08E1B9F0BFC0141E00B |
:10E400000DC0CF01855B90408A35910518F4E45B1F |
:10E41000F04003C02E1B3F0BF9014FEFEE0FFF1F23 |
:10E42000E85BF64F259134918C2F992787FD9095C5 |
:10E43000289FB001299F700D389F700D1124842FE3 |
:10E44000992787FD9095689FA001699F500D789F3F |
:10E45000500D1124CA01CF9108952AE530E0281B00 |
:10E46000390BC9010E94E171089508950895089536 |
:10E470000895089580E090E008951092110A109296 |
:10E48000100A1092150A1092140A1092130A109290 |
:10E49000120A1092160A8AE090E00E946F19909377 |
:10E4A000FC048093FB040895CF93DF938091FB04D9 |
:10E4B0009091FC040E947819882309F4AFC08091E0 |
:10E4C000FB049091FC040A969093FC048093FB0457 |
:10E4D000E0E0F0E09F0190E05FEFA6E5B8E04BE000 |
:10E4E000ED018B8187FF0BC09F5F8D81E80FF11DD0 |
:10E4F0008981280F311D8E81851708F4582F4150CE |
:10E50000189647FFEDCF5093160A232B41F5209123 |
:10E510000105309102054091030550910405BB2788 |
:10E52000A52F942F832F909300058093FF04AA2793 |
:10E53000BB27281B390B4A0B5B0BCF01AA27BB2734 |
:10E54000280F391F4A1F5B1F2093010530930205D6 |
:10E550004093030550930405E5E0F0E013C02091DB |
:10E56000FF04309100052E173F0718F4E21BF30B50 |
:10E5700002C0E0E0F0E0892F9927880F991FE80F8B |
:10E58000F91F3596F093110AE093100AEF3FF10559 |
:10E5900078F480911F01909120018E9F90018F9FB0 |
:10E5A000300D9E9F300D1124C90164E670E013C048 |
:10E5B000CF01969587959695879520911F0130916B |
:10E5C0002001289FA001299F500D389F500D112434 |
:10E5D000CA0169E170E00E94AC917093130A6093E4 |
:10E5E000120A2091FD043091FE042E0F3F1F30933C |
:10E5F000FE042093FD045EE02131350778F0809120 |
:10E60000140A9091150A01969093150A8093140AA2 |
:10E6100020513E403093FE042093FD04DF91CF91C2 |
:10E62000089530911005E32FFF2783E0EE0FFF1FC1 |
:10E630008A95E1F7EA5AF74F2781422F552747FD80 |
:10E640005095809111059927841795072CF42093F4 |
:10E650001105309313050AC0222341F08091120561 |
:10E6600099274817590714F420931205832F8F5FB9 |
:10E67000809310058D30D0F0109210058091120516 |
:10E680008F3F19F08093060502C010920605809115 |
:10E6900011058093070580911305809305058FEF81 |
:10E6A000809312051092110510921305089595E1BB |
:10E6B000899F802D11240E94C28B8AE89CE09F9341 |
:10E6C0008F9384E99BE89F938F93E0913B05F091B2 |
:10E6D0003C0509950F900F900F900F900895CF93E0 |
:10E6E000C0E020919D0120930A058091CF0385FF12 |
:10E6F00002C0C0E123C09091E2049923B1F080915F |
:10E700000604882349F4E92FFF27EE0FFF1FE1508D |
:10E71000F64F8491882349F4E92FFF27EE0FFF1F5E |
:10E72000E250F64FC491CC2349F48091F20786FD64 |
:10E7300003C010929D0104C0C22F02C0C0930A05FD |
:10E74000809114058C1771F4809115059091160530 |
:10E750000E947819882319F480E090E017C088E8B7 |
:10E7600093E102C080ED97E00E946F199093160527 |
:10E7700080931505CC2331F080919D01C81711F4C9 |
:10E7800010929D01C09314058C2F9927CF91089565 |
:10E7900040E050E030E08091DE0999278A38910509 |
:10E7A00089F08B38910524F48938910541F013C024 |
:10E7B0008D38910569F08E38910539F00CC04FE61F |
:10E7C0005AE008C047E45BE005C047E15AE002C0F8 |
:10E7D00043E45AE03CE29091D30920E08091D409CF |
:10E7E000281770F4931760F4DA01A90FB11DE22F16 |
:10E7F000FF27E054F64F85898C939F5F2F5FEECF04 |
:10E80000089520E335E780913B018B3211F08D3282 |
:10E81000F9F480919507282F33278091FB0390917D |
:10E82000FC03829FA001839F500D929F500D1124E5 |
:10E83000CA0163E070E00E94C091CB019B01205DA2 |
:10E840003A48C196C19708F03FC02EEF34E73CC06C |
:10E85000803229F58091CF0381FF36C020910805D1 |
:10E8600030910905205D3A4855E72133350748F0D6 |
:10E8700085E72439380718F420E335E702C0245629 |
:10E88000304045E720333407F8F454E72D3C350792 |
:10E8900018F020E335E718C02C593F4F15C08E35CE |
:10E8A00049F49091F6038AE0989F90011124205D2D |
:10E8B0003A480AC0863741F49091F6038AE0989F5F |
:10E8C000C0011124281B390BC9010895EF92FF9252 |
:10E8D0000F931F9399278A38910509F444C18B3807 |
:10E8E000910524F48938910551F0DEC28D389105E7 |
:10E8F00009F424C28E38910509F486C1D5C28091ED |
:10E90000010490910204A0910304B0910404BC019D |
:10E91000CD0124E630E040E050E00E94F591DA01BC |
:10E92000C9018C509E4F9093750A8093740A0E947F |
:10E93000017490937B0A80937A0A90937D0A809366 |
:10E940007C0A90937F0A80937E0A2091740A30910A |
:10E95000750A8091780A9091790A2817390724F46A |
:10E960003093790A2093780A8091760A9091770AF9 |
:10E970008217930724F43093770A2093760A109233 |
:10E98000710A8FE69AE0909327058093260580917F |
:10E990003B018093950A8091CE0380FF02C083E4FF |
:10E9A00001C080E28093960A2091E204222309F1BB |
:10E9B000822F6AE00E94A091805D8093800A822F5E |
:10E9C0000E94A091892F805D8093810A8AE38093C1 |
:10E9D000820A81E1289FF0011124A3E8BAE0E25CF9 |
:10E9E000F54F9FE084918D939150319697FFFACF28 |
:10E9F00058C28091CF0385FF0CC0A0E8BAE0EEE5D5 |
:10EA0000FCE094E184918D939150319697FFFACF79 |
:10EA100048C230910E05332309F499C087E58093ED |
:10EA2000800A80E58093810A40E24093820A209127 |
:10EA30000F05822F6AE00E94A091805D8093830A77 |
:10EA4000822F0E94A091892F805D8093840A8FE29B |
:10EA50008093850A832F0E94A091805D8093860A0F |
:10EA6000832F0E94A091892F805D8093870A409315 |
:10EA7000880A20910B0530910C0583E0293E380768 |
:10EA800080F0C90168EE73E00E94AC91CB01805D1B |
:10EA90008093890AC90168EE73E00E94AC919C01E1 |
:10EAA00002C04093890A2536310580F0C90164E629 |
:10EAB00070E00E94AC91CB01805D80938A0AC9010D |
:10EAC00064E670E00E94AC919C0103C080E28093F8 |
:10EAD0008A0AC9016AE070E00E94AC91CB01805DB6 |
:10EAE00080938B0AC9016AE070E00E94AC91805D5E |
:10EAF00080938C0A8DE680938D0A80E280938E0A43 |
:10EB000020910D05253660F0822F64E60E94A091C9 |
:10EB1000805D80938F0A822F0E94A091292F02C0CE |
:10EB200080938F0A822F6AE00E94A091805D80937B |
:10EB3000900A822F0E94A091892F805D8093910A74 |
:10EB400083E78093920A80E28093930AAAC1A0E8A7 |
:10EB5000BAE0E4E7FCE094E184918D939150319622 |
:10EB600097FFFACF9EC18091010490910204A09179 |
:10EB70000304B0910404BC01CD0124E630E040E080 |
:10EB800050E00E94F591DA01C9018C509E4F90939C |
:10EB90005D0B80935C0B0E94017490935F0B8093DC |
:10EBA0005E0B88E78093600B80918C098093610BEA |
:10EBB0000E946F738093490B80918B0981FF02C083 |
:10EBC00084E407C080918D09833011F480E201C094 |
:10EBD00081E28093620B87E49BE09093270580930A |
:10EBE000260580918B0180936E0B8091620B809340 |
:10EBF000700B809191099091920997FD01969595DE |
:10EC000087958093630B4DC10E941173809101041D |
:10EC100090910204A0910304B0910404BC01CD01C1 |
:10EC200024E630E040E050E00E94F591DA01C901AD |
:10EC30008C509E4F9093320A8093310A80911F012D |
:10EC40009091200190932C0A80932B0A80911F01B0 |
:10EC50009091200190932E0A80932D0A80912D0986 |
:10EC600090912E0997FD01969595879580931D0AA1 |
:10EC70008093240A209191093091920937FF02C0B4 |
:10EC80002F5F3F4F359527952093220A80918F095A |
:10EC90009091900964E170E00E94AC916093230A26 |
:10ECA0002093290A60932A0A0E94017490933A0AD9 |
:10ECB0008093390A88E780933B0A80911F019091E5 |
:10ECC00020019093360A8093350A809106058C5E68 |
:10ECD00080932F0A809107058C5E8093300A809183 |
:10ECE000140A9091150A6AE070E00E94AC9170934A |
:10ECF000380A6093370A1092190A8091100A90918D |
:10ED0000110A9093340A8093330A87E19AE0909332 |
:10ED10002705809326052091D6023091D702C9019C |
:10ED20006CE370E00E94AC9160933E0AC9016CE311 |
:10ED300070E00E94AC9180933F0AB3C00E941173AF |
:10ED400080918F099091900964E670E00E94AC91E7 |
:10ED50007093590A6093580A80912D0990912E0959 |
:10ED600097FD0196959587958093490A8091910921 |
:10ED70009091920997FD01969595879580934E0AFB |
:10ED800080910001482F55279A012B5F3F4F8091BA |
:10ED90001F01909120012817390784F480911F01E9 |
:10EDA00090912001841B950B9C01220F331F280F8B |
:10EDB000391F822F82518093550A02C01092550A42 |
:10EDC000E0900104F0900204009103041091040407 |
:10EDD000C801B70124E630E040E050E00E94F59120 |
:10EDE0003093570A2093560A37FF04C01092570AEF |
:10EDF0001092560AC801B70124E630E040E050E026 |
:10EE00000E94F591DA01C9018C509E4F90935B0AE4 |
:10EE100080935A0A80911F01909120019093500A8B |
:10EE200080934F0A80911F01909120019093520A84 |
:10EE30008093510A0E94017490935D0A80935C0A4A |
:10EE400088E780935E0A80911F0190912001909342 |
:10EE5000620A8093610A809106058C5E8093530A52 |
:10EE6000809107058C5E8093540A8091140A9091DA |
:10EE7000150A6AE070E00E94AC917093640A609396 |
:10EE8000630A1092450A8091100A9091110A90939A |
:10EE9000600A80935F0A83E49AE090932705809349 |
:10EEA00026052CE230E002C020E030E0C9011F91CD |
:10EEB0000F91FF90EF900895EF92FF920F931F93A1 |
:10EEC000CF93DF9380910805909109059C0153E051 |
:10EED000220F331F5A95E1F7281B390B8091170336 |
:10EEE00090911803280F391F37FF02C0295F3F4F49 |
:10EEF00043E0359527954A95E1F73093090520932E |
:10EF0000080590911805992309F020C380911705F1 |
:10EF1000282F3327442755278F5F80931705F90142 |
:10EF20002131310508F00FC3E857FF4F0C94479289 |
:10EF30008091CF0385FF2AC080E00E94C28B809120 |
:10EF40001F01909120016AE070E00E94C0919F93A0 |
:10EF50008F9380911F01909120016AE070E00E94E0 |
:10EF6000C0917F936F9380EA9CE09F938F9385EB92 |
:10EF70009BE89F938F93E0913B05F0913C050995A9 |
:10EF80002DB73EB7285F3F4F2DBF28C080E00E94BD |
:10EF9000C28B80911F01909120016AE070E00E9475 |
:10EFA000C0919F938F9380911F01909120016AE0FF |
:10EFB00070E00E94C0917F936F938DEA9CE09F93D5 |
:10EFC0008F9384E99BE89F938F93E0913B05F091A9 |
:10EFD0003C0509958DB79EB708968DBF8091700945 |
:10EFE00080FF39C080911E048823E9F08AE00E94E6 |
:10EFF000C28B80913B0199279F938F93809101044D |
:10F0000090910204A0910304B0910404BC01CD01CD |
:10F0100024E630E040E050E00E94F5913F932F93CA |
:10F020008AEB9CE099C68AE00E94C28B8091010421 |
:10F0300090910204A0910304B0910404BC01CD019D |
:10F0400024E630E040E050E00E94F5913F932F939A |
:10F0500086EC9CE0ADC78AE00E94C28B81ED9CE00B |
:10F060009F938F9384E99BE80C9409818091CF034F |
:10F0700085FF2AC085E10E94C28B8091D6029091C3 |
:10F08000D7026CE370E00E94AC919F938F938091C4 |
:10F09000D6029091D7026CE370E00E94AC917F930E |
:10F0A0006F938BED9CE09F938F9385EB9BE89F93F1 |
:10F0B0008F93E0913B05F0913C0509952DB73EB744 |
:10F0C000285F3F4F2DBF28C085E10E94C28B8091F1 |
:10F0D000D6029091D7026CE370E00E94AC919F93AE |
:10F0E0008F938091D6029091D7026CE370E00E94DA |
:10F0F000AC917F936F9388EE9CE09F938F9384E90C |
:10F100009BE89F938F93E0913B05F0913C05099517 |
:10F110008DB79EB708968DBF8FE10E94C28B80E6A7 |
:10F1200090E09F938F9380912D0990912E099F934A |
:10F130008F9385EF9CE09F938F93C4E9DBE8DF9387 |
:10F14000CF93E0913B05F0913C0509958091CE036A |
:10F150002DB73EB7285F3F4F2DBF80FF06C089E225 |
:10F160000E94C28B80E09DE073C389E20E94C28B43 |
:10F1700082E09DE0B9C68091CF0385FF1BC08AE283 |
:10F180000E94C28B8091140A9091150A9F938F93CD |
:10F1900084E09DE09F938F9385EB9BE89F938F93F3 |
:10F1A000E0913B05F0913C0509958DB79EB7069619 |
:10F1B0008DBF1BC08AE20E94C28B8091140A90917D |
:10F1C000150A9F938F938CE09DE09F938F9384E922 |
:10F1D0009BE89F938F93E0913B05F0913C05099547 |
:10F1E0002DB73EB72A5F3F4F2DBF86E30E94C28BEB |
:10F1F0008091100A9091110A6AE070E00E94AC912F |
:10F200009F938F938091100A9091110A6AE070E0A9 |
:10F210000E94AC917F936F9384E19DE09F938F93C5 |
:10F2200084E99BE89F938F93E0913B05F0913C0527 |
:10F2300009958DB79EB70896C9C689E00E94C28B12 |
:10F2400080E29DE09F938F9304E91BE81F930F9347 |
:10F25000E0913B05F0913C0509958EE10E94C28B3F |
:10F260000F900F900F900F9082E29DE09F938F93ED |
:10F270001F930F93E0913B05F0913C05099583E3C3 |
:10F280000E94C28B0F900F900F900F9084E29DE030 |
:10F290009F938F931F930F93E0913B05F0913C0553 |
:10F2A00009958FE30E94C28B0F900F900F900F90E3 |
:10F2B00086E29DE09F938F931F930F93E0913B0510 |
:10F2C000F0913C0509958EE70E94C28B0F900F903C |
:10F2D0000F900F908CE39DE09F938F931F930F935C |
:10F2E0009AC780919701882309F462C08DE50E9436 |
:10F2F000C28B82E59DE09F938F93C4E9DBE8DF93A7 |
:10F30000CF93E0913B05F0913C05099584E50E947F |
:10F31000C28B0F900F900F900F9080918C099927BE |
:10F320009F938F9384E59DE09F938F93DF93CF937B |
:10F33000E0913B05F0913C0509958EE50E94C28B5A |
:10F340002DB73EB72A5F3F4F2DBF80918F09909117 |
:10F3500090096AE070E00E94AC917F936F938DE515 |
:10F360009DE09F938F93DF93CF93E0913B05F091C6 |
:10F370003C0509958DB79EB706968DBF80918D0986 |
:10F38000833081F480918B0981FF06C08BE50E9458 |
:10F39000C28B87E69DE0A8C58BE50E94C28B8AE6FA |
:10F3A0009DE0A2C58BE50E94C28B8DE69DE02DC736 |
:10F3B00084E0D3C380919701882309F47AC08091B7 |
:10F3C0001A0594E9E92E9BE8F92E882309F44BC02D |
:10F3D00089E60E94C28B8091E10499279F938F93C5 |
:10F3E00080E79DE09F938F93FF92EF92E0913B0522 |
:10F3F000F0913C05099585E70E94C28B2DB73EB779 |
:10F400002A5F3F4F2DBF80918B0199279F938F9348 |
:10F4100000E610E01F930F9380919109909192095B |
:10F420009F938F938BE79DE09F938F93FF92EF9233 |
:10F43000E0913B05F0913C05099582E70E94C28B63 |
:10F440008DB79EB70A968DBF8091DF0499279F9351 |
:10F450008F931F930F938091E00499279F938F932D |
:10F4600087E89DE073C689E60E94C28B80918B017C |
:10F4700099279F938F9380E690E09F938F9380913D |
:10F480009109909192099F938F9380918E0999276A |
:10F490009F938F9387E99DE09F938F93FF92EF92C5 |
:10F4A000E0913B05F0913C0509958DB79EB70C9610 |
:10F4B0008DC585E052C39091E2049923D1F08091EB |
:10F4C0002305882381F0903270F487E00E945773FF |
:10F4D00083E90E94C28B8091E20499279F938F93C6 |
:10F4E00080EB9DE0A4C383E90E94C28B8BEB9DE07F |
:10F4F000B3C38091CF0304E9E02E0BE8F02E85FF23 |
:10F5000006C084E90E94C28B81EC9DE0DAC383E9E6 |
:10F510000E94C28B84ED9DE0D4C38091AC0B8630F9 |
:10F5200059F480911A05882319F010921A059AC689 |
:10F5300081E080931A0596C6883009F093C60E9430 |
:10F54000C78B81E0DBC39093170594C6913009F017 |
:10F55000E0C380911705282F3327442755278F5F55 |
:10F5600080931705F9012131310508F07EC6E75671 |
:10F57000FF4F0C9447928091CF0385FF43C080E0FA |
:10F580000E94C28B8091140A9091150A9F938F93C9 |
:10F5900080911F01909120016AE070E00E94C0916B |
:10F5A0009F938F9380911F01909120016AE070E0FA |
:10F5B0000E94C0917F936F938091D6029091D70261 |
:10F5C0006CE370E00E94AC919F938F938091D60280 |
:10F5D0009091D7026CE370E00E94AC917F936F939F |
:10F5E0008AEE9DE09F938F9385EB9BE89F938F938B |
:10F5F000E0913B05F0913C0509952DB73EB7225FA0 |
:10F600003F4FB1C580E00E94C28B8091140A909157 |
:10F61000150A9F938F9380911F01909120016AE0BA |
:10F6200070E00E94C0919F938F9380911F019091F1 |
:10F6300020016AE070E00E94C0917F936F938091F7 |
:10F64000D6029091D7026CE370E00E94AC919F9338 |
:10F650008F938091D6029091D7026CE370E00E9464 |
:10F66000AC917F936F9385E09EE0C2C285E10E94DA |
:10F67000C28B80E690E09F938F9380918801909158 |
:10F6800089019F938F9380E29EE09F938F93C4E9BB |
:10F69000DBE8DF93CF93E0913B05F0913C050995C2 |
:10F6A000809170092DB73EB7285F3F4F2DBF80FF77 |
:10F6B00051C080911E04882339F18FE10E94C28BD2 |
:10F6C0008091010490910204A0910304B09104047C |
:10F6D000BC01CD0124E630E040E050E00E94F5910D |
:10F6E0003F932F938AE29EE09F938F9384EA9BE857 |
:10F6F0009F938F93E0913B05F0913C0509958DB761 |
:10F700009EB706968DBF38C08FE10E94C28B809154 |
:10F71000010490910204A0910304B0910404BC017F |
:10F72000CD0124E630E040E050E00E94F5913F93A7 |
:10F730002F9383E39EE09F938F93DF93CF93E0918A |
:10F740003B05F0913C0509952DB73EB72A5F3F4F29 |
:10F750002DBF12C08FE10E94C28B8CE39EE09F936D |
:10F760008F93DF93CF93E0913B05F0913C05099592 |
:10F770000F900F900F900F9089E20E94C28B8091A2 |
:10F780003B0199279F938F9386E49EE09F938F93ED |
:10F79000DF93CF9313C4809197018823F9F08BE214 |
:10F7A0000E94C28B80918B0199279F938F938091A8 |
:10F7B0008F09909190096AE070E00E94AC917F936C |
:10F7C0006F9380E690E09F938F9380919109909141 |
:10F7D00092099F938F9389E49EE058C182E0BDC156 |
:10F7E0008FE30E94C28B8091120A9091130A9F931B |
:10F7F0008F938091100A9091110A6AE070E00E9444 |
:10F80000AC919F938F938091100A9091110A6AE0B6 |
:10F8100070E00E94AC917F936F9380E69EE09F938F |
:10F820008F93C4E9DBE8DF93CF93E0913B05F09140 |
:10F830003C0509958091CE032DB73EB7265F3F4F1B |
:10F840002DBF80FF0AC082E50E94C28B84E79EE044 |
:10F850009F938F9384EA9BE8DCC482E50E94C28B6D |
:10F8600087E79EE041C38091970114E9E12E1BE8F0 |
:10F87000F12E882309F449C084E50E94C28B80914F |
:10F880008C0999279F938F9380918E0999279F9335 |
:10F890008F938AE79EE09F938F93E701FF92EF9209 |
:10F8A000E0913B05F0913C0509958DB79EB7089610 |
:10F8B0008DBF80918D09833051F484E60E94C28B04 |
:10F8C0008DE89EE09F938F93FF92EF920BC084E6AA |
:10F8D0000E94C28B83E99EE09F938F9385EB9BE808 |
:10F8E0009F938F93E0913B05F0913C0509950F9014 |
:10F8F0000F900F900F9080918B0981FFBBC484E61D |
:10F900000E94C28B89E99EE0EFC284E50E94C28B0F |
:10F910008FE99EE0D6C180911905C4E9EC2ECBE8B1 |
:10F92000FC2E882309F450C089E60E94C28B809186 |
:10F9300073086AE00E94A091892F99279F938F9363 |
:10F94000809173080E94A09199279F938F93809133 |
:10F950006B080E94A091892F99279F938F93809184 |
:10F960006B080E94A09199279F938F9380916308C1 |
:10F970000E94A091892F99279F938F93809163086C |
:10F980000E94A09199279F938F9380915B080E947A |
:10F99000A091892F99279F938F9380915B080E9454 |
:10F9A000A09199279F938F9385EB9EE09F938F93D0 |
:10F9B000FF92EF92E0913B05F0913C0509952DB740 |
:10F9C0003EB72C5E3F4FCFC389E60E94C28B80E6D4 |
:10F9D00090E09F938F9380917508992787FD90956C |
:10F9E0009F938F9380916D08992787FD90959F93A2 |
:10F9F0008F9380916508992787FD90959F938F93AA |
:10FA000080915D08992787FD90959F938F9382ED54 |
:10FA10009EE09F938F93FF92EF92E0913B05F091D0 |
:10FA20003C0509958DB79EB70E96D0C280911905F9 |
:10FA300090918207882309F48DC0943009F48CC01A |
:10FA40009630A1F58EE70E94C28B809183086AE010 |
:10FA50000E94A091892F99279F938F93809183086B |
:10FA60000E94A09199279F938F9380917B080E9479 |
:10FA7000A091892F99279F938F9380917B080E9453 |
:10FA8000A09199279F938F9385EE9EE09F938F93EC |
:10FA900084E99BE89F938F93E0913B05F0913C05AF |
:10FAA00009952DB73EB7245F3F4F5DC3973008F4EB |
:10FAB000E1C38EE70E94C28B809193086AE00E94A6 |
:10FAC000A091892F99279F938F93809193080E94EB |
:10FAD000A09199279F938F9380918B080E94A0916A |
:10FAE000892F99279F938F9380918B080E94A091D3 |
:10FAF00099279F938F93809183080E94A091892FCB |
:10FB000099279F938F93809183080E94A0919927B2 |
:10FB10009F938F9380917B080E94A091892F9927B2 |
:10FB20009F938F9380917B080E94A09199279F9328 |
:10FB30008F9384EF9EE09F938F9384E99BE89F933C |
:10FB40008F93E0913B05F0913C0509958DB79EB7E9 |
:10FB500044963CC2943021F486E00E9457738AC3D5 |
:10FB60009630F1F48EE70E94C28B80E690E09F937E |
:10FB70008F9380918508992787FD90959F938F9308 |
:10FB800080917D08992787FD90959F938F9381E1C0 |
:10FB90009FE09F938F9384E99BE89F938F93DAC2B2 |
:10FBA000973008F467C38EE70E94C28B80E690E02E |
:10FBB0009F938F9380919508992787FD90959F93A8 |
:10FBC0008F9380918D08992787FD90959F938F93B0 |
:10FBD00080918508992787FD90959F938F938091B9 |
:10FBE0007D08992787FD90959F938F9384E29FE0EE |
:10FBF0009F938F9384E99BE89F938F930ECF90916F |
:10FC0000E204992309F44AC0809123058823F9F07E |
:10FC10009032E8F487E00E94577383E90E94C28B18 |
:10FC20008091E20499279F938F9387E39FE09F93AE |
:10FC30008F9384EA9BE89F938F93E0913B05F0912B |
:10FC40003C0509952DB73EB72A5F3F4F8CC283E92B |
:10FC50000E94C28B82E49FE09F938F9304E91BE88C |
:10FC60001F930F93E0913B05F0913C0509951F927E |
:10FC70001F929091E20481E1989FC0011124825C5F |
:10FC8000954F9F938F931F930F93E0913B05F091B6 |
:10FC90003C0509958DB79EB70A9698C18091CF0310 |
:10FCA000B4E9EB2EBBE8FB2E85FF06C084E90E9479 |
:10FCB000C28B88E49FE005C083E90E94C28B8BE57C |
:10FCC0009FE09F938F93FF92EF92A5C28091AC0B20 |
:10FCD000863079F480911905882319F0109219055E |
:10FCE00003C081E08093190585E00E94577386E088 |
:10FCF000AEC2883031F40E94C78B82E08093180531 |
:10FD0000AFC2813009F0AEC20E94C78B10921805B5 |
:10FD1000A7C2923009F0ACC280911705282F332773 |
:10FD2000442755278F5F80931705F901213131054D |
:10FD300008F09BC2E655FF4F0C94479280E00E946A |
:10FD4000C28B83EF97E09F938F930E946330992734 |
:10FD50009F938F9381E79FE09F938F9384EA9BE823 |
:10FD60009F938F93E0913B05F0913C0509952DB74A |
:10FD70003EB7285F3F4FF7C185E10E94C28B81E00B |
:10FD800098E09F938F93809100016AE00E94A09178 |
:10FD9000892F99279F938F93809100010E94A091B2 |
:10FDA00099279F938F9380E89FE09F938F9384E997 |
:10FDB0009BE89F938F93E0913B05F0913C0509955B |
:10FDC00069CF8AE20E94C28B81E99FE09F938F9363 |
:10FDD000C4E9DBE8DF93CF93E0913B05F0913C056C |
:10FDE0000995809170090F900F900F900F9080FFF0 |
:10FDF00041C0809190079091730181FD0BC0892FC4 |
:10FE000099279F938F9386E99FE09F938F93DF932A |
:10FE1000CF9313CFE0913B05F0913C05933318F05D |
:10FE200080EA9FE002C087EA9FE09F938F93DF9371 |
:10FE3000CF9309950F900F900F900F9080915409D8 |
:10FE4000E0913B05F0913C059091730180FF0BC060 |
:10FE5000892F99279F938F938EEA9FE09F938F938B |
:10FE6000DF93CF93AFC0892F99279F938F9384EB14 |
:10FE70009FE0CFC08AEB9FE037C08FE30E94C28B28 |
:10FE800083EC9FE09F938F93C4E9DBE8DF93CF93EC |
:10FE9000E0913B05F0913C0509950F900F900F9074 |
:10FEA0000F908091E607882319F487EC9FE01CC02F |
:10FEB0008091DC03E0913B05F0913C05882319F02B |
:10FEC00080ED9FE002C087ED9FE09F938F93DF93CB |
:10FED000CF9309950F900F900F900F908091F1079D |
:10FEE00086FFC8C18EED9FE09F938F93DF93CF93E2 |
:10FEF00092C184E50E94C28B85EE9FE09F938F9311 |
:10FF0000C4E9DBE8DF93CF93E0913B05F0913C053A |
:10FF10000995809170090F900F900F900F9085FDBB |
:10FF200003C08AEE9FE011C08091D407883F10F48F |
:10FF3000E82F07C0EFEFF0E0E81BF109E85FFB4FA7 |
:10FF4000E081E23358F483EF9FE09F938F93DF9338 |
:10FF5000CF93E0913B05F0913C0516C0E43B18F0CF |
:10FF60008AEF9FE0F2CF8091F107E0913B05F0919D |
:10FF70003C0585FF03C081E090E102C088E090E18C |
:10FF80009F938F93DF93CF9309950F900F900F90CE |
:10FF90000F908091EA07882309F46CC18EE50E94D6 |
:10FFA000C28B8091EA0799279F938F938FE090E10E |
:10FFB0009F938F9384E99BE89F938F93E0913B05F8 |
:10FFC000F0913C0509958DB79EB706968DBF52C13D |
:10FFD00089E60E94C28B8AE190E19F938F93C4E9E6 |
:10FFE000DBE8DF93CF93E0913B05F0913C05099569 |
:10FFF0000F900F900F900F908091E907E0913B05D3 |
:020000021000EC |
:10000000F0913C05882351F099279F938F9384E2C8 |
:1000100090E19F938F93DF93CF9313CE88E290E18B |
:100020009F938F93DF93CF93FAC080911B05A4E930 |
:10003000EA2EABE8FA2E882309F053C08EE70E941F |
:10004000C28B8091670199279F938F938091850739 |
:10005000E82FFF27EE0FFF1FE954F74F80819181B2 |
:100060009F938F9380918407E82FFF27EE0FFF1F48 |
:10007000E954F74F808191819F938F938EE290E1B5 |
:100080009F938F93FF92EF92E0913B05F0913C0597 |
:10009000099583E90E94C28B8DB79EB70A968DBFE2 |
:1000A00080918707E82FFF27EE0FFF1FE954F74FD6 |
:1000B000808191819F938F9380918607E82FFF27FE |
:1000C000EE0FFF1FE954F74F8081918181589F4FB8 |
:1000D0009F938F9382E490E19F938F93FF92EF928F |
:1000E00041CE8EE70E94C28B80910A0499279F938C |
:1000F0008F938091090499279F938F93809108048F |
:1001000099279F938F9381E590E19F938F93FF921F |
:10011000EF92E0913B05F0913C05099583E90E943F |
:10012000C28B8DB79EB70A968DBF80910D0499271B |
:100130009F938F9380910C0499279F938F93809125 |
:100140000B0499279F938F9385E690E19F938F935C |
:10015000FF92EF92E0913B05F0913C0509952DB798 |
:100160003EB7265F3F4F2DBF85C080912305882372 |
:1001700009F480C08EE70E94C28B8091700986FDD1 |
:1001800011C089E790E19F938F9385EB9BE89F9344 |
:100190008F93E0913B05F0913C0509950F900F90EE |
:1001A0000F900F908091EF0799278F709070892B97 |
:1001B00089F088E890E19F938F9385EB9BE89F936C |
:1001C0008F93E0913B05F0913C0509950F900F90BE |
:1001D0000F900F908091700982FF11C082E990E129 |
:1001E0009F938F9385EB9BE89F938F93E0913B05C3 |
:1001F000F0913C0509950F900F900F900F90809112 |
:10020000700983FD37C087E990E19F938F9385EB59 |
:100210009BE89F938F93E0913B05F0913C050995F6 |
:100220000F900F900F900F9025C00091AC0B0630EF |
:1002300089F480911B05882319F010921B0503C0D7 |
:1002400081E080931B0586E00E94577387E00E943F |
:10025000577308C0013031F40E94C78B0093180512 |
:10026000109217051092AC0B05C01092170502C032 |
:1002700010921805E6E0CDB7DEB70C9438924FB770 |
:1002800028E130E0F8948091C9008F778093C9000D |
:100290008091C9008F7B8093C9008091C9008F7DB8 |
:1002A0008093C9005A9A52985B9A539A832F992740 |
:1002B0008093CD002093CC008091C8008260809311 |
:1002C000C80080E18093C9008091CA008F77809335 |
:1002D000CA008091CA008F7B8093CA008091CA00B7 |
:1002E0008091CA008F7E8093CA008091CA00886086 |
:1002F0008093CA008091C9008B7F8093C900809150 |
:10030000CA0084608093CA008091CA008260809392 |
:10031000CA008091C80087FF03C08091CE00F9CF4A |
:100320008091C90080688093C90080918A0B8460A5 |
:1003300080938A0B4FBF08959091F604992341F45E |
:100340008F3031F490931D0580E58093F604089575 |
:10035000E0911D05EF5FE0931D05E83121F481E098 |
:1003600080931C050895E93120F089E180931D05F3 |
:100370000895FF27ED58F44F80830895A0E0B0E082 |
:10038000E4ECF1E80C94189291E0D92E82E0A82ECA |
:10039000BD2CE12C01E0F02E80918A0B82FDB5C0CE |
:1003A00080916F008F7D80936F00E091EC07EE23CA |
:1003B00051F0FF27EE0FFF1FE954F74F8081918125 |
:1003C000843691055CF480910704883C20F4809188 |
:1003D00007048C5E01C088EC809307048091740B45 |
:1003E000682F772780911E05815080931E058F3FCF |
:1003F00031F41CE7C12E82E080931E0502C0C4E2E6 |
:10040000CC2E40E04C1508F07EC0EA2DFF27ED58B9 |
:10041000F44F80818D2111F06E297F298D2D992730 |
:10042000880F991FD82E882319F4B1E0DB2EAD0C6C |
:10043000EE0CFF1C20E0E21628E0F20609F061C095 |
:10044000A1E0EA2EF12CCB018050944065E070E0F1 |
:100450000E94C091AB2DBB27FD01EA0FFB1FE954A1 |
:10046000F74F808191819C01220F331F280F391F84 |
:10047000260F371F37FF02C02D5F3F4FE901D5958B |
:10048000C795D595C795CB0101968C179D0714F498 |
:10049000219706C061507040C617D7070CF421960B |
:1004A00080910704833CD8F08D010A0F1B1FF801CF |
:1004B000E954F74F80819181FE01E81BF90BCF01D0 |
:1004C00063E070E00E94C091CB01880F991F860FF6 |
:1004D000971F0551174FF8019183808307C0AA0F1A |
:1004E000BB1FA551B74F11961C921E92EB2DFF27F3 |
:1004F000EE0FFF1FE954F74FD183C08360E070E037 |
:10050000B3944F5F7FCF10923A0110921C05EAE03E |
:10051000CDB7DEB70C9434920895089540E050E0D2 |
:1005200080911F05909120059C01220F331F280FF9 |
:10053000391F8091170390911803280F391F37FF37 |
:1005400002C02D5F3F4F3595279535952795309300 |
:10055000200520931F0580913B018B32D9F48091B7 |
:100560009507282F33278091FB039091FC03829FEE |
:10057000A001839F500D929F500D1124CA0157FD79 |
:100580004F96AC0125E0559547952A95E1F74B5FCD |
:100590005F4F3DC08D32D9F480919507282F3327C6 |
:1005A0008091FB039091FC03829FA001839F500DDB |
:1005B000929F500D1124CA0157FD4F96AC0195E052 |
:1005C000559547959A95E1F74550504020C08032A7 |
:1005D00071F48091CF0381FF1AC0C90137FD4F9696 |
:1005E000AC0185E0559547958A95E1F710C08E35A9 |
:1005F00029F48091F603482F552709C0863739F42E |
:100600008091F603992744275527481B590BCA01A7 |
:10061000AA2797FDA095BA2F8093900290939102FC |
:10062000A0939202B093930208950F931F930E9498 |
:10063000117380911F0190912001AA2797FDA09529 |
:10064000BA2F8093BF019093C001A093C101B093D2 |
:10065000C2018091100A9091110AAA27BB278093AA |
:10066000D2019093D301A093D401B093D5010AE0B5 |
:1006700010E08091140A9091150AB8010E94AC9183 |
:10068000CB01AA27BB278093E5019093E601A093B5 |
:10069000E701B093E8018091010490910204A091D8 |
:1006A0000304B0910404BC01CD0124E630E040E035 |
:1006B00050E00E94F5912093F8013093F9014093A6 |
:1006C000FA015093FB018091880190918901AA273A |
:1006D00097FDA095BA2F80930B0290930C02A093E4 |
:1006E0000D02B0930E0280918C099927AA27BB278F |
:1006F00080931E0290931F02A0932002B0932102C8 |
:1007000080918E099927AA27BB2780933102909365 |
:100710003202A0933302B093340280918F099091FA |
:100720009009B8010E94AC91CB01AA27BB27809306 |
:10073000440290934502A0934602B09347028091F1 |
:10074000910990919209AA2797FDA095BA2F8093BD |
:10075000570290935802A0935902B0935A02809185 |
:1007600007059927AA27BB2780936A0290936B02FB |
:10077000A0936C02B0936D028091E1049927AA279F |
:10078000BB2780937D0290937E02A0937F02B0935B |
:1007900080028091E2049927AA27BB278093A302B5 |
:1007A0009093A402A093A502B093A6021F910F916B |
:1007B0000895002422273327442751E0BB27EE2742 |
:1007C000FF27A0E1660F771F881F991F001C221FBB |
:1007D000331F441F660F771F881F991F001C221F9D |
:1007E000331F441F2AF4050E2B1F3E1F4F1F04C04A |
:1007F000051A2B0B3E0B4F0B550FBB1FEE1F587FDF |
:10080000556047FD5250AA95E9F6E695B79557957C |
:10081000E695B7955795852F9B2F08952227332767 |
:1008200041E0552768E0880F991F221F331F880F6A |
:10083000991F221F331F1AF4240F351F02C0241BD7 |
:10084000350B440F551F487F456037FD42506A9570 |
:1008500051F75695479556954795842F0895AA27A1 |
:1008600097FF04C0809590958A1F9A1F77FF04C058 |
:10087000609570956A1F7A1F669F9001779FA0010F |
:10088000679F300D411D5A1F300D411D5A1F889F13 |
:10089000F001999F2E0F3F1F401D511D899F300D64 |
:1008A000411D5A1F300D411D5A1FCA01B9011124A3 |
:1008B00080CF4FB720E430E0F8948091C9008F7763 |
:1008C0008093C9008091C9008F7B8093C90080917B |
:1008D000C9008F7D8093C9005A9A52985B9A539AA7 |
:1008E000832F99278093CD002093CC008091C8005E |
:1008F00082608093C80088E18093C9008091CA001B |
:100900008F778093CA008091CA008F7B8093CA0042 |
:100910008091CA008F7D8093CA008091CA008F7E2B |
:100920008093CA008091CA00877F8093CA0080911B |
:10093000C9008B7F8093C9008091CA008460809336 |
:10094000CA008091CA0082608093CA008091C8006A |
:1009500087FF03C08091CE00F9CF8091C9008068E5 |
:100960008093C9004FBF08950F931F93CF93DF93D8 |
:10097000482F4F5F893108F08BC08091B6088417EB |
:1009800020F44F5F4093B6084150CB0183539B4204 |
:1009900068E170E00E94C091A42FBB27FD01EA0F1F |
:1009A000FB1FE954F74F808191819B01281B390B74 |
:1009B000C90137FF03C0909581959F4F069794F426 |
:1009C00080910704883C30F480910704865F80930F |
:1009D000070408C088EC8093070480916F008F7D26 |
:1009E00080936F00FD01EA0FFB1FE954F74F8081F0 |
:1009F00091819C01220F331F280F391F260F371FAB |
:100A000037FF02C02D5F3F4FE901D595C795D595BA |
:100A1000C795CB0101968C179D0714F4219706C04A |
:100A200061507040C617D7070CF4219680910704D7 |
:100A3000843BD8F08D010A0F1B1FF801E954F74FD2 |
:100A400080819181FE01E81BF90BCF0163E070E02A |
:100A50000E94C091CB01880F991F860F971F0551E7 |
:100A6000174FF8019183808307C0AA0FBB1FA551C0 |
:100A7000B74F11961C921E92E42FFF27EE0FFF1F17 |
:100A8000E954F74FD183C083443011F410923A01F6 |
:100A9000DF91CF911F910F910895CF93DF93209114 |
:100AA000AD0B822F9927807F9070409709F06CC022 |
:100AB0002F3109F046C08091AE0B80932A0520911A |
:100AC000B00B20932C058091B10B80932B05822FC6 |
:100AD00099279093B8088093B708222309F054C04F |
:100AE00080918407282F3327220F331FF901E55106 |
:100AF000F74F1182108280918507A82FBB27AA0F7C |
:100B0000BB1FFD01E551F74F1182108280918707CD |
:100B1000E82FFF27EE0FFF1FCF018551974FEC0104 |
:100B2000198218822954374FE90119821882A95471 |
:100B3000B74F11961C921E92E954F74F1182108202 |
:100B400023C0C22FCF70CA30F8F48091AE0B8093CF |
:100B5000D90B8091AF0B8093D80B8091B00B809311 |
:100B6000DB0B8091B10B8093DA0B6091D80B709105 |
:100B7000D90B8C2F0E94B4846091DA0B7091DB0B3F |
:100B80008C2F8F5F0E94B484DF91CF910895CF9313 |
:100B9000C82F8F3F49F480912D058F3F29F4109283 |
:100BA0002F0510922E0532C020912F05222339F4F3 |
:100BB000CF3111F485E001C084E08093300580914D |
:100BC000300590912E058217A0F4892F809580938F |
:100BD0002E058F3F19F48EEF80932E0580912E0500 |
:100BE000C81711F40E944D8510922F0510922E0502 |
:100BF0000BC0E22FFF27E355F44FC0832F5F2093F4 |
:100C00002F059C0F90932E05C0932D05CF9108952D |
:100C100090912905933240F4E92FFF27EB54F44FCC |
:100C200080839F5F909329050895833218F48D5F28 |
:100C300080932905089590E2E8EBFBE08FE1919322 |
:100C4000815087FFFCCF0895CF93CFB723E031E0E9 |
:100C5000F8948091C9008F778093C9008091C90072 |
:100C60008F7B8093C9008091C9008F7D8093C900DC |
:100C70005A9A52985B9A539A832F99278093CD0062 |
:100C80002093CC008091C80082608093C80088E1E6 |
:100C90008093C9008091CA008F778093CA008091A9 |
:100CA000CA008F7B8093CA008091CA0080628093C3 |
:100CB000CA008091CA0080618093CA008091CA00F6 |
:100CC00088608093CA008091C90084608093C900C5 |
:100CD0008091CA0084608093CA008091CA008260BB |
:100CE0008093CA008091C80087FF03C08091CE0026 |
:100CF000F9CF8091C90080688093C9008091C900B4 |
:100D000080648093C9000E941B86CFBFCF91089555 |
:100D1000282F99278F709070892B31F4209580911E |
:100D20002805822B8093280508951F920F920FB6F5 |
:100D30000F9211248F93EF93FF938091D002882319 |
:100D400009F068C0E0913205EE2389F48091310505 |
:100D5000882369F48091B50B882321F081E080938A |
:100D6000330505C08091C90081608093C9008091DE |
:100D70003305882379F4EF5FE093320580918C0B83 |
:100D80008E1720F481E0809333051CC0FF27E457C1 |
:100D9000F44F3CC080913105882361F48091B50BFC |
:100DA000882311F483E003C0813999F481E08093B2 |
:100DB00031050FC0833099F48091B50B882349F039 |
:100DC0001092B50B8091C9008E7F8093C9008EEF81 |
:100DD0001EC08091C90081608093C9000EC083321B |
:100DE00061F48091C9008E7F8093C9008FEF80935A |
:100DF000CE0081E08093D00218C080913105E82FA9 |
:100E0000FF27EB54F44F8F5F8093310580818093EF |
:100E1000CE000BC0109231051092320510923305AE |
:100E20008091C90080618093C900FF91EF918F91FB |
:100E30000F900FBE0F901F901895682727E0322F54 |
:100E400067FF06C0862F9927880F991F832702C046 |
:100E5000862F880F682F215027FFF2CF99270895FA |
:100E60000F931F93CF93DF93062F60E0162F601729 |
:100E700040F4EC0189910E941D87682F1F5F1017B5 |
:100E8000C8F3862F9927DF91CF911F910F91089575 |
:100E9000DC0190E0961758F48C91803241F09F5F0E |
:100EA000961728F4FD01E90FF11D8081F6CF892FF7 |
:100EB00099270895A0E0B0E0E0E6F7E80C941992D5 |
:100EC0008FE980938D0B80E180938F0B84EA809370 |
:100ED000900B85E58093910B8DE58093920B10929A |
:100EE000930B80913505882309F06AC08091340501 |
:100EF00013E1819FC001112463E088559E4F0E9439 |
:100F00004887082F80913405819FC00111246AE031 |
:100F100082569E4F0E944887982F800F865F80934D |
:100F20008C0B4EEFB42EB80EB0928E0B2091340580 |
:100F30002093940BE92EFF24C70133E0880F991FFB |
:100F40003A95E1F7802B8093950B822F992723E127 |
:100F5000C22ED12C8C9D90018D9D300D9C9D300D0D |
:100F60001124C90182569E4FA701BC0186E99BE06E |
:100F70000E94E18F11278091340599278C9DE00113 |
:100F80008D9DD00D9C9DD00D1124CE0188559E4F76 |
:100F9000A801BC01C7018A56944F0E94E18F0457F3 |
:100FA000144F0E0D1F1D6B2D8EE89BE00E943087A5 |
:100FB000F8018287809135058F5F8093350570C079 |
:100FC0001091930B0E9415834091D1024031C8F5D6 |
:100FD00063E170E0812F9927DC01AA0FBB1FA80FE6 |
:100FE000B91FA457B44F842F9927869FF001879F7C |
:100FF000F00D969FF00D1124E256FE4F2585C4E0BA |
:10100000880F991FCA95E1F7282BED0128872685BF |
:1010100037853F7982899927982F88279295990F4C |
:10102000907E282B392B2987832F99278A87842F15 |
:101030008F5F1F5F163018F4482F803158F280936D |
:10104000D10283E0189F90011124822F885F809342 |
:101050008C0B825C80938E0B812F99278C01000F63 |
:10106000111F080F191F0457144F822F8A5F682F12 |
:101070008EE89BE00E943087F80180878091D10242 |
:10108000803170F081E08093D1021092350580911B |
:1010900034058F5F80933405803110F01092340551 |
:1010A000E9E0CDB7DEB70C9435928091D002882369 |
:1010B00009F447C08091CF0385FD04C08091D4021C |
:1010C000882381F082E98093B50B83E28093B60B8D |
:1010D0008091D402882309F485E58093B70B1092A0 |
:1010E000D40202C08093B50B8091D2028F3071F48C |
:1010F000809128050E943A72882341F081E980930B |
:10110000B50B8093B60B81E38093B70B1092D0029E |
:101110008091C80085FFFCCF8091C9008F7E8093AD |
:10112000C9008091C9008E7F8093C9000E945A87B0 |
:101130008EE78093CE00809128058093D202109292 |
:1011400028050895EF92FF920F931F93CF93DF939B |
:101150007C018B01EA01452B39F0F80181918F0167 |
:10116000F70109952197C9F7E6E0CDB7DEB70C94F2 |
:101170003892EF92FF920F931F93CF93DF937C01EE |
:101180008B01EA01452B41F0F8010F5F1F4F84915D |
:10119000F70109952197C1F7E6E0CDB7DEB70C94CA |
:1011A00038920F931F93CF938C01C62F161634F4E9 |
:1011B00080E2F8010995C1501C16D4F3CF911F911C |
:1011C0000F9108950F931F93CF938C01C62F16167E |
:1011D00034F480E3F8010995C1501C16D4F3CF9183 |
:1011E0001F910F910895A5E3B0E0E9EFF8E80C94A2 |
:1011F00010922E96EEADFFAD2E97882499245401BF |
:1012000080912205882321F42C961FAE1EAE2C97C8 |
:10121000AEE44A2E512C4C0E5D1E6F01B60105C086 |
:10122000153239F00894C11CD11CF6011491112318 |
:10123000B9F7A601461B570B31F02C968EAD9FAD2A |
:101240002C970E94B988112309F46AC20894C11C22 |
:10125000D11CFF24FDA6FCA6FFEFEF2EF9A6F60198 |
:101260000894C11CD11C1491153721F0812F806284 |
:101270008837B1F4F0FE0AC0F20124E030E0420EFB |
:10128000531E80809180A280B3800AC0F20142E0A8 |
:1012900050E0440E551E808191814C01AA24BB244C |
:1012A000103221F489A58823D1F61DC0133219F418 |
:1012B00058E0F52AD4CF1A3211F01D3291F41A32C7 |
:1012C00059F4F20182E090E0480E591EE081ECA74B |
:1012D000EE232CF6E195ECA790E1F92AAFEDFA2286 |
:1012E000BECF1B3211F419A7BACF1E32C1F5F601D9 |
:1012F0000894C11CD11C14911A3279F4F20122E035 |
:1013000030E0420E531E408151813FEF4F3F530763 |
:1013100014F44FEF5FEFE42EA2CF40E050E0812FB6 |
:1013200080538A30A0F4CA01E3E0880F991FEA9540 |
:10133000E1F7840F951F480F591F410F511D40536E |
:101340005040F6010894C11CD11C1491E8CF8FEFD6 |
:101350004F3F580714F44FEF5FEFE42E85CF103363 |
:1013600029F4F4FC7CCF90E2F92A79CF812F8153C4 |
:101370008930D8F440E050E0CA0173E0880F991F2B |
:101380007A95E1F7840F951F480F591F410F511DA2 |
:1013900040535040F6010894C11CD11C1491812F78 |
:1013A00080538A3048F34CA75FCF183619F4A4E075 |
:1013B000FA2A55CF1C3619F4B1E0FB2A50CF133668 |
:1013C00061F43E010894611C711CF20122E030E0DE |
:1013D000420E531E808189833CC1143421F014369F |
:1013E00011F0193651F5143411F431E0F32AF0FEFE |
:1013F0000AC0F20144E050E0440E551E8080918006 |
:10140000A280B3800CC0F20182E090E0480E591E29 |
:10141000808191814C01AA2497FCA094BA2CB7FE3C |
:101420000AC0B094A09490948094811C911CA11C3B |
:10143000B11C8DE289A70AE06FC01F3411F01F367E |
:1014400031F41F3411F491E0F92A08E064C0103738 |
:1014500079F4F201A2E0B0E04A0E5B1E8081918136 |
:101460004C01AA24BB2400E1B0E4FB2A18E753C0D6 |
:101470001337C1F5F20122E030E0420E531E6080C6 |
:1014800071806114710489F43E010894611C711C1F |
:1014900088E289838EE6F301818385E78B838CE67E |
:1014A0008C838D8389E28E831F82E7FC13C08E2D8F |
:1014B000992787FD9095AC0160E070E0C3010E9420 |
:1014C000D48F009729F0382E3618E3140CF0C3C0DF |
:1014D0003E2CC1C0F30101900020E9F731973E2E68 |
:1014E0003618B9C0153511F0153731F4153511F42A |
:1014F000F1E0FF2A0AE00FC0183519F0183709F09B |
:10150000A0C000E1F3FE07C081149104A104B1045E |
:1015100011F020E4F22A19A6EDA6E7FC02C03FED87 |
:10152000F32269E2662E712C6C0E7D1E81149104EB |
:10153000A104B10421F44DA5442309F47BC0802FFC |
:101540009927AA27BB278EA79FA7A8ABB9AB202EA8 |
:10155000332490E0891690E0990691E0A90690E086 |
:10156000B90648F0C501B4012EA53FA548A959A95F |
:101570000E94D39117C0AFEF8A169104A104B10461 |
:1015800049F040F0C401B1010E94AC919B01442795 |
:10159000552708C0882D602F0E94A091282F33273F |
:1015A000442755272AAB3BAB4CAB5DAB0A3059F413 |
:1015B0008AA9880F880F880F9AA9990F890F382D4B |
:1015C000381B832F10C0003139F48AA98295807F9F |
:1015D000482D481B842F07C08AA9880F880F880FC1 |
:1015E000582D581B852F90E02EA53FA548A959A935 |
:1015F00082169306A406B50608F091E08AA89BA877 |
:10160000ACA8BDA88A3010F4805D04C0895A183592 |
:1016100009F48F7DD3018E933D01992309F099CF71 |
:10162000083041F4F3FE06C0803321F080E3FD0171 |
:1016300082933F01CE010196382E3618F8E23F0E14 |
:101640000BC0112309F46CC03E010894611C711C8D |
:10165000198351E0352E19A6032D2DA4231827FC3C |
:10166000222489A5882311F00F5F02C0F6FC0E5FCB |
:10167000020DEF2CFF24C70180739070892B49F471 |
:101680008CA5801B682F2C968EAD9FAD2C970E9449 |
:10169000D18889A5882331F041E050E0BE01675D23 |
:1016A0007F4F0AC0E6FE0EC080E38AA71BA742E078 |
:1016B00050E0BE01665D7F4F2C968EAD9FAD2C979E |
:1016C0000E94A288C70180739070809749F48CA50E |
:1016D000801B682F2C968EAD9FAD2C970E94E288C0 |
:1016E000622D2C968EAD9FAD2C970E94E288832DA3 |
:1016F000992787FD9095AC01B3012C968EAD9FADD7 |
:101700002C970E94A288E4FE89CD2CA5201B2CA733 |
:10171000622F2C968EAD9FAD2C970E94D1887ECDE6 |
:10172000E2E1CB5C0C942C92982F8091B40B883A18 |
:1017300050F48091B40BE82FFF27E556F54F9383C3 |
:101740008F5F8093B40B0895982F8091B40B883AE3 |
:1017500058F48091B40BE82FFF27E556F54F9068B9 |
:1017600093838F5F8093B40B0895982F8091230506 |
:10177000882321F0892F0E94A48B0895892F0E942D |
:10178000948B0895883A10F48093B40B089580E008 |
:1017900090E2EEE9FAE091938F5F883AE0F30895E2 |
:1017A0004FB721E830E0F8948091C9008F7780939B |
:1017B000C9008091C9008F7B8093C9008091C900C6 |
:1017C0008F7D8093C9005A9A52985B9A539A832FBF |
:1017D00099278093CD002093CC008091C80082602F |
:1017E0008093C80088E18093C9008091CA008F77F8 |
:1017F0008093CA008091CA008F7B8093CA00809139 |
:10180000CA008F7D8093CA008091CA008F7E80932A |
:10181000CA008091CA00877F8093CA008091C90066 |
:1018200084608093C9008091CA0084608093CA005C |
:101830008091CA0082608093CA008091C900816053 |
:101840008093C9008091C80087FF03C08091CE00BB |
:10185000F9CF8091C90080688093C9004FBF3CE7F1 |
:101860003093170A2DE72093420A8EE88093180AD6 |
:101870001092340A1092330A10921D0A80EE80935F |
:101880001A0A30936F0A20939A0A10927B0A1092D8 |
:101890007A0A10927D0A10927C0A10927F0A1092A6 |
:1018A0007E0A84EF91E09093790A8093780A90936E |
:1018B000770A8093760A9093750A8093740A10923F |
:1018C000710A89E88093700A1092980A1092990A16 |
:1018D00080E98093720A3093470B2093720B109229 |
:1018E000490B8AE88093480B10924F0B10924E0BD5 |
:1018F00010924D0B1092510B1092520B1092530BF1 |
:101900001092540B1092560B1092570B1092580BCA |
:101910001092590B10925D0B10925C0B10925B0BA6 |
:1019200010925A0B80EA80934A0B3093430A20931B |
:101930006E0A1092450A8DE88093440A10926D0A4F |
:1019400080ED8093460A8BE780939B0A80E8809322 |
:101950009C0A10929D0A80911D0A90E2EEE9FAE03D |
:1019600091938F5F883AE0F38DE78093460B08955B |
:10197000CF93C82F80913605803879F48C2F0E9440 |
:1019800066748093250580912505882331F1C093E5 |
:10199000B30B809125058F5F16C08F37F1F48091CE |
:1019A000AC0B882329F48C2F80958F708093AC0B1F |
:1019B0000E946F7380939D0A8BE99AE090932705AC |
:1019C000809326058DEA809325058091C9008F7E3E |
:1019D0008093C90082E080932405C0933605CF919F |
:1019E000089530912405332331F0809124058150EE |
:1019F00080932405089580912505882381F14091E5 |
:101A0000250590913705413091F4292F3093370502 |
:101A10008091C90080618093C9008091230588234B |
:101A200019F03093230510C0409323050DC0E091B9 |
:101A30002605F09127058191F0932705E09326056F |
:101A4000282F980F909337058091C80085FFFCCF11 |
:101A50002093CE008091250581508093250508951F |
:101A60002FB740E0F894E0E0F0E081E28093570087 |
:101A70009491E2E0F0E0809357003491E4E0F0E0EC |
:101A80008093570084912FBF9E3199F4363941F4E9 |
:101A9000893011F441E00DC08A3059F442E009C0A8 |
:101AA000373939F4863011F443E003C0853009F446 |
:101AB00044E0842F992708959FB7F8948091C90036 |
:101AC000877F8093C9008091C9008F7E8093C90071 |
:101AD0008091C9008F778093C9008091C9008F7B66 |
:101AE0008093C9008091C9008F7D8093C90052986E |
:101AF0005A9A53985B9A9FBF08951F93CF93DF9391 |
:101B0000182F80912205882309F4A7C08091CF0265 |
:101B1000181709F4A2C080912105882321F40E949E |
:101B2000308D8093210582ED91E09093390180936F |
:101B3000380189E791E19F938F93C0E6D5E1DF9368 |
:101B4000CF93E0913B05F0913C0509950F900F90E4 |
:101B50000F900F90812F9927AA27BB27FC01099787 |
:101B600078F5E554FF4F20913B0530913C050C94EE |
:101B7000479285E791E102C08CE691E19F938F93B4 |
:101B8000DF93CF93F901099527C087E691E1F6CF5E |
:101B90008FE591E1F3CF87E591E19F938F93DF93F9 |
:101BA000CF93F901099588ED91E0909339018093E5 |
:101BB000380112C082E591E1E1CF86E891E1DECF04 |
:101BC0008CE891E19F938F93DF93CF93E0913B0556 |
:101BD000F0913C05099510E00F900F900F900F9039 |
:101BE00080912105843011F0823011F50E945C8DC6 |
:101BF000812F8150833018F40E94656F2CC01430FF |
:101C000019F40E94248627C0183019F40E948C828F |
:101C100022C0153019F40E9459841DC0163019F4E1 |
:101C20000E94D08B18C01730B1F40E943F8113C0BE |
:101C3000112389F082EA91E19F938F9380E695E1E9 |
:101C40009F938F93E0913B05F0913C0509950F9090 |
:101C50000F900F900F901093CF02DF91CF911F91B3 |
:101C600008950F931F9381E0809322054091CE0247 |
:101C7000E2E0F1E120E030E05FE4849199272F5F1A |
:101C80003F4F829FB001839F700D929F700D112472 |
:101C900046275150319657FFF0CF4093CE02EAEDE0 |
:101CA000F0E120E030E057E2849199272F5F3F4F29 |
:101CB000829FB001839F700D929F700D1124462763 |
:101CC0005150319657FFF0CF4093CE0280912105BD |
:101CD000882321F40E94308D809321058091CE02CB |
:101CE000833459F088E190E029E20FB6F894A89582 |
:101CF000809360000FBE2093600083EF98E890937C |
:101D00003C0580933B050E944A0984E690E09F933E |
:101D10008F938AE590E09F938F931F921F928091FB |
:101D200001016AE00E94A091892F99279F938F93C8 |
:101D3000809101010E94A09199279F938F938DEB31 |
:101D400091E19F938F9300E615E11F930F93E0912C |
:101D50003B05F0913C05099582E091E19F938F93BB |
:101D60001F930F93E0913B05F0913C0509958AED97 |
:101D700090E19F938F931F930F93E0913B05F09118 |
:101D80003C0509950E944A0983EC8093810080916B |
:101D90006F00806280936F008DB79EB746968DBFAF |
:101DA0001F910F9108958091EA078D3338F080914B |
:101DB0008B0987FD03C08CE38093EA078091990724 |
:101DC000882331F08055853618F08FE78093990786 |
:101DD000089580912205882309F477C08091380501 |
:101DE000815080933805882309F053C089E180939E |
:101DF00038058091EA078E3338F080918B0987FD92 |
:101E000003C08DE38093EA0780910704823820F5B0 |
:101E10008091D0039091D103805D974020F0809114 |
:101E2000160A843620F410923A05109239058091F2 |
:101E3000390590913A05009739F1019790933A0549 |
:101E400080933905419728F180918B0984FF21C047 |
:101E50008091CE0384601BC080910704853BC8F04D |
:101E60009091EA0784E1989FC00111244096209147 |
:101E7000390530913A052817390730F42F5F3F4F65 |
:101E800030933A05209339058091CE038B7F809360 |
:101E9000CE039091CF02963019F40E94F18C0FC0BE |
:101EA0008091D302882321F081508093D30208953A |
:101EB0008BE48093D302943011F40E945588809172 |
:101EC000CE02833411F01092220508951F920F92D2 |
:101ED0000FB60F9211242F933F934F935F936F93FD |
:101EE0007F938F939F93AF93BF93EF93FF93209133 |
:101EF000CE008091DE028823B1F02093C60080914D |
:101F0000DE028230B9F52F3FA9F58FEF94E3ACE004 |
:101F1000B0E0C297A109B109B7FFFBCF80917E0560 |
:101F20008093CE0027C09091CF02892F81508330BB |
:101F300020F4822F0E94C06F1DC0943021F4822FA4 |
:101F40000E94888617C0983021F4822F0E948D82CB |
:101F500011C0953021F4822F0E94C7850BC09630A6 |
:101F600021F4822F0E94B88C05C0973019F4822F7B |
:101F70000E949C81FF91EF91BF91AF919F918F91B2 |
:101F80007F916F915F914F913F912F910F900FBE75 |
:101F90000F901F901895FB01DC0102C005900D9277 |
:101FA00041505040D8F70895FC014150504030F066 |
:101FB00001900616D1F73197CF0108958827992708 |
:101FC0000895FB01DC0102C001900D924150504088 |
:101FD000D8F70895A0E0B0E0E0EFFFE80C94189285 |
:101FE0006C017B01EA01590121978FEFCF3FD807A0 |
:101FF00089F086010894C11CD11CC7010894E11C1A |
:10200000F11CF5010995F80180832197FFEFCF3F7F |
:10201000DF0779F7EAE0CDB7DEB70C943492CF92C0 |
:10202000DF92EF92FF920F931F937C016B01FB01F4 |
:102030000995082FC7010196F6010995182FC801C7 |
:102040001F910F91FF90EF90DF90CF900895A0E047 |
:10205000B0E0EDE2F0E90C941A928C017B01EA0108 |
:10206000690121978FEFCF3FD80771F0F7012191D8 |
:102070007F01C8010F5F1F4F622FF601099521975D |
:10208000FFEFCF3FDF0791F7E8E0CDB7DEB70C9465 |
:102090003692CF92DF92EF92FF920F931F936C01D3 |
:1020A0008B017A01FA010995812F9927682FC601C2 |
:1020B0000196F70109951F910F91FF90EF90DF9026 |
:1020C000CF9008955058BB27AA270ED0E0C0D1D09A |
:1020D00030F0D6D020F031F49F3F11F41EF4C6C08A |
:1020E0000EF4E095E7FBBCC0E92FE2D080F3BA170D |
:1020F000620773078407950718F071F49EF5FAC01C |
:102100000EF4E0950B2EBA2FA02D0B01B901900112 |
:102110000C01CA01A0011124FF27591B99F0593F56 |
:1021200050F4503E68F11A16F040A22F232F342F9E |
:102130004427585FF3CF469537952795A795F040EC |
:102140005395C9F77EF41F16BA0B620B730B840B01 |
:10215000BAF09150A1F0FF0FBB1F661F771F881FB9 |
:10216000C2F70EC0BA0F621F731F841F48F4879511 |
:1021700077956795B795F7959E3F08F0B3CF939500 |
:10218000880F08F09927EE0F97958795089598D0B6 |
:1021900088F09F5790F0B92F9927B751A0F0D1F050 |
:1021A000660F771F881F991F1AF0BA95C9F712C0DA |
:1021B000B13081F09FD0B1E008959CC0672F782F97 |
:1021C0008827B85F39F0B93FCCF386957795679546 |
:1021D000B395D9F73EF490958095709561957F4FB2 |
:1021E0008F4F9F4F0895E89409C097FB3EF4909558 |
:1021F0008095709561957F4F8F4F9F4F9923A9F0E0 |
:10220000F92F96E9BB279395F6958795779567956E |
:10221000B795F111F8CFFAF4BB0F11F460FF1BC0B2 |
:102220006F5F7F4F8F4F9F4F16C0882311F096E945 |
:1022300011C0772321F09EE8872F762F05C06623F3 |
:1022400071F096E8862F70E060E02AF09A95660FAC |
:10225000771F881FDAF7880F9695879597F9089565 |
:1022600097F99F6780E870E060E008959FEF80EC49 |
:10227000089500240A9416161706180609060895EC |
:1022800000240A9412161306140605060895092E52 |
:102290000394000C11F4882352F0BB0F40F4BF2BC1 |
:1022A00011F460FF04C06F5F7F4F8F4F9F4F089501 |
:1022B00057FD9058440F551F59F05F3F71F04795F7 |
:1022C000880F97FB991F61F09F3F79F087950895DC |
:1022D000121613061406551FF2CF4695F1DF08C0FB |
:1022E000161617061806991FF1CF86957105610518 |
:1022F00008940895E894BB2766277727CB0197F9C0 |
:102300000895629FD001739FF001829FE00DF11D3F |
:10231000649FE00DF11D929FF00D839FF00D749F5F |
:10232000F00D659FF00D9927729FB00DE11DF91F0B |
:10233000639FB00DE11DF91FBD01CF011124089568 |
:10234000991B79E004C0991F961708F0961B881F07 |
:102350007A95C9F780950895AA1BBB1B51E107C068 |
:10236000AA1FBB1FA617B70710F0A61BB70B881F25 |
:10237000991F5A95A9F780959095BC01CD010895B4 |
:1023800097FB092E07260AD077FD04D0E5DF06D09B |
:1023900000201AF4709561957F4F0895F6F7909597 |
:1023A00081959F4F0895A1E21A2EAA1BBB1BFD0128 |
:1023B0000DC0AA1FBB1FEE1FFF1FA217B307E40724 |
:1023C000F50720F0A21BB30BE40BF50B661F771F7C |
:1023D000881F991F1A9469F760957095809590955C |
:1023E0009B01AC01BD01CF01089597FB092E052685 |
:1023F0000ED057FD04D0D7DF0AD0001C38F450951A |
:102400004095309521953F4F4F4F5F4F0895F6F718 |
:1024100090958095709561957F4F8F4F9F4F089550 |
:102420002F923F924F925F926F927F928F929F92E4 |
:10243000AF92BF92CF92DF92EF92FF920F931F93D2 |
:10244000CF93DF93CDB7DEB7CA1BDB0B0FB6F89483 |
:10245000DEBF0FBECDBF09942A88398848885F84C3 |
:102460006E847D848C849B84AA84B984C884DF8034 |
:10247000EE80FD800C811B81AA81B981CE0FD11D18 |
:102480000FB6F894DEBF0FBECDBFED010895EE0F7D |
:0C249000FF1F0590F491E02D0994FFCF90 |
:10249C005E0A010164FF010020FFFFC01FC01F0185 |
:1024AC000101737373FF03007D0000C409C4096448 |
:1024BC0000104E6F726D616C0051756164726F002B |
:1024CC000000000000006400D20101200B05000098 |
:1024DC00ECFF00020406070808080706040200FEC9 |
:1024EC00FCFAF9F8F8F8F9FAFCFE00020406070801 |
:1024FC00086440415A4664640A02969696960840CF |
:10250C00403A10FB30380132FF03780090D00300C2 |
:10251C0090D0030032002064FFFF64200B0A0D0BE7 |
:10252C000C0E0B0F100B11FA2068010101152D3D3B |
:10253C002E4D5F4B2E3D2D00202020010000000071 |
:10254C0000566F6C746167652020205620200100B6 |
:10255C000000000143757272656E742020204120CA |
:10256C0020010000000001436170616369747920EF |
:10257C0020416820010000000002416C74697475F0 |
:10258C00646520206D2020010000000000436F6D69 |
:10259C0070617373202020B0202001000000000027 |
:1025AC005361747320202020202020202001000063 |
:1025BC00000000537065656420202020206D2F736F |
:1025CC0001000000000044697374616E6365202093 |
:1025DC006D2020010000000000486F6D652D4469DE |
:1025EC00722020B020200100000000006D61782EC8 |
:1025FC0054656D702E20B043200100000000004D8A |
:10260C0061676E2E6669656C6425202001000000F0 |
:10261C000000566172696F202020202020202001AC |
:10262C0000000000004572726F72436F64652020D9 |
:10263C002020010000000000667265692020202027 |
:10264C002020202020010000000003667265692014 |
:10265C00202020202020202001000000000370FFFB |
:04266C0001010F64F5 |
:00000001FF |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/License.txt |
---|
0,0 → 1,52 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software Nutzungsbedingungen (english version: see below) |
// + der Fa. HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland - nachfolgend Lizenzgeber genannt - |
// + Der Lizenzgeber räumt dem Kunden ein nicht-ausschließliches, zeitlich und räumlich* unbeschränktes Recht ein, die im den |
// + Mikrocontroller verwendete Firmware für die Hardware Flight-Ctrl, Navi-Ctrl, BL-Ctrl, MK3Mag & PC-Programm MikroKopter-Tool |
// + - nachfolgend Software genannt - nur für private Zwecke zu nutzen. |
// + Der Einsatz dieser Software ist nur auf oder mit Produkten des Lizenzgebers zulässig. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die vom Lizenzgeber gelieferte Software ist urheberrechtlich geschützt. Alle Rechte an der Software sowie an sonstigen im |
// + Rahmen der Vertragsanbahnung und Vertragsdurchführung überlassenen Unterlagen stehen im Verhältnis der Vertragspartner ausschließlich dem Lizenzgeber zu. |
// + Die in der Software enthaltenen Copyright-Vermerke, Markenzeichen, andere Rechtsvorbehalte, Seriennummern sowie |
// + sonstige der Programmidentifikation dienenden Merkmale dürfen vom Kunden nicht verändert oder unkenntlich gemacht werden. |
// + Der Kunde trifft angemessene Vorkehrungen für den sicheren Einsatz der Software. Er wird die Software gründlich auf deren |
// + Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Die Haftung des Lizenzgebers wird - soweit gesetzlich zulässig - begrenzt in Höhe des typischen und vorhersehbaren |
// + Schadens. Die gesetzliche Haftung bei Personenschäden und nach dem Produkthaftungsgesetz bleibt unberührt. Dem Lizenzgeber steht jedoch der Einwand |
// + des Mitverschuldens offen. |
// + Der Kunde trifft angemessene Vorkehrungen für den Fall, dass die Software ganz oder teilweise nicht ordnungsgemäß arbeitet. |
// + Er wird die Software gründlich auf deren Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Der Kunde wird er seine Daten vor Einsatz der Software nach dem Stand der Technik sichern. |
// + Der Kunde ist darüber unterrichtet, dass der Lizenzgeber seine Daten im zur Vertragsdurchführung erforderlichen Umfang |
// + und auf Grundlage der Datenschutzvorschriften erhebt, speichert, verarbeitet und, sofern notwendig, an Dritte übermittelt. |
// + *) Die räumliche Nutzung bezieht sich nur auf den Einsatzort, nicht auf die Reichweite der programmierten Software. |
// + #### ENDE DER NUTZUNGSBEDINGUNGEN ####' |
// + Hinweis: Informationen über erweiterte Nutzungsrechte (wie z.B. Nutzung für nicht-private Zwecke) sind auf Anfrage per Email an info(@)hisystems.de verfügbar. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software LICENSING TERMS |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + of HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland, Germany - the Licensor - |
// + The Licensor grants the customer a non-exclusive license to use the microcontroller firmware of the Flight-Ctrl, Navi-Ctrl, BL-Ctrl, and MK3Mag hardware |
// + (the Software) exclusively for private purposes. The License is unrestricted with respect to time and territory*. |
// + The Software may only be used with the Licensor's products. |
// + The Software provided by the Licensor is protected by copyright. With respect to the relationship between the parties to this |
// + agreement, all rights pertaining to the Software and other documents provided during the preparation and execution of this |
// + agreement shall be the property of the Licensor. |
// + The information contained in the Software copyright notices, trademarks, other legal reservations, serial numbers and other |
// + features that can be used to identify the program may not be altered or defaced by the customer. |
// + The customer shall be responsible for taking reasonable precautions |
// + for the safe use of the Software. The customer shall test the Software thoroughly regarding its suitability for the |
// + intended purpose before implementing it for actual operation. The Licensor's liability shall be limited to the extent of typical and |
// + foreseeable damage to the extent permitted by law, notwithstanding statutory liability for bodily injury and product |
// + liability. However, the Licensor shall be entitled to the defense of contributory negligence. |
// + The customer will take adequate precautions in the case, that the software is not working properly. The customer will test |
// + the software for his purpose before any operational usage. The customer will backup his data before using the software. |
// + The customer understands that the Licensor collects, stores and processes, and, where required, forwards, customer data |
// + to third parties to the extent necessary for executing the agreement, subject to applicable data protection and privacy regulations. |
// + *) The territory aspect only refers to the place where the Software is used, not its programmed range. |
// + #### END OF LICENSING TERMS #### |
// + Note: For information on license extensions (e.g. commercial use), please contact us at info(@)hisystems.de. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/Settings.h |
---|
--- branches/v0.90d_Ernstl_4-Motoren+Sexpander/Spektrum.c (nonexistent) |
+++ branches/v0.90d_Ernstl_4-Motoren+Sexpander/Spektrum.c (revision 2304) |
@@ -0,0 +1,463 @@ |
+/*####################################################################################### |
+Decodieren eines RC Summen Signals oder Spektrum Empfänger-Satellit |
+#######################################################################################*/ |
+ |
+#include "Spektrum.h" |
+#include "main.h" |
+ |
+unsigned char SpektrumTimer = 0; |
+ |
+// Achtung: RECEIVER_SPEKTRUM_DX7EXP oder RECEIVER_SPEKTRUM_DX8EXP wird in der main.h gesetzt |
+#if defined (RECEIVER_SPEKTRUM_DX7EXP) || defined (RECEIVER_SPEKTRUM_DX8EXP) |
+unsigned char s_excnt = 0; // Bitcounter for Spektrum-Expander |
+unsigned char s_exparity = 0; // Parity Bit for Spektrum-Expander |
+signed char s_exdata[11]; // Data for Spektrum-Expander |
+ |
+void s_update(unsigned char channel, signed int value) // Channel-Diff numbercrunching and finally assign new stickvalue to PPM_in |
+{ |
+ if(SenderOkay >= 180) PPM_diff[channel] = ((value - PPM_in[channel]) / 3) * 3; |
+ else PPM_diff[channel] = 0; |
+ PPM_in[channel] = value; |
+} |
+#endif |
+ |
+//--------------------------------------------------------------// |
+//--------------------------------------------------------------// |
+/* |
+void SpektrumBinding(void) |
+{ |
+ unsigned int timerTimeout = SetDelay(10000); // Timeout 10 sec. |
+ unsigned char connected = 0; |
+ unsigned int delaycounter; |
+ |
+ UCSR1B &= ~(1 << RXCIE1); // disable rx-interrupt |
+ UCSR1B &= ~(1<<RXEN1); // disable Uart-Rx |
+ PORTD &= ~(1 << PORTD2); // disable pull-up |
+ |
+ printf("\n\rPlease connect Spektrum receiver for binding NOW..."); |
+ |
+ while(!CheckDelay(timerTimeout)) |
+ { |
+ if (PIND & (1 << PORTD2)) { timerTimeout = SetDelay(90); connected = 1; break; } |
+ } |
+ |
+ if (connected) |
+ { |
+ |
+ printf("ok.\n\r"); |
+ DDRD |= (1 << DDD2); // Rx as output |
+ |
+ while(!CheckDelay(timerTimeout)); // delay after startup of RX |
+ for (delaycounter = 0; delaycounter < 100; delaycounter++) PORTD |= (1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD &= ~(1 << PORTD2); |
+ |
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD |= (1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD &= ~(1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD |= (1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD &= ~(1 << PORTD2); |
+ |
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD |= (1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD &= ~(1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD |= (1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD &= ~(1 << PORTD2); |
+ |
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD |= (1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD &= ~(1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD |= (1 << PORTD2); |
+ |
+ } |
+ else |
+ { printf("Timeout.\n\r"); |
+ |
+ |
+ } |
+ |
+ DDRD &= ~(1 << DDD2); // RX as input |
+ PORTD &= ~(1 << PORTD2); |
+ |
+ SpektrumUartInit(); // init Uart again |
+} |
+*/ |
+//############################################################################ |
+// USART1 initialisation from killagreg |
+void SpektrumUartInit(void) |
+//############################################################################ |
+ { |
+ // -- Start of USART1 initialisation for Spekturm seriell-mode |
+ // USART1 Control and Status Register A, B, C and baud rate register |
+ uint8_t sreg = SREG; |
+ |
+ uint16_t ubrr = (uint16_t) ((uint32_t) SYSCLK/(8 * 115200) - 1); |
+ |
+ // disable all interrupts before reconfiguration |
+ cli(); |
+ // disable RX-Interrupt |
+ UCSR1B &= ~(1 << RXCIE1); |
+ // disable TX-Interrupt |
+ UCSR1B &= ~(1 << TXCIE1); |
+ // disable DRE-Interrupt |
+ UCSR1B &= ~(1 << UDRIE1); |
+ // set direction of RXD1 and TXD1 pins |
+ // set RXD1 (PD2) as an input pin |
+ PORTD |= (1 << PORTD2); |
+ DDRD &= ~(1 << DDD2); |
+ |
+ // set TXD1 (PD3) as an output pin |
+ PORTD |= (1 << PORTD3); |
+ DDRD |= (1 << DDD3); |
+ |
+ // USART0 Baud Rate Register |
+ // set clock divider |
+ UBRR1H = (uint8_t)(ubrr>>8); |
+ UBRR1L = (uint8_t)ubrr; |
+ // enable double speed operation |
+ UCSR1A |= (1 << U2X1); |
+ // enable receiver and transmitter |
+ //UCSR1B = (1<<RXEN1)|(1<<TXEN1); |
+ |
+ UCSR1B = (1<<RXEN1); |
+ // set asynchronous mode |
+ UCSR1C &= ~(1 << UMSEL11); |
+ UCSR1C &= ~(1 << UMSEL10); |
+ // no parity |
+ UCSR1C &= ~(1 << UPM11); |
+ UCSR1C &= ~(1 << UPM10); |
+ // 1 stop bit |
+ UCSR1C &= ~(1 << USBS1); |
+ // 8-bit |
+ UCSR1B &= ~(1 << UCSZ12); |
+ UCSR1C |= (1 << UCSZ11); |
+ UCSR1C |= (1 << UCSZ10); |
+ // flush receive buffer explicit |
+ while(UCSR1A & (1<<RXC1)) UDR1; |
+ // enable RX-interrupts at the end |
+ UCSR1B |= (1 << RXCIE1); |
+ // -- End of USART1 initialisation |
+ // restore global interrupt flags |
+ |
+ SREG = sreg; |
+ return; |
+ } |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Copyright (c) Rainer Walther |
+// + RC-routines from original MK rc.c (c) H&I |
+// + Useful infos from Walter: http://www.rcgroups.com/forums/showthread.php?t=714299&page=2 |
+// + only for non-profit use |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// |
+// 20080808 rw Modified for Spektrum AR6100 (PPM) |
+// 20080823 rw Add Spektrum satellite receiver on USART1 (644P only) |
+// 20081213 rw Add support for Spektrum DS9 Air-Tx-Module (9 channels) |
+// Replace AR6100-coding with original composit-signal routines |
+// |
+// --- |
+// Entweder Summensignal ODER Spektrum-Receiver anschließen. Nicht beides gleichzeitig betreiben! |
+// Binding is not implemented. Bind with external Receiver. |
+// Servo output J3, J4, J5 not serviced |
+// |
+// Anschuß Spektrum Receiver |
+// Orange: 3V von der FC (keinesfalls an 5V anschließen!) |
+// Schwarz: GND |
+// Grau: RXD1 (Pin 3) auf 10-Pol FC-Stecker |
+// |
+// --- |
+// Satellite-Reciever connected on USART1: |
+// |
+// DX7/DX6i: One data-frame at 115200 baud every 22ms. |
+// DX7se: One data-frame at 115200 baud every 11ms. |
+// byte1: unknown |
+// byte2: unknown |
+// byte3: and byte4: channel data (FLT-Mode) |
+// byte5: and byte6: channel data (Roll) |
+// byte7: and byte8: channel data (Nick) |
+// byte9: and byte10: channel data (Gier) |
+// byte11: and byte12: channel data (Gear Switch) |
+// byte13: and byte14: channel data (Gas) |
+// byte15: and byte16: channel data (AUX2) |
+// |
+// DS9 (9 Channel): One data-frame at 115200 baud every 11ms, alternating frame 1/2 for CH1-7 / CH8-9 |
+// 1st Frame: |
+// byte1: unknown |
+// byte2: unknown |
+// byte3: and byte4: channel data |
+// byte5: and byte6: channel data |
+// byte7: and byte8: channel data |
+// byte9: and byte10: channel data |
+// byte11: and byte12: channel data |
+// byte13: and byte14: channel data |
+// byte15: and byte16: channel data |
+// 2nd Frame: |
+// byte1: unknown |
+// byte2: unknown |
+// byte3: and byte4: channel data |
+// byte5: and byte6: channel data |
+// byte7: and byte8: 0xffff |
+// byte9: and byte10: 0xffff |
+// byte11: and byte12: 0xffff |
+// byte13: and byte14: 0xffff |
+// byte15: and byte16: 0xffff |
+// |
+// Each channel data (16 bit= 2byte, first msb, second lsb) is arranged as: |
+// |
+// Bits: F 0 C3 C2 C1 C0 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 |
+// |
+// 0 means a '0' bit |
+// F: 1 = indicates beginning of 2nd frame for CH8-9 (DS9 only) |
+// C3 to C0 is the channel number. 0 to 9 (4 bit, as assigned in the transmitter) |
+// D9 to D0 is the channel data (10 bit) 0xaa..0x200..0x356 for 100% transmitter-travel |
+// |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+#define MIN_FRAMEGAP 68 // 7ms |
+#define MAX_BYTEGAP 3 // 310us |
+ |
+ |
+//############################################################################ |
+// Wird im UART-Interrupt aufgerufen |
+//############################################################################ |
+void SpektrumParser(unsigned char c) |
+{ |
+ static unsigned char Sync=0, FrameCnt=0, ByteHigh=0, ReSync=1, Frame2=0; |
+ unsigned int Channel, index = 0; |
+ signed int signal = 0, tmp; |
+ int bCheckDelay; |
+// c = UDR1; // get data byte |
+ if(ReSync == 1) |
+ { |
+ // wait for beginning of new frame |
+ ReSync = 0; |
+ SpektrumTimer = MIN_FRAMEGAP; |
+ FrameCnt = 0; |
+ Sync = 0; |
+ ByteHigh = 0; |
+ } |
+ else |
+ { |
+ if(!SpektrumTimer) bCheckDelay = 1; else bCheckDelay = 0;//CheckDelay(FrameTimer); |
+ if ( Sync == 0 ) |
+ { |
+ if(bCheckDelay) |
+ { |
+ // nach einer Pause von mind. 7ms erstes Sync-Character gefunden |
+ // Zeichen ignorieren, da Bedeutung unbekannt |
+ Sync = 1; |
+ FrameCnt ++; |
+ SpektrumTimer = MAX_BYTEGAP; |
+ } |
+ else |
+ { |
+ // Zeichen kam vor Ablauf der 7ms Sync-Pause |
+ // warten auf erstes Sync-Zeichen |
+ SpektrumTimer = MIN_FRAMEGAP; |
+ FrameCnt = 0; |
+ Sync = 0; |
+ ByteHigh = 0; |
+ } |
+ } |
+ else if((Sync == 1) && !bCheckDelay) |
+ { |
+ // zweites Sync-Character ignorieren, Bedeutung unbekannt |
+ Sync = 2; |
+ FrameCnt ++; |
+ SpektrumTimer = MAX_BYTEGAP; |
+ } |
+ else if((Sync == 2) && !bCheckDelay) |
+ { |
+ SpektrumTimer = MAX_BYTEGAP; |
+ // Datenbyte high |
+ ByteHigh = c; |
+ if (FrameCnt == 2) |
+ { |
+ // is 1st Byte of Channel-data |
+ // Frame 1 with Channel 1-7 comming next |
+ Frame2 = 0; |
+ if(ByteHigh & 0x80) |
+ { |
+ // DS9: Frame 2 with Channel 8-9 comming next |
+ Frame2 = 1; |
+ } |
+ } |
+ Sync = 3; |
+ FrameCnt ++; |
+ } |
+ else if((Sync == 3) && !bCheckDelay) |
+ { |
+ // Datenbyte low |
+ // High-Byte for next channel comes next |
+ SpektrumTimer = MAX_BYTEGAP; |
+ Sync = 2; |
+ FrameCnt ++; |
+ Channel = ((unsigned int)ByteHigh << 8) | c; |
+ if(EE_Parameter.Receiver == RECEIVER_SPEKTRUM) |
+ { |
+ signal = Channel & 0x3ff; |
+ signal -= 0x200; // Offset, range 0x000..0x3ff? |
+ signal = signal/3; // scaling to fit PPM resolution |
+ index = (ByteHigh >> 2) & 0x0f; |
+ } |
+ else |
+ if(EE_Parameter.Receiver == RECEIVER_SPEKTRUM_HI_RES) |
+ { |
+ signal = Channel & 0x7ff; |
+ signal -= 0x400; // Offset, range 0x000..0x7ff? |
+ signal = signal/6; // scaling to fit PPM resolution |
+ index = (ByteHigh >> 3) & 0x0f; |
+ } |
+ else |
+ //if(EE_Parameter.Receiver == RECEIVER_SPEKTRUM_LOW_RES) |
+ { |
+ signal = Channel & 0x3ff; |
+ signal -= 360; // Offset, range 0x000..0x3ff? |
+ signal = signal/2; // scaling to fit PPM resolution |
+ index = (ByteHigh >> 2) & 0x0f; |
+ } |
+ |
+ index++; |
+ if(index < 13) |
+ { |
+ // Stabiles Signal |
+#if defined (RECEIVER_SPEKTRUM_DX7EXP) || defined (RECEIVER_SPEKTRUM_DX8EXP) |
+ if (index == 2) index = 4; // Analog channel reassigment (2 <-> 4) for logical numbering (1,2,3,4) |
+ else if (index == 4) index = 2; |
+#endif |
+ if(abs(signal - PPM_in[index]) < 6) |
+ { |
+ if(EE_Parameter.FailsafeChannel == 0 || PPM_in[EE_Parameter.FailsafeChannel] < 100) // forces Failsafe if the receiver doesn't have 'signal loss' on Failsafe |
+ { |
+ if(SenderOkay < 200) SenderOkay += 10; |
+ else |
+ { |
+ SenderOkay = 200; |
+ TIMSK1 &= ~_BV(ICIE1); // disable PPM-Input |
+ } |
+ } |
+ } |
+ tmp = (3 * (PPM_in[index]) + signal) / 4; |
+ if(tmp > signal+1) tmp--; else |
+ if(tmp < signal-1) tmp++; |
+ |
+#ifdef RECEIVER_SPEKTRUM_DX7EXP |
+ if(index == 6) // FLIGHT-MODE - The channel used for our data uplink |
+ { |
+ if (signal > 100) // SYNC received |
+ { |
+ if (s_exdata[s_excnt] == 125) s_exparity = ~s_exparity; // Bit = 1 -> Re-Invert parity bit |
+ if ((s_excnt == 6 && ((s_exparity != 0 && s_exdata[s_excnt] == -125) || (s_exparity == 0 && s_exdata[s_excnt] == 125))) || (s_excnt == 9 && ((s_exparity == 0 && s_exdata[s_excnt] == -125) || (s_exparity != 0 && s_exdata[s_excnt] == 125)))) // Parity check |
+ { |
+ if (s_exdata[1] == 125 && s_exdata[2] == -125) s_update(5,-125); // Reconstruct tripole Flight-Mode value (CH5) |
+ else if (s_exdata[1] == -125 && s_exdata[2] == -125) s_update(5,0); // Reconstruct tripole Flight-Mode value (CH5) |
+ else if (s_exdata[1] == -125 && s_exdata[2] == 125) s_update(5,125); // Reconstruct tripole Flight-Mode value (CH5) |
+ s_update(6,s_exdata[3]); // Elevator (CH6) |
+ s_update(11,s_exdata[4]); // Aileron (CH11) |
+ s_update(12,s_exdata[5]); // Rudder (CH12) |
+ |
+ if (s_excnt == 9) // New Mode (12 Channels) |
+ { |
+ if (s_exdata[7] == 125) s_update(8,PPM_in[8]+5); // Hover Pitch UP (CH8) |
+ if (s_exdata[8] == 125) s_update(8,PPM_in[8]-5); // Hover Pitch DN (CH8) |
+ if (PPM_in[8] < -125) PPM_in[8] = -125; // Range-Limit |
+ else if (PPM_in[8] > 125) PPM_in[8] = 125; // Range-Limit |
+ s_update(10,s_exdata[6]); // AUX2 (CH10) |
+ } |
+ } |
+ |
+ s_excnt = 0; // Reset bitcounter |
+ s_exparity = 0; // Reset parity bit |
+ } |
+ |
+ if (signal < 10) s_exdata[++s_excnt] = -125; // Bit = 0 -> value = -125 (min) |
+ if (s_excnt == 10) s_excnt = 0; // Overflow protection |
+ if (signal < -100) |
+ { |
+ s_exdata[s_excnt] = 125; // Bit = 1 -> value = 125 (max) |
+ s_exparity = ~s_exparity; // Bit = 1 -> Invert parity bit |
+ } |
+ |
+ } |
+ |
+ if (index < 5 ) s_update(index,tmp); // Update normal potis (CH1-4) |
+ else if (index == 5) s_update(7,signal); // Gear (CH7) |
+ else if (index == 7) s_update(9,signal); // Hover Throttle (CH9) |
+ |
+#elif defined RECEIVER_SPEKTRUM_DX8EXP |
+ if(index == 6) // FLIGHT-MODE - The channel used for our data uplink |
+ { |
+ if (signal > 100) // SYNC received |
+ { |
+ if (s_exdata[s_excnt] == 125) s_exparity = ~s_exparity; // Bit = 1 -> Re-Invert parity bit |
+ if (s_excnt == 9 && ((s_exparity == 0 && s_exdata[s_excnt] == -125) || (s_exparity != 0 && s_exdata[s_excnt] == 125))) // Parity check |
+ { |
+ if (s_exdata[1] == 125 && s_exdata[2] == -125) s_update(5,-125); // Reconstruct tripole Flight-Mode value (CH5) |
+ else if (s_exdata[1] == -125 && s_exdata[2] == -125) s_update(5,0); // Reconstruct tripole Flight-Mode value (CH5) |
+ else if (s_exdata[1] == -125 && s_exdata[2] == 125) s_update(5,125); // Reconstruct tripole Flight-Mode value (CH5) |
+ |
+ if (s_exdata[3] == 125 && s_exdata[6] == -125) s_update(6,125); // Reconstruct tripole Elev D/R value (CH6) |
+ else if (s_exdata[3] == -125 && s_exdata[6] == -125) s_update(6,0); // Reconstruct tripole Elev D/R value (CH6) |
+ else if (s_exdata[3] == -125 && s_exdata[6] == 125) s_update(6,-125); // Reconstruct tripole Elev D/R value (CH6) |
+ |
+ |
+ if (s_exdata[7] == 125 && s_exdata[8] == -125) s_update(9,-125); // Reconstruct tripole AIL D/R value (CH9) |
+ else if (s_exdata[7] == -125 && s_exdata[8] == -125) s_update(9,0); // Reconstruct tripole AIL D/R value (CH9) |
+ else if (s_exdata[7] == -125 && s_exdata[8] == 125) s_update(9,125); // Reconstruct tripole AIL D/R value (CH9) |
+ |
+ s_update(10,s_exdata[5]); // Gear (CH10) |
+ s_update(12,s_exdata[4]); // Mix (CH12) |
+ } |
+ |
+ s_excnt = 0; // Reset bitcounter |
+ s_exparity = 0; // Reset parity bit |
+ } |
+ |
+ if (signal < 10) s_exdata[++s_excnt] = -125; // Bit = 0 -> value = -125 (min) |
+ if (s_excnt == 10) s_excnt = 0; // Overflow protection |
+ if (signal < -100) |
+ { |
+ s_exdata[s_excnt] = 125; // Bit = 1 -> value = 125 (max) |
+ s_exparity = ~s_exparity; // Bit = 1 -> Invert parity bit |
+ } |
+ |
+ } |
+ |
+ if (index < 5 ) s_update(index,tmp); // Update normal potis (CH1-4) |
+ else if (index == 7) s_update(7,signal); // R Trim (CH7) |
+ else if (index == 5) s_update(8,signal); // AUX2 (CH8) |
+ else if (index == 8) s_update(11,signal); // AUX3 (CH11) |
+ |
+#else |
+ if(SenderOkay >= 180) PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3; |
+ else PPM_diff[index] = 0; |
+ PPM_in[index] = tmp; |
+#endif |
+ } |
+ else if(index > 17) ReSync = 1; // hier stimmt was nicht: neu synchronisieren |
+ } |
+ else |
+ { |
+ // hier stimmt was nicht: neu synchronisieren |
+ ReSync = 1; |
+ FrameCnt = 0; |
+ Frame2 = 0; |
+ // new frame next, nach fruehestens 7ms erwartet |
+ SpektrumTimer = MIN_FRAMEGAP; |
+ } |
+ |
+ // 16 Bytes eingetroffen -> Komplett |
+ if(FrameCnt >= 16) |
+ { |
+ // Frame complete |
+ if(Frame2 == 0) |
+ { |
+ // Null bedeutet: Neue Daten |
+ // nur beim ersten Frame (CH 0-7) setzen |
+ if(!ReSync) NewPpmData = 0; |
+ } |
+ FrameCnt = 0; |
+ Frame2 = 0; |
+ Sync = 0; |
+ SpektrumTimer = MIN_FRAMEGAP; |
+ } |
+ } |
+} |
+ |
+ |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/Spektrum.h |
---|
0,0 → 1,12 |
/*####################################################################################### |
Dekodieren eines Spektrum Signals |
#######################################################################################*/ |
#ifndef _SPEKTRUM_H |
#define _SPEKTRUM_H |
void SpektrumUartInit(void); |
void SpektrumBinding(void); |
extern unsigned char SpektrumTimer; |
extern void SpektrumParser(unsigned char c); |
#endif //_RC_H |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/Spektrum.lst |
---|
0,0 → 1,707 |
1 .file "Spektrum.c" |
2 .arch atmega1284p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .global s_exparity |
11 .global s_exparity |
12 .section .bss |
15 s_exparity: |
16 0000 00 .skip 1,0 |
17 .global s_excnt |
18 .global s_excnt |
21 s_excnt: |
22 0001 00 .skip 1,0 |
23 .global SpektrumTimer |
24 .global SpektrumTimer |
27 SpektrumTimer: |
28 0002 00 .skip 1,0 |
29 .text |
30 .global s_update |
32 s_update: |
33 /* prologue: frame size=0 */ |
34 0000 0F93 push r16 |
35 0002 1F93 push r17 |
36 0004 CF93 push r28 |
37 0006 DF93 push r29 |
38 /* prologue end (size=4) */ |
39 0008 482F mov r20,r24 |
40 000a EB01 movw r28,r22 |
41 000c 8091 0000 lds r24,SenderOkay |
42 0010 E42F mov r30,r20 |
43 0012 FF27 clr r31 |
44 0014 843B cpi r24,lo8(-76) |
45 0016 00F0 brlo .L2 |
46 0018 8F01 movw r16,r30 |
47 001a 0E0F add r16,r30 |
48 001c 1F1F adc r17,r31 |
49 001e F801 movw r30,r16 |
50 0020 E050 subi r30,lo8(-(PPM_in)) |
51 0022 F040 sbci r31,hi8(-(PPM_in)) |
52 0024 8081 ld r24,Z |
53 0026 9181 ldd r25,Z+1 |
54 0028 9B01 movw r18,r22 |
55 002a 281B sub r18,r24 |
56 002c 390B sbc r19,r25 |
57 002e C901 movw r24,r18 |
58 0030 63E0 ldi r22,lo8(3) |
59 0032 70E0 ldi r23,hi8(3) |
60 0034 0E94 0000 call __divmodhi4 |
61 0038 CB01 movw r24,r22 |
62 003a 880F lsl r24 |
63 003c 991F rol r25 |
64 003e 860F add r24,r22 |
65 0040 971F adc r25,r23 |
66 0042 0050 subi r16,lo8(-(PPM_diff)) |
67 0044 1040 sbci r17,hi8(-(PPM_diff)) |
68 0046 F801 movw r30,r16 |
69 0048 9183 std Z+1,r25 |
70 004a 8083 st Z,r24 |
71 004c 00C0 rjmp .L3 |
72 .L2: |
73 004e EE0F add r30,r30 |
74 0050 FF1F adc r31,r31 |
75 0052 E050 subi r30,lo8(-(PPM_diff)) |
76 0054 F040 sbci r31,hi8(-(PPM_diff)) |
77 0056 1182 std Z+1,__zero_reg__ |
78 0058 1082 st Z,__zero_reg__ |
79 .L3: |
80 005a E42F mov r30,r20 |
81 005c FF27 clr r31 |
82 005e EE0F add r30,r30 |
83 0060 FF1F adc r31,r31 |
84 0062 E050 subi r30,lo8(-(PPM_in)) |
85 0064 F040 sbci r31,hi8(-(PPM_in)) |
86 0066 D183 std Z+1,r29 |
87 0068 C083 st Z,r28 |
88 /* epilogue: frame size=0 */ |
89 006a DF91 pop r29 |
90 006c CF91 pop r28 |
91 006e 1F91 pop r17 |
92 0070 0F91 pop r16 |
93 0072 0895 ret |
94 /* epilogue end (size=5) */ |
95 /* function s_update size 58 (49) */ |
97 .global SpektrumUartInit |
99 SpektrumUartInit: |
100 /* prologue: frame size=0 */ |
101 /* prologue end (size=0) */ |
102 0074 4FB7 in r20,95-0x20 |
103 0076 24E1 ldi r18,lo8(20) |
104 0078 30E0 ldi r19,hi8(20) |
105 /* #APP */ |
106 007a F894 cli |
107 /* #NOAPP */ |
108 007c 8091 C900 lds r24,201 |
109 0080 8F77 andi r24,lo8(127) |
110 0082 8093 C900 sts 201,r24 |
111 0086 8091 C900 lds r24,201 |
112 008a 8F7B andi r24,lo8(-65) |
113 008c 8093 C900 sts 201,r24 |
114 0090 8091 C900 lds r24,201 |
115 0094 8F7D andi r24,lo8(-33) |
116 0096 8093 C900 sts 201,r24 |
117 009a 5A9A sbi 43-0x20,2 |
118 009c 5298 cbi 42-0x20,2 |
119 009e 5B9A sbi 43-0x20,3 |
120 00a0 539A sbi 42-0x20,3 |
121 00a2 832F mov r24,r19 |
122 00a4 9927 clr r25 |
123 00a6 8093 CD00 sts 205,r24 |
124 00aa 2093 CC00 sts 204,r18 |
125 00ae 8091 C800 lds r24,200 |
126 00b2 8260 ori r24,lo8(2) |
127 00b4 8093 C800 sts 200,r24 |
128 00b8 80E1 ldi r24,lo8(16) |
129 00ba 8093 C900 sts 201,r24 |
130 00be 8091 CA00 lds r24,202 |
131 00c2 8F77 andi r24,lo8(127) |
132 00c4 8093 CA00 sts 202,r24 |
133 00c8 8091 CA00 lds r24,202 |
134 00cc 8F7B andi r24,lo8(-65) |
135 00ce 8093 CA00 sts 202,r24 |
136 00d2 8091 CA00 lds r24,202 |
137 00d6 8F7D andi r24,lo8(-33) |
138 00d8 8093 CA00 sts 202,r24 |
139 00dc 8091 CA00 lds r24,202 |
140 00e0 8F7E andi r24,lo8(-17) |
141 00e2 8093 CA00 sts 202,r24 |
142 00e6 8091 CA00 lds r24,202 |
143 00ea 877F andi r24,lo8(-9) |
144 00ec 8093 CA00 sts 202,r24 |
145 00f0 8091 C900 lds r24,201 |
146 00f4 8B7F andi r24,lo8(-5) |
147 00f6 8093 C900 sts 201,r24 |
148 00fa 8091 CA00 lds r24,202 |
149 00fe 8460 ori r24,lo8(4) |
150 0100 8093 CA00 sts 202,r24 |
151 0104 8091 CA00 lds r24,202 |
152 0108 8260 ori r24,lo8(2) |
153 010a 8093 CA00 sts 202,r24 |
154 .L10: |
155 010e 8091 C800 lds r24,200 |
156 0112 87FF sbrs r24,7 |
157 0114 00C0 rjmp .L9 |
158 0116 8091 CE00 lds r24,206 |
159 011a 00C0 rjmp .L10 |
160 .L9: |
161 011c 8091 C900 lds r24,201 |
162 0120 8068 ori r24,lo8(-128) |
163 0122 8093 C900 sts 201,r24 |
164 0126 4FBF out 95-0x20,r20 |
165 /* epilogue: frame size=0 */ |
166 0128 0895 ret |
167 /* epilogue end (size=1) */ |
168 /* function SpektrumUartInit size 92 (91) */ |
170 .lcomm Sync.0,1 |
171 .lcomm FrameCnt.1,1 |
172 .lcomm ByteHigh.2,1 |
173 .data |
176 ReSync.3: |
177 0000 01 .byte 1 |
178 .lcomm Frame2.4,1 |
179 .text |
180 .global SpektrumParser |
182 SpektrumParser: |
183 /* prologue: frame size=0 */ |
184 012a EF92 push r14 |
185 012c FF92 push r15 |
186 012e 0F93 push r16 |
187 0130 1F93 push r17 |
188 0132 CF93 push r28 |
189 0134 DF93 push r29 |
190 /* prologue end (size=6) */ |
191 0136 482F mov r20,r24 |
192 0138 00E0 ldi r16,lo8(0) |
193 013a 10E0 ldi r17,hi8(0) |
194 013c 8091 0000 lds r24,ReSync.3 |
195 0140 8130 cpi r24,lo8(1) |
196 0142 01F4 brne .L12 |
197 0144 1092 0000 sts ReSync.3,__zero_reg__ |
198 0148 84E4 ldi r24,lo8(68) |
199 014a 8093 0000 sts SpektrumTimer,r24 |
200 014e 1092 0000 sts FrameCnt.1,__zero_reg__ |
201 0152 1092 0000 sts Sync.0,__zero_reg__ |
202 0156 1092 0000 sts ByteHigh.2,__zero_reg__ |
203 015a 00C0 rjmp .L11 |
204 .L12: |
205 015c 8091 0000 lds r24,SpektrumTimer |
206 0160 8823 tst r24 |
207 0162 01F4 brne .L14 |
208 0164 21E0 ldi r18,lo8(1) |
209 0166 30E0 ldi r19,hi8(1) |
210 0168 00C0 rjmp .L15 |
211 .L14: |
212 016a 9801 movw r18,r16 |
213 .L15: |
214 016c 9091 0000 lds r25,Sync.0 |
215 0170 9923 tst r25 |
216 0172 01F4 brne .L16 |
217 0174 232B or r18,r19 |
218 0176 01F0 breq .L17 |
219 0178 81E0 ldi r24,lo8(1) |
220 017a 00C0 rjmp .L87 |
221 .L17: |
222 017c 84E4 ldi r24,lo8(68) |
223 017e 8093 0000 sts SpektrumTimer,r24 |
224 0182 9093 0000 sts FrameCnt.1,r25 |
225 0186 9093 0000 sts Sync.0,r25 |
226 018a 9093 0000 sts ByteHigh.2,r25 |
227 018e 00C0 rjmp .L19 |
228 .L16: |
229 0190 9130 cpi r25,lo8(1) |
230 0192 01F4 brne .L20 |
231 0194 232B or r18,r19 |
232 0196 01F0 breq .+2 |
233 0198 00C0 rjmp .L26 |
234 019a 82E0 ldi r24,lo8(2) |
235 .L87: |
236 019c 8093 0000 sts Sync.0,r24 |
237 01a0 8091 0000 lds r24,FrameCnt.1 |
238 01a4 8F5F subi r24,lo8(-(1)) |
239 01a6 8093 0000 sts FrameCnt.1,r24 |
240 01aa 83E0 ldi r24,lo8(3) |
241 01ac 00C0 rjmp .L85 |
242 .L20: |
243 01ae 9230 cpi r25,lo8(2) |
244 01b0 01F4 brne .L22 |
245 01b2 232B or r18,r19 |
246 01b4 01F0 breq .+2 |
247 01b6 00C0 rjmp .L26 |
248 01b8 83E0 ldi r24,lo8(3) |
249 01ba 8093 0000 sts SpektrumTimer,r24 |
250 01be 4093 0000 sts ByteHigh.2,r20 |
251 01c2 9091 0000 lds r25,FrameCnt.1 |
252 01c6 9230 cpi r25,lo8(2) |
253 01c8 01F4 brne .L23 |
254 01ca 1092 0000 sts Frame2.4,__zero_reg__ |
255 01ce 47FF sbrs r20,7 |
256 01d0 00C0 rjmp .L23 |
257 01d2 81E0 ldi r24,lo8(1) |
258 01d4 8093 0000 sts Frame2.4,r24 |
259 .L23: |
260 01d8 83E0 ldi r24,lo8(3) |
261 01da 8093 0000 sts Sync.0,r24 |
262 01de 9F5F subi r25,lo8(-(1)) |
263 01e0 9093 0000 sts FrameCnt.1,r25 |
264 01e4 00C0 rjmp .L19 |
265 .L22: |
266 01e6 9330 cpi r25,lo8(3) |
267 01e8 01F0 breq .+2 |
268 01ea 00C0 rjmp .L26 |
269 01ec 232B or r18,r19 |
270 01ee 01F0 breq .+2 |
271 01f0 00C0 rjmp .L26 |
272 01f2 9093 0000 sts SpektrumTimer,r25 |
273 01f6 82E0 ldi r24,lo8(2) |
274 01f8 8093 0000 sts Sync.0,r24 |
275 01fc 8091 0000 lds r24,FrameCnt.1 |
276 0200 8F5F subi r24,lo8(-(1)) |
277 0202 8093 0000 sts FrameCnt.1,r24 |
278 0206 2091 0000 lds r18,ByteHigh.2 |
279 020a 822F mov r24,r18 |
280 020c 9927 clr r25 |
281 020e 782F mov r23,r24 |
282 0210 6627 clr r22 |
283 0212 842F mov r24,r20 |
284 0214 9927 clr r25 |
285 0216 682B or r22,r24 |
286 0218 792B or r23,r25 |
287 021a 8091 0000 lds r24,EE_Parameter+39 |
288 021e 8130 cpi r24,lo8(1) |
289 0220 01F4 brne .L27 |
290 0222 7370 andi r23,hi8(1023) |
291 0224 CB01 movw r24,r22 |
292 0226 8050 subi r24,lo8(-(-512)) |
293 0228 9240 sbci r25,hi8(-(-512)) |
294 022a 63E0 ldi r22,lo8(3) |
295 022c 70E0 ldi r23,hi8(3) |
296 022e 0E94 0000 call __divmodhi4 |
297 0232 EB01 movw r28,r22 |
298 0234 00C0 rjmp .L86 |
299 .L27: |
300 0236 8230 cpi r24,lo8(2) |
301 0238 01F4 brne .L29 |
302 023a 7770 andi r23,hi8(2047) |
303 023c CB01 movw r24,r22 |
304 023e 8050 subi r24,lo8(-(-1024)) |
305 0240 9440 sbci r25,hi8(-(-1024)) |
306 0242 66E0 ldi r22,lo8(6) |
307 0244 70E0 ldi r23,hi8(6) |
308 0246 0E94 0000 call __divmodhi4 |
309 024a EB01 movw r28,r22 |
310 024c 2695 lsr r18 |
311 024e 2695 lsr r18 |
312 0250 2695 lsr r18 |
313 0252 00C0 rjmp .L81 |
314 .L29: |
315 0254 EB01 movw r28,r22 |
316 0256 D370 andi r29,hi8(1023) |
317 0258 C856 subi r28,lo8(-(-360)) |
318 025a D140 sbci r29,hi8(-(-360)) |
319 025c CE01 movw r24,r28 |
320 025e D7FD sbrc r29,7 |
321 0260 0196 adiw r24,1 |
322 .L31: |
323 0262 EC01 movw r28,r24 |
324 0264 D595 asr r29 |
325 0266 C795 ror r28 |
326 .L86: |
327 0268 2695 lsr r18 |
328 026a 2695 lsr r18 |
329 .L81: |
330 026c 022F mov r16,r18 |
331 026e 1127 clr r17 |
332 0270 0F70 andi r16,lo8(15) |
333 0272 1070 andi r17,hi8(15) |
334 0274 0F5F subi r16,lo8(-(1)) |
335 0276 1F4F sbci r17,hi8(-(1)) |
336 0278 0D30 cpi r16,13 |
337 027a 1105 cpc r17,__zero_reg__ |
338 027c 00F0 brlo .+2 |
339 027e 00C0 rjmp .L32 |
340 0280 0230 cpi r16,2 |
341 0282 1105 cpc r17,__zero_reg__ |
342 0284 01F4 brne .L33 |
343 0286 04E0 ldi r16,lo8(4) |
344 0288 10E0 ldi r17,hi8(4) |
345 028a 00C0 rjmp .L34 |
346 .L33: |
347 028c 0430 cpi r16,4 |
348 028e 1105 cpc r17,__zero_reg__ |
349 0290 01F4 brne .L34 |
350 0292 02E0 ldi r16,lo8(2) |
351 0294 10E0 ldi r17,hi8(2) |
352 .L34: |
353 0296 D801 movw r26,r16 |
354 0298 A00F add r26,r16 |
355 029a B11F adc r27,r17 |
356 029c FD01 movw r30,r26 |
357 029e E050 subi r30,lo8(-(PPM_in)) |
358 02a0 F040 sbci r31,hi8(-(PPM_in)) |
359 02a2 8081 ld r24,Z |
360 02a4 9181 ldd r25,Z+1 |
361 02a6 9E01 movw r18,r28 |
362 02a8 281B sub r18,r24 |
363 02aa 390B sbc r19,r25 |
364 02ac C901 movw r24,r18 |
365 02ae 37FF sbrs r19,7 |
366 02b0 00C0 rjmp .L37 |
367 02b2 9095 com r25 |
368 02b4 8195 neg r24 |
369 02b6 9F4F sbci r25,lo8(-1) |
370 .L37: |
371 02b8 0697 sbiw r24,6 |
372 02ba 04F4 brge .L36 |
373 02bc E091 0000 lds r30,EE_Parameter+105 |
374 02c0 EE23 tst r30 |
375 02c2 01F0 breq .L39 |
376 02c4 FF27 clr r31 |
377 02c6 EE0F add r30,r30 |
378 02c8 FF1F adc r31,r31 |
379 02ca E050 subi r30,lo8(-(PPM_in)) |
380 02cc F040 sbci r31,hi8(-(PPM_in)) |
381 02ce 8081 ld r24,Z |
382 02d0 9181 ldd r25,Z+1 |
383 02d2 8436 cpi r24,100 |
384 02d4 9105 cpc r25,__zero_reg__ |
385 02d6 04F4 brge .L36 |
386 .L39: |
387 02d8 8091 0000 lds r24,SenderOkay |
388 02dc 883C cpi r24,lo8(-56) |
389 02de 00F4 brsh .L40 |
390 02e0 8091 0000 lds r24,SenderOkay |
391 02e4 865F subi r24,lo8(-(10)) |
392 02e6 8093 0000 sts SenderOkay,r24 |
393 02ea 00C0 rjmp .L36 |
394 .L40: |
395 02ec 88EC ldi r24,lo8(-56) |
396 02ee 8093 0000 sts SenderOkay,r24 |
397 02f2 8091 6F00 lds r24,111 |
398 02f6 8F7D andi r24,lo8(-33) |
399 02f8 8093 6F00 sts 111,r24 |
400 .L36: |
401 02fc A050 subi r26,lo8(-(PPM_in)) |
402 02fe B040 sbci r27,hi8(-(PPM_in)) |
403 0300 8D91 ld r24,X+ |
404 0302 9C91 ld r25,X |
405 0304 BC01 movw r22,r24 |
406 0306 660F lsl r22 |
407 0308 771F rol r23 |
408 030a 680F add r22,r24 |
409 030c 791F adc r23,r25 |
410 030e 6C0F add r22,r28 |
411 0310 7D1F adc r23,r29 |
412 0312 77FF sbrs r23,7 |
413 0314 00C0 rjmp .L42 |
414 0316 6D5F subi r22,lo8(-(3)) |
415 0318 7F4F sbci r23,hi8(-(3)) |
416 .L42: |
417 031a 7B01 movw r14,r22 |
418 031c F594 asr r15 |
419 031e E794 ror r14 |
420 0320 F594 asr r15 |
421 0322 E794 ror r14 |
422 0324 CE01 movw r24,r28 |
423 0326 0196 adiw r24,1 |
424 0328 8E15 cp r24,r14 |
425 032a 9F05 cpc r25,r15 |
426 032c 04F4 brge .L43 |
427 032e 0894 sec |
428 0330 E108 sbc r14,__zero_reg__ |
429 0332 F108 sbc r15,__zero_reg__ |
430 0334 00C0 rjmp .L44 |
431 .L43: |
432 0336 CE01 movw r24,r28 |
433 0338 0197 sbiw r24,1 |
434 033a E816 cp r14,r24 |
435 033c F906 cpc r15,r25 |
436 033e 04F4 brge .L44 |
437 0340 0894 sec |
438 0342 E11C adc r14,__zero_reg__ |
439 0344 F11C adc r15,__zero_reg__ |
440 .L44: |
441 0346 0630 cpi r16,6 |
442 0348 1105 cpc r17,__zero_reg__ |
443 034a 01F0 breq .+2 |
444 034c 00C0 rjmp .L46 |
445 034e C536 cpi r28,101 |
446 0350 D105 cpc r29,__zero_reg__ |
447 0352 04F4 brge .+2 |
448 0354 00C0 rjmp .L47 |
449 0356 9091 0000 lds r25,s_excnt |
450 035a E92F mov r30,r25 |
451 035c FF27 clr r31 |
452 035e E050 subi r30,lo8(-(s_exdata)) |
453 0360 F040 sbci r31,hi8(-(s_exdata)) |
454 0362 E081 ld r30,Z |
455 0364 ED37 cpi r30,lo8(125) |
456 0366 01F4 brne .L48 |
457 0368 8091 0000 lds r24,s_exparity |
458 036c 8095 com r24 |
459 036e 8093 0000 sts s_exparity,r24 |
460 .L48: |
461 0372 9630 cpi r25,lo8(6) |
462 0374 01F4 brne .L51 |
463 0376 8091 0000 lds r24,s_exparity |
464 037a 8823 tst r24 |
465 037c 01F0 breq .L52 |
466 037e E338 cpi r30,lo8(-125) |
467 0380 01F0 breq .L50 |
468 .L52: |
469 0382 8823 tst r24 |
470 0384 01F0 breq .+2 |
471 0386 00C0 rjmp .L49 |
472 0388 ED37 cpi r30,lo8(125) |
473 038a 01F0 breq .L50 |
474 038c 00C0 rjmp .L49 |
475 .L51: |
476 038e 9930 cpi r25,lo8(9) |
477 0390 01F0 breq .+2 |
478 0392 00C0 rjmp .L49 |
479 0394 8091 0000 lds r24,s_exparity |
480 0398 8823 tst r24 |
481 039a 01F4 brne .L80 |
482 039c 8091 0000 lds r24,s_exdata+9 |
483 03a0 8338 cpi r24,lo8(-125) |
484 03a2 01F0 breq .L50 |
485 03a4 00C0 rjmp .L49 |
486 .L80: |
487 03a6 8091 0000 lds r24,s_exdata+9 |
488 03aa 8D37 cpi r24,lo8(125) |
489 03ac 01F0 breq .+2 |
490 03ae 00C0 rjmp .L49 |
491 .L50: |
492 03b0 8091 0000 lds r24,s_exdata+1 |
493 03b4 8D37 cpi r24,lo8(125) |
494 03b6 01F4 brne .L54 |
495 03b8 8091 0000 lds r24,s_exdata+2 |
496 03bc 8338 cpi r24,lo8(-125) |
497 03be 01F4 brne .L55 |
498 03c0 63E8 ldi r22,lo8(-125) |
499 03c2 7FEF ldi r23,hi8(-125) |
500 03c4 00C0 rjmp .L82 |
501 .L54: |
502 03c6 8338 cpi r24,lo8(-125) |
503 03c8 01F4 brne .L55 |
504 03ca 8091 0000 lds r24,s_exdata+2 |
505 03ce 8338 cpi r24,lo8(-125) |
506 03d0 01F4 brne .L79 |
507 03d2 60E0 ldi r22,lo8(0) |
508 03d4 70E0 ldi r23,hi8(0) |
509 03d6 00C0 rjmp .L82 |
510 .L79: |
511 03d8 8D37 cpi r24,lo8(125) |
512 03da 01F4 brne .L55 |
513 03dc 6DE7 ldi r22,lo8(125) |
514 03de 70E0 ldi r23,hi8(125) |
515 .L82: |
516 03e0 85E0 ldi r24,lo8(5) |
517 03e2 0E94 0000 call s_update |
518 .L55: |
519 03e6 8091 0000 lds r24,s_exdata+3 |
520 03ea 9927 clr r25 |
521 03ec 87FD sbrc r24,7 |
522 03ee 9095 com r25 |
523 03f0 BC01 movw r22,r24 |
524 03f2 86E0 ldi r24,lo8(6) |
525 03f4 0E94 0000 call s_update |
526 03f8 8091 0000 lds r24,s_exdata+4 |
527 03fc 9927 clr r25 |
528 03fe 87FD sbrc r24,7 |
529 0400 9095 com r25 |
530 0402 BC01 movw r22,r24 |
531 0404 8BE0 ldi r24,lo8(11) |
532 0406 0E94 0000 call s_update |
533 040a 8091 0000 lds r24,s_exdata+5 |
534 040e 9927 clr r25 |
535 0410 87FD sbrc r24,7 |
536 0412 9095 com r25 |
537 0414 BC01 movw r22,r24 |
538 0416 8CE0 ldi r24,lo8(12) |
539 0418 0E94 0000 call s_update |
540 041c 8091 0000 lds r24,s_excnt |
541 0420 8930 cpi r24,lo8(9) |
542 0422 01F4 brne .L49 |
543 0424 8091 0000 lds r24,s_exdata+7 |
544 0428 8D37 cpi r24,lo8(125) |
545 042a 01F4 brne .L60 |
546 042c 8091 0000 lds r24,PPM_in+16 |
547 0430 9091 0000 lds r25,(PPM_in+16)+1 |
548 0434 0596 adiw r24,5 |
549 0436 BC01 movw r22,r24 |
550 0438 88E0 ldi r24,lo8(8) |
551 043a 0E94 0000 call s_update |
552 .L60: |
553 043e 8091 0000 lds r24,s_exdata+8 |
554 0442 8D37 cpi r24,lo8(125) |
555 0444 01F4 brne .L61 |
556 0446 8091 0000 lds r24,PPM_in+16 |
557 044a 9091 0000 lds r25,(PPM_in+16)+1 |
558 044e 0597 sbiw r24,5 |
559 0450 BC01 movw r22,r24 |
560 0452 88E0 ldi r24,lo8(8) |
561 0454 0E94 0000 call s_update |
562 .L61: |
563 0458 8091 0000 lds r24,PPM_in+16 |
564 045c 9091 0000 lds r25,(PPM_in+16)+1 |
565 0460 8358 subi r24,lo8(-125) |
566 0462 9F4F sbci r25,hi8(-125) |
567 0464 04F4 brge .L62 |
568 0466 83E8 ldi r24,lo8(-125) |
569 0468 9FEF ldi r25,hi8(-125) |
570 046a 00C0 rjmp .L83 |
571 .L62: |
572 046c 8091 0000 lds r24,PPM_in+16 |
573 0470 9091 0000 lds r25,(PPM_in+16)+1 |
574 0474 8E37 cpi r24,126 |
575 0476 9105 cpc r25,__zero_reg__ |
576 0478 04F0 brlt .L63 |
577 047a 8DE7 ldi r24,lo8(125) |
578 047c 90E0 ldi r25,hi8(125) |
579 .L83: |
580 047e 9093 0000 sts (PPM_in+16)+1,r25 |
581 0482 8093 0000 sts PPM_in+16,r24 |
582 .L63: |
583 0486 8091 0000 lds r24,s_exdata+6 |
584 048a 9927 clr r25 |
585 048c 87FD sbrc r24,7 |
586 048e 9095 com r25 |
587 0490 BC01 movw r22,r24 |
588 0492 8AE0 ldi r24,lo8(10) |
589 0494 0E94 0000 call s_update |
590 .L49: |
591 0498 1092 0000 sts s_excnt,__zero_reg__ |
592 049c 1092 0000 sts s_exparity,__zero_reg__ |
593 .L47: |
594 04a0 CA30 cpi r28,10 |
595 04a2 D105 cpc r29,__zero_reg__ |
596 04a4 04F4 brge .L65 |
597 04a6 8091 0000 lds r24,s_excnt |
598 04aa 8F5F subi r24,lo8(-(1)) |
599 04ac 8093 0000 sts s_excnt,r24 |
600 04b0 E82F mov r30,r24 |
601 04b2 FF27 clr r31 |
602 04b4 E050 subi r30,lo8(-(s_exdata)) |
603 04b6 F040 sbci r31,hi8(-(s_exdata)) |
604 04b8 83E8 ldi r24,lo8(-125) |
605 04ba 8083 st Z,r24 |
606 .L65: |
607 04bc 8091 0000 lds r24,s_excnt |
608 04c0 8A30 cpi r24,lo8(10) |
609 04c2 01F4 brne .L66 |
610 04c4 1092 0000 sts s_excnt,__zero_reg__ |
611 .L66: |
612 04c8 8FEF ldi r24,hi8(-100) |
613 04ca CC39 cpi r28,lo8(-100) |
614 04cc D807 cpc r29,r24 |
615 04ce 04F4 brge .L46 |
616 04d0 8091 0000 lds r24,s_excnt |
617 04d4 E82F mov r30,r24 |
618 04d6 FF27 clr r31 |
619 04d8 E050 subi r30,lo8(-(s_exdata)) |
620 04da F040 sbci r31,hi8(-(s_exdata)) |
621 04dc 8DE7 ldi r24,lo8(125) |
622 04de 8083 st Z,r24 |
623 04e0 8091 0000 lds r24,s_exparity |
624 04e4 8095 com r24 |
625 04e6 8093 0000 sts s_exparity,r24 |
626 .L46: |
627 04ea 0530 cpi r16,5 |
628 04ec 1105 cpc r17,__zero_reg__ |
629 04ee 00F4 brsh .L68 |
630 04f0 B701 movw r22,r14 |
631 04f2 802F mov r24,r16 |
632 04f4 00C0 rjmp .L84 |
633 .L68: |
634 04f6 0530 cpi r16,5 |
635 04f8 1105 cpc r17,__zero_reg__ |
636 04fa 01F4 brne .L70 |
637 04fc BE01 movw r22,r28 |
638 04fe 87E0 ldi r24,lo8(7) |
639 0500 00C0 rjmp .L84 |
640 .L70: |
641 0502 0730 cpi r16,7 |
642 0504 1105 cpc r17,__zero_reg__ |
643 0506 01F4 brne .L19 |
644 0508 BE01 movw r22,r28 |
645 050a 89E0 ldi r24,lo8(9) |
646 .L84: |
647 050c 0E94 0000 call s_update |
648 0510 00C0 rjmp .L19 |
649 .L32: |
650 0512 0231 cpi r16,18 |
651 0514 1105 cpc r17,__zero_reg__ |
652 0516 00F0 brlo .L19 |
653 0518 81E0 ldi r24,lo8(1) |
654 051a 8093 0000 sts ReSync.3,r24 |
655 051e 00C0 rjmp .L19 |
656 .L26: |
657 0520 81E0 ldi r24,lo8(1) |
658 0522 8093 0000 sts ReSync.3,r24 |
659 0526 1092 0000 sts FrameCnt.1,__zero_reg__ |
660 052a 1092 0000 sts Frame2.4,__zero_reg__ |
661 052e 84E4 ldi r24,lo8(68) |
662 .L85: |
663 0530 8093 0000 sts SpektrumTimer,r24 |
664 .L19: |
665 0534 8091 0000 lds r24,FrameCnt.1 |
666 0538 8031 cpi r24,lo8(16) |
667 053a 00F0 brlo .L11 |
668 053c 8091 0000 lds r24,Frame2.4 |
669 0540 8823 tst r24 |
670 0542 01F4 brne .L77 |
671 0544 8091 0000 lds r24,ReSync.3 |
672 0548 8823 tst r24 |
673 054a 01F4 brne .L77 |
674 054c 8093 0000 sts NewPpmData,r24 |
675 .L77: |
676 0550 1092 0000 sts FrameCnt.1,__zero_reg__ |
677 0554 1092 0000 sts Frame2.4,__zero_reg__ |
678 0558 1092 0000 sts Sync.0,__zero_reg__ |
679 055c 84E4 ldi r24,lo8(68) |
680 055e 8093 0000 sts SpektrumTimer,r24 |
681 .L11: |
682 /* epilogue: frame size=0 */ |
683 0562 E6E0 ldi r30,6 |
684 0564 CDB7 in r28,__SP_L__ |
685 0566 DEB7 in r29,__SP_H__ |
686 0568 0C94 0000 jmp __epilogue_restores__+24 |
687 /* epilogue end (size=5) */ |
688 /* function SpektrumParser size 551 (540) */ |
690 .comm s_exdata,11,1 |
691 /* File "Spektrum.c": code 701 = 0x02bd ( 680), prologues 10, epilogues 11 */ |
DEFINED SYMBOLS |
*ABS*:00000000 Spektrum.c |
C:\Temp/cc1n5H0x.s:3 *ABS*:0000003f __SREG__ |
C:\Temp/cc1n5H0x.s:4 *ABS*:0000003e __SP_H__ |
C:\Temp/cc1n5H0x.s:5 *ABS*:0000003d __SP_L__ |
C:\Temp/cc1n5H0x.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Temp/cc1n5H0x.s:7 *ABS*:00000001 __zero_reg__ |
C:\Temp/cc1n5H0x.s:15 .bss:00000000 s_exparity |
C:\Temp/cc1n5H0x.s:21 .bss:00000001 s_excnt |
C:\Temp/cc1n5H0x.s:27 .bss:00000002 SpektrumTimer |
C:\Temp/cc1n5H0x.s:32 .text:00000000 s_update |
C:\Temp/cc1n5H0x.s:99 .text:00000074 SpektrumUartInit |
.bss:00000003 Sync.0 |
C:\Temp/cc1n5H0x.s:170 .bss:00000004 FrameCnt.1 |
C:\Temp/cc1n5H0x.s:171 .bss:00000005 ByteHigh.2 |
C:\Temp/cc1n5H0x.s:176 .data:00000000 ReSync.3 |
C:\Temp/cc1n5H0x.s:172 .bss:00000006 Frame2.4 |
C:\Temp/cc1n5H0x.s:182 .text:0000012a SpektrumParser |
*COM*:0000000b s_exdata |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
SenderOkay |
PPM_in |
__divmodhi4 |
PPM_diff |
EE_Parameter |
NewPpmData |
__epilogue_restores__ |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/analog.c |
---|
0,0 → 1,334 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software Nutzungsbedingungen (english version: see below) |
// + der Fa. HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland - nachfolgend Lizenzgeber genannt - |
// + Der Lizenzgeber räumt dem Kunden ein nicht-ausschließliches, zeitlich und räumlich* unbeschränktes Recht ein, die im den |
// + Mikrocontroller verwendete Firmware für die Hardware Flight-Ctrl, Navi-Ctrl, BL-Ctrl, MK3Mag & PC-Programm MikroKopter-Tool |
// + - nachfolgend Software genannt - nur für private Zwecke zu nutzen. |
// + Der Einsatz dieser Software ist nur auf oder mit Produkten des Lizenzgebers zulässig. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die vom Lizenzgeber gelieferte Software ist urheberrechtlich geschützt. Alle Rechte an der Software sowie an sonstigen im |
// + Rahmen der Vertragsanbahnung und Vertragsdurchführung überlassenen Unterlagen stehen im Verhältnis der Vertragspartner ausschließlich dem Lizenzgeber zu. |
// + Die in der Software enthaltenen Copyright-Vermerke, Markenzeichen, andere Rechtsvorbehalte, Seriennummern sowie |
// + sonstige der Programmidentifikation dienenden Merkmale dürfen vom Kunden nicht verändert oder unkenntlich gemacht werden. |
// + Der Kunde trifft angemessene Vorkehrungen für den sicheren Einsatz der Software. Er wird die Software gründlich auf deren |
// + Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Die Haftung des Lizenzgebers wird - soweit gesetzlich zulässig - begrenzt in Höhe des typischen und vorhersehbaren |
// + Schadens. Die gesetzliche Haftung bei Personenschäden und nach dem Produkthaftungsgesetz bleibt unberührt. Dem Lizenzgeber steht jedoch der Einwand |
// + des Mitverschuldens offen. |
// + Der Kunde trifft angemessene Vorkehrungen für den Fall, dass die Software ganz oder teilweise nicht ordnungsgemäß arbeitet. |
// + Er wird die Software gründlich auf deren Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Der Kunde wird er seine Daten vor Einsatz der Software nach dem Stand der Technik sichern. |
// + Der Kunde ist darüber unterrichtet, dass der Lizenzgeber seine Daten im zur Vertragsdurchführung erforderlichen Umfang |
// + und auf Grundlage der Datenschutzvorschriften erhebt, speichert, verarbeitet und, sofern notwendig, an Dritte übermittelt. |
// + *) Die räumliche Nutzung bezieht sich nur auf den Einsatzort, nicht auf die Reichweite der programmierten Software. |
// + #### ENDE DER NUTZUNGSBEDINGUNGEN ####' |
// + Hinweis: Informationen über erweiterte Nutzungsrechte (wie z.B. Nutzung für nicht-private Zwecke) sind auf Anfrage per Email an info(@)hisystems.de verfügbar. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software LICENSING TERMS |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + of HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland, Germany - the Licensor - |
// + The Licensor grants the customer a non-exclusive license to use the microcontroller firmware of the Flight-Ctrl, Navi-Ctrl, BL-Ctrl, and MK3Mag hardware |
// + (the Software) exclusively for private purposes. The License is unrestricted with respect to time and territory*. |
// + The Software may only be used with the Licensor's products. |
// + The Software provided by the Licensor is protected by copyright. With respect to the relationship between the parties to this |
// + agreement, all rights pertaining to the Software and other documents provided during the preparation and execution of this |
// + agreement shall be the property of the Licensor. |
// + The information contained in the Software copyright notices, trademarks, other legal reservations, serial numbers and other |
// + features that can be used to identify the program may not be altered or defaced by the customer. |
// + The customer shall be responsible for taking reasonable precautions |
// + for the safe use of the Software. The customer shall test the Software thoroughly regarding its suitability for the |
// + intended purpose before implementing it for actual operation. The Licensor's liability shall be limited to the extent of typical and |
// + foreseeable damage to the extent permitted by law, notwithstanding statutory liability for bodily injury and product |
// + liability. However, the Licensor shall be entitled to the defense of contributory negligence. |
// + The customer will take adequate precautions in the case, that the software is not working properly. The customer will test |
// + the software for his purpose before any operational usage. The customer will backup his data before using the software. |
// + The customer understands that the Licensor collects, stores and processes, and, where required, forwards, customer data |
// + to third parties to the extent necessary for executing the agreement, subject to applicable data protection and privacy regulations. |
// + *) The territory aspect only refers to the place where the Software is used, not its programmed range. |
// + #### END OF LICENSING TERMS #### |
// + Note: For information on license extensions (e.g. commercial use), please contact us at info(@)hisystems.de. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "eeprom.h" |
volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az, UBat = 100; |
volatile int AdWertNickFilter = 0, AdWertRollFilter = 0, AdWertGierFilter = 0; |
volatile int HiResNick = 2500, HiResRoll = 2500; |
volatile int AdWertNick = 0, AdWertRoll = 0, AdWertGier = 0; |
volatile int AdWertAccRoll = 0,AdWertAccNick = 0,AdWertAccHoch = 0; |
volatile long Luftdruck = 32000; |
volatile long SummenHoehe = 0; |
volatile int StartLuftdruck; |
volatile unsigned int MessLuftdruck = 1023; |
unsigned char DruckOffsetSetting; |
signed char ExpandBaro = 0; |
volatile int VarioMeter = 0; |
volatile unsigned int ZaehlMessungen = 0; |
unsigned char AnalogOffsetNick = 115,AnalogOffsetRoll = 115,AnalogOffsetGier = 115; |
volatile unsigned char AdReady = 1; |
//####################################################################################### |
void ADC_Init(void) |
//####################################################################################### |
{ |
ADMUX = 0;//Referenz ist extern |
ANALOG_ON; |
} |
#define DESIRED_H_ADC 800 |
void SucheLuftruckOffset(void) |
{ |
unsigned int off; |
ExpandBaro = 0; |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
{ |
unsigned char off2; |
OCR0A = 150; |
off2 = GetParamByte(PID_PRESSURE_OFFSET); |
if(off2 < 230) off2 += 10; |
OCR0B = off2; |
Delay_ms_Mess(100); |
if(MessLuftdruck > DESIRED_H_ADC) off2 = 240; |
for(; off2 >= 5; off2 -= 5) |
{ |
OCR0B = off2; |
Delay_ms_Mess(50); |
printf("*"); |
if(MessLuftdruck > DESIRED_H_ADC) break; |
} |
SetParamByte(PID_PRESSURE_OFFSET, off2); |
if(off2 >= 15) off = 140; else off = 0; |
for(; off < 250;off++) |
{ |
OCR0A = off; |
Delay_ms_Mess(50); |
printf("."); |
if(MessLuftdruck < DESIRED_H_ADC) break; |
} |
DruckOffsetSetting = off; |
} |
#else |
off = GetParamByte(PID_PRESSURE_OFFSET); |
if(off > 20) off -= 10; |
OCR0A = off; |
Delay_ms_Mess(100); |
if(MessLuftdruck < DESIRED_H_ADC) off = 0; |
for(; off < 250;off++) |
{ |
OCR0A = off; |
Delay_ms_Mess(50); |
printf("."); |
if(MessLuftdruck < DESIRED_H_ADC) break; |
} |
DruckOffsetSetting = off; |
SetParamByte(PID_PRESSURE_OFFSET, off); |
#endif |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) && (DruckOffsetSetting < 10 || DruckOffsetSetting >= 245)) VersionInfo.HardwareError[0] |= FC_ERROR0_PRESSURE; |
OCR0A = off; |
Delay_ms_Mess(300); |
} |
void SucheGyroOffset(void) |
{ |
unsigned char i, ready = 0; |
int timeout; |
timeout = SetDelay(2000); |
for(i=140; i != 0; i--) |
{ |
if(ready == 3 && i > 10) i = 9; |
ready = 0; |
if(AdWertNick < 1020) AnalogOffsetNick--; else if(AdWertNick > 1030) AnalogOffsetNick++; else ready++; |
if(AdWertRoll < 1020) AnalogOffsetRoll--; else if(AdWertRoll > 1030) AnalogOffsetRoll++; else ready++; |
if(AdWertGier < 1020) AnalogOffsetGier--; else if(AdWertGier > 1030) AnalogOffsetGier++; else ready++; |
I2C_Start(TWI_STATE_GYRO_OFFSET_TX); |
if(AnalogOffsetNick < 10) { VersionInfo.HardwareError[0] |= FC_ERROR0_GYRO_NICK; AnalogOffsetNick = 10;}; if(AnalogOffsetNick > 245) { VersionInfo.HardwareError[0] |= FC_ERROR0_GYRO_NICK; AnalogOffsetNick = 245;}; |
if(AnalogOffsetRoll < 10) { VersionInfo.HardwareError[0] |= FC_ERROR0_GYRO_ROLL; AnalogOffsetRoll = 10;}; if(AnalogOffsetRoll > 245) { VersionInfo.HardwareError[0] |= FC_ERROR0_GYRO_ROLL; AnalogOffsetRoll = 245;}; |
if(AnalogOffsetGier < 10) { VersionInfo.HardwareError[0] |= FC_ERROR0_GYRO_YAW; AnalogOffsetGier = 10;}; if(AnalogOffsetGier > 245) { VersionInfo.HardwareError[0] |= FC_ERROR0_GYRO_YAW; AnalogOffsetGier = 245;}; |
while(twi_state) if(CheckDelay(timeout)) {printf("\n\r DAC or I2C ERROR! Check I2C, 3Vref, DAC and BL-Ctrl"); break;} |
AdReady = 0; |
ANALOG_ON; |
while(!AdReady); |
if(i<10) Delay_ms_Mess(10); |
} |
Delay_ms_Mess(70); |
} |
/* |
0 n |
1 r |
2 g |
3 y |
4 x |
5 n |
6 r |
7 u |
8 z |
9 L |
10 n |
11 r |
12 g |
13 y |
14 x |
15 n |
16 r |
17 L |
*/ |
//####################################################################################### |
// |
ISR(ADC_vect) |
//####################################################################################### |
{ |
static unsigned char kanal=0,state = 0; |
static signed char subcount = 0; |
static signed int gier1, roll1, nick1, nick_filter, roll_filter; |
static signed int accy, accx; |
static long tmpLuftdruck = 0; |
static char messanzahl_Druck = 0; |
switch(state++) |
{ |
case 0: |
nick1 = ADC; |
kanal = AD_ROLL; |
break; |
case 1: |
roll1 = ADC; |
kanal = AD_GIER; |
break; |
case 2: |
gier1 = ADC; |
kanal = AD_ACC_Y; |
break; |
case 3: |
Aktuell_ay = NeutralAccY - ADC; |
accy = Aktuell_ay; |
kanal = AD_ACC_X; |
break; |
case 4: |
Aktuell_ax = ADC - NeutralAccX; |
accx = Aktuell_ax; |
kanal = AD_NICK; |
break; |
case 5: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 6: |
roll1 += ADC; |
kanal = AD_UBAT; |
break; |
case 7: |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
if(EE_Parameter.ExtraConfig & CFG_3_3V_REFERENCE) UBat = (3 * UBat + (11 * ADC) / 30) / 4; // there were some single FC2.1 with 3.3V reference |
else |
#endif |
UBat = (3 * UBat + ADC / 3) / 4; |
kanal = AD_ACC_Z; |
break; |
case 8: |
AdWertAccHoch = (signed int) ADC - NeutralAccZ; |
if(AdWertAccHoch > 1) |
{ |
if(NeutralAccZ < 750) |
{ |
subcount += 5; |
if(modell_fliegt < 500) subcount += 10; |
} |
if(subcount > 100) { NeutralAccZ++; subcount -= 100;} |
} |
else if(AdWertAccHoch < -1) |
{ |
if(NeutralAccZ > 550) |
{ |
subcount -= 5; |
if(modell_fliegt < 500) subcount -= 10; |
if(subcount < -100) { NeutralAccZ--; subcount += 100;} |
} |
} |
// messanzahl_AccHoch = 1; |
Aktuell_az = ADC; |
Mess_Integral_Hoch += AdWertAccHoch; // Integrieren |
Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen |
kanal = AD_DRUCK; |
break; |
// "case 9:" fehlt hier absichtlich |
case 10: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 11: |
roll1 += ADC; |
kanal = AD_GIER; |
break; |
case 12: |
if(PlatinenVersion == 10) AdWertGier = (ADC + gier1 + 1) / 2; |
else |
if(PlatinenVersion >= 20) AdWertGier = 2047 - (ADC + gier1); |
else AdWertGier = (ADC + gier1); |
kanal = AD_ACC_Y; |
break; |
case 13: |
Aktuell_ay = NeutralAccY - ADC; |
AdWertAccRoll = (Aktuell_ay + accy); |
kanal = AD_ACC_X; |
break; |
case 14: |
Aktuell_ax = ADC - NeutralAccX; |
AdWertAccNick = (Aktuell_ax + accx); |
kanal = AD_NICK; |
break; |
case 15: |
nick1 += ADC; |
if(PlatinenVersion == 10) nick1 *= 2; else nick1 *= 4; |
AdWertNick = nick1 / 8; |
nick_filter = (nick_filter + nick1) / 2; |
HiResNick = nick_filter - AdNeutralNick; |
AdWertNickFilter = (AdWertNickFilter + HiResNick) / 2; |
kanal = AD_ROLL; |
break; |
case 16: |
roll1 += ADC; |
if(PlatinenVersion == 10) roll1 *= 2; else roll1 *= 4; |
AdWertRoll = roll1 / 8; |
roll_filter = (roll_filter + roll1) / 2; |
HiResRoll = roll_filter - AdNeutralRoll; |
AdWertRollFilter = (AdWertRollFilter + HiResRoll) / 2; |
kanal = AD_DRUCK; |
break; |
case 17: |
state = 0; |
AdReady = 1; |
ZaehlMessungen++; |
// "break" fehlt hier absichtlich |
case 9: |
MessLuftdruck = ADC; |
tmpLuftdruck += MessLuftdruck; |
if(++messanzahl_Druck >= 16) // war bis 0.86 "18" |
{ |
signed int tmp; |
Luftdruck = (7 * Luftdruck + tmpLuftdruck - (16 * 523) * (long)ExpandBaro + 4) / 8; // -523.19 counts per 10 counts offset step |
HoehenWert = StartLuftdruck - Luftdruck; |
SummenHoehe -= SummenHoehe/SM_FILTER; |
SummenHoehe += HoehenWert; |
tmp = (HoehenWert - SummenHoehe/SM_FILTER); |
if(tmp > 1024) tmp = 1024; else if(tmp < -1024) tmp = -1024; |
if(abs(VarioMeter) > 700) VarioMeter = (15 * VarioMeter + 8 * tmp)/16; |
else VarioMeter = (31 * VarioMeter + 8 * tmp)/32; |
tmpLuftdruck /= 2; |
messanzahl_Druck = 16/2; |
} |
kanal = AD_NICK; |
break; |
default: |
kanal = 0; state = 0; kanal = AD_NICK; |
break; |
} |
ADMUX = kanal; |
if(state != 0) ANALOG_ON; |
} |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/analog.h |
---|
0,0 → 1,47 |
#ifndef _ANALOG_H |
#define _ANALOG_H |
/*####################################################################################### |
#######################################################################################*/ |
#define SM_FILTER 16 |
extern volatile int UBat; |
extern volatile int AdWertNick, AdWertRoll, AdWertGier; |
extern volatile int AdWertAccRoll,AdWertAccNick,AdWertAccHoch; |
extern volatile int HiResNick, HiResRoll; |
extern volatile int AdWertNickFilter, AdWertRollFilter, AdWertGierFilter; |
extern volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az; |
extern volatile long Luftdruck; |
extern volatile long SummenHoehe; |
extern volatile char messanzahl_Druck; |
extern volatile unsigned int ZaehlMessungen; |
extern unsigned char DruckOffsetSetting; |
extern signed char ExpandBaro; |
extern volatile int VarioMeter; |
extern volatile unsigned int MessLuftdruck; |
extern volatile int StartLuftdruck; |
extern volatile char MessanzahlNick; |
extern unsigned char AnalogOffsetNick,AnalogOffsetRoll,AnalogOffsetGier; |
extern volatile unsigned char AdReady; |
unsigned int ReadADC(unsigned char adc_input); |
void ADC_Init(void); |
void SucheLuftruckOffset(void); |
void SucheGyroOffset(void); |
#define AD_GIER 0 |
#define AD_ROLL 1 |
#define AD_NICK 2 |
#define AD_DRUCK 3 |
#define AD_UBAT 4 |
#define AD_ACC_Z 5 |
#define AD_ACC_Y 6 |
#define AD_ACC_X 7 |
#define ANALOG_OFF ADCSRA=0 |
#define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(0<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE) |
//Signle trigger Mode, Interrupt on |
#endif //_ANALOG_H |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/analog.lst |
---|
0,0 → 1,1412 |
1 .file "analog.c" |
2 .arch atmega1284p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .global AdReady |
11 .data |
14 AdReady: |
15 0000 01 .byte 1 |
16 .global AnalogOffsetGier |
19 AnalogOffsetGier: |
20 0001 73 .byte 115 |
21 .global AnalogOffsetRoll |
24 AnalogOffsetRoll: |
25 0002 73 .byte 115 |
26 .global AnalogOffsetNick |
29 AnalogOffsetNick: |
30 0003 73 .byte 115 |
31 .global ZaehlMessungen |
32 .global ZaehlMessungen |
33 .section .bss |
36 ZaehlMessungen: |
37 0000 0000 .skip 2,0 |
38 .global VarioMeter |
39 .global VarioMeter |
42 VarioMeter: |
43 0002 0000 .skip 2,0 |
44 .global ExpandBaro |
45 .global ExpandBaro |
48 ExpandBaro: |
49 0004 00 .skip 1,0 |
50 .global MessLuftdruck |
51 .data |
54 MessLuftdruck: |
55 0004 FF03 .word 1023 |
56 .global SummenHoehe |
57 .global SummenHoehe |
58 .section .bss |
61 SummenHoehe: |
62 0005 0000 0000 .skip 4,0 |
63 .global Luftdruck |
64 .data |
67 Luftdruck: |
68 0006 007D 0000 .long 32000 |
69 .global AdWertAccHoch |
70 .global AdWertAccHoch |
71 .section .bss |
74 AdWertAccHoch: |
75 0009 0000 .skip 2,0 |
76 .global AdWertAccNick |
77 .global AdWertAccNick |
80 AdWertAccNick: |
81 000b 0000 .skip 2,0 |
82 .global AdWertAccRoll |
83 .global AdWertAccRoll |
86 AdWertAccRoll: |
87 000d 0000 .skip 2,0 |
88 .global AdWertGier |
89 .global AdWertGier |
92 AdWertGier: |
93 000f 0000 .skip 2,0 |
94 .global AdWertRoll |
95 .global AdWertRoll |
98 AdWertRoll: |
99 0011 0000 .skip 2,0 |
100 .global AdWertNick |
101 .global AdWertNick |
104 AdWertNick: |
105 0013 0000 .skip 2,0 |
106 .global HiResRoll |
107 .data |
110 HiResRoll: |
111 000a C409 .word 2500 |
112 .global HiResNick |
115 HiResNick: |
116 000c C409 .word 2500 |
117 .global AdWertGierFilter |
118 .global AdWertGierFilter |
119 .section .bss |
122 AdWertGierFilter: |
123 0015 0000 .skip 2,0 |
124 .global AdWertRollFilter |
125 .global AdWertRollFilter |
128 AdWertRollFilter: |
129 0017 0000 .skip 2,0 |
130 .global AdWertNickFilter |
131 .global AdWertNickFilter |
134 AdWertNickFilter: |
135 0019 0000 .skip 2,0 |
136 .global UBat |
137 .data |
140 UBat: |
141 000e 6400 .word 100 |
142 .text |
143 .global ADC_Init |
145 ADC_Init: |
146 /* prologue: frame size=0 */ |
147 /* prologue end (size=0) */ |
148 0000 1092 7C00 sts 124,__zero_reg__ |
149 0004 8FEC ldi r24,lo8(-49) |
150 0006 8093 7A00 sts 122,r24 |
151 /* epilogue: frame size=0 */ |
152 000a 0895 ret |
153 /* epilogue end (size=1) */ |
154 /* function ADC_Init size 6 (5) */ |
156 .section .progmem.data,"a",@progbits |
159 __c.13: |
160 0000 2A00 .string "*" |
163 __c.14: |
164 0002 2E00 .string "." |
165 .text |
166 .global SucheLuftruckOffset |
168 SucheLuftruckOffset: |
169 /* prologue: frame size=0 */ |
170 000c CF93 push r28 |
171 000e DF93 push r29 |
172 /* prologue end (size=2) */ |
173 0010 1092 0000 sts ExpandBaro,__zero_reg__ |
174 0014 86E9 ldi r24,lo8(-106) |
175 0016 87BD out 71-0x20,r24 |
176 0018 83E0 ldi r24,lo8(3) |
177 001a 90E0 ldi r25,hi8(3) |
178 001c 0E94 0000 call GetParamByte |
179 0020 C82F mov r28,r24 |
180 0022 863E cpi r24,lo8(-26) |
181 0024 00F4 brsh .L3 |
182 0026 C65F subi r28,lo8(-(10)) |
183 .L3: |
184 0028 C8BD out 72-0x20,r28 |
185 002a 84E6 ldi r24,lo8(100) |
186 002c 90E0 ldi r25,hi8(100) |
187 002e 0E94 0000 call Delay_ms_Mess |
188 0032 8091 0000 lds r24,MessLuftdruck |
189 0036 9091 0000 lds r25,(MessLuftdruck)+1 |
190 003a 8152 subi r24,lo8(801) |
191 003c 9340 sbci r25,hi8(801) |
192 003e 00F0 brlo .L4 |
193 0040 C0EF ldi r28,lo8(-16) |
194 0042 00C0 rjmp .L9 |
195 .L4: |
196 0044 C530 cpi r28,lo8(5) |
197 0046 00F0 brlo .L6 |
198 .L9: |
199 0048 C8BD out 72-0x20,r28 |
200 004a 82E3 ldi r24,lo8(50) |
201 004c 90E0 ldi r25,hi8(50) |
202 004e 0E94 0000 call Delay_ms_Mess |
203 0052 80E0 ldi r24,lo8(__c.13) |
204 0054 90E0 ldi r25,hi8(__c.13) |
205 0056 9F93 push r25 |
206 0058 8F93 push r24 |
207 005a 80E0 ldi r24,lo8(pm(uart_putchar)) |
208 005c 90E0 ldi r25,hi8(pm(uart_putchar)) |
209 005e 9F93 push r25 |
210 0060 8F93 push r24 |
211 0062 E091 0000 lds r30,_printf_P |
212 0066 F091 0000 lds r31,(_printf_P)+1 |
213 006a 0995 icall |
214 006c 8091 0000 lds r24,MessLuftdruck |
215 0070 9091 0000 lds r25,(MessLuftdruck)+1 |
216 0074 0F90 pop __tmp_reg__ |
217 0076 0F90 pop __tmp_reg__ |
218 0078 0F90 pop __tmp_reg__ |
219 007a 0F90 pop __tmp_reg__ |
220 007c 8152 subi r24,lo8(801) |
221 007e 9340 sbci r25,hi8(801) |
222 0080 00F4 brsh .L6 |
223 0082 C550 subi r28,lo8(-(-5)) |
224 0084 00C0 rjmp .L4 |
225 .L6: |
226 0086 6C2F mov r22,r28 |
227 0088 83E0 ldi r24,lo8(3) |
228 008a 90E0 ldi r25,hi8(3) |
229 008c 0E94 0000 call SetParamByte |
230 0090 CF30 cpi r28,lo8(15) |
231 0092 00F0 brlo .L10 |
232 0094 CCE8 ldi r28,lo8(140) |
233 0096 D0E0 ldi r29,hi8(140) |
234 0098 00C0 rjmp .L11 |
235 .L10: |
236 009a C0E0 ldi r28,lo8(0) |
237 009c D0E0 ldi r29,hi8(0) |
238 .L11: |
239 009e CA3F cpi r28,250 |
240 00a0 D105 cpc r29,__zero_reg__ |
241 00a2 00F4 brsh .L13 |
242 00a4 C7BD out 71-0x20,r28 |
243 00a6 82E3 ldi r24,lo8(50) |
244 00a8 90E0 ldi r25,hi8(50) |
245 00aa 0E94 0000 call Delay_ms_Mess |
246 00ae 80E0 ldi r24,lo8(__c.14) |
247 00b0 90E0 ldi r25,hi8(__c.14) |
248 00b2 9F93 push r25 |
249 00b4 8F93 push r24 |
250 00b6 80E0 ldi r24,lo8(pm(uart_putchar)) |
251 00b8 90E0 ldi r25,hi8(pm(uart_putchar)) |
252 00ba 9F93 push r25 |
253 00bc 8F93 push r24 |
254 00be E091 0000 lds r30,_printf_P |
255 00c2 F091 0000 lds r31,(_printf_P)+1 |
256 00c6 0995 icall |
257 00c8 8091 0000 lds r24,MessLuftdruck |
258 00cc 9091 0000 lds r25,(MessLuftdruck)+1 |
259 00d0 0F90 pop __tmp_reg__ |
260 00d2 0F90 pop __tmp_reg__ |
261 00d4 0F90 pop __tmp_reg__ |
262 00d6 0F90 pop __tmp_reg__ |
263 00d8 8052 subi r24,lo8(800) |
264 00da 9340 sbci r25,hi8(800) |
265 00dc 00F0 brlo .L13 |
266 00de 2196 adiw r28,1 |
267 00e0 00C0 rjmp .L11 |
268 .L13: |
269 00e2 C093 0000 sts DruckOffsetSetting,r28 |
270 00e6 8091 0000 lds r24,EE_Parameter+13 |
271 00ea 80FF sbrs r24,0 |
272 00ec 00C0 rjmp .L17 |
273 00ee 8C2F mov r24,r28 |
274 00f0 8A50 subi r24,lo8(-(-10)) |
275 00f2 8B3E cpi r24,lo8(-21) |
276 00f4 00F0 brlo .L17 |
277 00f6 8091 0000 lds r24,VersionInfo+5 |
278 00fa 8064 ori r24,lo8(64) |
279 00fc 8093 0000 sts VersionInfo+5,r24 |
280 .L17: |
281 0100 C7BD out 71-0x20,r28 |
282 0102 8CE2 ldi r24,lo8(300) |
283 0104 91E0 ldi r25,hi8(300) |
284 0106 0E94 0000 call Delay_ms_Mess |
285 /* epilogue: frame size=0 */ |
286 010a DF91 pop r29 |
287 010c CF91 pop r28 |
288 010e 0895 ret |
289 /* epilogue end (size=3) */ |
290 /* function SucheLuftruckOffset size 133 (128) */ |
292 .section .progmem.data |
295 __c.12: |
296 0004 0A0D 2044 .string "\n\r DAC or I2C ERROR! Check I2C, 3Vref, DAC and BL-Ctrl" |
296 4143 206F |
296 7220 4932 |
296 4320 4552 |
296 524F 5221 |
297 .text |
298 .global SucheGyroOffset |
300 SucheGyroOffset: |
301 /* prologue: frame size=0 */ |
302 0110 EF92 push r14 |
303 0112 FF92 push r15 |
304 0114 1F93 push r17 |
305 0116 CF93 push r28 |
306 /* prologue end (size=4) */ |
307 0118 10E0 ldi r17,lo8(0) |
308 011a 80ED ldi r24,lo8(2000) |
309 011c 97E0 ldi r25,hi8(2000) |
310 011e 0E94 0000 call SetDelay |
311 0122 7C01 movw r14,r24 |
312 0124 CCE8 ldi r28,lo8(-116) |
313 .L51: |
314 0126 1330 cpi r17,lo8(3) |
315 0128 01F4 brne .L24 |
316 012a CB30 cpi r28,lo8(11) |
317 012c 00F0 brlo .L24 |
318 012e C9E0 ldi r28,lo8(9) |
319 .L24: |
320 0130 10E0 ldi r17,lo8(0) |
321 0132 8091 0000 lds r24,AdWertNick |
322 0136 9091 0000 lds r25,(AdWertNick)+1 |
323 013a 8C5F subi r24,lo8(1020) |
324 013c 9340 sbci r25,hi8(1020) |
325 013e 04F4 brge .L25 |
326 0140 8091 0000 lds r24,AnalogOffsetNick |
327 0144 8150 subi r24,lo8(-(-1)) |
328 0146 00C0 rjmp .L56 |
329 .L25: |
330 0148 8091 0000 lds r24,AdWertNick |
331 014c 9091 0000 lds r25,(AdWertNick)+1 |
332 0150 8750 subi r24,lo8(1031) |
333 0152 9440 sbci r25,hi8(1031) |
334 0154 04F0 brlt .L27 |
335 0156 8091 0000 lds r24,AnalogOffsetNick |
336 015a 8F5F subi r24,lo8(-(1)) |
337 .L56: |
338 015c 8093 0000 sts AnalogOffsetNick,r24 |
339 0160 00C0 rjmp .L26 |
340 .L27: |
341 0162 11E0 ldi r17,lo8(1) |
342 .L26: |
343 0164 8091 0000 lds r24,AdWertRoll |
344 0168 9091 0000 lds r25,(AdWertRoll)+1 |
345 016c 8C5F subi r24,lo8(1020) |
346 016e 9340 sbci r25,hi8(1020) |
347 0170 04F4 brge .L29 |
348 0172 8091 0000 lds r24,AnalogOffsetRoll |
349 0176 8150 subi r24,lo8(-(-1)) |
350 0178 00C0 rjmp .L57 |
351 .L29: |
352 017a 8091 0000 lds r24,AdWertRoll |
353 017e 9091 0000 lds r25,(AdWertRoll)+1 |
354 0182 8750 subi r24,lo8(1031) |
355 0184 9440 sbci r25,hi8(1031) |
356 0186 04F0 brlt .L31 |
357 0188 8091 0000 lds r24,AnalogOffsetRoll |
358 018c 8F5F subi r24,lo8(-(1)) |
359 .L57: |
360 018e 8093 0000 sts AnalogOffsetRoll,r24 |
361 0192 00C0 rjmp .L30 |
362 .L31: |
363 0194 1F5F subi r17,lo8(-(1)) |
364 .L30: |
365 0196 8091 0000 lds r24,AdWertGier |
366 019a 9091 0000 lds r25,(AdWertGier)+1 |
367 019e 8C5F subi r24,lo8(1020) |
368 01a0 9340 sbci r25,hi8(1020) |
369 01a2 04F4 brge .L33 |
370 01a4 8091 0000 lds r24,AnalogOffsetGier |
371 01a8 8150 subi r24,lo8(-(-1)) |
372 01aa 00C0 rjmp .L58 |
373 .L33: |
374 01ac 8091 0000 lds r24,AdWertGier |
375 01b0 9091 0000 lds r25,(AdWertGier)+1 |
376 01b4 8750 subi r24,lo8(1031) |
377 01b6 9440 sbci r25,hi8(1031) |
378 01b8 04F0 brlt .L35 |
379 01ba 8091 0000 lds r24,AnalogOffsetGier |
380 01be 8F5F subi r24,lo8(-(1)) |
381 .L58: |
382 01c0 8093 0000 sts AnalogOffsetGier,r24 |
383 01c4 00C0 rjmp .L34 |
384 .L55: |
385 01c6 80E0 ldi r24,lo8(__c.12) |
386 01c8 90E0 ldi r25,hi8(__c.12) |
387 01ca 9F93 push r25 |
388 01cc 8F93 push r24 |
389 01ce 80E0 ldi r24,lo8(pm(uart_putchar)) |
390 01d0 90E0 ldi r25,hi8(pm(uart_putchar)) |
391 01d2 9F93 push r25 |
392 01d4 8F93 push r24 |
393 01d6 E091 0000 lds r30,_printf_P |
394 01da F091 0000 lds r31,(_printf_P)+1 |
395 01de 0995 icall |
396 01e0 0F90 pop __tmp_reg__ |
397 01e2 0F90 pop __tmp_reg__ |
398 01e4 0F90 pop __tmp_reg__ |
399 01e6 0F90 pop __tmp_reg__ |
400 01e8 00C0 rjmp .L44 |
401 .L35: |
402 01ea 1F5F subi r17,lo8(-(1)) |
403 .L34: |
404 01ec 82E1 ldi r24,lo8(18) |
405 01ee 8093 0000 sts twi_state,r24 |
406 01f2 8091 0000 lds r24,BLFlags |
407 01f6 8E7F andi r24,lo8(-2) |
408 01f8 8093 0000 sts BLFlags,r24 |
409 01fc 85EA ldi r24,lo8(-91) |
410 01fe 8093 BC00 sts 188,r24 |
411 0202 8091 0000 lds r24,AnalogOffsetNick |
412 0206 8A30 cpi r24,lo8(10) |
413 0208 00F4 brsh .L37 |
414 020a 8091 0000 lds r24,VersionInfo+5 |
415 020e 8160 ori r24,lo8(1) |
416 0210 8093 0000 sts VersionInfo+5,r24 |
417 0214 8AE0 ldi r24,lo8(10) |
418 0216 8093 0000 sts AnalogOffsetNick,r24 |
419 .L37: |
420 021a 8091 0000 lds r24,AnalogOffsetNick |
421 021e 863F cpi r24,lo8(-10) |
422 0220 00F0 brlo .L38 |
423 0222 8091 0000 lds r24,VersionInfo+5 |
424 0226 8160 ori r24,lo8(1) |
425 0228 8093 0000 sts VersionInfo+5,r24 |
426 022c 85EF ldi r24,lo8(-11) |
427 022e 8093 0000 sts AnalogOffsetNick,r24 |
428 .L38: |
429 0232 8091 0000 lds r24,AnalogOffsetRoll |
430 0236 8A30 cpi r24,lo8(10) |
431 0238 00F4 brsh .L39 |
432 023a 8091 0000 lds r24,VersionInfo+5 |
433 023e 8260 ori r24,lo8(2) |
434 0240 8093 0000 sts VersionInfo+5,r24 |
435 0244 8AE0 ldi r24,lo8(10) |
436 0246 8093 0000 sts AnalogOffsetRoll,r24 |
437 .L39: |
438 024a 8091 0000 lds r24,AnalogOffsetRoll |
439 024e 863F cpi r24,lo8(-10) |
440 0250 00F0 brlo .L40 |
441 0252 8091 0000 lds r24,VersionInfo+5 |
442 0256 8260 ori r24,lo8(2) |
443 0258 8093 0000 sts VersionInfo+5,r24 |
444 025c 85EF ldi r24,lo8(-11) |
445 025e 8093 0000 sts AnalogOffsetRoll,r24 |
446 .L40: |
447 0262 8091 0000 lds r24,AnalogOffsetGier |
448 0266 8A30 cpi r24,lo8(10) |
449 0268 00F4 brsh .L41 |
450 026a 8091 0000 lds r24,VersionInfo+5 |
451 026e 8460 ori r24,lo8(4) |
452 0270 8093 0000 sts VersionInfo+5,r24 |
453 0274 8AE0 ldi r24,lo8(10) |
454 0276 8093 0000 sts AnalogOffsetGier,r24 |
455 .L41: |
456 027a 8091 0000 lds r24,AnalogOffsetGier |
457 027e 863F cpi r24,lo8(-10) |
458 0280 00F0 brlo .L42 |
459 0282 8091 0000 lds r24,VersionInfo+5 |
460 0286 8460 ori r24,lo8(4) |
461 0288 8093 0000 sts VersionInfo+5,r24 |
462 028c 85EF ldi r24,lo8(-11) |
463 028e 8093 0000 sts AnalogOffsetGier,r24 |
464 .L42: |
465 0292 8091 0000 lds r24,twi_state |
466 0296 8823 tst r24 |
467 0298 01F0 breq .L44 |
468 029a C701 movw r24,r14 |
469 029c 0E94 0000 call CheckDelay |
470 02a0 8823 tst r24 |
471 02a2 01F0 breq .+2 |
472 02a4 00C0 rjmp .L55 |
473 02a6 00C0 rjmp .L42 |
474 .L44: |
475 02a8 1092 0000 sts AdReady,__zero_reg__ |
476 02ac 8FEC ldi r24,lo8(-49) |
477 02ae 8093 7A00 sts 122,r24 |
478 .L47: |
479 02b2 8091 0000 lds r24,AdReady |
480 02b6 8823 tst r24 |
481 02b8 01F0 breq .L47 |
482 02ba CA30 cpi r28,lo8(10) |
483 02bc 00F4 brsh .L23 |
484 02be 8AE0 ldi r24,lo8(10) |
485 02c0 90E0 ldi r25,hi8(10) |
486 02c2 0E94 0000 call Delay_ms_Mess |
487 .L23: |
488 02c6 C150 subi r28,lo8(-(-1)) |
489 02c8 01F0 breq .+2 |
490 02ca 00C0 rjmp .L51 |
491 02cc 86E4 ldi r24,lo8(70) |
492 02ce 90E0 ldi r25,hi8(70) |
493 02d0 0E94 0000 call Delay_ms_Mess |
494 /* epilogue: frame size=0 */ |
495 02d4 CF91 pop r28 |
496 02d6 1F91 pop r17 |
497 02d8 FF90 pop r15 |
498 02da EF90 pop r14 |
499 02dc 0895 ret |
500 /* epilogue end (size=5) */ |
501 /* function SucheGyroOffset size 238 (229) */ |
503 .lcomm kanal.0,1 |
504 .lcomm state.1,1 |
505 .lcomm subcount.2,1 |
506 .lcomm gier1.3,2 |
507 .lcomm roll1.4,2 |
508 .lcomm nick1.5,2 |
509 .lcomm nick_filter.6,2 |
510 .lcomm roll_filter.7,2 |
511 .lcomm accy.8,2 |
512 .lcomm accx.9,2 |
513 .lcomm tmpLuftdruck.10,4 |
514 .lcomm messanzahl_Druck.11,1 |
515 .global __vector_24 |
517 __vector_24: |
518 /* prologue: frame size=0 */ |
519 02de 1F92 push __zero_reg__ |
520 02e0 0F92 push __tmp_reg__ |
521 02e2 0FB6 in __tmp_reg__,__SREG__ |
522 02e4 0F92 push __tmp_reg__ |
523 02e6 1124 clr __zero_reg__ |
524 02e8 EF92 push r14 |
525 02ea FF92 push r15 |
526 02ec 0F93 push r16 |
527 02ee 1F93 push r17 |
528 02f0 2F93 push r18 |
529 02f2 3F93 push r19 |
530 02f4 4F93 push r20 |
531 02f6 5F93 push r21 |
532 02f8 6F93 push r22 |
533 02fa 7F93 push r23 |
534 02fc 8F93 push r24 |
535 02fe 9F93 push r25 |
536 0300 AF93 push r26 |
537 0302 BF93 push r27 |
538 0304 EF93 push r30 |
539 0306 FF93 push r31 |
540 /* prologue end (size=21) */ |
541 0308 8091 0000 lds r24,state.1 |
542 030c 282F mov r18,r24 |
543 030e 3327 clr r19 |
544 0310 4427 clr r20 |
545 0312 5527 clr r21 |
546 0314 8F5F subi r24,lo8(-(1)) |
547 0316 8093 0000 sts state.1,r24 |
548 031a F901 movw r30,r18 |
549 031c 2231 cpi r18,18 |
550 031e 3105 cpc r19,__zero_reg__ |
551 0320 00F0 brlo .+2 |
552 0322 00C0 rjmp .L118 |
553 0324 E050 subi r30,lo8(-(pm(.L119))) |
554 0326 F040 sbci r31,hi8(-(pm(.L119))) |
555 0328 0C94 0000 jmp __tablejump2__ |
556 .data |
557 .section .progmem.gcc_sw_table, "a", @progbits |
558 .p2align 1 |
559 .L119: |
560 0000 0000 .word pm(.L61) |
561 0002 0000 .word pm(.L62) |
562 0004 0000 .word pm(.L63) |
563 0006 0000 .word pm(.L64) |
564 0008 0000 .word pm(.L65) |
565 000a 0000 .word pm(.L66) |
566 000c 0000 .word pm(.L67) |
567 000e 0000 .word pm(.L68) |
568 0010 0000 .word pm(.L71) |
569 0012 0000 .word pm(.L104) |
570 0014 0000 .word pm(.L66) |
571 0016 0000 .word pm(.L83) |
572 0018 0000 .word pm(.L84) |
573 001a 0000 .word pm(.L89) |
574 001c 0000 .word pm(.L90) |
575 001e 0000 .word pm(.L91) |
576 0020 0000 .word pm(.L97) |
577 0022 0000 .word pm(.L103) |
578 .text |
579 .L61: |
580 032c 8091 7800 lds r24,120 |
581 0330 9091 7900 lds r25,(120)+1 |
582 0334 00C0 rjmp .L130 |
583 .L62: |
584 0336 8091 7800 lds r24,120 |
585 033a 9091 7900 lds r25,(120)+1 |
586 033e 00C0 rjmp .L129 |
587 .L63: |
588 0340 8091 7800 lds r24,120 |
589 0344 9091 7900 lds r25,(120)+1 |
590 0348 9093 0000 sts (gier1.3)+1,r25 |
591 034c 8093 0000 sts gier1.3,r24 |
592 0350 00C0 rjmp .L131 |
593 .L64: |
594 0352 8091 0000 lds r24,NeutralAccY |
595 0356 9091 0000 lds r25,(NeutralAccY)+1 |
596 035a 2091 7800 lds r18,120 |
597 035e 3091 7900 lds r19,(120)+1 |
598 0362 821B sub r24,r18 |
599 0364 930B sbc r25,r19 |
600 0366 9093 0000 sts (Aktuell_ay)+1,r25 |
601 036a 8093 0000 sts Aktuell_ay,r24 |
602 036e 8091 0000 lds r24,Aktuell_ay |
603 0372 9091 0000 lds r25,(Aktuell_ay)+1 |
604 0376 9093 0000 sts (accy.8)+1,r25 |
605 037a 8093 0000 sts accy.8,r24 |
606 037e 00C0 rjmp .L132 |
607 .L65: |
608 0380 8091 7800 lds r24,120 |
609 0384 9091 7900 lds r25,(120)+1 |
610 0388 2091 0000 lds r18,NeutralAccX |
611 038c 3091 0000 lds r19,(NeutralAccX)+1 |
612 0390 821B sub r24,r18 |
613 0392 930B sbc r25,r19 |
614 0394 9093 0000 sts (Aktuell_ax)+1,r25 |
615 0398 8093 0000 sts Aktuell_ax,r24 |
616 039c 8091 0000 lds r24,Aktuell_ax |
617 03a0 9091 0000 lds r25,(Aktuell_ax)+1 |
618 03a4 9093 0000 sts (accx.9)+1,r25 |
619 03a8 8093 0000 sts accx.9,r24 |
620 03ac 00C0 rjmp .L127 |
621 .L66: |
622 03ae 8091 0000 lds r24,nick1.5 |
623 03b2 9091 0000 lds r25,(nick1.5)+1 |
624 03b6 2091 7800 lds r18,120 |
625 03ba 3091 7900 lds r19,(120)+1 |
626 03be 820F add r24,r18 |
627 03c0 931F adc r25,r19 |
628 .L130: |
629 03c2 9093 0000 sts (nick1.5)+1,r25 |
630 03c6 8093 0000 sts nick1.5,r24 |
631 .L134: |
632 03ca 81E0 ldi r24,lo8(1) |
633 03cc 00C0 rjmp .L128 |
634 .L67: |
635 03ce 8091 0000 lds r24,roll1.4 |
636 03d2 9091 0000 lds r25,(roll1.4)+1 |
637 03d6 2091 7800 lds r18,120 |
638 03da 3091 7900 lds r19,(120)+1 |
639 03de 820F add r24,r18 |
640 03e0 931F adc r25,r19 |
641 03e2 9093 0000 sts (roll1.4)+1,r25 |
642 03e6 8093 0000 sts roll1.4,r24 |
643 03ea 84E0 ldi r24,lo8(4) |
644 03ec 00C0 rjmp .L128 |
645 .L68: |
646 03ee 8091 0000 lds r24,EE_Parameter+110 |
647 03f2 83FF sbrs r24,3 |
648 03f4 00C0 rjmp .L69 |
649 03f6 8091 0000 lds r24,UBat |
650 03fa 9091 0000 lds r25,(UBat)+1 |
651 03fe 9C01 movw r18,r24 |
652 0400 220F lsl r18 |
653 0402 331F rol r19 |
654 0404 280F add r18,r24 |
655 0406 391F adc r19,r25 |
656 0408 4091 7800 lds r20,120 |
657 040c 5091 7900 lds r21,(120)+1 |
658 0410 8BE0 ldi r24,lo8(11) |
659 0412 90E0 ldi r25,hi8(11) |
660 0414 489F mul r20,r24 |
661 0416 B001 movw r22,r0 |
662 0418 499F mul r20,r25 |
663 041a 700D add r23,r0 |
664 041c 589F mul r21,r24 |
665 041e 700D add r23,r0 |
666 0420 1124 clr r1 |
667 0422 CB01 movw r24,r22 |
668 0424 6EE1 ldi r22,lo8(30) |
669 0426 70E0 ldi r23,hi8(30) |
670 0428 00C0 rjmp .L121 |
671 .L69: |
672 042a 8091 0000 lds r24,UBat |
673 042e 9091 0000 lds r25,(UBat)+1 |
674 0432 9C01 movw r18,r24 |
675 0434 220F lsl r18 |
676 0436 331F rol r19 |
677 0438 280F add r18,r24 |
678 043a 391F adc r19,r25 |
679 043c 8091 7800 lds r24,120 |
680 0440 9091 7900 lds r25,(120)+1 |
681 0444 63E0 ldi r22,lo8(3) |
682 0446 70E0 ldi r23,hi8(3) |
683 .L121: |
684 0448 0E94 0000 call __udivmodhi4 |
685 044c 260F add r18,r22 |
686 044e 371F adc r19,r23 |
687 0450 3695 lsr r19 |
688 0452 2795 ror r18 |
689 0454 3695 lsr r19 |
690 0456 2795 ror r18 |
691 0458 3093 0000 sts (UBat)+1,r19 |
692 045c 2093 0000 sts UBat,r18 |
693 0460 85E0 ldi r24,lo8(5) |
694 0462 00C0 rjmp .L128 |
695 .L71: |
696 0464 8091 7800 lds r24,120 |
697 0468 9091 7900 lds r25,(120)+1 |
698 046c 4091 0000 lds r20,NeutralAccZ |
699 0470 5091 0000 lds r21,(NeutralAccZ)+1 |
700 0474 841B sub r24,r20 |
701 0476 950B sbc r25,r21 |
702 0478 9093 0000 sts (AdWertAccHoch)+1,r25 |
703 047c 8093 0000 sts AdWertAccHoch,r24 |
704 0480 8091 0000 lds r24,AdWertAccHoch |
705 0484 9091 0000 lds r25,(AdWertAccHoch)+1 |
706 0488 0297 sbiw r24,2 |
707 048a 04F0 brlt .L72 |
708 048c 72E0 ldi r23,hi8(750) |
709 048e 4E3E cpi r20,lo8(750) |
710 0490 5707 cpc r21,r23 |
711 0492 04F4 brge .L73 |
712 0494 2091 0000 lds r18,subcount.2 |
713 0498 2B5F subi r18,lo8(-(5)) |
714 049a 2093 0000 sts subcount.2,r18 |
715 049e 2550 subi r18,lo8(-(-5)) |
716 04a0 8091 0000 lds r24,modell_fliegt |
717 04a4 9091 0000 lds r25,(modell_fliegt)+1 |
718 04a8 845F subi r24,lo8(500) |
719 04aa 9140 sbci r25,hi8(500) |
720 04ac 00F4 brsh .L73 |
721 04ae 215F subi r18,lo8(-(15)) |
722 04b0 2093 0000 sts subcount.2,r18 |
723 .L73: |
724 04b4 8091 0000 lds r24,subcount.2 |
725 04b8 8536 cpi r24,lo8(101) |
726 04ba 04F0 brlt .L76 |
727 04bc 4F5F subi r20,lo8(-(1)) |
728 04be 5F4F sbci r21,hi8(-(1)) |
729 04c0 5093 0000 sts (NeutralAccZ)+1,r21 |
730 04c4 4093 0000 sts NeutralAccZ,r20 |
731 04c8 8456 subi r24,lo8(-(-100)) |
732 04ca 00C0 rjmp .L122 |
733 .L72: |
734 04cc 8091 0000 lds r24,AdWertAccHoch |
735 04d0 9091 0000 lds r25,(AdWertAccHoch)+1 |
736 04d4 8F5F subi r24,lo8(-1) |
737 04d6 9F4F sbci r25,hi8(-1) |
738 04d8 04F4 brge .L76 |
739 04da 72E0 ldi r23,hi8(551) |
740 04dc 4732 cpi r20,lo8(551) |
741 04de 5707 cpc r21,r23 |
742 04e0 04F0 brlt .L76 |
743 04e2 2091 0000 lds r18,subcount.2 |
744 04e6 2550 subi r18,lo8(-(-5)) |
745 04e8 2093 0000 sts subcount.2,r18 |
746 04ec 2B5F subi r18,lo8(-(5)) |
747 04ee 8091 0000 lds r24,modell_fliegt |
748 04f2 9091 0000 lds r25,(modell_fliegt)+1 |
749 04f6 845F subi r24,lo8(500) |
750 04f8 9140 sbci r25,hi8(500) |
751 04fa 00F4 brsh .L79 |
752 04fc 2F50 subi r18,lo8(-(-15)) |
753 04fe 2093 0000 sts subcount.2,r18 |
754 .L79: |
755 0502 8091 0000 lds r24,subcount.2 |
756 0506 8C39 cpi r24,lo8(-100) |
757 0508 04F4 brge .L76 |
758 050a 4150 subi r20,lo8(-(-1)) |
759 050c 5040 sbci r21,hi8(-(-1)) |
760 050e 5093 0000 sts (NeutralAccZ)+1,r21 |
761 0512 4093 0000 sts NeutralAccZ,r20 |
762 0516 8C59 subi r24,lo8(-(100)) |
763 .L122: |
764 0518 8093 0000 sts subcount.2,r24 |
765 .L76: |
766 051c 8091 7800 lds r24,120 |
767 0520 9091 7900 lds r25,(120)+1 |
768 0524 9093 0000 sts (Aktuell_az)+1,r25 |
769 0528 8093 0000 sts Aktuell_az,r24 |
770 052c 8091 0000 lds r24,AdWertAccHoch |
771 0530 9091 0000 lds r25,(AdWertAccHoch)+1 |
772 0534 9C01 movw r18,r24 |
773 0536 4427 clr r20 |
774 0538 37FD sbrc r19,7 |
775 053a 4095 com r20 |
776 053c 542F mov r21,r20 |
777 053e 8091 0000 lds r24,Mess_Integral_Hoch |
778 0542 9091 0000 lds r25,(Mess_Integral_Hoch)+1 |
779 0546 A091 0000 lds r26,(Mess_Integral_Hoch)+2 |
780 054a B091 0000 lds r27,(Mess_Integral_Hoch)+3 |
781 054e 820F add r24,r18 |
782 0550 931F adc r25,r19 |
783 0552 A41F adc r26,r20 |
784 0554 B51F adc r27,r21 |
785 0556 8093 0000 sts Mess_Integral_Hoch,r24 |
786 055a 9093 0000 sts (Mess_Integral_Hoch)+1,r25 |
787 055e A093 0000 sts (Mess_Integral_Hoch)+2,r26 |
788 0562 B093 0000 sts (Mess_Integral_Hoch)+3,r27 |
789 0566 2091 0000 lds r18,Mess_Integral_Hoch |
790 056a 3091 0000 lds r19,(Mess_Integral_Hoch)+1 |
791 056e 4091 0000 lds r20,(Mess_Integral_Hoch)+2 |
792 0572 5091 0000 lds r21,(Mess_Integral_Hoch)+3 |
793 0576 57FF sbrs r21,7 |
794 0578 00C0 rjmp .L81 |
795 057a 2150 subi r18,lo8(-(1023)) |
796 057c 3C4F sbci r19,hi8(-(1023)) |
797 057e 4F4F sbci r20,hlo8(-(1023)) |
798 0580 5F4F sbci r21,hhi8(-(1023)) |
799 .L81: |
800 0582 6AE0 ldi r22,10 |
801 0584 5595 1: asr r21 |
802 0586 4795 ror r20 |
803 0588 3795 ror r19 |
804 058a 2795 ror r18 |
805 058c 6A95 dec r22 |
806 058e 01F4 brne 1b |
807 0590 8091 0000 lds r24,Mess_Integral_Hoch |
808 0594 9091 0000 lds r25,(Mess_Integral_Hoch)+1 |
809 0598 A091 0000 lds r26,(Mess_Integral_Hoch)+2 |
810 059c B091 0000 lds r27,(Mess_Integral_Hoch)+3 |
811 05a0 821B sub r24,r18 |
812 05a2 930B sbc r25,r19 |
813 05a4 A40B sbc r26,r20 |
814 05a6 B50B sbc r27,r21 |
815 05a8 8093 0000 sts Mess_Integral_Hoch,r24 |
816 05ac 9093 0000 sts (Mess_Integral_Hoch)+1,r25 |
817 05b0 A093 0000 sts (Mess_Integral_Hoch)+2,r26 |
818 05b4 B093 0000 sts (Mess_Integral_Hoch)+3,r27 |
819 05b8 00C0 rjmp .L133 |
820 .L83: |
821 05ba 8091 0000 lds r24,roll1.4 |
822 05be 9091 0000 lds r25,(roll1.4)+1 |
823 05c2 2091 7800 lds r18,120 |
824 05c6 3091 7900 lds r19,(120)+1 |
825 05ca 820F add r24,r18 |
826 05cc 931F adc r25,r19 |
827 .L129: |
828 05ce 9093 0000 sts (roll1.4)+1,r25 |
829 05d2 8093 0000 sts roll1.4,r24 |
830 05d6 1092 0000 sts kanal.0,__zero_reg__ |
831 05da 00C0 rjmp .L60 |
832 .L84: |
833 05dc 8091 0000 lds r24,PlatinenVersion |
834 05e0 8A30 cpi r24,lo8(10) |
835 05e2 01F4 brne .L85 |
836 05e4 8091 7800 lds r24,120 |
837 05e8 9091 7900 lds r25,(120)+1 |
838 05ec 2091 0000 lds r18,gier1.3 |
839 05f0 3091 0000 lds r19,(gier1.3)+1 |
840 05f4 820F add r24,r18 |
841 05f6 931F adc r25,r19 |
842 05f8 0196 adiw r24,1 |
843 05fa 9695 lsr r25 |
844 05fc 8795 ror r24 |
845 05fe 00C0 rjmp .L123 |
846 .L85: |
847 0600 4091 0000 lds r20,gier1.3 |
848 0604 5091 0000 lds r21,(gier1.3)+1 |
849 0608 8431 cpi r24,lo8(20) |
850 060a 00F0 brlo .L87 |
851 060c 2091 7800 lds r18,120 |
852 0610 3091 7900 lds r19,(120)+1 |
853 0614 240F add r18,r20 |
854 0616 351F adc r19,r21 |
855 0618 8FEF ldi r24,lo8(2047) |
856 061a 97E0 ldi r25,hi8(2047) |
857 061c 821B sub r24,r18 |
858 061e 930B sbc r25,r19 |
859 0620 00C0 rjmp .L123 |
860 .L87: |
861 0622 8091 7800 lds r24,120 |
862 0626 9091 7900 lds r25,(120)+1 |
863 062a 840F add r24,r20 |
864 062c 951F adc r25,r21 |
865 .L123: |
866 062e 9093 0000 sts (AdWertGier)+1,r25 |
867 0632 8093 0000 sts AdWertGier,r24 |
868 .L131: |
869 0636 86E0 ldi r24,lo8(6) |
870 0638 00C0 rjmp .L128 |
871 .L89: |
872 063a 8091 0000 lds r24,NeutralAccY |
873 063e 9091 0000 lds r25,(NeutralAccY)+1 |
874 0642 2091 7800 lds r18,120 |
875 0646 3091 7900 lds r19,(120)+1 |
876 064a 821B sub r24,r18 |
877 064c 930B sbc r25,r19 |
878 064e 9093 0000 sts (Aktuell_ay)+1,r25 |
879 0652 8093 0000 sts Aktuell_ay,r24 |
880 0656 8091 0000 lds r24,Aktuell_ay |
881 065a 9091 0000 lds r25,(Aktuell_ay)+1 |
882 065e 2091 0000 lds r18,accy.8 |
883 0662 3091 0000 lds r19,(accy.8)+1 |
884 0666 820F add r24,r18 |
885 0668 931F adc r25,r19 |
886 066a 9093 0000 sts (AdWertAccRoll)+1,r25 |
887 066e 8093 0000 sts AdWertAccRoll,r24 |
888 .L132: |
889 0672 87E0 ldi r24,lo8(7) |
890 0674 00C0 rjmp .L128 |
891 .L90: |
892 0676 8091 7800 lds r24,120 |
893 067a 9091 7900 lds r25,(120)+1 |
894 067e 2091 0000 lds r18,NeutralAccX |
895 0682 3091 0000 lds r19,(NeutralAccX)+1 |
896 0686 821B sub r24,r18 |
897 0688 930B sbc r25,r19 |
898 068a 9093 0000 sts (Aktuell_ax)+1,r25 |
899 068e 8093 0000 sts Aktuell_ax,r24 |
900 0692 8091 0000 lds r24,Aktuell_ax |
901 0696 9091 0000 lds r25,(Aktuell_ax)+1 |
902 069a 2091 0000 lds r18,accx.9 |
903 069e 3091 0000 lds r19,(accx.9)+1 |
904 06a2 820F add r24,r18 |
905 06a4 931F adc r25,r19 |
906 06a6 9093 0000 sts (AdWertAccNick)+1,r25 |
907 06aa 8093 0000 sts AdWertAccNick,r24 |
908 06ae 00C0 rjmp .L127 |
909 .L91: |
910 06b0 2091 0000 lds r18,nick1.5 |
911 06b4 3091 0000 lds r19,(nick1.5)+1 |
912 06b8 8091 7800 lds r24,120 |
913 06bc 9091 7900 lds r25,(120)+1 |
914 06c0 280F add r18,r24 |
915 06c2 391F adc r19,r25 |
916 06c4 3093 0000 sts (nick1.5)+1,r19 |
917 06c8 2093 0000 sts nick1.5,r18 |
918 06cc 8091 0000 lds r24,PlatinenVersion |
919 06d0 8A30 cpi r24,lo8(10) |
920 06d2 01F4 brne .L92 |
921 06d4 220F add r18,r18 |
922 06d6 331F adc r19,r19 |
923 06d8 00C0 rjmp .L124 |
924 .L92: |
925 06da 220F lsl r18 |
926 06dc 331F rol r19 |
927 06de 220F lsl r18 |
928 06e0 331F rol r19 |
929 .L124: |
930 06e2 3093 0000 sts (nick1.5)+1,r19 |
931 06e6 2093 0000 sts nick1.5,r18 |
932 06ea 2091 0000 lds r18,nick1.5 |
933 06ee 3091 0000 lds r19,(nick1.5)+1 |
934 06f2 C901 movw r24,r18 |
935 06f4 37FD sbrc r19,7 |
936 06f6 0796 adiw r24,7 |
937 .L94: |
938 06f8 03E0 ldi r16,3 |
939 06fa 9595 1: asr r25 |
940 06fc 8795 ror r24 |
941 06fe 0A95 dec r16 |
942 0700 01F4 brne 1b |
943 0702 9093 0000 sts (AdWertNick)+1,r25 |
944 0706 8093 0000 sts AdWertNick,r24 |
945 070a 8091 0000 lds r24,nick_filter.6 |
946 070e 9091 0000 lds r25,(nick_filter.6)+1 |
947 0712 820F add r24,r18 |
948 0714 931F adc r25,r19 |
949 0716 97FD sbrc r25,7 |
950 0718 0196 adiw r24,1 |
951 .L95: |
952 071a 9595 asr r25 |
953 071c 8795 ror r24 |
954 071e 9093 0000 sts (nick_filter.6)+1,r25 |
955 0722 8093 0000 sts nick_filter.6,r24 |
956 0726 2091 0000 lds r18,AdNeutralNick |
957 072a 3091 0000 lds r19,(AdNeutralNick)+1 |
958 072e 821B sub r24,r18 |
959 0730 930B sbc r25,r19 |
960 0732 9093 0000 sts (HiResNick)+1,r25 |
961 0736 8093 0000 sts HiResNick,r24 |
962 073a 2091 0000 lds r18,AdWertNickFilter |
963 073e 3091 0000 lds r19,(AdWertNickFilter)+1 |
964 0742 8091 0000 lds r24,HiResNick |
965 0746 9091 0000 lds r25,(HiResNick)+1 |
966 074a 280F add r18,r24 |
967 074c 391F adc r19,r25 |
968 074e 37FF sbrs r19,7 |
969 0750 00C0 rjmp .L96 |
970 0752 2F5F subi r18,lo8(-(1)) |
971 0754 3F4F sbci r19,hi8(-(1)) |
972 .L96: |
973 0756 3595 asr r19 |
974 0758 2795 ror r18 |
975 075a 3093 0000 sts (AdWertNickFilter)+1,r19 |
976 075e 2093 0000 sts AdWertNickFilter,r18 |
977 0762 00C0 rjmp .L134 |
978 .L97: |
979 0764 2091 0000 lds r18,roll1.4 |
980 0768 3091 0000 lds r19,(roll1.4)+1 |
981 076c 8091 7800 lds r24,120 |
982 0770 9091 7900 lds r25,(120)+1 |
983 0774 280F add r18,r24 |
984 0776 391F adc r19,r25 |
985 0778 3093 0000 sts (roll1.4)+1,r19 |
986 077c 2093 0000 sts roll1.4,r18 |
987 0780 8091 0000 lds r24,PlatinenVersion |
988 0784 8A30 cpi r24,lo8(10) |
989 0786 01F4 brne .L98 |
990 0788 220F add r18,r18 |
991 078a 331F adc r19,r19 |
992 078c 00C0 rjmp .L125 |
993 .L98: |
994 078e 220F lsl r18 |
995 0790 331F rol r19 |
996 0792 220F lsl r18 |
997 0794 331F rol r19 |
998 .L125: |
999 0796 3093 0000 sts (roll1.4)+1,r19 |
1000 079a 2093 0000 sts roll1.4,r18 |
1001 079e 2091 0000 lds r18,roll1.4 |
1002 07a2 3091 0000 lds r19,(roll1.4)+1 |
1003 07a6 C901 movw r24,r18 |
1004 07a8 37FD sbrc r19,7 |
1005 07aa 0796 adiw r24,7 |
1006 .L100: |
1007 07ac F3E0 ldi r31,3 |
1008 07ae 9595 1: asr r25 |
1009 07b0 8795 ror r24 |
1010 07b2 FA95 dec r31 |
1011 07b4 01F4 brne 1b |
1012 07b6 9093 0000 sts (AdWertRoll)+1,r25 |
1013 07ba 8093 0000 sts AdWertRoll,r24 |
1014 07be 8091 0000 lds r24,roll_filter.7 |
1015 07c2 9091 0000 lds r25,(roll_filter.7)+1 |
1016 07c6 820F add r24,r18 |
1017 07c8 931F adc r25,r19 |
1018 07ca 97FD sbrc r25,7 |
1019 07cc 0196 adiw r24,1 |
1020 .L101: |
1021 07ce 9595 asr r25 |
1022 07d0 8795 ror r24 |
1023 07d2 9093 0000 sts (roll_filter.7)+1,r25 |
1024 07d6 8093 0000 sts roll_filter.7,r24 |
1025 07da 2091 0000 lds r18,AdNeutralRoll |
1026 07de 3091 0000 lds r19,(AdNeutralRoll)+1 |
1027 07e2 821B sub r24,r18 |
1028 07e4 930B sbc r25,r19 |
1029 07e6 9093 0000 sts (HiResRoll)+1,r25 |
1030 07ea 8093 0000 sts HiResRoll,r24 |
1031 07ee 2091 0000 lds r18,AdWertRollFilter |
1032 07f2 3091 0000 lds r19,(AdWertRollFilter)+1 |
1033 07f6 8091 0000 lds r24,HiResRoll |
1034 07fa 9091 0000 lds r25,(HiResRoll)+1 |
1035 07fe 280F add r18,r24 |
1036 0800 391F adc r19,r25 |
1037 0802 37FF sbrs r19,7 |
1038 0804 00C0 rjmp .L102 |
1039 0806 2F5F subi r18,lo8(-(1)) |
1040 0808 3F4F sbci r19,hi8(-(1)) |
1041 .L102: |
1042 080a 3595 asr r19 |
1043 080c 2795 ror r18 |
1044 080e 3093 0000 sts (AdWertRollFilter)+1,r19 |
1045 0812 2093 0000 sts AdWertRollFilter,r18 |
1046 .L133: |
1047 0816 83E0 ldi r24,lo8(3) |
1048 0818 00C0 rjmp .L128 |
1049 .L103: |
1050 081a 1092 0000 sts state.1,__zero_reg__ |
1051 081e 81E0 ldi r24,lo8(1) |
1052 0820 8093 0000 sts AdReady,r24 |
1053 0824 8091 0000 lds r24,ZaehlMessungen |
1054 0828 9091 0000 lds r25,(ZaehlMessungen)+1 |
1055 082c 0196 adiw r24,1 |
1056 082e 9093 0000 sts (ZaehlMessungen)+1,r25 |
1057 0832 8093 0000 sts ZaehlMessungen,r24 |
1058 .L104: |
1059 0836 8091 7800 lds r24,120 |
1060 083a 9091 7900 lds r25,(120)+1 |
1061 083e 9093 0000 sts (MessLuftdruck)+1,r25 |
1062 0842 8093 0000 sts MessLuftdruck,r24 |
1063 0846 8091 0000 lds r24,MessLuftdruck |
1064 084a 9091 0000 lds r25,(MessLuftdruck)+1 |
1065 084e AA27 clr r26 |
1066 0850 BB27 clr r27 |
1067 0852 2091 0000 lds r18,tmpLuftdruck.10 |
1068 0856 3091 0000 lds r19,(tmpLuftdruck.10)+1 |
1069 085a 4091 0000 lds r20,(tmpLuftdruck.10)+2 |
1070 085e 5091 0000 lds r21,(tmpLuftdruck.10)+3 |
1071 0862 280F add r18,r24 |
1072 0864 391F adc r19,r25 |
1073 0866 4A1F adc r20,r26 |
1074 0868 5B1F adc r21,r27 |
1075 086a 2093 0000 sts tmpLuftdruck.10,r18 |
1076 086e 3093 0000 sts (tmpLuftdruck.10)+1,r19 |
1077 0872 4093 0000 sts (tmpLuftdruck.10)+2,r20 |
1078 0876 5093 0000 sts (tmpLuftdruck.10)+3,r21 |
1079 087a 8091 0000 lds r24,messanzahl_Druck.11 |
1080 087e 8F5F subi r24,lo8(-(1)) |
1081 0880 8093 0000 sts messanzahl_Druck.11,r24 |
1082 0884 8031 cpi r24,lo8(16) |
1083 0886 00F4 brsh .+2 |
1084 0888 00C0 rjmp .L127 |
1085 088a 8091 0000 lds r24,Luftdruck |
1086 088e 9091 0000 lds r25,(Luftdruck)+1 |
1087 0892 A091 0000 lds r26,(Luftdruck)+2 |
1088 0896 B091 0000 lds r27,(Luftdruck)+3 |
1089 089a 7C01 movw r14,r24 |
1090 089c 8D01 movw r16,r26 |
1091 089e 63E0 ldi r22,3 |
1092 08a0 EE0C 1: lsl r14 |
1093 08a2 FF1C rol r15 |
1094 08a4 001F rol r16 |
1095 08a6 111F rol r17 |
1096 08a8 6A95 dec r22 |
1097 08aa 01F4 brne 1b |
1098 08ac E81A sub r14,r24 |
1099 08ae F90A sbc r15,r25 |
1100 08b0 0A0B sbc r16,r26 |
1101 08b2 1B0B sbc r17,r27 |
1102 08b4 E20E add r14,r18 |
1103 08b6 F31E adc r15,r19 |
1104 08b8 041F adc r16,r20 |
1105 08ba 151F adc r17,r21 |
1106 08bc 8091 0000 lds r24,ExpandBaro |
1107 08c0 9927 clr r25 |
1108 08c2 87FD sbrc r24,7 |
1109 08c4 9095 com r25 |
1110 08c6 A92F mov r26,r25 |
1111 08c8 B92F mov r27,r25 |
1112 08ca BC01 movw r22,r24 |
1113 08cc CD01 movw r24,r26 |
1114 08ce 20EB ldi r18,lo8(8368) |
1115 08d0 30E2 ldi r19,hi8(8368) |
1116 08d2 40E0 ldi r20,hlo8(8368) |
1117 08d4 50E0 ldi r21,hhi8(8368) |
1118 08d6 0E94 0000 call __mulsi3 |
1119 08da DC01 movw r26,r24 |
1120 08dc CB01 movw r24,r22 |
1121 08de E81A sub r14,r24 |
1122 08e0 F90A sbc r15,r25 |
1123 08e2 0A0B sbc r16,r26 |
1124 08e4 1B0B sbc r17,r27 |
1125 08e6 D801 movw r26,r16 |
1126 08e8 C701 movw r24,r14 |
1127 08ea 0496 adiw r24,4 |
1128 08ec A11D adc r26,__zero_reg__ |
1129 08ee B11D adc r27,__zero_reg__ |
1130 08f0 B7FF sbrs r27,7 |
1131 08f2 00C0 rjmp .L106 |
1132 08f4 D801 movw r26,r16 |
1133 08f6 C701 movw r24,r14 |
1134 08f8 0B96 adiw r24,11 |
1135 08fa A11D adc r26,__zero_reg__ |
1136 08fc B11D adc r27,__zero_reg__ |
1137 .L106: |
1138 08fe 23E0 ldi r18,3 |
1139 0900 B595 1: asr r27 |
1140 0902 A795 ror r26 |
1141 0904 9795 ror r25 |
1142 0906 8795 ror r24 |
1143 0908 2A95 dec r18 |
1144 090a 01F4 brne 1b |
1145 090c 8093 0000 sts Luftdruck,r24 |
1146 0910 9093 0000 sts (Luftdruck)+1,r25 |
1147 0914 A093 0000 sts (Luftdruck)+2,r26 |
1148 0918 B093 0000 sts (Luftdruck)+3,r27 |
1149 091c 8091 0000 lds r24,StartLuftdruck |
1150 0920 9091 0000 lds r25,(StartLuftdruck)+1 |
1151 0924 7C01 movw r14,r24 |
1152 0926 0027 clr r16 |
1153 0928 F7FC sbrc r15,7 |
1154 092a 0095 com r16 |
1155 092c 102F mov r17,r16 |
1156 092e 8091 0000 lds r24,Luftdruck |
1157 0932 9091 0000 lds r25,(Luftdruck)+1 |
1158 0936 A091 0000 lds r26,(Luftdruck)+2 |
1159 093a B091 0000 lds r27,(Luftdruck)+3 |
1160 093e E81A sub r14,r24 |
1161 0940 F90A sbc r15,r25 |
1162 0942 0A0B sbc r16,r26 |
1163 0944 1B0B sbc r17,r27 |
1164 0946 E092 0000 sts HoehenWert,r14 |
1165 094a F092 0000 sts (HoehenWert)+1,r15 |
1166 094e 0093 0000 sts (HoehenWert)+2,r16 |
1167 0952 1093 0000 sts (HoehenWert)+3,r17 |
1168 0956 2091 0000 lds r18,SummenHoehe |
1169 095a 3091 0000 lds r19,(SummenHoehe)+1 |
1170 095e 4091 0000 lds r20,(SummenHoehe)+2 |
1171 0962 5091 0000 lds r21,(SummenHoehe)+3 |
1172 0966 57FF sbrs r21,7 |
1173 0968 00C0 rjmp .L107 |
1174 096a 215F subi r18,lo8(-(15)) |
1175 096c 3F4F sbci r19,hi8(-(15)) |
1176 096e 4F4F sbci r20,hlo8(-(15)) |
1177 0970 5F4F sbci r21,hhi8(-(15)) |
1178 .L107: |
1179 0972 84E0 ldi r24,4 |
1180 0974 5595 1: asr r21 |
1181 0976 4795 ror r20 |
1182 0978 3795 ror r19 |
1183 097a 2795 ror r18 |
1184 097c 8A95 dec r24 |
1185 097e 01F4 brne 1b |
1186 0980 8091 0000 lds r24,SummenHoehe |
1187 0984 9091 0000 lds r25,(SummenHoehe)+1 |
1188 0988 A091 0000 lds r26,(SummenHoehe)+2 |
1189 098c B091 0000 lds r27,(SummenHoehe)+3 |
1190 0990 821B sub r24,r18 |
1191 0992 930B sbc r25,r19 |
1192 0994 A40B sbc r26,r20 |
1193 0996 B50B sbc r27,r21 |
1194 0998 8093 0000 sts SummenHoehe,r24 |
1195 099c 9093 0000 sts (SummenHoehe)+1,r25 |
1196 09a0 A093 0000 sts (SummenHoehe)+2,r26 |
1197 09a4 B093 0000 sts (SummenHoehe)+3,r27 |
1198 09a8 8091 0000 lds r24,SummenHoehe |
1199 09ac 9091 0000 lds r25,(SummenHoehe)+1 |
1200 09b0 A091 0000 lds r26,(SummenHoehe)+2 |
1201 09b4 B091 0000 lds r27,(SummenHoehe)+3 |
1202 09b8 8E0D add r24,r14 |
1203 09ba 9F1D adc r25,r15 |
1204 09bc A01F adc r26,r16 |
1205 09be B11F adc r27,r17 |
1206 09c0 8093 0000 sts SummenHoehe,r24 |
1207 09c4 9093 0000 sts (SummenHoehe)+1,r25 |
1208 09c8 A093 0000 sts (SummenHoehe)+2,r26 |
1209 09cc B093 0000 sts (SummenHoehe)+3,r27 |
1210 09d0 8091 0000 lds r24,SummenHoehe |
1211 09d4 9091 0000 lds r25,(SummenHoehe)+1 |
1212 09d8 A091 0000 lds r26,(SummenHoehe)+2 |
1213 09dc B091 0000 lds r27,(SummenHoehe)+3 |
1214 09e0 B7FF sbrs r27,7 |
1215 09e2 00C0 rjmp .L108 |
1216 09e4 0F96 adiw r24,15 |
1217 09e6 A11D adc r26,__zero_reg__ |
1218 09e8 B11D adc r27,__zero_reg__ |
1219 .L108: |
1220 09ea 14E0 ldi r17,4 |
1221 09ec B595 1: asr r27 |
1222 09ee A795 ror r26 |
1223 09f0 9795 ror r25 |
1224 09f2 8795 ror r24 |
1225 09f4 1A95 dec r17 |
1226 09f6 01F4 brne 1b |
1227 09f8 2091 0000 lds r18,HoehenWert |
1228 09fc 3091 0000 lds r19,(HoehenWert)+1 |
1229 0a00 281B sub r18,r24 |
1230 0a02 390B sbc r19,r25 |
1231 0a04 64E0 ldi r22,hi8(1025) |
1232 0a06 2130 cpi r18,lo8(1025) |
1233 0a08 3607 cpc r19,r22 |
1234 0a0a 04F0 brlt .L109 |
1235 0a0c 20E0 ldi r18,lo8(1024) |
1236 0a0e 34E0 ldi r19,hi8(1024) |
1237 0a10 00C0 rjmp .L110 |
1238 .L109: |
1239 0a12 7CEF ldi r23,hi8(-1024) |
1240 0a14 2030 cpi r18,lo8(-1024) |
1241 0a16 3707 cpc r19,r23 |
1242 0a18 04F4 brge .L110 |
1243 0a1a 20E0 ldi r18,lo8(-1024) |
1244 0a1c 3CEF ldi r19,hi8(-1024) |
1245 .L110: |
1246 0a1e 8091 0000 lds r24,VarioMeter |
1247 0a22 9091 0000 lds r25,(VarioMeter)+1 |
1248 0a26 8091 0000 lds r24,VarioMeter |
1249 0a2a 9091 0000 lds r25,(VarioMeter)+1 |
1250 0a2e 97FF sbrs r25,7 |
1251 0a30 00C0 rjmp .L113 |
1252 0a32 9095 com r25 |
1253 0a34 8195 neg r24 |
1254 0a36 9F4F sbci r25,lo8(-1) |
1255 .L113: |
1256 0a38 A901 movw r20,r18 |
1257 0a3a F3E0 ldi r31,3 |
1258 0a3c 440F 1: lsl r20 |
1259 0a3e 551F rol r21 |
1260 0a40 FA95 dec r31 |
1261 0a42 01F4 brne 1b |
1262 0a44 8D5B subi r24,lo8(701) |
1263 0a46 9240 sbci r25,hi8(701) |
1264 0a48 04F0 brlt .L112 |
1265 0a4a 8091 0000 lds r24,VarioMeter |
1266 0a4e 9091 0000 lds r25,(VarioMeter)+1 |
1267 0a52 9C01 movw r18,r24 |
1268 0a54 E4E0 ldi r30,4 |
1269 0a56 220F 1: lsl r18 |
1270 0a58 331F rol r19 |
1271 0a5a EA95 dec r30 |
1272 0a5c 01F4 brne 1b |
1273 0a5e 281B sub r18,r24 |
1274 0a60 390B sbc r19,r25 |
1275 0a62 240F add r18,r20 |
1276 0a64 351F adc r19,r21 |
1277 0a66 37FF sbrs r19,7 |
1278 0a68 00C0 rjmp .L114 |
1279 0a6a 215F subi r18,lo8(-(15)) |
1280 0a6c 3F4F sbci r19,hi8(-(15)) |
1281 .L114: |
1282 0a6e 74E0 ldi r23,4 |
1283 0a70 3595 1: asr r19 |
1284 0a72 2795 ror r18 |
1285 0a74 7A95 dec r23 |
1286 0a76 01F4 brne 1b |
1287 0a78 00C0 rjmp .L126 |
1288 .L112: |
1289 0a7a 8091 0000 lds r24,VarioMeter |
1290 0a7e 9091 0000 lds r25,(VarioMeter)+1 |
1291 0a82 9C01 movw r18,r24 |
1292 0a84 65E0 ldi r22,5 |
1293 0a86 220F 1: lsl r18 |
1294 0a88 331F rol r19 |
1295 0a8a 6A95 dec r22 |
1296 0a8c 01F4 brne 1b |
1297 0a8e 281B sub r18,r24 |
1298 0a90 390B sbc r19,r25 |
1299 0a92 240F add r18,r20 |
1300 0a94 351F adc r19,r21 |
1301 0a96 37FF sbrs r19,7 |
1302 0a98 00C0 rjmp .L116 |
1303 0a9a 215E subi r18,lo8(-(31)) |
1304 0a9c 3F4F sbci r19,hi8(-(31)) |
1305 .L116: |
1306 0a9e 45E0 ldi r20,5 |
1307 0aa0 3595 1: asr r19 |
1308 0aa2 2795 ror r18 |
1309 0aa4 4A95 dec r20 |
1310 0aa6 01F4 brne 1b |
1311 .L126: |
1312 0aa8 3093 0000 sts (VarioMeter)+1,r19 |
1313 0aac 2093 0000 sts VarioMeter,r18 |
1314 0ab0 8091 0000 lds r24,tmpLuftdruck.10 |
1315 0ab4 9091 0000 lds r25,(tmpLuftdruck.10)+1 |
1316 0ab8 A091 0000 lds r26,(tmpLuftdruck.10)+2 |
1317 0abc B091 0000 lds r27,(tmpLuftdruck.10)+3 |
1318 0ac0 B7FF sbrs r27,7 |
1319 0ac2 00C0 rjmp .L117 |
1320 0ac4 0196 adiw r24,1 |
1321 0ac6 A11D adc r26,__zero_reg__ |
1322 0ac8 B11D adc r27,__zero_reg__ |
1323 .L117: |
1324 0aca B595 asr r27 |
1325 0acc A795 ror r26 |
1326 0ace 9795 ror r25 |
1327 0ad0 8795 ror r24 |
1328 0ad2 8093 0000 sts tmpLuftdruck.10,r24 |
1329 0ad6 9093 0000 sts (tmpLuftdruck.10)+1,r25 |
1330 0ada A093 0000 sts (tmpLuftdruck.10)+2,r26 |
1331 0ade B093 0000 sts (tmpLuftdruck.10)+3,r27 |
1332 0ae2 88E0 ldi r24,lo8(8) |
1333 0ae4 8093 0000 sts messanzahl_Druck.11,r24 |
1334 0ae8 00C0 rjmp .L127 |
1335 .L118: |
1336 0aea 1092 0000 sts state.1,__zero_reg__ |
1337 .L127: |
1338 0aee 82E0 ldi r24,lo8(2) |
1339 .L128: |
1340 0af0 8093 0000 sts kanal.0,r24 |
1341 .L60: |
1342 0af4 8091 0000 lds r24,kanal.0 |
1343 0af8 8093 7C00 sts 124,r24 |
1344 0afc 8091 0000 lds r24,state.1 |
1345 0b00 8823 tst r24 |
1346 0b02 01F0 breq .L59 |
1347 0b04 8FEC ldi r24,lo8(-49) |
1348 0b06 8093 7A00 sts 122,r24 |
1349 .L59: |
1350 /* epilogue: frame size=0 */ |
1351 0b0a FF91 pop r31 |
1352 0b0c EF91 pop r30 |
1353 0b0e BF91 pop r27 |
1354 0b10 AF91 pop r26 |
1355 0b12 9F91 pop r25 |
1356 0b14 8F91 pop r24 |
1357 0b16 7F91 pop r23 |
1358 0b18 6F91 pop r22 |
1359 0b1a 5F91 pop r21 |
1360 0b1c 4F91 pop r20 |
1361 0b1e 3F91 pop r19 |
1362 0b20 2F91 pop r18 |
1363 0b22 1F91 pop r17 |
1364 0b24 0F91 pop r16 |
1365 0b26 FF90 pop r15 |
1366 0b28 EF90 pop r14 |
1367 0b2a 0F90 pop __tmp_reg__ |
1368 0b2c 0FBE out __SREG__,__tmp_reg__ |
1369 0b2e 0F90 pop __tmp_reg__ |
1370 0b30 1F90 pop __zero_reg__ |
1371 0b32 1895 reti |
1372 /* epilogue end (size=21) */ |
1373 /* function __vector_24 size 1094 (1052) */ |
1375 .comm Aktuell_Nick,2,1 |
1376 .comm Aktuell_Roll,2,1 |
1377 .comm Aktuell_Gier,2,1 |
1378 .comm Aktuell_ax,2,1 |
1379 .comm Aktuell_ay,2,1 |
1380 .comm Aktuell_az,2,1 |
1381 .comm DruckOffsetSetting,1,1 |
1382 .comm StartLuftdruck,2,1 |
1383 /* File "analog.c": code 1471 = 0x05bf (1414), prologues 27, epilogues 30 */ |
DEFINED SYMBOLS |
*ABS*:00000000 analog.c |
C:\Temp/cc9gIpIn.s:3 *ABS*:0000003f __SREG__ |
C:\Temp/cc9gIpIn.s:4 *ABS*:0000003e __SP_H__ |
C:\Temp/cc9gIpIn.s:5 *ABS*:0000003d __SP_L__ |
C:\Temp/cc9gIpIn.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Temp/cc9gIpIn.s:7 *ABS*:00000001 __zero_reg__ |
C:\Temp/cc9gIpIn.s:14 .data:00000000 AdReady |
C:\Temp/cc9gIpIn.s:19 .data:00000001 AnalogOffsetGier |
C:\Temp/cc9gIpIn.s:24 .data:00000002 AnalogOffsetRoll |
C:\Temp/cc9gIpIn.s:29 .data:00000003 AnalogOffsetNick |
C:\Temp/cc9gIpIn.s:36 .bss:00000000 ZaehlMessungen |
C:\Temp/cc9gIpIn.s:42 .bss:00000002 VarioMeter |
C:\Temp/cc9gIpIn.s:48 .bss:00000004 ExpandBaro |
C:\Temp/cc9gIpIn.s:54 .data:00000004 MessLuftdruck |
C:\Temp/cc9gIpIn.s:61 .bss:00000005 SummenHoehe |
C:\Temp/cc9gIpIn.s:67 .data:00000006 Luftdruck |
C:\Temp/cc9gIpIn.s:74 .bss:00000009 AdWertAccHoch |
C:\Temp/cc9gIpIn.s:80 .bss:0000000b AdWertAccNick |
C:\Temp/cc9gIpIn.s:86 .bss:0000000d AdWertAccRoll |
C:\Temp/cc9gIpIn.s:92 .bss:0000000f AdWertGier |
C:\Temp/cc9gIpIn.s:98 .bss:00000011 AdWertRoll |
C:\Temp/cc9gIpIn.s:104 .bss:00000013 AdWertNick |
C:\Temp/cc9gIpIn.s:110 .data:0000000a HiResRoll |
C:\Temp/cc9gIpIn.s:115 .data:0000000c HiResNick |
C:\Temp/cc9gIpIn.s:122 .bss:00000015 AdWertGierFilter |
C:\Temp/cc9gIpIn.s:128 .bss:00000017 AdWertRollFilter |
C:\Temp/cc9gIpIn.s:134 .bss:00000019 AdWertNickFilter |
C:\Temp/cc9gIpIn.s:140 .data:0000000e UBat |
C:\Temp/cc9gIpIn.s:145 .text:00000000 ADC_Init |
C:\Temp/cc9gIpIn.s:159 .progmem.data:00000000 __c.13 |
C:\Temp/cc9gIpIn.s:163 .progmem.data:00000002 __c.14 |
C:\Temp/cc9gIpIn.s:168 .text:0000000c SucheLuftruckOffset |
*COM*:00000001 DruckOffsetSetting |
C:\Temp/cc9gIpIn.s:295 .progmem.data:00000004 __c.12 |
C:\Temp/cc9gIpIn.s:300 .text:00000110 SucheGyroOffset |
.bss:0000001b kanal.0 |
C:\Temp/cc9gIpIn.s:503 .bss:0000001c state.1 |
C:\Temp/cc9gIpIn.s:504 .bss:0000001d subcount.2 |
C:\Temp/cc9gIpIn.s:505 .bss:0000001e gier1.3 |
C:\Temp/cc9gIpIn.s:506 .bss:00000020 roll1.4 |
C:\Temp/cc9gIpIn.s:507 .bss:00000022 nick1.5 |
C:\Temp/cc9gIpIn.s:508 .bss:00000024 nick_filter.6 |
C:\Temp/cc9gIpIn.s:509 .bss:00000026 roll_filter.7 |
C:\Temp/cc9gIpIn.s:510 .bss:00000028 accy.8 |
C:\Temp/cc9gIpIn.s:511 .bss:0000002a accx.9 |
C:\Temp/cc9gIpIn.s:512 .bss:0000002c tmpLuftdruck.10 |
C:\Temp/cc9gIpIn.s:513 .bss:00000030 messanzahl_Druck.11 |
C:\Temp/cc9gIpIn.s:517 .text:000002de __vector_24 |
*COM*:00000002 Aktuell_ay |
*COM*:00000002 Aktuell_ax |
*COM*:00000002 Aktuell_az |
*COM*:00000002 StartLuftdruck |
*COM*:00000002 Aktuell_Nick |
*COM*:00000002 Aktuell_Roll |
*COM*:00000002 Aktuell_Gier |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
GetParamByte |
Delay_ms_Mess |
uart_putchar |
_printf_P |
SetParamByte |
EE_Parameter |
VersionInfo |
SetDelay |
twi_state |
BLFlags |
CheckDelay |
__tablejump2__ |
NeutralAccY |
NeutralAccX |
__udivmodhi4 |
NeutralAccZ |
modell_fliegt |
Mess_Integral_Hoch |
PlatinenVersion |
AdNeutralNick |
AdNeutralRoll |
__mulsi3 |
HoehenWert |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/capacity.c |
---|
0,0 → 1,144 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software Nutzungsbedingungen (english version: see below) |
// + der Fa. HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland - nachfolgend Lizenzgeber genannt - |
// + Der Lizenzgeber räumt dem Kunden ein nicht-ausschließliches, zeitlich und räumlich* unbeschränktes Recht ein, die im den |
// + Mikrocontroller verwendete Firmware für die Hardware Flight-Ctrl, Navi-Ctrl, BL-Ctrl, MK3Mag & PC-Programm MikroKopter-Tool |
// + - nachfolgend Software genannt - nur für private Zwecke zu nutzen. |
// + Der Einsatz dieser Software ist nur auf oder mit Produkten des Lizenzgebers zulässig. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die vom Lizenzgeber gelieferte Software ist urheberrechtlich geschützt. Alle Rechte an der Software sowie an sonstigen im |
// + Rahmen der Vertragsanbahnung und Vertragsdurchführung überlassenen Unterlagen stehen im Verhältnis der Vertragspartner ausschließlich dem Lizenzgeber zu. |
// + Die in der Software enthaltenen Copyright-Vermerke, Markenzeichen, andere Rechtsvorbehalte, Seriennummern sowie |
// + sonstige der Programmidentifikation dienenden Merkmale dürfen vom Kunden nicht verändert oder unkenntlich gemacht werden. |
// + Der Kunde trifft angemessene Vorkehrungen für den sicheren Einsatz der Software. Er wird die Software gründlich auf deren |
// + Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Die Haftung des Lizenzgebers wird - soweit gesetzlich zulässig - begrenzt in Höhe des typischen und vorhersehbaren |
// + Schadens. Die gesetzliche Haftung bei Personenschäden und nach dem Produkthaftungsgesetz bleibt unberührt. Dem Lizenzgeber steht jedoch der Einwand |
// + des Mitverschuldens offen. |
// + Der Kunde trifft angemessene Vorkehrungen für den Fall, dass die Software ganz oder teilweise nicht ordnungsgemäß arbeitet. |
// + Er wird die Software gründlich auf deren Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Der Kunde wird er seine Daten vor Einsatz der Software nach dem Stand der Technik sichern. |
// + Der Kunde ist darüber unterrichtet, dass der Lizenzgeber seine Daten im zur Vertragsdurchführung erforderlichen Umfang |
// + und auf Grundlage der Datenschutzvorschriften erhebt, speichert, verarbeitet und, sofern notwendig, an Dritte übermittelt. |
// + *) Die räumliche Nutzung bezieht sich nur auf den Einsatzort, nicht auf die Reichweite der programmierten Software. |
// + #### ENDE DER NUTZUNGSBEDINGUNGEN ####' |
// + Hinweis: Informationen über erweiterte Nutzungsrechte (wie z.B. Nutzung für nicht-private Zwecke) sind auf Anfrage per Email an info(@)hisystems.de verfügbar. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software LICENSING TERMS |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + of HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland, Germany - the Licensor - |
// + The Licensor grants the customer a non-exclusive license to use the microcontroller firmware of the Flight-Ctrl, Navi-Ctrl, BL-Ctrl, and MK3Mag hardware |
// + (the Software) exclusively for private purposes. The License is unrestricted with respect to time and territory*. |
// + The Software may only be used with the Licensor's products. |
// + The Software provided by the Licensor is protected by copyright. With respect to the relationship between the parties to this |
// + agreement, all rights pertaining to the Software and other documents provided during the preparation and execution of this |
// + agreement shall be the property of the Licensor. |
// + The information contained in the Software copyright notices, trademarks, other legal reservations, serial numbers and other |
// + features that can be used to identify the program may not be altered or defaced by the customer. |
// + The customer shall be responsible for taking reasonable precautions |
// + for the safe use of the Software. The customer shall test the Software thoroughly regarding its suitability for the |
// + intended purpose before implementing it for actual operation. The Licensor's liability shall be limited to the extent of typical and |
// + foreseeable damage to the extent permitted by law, notwithstanding statutory liability for bodily injury and product |
// + liability. However, the Licensor shall be entitled to the defense of contributory negligence. |
// + The customer will take adequate precautions in the case, that the software is not working properly. The customer will test |
// + the software for his purpose before any operational usage. The customer will backup his data before using the software. |
// + The customer understands that the Licensor collects, stores and processes, and, where required, forwards, customer data |
// + to third parties to the extent necessary for executing the agreement, subject to applicable data protection and privacy regulations. |
// + *) The territory aspect only refers to the place where the Software is used, not its programmed range. |
// + #### END OF LICENSING TERMS #### |
// + Note: For information on license extensions (e.g. commercial use), please contact us at info(@)hisystems.de. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "capacity.h" |
#include "twimaster.h" |
#include "main.h" |
#include "timer0.h" |
#include "analog.h" |
#define CAPACITY_UPDATE_INTERVAL 10 // 10 ms |
#define FC_OFFSET_CURRENT 5 // calculate with a current of 0.5A |
#define BL_OFFSET_CURRENT 2 // calculate with a current of 0.2A |
// global varialbles |
unsigned short update_timer = 0; |
Capacity_t Capacity; |
// initialize capacity calculation |
void Capacity_Init(void) |
{ |
Capacity.ActualCurrent = 0; |
Capacity.UsedCapacity = 0; |
Capacity.ActualPower = 0; |
Capacity.MinOfMaxPWM = 0; |
update_timer = SetDelay(CAPACITY_UPDATE_INTERVAL); |
} |
// called in main loop at a regular interval |
void Capacity_Update(void) |
{ |
unsigned short Current, SetSum; // max value will be 255 * 12 = 3060 |
static unsigned short SubCounter = 0; |
static unsigned short CurrentOffset = 0; |
static unsigned long SumCurrentOffset = 0; |
unsigned char i, NumOfMotors, MinOfMaxPWM; |
if(CheckDelay(update_timer)) |
{ |
update_timer += CAPACITY_UPDATE_INTERVAL; // do not use SetDelay to avoid timing leaks |
// determine sum of all present BL currents and setpoints |
Current = 0; |
SetSum = 0; |
NumOfMotors = 0; |
MinOfMaxPWM = 255; |
for(i = 0; i < MAX_MOTORS; i++) |
{ |
if(Motor[i].State & MOTOR_STATE_PRESENT_MASK) |
{ |
NumOfMotors++; |
Current += (unsigned int)(Motor[i].Current); |
SetSum += (unsigned int)(Motor[i].SetPoint); |
if(Motor[i].MaxPWM < MinOfMaxPWM) MinOfMaxPWM = Motor[i].MaxPWM; |
} |
} |
Capacity.MinOfMaxPWM = MinOfMaxPWM; |
if(SetSum == 0) // if all setpoints are 0 |
{ // determine offsets of motor currents |
#define CURRENT_AVERAGE 8 // 8bit = 256 * 10 ms = 2.56s average time |
CurrentOffset = (unsigned int)(SumCurrentOffset>>CURRENT_AVERAGE); |
SumCurrentOffset -= CurrentOffset; |
SumCurrentOffset += Current; |
// after averaging set current to static offset |
Current = FC_OFFSET_CURRENT; |
} |
else // some motors are running, includes also motor test condition, where "MotorRunning" is false |
{ // subtract offset |
if(Current > CurrentOffset) Current -= CurrentOffset; |
else Current = 0; |
// add the FC and BL Offsets |
Current += FC_OFFSET_CURRENT + NumOfMotors * BL_OFFSET_CURRENT; |
} |
// update actual Current |
Capacity.ActualCurrent = Current; |
// update actual Power |
if(Current < 255) Capacity.ActualPower = (UBat * Current) / 100; // in W higher resolution |
else Capacity.ActualPower = (UBat * (Current/4)) / 25; // in W |
// update used capacity |
SubCounter += Current; |
// 100mA * 1ms * CAPACITY_UPDATE_INTERVAL = 1 mA * 100 ms * CAPACITY_UPDATE_INTERVAL |
// = 1mA * 0.1s * CAPACITY_UPDATE_INTERVAL = 1mA * 1min / (600 / CAPACITY_UPDATE_INTERVAL) |
// = 1mAh / (36000 / CAPACITY_UPDATE_INTERVAL) |
#define SUB_COUNTER_LIMIT (36000 / CAPACITY_UPDATE_INTERVAL) |
if(SubCounter > SUB_COUNTER_LIMIT) |
{ |
Capacity.UsedCapacity++; // we have one mAh more |
SubCounter -= SUB_COUNTER_LIMIT; // keep the remaining sub part |
} |
} // EOF check delay update timer |
} |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/capacity.h |
---|
0,0 → 1,18 |
#ifndef _CAPACITY_H |
#define _CAPACITY_H |
typedef struct |
{ |
unsigned short ActualCurrent; // in 0.1A Steps |
unsigned short ActualPower; // in 0.1W |
unsigned short UsedCapacity; // in mAh |
unsigned char MinOfMaxPWM; // BL Power Limit |
} __attribute__((packed)) Capacity_t; |
extern Capacity_t Capacity; |
void Capacity_Init(void); |
void Capacity_Update(void); |
#endif //_CAPACITY_H |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/capacity.lst |
---|
0,0 → 1,229 |
1 .file "capacity.c" |
2 .arch atmega1284p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .global update_timer |
11 .global update_timer |
12 .section .bss |
15 update_timer: |
16 0000 0000 .skip 2,0 |
17 .text |
18 .global Capacity_Init |
20 Capacity_Init: |
21 /* prologue: frame size=0 */ |
22 /* prologue end (size=0) */ |
23 0000 1092 0000 sts (Capacity)+1,__zero_reg__ |
24 0004 1092 0000 sts Capacity,__zero_reg__ |
25 0008 1092 0000 sts (Capacity+4)+1,__zero_reg__ |
26 000c 1092 0000 sts Capacity+4,__zero_reg__ |
27 0010 1092 0000 sts (Capacity+2)+1,__zero_reg__ |
28 0014 1092 0000 sts Capacity+2,__zero_reg__ |
29 0018 1092 0000 sts Capacity+6,__zero_reg__ |
30 001c 8AE0 ldi r24,lo8(10) |
31 001e 90E0 ldi r25,hi8(10) |
32 0020 0E94 0000 call SetDelay |
33 0024 9093 0000 sts (update_timer)+1,r25 |
34 0028 8093 0000 sts update_timer,r24 |
35 /* epilogue: frame size=0 */ |
36 002c 0895 ret |
37 /* epilogue end (size=1) */ |
38 /* function Capacity_Init size 23 (22) */ |
40 .lcomm SubCounter.0,2 |
41 .lcomm CurrentOffset.1,2 |
42 .lcomm SumCurrentOffset.2,4 |
43 .global Capacity_Update |
45 Capacity_Update: |
46 /* prologue: frame size=0 */ |
47 002e CF93 push r28 |
48 0030 DF93 push r29 |
49 /* prologue end (size=2) */ |
50 0032 8091 0000 lds r24,update_timer |
51 0036 9091 0000 lds r25,(update_timer)+1 |
52 003a 0E94 0000 call CheckDelay |
53 003e 8823 tst r24 |
54 0040 01F4 brne .+2 |
55 0042 00C0 rjmp .L2 |
56 0044 8091 0000 lds r24,update_timer |
57 0048 9091 0000 lds r25,(update_timer)+1 |
58 004c 0A96 adiw r24,10 |
59 004e 9093 0000 sts (update_timer)+1,r25 |
60 0052 8093 0000 sts update_timer,r24 |
61 0056 E0E0 ldi r30,lo8(0) |
62 0058 F0E0 ldi r31,hi8(0) |
63 005a 9F01 movw r18,r30 |
64 005c 90E0 ldi r25,lo8(0) |
65 005e 5FEF ldi r21,lo8(-1) |
66 0060 A0E0 ldi r26,lo8(Motor) |
67 0062 B0E0 ldi r27,hi8(Motor) |
68 0064 4BE0 ldi r20,lo8(11) |
69 .L9: |
70 0066 ED01 movw r28,r26 |
71 0068 8B81 ldd r24,Y+3 |
72 006a 87FF sbrs r24,7 |
73 006c 00C0 rjmp .L6 |
74 006e 9F5F subi r25,lo8(-(1)) |
75 0070 8D81 ldd r24,Y+5 |
76 0072 E80F add r30,r24 |
77 0074 F11D adc r31,__zero_reg__ |
78 0076 8981 ldd r24,Y+1 |
79 0078 280F add r18,r24 |
80 007a 311D adc r19,__zero_reg__ |
81 007c 8E81 ldd r24,Y+6 |
82 007e 8517 cp r24,r21 |
83 0080 00F4 brsh .L6 |
84 0082 582F mov r21,r24 |
85 .L6: |
86 0084 4150 subi r20,lo8(-(-1)) |
87 0086 1896 adiw r26,8 |
88 0088 47FF sbrs r20,7 |
89 008a 00C0 rjmp .L9 |
90 008c 5093 0000 sts Capacity+6,r21 |
91 0090 232B or r18,r19 |
92 0092 01F4 brne .L10 |
93 0094 2091 0000 lds r18,SumCurrentOffset.2 |
94 0098 3091 0000 lds r19,(SumCurrentOffset.2)+1 |
95 009c 4091 0000 lds r20,(SumCurrentOffset.2)+2 |
96 00a0 5091 0000 lds r21,(SumCurrentOffset.2)+3 |
97 00a4 BB27 clr r27 |
98 00a6 A52F mov r26,r21 |
99 00a8 942F mov r25,r20 |
100 00aa 832F mov r24,r19 |
101 00ac 9093 0000 sts (CurrentOffset.1)+1,r25 |
102 00b0 8093 0000 sts CurrentOffset.1,r24 |
103 00b4 AA27 clr r26 |
104 00b6 BB27 clr r27 |
105 00b8 281B sub r18,r24 |
106 00ba 390B sbc r19,r25 |
107 00bc 4A0B sbc r20,r26 |
108 00be 5B0B sbc r21,r27 |
109 00c0 CF01 movw r24,r30 |
110 00c2 AA27 clr r26 |
111 00c4 BB27 clr r27 |
112 00c6 280F add r18,r24 |
113 00c8 391F adc r19,r25 |
114 00ca 4A1F adc r20,r26 |
115 00cc 5B1F adc r21,r27 |
116 00ce 2093 0000 sts SumCurrentOffset.2,r18 |
117 00d2 3093 0000 sts (SumCurrentOffset.2)+1,r19 |
118 00d6 4093 0000 sts (SumCurrentOffset.2)+2,r20 |
119 00da 5093 0000 sts (SumCurrentOffset.2)+3,r21 |
120 00de E5E0 ldi r30,lo8(5) |
121 00e0 F0E0 ldi r31,hi8(5) |
122 00e2 00C0 rjmp .L11 |
123 .L10: |
124 00e4 2091 0000 lds r18,CurrentOffset.1 |
125 00e8 3091 0000 lds r19,(CurrentOffset.1)+1 |
126 00ec 2E17 cp r18,r30 |
127 00ee 3F07 cpc r19,r31 |
128 00f0 00F4 brsh .L12 |
129 00f2 E21B sub r30,r18 |
130 00f4 F30B sbc r31,r19 |
131 00f6 00C0 rjmp .L13 |
132 .L12: |
133 00f8 E0E0 ldi r30,lo8(0) |
134 00fa F0E0 ldi r31,hi8(0) |
135 .L13: |
136 00fc 892F mov r24,r25 |
137 00fe 9927 clr r25 |
138 0100 880F add r24,r24 |
139 0102 991F adc r25,r25 |
140 0104 E80F add r30,r24 |
141 0106 F91F adc r31,r25 |
142 0108 3596 adiw r30,5 |
143 .L11: |
144 010a F093 0000 sts (Capacity)+1,r31 |
145 010e E093 0000 sts Capacity,r30 |
146 0112 EF3F cpi r30,255 |
147 0114 F105 cpc r31,__zero_reg__ |
148 0116 00F4 brsh .L14 |
149 0118 8091 0000 lds r24,UBat |
150 011c 9091 0000 lds r25,(UBat)+1 |
151 0120 8E9F mul r24,r30 |
152 0122 9001 movw r18,r0 |
153 0124 8F9F mul r24,r31 |
154 0126 300D add r19,r0 |
155 0128 9E9F mul r25,r30 |
156 012a 300D add r19,r0 |
157 012c 1124 clr r1 |
158 012e C901 movw r24,r18 |
159 0130 64E6 ldi r22,lo8(100) |
160 0132 70E0 ldi r23,hi8(100) |
161 0134 00C0 rjmp .L19 |
162 .L14: |
163 0136 CF01 movw r24,r30 |
164 0138 9695 lsr r25 |
165 013a 8795 ror r24 |
166 013c 9695 lsr r25 |
167 013e 8795 ror r24 |
168 0140 2091 0000 lds r18,UBat |
169 0144 3091 0000 lds r19,(UBat)+1 |
170 0148 289F mul r18,r24 |
171 014a A001 movw r20,r0 |
172 014c 299F mul r18,r25 |
173 014e 500D add r21,r0 |
174 0150 389F mul r19,r24 |
175 0152 500D add r21,r0 |
176 0154 1124 clr r1 |
177 0156 CA01 movw r24,r20 |
178 0158 69E1 ldi r22,lo8(25) |
179 015a 70E0 ldi r23,hi8(25) |
180 .L19: |
181 015c 0E94 0000 call __udivmodhi4 |
182 0160 7093 0000 sts (Capacity+2)+1,r23 |
183 0164 6093 0000 sts Capacity+2,r22 |
184 0168 2091 0000 lds r18,SubCounter.0 |
185 016c 3091 0000 lds r19,(SubCounter.0)+1 |
186 0170 2E0F add r18,r30 |
187 0172 3F1F adc r19,r31 |
188 0174 3093 0000 sts (SubCounter.0)+1,r19 |
189 0178 2093 0000 sts SubCounter.0,r18 |
190 017c 5EE0 ldi r21,hi8(3601) |
191 017e 2131 cpi r18,lo8(3601) |
192 0180 3507 cpc r19,r21 |
193 0182 00F0 brlo .L2 |
194 0184 8091 0000 lds r24,Capacity+4 |
195 0188 9091 0000 lds r25,(Capacity+4)+1 |
196 018c 0196 adiw r24,1 |
197 018e 9093 0000 sts (Capacity+4)+1,r25 |
198 0192 8093 0000 sts Capacity+4,r24 |
199 0196 2051 subi r18,lo8(-(-3600)) |
200 0198 3E40 sbci r19,hi8(-(-3600)) |
201 019a 3093 0000 sts (SubCounter.0)+1,r19 |
202 019e 2093 0000 sts SubCounter.0,r18 |
203 .L2: |
204 /* epilogue: frame size=0 */ |
205 01a2 DF91 pop r29 |
206 01a4 CF91 pop r28 |
207 01a6 0895 ret |
208 /* epilogue end (size=3) */ |
209 /* function Capacity_Update size 189 (184) */ |
211 .comm Capacity,7,1 |
212 /* File "capacity.c": code 212 = 0x00d4 ( 206), prologues 2, epilogues 4 */ |
DEFINED SYMBOLS |
*ABS*:00000000 capacity.c |
C:\Temp/ccTVr0ER.s:3 *ABS*:0000003f __SREG__ |
C:\Temp/ccTVr0ER.s:4 *ABS*:0000003e __SP_H__ |
C:\Temp/ccTVr0ER.s:5 *ABS*:0000003d __SP_L__ |
C:\Temp/ccTVr0ER.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Temp/ccTVr0ER.s:7 *ABS*:00000001 __zero_reg__ |
C:\Temp/ccTVr0ER.s:15 .bss:00000000 update_timer |
C:\Temp/ccTVr0ER.s:20 .text:00000000 Capacity_Init |
*COM*:00000007 Capacity |
.bss:00000002 SubCounter.0 |
C:\Temp/ccTVr0ER.s:40 .bss:00000004 CurrentOffset.1 |
C:\Temp/ccTVr0ER.s:41 .bss:00000006 SumCurrentOffset.2 |
C:\Temp/ccTVr0ER.s:45 .text:0000002e Capacity_Update |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
SetDelay |
CheckDelay |
Motor |
UBat |
__udivmodhi4 |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/debug.c |
---|
0,0 → 1,48 |
#include "main.h" |
#include "debug.h" |
#ifdef DEBUG // only include functions if DEBUG is defined in main.h |
#warning : "### DEBUG-Funktion aktiv ###" |
unsigned char Debug_BufPtr = 0; |
struct str_Debug tDebug; |
unsigned char SendDebugOutput = 0; |
// function called from _printf_P to output character |
void Debug_Putchar(char c) |
{ |
if (!SendDebugOutput) |
{ |
tDebug.Text[Debug_BufPtr++] = c; // copy character to buffer |
if (Debug_BufPtr > 30) Debug_BufPtr = 30; // avoid buffer overflow |
} |
} |
void DebugSend(unsigned char cmd) |
{ |
if (!SendDebugOutput) |
{ |
tDebug.Cmd = cmd; |
tDebug.Text[Debug_BufPtr] = '\0'; // end of text marker |
Debug_BufPtr = 0; // set bufferindex to 0 |
SendDebugOutput = 1; // set flag to trasmit data the next time in serial transmit function |
} |
} |
#endif |
/* |
add the following code block to the serial transmit function |
#ifdef DEBUG // only include functions if DEBUG is defined |
if(SendDebugOutput && UebertragungAbgeschlossen) |
{ |
SendOutData('0', FC_ADDRESS, 1, (unsigned char *) &tDebug, sizeof(tDebug)); |
SendDebugOutput = 0; |
} |
#endif |
*/ |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/debug.h |
---|
0,0 → 1,60 |
#ifndef _DEBUG_H |
#define _DEBUG_H |
// ---------------------------------------------- |
#define CMD_NONE 0x00 |
#define CMD_RAW_OUTPUT 0x01 |
#define CMD_ERROR_MSG 0x02 |
#define CMD_WARNING_MSG 0x04 |
#define CMD_GREEN_MSG 0x08 |
// debug console in MK-Tool can also handle ANSI ESC seq. |
#define ANSI_ATTRIBUTE_OFF "\033[0m" |
#define ANSI_BOLD "\033[1m" |
#define ANSI_UNDERSCORE "\033[4m" |
#define ANSI_BLINK "\033[5m" |
#define ANSI_INVERSE "\033[7m" |
#define ANSI_INVISIBLE "\033[8m" |
#define ANSI_COLOR_BLACK "\033[30m" |
#define ANSI_COLOR_RED "\033[31m" |
#define ANSI_COLOR_GREEN "\033[32m" |
#define ANSI_COLOR_YELLOW "\033[33m" |
#define ANSI_COLOR_BLUE "\033[34m" |
#define ANSI_COLOR_VIOLETT "\033[35m" |
#define ANSI_COLOR_KOBALTBLUE "\033[36m" |
#define ANSI_COLOR_WHITE "\033[37m" |
#define ANSI_CLEAR "\033[2J" |
#define ANSI_HOME "\033[H" |
// macros for easier use |
#ifdef DEBUG // only include functions if DEBUG is defined in main.h |
#define Debug(format, args...) { _printf_P(&Debug_Putchar, PSTR(format) , ## args); DebugSend(CMD_NONE); } |
#define Debug_Raw(format, args...) { _printf_P(&Debug_Putchar, PSTR(format) , ## args); DebugSend(CMD_RAW_OUTPUT); } |
#define Debug_Warning(format, args...) { _printf_P(&Debug_Putchar, PSTR(format) , ## args); DebugSend(CMD_WARNING_MSG); } |
#define Debug_Error(format, args...) { _printf_P(&Debug_Putchar, PSTR(format) , ## args); DebugSend(CMD_ERROR_MSG); } |
#define Debug_OK(format, args...) { _printf_P(&Debug_Putchar, PSTR(format) , ## args); DebugSend(CMD_GREEN_MSG); } |
struct str_Debug |
{ |
unsigned char Cmd; // bitcoded command |
char Text[32]; |
}; |
extern struct str_Debug tDebug; |
unsigned char SendDebugOutput; |
void Debug_Putchar(char c); |
void DebugSend(unsigned char cmd); |
#else // dummy macros (won't waste flash, if #DEBUG is disabled) |
#define Debug(format, args...) ; |
#define Debug_Raw(format, args...) ; |
#define Debug_Warning(format, args...) ; |
#define Debug_Error(format, args...) ; |
#define Debug_OK(format, args...) ; |
#endif |
// ---------------------------------------------- |
#endif |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/debug.lst |
---|
0,0 → 1,21 |
1 .file "debug.c" |
2 .arch atmega1284p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 /* File "debug.c": code 0 = 0x0000 ( 0), prologues 0, epilogues 0 */ |
DEFINED SYMBOLS |
*ABS*:00000000 debug.c |
C:\Temp/cczt3UTY.s:3 *ABS*:0000003f __SREG__ |
C:\Temp/cczt3UTY.s:4 *ABS*:0000003e __SP_H__ |
C:\Temp/cczt3UTY.s:5 *ABS*:0000003d __SP_L__ |
C:\Temp/cczt3UTY.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Temp/cczt3UTY.s:7 *ABS*:00000001 __zero_reg__ |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/eeprom.c |
---|
0,0 → 1,632 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software Nutzungsbedingungen (english version: see below) |
// + der Fa. HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland - nachfolgend Lizenzgeber genannt - |
// + Der Lizenzgeber räumt dem Kunden ein nicht-ausschließliches, zeitlich und räumlich* unbeschränktes Recht ein, die im den |
// + Mikrocontroller verwendete Firmware für die Hardware Flight-Ctrl, Navi-Ctrl, BL-Ctrl, MK3Mag & PC-Programm MikroKopter-Tool |
// + - nachfolgend Software genannt - nur für private Zwecke zu nutzen. |
// + Der Einsatz dieser Software ist nur auf oder mit Produkten des Lizenzgebers zulässig. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die vom Lizenzgeber gelieferte Software ist urheberrechtlich geschützt. Alle Rechte an der Software sowie an sonstigen im |
// + Rahmen der Vertragsanbahnung und Vertragsdurchführung überlassenen Unterlagen stehen im Verhältnis der Vertragspartner ausschließlich dem Lizenzgeber zu. |
// + Die in der Software enthaltenen Copyright-Vermerke, Markenzeichen, andere Rechtsvorbehalte, Seriennummern sowie |
// + sonstige der Programmidentifikation dienenden Merkmale dürfen vom Kunden nicht verändert oder unkenntlich gemacht werden. |
// + Der Kunde trifft angemessene Vorkehrungen für den sicheren Einsatz der Software. Er wird die Software gründlich auf deren |
// + Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Die Haftung des Lizenzgebers wird - soweit gesetzlich zulässig - begrenzt in Höhe des typischen und vorhersehbaren |
// + Schadens. Die gesetzliche Haftung bei Personenschäden und nach dem Produkthaftungsgesetz bleibt unberührt. Dem Lizenzgeber steht jedoch der Einwand |
// + des Mitverschuldens offen. |
// + Der Kunde trifft angemessene Vorkehrungen für den Fall, dass die Software ganz oder teilweise nicht ordnungsgemäß arbeitet. |
// + Er wird die Software gründlich auf deren Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Der Kunde wird er seine Daten vor Einsatz der Software nach dem Stand der Technik sichern. |
// + Der Kunde ist darüber unterrichtet, dass der Lizenzgeber seine Daten im zur Vertragsdurchführung erforderlichen Umfang |
// + und auf Grundlage der Datenschutzvorschriften erhebt, speichert, verarbeitet und, sofern notwendig, an Dritte übermittelt. |
// + *) Die räumliche Nutzung bezieht sich nur auf den Einsatzort, nicht auf die Reichweite der programmierten Software. |
// + #### ENDE DER NUTZUNGSBEDINGUNGEN ####' |
// + Hinweis: Informationen über erweiterte Nutzungsrechte (wie z.B. Nutzung für nicht-private Zwecke) sind auf Anfrage per Email an info(@)hisystems.de verfügbar. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software LICENSING TERMS |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + of HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland, Germany - the Licensor - |
// + The Licensor grants the customer a non-exclusive license to use the microcontroller firmware of the Flight-Ctrl, Navi-Ctrl, BL-Ctrl, and MK3Mag hardware |
// + (the Software) exclusively for private purposes. The License is unrestricted with respect to time and territory*. |
// + The Software may only be used with the Licensor's products. |
// + The Software provided by the Licensor is protected by copyright. With respect to the relationship between the parties to this |
// + agreement, all rights pertaining to the Software and other documents provided during the preparation and execution of this |
// + agreement shall be the property of the Licensor. |
// + The information contained in the Software copyright notices, trademarks, other legal reservations, serial numbers and other |
// + features that can be used to identify the program may not be altered or defaced by the customer. |
// + The customer shall be responsible for taking reasonable precautions |
// + for the safe use of the Software. The customer shall test the Software thoroughly regarding its suitability for the |
// + intended purpose before implementing it for actual operation. The Licensor's liability shall be limited to the extent of typical and |
// + foreseeable damage to the extent permitted by law, notwithstanding statutory liability for bodily injury and product |
// + liability. However, the Licensor shall be entitled to the defense of contributory negligence. |
// + The customer will take adequate precautions in the case, that the software is not working properly. The customer will test |
// + the software for his purpose before any operational usage. The customer will backup his data before using the software. |
// + The customer understands that the Licensor collects, stores and processes, and, where required, forwards, customer data |
// + to third parties to the extent necessary for executing the agreement, subject to applicable data protection and privacy regulations. |
// + *) The territory aspect only refers to the place where the Software is used, not its programmed range. |
// + #### END OF LICENSING TERMS #### |
// + Note: For information on license extensions (e.g. commercial use), please contact us at info(@)hisystems.de. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#ifndef EEMEM |
#define EEMEM __attribute__ ((section (".eeprom"))) |
#endif |
#include <avr/eeprom.h> |
#include <string.h> |
#include "eeprom.h" |
#include "uart.h" |
#include "led.h" |
#include "main.h" |
#include "fc.h" |
#include "twimaster.h" |
paramset_t EE_Parameter; |
MixerTable_t Mixer; |
uint8_t RequiredMotors; |
uint8_t RAM_Checksum(uint8_t* pBuffer, uint16_t len) |
{ |
uint8_t crc = 0xAA; |
uint16_t i; |
for(i=0; i<len; i++) |
{ |
crc += pBuffer[i]; |
} |
return crc; |
} |
uint8_t EEProm_Checksum(uint16_t EEAddr, uint16_t len) |
{ |
uint8_t crc = 0xAA; |
uint16_t off; |
for(off=0; off<len; off++) |
{ |
crc += eeprom_read_byte((uint8_t*)(EEAddr + off));; |
} |
return crc; |
} |
void ParamSet_DefaultStickMapping(void) |
{ |
EE_Parameter.Kanalbelegung[K_GAS] = 1; |
EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
EE_Parameter.Kanalbelegung[K_NICK] = 3; |
EE_Parameter.Kanalbelegung[K_GIER] = 4; |
EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
EE_Parameter.Kanalbelegung[K_POTI4] = 8; |
EE_Parameter.Kanalbelegung[K_POTI5] = 9; |
EE_Parameter.Kanalbelegung[K_POTI6] = 10; |
EE_Parameter.Kanalbelegung[K_POTI7] = 11; |
EE_Parameter.Kanalbelegung[K_POTI8] = 12; |
} |
/***************************************************/ |
/* Default Values for parameter set 1 */ |
/***************************************************/ |
void CommonDefaults(void) |
{ |
EE_Parameter.Revision = EEPARAM_REVISION; |
memset(EE_Parameter.Name,0,12); // delete name |
if(PlatinenVersion >= 20) |
{ |
EE_Parameter.Gyro_D = 10; |
EE_Parameter.Driftkomp = 0; |
EE_Parameter.GyroAccFaktor = 27; |
EE_Parameter.WinkelUmschlagNick = 78; |
EE_Parameter.WinkelUmschlagRoll = 78; |
} |
else |
{ |
EE_Parameter.Gyro_D = 3; |
EE_Parameter.Driftkomp = 32; |
EE_Parameter.GyroAccFaktor = 30; |
EE_Parameter.WinkelUmschlagNick = 85; |
EE_Parameter.WinkelUmschlagRoll = 85; |
} |
EE_Parameter.GyroAccAbgleich = 32; // 1/k |
EE_Parameter.BitConfig = 0; // Looping usw. |
EE_Parameter.GlobalConfig = CFG_ACHSENKOPPLUNG_AKTIV | CFG_KOMPASS_AKTIV | CFG_GPS_AKTIV | CFG_HOEHEN_SCHALTER; |
EE_Parameter.ExtraConfig = CFG_GPS_AID | CFG2_VARIO_BEEP; |
EE_Parameter.GlobalConfig3 = CFG3_SPEAK_ALL;//CFG3_VARIO_FAILSAFE; |
EE_Parameter.Receiver = RECEIVER_HOTT; |
EE_Parameter.MotorSafetySwitch = 0; |
EE_Parameter.ExternalControl = 0; |
EE_Parameter.Gas_Min = 8; // Wert : 0-32 |
EE_Parameter.Gas_Max = 230; // Wert : 33-247 |
EE_Parameter.KompassWirkung = 64; // Wert : 0-247 |
EE_Parameter.Hoehe_MinGas = 30; |
EE_Parameter.MaxHoehe = 255; // Wert : 0-247 255 -> Poti1 |
EE_Parameter.Hoehe_P = 15; // Wert : 0-32 |
EE_Parameter.Luftdruck_D = 30; // Wert : 0-247 |
EE_Parameter.Hoehe_ACC_Wirkung = 0; // Wert : 0-247 |
EE_Parameter.Hoehe_HoverBand = 8; // Wert : 0-247 |
EE_Parameter.Hoehe_GPS_Z = 20; // Wert : 0-247 |
EE_Parameter.Hoehe_StickNeutralPoint = 0;// Wert : 0-247 (0 = Hover-Estimation) |
EE_Parameter.Hoehe_Verstaerkung = 15; // Wert : 0-50 (15 -> ca. +/- 5m/sek bei Stick-Voll-Ausschlag) |
EE_Parameter.UserParam1 = 0; // zur freien Verwendung |
EE_Parameter.UserParam2 = 0; // zur freien Verwendung |
EE_Parameter.UserParam3 = 0; // zur freien Verwendung |
EE_Parameter.UserParam4 = 0; // zur freien Verwendung |
EE_Parameter.UserParam5 = 0; // zur freien Verwendung |
EE_Parameter.UserParam6 = 0; // zur freien Verwendung |
EE_Parameter.UserParam7 = 0; // zur freien Verwendung |
EE_Parameter.UserParam8 = 0; // zur freien Verwendung |
EE_Parameter.ServoNickControl = 128; // Wert : 0-247 // Stellung des Servos |
EE_Parameter.ServoNickComp = 50; // Wert : 0-247 // Einfluss Gyro/Servo |
EE_Parameter.ServoCompInvert = 2; // Wert : 0-247 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 15; // Wert : 0-247 // Anschlag |
EE_Parameter.ServoNickMax = 230; // Wert : 0-247 // Anschlag |
EE_Parameter.ServoNickRefresh = 4; |
EE_Parameter.Servo3 = 125; |
EE_Parameter.Servo4 = 125; |
EE_Parameter.Servo5 = 125; |
EE_Parameter.ServoRollControl = 128; // Wert : 0-247 // Stellung des Servos |
EE_Parameter.ServoRollComp = 85; // Wert : 0-247 // Einfluss Gyro/Servo |
EE_Parameter.ServoRollMin = 70; // Wert : 0-247 // Anschlag |
EE_Parameter.ServoRollMax = 220; // Wert : 0-247 // Anschlag |
EE_Parameter.ServoManualControlSpeed = 60; |
EE_Parameter.CamOrientation = 0; // Wert : 0-24 -> 0-360 -> 15° steps |
EE_Parameter.J16Bitmask = 95; |
EE_Parameter.J17Bitmask = 243; |
EE_Parameter.WARN_J16_Bitmask = 0xAA; |
EE_Parameter.WARN_J17_Bitmask = 0xAA; |
EE_Parameter.J16Timing = 40; |
EE_Parameter.J17Timing = 40; |
EE_Parameter.NaviOut1Parameter = 0; // Photo release in meter |
EE_Parameter.LoopGasLimit = 50; |
EE_Parameter.LoopThreshold = 90; // Wert: 0-247 Schwelle für Stickausschlag |
EE_Parameter.LoopHysterese = 50; |
EE_Parameter.NaviGpsModeControl = 254; // 254 -> Poti 2 |
EE_Parameter.NaviGpsGain = 100; |
EE_Parameter.NaviGpsP = 90; |
EE_Parameter.NaviGpsI = 90; |
EE_Parameter.NaviGpsD = 90; |
EE_Parameter.NaviGpsPLimit = 75; |
EE_Parameter.NaviGpsILimit = 85; |
EE_Parameter.NaviGpsDLimit = 75; |
EE_Parameter.NaviGpsACC = 0; |
EE_Parameter.NaviGpsMinSat = 6; |
EE_Parameter.NaviStickThreshold = 8; |
EE_Parameter.NaviWindCorrection = 90; |
EE_Parameter.NaviAccCompensation = 42; |
EE_Parameter.NaviOperatingRadius = 245; |
EE_Parameter.NaviAngleLimitation = 140; |
EE_Parameter.NaviPH_LoginTime = 5; |
EE_Parameter.OrientationAngle = 0; |
EE_Parameter.CareFreeModeControl = 0; |
EE_Parameter.UnterspannungsWarnung = 33; // Wert : 0-247 ( Automatische Zellenerkennung bei < 50) |
EE_Parameter.NotGas = 65; // Wert : 0-247 // Gaswert bei Empangsverlust (ggf. in Prozent) |
EE_Parameter.NotGasZeit = 90; // Wert : 0-247 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
EE_Parameter.MotorSmooth = 0; |
EE_Parameter.ComingHomeAltitude = 0; // 0 = don't change |
EE_Parameter.FailSafeTime = 0; // 0 = off |
EE_Parameter.MaxAltitude = 150; // 0 = off |
EE_Parameter.AchsKopplung1 = 90; |
EE_Parameter.AchsKopplung2 = 55; |
EE_Parameter.FailsafeChannel = 0; |
EE_Parameter.ServoFilterNick = 0; |
EE_Parameter.ServoFilterRoll = 0; |
} |
/* |
void ParamSet_DefaultSet1(void) // sport |
{ |
CommonDefaults(); |
EE_Parameter.Stick_P = 14; // Wert : 1-20 |
EE_Parameter.Stick_D = 16; // Wert : 0-20 |
EE_Parameter.StickGier_P = 12; // Wert : 1-20 |
EE_Parameter.Gyro_P = 80; // Wert : 0-247 |
EE_Parameter.Gyro_I = 150; // Wert : 0-247 |
EE_Parameter.Gyro_Gier_P = 80; // Wert : 0-247 |
EE_Parameter.Gyro_Gier_I = 150; // Wert : 0-247 |
EE_Parameter.Gyro_Stability = 6; // Wert : 1-8 |
EE_Parameter.I_Faktor = 32; |
EE_Parameter.CouplingYawCorrection = 1; |
EE_Parameter.GyroAccAbgleich = 16; // 1/k; |
EE_Parameter.DynamicStability = 100; |
memcpy(EE_Parameter.Name, "Sport\0", 12); |
EE_Parameter.crc = RAM_Checksum((uint8_t*)(&EE_Parameter), sizeof(EE_Parameter)-1); |
} |
*/ |
/***************************************************/ |
/* Default Values for parameter set 1 */ |
/***************************************************/ |
void ParamSet_DefaultSet1(void) // normal |
{ |
CommonDefaults(); |
EE_Parameter.Stick_P = 10; // Wert : 1-20 |
EE_Parameter.Stick_D = 16; // Wert : 0-20 |
EE_Parameter.StickGier_P = 6; // Wert : 1-20 |
EE_Parameter.Gyro_P = 90; // Wert : 0-247 |
EE_Parameter.Gyro_I = 120; // Wert : 0-247 |
EE_Parameter.Gyro_Gier_P = 90; // Wert : 0-247 |
EE_Parameter.Gyro_Gier_I = 120; // Wert : 0-247 |
EE_Parameter.Gyro_Stability = 6; // Wert : 1-8 |
EE_Parameter.I_Faktor = 32; |
EE_Parameter.CouplingYawCorrection = 60; |
EE_Parameter.DynamicStability = 75; |
memcpy(EE_Parameter.Name, "Fast",4); |
EE_Parameter.crc = RAM_Checksum((uint8_t*)(&EE_Parameter), sizeof(EE_Parameter)-1); |
} |
/***************************************************/ |
/* Default Values for parameter set 2 */ |
/***************************************************/ |
void ParamSet_DefaultSet2(void) // beginner |
{ |
CommonDefaults(); |
EE_Parameter.Stick_P = 8; // Wert : 1-20 |
EE_Parameter.Stick_D = 16; // Wert : 0-20 |
EE_Parameter.StickGier_P = 6; // Wert : 1-20 |
EE_Parameter.Gyro_P = 100; // Wert : 0-247 |
EE_Parameter.Gyro_I = 120; // Wert : 0-247 |
EE_Parameter.Gyro_Gier_P = 100; // Wert : 0-247 |
EE_Parameter.Gyro_Gier_I = 120; // Wert : 0-247 |
EE_Parameter.Gyro_Stability = 6; // Wert : 1-8 |
EE_Parameter.I_Faktor = 16; |
EE_Parameter.CouplingYawCorrection = 70; |
EE_Parameter.DynamicStability = 70; |
memcpy(EE_Parameter.Name, "Normal",6); |
EE_Parameter.crc = RAM_Checksum((uint8_t*)(&EE_Parameter), sizeof(EE_Parameter)-1); |
} |
/***************************************************/ |
/* Default Values for parameter set 3 */ |
/***************************************************/ |
void ParamSet_DefaultSet3(void) // beginner |
{ |
CommonDefaults(); |
EE_Parameter.Stick_P = 6; // Wert : 1-20 |
EE_Parameter.Stick_D = 10; // Wert : 0-20 |
EE_Parameter.StickGier_P = 4; // Wert : 1-20 |
EE_Parameter.Gyro_P = 100; // Wert : 0-247 |
EE_Parameter.Gyro_I = 120; // Wert : 0-247 |
EE_Parameter.Gyro_Gier_P = 100; // Wert : 0-247 |
EE_Parameter.Gyro_Gier_I = 120; // Wert : 0-247 |
EE_Parameter.Gyro_Stability = 6; // Wert : 1-8 |
EE_Parameter.I_Faktor = 16; |
EE_Parameter.CouplingYawCorrection = 70; |
EE_Parameter.DynamicStability = 70; |
memcpy(EE_Parameter.Name, "Easy", 4); |
EE_Parameter.crc = RAM_Checksum((uint8_t*)(&EE_Parameter), sizeof(EE_Parameter)-1); |
} |
/***************************************************/ |
/* Read Parameter from EEPROM as byte */ |
/***************************************************/ |
uint8_t GetParamByte(uint16_t param_id) |
{ |
return eeprom_read_byte((uint8_t*)(EEPROM_ADR_PARAM_BEGIN + param_id)); |
} |
/***************************************************/ |
/* Write Parameter to EEPROM as byte */ |
/***************************************************/ |
void SetParamByte(uint16_t param_id, uint8_t value) |
{ |
eeprom_write_byte((uint8_t*)(EEPROM_ADR_PARAM_BEGIN + param_id), value); |
} |
/***************************************************/ |
/* Read Parameter from EEPROM as word */ |
/***************************************************/ |
uint16_t GetParamWord(uint16_t param_id) |
{ |
return eeprom_read_word((uint16_t *)(EEPROM_ADR_PARAM_BEGIN + param_id)); |
} |
/***************************************************/ |
/* Write Parameter to EEPROM as word */ |
/***************************************************/ |
void SetParamWord(uint16_t param_id, uint16_t value) |
{ |
eeprom_write_word((uint16_t*)(EEPROM_ADR_PARAM_BEGIN + param_id), value); |
} |
/***************************************************/ |
/* Read Parameter Set from EEPROM */ |
/***************************************************/ |
// number [1..5] |
uint8_t ParamSet_ReadFromEEProm(uint8_t setnumber) |
{ |
uint8_t crc; |
uint16_t eeaddr; |
// range the setnumber |
if((1 > setnumber) || (setnumber > 5)) setnumber = 3; |
// calculate eeprom addr |
eeaddr = EEPROM_ADR_PARAMSET + PARAMSET_STRUCT_LEN * (setnumber - 1); |
// calculate checksum from eeprom |
crc = EEProm_Checksum(eeaddr, PARAMSET_STRUCT_LEN - 1); |
// check crc |
if(crc != eeprom_read_byte((uint8_t*)(eeaddr + PARAMSET_STRUCT_LEN - 1))) return 0; |
// check revision |
if(eeprom_read_byte((uint8_t*)(eeaddr)) != EEPARAM_REVISION) return 0; |
// read paramset from eeprom |
eeprom_read_block((void *) &EE_Parameter, (void*)(EEPROM_ADR_PARAMSET + PARAMSET_STRUCT_LEN * (setnumber - 1)), PARAMSET_STRUCT_LEN); |
LED_Init(); |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
LIBFC_HoTT_Clear(); |
#endif |
return 1; |
} |
/***************************************************/ |
/* Write Parameter Set to EEPROM */ |
/***************************************************/ |
// number [1..5] |
uint8_t ParamSet_WriteToEEProm(uint8_t setnumber) |
{ |
uint8_t crc; |
if(EE_Parameter.Revision == EEPARAM_REVISION) // write only the right revision to eeprom |
{ |
if(setnumber > 5) setnumber = 5; |
if(setnumber < 1) return 0; |
LIBFC_CheckSettings(); |
if(EE_Parameter.GlobalConfig3 & CFG3_VARIO_FAILSAFE) // check the Setting: Not more than 100% emergency gas |
{ |
if(EE_Parameter.NotGas > 99) EE_Parameter.NotGas = 80; // i.e. 80% of Hovergas |
} |
// update checksum |
EE_Parameter.crc = RAM_Checksum((uint8_t*)(&EE_Parameter), sizeof(EE_Parameter)-1); |
// write paramset to eeprom |
eeprom_write_block((void *) &EE_Parameter, (void*)(EEPROM_ADR_PARAMSET + PARAMSET_STRUCT_LEN * (setnumber - 1)), PARAMSET_STRUCT_LEN); |
// backup channel settings to separate block in eeprom |
eeprom_write_block( (void*)(EE_Parameter.Kanalbelegung), (void*)(EEPROM_ADR_CHANNELS), sizeof(EE_Parameter.Kanalbelegung)); |
// write crc of channel block to eeprom |
crc = RAM_Checksum((uint8_t*)(EE_Parameter.Kanalbelegung), sizeof(EE_Parameter.Kanalbelegung)); |
eeprom_write_byte((uint8_t*)(EEPROM_ADR_CHANNELS + sizeof(EE_Parameter.Kanalbelegung)), crc); |
// update active settings number |
SetActiveParamSet(setnumber); |
LED_Init(); |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
LIBFC_HoTT_Clear(); |
#endif |
return 1; |
} |
// wrong revision |
return 0; |
} |
/***************************************************/ |
/* Read MixerTable from EEPROM */ |
/***************************************************/ |
uint8_t MixerTable_ReadFromEEProm(void) |
{ |
uint8_t crc; |
// calculate checksum in eeprom |
crc = EEProm_Checksum(EEPROM_ADR_MIXERTABLE, sizeof(Mixer) - 1); |
// check crc |
if( crc != eeprom_read_byte((uint8_t*)(EEPROM_ADR_MIXERTABLE + sizeof(Mixer) - 1)) ) return 0; |
// check revision |
if(eeprom_read_byte((uint8_t*)(EEPROM_ADR_MIXERTABLE)) != EEMIXER_REVISION) return 0; |
// read mixer table |
eeprom_read_block((void *) &Mixer, (void*)(EEPROM_ADR_MIXERTABLE), sizeof(Mixer)); |
return 1; |
} |
/***************************************************/ |
/* Write Mixer Table to EEPROM */ |
/***************************************************/ |
uint8_t MixerTable_WriteToEEProm(void) |
{ |
if(Mixer.Revision == EEMIXER_REVISION) |
{ |
// update crc |
Mixer.crc = RAM_Checksum((uint8_t*)(&Mixer), sizeof(Mixer) - 1); |
// write to eeprom |
eeprom_write_block((void *) &Mixer, (void*)(EEPROM_ADR_MIXERTABLE), sizeof(Mixer)); |
return 1; |
} |
else return 0; |
} |
/***************************************************/ |
/* Default Values for Mixer Table */ |
/***************************************************/ |
void MixerTable_Default(void) // Quadro |
{ |
uint8_t i; |
Mixer.Revision = EEMIXER_REVISION; |
// clear mixer table |
for(i = 0; i < 16; i++) |
{ |
Mixer.Motor[i][MIX_GAS] = 0; |
Mixer.Motor[i][MIX_NICK] = 0; |
Mixer.Motor[i][MIX_ROLL] = 0; |
Mixer.Motor[i][MIX_YAW] = 0; |
} |
// default = Quadro |
Mixer.Motor[0][MIX_GAS] = 64; Mixer.Motor[0][MIX_NICK] = +64; Mixer.Motor[0][MIX_ROLL] = 0; Mixer.Motor[0][MIX_YAW] = +64; |
Mixer.Motor[1][MIX_GAS] = 64; Mixer.Motor[1][MIX_NICK] = -64; Mixer.Motor[1][MIX_ROLL] = 0; Mixer.Motor[1][MIX_YAW] = +64; |
Mixer.Motor[2][MIX_GAS] = 64; Mixer.Motor[2][MIX_NICK] = 0; Mixer.Motor[2][MIX_ROLL] = -64; Mixer.Motor[2][MIX_YAW] = -64; |
Mixer.Motor[3][MIX_GAS] = 64; Mixer.Motor[3][MIX_NICK] = 0; Mixer.Motor[3][MIX_ROLL] = +64; Mixer.Motor[3][MIX_YAW] = -64; |
memcpy(Mixer.Name, "Quadro\0\0\0\0\0\0", 12); |
Mixer.crc = RAM_Checksum((uint8_t*)(&Mixer), sizeof(Mixer) - 1); |
} |
/***************************************************/ |
/* Get active parameter set */ |
/***************************************************/ |
uint8_t GetActiveParamSet(void) |
{ |
uint8_t setnumber; |
setnumber = eeprom_read_byte((uint8_t*)(EEPROM_ADR_PARAM_BEGIN + PID_ACTIVE_SET)); |
if(setnumber > 5) |
{ |
setnumber = 3; |
eeprom_write_byte((void*)(EEPROM_ADR_PARAM_BEGIN+PID_ACTIVE_SET), setnumber); |
} |
return(setnumber); |
} |
/***************************************************/ |
/* Set active parameter set */ |
/***************************************************/ |
void SetActiveParamSet(uint8_t setnumber) |
{ |
if(setnumber > 5) setnumber = 5; |
if(setnumber < 1) setnumber = 1; |
eeprom_write_byte((uint8_t*)(EEPROM_ADR_PARAM_BEGIN + PID_ACTIVE_SET), setnumber); |
} |
/***************************************************/ |
/* Set default parameter set */ |
/***************************************************/ |
void SetDefaultParameter(uint8_t set, uint8_t restore_channels) |
{ |
if(set > 5) set = 5; |
else if(set < 1) set = 1; |
switch(set) |
{ |
case 1: |
ParamSet_DefaultSet1(); // Fill ParamSet Structure to default parameter set 1 (Sport) |
break; |
case 2: |
ParamSet_DefaultSet2(); // Kamera |
break; |
case 3: |
ParamSet_DefaultSet3(); // Beginner |
break; |
default: |
ParamSet_DefaultSet3(); // Beginner |
break; |
} |
if(restore_channels) |
{ |
uint8_t crc; |
// 1st check for a valid channel backup in eeprom |
crc = EEProm_Checksum(EEPROM_ADR_CHANNELS, sizeof(EE_Parameter.Kanalbelegung)); |
if(crc == eeprom_read_byte((uint8_t*)(EEPROM_ADR_CHANNELS + sizeof(EE_Parameter.Kanalbelegung))) ) |
{ |
eeprom_read_block((void *)EE_Parameter.Kanalbelegung, (void*)(EEPROM_ADR_CHANNELS), sizeof(EE_Parameter.Kanalbelegung)); |
} |
else ParamSet_DefaultStickMapping(); |
} |
else ParamSet_DefaultStickMapping(); |
ParamSet_WriteToEEProm(set); |
} |
/***************************************************/ |
/* Initialize EEPROM Parameter Sets */ |
/***************************************************/ |
void ParamSet_Init(void) |
{ |
uint8_t channel_backup = 0, bad_params = 0, ee_default = 0,i; |
if(EEPARAM_REVISION != GetParamByte(PID_EE_REVISION) ) |
{ |
ee_default = 1; // software update or forced by mktool |
} |
// 1st check for a valid channel backup in eeprom |
i = EEProm_Checksum(EEPROM_ADR_CHANNELS, sizeof(EE_Parameter.Kanalbelegung)); |
if(i == eeprom_read_byte((uint8_t*)(EEPROM_ADR_CHANNELS + sizeof(EE_Parameter.Kanalbelegung))) ) channel_backup = 1; |
// parameter check |
// check all 5 parameter settings |
for (i = 1;i < 6; i++) |
{ |
if(ee_default || !ParamSet_ReadFromEEProm(i)) // could not read paramset from eeprom |
{ |
bad_params = 1; |
printf("\n\rGenerating default Parameter Set %d",i); |
switch(i) |
{ |
case 1: |
ParamSet_DefaultSet1(); // Fill ParamSet Structure to default parameter set 1 (Sport) |
break; |
case 2: |
ParamSet_DefaultSet2(); // Kamera |
break; |
case 3: |
ParamSet_DefaultSet3(); // Beginner |
break; |
default: |
ParamSet_DefaultSet3(); // Kamera |
break; |
} |
if(channel_backup) // if we have an channel mapping backup in eeprom |
{ // restore it from eeprom |
eeprom_read_block((void *)EE_Parameter.Kanalbelegung, (void*)(EEPROM_ADR_CHANNELS), sizeof(EE_Parameter.Kanalbelegung)); |
} |
else |
{ // use default mapping |
ParamSet_DefaultStickMapping(); |
} |
ParamSet_WriteToEEProm(i); |
} |
} |
if(bad_params) // at least one of the parameter settings were invalid |
{ |
// default-Setting is parameter set 3 |
SetActiveParamSet(3); |
} |
// read active parameter set to ParamSet stucture |
i = GetActiveParamSet(); |
ParamSet_ReadFromEEProm(i); |
printf("\n\rUsing Parameter Set %d", i); |
// load mixer table |
if(GetParamByte(PID_EE_REVISION) == 0xff || !MixerTable_ReadFromEEProm() ) |
{ |
printf("\n\rGenerating default Mixer Table"); |
MixerTable_Default(); // Quadro |
MixerTable_WriteToEEProm(); |
} |
if(ee_default) SetParamByte(PID_EE_REVISION, EEPARAM_REVISION); |
// determine motornumber |
RequiredMotors = 0; |
for(i = 0; i < 16; i++) |
{ |
if(Mixer.Motor[i][MIX_GAS] > 0) RequiredMotors++; |
} |
printf("\n\rMixer-Config: '%s' (%u Motors)",Mixer.Name, RequiredMotors); |
PrintLine();// ("\n\r==================================="); |
} |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/eeprom.h |
---|
0,0 → 1,277 |
#ifndef _EEPROM_H |
#define _EEPROM_H |
#include <inttypes.h> |
#include "twimaster.h" |
#define EEPARAM_REVISION 92 // is count up, if paramater stucture has changed (compatibility) |
#define EEMIXER_REVISION 1 // is count up, if mixer stucture has changed (compatibility) |
#define EEPROM_ADR_PARAM_BEGIN 0 |
#define PID_EE_REVISION 1 // byte |
#define PID_ACTIVE_SET 2 // byte |
#define PID_PRESSURE_OFFSET 3 // byte |
#define PID_ACC_NICK 4 // word |
#define PID_ACC_ROLL 6 // word |
#define PID_ACC_TOP 8 // word |
#define PID_FLIGHT_MINUTES_TOTAL 10 // word |
#define PID_FLIGHT_MINUTES 14 // word |
#define PID_SPEAK_HOTT_CFG 16 // Byte |
#define EEPROM_ADR_CHANNELS 80 // 80 - 93, 12 bytes + 1 byte crc |
#define EEPROM_ADR_PARAMSET 100 // 100 - 650, 5 * 110 bytes |
#define EEPROM_ADR_MIXERTABLE 1000 // 1000 - 1078, 78 bytes |
#define EEPROM_ADR_BLCONFIG 1200 // 1200 - 1296, 12 * 8 bytes |
#define MIX_GAS 0 |
#define MIX_NICK 1 |
#define MIX_ROLL 2 |
#define MIX_YAW 3 |
typedef struct |
{ |
uint8_t Revision; |
int8_t Name[12]; |
int8_t Motor[16][4]; |
uint8_t crc; |
} __attribute__((packed)) MixerTable_t; |
extern MixerTable_t Mixer; |
extern uint8_t RequiredMotors; |
//GlobalConfig3 |
#define CFG3_NO_SDCARD_NO_START 0x01 |
#define CFG3_DPH_MAX_RADIUS 0x02 |
#define CFG3_VARIO_FAILSAFE 0x04 |
#define CFG3_MOTOR_SWITCH_MODE 0x08 |
#define CFG3_NO_GPSFIX_NO_START 0x10 |
#define CFG3_USE_NC_FOR_OUT1 0x20 |
#define CFG3_SPEAK_ALL 0x40 |
//GlobalConfig |
#define CFG_HOEHENREGELUNG 0x01 |
#define CFG_HOEHEN_SCHALTER 0x02 |
#define CFG_HEADING_HOLD 0x04 |
#define CFG_KOMPASS_AKTIV 0x08 |
#define CFG_KOMPASS_FIX 0x10 |
#define CFG_GPS_AKTIV 0x20 |
#define CFG_ACHSENKOPPLUNG_AKTIV 0x40 |
#define CFG_DREHRATEN_BEGRENZER 0x80 |
//BitConfig |
#define CFG_LOOP_OBEN 0x01 |
#define CFG_LOOP_UNTEN 0x02 |
#define CFG_LOOP_LINKS 0x04 |
#define CFG_LOOP_RECHTS 0x08 |
#define CFG_MOTOR_BLINK1 0x10 |
#define CFG_MOTOR_OFF_LED1 0x20 |
#define CFG_MOTOR_OFF_LED2 0x40 |
#define CFG_MOTOR_BLINK2 0x80 |
// ExtraConfig |
#define CFG2_HEIGHT_LIMIT 0x01 |
#define CFG2_VARIO_BEEP 0x02 |
#define CFG_SENSITIVE_RC 0x04 |
#define CFG_3_3V_REFERENCE 0x08 |
#define CFG_NO_RCOFF_BEEPING 0x10 |
#define CFG_GPS_AID 0x20 |
#define CFG_LEARNABLE_CAREFREE 0x40 |
#define CFG_IGNORE_MAG_ERR_AT_STARTUP 0x80 |
// bit mask for ParamSet.Config0 |
#define CFG0_AIRPRESS_SENSOR 0x01 |
#define CFG0_HEIGHT_SWITCH 0x02 |
#define CFG0_HEADING_HOLD 0x04 |
#define CFG0_COMPASS_ACTIVE 0x08 |
#define CFG0_COMPASS_FIX 0x10 |
#define CFG0_GPS_ACTIVE 0x20 |
#define CFG0_AXIS_COUPLING_ACTIVE 0x40 |
#define CFG0_ROTARY_RATE_LIMITER 0x80 |
// bitcoding for EE_Parameter.ServoCompInvert |
#define SERVO_NICK_INV 0x01 |
#define SERVO_ROLL_INV 0x02 |
#define SERVO_RELATIVE 0x04 // direct poti control or relative moving of the servo value |
// defines for the receiver selection |
#define RECEIVER_PPM 0 |
#define RECEIVER_SPEKTRUM 1 |
#define RECEIVER_SPEKTRUM_HI_RES 2 |
#define RECEIVER_SPEKTRUM_LOW_RES 3 |
#define RECEIVER_JETI 4 |
#define RECEIVER_ACT_DSL 5 |
#define RECEIVER_HOTT 6 |
#define RECEIVER_SBUS 7 |
#define RECEIVER_USER 8 |
#define RECEIVER_UNKNOWN 0xFF |
// defines for lookup ParamSet.ChannelAssignment |
#define K_NICK 0 |
#define K_ROLL 1 |
#define K_GAS 2 |
#define K_GIER 3 |
#define K_POTI1 4 |
#define K_POTI2 5 |
#define K_POTI3 6 |
#define K_POTI4 7 |
#define K_POTI5 8 |
#define K_POTI6 9 |
#define K_POTI7 10 |
#define K_POTI8 11 |
// values above 247 representing poti1 to poti8 |
// poti1 = 255 |
// poti2 = 254 |
// poti3 = 253 |
// poti4 = 252 |
// poti5 = 251 |
// poti6 = 250 |
// poti7 = 249 |
// poti8 = 248 |
typedef struct |
{ |
unsigned char Revision; |
unsigned char Kanalbelegung[12]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
unsigned char Hoehe_MinGas; // Wert : 0-100 |
unsigned char Luftdruck_D; // Wert : 0-250 |
unsigned char MaxHoehe; // Wert : 0-32 |
unsigned char Hoehe_P; // Wert : 0-32 |
unsigned char Hoehe_Verstaerkung; // Wert : 0-50 |
unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250 |
unsigned char Hoehe_HoverBand; // Wert : 0-250 |
unsigned char Hoehe_GPS_Z; // Wert : 0-250 |
unsigned char Hoehe_StickNeutralPoint;// Wert : 0-250 |
unsigned char Stick_P; // Wert : 1-6 |
unsigned char Stick_D; // Wert : 0-64 |
unsigned char StickGier_P; // Wert : 1-20 |
unsigned char Gas_Min; // Wert : 0-32 |
unsigned char Gas_Max; // Wert : 33-250 |
unsigned char GyroAccFaktor; // Wert : 1-64 |
unsigned char KompassWirkung; // Wert : 0-32 |
unsigned char Gyro_P; // Wert : 10-250 |
unsigned char Gyro_I; // Wert : 0-250 |
unsigned char Gyro_D; // Wert : 0-250 |
unsigned char Gyro_Gier_P; // Wert : 10-250 |
unsigned char Gyro_Gier_I; // Wert : 0-250 |
unsigned char Gyro_Stability; // Wert : 0-16 |
unsigned char UnterspannungsWarnung; // Wert : 0-250 |
unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
unsigned char Receiver; // 0= Summensignal, 1= Spektrum, 2 =Jeti, 3=ACT DSL, 4=ACT S3D |
unsigned char I_Faktor; // Wert : 0-250 |
unsigned char UserParam1; // Wert : 0-250 |
unsigned char UserParam2; // Wert : 0-250 |
unsigned char UserParam3; // Wert : 0-250 |
unsigned char UserParam4; // Wert : 0-250 |
unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
//--- Seit V0.75 |
unsigned char ServoRollControl; // Wert : 0-250 // Stellung des Servos |
unsigned char ServoRollComp; // Wert : 0-250 |
unsigned char ServoRollMin; // Wert : 0-250 |
unsigned char ServoRollMax; // Wert : 0-250 |
//--- |
unsigned char ServoNickRefresh; // Speed of the Servo |
unsigned char ServoManualControlSpeed;// |
unsigned char CamOrientation; // |
unsigned char Servo3; // Value or mapping of the Servo Output |
unsigned char Servo4; // Value or mapping of the Servo Output |
unsigned char Servo5; // Value or mapping of the Servo Output |
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
unsigned char LoopHysterese; // Wert: 0-250 Hysterese für Stickausschlag |
unsigned char AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung) |
unsigned char AchsKopplung2; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
unsigned char CouplingYawCorrection; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
unsigned char WinkelUmschlagNick; // Wert: 0-250 180°-Punkt |
unsigned char WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt |
unsigned char GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung) |
unsigned char Driftkomp; |
unsigned char DynamicStability; |
unsigned char UserParam5; // Wert : 0-250 |
unsigned char UserParam6; // Wert : 0-250 |
unsigned char UserParam7; // Wert : 0-250 |
unsigned char UserParam8; // Wert : 0-250 |
//---Output --------------------------------------------- |
unsigned char J16Bitmask; // for the J16 Output |
unsigned char J16Timing; // for the J16 Output |
unsigned char J17Bitmask; // for the J17 Output |
unsigned char J17Timing; // for the J17 Output |
// seit version V0.75c |
unsigned char WARN_J16_Bitmask; // for the J16 Output |
unsigned char WARN_J17_Bitmask; // for the J17 Output |
//---NaviCtrl--------------------------------------------- |
unsigned char NaviOut1Parameter; // for the J16 Output |
unsigned char NaviGpsModeControl; // Parameters for the Naviboard |
unsigned char NaviGpsGain; |
unsigned char NaviGpsP; |
unsigned char NaviGpsI; |
unsigned char NaviGpsD; |
unsigned char NaviGpsPLimit; |
unsigned char NaviGpsILimit; |
unsigned char NaviGpsDLimit; |
unsigned char NaviGpsACC; |
unsigned char NaviGpsMinSat; |
unsigned char NaviStickThreshold; |
unsigned char NaviWindCorrection; |
unsigned char NaviAccCompensation; // New since 0.86 -> was: SpeedCompensation |
unsigned char NaviOperatingRadius; |
unsigned char NaviAngleLimitation; |
unsigned char NaviPH_LoginTime; |
//---Ext.Ctrl--------------------------------------------- |
unsigned char ExternalControl; // for serial Control |
//---CareFree--------------------------------------------- |
unsigned char OrientationAngle; // Where is the front-direction? |
unsigned char CareFreeModeControl; // switch for CareFree |
unsigned char MotorSafetySwitch; |
unsigned char MotorSmooth; |
unsigned char ComingHomeAltitude; |
unsigned char FailSafeTime; |
unsigned char MaxAltitude; |
unsigned char FailsafeChannel; // if the value of this channel is > 100, the MK reports "RC-Lost" |
unsigned char ServoFilterNick; |
unsigned char ServoFilterRoll; |
//------------------------------------------------ |
unsigned char BitConfig; // (war Loop-Cfg) Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
unsigned char ServoCompInvert; // // 0x01 = Nick, 0x02 = Roll, 0x04 = relative moving // WICHTIG!!! am Ende lassen |
unsigned char ExtraConfig; // bitcodiert |
unsigned char GlobalConfig3; // bitcodiert |
char Name[12]; |
unsigned char crc; // must be the last byte! |
} paramset_t; |
#define PARAMSET_STRUCT_LEN sizeof(paramset_t) |
extern paramset_t EE_Parameter; |
extern uint8_t RAM_Checksum(uint8_t* pBuffer, uint16_t len); |
extern void ParamSet_Init(void); |
extern void SetDefaultParameter(uint8_t set, uint8_t restore_channels); |
extern uint8_t ParamSet_ReadFromEEProm(uint8_t setnumber); |
extern uint8_t ParamSet_WriteToEEProm(uint8_t setnumber); |
extern uint8_t GetActiveParamSet(void); |
extern void SetActiveParamSet(uint8_t setnumber); |
extern uint8_t MixerTable_ReadFromEEProm(void); |
extern uint8_t MixerTable_WriteToEEProm(void); |
extern uint8_t GetParamByte(uint16_t param_id); |
extern void SetParamByte(uint16_t param_id, uint8_t value); |
extern uint16_t GetParamWord(uint16_t param_id); |
extern void SetParamWord(uint16_t param_id, uint16_t value); |
#endif //_EEPROM_H |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/eeprom.lst |
---|
0,0 → 1,1351 |
1 .file "eeprom.c" |
2 .arch atmega1284p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .text |
12 eeprom_read_byte: |
13 /* prologue: frame size=0 */ |
14 /* prologue end (size=0) */ |
15 .L2: |
16 0000 F999 sbic 63-0x20,1 |
17 0002 00C0 rjmp .L2 |
18 0004 92BD out (65)+1-0x20,r25 |
19 0006 81BD out 65-0x20,r24 |
20 /* #APP */ |
21 /* START EEPROM READ CRITICAL SECTION */ |
22 0008 F89A sbi 31, 0 |
23 000a 80B5 in r24, 32 |
24 /* END EEPROM READ CRITICAL SECTION */ |
25 |
26 /* #NOAPP */ |
27 000c 9927 clr r25 |
28 /* epilogue: frame size=0 */ |
29 000e 0895 ret |
30 /* epilogue end (size=1) */ |
31 /* function eeprom_read_byte size 16 (15) */ |
34 eeprom_write_byte: |
35 /* prologue: frame size=0 */ |
36 /* prologue end (size=0) */ |
37 .L6: |
38 0010 F999 sbic 63-0x20,1 |
39 0012 00C0 rjmp .L6 |
40 0014 1FBA out 63-0x20,__zero_reg__ |
41 0016 92BD out (65)+1-0x20,r25 |
42 0018 81BD out 65-0x20,r24 |
43 001a 60BD out 64-0x20,r22 |
44 /* #APP */ |
45 /* START EEPROM WRITE CRITICAL SECTION */ |
46 001c 0FB6 in r0, 63 |
47 001e F894 cli |
48 0020 FA9A sbi 31, 2 |
49 0022 F99A sbi 31, 1 |
50 0024 0FBE out 63, r0 |
51 /* END EEPROM WRITE CRITICAL SECTION */ |
52 /* #NOAPP */ |
53 /* epilogue: frame size=0 */ |
54 0026 0895 ret |
55 /* epilogue end (size=1) */ |
56 /* function eeprom_write_byte size 21 (20) */ |
58 .global RAM_Checksum |
60 RAM_Checksum: |
61 /* prologue: frame size=0 */ |
62 /* prologue end (size=0) */ |
63 0028 4AEA ldi r20,lo8(-86) |
64 002a 20E0 ldi r18,lo8(0) |
65 002c 30E0 ldi r19,hi8(0) |
66 002e 2617 cp r18,r22 |
67 0030 3707 cpc r19,r23 |
68 0032 00F4 brsh .L15 |
69 0034 FC01 movw r30,r24 |
70 .L13: |
71 0036 8191 ld r24,Z+ |
72 0038 480F add r20,r24 |
73 003a 2F5F subi r18,lo8(-(1)) |
74 003c 3F4F sbci r19,hi8(-(1)) |
75 003e 2617 cp r18,r22 |
76 0040 3707 cpc r19,r23 |
77 0042 00F0 brlo .L13 |
78 .L15: |
79 0044 842F mov r24,r20 |
80 0046 9927 clr r25 |
81 /* epilogue: frame size=0 */ |
82 0048 0895 ret |
83 /* epilogue end (size=1) */ |
84 /* function RAM_Checksum size 17 (16) */ |
86 .global EEProm_Checksum |
88 EEProm_Checksum: |
89 /* prologue: frame size=0 */ |
90 /* prologue end (size=0) */ |
91 004a EAEA ldi r30,lo8(-86) |
92 004c 40E0 ldi r20,lo8(0) |
93 004e 50E0 ldi r21,hi8(0) |
94 0050 4617 cp r20,r22 |
95 0052 5707 cpc r21,r23 |
96 0054 00F4 brsh .L26 |
97 0056 9C01 movw r18,r24 |
98 .L30: |
99 0058 F999 sbic 63-0x20,1 |
100 005a 00C0 rjmp .L30 |
101 005c 32BD out (65)+1-0x20,r19 |
102 005e 21BD out 65-0x20,r18 |
103 /* #APP */ |
104 /* START EEPROM READ CRITICAL SECTION */ |
105 0060 F89A sbi 31, 0 |
106 0062 80B5 in r24, 32 |
107 /* END EEPROM READ CRITICAL SECTION */ |
108 |
109 /* #NOAPP */ |
110 0064 E80F add r30,r24 |
111 0066 4F5F subi r20,lo8(-(1)) |
112 0068 5F4F sbci r21,hi8(-(1)) |
113 006a 2F5F subi r18,lo8(-(1)) |
114 006c 3F4F sbci r19,hi8(-(1)) |
115 006e 4617 cp r20,r22 |
116 0070 5707 cpc r21,r23 |
117 0072 00F0 brlo .L30 |
118 .L26: |
119 0074 8E2F mov r24,r30 |
120 0076 9927 clr r25 |
121 /* epilogue: frame size=0 */ |
122 0078 0895 ret |
123 /* epilogue end (size=1) */ |
124 /* function EEProm_Checksum size 32 (31) */ |
126 .global ParamSet_DefaultStickMapping |
128 ParamSet_DefaultStickMapping: |
129 /* prologue: frame size=0 */ |
130 /* prologue end (size=0) */ |
131 007a 81E0 ldi r24,lo8(1) |
132 007c 8093 0000 sts EE_Parameter+3,r24 |
133 0080 82E0 ldi r24,lo8(2) |
134 0082 8093 0000 sts EE_Parameter+2,r24 |
135 0086 83E0 ldi r24,lo8(3) |
136 0088 8093 0000 sts EE_Parameter+1,r24 |
137 008c 84E0 ldi r24,lo8(4) |
138 008e 8093 0000 sts EE_Parameter+4,r24 |
139 0092 85E0 ldi r24,lo8(5) |
140 0094 8093 0000 sts EE_Parameter+5,r24 |
141 0098 86E0 ldi r24,lo8(6) |
142 009a 8093 0000 sts EE_Parameter+6,r24 |
143 009e 87E0 ldi r24,lo8(7) |
144 00a0 8093 0000 sts EE_Parameter+7,r24 |
145 00a4 88E0 ldi r24,lo8(8) |
146 00a6 8093 0000 sts EE_Parameter+8,r24 |
147 00aa 89E0 ldi r24,lo8(9) |
148 00ac 8093 0000 sts EE_Parameter+9,r24 |
149 00b0 8AE0 ldi r24,lo8(10) |
150 00b2 8093 0000 sts EE_Parameter+10,r24 |
151 00b6 8BE0 ldi r24,lo8(11) |
152 00b8 8093 0000 sts EE_Parameter+11,r24 |
153 00bc 8CE0 ldi r24,lo8(12) |
154 00be 8093 0000 sts EE_Parameter+12,r24 |
155 /* epilogue: frame size=0 */ |
156 00c2 0895 ret |
157 /* epilogue end (size=1) */ |
158 /* function ParamSet_DefaultStickMapping size 37 (36) */ |
160 .global CommonDefaults |
162 CommonDefaults: |
163 /* prologue: frame size=0 */ |
164 /* prologue end (size=0) */ |
165 00c4 8CE5 ldi r24,lo8(92) |
166 00c6 8093 0000 sts EE_Parameter,r24 |
167 00ca 8CE0 ldi r24,lo8(12) |
168 00cc E0E0 ldi r30,lo8(EE_Parameter+112) |
169 00ce F0E0 ldi r31,hi8(EE_Parameter+112) |
170 00d0 1192 st Z+,__zero_reg__ |
171 00d2 8A95 dec r24 |
172 00d4 01F4 brne .-6 |
173 00d6 8091 0000 lds r24,PlatinenVersion |
174 00da 8431 cpi r24,lo8(20) |
175 00dc 00F0 brlo .L33 |
176 00de 8AE0 ldi r24,lo8(10) |
177 00e0 8093 0000 sts EE_Parameter+32,r24 |
178 00e4 1092 0000 sts EE_Parameter+68,__zero_reg__ |
179 00e8 8BE1 ldi r24,lo8(27) |
180 00ea 8093 0000 sts EE_Parameter+28,r24 |
181 00ee 8EE4 ldi r24,lo8(78) |
182 00f0 00C0 rjmp .L35 |
183 .L33: |
184 00f2 83E0 ldi r24,lo8(3) |
185 00f4 8093 0000 sts EE_Parameter+32,r24 |
186 00f8 80E2 ldi r24,lo8(32) |
187 00fa 8093 0000 sts EE_Parameter+68,r24 |
188 00fe 8EE1 ldi r24,lo8(30) |
189 0100 8093 0000 sts EE_Parameter+28,r24 |
190 0104 85E5 ldi r24,lo8(85) |
191 .L35: |
192 0106 8093 0000 sts EE_Parameter+65,r24 |
193 010a 8093 0000 sts EE_Parameter+66,r24 |
194 010e 80E2 ldi r24,lo8(32) |
195 0110 8093 0000 sts EE_Parameter+67,r24 |
196 0114 1092 0000 sts EE_Parameter+108,__zero_reg__ |
197 0118 8AE6 ldi r24,lo8(106) |
198 011a 8093 0000 sts EE_Parameter+13,r24 |
199 011e 82E2 ldi r24,lo8(34) |
200 0120 8093 0000 sts EE_Parameter+110,r24 |
201 0124 80E4 ldi r24,lo8(64) |
202 0126 8093 0000 sts EE_Parameter+111,r24 |
203 012a 66E0 ldi r22,lo8(6) |
204 012c 6093 0000 sts EE_Parameter+39,r22 |
205 0130 1092 0000 sts EE_Parameter+100,__zero_reg__ |
206 0134 1092 0000 sts EE_Parameter+97,__zero_reg__ |
207 0138 48E0 ldi r20,lo8(8) |
208 013a 4093 0000 sts EE_Parameter+26,r20 |
209 013e 56EE ldi r21,lo8(-26) |
210 0140 5093 0000 sts EE_Parameter+27,r21 |
211 0144 8093 0000 sts EE_Parameter+29,r24 |
212 0148 9EE1 ldi r25,lo8(30) |
213 014a 9093 0000 sts EE_Parameter+14,r25 |
214 014e 8FEF ldi r24,lo8(-1) |
215 0150 8093 0000 sts EE_Parameter+16,r24 |
216 0154 2FE0 ldi r18,lo8(15) |
217 0156 2093 0000 sts EE_Parameter+17,r18 |
218 015a 9093 0000 sts EE_Parameter+15,r25 |
219 015e 1092 0000 sts EE_Parameter+19,__zero_reg__ |
220 0162 4093 0000 sts EE_Parameter+20,r20 |
221 0166 84E1 ldi r24,lo8(20) |
222 0168 8093 0000 sts EE_Parameter+21,r24 |
223 016c 1092 0000 sts EE_Parameter+22,__zero_reg__ |
224 0170 2093 0000 sts EE_Parameter+18,r18 |
225 0174 1092 0000 sts EE_Parameter+41,__zero_reg__ |
226 0178 1092 0000 sts EE_Parameter+42,__zero_reg__ |
227 017c 1092 0000 sts EE_Parameter+43,__zero_reg__ |
228 0180 1092 0000 sts EE_Parameter+44,__zero_reg__ |
229 0184 1092 0000 sts EE_Parameter+70,__zero_reg__ |
230 0188 1092 0000 sts EE_Parameter+71,__zero_reg__ |
231 018c 1092 0000 sts EE_Parameter+72,__zero_reg__ |
232 0190 1092 0000 sts EE_Parameter+73,__zero_reg__ |
233 0194 90E8 ldi r25,lo8(-128) |
234 0196 9093 0000 sts EE_Parameter+45,r25 |
235 019a 32E3 ldi r19,lo8(50) |
236 019c 3093 0000 sts EE_Parameter+46,r19 |
237 01a0 82E0 ldi r24,lo8(2) |
238 01a2 8093 0000 sts EE_Parameter+109,r24 |
239 01a6 2093 0000 sts EE_Parameter+47,r18 |
240 01aa 5093 0000 sts EE_Parameter+48,r21 |
241 01ae 84E0 ldi r24,lo8(4) |
242 01b0 8093 0000 sts EE_Parameter+53,r24 |
243 01b4 8DE7 ldi r24,lo8(125) |
244 01b6 8093 0000 sts EE_Parameter+56,r24 |
245 01ba 8093 0000 sts EE_Parameter+57,r24 |
246 01be 8093 0000 sts EE_Parameter+58,r24 |
247 01c2 9093 0000 sts EE_Parameter+49,r25 |
248 01c6 25E5 ldi r18,lo8(85) |
249 01c8 2093 0000 sts EE_Parameter+50,r18 |
250 01cc 86E4 ldi r24,lo8(70) |
251 01ce 8093 0000 sts EE_Parameter+51,r24 |
252 01d2 8CED ldi r24,lo8(-36) |
253 01d4 8093 0000 sts EE_Parameter+52,r24 |
254 01d8 8CE3 ldi r24,lo8(60) |
255 01da 8093 0000 sts EE_Parameter+54,r24 |
256 01de 1092 0000 sts EE_Parameter+55,__zero_reg__ |
257 01e2 8FE5 ldi r24,lo8(95) |
258 01e4 8093 0000 sts EE_Parameter+74,r24 |
259 01e8 83EF ldi r24,lo8(-13) |
260 01ea 8093 0000 sts EE_Parameter+76,r24 |
261 01ee 8AEA ldi r24,lo8(-86) |
262 01f0 8093 0000 sts EE_Parameter+78,r24 |
263 01f4 8093 0000 sts EE_Parameter+79,r24 |
264 01f8 88E2 ldi r24,lo8(40) |
265 01fa 8093 0000 sts EE_Parameter+75,r24 |
266 01fe 8093 0000 sts EE_Parameter+77,r24 |
267 0202 1092 0000 sts EE_Parameter+80,__zero_reg__ |
268 0206 3093 0000 sts EE_Parameter+59,r19 |
269 020a 9AE5 ldi r25,lo8(90) |
270 020c 9093 0000 sts EE_Parameter+60,r25 |
271 0210 3093 0000 sts EE_Parameter+61,r19 |
272 0214 8EEF ldi r24,lo8(-2) |
273 0216 8093 0000 sts EE_Parameter+81,r24 |
274 021a 84E6 ldi r24,lo8(100) |
275 021c 8093 0000 sts EE_Parameter+82,r24 |
276 0220 9093 0000 sts EE_Parameter+83,r25 |
277 0224 9093 0000 sts EE_Parameter+84,r25 |
278 0228 9093 0000 sts EE_Parameter+85,r25 |
279 022c 8BE4 ldi r24,lo8(75) |
280 022e 8093 0000 sts EE_Parameter+86,r24 |
281 0232 2093 0000 sts EE_Parameter+87,r18 |
282 0236 8093 0000 sts EE_Parameter+88,r24 |
283 023a 1092 0000 sts EE_Parameter+89,__zero_reg__ |
284 023e 6093 0000 sts EE_Parameter+90,r22 |
285 0242 4093 0000 sts EE_Parameter+91,r20 |
286 0246 9093 0000 sts EE_Parameter+92,r25 |
287 024a 8AE2 ldi r24,lo8(42) |
288 024c 8093 0000 sts EE_Parameter+93,r24 |
289 0250 85EF ldi r24,lo8(-11) |
290 0252 8093 0000 sts EE_Parameter+94,r24 |
291 0256 8CE8 ldi r24,lo8(-116) |
292 0258 8093 0000 sts EE_Parameter+95,r24 |
293 025c 85E0 ldi r24,lo8(5) |
294 025e 8093 0000 sts EE_Parameter+96,r24 |
295 0262 1092 0000 sts EE_Parameter+98,__zero_reg__ |
296 0266 1092 0000 sts EE_Parameter+99,__zero_reg__ |
297 026a 81E2 ldi r24,lo8(33) |
298 026c 8093 0000 sts EE_Parameter+36,r24 |
299 0270 81E4 ldi r24,lo8(65) |
300 0272 8093 0000 sts EE_Parameter+37,r24 |
301 0276 9093 0000 sts EE_Parameter+38,r25 |
302 027a 1092 0000 sts EE_Parameter+101,__zero_reg__ |
303 027e 1092 0000 sts EE_Parameter+102,__zero_reg__ |
304 0282 1092 0000 sts EE_Parameter+103,__zero_reg__ |
305 0286 86E9 ldi r24,lo8(-106) |
306 0288 8093 0000 sts EE_Parameter+104,r24 |
307 028c 9093 0000 sts EE_Parameter+62,r25 |
308 0290 87E3 ldi r24,lo8(55) |
309 0292 8093 0000 sts EE_Parameter+63,r24 |
310 0296 1092 0000 sts EE_Parameter+105,__zero_reg__ |
311 029a 1092 0000 sts EE_Parameter+106,__zero_reg__ |
312 029e 1092 0000 sts EE_Parameter+107,__zero_reg__ |
313 /* epilogue: frame size=0 */ |
314 02a2 0895 ret |
315 /* epilogue end (size=1) */ |
316 /* function CommonDefaults size 240 (239) */ |
318 .global ParamSet_DefaultSet1 |
320 ParamSet_DefaultSet1: |
321 /* prologue: frame size=0 */ |
322 /* prologue end (size=0) */ |
323 02a4 0E94 0000 call CommonDefaults |
324 02a8 8AE0 ldi r24,lo8(10) |
325 02aa 8093 0000 sts EE_Parameter+23,r24 |
326 02ae 80E1 ldi r24,lo8(16) |
327 02b0 8093 0000 sts EE_Parameter+24,r24 |
328 02b4 26E0 ldi r18,lo8(6) |
329 02b6 2093 0000 sts EE_Parameter+25,r18 |
330 02ba 9AE5 ldi r25,lo8(90) |
331 02bc 9093 0000 sts EE_Parameter+30,r25 |
332 02c0 88E7 ldi r24,lo8(120) |
333 02c2 8093 0000 sts EE_Parameter+31,r24 |
334 02c6 9093 0000 sts EE_Parameter+33,r25 |
335 02ca 8093 0000 sts EE_Parameter+34,r24 |
336 02ce 2093 0000 sts EE_Parameter+35,r18 |
337 02d2 80E2 ldi r24,lo8(32) |
338 02d4 8093 0000 sts EE_Parameter+40,r24 |
339 02d8 8CE3 ldi r24,lo8(60) |
340 02da 8093 0000 sts EE_Parameter+64,r24 |
341 02de 8BE4 ldi r24,lo8(75) |
342 02e0 8093 0000 sts EE_Parameter+69,r24 |
343 02e4 86E4 ldi r24,lo8(1953718598) |
344 02e6 91E6 ldi r25,hi8(1953718598) |
345 02e8 A3E7 ldi r26,hlo8(1953718598) |
346 02ea B4E7 ldi r27,hhi8(1953718598) |
347 02ec 8093 0000 sts EE_Parameter+112,r24 |
348 02f0 9093 0000 sts (EE_Parameter+112)+1,r25 |
349 02f4 A093 0000 sts (EE_Parameter+112)+2,r26 |
350 02f8 B093 0000 sts (EE_Parameter+112)+3,r27 |
351 02fc 6CE7 ldi r22,lo8(124) |
352 02fe 70E0 ldi r23,hi8(124) |
353 0300 80E0 ldi r24,lo8(EE_Parameter) |
354 0302 90E0 ldi r25,hi8(EE_Parameter) |
355 0304 0E94 0000 call RAM_Checksum |
356 0308 8093 0000 sts EE_Parameter+124,r24 |
357 /* epilogue: frame size=0 */ |
358 030c 0895 ret |
359 /* epilogue end (size=1) */ |
360 /* function ParamSet_DefaultSet1 size 53 (52) */ |
362 .data |
363 .LC0: |
364 0000 4E6F 726D .string "Normal" |
364 616C 00 |
365 .text |
366 .global ParamSet_DefaultSet2 |
368 ParamSet_DefaultSet2: |
369 /* prologue: frame size=0 */ |
370 030e CF93 push r28 |
371 0310 DF93 push r29 |
372 /* prologue end (size=2) */ |
373 0312 0E94 0000 call CommonDefaults |
374 0316 88E0 ldi r24,lo8(8) |
375 0318 8093 0000 sts EE_Parameter+23,r24 |
376 031c 30E1 ldi r19,lo8(16) |
377 031e 3093 0000 sts EE_Parameter+24,r19 |
378 0322 26E0 ldi r18,lo8(6) |
379 0324 2093 0000 sts EE_Parameter+25,r18 |
380 0328 94E6 ldi r25,lo8(100) |
381 032a 9093 0000 sts EE_Parameter+30,r25 |
382 032e 88E7 ldi r24,lo8(120) |
383 0330 8093 0000 sts EE_Parameter+31,r24 |
384 0334 9093 0000 sts EE_Parameter+33,r25 |
385 0338 8093 0000 sts EE_Parameter+34,r24 |
386 033c 2093 0000 sts EE_Parameter+35,r18 |
387 0340 3093 0000 sts EE_Parameter+40,r19 |
388 0344 86E4 ldi r24,lo8(70) |
389 0346 8093 0000 sts EE_Parameter+64,r24 |
390 034a 8093 0000 sts EE_Parameter+69,r24 |
391 034e A0E0 ldi r26,lo8(EE_Parameter+112) |
392 0350 B0E0 ldi r27,hi8(EE_Parameter+112) |
393 0352 E0E0 ldi r30,lo8(.LC0) |
394 0354 F0E0 ldi r31,hi8(.LC0) |
395 0356 ED01 movw r28,r26 |
396 0358 0190 ld __tmp_reg__,Z+ |
397 035a 0992 st Y+,__tmp_reg__ |
398 035c 2A95 dec r18 |
399 035e 01F4 brne .-8 |
400 0360 6CE7 ldi r22,lo8(124) |
401 0362 70E0 ldi r23,hi8(124) |
402 0364 CD01 movw r24,r26 |
403 0366 8057 subi r24,lo8(-(-112)) |
404 0368 9040 sbci r25,hi8(-(-112)) |
405 036a 0E94 0000 call RAM_Checksum |
406 036e 8093 0000 sts EE_Parameter+124,r24 |
407 /* epilogue: frame size=0 */ |
408 0372 DF91 pop r29 |
409 0374 CF91 pop r28 |
410 0376 0895 ret |
411 /* epilogue end (size=3) */ |
412 /* function ParamSet_DefaultSet2 size 53 (48) */ |
414 .global ParamSet_DefaultSet3 |
416 ParamSet_DefaultSet3: |
417 /* prologue: frame size=0 */ |
418 /* prologue end (size=0) */ |
419 0378 0E94 0000 call CommonDefaults |
420 037c 26E0 ldi r18,lo8(6) |
421 037e 2093 0000 sts EE_Parameter+23,r18 |
422 0382 8AE0 ldi r24,lo8(10) |
423 0384 8093 0000 sts EE_Parameter+24,r24 |
424 0388 84E0 ldi r24,lo8(4) |
425 038a 8093 0000 sts EE_Parameter+25,r24 |
426 038e 94E6 ldi r25,lo8(100) |
427 0390 9093 0000 sts EE_Parameter+30,r25 |
428 0394 88E7 ldi r24,lo8(120) |
429 0396 8093 0000 sts EE_Parameter+31,r24 |
430 039a 9093 0000 sts EE_Parameter+33,r25 |
431 039e 8093 0000 sts EE_Parameter+34,r24 |
432 03a2 2093 0000 sts EE_Parameter+35,r18 |
433 03a6 80E1 ldi r24,lo8(16) |
434 03a8 8093 0000 sts EE_Parameter+40,r24 |
435 03ac 86E4 ldi r24,lo8(70) |
436 03ae 8093 0000 sts EE_Parameter+64,r24 |
437 03b2 8093 0000 sts EE_Parameter+69,r24 |
438 03b6 85E4 ldi r24,lo8(2037604677) |
439 03b8 91E6 ldi r25,hi8(2037604677) |
440 03ba A3E7 ldi r26,hlo8(2037604677) |
441 03bc B9E7 ldi r27,hhi8(2037604677) |
442 03be 8093 0000 sts EE_Parameter+112,r24 |
443 03c2 9093 0000 sts (EE_Parameter+112)+1,r25 |
444 03c6 A093 0000 sts (EE_Parameter+112)+2,r26 |
445 03ca B093 0000 sts (EE_Parameter+112)+3,r27 |
446 03ce 6CE7 ldi r22,lo8(124) |
447 03d0 70E0 ldi r23,hi8(124) |
448 03d2 80E0 ldi r24,lo8(EE_Parameter) |
449 03d4 90E0 ldi r25,hi8(EE_Parameter) |
450 03d6 0E94 0000 call RAM_Checksum |
451 03da 8093 0000 sts EE_Parameter+124,r24 |
452 /* epilogue: frame size=0 */ |
453 03de 0895 ret |
454 /* epilogue end (size=1) */ |
455 /* function ParamSet_DefaultSet3 size 52 (51) */ |
457 .global GetParamByte |
459 GetParamByte: |
460 /* prologue: frame size=0 */ |
461 /* prologue end (size=0) */ |
462 .L40: |
463 03e0 F999 sbic 63-0x20,1 |
464 03e2 00C0 rjmp .L40 |
465 03e4 92BD out (65)+1-0x20,r25 |
466 03e6 81BD out 65-0x20,r24 |
467 /* #APP */ |
468 /* START EEPROM READ CRITICAL SECTION */ |
469 03e8 F89A sbi 31, 0 |
470 03ea 80B5 in r24, 32 |
471 /* END EEPROM READ CRITICAL SECTION */ |
472 |
473 /* #NOAPP */ |
474 03ec 9927 clr r25 |
475 /* epilogue: frame size=0 */ |
476 03ee 0895 ret |
477 /* epilogue end (size=1) */ |
478 /* function GetParamByte size 16 (15) */ |
480 .global SetParamByte |
482 SetParamByte: |
483 /* prologue: frame size=0 */ |
484 /* prologue end (size=0) */ |
485 .L45: |
486 03f0 F999 sbic 63-0x20,1 |
487 03f2 00C0 rjmp .L45 |
488 03f4 1FBA out 63-0x20,__zero_reg__ |
489 03f6 92BD out (65)+1-0x20,r25 |
490 03f8 81BD out 65-0x20,r24 |
491 03fa 60BD out 64-0x20,r22 |
492 /* #APP */ |
493 /* START EEPROM WRITE CRITICAL SECTION */ |
494 03fc 0FB6 in r0, 63 |
495 03fe F894 cli |
496 0400 FA9A sbi 31, 2 |
497 0402 F99A sbi 31, 1 |
498 0404 0FBE out 63, r0 |
499 /* END EEPROM WRITE CRITICAL SECTION */ |
500 /* #NOAPP */ |
501 /* epilogue: frame size=0 */ |
502 0406 0895 ret |
503 /* epilogue end (size=1) */ |
504 /* function SetParamByte size 21 (20) */ |
506 .global GetParamWord |
508 GetParamWord: |
509 /* prologue: frame size=0 */ |
510 /* prologue end (size=0) */ |
511 0408 60E0 ldi r22,lo8(pm(eeprom_read_byte)) |
512 040a 70E0 ldi r23,hi8(pm(eeprom_read_byte)) |
513 040c 0E94 0000 call __eerd_word |
514 /* epilogue: frame size=0 */ |
515 0410 0895 ret |
516 /* epilogue end (size=1) */ |
517 /* function GetParamWord size 5 (4) */ |
519 .global SetParamWord |
521 SetParamWord: |
522 /* prologue: frame size=0 */ |
523 /* prologue end (size=0) */ |
524 0412 40E0 ldi r20,lo8(pm(eeprom_write_byte)) |
525 0414 50E0 ldi r21,hi8(pm(eeprom_write_byte)) |
526 0416 0E94 0000 call __eewr_word |
527 /* epilogue: frame size=0 */ |
528 041a 0895 ret |
529 /* epilogue end (size=1) */ |
530 /* function SetParamWord size 5 (4) */ |
532 .global ParamSet_ReadFromEEProm |
534 ParamSet_ReadFromEEProm: |
535 /* prologue: frame size=0 */ |
536 041c EF92 push r14 |
537 041e FF92 push r15 |
538 0420 0F93 push r16 |
539 0422 1F93 push r17 |
540 0424 CF93 push r28 |
541 /* prologue end (size=5) */ |
542 0426 C82F mov r28,r24 |
543 0428 8150 subi r24,lo8(-(-1)) |
544 042a 8530 cpi r24,lo8(5) |
545 042c 00F0 brlo .L54 |
546 042e C3E0 ldi r28,lo8(3) |
547 .L54: |
548 0430 8DE7 ldi r24,lo8(125) |
549 0432 C89F mul r28,r24 |
550 0434 8001 movw r16,r0 |
551 0436 1124 clr r1 |
552 0438 87EE ldi r24,lo8(-25) |
553 043a E82E mov r14,r24 |
554 043c 8FEF ldi r24,hi8(-25) |
555 043e F82E mov r15,r24 |
556 0440 E00E add r14,r16 |
557 0442 F11E adc r15,r17 |
558 0444 6CE7 ldi r22,lo8(124) |
559 0446 70E0 ldi r23,hi8(124) |
560 0448 C701 movw r24,r14 |
561 044a 0E94 0000 call EEProm_Checksum |
562 044e 682F mov r22,r24 |
563 0450 9801 movw r18,r16 |
564 0452 2D59 subi r18,lo8(-(99)) |
565 0454 3F4F sbci r19,hi8(-(99)) |
566 .L56: |
567 0456 8FB3 in r24,63-0x20 |
568 0458 9927 clr r25 |
569 045a AC01 movw r20,r24 |
570 045c 4270 andi r20,lo8(2) |
571 045e 5070 andi r21,hi8(2) |
572 0460 81FD sbrc r24,1 |
573 0462 00C0 rjmp .L56 |
574 0464 32BD out (65)+1-0x20,r19 |
575 0466 21BD out 65-0x20,r18 |
576 /* #APP */ |
577 /* START EEPROM READ CRITICAL SECTION */ |
578 0468 F89A sbi 31, 0 |
579 046a 80B5 in r24, 32 |
580 /* END EEPROM READ CRITICAL SECTION */ |
581 |
582 /* #NOAPP */ |
583 046c 8617 cp r24,r22 |
584 046e 01F0 breq .L61 |
585 0470 CA01 movw r24,r20 |
586 0472 00C0 rjmp .L53 |
587 .L61: |
588 0474 8FB3 in r24,63-0x20 |
589 0476 9927 clr r25 |
590 0478 9C01 movw r18,r24 |
591 047a 2270 andi r18,lo8(2) |
592 047c 3070 andi r19,hi8(2) |
593 047e 81FD sbrc r24,1 |
594 0480 00C0 rjmp .L61 |
595 0482 F2BC out (65)+1-0x20,r15 |
596 0484 E1BC out 65-0x20,r14 |
597 /* #APP */ |
598 /* START EEPROM READ CRITICAL SECTION */ |
599 0486 F89A sbi 31, 0 |
600 0488 80B5 in r24, 32 |
601 /* END EEPROM READ CRITICAL SECTION */ |
602 |
603 /* #NOAPP */ |
604 048a 8C35 cpi r24,lo8(92) |
605 048c 01F0 breq .L60 |
606 048e C901 movw r24,r18 |
607 0490 00C0 rjmp .L53 |
608 .L60: |
609 0492 8DE7 ldi r24,lo8(125) |
610 0494 C89F mul r28,r24 |
611 0496 C001 movw r24,r0 |
612 0498 1124 clr r1 |
613 049a 4997 sbiw r24,25 |
614 049c 20E0 ldi r18,lo8(pm(eeprom_read_byte)) |
615 049e 30E0 ldi r19,hi8(pm(eeprom_read_byte)) |
616 04a0 4DE7 ldi r20,lo8(125) |
617 04a2 50E0 ldi r21,hi8(125) |
618 04a4 BC01 movw r22,r24 |
619 04a6 80E0 ldi r24,lo8(EE_Parameter) |
620 04a8 90E0 ldi r25,hi8(EE_Parameter) |
621 04aa 0E94 0000 call __eerd_block |
622 04ae 0E94 0000 call LED_Init |
623 04b2 0E94 0000 call LIBFC_HoTT_Clear |
624 04b6 81E0 ldi r24,lo8(1) |
625 04b8 90E0 ldi r25,hi8(1) |
626 .L53: |
627 /* epilogue: frame size=0 */ |
628 04ba CF91 pop r28 |
629 04bc 1F91 pop r17 |
630 04be 0F91 pop r16 |
631 04c0 FF90 pop r15 |
632 04c2 EF90 pop r14 |
633 04c4 0895 ret |
634 /* epilogue end (size=6) */ |
635 /* function ParamSet_ReadFromEEProm size 101 (90) */ |
637 .global SetActiveParamSet |
639 SetActiveParamSet: |
640 /* prologue: frame size=0 */ |
641 /* prologue end (size=0) */ |
642 04c6 282F mov r18,r24 |
643 04c8 8630 cpi r24,lo8(6) |
644 04ca 00F0 brlo .L67 |
645 04cc 25E0 ldi r18,lo8(5) |
646 04ce 00C0 rjmp .L69 |
647 .L67: |
648 04d0 8823 tst r24 |
649 04d2 01F4 brne .L69 |
650 04d4 21E0 ldi r18,lo8(1) |
651 .L69: |
652 04d6 F999 sbic 63-0x20,1 |
653 04d8 00C0 rjmp .L69 |
654 04da 1FBA out 63-0x20,__zero_reg__ |
655 04dc 82E0 ldi r24,lo8(2) |
656 04de 90E0 ldi r25,hi8(2) |
657 04e0 92BD out (65)+1-0x20,r25 |
658 04e2 81BD out 65-0x20,r24 |
659 04e4 20BD out 64-0x20,r18 |
660 /* #APP */ |
661 /* START EEPROM WRITE CRITICAL SECTION */ |
662 04e6 0FB6 in r0, 63 |
663 04e8 F894 cli |
664 04ea FA9A sbi 31, 2 |
665 04ec F99A sbi 31, 1 |
666 04ee 0FBE out 63, r0 |
667 /* END EEPROM WRITE CRITICAL SECTION */ |
668 /* #NOAPP */ |
669 /* epilogue: frame size=0 */ |
670 04f0 0895 ret |
671 /* epilogue end (size=1) */ |
672 /* function SetActiveParamSet size 31 (30) */ |
674 .global ParamSet_WriteToEEProm |
676 ParamSet_WriteToEEProm: |
677 /* prologue: frame size=0 */ |
678 04f2 CF93 push r28 |
679 /* prologue end (size=1) */ |
680 04f4 C82F mov r28,r24 |
681 04f6 8091 0000 lds r24,EE_Parameter |
682 04fa 8C35 cpi r24,lo8(92) |
683 04fc 01F0 breq .+2 |
684 04fe 00C0 rjmp .L74 |
685 0500 C630 cpi r28,lo8(6) |
686 0502 00F0 brlo .L75 |
687 0504 C5E0 ldi r28,lo8(5) |
688 0506 00C0 rjmp .L76 |
689 .L75: |
690 0508 CC23 tst r28 |
691 050a 01F4 brne .+2 |
692 050c 00C0 rjmp .L74 |
693 .L76: |
694 050e 0E94 0000 call LIBFC_CheckSettings |
695 0512 8091 0000 lds r24,EE_Parameter+111 |
696 0516 82FF sbrs r24,2 |
697 0518 00C0 rjmp .L77 |
698 051a 8091 0000 lds r24,EE_Parameter+37 |
699 051e 8436 cpi r24,lo8(100) |
700 0520 00F0 brlo .L77 |
701 0522 80E5 ldi r24,lo8(80) |
702 0524 8093 0000 sts EE_Parameter+37,r24 |
703 .L77: |
704 0528 6CE7 ldi r22,lo8(124) |
705 052a 70E0 ldi r23,hi8(124) |
706 052c 80E0 ldi r24,lo8(EE_Parameter) |
707 052e 90E0 ldi r25,hi8(EE_Parameter) |
708 0530 0E94 0000 call RAM_Checksum |
709 0534 8093 0000 sts EE_Parameter+124,r24 |
710 0538 8DE7 ldi r24,lo8(125) |
711 053a C89F mul r28,r24 |
712 053c C001 movw r24,r0 |
713 053e 1124 clr r1 |
714 0540 20E0 ldi r18,lo8(pm(eeprom_write_byte)) |
715 0542 30E0 ldi r19,hi8(pm(eeprom_write_byte)) |
716 0544 4DE7 ldi r20,lo8(125) |
717 0546 50E0 ldi r21,hi8(125) |
718 0548 60E0 ldi r22,lo8(EE_Parameter) |
719 054a 70E0 ldi r23,hi8(EE_Parameter) |
720 054c 4997 sbiw r24,25 |
721 054e 0E94 0000 call __eewr_block |
722 0552 20E0 ldi r18,lo8(pm(eeprom_write_byte)) |
723 0554 30E0 ldi r19,hi8(pm(eeprom_write_byte)) |
724 0556 4CE0 ldi r20,lo8(12) |
725 0558 50E0 ldi r21,hi8(12) |
726 055a 60E0 ldi r22,lo8(EE_Parameter+1) |
727 055c 70E0 ldi r23,hi8(EE_Parameter+1) |
728 055e 80E5 ldi r24,lo8(80) |
729 0560 90E0 ldi r25,hi8(80) |
730 0562 0E94 0000 call __eewr_block |
731 0566 6CE0 ldi r22,lo8(12) |
732 0568 70E0 ldi r23,hi8(12) |
733 056a 80E0 ldi r24,lo8(EE_Parameter+1) |
734 056c 90E0 ldi r25,hi8(EE_Parameter+1) |
735 056e 0E94 0000 call RAM_Checksum |
736 0572 282F mov r18,r24 |
737 .L81: |
738 0574 F999 sbic 63-0x20,1 |
739 0576 00C0 rjmp .L81 |
740 0578 1FBA out 63-0x20,__zero_reg__ |
741 057a 8CE5 ldi r24,lo8(92) |
742 057c 90E0 ldi r25,hi8(92) |
743 057e 92BD out (65)+1-0x20,r25 |
744 0580 81BD out 65-0x20,r24 |
745 0582 20BD out 64-0x20,r18 |
746 /* #APP */ |
747 /* START EEPROM WRITE CRITICAL SECTION */ |
748 0584 0FB6 in r0, 63 |
749 0586 F894 cli |
750 0588 FA9A sbi 31, 2 |
751 058a F99A sbi 31, 1 |
752 058c 0FBE out 63, r0 |
753 /* END EEPROM WRITE CRITICAL SECTION */ |
754 /* #NOAPP */ |
755 058e 8C2F mov r24,r28 |
756 0590 0E94 0000 call SetActiveParamSet |
757 0594 0E94 0000 call LED_Init |
758 0598 0E94 0000 call LIBFC_HoTT_Clear |
759 059c 81E0 ldi r24,lo8(1) |
760 059e 90E0 ldi r25,hi8(1) |
761 05a0 00C0 rjmp .L73 |
762 .L74: |
763 05a2 80E0 ldi r24,lo8(0) |
764 05a4 90E0 ldi r25,hi8(0) |
765 .L73: |
766 /* epilogue: frame size=0 */ |
767 05a6 CF91 pop r28 |
768 05a8 0895 ret |
769 /* epilogue end (size=2) */ |
770 /* function ParamSet_WriteToEEProm size 101 (98) */ |
772 .global MixerTable_ReadFromEEProm |
774 MixerTable_ReadFromEEProm: |
775 /* prologue: frame size=0 */ |
776 /* prologue end (size=0) */ |
777 05aa 6DE4 ldi r22,lo8(77) |
778 05ac 70E0 ldi r23,hi8(77) |
779 05ae 88EE ldi r24,lo8(1000) |
780 05b0 93E0 ldi r25,hi8(1000) |
781 05b2 0E94 0000 call EEProm_Checksum |
782 05b6 482F mov r20,r24 |
783 .L87: |
784 05b8 8FB3 in r24,63-0x20 |
785 05ba 9927 clr r25 |
786 05bc 9C01 movw r18,r24 |
787 05be 2270 andi r18,lo8(2) |
788 05c0 3070 andi r19,hi8(2) |
789 05c2 81FD sbrc r24,1 |
790 05c4 00C0 rjmp .L87 |
791 05c6 85E3 ldi r24,lo8(1077) |
792 05c8 94E0 ldi r25,hi8(1077) |
793 05ca 92BD out (65)+1-0x20,r25 |
794 05cc 81BD out 65-0x20,r24 |
795 /* #APP */ |
796 /* START EEPROM READ CRITICAL SECTION */ |
797 05ce F89A sbi 31, 0 |
798 05d0 80B5 in r24, 32 |
799 /* END EEPROM READ CRITICAL SECTION */ |
800 |
801 /* #NOAPP */ |
802 05d2 8417 cp r24,r20 |
803 05d4 01F4 brne .L97 |
804 .L92: |
805 05d6 8FB3 in r24,63-0x20 |
806 05d8 9927 clr r25 |
807 05da 9C01 movw r18,r24 |
808 05dc 2270 andi r18,lo8(2) |
809 05de 3070 andi r19,hi8(2) |
810 05e0 81FD sbrc r24,1 |
811 05e2 00C0 rjmp .L92 |
812 05e4 88EE ldi r24,lo8(1000) |
813 05e6 93E0 ldi r25,hi8(1000) |
814 05e8 92BD out (65)+1-0x20,r25 |
815 05ea 81BD out 65-0x20,r24 |
816 /* #APP */ |
817 /* START EEPROM READ CRITICAL SECTION */ |
818 05ec F89A sbi 31, 0 |
819 05ee 80B5 in r24, 32 |
820 /* END EEPROM READ CRITICAL SECTION */ |
821 |
822 /* #NOAPP */ |
823 05f0 8130 cpi r24,lo8(1) |
824 05f2 01F0 breq .L91 |
825 .L97: |
826 05f4 C901 movw r24,r18 |
827 05f6 0895 ret |
828 .L91: |
829 05f8 20E0 ldi r18,lo8(pm(eeprom_read_byte)) |
830 05fa 30E0 ldi r19,hi8(pm(eeprom_read_byte)) |
831 05fc 4EE4 ldi r20,lo8(78) |
832 05fe 50E0 ldi r21,hi8(78) |
833 0600 68EE ldi r22,lo8(1000) |
834 0602 73E0 ldi r23,hi8(1000) |
835 0604 80E0 ldi r24,lo8(Mixer) |
836 0606 90E0 ldi r25,hi8(Mixer) |
837 0608 0E94 0000 call __eerd_block |
838 060c 81E0 ldi r24,lo8(1) |
839 060e 90E0 ldi r25,hi8(1) |
840 0610 0895 ret |
841 /* epilogue: frame size=0 */ |
842 /* epilogue: noreturn */ |
843 /* epilogue end (size=0) */ |
844 /* function MixerTable_ReadFromEEProm size 68 (68) */ |
846 .global MixerTable_WriteToEEProm |
848 MixerTable_WriteToEEProm: |
849 /* prologue: frame size=0 */ |
850 /* prologue end (size=0) */ |
851 0612 8091 0000 lds r24,Mixer |
852 0616 8130 cpi r24,lo8(1) |
853 0618 01F4 brne .L99 |
854 061a 6DE4 ldi r22,lo8(77) |
855 061c 70E0 ldi r23,hi8(77) |
856 061e 80E0 ldi r24,lo8(Mixer) |
857 0620 90E0 ldi r25,hi8(Mixer) |
858 0622 0E94 0000 call RAM_Checksum |
859 0626 8093 0000 sts Mixer+77,r24 |
860 062a 20E0 ldi r18,lo8(pm(eeprom_write_byte)) |
861 062c 30E0 ldi r19,hi8(pm(eeprom_write_byte)) |
862 062e 4EE4 ldi r20,lo8(78) |
863 0630 50E0 ldi r21,hi8(78) |
864 0632 60E0 ldi r22,lo8(Mixer) |
865 0634 70E0 ldi r23,hi8(Mixer) |
866 0636 88EE ldi r24,lo8(1000) |
867 0638 93E0 ldi r25,hi8(1000) |
868 063a 0E94 0000 call __eewr_block |
869 063e 81E0 ldi r24,lo8(1) |
870 0640 90E0 ldi r25,hi8(1) |
871 0642 0895 ret |
872 .L99: |
873 0644 80E0 ldi r24,lo8(0) |
874 0646 90E0 ldi r25,hi8(0) |
875 0648 0895 ret |
876 /* epilogue: frame size=0 */ |
877 /* epilogue: noreturn */ |
878 /* epilogue end (size=0) */ |
879 /* function MixerTable_WriteToEEProm size 28 (28) */ |
881 .data |
882 .LC1: |
883 0007 5175 6164 .string "Quadro" |
883 726F 00 |
884 000e 00 .string "" |
885 000f 00 .string "" |
886 0010 00 .string "" |
887 0011 00 .string "" |
888 0012 00 .string "" |
889 0013 00 .string "" |
890 .text |
891 .global MixerTable_Default |
893 MixerTable_Default: |
894 /* prologue: frame size=0 */ |
895 064a CF93 push r28 |
896 064c DF93 push r29 |
897 /* prologue end (size=2) */ |
898 064e 81E0 ldi r24,lo8(1) |
899 0650 8093 0000 sts Mixer,r24 |
900 0654 E0E0 ldi r30,lo8(Mixer) |
901 0656 F0E0 ldi r31,hi8(Mixer) |
902 0658 8FE0 ldi r24,lo8(15) |
903 .L106: |
904 065a 1586 std Z+13,__zero_reg__ |
905 065c 1686 std Z+14,__zero_reg__ |
906 065e 1786 std Z+15,__zero_reg__ |
907 0660 108A std Z+16,__zero_reg__ |
908 0662 8150 subi r24,lo8(-(-1)) |
909 0664 3496 adiw r30,4 |
910 0666 87FF sbrs r24,7 |
911 0668 00C0 rjmp .L106 |
912 066a 80E4 ldi r24,lo8(64) |
913 066c 8093 0000 sts Mixer+13,r24 |
914 0670 8093 0000 sts Mixer+14,r24 |
915 0674 1092 0000 sts Mixer+15,__zero_reg__ |
916 0678 8093 0000 sts Mixer+16,r24 |
917 067c 8093 0000 sts Mixer+17,r24 |
918 0680 90EC ldi r25,lo8(-64) |
919 0682 9093 0000 sts Mixer+18,r25 |
920 0686 1092 0000 sts Mixer+19,__zero_reg__ |
921 068a 8093 0000 sts Mixer+20,r24 |
922 068e 8093 0000 sts Mixer+21,r24 |
923 0692 1092 0000 sts Mixer+22,__zero_reg__ |
924 0696 9093 0000 sts Mixer+23,r25 |
925 069a 9093 0000 sts Mixer+24,r25 |
926 069e 8093 0000 sts Mixer+25,r24 |
927 06a2 1092 0000 sts Mixer+26,__zero_reg__ |
928 06a6 8093 0000 sts Mixer+27,r24 |
929 06aa 9093 0000 sts Mixer+28,r25 |
930 06ae A0E0 ldi r26,lo8(Mixer+1) |
931 06b0 B0E0 ldi r27,hi8(Mixer+1) |
932 06b2 8CE0 ldi r24,lo8(12) |
933 06b4 E0E0 ldi r30,lo8(.LC1) |
934 06b6 F0E0 ldi r31,hi8(.LC1) |
935 06b8 ED01 movw r28,r26 |
936 06ba 0190 ld __tmp_reg__,Z+ |
937 06bc 0992 st Y+,__tmp_reg__ |
938 06be 8A95 dec r24 |
939 06c0 01F4 brne .-8 |
940 06c2 6DE4 ldi r22,lo8(77) |
941 06c4 70E0 ldi r23,hi8(77) |
942 06c6 CD01 movw r24,r26 |
943 06c8 0197 sbiw r24,1 |
944 06ca 0E94 0000 call RAM_Checksum |
945 06ce 8093 0000 sts Mixer+77,r24 |
946 /* epilogue: frame size=0 */ |
947 06d2 DF91 pop r29 |
948 06d4 CF91 pop r28 |
949 06d6 0895 ret |
950 /* epilogue end (size=3) */ |
951 /* function MixerTable_Default size 71 (66) */ |
953 .global GetActiveParamSet |
955 GetActiveParamSet: |
956 /* prologue: frame size=0 */ |
957 /* prologue end (size=0) */ |
958 .L110: |
959 06d8 F999 sbic 63-0x20,1 |
960 06da 00C0 rjmp .L110 |
961 06dc 82E0 ldi r24,lo8(2) |
962 06de 90E0 ldi r25,hi8(2) |
963 06e0 92BD out (65)+1-0x20,r25 |
964 06e2 81BD out 65-0x20,r24 |
965 /* #APP */ |
966 /* START EEPROM READ CRITICAL SECTION */ |
967 06e4 F89A sbi 31, 0 |
968 06e6 80B5 in r24, 32 |
969 /* END EEPROM READ CRITICAL SECTION */ |
970 |
971 /* #NOAPP */ |
972 06e8 282F mov r18,r24 |
973 06ea 8630 cpi r24,lo8(6) |
974 06ec 00F0 brlo .L114 |
975 06ee 23E0 ldi r18,lo8(3) |
976 06f0 322F mov r19,r18 |
977 .L115: |
978 06f2 F999 sbic 63-0x20,1 |
979 06f4 00C0 rjmp .L115 |
980 06f6 1FBA out 63-0x20,__zero_reg__ |
981 06f8 82E0 ldi r24,lo8(2) |
982 06fa 90E0 ldi r25,hi8(2) |
983 06fc 92BD out (65)+1-0x20,r25 |
984 06fe 81BD out 65-0x20,r24 |
985 0700 30BD out 64-0x20,r19 |
986 /* #APP */ |
987 /* START EEPROM WRITE CRITICAL SECTION */ |
988 0702 0FB6 in r0, 63 |
989 0704 F894 cli |
990 0706 FA9A sbi 31, 2 |
991 0708 F99A sbi 31, 1 |
992 070a 0FBE out 63, r0 |
993 /* END EEPROM WRITE CRITICAL SECTION */ |
994 /* #NOAPP */ |
995 .L114: |
996 070c 822F mov r24,r18 |
997 070e 9927 clr r25 |
998 /* epilogue: frame size=0 */ |
999 0710 0895 ret |
1000 /* epilogue end (size=1) */ |
1001 /* function GetActiveParamSet size 46 (45) */ |
1003 .global SetDefaultParameter |
1005 SetDefaultParameter: |
1006 /* prologue: frame size=0 */ |
1007 0712 1F93 push r17 |
1008 0714 CF93 push r28 |
1009 /* prologue end (size=2) */ |
1010 0716 C82F mov r28,r24 |
1011 0718 162F mov r17,r22 |
1012 071a 8630 cpi r24,lo8(6) |
1013 071c 00F0 brlo .L120 |
1014 071e C5E0 ldi r28,lo8(5) |
1015 0720 00C0 rjmp .L121 |
1016 .L120: |
1017 0722 8823 tst r24 |
1018 0724 01F4 brne .L121 |
1019 0726 C1E0 ldi r28,lo8(1) |
1020 .L121: |
1021 0728 8C2F mov r24,r28 |
1022 072a 9927 clr r25 |
1023 072c 8230 cpi r24,2 |
1024 072e 9105 cpc r25,__zero_reg__ |
1025 0730 01F0 breq .L125 |
1026 0732 8330 cpi r24,3 |
1027 0734 9105 cpc r25,__zero_reg__ |
1028 0736 04F4 brge .L127 |
1029 0738 0197 sbiw r24,1 |
1030 073a 01F4 brne .L127 |
1031 073c 0E94 0000 call ParamSet_DefaultSet1 |
1032 0740 00C0 rjmp .L123 |
1033 .L125: |
1034 0742 0E94 0000 call ParamSet_DefaultSet2 |
1035 0746 00C0 rjmp .L123 |
1036 .L127: |
1037 0748 0E94 0000 call ParamSet_DefaultSet3 |
1038 .L123: |
1039 074c 1123 tst r17 |
1040 074e 01F0 breq .L129 |
1041 0750 6CE0 ldi r22,lo8(12) |
1042 0752 70E0 ldi r23,hi8(12) |
1043 0754 80E5 ldi r24,lo8(80) |
1044 0756 90E0 ldi r25,hi8(80) |
1045 0758 0E94 0000 call EEProm_Checksum |
1046 075c 282F mov r18,r24 |
1047 .L131: |
1048 075e F999 sbic 63-0x20,1 |
1049 0760 00C0 rjmp .L131 |
1050 0762 8CE5 ldi r24,lo8(92) |
1051 0764 90E0 ldi r25,hi8(92) |
1052 0766 92BD out (65)+1-0x20,r25 |
1053 0768 81BD out 65-0x20,r24 |
1054 /* #APP */ |
1055 /* START EEPROM READ CRITICAL SECTION */ |
1056 076a F89A sbi 31, 0 |
1057 076c 80B5 in r24, 32 |
1058 /* END EEPROM READ CRITICAL SECTION */ |
1059 |
1060 /* #NOAPP */ |
1061 076e 8217 cp r24,r18 |
1062 0770 01F4 brne .L129 |
1063 0772 20E0 ldi r18,lo8(pm(eeprom_read_byte)) |
1064 0774 30E0 ldi r19,hi8(pm(eeprom_read_byte)) |
1065 0776 4CE0 ldi r20,lo8(12) |
1066 0778 50E0 ldi r21,hi8(12) |
1067 077a 60E5 ldi r22,lo8(80) |
1068 077c 70E0 ldi r23,hi8(80) |
1069 077e 80E0 ldi r24,lo8(EE_Parameter+1) |
1070 0780 90E0 ldi r25,hi8(EE_Parameter+1) |
1071 0782 0E94 0000 call __eerd_block |
1072 0786 00C0 rjmp .L137 |
1073 .L129: |
1074 0788 0E94 0000 call ParamSet_DefaultStickMapping |
1075 .L137: |
1076 078c 8C2F mov r24,r28 |
1077 078e 0E94 0000 call ParamSet_WriteToEEProm |
1078 /* epilogue: frame size=0 */ |
1079 0792 CF91 pop r28 |
1080 0794 1F91 pop r17 |
1081 0796 0895 ret |
1082 /* epilogue end (size=3) */ |
1083 /* function SetDefaultParameter size 76 (71) */ |
1085 .section .progmem.data,"a",@progbits |
1088 __c.0: |
1089 0000 0A0D 4765 .string "\n\rGenerating default Parameter Set %d" |
1089 6E65 7261 |
1089 7469 6E67 |
1089 2064 6566 |
1089 6175 6C74 |
1092 __c.1: |
1093 0026 0A0D 5573 .string "\n\rUsing Parameter Set %d" |
1093 696E 6720 |
1093 5061 7261 |
1093 6D65 7465 |
1093 7220 5365 |
1096 __c.2: |
1097 003f 0A0D 4765 .string "\n\rGenerating default Mixer Table" |
1097 6E65 7261 |
1097 7469 6E67 |
1097 2064 6566 |
1097 6175 6C74 |
1100 __c.3: |
1101 0060 0A0D 4D69 .string "\n\rMixer-Config: '%s' (%u Motors)" |
1101 7865 722D |
1101 436F 6E66 |
1101 6967 3A20 |
1101 2725 7327 |
1102 .text |
1103 .global ParamSet_Init |
1105 ParamSet_Init: |
1106 /* prologue: frame size=0 */ |
1107 0798 DF92 push r13 |
1108 079a EF92 push r14 |
1109 079c FF92 push r15 |
1110 079e 0F93 push r16 |
1111 07a0 1F93 push r17 |
1112 07a2 CF93 push r28 |
1113 /* prologue end (size=6) */ |
1114 07a4 FF24 clr r15 |
1115 07a6 DF2C mov r13,r15 |
1116 07a8 EF2C mov r14,r15 |
1117 07aa 81E0 ldi r24,lo8(1) |
1118 07ac 90E0 ldi r25,hi8(1) |
1119 07ae 0E94 0000 call GetParamByte |
1120 07b2 8C35 cpi r24,lo8(92) |
1121 07b4 01F0 breq .L139 |
1122 07b6 31E0 ldi r19,lo8(1) |
1123 07b8 E32E mov r14,r19 |
1124 .L139: |
1125 07ba 6CE0 ldi r22,lo8(12) |
1126 07bc 70E0 ldi r23,hi8(12) |
1127 07be 80E5 ldi r24,lo8(80) |
1128 07c0 90E0 ldi r25,hi8(80) |
1129 07c2 0E94 0000 call EEProm_Checksum |
1130 07c6 C82F mov r28,r24 |
1131 .L141: |
1132 07c8 F999 sbic 63-0x20,1 |
1133 07ca 00C0 rjmp .L141 |
1134 07cc 8CE5 ldi r24,lo8(92) |
1135 07ce 90E0 ldi r25,hi8(92) |
1136 07d0 92BD out (65)+1-0x20,r25 |
1137 07d2 81BD out 65-0x20,r24 |
1138 /* #APP */ |
1139 /* START EEPROM READ CRITICAL SECTION */ |
1140 07d4 F89A sbi 31, 0 |
1141 07d6 80B5 in r24, 32 |
1142 /* END EEPROM READ CRITICAL SECTION */ |
1143 |
1144 /* #NOAPP */ |
1145 07d8 8C17 cp r24,r28 |
1146 07da 01F4 brne .L140 |
1147 07dc 21E0 ldi r18,lo8(1) |
1148 07de D22E mov r13,r18 |
1149 .L140: |
1150 07e0 C1E0 ldi r28,lo8(1) |
1151 07e2 01E0 ldi r16,lo8(1) |
1152 07e4 10E0 ldi r17,hi8(1) |
1153 .L159: |
1154 07e6 EE20 tst r14 |
1155 07e8 01F4 brne .L149 |
1156 07ea 8C2F mov r24,r28 |
1157 07ec 0E94 0000 call ParamSet_ReadFromEEProm |
1158 07f0 8823 tst r24 |
1159 07f2 01F4 brne .L147 |
1160 .L149: |
1161 07f4 91E0 ldi r25,lo8(1) |
1162 07f6 F92E mov r15,r25 |
1163 07f8 1F93 push r17 |
1164 07fa 0F93 push r16 |
1165 07fc 80E0 ldi r24,lo8(__c.0) |
1166 07fe 90E0 ldi r25,hi8(__c.0) |
1167 0800 9F93 push r25 |
1168 0802 8F93 push r24 |
1169 0804 80E0 ldi r24,lo8(pm(uart_putchar)) |
1170 0806 90E0 ldi r25,hi8(pm(uart_putchar)) |
1171 0808 9F93 push r25 |
1172 080a 8F93 push r24 |
1173 080c E091 0000 lds r30,_printf_P |
1174 0810 F091 0000 lds r31,(_printf_P)+1 |
1175 0814 0995 icall |
1176 0816 2DB7 in r18,__SP_L__ |
1177 0818 3EB7 in r19,__SP_H__ |
1178 081a 2A5F subi r18,lo8(-(6)) |
1179 081c 3F4F sbci r19,hi8(-(6)) |
1180 081e 2DBF out __SP_L__,r18 |
1181 0820 0230 cpi r16,2 |
1182 0822 1105 cpc r17,__zero_reg__ |
1183 0824 01F0 breq .L152 |
1184 0826 0330 cpi r16,3 |
1185 0828 1105 cpc r17,__zero_reg__ |
1186 082a 04F4 brge .L154 |
1187 082c 0130 cpi r16,1 |
1188 082e 1105 cpc r17,__zero_reg__ |
1189 0830 01F4 brne .L154 |
1190 0832 0E94 0000 call ParamSet_DefaultSet1 |
1191 0836 00C0 rjmp .L150 |
1192 .L152: |
1193 0838 0E94 0000 call ParamSet_DefaultSet2 |
1194 083c 00C0 rjmp .L150 |
1195 .L154: |
1196 083e 0E94 0000 call ParamSet_DefaultSet3 |
1197 .L150: |
1198 0842 DD20 tst r13 |
1199 0844 01F0 breq .L156 |
1200 0846 20E0 ldi r18,lo8(pm(eeprom_read_byte)) |
1201 0848 30E0 ldi r19,hi8(pm(eeprom_read_byte)) |
1202 084a 4CE0 ldi r20,lo8(12) |
1203 084c 50E0 ldi r21,hi8(12) |
1204 084e 60E5 ldi r22,lo8(80) |
1205 0850 70E0 ldi r23,hi8(80) |
1206 0852 80E0 ldi r24,lo8(EE_Parameter+1) |
1207 0854 90E0 ldi r25,hi8(EE_Parameter+1) |
1208 0856 0E94 0000 call __eerd_block |
1209 085a 00C0 rjmp .L158 |
1210 .L156: |
1211 085c 0E94 0000 call ParamSet_DefaultStickMapping |
1212 .L158: |
1213 0860 8C2F mov r24,r28 |
1214 0862 0E94 0000 call ParamSet_WriteToEEProm |
1215 .L147: |
1216 0866 CF5F subi r28,lo8(-(1)) |
1217 0868 0F5F subi r16,lo8(-(1)) |
1218 086a 1F4F sbci r17,hi8(-(1)) |
1219 086c C630 cpi r28,lo8(6) |
1220 086e 00F4 brsh .+2 |
1221 0870 00C0 rjmp .L159 |
1222 0872 FF20 tst r15 |
1223 0874 01F0 breq .L160 |
1224 0876 83E0 ldi r24,lo8(3) |
1225 0878 0E94 0000 call SetActiveParamSet |
1226 .L160: |
1227 087c 0E94 0000 call GetActiveParamSet |
1228 0880 C82F mov r28,r24 |
1229 0882 0E94 0000 call ParamSet_ReadFromEEProm |
1230 0886 8C2F mov r24,r28 |
1231 0888 9927 clr r25 |
1232 088a 9F93 push r25 |
1233 088c 8F93 push r24 |
1234 088e 80E0 ldi r24,lo8(__c.1) |
1235 0890 90E0 ldi r25,hi8(__c.1) |
1236 0892 9F93 push r25 |
1237 0894 8F93 push r24 |
1238 0896 00E0 ldi r16,lo8(pm(uart_putchar)) |
1239 0898 10E0 ldi r17,hi8(pm(uart_putchar)) |
1240 089a 1F93 push r17 |
1241 089c 0F93 push r16 |
1242 089e E091 0000 lds r30,_printf_P |
1243 08a2 F091 0000 lds r31,(_printf_P)+1 |
1244 08a6 0995 icall |
1245 08a8 81E0 ldi r24,lo8(1) |
1246 08aa 90E0 ldi r25,hi8(1) |
1247 08ac 0E94 0000 call GetParamByte |
1248 08b0 2DB7 in r18,__SP_L__ |
1249 08b2 3EB7 in r19,__SP_H__ |
1250 08b4 2A5F subi r18,lo8(-(6)) |
1251 08b6 3F4F sbci r19,hi8(-(6)) |
1252 08b8 2DBF out __SP_L__,r18 |
1253 08ba 8F3F cpi r24,lo8(-1) |
1254 08bc 01F0 breq .L162 |
1255 08be 0E94 0000 call MixerTable_ReadFromEEProm |
1256 08c2 8823 tst r24 |
1257 08c4 01F4 brne .L161 |
1258 .L162: |
1259 08c6 80E0 ldi r24,lo8(__c.2) |
1260 08c8 90E0 ldi r25,hi8(__c.2) |
1261 08ca 9F93 push r25 |
1262 08cc 8F93 push r24 |
1263 08ce 1F93 push r17 |
1264 08d0 0F93 push r16 |
1265 08d2 E091 0000 lds r30,_printf_P |
1266 08d6 F091 0000 lds r31,(_printf_P)+1 |
1267 08da 0995 icall |
1268 08dc 0E94 0000 call MixerTable_Default |
1269 08e0 0E94 0000 call MixerTable_WriteToEEProm |
1270 08e4 0F90 pop __tmp_reg__ |
1271 08e6 0F90 pop __tmp_reg__ |
1272 08e8 0F90 pop __tmp_reg__ |
1273 08ea 0F90 pop __tmp_reg__ |
1274 .L161: |
1275 08ec EE20 tst r14 |
1276 08ee 01F0 breq .L163 |
1277 08f0 6CE5 ldi r22,lo8(92) |
1278 08f2 81E0 ldi r24,lo8(1) |
1279 08f4 90E0 ldi r25,hi8(1) |
1280 08f6 0E94 0000 call SetParamByte |
1281 .L163: |
1282 08fa 1092 0000 sts RequiredMotors,__zero_reg__ |
1283 08fe 90E0 ldi r25,lo8(0) |
1284 0900 E0E0 ldi r30,lo8(Mixer+13) |
1285 0902 F0E0 ldi r31,hi8(Mixer+13) |
1286 0904 CFE0 ldi r28,lo8(15) |
1287 .L168: |
1288 0906 8081 ld r24,Z |
1289 0908 3496 adiw r30,4 |
1290 090a 1816 cp __zero_reg__,r24 |
1291 090c 04F4 brge .L166 |
1292 090e 9F5F subi r25,lo8(-(1)) |
1293 .L166: |
1294 0910 C150 subi r28,lo8(-(-1)) |
1295 0912 C7FF sbrs r28,7 |
1296 0914 00C0 rjmp .L168 |
1297 0916 9093 0000 sts RequiredMotors,r25 |
1298 091a 892F mov r24,r25 |
1299 091c 9927 clr r25 |
1300 091e 9F93 push r25 |
1301 0920 8F93 push r24 |
1302 0922 80E0 ldi r24,lo8(Mixer+1) |
1303 0924 90E0 ldi r25,hi8(Mixer+1) |
1304 0926 9F93 push r25 |
1305 0928 8F93 push r24 |
1306 092a 80E0 ldi r24,lo8(__c.3) |
1307 092c 90E0 ldi r25,hi8(__c.3) |
1308 092e 9F93 push r25 |
1309 0930 8F93 push r24 |
1310 0932 1F93 push r17 |
1311 0934 0F93 push r16 |
1312 0936 E091 0000 lds r30,_printf_P |
1313 093a F091 0000 lds r31,(_printf_P)+1 |
1314 093e 0995 icall |
1315 0940 0E94 0000 call PrintLine |
1316 0944 8DB7 in r24,__SP_L__ |
1317 0946 9EB7 in r25,__SP_H__ |
1318 0948 0896 adiw r24,8 |
1319 094a 8DBF out __SP_L__,r24 |
1320 /* epilogue: frame size=0 */ |
1321 094c CF91 pop r28 |
1322 094e 1F91 pop r17 |
1323 0950 0F91 pop r16 |
1324 0952 FF90 pop r15 |
1325 0954 EF90 pop r14 |
1326 0956 DF90 pop r13 |
1327 0958 0895 ret |
1328 /* epilogue end (size=7) */ |
1329 /* function ParamSet_Init size 233 (220) */ |
1331 .comm Mixer,78,1 |
1332 .comm RequiredMotors,1,1 |
1333 .comm EE_Parameter,125,1 |
1334 /* File "eeprom.c": code 1323 = 0x052b (1267), prologues 18, epilogues 38 */ |
DEFINED SYMBOLS |
*ABS*:00000000 eeprom.c |
C:\Temp/ccFnOSeQ.s:3 *ABS*:0000003f __SREG__ |
C:\Temp/ccFnOSeQ.s:4 *ABS*:0000003e __SP_H__ |
C:\Temp/ccFnOSeQ.s:5 *ABS*:0000003d __SP_L__ |
C:\Temp/ccFnOSeQ.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Temp/ccFnOSeQ.s:7 *ABS*:00000001 __zero_reg__ |
C:\Temp/ccFnOSeQ.s:12 .text:00000000 eeprom_read_byte |
C:\Temp/ccFnOSeQ.s:34 .text:00000010 eeprom_write_byte |
C:\Temp/ccFnOSeQ.s:60 .text:00000028 RAM_Checksum |
C:\Temp/ccFnOSeQ.s:88 .text:0000004a EEProm_Checksum |
C:\Temp/ccFnOSeQ.s:128 .text:0000007a ParamSet_DefaultStickMapping |
*COM*:0000007d EE_Parameter |
C:\Temp/ccFnOSeQ.s:162 .text:000000c4 CommonDefaults |
C:\Temp/ccFnOSeQ.s:320 .text:000002a4 ParamSet_DefaultSet1 |
C:\Temp/ccFnOSeQ.s:368 .text:0000030e ParamSet_DefaultSet2 |
C:\Temp/ccFnOSeQ.s:416 .text:00000378 ParamSet_DefaultSet3 |
C:\Temp/ccFnOSeQ.s:459 .text:000003e0 GetParamByte |
C:\Temp/ccFnOSeQ.s:482 .text:000003f0 SetParamByte |
C:\Temp/ccFnOSeQ.s:508 .text:00000408 GetParamWord |
C:\Temp/ccFnOSeQ.s:521 .text:00000412 SetParamWord |
C:\Temp/ccFnOSeQ.s:534 .text:0000041c ParamSet_ReadFromEEProm |
C:\Temp/ccFnOSeQ.s:639 .text:000004c6 SetActiveParamSet |
C:\Temp/ccFnOSeQ.s:676 .text:000004f2 ParamSet_WriteToEEProm |
C:\Temp/ccFnOSeQ.s:774 .text:000005aa MixerTable_ReadFromEEProm |
*COM*:0000004e Mixer |
C:\Temp/ccFnOSeQ.s:848 .text:00000612 MixerTable_WriteToEEProm |
C:\Temp/ccFnOSeQ.s:893 .text:0000064a MixerTable_Default |
C:\Temp/ccFnOSeQ.s:955 .text:000006d8 GetActiveParamSet |
C:\Temp/ccFnOSeQ.s:1005 .text:00000712 SetDefaultParameter |
C:\Temp/ccFnOSeQ.s:1088 .progmem.data:00000000 __c.0 |
C:\Temp/ccFnOSeQ.s:1092 .progmem.data:00000026 __c.1 |
C:\Temp/ccFnOSeQ.s:1096 .progmem.data:0000003f __c.2 |
C:\Temp/ccFnOSeQ.s:1100 .progmem.data:00000060 __c.3 |
C:\Temp/ccFnOSeQ.s:1105 .text:00000798 ParamSet_Init |
*COM*:00000001 RequiredMotors |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
PlatinenVersion |
__eerd_word |
__eewr_word |
__eerd_block |
LED_Init |
LIBFC_HoTT_Clear |
LIBFC_CheckSettings |
__eewr_block |
uart_putchar |
_printf_P |
PrintLine |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/fc.c |
---|
0,0 → 1,1939 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software Nutzungsbedingungen (english version: see below) |
// + der Fa. HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland - nachfolgend Lizenzgeber genannt - |
// + Der Lizenzgeber räumt dem Kunden ein nicht-ausschließliches, zeitlich und räumlich* unbeschränktes Recht ein, die im den |
// + Mikrocontroller verwendete Firmware für die Hardware Flight-Ctrl, Navi-Ctrl, BL-Ctrl, MK3Mag & PC-Programm MikroKopter-Tool |
// + - nachfolgend Software genannt - nur für private Zwecke zu nutzen. |
// + Der Einsatz dieser Software ist nur auf oder mit Produkten des Lizenzgebers zulässig. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die vom Lizenzgeber gelieferte Software ist urheberrechtlich geschützt. Alle Rechte an der Software sowie an sonstigen im |
// + Rahmen der Vertragsanbahnung und Vertragsdurchführung überlassenen Unterlagen stehen im Verhältnis der Vertragspartner ausschließlich dem Lizenzgeber zu. |
// + Die in der Software enthaltenen Copyright-Vermerke, Markenzeichen, andere Rechtsvorbehalte, Seriennummern sowie |
// + sonstige der Programmidentifikation dienenden Merkmale dürfen vom Kunden nicht verändert oder unkenntlich gemacht werden. |
// + Der Kunde trifft angemessene Vorkehrungen für den sicheren Einsatz der Software. Er wird die Software gründlich auf deren |
// + Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Die Haftung des Lizenzgebers wird - soweit gesetzlich zulässig - begrenzt in Höhe des typischen und vorhersehbaren |
// + Schadens. Die gesetzliche Haftung bei Personenschäden und nach dem Produkthaftungsgesetz bleibt unberührt. Dem Lizenzgeber steht jedoch der Einwand |
// + des Mitverschuldens offen. |
// + Der Kunde trifft angemessene Vorkehrungen für den Fall, dass die Software ganz oder teilweise nicht ordnungsgemäß arbeitet. |
// + Er wird die Software gründlich auf deren Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Der Kunde wird er seine Daten vor Einsatz der Software nach dem Stand der Technik sichern. |
// + Der Kunde ist darüber unterrichtet, dass der Lizenzgeber seine Daten im zur Vertragsdurchführung erforderlichen Umfang |
// + und auf Grundlage der Datenschutzvorschriften erhebt, speichert, verarbeitet und, sofern notwendig, an Dritte übermittelt. |
// + *) Die räumliche Nutzung bezieht sich nur auf den Einsatzort, nicht auf die Reichweite der programmierten Software. |
// + #### ENDE DER NUTZUNGSBEDINGUNGEN ####' |
// + Hinweis: Informationen über erweiterte Nutzungsrechte (wie z.B. Nutzung für nicht-private Zwecke) sind auf Anfrage per Email an info(@)hisystems.de verfügbar. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software LICENSING TERMS |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + of HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland, Germany - the Licensor - |
// + The Licensor grants the customer a non-exclusive license to use the microcontroller firmware of the Flight-Ctrl, Navi-Ctrl, BL-Ctrl, and MK3Mag hardware |
// + (the Software) exclusively for private purposes. The License is unrestricted with respect to time and territory*. |
// + The Software may only be used with the Licensor's products. |
// + The Software provided by the Licensor is protected by copyright. With respect to the relationship between the parties to this |
// + agreement, all rights pertaining to the Software and other documents provided during the preparation and execution of this |
// + agreement shall be the property of the Licensor. |
// + The information contained in the Software copyright notices, trademarks, other legal reservations, serial numbers and other |
// + features that can be used to identify the program may not be altered or defaced by the customer. |
// + The customer shall be responsible for taking reasonable precautions |
// + for the safe use of the Software. The customer shall test the Software thoroughly regarding its suitability for the |
// + intended purpose before implementing it for actual operation. The Licensor's liability shall be limited to the extent of typical and |
// + foreseeable damage to the extent permitted by law, notwithstanding statutory liability for bodily injury and product |
// + liability. However, the Licensor shall be entitled to the defense of contributory negligence. |
// + The customer will take adequate precautions in the case, that the software is not working properly. The customer will test |
// + the software for his purpose before any operational usage. The customer will backup his data before using the software. |
// + The customer understands that the Licensor collects, stores and processes, and, where required, forwards, customer data |
// + to third parties to the extent necessary for executing the agreement, subject to applicable data protection and privacy regulations. |
// + *) The territory aspect only refers to the place where the Software is used, not its programmed range. |
// + #### END OF LICENSING TERMS #### |
// + Note: For information on license extensions (e.g. commercial use), please contact us at info(@)hisystems.de. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "mymath.h" |
#include "isqrt.h" |
unsigned char h,m,s; |
unsigned int BaroExpandActive = 0; |
int MesswertNick,MesswertRoll,MesswertGier,MesswertGierBias, RohMesswertNick,RohMesswertRoll; |
int TrimNick, TrimRoll; |
int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0,StartNeutralRoll = 0,StartNeutralNick = 0; |
int Mittelwert_AccNick, Mittelwert_AccRoll; |
unsigned int NeutralAccX=0, NeutralAccY=0; |
int NaviAccNick, NaviAccRoll,NaviCntAcc = 0; |
int NeutralAccZ = 0; |
unsigned char ControlHeading = 0;// in 2° |
long IntegralNick = 0,IntegralNick2 = 0; |
long IntegralRoll = 0,IntegralRoll2 = 0; |
long IntegralAccNick = 0,IntegralAccRoll = 0,IntegralAccZ = 0; |
long Integral_Gier = 0; |
long Mess_IntegralNick = 0,Mess_IntegralNick2 = 0; |
long Mess_IntegralRoll = 0,Mess_IntegralRoll2 = 0; |
long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0; |
long MittelIntegralNick,MittelIntegralRoll,MittelIntegralNick2,MittelIntegralRoll2; |
long SummeNick=0,SummeRoll=0; |
volatile long Mess_Integral_Hoch = 0; |
int KompassValue = -1; |
int KompassSollWert = 0; |
//int KompassRichtung = 0; |
char CalculateCompassTimer = 100; |
unsigned char KompassFusion = 32; |
unsigned int KompassSignalSchlecht = 50; |
unsigned char MAX_GAS,MIN_GAS; |
unsigned char HoehenReglerAktiv = 0; |
unsigned char TrichterFlug = 0; |
long Umschlag180Nick = 250000L, Umschlag180Roll = 250000L; |
long ErsatzKompass; |
int ErsatzKompassInGrad; // Kompasswert in Grad |
int GierGyroFehler = 0; |
char GyroFaktor,GyroFaktorGier; |
char IntegralFaktor,IntegralFaktorGier; |
int DiffNick,DiffRoll; |
int StickGasHover = 120, HoverGasMin = 0, HoverGasMax = 1023; |
int StickNick = 0,StickRoll = 0,StickGier = 0,StickGas = 0; |
//int Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0, Poti5 = 0, Poti6 = 0, Poti7 = 0, Poti8 = 0; |
unsigned char Poti[9] = {0,0,0,0,0,0,0,0}; |
volatile unsigned char SenderOkay = 0; |
char MotorenEin = 0,StartTrigger = 0; |
long HoehenWert = 0; |
long SollHoehe = 0; |
signed int AltitudeSetpointTrimming = 0; |
long FromNC_AltitudeSetpoint = 0; |
unsigned char FromNC_AltitudeSpeed = 0; |
unsigned char carefree_old = 50; // to make the Beep when switching |
signed char WaypointTrimming = 0; |
int CompassGierSetpoint = 0; |
unsigned char CalibrationDone = 0; |
char NeueKompassRichtungMerken = 0; |
int LageKorrekturRoll = 0,LageKorrekturNick = 0, HoverGas = 0; |
//float Ki = FAKTOR_I; |
int Ki = 10300 / 33; |
unsigned char Looping_Nick = 0,Looping_Roll = 0; |
unsigned char Looping_Links = 0, Looping_Rechts = 0, Looping_Unten = 0, Looping_Oben = 0; |
unsigned char Parameter_Luftdruck_D = 48; // Wert : 0-250 |
unsigned char Parameter_HoehenSchalter = 251; // Wert : 0-250 |
unsigned char Parameter_Hoehe_P = 16; // Wert : 0-32 |
unsigned char Parameter_Hoehe_ACC_Wirkung = 58; // Wert : 0-250 |
unsigned char Parameter_KompassWirkung = 64; // Wert : 0-250 |
unsigned char Parameter_Hoehe_GPS_Z = 64; // Wert : 0-250 |
unsigned char Parameter_Gyro_D = 8; // Wert : 0-250 |
unsigned char Parameter_Gyro_P = 150; // Wert : 10-250 |
unsigned char Parameter_Gyro_I = 150; // Wert : 0-250 |
unsigned char Parameter_Gyro_Gier_P = 150; // Wert : 10-250 |
unsigned char Parameter_Gyro_Gier_I = 150; // Wert : 10-250 |
unsigned char Parameter_Gier_P = 2; // Wert : 1-20 |
unsigned char Parameter_I_Faktor = 10; // Wert : 1-20 |
unsigned char Parameter_UserParam1 = 0; |
unsigned char Parameter_UserParam2 = 0; |
unsigned char Parameter_UserParam3 = 0; |
unsigned char Parameter_UserParam4 = 0; |
unsigned char Parameter_UserParam5 = 0; |
unsigned char Parameter_UserParam6 = 0; |
unsigned char Parameter_UserParam7 = 0; |
unsigned char Parameter_UserParam8 = 0; |
unsigned char Parameter_ServoNickControl = 100; |
unsigned char Parameter_ServoRollControl = 100; |
unsigned char Parameter_LoopGasLimit = 70; |
unsigned char Parameter_AchsKopplung1 = 90; |
unsigned char Parameter_AchsKopplung2 = 65; |
unsigned char Parameter_CouplingYawCorrection = 64; |
//unsigned char Parameter_AchsGegenKopplung1 = 0; |
unsigned char Parameter_DynamicStability = 100; |
unsigned char Parameter_J16Bitmask; // for the J16 Output |
unsigned char Parameter_J16Timing; // for the J16 Output |
unsigned char Parameter_J17Bitmask; // for the J17 Output |
unsigned char Parameter_J17Timing; // for the J17 Output |
unsigned char Parameter_NaviGpsModeControl; // Parameters for the Naviboard |
unsigned char Parameter_NaviGpsGain; |
unsigned char Parameter_NaviGpsP; |
unsigned char Parameter_NaviGpsI; |
unsigned char Parameter_NaviGpsD; |
unsigned char Parameter_NaviGpsACC; |
unsigned char Parameter_NaviOperatingRadius; |
unsigned char Parameter_NaviWindCorrection; |
unsigned char Parameter_NaviSpeedCompensation; |
unsigned char Parameter_ExternalControl; |
unsigned char Parameter_GlobalConfig; |
unsigned char Parameter_ExtraConfig; |
unsigned char Parameter_MaximumAltitude; |
unsigned char Parameter_Servo3,Parameter_Servo4,Parameter_Servo5; |
unsigned char CareFree = 0; |
const signed char sintab[31] = { 0, 2, 4, 6, 7, 8, 8, 8, 7, 6, 4, 2, 0, -2, -4, -6, -7, -8, -8, -8, -7, -6, -4, -2, 0, 2, 4, 6, 7, 8, 8}; // 15° steps |
signed int ExternStickNick = 0,ExternStickRoll = 0,ExternStickGier = 0, ExternHoehenValue = -20; |
int MaxStickNick = 0,MaxStickRoll = 0; |
unsigned int modell_fliegt = 0; |
volatile unsigned char FC_StatusFlags = 0, FC_StatusFlags2 = 0; |
long GIER_GRAD_FAKTOR = 1291; |
signed int KopplungsteilNickRoll,KopplungsteilRollNick; |
signed int tmp_motorwert[MAX_MOTORS]; |
char VarioCharacter = ' '; |
unsigned int HooverGasEmergencyPercent = 0; // The gas value for Emergency landing |
unsigned int GasIsZeroCnt = 0; // to detect that the gas-stick is down for a while |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Debugwerte zuordnen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
void CopyDebugValues(void) |
{ |
DebugOut.Analog[0] = IntegralNick / (EE_Parameter.GyroAccFaktor * 4); |
DebugOut.Analog[1] = IntegralRoll / (EE_Parameter.GyroAccFaktor * 4); |
DebugOut.Analog[2] = Mittelwert_AccNick / 4; |
DebugOut.Analog[3] = Mittelwert_AccRoll / 4; |
DebugOut.Analog[4] = (signed int) AdNeutralGier - AdWertGier; |
DebugOut.Analog[5] = HoehenWert/5; |
DebugOut.Analog[6] = AdWertAccHoch;//(Mess_Integral_Hoch / 512);// Aktuell_az; |
DebugOut.Analog[8] = KompassValue; |
DebugOut.Analog[9] = UBat; |
DebugOut.Analog[10] = SenderOkay; |
DebugOut.Analog[11] = ErsatzKompassInGrad; |
DebugOut.Analog[12] = Motor[0].SetPoint; |
DebugOut.Analog[13] = Motor[1].SetPoint; |
DebugOut.Analog[14] = Motor[2].SetPoint; |
DebugOut.Analog[15] = Motor[3].SetPoint; |
DebugOut.Analog[20] = ServoNickValue; |
DebugOut.Analog[22] = Capacity.ActualCurrent; |
DebugOut.Analog[23] = Capacity.UsedCapacity; |
DebugOut.Analog[24] = SollHoehe/5; |
// DebugOut.Analog[22] = FromNaviCtrl_Value.GpsZ; |
// DebugOut.Analog[29] = FromNaviCtrl_Value.SerialDataOkay; |
DebugOut.Analog[27] = KompassSollWert; |
DebugOut.Analog[29] = Capacity.MinOfMaxPWM; |
DebugOut.Analog[30] = GPS_Nick; |
DebugOut.Analog[31] = GPS_Roll; |
if(VersionInfo.HardwareError[0] || VersionInfo.HardwareError[1]) DebugOut.Status[1] |= 1; else DebugOut.Status[1] &= 0xfe; |
} |
void Piep(unsigned char Anzahl, unsigned int dauer) |
{ |
unsigned int wait = 0; |
if(MotorenEin) return; //auf keinen Fall im Flug! |
GRN_OFF; |
while(Anzahl--) |
{ |
beeptime = dauer; |
wait = dauer; |
while(beeptime || wait) |
{ |
if(UpdateMotor) |
{ |
UpdateMotor = 0; |
if(!beeptime) wait--; |
LIBFC_Polling(); |
}; |
} |
} |
GRN_ON; |
} |
//############################################################################ |
// Messwerte beim Ermitteln der Nullage |
void CalibrierMittelwert(void) |
//############################################################################ |
{ |
unsigned char i; |
if(PlatinenVersion == 13) SucheGyroOffset(); |
// ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
ANALOG_OFF; |
MesswertNick = AdWertNick; |
MesswertRoll = AdWertRoll; |
MesswertGier = AdWertGier; |
Mittelwert_AccNick = ACC_AMPLIFY * AdWertAccNick; |
Mittelwert_AccRoll = ACC_AMPLIFY * AdWertAccRoll; |
// ADC einschalten |
ANALOG_ON; |
for(i=0;i<8;i++) |
{ |
int tmp; |
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_POTI1 + i]] + 127; |
LIMIT_MIN_MAX(tmp, 0, 255); |
if(Poti[i] > tmp) Poti[i]--; else if(Poti[i] < tmp) Poti[i]++; |
} |
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L; |
} |
//############################################################################ |
// Nullwerte ermitteln |
void SetNeutral(unsigned char AccAdjustment) |
//############################################################################ |
{ |
unsigned char i; |
unsigned int gier_neutral=0, nick_neutral=0, roll_neutral=0; |
VersionInfo.HardwareError[0] = 0; |
// HEF4017Reset_ON; |
NeutralAccX = 0; |
NeutralAccY = 0; |
NeutralAccZ = 0; |
AdNeutralNick = 0; |
AdNeutralRoll = 0; |
AdNeutralGier = 0; |
Parameter_AchsKopplung1 = 0; |
Parameter_AchsKopplung2 = 0; |
ExpandBaro = 0; |
CalibrierMittelwert(); |
Delay_ms_Mess(100); |
CalibrierMittelwert(); |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
{ |
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
} |
#define NEUTRAL_FILTER 32 |
for(i=0; i<NEUTRAL_FILTER; i++) |
{ |
Delay_ms_Mess(10); |
gier_neutral += AdWertGier; |
nick_neutral += AdWertNick; |
roll_neutral += AdWertRoll; |
} |
AdNeutralNick= (nick_neutral+NEUTRAL_FILTER/2) / (NEUTRAL_FILTER / 8); |
AdNeutralRoll= (roll_neutral+NEUTRAL_FILTER/2) / (NEUTRAL_FILTER / 8); |
AdNeutralGier= (gier_neutral+NEUTRAL_FILTER/2) / (NEUTRAL_FILTER); |
StartNeutralRoll = AdNeutralRoll; |
StartNeutralNick = AdNeutralNick; |
if(AccAdjustment) |
{ |
NeutralAccX = abs(Mittelwert_AccNick) / (2*ACC_AMPLIFY); |
NeutralAccY = abs(Mittelwert_AccRoll) / (2*ACC_AMPLIFY); |
NeutralAccZ = Aktuell_az; |
// Save ACC neutral settings to eeprom |
SetParamWord(PID_ACC_NICK, (uint16_t)NeutralAccX); |
SetParamWord(PID_ACC_ROLL, (uint16_t)NeutralAccY); |
SetParamWord(PID_ACC_TOP, (uint16_t)NeutralAccZ); |
} |
else |
{ |
// restore from eeprom |
NeutralAccX = (int16_t)GetParamWord(PID_ACC_NICK); |
NeutralAccY = (int16_t)GetParamWord(PID_ACC_ROLL); |
NeutralAccZ = (int16_t)GetParamWord(PID_ACC_TOP); |
// strange settings? |
if(((unsigned int) NeutralAccX > 2048) || ((unsigned int) NeutralAccY > 2048) || ((unsigned int) NeutralAccZ > 1024)) |
{ |
printf("\n\rACC not calibrated!\r\n"); |
NeutralAccX = abs(Mittelwert_AccNick) / (2*ACC_AMPLIFY); |
NeutralAccY = abs(Mittelwert_AccRoll) / (2*ACC_AMPLIFY); |
NeutralAccZ = Aktuell_az; |
} |
} |
MesswertNick = 0; |
MesswertRoll = 0; |
MesswertGier = 0; |
Delay_ms_Mess(100); |
Mittelwert_AccNick = ACC_AMPLIFY * AdWertAccNick; |
Mittelwert_AccRoll = ACC_AMPLIFY * AdWertAccRoll; |
IntegralNick = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccNick; |
IntegralRoll = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccRoll; |
Mess_IntegralNick = IntegralNick; |
Mess_IntegralRoll = IntegralRoll; |
Mess_Integral_Gier = 0; |
StartLuftdruck = Luftdruck; |
VarioMeter = 0; |
Mess_Integral_Hoch = 0; |
KompassSollWert = KompassValue; |
KompassSignalSchlecht = 100; |
beeptime = 50; |
Umschlag180Nick = ((long) EE_Parameter.WinkelUmschlagNick * 2500L) + 15000L; |
Umschlag180Roll = ((long) EE_Parameter.WinkelUmschlagRoll * 2500L) + 15000L; |
ExternHoehenValue = 0; |
ErsatzKompass = KompassValue * GIER_GRAD_FAKTOR; |
GierGyroFehler = 0; |
LED_Init(); |
FC_StatusFlags |= FC_STATUS_CALIBRATE; |
FromNaviCtrl_Value.Kalman_K = -1; |
FromNaviCtrl_Value.Kalman_MaxDrift = 0; |
FromNaviCtrl_Value.Kalman_MaxFusion = 32; |
for(i=0;i<8;i++) |
{ |
Poti[i] = PPM_in[EE_Parameter.Kanalbelegung[K_POTI1 + i]] + 127; |
} |
SenderOkay = 100; |
if(ServoActive) |
{ |
DDRD |=0x80; // enable J7 -> Servo signal |
} |
else |
{ |
// if(EE_Parameter.ServoCompInvert & SERVO_NICK_INV) NickServoValue = ((128 + 60) * 4 * 16); // neutral position = upper 1/4 |
// else |
NickServoValue = ((128 - 60) * 4 * 16); // neutral position = lower 1/4 |
} |
if((AdNeutralNick < 150 * 16) || (AdNeutralNick > 850 * 16)) { VersionInfo.HardwareError[0] |= FC_ERROR0_GYRO_NICK; }; |
if((AdNeutralRoll < 150 * 16) || (AdNeutralRoll > 850 * 16)) { VersionInfo.HardwareError[0] |= FC_ERROR0_GYRO_ROLL; }; |
if((AdNeutralGier < 150 * 2) || (AdNeutralGier > 850 * 2)) { VersionInfo.HardwareError[0] |= FC_ERROR0_GYRO_YAW; }; |
if((NeutralAccX < 300) || (NeutralAccX > 750)) { VersionInfo.HardwareError[0] |= FC_ERROR0_ACC_NICK; }; |
if((NeutralAccY < 300) || (NeutralAccY > 750)) { VersionInfo.HardwareError[0] |= FC_ERROR0_ACC_ROLL; }; |
if((NeutralAccZ < 512) || (NeutralAccZ > 850)) { VersionInfo.HardwareError[0] |= FC_ERROR0_ACC_TOP; }; |
carefree_old = 70; |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
LIBFC_HoTT_Clear(); |
#endif |
} |
//############################################################################ |
// Bearbeitet die Messwerte |
void Mittelwert(void) |
//############################################################################ |
{ |
static signed long tmpl,tmpl2,tmpl3,tmpl4; |
static signed int oldNick, oldRoll, d2Roll, d2Nick; |
signed long winkel_nick, winkel_roll; |
MesswertGier = (signed int) AdNeutralGier - AdWertGier; |
MesswertNick = (signed int) AdWertNickFilter / 8; |
MesswertRoll = (signed int) AdWertRollFilter / 8; |
RohMesswertNick = MesswertNick; |
RohMesswertRoll = MesswertRoll; |
// Beschleunigungssensor ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mittelwert_AccNick = (Mittelwert_AccNick * 3 + ((ACC_AMPLIFY * AdWertAccNick))) / 4L; |
Mittelwert_AccRoll = (Mittelwert_AccRoll * 3 + ((ACC_AMPLIFY * AdWertAccRoll))) / 4L; |
IntegralAccNick += ACC_AMPLIFY * AdWertAccNick; |
IntegralAccRoll += ACC_AMPLIFY * AdWertAccRoll; |
NaviAccNick += AdWertAccNick; |
NaviAccRoll += AdWertAccRoll; |
NaviCntAcc++; |
IntegralAccZ += Aktuell_az - NeutralAccZ; |
//++++++++++++++++++++++++++++++++++++++++++++++++ |
// ADC einschalten |
ANALOG_ON; |
AdReady = 0; |
//++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Mess_IntegralRoll > 93000L) winkel_roll = 93000L; |
else if(Mess_IntegralRoll <-93000L) winkel_roll = -93000L; |
else winkel_roll = Mess_IntegralRoll; |
if(Mess_IntegralNick > 93000L) winkel_nick = 93000L; |
else if(Mess_IntegralNick <-93000L) winkel_nick = -93000L; |
else winkel_nick = Mess_IntegralNick; |
// Gier ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mess_Integral_Gier += MesswertGier; |
ErsatzKompass += MesswertGier; |
// Kopplungsanteil +++++++++++++++++++++++++++++++++++++ |
if(!Looping_Nick && !Looping_Roll && (Parameter_GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV)) |
{ |
tmpl3 = (MesswertRoll * winkel_nick) / 2048L; |
tmpl3 *= Parameter_AchsKopplung2; //65 |
tmpl3 /= 4096L; |
tmpl4 = (MesswertNick * winkel_roll) / 2048L; |
tmpl4 *= Parameter_AchsKopplung2; //65 |
tmpl4 /= 4096L; |
KopplungsteilNickRoll = tmpl3; |
KopplungsteilRollNick = tmpl4; |
tmpl4 -= tmpl3; |
ErsatzKompass += tmpl4; |
if(!Parameter_CouplingYawCorrection) Mess_Integral_Gier -= tmpl4/2; // Gier nachhelfen |
tmpl = ((MesswertGier + tmpl4) * winkel_nick) / 2048L; |
tmpl *= Parameter_AchsKopplung1; // 90 |
tmpl /= 4096L; |
tmpl2 = ((MesswertGier + tmpl4) * winkel_roll) / 2048L; |
tmpl2 *= Parameter_AchsKopplung1; |
tmpl2 /= 4096L; |
if(abs(MesswertGier) > 64) if(labs(tmpl) > 128 || labs(tmpl2) > 128) TrichterFlug = 1; |
//MesswertGier += (Parameter_CouplingYawCorrection * tmpl4) / 256; |
} |
else tmpl = tmpl2 = KopplungsteilNickRoll = KopplungsteilRollNick = 0; |
TrimRoll = tmpl - tmpl2 / 100L; |
TrimNick = -tmpl2 + tmpl / 100L; |
// Kompasswert begrenzen ++++++++++++++++++++++++++++++++++++++++++++++++ |
if(ErsatzKompass >= (360L * GIER_GRAD_FAKTOR)) ErsatzKompass -= 360L * GIER_GRAD_FAKTOR; // 360° Umschlag |
if(ErsatzKompass < 0) ErsatzKompass += 360L * GIER_GRAD_FAKTOR; |
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mess_IntegralRoll2 += MesswertRoll + TrimRoll; |
Mess_IntegralRoll += MesswertRoll + TrimRoll - LageKorrekturRoll; |
if(Mess_IntegralRoll > Umschlag180Roll) |
{ |
Mess_IntegralRoll = -(Umschlag180Roll - 25000L); |
Mess_IntegralRoll2 = Mess_IntegralRoll; |
} |
if(Mess_IntegralRoll <-Umschlag180Roll) |
{ |
Mess_IntegralRoll = (Umschlag180Roll - 25000L); |
Mess_IntegralRoll2 = Mess_IntegralRoll; |
} |
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mess_IntegralNick2 += MesswertNick + TrimNick; |
Mess_IntegralNick += MesswertNick + TrimNick - LageKorrekturNick; |
if(Mess_IntegralNick > Umschlag180Nick) |
{ |
Mess_IntegralNick = -(Umschlag180Nick - 25000L); |
Mess_IntegralNick2 = Mess_IntegralNick; |
} |
if(Mess_IntegralNick <-Umschlag180Nick) |
{ |
Mess_IntegralNick = (Umschlag180Nick - 25000L); |
Mess_IntegralNick2 = Mess_IntegralNick; |
} |
Integral_Gier = Mess_Integral_Gier; |
IntegralNick = Mess_IntegralNick; |
IntegralRoll = Mess_IntegralRoll; |
IntegralNick2 = Mess_IntegralNick2; |
IntegralRoll2 = Mess_IntegralRoll2; |
#define D_LIMIT 128 |
MesswertNick = HiResNick / 8; |
MesswertRoll = HiResRoll / 8; |
if(AdWertNick < 15) MesswertNick = -1000; if(AdWertNick < 7) MesswertNick = -2000; |
if(PlatinenVersion == 10) { if(AdWertNick > 1010) MesswertNick = +1000; if(AdWertNick > 1017) MesswertNick = +2000; } |
else { if(AdWertNick > 2000) MesswertNick = +1000; if(AdWertNick > 2015) MesswertNick = +2000; } |
if(AdWertRoll < 15) MesswertRoll = -1000; if(AdWertRoll < 7) MesswertRoll = -2000; |
if(PlatinenVersion == 10) { if(AdWertRoll > 1010) MesswertRoll = +1000; if(AdWertRoll > 1017) MesswertRoll = +2000; } |
else { if(AdWertRoll > 2000) MesswertRoll = +1000; if(AdWertRoll > 2015) MesswertRoll = +2000; } |
if(Parameter_Gyro_D) |
{ |
d2Nick = HiResNick - oldNick; |
oldNick = (oldNick + HiResNick)/2; |
if(d2Nick > D_LIMIT) d2Nick = D_LIMIT; |
else if(d2Nick < -D_LIMIT) d2Nick = -D_LIMIT; |
d2Roll = HiResRoll - oldRoll; |
oldRoll = (oldRoll + HiResRoll)/2; |
if(d2Roll > D_LIMIT) d2Roll = D_LIMIT; |
else if(d2Roll < -D_LIMIT) d2Roll = -D_LIMIT; |
MesswertNick += (d2Nick * (signed int) Parameter_Gyro_D) / 16; |
MesswertRoll += (d2Roll * (signed int) Parameter_Gyro_D) / 16; |
HiResNick += (d2Nick * (signed int) Parameter_Gyro_D); |
HiResRoll += (d2Roll * (signed int) Parameter_Gyro_D); |
} |
if(RohMesswertRoll > 0) TrimRoll += ((long) abs(KopplungsteilNickRoll) * Parameter_CouplingYawCorrection) / 64L; |
else TrimRoll -= ((long) abs(KopplungsteilNickRoll) * Parameter_CouplingYawCorrection) / 64L; |
if(RohMesswertNick > 0) TrimNick += ((long) abs(KopplungsteilRollNick) * Parameter_CouplingYawCorrection) / 64L; |
else TrimNick -= ((long) abs(KopplungsteilRollNick) * Parameter_CouplingYawCorrection) / 64L; |
if(Parameter_GlobalConfig & CFG_DREHRATEN_BEGRENZER && !Looping_Nick && !Looping_Roll) |
{ |
if(RohMesswertNick > 256) MesswertNick += 1 * (RohMesswertNick - 256); |
else if(RohMesswertNick < -256) MesswertNick += 1 * (RohMesswertNick + 256); |
if(RohMesswertRoll > 256) MesswertRoll += 1 * (RohMesswertRoll - 256); |
else if(RohMesswertRoll < -256) MesswertRoll += 1 * (RohMesswertRoll + 256); |
} |
} |
//############################################################################ |
// Senden der Motorwerte per I2C-Bus |
void SendMotorData(void) |
//############################################################################ |
{ |
unsigned char i; |
if(!MotorenEin) |
{ |
FC_StatusFlags &= ~(FC_STATUS_MOTOR_RUN | FC_STATUS_FLY); |
for(i=0;i<MAX_MOTORS;i++) |
{ |
if(!PC_MotortestActive) MotorTest[i] = 0; |
Motor[i].SetPoint = MotorTest[i]; |
Motor[i].SetPointLowerBits = 0; |
/* |
Motor[i].SetPoint = MotorTest[i] / 4; // testing the high resolution |
Motor[i].SetPointLowerBits = MotorTest[i] % 4; |
*/ |
} |
if(PC_MotortestActive) PC_MotortestActive--; |
} |
else FC_StatusFlags |= FC_STATUS_MOTOR_RUN; |
if(I2C_TransferActive) |
{ |
I2C_TransferActive = 0; // enable for the next time |
} |
else |
{ |
motor_write = 0; |
I2C_Start(TWI_STATE_MOTOR_TX); //Start I2C Interrupt Mode |
} |
} |
//############################################################################ |
// Trägt ggf. das Poti als Parameter ein |
void ParameterZuordnung(void) |
//############################################################################ |
{ |
unsigned char tmp,i; |
for(i=0;i<8;i++) |
{ |
int tmp2; |
tmp = EE_Parameter.Kanalbelegung[K_POTI1 + i]; |
tmp2 = PPM_in[tmp] + 127; |
if(tmp2 > 255) tmp2 = 255; else if(tmp2 < 0) tmp2 = 0; |
if(tmp == 25) Poti[i] = tmp2; // 25 = WaypointEvent channel -> no filter |
else |
if(tmp2 != Poti[i]) |
{ |
Poti[i] += (tmp2 - Poti[i]) / 4; |
if(Poti[i] > tmp2) Poti[i]--; |
else Poti[i]++; |
} |
} |
CHK_POTI_MM(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100); |
CHK_POTI_MM(Parameter_Hoehe_P,EE_Parameter.Hoehe_P,0,100); |
CHK_POTI_MM(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255); |
CHK_POTI_MM(Parameter_J16Timing,EE_Parameter.J16Timing,5,255); |
CHK_POTI_MM(Parameter_J17Timing,EE_Parameter.J17Timing,5,255); |
if(EE_Parameter.Servo3 == 247) { if(PORTC & (1<<PORTC2)) Parameter_Servo3 = 140; else Parameter_Servo3 = 70;} // Out1 (J16) |
else if(EE_Parameter.Servo3 == 246) { if(PORTC & (1<<PORTC3)) Parameter_Servo3 = 140; else Parameter_Servo3 = 70;} |
else CHK_POTI(Parameter_Servo3,EE_Parameter.Servo3); |
if(EE_Parameter.Servo4 == 247) { if(PORTC & (1<<PORTC2)) Parameter_Servo4 = 140; else Parameter_Servo4 = 70;} |
else if(EE_Parameter.Servo4 == 246) { if(PORTC & (1<<PORTC3)) Parameter_Servo4 = 140; else Parameter_Servo4 = 70;} // Out2 (J17) |
else CHK_POTI(Parameter_Servo4,EE_Parameter.Servo4); |
CHK_POTI(Parameter_Servo5,EE_Parameter.Servo5); |
CHK_POTI(Parameter_HoehenSchalter,EE_Parameter.MaxHoehe); |
CHK_POTI(Parameter_Hoehe_ACC_Wirkung,EE_Parameter.Hoehe_ACC_Wirkung); |
CHK_POTI(Parameter_Hoehe_GPS_Z,EE_Parameter.Hoehe_GPS_Z); |
CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung); |
CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I); |
CHK_POTI(Parameter_Gyro_D,EE_Parameter.Gyro_D); |
CHK_POTI(Parameter_Gyro_Gier_P,EE_Parameter.Gyro_Gier_P); |
CHK_POTI(Parameter_Gyro_Gier_I,EE_Parameter.Gyro_Gier_I); |
CHK_POTI(Parameter_I_Faktor,EE_Parameter.I_Faktor); |
CHK_POTI(Parameter_UserParam1,EE_Parameter.UserParam1); |
CHK_POTI(Parameter_UserParam2,EE_Parameter.UserParam2); |
CHK_POTI(Parameter_UserParam3,EE_Parameter.UserParam3); |
CHK_POTI(Parameter_UserParam4,EE_Parameter.UserParam4); |
CHK_POTI(Parameter_UserParam5,EE_Parameter.UserParam5); |
CHK_POTI(Parameter_UserParam6,EE_Parameter.UserParam6); |
CHK_POTI(Parameter_UserParam7,EE_Parameter.UserParam7); |
CHK_POTI(Parameter_UserParam8,EE_Parameter.UserParam8); |
CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl); |
CHK_POTI(Parameter_ServoRollControl,EE_Parameter.ServoRollControl); |
CHK_POTI(Parameter_LoopGasLimit,EE_Parameter.LoopGasLimit); |
CHK_POTI(Parameter_AchsKopplung1,EE_Parameter.AchsKopplung1); |
CHK_POTI(Parameter_AchsKopplung2,EE_Parameter.AchsKopplung2); |
CHK_POTI(Parameter_CouplingYawCorrection,EE_Parameter.CouplingYawCorrection); |
CHK_POTI(Parameter_MaximumAltitude,EE_Parameter.MaxAltitude); |
if((NC_To_FC_MaxAltitude && NC_To_FC_MaxAltitude < Parameter_MaximumAltitude) || Parameter_MaximumAltitude == 0) Parameter_MaximumAltitude = NC_To_FC_MaxAltitude; |
Parameter_GlobalConfig = EE_Parameter.GlobalConfig; |
Parameter_ExtraConfig = EE_Parameter.ExtraConfig; |
// CHK_POTI(Parameter_AchsGegenKopplung1,EE_Parameter.AchsGegenKopplung1,0,255); |
CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability); |
CHK_POTI(Parameter_ExternalControl,EE_Parameter.ExternalControl); |
Ki = 10300 / (Parameter_I_Faktor + 1); |
MAX_GAS = EE_Parameter.Gas_Max; |
MIN_GAS = EE_Parameter.Gas_Min; |
tmp = EE_Parameter.CareFreeModeControl; |
if(tmp > 50) |
{ |
CareFree = 1; |
if(tmp >= 248 && Poti[255 - tmp] < 50) CareFree = 0; |
if(carefree_old != CareFree) |
{ |
if(carefree_old < 3) |
{ |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
if(CareFree) { beeptime = 1500; if(!SpeakHoTT) SpeakHoTT = SPEAK_CF_ON; } |
else { beeptime = 200; if(!SpeakHoTT) SpeakHoTT = SPEAK_CF_OFF; } |
#else |
if(CareFree) beeptime = 1500; |
else beeptime = 200; |
#endif |
NeueKompassRichtungMerken = 5; |
carefree_old = CareFree; |
} else carefree_old--; |
} |
if(FromNaviCtrl.CompassValue < 0 && CareFree) VersionInfo.HardwareError[0] |= FC_ERROR0_CAREFREE; //else VersionInfo.HardwareError[0] &= ~FC_ERROR0_CAREFREE; |
} |
else |
{ |
CareFree = 0; |
carefree_old = 10; |
} |
if(FromNaviCtrl.CompassValue < 0 && MotorenEin && CareFree && BeepMuster == 0xffff) // ungültiger Kompasswert |
{ |
beeptime = 15000; |
BeepMuster = 0xA400; |
CareFree = 0; |
} |
if(CareFree) { FC_StatusFlags2 |= FC_STATUS2_CAREFREE; if(Parameter_AchsKopplung1 < 210) Parameter_AchsKopplung1 += 30;} else FC_StatusFlags2 &= ~FC_STATUS2_CAREFREE; |
} |
//############################################################################ |
// |
void MotorRegler(void) |
//############################################################################ |
{ |
int pd_ergebnis_nick,pd_ergebnis_roll,tmp_int, tmp_int2; |
int GierMischanteil,GasMischanteil; |
static long sollGier = 0,tmp_long,tmp_long2; |
static long IntegralFehlerNick = 0; |
static long IntegralFehlerRoll = 0; |
static unsigned int RcLostTimer; |
static unsigned char delay_neutral = 0; |
static unsigned char delay_einschalten = 0,delay_ausschalten = 0; |
static signed char move_safety_switch = 0; |
static long ausgleichNick, ausgleichRoll; |
int IntegralNickMalFaktor,IntegralRollMalFaktor; |
unsigned char i; |
Mittelwert(); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gaswert ermitteln |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!(FC_StatusFlags & (FC_STATUS_EMERGENCY_LANDING | FC_STATUS2_RC_FAILSAVE_ACTIVE))) |
{ |
if(EE_Parameter.GlobalConfig3 & CFG3_VARIO_FAILSAFE) |
{ |
if(HoverGas && HoverGas < 150 * STICK_GAIN) |
{ |
HooverGasEmergencyPercent = (HoverGas/(STICK_GAIN) * EE_Parameter.NotGas) / 100; // i.e. 80% of Hovergas |
} |
else HooverGasEmergencyPercent = 45; // default if the Hoovergas was could not calculated yet |
} else HooverGasEmergencyPercent = EE_Parameter.NotGas; |
} |
if(GasIsZeroCnt == 30000) // in that case we have RC-Lost, but the MK is probably landed |
{ |
StickGas = 0; // Hold Gas down in that case |
HooverGasEmergencyPercent = MIN_GAS; |
} |
GasMischanteil = StickGas; |
if(GasMischanteil < MIN_GAS + 10) GasMischanteil = MIN_GAS + 10; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Empfang schlecht |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(SenderOkay < 100 && !(FC_StatusFlags2 & FC_STATUS2_RC_FAILSAVE_ACTIVE)) |
{ |
if(RcLostTimer) RcLostTimer--; |
else |
{ |
MotorenEin = 0; |
modell_fliegt = 0; |
FC_StatusFlags &= ~(FC_STATUS_EMERGENCY_LANDING | FC_STATUS_FLY); |
} |
ROT_ON; |
if(modell_fliegt > 1000 && Capacity.MinOfMaxPWM > 100) // wahrscheinlich in der Luft --> langsam absenken |
{ |
GasMischanteil = HooverGasEmergencyPercent; |
FC_StatusFlags |= FC_STATUS_EMERGENCY_LANDING; |
PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] = 0; |
PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] = 0; |
PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] = 0; |
PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] = 0; |
PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] = 0; |
} |
else |
{ |
MotorenEin = 0; |
} |
} |
else |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Emfang gut |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(SenderOkay > 140) |
{ |
FC_StatusFlags &= ~FC_STATUS_EMERGENCY_LANDING; |
RcLostTimer = EE_Parameter.NotGasZeit * 50; |
if(GasMischanteil > 40 && MotorenEin) |
{ |
if(modell_fliegt < 0xffff) modell_fliegt++; |
} |
if((modell_fliegt < 256)) |
{ |
SummeNick = 0; |
SummeRoll = 0; |
sollGier = 0; |
Mess_Integral_Gier = 0; |
} else FC_StatusFlags |= FC_STATUS_FLY; |
if((PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 80) && MotorenEin == 0) |
{ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// auf Nullwerte kalibrieren |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) // Neutralwerte |
{ |
if(++delay_neutral > 200) // nicht sofort |
{ |
delay_neutral = 0; |
modell_fliegt = 0; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > 70) |
{ |
unsigned char setting=1; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5; |
SetActiveParamSet(setting); // aktiven Datensatz merken |
} |
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) < 30 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70) |
{ |
WinkelOut.CalcState = 1; |
CalibrationDone = 0; |
beeptime = 1000; |
} |
else |
{ |
ParamSet_ReadFromEEProm(GetActiveParamSet()); |
LipoDetection(0); |
LIBFC_ReceiverInit(EE_Parameter.Receiver); |
if((Parameter_GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
{ |
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
} |
// ServoActive = 0; |
SetNeutral(0); |
CalibrationDone = 1; |
ServoActive = 1; |
DDRD |=0x80; // enable J7 -> Servo signal |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
SpeakHoTT = SPEAK_CALIBRATE; |
#endif |
Piep(GetActiveParamSet(),120); |
} |
} |
} |
else |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) // ACC Neutralwerte speichern |
{ |
if(++delay_neutral > 200) // nicht sofort |
{ |
MotorenEin = 0; |
delay_neutral = 0; |
modell_fliegt = 0; |
SetNeutral(1); |
CalibrationDone = 1; |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
SpeakHoTT = SPEAK_CALIBRATE; |
#endif |
Piep(GetActiveParamSet(),120); |
} |
} |
else delay_neutral = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gas ist unten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] < 35-120) |
{ |
if(PPM_diff[EE_Parameter.MotorSafetySwitch & 127] > 5) move_safety_switch = 100; |
else |
if(PPM_diff[EE_Parameter.MotorSafetySwitch & 127] < -5) move_safety_switch = -100; |
// Motoren Starten |
if(!MotorenEin) |
{ |
if((((PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) && ((!(EE_Parameter.GlobalConfig3 & CFG3_MOTOR_SWITCH_MODE) && PPM_in[EE_Parameter.MotorSafetySwitch] < -75) || EE_Parameter.MotorSafetySwitch == 0))) |
|| (((EE_Parameter.GlobalConfig3 & CFG3_MOTOR_SWITCH_MODE) && PPM_in[EE_Parameter.MotorSafetySwitch] > -10 && move_safety_switch == 100))) |
{ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Einschalten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(CalibrationDone) FC_StatusFlags |= FC_STATUS_START; |
if(++delay_einschalten > 253) |
{ |
delay_einschalten = 0; |
if(!VersionInfo.HardwareError[0] && CalibrationDone && !NC_ErrorCode) |
{ |
modell_fliegt = 1; |
MotorenEin = 1; |
sollGier = 0; |
Mess_Integral_Gier = 0; |
Mess_Integral_Gier2 = 0; |
Mess_IntegralNick = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccNick; |
Mess_IntegralRoll = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccRoll; |
Mess_IntegralNick2 = IntegralNick; |
Mess_IntegralRoll2 = IntegralRoll; |
SummeNick = 0; |
SummeRoll = 0; |
// ControlHeading = (((int) EE_Parameter.OrientationAngle * 15 + KompassValue) % 360) / 2; |
NeueKompassRichtungMerken = 100; // 2 sekunden |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
SpeakHoTT = SPEAK_STARTING; |
#endif |
} |
else |
{ |
beeptime = 1500; // indicate missing calibration |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
if(!CalibrationDone) SpeakHoTT = SPEAK_ERR_CALIBARTION; |
#endif |
} |
} |
} |
else delay_einschalten = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Auschalten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
else // only if motors are running |
{ |
// if((PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) && (PPM_in[EE_Parameter.MotorSafetySwitch] < -75 || EE_Parameter.MotorSafetySwitch == 0)) |
if((((PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) && ((!(EE_Parameter.GlobalConfig3 & CFG3_MOTOR_SWITCH_MODE) && PPM_in[EE_Parameter.MotorSafetySwitch] < -75) || EE_Parameter.MotorSafetySwitch == 0))) |
|| (((EE_Parameter.GlobalConfig3 & CFG3_MOTOR_SWITCH_MODE) && PPM_in[EE_Parameter.MotorSafetySwitch] < -50 && move_safety_switch == -100))) |
{ |
if(++delay_ausschalten > 250) // nicht sofort |
{ |
MotorenEin = 0; |
delay_ausschalten = 0; |
modell_fliegt = 0; |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
SpeakHoTT = SPEAK_MK_OFF; |
#endif |
} |
} |
else delay_ausschalten = 0; |
} |
if(GasIsZeroCnt < 1000) GasIsZeroCnt++; |
} |
else // gas not at minimum |
{ |
move_safety_switch = 0; |
GasIsZeroCnt = 0; |
} |
} |
else // Empfang zwischen 100 und 140 -> schlecht |
{ |
if(GasIsZeroCnt >= 750) // gas-stick was down for 1.5 seconds before RC-Lost |
{ |
if((GPSInfo.HomeDistance < 40 * 10) && (HoehenWert < 15 * 100)) // and we are at the starting point -> maybe landed? |
{ |
GasIsZeroCnt = 30000; |
if(modell_fliegt > 1001) modell_fliegt = 1001; |
} |
} |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// neue Werte von der Funke |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!NewPpmData-- || (FC_StatusFlags & FC_STATUS_EMERGENCY_LANDING)) |
{ |
static int stick_nick,stick_roll; |
unsigned char stick_p; |
ParameterZuordnung(); |
stick_p = EE_Parameter.Stick_P; |
stick_nick = (stick_nick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * stick_p) / 4; |
stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; |
stick_roll = (stick_roll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * stick_p) / 4; |
stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// CareFree und freie Wahl der vorderen Richtung |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(CareFree) |
{ |
signed int nick, roll; |
nick = stick_nick / 4; |
roll = stick_roll / 4; |
StickNick = ((FromNC_Rotate_C * nick) + (FromNC_Rotate_S * roll)) / (32 / 4); |
StickRoll = ((FromNC_Rotate_C * roll) - (FromNC_Rotate_S * nick)) / (32 / 4); |
} |
else |
{ |
FromNC_Rotate_C = sintab[EE_Parameter.OrientationAngle + 6]; |
FromNC_Rotate_S = sintab[EE_Parameter.OrientationAngle]; |
StickNick = ((FromNC_Rotate_C * stick_nick) + (FromNC_Rotate_S * stick_roll)) / 8; |
StickRoll = ((FromNC_Rotate_C * stick_roll) - (FromNC_Rotate_S * stick_nick)) / 8; |
} |
StickGier = -PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; |
if(StickGier > 4) StickGier -= 4; else |
if(StickGier < -4) StickGier += 4; else StickGier = 0; |
if(GPS_Aid_StickMultiplikator) // in that case the GPS controls stronger |
{ |
StickNick = (GPS_Aid_StickMultiplikator * (StickNick / 8)) / 16; |
StickRoll = (GPS_Aid_StickMultiplikator * (StickRoll / 8)) / 16; |
} |
StickNick -= GPS_Nick; |
StickRoll -= GPS_Roll; |
StickGas = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 127; |
GyroFaktor = (Parameter_Gyro_P + 10.0); |
IntegralFaktor = Parameter_Gyro_I; |
GyroFaktorGier = (Parameter_Gyro_Gier_P + 10.0); |
IntegralFaktorGier = Parameter_Gyro_Gier_I; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Analoge Steuerung per Seriell |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(ExternControl.Config & 0x01 && Parameter_ExternalControl > 128) |
{ |
StickNick += (int) ExternControl.Nick * (int) EE_Parameter.Stick_P; |
StickRoll += (int) ExternControl.Roll * (int) EE_Parameter.Stick_P; |
StickGier += ExternControl.Gier; |
ExternHoehenValue = (int) ExternControl.Hight * (int)EE_Parameter.Hoehe_Verstaerkung; |
if(ExternControl.Gas < StickGas) StickGas = ExternControl.Gas; |
} |
if(StickGas < 0) StickGas = 0; |
if(Parameter_GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0; |
if(abs(StickNick/STICK_GAIN) > MaxStickNick) |
{ |
MaxStickNick = abs(StickNick)/STICK_GAIN; |
if(MaxStickNick > 100) MaxStickNick = 100; |
} |
else MaxStickNick--; |
if(abs(StickRoll/STICK_GAIN) > MaxStickRoll) |
{ |
MaxStickRoll = abs(StickRoll)/STICK_GAIN; |
if(MaxStickRoll > 100) MaxStickRoll = 100; |
} |
else MaxStickRoll--; |
if(FC_StatusFlags & FC_STATUS_EMERGENCY_LANDING) {MaxStickNick = 0; MaxStickRoll = 0;} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Looping? |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_LINKS) Looping_Links = 1; |
else |
{ |
{ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Links = 0; |
} |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < -EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_RECHTS) Looping_Rechts = 1; |
else |
{ |
if(Looping_Rechts) // Hysterese |
{ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Rechts = 0; |
} |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_OBEN) Looping_Oben = 1; |
else |
{ |
if(Looping_Oben) // Hysterese |
{ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Oben = 0; |
} |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_UNTEN) Looping_Unten = 1; |
else |
{ |
if(Looping_Unten) // Hysterese |
{ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Unten = 0; |
} |
} |
if(Looping_Links || Looping_Rechts) Looping_Roll = 1; else Looping_Roll = 0; |
if(Looping_Oben || Looping_Unten) { Looping_Nick = 1; Looping_Roll = 0; Looping_Links = 0; Looping_Rechts = 0;} else Looping_Nick = 0; |
} // Ende neue Funken-Werte |
if(Looping_Roll || Looping_Nick) |
{ |
if(GasMischanteil > EE_Parameter.LoopGasLimit) GasMischanteil = EE_Parameter.LoopGasLimit; |
TrichterFlug = 1; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Bei Empfangsausfall im Flug |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(FC_StatusFlags2 & FC_STATUS2_RC_FAILSAVE_ACTIVE) |
{ |
StickNick = -GPS_Nick; |
StickRoll = -GPS_Roll; |
StickGas = StickGasHover; |
Parameter_GlobalConfig &= ~(CFG_HEADING_HOLD | CFG_DREHRATEN_BEGRENZER); |
Parameter_GlobalConfig |= CFG_HOEHENREGELUNG | CFG_ACHSENKOPPLUNG_AKTIV | CFG_KOMPASS_AKTIV | CFG_GPS_AKTIV | CFG_HOEHEN_SCHALTER | CFG_GPS_AKTIV; |
Parameter_ExtraConfig &= ~(CFG2_HEIGHT_LIMIT | CFG_LEARNABLE_CAREFREE | CFG2_VARIO_BEEP); |
Parameter_HoehenSchalter = 200; // switch on |
} |
else |
if(FC_StatusFlags & FC_STATUS_EMERGENCY_LANDING) |
{ |
StickGier = 0; |
StickNick = 0; |
StickRoll = 0; |
GyroFaktor = 90; |
IntegralFaktor = 120; |
GyroFaktorGier = 90; |
IntegralFaktorGier = 120; |
Looping_Roll = 0; |
Looping_Nick = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Integrale auf ACC-Signal abgleichen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define ABGLEICH_ANZAHL 256L |
MittelIntegralNick += IntegralNick; // Für die Mittelwertbildung aufsummieren |
MittelIntegralRoll += IntegralRoll; |
MittelIntegralNick2 += IntegralNick2; |
MittelIntegralRoll2 += IntegralRoll2; |
if(Looping_Nick || Looping_Roll) |
{ |
IntegralAccNick = 0; |
IntegralAccRoll = 0; |
MittelIntegralNick = 0; |
MittelIntegralRoll = 0; |
MittelIntegralNick2 = 0; |
MittelIntegralRoll2 = 0; |
Mess_IntegralNick2 = Mess_IntegralNick; |
Mess_IntegralRoll2 = Mess_IntegralRoll; |
ZaehlMessungen = 0; |
LageKorrekturNick = 0; |
LageKorrekturRoll = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!Looping_Nick && !Looping_Roll && (Aktuell_az > 512 || MotorenEin)) |
{ |
long tmp_long, tmp_long2; |
if(FromNaviCtrl_Value.Kalman_K > 0 /*&& !TrichterFlug*/) |
{ |
tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)(Mittelwert_AccNick - FromNaviCtrl.AccErrorN)); |
tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)(Mittelwert_AccRoll - FromNaviCtrl.AccErrorR)); |
tmp_long = (tmp_long * FromNaviCtrl_Value.Kalman_K) / (32 * 16); |
tmp_long2 = (tmp_long2 * FromNaviCtrl_Value.Kalman_K) / (32 * 16); |
if((MaxStickNick > 64) || (MaxStickRoll > 64)) |
{ |
tmp_long /= 2; |
tmp_long2 /= 2; |
} |
/* if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25) |
{ |
tmp_long /= 3; |
tmp_long2 /= 3; |
} |
*/ if(tmp_long > (long) FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long = (long) FromNaviCtrl_Value.Kalman_MaxFusion; |
if(tmp_long < (long)-FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long = (long)-FromNaviCtrl_Value.Kalman_MaxFusion; |
if(tmp_long2 > (long) FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long2 = (long) FromNaviCtrl_Value.Kalman_MaxFusion; |
if(tmp_long2 < (long)-FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long2 = (long)-FromNaviCtrl_Value.Kalman_MaxFusion; |
} |
else |
{ |
tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick); |
tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll); |
tmp_long /= 16; |
tmp_long2 /= 16; |
if((MaxStickNick > 64) || (MaxStickRoll > 64)) |
{ |
tmp_long /= 3; |
tmp_long2 /= 3; |
} |
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25) |
{ |
tmp_long /= 3; |
tmp_long2 /= 3; |
} |
KompassFusion = 25; |
#define AUSGLEICH 32 |
if(tmp_long > AUSGLEICH) tmp_long = AUSGLEICH; |
if(tmp_long < -AUSGLEICH) tmp_long =-AUSGLEICH; |
if(tmp_long2 > AUSGLEICH) tmp_long2 = AUSGLEICH; |
if(tmp_long2 <-AUSGLEICH) tmp_long2 =-AUSGLEICH; |
} |
Mess_IntegralNick -= tmp_long; |
Mess_IntegralRoll -= tmp_long2; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(ZaehlMessungen >= ABGLEICH_ANZAHL) |
{ |
static int cnt = 0; |
static char last_n_p,last_n_n,last_r_p,last_r_n; |
static long MittelIntegralNick_Alt,MittelIntegralRoll_Alt; |
if(!Looping_Nick && !Looping_Roll && !TrichterFlug && EE_Parameter.Driftkomp) |
{ |
MittelIntegralNick /= ABGLEICH_ANZAHL; |
MittelIntegralRoll /= ABGLEICH_ANZAHL; |
IntegralAccNick = (EE_Parameter.GyroAccFaktor * IntegralAccNick) / ABGLEICH_ANZAHL; |
IntegralAccRoll = (EE_Parameter.GyroAccFaktor * IntegralAccRoll) / ABGLEICH_ANZAHL; |
IntegralAccZ = IntegralAccZ / ABGLEICH_ANZAHL; |
#define MAX_I 0 |
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++ |
IntegralFehlerNick = (long)(MittelIntegralNick - (long)IntegralAccNick); |
ausgleichNick = IntegralFehlerNick / EE_Parameter.GyroAccAbgleich; |
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++ |
IntegralFehlerRoll = (long)(MittelIntegralRoll - (long)IntegralAccRoll); |
ausgleichRoll = IntegralFehlerRoll / EE_Parameter.GyroAccAbgleich; |
LageKorrekturNick = ausgleichNick / ABGLEICH_ANZAHL; |
LageKorrekturRoll = ausgleichRoll / ABGLEICH_ANZAHL; |
if(((MaxStickNick > 64) || (MaxStickRoll > 64) || (abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25)) && (FromNaviCtrl_Value.Kalman_K == -1)) |
{ |
LageKorrekturNick /= 2; |
LageKorrekturRoll /= 2; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gyro-Drift ermitteln |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
MittelIntegralNick2 /= ABGLEICH_ANZAHL; |
MittelIntegralRoll2 /= ABGLEICH_ANZAHL; |
tmp_long = IntegralNick2 - IntegralNick; |
tmp_long2 = IntegralRoll2 - IntegralRoll; |
IntegralFehlerNick = tmp_long; |
IntegralFehlerRoll = tmp_long2; |
Mess_IntegralNick2 -= IntegralFehlerNick; |
Mess_IntegralRoll2 -= IntegralFehlerRoll; |
if(EE_Parameter.Driftkomp) |
{ |
if(GierGyroFehler > ABGLEICH_ANZAHL/2) { AdNeutralGier++; } |
if(GierGyroFehler <-ABGLEICH_ANZAHL/2) { AdNeutralGier--; } |
} |
GierGyroFehler = 0; |
#define FEHLER_LIMIT (ABGLEICH_ANZAHL / 2) |
#define FEHLER_LIMIT1 (ABGLEICH_ANZAHL * 2) //4 |
#define FEHLER_LIMIT2 (ABGLEICH_ANZAHL * 16) //16 |
#define BEWEGUNGS_LIMIT 20000 |
// Nick +++++++++++++++++++++++++++++++++++++++++++++++++ |
cnt = 1;// + labs(IntegralFehlerNick) / 4096; |
if(labs(IntegralFehlerNick) > FEHLER_LIMIT1) cnt = 4; |
if(labs(MittelIntegralNick_Alt - MittelIntegralNick) < BEWEGUNGS_LIMIT || (FromNaviCtrl_Value.Kalman_MaxDrift > 3*8)) |
{ |
if(IntegralFehlerNick > FEHLER_LIMIT2) |
{ |
if(last_n_p) |
{ |
cnt += labs(IntegralFehlerNick) / (FEHLER_LIMIT2 / 8); |
ausgleichNick = IntegralFehlerNick / 8; |
if(ausgleichNick > 5000) ausgleichNick = 5000; |
LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL; |
} |
else last_n_p = 1; |
} else last_n_p = 0; |
if(IntegralFehlerNick < -FEHLER_LIMIT2) |
{ |
if(last_n_n) |
{ |
cnt += labs(IntegralFehlerNick) / (FEHLER_LIMIT2 / 8); |
ausgleichNick = IntegralFehlerNick / 8; |
if(ausgleichNick < -5000) ausgleichNick = -5000; |
LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL; |
} |
else last_n_n = 1; |
} else last_n_n = 0; |
} |
else |
{ |
cnt = 0; |
KompassSignalSchlecht = 100; |
} |
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp; |
if(FromNaviCtrl_Value.Kalman_MaxDrift) if(cnt > FromNaviCtrl_Value.Kalman_MaxDrift) cnt = FromNaviCtrl_Value.Kalman_MaxDrift; |
if(IntegralFehlerNick > FEHLER_LIMIT) AdNeutralNick += cnt; |
if(IntegralFehlerNick < -FEHLER_LIMIT) AdNeutralNick -= cnt; |
// Roll +++++++++++++++++++++++++++++++++++++++++++++++++ |
cnt = 1;// + labs(IntegralFehlerRoll) / 4096; |
if(labs(IntegralFehlerRoll) > FEHLER_LIMIT1) cnt = 4; |
if(labs(MittelIntegralRoll_Alt - MittelIntegralRoll) < BEWEGUNGS_LIMIT || (FromNaviCtrl_Value.Kalman_MaxDrift > 3*8)) |
{ |
if(IntegralFehlerRoll > FEHLER_LIMIT2) |
{ |
if(last_r_p) |
{ |
cnt += labs(IntegralFehlerRoll) / (FEHLER_LIMIT2 / 8); |
ausgleichRoll = IntegralFehlerRoll / 8; |
if(ausgleichRoll > 5000) ausgleichRoll = 5000; |
LageKorrekturRoll += ausgleichRoll / ABGLEICH_ANZAHL; |
} |
else last_r_p = 1; |
} else last_r_p = 0; |
if(IntegralFehlerRoll < -FEHLER_LIMIT2) |
{ |
if(last_r_n) |
{ |
cnt += labs(IntegralFehlerRoll) / (FEHLER_LIMIT2 / 8); |
ausgleichRoll = IntegralFehlerRoll / 8; |
if(ausgleichRoll < -5000) ausgleichRoll = -5000; |
LageKorrekturRoll += ausgleichRoll / ABGLEICH_ANZAHL; |
} |
else last_r_n = 1; |
} else last_r_n = 0; |
} else |
{ |
cnt = 0; |
KompassSignalSchlecht = 100; |
} |
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp; |
if(FromNaviCtrl_Value.Kalman_MaxDrift) if(cnt > FromNaviCtrl_Value.Kalman_MaxDrift) cnt = FromNaviCtrl_Value.Kalman_MaxDrift; |
if(IntegralFehlerRoll > FEHLER_LIMIT) AdNeutralRoll += cnt; |
if(IntegralFehlerRoll < -FEHLER_LIMIT) AdNeutralRoll -= cnt; |
} |
else |
{ |
LageKorrekturRoll = 0; |
LageKorrekturNick = 0; |
TrichterFlug = 0; |
} |
if(!IntegralFaktor) { LageKorrekturRoll = 0; LageKorrekturNick = 0;} // z.B. bei HH |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++ |
MittelIntegralNick_Alt = MittelIntegralNick; |
MittelIntegralRoll_Alt = MittelIntegralRoll; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++ |
IntegralAccNick = 0; |
IntegralAccRoll = 0; |
IntegralAccZ = 0; |
MittelIntegralNick = 0; |
MittelIntegralRoll = 0; |
MittelIntegralNick2 = 0; |
MittelIntegralRoll2 = 0; |
ZaehlMessungen = 0; |
} // ZaehlMessungen >= ABGLEICH_ANZAHL |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gieren |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(abs(StickGier) > 3) // war 15 |
{ |
// KompassSignalSchlecht = 1000; |
if(!(Parameter_GlobalConfig & CFG_KOMPASS_FIX)) |
{ |
NeueKompassRichtungMerken = 50; // eine Sekunde zum Einloggen |
}; |
} |
tmp_int = (long) EE_Parameter.StickGier_P * ((long)StickGier * abs(StickGier)) / 512L; // expo y = ax + bx² |
tmp_int += (EE_Parameter.StickGier_P * StickGier) / 4; |
tmp_int += CompassGierSetpoint; |
sollGier = tmp_int; |
Mess_Integral_Gier -= tmp_int; |
if(Mess_Integral_Gier > 50000) Mess_Integral_Gier = 50000; // begrenzen |
if(Mess_Integral_Gier <-50000) Mess_Integral_Gier =-50000; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Kompass |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(KompassValue >= 0 && (Parameter_GlobalConfig & CFG_KOMPASS_AKTIV)) |
{ |
if(CalculateCompassTimer-- == 1) |
{ |
int w,v,r,fehler,korrektur; // wird von der SPI-Routine auf 1 gesetzt |
CalculateCompassTimer = 13; // falls keine Navi-Daten |
// max. Korrekturwert schätzen |
w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln |
v = abs(IntegralRoll /512); |
if(v > w) w = v; // grösste Neigung ermitteln |
// korrektur = w / 4 + 1; |
korrektur = w / 8 + 2; |
ErsatzKompassInGrad = ErsatzKompass/GIER_GRAD_FAKTOR; |
// Kompassfehlerwert bestimmen |
fehler = ((540 + KompassValue - ErsatzKompassInGrad) % 360) - 180; |
// GIER_GRAD_FAKTOR ist ca. 1200 |
// Kompasswert einloggen |
if(KompassSignalSchlecht) KompassSignalSchlecht--; |
else |
if(w < 25) |
{ |
GierGyroFehler += fehler; |
if(NeueKompassRichtungMerken) |
{ |
if(--NeueKompassRichtungMerken == 0) |
{ |
KompassSollWert = ErsatzKompassInGrad; |
} |
} |
} |
// Kompass fusionieren |
if(!KompassSignalSchlecht) ErsatzKompass += (fehler * KompassFusion) / korrektur; |
// MK Gieren |
if(!NeueKompassRichtungMerken) |
{ |
r = ((540 + (KompassSollWert - ErsatzKompassInGrad)) % 360) - 180; |
v = r * (Parameter_KompassWirkung/2); // nach Kompass ausrichten |
CompassGierSetpoint = v / 16; |
} |
else CompassGierSetpoint = 0; |
} // CalculateCompassTimer |
} |
else CompassGierSetpoint = 0; |
//DebugOut.Analog[16] = KompassFusion; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Drehgeschwindigkeit und -winkel zu einem Istwert zusammenfassen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(TrichterFlug) { SummeRoll = 0; SummeNick = 0;}; |
if(!Looping_Nick) IntegralNickMalFaktor = (IntegralNick * IntegralFaktor) / (44000 / STICK_GAIN); else IntegralNickMalFaktor = 0; |
if(!Looping_Roll) IntegralRollMalFaktor = (IntegralRoll * IntegralFaktor) / (44000 / STICK_GAIN); else IntegralRollMalFaktor = 0; |
#define TRIM_MAX 200 |
if(TrimNick > TRIM_MAX) TrimNick = TRIM_MAX; else if(TrimNick <-TRIM_MAX) TrimNick =-TRIM_MAX; |
if(TrimRoll > TRIM_MAX) TrimRoll = TRIM_MAX; else if(TrimRoll <-TRIM_MAX) TrimRoll =-TRIM_MAX; |
MesswertNick = IntegralNickMalFaktor + (long)((long)MesswertNick * GyroFaktor + (long)TrimNick * 128L) / (256L / STICK_GAIN); |
MesswertRoll = IntegralRollMalFaktor + (long)((long)MesswertRoll * GyroFaktor + (long)TrimRoll * 128L) / (256L / STICK_GAIN); |
MesswertGier = (long)(MesswertGier * 2 * (long)GyroFaktorGier) / (256L / STICK_GAIN) + (long)(Integral_Gier * IntegralFaktorGier) / (2 * (44000 / STICK_GAIN)); |
// Maximalwerte abfangen |
#define MAX_SENSOR (4096) |
if(MesswertNick > MAX_SENSOR) MesswertNick = MAX_SENSOR; |
if(MesswertNick < -MAX_SENSOR) MesswertNick = -MAX_SENSOR; |
if(MesswertRoll > MAX_SENSOR) MesswertRoll = MAX_SENSOR; |
if(MesswertRoll < -MAX_SENSOR) MesswertRoll = -MAX_SENSOR; |
if(MesswertGier > MAX_SENSOR) MesswertGier = MAX_SENSOR; |
if(MesswertGier < -MAX_SENSOR) MesswertGier = -MAX_SENSOR; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Höhenregelung |
// Die Höhenregelung schwächt lediglich das Gas ab, erhöht es allerdings nicht |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(UBat > BattLowVoltageWarning) GasMischanteil = ((unsigned int)GasMischanteil * BattLowVoltageWarning) / UBat; // Gas auf das aktuelle Spannungvieveau beziehen |
GasMischanteil *= STICK_GAIN; |
// if height control is activated |
if((Parameter_GlobalConfig & CFG_HOEHENREGELUNG) && !(Looping_Roll || Looping_Nick)) // Höhenregelung |
{ |
#define HOVER_GAS_AVERAGE 16384L // 16384 * 2ms = 32s averaging |
#define HC_GAS_AVERAGE 4 // 4 * 2ms= 8ms averaging |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
#define OPA_OFFSET_STEP 15 |
#else |
#define OPA_OFFSET_STEP 10 |
#endif |
int HCGas, HeightDeviation = 0,GasReduction = 0; |
static int HeightTrimming = 0; // rate for change of height setpoint |
static int FilterHCGas = 0; |
static unsigned long HoverGasFilter = 0; |
static unsigned char delay = 100, BaroAtUpperLimit = 0, BaroAtLowerLimit = 0; |
int CosAttitude; // for projection of hoover gas |
// get the current hooverpoint |
DebugOut.Analog[21] = HoverGas; |
// Expand the measurement |
// measurement of air pressure close to upper limit and no overflow in correction of the new OCR0A value occurs |
if(!BaroExpandActive) |
{ |
if(MessLuftdruck > 920) |
{ // increase offset |
if(OCR0A < (255 - OPA_OFFSET_STEP)) |
{ |
ExpandBaro -= 1; |
OCR0A = DruckOffsetSetting - OPA_OFFSET_STEP * ExpandBaro; // increase offset to shift ADC down |
beeptime = 300; |
BaroExpandActive = 350; |
} |
else |
{ |
BaroAtLowerLimit = 1; |
} |
} |
// measurement of air pressure close to lower limit and |
else |
if(MessLuftdruck < 100) |
{ // decrease offset |
if(OCR0A > OPA_OFFSET_STEP) |
{ |
ExpandBaro += 1; |
OCR0A = DruckOffsetSetting - OPA_OFFSET_STEP * ExpandBaro; // decrease offset to shift ADC up |
beeptime = 300; |
BaroExpandActive = 350; |
} |
else |
{ |
BaroAtUpperLimit = 1; |
} |
} |
else |
{ |
BaroAtUpperLimit = 0; |
BaroAtLowerLimit = 0; |
} |
} |
else // delay, because of expanding the Baro-Range |
{ |
// now clear the D-values |
SummenHoehe = HoehenWert * SM_FILTER; |
VarioMeter = 0; |
BaroExpandActive--; |
} |
// if height control is activated by an rc channel |
if(Parameter_GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert |
{ // check if parameter is less than activation threshold |
if(Parameter_HoehenSchalter < 50) // for 3 or 2-state switch height control is disabled in lowest position |
{ //height control not active |
if(!delay--) |
{ |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
if(!SpeakHoTT && HoehenReglerAktiv) SpeakHoTT = SPEAK_ALTITUDE_OFF; |
#endif |
HoehenReglerAktiv = 0; // disable height control |
SollHoehe = HoehenWert; // update SetPoint with current reading |
delay = 1; |
} |
} |
else |
if(Parameter_HoehenSchalter > 70) |
{ //height control is activated |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
if(!SpeakHoTT && !HoehenReglerAktiv) SpeakHoTT = SPEAK_ALTITUDE_ON; |
#endif |
delay = 200; |
HoehenReglerAktiv = 1; // enable height control |
} |
} |
else // no switchable height control |
{ |
SollHoehe = ((int16_t) ExternHoehenValue + (int16_t) Parameter_HoehenSchalter) * (int)EE_Parameter.Hoehe_Verstaerkung; |
HoehenReglerAktiv = 1; |
} |
// calculate cos of nick and roll angle used for projection of the vertical hoover gas |
tmp_int = (int)(IntegralNick/GIER_GRAD_FAKTOR); // nick angle in deg |
tmp_int2 = (int)(IntegralRoll/GIER_GRAD_FAKTOR); // roll angle in deg |
CosAttitude = (int16_t)ihypot(tmp_int, tmp_int2); // phytagoras gives effective attitude angle in deg |
LIMIT_MAX(CosAttitude, 60); // limit effective attitude angle |
CosAttitude = c_cos_8192(CosAttitude); // cos of actual attitude |
VarioCharacter = ' '; |
AltitudeSetpointTrimming = 0; |
if(HoehenReglerAktiv && !(FC_StatusFlags & FC_STATUS_EMERGENCY_LANDING)) |
{ |
#define HEIGHT_CONTROL_STICKTHRESHOLD 15 |
// Holger original version |
// start of height control algorithm |
// the height control is only an attenuation of the actual gas stick. |
// I.e. it will work only if the gas stick is higher than the hover gas |
// and the hover height will be allways larger than height setpoint. |
FC_StatusFlags2 |= FC_STATUS2_ALTITUDE_CONTROL; |
if((Parameter_ExtraConfig & CFG2_HEIGHT_LIMIT) || !(Parameter_GlobalConfig & CFG_HOEHEN_SCHALTER)) // Regler wird über Schalter gesteuert) |
{ // old version |
HCGas = GasMischanteil; // take current stick gas as neutral point for the height control |
HeightTrimming = 0; |
AltitudeSetpointTrimming = 0; |
// set both flags to indicate no vario mode |
FC_StatusFlags |= (FC_STATUS_VARIO_TRIM_UP|FC_STATUS_VARIO_TRIM_DOWN); |
} |
else |
{ |
// alternative height control |
// PD-Control with respect to hoover point |
// the thrust loss out of horizontal attitude is compensated |
// the setpoint will be fine adjusted with the gas stick position |
if(FC_StatusFlags & FC_STATUS_FLY) // trim setpoint only when flying |
{ // gas stick is above hoover point |
if(StickGas > (StickGasHover + HEIGHT_CONTROL_STICKTHRESHOLD) && !BaroAtUpperLimit) |
{ |
if(FC_StatusFlags & FC_STATUS_VARIO_TRIM_DOWN) |
{ |
FC_StatusFlags &= ~FC_STATUS_VARIO_TRIM_DOWN; |
SollHoehe = HoehenWert; // update setpoint to current heigth |
} |
FC_StatusFlags |= FC_STATUS_VARIO_TRIM_UP; |
// Limit the maximum Altitude |
if(Parameter_MaximumAltitude && (SollHoehe/100 > Parameter_MaximumAltitude)) AltitudeSetpointTrimming = 0; |
else |
{ |
// SollHoehe = (long) Parameter_MaximumAltitude * 100L; |
// HeightTrimming += abs(StickGas - (StickGasHover - HEIGHT_CONTROL_STICKTHRESHOLD)); |
AltitudeSetpointTrimming = abs(StickGas - (StickGasHover + HEIGHT_CONTROL_STICKTHRESHOLD)); |
VarioCharacter = '+'; |
} |
WaypointTrimming = 0; |
} // gas stick is below hoover point |
else if(StickGas < (StickGasHover - HEIGHT_CONTROL_STICKTHRESHOLD) && !BaroAtLowerLimit ) |
{ |
if(FC_StatusFlags & FC_STATUS_VARIO_TRIM_UP) |
{ |
FC_StatusFlags &= ~FC_STATUS_VARIO_TRIM_UP; |
SollHoehe = HoehenWert; // update setpoint to current heigth |
} |
FC_StatusFlags |= FC_STATUS_VARIO_TRIM_DOWN; |
AltitudeSetpointTrimming = -abs(StickGas - (StickGasHover - HEIGHT_CONTROL_STICKTHRESHOLD)); |
// HeightTrimming -= abs(StickGas - (StickGasHover - HEIGHT_CONTROL_STICKTHRESHOLD)); |
VarioCharacter = '-'; |
WaypointTrimming = 0; |
} |
else // Gas Stick in Hover Range |
{ |
VarioCharacter = '='; |
if(FromNC_AltitudeSpeed && FromNC_AltitudeSetpoint > SollHoehe) // von NC gesteuert -> Steigen |
{ |
FC_StatusFlags |= FC_STATUS_VARIO_TRIM_UP; |
AltitudeSetpointTrimming = FromNC_AltitudeSpeed; |
//HeightTrimming += FromNC_AltitudeSpeed; |
WaypointTrimming = 10; |
VarioCharacter = '^'; |
if(FC_StatusFlags & FC_STATUS_VARIO_TRIM_DOWN) // changed from sinking to rising |
{ |
FC_StatusFlags &= ~FC_STATUS_VARIO_TRIM_DOWN; |
SollHoehe = HoehenWert; // update setpoint to current heigth |
} |
} |
else |
if(FromNC_AltitudeSpeed && FromNC_AltitudeSetpoint < SollHoehe) // von NC gesteuert -> sinken |
{ |
FC_StatusFlags |= FC_STATUS_VARIO_TRIM_DOWN; |
AltitudeSetpointTrimming = -FromNC_AltitudeSpeed; |
//HeightTrimming -= FromNC_AltitudeSpeed; |
WaypointTrimming = -10; |
VarioCharacter = 'v'; |
if(FC_StatusFlags & FC_STATUS_VARIO_TRIM_UP) // changed from rising to sinking |
{ |
FC_StatusFlags &= ~FC_STATUS_VARIO_TRIM_UP; |
SollHoehe = HoehenWert; // update setpoint to current heigth |
} |
} |
else |
if(FC_StatusFlags & (FC_STATUS_VARIO_TRIM_UP|FC_STATUS_VARIO_TRIM_DOWN)) |
{ |
if(!WaypointTrimming) LIMIT_MIN_MAX(SollHoehe, (HoehenWert-128), (HoehenWert+128)) // max. 1m Unterschied |
else WaypointTrimming = 0; |
FC_StatusFlags &= ~(FC_STATUS_VARIO_TRIM_UP|FC_STATUS_VARIO_TRIM_DOWN); |
HeightTrimming = 0; |
if(Parameter_ExtraConfig & CFG2_VARIO_BEEP) beeptime = 500; |
if(!StartTrigger && HoehenWert > 50) |
{ |
StartTrigger = 1; |
} |
} |
} |
// Trim height set point |
HeightTrimming += AltitudeSetpointTrimming; |
if(abs(HeightTrimming) > 500) // bei Waypoint-Flug ist das ca. die 500Hz |
{ |
if(WaypointTrimming) |
{ |
if(abs(FromNC_AltitudeSetpoint - SollHoehe) < 10) SollHoehe = FromNC_AltitudeSetpoint; |
else SollHoehe += WaypointTrimming; |
} |
else |
{ |
if(HeightTrimming > 0) SollHoehe += EE_Parameter.Hoehe_Verstaerkung / 3; |
else SollHoehe -= EE_Parameter.Hoehe_Verstaerkung / 3; |
} |
HeightTrimming = 0; |
LIMIT_MIN_MAX(SollHoehe, (HoehenWert-1024), (HoehenWert+1024)); // max. 10m Unterschied |
if(Parameter_ExtraConfig & CFG2_VARIO_BEEP) beeptime = 100; |
//update hoover gas stick value when setpoint is shifted |
if(!EE_Parameter.Hoehe_StickNeutralPoint && FromNC_AltitudeSpeed == 0) |
{ |
StickGasHover = HoverGas/STICK_GAIN; //rescale back to stick value |
StickGasHover = (StickGasHover * UBat) / BattLowVoltageWarning; |
if(StickGasHover < 70) StickGasHover = 70; |
else if(StickGasHover > 150) StickGasHover = 150; |
} |
} |
if(BaroExpandActive) SollHoehe = HoehenWert; // update setpoint to current altitude if Expanding is active |
} //if FCFlags & MKFCFLAG_FLY |
else |
{ |
SollHoehe = HoehenWert - 400; |
if(EE_Parameter.Hoehe_StickNeutralPoint) StickGasHover = EE_Parameter.Hoehe_StickNeutralPoint; |
else StickGasHover = 120; |
HoverGas = GasMischanteil; |
VarioCharacter = '.'; |
} |
HCGas = HoverGas; // take hover gas (neutral point) |
} |
if(HoehenWert > SollHoehe || !(Parameter_ExtraConfig & CFG2_HEIGHT_LIMIT)) |
{ |
// from this point the Heigth Control Algorithm is identical for both versions |
if(BaroExpandActive) // baro range expanding active |
{ |
HCGas = HoverGas; // hover while expanding baro adc range |
HeightDeviation = 0; |
} // EOF // baro range expanding active |
else // valid data from air pressure sensor |
{ |
// ------------------------- P-Part ---------------------------- |
tmp_long = (HoehenWert - SollHoehe); // positive when too high |
LIMIT_MIN_MAX(tmp_long, -32767L, 32767L); // avoid overflov when casting to int16_t |
HeightDeviation = (int)(tmp_long); // positive when too high |
tmp_long = (tmp_long * (long)Parameter_Hoehe_P) / 32L; // p-part |
LIMIT_MIN_MAX(tmp_long, -127 * STICK_GAIN, 256 * STICK_GAIN); // more than the full range makes no sense |
GasReduction = tmp_long; |
// ------------------------- D-Part 1: Vario Meter ---------------------------- |
tmp_int = VarioMeter / 8; |
LIMIT_MIN_MAX(tmp_int, -127, 128); |
tmp_int = (tmp_int * (long)Parameter_Luftdruck_D) / 4L; // scale to d-gain parameter |
LIMIT_MIN_MAX(tmp_int,-64 * STICK_GAIN, 64 * STICK_GAIN); |
if(FC_StatusFlags & (FC_STATUS_VARIO_TRIM_UP|FC_STATUS_VARIO_TRIM_DOWN)) tmp_int /= 4; // reduce d-part while trimming setpoint |
else |
if(Parameter_ExtraConfig & CFG2_HEIGHT_LIMIT) tmp_int /= 8; // reduce d-part in "Deckel" mode |
GasReduction += tmp_int; |
} // EOF no baro range expanding |
// ------------------------ D-Part 2: ACC-Z Integral ------------------------ |
if(Parameter_Hoehe_ACC_Wirkung) |
{ |
tmp_long = ((Mess_Integral_Hoch / 128L) * (int32_t) Parameter_Hoehe_ACC_Wirkung) / (128L / STICK_GAIN); |
LIMIT_MIN_MAX(tmp_long, -32 * STICK_GAIN, 64 * STICK_GAIN); |
GasReduction += tmp_long; |
} |
// ------------------------ D-Part 3: GpsZ ---------------------------------- |
tmp_int = (Parameter_Hoehe_GPS_Z * (int)FromNaviCtrl_Value.GpsZ)/128L; |
LIMIT_MIN_MAX(tmp_int, -32 * STICK_GAIN, 64 * STICK_GAIN); |
GasReduction += tmp_int; |
GasReduction = (long)((long)GasReduction * HoverGas) / 512; // scale to the gas value |
// ------------------------ ---------------------------------- |
HCGas -= GasReduction; |
// limit deviation from hoover point within the target region |
if(!AltitudeSetpointTrimming && HoverGas > 0) // height setpoint is not changed and hoover gas not zero |
{ |
unsigned int tmp; |
tmp = abs(HeightDeviation); |
if(tmp <= 60) |
{ |
LIMIT_MIN_MAX(HCGas, HoverGasMin, HoverGasMax); // limit gas around the hoover point |
} |
else |
{ |
tmp = (tmp - 60) / 32; |
if(tmp > 15) tmp = 15; |
if(HeightDeviation > 0) |
{ |
tmp = (HoverGasMin * (16 - tmp)) / 16; |
LIMIT_MIN_MAX(HCGas, tmp, HoverGasMax); // limit gas around the hoover point |
} |
else |
{ |
tmp = (HoverGasMax * (tmp + 16)) / 16; |
LIMIT_MIN_MAX(HCGas, HoverGasMin, tmp); // limit gas around the hoover point |
} |
} |
} |
// strech control output by inverse attitude projection 1/cos |
// + 1/cos(angle) ++++++++++++++++++++++++++ |
tmp_long2 = (int32_t)HCGas; |
tmp_long2 *= 8192L; |
tmp_long2 /= CosAttitude; |
HCGas = (int16_t)tmp_long2; |
// update height control gas averaging |
FilterHCGas = (FilterHCGas * (HC_GAS_AVERAGE - 1) + HCGas) / HC_GAS_AVERAGE; |
// limit height control gas pd-control output |
LIMIT_MIN_MAX(FilterHCGas, EE_Parameter.Hoehe_MinGas * STICK_GAIN, (MAX_GAS - 20) * STICK_GAIN); |
// set GasMischanteil to HeightControlGasFilter |
if(Parameter_ExtraConfig & CFG2_HEIGHT_LIMIT) |
{ // old version |
LIMIT_MAX(FilterHCGas, GasMischanteil); // nicht mehr als Gas |
GasMischanteil = FilterHCGas; |
} |
else GasMischanteil = FilterHCGas + (GasMischanteil - HoverGas) / 4; // only in Vario-Mode |
} |
}// EOF height control active |
else // HC not active |
{ |
//update hoover gas stick value when HC is not active |
if(!EE_Parameter.Hoehe_StickNeutralPoint) |
{ |
StickGasHover = HoverGas/STICK_GAIN; // rescale back to stick value |
StickGasHover = (StickGasHover * UBat) / BattLowVoltageWarning; |
} |
else StickGasHover = EE_Parameter.Hoehe_StickNeutralPoint; |
LIMIT_MIN_MAX(StickGasHover, 70, 150); // reserve some range for trim up and down |
FilterHCGas = GasMischanteil; |
// set both flags to indicate no vario mode |
FC_StatusFlags |= (FC_STATUS_VARIO_TRIM_UP|FC_STATUS_VARIO_TRIM_DOWN); |
FC_StatusFlags2 &= ~FC_STATUS2_ALTITUDE_CONTROL; |
} |
// Hover gas estimation by averaging gas control output on small z-velocities |
// this is done only if height contol option is selected in global config and aircraft is flying |
if((FC_StatusFlags & FC_STATUS_FLY))// && !(FC_SatusFlags & FC_STATUS_EMERGENCY_LANDING)) |
{ |
if(HoverGasFilter == 0 || StartTrigger == 1) HoverGasFilter = HOVER_GAS_AVERAGE * (unsigned long)(GasMischanteil); // init estimation |
if(StartTrigger == 1) StartTrigger = 2; |
tmp_long2 = (int32_t)GasMischanteil; // take current thrust |
tmp_long2 *= CosAttitude; // apply attitude projection |
tmp_long2 /= 8192; |
// average vertical projected thrust |
if(modell_fliegt < 4000) // the first 8 seconds |
{ // reduce the time constant of averaging by factor of 4 to get much faster a stable value |
HoverGasFilter -= HoverGasFilter/(HOVER_GAS_AVERAGE/16L); |
HoverGasFilter += 16L * tmp_long2; |
} |
if(modell_fliegt < 8000) // the first 16 seconds |
{ // reduce the time constant of averaging by factor of 2 to get much faster a stable value |
HoverGasFilter -= HoverGasFilter/(HOVER_GAS_AVERAGE/4L); |
HoverGasFilter += 4L * tmp_long2; |
} |
else //later |
if(abs(VarioMeter) < 100 && abs(HoehenWert - SollHoehe) < 256) // only on small vertical speed & difference is small (only descending) |
{ |
HoverGasFilter -= HoverGasFilter/HOVER_GAS_AVERAGE; |
HoverGasFilter += tmp_long2; |
} |
HoverGas = (int16_t)(HoverGasFilter/HOVER_GAS_AVERAGE); |
if(EE_Parameter.Hoehe_HoverBand) |
{ |
int16_t band; |
band = HoverGas / EE_Parameter.Hoehe_HoverBand; // the higher the parameter the smaller the range |
HoverGasMin = HoverGas - band; |
HoverGasMax = HoverGas + band; |
} |
else |
{ // no limit |
HoverGasMin = 0; |
HoverGasMax = 1023; |
} |
} |
else |
{ |
StartTrigger = 0; |
HoverGasFilter = 0; |
HoverGas = 0; |
} |
}// EOF Parameter_GlobalConfig & CFG_HEIGHT_CONTROL |
else |
{ |
// set undefined state to indicate vario off |
FC_StatusFlags |= (FC_STATUS_VARIO_TRIM_UP|FC_STATUS_VARIO_TRIM_DOWN); |
} // EOF no height control |
// Linits the maximum gas in case of "Out of Range emergency landing" |
if(NC_To_FC_Flags & NC_TO_FC_EMERGENCY_LANDING) |
{ |
if(GasMischanteil/STICK_GAIN > HooverGasEmergencyPercent && HoverGas) GasMischanteil = HooverGasEmergencyPercent * STICK_GAIN; |
SollHoehe = HoehenWert; // update setpoint to current heigth |
beeptime = 15000; |
BeepMuster = 0x0E00; |
} |
// limit gas to parameter setting |
LIMIT_MIN(GasMischanteil, (MIN_GAS + 10) * STICK_GAIN); |
if(GasMischanteil > (MAX_GAS - 20) * STICK_GAIN) GasMischanteil = (MAX_GAS - 20) * STICK_GAIN; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// all BL-Ctrl connected? |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(MissingMotor || Capacity.MinOfMaxPWM != 255 || NC_ErrorCode) // wait until all BL-Ctrls started and no Errors |
if(modell_fliegt > 1 && modell_fliegt < 50 && GasMischanteil > 0) // only during start-phase |
{ |
modell_fliegt = 1; |
GasMischanteil = (MIN_GAS + 10) * STICK_GAIN; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Mischer und PI-Regler |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DebugOut.Analog[7] = GasMischanteil; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gier-Anteil |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
GierMischanteil = MesswertGier - sollGier * STICK_GAIN; // Regler für Gier |
#define MIN_GIERGAS (40*STICK_GAIN) // unter diesem Gaswert trotzdem Gieren |
if(GasMischanteil > MIN_GIERGAS) |
{ |
if(GierMischanteil > (GasMischanteil / 2)) GierMischanteil = GasMischanteil / 2; |
if(GierMischanteil < -(GasMischanteil / 2)) GierMischanteil = -(GasMischanteil / 2); |
} |
else |
{ |
if(GierMischanteil > (MIN_GIERGAS / 2)) GierMischanteil = MIN_GIERGAS / 2; |
if(GierMischanteil < -(MIN_GIERGAS / 2)) GierMischanteil = -(MIN_GIERGAS / 2); |
} |
tmp_int = MAX_GAS*STICK_GAIN; |
if(GierMischanteil > ((tmp_int - GasMischanteil))) GierMischanteil = ((tmp_int - GasMischanteil)); |
if(GierMischanteil < -((tmp_int - GasMischanteil))) GierMischanteil = -((tmp_int - GasMischanteil)); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Nick-Achse |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DiffNick = MesswertNick - StickNick; // Differenz bestimmen |
if(IntegralFaktor) SummeNick += IntegralNickMalFaktor - StickNick; // I-Anteil bei Winkelregelung |
else SummeNick += DiffNick; // I-Anteil bei HH |
if(SummeNick > (STICK_GAIN * 16000L)) SummeNick = (STICK_GAIN * 16000L); |
if(SummeNick < -(16000L * STICK_GAIN)) SummeNick = -(16000L * STICK_GAIN); |
if(EE_Parameter.Gyro_Stability <= 8) pd_ergebnis_nick = (EE_Parameter.Gyro_Stability * DiffNick) / 8; // PI-Regler für Nick |
else pd_ergebnis_nick = ((EE_Parameter.Gyro_Stability / 2) * DiffNick) / 4; // Überlauf verhindern |
pd_ergebnis_nick += SummeNick / Ki; |
tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64; |
if(pd_ergebnis_nick > tmp_int) pd_ergebnis_nick = tmp_int; |
if(pd_ergebnis_nick < -tmp_int) pd_ergebnis_nick = -tmp_int; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Roll-Achse |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DiffRoll = MesswertRoll - StickRoll; // Differenz bestimmen |
if(IntegralFaktor) SummeRoll += IntegralRollMalFaktor - StickRoll;// I-Anteil bei Winkelregelung |
else SummeRoll += DiffRoll; // I-Anteil bei HH |
if(SummeRoll > (STICK_GAIN * 16000L)) SummeRoll = (STICK_GAIN * 16000L); |
if(SummeRoll < -(16000L * STICK_GAIN)) SummeRoll = -(16000L * STICK_GAIN); |
if(EE_Parameter.Gyro_Stability <= 8) pd_ergebnis_roll = (EE_Parameter.Gyro_Stability * DiffRoll) / 8; // PI-Regler für Roll |
else pd_ergebnis_roll = ((EE_Parameter.Gyro_Stability / 2) * DiffRoll) / 4; // Überlauf verhindern |
pd_ergebnis_roll += SummeRoll / Ki; |
tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64; |
if(pd_ergebnis_roll > tmp_int) pd_ergebnis_roll = tmp_int; |
if(pd_ergebnis_roll < -tmp_int) pd_ergebnis_roll = -tmp_int; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Universal Mixer |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
for(i=0; i<MAX_MOTORS; i++) |
{ |
signed int tmp_int; |
if(Mixer.Motor[i][0] > 0) |
{ |
// Gas |
if(Mixer.Motor[i][0] == 64) tmp_int = GasMischanteil; else tmp_int = ((long)GasMischanteil * Mixer.Motor[i][0]) / 64L; |
// Nick |
if(Mixer.Motor[i][1] == 64) tmp_int += pd_ergebnis_nick; |
else if(Mixer.Motor[i][1] == -64) tmp_int -= pd_ergebnis_nick; |
else tmp_int += ((long)pd_ergebnis_nick * Mixer.Motor[i][1]) / 64L; |
// Roll |
if(Mixer.Motor[i][2] == 64) tmp_int += pd_ergebnis_roll; |
else if(Mixer.Motor[i][2] == -64) tmp_int -= pd_ergebnis_roll; |
else tmp_int += ((long)pd_ergebnis_roll * Mixer.Motor[i][2]) / 64L; |
// Gier |
if(Mixer.Motor[i][3] == 64) tmp_int += GierMischanteil; |
else if(Mixer.Motor[i][3] == -64) tmp_int -= GierMischanteil; |
else tmp_int += ((long)GierMischanteil * Mixer.Motor[i][3]) / 64L; |
if(tmp_int > tmp_motorwert[i]) tmp_int = (tmp_motorwert[i] + tmp_int) / 2; // MotorSmoothing |
// else tmp_int = 2 * tmp_int - tmp_motorwert[i]; // original MotorSmoothing |
else |
{ |
if(EE_Parameter.MotorSmooth == 0) |
{ |
tmp_int = 2 * tmp_int - tmp_motorwert[i]; // original MotorSmoothing |
} |
else // 1 means tmp_int = tmp_int; |
if(EE_Parameter.MotorSmooth > 1) |
{ |
// If >= 2 then allow >= 50% of the intended step down to rapidly reach the intended value. |
tmp_int = tmp_int + ((tmp_motorwert[i] - tmp_int)/EE_Parameter.MotorSmooth); |
} |
} |
LIMIT_MIN_MAX(tmp_int,(int) MIN_GAS * 4,(int) MAX_GAS * 4); |
Motor[i].SetPoint = tmp_int / 4; |
Motor[i].SetPointLowerBits = (tmp_int % 4)<<1; // (3 bits total) |
tmp_motorwert[i] = tmp_int; |
} |
else |
{ |
Motor[i].SetPoint = 0; |
Motor[i].SetPointLowerBits = 0; |
} |
} |
} |
//DebugOut.Analog[16] |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/fc.h |
---|
0,0 → 1,139 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
#ifndef _FC_H |
#define _FC_H |
//#define GIER_GRAD_FAKTOR 1291L // Abhängigkeit zwischen GyroIntegral und Winkel |
//#define GIER_GRAD_FAKTOR 1160L |
extern long GIER_GRAD_FAKTOR; // Abhängigkeit zwischen GyroIntegral und Winkel |
#define STICK_GAIN 4 |
#define ACC_AMPLIFY 6 |
// FC_StatusFlags |
#define FC_STATUS_MOTOR_RUN 0x01 |
#define FC_STATUS_FLY 0x02 |
#define FC_STATUS_CALIBRATE 0x04 |
#define FC_STATUS_START 0x08 |
#define FC_STATUS_EMERGENCY_LANDING 0x10 |
#define FC_STATUS_LOWBAT 0x20 |
#define FC_STATUS_VARIO_TRIM_UP 0x40 |
#define FC_STATUS_VARIO_TRIM_DOWN 0x80 |
// FC_StatusFlags2 |
#define FC_STATUS2_CAREFREE 0x01 |
#define FC_STATUS2_ALTITUDE_CONTROL 0x02 |
#define FC_STATUS2_RC_FAILSAVE_ACTIVE 0x04 |
#define FC_STATUS2_OUT1_ACTIVE 0x08 |
#define FC_STATUS2_OUT2_ACTIVE 0x10 |
//NC_To_FC_Flags |
#define NC_TO_FC_FLYING_RANGE 0x01 |
#define NC_TO_FC_EMERGENCY_LANDING 0x02 |
extern volatile unsigned char FC_StatusFlags, FC_StatusFlags2; |
extern void ParameterZuordnung(void); |
#define Poti1 Poti[0] |
#define Poti2 Poti[1] |
#define Poti3 Poti[2] |
#define Poti4 Poti[3] |
#define Poti5 Poti[4] |
#define Poti6 Poti[5] |
#define Poti7 Poti[6] |
#define Poti8 Poti[7] |
#define LIMIT_MIN(value, min) {if(value <= min) value = min;} |
#define LIMIT_MAX(value, max) {if(value >= max) value = max;} |
#define LIMIT_MIN_MAX(value, min, max) {if(value <= min) value = min; else if(value >= max) value = max;} |
#define CHK_POTI(b,a) {if(a < 248) b = a; else b = Poti[255 - a];} |
#define CHK_POTI_OFF(b,a,off) {if(a < 248) b = a; else b = Poti[255 - a] - off;} |
#define CHK_POTI_MM(b,a,min,max) {CHK_POTI(b,a); LIMIT_MIN_MAX(b, min, max);} |
#define CHK_POTI_MM_OFF(b,a,min,max,off) {CHK_POTI_OFF(b,a,off); LIMIT_MIN_MAX(b, min, max);} |
extern unsigned char Sekunde,Minute; |
extern unsigned int BaroExpandActive; |
extern long IntegralNick,IntegralNick2; |
extern long IntegralRoll,IntegralRoll2; |
//extern int IntegralNick,IntegralNick2; |
//extern int IntegralRoll,IntegralRoll2; |
extern unsigned char Poti[9]; |
extern long Mess_IntegralNick,Mess_IntegralNick2; |
extern long Mess_IntegralRoll,Mess_IntegralRoll2; |
extern long IntegralAccNick,IntegralAccRoll; |
extern long SummeNick,SummeRoll; |
extern volatile long Mess_Integral_Hoch; |
extern long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2; |
extern int KompassValue; |
extern int KompassSollWert; |
extern int KompassRichtung; |
extern char CalculateCompassTimer; |
extern unsigned char KompassFusion; |
extern unsigned char ControlHeading; |
extern int TrimNick, TrimRoll; |
extern long ErsatzKompass; |
extern int ErsatzKompassInGrad; // Kompasswert in Grad |
extern long HoehenWert; |
extern long SollHoehe; |
extern long FromNC_AltitudeSetpoint; |
extern unsigned char FromNC_AltitudeSpeed; |
extern unsigned char Parameter_HoehenSchalter; // Wert : 0-250 |
extern unsigned char CareFree; |
extern int MesswertNick,MesswertRoll,MesswertGier; |
extern int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll; |
extern unsigned int NeutralAccX, NeutralAccY; |
extern unsigned char HoehenReglerAktiv; |
extern int NeutralAccZ; |
extern long Umschlag180Nick, Umschlag180Roll; |
extern signed int ExternStickNick,ExternStickRoll,ExternStickGier; |
extern unsigned char Parameter_UserParam1,Parameter_UserParam2,Parameter_UserParam3,Parameter_UserParam4,Parameter_UserParam5,Parameter_UserParam6,Parameter_UserParam7,Parameter_UserParam8; |
extern int NaviAccNick,NaviAccRoll,NaviCntAcc; |
extern unsigned int modell_fliegt; |
extern void MotorRegler(void); |
extern void SendMotorData(void); |
//void CalibrierMittelwert(void); |
//void Mittelwert(void); |
extern void SetNeutral(unsigned char AccAdjustment); |
extern void Piep(unsigned char Anzahl, unsigned int dauer); |
extern void CopyDebugValues(void); |
extern unsigned char h,m,s; |
extern int StickNick,StickRoll,StickGier,StickGas; |
extern volatile unsigned char Timeout ; |
extern unsigned char CosinusNickWinkel, CosinusRollWinkel; |
extern int DiffNick,DiffRoll; |
//extern int Poti1, Poti2, Poti3, Poti4; |
extern volatile unsigned char SenderOkay; |
extern int StickNick,StickRoll,StickGier; |
extern char MotorenEin; |
extern unsigned char CalibrationDone; |
extern unsigned char Parameter_Servo3,Parameter_Servo4,Parameter_Servo5; |
extern char VarioCharacter; |
extern signed int AltitudeSetpointTrimming; |
extern signed char WaypointTrimming; |
extern int HoverGas; |
extern unsigned char Parameter_Luftdruck_D; |
extern unsigned char Parameter_MaxHoehe; |
extern unsigned char Parameter_Hoehe_P; |
extern unsigned char Parameter_Hoehe_ACC_Wirkung; |
extern unsigned char Parameter_KompassWirkung; |
extern unsigned char Parameter_Gyro_P; |
extern unsigned char Parameter_Gyro_I; |
extern unsigned char Parameter_Gier_P; |
extern unsigned char Parameter_ServoNickControl; |
extern unsigned char Parameter_ServoRollControl; |
extern unsigned char Parameter_AchsKopplung1; |
extern unsigned char Parameter_AchsKopplung2; |
//extern unsigned char Parameter_AchsGegenKopplung1; |
extern unsigned char Parameter_J16Bitmask; // for the J16 Output |
extern unsigned char Parameter_J16Timing; // for the J16 Output |
extern unsigned char Parameter_J17Bitmask; // for the J17 Output |
extern unsigned char Parameter_J17Timing; // for the J17 Output |
extern unsigned char Parameter_GlobalConfig; |
extern unsigned char Parameter_ExtraConfig; |
extern signed char MixerTable[MAX_MOTORS][4]; |
extern const signed char sintab[31]; |
#endif //_FC_H |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/fc.lst |
---|
0,0 → 1,10980 |
1 .file "fc.c" |
2 .arch atmega1284p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .global GasIsZeroCnt |
11 .global GasIsZeroCnt |
12 .section .bss |
15 GasIsZeroCnt: |
16 0000 0000 .skip 2,0 |
17 .global HooverGasEmergencyPercent |
18 .global HooverGasEmergencyPercent |
21 HooverGasEmergencyPercent: |
22 0002 0000 .skip 2,0 |
23 .global VarioCharacter |
24 .data |
27 VarioCharacter: |
28 0000 20 .byte 32 |
29 .global GIER_GRAD_FAKTOR |
32 GIER_GRAD_FAKTOR: |
33 0001 0B05 0000 .long 1291 |
34 .global FC_StatusFlags2 |
35 .global FC_StatusFlags2 |
36 .section .bss |
39 FC_StatusFlags2: |
40 0004 00 .skip 1,0 |
41 .global FC_StatusFlags |
42 .global FC_StatusFlags |
45 FC_StatusFlags: |
46 0005 00 .skip 1,0 |
47 .global modell_fliegt |
48 .global modell_fliegt |
51 modell_fliegt: |
52 0006 0000 .skip 2,0 |
53 .global MaxStickRoll |
54 .global MaxStickRoll |
57 MaxStickRoll: |
58 0008 0000 .skip 2,0 |
59 .global MaxStickNick |
60 .global MaxStickNick |
63 MaxStickNick: |
64 000a 0000 .skip 2,0 |
65 .global ExternHoehenValue |
66 .data |
69 ExternHoehenValue: |
70 0005 ECFF .word -20 |
71 .global ExternStickGier |
72 .global ExternStickGier |
73 .section .bss |
76 ExternStickGier: |
77 000c 0000 .skip 2,0 |
78 .global ExternStickRoll |
79 .global ExternStickRoll |
82 ExternStickRoll: |
83 000e 0000 .skip 2,0 |
84 .global ExternStickNick |
85 .global ExternStickNick |
88 ExternStickNick: |
89 0010 0000 .skip 2,0 |
90 .global sintab |
91 .data |
94 sintab: |
95 0007 00 .byte 0 |
96 0008 02 .byte 2 |
97 0009 04 .byte 4 |
98 000a 06 .byte 6 |
99 000b 07 .byte 7 |
100 000c 08 .byte 8 |
101 000d 08 .byte 8 |
102 000e 08 .byte 8 |
103 000f 07 .byte 7 |
104 0010 06 .byte 6 |
105 0011 04 .byte 4 |
106 0012 02 .byte 2 |
107 0013 00 .byte 0 |
108 0014 FE .byte -2 |
109 0015 FC .byte -4 |
110 0016 FA .byte -6 |
111 0017 F9 .byte -7 |
112 0018 F8 .byte -8 |
113 0019 F8 .byte -8 |
114 001a F8 .byte -8 |
115 001b F9 .byte -7 |
116 001c FA .byte -6 |
117 001d FC .byte -4 |
118 001e FE .byte -2 |
119 001f 00 .byte 0 |
120 0020 02 .byte 2 |
121 0021 04 .byte 4 |
122 0022 06 .byte 6 |
123 0023 07 .byte 7 |
124 0024 08 .byte 8 |
125 0025 08 .byte 8 |
126 .global CareFree |
127 .global CareFree |
128 .section .bss |
131 CareFree: |
132 0012 00 .skip 1,0 |
133 .global Parameter_DynamicStability |
134 .data |
137 Parameter_DynamicStability: |
138 0026 64 .byte 100 |
139 .global Parameter_CouplingYawCorrection |
142 Parameter_CouplingYawCorrection: |
143 0027 40 .byte 64 |
144 .global Parameter_AchsKopplung2 |
147 Parameter_AchsKopplung2: |
148 0028 41 .byte 65 |
149 .global Parameter_AchsKopplung1 |
152 Parameter_AchsKopplung1: |
153 0029 5A .byte 90 |
154 .global Parameter_LoopGasLimit |
157 Parameter_LoopGasLimit: |
158 002a 46 .byte 70 |
159 .global Parameter_ServoRollControl |
162 Parameter_ServoRollControl: |
163 002b 64 .byte 100 |
164 .global Parameter_ServoNickControl |
167 Parameter_ServoNickControl: |
168 002c 64 .byte 100 |
169 .global Parameter_UserParam8 |
170 .global Parameter_UserParam8 |
171 .section .bss |
174 Parameter_UserParam8: |
175 0013 00 .skip 1,0 |
176 .global Parameter_UserParam7 |
177 .global Parameter_UserParam7 |
180 Parameter_UserParam7: |
181 0014 00 .skip 1,0 |
182 .global Parameter_UserParam6 |
183 .global Parameter_UserParam6 |
186 Parameter_UserParam6: |
187 0015 00 .skip 1,0 |
188 .global Parameter_UserParam5 |
189 .global Parameter_UserParam5 |
192 Parameter_UserParam5: |
193 0016 00 .skip 1,0 |
194 .global Parameter_UserParam4 |
195 .global Parameter_UserParam4 |
198 Parameter_UserParam4: |
199 0017 00 .skip 1,0 |
200 .global Parameter_UserParam3 |
201 .global Parameter_UserParam3 |
204 Parameter_UserParam3: |
205 0018 00 .skip 1,0 |
206 .global Parameter_UserParam2 |
207 .global Parameter_UserParam2 |
210 Parameter_UserParam2: |
211 0019 00 .skip 1,0 |
212 .global Parameter_UserParam1 |
213 .global Parameter_UserParam1 |
216 Parameter_UserParam1: |
217 001a 00 .skip 1,0 |
218 .global Parameter_I_Faktor |
219 .data |
222 Parameter_I_Faktor: |
223 002d 0A .byte 10 |
224 .global Parameter_Gier_P |
227 Parameter_Gier_P: |
228 002e 02 .byte 2 |
229 .global Parameter_Gyro_Gier_I |
232 Parameter_Gyro_Gier_I: |
233 002f 96 .byte -106 |
234 .global Parameter_Gyro_Gier_P |
237 Parameter_Gyro_Gier_P: |
238 0030 96 .byte -106 |
239 .global Parameter_Gyro_I |
242 Parameter_Gyro_I: |
243 0031 96 .byte -106 |
244 .global Parameter_Gyro_P |
247 Parameter_Gyro_P: |
248 0032 96 .byte -106 |
249 .global Parameter_Gyro_D |
252 Parameter_Gyro_D: |
253 0033 08 .byte 8 |
254 .global Parameter_Hoehe_GPS_Z |
257 Parameter_Hoehe_GPS_Z: |
258 0034 40 .byte 64 |
259 .global Parameter_KompassWirkung |
262 Parameter_KompassWirkung: |
263 0035 40 .byte 64 |
264 .global Parameter_Hoehe_ACC_Wirkung |
267 Parameter_Hoehe_ACC_Wirkung: |
268 0036 3A .byte 58 |
269 .global Parameter_Hoehe_P |
272 Parameter_Hoehe_P: |
273 0037 10 .byte 16 |
274 .global Parameter_HoehenSchalter |
277 Parameter_HoehenSchalter: |
278 0038 FB .byte -5 |
279 .global Parameter_Luftdruck_D |
282 Parameter_Luftdruck_D: |
283 0039 30 .byte 48 |
284 .global Looping_Oben |
285 .global Looping_Oben |
286 .section .bss |
289 Looping_Oben: |
290 001b 00 .skip 1,0 |
291 .global Looping_Unten |
292 .global Looping_Unten |
295 Looping_Unten: |
296 001c 00 .skip 1,0 |
297 .global Looping_Rechts |
298 .global Looping_Rechts |
301 Looping_Rechts: |
302 001d 00 .skip 1,0 |
303 .global Looping_Links |
304 .global Looping_Links |
307 Looping_Links: |
308 001e 00 .skip 1,0 |
309 .global Looping_Roll |
310 .global Looping_Roll |
313 Looping_Roll: |
314 001f 00 .skip 1,0 |
315 .global Looping_Nick |
316 .global Looping_Nick |
319 Looping_Nick: |
320 0020 00 .skip 1,0 |
321 .global Ki |
322 .data |
325 Ki: |
326 003a 3801 .word 312 |
327 .global HoverGas |
328 .global HoverGas |
329 .section .bss |
332 HoverGas: |
333 0021 0000 .skip 2,0 |
334 .global LageKorrekturNick |
335 .global LageKorrekturNick |
338 LageKorrekturNick: |
339 0023 0000 .skip 2,0 |
340 .global LageKorrekturRoll |
341 .global LageKorrekturRoll |
344 LageKorrekturRoll: |
345 0025 0000 .skip 2,0 |
346 .global NeueKompassRichtungMerken |
347 .global NeueKompassRichtungMerken |
350 NeueKompassRichtungMerken: |
351 0027 00 .skip 1,0 |
352 .global CalibrationDone |
353 .global CalibrationDone |
356 CalibrationDone: |
357 0028 00 .skip 1,0 |
358 .global CompassGierSetpoint |
359 .global CompassGierSetpoint |
362 CompassGierSetpoint: |
363 0029 0000 .skip 2,0 |
364 .global WaypointTrimming |
365 .global WaypointTrimming |
368 WaypointTrimming: |
369 002b 00 .skip 1,0 |
370 .global carefree_old |
371 .data |
374 carefree_old: |
375 003c 32 .byte 50 |
376 .global FromNC_AltitudeSpeed |
377 .global FromNC_AltitudeSpeed |
378 .section .bss |
381 FromNC_AltitudeSpeed: |
382 002c 00 .skip 1,0 |
383 .global FromNC_AltitudeSetpoint |
384 .global FromNC_AltitudeSetpoint |
387 FromNC_AltitudeSetpoint: |
388 002d 0000 0000 .skip 4,0 |
389 .global AltitudeSetpointTrimming |
390 .global AltitudeSetpointTrimming |
393 AltitudeSetpointTrimming: |
394 0031 0000 .skip 2,0 |
395 .global SollHoehe |
396 .global SollHoehe |
399 SollHoehe: |
400 0033 0000 0000 .skip 4,0 |
401 .global HoehenWert |
402 .global HoehenWert |
405 HoehenWert: |
406 0037 0000 0000 .skip 4,0 |
407 .global StartTrigger |
408 .global StartTrigger |
411 StartTrigger: |
412 003b 00 .skip 1,0 |
413 .global MotorenEin |
414 .global MotorenEin |
417 MotorenEin: |
418 003c 00 .skip 1,0 |
419 .global SenderOkay |
420 .global SenderOkay |
423 SenderOkay: |
424 003d 00 .skip 1,0 |
425 .global Poti |
426 .global Poti |
429 Poti: |
430 003e 0000 0000 .skip 9,0 |
430 0000 0000 |
430 00 |
431 .global StickGas |
432 .global StickGas |
435 StickGas: |
436 0047 0000 .skip 2,0 |
437 .global StickGier |
438 .global StickGier |
441 StickGier: |
442 0049 0000 .skip 2,0 |
443 .global StickRoll |
444 .global StickRoll |
447 StickRoll: |
448 004b 0000 .skip 2,0 |
449 .global StickNick |
450 .global StickNick |
453 StickNick: |
454 004d 0000 .skip 2,0 |
455 .global HoverGasMax |
456 .data |
459 HoverGasMax: |
460 003d FF03 .word 1023 |
461 .global HoverGasMin |
462 .global HoverGasMin |
463 .section .bss |
466 HoverGasMin: |
467 004f 0000 .skip 2,0 |
468 .global StickGasHover |
469 .data |
472 StickGasHover: |
473 003f 7800 .word 120 |
474 .global GierGyroFehler |
475 .global GierGyroFehler |
476 .section .bss |
479 GierGyroFehler: |
480 0051 0000 .skip 2,0 |
481 .global Umschlag180Roll |
482 .data |
485 Umschlag180Roll: |
486 0041 90D0 0300 .long 250000 |
487 .global Umschlag180Nick |
490 Umschlag180Nick: |
491 0045 90D0 0300 .long 250000 |
492 .global TrichterFlug |
493 .global TrichterFlug |
494 .section .bss |
497 TrichterFlug: |
498 0053 00 .skip 1,0 |
499 .global HoehenReglerAktiv |
500 .global HoehenReglerAktiv |
503 HoehenReglerAktiv: |
504 0054 00 .skip 1,0 |
505 .global KompassSignalSchlecht |
506 .data |
509 KompassSignalSchlecht: |
510 0049 3200 .word 50 |
511 .global KompassFusion |
514 KompassFusion: |
515 004b 20 .byte 32 |
516 .global CalculateCompassTimer |
519 CalculateCompassTimer: |
520 004c 64 .byte 100 |
521 .global KompassSollWert |
522 .global KompassSollWert |
523 .section .bss |
526 KompassSollWert: |
527 0055 0000 .skip 2,0 |
528 .global KompassValue |
529 .data |
532 KompassValue: |
533 004d FFFF .word -1 |
534 .global Mess_Integral_Hoch |
535 .global Mess_Integral_Hoch |
536 .section .bss |
539 Mess_Integral_Hoch: |
540 0057 0000 0000 .skip 4,0 |
541 .global SummeRoll |
542 .global SummeRoll |
545 SummeRoll: |
546 005b 0000 0000 .skip 4,0 |
547 .global SummeNick |
548 .global SummeNick |
551 SummeNick: |
552 005f 0000 0000 .skip 4,0 |
553 .global Mess_Integral_Gier2 |
554 .global Mess_Integral_Gier2 |
557 Mess_Integral_Gier2: |
558 0063 0000 0000 .skip 4,0 |
559 .global Mess_Integral_Gier |
560 .global Mess_Integral_Gier |
563 Mess_Integral_Gier: |
564 0067 0000 0000 .skip 4,0 |
565 .global Mess_IntegralRoll2 |
566 .global Mess_IntegralRoll2 |
569 Mess_IntegralRoll2: |
570 006b 0000 0000 .skip 4,0 |
571 .global Mess_IntegralRoll |
572 .global Mess_IntegralRoll |
575 Mess_IntegralRoll: |
576 006f 0000 0000 .skip 4,0 |
577 .global Mess_IntegralNick2 |
578 .global Mess_IntegralNick2 |
581 Mess_IntegralNick2: |
582 0073 0000 0000 .skip 4,0 |
583 .global Mess_IntegralNick |
584 .global Mess_IntegralNick |
587 Mess_IntegralNick: |
588 0077 0000 0000 .skip 4,0 |
589 .global Integral_Gier |
590 .global Integral_Gier |
593 Integral_Gier: |
594 007b 0000 0000 .skip 4,0 |
595 .global IntegralAccZ |
596 .global IntegralAccZ |
599 IntegralAccZ: |
600 007f 0000 0000 .skip 4,0 |
601 .global IntegralAccRoll |
602 .global IntegralAccRoll |
605 IntegralAccRoll: |
606 0083 0000 0000 .skip 4,0 |
607 .global IntegralAccNick |
608 .global IntegralAccNick |
611 IntegralAccNick: |
612 0087 0000 0000 .skip 4,0 |
613 .global IntegralRoll2 |
614 .global IntegralRoll2 |
617 IntegralRoll2: |
618 008b 0000 0000 .skip 4,0 |
619 .global IntegralRoll |
620 .global IntegralRoll |
623 IntegralRoll: |
624 008f 0000 0000 .skip 4,0 |
625 .global IntegralNick2 |
626 .global IntegralNick2 |
629 IntegralNick2: |
630 0093 0000 0000 .skip 4,0 |
631 .global IntegralNick |
632 .global IntegralNick |
635 IntegralNick: |
636 0097 0000 0000 .skip 4,0 |
637 .global ControlHeading |
638 .global ControlHeading |
641 ControlHeading: |
642 009b 00 .skip 1,0 |
643 .global NeutralAccZ |
644 .global NeutralAccZ |
647 NeutralAccZ: |
648 009c 0000 .skip 2,0 |
649 .global NaviCntAcc |
650 .global NaviCntAcc |
653 NaviCntAcc: |
654 009e 0000 .skip 2,0 |
655 .global NeutralAccY |
656 .global NeutralAccY |
659 NeutralAccY: |
660 00a0 0000 .skip 2,0 |
661 .global NeutralAccX |
662 .global NeutralAccX |
665 NeutralAccX: |
666 00a2 0000 .skip 2,0 |
667 .global StartNeutralNick |
668 .global StartNeutralNick |
671 StartNeutralNick: |
672 00a4 0000 .skip 2,0 |
673 .global StartNeutralRoll |
674 .global StartNeutralRoll |
677 StartNeutralRoll: |
678 00a6 0000 .skip 2,0 |
679 .global AdNeutralGier |
680 .global AdNeutralGier |
683 AdNeutralGier: |
684 00a8 0000 .skip 2,0 |
685 .global AdNeutralRoll |
686 .global AdNeutralRoll |
689 AdNeutralRoll: |
690 00aa 0000 .skip 2,0 |
691 .global AdNeutralNick |
692 .global AdNeutralNick |
695 AdNeutralNick: |
696 00ac 0000 .skip 2,0 |
697 .global BaroExpandActive |
698 .global BaroExpandActive |
701 BaroExpandActive: |
702 00ae 0000 .skip 2,0 |
703 .text |
704 .global CopyDebugValues |
706 CopyDebugValues: |
707 /* prologue: frame size=0 */ |
708 0000 EF92 push r14 |
709 0002 FF92 push r15 |
710 0004 0F93 push r16 |
711 0006 1F93 push r17 |
712 /* prologue end (size=4) */ |
713 0008 8091 0000 lds r24,EE_Parameter+28 |
714 000c 9927 clr r25 |
715 000e 880F lsl r24 |
716 0010 991F rol r25 |
717 0012 880F lsl r24 |
718 0014 991F rol r25 |
719 0016 7C01 movw r14,r24 |
720 0018 0027 clr r16 |
721 001a F7FC sbrc r15,7 |
722 001c 0095 com r16 |
723 001e 102F mov r17,r16 |
724 0020 8091 0000 lds r24,IntegralNick |
725 0024 9091 0000 lds r25,(IntegralNick)+1 |
726 0028 A091 0000 lds r26,(IntegralNick)+2 |
727 002c B091 0000 lds r27,(IntegralNick)+3 |
728 0030 BC01 movw r22,r24 |
729 0032 CD01 movw r24,r26 |
730 0034 A801 movw r20,r16 |
731 0036 9701 movw r18,r14 |
732 0038 0E94 0000 call __divmodsi4 |
733 003c 3093 0000 sts (DebugOut+2)+1,r19 |
734 0040 2093 0000 sts DebugOut+2,r18 |
735 0044 8091 0000 lds r24,IntegralRoll |
736 0048 9091 0000 lds r25,(IntegralRoll)+1 |
737 004c A091 0000 lds r26,(IntegralRoll)+2 |
738 0050 B091 0000 lds r27,(IntegralRoll)+3 |
739 0054 BC01 movw r22,r24 |
740 0056 CD01 movw r24,r26 |
741 0058 A801 movw r20,r16 |
742 005a 9701 movw r18,r14 |
743 005c 0E94 0000 call __divmodsi4 |
744 0060 3093 0000 sts (DebugOut+4)+1,r19 |
745 0064 2093 0000 sts DebugOut+4,r18 |
746 0068 8091 0000 lds r24,Mittelwert_AccNick |
747 006c 9091 0000 lds r25,(Mittelwert_AccNick)+1 |
748 0070 97FD sbrc r25,7 |
749 0072 0396 adiw r24,3 |
750 .L2: |
751 0074 9595 asr r25 |
752 0076 8795 ror r24 |
753 0078 9595 asr r25 |
754 007a 8795 ror r24 |
755 007c 9093 0000 sts (DebugOut+6)+1,r25 |
756 0080 8093 0000 sts DebugOut+6,r24 |
757 0084 8091 0000 lds r24,Mittelwert_AccRoll |
758 0088 9091 0000 lds r25,(Mittelwert_AccRoll)+1 |
759 008c 97FD sbrc r25,7 |
760 008e 0396 adiw r24,3 |
761 .L3: |
762 0090 9595 asr r25 |
763 0092 8795 ror r24 |
764 0094 9595 asr r25 |
765 0096 8795 ror r24 |
766 0098 9093 0000 sts (DebugOut+8)+1,r25 |
767 009c 8093 0000 sts DebugOut+8,r24 |
768 00a0 8091 0000 lds r24,AdNeutralGier |
769 00a4 9091 0000 lds r25,(AdNeutralGier)+1 |
770 00a8 2091 0000 lds r18,AdWertGier |
771 00ac 3091 0000 lds r19,(AdWertGier)+1 |
772 00b0 821B sub r24,r18 |
773 00b2 930B sbc r25,r19 |
774 00b4 9093 0000 sts (DebugOut+10)+1,r25 |
775 00b8 8093 0000 sts DebugOut+10,r24 |
776 00bc 8091 0000 lds r24,HoehenWert |
777 00c0 9091 0000 lds r25,(HoehenWert)+1 |
778 00c4 A091 0000 lds r26,(HoehenWert)+2 |
779 00c8 B091 0000 lds r27,(HoehenWert)+3 |
780 00cc BC01 movw r22,r24 |
781 00ce CD01 movw r24,r26 |
782 00d0 25E0 ldi r18,lo8(5) |
783 00d2 30E0 ldi r19,hi8(5) |
784 00d4 40E0 ldi r20,hlo8(5) |
785 00d6 50E0 ldi r21,hhi8(5) |
786 00d8 0E94 0000 call __divmodsi4 |
787 00dc 3093 0000 sts (DebugOut+12)+1,r19 |
788 00e0 2093 0000 sts DebugOut+12,r18 |
789 00e4 8091 0000 lds r24,AdWertAccHoch |
790 00e8 9091 0000 lds r25,(AdWertAccHoch)+1 |
791 00ec 9093 0000 sts (DebugOut+14)+1,r25 |
792 00f0 8093 0000 sts DebugOut+14,r24 |
793 00f4 8091 0000 lds r24,KompassValue |
794 00f8 9091 0000 lds r25,(KompassValue)+1 |
795 00fc 9093 0000 sts (DebugOut+18)+1,r25 |
796 0100 8093 0000 sts DebugOut+18,r24 |
797 0104 8091 0000 lds r24,UBat |
798 0108 9091 0000 lds r25,(UBat)+1 |
799 010c 9093 0000 sts (DebugOut+20)+1,r25 |
800 0110 8093 0000 sts DebugOut+20,r24 |
801 0114 8091 0000 lds r24,SenderOkay |
802 0118 9927 clr r25 |
803 011a 9093 0000 sts (DebugOut+22)+1,r25 |
804 011e 8093 0000 sts DebugOut+22,r24 |
805 0122 8091 0000 lds r24,ErsatzKompassInGrad |
806 0126 9091 0000 lds r25,(ErsatzKompassInGrad)+1 |
807 012a 9093 0000 sts (DebugOut+24)+1,r25 |
808 012e 8093 0000 sts DebugOut+24,r24 |
809 0132 8091 0000 lds r24,Motor+1 |
810 0136 9927 clr r25 |
811 0138 9093 0000 sts (DebugOut+26)+1,r25 |
812 013c 8093 0000 sts DebugOut+26,r24 |
813 0140 8091 0000 lds r24,Motor+9 |
814 0144 9927 clr r25 |
815 0146 9093 0000 sts (DebugOut+28)+1,r25 |
816 014a 8093 0000 sts DebugOut+28,r24 |
817 014e 8091 0000 lds r24,Motor+17 |
818 0152 9927 clr r25 |
819 0154 9093 0000 sts (DebugOut+30)+1,r25 |
820 0158 8093 0000 sts DebugOut+30,r24 |
821 015c 8091 0000 lds r24,Motor+25 |
822 0160 9927 clr r25 |
823 0162 9093 0000 sts (DebugOut+32)+1,r25 |
824 0166 8093 0000 sts DebugOut+32,r24 |
825 016a 8091 0000 lds r24,ServoNickValue |
826 016e 9091 0000 lds r25,(ServoNickValue)+1 |
827 0172 9093 0000 sts (DebugOut+42)+1,r25 |
828 0176 8093 0000 sts DebugOut+42,r24 |
829 017a 8091 0000 lds r24,Capacity |
830 017e 9091 0000 lds r25,(Capacity)+1 |
831 0182 9093 0000 sts (DebugOut+46)+1,r25 |
832 0186 8093 0000 sts DebugOut+46,r24 |
833 018a 8091 0000 lds r24,Capacity+4 |
834 018e 9091 0000 lds r25,(Capacity+4)+1 |
835 0192 9093 0000 sts (DebugOut+48)+1,r25 |
836 0196 8093 0000 sts DebugOut+48,r24 |
837 019a 8091 0000 lds r24,SollHoehe |
838 019e 9091 0000 lds r25,(SollHoehe)+1 |
839 01a2 A091 0000 lds r26,(SollHoehe)+2 |
840 01a6 B091 0000 lds r27,(SollHoehe)+3 |
841 01aa BC01 movw r22,r24 |
842 01ac CD01 movw r24,r26 |
843 01ae 25E0 ldi r18,lo8(5) |
844 01b0 30E0 ldi r19,hi8(5) |
845 01b2 40E0 ldi r20,hlo8(5) |
846 01b4 50E0 ldi r21,hhi8(5) |
847 01b6 0E94 0000 call __divmodsi4 |
848 01ba 3093 0000 sts (DebugOut+50)+1,r19 |
849 01be 2093 0000 sts DebugOut+50,r18 |
850 01c2 8091 0000 lds r24,KompassSollWert |
851 01c6 9091 0000 lds r25,(KompassSollWert)+1 |
852 01ca 9093 0000 sts (DebugOut+56)+1,r25 |
853 01ce 8093 0000 sts DebugOut+56,r24 |
854 01d2 8091 0000 lds r24,Capacity+6 |
855 01d6 9927 clr r25 |
856 01d8 9093 0000 sts (DebugOut+60)+1,r25 |
857 01dc 8093 0000 sts DebugOut+60,r24 |
858 01e0 8091 0000 lds r24,GPS_Nick |
859 01e4 9091 0000 lds r25,(GPS_Nick)+1 |
860 01e8 9093 0000 sts (DebugOut+62)+1,r25 |
861 01ec 8093 0000 sts DebugOut+62,r24 |
862 01f0 8091 0000 lds r24,GPS_Roll |
863 01f4 9091 0000 lds r25,(GPS_Roll)+1 |
864 01f8 9093 0000 sts (DebugOut+64)+1,r25 |
865 01fc 8093 0000 sts DebugOut+64,r24 |
866 0200 8091 0000 lds r24,VersionInfo+5 |
867 0204 8823 tst r24 |
868 0206 01F4 brne .L5 |
869 0208 8091 0000 lds r24,VersionInfo+6 |
870 020c 8823 tst r24 |
871 020e 01F0 breq .L4 |
872 .L5: |
873 0210 8091 0000 lds r24,DebugOut+1 |
874 0214 8160 ori r24,lo8(1) |
875 0216 00C0 rjmp .L7 |
876 .L4: |
877 0218 8091 0000 lds r24,DebugOut+1 |
878 021c 8E7F andi r24,lo8(-2) |
879 .L7: |
880 021e 8093 0000 sts DebugOut+1,r24 |
881 /* epilogue: frame size=0 */ |
882 0222 1F91 pop r17 |
883 0224 0F91 pop r16 |
884 0226 FF90 pop r15 |
885 0228 EF90 pop r14 |
886 022a 0895 ret |
887 /* epilogue end (size=5) */ |
888 /* function CopyDebugValues size 280 (271) */ |
890 .global Piep |
892 Piep: |
893 /* prologue: frame size=0 */ |
894 022c EF92 push r14 |
895 022e FF92 push r15 |
896 0230 1F93 push r17 |
897 0232 CF93 push r28 |
898 0234 DF93 push r29 |
899 /* prologue end (size=5) */ |
900 0236 182F mov r17,r24 |
901 0238 7B01 movw r14,r22 |
902 023a 8091 0000 lds r24,MotorenEin |
903 023e 8823 tst r24 |
904 0240 01F4 brne .L8 |
905 0242 8091 0000 lds r24,PlatinenVersion |
906 0246 8C30 cpi r24,lo8(12) |
907 0248 00F0 brlo .L11 |
908 024a 8631 cpi r24,lo8(22) |
909 024c 01F4 brne .L10 |
910 .L11: |
911 024e 2998 cbi 37-0x20,1 |
912 0250 00C0 rjmp .L12 |
913 .L10: |
914 0252 299A sbi 37-0x20,1 |
915 .L12: |
916 0254 1150 subi r17,lo8(-(-1)) |
917 0256 1F3F cpi r17,lo8(-1) |
918 0258 01F0 breq .L26 |
919 025a F092 0000 sts (beeptime)+1,r15 |
920 025e E092 0000 sts beeptime,r14 |
921 0262 E701 movw r28,r14 |
922 .L34: |
923 0264 8091 0000 lds r24,beeptime |
924 0268 9091 0000 lds r25,(beeptime)+1 |
925 026c 892B or r24,r25 |
926 026e 01F4 brne .L31 |
927 0270 2097 sbiw r28,0 |
928 0272 01F0 breq .L12 |
929 .L31: |
930 0274 8091 0000 lds r24,UpdateMotor |
931 0278 8823 tst r24 |
932 027a 01F0 breq .L34 |
933 027c 1092 0000 sts UpdateMotor,__zero_reg__ |
934 0280 8091 0000 lds r24,beeptime |
935 0284 9091 0000 lds r25,(beeptime)+1 |
936 0288 892B or r24,r25 |
937 028a 01F4 brne .L19 |
938 028c 2197 sbiw r28,1 |
939 .L19: |
940 028e 0E94 0000 call LIBFC_Polling |
941 0292 00C0 rjmp .L34 |
942 .L26: |
943 0294 8091 0000 lds r24,PlatinenVersion |
944 0298 8C30 cpi r24,lo8(12) |
945 029a 00F0 brlo .L23 |
946 029c 8631 cpi r24,lo8(22) |
947 029e 01F4 brne .L22 |
948 .L23: |
949 02a0 299A sbi 37-0x20,1 |
950 02a2 00C0 rjmp .L8 |
951 .L22: |
952 02a4 2998 cbi 37-0x20,1 |
953 .L8: |
954 /* epilogue: frame size=0 */ |
955 02a6 DF91 pop r29 |
956 02a8 CF91 pop r28 |
957 02aa 1F91 pop r17 |
958 02ac FF90 pop r15 |
959 02ae EF90 pop r14 |
960 02b0 0895 ret |
961 /* epilogue end (size=6) */ |
962 /* function Piep size 67 (56) */ |
964 .global CalibrierMittelwert |
966 CalibrierMittelwert: |
967 /* prologue: frame size=0 */ |
968 02b2 CF93 push r28 |
969 02b4 DF93 push r29 |
970 /* prologue end (size=2) */ |
971 02b6 8091 0000 lds r24,PlatinenVersion |
972 02ba 8D30 cpi r24,lo8(13) |
973 02bc 01F4 brne .L36 |
974 02be 0E94 0000 call SucheGyroOffset |
975 .L36: |
976 02c2 1092 7A00 sts 122,__zero_reg__ |
977 02c6 8091 0000 lds r24,AdWertNick |
978 02ca 9091 0000 lds r25,(AdWertNick)+1 |
979 02ce 9093 0000 sts (MesswertNick)+1,r25 |
980 02d2 8093 0000 sts MesswertNick,r24 |
981 02d6 8091 0000 lds r24,AdWertRoll |
982 02da 9091 0000 lds r25,(AdWertRoll)+1 |
983 02de 9093 0000 sts (MesswertRoll)+1,r25 |
984 02e2 8093 0000 sts MesswertRoll,r24 |
985 02e6 8091 0000 lds r24,AdWertGier |
986 02ea 9091 0000 lds r25,(AdWertGier)+1 |
987 02ee 9093 0000 sts (MesswertGier)+1,r25 |
988 02f2 8093 0000 sts MesswertGier,r24 |
989 02f6 2091 0000 lds r18,AdWertAccNick |
990 02fa 3091 0000 lds r19,(AdWertAccNick)+1 |
991 02fe C901 movw r24,r18 |
992 0300 880F lsl r24 |
993 0302 991F rol r25 |
994 0304 880F lsl r24 |
995 0306 991F rol r25 |
996 0308 820F add r24,r18 |
997 030a 931F adc r25,r19 |
998 030c 820F add r24,r18 |
999 030e 931F adc r25,r19 |
1000 0310 9093 0000 sts (Mittelwert_AccNick)+1,r25 |
1001 0314 8093 0000 sts Mittelwert_AccNick,r24 |
1002 0318 2091 0000 lds r18,AdWertAccRoll |
1003 031c 3091 0000 lds r19,(AdWertAccRoll)+1 |
1004 0320 C901 movw r24,r18 |
1005 0322 880F lsl r24 |
1006 0324 991F rol r25 |
1007 0326 880F lsl r24 |
1008 0328 991F rol r25 |
1009 032a 820F add r24,r18 |
1010 032c 931F adc r25,r19 |
1011 032e 820F add r24,r18 |
1012 0330 931F adc r25,r19 |
1013 0332 9093 0000 sts (Mittelwert_AccRoll)+1,r25 |
1014 0336 8093 0000 sts Mittelwert_AccRoll,r24 |
1015 033a 8FEC ldi r24,lo8(-49) |
1016 033c 8093 7A00 sts 122,r24 |
1017 0340 A0E0 ldi r26,lo8(Poti) |
1018 0342 B0E0 ldi r27,hi8(Poti) |
1019 0344 C0E0 ldi r28,lo8(EE_Parameter+5) |
1020 0346 D0E0 ldi r29,hi8(EE_Parameter+5) |
1021 0348 97E0 ldi r25,lo8(7) |
1022 .L46: |
1023 034a 8991 ld r24,Y+ |
1024 034c E82F mov r30,r24 |
1025 034e FF27 clr r31 |
1026 0350 EE0F add r30,r30 |
1027 0352 FF1F adc r31,r31 |
1028 0354 E050 subi r30,lo8(-(PPM_in)) |
1029 0356 F040 sbci r31,hi8(-(PPM_in)) |
1030 0358 0190 ld __tmp_reg__,Z+ |
1031 035a F081 ld r31,Z |
1032 035c E02D mov r30,__tmp_reg__ |
1033 035e E158 subi r30,lo8(-(127)) |
1034 0360 FF4F sbci r31,hi8(-(127)) |
1035 0362 1E16 cp __zero_reg__,r30 |
1036 0364 1F06 cpc __zero_reg__,r31 |
1037 0366 04F0 brlt .L40 |
1038 0368 E0E0 ldi r30,lo8(0) |
1039 036a F0E0 ldi r31,hi8(0) |
1040 036c 00C0 rjmp .L41 |
1041 .L40: |
1042 036e EF3F cpi r30,255 |
1043 0370 F105 cpc r31,__zero_reg__ |
1044 0372 04F0 brlt .L41 |
1045 0374 EFEF ldi r30,lo8(255) |
1046 0376 F0E0 ldi r31,hi8(255) |
1047 .L41: |
1048 0378 8C91 ld r24,X |
1049 037a 282F mov r18,r24 |
1050 037c 3327 clr r19 |
1051 037e E217 cp r30,r18 |
1052 0380 F307 cpc r31,r19 |
1053 0382 04F4 brge .L43 |
1054 0384 8150 subi r24,lo8(-(-1)) |
1055 0386 00C0 rjmp .L49 |
1056 .L43: |
1057 0388 2E17 cp r18,r30 |
1058 038a 3F07 cpc r19,r31 |
1059 038c 04F4 brge .L39 |
1060 038e 8F5F subi r24,lo8(-(1)) |
1061 .L49: |
1062 0390 8C93 st X,r24 |
1063 .L39: |
1064 0392 9150 subi r25,lo8(-(-1)) |
1065 0394 1196 adiw r26,1 |
1066 0396 97FF sbrs r25,7 |
1067 0398 00C0 rjmp .L46 |
1068 039a 8091 0000 lds r24,EE_Parameter+65 |
1069 039e 9927 clr r25 |
1070 03a0 AA27 clr r26 |
1071 03a2 BB27 clr r27 |
1072 03a4 BC01 movw r22,r24 |
1073 03a6 CD01 movw r24,r26 |
1074 03a8 24EC ldi r18,lo8(2500) |
1075 03aa 39E0 ldi r19,hi8(2500) |
1076 03ac 40E0 ldi r20,hlo8(2500) |
1077 03ae 50E0 ldi r21,hhi8(2500) |
1078 03b0 0E94 0000 call __mulsi3 |
1079 03b4 DC01 movw r26,r24 |
1080 03b6 CB01 movw r24,r22 |
1081 03b8 8093 0000 sts Umschlag180Nick,r24 |
1082 03bc 9093 0000 sts (Umschlag180Nick)+1,r25 |
1083 03c0 A093 0000 sts (Umschlag180Nick)+2,r26 |
1084 03c4 B093 0000 sts (Umschlag180Nick)+3,r27 |
1085 03c8 8091 0000 lds r24,EE_Parameter+66 |
1086 03cc 9927 clr r25 |
1087 03ce AA27 clr r26 |
1088 03d0 BB27 clr r27 |
1089 03d2 BC01 movw r22,r24 |
1090 03d4 CD01 movw r24,r26 |
1091 03d6 0E94 0000 call __mulsi3 |
1092 03da DC01 movw r26,r24 |
1093 03dc CB01 movw r24,r22 |
1094 03de 8093 0000 sts Umschlag180Roll,r24 |
1095 03e2 9093 0000 sts (Umschlag180Roll)+1,r25 |
1096 03e6 A093 0000 sts (Umschlag180Roll)+2,r26 |
1097 03ea B093 0000 sts (Umschlag180Roll)+3,r27 |
1098 /* epilogue: frame size=0 */ |
1099 03ee DF91 pop r29 |
1100 03f0 CF91 pop r28 |
1101 03f2 0895 ret |
1102 /* epilogue end (size=3) */ |
1103 /* function CalibrierMittelwert size 161 (156) */ |
1105 .section .progmem.data,"a",@progbits |
1108 __c.35: |
1109 0000 0A0D 4143 .string "\n\rACC not calibrated!\r\n" |
1109 4320 6E6F |
1109 7420 6361 |
1109 6C69 6272 |
1109 6174 6564 |
1110 .text |
1111 .global SetNeutral |
1113 SetNeutral: |
1114 /* prologue: frame size=0 */ |
1115 03f4 A0E0 ldi r26,lo8(0) |
1116 03f6 B0E0 ldi r27,hi8(0) |
1117 03f8 E0E0 ldi r30,pm_lo8(1f) |
1118 03fa F0E0 ldi r31,pm_hi8(1f) |
1119 03fc 0C94 0000 jmp __prologue_saves__+12 |
1120 1: |
1121 /* prologue end (size=6) */ |
1122 0400 882E mov r8,r24 |
1123 0402 C0E0 ldi r28,lo8(0) |
1124 0404 D0E0 ldi r29,hi8(0) |
1125 0406 7E01 movw r14,r28 |
1126 0408 6E01 movw r12,r28 |
1127 040a 1092 0000 sts VersionInfo+5,__zero_reg__ |
1128 040e D093 0000 sts (NeutralAccX)+1,r29 |
1129 0412 C093 0000 sts NeutralAccX,r28 |
1130 0416 D093 0000 sts (NeutralAccY)+1,r29 |
1131 041a C093 0000 sts NeutralAccY,r28 |
1132 041e D093 0000 sts (NeutralAccZ)+1,r29 |
1133 0422 C093 0000 sts NeutralAccZ,r28 |
1134 0426 D093 0000 sts (AdNeutralNick)+1,r29 |
1135 042a C093 0000 sts AdNeutralNick,r28 |
1136 042e D093 0000 sts (AdNeutralRoll)+1,r29 |
1137 0432 C093 0000 sts AdNeutralRoll,r28 |
1138 0436 D093 0000 sts (AdNeutralGier)+1,r29 |
1139 043a C093 0000 sts AdNeutralGier,r28 |
1140 043e 1092 0000 sts Parameter_AchsKopplung1,__zero_reg__ |
1141 0442 1092 0000 sts Parameter_AchsKopplung2,__zero_reg__ |
1142 0446 1092 0000 sts ExpandBaro,__zero_reg__ |
1143 044a 0E94 0000 call CalibrierMittelwert |
1144 044e 84E6 ldi r24,lo8(100) |
1145 0450 90E0 ldi r25,hi8(100) |
1146 0452 0E94 0000 call Delay_ms_Mess |
1147 0456 0E94 0000 call CalibrierMittelwert |
1148 045a 8091 0000 lds r24,EE_Parameter+13 |
1149 045e 80FF sbrs r24,0 |
1150 0460 00C0 rjmp .L51 |
1151 0462 8091 0000 lds r24,MessLuftdruck |
1152 0466 9091 0000 lds r25,(MessLuftdruck)+1 |
1153 046a 875B subi r24,lo8(951) |
1154 046c 9340 sbci r25,hi8(951) |
1155 046e 00F4 brsh .L53 |
1156 0470 8091 0000 lds r24,MessLuftdruck |
1157 0474 9091 0000 lds r25,(MessLuftdruck)+1 |
1158 0478 8E5E subi r24,lo8(750) |
1159 047a 9240 sbci r25,hi8(750) |
1160 047c 00F4 brsh .L51 |
1161 .L53: |
1162 047e 0E94 0000 call SucheLuftruckOffset |
1163 .L51: |
1164 0482 0FE1 ldi r16,lo8(31) |
1165 .L57: |
1166 0484 8AE0 ldi r24,lo8(10) |
1167 0486 90E0 ldi r25,hi8(10) |
1168 0488 0E94 0000 call Delay_ms_Mess |
1169 048c 8091 0000 lds r24,AdWertGier |
1170 0490 9091 0000 lds r25,(AdWertGier)+1 |
1171 0494 C80F add r28,r24 |
1172 0496 D91F adc r29,r25 |
1173 0498 8091 0000 lds r24,AdWertNick |
1174 049c 9091 0000 lds r25,(AdWertNick)+1 |
1175 04a0 E80E add r14,r24 |
1176 04a2 F91E adc r15,r25 |
1177 04a4 8091 0000 lds r24,AdWertRoll |
1178 04a8 9091 0000 lds r25,(AdWertRoll)+1 |
1179 04ac C80E add r12,r24 |
1180 04ae D91E adc r13,r25 |
1181 04b0 0150 subi r16,lo8(-(-1)) |
1182 04b2 07FF sbrs r16,7 |
1183 04b4 00C0 rjmp .L57 |
1184 04b6 9701 movw r18,r14 |
1185 04b8 205F subi r18,lo8(-(16)) |
1186 04ba 3F4F sbci r19,hi8(-(16)) |
1187 04bc 3695 lsr r19 |
1188 04be 2795 ror r18 |
1189 04c0 3695 lsr r19 |
1190 04c2 2795 ror r18 |
1191 04c4 3093 0000 sts (AdNeutralNick)+1,r19 |
1192 04c8 2093 0000 sts AdNeutralNick,r18 |
1193 04cc C601 movw r24,r12 |
1194 04ce 4096 adiw r24,16 |
1195 04d0 9695 lsr r25 |
1196 04d2 8795 ror r24 |
1197 04d4 9695 lsr r25 |
1198 04d6 8795 ror r24 |
1199 04d8 9093 0000 sts (AdNeutralRoll)+1,r25 |
1200 04dc 8093 0000 sts AdNeutralRoll,r24 |
1201 04e0 6096 adiw r28,16 |
1202 04e2 F5E0 ldi r31,5 |
1203 04e4 D695 1: lsr r29 |
1204 04e6 C795 ror r28 |
1205 04e8 FA95 dec r31 |
1206 04ea 01F4 brne 1b |
1207 04ec D093 0000 sts (AdNeutralGier)+1,r29 |
1208 04f0 C093 0000 sts AdNeutralGier,r28 |
1209 04f4 9093 0000 sts (StartNeutralRoll)+1,r25 |
1210 04f8 8093 0000 sts StartNeutralRoll,r24 |
1211 04fc 3093 0000 sts (StartNeutralNick)+1,r19 |
1212 0500 2093 0000 sts StartNeutralNick,r18 |
1213 0504 8820 tst r8 |
1214 0506 01F4 brne .+2 |
1215 0508 00C0 rjmp .L58 |
1216 050a 8091 0000 lds r24,Mittelwert_AccNick |
1217 050e 9091 0000 lds r25,(Mittelwert_AccNick)+1 |
1218 0512 97FF sbrs r25,7 |
1219 0514 00C0 rjmp .L59 |
1220 0516 9095 com r25 |
1221 0518 8195 neg r24 |
1222 051a 9F4F sbci r25,lo8(-1) |
1223 .L59: |
1224 051c 6CE0 ldi r22,lo8(12) |
1225 051e 70E0 ldi r23,hi8(12) |
1226 0520 0E94 0000 call __divmodhi4 |
1227 0524 9B01 movw r18,r22 |
1228 0526 7093 0000 sts (NeutralAccX)+1,r23 |
1229 052a 6093 0000 sts NeutralAccX,r22 |
1230 052e 8091 0000 lds r24,Mittelwert_AccRoll |
1231 0532 9091 0000 lds r25,(Mittelwert_AccRoll)+1 |
1232 0536 97FF sbrs r25,7 |
1233 0538 00C0 rjmp .L60 |
1234 053a 9095 com r25 |
1235 053c 8195 neg r24 |
1236 053e 9F4F sbci r25,lo8(-1) |
1237 .L60: |
1238 0540 6CE0 ldi r22,lo8(12) |
1239 0542 70E0 ldi r23,hi8(12) |
1240 0544 0E94 0000 call __divmodhi4 |
1241 0548 7093 0000 sts (NeutralAccY)+1,r23 |
1242 054c 6093 0000 sts NeutralAccY,r22 |
1243 0550 8091 0000 lds r24,Aktuell_az |
1244 0554 9091 0000 lds r25,(Aktuell_az)+1 |
1245 0558 9093 0000 sts (NeutralAccZ)+1,r25 |
1246 055c 8093 0000 sts NeutralAccZ,r24 |
1247 0560 B901 movw r22,r18 |
1248 0562 84E0 ldi r24,lo8(4) |
1249 0564 90E0 ldi r25,hi8(4) |
1250 0566 0E94 0000 call SetParamWord |
1251 056a 6091 0000 lds r22,NeutralAccY |
1252 056e 7091 0000 lds r23,(NeutralAccY)+1 |
1253 0572 86E0 ldi r24,lo8(6) |
1254 0574 90E0 ldi r25,hi8(6) |
1255 0576 0E94 0000 call SetParamWord |
1256 057a 6091 0000 lds r22,NeutralAccZ |
1257 057e 7091 0000 lds r23,(NeutralAccZ)+1 |
1258 0582 88E0 ldi r24,lo8(8) |
1259 0584 90E0 ldi r25,hi8(8) |
1260 0586 0E94 0000 call SetParamWord |
1261 058a 00C0 rjmp .L61 |
1262 .L58: |
1263 058c 84E0 ldi r24,lo8(4) |
1264 058e 90E0 ldi r25,hi8(4) |
1265 0590 0E94 0000 call GetParamWord |
1266 0594 9093 0000 sts (NeutralAccX)+1,r25 |
1267 0598 8093 0000 sts NeutralAccX,r24 |
1268 059c 86E0 ldi r24,lo8(6) |
1269 059e 90E0 ldi r25,hi8(6) |
1270 05a0 0E94 0000 call GetParamWord |
1271 05a4 9093 0000 sts (NeutralAccY)+1,r25 |
1272 05a8 8093 0000 sts NeutralAccY,r24 |
1273 05ac 88E0 ldi r24,lo8(8) |
1274 05ae 90E0 ldi r25,hi8(8) |
1275 05b0 0E94 0000 call GetParamWord |
1276 05b4 9C01 movw r18,r24 |
1277 05b6 9093 0000 sts (NeutralAccZ)+1,r25 |
1278 05ba 8093 0000 sts NeutralAccZ,r24 |
1279 05be 8091 0000 lds r24,NeutralAccX |
1280 05c2 9091 0000 lds r25,(NeutralAccX)+1 |
1281 05c6 8150 subi r24,lo8(2049) |
1282 05c8 9840 sbci r25,hi8(2049) |
1283 05ca 00F4 brsh .L63 |
1284 05cc 8091 0000 lds r24,NeutralAccY |
1285 05d0 9091 0000 lds r25,(NeutralAccY)+1 |
1286 05d4 8150 subi r24,lo8(2049) |
1287 05d6 9840 sbci r25,hi8(2049) |
1288 05d8 00F4 brsh .L63 |
1289 05da 2150 subi r18,lo8(1025) |
1290 05dc 3440 sbci r19,hi8(1025) |
1291 05de 00F0 brlo .L61 |
1292 .L63: |
1293 05e0 80E0 ldi r24,lo8(__c.35) |
1294 05e2 90E0 ldi r25,hi8(__c.35) |
1295 05e4 9F93 push r25 |
1296 05e6 8F93 push r24 |
1297 05e8 80E0 ldi r24,lo8(pm(uart_putchar)) |
1298 05ea 90E0 ldi r25,hi8(pm(uart_putchar)) |
1299 05ec 9F93 push r25 |
1300 05ee 8F93 push r24 |
1301 05f0 E091 0000 lds r30,_printf_P |
1302 05f4 F091 0000 lds r31,(_printf_P)+1 |
1303 05f8 0995 icall |
1304 05fa 8091 0000 lds r24,Mittelwert_AccNick |
1305 05fe 9091 0000 lds r25,(Mittelwert_AccNick)+1 |
1306 0602 97FF sbrs r25,7 |
1307 0604 00C0 rjmp .L64 |
1308 0606 9095 com r25 |
1309 0608 8195 neg r24 |
1310 060a 9F4F sbci r25,lo8(-1) |
1311 .L64: |
1312 060c 6CE0 ldi r22,lo8(12) |
1313 060e 70E0 ldi r23,hi8(12) |
1314 0610 0E94 0000 call __divmodhi4 |
1315 0614 7093 0000 sts (NeutralAccX)+1,r23 |
1316 0618 6093 0000 sts NeutralAccX,r22 |
1317 061c 8091 0000 lds r24,Mittelwert_AccRoll |
1318 0620 9091 0000 lds r25,(Mittelwert_AccRoll)+1 |
1319 0624 97FF sbrs r25,7 |
1320 0626 00C0 rjmp .L65 |
1321 0628 9095 com r25 |
1322 062a 8195 neg r24 |
1323 062c 9F4F sbci r25,lo8(-1) |
1324 .L65: |
1325 062e 6CE0 ldi r22,lo8(12) |
1326 0630 70E0 ldi r23,hi8(12) |
1327 0632 0E94 0000 call __divmodhi4 |
1328 0636 7093 0000 sts (NeutralAccY)+1,r23 |
1329 063a 6093 0000 sts NeutralAccY,r22 |
1330 063e 8091 0000 lds r24,Aktuell_az |
1331 0642 9091 0000 lds r25,(Aktuell_az)+1 |
1332 0646 9093 0000 sts (NeutralAccZ)+1,r25 |
1333 064a 8093 0000 sts NeutralAccZ,r24 |
1334 064e 0F90 pop __tmp_reg__ |
1335 0650 0F90 pop __tmp_reg__ |
1336 0652 0F90 pop __tmp_reg__ |
1337 0654 0F90 pop __tmp_reg__ |
1338 .L61: |
1339 0656 1092 0000 sts (MesswertNick)+1,__zero_reg__ |
1340 065a 1092 0000 sts MesswertNick,__zero_reg__ |
1341 065e 1092 0000 sts (MesswertRoll)+1,__zero_reg__ |
1342 0662 1092 0000 sts MesswertRoll,__zero_reg__ |
1343 0666 1092 0000 sts (MesswertGier)+1,__zero_reg__ |
1344 066a 1092 0000 sts MesswertGier,__zero_reg__ |
1345 066e 84E6 ldi r24,lo8(100) |
1346 0670 90E0 ldi r25,hi8(100) |
1347 0672 0E94 0000 call Delay_ms_Mess |
1348 0676 8091 0000 lds r24,AdWertAccNick |
1349 067a 9091 0000 lds r25,(AdWertAccNick)+1 |
1350 067e 9C01 movw r18,r24 |
1351 0680 220F lsl r18 |
1352 0682 331F rol r19 |
1353 0684 220F lsl r18 |
1354 0686 331F rol r19 |
1355 0688 280F add r18,r24 |
1356 068a 391F adc r19,r25 |
1357 068c 280F add r18,r24 |
1358 068e 391F adc r19,r25 |
1359 0690 3093 0000 sts (Mittelwert_AccNick)+1,r19 |
1360 0694 2093 0000 sts Mittelwert_AccNick,r18 |
1361 0698 8091 0000 lds r24,AdWertAccRoll |
1362 069c 9091 0000 lds r25,(AdWertAccRoll)+1 |
1363 06a0 8C01 movw r16,r24 |
1364 06a2 000F lsl r16 |
1365 06a4 111F rol r17 |
1366 06a6 000F lsl r16 |
1367 06a8 111F rol r17 |
1368 06aa 080F add r16,r24 |
1369 06ac 191F adc r17,r25 |
1370 06ae 080F add r16,r24 |
1371 06b0 191F adc r17,r25 |
1372 06b2 1093 0000 sts (Mittelwert_AccRoll)+1,r17 |
1373 06b6 0093 0000 sts Mittelwert_AccRoll,r16 |
1374 06ba 8091 0000 lds r24,EE_Parameter+28 |
1375 06be C82E mov r12,r24 |
1376 06c0 DD24 clr r13 |
1377 06c2 EE24 clr r14 |
1378 06c4 FF24 clr r15 |
1379 06c6 4427 clr r20 |
1380 06c8 37FD sbrc r19,7 |
1381 06ca 4095 com r20 |
1382 06cc 542F mov r21,r20 |
1383 06ce C701 movw r24,r14 |
1384 06d0 B601 movw r22,r12 |
1385 06d2 0E94 0000 call __mulsi3 |
1386 06d6 4B01 movw r8,r22 |
1387 06d8 5C01 movw r10,r24 |
1388 06da 6093 0000 sts IntegralNick,r22 |
1389 06de 7093 0000 sts (IntegralNick)+1,r23 |
1390 06e2 8093 0000 sts (IntegralNick)+2,r24 |
1391 06e6 9093 0000 sts (IntegralNick)+3,r25 |
1392 06ea 9801 movw r18,r16 |
1393 06ec 4427 clr r20 |
1394 06ee 37FD sbrc r19,7 |
1395 06f0 4095 com r20 |
1396 06f2 542F mov r21,r20 |
1397 06f4 C701 movw r24,r14 |
1398 06f6 B601 movw r22,r12 |
1399 06f8 0E94 0000 call __mulsi3 |
1400 06fc DC01 movw r26,r24 |
1401 06fe CB01 movw r24,r22 |
1402 0700 8093 0000 sts IntegralRoll,r24 |
1403 0704 9093 0000 sts (IntegralRoll)+1,r25 |
1404 0708 A093 0000 sts (IntegralRoll)+2,r26 |
1405 070c B093 0000 sts (IntegralRoll)+3,r27 |
1406 0710 8092 0000 sts Mess_IntegralNick,r8 |
1407 0714 9092 0000 sts (Mess_IntegralNick)+1,r9 |
1408 0718 A092 0000 sts (Mess_IntegralNick)+2,r10 |
1409 071c B092 0000 sts (Mess_IntegralNick)+3,r11 |
1410 0720 8093 0000 sts Mess_IntegralRoll,r24 |
1411 0724 9093 0000 sts (Mess_IntegralRoll)+1,r25 |
1412 0728 A093 0000 sts (Mess_IntegralRoll)+2,r26 |
1413 072c B093 0000 sts (Mess_IntegralRoll)+3,r27 |
1414 0730 1092 0000 sts Mess_Integral_Gier,__zero_reg__ |
1415 0734 1092 0000 sts (Mess_Integral_Gier)+1,__zero_reg__ |
1416 0738 1092 0000 sts (Mess_Integral_Gier)+2,__zero_reg__ |
1417 073c 1092 0000 sts (Mess_Integral_Gier)+3,__zero_reg__ |
1418 0740 8091 0000 lds r24,Luftdruck |
1419 0744 9091 0000 lds r25,(Luftdruck)+1 |
1420 0748 A091 0000 lds r26,(Luftdruck)+2 |
1421 074c B091 0000 lds r27,(Luftdruck)+3 |
1422 0750 9093 0000 sts (StartLuftdruck)+1,r25 |
1423 0754 8093 0000 sts StartLuftdruck,r24 |
1424 0758 1092 0000 sts (VarioMeter)+1,__zero_reg__ |
1425 075c 1092 0000 sts VarioMeter,__zero_reg__ |
1426 0760 1092 0000 sts Mess_Integral_Hoch,__zero_reg__ |
1427 0764 1092 0000 sts (Mess_Integral_Hoch)+1,__zero_reg__ |
1428 0768 1092 0000 sts (Mess_Integral_Hoch)+2,__zero_reg__ |
1429 076c 1092 0000 sts (Mess_Integral_Hoch)+3,__zero_reg__ |
1430 0770 0091 0000 lds r16,KompassValue |
1431 0774 1091 0000 lds r17,(KompassValue)+1 |
1432 0778 1093 0000 sts (KompassSollWert)+1,r17 |
1433 077c 0093 0000 sts KompassSollWert,r16 |
1434 0780 84E6 ldi r24,lo8(100) |
1435 0782 90E0 ldi r25,hi8(100) |
1436 0784 9093 0000 sts (KompassSignalSchlecht)+1,r25 |
1437 0788 8093 0000 sts KompassSignalSchlecht,r24 |
1438 078c 82E3 ldi r24,lo8(50) |
1439 078e 90E0 ldi r25,hi8(50) |
1440 0790 9093 0000 sts (beeptime)+1,r25 |
1441 0794 8093 0000 sts beeptime,r24 |
1442 0798 8091 0000 lds r24,EE_Parameter+65 |
1443 079c 9927 clr r25 |
1444 079e AA27 clr r26 |
1445 07a0 BB27 clr r27 |
1446 07a2 BC01 movw r22,r24 |
1447 07a4 CD01 movw r24,r26 |
1448 07a6 24EC ldi r18,lo8(2500) |
1449 07a8 39E0 ldi r19,hi8(2500) |
1450 07aa 40E0 ldi r20,hlo8(2500) |
1451 07ac 50E0 ldi r21,hhi8(2500) |
1452 07ae 0E94 0000 call __mulsi3 |
1453 07b2 DC01 movw r26,r24 |
1454 07b4 CB01 movw r24,r22 |
1455 07b6 8856 subi r24,lo8(-(15000)) |
1456 07b8 954C sbci r25,hi8(-(15000)) |
1457 07ba AF4F sbci r26,hlo8(-(15000)) |
1458 07bc BF4F sbci r27,hhi8(-(15000)) |
1459 07be 8093 0000 sts Umschlag180Nick,r24 |
1460 07c2 9093 0000 sts (Umschlag180Nick)+1,r25 |
1461 07c6 A093 0000 sts (Umschlag180Nick)+2,r26 |
1462 07ca B093 0000 sts (Umschlag180Nick)+3,r27 |
1463 07ce 8091 0000 lds r24,EE_Parameter+66 |
1464 07d2 9927 clr r25 |
1465 07d4 AA27 clr r26 |
1466 07d6 BB27 clr r27 |
1467 07d8 BC01 movw r22,r24 |
1468 07da CD01 movw r24,r26 |
1469 07dc 0E94 0000 call __mulsi3 |
1470 07e0 DC01 movw r26,r24 |
1471 07e2 CB01 movw r24,r22 |
1472 07e4 8856 subi r24,lo8(-(15000)) |
1473 07e6 954C sbci r25,hi8(-(15000)) |
1474 07e8 AF4F sbci r26,hlo8(-(15000)) |
1475 07ea BF4F sbci r27,hhi8(-(15000)) |
1476 07ec 8093 0000 sts Umschlag180Roll,r24 |
1477 07f0 9093 0000 sts (Umschlag180Roll)+1,r25 |
1478 07f4 A093 0000 sts (Umschlag180Roll)+2,r26 |
1479 07f8 B093 0000 sts (Umschlag180Roll)+3,r27 |
1480 07fc 1092 0000 sts (ExternHoehenValue)+1,__zero_reg__ |
1481 0800 1092 0000 sts ExternHoehenValue,__zero_reg__ |
1482 0804 C801 movw r24,r16 |
1483 0806 AA27 clr r26 |
1484 0808 97FD sbrc r25,7 |
1485 080a A095 com r26 |
1486 080c BA2F mov r27,r26 |
1487 080e 2091 0000 lds r18,GIER_GRAD_FAKTOR |
1488 0812 3091 0000 lds r19,(GIER_GRAD_FAKTOR)+1 |
1489 0816 4091 0000 lds r20,(GIER_GRAD_FAKTOR)+2 |
1490 081a 5091 0000 lds r21,(GIER_GRAD_FAKTOR)+3 |
1491 081e BC01 movw r22,r24 |
1492 0820 CD01 movw r24,r26 |
1493 0822 0E94 0000 call __mulsi3 |
1494 0826 DC01 movw r26,r24 |
1495 0828 CB01 movw r24,r22 |
1496 082a 8093 0000 sts ErsatzKompass,r24 |
1497 082e 9093 0000 sts (ErsatzKompass)+1,r25 |
1498 0832 A093 0000 sts (ErsatzKompass)+2,r26 |
1499 0836 B093 0000 sts (ErsatzKompass)+3,r27 |
1500 083a 1092 0000 sts (GierGyroFehler)+1,__zero_reg__ |
1501 083e 1092 0000 sts GierGyroFehler,__zero_reg__ |
1502 0842 0E94 0000 call LED_Init |
1503 0846 8091 0000 lds r24,FC_StatusFlags |
1504 084a 8460 ori r24,lo8(4) |
1505 084c 8093 0000 sts FC_StatusFlags,r24 |
1506 0850 8FEF ldi r24,lo8(-1) |
1507 0852 8093 0000 sts FromNaviCtrl_Value,r24 |
1508 0856 1092 0000 sts FromNaviCtrl_Value+1,__zero_reg__ |
1509 085a 80E2 ldi r24,lo8(32) |
1510 085c 8093 0000 sts FromNaviCtrl_Value+2,r24 |
1511 0860 C0E0 ldi r28,lo8(Poti) |
1512 0862 D0E0 ldi r29,hi8(Poti) |
1513 0864 A0E0 ldi r26,lo8(EE_Parameter+5) |
1514 0866 B0E0 ldi r27,hi8(EE_Parameter+5) |
1515 0868 07E0 ldi r16,lo8(7) |
1516 .L69: |
1517 086a 8D91 ld r24,X+ |
1518 086c E82F mov r30,r24 |
1519 086e FF27 clr r31 |
1520 0870 EE0F add r30,r30 |
1521 0872 FF1F adc r31,r31 |
1522 0874 E050 subi r30,lo8(-(PPM_in)) |
1523 0876 F040 sbci r31,hi8(-(PPM_in)) |
1524 0878 8081 ld r24,Z |
1525 087a 9181 ldd r25,Z+1 |
1526 087c 8158 subi r24,lo8(-(127)) |
1527 087e 8993 st Y+,r24 |
1528 0880 0150 subi r16,lo8(-(-1)) |
1529 0882 07FF sbrs r16,7 |
1530 0884 00C0 rjmp .L69 |
1531 0886 84E6 ldi r24,lo8(100) |
1532 0888 8093 0000 sts SenderOkay,r24 |
1533 088c 8091 0000 lds r24,ServoActive |
1534 0890 8823 tst r24 |
1535 0892 01F0 breq .L70 |
1536 0894 579A sbi 42-0x20,7 |
1537 0896 00C0 rjmp .L71 |
1538 .L70: |
1539 0898 80E0 ldi r24,lo8(4352) |
1540 089a 91E1 ldi r25,hi8(4352) |
1541 089c 9093 0000 sts (NickServoValue)+1,r25 |
1542 08a0 8093 0000 sts NickServoValue,r24 |
1543 .L71: |
1544 08a4 8091 0000 lds r24,AdNeutralNick |
1545 08a8 9091 0000 lds r25,(AdNeutralNick)+1 |
1546 08ac 8056 subi r24,lo8(-(-2400)) |
1547 08ae 9940 sbci r25,hi8(-(-2400)) |
1548 08b0 815C subi r24,lo8(11201) |
1549 08b2 9B42 sbci r25,hi8(11201) |
1550 08b4 00F0 brlo .L72 |
1551 08b6 8091 0000 lds r24,VersionInfo+5 |
1552 08ba 8160 ori r24,lo8(1) |
1553 08bc 8093 0000 sts VersionInfo+5,r24 |
1554 .L72: |
1555 08c0 8091 0000 lds r24,AdNeutralRoll |
1556 08c4 9091 0000 lds r25,(AdNeutralRoll)+1 |
1557 08c8 8056 subi r24,lo8(-(-2400)) |
1558 08ca 9940 sbci r25,hi8(-(-2400)) |
1559 08cc 815C subi r24,lo8(11201) |
1560 08ce 9B42 sbci r25,hi8(11201) |
1561 08d0 00F0 brlo .L73 |
1562 08d2 8091 0000 lds r24,VersionInfo+5 |
1563 08d6 8260 ori r24,lo8(2) |
1564 08d8 8093 0000 sts VersionInfo+5,r24 |
1565 .L73: |
1566 08dc 8091 0000 lds r24,AdNeutralGier |
1567 08e0 9091 0000 lds r25,(AdNeutralGier)+1 |
1568 08e4 8C52 subi r24,lo8(-(-300)) |
1569 08e6 9140 sbci r25,hi8(-(-300)) |
1570 08e8 8957 subi r24,lo8(1401) |
1571 08ea 9540 sbci r25,hi8(1401) |
1572 08ec 00F0 brlo .L74 |
1573 08ee 8091 0000 lds r24,VersionInfo+5 |
1574 08f2 8460 ori r24,lo8(4) |
1575 08f4 8093 0000 sts VersionInfo+5,r24 |
1576 .L74: |
1577 08f8 8091 0000 lds r24,NeutralAccX |
1578 08fc 9091 0000 lds r25,(NeutralAccX)+1 |
1579 0900 8C52 subi r24,lo8(-(-300)) |
1580 0902 9140 sbci r25,hi8(-(-300)) |
1581 0904 835C subi r24,lo8(451) |
1582 0906 9140 sbci r25,hi8(451) |
1583 0908 00F0 brlo .L75 |
1584 090a 8091 0000 lds r24,VersionInfo+5 |
1585 090e 8860 ori r24,lo8(8) |
1586 0910 8093 0000 sts VersionInfo+5,r24 |
1587 .L75: |
1588 0914 8091 0000 lds r24,NeutralAccY |
1589 0918 9091 0000 lds r25,(NeutralAccY)+1 |
1590 091c 8C52 subi r24,lo8(-(-300)) |
1591 091e 9140 sbci r25,hi8(-(-300)) |
1592 0920 835C subi r24,lo8(451) |
1593 0922 9140 sbci r25,hi8(451) |
1594 0924 00F0 brlo .L76 |
1595 0926 8091 0000 lds r24,VersionInfo+5 |
1596 092a 8061 ori r24,lo8(16) |
1597 092c 8093 0000 sts VersionInfo+5,r24 |
1598 .L76: |
1599 0930 8091 0000 lds r24,NeutralAccZ |
1600 0934 9091 0000 lds r25,(NeutralAccZ)+1 |
1601 0938 8050 subi r24,lo8(-(-512)) |
1602 093a 9240 sbci r25,hi8(-(-512)) |
1603 093c 8355 subi r24,lo8(339) |
1604 093e 9140 sbci r25,hi8(339) |
1605 0940 00F0 brlo .L77 |
1606 0942 8091 0000 lds r24,VersionInfo+5 |
1607 0946 8062 ori r24,lo8(32) |
1608 0948 8093 0000 sts VersionInfo+5,r24 |
1609 .L77: |
1610 094c 86E4 ldi r24,lo8(70) |
1611 094e 8093 0000 sts carefree_old,r24 |
1612 0952 0E94 0000 call LIBFC_HoTT_Clear |
1613 /* epilogue: frame size=0 */ |
1614 0956 ECE0 ldi r30,12 |
1615 0958 CDB7 in r28,__SP_L__ |
1616 095a DEB7 in r29,__SP_H__ |
1617 095c 0C94 0000 jmp __epilogue_restores__+12 |
1618 /* epilogue end (size=5) */ |
1619 /* function SetNeutral size 705 (694) */ |
1621 .lcomm tmpl.27,4 |
1622 .lcomm tmpl2.28,4 |
1623 .lcomm tmpl3.29,4 |
1624 .lcomm tmpl4.30,4 |
1625 .lcomm oldNick.31,2 |
1626 .lcomm oldRoll.32,2 |
1627 .lcomm d2Roll.33,2 |
1628 .lcomm d2Nick.34,2 |
1629 .global Mittelwert |
1631 Mittelwert: |
1632 /* prologue: frame size=19 */ |
1633 0960 A3E1 ldi r26,lo8(19) |
1634 0962 B0E0 ldi r27,hi8(19) |
1635 0964 E0E0 ldi r30,pm_lo8(1f) |
1636 0966 F0E0 ldi r31,pm_hi8(1f) |
1637 0968 0C94 0000 jmp __prologue_saves__+0 |
1638 1: |
1639 /* prologue end (size=6) */ |
1640 096c 8091 0000 lds r24,AdNeutralGier |
1641 0970 9091 0000 lds r25,(AdNeutralGier)+1 |
1642 0974 2091 0000 lds r18,AdWertGier |
1643 0978 3091 0000 lds r19,(AdWertGier)+1 |
1644 097c 821B sub r24,r18 |
1645 097e 930B sbc r25,r19 |
1646 0980 9093 0000 sts (MesswertGier)+1,r25 |
1647 0984 8093 0000 sts MesswertGier,r24 |
1648 0988 8091 0000 lds r24,AdWertNickFilter |
1649 098c 9091 0000 lds r25,(AdWertNickFilter)+1 |
1650 0990 97FD sbrc r25,7 |
1651 0992 0796 adiw r24,7 |
1652 .L83: |
1653 0994 9C01 movw r18,r24 |
1654 0996 13E0 ldi r17,3 |
1655 0998 3595 1: asr r19 |
1656 099a 2795 ror r18 |
1657 099c 1A95 dec r17 |
1658 099e 01F4 brne 1b |
1659 09a0 3093 0000 sts (MesswertNick)+1,r19 |
1660 09a4 2093 0000 sts MesswertNick,r18 |
1661 09a8 8091 0000 lds r24,AdWertRollFilter |
1662 09ac 9091 0000 lds r25,(AdWertRollFilter)+1 |
1663 09b0 97FD sbrc r25,7 |
1664 09b2 0796 adiw r24,7 |
1665 .L84: |
1666 09b4 B3E0 ldi r27,3 |
1667 09b6 9595 1: asr r25 |
1668 09b8 8795 ror r24 |
1669 09ba BA95 dec r27 |
1670 09bc 01F4 brne 1b |
1671 09be 9093 0000 sts (MesswertRoll)+1,r25 |
1672 09c2 8093 0000 sts MesswertRoll,r24 |
1673 09c6 3093 0000 sts (RohMesswertNick)+1,r19 |
1674 09ca 2093 0000 sts RohMesswertNick,r18 |
1675 09ce 9093 0000 sts (RohMesswertRoll)+1,r25 |
1676 09d2 8093 0000 sts RohMesswertRoll,r24 |
1677 09d6 8091 0000 lds r24,Mittelwert_AccNick |
1678 09da 9091 0000 lds r25,(Mittelwert_AccNick)+1 |
1679 09de AC01 movw r20,r24 |
1680 09e0 440F lsl r20 |
1681 09e2 551F rol r21 |
1682 09e4 480F add r20,r24 |
1683 09e6 591F adc r21,r25 |
1684 09e8 2091 0000 lds r18,AdWertAccNick |
1685 09ec 3091 0000 lds r19,(AdWertAccNick)+1 |
1686 09f0 C901 movw r24,r18 |
1687 09f2 880F lsl r24 |
1688 09f4 991F rol r25 |
1689 09f6 880F lsl r24 |
1690 09f8 991F rol r25 |
1691 09fa 820F add r24,r18 |
1692 09fc 931F adc r25,r19 |
1693 09fe 820F add r24,r18 |
1694 0a00 931F adc r25,r19 |
1695 0a02 480F add r20,r24 |
1696 0a04 591F adc r21,r25 |
1697 0a06 57FF sbrs r21,7 |
1698 0a08 00C0 rjmp .L85 |
1699 0a0a 4D5F subi r20,lo8(-(3)) |
1700 0a0c 5F4F sbci r21,hi8(-(3)) |
1701 .L85: |
1702 0a0e 5595 asr r21 |
1703 0a10 4795 ror r20 |
1704 0a12 5595 asr r21 |
1705 0a14 4795 ror r20 |
1706 0a16 5093 0000 sts (Mittelwert_AccNick)+1,r21 |
1707 0a1a 4093 0000 sts Mittelwert_AccNick,r20 |
1708 0a1e 8091 0000 lds r24,Mittelwert_AccRoll |
1709 0a22 9091 0000 lds r25,(Mittelwert_AccRoll)+1 |
1710 0a26 AC01 movw r20,r24 |
1711 0a28 440F lsl r20 |
1712 0a2a 551F rol r21 |
1713 0a2c 480F add r20,r24 |
1714 0a2e 591F adc r21,r25 |
1715 0a30 2091 0000 lds r18,AdWertAccRoll |
1716 0a34 3091 0000 lds r19,(AdWertAccRoll)+1 |
1717 0a38 C901 movw r24,r18 |
1718 0a3a 880F lsl r24 |
1719 0a3c 991F rol r25 |
1720 0a3e 880F lsl r24 |
1721 0a40 991F rol r25 |
1722 0a42 820F add r24,r18 |
1723 0a44 931F adc r25,r19 |
1724 0a46 820F add r24,r18 |
1725 0a48 931F adc r25,r19 |
1726 0a4a 480F add r20,r24 |
1727 0a4c 591F adc r21,r25 |
1728 0a4e 57FF sbrs r21,7 |
1729 0a50 00C0 rjmp .L86 |
1730 0a52 4D5F subi r20,lo8(-(3)) |
1731 0a54 5F4F sbci r21,hi8(-(3)) |
1732 .L86: |
1733 0a56 5595 asr r21 |
1734 0a58 4795 ror r20 |
1735 0a5a 5595 asr r21 |
1736 0a5c 4795 ror r20 |
1737 0a5e 5093 0000 sts (Mittelwert_AccRoll)+1,r21 |
1738 0a62 4093 0000 sts Mittelwert_AccRoll,r20 |
1739 0a66 2091 0000 lds r18,AdWertAccNick |
1740 0a6a 3091 0000 lds r19,(AdWertAccNick)+1 |
1741 0a6e C901 movw r24,r18 |
1742 0a70 880F lsl r24 |
1743 0a72 991F rol r25 |
1744 0a74 880F lsl r24 |
1745 0a76 991F rol r25 |
1746 0a78 820F add r24,r18 |
1747 0a7a 931F adc r25,r19 |
1748 0a7c 820F add r24,r18 |
1749 0a7e 931F adc r25,r19 |
1750 0a80 9C01 movw r18,r24 |
1751 0a82 4427 clr r20 |
1752 0a84 37FD sbrc r19,7 |
1753 0a86 4095 com r20 |
1754 0a88 542F mov r21,r20 |
1755 0a8a 8091 0000 lds r24,IntegralAccNick |
1756 0a8e 9091 0000 lds r25,(IntegralAccNick)+1 |
1757 0a92 A091 0000 lds r26,(IntegralAccNick)+2 |
1758 0a96 B091 0000 lds r27,(IntegralAccNick)+3 |
1759 0a9a 820F add r24,r18 |
1760 0a9c 931F adc r25,r19 |
1761 0a9e A41F adc r26,r20 |
1762 0aa0 B51F adc r27,r21 |
1763 0aa2 8093 0000 sts IntegralAccNick,r24 |
1764 0aa6 9093 0000 sts (IntegralAccNick)+1,r25 |
1765 0aaa A093 0000 sts (IntegralAccNick)+2,r26 |
1766 0aae B093 0000 sts (IntegralAccNick)+3,r27 |
1767 0ab2 2091 0000 lds r18,AdWertAccRoll |
1768 0ab6 3091 0000 lds r19,(AdWertAccRoll)+1 |
1769 0aba C901 movw r24,r18 |
1770 0abc 880F lsl r24 |
1771 0abe 991F rol r25 |
1772 0ac0 880F lsl r24 |
1773 0ac2 991F rol r25 |
1774 0ac4 820F add r24,r18 |
1775 0ac6 931F adc r25,r19 |
1776 0ac8 820F add r24,r18 |
1777 0aca 931F adc r25,r19 |
1778 0acc 9C01 movw r18,r24 |
1779 0ace 4427 clr r20 |
1780 0ad0 37FD sbrc r19,7 |
1781 0ad2 4095 com r20 |
1782 0ad4 542F mov r21,r20 |
1783 0ad6 8091 0000 lds r24,IntegralAccRoll |
1784 0ada 9091 0000 lds r25,(IntegralAccRoll)+1 |
1785 0ade A091 0000 lds r26,(IntegralAccRoll)+2 |
1786 0ae2 B091 0000 lds r27,(IntegralAccRoll)+3 |
1787 0ae6 820F add r24,r18 |
1788 0ae8 931F adc r25,r19 |
1789 0aea A41F adc r26,r20 |
1790 0aec B51F adc r27,r21 |
1791 0aee 8093 0000 sts IntegralAccRoll,r24 |
1792 0af2 9093 0000 sts (IntegralAccRoll)+1,r25 |
1793 0af6 A093 0000 sts (IntegralAccRoll)+2,r26 |
1794 0afa B093 0000 sts (IntegralAccRoll)+3,r27 |
1795 0afe 8091 0000 lds r24,NaviAccNick |
1796 0b02 9091 0000 lds r25,(NaviAccNick)+1 |
1797 0b06 2091 0000 lds r18,AdWertAccNick |
1798 0b0a 3091 0000 lds r19,(AdWertAccNick)+1 |
1799 0b0e 820F add r24,r18 |
1800 0b10 931F adc r25,r19 |
1801 0b12 9093 0000 sts (NaviAccNick)+1,r25 |
1802 0b16 8093 0000 sts NaviAccNick,r24 |
1803 0b1a 8091 0000 lds r24,NaviAccRoll |
1804 0b1e 9091 0000 lds r25,(NaviAccRoll)+1 |
1805 0b22 2091 0000 lds r18,AdWertAccRoll |
1806 0b26 3091 0000 lds r19,(AdWertAccRoll)+1 |
1807 0b2a 820F add r24,r18 |
1808 0b2c 931F adc r25,r19 |
1809 0b2e 9093 0000 sts (NaviAccRoll)+1,r25 |
1810 0b32 8093 0000 sts NaviAccRoll,r24 |
1811 0b36 8091 0000 lds r24,NaviCntAcc |
1812 0b3a 9091 0000 lds r25,(NaviCntAcc)+1 |
1813 0b3e 0196 adiw r24,1 |
1814 0b40 9093 0000 sts (NaviCntAcc)+1,r25 |
1815 0b44 8093 0000 sts NaviCntAcc,r24 |
1816 0b48 8091 0000 lds r24,Aktuell_az |
1817 0b4c 9091 0000 lds r25,(Aktuell_az)+1 |
1818 0b50 2091 0000 lds r18,NeutralAccZ |
1819 0b54 3091 0000 lds r19,(NeutralAccZ)+1 |
1820 0b58 821B sub r24,r18 |
1821 0b5a 930B sbc r25,r19 |
1822 0b5c 9C01 movw r18,r24 |
1823 0b5e 4427 clr r20 |
1824 0b60 37FD sbrc r19,7 |
1825 0b62 4095 com r20 |
1826 0b64 542F mov r21,r20 |
1827 0b66 8091 0000 lds r24,IntegralAccZ |
1828 0b6a 9091 0000 lds r25,(IntegralAccZ)+1 |
1829 0b6e A091 0000 lds r26,(IntegralAccZ)+2 |
1830 0b72 B091 0000 lds r27,(IntegralAccZ)+3 |
1831 0b76 820F add r24,r18 |
1832 0b78 931F adc r25,r19 |
1833 0b7a A41F adc r26,r20 |
1834 0b7c B51F adc r27,r21 |
1835 0b7e 8093 0000 sts IntegralAccZ,r24 |
1836 0b82 9093 0000 sts (IntegralAccZ)+1,r25 |
1837 0b86 A093 0000 sts (IntegralAccZ)+2,r26 |
1838 0b8a B093 0000 sts (IntegralAccZ)+3,r27 |
1839 0b8e 8FEC ldi r24,lo8(-49) |
1840 0b90 8093 7A00 sts 122,r24 |
1841 0b94 1092 0000 sts AdReady,__zero_reg__ |
1842 0b98 2091 0000 lds r18,Mess_IntegralRoll |
1843 0b9c 3091 0000 lds r19,(Mess_IntegralRoll)+1 |
1844 0ba0 4091 0000 lds r20,(Mess_IntegralRoll)+2 |
1845 0ba4 5091 0000 lds r21,(Mess_IntegralRoll)+3 |
1846 0ba8 2987 std Y+9,r18 |
1847 0baa 3A87 std Y+10,r19 |
1848 0bac 4B87 std Y+11,r20 |
1849 0bae 5C87 std Y+12,r21 |
1850 0bb0 2954 subi r18,lo8(93001) |
1851 0bb2 3B46 sbci r19,hi8(93001) |
1852 0bb4 4140 sbci r20,hlo8(93001) |
1853 0bb6 5040 sbci r21,hhi8(93001) |
1854 0bb8 04F0 brlt .L87 |
1855 0bba 28E4 ldi r18,lo8(93000) |
1856 0bbc 3BE6 ldi r19,hi8(93000) |
1857 0bbe 41E0 ldi r20,hlo8(93000) |
1858 0bc0 50E0 ldi r21,hhi8(93000) |
1859 0bc2 00C0 rjmp .L167 |
1860 .L87: |
1861 0bc4 8985 ldd r24,Y+9 |
1862 0bc6 9A85 ldd r25,Y+10 |
1863 0bc8 AB85 ldd r26,Y+11 |
1864 0bca BC85 ldd r27,Y+12 |
1865 0bcc 885B subi r24,lo8(-93000) |
1866 0bce 9449 sbci r25,hi8(-93000) |
1867 0bd0 AE4F sbci r26,hlo8(-93000) |
1868 0bd2 BF4F sbci r27,hhi8(-93000) |
1869 0bd4 04F4 brge .L89 |
1870 0bd6 28EB ldi r18,lo8(-93000) |
1871 0bd8 34E9 ldi r19,hi8(-93000) |
1872 0bda 4EEF ldi r20,hlo8(-93000) |
1873 0bdc 5FEF ldi r21,hhi8(-93000) |
1874 .L167: |
1875 0bde 2D83 std Y+5,r18 |
1876 0be0 3E83 std Y+6,r19 |
1877 0be2 4F83 std Y+7,r20 |
1878 0be4 5887 std Y+8,r21 |
1879 0be6 00C0 rjmp .L88 |
1880 .L89: |
1881 0be8 8985 ldd r24,Y+9 |
1882 0bea 9A85 ldd r25,Y+10 |
1883 0bec AB85 ldd r26,Y+11 |
1884 0bee BC85 ldd r27,Y+12 |
1885 0bf0 8D83 std Y+5,r24 |
1886 0bf2 9E83 std Y+6,r25 |
1887 0bf4 AF83 std Y+7,r26 |
1888 0bf6 B887 std Y+8,r27 |
1889 .L88: |
1890 0bf8 2091 0000 lds r18,Mess_IntegralNick |
1891 0bfc 3091 0000 lds r19,(Mess_IntegralNick)+1 |
1892 0c00 4091 0000 lds r20,(Mess_IntegralNick)+2 |
1893 0c04 5091 0000 lds r21,(Mess_IntegralNick)+3 |
1894 0c08 2D87 std Y+13,r18 |
1895 0c0a 3E87 std Y+14,r19 |
1896 0c0c 4F87 std Y+15,r20 |
1897 0c0e 588B std Y+16,r21 |
1898 0c10 2954 subi r18,lo8(93001) |
1899 0c12 3B46 sbci r19,hi8(93001) |
1900 0c14 4140 sbci r20,hlo8(93001) |
1901 0c16 5040 sbci r21,hhi8(93001) |
1902 0c18 04F0 brlt .L91 |
1903 0c1a 28E4 ldi r18,lo8(93000) |
1904 0c1c 3BE6 ldi r19,hi8(93000) |
1905 0c1e 41E0 ldi r20,hlo8(93000) |
1906 0c20 50E0 ldi r21,hhi8(93000) |
1907 0c22 00C0 rjmp .L168 |
1908 .L91: |
1909 0c24 8D85 ldd r24,Y+13 |
1910 0c26 9E85 ldd r25,Y+14 |
1911 0c28 AF85 ldd r26,Y+15 |
1912 0c2a B889 ldd r27,Y+16 |
1913 0c2c 885B subi r24,lo8(-93000) |
1914 0c2e 9449 sbci r25,hi8(-93000) |
1915 0c30 AE4F sbci r26,hlo8(-93000) |
1916 0c32 BF4F sbci r27,hhi8(-93000) |
1917 0c34 04F4 brge .L93 |
1918 0c36 28EB ldi r18,lo8(-93000) |
1919 0c38 34E9 ldi r19,hi8(-93000) |
1920 0c3a 4EEF ldi r20,hlo8(-93000) |
1921 0c3c 5FEF ldi r21,hhi8(-93000) |
1922 .L168: |
1923 0c3e 2983 std Y+1,r18 |
1924 0c40 3A83 std Y+2,r19 |
1925 0c42 4B83 std Y+3,r20 |
1926 0c44 5C83 std Y+4,r21 |
1927 0c46 00C0 rjmp .L92 |
1928 .L93: |
1929 0c48 8D85 ldd r24,Y+13 |
1930 0c4a 9E85 ldd r25,Y+14 |
1931 0c4c AF85 ldd r26,Y+15 |
1932 0c4e B889 ldd r27,Y+16 |
1933 0c50 8983 std Y+1,r24 |
1934 0c52 9A83 std Y+2,r25 |
1935 0c54 AB83 std Y+3,r26 |
1936 0c56 BC83 std Y+4,r27 |
1937 .L92: |
1938 0c58 A091 0000 lds r26,MesswertGier |
1939 0c5c B091 0000 lds r27,(MesswertGier)+1 |
1940 0c60 BB8B std Y+19,r27 |
1941 0c62 AA8B std Y+18,r26 |
1942 0c64 FD01 movw r30,r26 |
1943 0c66 CF01 movw r24,r30 |
1944 0c68 AA27 clr r26 |
1945 0c6a 97FD sbrc r25,7 |
1946 0c6c A095 com r26 |
1947 0c6e BA2F mov r27,r26 |
1948 0c70 A090 0000 lds r10,Mess_Integral_Gier |
1949 0c74 B090 0000 lds r11,(Mess_Integral_Gier)+1 |
1950 0c78 C090 0000 lds r12,(Mess_Integral_Gier)+2 |
1951 0c7c D090 0000 lds r13,(Mess_Integral_Gier)+3 |
1952 0c80 A80E add r10,r24 |
1953 0c82 B91E adc r11,r25 |
1954 0c84 CA1E adc r12,r26 |
1955 0c86 DB1E adc r13,r27 |
1956 0c88 A092 0000 sts Mess_Integral_Gier,r10 |
1957 0c8c B092 0000 sts (Mess_Integral_Gier)+1,r11 |
1958 0c90 C092 0000 sts (Mess_Integral_Gier)+2,r12 |
1959 0c94 D092 0000 sts (Mess_Integral_Gier)+3,r13 |
1960 0c98 E090 0000 lds r14,ErsatzKompass |
1961 0c9c F090 0000 lds r15,(ErsatzKompass)+1 |
1962 0ca0 0091 0000 lds r16,(ErsatzKompass)+2 |
1963 0ca4 1091 0000 lds r17,(ErsatzKompass)+3 |
1964 0ca8 E80E add r14,r24 |
1965 0caa F91E adc r15,r25 |
1966 0cac 0A1F adc r16,r26 |
1967 0cae 1B1F adc r17,r27 |
1968 0cb0 E092 0000 sts ErsatzKompass,r14 |
1969 0cb4 F092 0000 sts (ErsatzKompass)+1,r15 |
1970 0cb8 0093 0000 sts (ErsatzKompass)+2,r16 |
1971 0cbc 1093 0000 sts (ErsatzKompass)+3,r17 |
1972 0cc0 F091 0000 lds r31,Looping_Nick |
1973 0cc4 F98B std Y+17,r31 |
1974 0cc6 FF23 tst r31 |
1975 0cc8 01F0 breq .+2 |
1976 0cca 00C0 rjmp .L95 |
1977 0ccc 8091 0000 lds r24,Looping_Roll |
1978 0cd0 8823 tst r24 |
1979 0cd2 01F0 breq .+2 |
1980 0cd4 00C0 rjmp .L95 |
1981 0cd6 8091 0000 lds r24,Parameter_GlobalConfig |
1982 0cda 86FF sbrs r24,6 |
1983 0cdc 00C0 rjmp .L95 |
1984 0cde 8091 0000 lds r24,MesswertRoll |
1985 0ce2 9091 0000 lds r25,(MesswertRoll)+1 |
1986 0ce6 AA27 clr r26 |
1987 0ce8 97FD sbrc r25,7 |
1988 0cea A095 com r26 |
1989 0cec BA2F mov r27,r26 |
1990 0cee BC01 movw r22,r24 |
1991 0cf0 CD01 movw r24,r26 |
1992 0cf2 2981 ldd r18,Y+1 |
1993 0cf4 3A81 ldd r19,Y+2 |
1994 0cf6 4B81 ldd r20,Y+3 |
1995 0cf8 5C81 ldd r21,Y+4 |
1996 0cfa 0E94 0000 call __mulsi3 |
1997 0cfe 9B01 movw r18,r22 |
1998 0d00 AC01 movw r20,r24 |
1999 0d02 97FF sbrs r25,7 |
2000 0d04 00C0 rjmp .L96 |
2001 0d06 2150 subi r18,lo8(-(2047)) |
2002 0d08 384F sbci r19,hi8(-(2047)) |
2003 0d0a 4F4F sbci r20,hlo8(-(2047)) |
2004 0d0c 5F4F sbci r21,hhi8(-(2047)) |
2005 .L96: |
2006 0d0e BBE0 ldi r27,11 |
2007 0d10 5595 1: asr r21 |
2008 0d12 4795 ror r20 |
2009 0d14 3795 ror r19 |
2010 0d16 2795 ror r18 |
2011 0d18 BA95 dec r27 |
2012 0d1a 01F4 brne 1b |
2013 0d1c 8091 0000 lds r24,Parameter_AchsKopplung2 |
2014 0d20 682E mov r6,r24 |
2015 0d22 7724 clr r7 |
2016 0d24 8824 clr r8 |
2017 0d26 9924 clr r9 |
2018 0d28 CA01 movw r24,r20 |
2019 0d2a B901 movw r22,r18 |
2020 0d2c A401 movw r20,r8 |
2021 0d2e 9301 movw r18,r6 |
2022 0d30 0E94 0000 call __mulsi3 |
2023 0d34 DC01 movw r26,r24 |
2024 0d36 CB01 movw r24,r22 |
2025 0d38 8093 0000 sts tmpl3.29,r24 |
2026 0d3c 9093 0000 sts (tmpl3.29)+1,r25 |
2027 0d40 A093 0000 sts (tmpl3.29)+2,r26 |
2028 0d44 B093 0000 sts (tmpl3.29)+3,r27 |
2029 0d48 B7FF sbrs r27,7 |
2030 0d4a 00C0 rjmp .L97 |
2031 0d4c 8150 subi r24,lo8(-(4095)) |
2032 0d4e 904F sbci r25,hi8(-(4095)) |
2033 0d50 AF4F sbci r26,hlo8(-(4095)) |
2034 0d52 BF4F sbci r27,hhi8(-(4095)) |
2035 .L97: |
2036 0d54 1C01 movw r2,r24 |
2037 0d56 2D01 movw r4,r26 |
2038 0d58 ACE0 ldi r26,12 |
2039 0d5a 5594 1: asr r5 |
2040 0d5c 4794 ror r4 |
2041 0d5e 3794 ror r3 |
2042 0d60 2794 ror r2 |
2043 0d62 AA95 dec r26 |
2044 0d64 01F4 brne 1b |
2045 0d66 2092 0000 sts tmpl3.29,r2 |
2046 0d6a 3092 0000 sts (tmpl3.29)+1,r3 |
2047 0d6e 4092 0000 sts (tmpl3.29)+2,r4 |
2048 0d72 5092 0000 sts (tmpl3.29)+3,r5 |
2049 0d76 8091 0000 lds r24,MesswertNick |
2050 0d7a 9091 0000 lds r25,(MesswertNick)+1 |
2051 0d7e AA27 clr r26 |
2052 0d80 97FD sbrc r25,7 |
2053 0d82 A095 com r26 |
2054 0d84 BA2F mov r27,r26 |
2055 0d86 BC01 movw r22,r24 |
2056 0d88 CD01 movw r24,r26 |
2057 0d8a 2D81 ldd r18,Y+5 |
2058 0d8c 3E81 ldd r19,Y+6 |
2059 0d8e 4F81 ldd r20,Y+7 |
2060 0d90 5885 ldd r21,Y+8 |
2061 0d92 0E94 0000 call __mulsi3 |
2062 0d96 97FF sbrs r25,7 |
2063 0d98 00C0 rjmp .L98 |
2064 0d9a 6150 subi r22,lo8(-(2047)) |
2065 0d9c 784F sbci r23,hi8(-(2047)) |
2066 0d9e 8F4F sbci r24,hlo8(-(2047)) |
2067 0da0 9F4F sbci r25,hhi8(-(2047)) |
2068 .L98: |
2069 0da2 FBE0 ldi r31,11 |
2070 0da4 9595 1: asr r25 |
2071 0da6 8795 ror r24 |
2072 0da8 7795 ror r23 |
2073 0daa 6795 ror r22 |
2074 0dac FA95 dec r31 |
2075 0dae 01F4 brne 1b |
2076 0db0 A401 movw r20,r8 |
2077 0db2 9301 movw r18,r6 |
2078 0db4 0E94 0000 call __mulsi3 |
2079 0db8 DC01 movw r26,r24 |
2080 0dba CB01 movw r24,r22 |
2081 0dbc 8093 0000 sts tmpl4.30,r24 |
2082 0dc0 9093 0000 sts (tmpl4.30)+1,r25 |
2083 0dc4 A093 0000 sts (tmpl4.30)+2,r26 |
2084 0dc8 B093 0000 sts (tmpl4.30)+3,r27 |
2085 0dcc B7FF sbrs r27,7 |
2086 0dce 00C0 rjmp .L99 |
2087 0dd0 8150 subi r24,lo8(-(4095)) |
2088 0dd2 904F sbci r25,hi8(-(4095)) |
2089 0dd4 AF4F sbci r26,hlo8(-(4095)) |
2090 0dd6 BF4F sbci r27,hhi8(-(4095)) |
2091 .L99: |
2092 0dd8 9C01 movw r18,r24 |
2093 0dda AD01 movw r20,r26 |
2094 0ddc ECE0 ldi r30,12 |
2095 0dde 5595 1: asr r21 |
2096 0de0 4795 ror r20 |
2097 0de2 3795 ror r19 |
2098 0de4 2795 ror r18 |
2099 0de6 EA95 dec r30 |
2100 0de8 01F4 brne 1b |
2101 0dea 2093 0000 sts tmpl4.30,r18 |
2102 0dee 3093 0000 sts (tmpl4.30)+1,r19 |
2103 0df2 4093 0000 sts (tmpl4.30)+2,r20 |
2104 0df6 5093 0000 sts (tmpl4.30)+3,r21 |
2105 0dfa 8091 0000 lds r24,tmpl3.29 |
2106 0dfe 9091 0000 lds r25,(tmpl3.29)+1 |
2107 0e02 9093 0000 sts (KopplungsteilNickRoll)+1,r25 |
2108 0e06 8093 0000 sts KopplungsteilNickRoll,r24 |
2109 0e0a 8091 0000 lds r24,tmpl4.30 |
2110 0e0e 9091 0000 lds r25,(tmpl4.30)+1 |
2111 0e12 9093 0000 sts (KopplungsteilRollNick)+1,r25 |
2112 0e16 8093 0000 sts KopplungsteilRollNick,r24 |
2113 0e1a 2219 sub r18,r2 |
2114 0e1c 3309 sbc r19,r3 |
2115 0e1e 4409 sbc r20,r4 |
2116 0e20 5509 sbc r21,r5 |
2117 0e22 2093 0000 sts tmpl4.30,r18 |
2118 0e26 3093 0000 sts (tmpl4.30)+1,r19 |
2119 0e2a 4093 0000 sts (tmpl4.30)+2,r20 |
2120 0e2e 5093 0000 sts (tmpl4.30)+3,r21 |
2121 0e32 E20E add r14,r18 |
2122 0e34 F31E adc r15,r19 |
2123 0e36 041F adc r16,r20 |
2124 0e38 151F adc r17,r21 |
2125 0e3a E092 0000 sts ErsatzKompass,r14 |
2126 0e3e F092 0000 sts (ErsatzKompass)+1,r15 |
2127 0e42 0093 0000 sts (ErsatzKompass)+2,r16 |
2128 0e46 1093 0000 sts (ErsatzKompass)+3,r17 |
2129 0e4a 8091 0000 lds r24,Parameter_CouplingYawCorrection |
2130 0e4e 8823 tst r24 |
2131 0e50 01F4 brne .L100 |
2132 0e52 57FF sbrs r21,7 |
2133 0e54 00C0 rjmp .L101 |
2134 0e56 2F5F subi r18,lo8(-(1)) |
2135 0e58 3F4F sbci r19,hi8(-(1)) |
2136 0e5a 4F4F sbci r20,hlo8(-(1)) |
2137 0e5c 5F4F sbci r21,hhi8(-(1)) |
2138 .L101: |
2139 0e5e 5595 asr r21 |
2140 0e60 4795 ror r20 |
2141 0e62 3795 ror r19 |
2142 0e64 2795 ror r18 |
2143 0e66 A21A sub r10,r18 |
2144 0e68 B30A sbc r11,r19 |
2145 0e6a C40A sbc r12,r20 |
2146 0e6c D50A sbc r13,r21 |
2147 0e6e A092 0000 sts Mess_Integral_Gier,r10 |
2148 0e72 B092 0000 sts (Mess_Integral_Gier)+1,r11 |
2149 0e76 C092 0000 sts (Mess_Integral_Gier)+2,r12 |
2150 0e7a D092 0000 sts (Mess_Integral_Gier)+3,r13 |
2151 .L100: |
2152 0e7e 2A89 ldd r18,Y+18 |
2153 0e80 3B89 ldd r19,Y+19 |
2154 0e82 7901 movw r14,r18 |
2155 0e84 0027 clr r16 |
2156 0e86 F7FC sbrc r15,7 |
2157 0e88 0095 com r16 |
2158 0e8a 102F mov r17,r16 |
2159 0e8c 8091 0000 lds r24,tmpl4.30 |
2160 0e90 9091 0000 lds r25,(tmpl4.30)+1 |
2161 0e94 A091 0000 lds r26,(tmpl4.30)+2 |
2162 0e98 B091 0000 lds r27,(tmpl4.30)+3 |
2163 0e9c E80E add r14,r24 |
2164 0e9e F91E adc r15,r25 |
2165 0ea0 0A1F adc r16,r26 |
2166 0ea2 1B1F adc r17,r27 |
2167 0ea4 C801 movw r24,r16 |
2168 0ea6 B701 movw r22,r14 |
2169 0ea8 2981 ldd r18,Y+1 |
2170 0eaa 3A81 ldd r19,Y+2 |
2171 0eac 4B81 ldd r20,Y+3 |
2172 0eae 5C81 ldd r21,Y+4 |
2173 0eb0 0E94 0000 call __mulsi3 |
2174 0eb4 9B01 movw r18,r22 |
2175 0eb6 AC01 movw r20,r24 |
2176 0eb8 97FF sbrs r25,7 |
2177 0eba 00C0 rjmp .L102 |
2178 0ebc 2150 subi r18,lo8(-(2047)) |
2179 0ebe 384F sbci r19,hi8(-(2047)) |
2180 0ec0 4F4F sbci r20,hlo8(-(2047)) |
2181 0ec2 5F4F sbci r21,hhi8(-(2047)) |
2182 .L102: |
2183 0ec4 6BE0 ldi r22,11 |
2184 0ec6 5595 1: asr r21 |
2185 0ec8 4795 ror r20 |
2186 0eca 3795 ror r19 |
2187 0ecc 2795 ror r18 |
2188 0ece 6A95 dec r22 |
2189 0ed0 01F4 brne 1b |
2190 0ed2 8091 0000 lds r24,Parameter_AchsKopplung1 |
2191 0ed6 A82E mov r10,r24 |
2192 0ed8 BB24 clr r11 |
2193 0eda CC24 clr r12 |
2194 0edc DD24 clr r13 |
2195 0ede CA01 movw r24,r20 |
2196 0ee0 B901 movw r22,r18 |
2197 0ee2 A601 movw r20,r12 |
2198 0ee4 9501 movw r18,r10 |
2199 0ee6 0E94 0000 call __mulsi3 |
2200 0eea DC01 movw r26,r24 |
2201 0eec CB01 movw r24,r22 |
2202 0eee 8093 0000 sts tmpl.27,r24 |
2203 0ef2 9093 0000 sts (tmpl.27)+1,r25 |
2204 0ef6 A093 0000 sts (tmpl.27)+2,r26 |
2205 0efa B093 0000 sts (tmpl.27)+3,r27 |
2206 0efe B7FF sbrs r27,7 |
2207 0f00 00C0 rjmp .L103 |
2208 0f02 8150 subi r24,lo8(-(4095)) |
2209 0f04 904F sbci r25,hi8(-(4095)) |
2210 0f06 AF4F sbci r26,hlo8(-(4095)) |
2211 0f08 BF4F sbci r27,hhi8(-(4095)) |
2212 .L103: |
2213 0f0a 3C01 movw r6,r24 |
2214 0f0c 4D01 movw r8,r26 |
2215 0f0e 3CE0 ldi r19,12 |
2216 0f10 9594 1: asr r9 |
2217 0f12 8794 ror r8 |
2218 0f14 7794 ror r7 |
2219 0f16 6794 ror r6 |
2220 0f18 3A95 dec r19 |
2221 0f1a 01F4 brne 1b |
2222 0f1c 6092 0000 sts tmpl.27,r6 |
2223 0f20 7092 0000 sts (tmpl.27)+1,r7 |
2224 0f24 8092 0000 sts (tmpl.27)+2,r8 |
2225 0f28 9092 0000 sts (tmpl.27)+3,r9 |
2226 0f2c C801 movw r24,r16 |
2227 0f2e B701 movw r22,r14 |
2228 0f30 2D81 ldd r18,Y+5 |
2229 0f32 3E81 ldd r19,Y+6 |
2230 0f34 4F81 ldd r20,Y+7 |
2231 0f36 5885 ldd r21,Y+8 |
2232 0f38 0E94 0000 call __mulsi3 |
2233 0f3c 97FF sbrs r25,7 |
2234 0f3e 00C0 rjmp .L104 |
2235 0f40 6150 subi r22,lo8(-(2047)) |
2236 0f42 784F sbci r23,hi8(-(2047)) |
2237 0f44 8F4F sbci r24,hlo8(-(2047)) |
2238 0f46 9F4F sbci r25,hhi8(-(2047)) |
2239 .L104: |
2240 0f48 2BE0 ldi r18,11 |
2241 0f4a 9595 1: asr r25 |
2242 0f4c 8795 ror r24 |
2243 0f4e 7795 ror r23 |
2244 0f50 6795 ror r22 |
2245 0f52 2A95 dec r18 |
2246 0f54 01F4 brne 1b |
2247 0f56 A601 movw r20,r12 |
2248 0f58 9501 movw r18,r10 |
2249 0f5a 0E94 0000 call __mulsi3 |
2250 0f5e DC01 movw r26,r24 |
2251 0f60 CB01 movw r24,r22 |
2252 0f62 8093 0000 sts tmpl2.28,r24 |
2253 0f66 9093 0000 sts (tmpl2.28)+1,r25 |
2254 0f6a A093 0000 sts (tmpl2.28)+2,r26 |
2255 0f6e B093 0000 sts (tmpl2.28)+3,r27 |
2256 0f72 B7FF sbrs r27,7 |
2257 0f74 00C0 rjmp .L105 |
2258 0f76 8150 subi r24,lo8(-(4095)) |
2259 0f78 904F sbci r25,hi8(-(4095)) |
2260 0f7a AF4F sbci r26,hlo8(-(4095)) |
2261 0f7c BF4F sbci r27,hhi8(-(4095)) |
2262 .L105: |
2263 0f7e AC01 movw r20,r24 |
2264 0f80 BD01 movw r22,r26 |
2265 0f82 8CE0 ldi r24,12 |
2266 0f84 7595 1: asr r23 |
2267 0f86 6795 ror r22 |
2268 0f88 5795 ror r21 |
2269 0f8a 4795 ror r20 |
2270 0f8c 8A95 dec r24 |
2271 0f8e 01F4 brne 1b |
2272 0f90 4093 0000 sts tmpl2.28,r20 |
2273 0f94 5093 0000 sts (tmpl2.28)+1,r21 |
2274 0f98 6093 0000 sts (tmpl2.28)+2,r22 |
2275 0f9c 7093 0000 sts (tmpl2.28)+3,r23 |
2276 0fa0 2A89 ldd r18,Y+18 |
2277 0fa2 3B89 ldd r19,Y+19 |
2278 0fa4 37FF sbrs r19,7 |
2279 0fa6 00C0 rjmp .L107 |
2280 0fa8 3095 com r19 |
2281 0faa 2195 neg r18 |
2282 0fac 3F4F sbci r19,lo8(-1) |
2283 .L107: |
2284 0fae 2134 cpi r18,65 |
2285 0fb0 3105 cpc r19,__zero_reg__ |
2286 0fb2 04F0 brlt .L112 |
2287 0fb4 D401 movw r26,r8 |
2288 0fb6 C301 movw r24,r6 |
2289 0fb8 97FE sbrs r9,7 |
2290 0fba 00C0 rjmp .L110 |
2291 0fbc B095 com r27 |
2292 0fbe A095 com r26 |
2293 0fc0 9095 com r25 |
2294 0fc2 8195 neg r24 |
2295 0fc4 9F4F sbci r25,lo8(-1) |
2296 0fc6 AF4F sbci r26,lo8(-1) |
2297 0fc8 BF4F sbci r27,lo8(-1) |
2298 .L110: |
2299 0fca 8138 cpi r24,lo8(129) |
2300 0fcc 9105 cpc r25,__zero_reg__ |
2301 0fce A105 cpc r26,__zero_reg__ |
2302 0fd0 B105 cpc r27,__zero_reg__ |
2303 0fd2 04F4 brge .L109 |
2304 0fd4 DB01 movw r26,r22 |
2305 0fd6 CA01 movw r24,r20 |
2306 0fd8 77FF sbrs r23,7 |
2307 0fda 00C0 rjmp .L111 |
2308 0fdc B095 com r27 |
2309 0fde A095 com r26 |
2310 0fe0 9095 com r25 |
2311 0fe2 8195 neg r24 |
2312 0fe4 9F4F sbci r25,lo8(-1) |
2313 0fe6 AF4F sbci r26,lo8(-1) |
2314 0fe8 BF4F sbci r27,lo8(-1) |
2315 .L111: |
2316 0fea 8138 cpi r24,lo8(129) |
2317 0fec 9105 cpc r25,__zero_reg__ |
2318 0fee A105 cpc r26,__zero_reg__ |
2319 0ff0 B105 cpc r27,__zero_reg__ |
2320 0ff2 04F0 brlt .L112 |
2321 .L109: |
2322 0ff4 81E0 ldi r24,lo8(1) |
2323 0ff6 8093 0000 sts TrichterFlug,r24 |
2324 0ffa 00C0 rjmp .L112 |
2325 .L95: |
2326 0ffc 1092 0000 sts (KopplungsteilRollNick)+1,__zero_reg__ |
2327 1000 1092 0000 sts KopplungsteilRollNick,__zero_reg__ |
2328 1004 1092 0000 sts (KopplungsteilNickRoll)+1,__zero_reg__ |
2329 1008 1092 0000 sts KopplungsteilNickRoll,__zero_reg__ |
2330 100c 1092 0000 sts tmpl2.28,__zero_reg__ |
2331 1010 1092 0000 sts (tmpl2.28)+1,__zero_reg__ |
2332 1014 1092 0000 sts (tmpl2.28)+2,__zero_reg__ |
2333 1018 1092 0000 sts (tmpl2.28)+3,__zero_reg__ |
2334 101c 1092 0000 sts tmpl.27,__zero_reg__ |
2335 1020 1092 0000 sts (tmpl.27)+1,__zero_reg__ |
2336 1024 1092 0000 sts (tmpl.27)+2,__zero_reg__ |
2337 1028 1092 0000 sts (tmpl.27)+3,__zero_reg__ |
2338 .L112: |
2339 102c 8091 0000 lds r24,tmpl2.28 |
2340 1030 9091 0000 lds r25,(tmpl2.28)+1 |
2341 1034 A091 0000 lds r26,(tmpl2.28)+2 |
2342 1038 B091 0000 lds r27,(tmpl2.28)+3 |
2343 103c BC01 movw r22,r24 |
2344 103e CD01 movw r24,r26 |
2345 1040 24E6 ldi r18,lo8(100) |
2346 1042 30E0 ldi r19,hi8(100) |
2347 1044 40E0 ldi r20,hlo8(100) |
2348 1046 50E0 ldi r21,hhi8(100) |
2349 1048 0E94 0000 call __divmodsi4 |
2350 104c E090 0000 lds r14,tmpl.27 |
2351 1050 F090 0000 lds r15,(tmpl.27)+1 |
2352 1054 E21A sub r14,r18 |
2353 1056 F30A sbc r15,r19 |
2354 1058 F092 0000 sts (TrimRoll)+1,r15 |
2355 105c E092 0000 sts TrimRoll,r14 |
2356 1060 8091 0000 lds r24,tmpl.27 |
2357 1064 9091 0000 lds r25,(tmpl.27)+1 |
2358 1068 A091 0000 lds r26,(tmpl.27)+2 |
2359 106c B091 0000 lds r27,(tmpl.27)+3 |
2360 1070 BC01 movw r22,r24 |
2361 1072 CD01 movw r24,r26 |
2362 1074 24E6 ldi r18,lo8(100) |
2363 1076 30E0 ldi r19,hi8(100) |
2364 1078 40E0 ldi r20,hlo8(100) |
2365 107a 50E0 ldi r21,hhi8(100) |
2366 107c 0E94 0000 call __divmodsi4 |
2367 1080 DA01 movw r26,r20 |
2368 1082 C901 movw r24,r18 |
2369 1084 2091 0000 lds r18,tmpl2.28 |
2370 1088 3091 0000 lds r19,(tmpl2.28)+1 |
2371 108c 8C01 movw r16,r24 |
2372 108e 021B sub r16,r18 |
2373 1090 130B sbc r17,r19 |
2374 1092 1093 0000 sts (TrimNick)+1,r17 |
2375 1096 0093 0000 sts TrimNick,r16 |
2376 109a 8091 0000 lds r24,GIER_GRAD_FAKTOR |
2377 109e 9091 0000 lds r25,(GIER_GRAD_FAKTOR)+1 |
2378 10a2 A091 0000 lds r26,(GIER_GRAD_FAKTOR)+2 |
2379 10a6 B091 0000 lds r27,(GIER_GRAD_FAKTOR)+3 |
2380 10aa BC01 movw r22,r24 |
2381 10ac CD01 movw r24,r26 |
2382 10ae 28E6 ldi r18,lo8(360) |
2383 10b0 31E0 ldi r19,hi8(360) |
2384 10b2 40E0 ldi r20,hlo8(360) |
2385 10b4 50E0 ldi r21,hhi8(360) |
2386 10b6 0E94 0000 call __mulsi3 |
2387 10ba 2091 0000 lds r18,ErsatzKompass |
2388 10be 3091 0000 lds r19,(ErsatzKompass)+1 |
2389 10c2 4091 0000 lds r20,(ErsatzKompass)+2 |
2390 10c6 5091 0000 lds r21,(ErsatzKompass)+3 |
2391 10ca 2617 cp r18,r22 |
2392 10cc 3707 cpc r19,r23 |
2393 10ce 4807 cpc r20,r24 |
2394 10d0 5907 cpc r21,r25 |
2395 10d2 04F0 brlt .L113 |
2396 10d4 261B sub r18,r22 |
2397 10d6 370B sbc r19,r23 |
2398 10d8 480B sbc r20,r24 |
2399 10da 590B sbc r21,r25 |
2400 10dc 2093 0000 sts ErsatzKompass,r18 |
2401 10e0 3093 0000 sts (ErsatzKompass)+1,r19 |
2402 10e4 4093 0000 sts (ErsatzKompass)+2,r20 |
2403 10e8 5093 0000 sts (ErsatzKompass)+3,r21 |
2404 .L113: |
2405 10ec 2091 0000 lds r18,ErsatzKompass |
2406 10f0 3091 0000 lds r19,(ErsatzKompass)+1 |
2407 10f4 4091 0000 lds r20,(ErsatzKompass)+2 |
2408 10f8 5091 0000 lds r21,(ErsatzKompass)+3 |
2409 10fc 57FF sbrs r21,7 |
2410 10fe 00C0 rjmp .L114 |
2411 1100 260F add r18,r22 |
2412 1102 371F adc r19,r23 |
2413 1104 481F adc r20,r24 |
2414 1106 591F adc r21,r25 |
2415 1108 2093 0000 sts ErsatzKompass,r18 |
2416 110c 3093 0000 sts (ErsatzKompass)+1,r19 |
2417 1110 4093 0000 sts (ErsatzKompass)+2,r20 |
2418 1114 5093 0000 sts (ErsatzKompass)+3,r21 |
2419 .L114: |
2420 1118 6091 0000 lds r22,MesswertRoll |
2421 111c 7091 0000 lds r23,(MesswertRoll)+1 |
2422 1120 6E0D add r22,r14 |
2423 1122 7F1D adc r23,r15 |
2424 1124 9B01 movw r18,r22 |
2425 1126 4427 clr r20 |
2426 1128 37FD sbrc r19,7 |
2427 112a 4095 com r20 |
2428 112c 542F mov r21,r20 |
2429 112e 8091 0000 lds r24,Mess_IntegralRoll2 |
2430 1132 9091 0000 lds r25,(Mess_IntegralRoll2)+1 |
2431 1136 A091 0000 lds r26,(Mess_IntegralRoll2)+2 |
2432 113a B091 0000 lds r27,(Mess_IntegralRoll2)+3 |
2433 113e 820F add r24,r18 |
2434 1140 931F adc r25,r19 |
2435 1142 A41F adc r26,r20 |
2436 1144 B51F adc r27,r21 |
2437 1146 8093 0000 sts Mess_IntegralRoll2,r24 |
2438 114a 9093 0000 sts (Mess_IntegralRoll2)+1,r25 |
2439 114e A093 0000 sts (Mess_IntegralRoll2)+2,r26 |
2440 1152 B093 0000 sts (Mess_IntegralRoll2)+3,r27 |
2441 1156 8091 0000 lds r24,LageKorrekturRoll |
2442 115a 9091 0000 lds r25,(LageKorrekturRoll)+1 |
2443 115e 681B sub r22,r24 |
2444 1160 790B sbc r23,r25 |
2445 1162 CB01 movw r24,r22 |
2446 1164 AA27 clr r26 |
2447 1166 97FD sbrc r25,7 |
2448 1168 A095 com r26 |
2449 116a BA2F mov r27,r26 |
2450 116c 2985 ldd r18,Y+9 |
2451 116e 3A85 ldd r19,Y+10 |
2452 1170 4B85 ldd r20,Y+11 |
2453 1172 5C85 ldd r21,Y+12 |
2454 1174 820F add r24,r18 |
2455 1176 931F adc r25,r19 |
2456 1178 A41F adc r26,r20 |
2457 117a B51F adc r27,r21 |
2458 117c 8093 0000 sts Mess_IntegralRoll,r24 |
2459 1180 9093 0000 sts (Mess_IntegralRoll)+1,r25 |
2460 1184 A093 0000 sts (Mess_IntegralRoll)+2,r26 |
2461 1188 B093 0000 sts (Mess_IntegralRoll)+3,r27 |
2462 118c C090 0000 lds r12,Umschlag180Roll |
2463 1190 D090 0000 lds r13,(Umschlag180Roll)+1 |
2464 1194 E090 0000 lds r14,(Umschlag180Roll)+2 |
2465 1198 F090 0000 lds r15,(Umschlag180Roll)+3 |
2466 119c C816 cp r12,r24 |
2467 119e D906 cpc r13,r25 |
2468 11a0 EA06 cpc r14,r26 |
2469 11a2 FB06 cpc r15,r27 |
2470 11a4 04F4 brge .L115 |
2471 11a6 88EA ldi r24,lo8(25000) |
2472 11a8 91E6 ldi r25,hi8(25000) |
2473 11aa A0E0 ldi r26,hlo8(25000) |
2474 11ac B0E0 ldi r27,hhi8(25000) |
2475 11ae 8C19 sub r24,r12 |
2476 11b0 9D09 sbc r25,r13 |
2477 11b2 AE09 sbc r26,r14 |
2478 11b4 BF09 sbc r27,r15 |
2479 11b6 8093 0000 sts Mess_IntegralRoll,r24 |
2480 11ba 9093 0000 sts (Mess_IntegralRoll)+1,r25 |
2481 11be A093 0000 sts (Mess_IntegralRoll)+2,r26 |
2482 11c2 B093 0000 sts (Mess_IntegralRoll)+3,r27 |
2483 11c6 8093 0000 sts Mess_IntegralRoll2,r24 |
2484 11ca 9093 0000 sts (Mess_IntegralRoll2)+1,r25 |
2485 11ce A093 0000 sts (Mess_IntegralRoll2)+2,r26 |
2486 11d2 B093 0000 sts (Mess_IntegralRoll2)+3,r27 |
2487 .L115: |
2488 11d6 2227 clr r18 |
2489 11d8 3327 clr r19 |
2490 11da A901 movw r20,r18 |
2491 11dc 2C19 sub r18,r12 |
2492 11de 3D09 sbc r19,r13 |
2493 11e0 4E09 sbc r20,r14 |
2494 11e2 5F09 sbc r21,r15 |
2495 11e4 8091 0000 lds r24,Mess_IntegralRoll |
2496 11e8 9091 0000 lds r25,(Mess_IntegralRoll)+1 |
2497 11ec A091 0000 lds r26,(Mess_IntegralRoll)+2 |
2498 11f0 B091 0000 lds r27,(Mess_IntegralRoll)+3 |
2499 11f4 8217 cp r24,r18 |
2500 11f6 9307 cpc r25,r19 |
2501 11f8 A407 cpc r26,r20 |
2502 11fa B507 cpc r27,r21 |
2503 11fc 04F4 brge .L116 |
2504 11fe D701 movw r26,r14 |
2505 1200 C601 movw r24,r12 |
2506 1202 885A subi r24,lo8(-(-25000)) |
2507 1204 9146 sbci r25,hi8(-(-25000)) |
2508 1206 A040 sbci r26,hlo8(-(-25000)) |
2509 1208 B040 sbci r27,hhi8(-(-25000)) |
2510 120a 8093 0000 sts Mess_IntegralRoll,r24 |
2511 120e 9093 0000 sts (Mess_IntegralRoll)+1,r25 |
2512 1212 A093 0000 sts (Mess_IntegralRoll)+2,r26 |
2513 1216 B093 0000 sts (Mess_IntegralRoll)+3,r27 |
2514 121a 8093 0000 sts Mess_IntegralRoll2,r24 |
2515 121e 9093 0000 sts (Mess_IntegralRoll2)+1,r25 |
2516 1222 A093 0000 sts (Mess_IntegralRoll2)+2,r26 |
2517 1226 B093 0000 sts (Mess_IntegralRoll2)+3,r27 |
2518 .L116: |
2519 122a 6091 0000 lds r22,MesswertNick |
2520 122e 7091 0000 lds r23,(MesswertNick)+1 |
2521 1232 600F add r22,r16 |
2522 1234 711F adc r23,r17 |
2523 1236 9B01 movw r18,r22 |
2524 1238 4427 clr r20 |
2525 123a 37FD sbrc r19,7 |
2526 123c 4095 com r20 |
2527 123e 542F mov r21,r20 |
2528 1240 8091 0000 lds r24,Mess_IntegralNick2 |
2529 1244 9091 0000 lds r25,(Mess_IntegralNick2)+1 |
2530 1248 A091 0000 lds r26,(Mess_IntegralNick2)+2 |
2531 124c B091 0000 lds r27,(Mess_IntegralNick2)+3 |
2532 1250 820F add r24,r18 |
2533 1252 931F adc r25,r19 |
2534 1254 A41F adc r26,r20 |
2535 1256 B51F adc r27,r21 |
2536 1258 8093 0000 sts Mess_IntegralNick2,r24 |
2537 125c 9093 0000 sts (Mess_IntegralNick2)+1,r25 |
2538 1260 A093 0000 sts (Mess_IntegralNick2)+2,r26 |
2539 1264 B093 0000 sts (Mess_IntegralNick2)+3,r27 |
2540 1268 8091 0000 lds r24,LageKorrekturNick |
2541 126c 9091 0000 lds r25,(LageKorrekturNick)+1 |
2542 1270 681B sub r22,r24 |
2543 1272 790B sbc r23,r25 |
2544 1274 CB01 movw r24,r22 |
2545 1276 AA27 clr r26 |
2546 1278 97FD sbrc r25,7 |
2547 127a A095 com r26 |
2548 127c BA2F mov r27,r26 |
2549 127e 2D85 ldd r18,Y+13 |
2550 1280 3E85 ldd r19,Y+14 |
2551 1282 4F85 ldd r20,Y+15 |
2552 1284 5889 ldd r21,Y+16 |
2553 1286 820F add r24,r18 |
2554 1288 931F adc r25,r19 |
2555 128a A41F adc r26,r20 |
2556 128c B51F adc r27,r21 |
2557 128e 8093 0000 sts Mess_IntegralNick,r24 |
2558 1292 9093 0000 sts (Mess_IntegralNick)+1,r25 |
2559 1296 A093 0000 sts (Mess_IntegralNick)+2,r26 |
2560 129a B093 0000 sts (Mess_IntegralNick)+3,r27 |
2561 129e E090 0000 lds r14,Umschlag180Nick |
2562 12a2 F090 0000 lds r15,(Umschlag180Nick)+1 |
2563 12a6 0091 0000 lds r16,(Umschlag180Nick)+2 |
2564 12aa 1091 0000 lds r17,(Umschlag180Nick)+3 |
2565 12ae E816 cp r14,r24 |
2566 12b0 F906 cpc r15,r25 |
2567 12b2 0A07 cpc r16,r26 |
2568 12b4 1B07 cpc r17,r27 |
2569 12b6 04F4 brge .L117 |
2570 12b8 88EA ldi r24,lo8(25000) |
2571 12ba 91E6 ldi r25,hi8(25000) |
2572 12bc A0E0 ldi r26,hlo8(25000) |
2573 12be B0E0 ldi r27,hhi8(25000) |
2574 12c0 8E19 sub r24,r14 |
2575 12c2 9F09 sbc r25,r15 |
2576 12c4 A00B sbc r26,r16 |
2577 12c6 B10B sbc r27,r17 |
2578 12c8 8093 0000 sts Mess_IntegralNick,r24 |
2579 12cc 9093 0000 sts (Mess_IntegralNick)+1,r25 |
2580 12d0 A093 0000 sts (Mess_IntegralNick)+2,r26 |
2581 12d4 B093 0000 sts (Mess_IntegralNick)+3,r27 |
2582 12d8 8093 0000 sts Mess_IntegralNick2,r24 |
2583 12dc 9093 0000 sts (Mess_IntegralNick2)+1,r25 |
2584 12e0 A093 0000 sts (Mess_IntegralNick2)+2,r26 |
2585 12e4 B093 0000 sts (Mess_IntegralNick2)+3,r27 |
2586 .L117: |
2587 12e8 2227 clr r18 |
2588 12ea 3327 clr r19 |
2589 12ec A901 movw r20,r18 |
2590 12ee 2E19 sub r18,r14 |
2591 12f0 3F09 sbc r19,r15 |
2592 12f2 400B sbc r20,r16 |
2593 12f4 510B sbc r21,r17 |
2594 12f6 8091 0000 lds r24,Mess_IntegralNick |
2595 12fa 9091 0000 lds r25,(Mess_IntegralNick)+1 |
2596 12fe A091 0000 lds r26,(Mess_IntegralNick)+2 |
2597 1302 B091 0000 lds r27,(Mess_IntegralNick)+3 |
2598 1306 8217 cp r24,r18 |
2599 1308 9307 cpc r25,r19 |
2600 130a A407 cpc r26,r20 |
2601 130c B507 cpc r27,r21 |
2602 130e 04F4 brge .L118 |
2603 1310 D801 movw r26,r16 |
2604 1312 C701 movw r24,r14 |
2605 1314 885A subi r24,lo8(-(-25000)) |
2606 1316 9146 sbci r25,hi8(-(-25000)) |
2607 1318 A040 sbci r26,hlo8(-(-25000)) |
2608 131a B040 sbci r27,hhi8(-(-25000)) |
2609 131c 8093 0000 sts Mess_IntegralNick,r24 |
2610 1320 9093 0000 sts (Mess_IntegralNick)+1,r25 |
2611 1324 A093 0000 sts (Mess_IntegralNick)+2,r26 |
2612 1328 B093 0000 sts (Mess_IntegralNick)+3,r27 |
2613 132c 8093 0000 sts Mess_IntegralNick2,r24 |
2614 1330 9093 0000 sts (Mess_IntegralNick2)+1,r25 |
2615 1334 A093 0000 sts (Mess_IntegralNick2)+2,r26 |
2616 1338 B093 0000 sts (Mess_IntegralNick2)+3,r27 |
2617 .L118: |
2618 133c 8091 0000 lds r24,Mess_Integral_Gier |
2619 1340 9091 0000 lds r25,(Mess_Integral_Gier)+1 |
2620 1344 A091 0000 lds r26,(Mess_Integral_Gier)+2 |
2621 1348 B091 0000 lds r27,(Mess_Integral_Gier)+3 |
2622 134c 8093 0000 sts Integral_Gier,r24 |
2623 1350 9093 0000 sts (Integral_Gier)+1,r25 |
2624 1354 A093 0000 sts (Integral_Gier)+2,r26 |
2625 1358 B093 0000 sts (Integral_Gier)+3,r27 |
2626 135c 8091 0000 lds r24,Mess_IntegralNick |
2627 1360 9091 0000 lds r25,(Mess_IntegralNick)+1 |
2628 1364 A091 0000 lds r26,(Mess_IntegralNick)+2 |
2629 1368 B091 0000 lds r27,(Mess_IntegralNick)+3 |
2630 136c 8093 0000 sts IntegralNick,r24 |
2631 1370 9093 0000 sts (IntegralNick)+1,r25 |
2632 1374 A093 0000 sts (IntegralNick)+2,r26 |
2633 1378 B093 0000 sts (IntegralNick)+3,r27 |
2634 137c 8091 0000 lds r24,Mess_IntegralRoll |
2635 1380 9091 0000 lds r25,(Mess_IntegralRoll)+1 |
2636 1384 A091 0000 lds r26,(Mess_IntegralRoll)+2 |
2637 1388 B091 0000 lds r27,(Mess_IntegralRoll)+3 |
2638 138c 8093 0000 sts IntegralRoll,r24 |
2639 1390 9093 0000 sts (IntegralRoll)+1,r25 |
2640 1394 A093 0000 sts (IntegralRoll)+2,r26 |
2641 1398 B093 0000 sts (IntegralRoll)+3,r27 |
2642 139c 8091 0000 lds r24,Mess_IntegralNick2 |
2643 13a0 9091 0000 lds r25,(Mess_IntegralNick2)+1 |
2644 13a4 A091 0000 lds r26,(Mess_IntegralNick2)+2 |
2645 13a8 B091 0000 lds r27,(Mess_IntegralNick2)+3 |
2646 13ac 8093 0000 sts IntegralNick2,r24 |
2647 13b0 9093 0000 sts (IntegralNick2)+1,r25 |
2648 13b4 A093 0000 sts (IntegralNick2)+2,r26 |
2649 13b8 B093 0000 sts (IntegralNick2)+3,r27 |
2650 13bc 8091 0000 lds r24,Mess_IntegralRoll2 |
2651 13c0 9091 0000 lds r25,(Mess_IntegralRoll2)+1 |
2652 13c4 A091 0000 lds r26,(Mess_IntegralRoll2)+2 |
2653 13c8 B091 0000 lds r27,(Mess_IntegralRoll2)+3 |
2654 13cc 8093 0000 sts IntegralRoll2,r24 |
2655 13d0 9093 0000 sts (IntegralRoll2)+1,r25 |
2656 13d4 A093 0000 sts (IntegralRoll2)+2,r26 |
2657 13d8 B093 0000 sts (IntegralRoll2)+3,r27 |
2658 13dc 8091 0000 lds r24,HiResNick |
2659 13e0 9091 0000 lds r25,(HiResNick)+1 |
2660 13e4 97FD sbrc r25,7 |
2661 13e6 0796 adiw r24,7 |
2662 .L119: |
2663 13e8 03E0 ldi r16,3 |
2664 13ea 9595 1: asr r25 |
2665 13ec 8795 ror r24 |
2666 13ee 0A95 dec r16 |
2667 13f0 01F4 brne 1b |
2668 13f2 9093 0000 sts (MesswertNick)+1,r25 |
2669 13f6 8093 0000 sts MesswertNick,r24 |
2670 13fa 8091 0000 lds r24,HiResRoll |
2671 13fe 9091 0000 lds r25,(HiResRoll)+1 |
2672 1402 97FD sbrc r25,7 |
2673 1404 0796 adiw r24,7 |
2674 .L120: |
2675 1406 13E0 ldi r17,3 |
2676 1408 9595 1: asr r25 |
2677 140a 8795 ror r24 |
2678 140c 1A95 dec r17 |
2679 140e 01F4 brne 1b |
2680 1410 9093 0000 sts (MesswertRoll)+1,r25 |
2681 1414 8093 0000 sts MesswertRoll,r24 |
2682 1418 8091 0000 lds r24,AdWertNick |
2683 141c 9091 0000 lds r25,(AdWertNick)+1 |
2684 1420 0F97 sbiw r24,15 |
2685 1422 04F4 brge .L121 |
2686 1424 88E1 ldi r24,lo8(-1000) |
2687 1426 9CEF ldi r25,hi8(-1000) |
2688 1428 9093 0000 sts (MesswertNick)+1,r25 |
2689 142c 8093 0000 sts MesswertNick,r24 |
2690 .L121: |
2691 1430 8091 0000 lds r24,AdWertNick |
2692 1434 9091 0000 lds r25,(AdWertNick)+1 |
2693 1438 0797 sbiw r24,7 |
2694 143a 04F4 brge .L122 |
2695 143c 80E3 ldi r24,lo8(-2000) |
2696 143e 98EF ldi r25,hi8(-2000) |
2697 1440 9093 0000 sts (MesswertNick)+1,r25 |
2698 1444 8093 0000 sts MesswertNick,r24 |
2699 .L122: |
2700 1448 2091 0000 lds r18,PlatinenVersion |
2701 144c 2A30 cpi r18,lo8(10) |
2702 144e 01F4 brne .L123 |
2703 1450 8091 0000 lds r24,AdWertNick |
2704 1454 9091 0000 lds r25,(AdWertNick)+1 |
2705 1458 835F subi r24,lo8(1011) |
2706 145a 9340 sbci r25,hi8(1011) |
2707 145c 04F0 brlt .L124 |
2708 145e 88EE ldi r24,lo8(1000) |
2709 1460 93E0 ldi r25,hi8(1000) |
2710 1462 9093 0000 sts (MesswertNick)+1,r25 |
2711 1466 8093 0000 sts MesswertNick,r24 |
2712 .L124: |
2713 146a 8091 0000 lds r24,AdWertNick |
2714 146e 9091 0000 lds r25,(AdWertNick)+1 |
2715 1472 8A5F subi r24,lo8(1018) |
2716 1474 9340 sbci r25,hi8(1018) |
2717 1476 04F0 brlt .L126 |
2718 1478 00C0 rjmp .L169 |
2719 .L123: |
2720 147a 8091 0000 lds r24,AdWertNick |
2721 147e 9091 0000 lds r25,(AdWertNick)+1 |
2722 1482 815D subi r24,lo8(2001) |
2723 1484 9740 sbci r25,hi8(2001) |
2724 1486 04F0 brlt .L127 |
2725 1488 88EE ldi r24,lo8(1000) |
2726 148a 93E0 ldi r25,hi8(1000) |
2727 148c 9093 0000 sts (MesswertNick)+1,r25 |
2728 1490 8093 0000 sts MesswertNick,r24 |
2729 .L127: |
2730 1494 8091 0000 lds r24,AdWertNick |
2731 1498 9091 0000 lds r25,(AdWertNick)+1 |
2732 149c 805E subi r24,lo8(2016) |
2733 149e 9740 sbci r25,hi8(2016) |
2734 14a0 04F0 brlt .L126 |
2735 .L169: |
2736 14a2 80ED ldi r24,lo8(2000) |
2737 14a4 97E0 ldi r25,hi8(2000) |
2738 14a6 9093 0000 sts (MesswertNick)+1,r25 |
2739 14aa 8093 0000 sts MesswertNick,r24 |
2740 .L126: |
2741 14ae 8091 0000 lds r24,AdWertRoll |
2742 14b2 9091 0000 lds r25,(AdWertRoll)+1 |
2743 14b6 0F97 sbiw r24,15 |
2744 14b8 04F4 brge .L129 |
2745 14ba 88E1 ldi r24,lo8(-1000) |
2746 14bc 9CEF ldi r25,hi8(-1000) |
2747 14be 9093 0000 sts (MesswertRoll)+1,r25 |
2748 14c2 8093 0000 sts MesswertRoll,r24 |
2749 .L129: |
2750 14c6 8091 0000 lds r24,AdWertRoll |
2751 14ca 9091 0000 lds r25,(AdWertRoll)+1 |
2752 14ce 0797 sbiw r24,7 |
2753 14d0 04F4 brge .L130 |
2754 14d2 80E3 ldi r24,lo8(-2000) |
2755 14d4 98EF ldi r25,hi8(-2000) |
2756 14d6 9093 0000 sts (MesswertRoll)+1,r25 |
2757 14da 8093 0000 sts MesswertRoll,r24 |
2758 .L130: |
2759 14de 2A30 cpi r18,lo8(10) |
2760 14e0 01F4 brne .L131 |
2761 14e2 8091 0000 lds r24,AdWertRoll |
2762 14e6 9091 0000 lds r25,(AdWertRoll)+1 |
2763 14ea 835F subi r24,lo8(1011) |
2764 14ec 9340 sbci r25,hi8(1011) |
2765 14ee 04F0 brlt .L132 |
2766 14f0 88EE ldi r24,lo8(1000) |
2767 14f2 93E0 ldi r25,hi8(1000) |
2768 14f4 9093 0000 sts (MesswertRoll)+1,r25 |
2769 14f8 8093 0000 sts MesswertRoll,r24 |
2770 .L132: |
2771 14fc 8091 0000 lds r24,AdWertRoll |
2772 1500 9091 0000 lds r25,(AdWertRoll)+1 |
2773 1504 8A5F subi r24,lo8(1018) |
2774 1506 9340 sbci r25,hi8(1018) |
2775 1508 04F0 brlt .L134 |
2776 150a 00C0 rjmp .L170 |
2777 .L131: |
2778 150c 8091 0000 lds r24,AdWertRoll |
2779 1510 9091 0000 lds r25,(AdWertRoll)+1 |
2780 1514 815D subi r24,lo8(2001) |
2781 1516 9740 sbci r25,hi8(2001) |
2782 1518 04F0 brlt .L135 |
2783 151a 88EE ldi r24,lo8(1000) |
2784 151c 93E0 ldi r25,hi8(1000) |
2785 151e 9093 0000 sts (MesswertRoll)+1,r25 |
2786 1522 8093 0000 sts MesswertRoll,r24 |
2787 .L135: |
2788 1526 8091 0000 lds r24,AdWertRoll |
2789 152a 9091 0000 lds r25,(AdWertRoll)+1 |
2790 152e 805E subi r24,lo8(2016) |
2791 1530 9740 sbci r25,hi8(2016) |
2792 1532 04F0 brlt .L134 |
2793 .L170: |
2794 1534 80ED ldi r24,lo8(2000) |
2795 1536 97E0 ldi r25,hi8(2000) |
2796 1538 9093 0000 sts (MesswertRoll)+1,r25 |
2797 153c 8093 0000 sts MesswertRoll,r24 |
2798 .L134: |
2799 1540 6091 0000 lds r22,Parameter_Gyro_D |
2800 1544 6623 tst r22 |
2801 1546 01F4 brne .+2 |
2802 1548 00C0 rjmp .L137 |
2803 154a 4091 0000 lds r20,HiResNick |
2804 154e 5091 0000 lds r21,(HiResNick)+1 |
2805 1552 8091 0000 lds r24,oldNick.31 |
2806 1556 9091 0000 lds r25,(oldNick.31)+1 |
2807 155a 481B sub r20,r24 |
2808 155c 590B sbc r21,r25 |
2809 155e 5093 0000 sts (d2Nick.34)+1,r21 |
2810 1562 4093 0000 sts d2Nick.34,r20 |
2811 1566 2091 0000 lds r18,HiResNick |
2812 156a 3091 0000 lds r19,(HiResNick)+1 |
2813 156e 280F add r18,r24 |
2814 1570 391F adc r19,r25 |
2815 1572 37FF sbrs r19,7 |
2816 1574 00C0 rjmp .L138 |
2817 1576 2F5F subi r18,lo8(-(1)) |
2818 1578 3F4F sbci r19,hi8(-(1)) |
2819 .L138: |
2820 157a 3595 asr r19 |
2821 157c 2795 ror r18 |
2822 157e 3093 0000 sts (oldNick.31)+1,r19 |
2823 1582 2093 0000 sts oldNick.31,r18 |
2824 1586 4138 cpi r20,129 |
2825 1588 5105 cpc r21,__zero_reg__ |
2826 158a 04F0 brlt .L139 |
2827 158c 80E8 ldi r24,lo8(128) |
2828 158e 90E0 ldi r25,hi8(128) |
2829 1590 00C0 rjmp .L171 |
2830 .L139: |
2831 1592 4058 subi r20,lo8(-128) |
2832 1594 5F4F sbci r21,hi8(-128) |
2833 1596 04F4 brge .L140 |
2834 1598 80E8 ldi r24,lo8(-128) |
2835 159a 9FEF ldi r25,hi8(-128) |
2836 .L171: |
2837 159c 9093 0000 sts (d2Nick.34)+1,r25 |
2838 15a0 8093 0000 sts d2Nick.34,r24 |
2839 .L140: |
2840 15a4 4091 0000 lds r20,HiResRoll |
2841 15a8 5091 0000 lds r21,(HiResRoll)+1 |
2842 15ac 8091 0000 lds r24,oldRoll.32 |
2843 15b0 9091 0000 lds r25,(oldRoll.32)+1 |
2844 15b4 481B sub r20,r24 |
2845 15b6 590B sbc r21,r25 |
2846 15b8 5093 0000 sts (d2Roll.33)+1,r21 |
2847 15bc 4093 0000 sts d2Roll.33,r20 |
2848 15c0 2091 0000 lds r18,HiResRoll |
2849 15c4 3091 0000 lds r19,(HiResRoll)+1 |
2850 15c8 280F add r18,r24 |
2851 15ca 391F adc r19,r25 |
2852 15cc 37FF sbrs r19,7 |
2853 15ce 00C0 rjmp .L142 |
2854 15d0 2F5F subi r18,lo8(-(1)) |
2855 15d2 3F4F sbci r19,hi8(-(1)) |
2856 .L142: |
2857 15d4 3595 asr r19 |
2858 15d6 2795 ror r18 |
2859 15d8 3093 0000 sts (oldRoll.32)+1,r19 |
2860 15dc 2093 0000 sts oldRoll.32,r18 |
2861 15e0 4138 cpi r20,129 |
2862 15e2 5105 cpc r21,__zero_reg__ |
2863 15e4 04F0 brlt .L143 |
2864 15e6 80E8 ldi r24,lo8(128) |
2865 15e8 90E0 ldi r25,hi8(128) |
2866 15ea 00C0 rjmp .L172 |
2867 .L143: |
2868 15ec 4058 subi r20,lo8(-128) |
2869 15ee 5F4F sbci r21,hi8(-128) |
2870 15f0 04F4 brge .L144 |
2871 15f2 80E8 ldi r24,lo8(-128) |
2872 15f4 9FEF ldi r25,hi8(-128) |
2873 .L172: |
2874 15f6 9093 0000 sts (d2Roll.33)+1,r25 |
2875 15fa 8093 0000 sts d2Roll.33,r24 |
2876 .L144: |
2877 15fe 462F mov r20,r22 |
2878 1600 5527 clr r21 |
2879 1602 8091 0000 lds r24,d2Nick.34 |
2880 1606 9091 0000 lds r25,(d2Nick.34)+1 |
2881 160a 849F mul r24,r20 |
2882 160c B001 movw r22,r0 |
2883 160e 859F mul r24,r21 |
2884 1610 700D add r23,r0 |
2885 1612 949F mul r25,r20 |
2886 1614 700D add r23,r0 |
2887 1616 1124 clr r1 |
2888 1618 9B01 movw r18,r22 |
2889 161a 77FF sbrs r23,7 |
2890 161c 00C0 rjmp .L146 |
2891 161e 215F subi r18,lo8(-(15)) |
2892 1620 3F4F sbci r19,hi8(-(15)) |
2893 .L146: |
2894 1622 F4E0 ldi r31,4 |
2895 1624 3595 1: asr r19 |
2896 1626 2795 ror r18 |
2897 1628 FA95 dec r31 |
2898 162a 01F4 brne 1b |
2899 162c 8091 0000 lds r24,MesswertNick |
2900 1630 9091 0000 lds r25,(MesswertNick)+1 |
2901 1634 820F add r24,r18 |
2902 1636 931F adc r25,r19 |
2903 1638 9093 0000 sts (MesswertNick)+1,r25 |
2904 163c 8093 0000 sts MesswertNick,r24 |
2905 1640 8091 0000 lds r24,d2Roll.33 |
2906 1644 9091 0000 lds r25,(d2Roll.33)+1 |
2907 1648 849F mul r24,r20 |
2908 164a D001 movw r26,r0 |
2909 164c 859F mul r24,r21 |
2910 164e B00D add r27,r0 |
2911 1650 949F mul r25,r20 |
2912 1652 B00D add r27,r0 |
2913 1654 1124 clr r1 |
2914 1656 AD01 movw r20,r26 |
2915 1658 9D01 movw r18,r26 |
2916 165a B7FF sbrs r27,7 |
2917 165c 00C0 rjmp .L147 |
2918 165e 215F subi r18,lo8(-(15)) |
2919 1660 3F4F sbci r19,hi8(-(15)) |
2920 .L147: |
2921 1662 E4E0 ldi r30,4 |
2922 1664 3595 1: asr r19 |
2923 1666 2795 ror r18 |
2924 1668 EA95 dec r30 |
2925 166a 01F4 brne 1b |
2926 166c 8091 0000 lds r24,MesswertRoll |
2927 1670 9091 0000 lds r25,(MesswertRoll)+1 |
2928 1674 820F add r24,r18 |
2929 1676 931F adc r25,r19 |
2930 1678 9093 0000 sts (MesswertRoll)+1,r25 |
2931 167c 8093 0000 sts MesswertRoll,r24 |
2932 1680 8091 0000 lds r24,HiResNick |
2933 1684 9091 0000 lds r25,(HiResNick)+1 |
2934 1688 860F add r24,r22 |
2935 168a 971F adc r25,r23 |
2936 168c 9093 0000 sts (HiResNick)+1,r25 |
2937 1690 8093 0000 sts HiResNick,r24 |
2938 1694 8091 0000 lds r24,HiResRoll |
2939 1698 9091 0000 lds r25,(HiResRoll)+1 |
2940 169c 840F add r24,r20 |
2941 169e 951F adc r25,r21 |
2942 16a0 9093 0000 sts (HiResRoll)+1,r25 |
2943 16a4 8093 0000 sts HiResRoll,r24 |
2944 .L137: |
2945 16a8 0091 0000 lds r16,RohMesswertRoll |
2946 16ac 1091 0000 lds r17,(RohMesswertRoll)+1 |
2947 16b0 8091 0000 lds r24,KopplungsteilNickRoll |
2948 16b4 9091 0000 lds r25,(KopplungsteilNickRoll)+1 |
2949 16b8 1016 cp __zero_reg__,r16 |
2950 16ba 1106 cpc __zero_reg__,r17 |
2951 16bc 04F4 brge .L148 |
2952 16be 9C01 movw r18,r24 |
2953 16c0 97FF sbrs r25,7 |
2954 16c2 00C0 rjmp .L149 |
2955 16c4 2227 clr r18 |
2956 16c6 3327 clr r19 |
2957 16c8 281B sub r18,r24 |
2958 16ca 390B sbc r19,r25 |
2959 .L149: |
2960 16cc C901 movw r24,r18 |
2961 16ce AA27 clr r26 |
2962 16d0 97FD sbrc r25,7 |
2963 16d2 A095 com r26 |
2964 16d4 BA2F mov r27,r26 |
2965 16d6 2091 0000 lds r18,Parameter_CouplingYawCorrection |
2966 16da 3327 clr r19 |
2967 16dc 4427 clr r20 |
2968 16de 5527 clr r21 |
2969 16e0 BC01 movw r22,r24 |
2970 16e2 CD01 movw r24,r26 |
2971 16e4 0E94 0000 call __mulsi3 |
2972 16e8 9B01 movw r18,r22 |
2973 16ea AC01 movw r20,r24 |
2974 16ec 97FF sbrs r25,7 |
2975 16ee 00C0 rjmp .L150 |
2976 16f0 215C subi r18,lo8(-(63)) |
2977 16f2 3F4F sbci r19,hi8(-(63)) |
2978 16f4 4F4F sbci r20,hlo8(-(63)) |
2979 16f6 5F4F sbci r21,hhi8(-(63)) |
2980 .L150: |
2981 16f8 76E0 ldi r23,6 |
2982 16fa 5595 1: asr r21 |
2983 16fc 4795 ror r20 |
2984 16fe 3795 ror r19 |
2985 1700 2795 ror r18 |
2986 1702 7A95 dec r23 |
2987 1704 01F4 brne 1b |
2988 1706 8091 0000 lds r24,TrimRoll |
2989 170a 9091 0000 lds r25,(TrimRoll)+1 |
2990 170e 820F add r24,r18 |
2991 1710 931F adc r25,r19 |
2992 1712 00C0 rjmp .L173 |
2993 .L148: |
2994 1714 97FF sbrs r25,7 |
2995 1716 00C0 rjmp .L152 |
2996 1718 9095 com r25 |
2997 171a 8195 neg r24 |
2998 171c 9F4F sbci r25,lo8(-1) |
2999 .L152: |
3000 171e AA27 clr r26 |
3001 1720 97FD sbrc r25,7 |
3002 1722 A095 com r26 |
3003 1724 BA2F mov r27,r26 |
3004 1726 2091 0000 lds r18,Parameter_CouplingYawCorrection |
3005 172a 3327 clr r19 |
3006 172c 4427 clr r20 |
3007 172e 5527 clr r21 |
3008 1730 BC01 movw r22,r24 |
3009 1732 CD01 movw r24,r26 |
3010 1734 0E94 0000 call __mulsi3 |
3011 1738 9B01 movw r18,r22 |
3012 173a AC01 movw r20,r24 |
3013 173c 97FF sbrs r25,7 |
3014 173e 00C0 rjmp .L153 |
3015 1740 215C subi r18,lo8(-(63)) |
3016 1742 3F4F sbci r19,hi8(-(63)) |
3017 1744 4F4F sbci r20,hlo8(-(63)) |
3018 1746 5F4F sbci r21,hhi8(-(63)) |
3019 .L153: |
3020 1748 66E0 ldi r22,6 |
3021 174a 5595 1: asr r21 |
3022 174c 4795 ror r20 |
3023 174e 3795 ror r19 |
3024 1750 2795 ror r18 |
3025 1752 6A95 dec r22 |
3026 1754 01F4 brne 1b |
3027 1756 8091 0000 lds r24,TrimRoll |
3028 175a 9091 0000 lds r25,(TrimRoll)+1 |
3029 175e 821B sub r24,r18 |
3030 1760 930B sbc r25,r19 |
3031 .L173: |
3032 1762 9093 0000 sts (TrimRoll)+1,r25 |
3033 1766 8093 0000 sts TrimRoll,r24 |
3034 176a E090 0000 lds r14,RohMesswertNick |
3035 176e F090 0000 lds r15,(RohMesswertNick)+1 |
3036 1772 8091 0000 lds r24,KopplungsteilRollNick |
3037 1776 9091 0000 lds r25,(KopplungsteilRollNick)+1 |
3038 177a 1E14 cp __zero_reg__,r14 |
3039 177c 1F04 cpc __zero_reg__,r15 |
3040 177e 04F4 brge .L154 |
3041 1780 9C01 movw r18,r24 |
3042 1782 97FF sbrs r25,7 |
3043 1784 00C0 rjmp .L155 |
3044 1786 2227 clr r18 |
3045 1788 3327 clr r19 |
3046 178a 281B sub r18,r24 |
3047 178c 390B sbc r19,r25 |
3048 .L155: |
3049 178e C901 movw r24,r18 |
3050 1790 AA27 clr r26 |
3051 1792 97FD sbrc r25,7 |
3052 1794 A095 com r26 |
3053 1796 BA2F mov r27,r26 |
3054 1798 2091 0000 lds r18,Parameter_CouplingYawCorrection |
3055 179c 3327 clr r19 |
3056 179e 4427 clr r20 |
3057 17a0 5527 clr r21 |
3058 17a2 BC01 movw r22,r24 |
3059 17a4 CD01 movw r24,r26 |
3060 17a6 0E94 0000 call __mulsi3 |
3061 17aa 9B01 movw r18,r22 |
3062 17ac AC01 movw r20,r24 |
3063 17ae 97FF sbrs r25,7 |
3064 17b0 00C0 rjmp .L156 |
3065 17b2 215C subi r18,lo8(-(63)) |
3066 17b4 3F4F sbci r19,hi8(-(63)) |
3067 17b6 4F4F sbci r20,hlo8(-(63)) |
3068 17b8 5F4F sbci r21,hhi8(-(63)) |
3069 .L156: |
3070 17ba 96E0 ldi r25,6 |
3071 17bc 5595 1: asr r21 |
3072 17be 4795 ror r20 |
3073 17c0 3795 ror r19 |
3074 17c2 2795 ror r18 |
3075 17c4 9A95 dec r25 |
3076 17c6 01F4 brne 1b |
3077 17c8 8091 0000 lds r24,TrimNick |
3078 17cc 9091 0000 lds r25,(TrimNick)+1 |
3079 17d0 820F add r24,r18 |
3080 17d2 931F adc r25,r19 |
3081 17d4 00C0 rjmp .L174 |
3082 .L154: |
3083 17d6 97FF sbrs r25,7 |
3084 17d8 00C0 rjmp .L158 |
3085 17da 9095 com r25 |
3086 17dc 8195 neg r24 |
3087 17de 9F4F sbci r25,lo8(-1) |
3088 .L158: |
3089 17e0 AA27 clr r26 |
3090 17e2 97FD sbrc r25,7 |
3091 17e4 A095 com r26 |
3092 17e6 BA2F mov r27,r26 |
3093 17e8 2091 0000 lds r18,Parameter_CouplingYawCorrection |
3094 17ec 3327 clr r19 |
3095 17ee 4427 clr r20 |
3096 17f0 5527 clr r21 |
3097 17f2 BC01 movw r22,r24 |
3098 17f4 CD01 movw r24,r26 |
3099 17f6 0E94 0000 call __mulsi3 |
3100 17fa 9B01 movw r18,r22 |
3101 17fc AC01 movw r20,r24 |
3102 17fe 97FF sbrs r25,7 |
3103 1800 00C0 rjmp .L159 |
3104 1802 215C subi r18,lo8(-(63)) |
3105 1804 3F4F sbci r19,hi8(-(63)) |
3106 1806 4F4F sbci r20,hlo8(-(63)) |
3107 1808 5F4F sbci r21,hhi8(-(63)) |
3108 .L159: |
3109 180a 86E0 ldi r24,6 |
3110 180c 5595 1: asr r21 |
3111 180e 4795 ror r20 |
3112 1810 3795 ror r19 |
3113 1812 2795 ror r18 |
3114 1814 8A95 dec r24 |
3115 1816 01F4 brne 1b |
3116 1818 8091 0000 lds r24,TrimNick |
3117 181c 9091 0000 lds r25,(TrimNick)+1 |
3118 1820 821B sub r24,r18 |
3119 1822 930B sbc r25,r19 |
3120 .L174: |
3121 1824 9093 0000 sts (TrimNick)+1,r25 |
3122 1828 8093 0000 sts TrimNick,r24 |
3123 182c 8091 0000 lds r24,Parameter_GlobalConfig |
3124 1830 87FF sbrs r24,7 |
3125 1832 00C0 rjmp .L82 |
3126 1834 B989 ldd r27,Y+17 |
3127 1836 BB23 tst r27 |
3128 1838 01F0 breq .+2 |
3129 183a 00C0 rjmp .L82 |
3130 183c 8091 0000 lds r24,Looping_Roll |
3131 1840 8823 tst r24 |
3132 1842 01F4 brne .L82 |
3133 1844 E1E0 ldi r30,lo8(257) |
3134 1846 EE16 cp r14,r30 |
3135 1848 E1E0 ldi r30,hi8(257) |
3136 184a FE06 cpc r15,r30 |
3137 184c 04F0 brlt .L161 |
3138 184e 8091 0000 lds r24,MesswertNick |
3139 1852 9091 0000 lds r25,(MesswertNick)+1 |
3140 1856 8E0D add r24,r14 |
3141 1858 9F1D adc r25,r15 |
3142 185a 8050 subi r24,lo8(-(-256)) |
3143 185c 9140 sbci r25,hi8(-(-256)) |
3144 185e 00C0 rjmp .L175 |
3145 .L161: |
3146 1860 F0E0 ldi r31,lo8(-256) |
3147 1862 EF16 cp r14,r31 |
3148 1864 FFEF ldi r31,hi8(-256) |
3149 1866 FF06 cpc r15,r31 |
3150 1868 04F4 brge .L162 |
3151 186a 8091 0000 lds r24,MesswertNick |
3152 186e 9091 0000 lds r25,(MesswertNick)+1 |
3153 1872 8E0D add r24,r14 |
3154 1874 9F1D adc r25,r15 |
3155 1876 8050 subi r24,lo8(-(256)) |
3156 1878 9F4F sbci r25,hi8(-(256)) |
3157 .L175: |
3158 187a 9093 0000 sts (MesswertNick)+1,r25 |
3159 187e 8093 0000 sts MesswertNick,r24 |
3160 .L162: |
3161 1882 21E0 ldi r18,hi8(257) |
3162 1884 0130 cpi r16,lo8(257) |
3163 1886 1207 cpc r17,r18 |
3164 1888 04F0 brlt .L164 |
3165 188a 8091 0000 lds r24,MesswertRoll |
3166 188e 9091 0000 lds r25,(MesswertRoll)+1 |
3167 1892 800F add r24,r16 |
3168 1894 911F adc r25,r17 |
3169 1896 8050 subi r24,lo8(-(-256)) |
3170 1898 9140 sbci r25,hi8(-(-256)) |
3171 189a 00C0 rjmp .L176 |
3172 .L164: |
3173 189c 3FEF ldi r19,hi8(-256) |
3174 189e 0030 cpi r16,lo8(-256) |
3175 18a0 1307 cpc r17,r19 |
3176 18a2 04F4 brge .L82 |
3177 18a4 8091 0000 lds r24,MesswertRoll |
3178 18a8 9091 0000 lds r25,(MesswertRoll)+1 |
3179 18ac 800F add r24,r16 |
3180 18ae 911F adc r25,r17 |
3181 18b0 8050 subi r24,lo8(-(256)) |
3182 18b2 9F4F sbci r25,hi8(-(256)) |
3183 .L176: |
3184 18b4 9093 0000 sts (MesswertRoll)+1,r25 |
3185 18b8 8093 0000 sts MesswertRoll,r24 |
3186 .L82: |
3187 /* epilogue: frame size=19 */ |
3188 18bc E2E1 ldi r30,18 |
3189 18be CD5E subi r28,-19 |
3190 18c0 0C94 0000 jmp __epilogue_restores__+0 |
3191 /* epilogue end (size=4) */ |
3192 /* function Mittelwert size 2000 (1990) */ |
3194 .global SendMotorData |
3196 SendMotorData: |
3197 /* prologue: frame size=0 */ |
3198 /* prologue end (size=0) */ |
3199 18c4 8091 0000 lds r24,MotorenEin |
3200 18c8 8823 tst r24 |
3201 18ca 01F4 brne .L178 |
3202 18cc 8091 0000 lds r24,FC_StatusFlags |
3203 18d0 8C7F andi r24,lo8(-4) |
3204 18d2 8093 0000 sts FC_StatusFlags,r24 |
3205 18d6 A0E0 ldi r26,lo8(MotorTest) |
3206 18d8 B0E0 ldi r27,hi8(MotorTest) |
3207 18da E0E0 ldi r30,lo8(Motor) |
3208 18dc F0E0 ldi r31,hi8(Motor) |
3209 18de 9BE0 ldi r25,lo8(11) |
3210 .L183: |
3211 18e0 8091 0000 lds r24,PC_MotortestActive |
3212 18e4 8823 tst r24 |
3213 18e6 01F4 brne .L182 |
3214 18e8 8C93 st X,r24 |
3215 .L182: |
3216 18ea 8D91 ld r24,X+ |
3217 18ec 8183 std Z+1,r24 |
3218 18ee 1282 std Z+2,__zero_reg__ |
3219 18f0 9150 subi r25,lo8(-(-1)) |
3220 18f2 3896 adiw r30,8 |
3221 18f4 97FF sbrs r25,7 |
3222 18f6 00C0 rjmp .L183 |
3223 18f8 8091 0000 lds r24,PC_MotortestActive |
3224 18fc 8823 tst r24 |
3225 18fe 01F0 breq .L185 |
3226 1900 8091 0000 lds r24,PC_MotortestActive |
3227 1904 8150 subi r24,lo8(-(-1)) |
3228 1906 8093 0000 sts PC_MotortestActive,r24 |
3229 190a 00C0 rjmp .L185 |
3230 .L178: |
3231 190c 8091 0000 lds r24,FC_StatusFlags |
3232 1910 8160 ori r24,lo8(1) |
3233 1912 8093 0000 sts FC_StatusFlags,r24 |
3234 .L185: |
3235 1916 8091 0000 lds r24,I2C_TransferActive |
3236 191a 8823 tst r24 |
3237 191c 01F0 breq .L186 |
3238 191e 1092 0000 sts I2C_TransferActive,__zero_reg__ |
3239 1922 0895 ret |
3240 .L186: |
3241 1924 8093 0000 sts motor_write,r24 |
3242 1928 8093 0000 sts twi_state,r24 |
3243 192c 8091 0000 lds r24,BLFlags |
3244 1930 8E7F andi r24,lo8(-2) |
3245 1932 8093 0000 sts BLFlags,r24 |
3246 1936 85EA ldi r24,lo8(-91) |
3247 1938 8093 BC00 sts 188,r24 |
3248 193c 0895 ret |
3249 /* epilogue: frame size=0 */ |
3250 /* epilogue: noreturn */ |
3251 /* epilogue end (size=0) */ |
3252 /* function SendMotorData size 61 (61) */ |
3254 .global ParameterZuordnung |
3256 ParameterZuordnung: |
3257 /* prologue: frame size=0 */ |
3258 193e CF93 push r28 |
3259 1940 DF93 push r29 |
3260 /* prologue end (size=2) */ |
3261 1942 A0E0 ldi r26,lo8(Poti) |
3262 1944 B0E0 ldi r27,hi8(Poti) |
3263 1946 C0E0 ldi r28,lo8(EE_Parameter+5) |
3264 1948 D0E0 ldi r29,hi8(EE_Parameter+5) |
3265 194a 57E0 ldi r21,lo8(7) |
3266 .L203: |
3267 194c 9991 ld r25,Y+ |
3268 194e E92F mov r30,r25 |
3269 1950 FF27 clr r31 |
3270 1952 EE0F add r30,r30 |
3271 1954 FF1F adc r31,r31 |
3272 1956 E050 subi r30,lo8(-(PPM_in)) |
3273 1958 F040 sbci r31,hi8(-(PPM_in)) |
3274 195a 0190 ld __tmp_reg__,Z+ |
3275 195c F081 ld r31,Z |
3276 195e E02D mov r30,__tmp_reg__ |
3277 1960 E158 subi r30,lo8(-(127)) |
3278 1962 FF4F sbci r31,hi8(-(127)) |
3279 1964 EF3F cpi r30,255 |
3280 1966 F105 cpc r31,__zero_reg__ |
3281 1968 01F0 breq .L194 |
3282 196a 04F0 brlt .L194 |
3283 196c EFEF ldi r30,lo8(255) |
3284 196e F0E0 ldi r31,hi8(255) |
3285 1970 00C0 rjmp .L195 |
3286 .L194: |
3287 1972 F7FF sbrs r31,7 |
3288 1974 00C0 rjmp .L195 |
3289 1976 E0E0 ldi r30,lo8(0) |
3290 1978 F0E0 ldi r31,hi8(0) |
3291 .L195: |
3292 197a 9931 cpi r25,lo8(25) |
3293 197c 01F4 brne .L197 |
3294 197e EC93 st X,r30 |
3295 1980 00C0 rjmp .L193 |
3296 .L197: |
3297 1982 4C91 ld r20,X |
3298 1984 242F mov r18,r20 |
3299 1986 3327 clr r19 |
3300 1988 E217 cp r30,r18 |
3301 198a F307 cpc r31,r19 |
3302 198c 01F0 breq .L193 |
3303 198e CF01 movw r24,r30 |
3304 1990 821B sub r24,r18 |
3305 1992 930B sbc r25,r19 |
3306 1994 97FD sbrc r25,7 |
3307 1996 0396 adiw r24,3 |
3308 .L200: |
3309 1998 9595 asr r25 |
3310 199a 8795 ror r24 |
3311 199c 9595 asr r25 |
3312 199e 8795 ror r24 |
3313 19a0 242F mov r18,r20 |
3314 19a2 280F add r18,r24 |
3315 19a4 2C93 st X,r18 |
3316 19a6 822F mov r24,r18 |
3317 19a8 9927 clr r25 |
3318 19aa E817 cp r30,r24 |
3319 19ac F907 cpc r31,r25 |
3320 19ae 04F4 brge .L201 |
3321 19b0 2150 subi r18,lo8(-(-1)) |
3322 19b2 00C0 rjmp .L323 |
3323 .L201: |
3324 19b4 2F5F subi r18,lo8(-(1)) |
3325 .L323: |
3326 19b6 2C93 st X,r18 |
3327 .L193: |
3328 19b8 5150 subi r21,lo8(-(-1)) |
3329 19ba 1196 adiw r26,1 |
3330 19bc 57FF sbrs r21,7 |
3331 19be 00C0 rjmp .L203 |
3332 19c0 8091 0000 lds r24,EE_Parameter+15 |
3333 19c4 883F cpi r24,lo8(-8) |
3334 19c6 00F0 brlo .L324 |
3335 19c8 EFEF ldi r30,lo8(255) |
3336 19ca F0E0 ldi r31,hi8(255) |
3337 19cc E81B sub r30,r24 |
3338 19ce F109 sbc r31,__zero_reg__ |
3339 19d0 E050 subi r30,lo8(-(Poti)) |
3340 19d2 F040 sbci r31,hi8(-(Poti)) |
3341 19d4 8081 ld r24,Z |
3342 .L324: |
3343 19d6 8093 0000 sts Parameter_Luftdruck_D,r24 |
3344 19da 8091 0000 lds r24,Parameter_Luftdruck_D |
3345 19de 8823 tst r24 |
3346 19e0 01F0 breq .L207 |
3347 19e2 8436 cpi r24,lo8(100) |
3348 19e4 00F0 brlo .L207 |
3349 19e6 84E6 ldi r24,lo8(100) |
3350 19e8 8093 0000 sts Parameter_Luftdruck_D,r24 |
3351 .L207: |
3352 19ec 8091 0000 lds r24,EE_Parameter+17 |
3353 19f0 883F cpi r24,lo8(-8) |
3354 19f2 00F0 brlo .L325 |
3355 19f4 EFEF ldi r30,lo8(255) |
3356 19f6 F0E0 ldi r31,hi8(255) |
3357 19f8 E81B sub r30,r24 |
3358 19fa F109 sbc r31,__zero_reg__ |
3359 19fc E050 subi r30,lo8(-(Poti)) |
3360 19fe F040 sbci r31,hi8(-(Poti)) |
3361 1a00 8081 ld r24,Z |
3362 .L325: |
3363 1a02 8093 0000 sts Parameter_Hoehe_P,r24 |
3364 1a06 8091 0000 lds r24,Parameter_Hoehe_P |
3365 1a0a 8823 tst r24 |
3366 1a0c 01F0 breq .L212 |
3367 1a0e 8436 cpi r24,lo8(100) |
3368 1a10 00F0 brlo .L212 |
3369 1a12 84E6 ldi r24,lo8(100) |
3370 1a14 8093 0000 sts Parameter_Hoehe_P,r24 |
3371 .L212: |
3372 1a18 8091 0000 lds r24,EE_Parameter+30 |
3373 1a1c 883F cpi r24,lo8(-8) |
3374 1a1e 00F0 brlo .L326 |
3375 1a20 EFEF ldi r30,lo8(255) |
3376 1a22 F0E0 ldi r31,hi8(255) |
3377 1a24 E81B sub r30,r24 |
3378 1a26 F109 sbc r31,__zero_reg__ |
3379 1a28 E050 subi r30,lo8(-(Poti)) |
3380 1a2a F040 sbci r31,hi8(-(Poti)) |
3381 1a2c 8081 ld r24,Z |
3382 .L326: |
3383 1a2e 8093 0000 sts Parameter_Gyro_P,r24 |
3384 1a32 8091 0000 lds r24,Parameter_Gyro_P |
3385 1a36 8B30 cpi r24,lo8(11) |
3386 1a38 00F4 brsh .L216 |
3387 1a3a 8AE0 ldi r24,lo8(10) |
3388 1a3c 00C0 rjmp .L327 |
3389 .L216: |
3390 1a3e 8F3F cpi r24,lo8(-1) |
3391 1a40 01F4 brne .L217 |
3392 .L327: |
3393 1a42 8093 0000 sts Parameter_Gyro_P,r24 |
3394 .L217: |
3395 1a46 8091 0000 lds r24,EE_Parameter+75 |
3396 1a4a 883F cpi r24,lo8(-8) |
3397 1a4c 00F0 brlo .L328 |
3398 1a4e EFEF ldi r30,lo8(255) |
3399 1a50 F0E0 ldi r31,hi8(255) |
3400 1a52 E81B sub r30,r24 |
3401 1a54 F109 sbc r31,__zero_reg__ |
3402 1a56 E050 subi r30,lo8(-(Poti)) |
3403 1a58 F040 sbci r31,hi8(-(Poti)) |
3404 1a5a 8081 ld r24,Z |
3405 .L328: |
3406 1a5c 8093 0000 sts Parameter_J16Timing,r24 |
3407 1a60 8091 0000 lds r24,Parameter_J16Timing |
3408 1a64 8630 cpi r24,lo8(6) |
3409 1a66 00F4 brsh .L221 |
3410 1a68 85E0 ldi r24,lo8(5) |
3411 1a6a 00C0 rjmp .L329 |
3412 .L221: |
3413 1a6c 8F3F cpi r24,lo8(-1) |
3414 1a6e 01F4 brne .L222 |
3415 .L329: |
3416 1a70 8093 0000 sts Parameter_J16Timing,r24 |
3417 .L222: |
3418 1a74 8091 0000 lds r24,EE_Parameter+77 |
3419 1a78 883F cpi r24,lo8(-8) |
3420 1a7a 00F0 brlo .L330 |
3421 1a7c EFEF ldi r30,lo8(255) |
3422 1a7e F0E0 ldi r31,hi8(255) |
3423 1a80 E81B sub r30,r24 |
3424 1a82 F109 sbc r31,__zero_reg__ |
3425 1a84 E050 subi r30,lo8(-(Poti)) |
3426 1a86 F040 sbci r31,hi8(-(Poti)) |
3427 1a88 8081 ld r24,Z |
3428 .L330: |
3429 1a8a 8093 0000 sts Parameter_J17Timing,r24 |
3430 1a8e 8091 0000 lds r24,Parameter_J17Timing |
3431 1a92 8630 cpi r24,lo8(6) |
3432 1a94 00F4 brsh .L226 |
3433 1a96 85E0 ldi r24,lo8(5) |
3434 1a98 00C0 rjmp .L331 |
3435 .L226: |
3436 1a9a 8F3F cpi r24,lo8(-1) |
3437 1a9c 01F4 brne .L227 |
3438 .L331: |
3439 1a9e 8093 0000 sts Parameter_J17Timing,r24 |
3440 .L227: |
3441 1aa2 8091 0000 lds r24,EE_Parameter+56 |
3442 1aa6 873F cpi r24,lo8(-9) |
3443 1aa8 01F4 brne .L229 |
3444 1aaa 4299 sbic 40-0x20,2 |
3445 1aac 00C0 rjmp .L362 |
3446 1aae 00C0 rjmp .L234 |
3447 .L229: |
3448 1ab0 863F cpi r24,lo8(-10) |
3449 1ab2 01F4 brne .L233 |
3450 1ab4 439B sbis 40-0x20,3 |
3451 1ab6 00C0 rjmp .L234 |
3452 .L362: |
3453 1ab8 8CE8 ldi r24,lo8(-116) |
3454 1aba 00C0 rjmp .L332 |
3455 .L234: |
3456 1abc 86E4 ldi r24,lo8(70) |
3457 1abe 00C0 rjmp .L332 |
3458 .L233: |
3459 1ac0 883F cpi r24,lo8(-8) |
3460 1ac2 00F0 brlo .L332 |
3461 1ac4 EFEF ldi r30,lo8(255) |
3462 1ac6 F0E0 ldi r31,hi8(255) |
3463 1ac8 E81B sub r30,r24 |
3464 1aca F109 sbc r31,__zero_reg__ |
3465 1acc E050 subi r30,lo8(-(Poti)) |
3466 1ace F040 sbci r31,hi8(-(Poti)) |
3467 1ad0 8081 ld r24,Z |
3468 .L332: |
3469 1ad2 8093 0000 sts Parameter_Servo3,r24 |
3470 1ad6 8091 0000 lds r24,EE_Parameter+57 |
3471 1ada 873F cpi r24,lo8(-9) |
3472 1adc 01F4 brne .L239 |
3473 1ade 4299 sbic 40-0x20,2 |
3474 1ae0 00C0 rjmp .L363 |
3475 1ae2 00C0 rjmp .L244 |
3476 .L239: |
3477 1ae4 863F cpi r24,lo8(-10) |
3478 1ae6 01F4 brne .L243 |
3479 1ae8 439B sbis 40-0x20,3 |
3480 1aea 00C0 rjmp .L244 |
3481 .L363: |
3482 1aec 8CE8 ldi r24,lo8(-116) |
3483 1aee 00C0 rjmp .L333 |
3484 .L244: |
3485 1af0 86E4 ldi r24,lo8(70) |
3486 1af2 00C0 rjmp .L333 |
3487 .L243: |
3488 1af4 883F cpi r24,lo8(-8) |
3489 1af6 00F0 brlo .L333 |
3490 1af8 EFEF ldi r30,lo8(255) |
3491 1afa F0E0 ldi r31,hi8(255) |
3492 1afc E81B sub r30,r24 |
3493 1afe F109 sbc r31,__zero_reg__ |
3494 1b00 E050 subi r30,lo8(-(Poti)) |
3495 1b02 F040 sbci r31,hi8(-(Poti)) |
3496 1b04 8081 ld r24,Z |
3497 .L333: |
3498 1b06 8093 0000 sts Parameter_Servo4,r24 |
3499 1b0a 8091 0000 lds r24,EE_Parameter+58 |
3500 1b0e 883F cpi r24,lo8(-8) |
3501 1b10 00F0 brlo .L334 |
3502 1b12 EFEF ldi r30,lo8(255) |
3503 1b14 F0E0 ldi r31,hi8(255) |
3504 1b16 E81B sub r30,r24 |
3505 1b18 F109 sbc r31,__zero_reg__ |
3506 1b1a E050 subi r30,lo8(-(Poti)) |
3507 1b1c F040 sbci r31,hi8(-(Poti)) |
3508 1b1e 8081 ld r24,Z |
3509 .L334: |
3510 1b20 8093 0000 sts Parameter_Servo5,r24 |
3511 1b24 8091 0000 lds r24,EE_Parameter+16 |
3512 1b28 883F cpi r24,lo8(-8) |
3513 1b2a 00F0 brlo .L335 |
3514 1b2c EFEF ldi r30,lo8(255) |
3515 1b2e F0E0 ldi r31,hi8(255) |
3516 1b30 E81B sub r30,r24 |
3517 1b32 F109 sbc r31,__zero_reg__ |
3518 1b34 E050 subi r30,lo8(-(Poti)) |
3519 1b36 F040 sbci r31,hi8(-(Poti)) |
3520 1b38 8081 ld r24,Z |
3521 .L335: |
3522 1b3a 8093 0000 sts Parameter_HoehenSchalter,r24 |
3523 1b3e 8091 0000 lds r24,EE_Parameter+19 |
3524 1b42 883F cpi r24,lo8(-8) |
3525 1b44 00F0 brlo .L336 |
3526 1b46 EFEF ldi r30,lo8(255) |
3527 1b48 F0E0 ldi r31,hi8(255) |
3528 1b4a E81B sub r30,r24 |
3529 1b4c F109 sbc r31,__zero_reg__ |
3530 1b4e E050 subi r30,lo8(-(Poti)) |
3531 1b50 F040 sbci r31,hi8(-(Poti)) |
3532 1b52 8081 ld r24,Z |
3533 .L336: |
3534 1b54 8093 0000 sts Parameter_Hoehe_ACC_Wirkung,r24 |
3535 1b58 8091 0000 lds r24,EE_Parameter+21 |
3536 1b5c 883F cpi r24,lo8(-8) |
3537 1b5e 00F0 brlo .L337 |
3538 1b60 EFEF ldi r30,lo8(255) |
3539 1b62 F0E0 ldi r31,hi8(255) |
3540 1b64 E81B sub r30,r24 |
3541 1b66 F109 sbc r31,__zero_reg__ |
3542 1b68 E050 subi r30,lo8(-(Poti)) |
3543 1b6a F040 sbci r31,hi8(-(Poti)) |
3544 1b6c 8081 ld r24,Z |
3545 .L337: |
3546 1b6e 8093 0000 sts Parameter_Hoehe_GPS_Z,r24 |
3547 1b72 8091 0000 lds r24,EE_Parameter+29 |
3548 1b76 883F cpi r24,lo8(-8) |
3549 1b78 00F0 brlo .L338 |
3550 1b7a EFEF ldi r30,lo8(255) |
3551 1b7c F0E0 ldi r31,hi8(255) |
3552 1b7e E81B sub r30,r24 |
3553 1b80 F109 sbc r31,__zero_reg__ |
3554 1b82 E050 subi r30,lo8(-(Poti)) |
3555 1b84 F040 sbci r31,hi8(-(Poti)) |
3556 1b86 8081 ld r24,Z |
3557 .L338: |
3558 1b88 8093 0000 sts Parameter_KompassWirkung,r24 |
3559 1b8c 8091 0000 lds r24,EE_Parameter+31 |
3560 1b90 883F cpi r24,lo8(-8) |
3561 1b92 00F0 brlo .L339 |
3562 1b94 EFEF ldi r30,lo8(255) |
3563 1b96 F0E0 ldi r31,hi8(255) |
3564 1b98 E81B sub r30,r24 |
3565 1b9a F109 sbc r31,__zero_reg__ |
3566 1b9c E050 subi r30,lo8(-(Poti)) |
3567 1b9e F040 sbci r31,hi8(-(Poti)) |
3568 1ba0 8081 ld r24,Z |
3569 .L339: |
3570 1ba2 8093 0000 sts Parameter_Gyro_I,r24 |
3571 1ba6 8091 0000 lds r24,EE_Parameter+32 |
3572 1baa 883F cpi r24,lo8(-8) |
3573 1bac 00F0 brlo .L340 |
3574 1bae EFEF ldi r30,lo8(255) |
3575 1bb0 F0E0 ldi r31,hi8(255) |
3576 1bb2 E81B sub r30,r24 |
3577 1bb4 F109 sbc r31,__zero_reg__ |
3578 1bb6 E050 subi r30,lo8(-(Poti)) |
3579 1bb8 F040 sbci r31,hi8(-(Poti)) |
3580 1bba 8081 ld r24,Z |
3581 .L340: |
3582 1bbc 8093 0000 sts Parameter_Gyro_D,r24 |
3583 1bc0 8091 0000 lds r24,EE_Parameter+33 |
3584 1bc4 883F cpi r24,lo8(-8) |
3585 1bc6 00F0 brlo .L341 |
3586 1bc8 EFEF ldi r30,lo8(255) |
3587 1bca F0E0 ldi r31,hi8(255) |
3588 1bcc E81B sub r30,r24 |
3589 1bce F109 sbc r31,__zero_reg__ |
3590 1bd0 E050 subi r30,lo8(-(Poti)) |
3591 1bd2 F040 sbci r31,hi8(-(Poti)) |
3592 1bd4 8081 ld r24,Z |
3593 .L341: |
3594 1bd6 8093 0000 sts Parameter_Gyro_Gier_P,r24 |
3595 1bda 8091 0000 lds r24,EE_Parameter+34 |
3596 1bde 883F cpi r24,lo8(-8) |
3597 1be0 00F0 brlo .L342 |
3598 1be2 EFEF ldi r30,lo8(255) |
3599 1be4 F0E0 ldi r31,hi8(255) |
3600 1be6 E81B sub r30,r24 |
3601 1be8 F109 sbc r31,__zero_reg__ |
3602 1bea E050 subi r30,lo8(-(Poti)) |
3603 1bec F040 sbci r31,hi8(-(Poti)) |
3604 1bee 8081 ld r24,Z |
3605 .L342: |
3606 1bf0 8093 0000 sts Parameter_Gyro_Gier_I,r24 |
3607 1bf4 8091 0000 lds r24,EE_Parameter+40 |
3608 1bf8 883F cpi r24,lo8(-8) |
3609 1bfa 00F0 brlo .L343 |
3610 1bfc EFEF ldi r30,lo8(255) |
3611 1bfe F0E0 ldi r31,hi8(255) |
3612 1c00 E81B sub r30,r24 |
3613 1c02 F109 sbc r31,__zero_reg__ |
3614 1c04 E050 subi r30,lo8(-(Poti)) |
3615 1c06 F040 sbci r31,hi8(-(Poti)) |
3616 1c08 8081 ld r24,Z |
3617 .L343: |
3618 1c0a 8093 0000 sts Parameter_I_Faktor,r24 |
3619 1c0e 8091 0000 lds r24,EE_Parameter+41 |
3620 1c12 883F cpi r24,lo8(-8) |
3621 1c14 00F0 brlo .L344 |
3622 1c16 EFEF ldi r30,lo8(255) |
3623 1c18 F0E0 ldi r31,hi8(255) |
3624 1c1a E81B sub r30,r24 |
3625 1c1c F109 sbc r31,__zero_reg__ |
3626 1c1e E050 subi r30,lo8(-(Poti)) |
3627 1c20 F040 sbci r31,hi8(-(Poti)) |
3628 1c22 8081 ld r24,Z |
3629 .L344: |
3630 1c24 8093 0000 sts Parameter_UserParam1,r24 |
3631 1c28 8091 0000 lds r24,EE_Parameter+42 |
3632 1c2c 883F cpi r24,lo8(-8) |
3633 1c2e 00F0 brlo .L345 |
3634 1c30 EFEF ldi r30,lo8(255) |
3635 1c32 F0E0 ldi r31,hi8(255) |
3636 1c34 E81B sub r30,r24 |
3637 1c36 F109 sbc r31,__zero_reg__ |
3638 1c38 E050 subi r30,lo8(-(Poti)) |
3639 1c3a F040 sbci r31,hi8(-(Poti)) |
3640 1c3c 8081 ld r24,Z |
3641 .L345: |
3642 1c3e 8093 0000 sts Parameter_UserParam2,r24 |
3643 1c42 8091 0000 lds r24,EE_Parameter+43 |
3644 1c46 883F cpi r24,lo8(-8) |
3645 1c48 00F0 brlo .L346 |
3646 1c4a EFEF ldi r30,lo8(255) |
3647 1c4c F0E0 ldi r31,hi8(255) |
3648 1c4e E81B sub r30,r24 |
3649 1c50 F109 sbc r31,__zero_reg__ |
3650 1c52 E050 subi r30,lo8(-(Poti)) |
3651 1c54 F040 sbci r31,hi8(-(Poti)) |
3652 1c56 8081 ld r24,Z |
3653 .L346: |
3654 1c58 8093 0000 sts Parameter_UserParam3,r24 |
3655 1c5c 8091 0000 lds r24,EE_Parameter+44 |
3656 1c60 883F cpi r24,lo8(-8) |
3657 1c62 00F0 brlo .L347 |
3658 1c64 EFEF ldi r30,lo8(255) |
3659 1c66 F0E0 ldi r31,hi8(255) |
3660 1c68 E81B sub r30,r24 |
3661 1c6a F109 sbc r31,__zero_reg__ |
3662 1c6c E050 subi r30,lo8(-(Poti)) |
3663 1c6e F040 sbci r31,hi8(-(Poti)) |
3664 1c70 8081 ld r24,Z |
3665 .L347: |
3666 1c72 8093 0000 sts Parameter_UserParam4,r24 |
3667 1c76 8091 0000 lds r24,EE_Parameter+70 |
3668 1c7a 883F cpi r24,lo8(-8) |
3669 1c7c 00F0 brlo .L348 |
3670 1c7e EFEF ldi r30,lo8(255) |
3671 1c80 F0E0 ldi r31,hi8(255) |
3672 1c82 E81B sub r30,r24 |
3673 1c84 F109 sbc r31,__zero_reg__ |
3674 1c86 E050 subi r30,lo8(-(Poti)) |
3675 1c88 F040 sbci r31,hi8(-(Poti)) |
3676 1c8a 8081 ld r24,Z |
3677 .L348: |
3678 1c8c 8093 0000 sts Parameter_UserParam5,r24 |
3679 1c90 8091 0000 lds r24,EE_Parameter+71 |
3680 1c94 883F cpi r24,lo8(-8) |
3681 1c96 00F0 brlo .L349 |
3682 1c98 EFEF ldi r30,lo8(255) |
3683 1c9a F0E0 ldi r31,hi8(255) |
3684 1c9c E81B sub r30,r24 |
3685 1c9e F109 sbc r31,__zero_reg__ |
3686 1ca0 E050 subi r30,lo8(-(Poti)) |
3687 1ca2 F040 sbci r31,hi8(-(Poti)) |
3688 1ca4 8081 ld r24,Z |
3689 .L349: |
3690 1ca6 8093 0000 sts Parameter_UserParam6,r24 |
3691 1caa 8091 0000 lds r24,EE_Parameter+72 |
3692 1cae 883F cpi r24,lo8(-8) |
3693 1cb0 00F0 brlo .L350 |
3694 1cb2 EFEF ldi r30,lo8(255) |
3695 1cb4 F0E0 ldi r31,hi8(255) |
3696 1cb6 E81B sub r30,r24 |
3697 1cb8 F109 sbc r31,__zero_reg__ |
3698 1cba E050 subi r30,lo8(-(Poti)) |
3699 1cbc F040 sbci r31,hi8(-(Poti)) |
3700 1cbe 8081 ld r24,Z |
3701 .L350: |
3702 1cc0 8093 0000 sts Parameter_UserParam7,r24 |
3703 1cc4 8091 0000 lds r24,EE_Parameter+73 |
3704 1cc8 883F cpi r24,lo8(-8) |
3705 1cca 00F0 brlo .L351 |
3706 1ccc EFEF ldi r30,lo8(255) |
3707 1cce F0E0 ldi r31,hi8(255) |
3708 1cd0 E81B sub r30,r24 |
3709 1cd2 F109 sbc r31,__zero_reg__ |
3710 1cd4 E050 subi r30,lo8(-(Poti)) |
3711 1cd6 F040 sbci r31,hi8(-(Poti)) |
3712 1cd8 8081 ld r24,Z |
3713 .L351: |
3714 1cda 8093 0000 sts Parameter_UserParam8,r24 |
3715 1cde 8091 0000 lds r24,EE_Parameter+45 |
3716 1ce2 883F cpi r24,lo8(-8) |
3717 1ce4 00F0 brlo .L352 |
3718 1ce6 EFEF ldi r30,lo8(255) |
3719 1ce8 F0E0 ldi r31,hi8(255) |
3720 1cea E81B sub r30,r24 |
3721 1cec F109 sbc r31,__zero_reg__ |
3722 1cee E050 subi r30,lo8(-(Poti)) |
3723 1cf0 F040 sbci r31,hi8(-(Poti)) |
3724 1cf2 8081 ld r24,Z |
3725 .L352: |
3726 1cf4 8093 0000 sts Parameter_ServoNickControl,r24 |
3727 1cf8 8091 0000 lds r24,EE_Parameter+49 |
3728 1cfc 883F cpi r24,lo8(-8) |
3729 1cfe 00F0 brlo .L353 |
3730 1d00 EFEF ldi r30,lo8(255) |
3731 1d02 F0E0 ldi r31,hi8(255) |
3732 1d04 E81B sub r30,r24 |
3733 1d06 F109 sbc r31,__zero_reg__ |
3734 1d08 E050 subi r30,lo8(-(Poti)) |
3735 1d0a F040 sbci r31,hi8(-(Poti)) |
3736 1d0c 8081 ld r24,Z |
3737 .L353: |
3738 1d0e 8093 0000 sts Parameter_ServoRollControl,r24 |
3739 1d12 8091 0000 lds r24,EE_Parameter+59 |
3740 1d16 883F cpi r24,lo8(-8) |
3741 1d18 00F0 brlo .L354 |
3742 1d1a EFEF ldi r30,lo8(255) |
3743 1d1c F0E0 ldi r31,hi8(255) |
3744 1d1e E81B sub r30,r24 |
3745 1d20 F109 sbc r31,__zero_reg__ |
3746 1d22 E050 subi r30,lo8(-(Poti)) |
3747 1d24 F040 sbci r31,hi8(-(Poti)) |
3748 1d26 8081 ld r24,Z |
3749 .L354: |
3750 1d28 8093 0000 sts Parameter_LoopGasLimit,r24 |
3751 1d2c 8091 0000 lds r24,EE_Parameter+62 |
3752 1d30 883F cpi r24,lo8(-8) |
3753 1d32 00F0 brlo .L355 |
3754 1d34 EFEF ldi r30,lo8(255) |
3755 1d36 F0E0 ldi r31,hi8(255) |
3756 1d38 E81B sub r30,r24 |
3757 1d3a F109 sbc r31,__zero_reg__ |
3758 1d3c E050 subi r30,lo8(-(Poti)) |
3759 1d3e F040 sbci r31,hi8(-(Poti)) |
3760 1d40 8081 ld r24,Z |
3761 .L355: |
3762 1d42 8093 0000 sts Parameter_AchsKopplung1,r24 |
3763 1d46 8091 0000 lds r24,EE_Parameter+63 |
3764 1d4a 883F cpi r24,lo8(-8) |
3765 1d4c 00F0 brlo .L356 |
3766 1d4e EFEF ldi r30,lo8(255) |
3767 1d50 F0E0 ldi r31,hi8(255) |
3768 1d52 E81B sub r30,r24 |
3769 1d54 F109 sbc r31,__zero_reg__ |
3770 1d56 E050 subi r30,lo8(-(Poti)) |
3771 1d58 F040 sbci r31,hi8(-(Poti)) |
3772 1d5a 8081 ld r24,Z |
3773 .L356: |
3774 1d5c 8093 0000 sts Parameter_AchsKopplung2,r24 |
3775 1d60 8091 0000 lds r24,EE_Parameter+64 |
3776 1d64 883F cpi r24,lo8(-8) |
3777 1d66 00F0 brlo .L357 |
3778 1d68 EFEF ldi r30,lo8(255) |
3779 1d6a F0E0 ldi r31,hi8(255) |
3780 1d6c E81B sub r30,r24 |
3781 1d6e F109 sbc r31,__zero_reg__ |
3782 1d70 E050 subi r30,lo8(-(Poti)) |
3783 1d72 F040 sbci r31,hi8(-(Poti)) |
3784 1d74 8081 ld r24,Z |
3785 .L357: |
3786 1d76 8093 0000 sts Parameter_CouplingYawCorrection,r24 |
3787 1d7a 8091 0000 lds r24,EE_Parameter+104 |
3788 1d7e 883F cpi r24,lo8(-8) |
3789 1d80 00F0 brlo .L358 |
3790 1d82 EFEF ldi r30,lo8(255) |
3791 1d84 F0E0 ldi r31,hi8(255) |
3792 1d86 E81B sub r30,r24 |
3793 1d88 F109 sbc r31,__zero_reg__ |
3794 1d8a E050 subi r30,lo8(-(Poti)) |
3795 1d8c F040 sbci r31,hi8(-(Poti)) |
3796 1d8e 8081 ld r24,Z |
3797 .L358: |
3798 1d90 8093 0000 sts Parameter_MaximumAltitude,r24 |
3799 1d94 9091 0000 lds r25,NC_To_FC_MaxAltitude |
3800 1d98 9923 tst r25 |
3801 1d9a 01F0 breq .L301 |
3802 1d9c 8091 0000 lds r24,Parameter_MaximumAltitude |
3803 1da0 9817 cp r25,r24 |
3804 1da2 00F0 brlo .L300 |
3805 .L301: |
3806 1da4 8091 0000 lds r24,Parameter_MaximumAltitude |
3807 1da8 8823 tst r24 |
3808 1daa 01F4 brne .L299 |
3809 .L300: |
3810 1dac 9093 0000 sts Parameter_MaximumAltitude,r25 |
3811 .L299: |
3812 1db0 8091 0000 lds r24,EE_Parameter+13 |
3813 1db4 8093 0000 sts Parameter_GlobalConfig,r24 |
3814 1db8 8091 0000 lds r24,EE_Parameter+110 |
3815 1dbc 8093 0000 sts Parameter_ExtraConfig,r24 |
3816 1dc0 8091 0000 lds r24,EE_Parameter+69 |
3817 1dc4 883F cpi r24,lo8(-8) |
3818 1dc6 00F0 brlo .L359 |
3819 1dc8 EFEF ldi r30,lo8(255) |
3820 1dca F0E0 ldi r31,hi8(255) |
3821 1dcc E81B sub r30,r24 |
3822 1dce F109 sbc r31,__zero_reg__ |
3823 1dd0 E050 subi r30,lo8(-(Poti)) |
3824 1dd2 F040 sbci r31,hi8(-(Poti)) |
3825 1dd4 8081 ld r24,Z |
3826 .L359: |
3827 1dd6 8093 0000 sts Parameter_DynamicStability,r24 |
3828 1dda 8091 0000 lds r24,EE_Parameter+97 |
3829 1dde 883F cpi r24,lo8(-8) |
3830 1de0 00F0 brlo .L360 |
3831 1de2 EFEF ldi r30,lo8(255) |
3832 1de4 F0E0 ldi r31,hi8(255) |
3833 1de6 E81B sub r30,r24 |
3834 1de8 F109 sbc r31,__zero_reg__ |
3835 1dea E050 subi r30,lo8(-(Poti)) |
3836 1dec F040 sbci r31,hi8(-(Poti)) |
3837 1dee 8081 ld r24,Z |
3838 .L360: |
3839 1df0 8093 0000 sts Parameter_ExternalControl,r24 |
3840 1df4 8091 0000 lds r24,Parameter_I_Faktor |
3841 1df8 282F mov r18,r24 |
3842 1dfa 3327 clr r19 |
3843 1dfc 2F5F subi r18,lo8(-(1)) |
3844 1dfe 3F4F sbci r19,hi8(-(1)) |
3845 1e00 8CE3 ldi r24,lo8(10300) |
3846 1e02 98E2 ldi r25,hi8(10300) |
3847 1e04 B901 movw r22,r18 |
3848 1e06 0E94 0000 call __divmodhi4 |
3849 1e0a 7093 0000 sts (Ki)+1,r23 |
3850 1e0e 6093 0000 sts Ki,r22 |
3851 1e12 8091 0000 lds r24,EE_Parameter+27 |
3852 1e16 8093 0000 sts MAX_GAS,r24 |
3853 1e1a 8091 0000 lds r24,EE_Parameter+26 |
3854 1e1e 8093 0000 sts MIN_GAS,r24 |
3855 1e22 9091 0000 lds r25,EE_Parameter+99 |
3856 1e26 9333 cpi r25,lo8(51) |
3857 1e28 00F4 brsh .+2 |
3858 1e2a 00C0 rjmp .L306 |
3859 1e2c 81E0 ldi r24,lo8(1) |
3860 1e2e 8093 0000 sts CareFree,r24 |
3861 1e32 983F cpi r25,lo8(-8) |
3862 1e34 00F0 brlo .L307 |
3863 1e36 EFEF ldi r30,lo8(255) |
3864 1e38 F0E0 ldi r31,hi8(255) |
3865 1e3a E91B sub r30,r25 |
3866 1e3c F109 sbc r31,__zero_reg__ |
3867 1e3e E050 subi r30,lo8(-(Poti)) |
3868 1e40 F040 sbci r31,hi8(-(Poti)) |
3869 1e42 8081 ld r24,Z |
3870 1e44 8233 cpi r24,lo8(50) |
3871 1e46 00F4 brsh .L307 |
3872 1e48 1092 0000 sts CareFree,__zero_reg__ |
3873 .L307: |
3874 1e4c 8091 0000 lds r24,carefree_old |
3875 1e50 2091 0000 lds r18,CareFree |
3876 1e54 8217 cp r24,r18 |
3877 1e56 01F0 breq .L308 |
3878 1e58 8330 cpi r24,lo8(3) |
3879 1e5a 00F4 brsh .L309 |
3880 1e5c 3091 0000 lds r19,SpeakHoTT |
3881 1e60 2223 tst r18 |
3882 1e62 01F0 breq .L310 |
3883 1e64 8CED ldi r24,lo8(1500) |
3884 1e66 95E0 ldi r25,hi8(1500) |
3885 1e68 9093 0000 sts (beeptime)+1,r25 |
3886 1e6c 8093 0000 sts beeptime,r24 |
3887 1e70 3323 tst r19 |
3888 1e72 01F4 brne .L312 |
3889 1e74 8EE2 ldi r24,lo8(46) |
3890 1e76 00C0 rjmp .L361 |
3891 .L310: |
3892 1e78 88EC ldi r24,lo8(200) |
3893 1e7a 90E0 ldi r25,hi8(200) |
3894 1e7c 9093 0000 sts (beeptime)+1,r25 |
3895 1e80 8093 0000 sts beeptime,r24 |
3896 1e84 3323 tst r19 |
3897 1e86 01F4 brne .L312 |
3898 1e88 87E1 ldi r24,lo8(23) |
3899 .L361: |
3900 1e8a 8093 0000 sts SpeakHoTT,r24 |
3901 .L312: |
3902 1e8e 85E0 ldi r24,lo8(5) |
3903 1e90 8093 0000 sts NeueKompassRichtungMerken,r24 |
3904 1e94 2093 0000 sts carefree_old,r18 |
3905 1e98 00C0 rjmp .L308 |
3906 .L309: |
3907 1e9a 8150 subi r24,lo8(-(-1)) |
3908 1e9c 8093 0000 sts carefree_old,r24 |
3909 .L308: |
3910 1ea0 8091 0000 lds r24,FromNaviCtrl+7 |
3911 1ea4 9091 0000 lds r25,(FromNaviCtrl+7)+1 |
3912 1ea8 97FF sbrs r25,7 |
3913 1eaa 00C0 rjmp .L316 |
3914 1eac 8091 0000 lds r24,CareFree |
3915 1eb0 8823 tst r24 |
3916 1eb2 01F0 breq .L316 |
3917 1eb4 8091 0000 lds r24,VersionInfo+5 |
3918 1eb8 8068 ori r24,lo8(-128) |
3919 1eba 8093 0000 sts VersionInfo+5,r24 |
3920 1ebe 00C0 rjmp .L316 |
3921 .L306: |
3922 1ec0 1092 0000 sts CareFree,__zero_reg__ |
3923 1ec4 8AE0 ldi r24,lo8(10) |
3924 1ec6 8093 0000 sts carefree_old,r24 |
3925 .L316: |
3926 1eca 8091 0000 lds r24,FromNaviCtrl+7 |
3927 1ece 9091 0000 lds r25,(FromNaviCtrl+7)+1 |
3928 1ed2 97FF sbrs r25,7 |
3929 1ed4 00C0 rjmp .L317 |
3930 1ed6 8091 0000 lds r24,MotorenEin |
3931 1eda 8823 tst r24 |
3932 1edc 01F0 breq .L317 |
3933 1ede 8091 0000 lds r24,CareFree |
3934 1ee2 8823 tst r24 |
3935 1ee4 01F0 breq .L317 |
3936 1ee6 8091 0000 lds r24,BeepMuster |
3937 1eea 9091 0000 lds r25,(BeepMuster)+1 |
3938 1eee 8F5F subi r24,lo8(-1) |
3939 1ef0 9F4F sbci r25,hi8(-1) |
3940 1ef2 01F4 brne .L317 |
3941 1ef4 88E9 ldi r24,lo8(15000) |
3942 1ef6 9AE3 ldi r25,hi8(15000) |
3943 1ef8 9093 0000 sts (beeptime)+1,r25 |
3944 1efc 8093 0000 sts beeptime,r24 |
3945 1f00 80E0 ldi r24,lo8(-23552) |
3946 1f02 94EA ldi r25,hi8(-23552) |
3947 1f04 9093 0000 sts (BeepMuster)+1,r25 |
3948 1f08 8093 0000 sts BeepMuster,r24 |
3949 1f0c 1092 0000 sts CareFree,__zero_reg__ |
3950 .L317: |
3951 1f10 8091 0000 lds r24,CareFree |
3952 1f14 8823 tst r24 |
3953 1f16 01F0 breq .L318 |
3954 1f18 8091 0000 lds r24,FC_StatusFlags2 |
3955 1f1c 8160 ori r24,lo8(1) |
3956 1f1e 8093 0000 sts FC_StatusFlags2,r24 |
3957 1f22 8091 0000 lds r24,Parameter_AchsKopplung1 |
3958 1f26 823D cpi r24,lo8(-46) |
3959 1f28 00F4 brsh .L190 |
3960 1f2a 825E subi r24,lo8(-(30)) |
3961 1f2c 8093 0000 sts Parameter_AchsKopplung1,r24 |
3962 1f30 00C0 rjmp .L190 |
3963 .L318: |
3964 1f32 8091 0000 lds r24,FC_StatusFlags2 |
3965 1f36 8E7F andi r24,lo8(-2) |
3966 1f38 8093 0000 sts FC_StatusFlags2,r24 |
3967 .L190: |
3968 /* epilogue: frame size=0 */ |
3969 1f3c DF91 pop r29 |
3970 1f3e CF91 pop r28 |
3971 1f40 0895 ret |
3972 /* epilogue end (size=3) */ |
3973 /* function ParameterZuordnung size 772 (767) */ |
3975 .lcomm sollGier.0,4 |
3976 .lcomm tmp_long.1,4 |
3977 .lcomm tmp_long2.2,4 |
3978 .lcomm IntegralFehlerNick.3,4 |
3979 .lcomm IntegralFehlerRoll.4,4 |
3980 .lcomm RcLostTimer.5,2 |
3981 .lcomm delay_neutral.6,1 |
3982 .lcomm delay_einschalten.7,1 |
3983 .lcomm delay_ausschalten.8,1 |
3984 .lcomm move_safety_switch.9,1 |
3985 .lcomm ausgleichNick.10,4 |
3986 .lcomm ausgleichRoll.11,4 |
3987 .lcomm stick_nick.12,2 |
3988 .lcomm stick_roll.13,2 |
3989 .lcomm cnt.14,2 |
3990 .lcomm last_n_p.15,1 |
3991 .lcomm last_n_n.16,1 |
3992 .lcomm last_r_p.17,1 |
3993 .lcomm last_r_n.18,1 |
3994 .lcomm MittelIntegralNick_Alt.19,4 |
3995 .lcomm MittelIntegralRoll_Alt.20,4 |
3996 .lcomm HeightTrimming.21,2 |
3997 .lcomm FilterHCGas.22,2 |
3998 .lcomm HoverGasFilter.23,4 |
3999 .data |
4002 delay.24: |
4003 004f 64 .byte 100 |
4004 .lcomm BaroAtUpperLimit.25,1 |
4005 .lcomm BaroAtLowerLimit.26,1 |
4006 .text |
4007 .global MotorRegler |
4009 MotorRegler: |
4010 /* prologue: frame size=23 */ |
4011 1f42 A7E1 ldi r26,lo8(23) |
4012 1f44 B0E0 ldi r27,hi8(23) |
4013 1f46 E0E0 ldi r30,pm_lo8(1f) |
4014 1f48 F0E0 ldi r31,pm_hi8(1f) |
4015 1f4a 0C94 0000 jmp __prologue_saves__+0 |
4016 1: |
4017 /* prologue end (size=6) */ |
4018 1f4e 0E94 0000 call Mittelwert |
4019 1f52 8091 0000 lds r24,FC_StatusFlags |
4020 1f56 9927 clr r25 |
4021 1f58 8471 andi r24,lo8(20) |
4022 1f5a 9070 andi r25,hi8(20) |
4023 1f5c 892B or r24,r25 |
4024 1f5e 01F4 brne .L365 |
4025 1f60 8091 0000 lds r24,EE_Parameter+111 |
4026 1f64 82FF sbrs r24,2 |
4027 1f66 00C0 rjmp .L366 |
4028 1f68 8091 0000 lds r24,HoverGas |
4029 1f6c 9091 0000 lds r25,(HoverGas)+1 |
4030 1f70 0097 sbiw r24,0 |
4031 1f72 01F0 breq .L367 |
4032 1f74 02E0 ldi r16,hi8(600) |
4033 1f76 8835 cpi r24,lo8(600) |
4034 1f78 9007 cpc r25,r16 |
4035 1f7a 04F4 brge .L367 |
4036 1f7c 9C01 movw r18,r24 |
4037 1f7e 97FF sbrs r25,7 |
4038 1f80 00C0 rjmp .L368 |
4039 1f82 2D5F subi r18,lo8(-(3)) |
4040 1f84 3F4F sbci r19,hi8(-(3)) |
4041 .L368: |
4042 1f86 3595 asr r19 |
4043 1f88 2795 ror r18 |
4044 1f8a 3595 asr r19 |
4045 1f8c 2795 ror r18 |
4046 1f8e 8091 0000 lds r24,EE_Parameter+37 |
4047 1f92 9927 clr r25 |
4048 1f94 289F mul r18,r24 |
4049 1f96 A001 movw r20,r0 |
4050 1f98 299F mul r18,r25 |
4051 1f9a 500D add r21,r0 |
4052 1f9c 389F mul r19,r24 |
4053 1f9e 500D add r21,r0 |
4054 1fa0 1124 clr r1 |
4055 1fa2 CA01 movw r24,r20 |
4056 1fa4 64E6 ldi r22,lo8(100) |
4057 1fa6 70E0 ldi r23,hi8(100) |
4058 1fa8 0E94 0000 call __divmodhi4 |
4059 1fac CB01 movw r24,r22 |
4060 1fae 00C0 rjmp .L887 |
4061 .L367: |
4062 1fb0 8DE2 ldi r24,lo8(45) |
4063 1fb2 90E0 ldi r25,hi8(45) |
4064 1fb4 00C0 rjmp .L887 |
4065 .L366: |
4066 1fb6 8091 0000 lds r24,EE_Parameter+37 |
4067 1fba 9927 clr r25 |
4068 .L887: |
4069 1fbc 9093 0000 sts (HooverGasEmergencyPercent)+1,r25 |
4070 1fc0 8093 0000 sts HooverGasEmergencyPercent,r24 |
4071 .L365: |
4072 1fc4 2091 0000 lds r18,GasIsZeroCnt |
4073 1fc8 3091 0000 lds r19,(GasIsZeroCnt)+1 |
4074 1fcc 55E7 ldi r21,hi8(30000) |
4075 1fce 2033 cpi r18,lo8(30000) |
4076 1fd0 3507 cpc r19,r21 |
4077 1fd2 01F4 brne .L371 |
4078 1fd4 1092 0000 sts (StickGas)+1,__zero_reg__ |
4079 1fd8 1092 0000 sts StickGas,__zero_reg__ |
4080 1fdc 8091 0000 lds r24,MIN_GAS |
4081 1fe0 9927 clr r25 |
4082 1fe2 9093 0000 sts (HooverGasEmergencyPercent)+1,r25 |
4083 1fe6 8093 0000 sts HooverGasEmergencyPercent,r24 |
4084 .L371: |
4085 1fea 6091 0000 lds r22,StickGas |
4086 1fee 7091 0000 lds r23,(StickGas)+1 |
4087 1ff2 7A83 std Y+2,r23 |
4088 1ff4 6983 std Y+1,r22 |
4089 1ff6 8091 0000 lds r24,MIN_GAS |
4090 1ffa 9927 clr r25 |
4091 1ffc 0A96 adiw r24,10 |
4092 1ffe 6817 cp r22,r24 |
4093 2000 7907 cpc r23,r25 |
4094 2002 04F4 brge .L372 |
4095 2004 9A83 std Y+2,r25 |
4096 2006 8983 std Y+1,r24 |
4097 .L372: |
4098 2008 8091 0000 lds r24,SenderOkay |
4099 200c 8436 cpi r24,lo8(100) |
4100 200e 00F0 brlo .+2 |
4101 2010 00C0 rjmp .L373 |
4102 2012 8091 0000 lds r24,FC_StatusFlags2 |
4103 2016 82FD sbrc r24,2 |
4104 2018 00C0 rjmp .L373 |
4105 201a 8091 0000 lds r24,RcLostTimer.5 |
4106 201e 9091 0000 lds r25,(RcLostTimer.5)+1 |
4107 2022 0097 sbiw r24,0 |
4108 2024 01F0 breq .L374 |
4109 2026 0197 sbiw r24,1 |
4110 2028 9093 0000 sts (RcLostTimer.5)+1,r25 |
4111 202c 8093 0000 sts RcLostTimer.5,r24 |
4112 2030 00C0 rjmp .L375 |
4113 .L374: |
4114 2032 1092 0000 sts MotorenEin,__zero_reg__ |
4115 2036 9093 0000 sts (modell_fliegt)+1,r25 |
4116 203a 8093 0000 sts modell_fliegt,r24 |
4117 203e 8091 0000 lds r24,FC_StatusFlags |
4118 2042 8D7E andi r24,lo8(-19) |
4119 2044 8093 0000 sts FC_StatusFlags,r24 |
4120 .L375: |
4121 2048 8091 0000 lds r24,PlatinenVersion |
4122 204c 8A30 cpi r24,lo8(10) |
4123 204e 01F0 breq .L377 |
4124 2050 8431 cpi r24,lo8(20) |
4125 2052 00F0 brlo .L376 |
4126 .L377: |
4127 2054 289A sbi 37-0x20,0 |
4128 2056 00C0 rjmp .L378 |
4129 .L376: |
4130 2058 2898 cbi 37-0x20,0 |
4131 .L378: |
4132 205a 8091 0000 lds r24,modell_fliegt |
4133 205e 9091 0000 lds r25,(modell_fliegt)+1 |
4134 2062 895E subi r24,lo8(1001) |
4135 2064 9340 sbci r25,hi8(1001) |
4136 2066 00F0 brlo .L379 |
4137 2068 8091 0000 lds r24,Capacity+6 |
4138 206c 8536 cpi r24,lo8(101) |
4139 206e 00F0 brlo .L379 |
4140 2070 8091 0000 lds r24,HooverGasEmergencyPercent |
4141 2074 9091 0000 lds r25,(HooverGasEmergencyPercent)+1 |
4142 2078 9A83 std Y+2,r25 |
4143 207a 8983 std Y+1,r24 |
4144 207c 8091 0000 lds r24,FC_StatusFlags |
4145 2080 8061 ori r24,lo8(16) |
4146 2082 8093 0000 sts FC_StatusFlags,r24 |
4147 2086 8091 0000 lds r24,EE_Parameter+1 |
4148 208a A82F mov r26,r24 |
4149 208c BB27 clr r27 |
4150 208e AA0F add r26,r26 |
4151 2090 BB1F adc r27,r27 |
4152 2092 FD01 movw r30,r26 |
4153 2094 E050 subi r30,lo8(-(PPM_diff)) |
4154 2096 F040 sbci r31,hi8(-(PPM_diff)) |
4155 2098 1182 std Z+1,__zero_reg__ |
4156 209a 1082 st Z,__zero_reg__ |
4157 209c 8091 0000 lds r24,EE_Parameter+2 |
4158 20a0 282F mov r18,r24 |
4159 20a2 3327 clr r19 |
4160 20a4 220F add r18,r18 |
4161 20a6 331F adc r19,r19 |
4162 20a8 C901 movw r24,r18 |
4163 20aa 8050 subi r24,lo8(-(PPM_diff)) |
4164 20ac 9040 sbci r25,hi8(-(PPM_diff)) |
4165 20ae FC01 movw r30,r24 |
4166 20b0 1182 std Z+1,__zero_reg__ |
4167 20b2 1082 st Z,__zero_reg__ |
4168 20b4 A050 subi r26,lo8(-(PPM_in)) |
4169 20b6 B040 sbci r27,hi8(-(PPM_in)) |
4170 20b8 1196 adiw r26,1 |
4171 20ba 1C92 st X,__zero_reg__ |
4172 20bc 1E92 st -X,__zero_reg__ |
4173 20be 2050 subi r18,lo8(-(PPM_in)) |
4174 20c0 3040 sbci r19,hi8(-(PPM_in)) |
4175 20c2 D901 movw r26,r18 |
4176 20c4 1196 adiw r26,1 |
4177 20c6 1C92 st X,__zero_reg__ |
4178 20c8 1E92 st -X,__zero_reg__ |
4179 20ca 8091 0000 lds r24,EE_Parameter+4 |
4180 20ce E82F mov r30,r24 |
4181 20d0 FF27 clr r31 |
4182 20d2 EE0F add r30,r30 |
4183 20d4 FF1F adc r31,r31 |
4184 20d6 E050 subi r30,lo8(-(PPM_in)) |
4185 20d8 F040 sbci r31,hi8(-(PPM_in)) |
4186 20da 1182 std Z+1,__zero_reg__ |
4187 20dc 1082 st Z,__zero_reg__ |
4188 20de 00C0 rjmp .L381 |
4189 .L379: |
4190 20e0 1092 0000 sts MotorenEin,__zero_reg__ |
4191 20e4 00C0 rjmp .L381 |
4192 .L373: |
4193 20e6 8091 0000 lds r24,SenderOkay |
4194 20ea 8D38 cpi r24,lo8(-115) |
4195 20ec 00F4 brsh .+2 |
4196 20ee 00C0 rjmp .L382 |
4197 20f0 8091 0000 lds r24,FC_StatusFlags |
4198 20f4 8F7E andi r24,lo8(-17) |
4199 20f6 8093 0000 sts FC_StatusFlags,r24 |
4200 20fa 9091 0000 lds r25,EE_Parameter+38 |
4201 20fe 82E3 ldi r24,lo8(50) |
4202 2100 989F mul r25,r24 |
4203 2102 C001 movw r24,r0 |
4204 2104 1124 clr r1 |
4205 2106 9093 0000 sts (RcLostTimer.5)+1,r25 |
4206 210a 8093 0000 sts RcLostTimer.5,r24 |
4207 210e E981 ldd r30,Y+1 |
4208 2110 FA81 ldd r31,Y+2 |
4209 2112 B997 sbiw r30,41 |
4210 2114 04F0 brlt .L383 |
4211 2116 8091 0000 lds r24,MotorenEin |
4212 211a 8823 tst r24 |
4213 211c 01F0 breq .L383 |
4214 211e 8091 0000 lds r24,modell_fliegt |
4215 2122 9091 0000 lds r25,(modell_fliegt)+1 |
4216 2126 FFEF ldi r31,hi8(-1) |
4217 2128 8F3F cpi r24,lo8(-1) |
4218 212a 9F07 cpc r25,r31 |
4219 212c 01F0 breq .L383 |
4220 212e 0196 adiw r24,1 |
4221 2130 9093 0000 sts (modell_fliegt)+1,r25 |
4222 2134 8093 0000 sts modell_fliegt,r24 |
4223 .L383: |
4224 2138 8091 0000 lds r24,modell_fliegt |
4225 213c 9091 0000 lds r25,(modell_fliegt)+1 |
4226 2140 8F3F cpi r24,255 |
4227 2142 9105 cpc r25,__zero_reg__ |
4228 2144 01F0 breq .+2 |
4229 2146 00F4 brsh .L385 |
4230 2148 1092 0000 sts SummeNick,__zero_reg__ |
4231 214c 1092 0000 sts (SummeNick)+1,__zero_reg__ |
4232 2150 1092 0000 sts (SummeNick)+2,__zero_reg__ |
4233 2154 1092 0000 sts (SummeNick)+3,__zero_reg__ |
4234 2158 1092 0000 sts SummeRoll,__zero_reg__ |
4235 215c 1092 0000 sts (SummeRoll)+1,__zero_reg__ |
4236 2160 1092 0000 sts (SummeRoll)+2,__zero_reg__ |
4237 2164 1092 0000 sts (SummeRoll)+3,__zero_reg__ |
4238 2168 1092 0000 sts sollGier.0,__zero_reg__ |
4239 216c 1092 0000 sts (sollGier.0)+1,__zero_reg__ |
4240 2170 1092 0000 sts (sollGier.0)+2,__zero_reg__ |
4241 2174 1092 0000 sts (sollGier.0)+3,__zero_reg__ |
4242 2178 1092 0000 sts Mess_Integral_Gier,__zero_reg__ |
4243 217c 1092 0000 sts (Mess_Integral_Gier)+1,__zero_reg__ |
4244 2180 1092 0000 sts (Mess_Integral_Gier)+2,__zero_reg__ |
4245 2184 1092 0000 sts (Mess_Integral_Gier)+3,__zero_reg__ |
4246 2188 00C0 rjmp .L386 |
4247 .L385: |
4248 218a 8091 0000 lds r24,FC_StatusFlags |
4249 218e 8260 ori r24,lo8(2) |
4250 2190 8093 0000 sts FC_StatusFlags,r24 |
4251 .L386: |
4252 2194 8091 0000 lds r24,EE_Parameter+3 |
4253 2198 E82F mov r30,r24 |
4254 219a FF27 clr r31 |
4255 219c EE0F add r30,r30 |
4256 219e FF1F adc r31,r31 |
4257 21a0 E050 subi r30,lo8(-(PPM_in)) |
4258 21a2 F040 sbci r31,hi8(-(PPM_in)) |
4259 21a4 8081 ld r24,Z |
4260 21a6 9181 ldd r25,Z+1 |
4261 21a8 8135 cpi r24,81 |
4262 21aa 9105 cpc r25,__zero_reg__ |
4263 21ac 04F4 brge .+2 |
4264 21ae 00C0 rjmp .L387 |
4265 21b0 2091 0000 lds r18,MotorenEin |
4266 21b4 2223 tst r18 |
4267 21b6 01F0 breq .+2 |
4268 21b8 00C0 rjmp .L387 |
4269 21ba 8091 0000 lds r24,EE_Parameter+4 |
4270 21be E82F mov r30,r24 |
4271 21c0 FF27 clr r31 |
4272 21c2 EE0F add r30,r30 |
4273 21c4 FF1F adc r31,r31 |
4274 21c6 E050 subi r30,lo8(-(PPM_in)) |
4275 21c8 F040 sbci r31,hi8(-(PPM_in)) |
4276 21ca 8081 ld r24,Z |
4277 21cc 9181 ldd r25,Z+1 |
4278 21ce 8C34 cpi r24,76 |
4279 21d0 9105 cpc r25,__zero_reg__ |
4280 21d2 04F4 brge .+2 |
4281 21d4 00C0 rjmp .L388 |
4282 21d6 8091 0000 lds r24,delay_neutral.6 |
4283 21da 8F5F subi r24,lo8(-(1)) |
4284 21dc 8093 0000 sts delay_neutral.6,r24 |
4285 21e0 893C cpi r24,lo8(-55) |
4286 21e2 00F4 brsh .+2 |
4287 21e4 00C0 rjmp .L387 |
4288 21e6 2093 0000 sts delay_neutral.6,r18 |
4289 21ea 1092 0000 sts (modell_fliegt)+1,__zero_reg__ |
4290 21ee 1092 0000 sts modell_fliegt,__zero_reg__ |
4291 21f2 3091 0000 lds r19,EE_Parameter+1 |
4292 21f6 E32F mov r30,r19 |
4293 21f8 FF27 clr r31 |
4294 21fa EE0F add r30,r30 |
4295 21fc FF1F adc r31,r31 |
4296 21fe E050 subi r30,lo8(-(PPM_in)) |
4297 2200 F040 sbci r31,hi8(-(PPM_in)) |
4298 2202 8081 ld r24,Z |
4299 2204 9181 ldd r25,Z+1 |
4300 2206 8734 cpi r24,71 |
4301 2208 9105 cpc r25,__zero_reg__ |
4302 220a 04F4 brge .L391 |
4303 220c 8091 0000 lds r24,EE_Parameter+2 |
4304 2210 E82F mov r30,r24 |
4305 2212 FF27 clr r31 |
4306 2214 EE0F add r30,r30 |
4307 2216 FF1F adc r31,r31 |
4308 2218 E050 subi r30,lo8(-(PPM_in)) |
4309 221a F040 sbci r31,hi8(-(PPM_in)) |
4310 221c 8081 ld r24,Z |
4311 221e 9181 ldd r25,Z+1 |
4312 2220 0190 ld __tmp_reg__,Z+ |
4313 2222 F081 ld r31,Z |
4314 2224 E02D mov r30,__tmp_reg__ |
4315 2226 F7FF sbrs r31,7 |
4316 2228 00C0 rjmp .L392 |
4317 222a F095 com r31 |
4318 222c E195 neg r30 |
4319 222e FF4F sbci r31,lo8(-1) |
4320 .L392: |
4321 2230 E734 cpi r30,71 |
4322 2232 F105 cpc r31,__zero_reg__ |
4323 2234 04F4 brge .+2 |
4324 2236 00C0 rjmp .L390 |
4325 .L391: |
4326 2238 41E0 ldi r20,lo8(1) |
4327 223a 2091 0000 lds r18,EE_Parameter+2 |
4328 223e A22F mov r26,r18 |
4329 2240 BB27 clr r27 |
4330 2242 AA0F add r26,r26 |
4331 2244 BB1F adc r27,r27 |
4332 2246 A050 subi r26,lo8(-(PPM_in)) |
4333 2248 B040 sbci r27,hi8(-(PPM_in)) |
4334 224a 8D91 ld r24,X+ |
4335 224c 9C91 ld r25,X |
4336 224e 1197 sbiw r26,1 |
4337 2250 8734 cpi r24,71 |
4338 2252 9105 cpc r25,__zero_reg__ |
4339 2254 04F0 brlt .L393 |
4340 2256 E32F mov r30,r19 |
4341 2258 FF27 clr r31 |
4342 225a EE0F add r30,r30 |
4343 225c FF1F adc r31,r31 |
4344 225e E050 subi r30,lo8(-(PPM_in)) |
4345 2260 F040 sbci r31,hi8(-(PPM_in)) |
4346 2262 8081 ld r24,Z |
4347 2264 9181 ldd r25,Z+1 |
4348 .L393: |
4349 2266 8D91 ld r24,X+ |
4350 2268 9C91 ld r25,X |
4351 226a 8734 cpi r24,71 |
4352 226c 9105 cpc r25,__zero_reg__ |
4353 226e 04F0 brlt .L394 |
4354 2270 8091 0000 lds r24,EE_Parameter+1 |
4355 2274 E82F mov r30,r24 |
4356 2276 FF27 clr r31 |
4357 2278 EE0F add r30,r30 |
4358 227a FF1F adc r31,r31 |
4359 227c E050 subi r30,lo8(-(PPM_in)) |
4360 227e F040 sbci r31,hi8(-(PPM_in)) |
4361 2280 8081 ld r24,Z |
4362 2282 9181 ldd r25,Z+1 |
4363 2284 8734 cpi r24,71 |
4364 2286 9105 cpc r25,__zero_reg__ |
4365 2288 04F0 brlt .L394 |
4366 228a 42E0 ldi r20,lo8(2) |
4367 .L394: |
4368 228c E22F mov r30,r18 |
4369 228e FF27 clr r31 |
4370 2290 EE0F add r30,r30 |
4371 2292 FF1F adc r31,r31 |
4372 2294 E050 subi r30,lo8(-(PPM_in)) |
4373 2296 F040 sbci r31,hi8(-(PPM_in)) |
4374 2298 8081 ld r24,Z |
4375 229a 9181 ldd r25,Z+1 |
4376 229c 8634 cpi r24,70 |
4377 229e 9105 cpc r25,__zero_reg__ |
4378 22a0 04F4 brge .L395 |
4379 22a2 8091 0000 lds r24,EE_Parameter+1 |
4380 22a6 E82F mov r30,r24 |
4381 22a8 FF27 clr r31 |
4382 22aa EE0F add r30,r30 |
4383 22ac FF1F adc r31,r31 |
4384 22ae E050 subi r30,lo8(-(PPM_in)) |
4385 22b0 F040 sbci r31,hi8(-(PPM_in)) |
4386 22b2 8081 ld r24,Z |
4387 22b4 9181 ldd r25,Z+1 |
4388 22b6 8734 cpi r24,71 |
4389 22b8 9105 cpc r25,__zero_reg__ |
4390 22ba 04F0 brlt .L395 |
4391 22bc 43E0 ldi r20,lo8(3) |
4392 .L395: |
4393 22be E22F mov r30,r18 |
4394 22c0 FF27 clr r31 |
4395 22c2 EE0F add r30,r30 |
4396 22c4 FF1F adc r31,r31 |
4397 22c6 E050 subi r30,lo8(-(PPM_in)) |
4398 22c8 F040 sbci r31,hi8(-(PPM_in)) |
4399 22ca 8081 ld r24,Z |
4400 22cc 9181 ldd r25,Z+1 |
4401 22ce 8A5B subi r24,lo8(-70) |
4402 22d0 9F4F sbci r25,hi8(-70) |
4403 22d2 04F4 brge .L396 |
4404 22d4 8091 0000 lds r24,EE_Parameter+1 |
4405 22d8 E82F mov r30,r24 |
4406 22da FF27 clr r31 |
4407 22dc EE0F add r30,r30 |
4408 22de FF1F adc r31,r31 |
4409 22e0 E050 subi r30,lo8(-(PPM_in)) |
4410 22e2 F040 sbci r31,hi8(-(PPM_in)) |
4411 22e4 8081 ld r24,Z |
4412 22e6 9181 ldd r25,Z+1 |
4413 22e8 8734 cpi r24,71 |
4414 22ea 9105 cpc r25,__zero_reg__ |
4415 22ec 04F0 brlt .L396 |
4416 22ee 44E0 ldi r20,lo8(4) |
4417 .L396: |
4418 22f0 E22F mov r30,r18 |
4419 22f2 FF27 clr r31 |
4420 22f4 EE0F add r30,r30 |
4421 22f6 FF1F adc r31,r31 |
4422 22f8 E050 subi r30,lo8(-(PPM_in)) |
4423 22fa F040 sbci r31,hi8(-(PPM_in)) |
4424 22fc 8081 ld r24,Z |
4425 22fe 9181 ldd r25,Z+1 |
4426 2300 8A5B subi r24,lo8(-70) |
4427 2302 9F4F sbci r25,hi8(-70) |
4428 2304 04F4 brge .L397 |
4429 2306 8091 0000 lds r24,EE_Parameter+1 |
4430 230a E82F mov r30,r24 |
4431 230c FF27 clr r31 |
4432 230e EE0F add r30,r30 |
4433 2310 FF1F adc r31,r31 |
4434 2312 E050 subi r30,lo8(-(PPM_in)) |
4435 2314 F040 sbci r31,hi8(-(PPM_in)) |
4436 2316 8081 ld r24,Z |
4437 2318 9181 ldd r25,Z+1 |
4438 231a 8634 cpi r24,70 |
4439 231c 9105 cpc r25,__zero_reg__ |
4440 231e 04F4 brge .L397 |
4441 2320 45E0 ldi r20,lo8(5) |
4442 .L397: |
4443 2322 842F mov r24,r20 |
4444 2324 0E94 0000 call SetActiveParamSet |
4445 .L390: |
4446 2328 8091 0000 lds r24,EE_Parameter+2 |
4447 232c E82F mov r30,r24 |
4448 232e FF27 clr r31 |
4449 2330 EE0F add r30,r30 |
4450 2332 FF1F adc r31,r31 |
4451 2334 E050 subi r30,lo8(-(PPM_in)) |
4452 2336 F040 sbci r31,hi8(-(PPM_in)) |
4453 2338 8081 ld r24,Z |
4454 233a 9181 ldd r25,Z+1 |
4455 233c 0190 ld __tmp_reg__,Z+ |
4456 233e F081 ld r31,Z |
4457 2340 E02D mov r30,__tmp_reg__ |
4458 2342 F7FF sbrs r31,7 |
4459 2344 00C0 rjmp .L399 |
4460 2346 F095 com r31 |
4461 2348 E195 neg r30 |
4462 234a FF4F sbci r31,lo8(-1) |
4463 .L399: |
4464 234c 7E97 sbiw r30,30 |
4465 234e 04F4 brge .L398 |
4466 2350 8091 0000 lds r24,EE_Parameter+1 |
4467 2354 E82F mov r30,r24 |
4468 2356 FF27 clr r31 |
4469 2358 EE0F add r30,r30 |
4470 235a FF1F adc r31,r31 |
4471 235c E050 subi r30,lo8(-(PPM_in)) |
4472 235e F040 sbci r31,hi8(-(PPM_in)) |
4473 2360 8081 ld r24,Z |
4474 2362 9181 ldd r25,Z+1 |
4475 2364 8A5B subi r24,lo8(-70) |
4476 2366 9F4F sbci r25,hi8(-70) |
4477 2368 04F4 brge .L398 |
4478 236a 81E0 ldi r24,lo8(1) |
4479 236c 8093 0000 sts WinkelOut+6,r24 |
4480 2370 1092 0000 sts CalibrationDone,__zero_reg__ |
4481 2374 88EE ldi r24,lo8(1000) |
4482 2376 93E0 ldi r25,hi8(1000) |
4483 2378 9093 0000 sts (beeptime)+1,r25 |
4484 237c 8093 0000 sts beeptime,r24 |
4485 2380 00C0 rjmp .L387 |
4486 .L398: |
4487 2382 0E94 0000 call GetActiveParamSet |
4488 2386 0E94 0000 call ParamSet_ReadFromEEProm |
4489 238a 80E0 ldi r24,lo8(0) |
4490 238c 0E94 0000 call LipoDetection |
4491 2390 8091 0000 lds r24,EE_Parameter+39 |
4492 2394 0E94 0000 call LIBFC_ReceiverInit |
4493 2398 8091 0000 lds r24,Parameter_GlobalConfig |
4494 239c 80FF sbrs r24,0 |
4495 239e 00C0 rjmp .L401 |
4496 23a0 8091 0000 lds r24,MessLuftdruck |
4497 23a4 9091 0000 lds r25,(MessLuftdruck)+1 |
4498 23a8 875B subi r24,lo8(951) |
4499 23aa 9340 sbci r25,hi8(951) |
4500 23ac 00F4 brsh .L403 |
4501 23ae 8091 0000 lds r24,MessLuftdruck |
4502 23b2 9091 0000 lds r25,(MessLuftdruck)+1 |
4503 23b6 8E5E subi r24,lo8(750) |
4504 23b8 9240 sbci r25,hi8(750) |
4505 23ba 00F4 brsh .L401 |
4506 .L403: |
4507 23bc 0E94 0000 call SucheLuftruckOffset |
4508 .L401: |
4509 23c0 80E0 ldi r24,lo8(0) |
4510 23c2 0E94 0000 call SetNeutral |
4511 23c6 81E0 ldi r24,lo8(1) |
4512 23c8 8093 0000 sts CalibrationDone,r24 |
4513 23cc 8093 0000 sts ServoActive,r24 |
4514 23d0 579A sbi 42-0x20,7 |
4515 23d2 00C0 rjmp .L888 |
4516 .L388: |
4517 23d4 8081 ld r24,Z |
4518 23d6 9181 ldd r25,Z+1 |
4519 23d8 855B subi r24,lo8(-75) |
4520 23da 9F4F sbci r25,hi8(-75) |
4521 23dc 04F4 brge .L405 |
4522 23de 8091 0000 lds r24,delay_neutral.6 |
4523 23e2 8F5F subi r24,lo8(-(1)) |
4524 23e4 8093 0000 sts delay_neutral.6,r24 |
4525 23e8 893C cpi r24,lo8(-55) |
4526 23ea 00F0 brlo .L387 |
4527 23ec 2093 0000 sts MotorenEin,r18 |
4528 23f0 2093 0000 sts delay_neutral.6,r18 |
4529 23f4 1092 0000 sts (modell_fliegt)+1,__zero_reg__ |
4530 23f8 1092 0000 sts modell_fliegt,__zero_reg__ |
4531 23fc 81E0 ldi r24,lo8(1) |
4532 23fe 0E94 0000 call SetNeutral |
4533 2402 81E0 ldi r24,lo8(1) |
4534 2404 8093 0000 sts CalibrationDone,r24 |
4535 .L888: |
4536 2408 88E1 ldi r24,lo8(24) |
4537 240a 8093 0000 sts SpeakHoTT,r24 |
4538 240e 0E94 0000 call GetActiveParamSet |
4539 2412 68E7 ldi r22,lo8(120) |
4540 2414 70E0 ldi r23,hi8(120) |
4541 2416 0E94 0000 call Piep |
4542 241a 00C0 rjmp .L387 |
4543 .L405: |
4544 241c 2093 0000 sts delay_neutral.6,r18 |
4545 .L387: |
4546 2420 8091 0000 lds r24,EE_Parameter+3 |
4547 2424 E82F mov r30,r24 |
4548 2426 FF27 clr r31 |
4549 2428 EE0F add r30,r30 |
4550 242a FF1F adc r31,r31 |
4551 242c E050 subi r30,lo8(-(PPM_in)) |
4552 242e F040 sbci r31,hi8(-(PPM_in)) |
4553 2430 8081 ld r24,Z |
4554 2432 9181 ldd r25,Z+1 |
4555 2434 8B5A subi r24,lo8(-85) |
4556 2436 9F4F sbci r25,hi8(-85) |
4557 2438 04F0 brlt .+2 |
4558 243a 00C0 rjmp .L408 |
4559 243c 2091 0000 lds r18,EE_Parameter+100 |
4560 2440 E22F mov r30,r18 |
4561 2442 FF27 clr r31 |
4562 2444 EF77 andi r30,lo8(127) |
4563 2446 F070 andi r31,hi8(127) |
4564 2448 EE0F add r30,r30 |
4565 244a FF1F adc r31,r31 |
4566 244c E050 subi r30,lo8(-(PPM_diff)) |
4567 244e F040 sbci r31,hi8(-(PPM_diff)) |
4568 2450 8081 ld r24,Z |
4569 2452 9181 ldd r25,Z+1 |
4570 2454 0697 sbiw r24,6 |
4571 2456 04F0 brlt .L409 |
4572 2458 84E6 ldi r24,lo8(100) |
4573 245a 00C0 rjmp .L889 |
4574 .L409: |
4575 245c 8081 ld r24,Z |
4576 245e 9181 ldd r25,Z+1 |
4577 2460 8B5F subi r24,lo8(-5) |
4578 2462 9F4F sbci r25,hi8(-5) |
4579 2464 04F4 brge .L410 |
4580 2466 8CE9 ldi r24,lo8(-100) |
4581 .L889: |
4582 2468 8093 0000 sts move_safety_switch.9,r24 |
4583 .L410: |
4584 246c 8091 0000 lds r24,MotorenEin |
4585 2470 E091 0000 lds r30,EE_Parameter+4 |
4586 2474 8823 tst r24 |
4587 2476 01F0 breq .+2 |
4588 2478 00C0 rjmp .L412 |
4589 247a FF27 clr r31 |
4590 247c EE0F add r30,r30 |
4591 247e FF1F adc r31,r31 |
4592 2480 E050 subi r30,lo8(-(PPM_in)) |
4593 2482 F040 sbci r31,hi8(-(PPM_in)) |
4594 2484 8081 ld r24,Z |
4595 2486 9181 ldd r25,Z+1 |
4596 2488 855B subi r24,lo8(-75) |
4597 248a 9F4F sbci r25,hi8(-75) |
4598 248c 04F4 brge .L415 |
4599 248e 8091 0000 lds r24,EE_Parameter+111 |
4600 2492 83FD sbrc r24,3 |
4601 2494 00C0 rjmp .L416 |
4602 2496 E22F mov r30,r18 |
4603 2498 FF27 clr r31 |
4604 249a EE0F add r30,r30 |
4605 249c FF1F adc r31,r31 |
4606 249e E050 subi r30,lo8(-(PPM_in)) |
4607 24a0 F040 sbci r31,hi8(-(PPM_in)) |
4608 24a2 8081 ld r24,Z |
4609 24a4 9181 ldd r25,Z+1 |
4610 24a6 855B subi r24,lo8(-75) |
4611 24a8 9F4F sbci r25,hi8(-75) |
4612 24aa 04F0 brlt .L414 |
4613 .L416: |
4614 24ac 8091 0000 lds r24,EE_Parameter+100 |
4615 24b0 8823 tst r24 |
4616 24b2 01F0 breq .L414 |
4617 .L415: |
4618 24b4 8091 0000 lds r24,EE_Parameter+111 |
4619 24b8 83FF sbrs r24,3 |
4620 24ba 00C0 rjmp .L413 |
4621 24bc 8091 0000 lds r24,EE_Parameter+100 |
4622 24c0 E82F mov r30,r24 |
4623 24c2 FF27 clr r31 |
4624 24c4 EE0F add r30,r30 |
4625 24c6 FF1F adc r31,r31 |
4626 24c8 E050 subi r30,lo8(-(PPM_in)) |
4627 24ca F040 sbci r31,hi8(-(PPM_in)) |
4628 24cc 8081 ld r24,Z |
4629 24ce 9181 ldd r25,Z+1 |
4630 24d0 875F subi r24,lo8(-9) |
4631 24d2 9F4F sbci r25,hi8(-9) |
4632 24d4 04F4 brge .+2 |
4633 24d6 00C0 rjmp .L413 |
4634 24d8 8091 0000 lds r24,move_safety_switch.9 |
4635 24dc 8436 cpi r24,lo8(100) |
4636 24de 01F0 breq .+2 |
4637 24e0 00C0 rjmp .L413 |
4638 .L414: |
4639 24e2 2091 0000 lds r18,CalibrationDone |
4640 24e6 2223 tst r18 |
4641 24e8 01F0 breq .L417 |
4642 24ea 8091 0000 lds r24,FC_StatusFlags |
4643 24ee 8860 ori r24,lo8(8) |
4644 24f0 8093 0000 sts FC_StatusFlags,r24 |
4645 .L417: |
4646 24f4 8091 0000 lds r24,delay_einschalten.7 |
4647 24f8 8F5F subi r24,lo8(-(1)) |
4648 24fa 8093 0000 sts delay_einschalten.7,r24 |
4649 24fe 8E3F cpi r24,lo8(-2) |
4650 2500 00F4 brsh .+2 |
4651 2502 00C0 rjmp .L423 |
4652 2504 1092 0000 sts delay_einschalten.7,__zero_reg__ |
4653 2508 8091 0000 lds r24,VersionInfo+5 |
4654 250c 8823 tst r24 |
4655 250e 01F0 breq .+2 |
4656 2510 00C0 rjmp .L419 |
4657 2512 2223 tst r18 |
4658 2514 01F4 brne .+2 |
4659 2516 00C0 rjmp .L419 |
4660 2518 8091 0000 lds r24,NC_ErrorCode |
4661 251c 8823 tst r24 |
4662 251e 01F0 breq .+2 |
4663 2520 00C0 rjmp .L419 |
4664 2522 81E0 ldi r24,lo8(1) |
4665 2524 90E0 ldi r25,hi8(1) |
4666 2526 9093 0000 sts (modell_fliegt)+1,r25 |
4667 252a 8093 0000 sts modell_fliegt,r24 |
4668 252e 81E0 ldi r24,lo8(1) |
4669 2530 8093 0000 sts MotorenEin,r24 |
4670 2534 1092 0000 sts sollGier.0,__zero_reg__ |
4671 2538 1092 0000 sts (sollGier.0)+1,__zero_reg__ |
4672 253c 1092 0000 sts (sollGier.0)+2,__zero_reg__ |
4673 2540 1092 0000 sts (sollGier.0)+3,__zero_reg__ |
4674 2544 1092 0000 sts Mess_Integral_Gier,__zero_reg__ |
4675 2548 1092 0000 sts (Mess_Integral_Gier)+1,__zero_reg__ |
4676 254c 1092 0000 sts (Mess_Integral_Gier)+2,__zero_reg__ |
4677 2550 1092 0000 sts (Mess_Integral_Gier)+3,__zero_reg__ |
4678 2554 1092 0000 sts Mess_Integral_Gier2,__zero_reg__ |
4679 2558 1092 0000 sts (Mess_Integral_Gier2)+1,__zero_reg__ |
4680 255c 1092 0000 sts (Mess_Integral_Gier2)+2,__zero_reg__ |
4681 2560 1092 0000 sts (Mess_Integral_Gier2)+3,__zero_reg__ |
4682 2564 8091 0000 lds r24,EE_Parameter+28 |
4683 2568 E82E mov r14,r24 |
4684 256a FF24 clr r15 |
4685 256c 0027 clr r16 |
4686 256e 1127 clr r17 |
4687 2570 8091 0000 lds r24,Mittelwert_AccNick |
4688 2574 9091 0000 lds r25,(Mittelwert_AccNick)+1 |
4689 2578 9C01 movw r18,r24 |
4690 257a 4427 clr r20 |
4691 257c 37FD sbrc r19,7 |
4692 257e 4095 com r20 |
4693 2580 542F mov r21,r20 |
4694 2582 C801 movw r24,r16 |
4695 2584 B701 movw r22,r14 |
4696 2586 0E94 0000 call __mulsi3 |
4697 258a DC01 movw r26,r24 |
4698 258c CB01 movw r24,r22 |
4699 258e 8093 0000 sts Mess_IntegralNick,r24 |
4700 2592 9093 0000 sts (Mess_IntegralNick)+1,r25 |
4701 2596 A093 0000 sts (Mess_IntegralNick)+2,r26 |
4702 259a B093 0000 sts (Mess_IntegralNick)+3,r27 |
4703 259e 8091 0000 lds r24,Mittelwert_AccRoll |
4704 25a2 9091 0000 lds r25,(Mittelwert_AccRoll)+1 |
4705 25a6 9C01 movw r18,r24 |
4706 25a8 4427 clr r20 |
4707 25aa 37FD sbrc r19,7 |
4708 25ac 4095 com r20 |
4709 25ae 542F mov r21,r20 |
4710 25b0 C801 movw r24,r16 |
4711 25b2 B701 movw r22,r14 |
4712 25b4 0E94 0000 call __mulsi3 |
4713 25b8 DC01 movw r26,r24 |
4714 25ba CB01 movw r24,r22 |
4715 25bc 8093 0000 sts Mess_IntegralRoll,r24 |
4716 25c0 9093 0000 sts (Mess_IntegralRoll)+1,r25 |
4717 25c4 A093 0000 sts (Mess_IntegralRoll)+2,r26 |
4718 25c8 B093 0000 sts (Mess_IntegralRoll)+3,r27 |
4719 25cc 8091 0000 lds r24,IntegralNick |
4720 25d0 9091 0000 lds r25,(IntegralNick)+1 |
4721 25d4 A091 0000 lds r26,(IntegralNick)+2 |
4722 25d8 B091 0000 lds r27,(IntegralNick)+3 |
4723 25dc 8093 0000 sts Mess_IntegralNick2,r24 |
4724 25e0 9093 0000 sts (Mess_IntegralNick2)+1,r25 |
4725 25e4 A093 0000 sts (Mess_IntegralNick2)+2,r26 |
4726 25e8 B093 0000 sts (Mess_IntegralNick2)+3,r27 |
4727 25ec 8091 0000 lds r24,IntegralRoll |
4728 25f0 9091 0000 lds r25,(IntegralRoll)+1 |
4729 25f4 A091 0000 lds r26,(IntegralRoll)+2 |
4730 25f8 B091 0000 lds r27,(IntegralRoll)+3 |
4731 25fc 8093 0000 sts Mess_IntegralRoll2,r24 |
4732 2600 9093 0000 sts (Mess_IntegralRoll2)+1,r25 |
4733 2604 A093 0000 sts (Mess_IntegralRoll2)+2,r26 |
4734 2608 B093 0000 sts (Mess_IntegralRoll2)+3,r27 |
4735 260c 1092 0000 sts SummeNick,__zero_reg__ |
4736 2610 1092 0000 sts (SummeNick)+1,__zero_reg__ |
4737 2614 1092 0000 sts (SummeNick)+2,__zero_reg__ |
4738 2618 1092 0000 sts (SummeNick)+3,__zero_reg__ |
4739 261c 1092 0000 sts SummeRoll,__zero_reg__ |
4740 2620 1092 0000 sts (SummeRoll)+1,__zero_reg__ |
4741 2624 1092 0000 sts (SummeRoll)+2,__zero_reg__ |
4742 2628 1092 0000 sts (SummeRoll)+3,__zero_reg__ |
4743 262c 84E6 ldi r24,lo8(100) |
4744 262e 8093 0000 sts NeueKompassRichtungMerken,r24 |
4745 2632 84E3 ldi r24,lo8(52) |
4746 2634 00C0 rjmp .L890 |
4747 .L419: |
4748 2636 8CED ldi r24,lo8(1500) |
4749 2638 95E0 ldi r25,hi8(1500) |
4750 263a 9093 0000 sts (beeptime)+1,r25 |
4751 263e 8093 0000 sts beeptime,r24 |
4752 2642 2223 tst r18 |
4753 2644 01F0 breq .+2 |
4754 2646 00C0 rjmp .L423 |
4755 2648 81E0 ldi r24,lo8(1) |
4756 264a 00C0 rjmp .L890 |
4757 .L413: |
4758 264c 1092 0000 sts delay_einschalten.7,__zero_reg__ |
4759 2650 00C0 rjmp .L423 |
4760 .L412: |
4761 2652 FF27 clr r31 |
4762 2654 EE0F add r30,r30 |
4763 2656 FF1F adc r31,r31 |
4764 2658 E050 subi r30,lo8(-(PPM_in)) |
4765 265a F040 sbci r31,hi8(-(PPM_in)) |
4766 265c 8081 ld r24,Z |
4767 265e 9181 ldd r25,Z+1 |
4768 2660 8C34 cpi r24,76 |
4769 2662 9105 cpc r25,__zero_reg__ |
4770 2664 04F0 brlt .L426 |
4771 2666 8091 0000 lds r24,EE_Parameter+111 |
4772 266a 83FD sbrc r24,3 |
4773 266c 00C0 rjmp .L427 |
4774 266e E22F mov r30,r18 |
4775 2670 FF27 clr r31 |
4776 2672 EE0F add r30,r30 |
4777 2674 FF1F adc r31,r31 |
4778 2676 E050 subi r30,lo8(-(PPM_in)) |
4779 2678 F040 sbci r31,hi8(-(PPM_in)) |
4780 267a 8081 ld r24,Z |
4781 267c 9181 ldd r25,Z+1 |
4782 267e 855B subi r24,lo8(-75) |
4783 2680 9F4F sbci r25,hi8(-75) |
4784 2682 04F0 brlt .L425 |
4785 .L427: |
4786 2684 8091 0000 lds r24,EE_Parameter+100 |
4787 2688 8823 tst r24 |
4788 268a 01F0 breq .L425 |
4789 .L426: |
4790 268c 8091 0000 lds r24,EE_Parameter+111 |
4791 2690 83FF sbrs r24,3 |
4792 2692 00C0 rjmp .L424 |
4793 2694 8091 0000 lds r24,EE_Parameter+100 |
4794 2698 E82F mov r30,r24 |
4795 269a FF27 clr r31 |
4796 269c EE0F add r30,r30 |
4797 269e FF1F adc r31,r31 |
4798 26a0 E050 subi r30,lo8(-(PPM_in)) |
4799 26a2 F040 sbci r31,hi8(-(PPM_in)) |
4800 26a4 8081 ld r24,Z |
4801 26a6 9181 ldd r25,Z+1 |
4802 26a8 8E5C subi r24,lo8(-50) |
4803 26aa 9F4F sbci r25,hi8(-50) |
4804 26ac 04F4 brge .L424 |
4805 26ae 8091 0000 lds r24,move_safety_switch.9 |
4806 26b2 8C39 cpi r24,lo8(-100) |
4807 26b4 01F4 brne .L424 |
4808 .L425: |
4809 26b6 8091 0000 lds r24,delay_ausschalten.8 |
4810 26ba 8F5F subi r24,lo8(-(1)) |
4811 26bc 8093 0000 sts delay_ausschalten.8,r24 |
4812 26c0 8B3F cpi r24,lo8(-5) |
4813 26c2 00F0 brlo .L423 |
4814 26c4 1092 0000 sts MotorenEin,__zero_reg__ |
4815 26c8 1092 0000 sts delay_ausschalten.8,__zero_reg__ |
4816 26cc 1092 0000 sts (modell_fliegt)+1,__zero_reg__ |
4817 26d0 1092 0000 sts modell_fliegt,__zero_reg__ |
4818 26d4 86E2 ldi r24,lo8(38) |
4819 .L890: |
4820 26d6 8093 0000 sts SpeakHoTT,r24 |
4821 26da 00C0 rjmp .L423 |
4822 .L424: |
4823 26dc 1092 0000 sts delay_ausschalten.8,__zero_reg__ |
4824 .L423: |
4825 26e0 8091 0000 lds r24,GasIsZeroCnt |
4826 26e4 9091 0000 lds r25,(GasIsZeroCnt)+1 |
4827 26e8 13E0 ldi r17,hi8(1000) |
4828 26ea 883E cpi r24,lo8(1000) |
4829 26ec 9107 cpc r25,r17 |
4830 26ee 00F4 brsh .L381 |
4831 26f0 0196 adiw r24,1 |
4832 26f2 9093 0000 sts (GasIsZeroCnt)+1,r25 |
4833 26f6 8093 0000 sts GasIsZeroCnt,r24 |
4834 26fa 00C0 rjmp .L381 |
4835 .L408: |
4836 26fc 1092 0000 sts move_safety_switch.9,__zero_reg__ |
4837 2700 1092 0000 sts (GasIsZeroCnt)+1,__zero_reg__ |
4838 2704 1092 0000 sts GasIsZeroCnt,__zero_reg__ |
4839 2708 00C0 rjmp .L381 |
4840 .L382: |
4841 270a 2E5E subi r18,lo8(750) |
4842 270c 3240 sbci r19,hi8(750) |
4843 270e 00F0 brlo .L381 |
4844 2710 8091 0000 lds r24,GPSInfo+4 |
4845 2714 9091 0000 lds r25,(GPSInfo+4)+1 |
4846 2718 8059 subi r24,lo8(400) |
4847 271a 9140 sbci r25,hi8(400) |
4848 271c 00F4 brsh .L381 |
4849 271e 8091 0000 lds r24,HoehenWert |
4850 2722 9091 0000 lds r25,(HoehenWert)+1 |
4851 2726 A091 0000 lds r26,(HoehenWert)+2 |
4852 272a B091 0000 lds r27,(HoehenWert)+3 |
4853 272e 8C5D subi r24,lo8(1500) |
4854 2730 9540 sbci r25,hi8(1500) |
4855 2732 A040 sbci r26,hlo8(1500) |
4856 2734 B040 sbci r27,hhi8(1500) |
4857 2736 04F4 brge .L381 |
4858 2738 80E3 ldi r24,lo8(30000) |
4859 273a 95E7 ldi r25,hi8(30000) |
4860 273c 9093 0000 sts (GasIsZeroCnt)+1,r25 |
4861 2740 8093 0000 sts GasIsZeroCnt,r24 |
4862 2744 8091 0000 lds r24,modell_fliegt |
4863 2748 9091 0000 lds r25,(modell_fliegt)+1 |
4864 274c 8A5E subi r24,lo8(1002) |
4865 274e 9340 sbci r25,hi8(1002) |
4866 2750 00F0 brlo .L381 |
4867 2752 89EE ldi r24,lo8(1001) |
4868 2754 93E0 ldi r25,hi8(1001) |
4869 2756 9093 0000 sts (modell_fliegt)+1,r25 |
4870 275a 8093 0000 sts modell_fliegt,r24 |
4871 .L381: |
4872 275e 8091 0000 lds r24,NewPpmData |
4873 2762 8150 subi r24,lo8(-(-1)) |
4874 2764 8093 0000 sts NewPpmData,r24 |
4875 2768 8091 0000 lds r24,NewPpmData |
4876 276c 8F3F cpi r24,lo8(-1) |
4877 276e 01F0 breq .L437 |
4878 2770 8091 0000 lds r24,FC_StatusFlags |
4879 2774 84FF sbrs r24,4 |
4880 2776 00C0 rjmp .L436 |
4881 .L437: |
4882 2778 0E94 0000 call ParameterZuordnung |
4883 277c B090 0000 lds r11,EE_Parameter+23 |
4884 2780 8091 0000 lds r24,stick_nick.12 |
4885 2784 9091 0000 lds r25,(stick_nick.12)+1 |
4886 2788 9C01 movw r18,r24 |
4887 278a 220F lsl r18 |
4888 278c 331F rol r19 |
4889 278e 280F add r18,r24 |
4890 2790 391F adc r19,r25 |
4891 2792 C090 0000 lds r12,EE_Parameter+1 |
4892 2796 AC2D mov r26,r12 |
4893 2798 BB27 clr r27 |
4894 279a AA0F add r26,r26 |
4895 279c BB1F adc r27,r27 |
4896 279e FD01 movw r30,r26 |
4897 27a0 E050 subi r30,lo8(-(PPM_in)) |
4898 27a2 F040 sbci r31,hi8(-(PPM_in)) |
4899 27a4 4B2D mov r20,r11 |
4900 27a6 5527 clr r21 |
4901 27a8 8081 ld r24,Z |
4902 27aa 9181 ldd r25,Z+1 |
4903 27ac 849F mul r24,r20 |
4904 27ae F001 movw r30,r0 |
4905 27b0 859F mul r24,r21 |
4906 27b2 F00D add r31,r0 |
4907 27b4 949F mul r25,r20 |
4908 27b6 F00D add r31,r0 |
4909 27b8 1124 clr r1 |
4910 27ba 2E0F add r18,r30 |
4911 27bc 3F1F adc r19,r31 |
4912 27be 37FF sbrs r19,7 |
4913 27c0 00C0 rjmp .L438 |
4914 27c2 2D5F subi r18,lo8(-(3)) |
4915 27c4 3F4F sbci r19,hi8(-(3)) |
4916 .L438: |
4917 27c6 B901 movw r22,r18 |
4918 27c8 7595 asr r23 |
4919 27ca 6795 ror r22 |
4920 27cc 7595 asr r23 |
4921 27ce 6795 ror r22 |
4922 27d0 A050 subi r26,lo8(-(PPM_diff)) |
4923 27d2 B040 sbci r27,hi8(-(PPM_diff)) |
4924 27d4 8091 0000 lds r24,EE_Parameter+24 |
4925 27d8 082F mov r16,r24 |
4926 27da 1127 clr r17 |
4927 27dc 8D91 ld r24,X+ |
4928 27de 9C91 ld r25,X |
4929 27e0 809F mul r24,r16 |
4930 27e2 7001 movw r14,r0 |
4931 27e4 819F mul r24,r17 |
4932 27e6 F00C add r15,r0 |
4933 27e8 909F mul r25,r16 |
4934 27ea F00C add r15,r0 |
4935 27ec 1124 clr r1 |
4936 27ee 6E0D add r22,r14 |
4937 27f0 7F1D adc r23,r15 |
4938 27f2 7093 0000 sts (stick_nick.12)+1,r23 |
4939 27f6 6093 0000 sts stick_nick.12,r22 |
4940 27fa 8091 0000 lds r24,stick_roll.13 |
4941 27fe 9091 0000 lds r25,(stick_roll.13)+1 |
4942 2802 9C01 movw r18,r24 |
4943 2804 220F lsl r18 |
4944 2806 331F rol r19 |
4945 2808 280F add r18,r24 |
4946 280a 391F adc r19,r25 |
4947 280c D090 0000 lds r13,EE_Parameter+2 |
4948 2810 AD2D mov r26,r13 |
4949 2812 BB27 clr r27 |
4950 2814 AA0F add r26,r26 |
4951 2816 BB1F adc r27,r27 |
4952 2818 FD01 movw r30,r26 |
4953 281a E050 subi r30,lo8(-(PPM_in)) |
4954 281c F040 sbci r31,hi8(-(PPM_in)) |
4955 281e 8081 ld r24,Z |
4956 2820 9181 ldd r25,Z+1 |
4957 2822 849F mul r24,r20 |
4958 2824 F001 movw r30,r0 |
4959 2826 859F mul r24,r21 |
4960 2828 F00D add r31,r0 |
4961 282a 949F mul r25,r20 |
4962 282c F00D add r31,r0 |
4963 282e 1124 clr r1 |
4964 2830 2E0F add r18,r30 |
4965 2832 3F1F adc r19,r31 |
4966 2834 37FF sbrs r19,7 |
4967 2836 00C0 rjmp .L439 |
4968 2838 2D5F subi r18,lo8(-(3)) |
4969 283a 3F4F sbci r19,hi8(-(3)) |
4970 .L439: |
4971 283c A901 movw r20,r18 |
4972 283e 5595 asr r21 |
4973 2840 4795 ror r20 |
4974 2842 5595 asr r21 |
4975 2844 4795 ror r20 |
4976 2846 A050 subi r26,lo8(-(PPM_diff)) |
4977 2848 B040 sbci r27,hi8(-(PPM_diff)) |
4978 284a 8D91 ld r24,X+ |
4979 284c 9C91 ld r25,X |
4980 284e 809F mul r24,r16 |
4981 2850 7001 movw r14,r0 |
4982 2852 819F mul r24,r17 |
4983 2854 F00C add r15,r0 |
4984 2856 909F mul r25,r16 |
4985 2858 F00C add r15,r0 |
4986 285a 1124 clr r1 |
4987 285c 4E0D add r20,r14 |
4988 285e 5F1D adc r21,r15 |
4989 2860 5093 0000 sts (stick_roll.13)+1,r21 |
4990 2864 4093 0000 sts stick_roll.13,r20 |
4991 2868 8091 0000 lds r24,CareFree |
4992 286c 8823 tst r24 |
4993 286e 01F4 brne .+2 |
4994 2870 00C0 rjmp .L440 |
4995 2872 CB01 movw r24,r22 |
4996 2874 77FD sbrc r23,7 |
4997 2876 0396 adiw r24,3 |
4998 .L441: |
4999 2878 DC01 movw r26,r24 |
5000 287a B595 asr r27 |
5001 287c A795 ror r26 |
5002 287e B595 asr r27 |
5003 2880 A795 ror r26 |
5004 2882 CA01 movw r24,r20 |
5005 2884 57FD sbrc r21,7 |
5006 2886 0396 adiw r24,3 |
5007 .L442: |
5008 2888 FC01 movw r30,r24 |
5009 288a F595 asr r31 |
5010 288c E795 ror r30 |
5011 288e F595 asr r31 |
5012 2890 E795 ror r30 |
5013 2892 8091 0000 lds r24,FromNC_Rotate_C |
5014 2896 682F mov r22,r24 |
5015 2898 7727 clr r23 |
5016 289a 67FD sbrc r22,7 |
5017 289c 7095 com r23 |
5018 289e 6A9F mul r22,r26 |
5019 28a0 9001 movw r18,r0 |
5020 28a2 6B9F mul r22,r27 |
5021 28a4 300D add r19,r0 |
5022 28a6 7A9F mul r23,r26 |
5023 28a8 300D add r19,r0 |
5024 28aa 1124 clr r1 |
5025 28ac 8091 0000 lds r24,FromNC_Rotate_S |
5026 28b0 482F mov r20,r24 |
5027 28b2 5527 clr r21 |
5028 28b4 47FD sbrc r20,7 |
5029 28b6 5095 com r21 |
5030 28b8 4E9F mul r20,r30 |
5031 28ba C001 movw r24,r0 |
5032 28bc 4F9F mul r20,r31 |
5033 28be 900D add r25,r0 |
5034 28c0 5E9F mul r21,r30 |
5035 28c2 900D add r25,r0 |
5036 28c4 1124 clr r1 |
5037 28c6 280F add r18,r24 |
5038 28c8 391F adc r19,r25 |
5039 28ca 37FF sbrs r19,7 |
5040 28cc 00C0 rjmp .L443 |
5041 28ce 295F subi r18,lo8(-(7)) |
5042 28d0 3F4F sbci r19,hi8(-(7)) |
5043 .L443: |
5044 28d2 93E0 ldi r25,3 |
5045 28d4 3595 1: asr r19 |
5046 28d6 2795 ror r18 |
5047 28d8 9A95 dec r25 |
5048 28da 01F4 brne 1b |
5049 28dc 3093 0000 sts (StickNick)+1,r19 |
5050 28e0 2093 0000 sts StickNick,r18 |
5051 28e4 6E9F mul r22,r30 |
5052 28e6 9001 movw r18,r0 |
5053 28e8 6F9F mul r22,r31 |
5054 28ea 300D add r19,r0 |
5055 28ec 7E9F mul r23,r30 |
5056 28ee 300D add r19,r0 |
5057 28f0 1124 clr r1 |
5058 28f2 4A9F mul r20,r26 |
5059 28f4 C001 movw r24,r0 |
5060 28f6 4B9F mul r20,r27 |
5061 28f8 900D add r25,r0 |
5062 28fa 5A9F mul r21,r26 |
5063 28fc 900D add r25,r0 |
5064 28fe 1124 clr r1 |
5065 2900 00C0 rjmp .L919 |
5066 .L440: |
5067 2902 8091 0000 lds r24,EE_Parameter+98 |
5068 2906 E82F mov r30,r24 |
5069 2908 FF27 clr r31 |
5070 290a E050 subi r30,lo8(-(sintab)) |
5071 290c F040 sbci r31,hi8(-(sintab)) |
5072 290e 8681 ldd r24,Z+6 |
5073 2910 8093 0000 sts FromNC_Rotate_C,r24 |
5074 2914 9081 ld r25,Z |
5075 2916 9093 0000 sts FromNC_Rotate_S,r25 |
5076 291a A82F mov r26,r24 |
5077 291c BB27 clr r27 |
5078 291e A7FD sbrc r26,7 |
5079 2920 B095 com r27 |
5080 2922 A69F mul r26,r22 |
5081 2924 9001 movw r18,r0 |
5082 2926 A79F mul r26,r23 |
5083 2928 300D add r19,r0 |
5084 292a B69F mul r27,r22 |
5085 292c 300D add r19,r0 |
5086 292e 1124 clr r1 |
5087 2930 E92F mov r30,r25 |
5088 2932 FF27 clr r31 |
5089 2934 E7FD sbrc r30,7 |
5090 2936 F095 com r31 |
5091 2938 E49F mul r30,r20 |
5092 293a C001 movw r24,r0 |
5093 293c E59F mul r30,r21 |
5094 293e 900D add r25,r0 |
5095 2940 F49F mul r31,r20 |
5096 2942 900D add r25,r0 |
5097 2944 1124 clr r1 |
5098 2946 280F add r18,r24 |
5099 2948 391F adc r19,r25 |
5100 294a 37FF sbrs r19,7 |
5101 294c 00C0 rjmp .L446 |
5102 294e 295F subi r18,lo8(-(7)) |
5103 2950 3F4F sbci r19,hi8(-(7)) |
5104 .L446: |
5105 2952 83E0 ldi r24,3 |
5106 2954 3595 1: asr r19 |
5107 2956 2795 ror r18 |
5108 2958 8A95 dec r24 |
5109 295a 01F4 brne 1b |
5110 295c 3093 0000 sts (StickNick)+1,r19 |
5111 2960 2093 0000 sts StickNick,r18 |
5112 2964 A49F mul r26,r20 |
5113 2966 9001 movw r18,r0 |
5114 2968 A59F mul r26,r21 |
5115 296a 300D add r19,r0 |
5116 296c B49F mul r27,r20 |
5117 296e 300D add r19,r0 |
5118 2970 1124 clr r1 |
5119 2972 E69F mul r30,r22 |
5120 2974 C001 movw r24,r0 |
5121 2976 E79F mul r30,r23 |
5122 2978 900D add r25,r0 |
5123 297a F69F mul r31,r22 |
5124 297c 900D add r25,r0 |
5125 297e 1124 clr r1 |
5126 .L919: |
5127 2980 281B sub r18,r24 |
5128 2982 390B sbc r19,r25 |
5129 2984 37FF sbrs r19,7 |
5130 2986 00C0 rjmp .L447 |
5131 2988 295F subi r18,lo8(-(7)) |
5132 298a 3F4F sbci r19,hi8(-(7)) |
5133 .L447: |
5134 298c 03E0 ldi r16,3 |
5135 298e 3595 1: asr r19 |
5136 2990 2795 ror r18 |
5137 2992 0A95 dec r16 |
5138 2994 01F4 brne 1b |
5139 2996 3093 0000 sts (StickRoll)+1,r19 |
5140 299a 2093 0000 sts StickRoll,r18 |
5141 299e 8091 0000 lds r24,EE_Parameter+4 |
5142 29a2 E82F mov r30,r24 |
5143 29a4 FF27 clr r31 |
5144 29a6 EE0F add r30,r30 |
5145 29a8 FF1F adc r31,r31 |
5146 29aa E050 subi r30,lo8(-(PPM_in)) |
5147 29ac F040 sbci r31,hi8(-(PPM_in)) |
5148 29ae 8081 ld r24,Z |
5149 29b0 9181 ldd r25,Z+1 |
5150 29b2 9095 com r25 |
5151 29b4 8195 neg r24 |
5152 29b6 9F4F sbci r25,lo8(-1) |
5153 29b8 9093 0000 sts (StickGier)+1,r25 |
5154 29bc 8093 0000 sts StickGier,r24 |
5155 29c0 8530 cpi r24,5 |
5156 29c2 9105 cpc r25,__zero_reg__ |
5157 29c4 04F0 brlt .L448 |
5158 29c6 0497 sbiw r24,4 |
5159 29c8 00C0 rjmp .L891 |
5160 .L448: |
5161 29ca 0FEF ldi r16,hi8(-4) |
5162 29cc 8C3F cpi r24,lo8(-4) |
5163 29ce 9007 cpc r25,r16 |
5164 29d0 04F4 brge .L450 |
5165 29d2 0496 adiw r24,4 |
5166 .L891: |
5167 29d4 9093 0000 sts (StickGier)+1,r25 |
5168 29d8 8093 0000 sts StickGier,r24 |
5169 29dc 00C0 rjmp .L449 |
5170 .L450: |
5171 29de 1092 0000 sts (StickGier)+1,__zero_reg__ |
5172 29e2 1092 0000 sts StickGier,__zero_reg__ |
5173 .L449: |
5174 29e6 8091 0000 lds r24,GPS_Aid_StickMultiplikator |
5175 29ea 8823 tst r24 |
5176 29ec 01F4 brne .+2 |
5177 29ee 00C0 rjmp .L452 |
5178 29f0 282F mov r18,r24 |
5179 29f2 3327 clr r19 |
5180 29f4 8091 0000 lds r24,StickNick |
5181 29f8 9091 0000 lds r25,(StickNick)+1 |
5182 29fc 97FD sbrc r25,7 |
5183 29fe 0796 adiw r24,7 |
5184 .L453: |
5185 2a00 13E0 ldi r17,3 |
5186 2a02 9595 1: asr r25 |
5187 2a04 8795 ror r24 |
5188 2a06 1A95 dec r17 |
5189 2a08 01F4 brne 1b |
5190 2a0a 289F mul r18,r24 |
5191 2a0c A001 movw r20,r0 |
5192 2a0e 299F mul r18,r25 |
5193 2a10 500D add r21,r0 |
5194 2a12 389F mul r19,r24 |
5195 2a14 500D add r21,r0 |
5196 2a16 1124 clr r1 |
5197 2a18 CA01 movw r24,r20 |
5198 2a1a 57FD sbrc r21,7 |
5199 2a1c 0F96 adiw r24,15 |
5200 .L454: |
5201 2a1e B4E0 ldi r27,4 |
5202 2a20 9595 1: asr r25 |
5203 2a22 8795 ror r24 |
5204 2a24 BA95 dec r27 |
5205 2a26 01F4 brne 1b |
5206 2a28 9093 0000 sts (StickNick)+1,r25 |
5207 2a2c 8093 0000 sts StickNick,r24 |
5208 2a30 8091 0000 lds r24,StickRoll |
5209 2a34 9091 0000 lds r25,(StickRoll)+1 |
5210 2a38 97FD sbrc r25,7 |
5211 2a3a 0796 adiw r24,7 |
5212 .L455: |
5213 2a3c A3E0 ldi r26,3 |
5214 2a3e 9595 1: asr r25 |
5215 2a40 8795 ror r24 |
5216 2a42 AA95 dec r26 |
5217 2a44 01F4 brne 1b |
5218 2a46 289F mul r18,r24 |
5219 2a48 B001 movw r22,r0 |
5220 2a4a 299F mul r18,r25 |
5221 2a4c 700D add r23,r0 |
5222 2a4e 389F mul r19,r24 |
5223 2a50 700D add r23,r0 |
5224 2a52 1124 clr r1 |
5225 2a54 CB01 movw r24,r22 |
5226 2a56 77FD sbrc r23,7 |
5227 2a58 0F96 adiw r24,15 |
5228 .L456: |
5229 2a5a F4E0 ldi r31,4 |
5230 2a5c 9595 1: asr r25 |
5231 2a5e 8795 ror r24 |
5232 2a60 FA95 dec r31 |
5233 2a62 01F4 brne 1b |
5234 2a64 9093 0000 sts (StickRoll)+1,r25 |
5235 2a68 8093 0000 sts StickRoll,r24 |
5236 .L452: |
5237 2a6c 8090 0000 lds r8,StickNick |
5238 2a70 9090 0000 lds r9,(StickNick)+1 |
5239 2a74 8091 0000 lds r24,GPS_Nick |
5240 2a78 9091 0000 lds r25,(GPS_Nick)+1 |
5241 2a7c 881A sub r8,r24 |
5242 2a7e 990A sbc r9,r25 |
5243 2a80 9092 0000 sts (StickNick)+1,r9 |
5244 2a84 8092 0000 sts StickNick,r8 |
5245 2a88 0091 0000 lds r16,StickRoll |
5246 2a8c 1091 0000 lds r17,(StickRoll)+1 |
5247 2a90 8091 0000 lds r24,GPS_Roll |
5248 2a94 9091 0000 lds r25,(GPS_Roll)+1 |
5249 2a98 081B sub r16,r24 |
5250 2a9a 190B sbc r17,r25 |
5251 2a9c 1093 0000 sts (StickRoll)+1,r17 |
5252 2aa0 0093 0000 sts StickRoll,r16 |
5253 2aa4 8091 0000 lds r24,EE_Parameter+3 |
5254 2aa8 E82F mov r30,r24 |
5255 2aaa FF27 clr r31 |
5256 2aac EE0F add r30,r30 |
5257 2aae FF1F adc r31,r31 |
5258 2ab0 E050 subi r30,lo8(-(PPM_in)) |
5259 2ab2 F040 sbci r31,hi8(-(PPM_in)) |
5260 2ab4 E080 ld r14,Z |
5261 2ab6 F180 ldd r15,Z+1 |
5262 2ab8 8FE7 ldi r24,lo8(127) |
5263 2aba 90E0 ldi r25,hi8(127) |
5264 2abc E80E add r14,r24 |
5265 2abe F91E adc r15,r25 |
5266 2ac0 F092 0000 sts (StickGas)+1,r15 |
5267 2ac4 E092 0000 sts StickGas,r14 |
5268 2ac8 8091 0000 lds r24,Parameter_Gyro_P |
5269 2acc 9927 clr r25 |
5270 2ace AA27 clr r26 |
5271 2ad0 97FD sbrc r25,7 |
5272 2ad2 A095 com r26 |
5273 2ad4 BA2F mov r27,r26 |
5274 2ad6 BC01 movw r22,r24 |
5275 2ad8 CD01 movw r24,r26 |
5276 2ada 0E94 0000 call __floatsisf |
5277 2ade DC01 movw r26,r24 |
5278 2ae0 CB01 movw r24,r22 |
5279 2ae2 20E0 ldi r18,lo8(0x41200000) |
5280 2ae4 30E0 ldi r19,hi8(0x41200000) |
5281 2ae6 40E2 ldi r20,hlo8(0x41200000) |
5282 2ae8 51E4 ldi r21,hhi8(0x41200000) |
5283 2aea BC01 movw r22,r24 |
5284 2aec CD01 movw r24,r26 |
5285 2aee 0E94 0000 call __addsf3 |
5286 2af2 DC01 movw r26,r24 |
5287 2af4 CB01 movw r24,r22 |
5288 2af6 BC01 movw r22,r24 |
5289 2af8 CD01 movw r24,r26 |
5290 2afa 0E94 0000 call __fixunssfsi |
5291 2afe DC01 movw r26,r24 |
5292 2b00 CB01 movw r24,r22 |
5293 2b02 8093 0000 sts GyroFaktor,r24 |
5294 2b06 8091 0000 lds r24,Parameter_Gyro_I |
5295 2b0a 8093 0000 sts IntegralFaktor,r24 |
5296 2b0e 8091 0000 lds r24,Parameter_Gyro_Gier_P |
5297 2b12 9927 clr r25 |
5298 2b14 AA27 clr r26 |
5299 2b16 97FD sbrc r25,7 |
5300 2b18 A095 com r26 |
5301 2b1a BA2F mov r27,r26 |
5302 2b1c BC01 movw r22,r24 |
5303 2b1e CD01 movw r24,r26 |
5304 2b20 0E94 0000 call __floatsisf |
5305 2b24 DC01 movw r26,r24 |
5306 2b26 CB01 movw r24,r22 |
5307 2b28 20E0 ldi r18,lo8(0x41200000) |
5308 2b2a 30E0 ldi r19,hi8(0x41200000) |
5309 2b2c 40E2 ldi r20,hlo8(0x41200000) |
5310 2b2e 51E4 ldi r21,hhi8(0x41200000) |
5311 2b30 BC01 movw r22,r24 |
5312 2b32 CD01 movw r24,r26 |
5313 2b34 0E94 0000 call __addsf3 |
5314 2b38 DC01 movw r26,r24 |
5315 2b3a CB01 movw r24,r22 |
5316 2b3c BC01 movw r22,r24 |
5317 2b3e CD01 movw r24,r26 |
5318 2b40 0E94 0000 call __fixunssfsi |
5319 2b44 DC01 movw r26,r24 |
5320 2b46 CB01 movw r24,r22 |
5321 2b48 8093 0000 sts GyroFaktorGier,r24 |
5322 2b4c 8091 0000 lds r24,Parameter_Gyro_Gier_I |
5323 2b50 8093 0000 sts IntegralFaktorGier,r24 |
5324 2b54 8091 0000 lds r24,ExternControl+10 |
5325 2b58 80FF sbrs r24,0 |
5326 2b5a 00C0 rjmp .L457 |
5327 2b5c 8091 0000 lds r24,Parameter_ExternalControl |
5328 2b60 8138 cpi r24,lo8(-127) |
5329 2b62 00F4 brsh .+2 |
5330 2b64 00C0 rjmp .L457 |
5331 2b66 8091 0000 lds r24,ExternControl+3 |
5332 2b6a 9927 clr r25 |
5333 2b6c 87FD sbrc r24,7 |
5334 2b6e 9095 com r25 |
5335 2b70 2B2D mov r18,r11 |
5336 2b72 3327 clr r19 |
5337 2b74 829F mul r24,r18 |
5338 2b76 D001 movw r26,r0 |
5339 2b78 839F mul r24,r19 |
5340 2b7a B00D add r27,r0 |
5341 2b7c 929F mul r25,r18 |
5342 2b7e B00D add r27,r0 |
5343 2b80 1124 clr r1 |
5344 2b82 8A0E add r8,r26 |
5345 2b84 9B1E adc r9,r27 |
5346 2b86 9092 0000 sts (StickNick)+1,r9 |
5347 2b8a 8092 0000 sts StickNick,r8 |
5348 2b8e 8091 0000 lds r24,ExternControl+4 |
5349 2b92 9927 clr r25 |
5350 2b94 87FD sbrc r24,7 |
5351 2b96 9095 com r25 |
5352 2b98 829F mul r24,r18 |
5353 2b9a F001 movw r30,r0 |
5354 2b9c 839F mul r24,r19 |
5355 2b9e F00D add r31,r0 |
5356 2ba0 929F mul r25,r18 |
5357 2ba2 F00D add r31,r0 |
5358 2ba4 1124 clr r1 |
5359 2ba6 0E0F add r16,r30 |
5360 2ba8 1F1F adc r17,r31 |
5361 2baa 1093 0000 sts (StickRoll)+1,r17 |
5362 2bae 0093 0000 sts StickRoll,r16 |
5363 2bb2 8091 0000 lds r24,ExternControl+5 |
5364 2bb6 282F mov r18,r24 |
5365 2bb8 3327 clr r19 |
5366 2bba 27FD sbrc r18,7 |
5367 2bbc 3095 com r19 |
5368 2bbe 8091 0000 lds r24,StickGier |
5369 2bc2 9091 0000 lds r25,(StickGier)+1 |
5370 2bc6 820F add r24,r18 |
5371 2bc8 931F adc r25,r19 |
5372 2bca 9093 0000 sts (StickGier)+1,r25 |
5373 2bce 8093 0000 sts StickGier,r24 |
5374 2bd2 8091 0000 lds r24,ExternControl+7 |
5375 2bd6 282F mov r18,r24 |
5376 2bd8 3327 clr r19 |
5377 2bda 27FD sbrc r18,7 |
5378 2bdc 3095 com r19 |
5379 2bde 8091 0000 lds r24,EE_Parameter+18 |
5380 2be2 9927 clr r25 |
5381 2be4 289F mul r18,r24 |
5382 2be6 8001 movw r16,r0 |
5383 2be8 299F mul r18,r25 |
5384 2bea 100D add r17,r0 |
5385 2bec 389F mul r19,r24 |
5386 2bee 100D add r17,r0 |
5387 2bf0 1124 clr r1 |
5388 2bf2 1093 0000 sts (ExternHoehenValue)+1,r17 |
5389 2bf6 0093 0000 sts ExternHoehenValue,r16 |
5390 2bfa 8091 0000 lds r24,ExternControl+6 |
5391 2bfe 9927 clr r25 |
5392 2c00 8E15 cp r24,r14 |
5393 2c02 9F05 cpc r25,r15 |
5394 2c04 04F4 brge .L457 |
5395 2c06 9093 0000 sts (StickGas)+1,r25 |
5396 2c0a 8093 0000 sts StickGas,r24 |
5397 .L457: |
5398 2c0e 8091 0000 lds r24,StickGas |
5399 2c12 9091 0000 lds r25,(StickGas)+1 |
5400 2c16 97FF sbrs r25,7 |
5401 2c18 00C0 rjmp .L459 |
5402 2c1a 1092 0000 sts (StickGas)+1,__zero_reg__ |
5403 2c1e 1092 0000 sts StickGas,__zero_reg__ |
5404 .L459: |
5405 2c22 8091 0000 lds r24,Parameter_GlobalConfig |
5406 2c26 82FF sbrs r24,2 |
5407 2c28 00C0 rjmp .L460 |
5408 2c2a 1092 0000 sts IntegralFaktor,__zero_reg__ |
5409 .L460: |
5410 2c2e 4091 0000 lds r20,StickNick |
5411 2c32 5091 0000 lds r21,(StickNick)+1 |
5412 2c36 CA01 movw r24,r20 |
5413 2c38 57FD sbrc r21,7 |
5414 2c3a 0396 adiw r24,3 |
5415 .L462: |
5416 2c3c 9C01 movw r18,r24 |
5417 2c3e 3595 asr r19 |
5418 2c40 2795 ror r18 |
5419 2c42 3595 asr r19 |
5420 2c44 2795 ror r18 |
5421 2c46 37FF sbrs r19,7 |
5422 2c48 00C0 rjmp .L463 |
5423 2c4a 3095 com r19 |
5424 2c4c 2195 neg r18 |
5425 2c4e 3F4F sbci r19,lo8(-1) |
5426 .L463: |
5427 2c50 8091 0000 lds r24,MaxStickNick |
5428 2c54 9091 0000 lds r25,(MaxStickNick)+1 |
5429 2c58 8217 cp r24,r18 |
5430 2c5a 9307 cpc r25,r19 |
5431 2c5c 04F4 brge .L461 |
5432 2c5e CA01 movw r24,r20 |
5433 2c60 57FF sbrs r21,7 |
5434 2c62 00C0 rjmp .L464 |
5435 2c64 9095 com r25 |
5436 2c66 8195 neg r24 |
5437 2c68 9F4F sbci r25,lo8(-1) |
5438 .L464: |
5439 2c6a 97FD sbrc r25,7 |
5440 2c6c 0396 adiw r24,3 |
5441 .L465: |
5442 2c6e 9595 asr r25 |
5443 2c70 8795 ror r24 |
5444 2c72 9595 asr r25 |
5445 2c74 8795 ror r24 |
5446 2c76 9093 0000 sts (MaxStickNick)+1,r25 |
5447 2c7a 8093 0000 sts MaxStickNick,r24 |
5448 2c7e 8536 cpi r24,101 |
5449 2c80 9105 cpc r25,__zero_reg__ |
5450 2c82 04F0 brlt .L467 |
5451 2c84 84E6 ldi r24,lo8(100) |
5452 2c86 90E0 ldi r25,hi8(100) |
5453 2c88 00C0 rjmp .L892 |
5454 .L461: |
5455 2c8a 0197 sbiw r24,1 |
5456 .L892: |
5457 2c8c 9093 0000 sts (MaxStickNick)+1,r25 |
5458 2c90 8093 0000 sts MaxStickNick,r24 |
5459 .L467: |
5460 2c94 4091 0000 lds r20,StickRoll |
5461 2c98 5091 0000 lds r21,(StickRoll)+1 |
5462 2c9c CA01 movw r24,r20 |
5463 2c9e 57FD sbrc r21,7 |
5464 2ca0 0396 adiw r24,3 |
5465 .L469: |
5466 2ca2 9C01 movw r18,r24 |
5467 2ca4 3595 asr r19 |
5468 2ca6 2795 ror r18 |
5469 2ca8 3595 asr r19 |
5470 2caa 2795 ror r18 |
5471 2cac 37FF sbrs r19,7 |
5472 2cae 00C0 rjmp .L470 |
5473 2cb0 3095 com r19 |
5474 2cb2 2195 neg r18 |
5475 2cb4 3F4F sbci r19,lo8(-1) |
5476 .L470: |
5477 2cb6 8091 0000 lds r24,MaxStickRoll |
5478 2cba 9091 0000 lds r25,(MaxStickRoll)+1 |
5479 2cbe 8217 cp r24,r18 |
5480 2cc0 9307 cpc r25,r19 |
5481 2cc2 04F4 brge .L468 |
5482 2cc4 CA01 movw r24,r20 |
5483 2cc6 57FF sbrs r21,7 |
5484 2cc8 00C0 rjmp .L471 |
5485 2cca 9095 com r25 |
5486 2ccc 8195 neg r24 |
5487 2cce 9F4F sbci r25,lo8(-1) |
5488 .L471: |
5489 2cd0 97FD sbrc r25,7 |
5490 2cd2 0396 adiw r24,3 |
5491 .L472: |
5492 2cd4 9595 asr r25 |
5493 2cd6 8795 ror r24 |
5494 2cd8 9595 asr r25 |
5495 2cda 8795 ror r24 |
5496 2cdc 9093 0000 sts (MaxStickRoll)+1,r25 |
5497 2ce0 8093 0000 sts MaxStickRoll,r24 |
5498 2ce4 8536 cpi r24,101 |
5499 2ce6 9105 cpc r25,__zero_reg__ |
5500 2ce8 04F0 brlt .L474 |
5501 2cea 84E6 ldi r24,lo8(100) |
5502 2cec 90E0 ldi r25,hi8(100) |
5503 2cee 00C0 rjmp .L893 |
5504 .L468: |
5505 2cf0 0197 sbiw r24,1 |
5506 .L893: |
5507 2cf2 9093 0000 sts (MaxStickRoll)+1,r25 |
5508 2cf6 8093 0000 sts MaxStickRoll,r24 |
5509 .L474: |
5510 2cfa 8091 0000 lds r24,FC_StatusFlags |
5511 2cfe 84FF sbrs r24,4 |
5512 2d00 00C0 rjmp .L475 |
5513 2d02 1092 0000 sts (MaxStickNick)+1,__zero_reg__ |
5514 2d06 1092 0000 sts MaxStickNick,__zero_reg__ |
5515 2d0a 1092 0000 sts (MaxStickRoll)+1,__zero_reg__ |
5516 2d0e 1092 0000 sts MaxStickRoll,__zero_reg__ |
5517 .L475: |
5518 2d12 ED2D mov r30,r13 |
5519 2d14 FF27 clr r31 |
5520 2d16 EE0F add r30,r30 |
5521 2d18 FF1F adc r31,r31 |
5522 2d1a E050 subi r30,lo8(-(PPM_in)) |
5523 2d1c F040 sbci r31,hi8(-(PPM_in)) |
5524 2d1e 4091 0000 lds r20,EE_Parameter+60 |
5525 2d22 242F mov r18,r20 |
5526 2d24 3327 clr r19 |
5527 2d26 8081 ld r24,Z |
5528 2d28 9181 ldd r25,Z+1 |
5529 2d2a 2817 cp r18,r24 |
5530 2d2c 3907 cpc r19,r25 |
5531 2d2e 04F4 brge .L476 |
5532 2d30 8091 0000 lds r24,EE_Parameter+108 |
5533 2d34 82FF sbrs r24,2 |
5534 2d36 00C0 rjmp .L476 |
5535 2d38 81E0 ldi r24,lo8(1) |
5536 2d3a 8093 0000 sts Looping_Links,r24 |
5537 2d3e 00C0 rjmp .L477 |
5538 .L476: |
5539 2d40 ED2D mov r30,r13 |
5540 2d42 FF27 clr r31 |
5541 2d44 EE0F add r30,r30 |
5542 2d46 FF1F adc r31,r31 |
5543 2d48 E050 subi r30,lo8(-(PPM_in)) |
5544 2d4a F040 sbci r31,hi8(-(PPM_in)) |
5545 2d4c 842F mov r24,r20 |
5546 2d4e 9927 clr r25 |
5547 2d50 2091 0000 lds r18,EE_Parameter+61 |
5548 2d54 821B sub r24,r18 |
5549 2d56 9109 sbc r25,__zero_reg__ |
5550 2d58 2081 ld r18,Z |
5551 2d5a 3181 ldd r19,Z+1 |
5552 2d5c 2817 cp r18,r24 |
5553 2d5e 3907 cpc r19,r25 |
5554 2d60 04F4 brge .L477 |
5555 2d62 1092 0000 sts Looping_Links,__zero_reg__ |
5556 .L477: |
5557 2d66 4091 0000 lds r20,EE_Parameter+2 |
5558 2d6a E42F mov r30,r20 |
5559 2d6c FF27 clr r31 |
5560 2d6e EE0F add r30,r30 |
5561 2d70 FF1F adc r31,r31 |
5562 2d72 E050 subi r30,lo8(-(PPM_in)) |
5563 2d74 F040 sbci r31,hi8(-(PPM_in)) |
5564 2d76 5091 0000 lds r21,EE_Parameter+60 |
5565 2d7a 852F mov r24,r21 |
5566 2d7c 9927 clr r25 |
5567 2d7e 2227 clr r18 |
5568 2d80 3327 clr r19 |
5569 2d82 281B sub r18,r24 |
5570 2d84 390B sbc r19,r25 |
5571 2d86 8081 ld r24,Z |
5572 2d88 9181 ldd r25,Z+1 |
5573 2d8a 8217 cp r24,r18 |
5574 2d8c 9307 cpc r25,r19 |
5575 2d8e 04F4 brge .L479 |
5576 2d90 8091 0000 lds r24,EE_Parameter+108 |
5577 2d94 83FF sbrs r24,3 |
5578 2d96 00C0 rjmp .L479 |
5579 2d98 81E0 ldi r24,lo8(1) |
5580 2d9a 8093 0000 sts Looping_Rechts,r24 |
5581 2d9e 00C0 rjmp .L480 |
5582 .L479: |
5583 2da0 8091 0000 lds r24,Looping_Rechts |
5584 2da4 8823 tst r24 |
5585 2da6 01F0 breq .L480 |
5586 2da8 E42F mov r30,r20 |
5587 2daa FF27 clr r31 |
5588 2dac EE0F add r30,r30 |
5589 2dae FF1F adc r31,r31 |
5590 2db0 E050 subi r30,lo8(-(PPM_in)) |
5591 2db2 F040 sbci r31,hi8(-(PPM_in)) |
5592 2db4 8091 0000 lds r24,EE_Parameter+61 |
5593 2db8 9927 clr r25 |
5594 2dba 851B sub r24,r21 |
5595 2dbc 9109 sbc r25,__zero_reg__ |
5596 2dbe 2081 ld r18,Z |
5597 2dc0 3181 ldd r19,Z+1 |
5598 2dc2 8217 cp r24,r18 |
5599 2dc4 9307 cpc r25,r19 |
5600 2dc6 04F4 brge .L480 |
5601 2dc8 1092 0000 sts Looping_Rechts,__zero_reg__ |
5602 .L480: |
5603 2dcc EC2D mov r30,r12 |
5604 2dce FF27 clr r31 |
5605 2dd0 EE0F add r30,r30 |
5606 2dd2 FF1F adc r31,r31 |
5607 2dd4 E050 subi r30,lo8(-(PPM_in)) |
5608 2dd6 F040 sbci r31,hi8(-(PPM_in)) |
5609 2dd8 4091 0000 lds r20,EE_Parameter+60 |
5610 2ddc 242F mov r18,r20 |
5611 2dde 3327 clr r19 |
5612 2de0 8081 ld r24,Z |
5613 2de2 9181 ldd r25,Z+1 |
5614 2de4 2817 cp r18,r24 |
5615 2de6 3907 cpc r19,r25 |
5616 2de8 04F4 brge .L483 |
5617 2dea 8091 0000 lds r24,EE_Parameter+108 |
5618 2dee 80FF sbrs r24,0 |
5619 2df0 00C0 rjmp .L483 |
5620 2df2 81E0 ldi r24,lo8(1) |
5621 2df4 8093 0000 sts Looping_Oben,r24 |
5622 2df8 00C0 rjmp .L484 |
5623 .L483: |
5624 2dfa 8091 0000 lds r24,Looping_Oben |
5625 2dfe 8823 tst r24 |
5626 2e00 01F0 breq .L484 |
5627 2e02 EC2D mov r30,r12 |
5628 2e04 FF27 clr r31 |
5629 2e06 EE0F add r30,r30 |
5630 2e08 FF1F adc r31,r31 |
5631 2e0a E050 subi r30,lo8(-(PPM_in)) |
5632 2e0c F040 sbci r31,hi8(-(PPM_in)) |
5633 2e0e 842F mov r24,r20 |
5634 2e10 9927 clr r25 |
5635 2e12 2091 0000 lds r18,EE_Parameter+61 |
5636 2e16 821B sub r24,r18 |
5637 2e18 9109 sbc r25,__zero_reg__ |
5638 2e1a 2081 ld r18,Z |
5639 2e1c 3181 ldd r19,Z+1 |
5640 2e1e 2817 cp r18,r24 |
5641 2e20 3907 cpc r19,r25 |
5642 2e22 04F4 brge .L484 |
5643 2e24 1092 0000 sts Looping_Oben,__zero_reg__ |
5644 .L484: |
5645 2e28 4091 0000 lds r20,EE_Parameter+1 |
5646 2e2c E42F mov r30,r20 |
5647 2e2e FF27 clr r31 |
5648 2e30 EE0F add r30,r30 |
5649 2e32 FF1F adc r31,r31 |
5650 2e34 E050 subi r30,lo8(-(PPM_in)) |
5651 2e36 F040 sbci r31,hi8(-(PPM_in)) |
5652 2e38 5091 0000 lds r21,EE_Parameter+60 |
5653 2e3c 852F mov r24,r21 |
5654 2e3e 9927 clr r25 |
5655 2e40 2227 clr r18 |
5656 2e42 3327 clr r19 |
5657 2e44 281B sub r18,r24 |
5658 2e46 390B sbc r19,r25 |
5659 2e48 8081 ld r24,Z |
5660 2e4a 9181 ldd r25,Z+1 |
5661 2e4c 8217 cp r24,r18 |
5662 2e4e 9307 cpc r25,r19 |
5663 2e50 04F4 brge .L487 |
5664 2e52 8091 0000 lds r24,EE_Parameter+108 |
5665 2e56 81FF sbrs r24,1 |
5666 2e58 00C0 rjmp .L487 |
5667 2e5a 81E0 ldi r24,lo8(1) |
5668 2e5c 8093 0000 sts Looping_Unten,r24 |
5669 2e60 00C0 rjmp .L488 |
5670 .L487: |
5671 2e62 8091 0000 lds r24,Looping_Unten |
5672 2e66 8823 tst r24 |
5673 2e68 01F0 breq .L488 |
5674 2e6a E42F mov r30,r20 |
5675 2e6c FF27 clr r31 |
5676 2e6e EE0F add r30,r30 |
5677 2e70 FF1F adc r31,r31 |
5678 2e72 E050 subi r30,lo8(-(PPM_in)) |
5679 2e74 F040 sbci r31,hi8(-(PPM_in)) |
5680 2e76 8091 0000 lds r24,EE_Parameter+61 |
5681 2e7a 9927 clr r25 |
5682 2e7c 851B sub r24,r21 |
5683 2e7e 9109 sbc r25,__zero_reg__ |
5684 2e80 2081 ld r18,Z |
5685 2e82 3181 ldd r19,Z+1 |
5686 2e84 8217 cp r24,r18 |
5687 2e86 9307 cpc r25,r19 |
5688 2e88 04F4 brge .L488 |
5689 2e8a 1092 0000 sts Looping_Unten,__zero_reg__ |
5690 .L488: |
5691 2e8e 8091 0000 lds r24,Looping_Links |
5692 2e92 8823 tst r24 |
5693 2e94 01F4 brne .L492 |
5694 2e96 8091 0000 lds r24,Looping_Rechts |
5695 2e9a 8111 cpse r24,__zero_reg__ |
5696 .L492: |
5697 2e9c 81E0 ldi r24,lo8(1) |
5698 .L491: |
5699 2e9e 8093 0000 sts Looping_Roll,r24 |
5700 2ea2 8091 0000 lds r24,Looping_Oben |
5701 2ea6 8823 tst r24 |
5702 2ea8 01F4 brne .L495 |
5703 2eaa 8091 0000 lds r24,Looping_Unten |
5704 2eae 8823 tst r24 |
5705 2eb0 01F0 breq .L494 |
5706 .L495: |
5707 2eb2 81E0 ldi r24,lo8(1) |
5708 2eb4 8093 0000 sts Looping_Nick,r24 |
5709 2eb8 1092 0000 sts Looping_Roll,__zero_reg__ |
5710 2ebc 1092 0000 sts Looping_Links,__zero_reg__ |
5711 2ec0 1092 0000 sts Looping_Rechts,__zero_reg__ |
5712 2ec4 00C0 rjmp .L436 |
5713 .L494: |
5714 2ec6 8093 0000 sts Looping_Nick,r24 |
5715 .L436: |
5716 2eca 8091 0000 lds r24,Looping_Roll |
5717 2ece 8823 tst r24 |
5718 2ed0 01F4 brne .L498 |
5719 2ed2 8091 0000 lds r24,Looping_Nick |
5720 2ed6 8823 tst r24 |
5721 2ed8 01F0 breq .L497 |
5722 .L498: |
5723 2eda 8091 0000 lds r24,EE_Parameter+59 |
5724 2ede 9927 clr r25 |
5725 2ee0 2981 ldd r18,Y+1 |
5726 2ee2 3A81 ldd r19,Y+2 |
5727 2ee4 8217 cp r24,r18 |
5728 2ee6 9307 cpc r25,r19 |
5729 2ee8 04F4 brge .L499 |
5730 2eea 9A83 std Y+2,r25 |
5731 2eec 8983 std Y+1,r24 |
5732 .L499: |
5733 2eee 81E0 ldi r24,lo8(1) |
5734 2ef0 8093 0000 sts TrichterFlug,r24 |
5735 .L497: |
5736 2ef4 8091 0000 lds r24,FC_StatusFlags2 |
5737 2ef8 9927 clr r25 |
5738 2efa 9C01 movw r18,r24 |
5739 2efc 2470 andi r18,lo8(4) |
5740 2efe 3070 andi r19,hi8(4) |
5741 2f00 82FF sbrs r24,2 |
5742 2f02 00C0 rjmp .L500 |
5743 2f04 8091 0000 lds r24,GPS_Nick |
5744 2f08 9091 0000 lds r25,(GPS_Nick)+1 |
5745 2f0c 9095 com r25 |
5746 2f0e 8195 neg r24 |
5747 2f10 9F4F sbci r25,lo8(-1) |
5748 2f12 9093 0000 sts (StickNick)+1,r25 |
5749 2f16 8093 0000 sts StickNick,r24 |
5750 2f1a 8091 0000 lds r24,GPS_Roll |
5751 2f1e 9091 0000 lds r25,(GPS_Roll)+1 |
5752 2f22 9095 com r25 |
5753 2f24 8195 neg r24 |
5754 2f26 9F4F sbci r25,lo8(-1) |
5755 2f28 9093 0000 sts (StickRoll)+1,r25 |
5756 2f2c 8093 0000 sts StickRoll,r24 |
5757 2f30 8091 0000 lds r24,StickGasHover |
5758 2f34 9091 0000 lds r25,(StickGasHover)+1 |
5759 2f38 9093 0000 sts (StickGas)+1,r25 |
5760 2f3c 8093 0000 sts StickGas,r24 |
5761 2f40 8091 0000 lds r24,Parameter_GlobalConfig |
5762 2f44 8B77 andi r24,lo8(123) |
5763 2f46 8B66 ori r24,lo8(107) |
5764 2f48 8093 0000 sts Parameter_GlobalConfig,r24 |
5765 2f4c 8091 0000 lds r24,Parameter_ExtraConfig |
5766 2f50 8C7B andi r24,lo8(-68) |
5767 2f52 8093 0000 sts Parameter_ExtraConfig,r24 |
5768 2f56 88EC ldi r24,lo8(-56) |
5769 2f58 8093 0000 sts Parameter_HoehenSchalter,r24 |
5770 2f5c 00C0 rjmp .L501 |
5771 .L500: |
5772 2f5e 8091 0000 lds r24,FC_StatusFlags |
5773 2f62 84FF sbrs r24,4 |
5774 2f64 00C0 rjmp .L501 |
5775 2f66 3093 0000 sts (StickGier)+1,r19 |
5776 2f6a 2093 0000 sts StickGier,r18 |
5777 2f6e 3093 0000 sts (StickNick)+1,r19 |
5778 2f72 2093 0000 sts StickNick,r18 |
5779 2f76 3093 0000 sts (StickRoll)+1,r19 |
5780 2f7a 2093 0000 sts StickRoll,r18 |
5781 2f7e 9AE5 ldi r25,lo8(90) |
5782 2f80 9093 0000 sts GyroFaktor,r25 |
5783 2f84 88E7 ldi r24,lo8(120) |
5784 2f86 8093 0000 sts IntegralFaktor,r24 |
5785 2f8a 9093 0000 sts GyroFaktorGier,r25 |
5786 2f8e 8093 0000 sts IntegralFaktorGier,r24 |
5787 2f92 1092 0000 sts Looping_Roll,__zero_reg__ |
5788 2f96 1092 0000 sts Looping_Nick,__zero_reg__ |
5789 .L501: |
5790 2f9a 8091 0000 lds r24,MittelIntegralNick |
5791 2f9e 9091 0000 lds r25,(MittelIntegralNick)+1 |
5792 2fa2 A091 0000 lds r26,(MittelIntegralNick)+2 |
5793 2fa6 B091 0000 lds r27,(MittelIntegralNick)+3 |
5794 2faa 2091 0000 lds r18,IntegralNick |
5795 2fae 3091 0000 lds r19,(IntegralNick)+1 |
5796 2fb2 4091 0000 lds r20,(IntegralNick)+2 |
5797 2fb6 5091 0000 lds r21,(IntegralNick)+3 |
5798 2fba 820F add r24,r18 |
5799 2fbc 931F adc r25,r19 |
5800 2fbe A41F adc r26,r20 |
5801 2fc0 B51F adc r27,r21 |
5802 2fc2 8093 0000 sts MittelIntegralNick,r24 |
5803 2fc6 9093 0000 sts (MittelIntegralNick)+1,r25 |
5804 2fca A093 0000 sts (MittelIntegralNick)+2,r26 |
5805 2fce B093 0000 sts (MittelIntegralNick)+3,r27 |
5806 2fd2 8091 0000 lds r24,MittelIntegralRoll |
5807 2fd6 9091 0000 lds r25,(MittelIntegralRoll)+1 |
5808 2fda A091 0000 lds r26,(MittelIntegralRoll)+2 |
5809 2fde B091 0000 lds r27,(MittelIntegralRoll)+3 |
5810 2fe2 E090 0000 lds r14,IntegralRoll |
5811 2fe6 F090 0000 lds r15,(IntegralRoll)+1 |
5812 2fea 0091 0000 lds r16,(IntegralRoll)+2 |
5813 2fee 1091 0000 lds r17,(IntegralRoll)+3 |
5814 2ff2 EB82 std Y+3,r14 |
5815 2ff4 FC82 std Y+4,r15 |
5816 2ff6 0D83 std Y+5,r16 |
5817 2ff8 1E83 std Y+6,r17 |
5818 2ffa 8E0D add r24,r14 |
5819 2ffc 9F1D adc r25,r15 |
5820 2ffe A01F adc r26,r16 |
5821 3000 B11F adc r27,r17 |
5822 3002 8093 0000 sts MittelIntegralRoll,r24 |
5823 3006 9093 0000 sts (MittelIntegralRoll)+1,r25 |
5824 300a A093 0000 sts (MittelIntegralRoll)+2,r26 |
5825 300e B093 0000 sts (MittelIntegralRoll)+3,r27 |
5826 3012 8091 0000 lds r24,MittelIntegralNick2 |
5827 3016 9091 0000 lds r25,(MittelIntegralNick2)+1 |
5828 301a A091 0000 lds r26,(MittelIntegralNick2)+2 |
5829 301e B091 0000 lds r27,(MittelIntegralNick2)+3 |
5830 3022 E090 0000 lds r14,IntegralNick2 |
5831 3026 F090 0000 lds r15,(IntegralNick2)+1 |
5832 302a 0091 0000 lds r16,(IntegralNick2)+2 |
5833 302e 1091 0000 lds r17,(IntegralNick2)+3 |
5834 3032 EF82 std Y+7,r14 |
5835 3034 F886 std Y+8,r15 |
5836 3036 0987 std Y+9,r16 |
5837 3038 1A87 std Y+10,r17 |
5838 303a 8E0D add r24,r14 |
5839 303c 9F1D adc r25,r15 |
5840 303e A01F adc r26,r16 |
5841 3040 B11F adc r27,r17 |
5842 3042 8093 0000 sts MittelIntegralNick2,r24 |
5843 3046 9093 0000 sts (MittelIntegralNick2)+1,r25 |
5844 304a A093 0000 sts (MittelIntegralNick2)+2,r26 |
5845 304e B093 0000 sts (MittelIntegralNick2)+3,r27 |
5846 3052 8091 0000 lds r24,MittelIntegralRoll2 |
5847 3056 9091 0000 lds r25,(MittelIntegralRoll2)+1 |
5848 305a A091 0000 lds r26,(MittelIntegralRoll2)+2 |
5849 305e B091 0000 lds r27,(MittelIntegralRoll2)+3 |
5850 3062 E090 0000 lds r14,IntegralRoll2 |
5851 3066 F090 0000 lds r15,(IntegralRoll2)+1 |
5852 306a 0091 0000 lds r16,(IntegralRoll2)+2 |
5853 306e 1091 0000 lds r17,(IntegralRoll2)+3 |
5854 3072 EB86 std Y+11,r14 |
5855 3074 FC86 std Y+12,r15 |
5856 3076 0D87 std Y+13,r16 |
5857 3078 1E87 std Y+14,r17 |
5858 307a 8E0D add r24,r14 |
5859 307c 9F1D adc r25,r15 |
5860 307e A01F adc r26,r16 |
5861 3080 B11F adc r27,r17 |
5862 3082 8093 0000 sts MittelIntegralRoll2,r24 |
5863 3086 9093 0000 sts (MittelIntegralRoll2)+1,r25 |
5864 308a A093 0000 sts (MittelIntegralRoll2)+2,r26 |
5865 308e B093 0000 sts (MittelIntegralRoll2)+3,r27 |
5866 3092 F090 0000 lds r15,Looping_Nick |
5867 3096 FF86 std Y+15,r15 |
5868 3098 FF20 tst r15 |
5869 309a 01F4 brne .L504 |
5870 309c 8091 0000 lds r24,Looping_Roll |
5871 30a0 8823 tst r24 |
5872 30a2 01F4 brne .+2 |
5873 30a4 00C0 rjmp .L886 |
5874 .L504: |
5875 30a6 1092 0000 sts IntegralAccNick,__zero_reg__ |
5876 30aa 1092 0000 sts (IntegralAccNick)+1,__zero_reg__ |
5877 30ae 1092 0000 sts (IntegralAccNick)+2,__zero_reg__ |
5878 30b2 1092 0000 sts (IntegralAccNick)+3,__zero_reg__ |
5879 30b6 1092 0000 sts IntegralAccRoll,__zero_reg__ |
5880 30ba 1092 0000 sts (IntegralAccRoll)+1,__zero_reg__ |
5881 30be 1092 0000 sts (IntegralAccRoll)+2,__zero_reg__ |
5882 30c2 1092 0000 sts (IntegralAccRoll)+3,__zero_reg__ |
5883 30c6 1092 0000 sts MittelIntegralNick,__zero_reg__ |
5884 30ca 1092 0000 sts (MittelIntegralNick)+1,__zero_reg__ |
5885 30ce 1092 0000 sts (MittelIntegralNick)+2,__zero_reg__ |
5886 30d2 1092 0000 sts (MittelIntegralNick)+3,__zero_reg__ |
5887 30d6 1092 0000 sts MittelIntegralRoll,__zero_reg__ |
5888 30da 1092 0000 sts (MittelIntegralRoll)+1,__zero_reg__ |
5889 30de 1092 0000 sts (MittelIntegralRoll)+2,__zero_reg__ |
5890 30e2 1092 0000 sts (MittelIntegralRoll)+3,__zero_reg__ |
5891 30e6 1092 0000 sts MittelIntegralNick2,__zero_reg__ |
5892 30ea 1092 0000 sts (MittelIntegralNick2)+1,__zero_reg__ |
5893 30ee 1092 0000 sts (MittelIntegralNick2)+2,__zero_reg__ |
5894 30f2 1092 0000 sts (MittelIntegralNick2)+3,__zero_reg__ |
5895 30f6 1092 0000 sts MittelIntegralRoll2,__zero_reg__ |
5896 30fa 1092 0000 sts (MittelIntegralRoll2)+1,__zero_reg__ |
5897 30fe 1092 0000 sts (MittelIntegralRoll2)+2,__zero_reg__ |
5898 3102 1092 0000 sts (MittelIntegralRoll2)+3,__zero_reg__ |
5899 3106 8091 0000 lds r24,Mess_IntegralNick |
5900 310a 9091 0000 lds r25,(Mess_IntegralNick)+1 |
5901 310e A091 0000 lds r26,(Mess_IntegralNick)+2 |
5902 3112 B091 0000 lds r27,(Mess_IntegralNick)+3 |
5903 3116 8093 0000 sts Mess_IntegralNick2,r24 |
5904 311a 9093 0000 sts (Mess_IntegralNick2)+1,r25 |
5905 311e A093 0000 sts (Mess_IntegralNick2)+2,r26 |
5906 3122 B093 0000 sts (Mess_IntegralNick2)+3,r27 |
5907 3126 8091 0000 lds r24,Mess_IntegralRoll |
5908 312a 9091 0000 lds r25,(Mess_IntegralRoll)+1 |
5909 312e A091 0000 lds r26,(Mess_IntegralRoll)+2 |
5910 3132 B091 0000 lds r27,(Mess_IntegralRoll)+3 |
5911 3136 8093 0000 sts Mess_IntegralRoll2,r24 |
5912 313a 9093 0000 sts (Mess_IntegralRoll2)+1,r25 |
5913 313e A093 0000 sts (Mess_IntegralRoll2)+2,r26 |
5914 3142 B093 0000 sts (Mess_IntegralRoll2)+3,r27 |
5915 3146 1092 0000 sts (ZaehlMessungen)+1,__zero_reg__ |
5916 314a 1092 0000 sts ZaehlMessungen,__zero_reg__ |
5917 314e 1092 0000 sts (LageKorrekturNick)+1,__zero_reg__ |
5918 3152 1092 0000 sts LageKorrekturNick,__zero_reg__ |
5919 3156 1092 0000 sts (LageKorrekturRoll)+1,__zero_reg__ |
5920 315a 1092 0000 sts LageKorrekturRoll,__zero_reg__ |
5921 315e 0F85 ldd r16,Y+15 |
5922 3160 0023 tst r16 |
5923 3162 01F0 breq .+2 |
5924 3164 00C0 rjmp .L505 |
5925 .L886: |
5926 3166 8091 0000 lds r24,Looping_Roll |
5927 316a 8823 tst r24 |
5928 316c 01F0 breq .+2 |
5929 316e 00C0 rjmp .L505 |
5930 3170 8091 0000 lds r24,Aktuell_az |
5931 3174 9091 0000 lds r25,(Aktuell_az)+1 |
5932 3178 8150 subi r24,lo8(513) |
5933 317a 9240 sbci r25,hi8(513) |
5934 317c 04F4 brge .L506 |
5935 317e 8091 0000 lds r24,MotorenEin |
5936 3182 8823 tst r24 |
5937 3184 01F4 brne .+2 |
5938 3186 00C0 rjmp .L505 |
5939 .L506: |
5940 3188 9090 0000 lds r9,FromNaviCtrl_Value |
5941 318c A090 0000 lds r10,EE_Parameter+28 |
5942 3190 2090 0000 lds r2,Mittelwert_AccNick |
5943 3194 3090 0000 lds r3,(Mittelwert_AccNick)+1 |
5944 3198 4090 0000 lds r4,Mittelwert_AccRoll |
5945 319c 5090 0000 lds r5,(Mittelwert_AccRoll)+1 |
5946 31a0 1914 cp __zero_reg__,r9 |
5947 31a2 04F0 brlt .+2 |
5948 31a4 00C0 rjmp .L507 |
5949 31a6 BB24 clr r11 |
5950 31a8 CC24 clr r12 |
5951 31aa DD24 clr r13 |
5952 31ac CA01 movw r24,r20 |
5953 31ae B901 movw r22,r18 |
5954 31b0 A601 movw r20,r12 |
5955 31b2 9501 movw r18,r10 |
5956 31b4 0E94 0000 call __divmodsi4 |
5957 31b8 7901 movw r14,r18 |
5958 31ba 8A01 movw r16,r20 |
5959 31bc 8091 0000 lds r24,FromNaviCtrl+9 |
5960 31c0 9091 0000 lds r25,(FromNaviCtrl+9)+1 |
5961 31c4 281A sub r2,r24 |
5962 31c6 390A sbc r3,r25 |
5963 31c8 C101 movw r24,r2 |
5964 31ca AA27 clr r26 |
5965 31cc 97FD sbrc r25,7 |
5966 31ce A095 com r26 |
5967 31d0 BA2F mov r27,r26 |
5968 31d2 E81A sub r14,r24 |
5969 31d4 F90A sbc r15,r25 |
5970 31d6 0A0B sbc r16,r26 |
5971 31d8 1B0B sbc r17,r27 |
5972 31da 6B81 ldd r22,Y+3 |
5973 31dc 7C81 ldd r23,Y+4 |
5974 31de 8D81 ldd r24,Y+5 |
5975 31e0 9E81 ldd r25,Y+6 |
5976 31e2 A601 movw r20,r12 |
5977 31e4 9501 movw r18,r10 |
5978 31e6 0E94 0000 call __divmodsi4 |
5979 31ea 5901 movw r10,r18 |
5980 31ec 6A01 movw r12,r20 |
5981 31ee 8091 0000 lds r24,FromNaviCtrl+11 |
5982 31f2 9091 0000 lds r25,(FromNaviCtrl+11)+1 |
5983 31f6 481A sub r4,r24 |
5984 31f8 590A sbc r5,r25 |
5985 31fa C201 movw r24,r4 |
5986 31fc AA27 clr r26 |
5987 31fe 97FD sbrc r25,7 |
5988 3200 A095 com r26 |
5989 3202 BA2F mov r27,r26 |
5990 3204 A81A sub r10,r24 |
5991 3206 B90A sbc r11,r25 |
5992 3208 CA0A sbc r12,r26 |
5993 320a DB0A sbc r13,r27 |
5994 320c 292C mov r2,r9 |
5995 320e 3324 clr r3 |
5996 3210 27FC sbrc r2,7 |
5997 3212 3094 com r3 |
5998 3214 432C mov r4,r3 |
5999 3216 532C mov r5,r3 |
6000 3218 C801 movw r24,r16 |
6001 321a B701 movw r22,r14 |
6002 321c A201 movw r20,r4 |
6003 321e 9101 movw r18,r2 |
6004 3220 0E94 0000 call __mulsi3 |
6005 3224 97FF sbrs r25,7 |
6006 3226 00C0 rjmp .L508 |
6007 3228 6150 subi r22,lo8(-(511)) |
6008 322a 7E4F sbci r23,hi8(-(511)) |
6009 322c 8F4F sbci r24,hlo8(-(511)) |
6010 322e 9F4F sbci r25,hhi8(-(511)) |
6011 .L508: |
6012 3230 3B01 movw r6,r22 |
6013 3232 4C01 movw r8,r24 |
6014 3234 09E0 ldi r16,9 |
6015 3236 9594 1: asr r9 |
6016 3238 8794 ror r8 |
6017 323a 7794 ror r7 |
6018 323c 6794 ror r6 |
6019 323e 0A95 dec r16 |
6020 3240 01F4 brne 1b |
6021 3242 C601 movw r24,r12 |
6022 3244 B501 movw r22,r10 |
6023 3246 A201 movw r20,r4 |
6024 3248 9101 movw r18,r2 |
6025 324a 0E94 0000 call __mulsi3 |
6026 324e 97FF sbrs r25,7 |
6027 3250 00C0 rjmp .L509 |
6028 3252 6150 subi r22,lo8(-(511)) |
6029 3254 7E4F sbci r23,hi8(-(511)) |
6030 3256 8F4F sbci r24,hlo8(-(511)) |
6031 3258 9F4F sbci r25,hhi8(-(511)) |
6032 .L509: |
6033 325a 5B01 movw r10,r22 |
6034 325c 6C01 movw r12,r24 |
6035 325e 19E0 ldi r17,9 |
6036 3260 D594 1: asr r13 |
6037 3262 C794 ror r12 |
6038 3264 B794 ror r11 |
6039 3266 A794 ror r10 |
6040 3268 1A95 dec r17 |
6041 326a 01F4 brne 1b |
6042 326c 8091 0000 lds r24,MaxStickNick |
6043 3270 9091 0000 lds r25,(MaxStickNick)+1 |
6044 3274 8134 cpi r24,65 |
6045 3276 9105 cpc r25,__zero_reg__ |
6046 3278 04F4 brge .L511 |
6047 327a 8091 0000 lds r24,MaxStickRoll |
6048 327e 9091 0000 lds r25,(MaxStickRoll)+1 |
6049 3282 8134 cpi r24,65 |
6050 3284 9105 cpc r25,__zero_reg__ |
6051 3286 04F0 brlt .L510 |
6052 .L511: |
6053 3288 D401 movw r26,r8 |
6054 328a C301 movw r24,r6 |
6055 328c 97FE sbrs r9,7 |
6056 328e 00C0 rjmp .L512 |
6057 3290 0196 adiw r24,1 |
6058 3292 A11D adc r26,__zero_reg__ |
6059 3294 B11D adc r27,__zero_reg__ |
6060 .L512: |
6061 3296 3C01 movw r6,r24 |
6062 3298 4D01 movw r8,r26 |
6063 329a 9594 asr r9 |
6064 329c 8794 ror r8 |
6065 329e 7794 ror r7 |
6066 32a0 6794 ror r6 |
6067 32a2 D601 movw r26,r12 |
6068 32a4 C501 movw r24,r10 |
6069 32a6 D7FE sbrs r13,7 |
6070 32a8 00C0 rjmp .L513 |
6071 32aa 0196 adiw r24,1 |
6072 32ac A11D adc r26,__zero_reg__ |
6073 32ae B11D adc r27,__zero_reg__ |
6074 .L513: |
6075 32b0 5C01 movw r10,r24 |
6076 32b2 6D01 movw r12,r26 |
6077 32b4 D594 asr r13 |
6078 32b6 C794 ror r12 |
6079 32b8 B794 ror r11 |
6080 32ba A794 ror r10 |
6081 .L510: |
6082 32bc 8091 0000 lds r24,FromNaviCtrl_Value+2 |
6083 32c0 282F mov r18,r24 |
6084 32c2 3327 clr r19 |
6085 32c4 27FD sbrc r18,7 |
6086 32c6 3095 com r19 |
6087 32c8 432F mov r20,r19 |
6088 32ca 532F mov r21,r19 |
6089 32cc 2615 cp r18,r6 |
6090 32ce 3705 cpc r19,r7 |
6091 32d0 4805 cpc r20,r8 |
6092 32d2 5905 cpc r21,r9 |
6093 32d4 04F4 brge .L514 |
6094 32d6 3901 movw r6,r18 |
6095 32d8 4A01 movw r8,r20 |
6096 .L514: |
6097 32da 9927 clr r25 |
6098 32dc 87FD sbrc r24,7 |
6099 32de 9095 com r25 |
6100 32e0 9095 com r25 |
6101 32e2 8195 neg r24 |
6102 32e4 9F4F sbci r25,lo8(-1) |
6103 32e6 AA27 clr r26 |
6104 32e8 97FD sbrc r25,7 |
6105 32ea A095 com r26 |
6106 32ec BA2F mov r27,r26 |
6107 32ee 6816 cp r6,r24 |
6108 32f0 7906 cpc r7,r25 |
6109 32f2 8A06 cpc r8,r26 |
6110 32f4 9B06 cpc r9,r27 |
6111 32f6 04F4 brge .L515 |
6112 32f8 3C01 movw r6,r24 |
6113 32fa 4D01 movw r8,r26 |
6114 .L515: |
6115 32fc 2A15 cp r18,r10 |
6116 32fe 3B05 cpc r19,r11 |
6117 3300 4C05 cpc r20,r12 |
6118 3302 5D05 cpc r21,r13 |
6119 3304 04F4 brge .L516 |
6120 3306 5901 movw r10,r18 |
6121 3308 6A01 movw r12,r20 |
6122 .L516: |
6123 330a A816 cp r10,r24 |
6124 330c B906 cpc r11,r25 |
6125 330e CA06 cpc r12,r26 |
6126 3310 DB06 cpc r13,r27 |
6127 3312 04F0 brlt .+2 |
6128 3314 00C0 rjmp .L518 |
6129 3316 5C01 movw r10,r24 |
6130 3318 6D01 movw r12,r26 |
6131 331a 00C0 rjmp .L518 |
6132 .L507: |
6133 331c EA2C mov r14,r10 |
6134 331e FF24 clr r15 |
6135 3320 0027 clr r16 |
6136 3322 1127 clr r17 |
6137 3324 CA01 movw r24,r20 |
6138 3326 B901 movw r22,r18 |
6139 3328 A801 movw r20,r16 |
6140 332a 9701 movw r18,r14 |
6141 332c 0E94 0000 call __divmodsi4 |
6142 3330 3901 movw r6,r18 |
6143 3332 4A01 movw r8,r20 |
6144 3334 C101 movw r24,r2 |
6145 3336 AA27 clr r26 |
6146 3338 97FD sbrc r25,7 |
6147 333a A095 com r26 |
6148 333c BA2F mov r27,r26 |
6149 333e 681A sub r6,r24 |
6150 3340 790A sbc r7,r25 |
6151 3342 8A0A sbc r8,r26 |
6152 3344 9B0A sbc r9,r27 |
6153 3346 6B81 ldd r22,Y+3 |
6154 3348 7C81 ldd r23,Y+4 |
6155 334a 8D81 ldd r24,Y+5 |
6156 334c 9E81 ldd r25,Y+6 |
6157 334e A801 movw r20,r16 |
6158 3350 9701 movw r18,r14 |
6159 3352 0E94 0000 call __divmodsi4 |
6160 3356 5901 movw r10,r18 |
6161 3358 6A01 movw r12,r20 |
6162 335a C201 movw r24,r4 |
6163 335c AA27 clr r26 |
6164 335e 97FD sbrc r25,7 |
6165 3360 A095 com r26 |
6166 3362 BA2F mov r27,r26 |
6167 3364 A81A sub r10,r24 |
6168 3366 B90A sbc r11,r25 |
6169 3368 CA0A sbc r12,r26 |
6170 336a DB0A sbc r13,r27 |
6171 336c D401 movw r26,r8 |
6172 336e C301 movw r24,r6 |
6173 3370 97FE sbrs r9,7 |
6174 3372 00C0 rjmp .L519 |
6175 3374 0F96 adiw r24,15 |
6176 3376 A11D adc r26,__zero_reg__ |
6177 3378 B11D adc r27,__zero_reg__ |
6178 .L519: |
6179 337a 3C01 movw r6,r24 |
6180 337c 4D01 movw r8,r26 |
6181 337e F4E0 ldi r31,4 |
6182 3380 9594 1: asr r9 |
6183 3382 8794 ror r8 |
6184 3384 7794 ror r7 |
6185 3386 6794 ror r6 |
6186 3388 FA95 dec r31 |
6187 338a 01F4 brne 1b |
6188 338c D601 movw r26,r12 |
6189 338e C501 movw r24,r10 |
6190 3390 D7FE sbrs r13,7 |
6191 3392 00C0 rjmp .L520 |
6192 3394 0F96 adiw r24,15 |
6193 3396 A11D adc r26,__zero_reg__ |
6194 3398 B11D adc r27,__zero_reg__ |
6195 .L520: |
6196 339a 5C01 movw r10,r24 |
6197 339c 6D01 movw r12,r26 |
6198 339e E4E0 ldi r30,4 |
6199 33a0 D594 1: asr r13 |
6200 33a2 C794 ror r12 |
6201 33a4 B794 ror r11 |
6202 33a6 A794 ror r10 |
6203 33a8 EA95 dec r30 |
6204 33aa 01F4 brne 1b |
6205 33ac 8091 0000 lds r24,MaxStickNick |
6206 33b0 9091 0000 lds r25,(MaxStickNick)+1 |
6207 33b4 8134 cpi r24,65 |
6208 33b6 9105 cpc r25,__zero_reg__ |
6209 33b8 04F4 brge .L522 |
6210 33ba 8091 0000 lds r24,MaxStickRoll |
6211 33be 9091 0000 lds r25,(MaxStickRoll)+1 |
6212 33c2 8134 cpi r24,65 |
6213 33c4 9105 cpc r25,__zero_reg__ |
6214 33c6 04F0 brlt .L521 |
6215 .L522: |
6216 33c8 C401 movw r24,r8 |
6217 33ca B301 movw r22,r6 |
6218 33cc 23E0 ldi r18,lo8(3) |
6219 33ce 30E0 ldi r19,hi8(3) |
6220 33d0 40E0 ldi r20,hlo8(3) |
6221 33d2 50E0 ldi r21,hhi8(3) |
6222 33d4 0E94 0000 call __divmodsi4 |
6223 33d8 3901 movw r6,r18 |
6224 33da 4A01 movw r8,r20 |
6225 33dc C601 movw r24,r12 |
6226 33de B501 movw r22,r10 |
6227 33e0 23E0 ldi r18,lo8(3) |
6228 33e2 30E0 ldi r19,hi8(3) |
6229 33e4 40E0 ldi r20,hlo8(3) |
6230 33e6 50E0 ldi r21,hhi8(3) |
6231 33e8 0E94 0000 call __divmodsi4 |
6232 33ec 5901 movw r10,r18 |
6233 33ee 6A01 movw r12,r20 |
6234 .L521: |
6235 33f0 8091 0000 lds r24,EE_Parameter+4 |
6236 33f4 E82F mov r30,r24 |
6237 33f6 FF27 clr r31 |
6238 33f8 EE0F add r30,r30 |
6239 33fa FF1F adc r31,r31 |
6240 33fc E050 subi r30,lo8(-(PPM_in)) |
6241 33fe F040 sbci r31,hi8(-(PPM_in)) |
6242 3400 8081 ld r24,Z |
6243 3402 9181 ldd r25,Z+1 |
6244 3404 0190 ld __tmp_reg__,Z+ |
6245 3406 F081 ld r31,Z |
6246 3408 E02D mov r30,__tmp_reg__ |
6247 340a F7FF sbrs r31,7 |
6248 340c 00C0 rjmp .L524 |
6249 340e F095 com r31 |
6250 3410 E195 neg r30 |
6251 3412 FF4F sbci r31,lo8(-1) |
6252 .L524: |
6253 3414 7A97 sbiw r30,26 |
6254 3416 04F0 brlt .L523 |
6255 3418 C401 movw r24,r8 |
6256 341a B301 movw r22,r6 |
6257 341c 23E0 ldi r18,lo8(3) |
6258 341e 30E0 ldi r19,hi8(3) |
6259 3420 40E0 ldi r20,hlo8(3) |
6260 3422 50E0 ldi r21,hhi8(3) |
6261 3424 0E94 0000 call __divmodsi4 |
6262 3428 3901 movw r6,r18 |
6263 342a 4A01 movw r8,r20 |
6264 342c C601 movw r24,r12 |
6265 342e B501 movw r22,r10 |
6266 3430 23E0 ldi r18,lo8(3) |
6267 3432 30E0 ldi r19,hi8(3) |
6268 3434 40E0 ldi r20,hlo8(3) |
6269 3436 50E0 ldi r21,hhi8(3) |
6270 3438 0E94 0000 call __divmodsi4 |
6271 343c 5901 movw r10,r18 |
6272 343e 6A01 movw r12,r20 |
6273 .L523: |
6274 3440 89E1 ldi r24,lo8(25) |
6275 3442 8093 0000 sts KompassFusion,r24 |
6276 3446 21E2 ldi r18,lo8(33) |
6277 3448 6216 cp r6,r18 |
6278 344a 7104 cpc r7,__zero_reg__ |
6279 344c 8104 cpc r8,__zero_reg__ |
6280 344e 9104 cpc r9,__zero_reg__ |
6281 3450 04F0 brlt .L525 |
6282 3452 70E2 ldi r23,lo8(32) |
6283 3454 672E mov r6,r23 |
6284 3456 712C mov r7,__zero_reg__ |
6285 3458 812C mov r8,__zero_reg__ |
6286 345a 912C mov r9,__zero_reg__ |
6287 .L525: |
6288 345c 30EE ldi r19,lo8(-32) |
6289 345e 6316 cp r6,r19 |
6290 3460 3FEF ldi r19,hi8(-32) |
6291 3462 7306 cpc r7,r19 |
6292 3464 3FEF ldi r19,hlo8(-32) |
6293 3466 8306 cpc r8,r19 |
6294 3468 3FEF ldi r19,hhi8(-32) |
6295 346a 9306 cpc r9,r19 |
6296 346c 04F4 brge .L526 |
6297 346e 60EE ldi r22,lo8(-32) |
6298 3470 662E mov r6,r22 |
6299 3472 6FEF ldi r22,hi8(-32) |
6300 3474 762E mov r7,r22 |
6301 3476 6FEF ldi r22,hlo8(-32) |
6302 3478 862E mov r8,r22 |
6303 347a 6FEF ldi r22,hhi8(-32) |
6304 347c 962E mov r9,r22 |
6305 .L526: |
6306 347e 41E2 ldi r20,lo8(33) |
6307 3480 A416 cp r10,r20 |
6308 3482 B104 cpc r11,__zero_reg__ |
6309 3484 C104 cpc r12,__zero_reg__ |
6310 3486 D104 cpc r13,__zero_reg__ |
6311 3488 04F0 brlt .L527 |
6312 348a 50E2 ldi r21,lo8(32) |
6313 348c A52E mov r10,r21 |
6314 348e B12C mov r11,__zero_reg__ |
6315 3490 C12C mov r12,__zero_reg__ |
6316 3492 D12C mov r13,__zero_reg__ |
6317 .L527: |
6318 3494 50EE ldi r21,lo8(-32) |
6319 3496 A516 cp r10,r21 |
6320 3498 5FEF ldi r21,hi8(-32) |
6321 349a B506 cpc r11,r21 |
6322 349c 5FEF ldi r21,hlo8(-32) |
6323 349e C506 cpc r12,r21 |
6324 34a0 5FEF ldi r21,hhi8(-32) |
6325 34a2 D506 cpc r13,r21 |
6326 34a4 04F4 brge .L518 |
6327 34a6 40EE ldi r20,lo8(-32) |
6328 34a8 A42E mov r10,r20 |
6329 34aa 4FEF ldi r20,hi8(-32) |
6330 34ac B42E mov r11,r20 |
6331 34ae 4FEF ldi r20,hlo8(-32) |
6332 34b0 C42E mov r12,r20 |
6333 34b2 4FEF ldi r20,hhi8(-32) |
6334 34b4 D42E mov r13,r20 |
6335 .L518: |
6336 34b6 8091 0000 lds r24,Mess_IntegralNick |
6337 34ba 9091 0000 lds r25,(Mess_IntegralNick)+1 |
6338 34be A091 0000 lds r26,(Mess_IntegralNick)+2 |
6339 34c2 B091 0000 lds r27,(Mess_IntegralNick)+3 |
6340 34c6 8619 sub r24,r6 |
6341 34c8 9709 sbc r25,r7 |
6342 34ca A809 sbc r26,r8 |
6343 34cc B909 sbc r27,r9 |
6344 34ce 8093 0000 sts Mess_IntegralNick,r24 |
6345 34d2 9093 0000 sts (Mess_IntegralNick)+1,r25 |
6346 34d6 A093 0000 sts (Mess_IntegralNick)+2,r26 |
6347 34da B093 0000 sts (Mess_IntegralNick)+3,r27 |
6348 34de 8091 0000 lds r24,Mess_IntegralRoll |
6349 34e2 9091 0000 lds r25,(Mess_IntegralRoll)+1 |
6350 34e6 A091 0000 lds r26,(Mess_IntegralRoll)+2 |
6351 34ea B091 0000 lds r27,(Mess_IntegralRoll)+3 |
6352 34ee 8A19 sub r24,r10 |
6353 34f0 9B09 sbc r25,r11 |
6354 34f2 AC09 sbc r26,r12 |
6355 34f4 BD09 sbc r27,r13 |
6356 34f6 8093 0000 sts Mess_IntegralRoll,r24 |
6357 34fa 9093 0000 sts (Mess_IntegralRoll)+1,r25 |
6358 34fe A093 0000 sts (Mess_IntegralRoll)+2,r26 |
6359 3502 B093 0000 sts (Mess_IntegralRoll)+3,r27 |
6360 .L505: |
6361 3506 8091 0000 lds r24,ZaehlMessungen |
6362 350a 9091 0000 lds r25,(ZaehlMessungen)+1 |
6363 350e 8F3F cpi r24,255 |
6364 3510 9105 cpc r25,__zero_reg__ |
6365 3512 01F0 breq .+2 |
6366 3514 00F4 brsh .+2 |
6367 3516 00C0 rjmp .L529 |
6368 3518 6F85 ldd r22,Y+15 |
6369 351a 6623 tst r22 |
6370 351c 01F0 breq .+2 |
6371 351e 00C0 rjmp .L530 |
6372 3520 8091 0000 lds r24,Looping_Roll |
6373 3524 8823 tst r24 |
6374 3526 01F0 breq .+2 |
6375 3528 00C0 rjmp .L530 |
6376 352a 8091 0000 lds r24,TrichterFlug |
6377 352e 8823 tst r24 |
6378 3530 01F0 breq .+2 |
6379 3532 00C0 rjmp .L530 |
6380 3534 7091 0000 lds r23,EE_Parameter+68 |
6381 3538 788B std Y+16,r23 |
6382 353a 7723 tst r23 |
6383 353c 01F4 brne .+2 |
6384 353e 00C0 rjmp .L530 |
6385 3540 8091 0000 lds r24,MittelIntegralNick |
6386 3544 9091 0000 lds r25,(MittelIntegralNick)+1 |
6387 3548 A091 0000 lds r26,(MittelIntegralNick)+2 |
6388 354c B091 0000 lds r27,(MittelIntegralNick)+3 |
6389 3550 B7FF sbrs r27,7 |
6390 3552 00C0 rjmp .L531 |
6391 3554 8150 subi r24,lo8(-(255)) |
6392 3556 9F4F sbci r25,hi8(-(255)) |
6393 3558 AF4F sbci r26,hlo8(-(255)) |
6394 355a BF4F sbci r27,hhi8(-(255)) |
6395 .L531: |
6396 355c E92E mov r14,r25 |
6397 355e FA2E mov r15,r26 |
6398 3560 0B2F mov r16,r27 |
6399 3562 1127 clr r17 |
6400 3564 07FD sbrc r16,7 |
6401 3566 1A95 dec r17 |
6402 3568 E092 0000 sts MittelIntegralNick,r14 |
6403 356c F092 0000 sts (MittelIntegralNick)+1,r15 |
6404 3570 0093 0000 sts (MittelIntegralNick)+2,r16 |
6405 3574 1093 0000 sts (MittelIntegralNick)+3,r17 |
6406 3578 8091 0000 lds r24,MittelIntegralRoll |
6407 357c 9091 0000 lds r25,(MittelIntegralRoll)+1 |
6408 3580 A091 0000 lds r26,(MittelIntegralRoll)+2 |
6409 3584 B091 0000 lds r27,(MittelIntegralRoll)+3 |
6410 3588 B7FF sbrs r27,7 |
6411 358a 00C0 rjmp .L532 |
6412 358c 8150 subi r24,lo8(-(255)) |
6413 358e 9F4F sbci r25,hi8(-(255)) |
6414 3590 AF4F sbci r26,hlo8(-(255)) |
6415 3592 BF4F sbci r27,hhi8(-(255)) |
6416 .L532: |
6417 3594 892F mov r24,r25 |
6418 3596 9A2F mov r25,r26 |
6419 3598 AB2F mov r26,r27 |
6420 359a BB27 clr r27 |
6421 359c A7FD sbrc r26,7 |
6422 359e BA95 dec r27 |
6423 35a0 898B std Y+17,r24 |
6424 35a2 9A8B std Y+18,r25 |
6425 35a4 AB8B std Y+19,r26 |
6426 35a6 BC8B std Y+20,r27 |
6427 35a8 8093 0000 sts MittelIntegralRoll,r24 |
6428 35ac 9093 0000 sts (MittelIntegralRoll)+1,r25 |
6429 35b0 A093 0000 sts (MittelIntegralRoll)+2,r26 |
6430 35b4 B093 0000 sts (MittelIntegralRoll)+3,r27 |
6431 35b8 8091 0000 lds r24,EE_Parameter+28 |
6432 35bc A82E mov r10,r24 |
6433 35be BB24 clr r11 |
6434 35c0 CC24 clr r12 |
6435 35c2 DD24 clr r13 |
6436 35c4 2091 0000 lds r18,IntegralAccNick |
6437 35c8 3091 0000 lds r19,(IntegralAccNick)+1 |
6438 35cc 4091 0000 lds r20,(IntegralAccNick)+2 |
6439 35d0 5091 0000 lds r21,(IntegralAccNick)+3 |
6440 35d4 C601 movw r24,r12 |
6441 35d6 B501 movw r22,r10 |
6442 35d8 0E94 0000 call __mulsi3 |
6443 35dc 97FF sbrs r25,7 |
6444 35de 00C0 rjmp .L533 |
6445 35e0 6150 subi r22,lo8(-(255)) |
6446 35e2 7F4F sbci r23,hi8(-(255)) |
6447 35e4 8F4F sbci r24,hlo8(-(255)) |
6448 35e6 9F4F sbci r25,hhi8(-(255)) |
6449 .L533: |
6450 35e8 672E mov r6,r23 |
6451 35ea 782E mov r7,r24 |
6452 35ec 892E mov r8,r25 |
6453 35ee 9924 clr r9 |
6454 35f0 87FC sbrc r8,7 |
6455 35f2 9A94 dec r9 |
6456 35f4 6092 0000 sts IntegralAccNick,r6 |
6457 35f8 7092 0000 sts (IntegralAccNick)+1,r7 |
6458 35fc 8092 0000 sts (IntegralAccNick)+2,r8 |
6459 3600 9092 0000 sts (IntegralAccNick)+3,r9 |
6460 3604 2091 0000 lds r18,IntegralAccRoll |
6461 3608 3091 0000 lds r19,(IntegralAccRoll)+1 |
6462 360c 4091 0000 lds r20,(IntegralAccRoll)+2 |
6463 3610 5091 0000 lds r21,(IntegralAccRoll)+3 |
6464 3614 C601 movw r24,r12 |
6465 3616 B501 movw r22,r10 |
6466 3618 0E94 0000 call __mulsi3 |
6467 361c 97FF sbrs r25,7 |
6468 361e 00C0 rjmp .L534 |
6469 3620 6150 subi r22,lo8(-(255)) |
6470 3622 7F4F sbci r23,hi8(-(255)) |
6471 3624 8F4F sbci r24,hlo8(-(255)) |
6472 3626 9F4F sbci r25,hhi8(-(255)) |
6473 .L534: |
6474 3628 272E mov r2,r23 |
6475 362a 382E mov r3,r24 |
6476 362c 492E mov r4,r25 |
6477 362e 5524 clr r5 |
6478 3630 47FC sbrc r4,7 |
6479 3632 5A94 dec r5 |
6480 3634 2092 0000 sts IntegralAccRoll,r2 |
6481 3638 3092 0000 sts (IntegralAccRoll)+1,r3 |
6482 363c 4092 0000 sts (IntegralAccRoll)+2,r4 |
6483 3640 5092 0000 sts (IntegralAccRoll)+3,r5 |
6484 3644 8091 0000 lds r24,IntegralAccZ |
6485 3648 9091 0000 lds r25,(IntegralAccZ)+1 |
6486 364c A091 0000 lds r26,(IntegralAccZ)+2 |
6487 3650 B091 0000 lds r27,(IntegralAccZ)+3 |
6488 3654 B7FF sbrs r27,7 |
6489 3656 00C0 rjmp .L535 |
6490 3658 8150 subi r24,lo8(-(255)) |
6491 365a 9F4F sbci r25,hi8(-(255)) |
6492 365c AF4F sbci r26,hlo8(-(255)) |
6493 365e BF4F sbci r27,hhi8(-(255)) |
6494 .L535: |
6495 3660 892F mov r24,r25 |
6496 3662 9A2F mov r25,r26 |
6497 3664 AB2F mov r26,r27 |
6498 3666 BB27 clr r27 |
6499 3668 A7FD sbrc r26,7 |
6500 366a BA95 dec r27 |
6501 366c 8093 0000 sts IntegralAccZ,r24 |
6502 3670 9093 0000 sts (IntegralAccZ)+1,r25 |
6503 3674 A093 0000 sts (IntegralAccZ)+2,r26 |
6504 3678 B093 0000 sts (IntegralAccZ)+3,r27 |
6505 367c D801 movw r26,r16 |
6506 367e C701 movw r24,r14 |
6507 3680 8619 sub r24,r6 |
6508 3682 9709 sbc r25,r7 |
6509 3684 A809 sbc r26,r8 |
6510 3686 B909 sbc r27,r9 |
6511 3688 8093 0000 sts IntegralFehlerNick.3,r24 |
6512 368c 9093 0000 sts (IntegralFehlerNick.3)+1,r25 |
6513 3690 A093 0000 sts (IntegralFehlerNick.3)+2,r26 |
6514 3694 B093 0000 sts (IntegralFehlerNick.3)+3,r27 |
6515 3698 2091 0000 lds r18,EE_Parameter+67 |
6516 369c E22E mov r14,r18 |
6517 369e FF24 clr r15 |
6518 36a0 0027 clr r16 |
6519 36a2 1127 clr r17 |
6520 36a4 BC01 movw r22,r24 |
6521 36a6 CD01 movw r24,r26 |
6522 36a8 A801 movw r20,r16 |
6523 36aa 9701 movw r18,r14 |
6524 36ac 0E94 0000 call __divmodsi4 |
6525 36b0 5901 movw r10,r18 |
6526 36b2 6A01 movw r12,r20 |
6527 36b4 2093 0000 sts ausgleichNick.10,r18 |
6528 36b8 3093 0000 sts (ausgleichNick.10)+1,r19 |
6529 36bc 4093 0000 sts (ausgleichNick.10)+2,r20 |
6530 36c0 5093 0000 sts (ausgleichNick.10)+3,r21 |
6531 36c4 8989 ldd r24,Y+17 |
6532 36c6 9A89 ldd r25,Y+18 |
6533 36c8 AB89 ldd r26,Y+19 |
6534 36ca BC89 ldd r27,Y+20 |
6535 36cc 8219 sub r24,r2 |
6536 36ce 9309 sbc r25,r3 |
6537 36d0 A409 sbc r26,r4 |
6538 36d2 B509 sbc r27,r5 |
6539 36d4 8093 0000 sts IntegralFehlerRoll.4,r24 |
6540 36d8 9093 0000 sts (IntegralFehlerRoll.4)+1,r25 |
6541 36dc A093 0000 sts (IntegralFehlerRoll.4)+2,r26 |
6542 36e0 B093 0000 sts (IntegralFehlerRoll.4)+3,r27 |
6543 36e4 BC01 movw r22,r24 |
6544 36e6 CD01 movw r24,r26 |
6545 36e8 A801 movw r20,r16 |
6546 36ea 9701 movw r18,r14 |
6547 36ec 0E94 0000 call __divmodsi4 |
6548 36f0 2093 0000 sts ausgleichRoll.11,r18 |
6549 36f4 3093 0000 sts (ausgleichRoll.11)+1,r19 |
6550 36f8 4093 0000 sts (ausgleichRoll.11)+2,r20 |
6551 36fc 5093 0000 sts (ausgleichRoll.11)+3,r21 |
6552 3700 D601 movw r26,r12 |
6553 3702 C501 movw r24,r10 |
6554 3704 D7FE sbrs r13,7 |
6555 3706 00C0 rjmp .L536 |
6556 3708 8150 subi r24,lo8(-(255)) |
6557 370a 9F4F sbci r25,hi8(-(255)) |
6558 370c AF4F sbci r26,hlo8(-(255)) |
6559 370e BF4F sbci r27,hhi8(-(255)) |
6560 .L536: |
6561 3710 892F mov r24,r25 |
6562 3712 9A2F mov r25,r26 |
6563 3714 AB2F mov r26,r27 |
6564 3716 BB27 clr r27 |
6565 3718 A7FD sbrc r26,7 |
6566 371a BA95 dec r27 |
6567 371c 9093 0000 sts (LageKorrekturNick)+1,r25 |
6568 3720 8093 0000 sts LageKorrekturNick,r24 |
6569 3724 57FF sbrs r21,7 |
6570 3726 00C0 rjmp .L537 |
6571 3728 2150 subi r18,lo8(-(255)) |
6572 372a 3F4F sbci r19,hi8(-(255)) |
6573 372c 4F4F sbci r20,hlo8(-(255)) |
6574 372e 5F4F sbci r21,hhi8(-(255)) |
6575 .L537: |
6576 3730 BB27 clr r27 |
6577 3732 57FD sbrc r21,7 |
6578 3734 BA95 dec r27 |
6579 3736 A52F mov r26,r21 |
6580 3738 942F mov r25,r20 |
6581 373a 832F mov r24,r19 |
6582 373c 9093 0000 sts (LageKorrekturRoll)+1,r25 |
6583 3740 8093 0000 sts LageKorrekturRoll,r24 |
6584 3744 8091 0000 lds r24,MaxStickNick |
6585 3748 9091 0000 lds r25,(MaxStickNick)+1 |
6586 374c 8134 cpi r24,65 |
6587 374e 9105 cpc r25,__zero_reg__ |
6588 3750 04F4 brge .L539 |
6589 3752 8091 0000 lds r24,MaxStickRoll |
6590 3756 9091 0000 lds r25,(MaxStickRoll)+1 |
6591 375a 8134 cpi r24,65 |
6592 375c 9105 cpc r25,__zero_reg__ |
6593 375e 04F4 brge .L539 |
6594 3760 8091 0000 lds r24,EE_Parameter+4 |
6595 3764 E82F mov r30,r24 |
6596 3766 FF27 clr r31 |
6597 3768 EE0F add r30,r30 |
6598 376a FF1F adc r31,r31 |
6599 376c E050 subi r30,lo8(-(PPM_in)) |
6600 376e F040 sbci r31,hi8(-(PPM_in)) |
6601 3770 8081 ld r24,Z |
6602 3772 9181 ldd r25,Z+1 |
6603 3774 0190 ld __tmp_reg__,Z+ |
6604 3776 F081 ld r31,Z |
6605 3778 E02D mov r30,__tmp_reg__ |
6606 377a F7FF sbrs r31,7 |
6607 377c 00C0 rjmp .L540 |
6608 377e F095 com r31 |
6609 3780 E195 neg r30 |
6610 3782 FF4F sbci r31,lo8(-1) |
6611 .L540: |
6612 3784 7A97 sbiw r30,26 |
6613 3786 04F0 brlt .L538 |
6614 .L539: |
6615 3788 8091 0000 lds r24,FromNaviCtrl_Value |
6616 378c 8F3F cpi r24,lo8(-1) |
6617 378e 01F4 brne .L538 |
6618 3790 8091 0000 lds r24,LageKorrekturNick |
6619 3794 9091 0000 lds r25,(LageKorrekturNick)+1 |
6620 3798 97FD sbrc r25,7 |
6621 379a 0196 adiw r24,1 |
6622 .L541: |
6623 379c 9595 asr r25 |
6624 379e 8795 ror r24 |
6625 37a0 9093 0000 sts (LageKorrekturNick)+1,r25 |
6626 37a4 8093 0000 sts LageKorrekturNick,r24 |
6627 37a8 8091 0000 lds r24,LageKorrekturRoll |
6628 37ac 9091 0000 lds r25,(LageKorrekturRoll)+1 |
6629 37b0 97FD sbrc r25,7 |
6630 37b2 0196 adiw r24,1 |
6631 .L542: |
6632 37b4 9595 asr r25 |
6633 37b6 8795 ror r24 |
6634 37b8 9093 0000 sts (LageKorrekturRoll)+1,r25 |
6635 37bc 8093 0000 sts LageKorrekturRoll,r24 |
6636 .L538: |
6637 37c0 8091 0000 lds r24,MittelIntegralNick2 |
6638 37c4 9091 0000 lds r25,(MittelIntegralNick2)+1 |
6639 37c8 A091 0000 lds r26,(MittelIntegralNick2)+2 |
6640 37cc B091 0000 lds r27,(MittelIntegralNick2)+3 |
6641 37d0 B7FF sbrs r27,7 |
6642 37d2 00C0 rjmp .L543 |
6643 37d4 8150 subi r24,lo8(-(255)) |
6644 37d6 9F4F sbci r25,hi8(-(255)) |
6645 37d8 AF4F sbci r26,hlo8(-(255)) |
6646 37da BF4F sbci r27,hhi8(-(255)) |
6647 .L543: |
6648 37dc 892F mov r24,r25 |
6649 37de 9A2F mov r25,r26 |
6650 37e0 AB2F mov r26,r27 |
6651 37e2 BB27 clr r27 |
6652 37e4 A7FD sbrc r26,7 |
6653 37e6 BA95 dec r27 |
6654 37e8 8093 0000 sts MittelIntegralNick2,r24 |
6655 37ec 9093 0000 sts (MittelIntegralNick2)+1,r25 |
6656 37f0 A093 0000 sts (MittelIntegralNick2)+2,r26 |
6657 37f4 B093 0000 sts (MittelIntegralNick2)+3,r27 |
6658 37f8 8091 0000 lds r24,MittelIntegralRoll2 |
6659 37fc 9091 0000 lds r25,(MittelIntegralRoll2)+1 |
6660 3800 A091 0000 lds r26,(MittelIntegralRoll2)+2 |
6661 3804 B091 0000 lds r27,(MittelIntegralRoll2)+3 |
6662 3808 B7FF sbrs r27,7 |
6663 380a 00C0 rjmp .L544 |
6664 380c 8150 subi r24,lo8(-(255)) |
6665 380e 9F4F sbci r25,hi8(-(255)) |
6666 3810 AF4F sbci r26,hlo8(-(255)) |
6667 3812 BF4F sbci r27,hhi8(-(255)) |
6668 .L544: |
6669 3814 892F mov r24,r25 |
6670 3816 9A2F mov r25,r26 |
6671 3818 AB2F mov r26,r27 |
6672 381a BB27 clr r27 |
6673 381c A7FD sbrc r26,7 |
6674 381e BA95 dec r27 |
6675 3820 8093 0000 sts MittelIntegralRoll2,r24 |
6676 3824 9093 0000 sts (MittelIntegralRoll2)+1,r25 |
6677 3828 A093 0000 sts (MittelIntegralRoll2)+2,r26 |
6678 382c B093 0000 sts (MittelIntegralRoll2)+3,r27 |
6679 3830 8091 0000 lds r24,IntegralNick |
6680 3834 9091 0000 lds r25,(IntegralNick)+1 |
6681 3838 A091 0000 lds r26,(IntegralNick)+2 |
6682 383c B091 0000 lds r27,(IntegralNick)+3 |
6683 3840 2F81 ldd r18,Y+7 |
6684 3842 3885 ldd r19,Y+8 |
6685 3844 4985 ldd r20,Y+9 |
6686 3846 5A85 ldd r21,Y+10 |
6687 3848 281B sub r18,r24 |
6688 384a 390B sbc r19,r25 |
6689 384c 4A0B sbc r20,r26 |
6690 384e 5B0B sbc r21,r27 |
6691 3850 2093 0000 sts tmp_long.1,r18 |
6692 3854 3093 0000 sts (tmp_long.1)+1,r19 |
6693 3858 4093 0000 sts (tmp_long.1)+2,r20 |
6694 385c 5093 0000 sts (tmp_long.1)+3,r21 |
6695 3860 8091 0000 lds r24,IntegralRoll |
6696 3864 9091 0000 lds r25,(IntegralRoll)+1 |
6697 3868 A091 0000 lds r26,(IntegralRoll)+2 |
6698 386c B091 0000 lds r27,(IntegralRoll)+3 |
6699 3870 EB84 ldd r14,Y+11 |
6700 3872 FC84 ldd r15,Y+12 |
6701 3874 0D85 ldd r16,Y+13 |
6702 3876 1E85 ldd r17,Y+14 |
6703 3878 E81A sub r14,r24 |
6704 387a F90A sbc r15,r25 |
6705 387c 0A0B sbc r16,r26 |
6706 387e 1B0B sbc r17,r27 |
6707 3880 E092 0000 sts tmp_long2.2,r14 |
6708 3884 F092 0000 sts (tmp_long2.2)+1,r15 |
6709 3888 0093 0000 sts (tmp_long2.2)+2,r16 |
6710 388c 1093 0000 sts (tmp_long2.2)+3,r17 |
6711 3890 2093 0000 sts IntegralFehlerNick.3,r18 |
6712 3894 3093 0000 sts (IntegralFehlerNick.3)+1,r19 |
6713 3898 4093 0000 sts (IntegralFehlerNick.3)+2,r20 |
6714 389c 5093 0000 sts (IntegralFehlerNick.3)+3,r21 |
6715 38a0 E092 0000 sts IntegralFehlerRoll.4,r14 |
6716 38a4 F092 0000 sts (IntegralFehlerRoll.4)+1,r15 |
6717 38a8 0093 0000 sts (IntegralFehlerRoll.4)+2,r16 |
6718 38ac 1093 0000 sts (IntegralFehlerRoll.4)+3,r17 |
6719 38b0 8091 0000 lds r24,Mess_IntegralNick2 |
6720 38b4 9091 0000 lds r25,(Mess_IntegralNick2)+1 |
6721 38b8 A091 0000 lds r26,(Mess_IntegralNick2)+2 |
6722 38bc B091 0000 lds r27,(Mess_IntegralNick2)+3 |
6723 38c0 821B sub r24,r18 |
6724 38c2 930B sbc r25,r19 |
6725 38c4 A40B sbc r26,r20 |
6726 38c6 B50B sbc r27,r21 |
6727 38c8 8093 0000 sts Mess_IntegralNick2,r24 |
6728 38cc 9093 0000 sts (Mess_IntegralNick2)+1,r25 |
6729 38d0 A093 0000 sts (Mess_IntegralNick2)+2,r26 |
6730 38d4 B093 0000 sts (Mess_IntegralNick2)+3,r27 |
6731 38d8 8091 0000 lds r24,Mess_IntegralRoll2 |
6732 38dc 9091 0000 lds r25,(Mess_IntegralRoll2)+1 |
6733 38e0 A091 0000 lds r26,(Mess_IntegralRoll2)+2 |
6734 38e4 B091 0000 lds r27,(Mess_IntegralRoll2)+3 |
6735 38e8 8E19 sub r24,r14 |
6736 38ea 9F09 sbc r25,r15 |
6737 38ec A00B sbc r26,r16 |
6738 38ee B10B sbc r27,r17 |
6739 38f0 8093 0000 sts Mess_IntegralRoll2,r24 |
6740 38f4 9093 0000 sts (Mess_IntegralRoll2)+1,r25 |
6741 38f8 A093 0000 sts (Mess_IntegralRoll2)+2,r26 |
6742 38fc B093 0000 sts (Mess_IntegralRoll2)+3,r27 |
6743 3900 8889 ldd r24,Y+16 |
6744 3902 8823 tst r24 |
6745 3904 01F0 breq .L545 |
6746 3906 2091 0000 lds r18,GierGyroFehler |
6747 390a 3091 0000 lds r19,(GierGyroFehler)+1 |
6748 390e 2138 cpi r18,129 |
6749 3910 3105 cpc r19,__zero_reg__ |
6750 3912 04F0 brlt .L546 |
6751 3914 8091 0000 lds r24,AdNeutralGier |
6752 3918 9091 0000 lds r25,(AdNeutralGier)+1 |
6753 391c 0196 adiw r24,1 |
6754 391e 9093 0000 sts (AdNeutralGier)+1,r25 |
6755 3922 8093 0000 sts AdNeutralGier,r24 |
6756 .L546: |
6757 3926 2058 subi r18,lo8(-128) |
6758 3928 3F4F sbci r19,hi8(-128) |
6759 392a 04F4 brge .L545 |
6760 392c 8091 0000 lds r24,AdNeutralGier |
6761 3930 9091 0000 lds r25,(AdNeutralGier)+1 |
6762 3934 0197 sbiw r24,1 |
6763 3936 9093 0000 sts (AdNeutralGier)+1,r25 |
6764 393a 8093 0000 sts AdNeutralGier,r24 |
6765 .L545: |
6766 393e 1092 0000 sts (GierGyroFehler)+1,__zero_reg__ |
6767 3942 1092 0000 sts GierGyroFehler,__zero_reg__ |
6768 3946 81E0 ldi r24,lo8(1) |
6769 3948 90E0 ldi r25,hi8(1) |
6770 394a 9093 0000 sts (cnt.14)+1,r25 |
6771 394e 8093 0000 sts cnt.14,r24 |
6772 3952 E090 0000 lds r14,IntegralFehlerNick.3 |
6773 3956 F090 0000 lds r15,(IntegralFehlerNick.3)+1 |
6774 395a 0091 0000 lds r16,(IntegralFehlerNick.3)+2 |
6775 395e 1091 0000 lds r17,(IntegralFehlerNick.3)+3 |
6776 3962 D801 movw r26,r16 |
6777 3964 C701 movw r24,r14 |
6778 3966 17FF sbrs r17,7 |
6779 3968 00C0 rjmp .L549 |
6780 396a 8827 clr r24 |
6781 396c 9927 clr r25 |
6782 396e DC01 movw r26,r24 |
6783 3970 8E19 sub r24,r14 |
6784 3972 9F09 sbc r25,r15 |
6785 3974 A00B sbc r26,r16 |
6786 3976 B10B sbc r27,r17 |
6787 .L549: |
6788 3978 8150 subi r24,lo8(513) |
6789 397a 9240 sbci r25,hi8(513) |
6790 397c A040 sbci r26,hlo8(513) |
6791 397e B040 sbci r27,hhi8(513) |
6792 3980 04F0 brlt .L548 |
6793 3982 84E0 ldi r24,lo8(4) |
6794 3984 90E0 ldi r25,hi8(4) |
6795 3986 9093 0000 sts (cnt.14)+1,r25 |
6796 398a 8093 0000 sts cnt.14,r24 |
6797 .L548: |
6798 398e 8091 0000 lds r24,MittelIntegralNick_Alt.19 |
6799 3992 9091 0000 lds r25,(MittelIntegralNick_Alt.19)+1 |
6800 3996 A091 0000 lds r26,(MittelIntegralNick_Alt.19)+2 |
6801 399a B091 0000 lds r27,(MittelIntegralNick_Alt.19)+3 |
6802 399e 2091 0000 lds r18,MittelIntegralNick |
6803 39a2 3091 0000 lds r19,(MittelIntegralNick)+1 |
6804 39a6 4091 0000 lds r20,(MittelIntegralNick)+2 |
6805 39aa 5091 0000 lds r21,(MittelIntegralNick)+3 |
6806 39ae 821B sub r24,r18 |
6807 39b0 930B sbc r25,r19 |
6808 39b2 A40B sbc r26,r20 |
6809 39b4 B50B sbc r27,r21 |
6810 39b6 815E subi r24,lo8(-(19999)) |
6811 39b8 914B sbci r25,hi8(-(19999)) |
6812 39ba AF4F sbci r26,hlo8(-(19999)) |
6813 39bc BF4F sbci r27,hhi8(-(19999)) |
6814 39be 8F53 subi r24,lo8(39999) |
6815 39c0 9C49 sbci r25,hi8(39999) |
6816 39c2 A040 sbci r26,hlo8(39999) |
6817 39c4 B040 sbci r27,hhi8(39999) |
6818 39c6 00F0 brlo .L551 |
6819 39c8 8091 0000 lds r24,FromNaviCtrl_Value+1 |
6820 39cc 8931 cpi r24,lo8(25) |
6821 39ce 04F4 brge .+2 |
6822 39d0 00C0 rjmp .L550 |
6823 .L551: |
6824 39d2 21E0 ldi r18,lo8(4097) |
6825 39d4 E216 cp r14,r18 |
6826 39d6 20E1 ldi r18,hi8(4097) |
6827 39d8 F206 cpc r15,r18 |
6828 39da 20E0 ldi r18,hlo8(4097) |
6829 39dc 0207 cpc r16,r18 |
6830 39de 20E0 ldi r18,hhi8(4097) |
6831 39e0 1207 cpc r17,r18 |
6832 39e2 04F4 brge .+2 |
6833 39e4 00C0 rjmp .L552 |
6834 39e6 8091 0000 lds r24,last_n_p.15 |
6835 39ea 8823 tst r24 |
6836 39ec 01F4 brne .+2 |
6837 39ee 00C0 rjmp .L553 |
6838 39f0 D801 movw r26,r16 |
6839 39f2 C701 movw r24,r14 |
6840 39f4 17FF sbrs r17,7 |
6841 39f6 00C0 rjmp .L554 |
6842 39f8 8827 clr r24 |
6843 39fa 9927 clr r25 |
6844 39fc DC01 movw r26,r24 |
6845 39fe 8E19 sub r24,r14 |
6846 3a00 9F09 sbc r25,r15 |
6847 3a02 A00B sbc r26,r16 |
6848 3a04 B10B sbc r27,r17 |
6849 .L554: |
6850 3a06 9C01 movw r18,r24 |
6851 3a08 AD01 movw r20,r26 |
6852 3a0a B7FF sbrs r27,7 |
6853 3a0c 00C0 rjmp .L555 |
6854 3a0e 2150 subi r18,lo8(-(511)) |
6855 3a10 3E4F sbci r19,hi8(-(511)) |
6856 3a12 4F4F sbci r20,hlo8(-(511)) |
6857 3a14 5F4F sbci r21,hhi8(-(511)) |
6858 .L555: |
6859 3a16 F9E0 ldi r31,9 |
6860 3a18 5595 1: asr r21 |
6861 3a1a 4795 ror r20 |
6862 3a1c 3795 ror r19 |
6863 3a1e 2795 ror r18 |
6864 3a20 FA95 dec r31 |
6865 3a22 01F4 brne 1b |
6866 3a24 8091 0000 lds r24,cnt.14 |
6867 3a28 9091 0000 lds r25,(cnt.14)+1 |
6868 3a2c 820F add r24,r18 |
6869 3a2e 931F adc r25,r19 |
6870 3a30 9093 0000 sts (cnt.14)+1,r25 |
6871 3a34 8093 0000 sts cnt.14,r24 |
6872 3a38 D801 movw r26,r16 |
6873 3a3a C701 movw r24,r14 |
6874 3a3c 17FF sbrs r17,7 |
6875 3a3e 00C0 rjmp .L556 |
6876 3a40 0796 adiw r24,7 |
6877 3a42 A11D adc r26,__zero_reg__ |
6878 3a44 B11D adc r27,__zero_reg__ |
6879 .L556: |
6880 3a46 E3E0 ldi r30,3 |
6881 3a48 B595 1: asr r27 |
6882 3a4a A795 ror r26 |
6883 3a4c 9795 ror r25 |
6884 3a4e 8795 ror r24 |
6885 3a50 EA95 dec r30 |
6886 3a52 01F4 brne 1b |
6887 3a54 8093 0000 sts ausgleichNick.10,r24 |
6888 3a58 9093 0000 sts (ausgleichNick.10)+1,r25 |
6889 3a5c A093 0000 sts (ausgleichNick.10)+2,r26 |
6890 3a60 B093 0000 sts (ausgleichNick.10)+3,r27 |
6891 3a64 8958 subi r24,lo8(5001) |
6892 3a66 9341 sbci r25,hi8(5001) |
6893 3a68 A040 sbci r26,hlo8(5001) |
6894 3a6a B040 sbci r27,hhi8(5001) |
6895 3a6c 04F0 brlt .L557 |
6896 3a6e 88E8 ldi r24,lo8(5000) |
6897 3a70 93E1 ldi r25,hi8(5000) |
6898 3a72 A0E0 ldi r26,hlo8(5000) |
6899 3a74 B0E0 ldi r27,hhi8(5000) |
6900 3a76 8093 0000 sts ausgleichNick.10,r24 |
6901 3a7a 9093 0000 sts (ausgleichNick.10)+1,r25 |
6902 3a7e A093 0000 sts (ausgleichNick.10)+2,r26 |
6903 3a82 B093 0000 sts (ausgleichNick.10)+3,r27 |
6904 .L557: |
6905 3a86 2091 0000 lds r18,ausgleichNick.10 |
6906 3a8a 3091 0000 lds r19,(ausgleichNick.10)+1 |
6907 3a8e 4091 0000 lds r20,(ausgleichNick.10)+2 |
6908 3a92 5091 0000 lds r21,(ausgleichNick.10)+3 |
6909 3a96 57FF sbrs r21,7 |
6910 3a98 00C0 rjmp .L558 |
6911 3a9a 2150 subi r18,lo8(-(255)) |
6912 3a9c 3F4F sbci r19,hi8(-(255)) |
6913 3a9e 4F4F sbci r20,hlo8(-(255)) |
6914 3aa0 5F4F sbci r21,hhi8(-(255)) |
6915 .L558: |
6916 3aa2 232F mov r18,r19 |
6917 3aa4 342F mov r19,r20 |
6918 3aa6 452F mov r20,r21 |
6919 3aa8 5527 clr r21 |
6920 3aaa 47FD sbrc r20,7 |
6921 3aac 5A95 dec r21 |
6922 3aae 8091 0000 lds r24,LageKorrekturNick |
6923 3ab2 9091 0000 lds r25,(LageKorrekturNick)+1 |
6924 3ab6 820F add r24,r18 |
6925 3ab8 931F adc r25,r19 |
6926 3aba 9093 0000 sts (LageKorrekturNick)+1,r25 |
6927 3abe 8093 0000 sts LageKorrekturNick,r24 |
6928 3ac2 00C0 rjmp .L560 |
6929 .L553: |
6930 3ac4 81E0 ldi r24,lo8(1) |
6931 3ac6 8093 0000 sts last_n_p.15,r24 |
6932 3aca 00C0 rjmp .L560 |
6933 .L552: |
6934 3acc 1092 0000 sts last_n_p.15,__zero_reg__ |
6935 .L560: |
6936 3ad0 40E0 ldi r20,lo8(-4096) |
6937 3ad2 E416 cp r14,r20 |
6938 3ad4 40EF ldi r20,hi8(-4096) |
6939 3ad6 F406 cpc r15,r20 |
6940 3ad8 4FEF ldi r20,hlo8(-4096) |
6941 3ada 0407 cpc r16,r20 |
6942 3adc 4FEF ldi r20,hhi8(-4096) |
6943 3ade 1407 cpc r17,r20 |
6944 3ae0 04F0 brlt .+2 |
6945 3ae2 00C0 rjmp .L561 |
6946 3ae4 8091 0000 lds r24,last_n_n.16 |
6947 3ae8 8823 tst r24 |
6948 3aea 01F4 brne .+2 |
6949 3aec 00C0 rjmp .L562 |
6950 3aee D801 movw r26,r16 |
6951 3af0 C701 movw r24,r14 |
6952 3af2 17FF sbrs r17,7 |
6953 3af4 00C0 rjmp .L563 |
6954 3af6 8827 clr r24 |
6955 3af8 9927 clr r25 |
6956 3afa DC01 movw r26,r24 |
6957 3afc 8E19 sub r24,r14 |
6958 3afe 9F09 sbc r25,r15 |
6959 3b00 A00B sbc r26,r16 |
6960 3b02 B10B sbc r27,r17 |
6961 .L563: |
6962 3b04 9C01 movw r18,r24 |
6963 3b06 AD01 movw r20,r26 |
6964 3b08 B7FF sbrs r27,7 |
6965 3b0a 00C0 rjmp .L564 |
6966 3b0c 2150 subi r18,lo8(-(511)) |
6967 3b0e 3E4F sbci r19,hi8(-(511)) |
6968 3b10 4F4F sbci r20,hlo8(-(511)) |
6969 3b12 5F4F sbci r21,hhi8(-(511)) |
6970 .L564: |
6971 3b14 69E0 ldi r22,9 |
6972 3b16 5595 1: asr r21 |
6973 3b18 4795 ror r20 |
6974 3b1a 3795 ror r19 |
6975 3b1c 2795 ror r18 |
6976 3b1e 6A95 dec r22 |
6977 3b20 01F4 brne 1b |
6978 3b22 8091 0000 lds r24,cnt.14 |
6979 3b26 9091 0000 lds r25,(cnt.14)+1 |
6980 3b2a 820F add r24,r18 |
6981 3b2c 931F adc r25,r19 |
6982 3b2e 9093 0000 sts (cnt.14)+1,r25 |
6983 3b32 8093 0000 sts cnt.14,r24 |
6984 3b36 D801 movw r26,r16 |
6985 3b38 C701 movw r24,r14 |
6986 3b3a 17FF sbrs r17,7 |
6987 3b3c 00C0 rjmp .L565 |
6988 3b3e 0796 adiw r24,7 |
6989 3b40 A11D adc r26,__zero_reg__ |
6990 3b42 B11D adc r27,__zero_reg__ |
6991 .L565: |
6992 3b44 23E0 ldi r18,3 |
6993 3b46 B595 1: asr r27 |
6994 3b48 A795 ror r26 |
6995 3b4a 9795 ror r25 |
6996 3b4c 8795 ror r24 |
6997 3b4e 2A95 dec r18 |
6998 3b50 01F4 brne 1b |
6999 3b52 8093 0000 sts ausgleichNick.10,r24 |
7000 3b56 9093 0000 sts (ausgleichNick.10)+1,r25 |
7001 3b5a A093 0000 sts (ausgleichNick.10)+2,r26 |
7002 3b5e B093 0000 sts (ausgleichNick.10)+3,r27 |
7003 3b62 8857 subi r24,lo8(-5000) |
7004 3b64 9C4E sbci r25,hi8(-5000) |
7005 3b66 AF4F sbci r26,hlo8(-5000) |
7006 3b68 BF4F sbci r27,hhi8(-5000) |
7007 3b6a 04F4 brge .L566 |
7008 3b6c 88E7 ldi r24,lo8(-5000) |
7009 3b6e 9CEE ldi r25,hi8(-5000) |
7010 3b70 AFEF ldi r26,hlo8(-5000) |
7011 3b72 BFEF ldi r27,hhi8(-5000) |
7012 3b74 8093 0000 sts ausgleichNick.10,r24 |
7013 3b78 9093 0000 sts (ausgleichNick.10)+1,r25 |
7014 3b7c A093 0000 sts (ausgleichNick.10)+2,r26 |
7015 3b80 B093 0000 sts (ausgleichNick.10)+3,r27 |
7016 .L566: |
7017 3b84 2091 0000 lds r18,ausgleichNick.10 |
7018 3b88 3091 0000 lds r19,(ausgleichNick.10)+1 |
7019 3b8c 4091 0000 lds r20,(ausgleichNick.10)+2 |
7020 3b90 5091 0000 lds r21,(ausgleichNick.10)+3 |
7021 3b94 57FF sbrs r21,7 |
7022 3b96 00C0 rjmp .L567 |
7023 3b98 2150 subi r18,lo8(-(255)) |
7024 3b9a 3F4F sbci r19,hi8(-(255)) |
7025 3b9c 4F4F sbci r20,hlo8(-(255)) |
7026 3b9e 5F4F sbci r21,hhi8(-(255)) |
7027 .L567: |
7028 3ba0 232F mov r18,r19 |
7029 3ba2 342F mov r19,r20 |
7030 3ba4 452F mov r20,r21 |
7031 3ba6 5527 clr r21 |
7032 3ba8 47FD sbrc r20,7 |
7033 3baa 5A95 dec r21 |
7034 3bac 8091 0000 lds r24,LageKorrekturNick |
7035 3bb0 9091 0000 lds r25,(LageKorrekturNick)+1 |
7036 3bb4 820F add r24,r18 |
7037 3bb6 931F adc r25,r19 |
7038 3bb8 9093 0000 sts (LageKorrekturNick)+1,r25 |
7039 3bbc 8093 0000 sts LageKorrekturNick,r24 |
7040 3bc0 00C0 rjmp .L570 |
7041 .L562: |
7042 3bc2 81E0 ldi r24,lo8(1) |
7043 3bc4 8093 0000 sts last_n_n.16,r24 |
7044 3bc8 00C0 rjmp .L570 |
7045 .L561: |
7046 3bca 1092 0000 sts last_n_n.16,__zero_reg__ |
7047 3bce 00C0 rjmp .L570 |
7048 .L550: |
7049 3bd0 1092 0000 sts (cnt.14)+1,__zero_reg__ |
7050 3bd4 1092 0000 sts cnt.14,__zero_reg__ |
7051 3bd8 84E6 ldi r24,lo8(100) |
7052 3bda 90E0 ldi r25,hi8(100) |
7053 3bdc 9093 0000 sts (KompassSignalSchlecht)+1,r25 |
7054 3be0 8093 0000 sts KompassSignalSchlecht,r24 |
7055 .L570: |
7056 3be4 6889 ldd r22,Y+16 |
7057 3be6 262F mov r18,r22 |
7058 3be8 3327 clr r19 |
7059 3bea 8091 0000 lds r24,cnt.14 |
7060 3bee 9091 0000 lds r25,(cnt.14)+1 |
7061 3bf2 2817 cp r18,r24 |
7062 3bf4 3907 cpc r19,r25 |
7063 3bf6 04F4 brge .L571 |
7064 3bf8 3093 0000 sts (cnt.14)+1,r19 |
7065 3bfc 2093 0000 sts cnt.14,r18 |
7066 .L571: |
7067 3c00 1091 0000 lds r17,FromNaviCtrl_Value+1 |
7068 3c04 1123 tst r17 |
7069 3c06 01F0 breq .L572 |
7070 3c08 212F mov r18,r17 |
7071 3c0a 3327 clr r19 |
7072 3c0c 27FD sbrc r18,7 |
7073 3c0e 3095 com r19 |
7074 3c10 8091 0000 lds r24,cnt.14 |
7075 3c14 9091 0000 lds r25,(cnt.14)+1 |
7076 3c18 2817 cp r18,r24 |
7077 3c1a 3907 cpc r19,r25 |
7078 3c1c 04F4 brge .L572 |
7079 3c1e 3093 0000 sts (cnt.14)+1,r19 |
7080 3c22 2093 0000 sts cnt.14,r18 |
7081 .L572: |
7082 3c26 4091 0000 lds r20,IntegralFehlerNick.3 |
7083 3c2a 5091 0000 lds r21,(IntegralFehlerNick.3)+1 |
7084 3c2e 6091 0000 lds r22,(IntegralFehlerNick.3)+2 |
7085 3c32 7091 0000 lds r23,(IntegralFehlerNick.3)+3 |
7086 3c36 4138 cpi r20,lo8(129) |
7087 3c38 5105 cpc r21,__zero_reg__ |
7088 3c3a 6105 cpc r22,__zero_reg__ |
7089 3c3c 7105 cpc r23,__zero_reg__ |
7090 3c3e 04F0 brlt .L574 |
7091 3c40 8091 0000 lds r24,AdNeutralNick |
7092 3c44 9091 0000 lds r25,(AdNeutralNick)+1 |
7093 3c48 2091 0000 lds r18,cnt.14 |
7094 3c4c 3091 0000 lds r19,(cnt.14)+1 |
7095 3c50 820F add r24,r18 |
7096 3c52 931F adc r25,r19 |
7097 3c54 9093 0000 sts (AdNeutralNick)+1,r25 |
7098 3c58 8093 0000 sts AdNeutralNick,r24 |
7099 .L574: |
7100 3c5c 4058 subi r20,lo8(-128) |
7101 3c5e 5F4F sbci r21,hi8(-128) |
7102 3c60 6F4F sbci r22,hlo8(-128) |
7103 3c62 7F4F sbci r23,hhi8(-128) |
7104 3c64 04F4 brge .L575 |
7105 3c66 8091 0000 lds r24,AdNeutralNick |
7106 3c6a 9091 0000 lds r25,(AdNeutralNick)+1 |
7107 3c6e 2091 0000 lds r18,cnt.14 |
7108 3c72 3091 0000 lds r19,(cnt.14)+1 |
7109 3c76 821B sub r24,r18 |
7110 3c78 930B sbc r25,r19 |
7111 3c7a 9093 0000 sts (AdNeutralNick)+1,r25 |
7112 3c7e 8093 0000 sts AdNeutralNick,r24 |
7113 .L575: |
7114 3c82 81E0 ldi r24,lo8(1) |
7115 3c84 90E0 ldi r25,hi8(1) |
7116 3c86 9093 0000 sts (cnt.14)+1,r25 |
7117 3c8a 8093 0000 sts cnt.14,r24 |
7118 3c8e C090 0000 lds r12,IntegralFehlerRoll.4 |
7119 3c92 D090 0000 lds r13,(IntegralFehlerRoll.4)+1 |
7120 3c96 E090 0000 lds r14,(IntegralFehlerRoll.4)+2 |
7121 3c9a F090 0000 lds r15,(IntegralFehlerRoll.4)+3 |
7122 3c9e D701 movw r26,r14 |
7123 3ca0 C601 movw r24,r12 |
7124 3ca2 F7FE sbrs r15,7 |
7125 3ca4 00C0 rjmp .L577 |
7126 3ca6 8827 clr r24 |
7127 3ca8 9927 clr r25 |
7128 3caa DC01 movw r26,r24 |
7129 3cac 8C19 sub r24,r12 |
7130 3cae 9D09 sbc r25,r13 |
7131 3cb0 AE09 sbc r26,r14 |
7132 3cb2 BF09 sbc r27,r15 |
7133 .L577: |
7134 3cb4 8150 subi r24,lo8(513) |
7135 3cb6 9240 sbci r25,hi8(513) |
7136 3cb8 A040 sbci r26,hlo8(513) |
7137 3cba B040 sbci r27,hhi8(513) |
7138 3cbc 04F0 brlt .L576 |
7139 3cbe 84E0 ldi r24,lo8(4) |
7140 3cc0 90E0 ldi r25,hi8(4) |
7141 3cc2 9093 0000 sts (cnt.14)+1,r25 |
7142 3cc6 8093 0000 sts cnt.14,r24 |
7143 .L576: |
7144 3cca 8091 0000 lds r24,MittelIntegralRoll_Alt.20 |
7145 3cce 9091 0000 lds r25,(MittelIntegralRoll_Alt.20)+1 |
7146 3cd2 A091 0000 lds r26,(MittelIntegralRoll_Alt.20)+2 |
7147 3cd6 B091 0000 lds r27,(MittelIntegralRoll_Alt.20)+3 |
7148 3cda 2091 0000 lds r18,MittelIntegralRoll |
7149 3cde 3091 0000 lds r19,(MittelIntegralRoll)+1 |
7150 3ce2 4091 0000 lds r20,(MittelIntegralRoll)+2 |
7151 3ce6 5091 0000 lds r21,(MittelIntegralRoll)+3 |
7152 3cea 821B sub r24,r18 |
7153 3cec 930B sbc r25,r19 |
7154 3cee A40B sbc r26,r20 |
7155 3cf0 B50B sbc r27,r21 |
7156 3cf2 815E subi r24,lo8(-(19999)) |
7157 3cf4 914B sbci r25,hi8(-(19999)) |
7158 3cf6 AF4F sbci r26,hlo8(-(19999)) |
7159 3cf8 BF4F sbci r27,hhi8(-(19999)) |
7160 3cfa 8F53 subi r24,lo8(39999) |
7161 3cfc 9C49 sbci r25,hi8(39999) |
7162 3cfe A040 sbci r26,hlo8(39999) |
7163 3d00 B040 sbci r27,hhi8(39999) |
7164 3d02 00F0 brlo .L579 |
7165 3d04 1931 cpi r17,lo8(25) |
7166 3d06 04F4 brge .+2 |
7167 3d08 00C0 rjmp .L578 |
7168 .L579: |
7169 3d0a 01E0 ldi r16,lo8(4097) |
7170 3d0c C016 cp r12,r16 |
7171 3d0e 00E1 ldi r16,hi8(4097) |
7172 3d10 D006 cpc r13,r16 |
7173 3d12 00E0 ldi r16,hlo8(4097) |
7174 3d14 E006 cpc r14,r16 |
7175 3d16 00E0 ldi r16,hhi8(4097) |
7176 3d18 F006 cpc r15,r16 |
7177 3d1a 04F4 brge .+2 |
7178 3d1c 00C0 rjmp .L580 |
7179 3d1e 8091 0000 lds r24,last_r_p.17 |
7180 3d22 8823 tst r24 |
7181 3d24 01F4 brne .+2 |
7182 3d26 00C0 rjmp .L581 |
7183 3d28 D701 movw r26,r14 |
7184 3d2a C601 movw r24,r12 |
7185 3d2c F7FE sbrs r15,7 |
7186 3d2e 00C0 rjmp .L582 |
7187 3d30 8827 clr r24 |
7188 3d32 9927 clr r25 |
7189 3d34 DC01 movw r26,r24 |
7190 3d36 8C19 sub r24,r12 |
7191 3d38 9D09 sbc r25,r13 |
7192 3d3a AE09 sbc r26,r14 |
7193 3d3c BF09 sbc r27,r15 |
7194 .L582: |
7195 3d3e 9C01 movw r18,r24 |
7196 3d40 AD01 movw r20,r26 |
7197 3d42 B7FF sbrs r27,7 |
7198 3d44 00C0 rjmp .L583 |
7199 3d46 2150 subi r18,lo8(-(511)) |
7200 3d48 3E4F sbci r19,hi8(-(511)) |
7201 3d4a 4F4F sbci r20,hlo8(-(511)) |
7202 3d4c 5F4F sbci r21,hhi8(-(511)) |
7203 .L583: |
7204 3d4e 09E0 ldi r16,9 |
7205 3d50 5595 1: asr r21 |
7206 3d52 4795 ror r20 |
7207 3d54 3795 ror r19 |
7208 3d56 2795 ror r18 |
7209 3d58 0A95 dec r16 |
7210 3d5a 01F4 brne 1b |
7211 3d5c 8091 0000 lds r24,cnt.14 |
7212 3d60 9091 0000 lds r25,(cnt.14)+1 |
7213 3d64 820F add r24,r18 |
7214 3d66 931F adc r25,r19 |
7215 3d68 9093 0000 sts (cnt.14)+1,r25 |
7216 3d6c 8093 0000 sts cnt.14,r24 |
7217 3d70 D701 movw r26,r14 |
7218 3d72 C601 movw r24,r12 |
7219 3d74 F7FE sbrs r15,7 |
7220 3d76 00C0 rjmp .L584 |
7221 3d78 0796 adiw r24,7 |
7222 3d7a A11D adc r26,__zero_reg__ |
7223 3d7c B11D adc r27,__zero_reg__ |
7224 .L584: |
7225 3d7e 13E0 ldi r17,3 |
7226 3d80 B595 1: asr r27 |
7227 3d82 A795 ror r26 |
7228 3d84 9795 ror r25 |
7229 3d86 8795 ror r24 |
7230 3d88 1A95 dec r17 |
7231 3d8a 01F4 brne 1b |
7232 3d8c 8093 0000 sts ausgleichRoll.11,r24 |
7233 3d90 9093 0000 sts (ausgleichRoll.11)+1,r25 |
7234 3d94 A093 0000 sts (ausgleichRoll.11)+2,r26 |
7235 3d98 B093 0000 sts (ausgleichRoll.11)+3,r27 |
7236 3d9c 8958 subi r24,lo8(5001) |
7237 3d9e 9341 sbci r25,hi8(5001) |
7238 3da0 A040 sbci r26,hlo8(5001) |
7239 3da2 B040 sbci r27,hhi8(5001) |
7240 3da4 04F0 brlt .L585 |
7241 3da6 88E8 ldi r24,lo8(5000) |
7242 3da8 93E1 ldi r25,hi8(5000) |
7243 3daa A0E0 ldi r26,hlo8(5000) |
7244 3dac B0E0 ldi r27,hhi8(5000) |
7245 3dae 8093 0000 sts ausgleichRoll.11,r24 |
7246 3db2 9093 0000 sts (ausgleichRoll.11)+1,r25 |
7247 3db6 A093 0000 sts (ausgleichRoll.11)+2,r26 |
7248 3dba B093 0000 sts (ausgleichRoll.11)+3,r27 |
7249 .L585: |
7250 3dbe 2091 0000 lds r18,ausgleichRoll.11 |
7251 3dc2 3091 0000 lds r19,(ausgleichRoll.11)+1 |
7252 3dc6 4091 0000 lds r20,(ausgleichRoll.11)+2 |
7253 3dca 5091 0000 lds r21,(ausgleichRoll.11)+3 |
7254 3dce 57FF sbrs r21,7 |
7255 3dd0 00C0 rjmp .L586 |
7256 3dd2 2150 subi r18,lo8(-(255)) |
7257 3dd4 3F4F sbci r19,hi8(-(255)) |
7258 3dd6 4F4F sbci r20,hlo8(-(255)) |
7259 3dd8 5F4F sbci r21,hhi8(-(255)) |
7260 .L586: |
7261 3dda 232F mov r18,r19 |
7262 3ddc 342F mov r19,r20 |
7263 3dde 452F mov r20,r21 |
7264 3de0 5527 clr r21 |
7265 3de2 47FD sbrc r20,7 |
7266 3de4 5A95 dec r21 |
7267 3de6 8091 0000 lds r24,LageKorrekturRoll |
7268 3dea 9091 0000 lds r25,(LageKorrekturRoll)+1 |
7269 3dee 820F add r24,r18 |
7270 3df0 931F adc r25,r19 |
7271 3df2 9093 0000 sts (LageKorrekturRoll)+1,r25 |
7272 3df6 8093 0000 sts LageKorrekturRoll,r24 |
7273 3dfa 00C0 rjmp .L588 |
7274 .L581: |
7275 3dfc 81E0 ldi r24,lo8(1) |
7276 3dfe 8093 0000 sts last_r_p.17,r24 |
7277 3e02 00C0 rjmp .L588 |
7278 .L580: |
7279 3e04 1092 0000 sts last_r_p.17,__zero_reg__ |
7280 .L588: |
7281 3e08 20E0 ldi r18,lo8(-4096) |
7282 3e0a C216 cp r12,r18 |
7283 3e0c 20EF ldi r18,hi8(-4096) |
7284 3e0e D206 cpc r13,r18 |
7285 3e10 2FEF ldi r18,hlo8(-4096) |
7286 3e12 E206 cpc r14,r18 |
7287 3e14 2FEF ldi r18,hhi8(-4096) |
7288 3e16 F206 cpc r15,r18 |
7289 3e18 04F0 brlt .+2 |
7290 3e1a 00C0 rjmp .L589 |
7291 3e1c 8091 0000 lds r24,last_r_n.18 |
7292 3e20 8823 tst r24 |
7293 3e22 01F4 brne .+2 |
7294 3e24 00C0 rjmp .L590 |
7295 3e26 D701 movw r26,r14 |
7296 3e28 C601 movw r24,r12 |
7297 3e2a F7FE sbrs r15,7 |
7298 3e2c 00C0 rjmp .L591 |
7299 3e2e 8827 clr r24 |
7300 3e30 9927 clr r25 |
7301 3e32 DC01 movw r26,r24 |
7302 3e34 8C19 sub r24,r12 |
7303 3e36 9D09 sbc r25,r13 |
7304 3e38 AE09 sbc r26,r14 |
7305 3e3a BF09 sbc r27,r15 |
7306 .L591: |
7307 3e3c 9C01 movw r18,r24 |
7308 3e3e AD01 movw r20,r26 |
7309 3e40 B7FF sbrs r27,7 |
7310 3e42 00C0 rjmp .L592 |
7311 3e44 2150 subi r18,lo8(-(511)) |
7312 3e46 3E4F sbci r19,hi8(-(511)) |
7313 3e48 4F4F sbci r20,hlo8(-(511)) |
7314 3e4a 5F4F sbci r21,hhi8(-(511)) |
7315 .L592: |
7316 3e4c E9E0 ldi r30,9 |
7317 3e4e 5595 1: asr r21 |
7318 3e50 4795 ror r20 |
7319 3e52 3795 ror r19 |
7320 3e54 2795 ror r18 |
7321 3e56 EA95 dec r30 |
7322 3e58 01F4 brne 1b |
7323 3e5a 8091 0000 lds r24,cnt.14 |
7324 3e5e 9091 0000 lds r25,(cnt.14)+1 |
7325 3e62 820F add r24,r18 |
7326 3e64 931F adc r25,r19 |
7327 3e66 9093 0000 sts (cnt.14)+1,r25 |
7328 3e6a 8093 0000 sts cnt.14,r24 |
7329 3e6e D701 movw r26,r14 |
7330 3e70 C601 movw r24,r12 |
7331 3e72 F7FE sbrs r15,7 |
7332 3e74 00C0 rjmp .L593 |
7333 3e76 0796 adiw r24,7 |
7334 3e78 A11D adc r26,__zero_reg__ |
7335 3e7a B11D adc r27,__zero_reg__ |
7336 .L593: |
7337 3e7c 73E0 ldi r23,3 |
7338 3e7e B595 1: asr r27 |
7339 3e80 A795 ror r26 |
7340 3e82 9795 ror r25 |
7341 3e84 8795 ror r24 |
7342 3e86 7A95 dec r23 |
7343 3e88 01F4 brne 1b |
7344 3e8a 8093 0000 sts ausgleichRoll.11,r24 |
7345 3e8e 9093 0000 sts (ausgleichRoll.11)+1,r25 |
7346 3e92 A093 0000 sts (ausgleichRoll.11)+2,r26 |
7347 3e96 B093 0000 sts (ausgleichRoll.11)+3,r27 |
7348 3e9a 8857 subi r24,lo8(-5000) |
7349 3e9c 9C4E sbci r25,hi8(-5000) |
7350 3e9e AF4F sbci r26,hlo8(-5000) |
7351 3ea0 BF4F sbci r27,hhi8(-5000) |
7352 3ea2 04F4 brge .L594 |
7353 3ea4 88E7 ldi r24,lo8(-5000) |
7354 3ea6 9CEE ldi r25,hi8(-5000) |
7355 3ea8 AFEF ldi r26,hlo8(-5000) |
7356 3eaa BFEF ldi r27,hhi8(-5000) |
7357 3eac 8093 0000 sts ausgleichRoll.11,r24 |
7358 3eb0 9093 0000 sts (ausgleichRoll.11)+1,r25 |
7359 3eb4 A093 0000 sts (ausgleichRoll.11)+2,r26 |
7360 3eb8 B093 0000 sts (ausgleichRoll.11)+3,r27 |
7361 .L594: |
7362 3ebc 2091 0000 lds r18,ausgleichRoll.11 |
7363 3ec0 3091 0000 lds r19,(ausgleichRoll.11)+1 |
7364 3ec4 4091 0000 lds r20,(ausgleichRoll.11)+2 |
7365 3ec8 5091 0000 lds r21,(ausgleichRoll.11)+3 |
7366 3ecc 57FF sbrs r21,7 |
7367 3ece 00C0 rjmp .L595 |
7368 3ed0 2150 subi r18,lo8(-(255)) |
7369 3ed2 3F4F sbci r19,hi8(-(255)) |
7370 3ed4 4F4F sbci r20,hlo8(-(255)) |
7371 3ed6 5F4F sbci r21,hhi8(-(255)) |
7372 .L595: |
7373 3ed8 232F mov r18,r19 |
7374 3eda 342F mov r19,r20 |
7375 3edc 452F mov r20,r21 |
7376 3ede 5527 clr r21 |
7377 3ee0 47FD sbrc r20,7 |
7378 3ee2 5A95 dec r21 |
7379 3ee4 8091 0000 lds r24,LageKorrekturRoll |
7380 3ee8 9091 0000 lds r25,(LageKorrekturRoll)+1 |
7381 3eec 820F add r24,r18 |
7382 3eee 931F adc r25,r19 |
7383 3ef0 9093 0000 sts (LageKorrekturRoll)+1,r25 |
7384 3ef4 8093 0000 sts LageKorrekturRoll,r24 |
7385 3ef8 00C0 rjmp .L598 |
7386 .L590: |
7387 3efa 81E0 ldi r24,lo8(1) |
7388 3efc 8093 0000 sts last_r_n.18,r24 |
7389 3f00 00C0 rjmp .L598 |
7390 .L589: |
7391 3f02 1092 0000 sts last_r_n.18,__zero_reg__ |
7392 3f06 00C0 rjmp .L598 |
7393 .L578: |
7394 3f08 1092 0000 sts (cnt.14)+1,__zero_reg__ |
7395 3f0c 1092 0000 sts cnt.14,__zero_reg__ |
7396 3f10 84E6 ldi r24,lo8(100) |
7397 3f12 90E0 ldi r25,hi8(100) |
7398 3f14 9093 0000 sts (KompassSignalSchlecht)+1,r25 |
7399 3f18 8093 0000 sts KompassSignalSchlecht,r24 |
7400 .L598: |
7401 3f1c 4889 ldd r20,Y+16 |
7402 3f1e 242F mov r18,r20 |
7403 3f20 3327 clr r19 |
7404 3f22 8091 0000 lds r24,cnt.14 |
7405 3f26 9091 0000 lds r25,(cnt.14)+1 |
7406 3f2a 2817 cp r18,r24 |
7407 3f2c 3907 cpc r19,r25 |
7408 3f2e 04F4 brge .L599 |
7409 3f30 3093 0000 sts (cnt.14)+1,r19 |
7410 3f34 2093 0000 sts cnt.14,r18 |
7411 .L599: |
7412 3f38 8091 0000 lds r24,FromNaviCtrl_Value+1 |
7413 3f3c 8823 tst r24 |
7414 3f3e 01F0 breq .L600 |
7415 3f40 282F mov r18,r24 |
7416 3f42 3327 clr r19 |
7417 3f44 27FD sbrc r18,7 |
7418 3f46 3095 com r19 |
7419 3f48 8091 0000 lds r24,cnt.14 |
7420 3f4c 9091 0000 lds r25,(cnt.14)+1 |
7421 3f50 2817 cp r18,r24 |
7422 3f52 3907 cpc r19,r25 |
7423 3f54 04F4 brge .L600 |
7424 3f56 3093 0000 sts (cnt.14)+1,r19 |
7425 3f5a 2093 0000 sts cnt.14,r18 |
7426 .L600: |
7427 3f5e 4091 0000 lds r20,IntegralFehlerRoll.4 |
7428 3f62 5091 0000 lds r21,(IntegralFehlerRoll.4)+1 |
7429 3f66 6091 0000 lds r22,(IntegralFehlerRoll.4)+2 |
7430 3f6a 7091 0000 lds r23,(IntegralFehlerRoll.4)+3 |
7431 3f6e 4138 cpi r20,lo8(129) |
7432 3f70 5105 cpc r21,__zero_reg__ |
7433 3f72 6105 cpc r22,__zero_reg__ |
7434 3f74 7105 cpc r23,__zero_reg__ |
7435 3f76 04F0 brlt .L602 |
7436 3f78 8091 0000 lds r24,AdNeutralRoll |
7437 3f7c 9091 0000 lds r25,(AdNeutralRoll)+1 |
7438 3f80 2091 0000 lds r18,cnt.14 |
7439 3f84 3091 0000 lds r19,(cnt.14)+1 |
7440 3f88 820F add r24,r18 |
7441 3f8a 931F adc r25,r19 |
7442 3f8c 9093 0000 sts (AdNeutralRoll)+1,r25 |
7443 3f90 8093 0000 sts AdNeutralRoll,r24 |
7444 .L602: |
7445 3f94 4058 subi r20,lo8(-128) |
7446 3f96 5F4F sbci r21,hi8(-128) |
7447 3f98 6F4F sbci r22,hlo8(-128) |
7448 3f9a 7F4F sbci r23,hhi8(-128) |
7449 3f9c 04F4 brge .L604 |
7450 3f9e 8091 0000 lds r24,AdNeutralRoll |
7451 3fa2 9091 0000 lds r25,(AdNeutralRoll)+1 |
7452 3fa6 2091 0000 lds r18,cnt.14 |
7453 3faa 3091 0000 lds r19,(cnt.14)+1 |
7454 3fae 821B sub r24,r18 |
7455 3fb0 930B sbc r25,r19 |
7456 3fb2 9093 0000 sts (AdNeutralRoll)+1,r25 |
7457 3fb6 8093 0000 sts AdNeutralRoll,r24 |
7458 3fba 00C0 rjmp .L604 |
7459 .L530: |
7460 3fbc 1092 0000 sts (LageKorrekturRoll)+1,__zero_reg__ |
7461 3fc0 1092 0000 sts LageKorrekturRoll,__zero_reg__ |
7462 3fc4 1092 0000 sts (LageKorrekturNick)+1,__zero_reg__ |
7463 3fc8 1092 0000 sts LageKorrekturNick,__zero_reg__ |
7464 3fcc 1092 0000 sts TrichterFlug,__zero_reg__ |
7465 .L604: |
7466 3fd0 8091 0000 lds r24,IntegralFaktor |
7467 3fd4 8823 tst r24 |
7468 3fd6 01F4 brne .L605 |
7469 3fd8 1092 0000 sts (LageKorrekturRoll)+1,__zero_reg__ |
7470 3fdc 1092 0000 sts LageKorrekturRoll,__zero_reg__ |
7471 3fe0 1092 0000 sts (LageKorrekturNick)+1,__zero_reg__ |
7472 3fe4 1092 0000 sts LageKorrekturNick,__zero_reg__ |
7473 .L605: |
7474 3fe8 8091 0000 lds r24,MittelIntegralNick |
7475 3fec 9091 0000 lds r25,(MittelIntegralNick)+1 |
7476 3ff0 A091 0000 lds r26,(MittelIntegralNick)+2 |
7477 3ff4 B091 0000 lds r27,(MittelIntegralNick)+3 |
7478 3ff8 8093 0000 sts MittelIntegralNick_Alt.19,r24 |
7479 3ffc 9093 0000 sts (MittelIntegralNick_Alt.19)+1,r25 |
7480 4000 A093 0000 sts (MittelIntegralNick_Alt.19)+2,r26 |
7481 4004 B093 0000 sts (MittelIntegralNick_Alt.19)+3,r27 |
7482 4008 8091 0000 lds r24,MittelIntegralRoll |
7483 400c 9091 0000 lds r25,(MittelIntegralRoll)+1 |
7484 4010 A091 0000 lds r26,(MittelIntegralRoll)+2 |
7485 4014 B091 0000 lds r27,(MittelIntegralRoll)+3 |
7486 4018 8093 0000 sts MittelIntegralRoll_Alt.20,r24 |
7487 401c 9093 0000 sts (MittelIntegralRoll_Alt.20)+1,r25 |
7488 4020 A093 0000 sts (MittelIntegralRoll_Alt.20)+2,r26 |
7489 4024 B093 0000 sts (MittelIntegralRoll_Alt.20)+3,r27 |
7490 4028 1092 0000 sts IntegralAccNick,__zero_reg__ |
7491 402c 1092 0000 sts (IntegralAccNick)+1,__zero_reg__ |
7492 4030 1092 0000 sts (IntegralAccNick)+2,__zero_reg__ |
7493 4034 1092 0000 sts (IntegralAccNick)+3,__zero_reg__ |
7494 4038 1092 0000 sts IntegralAccRoll,__zero_reg__ |
7495 403c 1092 0000 sts (IntegralAccRoll)+1,__zero_reg__ |
7496 4040 1092 0000 sts (IntegralAccRoll)+2,__zero_reg__ |
7497 4044 1092 0000 sts (IntegralAccRoll)+3,__zero_reg__ |
7498 4048 1092 0000 sts IntegralAccZ,__zero_reg__ |
7499 404c 1092 0000 sts (IntegralAccZ)+1,__zero_reg__ |
7500 4050 1092 0000 sts (IntegralAccZ)+2,__zero_reg__ |
7501 4054 1092 0000 sts (IntegralAccZ)+3,__zero_reg__ |
7502 4058 1092 0000 sts MittelIntegralNick,__zero_reg__ |
7503 405c 1092 0000 sts (MittelIntegralNick)+1,__zero_reg__ |
7504 4060 1092 0000 sts (MittelIntegralNick)+2,__zero_reg__ |
7505 4064 1092 0000 sts (MittelIntegralNick)+3,__zero_reg__ |
7506 4068 1092 0000 sts MittelIntegralRoll,__zero_reg__ |
7507 406c 1092 0000 sts (MittelIntegralRoll)+1,__zero_reg__ |
7508 4070 1092 0000 sts (MittelIntegralRoll)+2,__zero_reg__ |
7509 4074 1092 0000 sts (MittelIntegralRoll)+3,__zero_reg__ |
7510 4078 1092 0000 sts MittelIntegralNick2,__zero_reg__ |
7511 407c 1092 0000 sts (MittelIntegralNick2)+1,__zero_reg__ |
7512 4080 1092 0000 sts (MittelIntegralNick2)+2,__zero_reg__ |
7513 4084 1092 0000 sts (MittelIntegralNick2)+3,__zero_reg__ |
7514 4088 1092 0000 sts MittelIntegralRoll2,__zero_reg__ |
7515 408c 1092 0000 sts (MittelIntegralRoll2)+1,__zero_reg__ |
7516 4090 1092 0000 sts (MittelIntegralRoll2)+2,__zero_reg__ |
7517 4094 1092 0000 sts (MittelIntegralRoll2)+3,__zero_reg__ |
7518 4098 1092 0000 sts (ZaehlMessungen)+1,__zero_reg__ |
7519 409c 1092 0000 sts ZaehlMessungen,__zero_reg__ |
7520 .L529: |
7521 40a0 E090 0000 lds r14,StickGier |
7522 40a4 F090 0000 lds r15,(StickGier)+1 |
7523 40a8 C701 movw r24,r14 |
7524 40aa F7FE sbrs r15,7 |
7525 40ac 00C0 rjmp .L607 |
7526 40ae 8827 clr r24 |
7527 40b0 9927 clr r25 |
7528 40b2 8E19 sub r24,r14 |
7529 40b4 9F09 sbc r25,r15 |
7530 .L607: |
7531 40b6 0497 sbiw r24,4 |
7532 40b8 04F0 brlt .L606 |
7533 40ba 8091 0000 lds r24,Parameter_GlobalConfig |
7534 40be 84FD sbrc r24,4 |
7535 40c0 00C0 rjmp .L606 |
7536 40c2 82E3 ldi r24,lo8(50) |
7537 40c4 8093 0000 sts NeueKompassRichtungMerken,r24 |
7538 .L606: |
7539 40c8 1091 0000 lds r17,EE_Parameter+25 |
7540 40cc A12E mov r10,r17 |
7541 40ce BB24 clr r11 |
7542 40d0 CC24 clr r12 |
7543 40d2 DD24 clr r13 |
7544 40d4 B701 movw r22,r14 |
7545 40d6 8827 clr r24 |
7546 40d8 77FD sbrc r23,7 |
7547 40da 8095 com r24 |
7548 40dc 982F mov r25,r24 |
7549 40de 9701 movw r18,r14 |
7550 40e0 F7FE sbrs r15,7 |
7551 40e2 00C0 rjmp .L609 |
7552 40e4 2227 clr r18 |
7553 40e6 3327 clr r19 |
7554 40e8 2E19 sub r18,r14 |
7555 40ea 3F09 sbc r19,r15 |
7556 .L609: |
7557 40ec 4427 clr r20 |
7558 40ee 37FD sbrc r19,7 |
7559 40f0 4095 com r20 |
7560 40f2 542F mov r21,r20 |
7561 40f4 0E94 0000 call __mulsi3 |
7562 40f8 9B01 movw r18,r22 |
7563 40fa AC01 movw r20,r24 |
7564 40fc C601 movw r24,r12 |
7565 40fe B501 movw r22,r10 |
7566 4100 0E94 0000 call __mulsi3 |
7567 4104 97FF sbrs r25,7 |
7568 4106 00C0 rjmp .L610 |
7569 4108 6150 subi r22,lo8(-(511)) |
7570 410a 7E4F sbci r23,hi8(-(511)) |
7571 410c 8F4F sbci r24,hlo8(-(511)) |
7572 410e 9F4F sbci r25,hhi8(-(511)) |
7573 .L610: |
7574 4110 59E0 ldi r21,9 |
7575 4112 9595 1: asr r25 |
7576 4114 8795 ror r24 |
7577 4116 7795 ror r23 |
7578 4118 6795 ror r22 |
7579 411a 5A95 dec r21 |
7580 411c 01F4 brne 1b |
7581 411e 9B01 movw r18,r22 |
7582 4120 812F mov r24,r17 |
7583 4122 9927 clr r25 |
7584 4124 8E9D mul r24,r14 |
7585 4126 D001 movw r26,r0 |
7586 4128 8F9D mul r24,r15 |
7587 412a B00D add r27,r0 |
7588 412c 9E9D mul r25,r14 |
7589 412e B00D add r27,r0 |
7590 4130 1124 clr r1 |
7591 4132 CD01 movw r24,r26 |
7592 4134 B7FD sbrc r27,7 |
7593 4136 0396 adiw r24,3 |
7594 .L611: |
7595 4138 9595 asr r25 |
7596 413a 8795 ror r24 |
7597 413c 9595 asr r25 |
7598 413e 8795 ror r24 |
7599 4140 280F add r18,r24 |
7600 4142 391F adc r19,r25 |
7601 4144 8091 0000 lds r24,CompassGierSetpoint |
7602 4148 9091 0000 lds r25,(CompassGierSetpoint)+1 |
7603 414c 280F add r18,r24 |
7604 414e 391F adc r19,r25 |
7605 4150 4427 clr r20 |
7606 4152 37FD sbrc r19,7 |
7607 4154 4095 com r20 |
7608 4156 542F mov r21,r20 |
7609 4158 2093 0000 sts sollGier.0,r18 |
7610 415c 3093 0000 sts (sollGier.0)+1,r19 |
7611 4160 4093 0000 sts (sollGier.0)+2,r20 |
7612 4164 5093 0000 sts (sollGier.0)+3,r21 |
7613 4168 8091 0000 lds r24,Mess_Integral_Gier |
7614 416c 9091 0000 lds r25,(Mess_Integral_Gier)+1 |
7615 4170 A091 0000 lds r26,(Mess_Integral_Gier)+2 |
7616 4174 B091 0000 lds r27,(Mess_Integral_Gier)+3 |
7617 4178 821B sub r24,r18 |
7618 417a 930B sbc r25,r19 |
7619 417c A40B sbc r26,r20 |
7620 417e B50B sbc r27,r21 |
7621 4180 8093 0000 sts Mess_Integral_Gier,r24 |
7622 4184 9093 0000 sts (Mess_Integral_Gier)+1,r25 |
7623 4188 A093 0000 sts (Mess_Integral_Gier)+2,r26 |
7624 418c B093 0000 sts (Mess_Integral_Gier)+3,r27 |
7625 4190 8155 subi r24,lo8(50001) |
7626 4192 934C sbci r25,hi8(50001) |
7627 4194 A040 sbci r26,hlo8(50001) |
7628 4196 B040 sbci r27,hhi8(50001) |
7629 4198 04F0 brlt .L612 |
7630 419a 80E5 ldi r24,lo8(50000) |
7631 419c 93EC ldi r25,hi8(50000) |
7632 419e A0E0 ldi r26,hlo8(50000) |
7633 41a0 B0E0 ldi r27,hhi8(50000) |
7634 41a2 8093 0000 sts Mess_Integral_Gier,r24 |
7635 41a6 9093 0000 sts (Mess_Integral_Gier)+1,r25 |
7636 41aa A093 0000 sts (Mess_Integral_Gier)+2,r26 |
7637 41ae B093 0000 sts (Mess_Integral_Gier)+3,r27 |
7638 .L612: |
7639 41b2 8091 0000 lds r24,Mess_Integral_Gier |
7640 41b6 9091 0000 lds r25,(Mess_Integral_Gier)+1 |
7641 41ba A091 0000 lds r26,(Mess_Integral_Gier)+2 |
7642 41be B091 0000 lds r27,(Mess_Integral_Gier)+3 |
7643 41c2 805B subi r24,lo8(-50000) |
7644 41c4 9C43 sbci r25,hi8(-50000) |
7645 41c6 AF4F sbci r26,hlo8(-50000) |
7646 41c8 BF4F sbci r27,hhi8(-50000) |
7647 41ca 04F4 brge .L613 |
7648 41cc 80EB ldi r24,lo8(-50000) |
7649 41ce 9CE3 ldi r25,hi8(-50000) |
7650 41d0 AFEF ldi r26,hlo8(-50000) |
7651 41d2 BFEF ldi r27,hhi8(-50000) |
7652 41d4 8093 0000 sts Mess_Integral_Gier,r24 |
7653 41d8 9093 0000 sts (Mess_Integral_Gier)+1,r25 |
7654 41dc A093 0000 sts (Mess_Integral_Gier)+2,r26 |
7655 41e0 B093 0000 sts (Mess_Integral_Gier)+3,r27 |
7656 .L613: |
7657 41e4 0091 0000 lds r16,KompassValue |
7658 41e8 1091 0000 lds r17,(KompassValue)+1 |
7659 41ec 17FD sbrc r17,7 |
7660 41ee 00C0 rjmp .L614 |
7661 41f0 8091 0000 lds r24,Parameter_GlobalConfig |
7662 41f4 83FF sbrs r24,3 |
7663 41f6 00C0 rjmp .L614 |
7664 41f8 8091 0000 lds r24,CalculateCompassTimer |
7665 41fc 8150 subi r24,lo8(-(-1)) |
7666 41fe 8093 0000 sts CalculateCompassTimer,r24 |
7667 4202 8823 tst r24 |
7668 4204 01F0 breq .+2 |
7669 4206 00C0 rjmp .L631 |
7670 4208 8DE0 ldi r24,lo8(13) |
7671 420a 8093 0000 sts CalculateCompassTimer,r24 |
7672 420e 8091 0000 lds r24,IntegralNick |
7673 4212 9091 0000 lds r25,(IntegralNick)+1 |
7674 4216 A091 0000 lds r26,(IntegralNick)+2 |
7675 421a B091 0000 lds r27,(IntegralNick)+3 |
7676 421e B7FF sbrs r27,7 |
7677 4220 00C0 rjmp .L616 |
7678 4222 8150 subi r24,lo8(-(511)) |
7679 4224 9E4F sbci r25,hi8(-(511)) |
7680 4226 AF4F sbci r26,hlo8(-(511)) |
7681 4228 BF4F sbci r27,hhi8(-(511)) |
7682 .L616: |
7683 422a 39E0 ldi r19,9 |
7684 422c B595 1: asr r27 |
7685 422e A795 ror r26 |
7686 4230 9795 ror r25 |
7687 4232 8795 ror r24 |
7688 4234 3A95 dec r19 |
7689 4236 01F4 brne 1b |
7690 4238 7C01 movw r14,r24 |
7691 423a 97FF sbrs r25,7 |
7692 423c 00C0 rjmp .L617 |
7693 423e F094 com r15 |
7694 4240 E194 neg r14 |
7695 4242 F108 sbc r15,__zero_reg__ |
7696 4244 F394 inc r15 |
7697 .L617: |
7698 4246 8091 0000 lds r24,IntegralRoll |
7699 424a 9091 0000 lds r25,(IntegralRoll)+1 |
7700 424e A091 0000 lds r26,(IntegralRoll)+2 |
7701 4252 B091 0000 lds r27,(IntegralRoll)+3 |
7702 4256 B7FF sbrs r27,7 |
7703 4258 00C0 rjmp .L618 |
7704 425a 8150 subi r24,lo8(-(511)) |
7705 425c 9E4F sbci r25,hi8(-(511)) |
7706 425e AF4F sbci r26,hlo8(-(511)) |
7707 4260 BF4F sbci r27,hhi8(-(511)) |
7708 .L618: |
7709 4262 29E0 ldi r18,9 |
7710 4264 B595 1: asr r27 |
7711 4266 A795 ror r26 |
7712 4268 9795 ror r25 |
7713 426a 8795 ror r24 |
7714 426c 2A95 dec r18 |
7715 426e 01F4 brne 1b |
7716 4270 9C01 movw r18,r24 |
7717 4272 97FF sbrs r25,7 |
7718 4274 00C0 rjmp .L619 |
7719 4276 3095 com r19 |
7720 4278 2195 neg r18 |
7721 427a 3F4F sbci r19,lo8(-1) |
7722 .L619: |
7723 427c E216 cp r14,r18 |
7724 427e F306 cpc r15,r19 |
7725 4280 04F4 brge .L620 |
7726 4282 7901 movw r14,r18 |
7727 .L620: |
7728 4284 B701 movw r22,r14 |
7729 4286 F7FE sbrs r15,7 |
7730 4288 00C0 rjmp .L621 |
7731 428a 695F subi r22,lo8(-(7)) |
7732 428c 7F4F sbci r23,hi8(-(7)) |
7733 .L621: |
7734 428e 2B01 movw r4,r22 |
7735 4290 A3E0 ldi r26,3 |
7736 4292 5594 1: asr r5 |
7737 4294 4794 ror r4 |
7738 4296 AA95 dec r26 |
7739 4298 01F4 brne 1b |
7740 429a 22E0 ldi r18,lo8(2) |
7741 429c 30E0 ldi r19,hi8(2) |
7742 429e 420E add r4,r18 |
7743 42a0 531E adc r5,r19 |
7744 42a2 6090 0000 lds r6,ErsatzKompass |
7745 42a6 7090 0000 lds r7,(ErsatzKompass)+1 |
7746 42aa 8090 0000 lds r8,(ErsatzKompass)+2 |
7747 42ae 9090 0000 lds r9,(ErsatzKompass)+3 |
7748 42b2 2091 0000 lds r18,GIER_GRAD_FAKTOR |
7749 42b6 3091 0000 lds r19,(GIER_GRAD_FAKTOR)+1 |
7750 42ba 4091 0000 lds r20,(GIER_GRAD_FAKTOR)+2 |
7751 42be 5091 0000 lds r21,(GIER_GRAD_FAKTOR)+3 |
7752 42c2 C401 movw r24,r8 |
7753 42c4 B301 movw r22,r6 |
7754 42c6 0E94 0000 call __divmodsi4 |
7755 42ca 5901 movw r10,r18 |
7756 42cc 6A01 movw r12,r20 |
7757 42ce 3093 0000 sts (ErsatzKompassInGrad)+1,r19 |
7758 42d2 2093 0000 sts ErsatzKompassInGrad,r18 |
7759 42d6 021B sub r16,r18 |
7760 42d8 130B sbc r17,r19 |
7761 42da C801 movw r24,r16 |
7762 42dc 845E subi r24,lo8(-(540)) |
7763 42de 9D4F sbci r25,hi8(-(540)) |
7764 42e0 68E6 ldi r22,lo8(360) |
7765 42e2 71E0 ldi r23,hi8(360) |
7766 42e4 0E94 0000 call __divmodhi4 |
7767 42e8 9C01 movw r18,r24 |
7768 42ea 245B subi r18,lo8(-(-180)) |
7769 42ec 3040 sbci r19,hi8(-(-180)) |
7770 42ee 8091 0000 lds r24,KompassSignalSchlecht |
7771 42f2 9091 0000 lds r25,(KompassSignalSchlecht)+1 |
7772 42f6 0097 sbiw r24,0 |
7773 42f8 01F0 breq .L622 |
7774 42fa 0197 sbiw r24,1 |
7775 42fc 9093 0000 sts (KompassSignalSchlecht)+1,r25 |
7776 4300 8093 0000 sts KompassSignalSchlecht,r24 |
7777 4304 00C0 rjmp .L623 |
7778 .L622: |
7779 4306 49E1 ldi r20,lo8(25) |
7780 4308 E416 cp r14,r20 |
7781 430a F104 cpc r15,__zero_reg__ |
7782 430c 04F4 brge .L623 |
7783 430e 8091 0000 lds r24,GierGyroFehler |
7784 4312 9091 0000 lds r25,(GierGyroFehler)+1 |
7785 4316 820F add r24,r18 |
7786 4318 931F adc r25,r19 |
7787 431a 9093 0000 sts (GierGyroFehler)+1,r25 |
7788 431e 8093 0000 sts GierGyroFehler,r24 |
7789 4322 8091 0000 lds r24,NeueKompassRichtungMerken |
7790 4326 8823 tst r24 |
7791 4328 01F0 breq .L623 |
7792 432a 8150 subi r24,lo8(-(-1)) |
7793 432c 8093 0000 sts NeueKompassRichtungMerken,r24 |
7794 4330 8823 tst r24 |
7795 4332 01F4 brne .L623 |
7796 4334 B092 0000 sts (KompassSollWert)+1,r11 |
7797 4338 A092 0000 sts KompassSollWert,r10 |
7798 .L623: |
7799 433c 8091 0000 lds r24,KompassSignalSchlecht |
7800 4340 9091 0000 lds r25,(KompassSignalSchlecht)+1 |
7801 4344 892B or r24,r25 |
7802 4346 01F4 brne .L627 |
7803 4348 8091 0000 lds r24,KompassFusion |
7804 434c 9927 clr r25 |
7805 434e 289F mul r18,r24 |
7806 4350 B001 movw r22,r0 |
7807 4352 299F mul r18,r25 |
7808 4354 700D add r23,r0 |
7809 4356 389F mul r19,r24 |
7810 4358 700D add r23,r0 |
7811 435a 1124 clr r1 |
7812 435c CB01 movw r24,r22 |
7813 435e B201 movw r22,r4 |
7814 4360 0E94 0000 call __divmodhi4 |
7815 4364 CB01 movw r24,r22 |
7816 4366 AA27 clr r26 |
7817 4368 97FD sbrc r25,7 |
7818 436a A095 com r26 |
7819 436c BA2F mov r27,r26 |
7820 436e 680E add r6,r24 |
7821 4370 791E adc r7,r25 |
7822 4372 8A1E adc r8,r26 |
7823 4374 9B1E adc r9,r27 |
7824 4376 6092 0000 sts ErsatzKompass,r6 |
7825 437a 7092 0000 sts (ErsatzKompass)+1,r7 |
7826 437e 8092 0000 sts (ErsatzKompass)+2,r8 |
7827 4382 9092 0000 sts (ErsatzKompass)+3,r9 |
7828 .L627: |
7829 4386 8091 0000 lds r24,NeueKompassRichtungMerken |
7830 438a 8823 tst r24 |
7831 438c 01F4 brne .L614 |
7832 438e 8091 0000 lds r24,KompassSollWert |
7833 4392 9091 0000 lds r25,(KompassSollWert)+1 |
7834 4396 2091 0000 lds r18,ErsatzKompassInGrad |
7835 439a 3091 0000 lds r19,(ErsatzKompassInGrad)+1 |
7836 439e 821B sub r24,r18 |
7837 43a0 930B sbc r25,r19 |
7838 43a2 845E subi r24,lo8(-(540)) |
7839 43a4 9D4F sbci r25,hi8(-(540)) |
7840 43a6 68E6 ldi r22,lo8(360) |
7841 43a8 71E0 ldi r23,hi8(360) |
7842 43aa 0E94 0000 call __divmodhi4 |
7843 43ae 9C01 movw r18,r24 |
7844 43b0 245B subi r18,lo8(-(-180)) |
7845 43b2 3040 sbci r19,hi8(-(-180)) |
7846 43b4 8091 0000 lds r24,Parameter_KompassWirkung |
7847 43b8 8695 lsr r24 |
7848 43ba 9927 clr r25 |
7849 43bc 289F mul r18,r24 |
7850 43be D001 movw r26,r0 |
7851 43c0 299F mul r18,r25 |
7852 43c2 B00D add r27,r0 |
7853 43c4 389F mul r19,r24 |
7854 43c6 B00D add r27,r0 |
7855 43c8 1124 clr r1 |
7856 43ca 9D01 movw r18,r26 |
7857 43cc B7FF sbrs r27,7 |
7858 43ce 00C0 rjmp .L629 |
7859 43d0 215F subi r18,lo8(-(15)) |
7860 43d2 3F4F sbci r19,hi8(-(15)) |
7861 .L629: |
7862 43d4 F4E0 ldi r31,4 |
7863 43d6 3595 1: asr r19 |
7864 43d8 2795 ror r18 |
7865 43da FA95 dec r31 |
7866 43dc 01F4 brne 1b |
7867 43de 3093 0000 sts (CompassGierSetpoint)+1,r19 |
7868 43e2 2093 0000 sts CompassGierSetpoint,r18 |
7869 43e6 00C0 rjmp .L631 |
7870 .L614: |
7871 43e8 1092 0000 sts (CompassGierSetpoint)+1,__zero_reg__ |
7872 43ec 1092 0000 sts CompassGierSetpoint,__zero_reg__ |
7873 .L631: |
7874 43f0 8091 0000 lds r24,TrichterFlug |
7875 43f4 8823 tst r24 |
7876 43f6 01F0 breq .L632 |
7877 43f8 1092 0000 sts SummeRoll,__zero_reg__ |
7878 43fc 1092 0000 sts (SummeRoll)+1,__zero_reg__ |
7879 4400 1092 0000 sts (SummeRoll)+2,__zero_reg__ |
7880 4404 1092 0000 sts (SummeRoll)+3,__zero_reg__ |
7881 4408 1092 0000 sts SummeNick,__zero_reg__ |
7882 440c 1092 0000 sts (SummeNick)+1,__zero_reg__ |
7883 4410 1092 0000 sts (SummeNick)+2,__zero_reg__ |
7884 4414 1092 0000 sts (SummeNick)+3,__zero_reg__ |
7885 .L632: |
7886 4418 F090 0000 lds r15,Looping_Nick |
7887 441c FF20 tst r15 |
7888 441e 01F4 brne .L633 |
7889 4420 8091 0000 lds r24,IntegralFaktor |
7890 4424 282F mov r18,r24 |
7891 4426 3327 clr r19 |
7892 4428 4427 clr r20 |
7893 442a 5527 clr r21 |
7894 442c 8091 0000 lds r24,IntegralNick |
7895 4430 9091 0000 lds r25,(IntegralNick)+1 |
7896 4434 A091 0000 lds r26,(IntegralNick)+2 |
7897 4438 B091 0000 lds r27,(IntegralNick)+3 |
7898 443c BC01 movw r22,r24 |
7899 443e CD01 movw r24,r26 |
7900 4440 0E94 0000 call __mulsi3 |
7901 4444 DC01 movw r26,r24 |
7902 4446 CB01 movw r24,r22 |
7903 4448 BC01 movw r22,r24 |
7904 444a CD01 movw r24,r26 |
7905 444c 28EF ldi r18,lo8(11000) |
7906 444e 3AE2 ldi r19,hi8(11000) |
7907 4450 40E0 ldi r20,hlo8(11000) |
7908 4452 50E0 ldi r21,hhi8(11000) |
7909 4454 0E94 0000 call __divmodsi4 |
7910 4458 3901 movw r6,r18 |
7911 445a 00C0 rjmp .L634 |
7912 .L633: |
7913 445c 6624 clr r6 |
7914 445e 7724 clr r7 |
7915 .L634: |
7916 4460 E090 0000 lds r14,Looping_Roll |
7917 4464 EE20 tst r14 |
7918 4466 01F4 brne .L635 |
7919 4468 8091 0000 lds r24,IntegralFaktor |
7920 446c 282F mov r18,r24 |
7921 446e 3327 clr r19 |
7922 4470 4427 clr r20 |
7923 4472 5527 clr r21 |
7924 4474 8091 0000 lds r24,IntegralRoll |
7925 4478 9091 0000 lds r25,(IntegralRoll)+1 |
7926 447c A091 0000 lds r26,(IntegralRoll)+2 |
7927 4480 B091 0000 lds r27,(IntegralRoll)+3 |
7928 4484 BC01 movw r22,r24 |
7929 4486 CD01 movw r24,r26 |
7930 4488 0E94 0000 call __mulsi3 |
7931 448c DC01 movw r26,r24 |
7932 448e CB01 movw r24,r22 |
7933 4490 BC01 movw r22,r24 |
7934 4492 CD01 movw r24,r26 |
7935 4494 28EF ldi r18,lo8(11000) |
7936 4496 3AE2 ldi r19,hi8(11000) |
7937 4498 40E0 ldi r20,hlo8(11000) |
7938 449a 50E0 ldi r21,hhi8(11000) |
7939 449c 0E94 0000 call __divmodsi4 |
7940 44a0 2901 movw r4,r18 |
7941 44a2 00C0 rjmp .L636 |
7942 .L635: |
7943 44a4 4424 clr r4 |
7944 44a6 5524 clr r5 |
7945 .L636: |
7946 44a8 8091 0000 lds r24,TrimNick |
7947 44ac 9091 0000 lds r25,(TrimNick)+1 |
7948 44b0 893C cpi r24,201 |
7949 44b2 9105 cpc r25,__zero_reg__ |
7950 44b4 04F0 brlt .L637 |
7951 44b6 88EC ldi r24,lo8(200) |
7952 44b8 90E0 ldi r25,hi8(200) |
7953 44ba 00C0 rjmp .L894 |
7954 .L637: |
7955 44bc 8853 subi r24,lo8(-200) |
7956 44be 9F4F sbci r25,hi8(-200) |
7957 44c0 04F4 brge .L638 |
7958 44c2 88E3 ldi r24,lo8(-200) |
7959 44c4 9FEF ldi r25,hi8(-200) |
7960 .L894: |
7961 44c6 9093 0000 sts (TrimNick)+1,r25 |
7962 44ca 8093 0000 sts TrimNick,r24 |
7963 .L638: |
7964 44ce 8091 0000 lds r24,TrimRoll |
7965 44d2 9091 0000 lds r25,(TrimRoll)+1 |
7966 44d6 893C cpi r24,201 |
7967 44d8 9105 cpc r25,__zero_reg__ |
7968 44da 04F0 brlt .L640 |
7969 44dc 88EC ldi r24,lo8(200) |
7970 44de 90E0 ldi r25,hi8(200) |
7971 44e0 00C0 rjmp .L895 |
7972 .L640: |
7973 44e2 8853 subi r24,lo8(-200) |
7974 44e4 9F4F sbci r25,hi8(-200) |
7975 44e6 04F4 brge .L641 |
7976 44e8 88E3 ldi r24,lo8(-200) |
7977 44ea 9FEF ldi r25,hi8(-200) |
7978 .L895: |
7979 44ec 9093 0000 sts (TrimRoll)+1,r25 |
7980 44f0 8093 0000 sts TrimRoll,r24 |
7981 .L641: |
7982 44f4 8091 0000 lds r24,MesswertNick |
7983 44f8 9091 0000 lds r25,(MesswertNick)+1 |
7984 44fc AA27 clr r26 |
7985 44fe 97FD sbrc r25,7 |
7986 4500 A095 com r26 |
7987 4502 BA2F mov r27,r26 |
7988 4504 2091 0000 lds r18,GyroFaktor |
7989 4508 A22E mov r10,r18 |
7990 450a BB24 clr r11 |
7991 450c CC24 clr r12 |
7992 450e DD24 clr r13 |
7993 4510 BC01 movw r22,r24 |
7994 4512 CD01 movw r24,r26 |
7995 4514 A601 movw r20,r12 |
7996 4516 9501 movw r18,r10 |
7997 4518 0E94 0000 call __mulsi3 |
7998 451c 9B01 movw r18,r22 |
7999 451e AC01 movw r20,r24 |
8000 4520 8091 0000 lds r24,TrimNick |
8001 4524 9091 0000 lds r25,(TrimNick)+1 |
8002 4528 AA27 clr r26 |
8003 452a 97FD sbrc r25,7 |
8004 452c A095 com r26 |
8005 452e BA2F mov r27,r26 |
8006 4530 E7E0 ldi r30,7 |
8007 4532 880F 1: lsl r24 |
8008 4534 991F rol r25 |
8009 4536 AA1F rol r26 |
8010 4538 BB1F rol r27 |
8011 453a EA95 dec r30 |
8012 453c 01F4 brne 1b |
8013 453e 280F add r18,r24 |
8014 4540 391F adc r19,r25 |
8015 4542 4A1F adc r20,r26 |
8016 4544 5B1F adc r21,r27 |
8017 4546 57FF sbrs r21,7 |
8018 4548 00C0 rjmp .L643 |
8019 454a 215C subi r18,lo8(-(63)) |
8020 454c 3F4F sbci r19,hi8(-(63)) |
8021 454e 4F4F sbci r20,hlo8(-(63)) |
8022 4550 5F4F sbci r21,hhi8(-(63)) |
8023 .L643: |
8024 4552 76E0 ldi r23,6 |
8025 4554 5595 1: asr r21 |
8026 4556 4795 ror r20 |
8027 4558 3795 ror r19 |
8028 455a 2795 ror r18 |
8029 455c 7A95 dec r23 |
8030 455e 01F4 brne 1b |
8031 4560 8301 movw r16,r6 |
8032 4562 020F add r16,r18 |
8033 4564 131F adc r17,r19 |
8034 4566 1093 0000 sts (MesswertNick)+1,r17 |
8035 456a 0093 0000 sts MesswertNick,r16 |
8036 456e 8091 0000 lds r24,MesswertRoll |
8037 4572 9091 0000 lds r25,(MesswertRoll)+1 |
8038 4576 AA27 clr r26 |
8039 4578 97FD sbrc r25,7 |
8040 457a A095 com r26 |
8041 457c BA2F mov r27,r26 |
8042 457e BC01 movw r22,r24 |
8043 4580 CD01 movw r24,r26 |
8044 4582 A601 movw r20,r12 |
8045 4584 9501 movw r18,r10 |
8046 4586 0E94 0000 call __mulsi3 |
8047 458a 9B01 movw r18,r22 |
8048 458c AC01 movw r20,r24 |
8049 458e 8091 0000 lds r24,TrimRoll |
8050 4592 9091 0000 lds r25,(TrimRoll)+1 |
8051 4596 AA27 clr r26 |
8052 4598 97FD sbrc r25,7 |
8053 459a A095 com r26 |
8054 459c BA2F mov r27,r26 |
8055 459e 67E0 ldi r22,7 |
8056 45a0 880F 1: lsl r24 |
8057 45a2 991F rol r25 |
8058 45a4 AA1F rol r26 |
8059 45a6 BB1F rol r27 |
8060 45a8 6A95 dec r22 |
8061 45aa 01F4 brne 1b |
8062 45ac 280F add r18,r24 |
8063 45ae 391F adc r19,r25 |
8064 45b0 4A1F adc r20,r26 |
8065 45b2 5B1F adc r21,r27 |
8066 45b4 57FF sbrs r21,7 |
8067 45b6 00C0 rjmp .L644 |
8068 45b8 215C subi r18,lo8(-(63)) |
8069 45ba 3F4F sbci r19,hi8(-(63)) |
8070 45bc 4F4F sbci r20,hlo8(-(63)) |
8071 45be 5F4F sbci r21,hhi8(-(63)) |
8072 .L644: |
8073 45c0 F6E0 ldi r31,6 |
8074 45c2 5595 1: asr r21 |
8075 45c4 4795 ror r20 |
8076 45c6 3795 ror r19 |
8077 45c8 2795 ror r18 |
8078 45ca FA95 dec r31 |
8079 45cc 01F4 brne 1b |
8080 45ce 4201 movw r8,r4 |
8081 45d0 820E add r8,r18 |
8082 45d2 931E adc r9,r19 |
8083 45d4 9092 0000 sts (MesswertRoll)+1,r9 |
8084 45d8 8092 0000 sts MesswertRoll,r8 |
8085 45dc 8091 0000 lds r24,MesswertGier |
8086 45e0 9091 0000 lds r25,(MesswertGier)+1 |
8087 45e4 880F add r24,r24 |
8088 45e6 991F adc r25,r25 |
8089 45e8 AA27 clr r26 |
8090 45ea 97FD sbrc r25,7 |
8091 45ec A095 com r26 |
8092 45ee BA2F mov r27,r26 |
8093 45f0 2091 0000 lds r18,GyroFaktorGier |
8094 45f4 3327 clr r19 |
8095 45f6 4427 clr r20 |
8096 45f8 5527 clr r21 |
8097 45fa BC01 movw r22,r24 |
8098 45fc CD01 movw r24,r26 |
8099 45fe 0E94 0000 call __mulsi3 |
8100 4602 5B01 movw r10,r22 |
8101 4604 6C01 movw r12,r24 |
8102 4606 97FF sbrs r25,7 |
8103 4608 00C0 rjmp .L645 |
8104 460a 2FE3 ldi r18,lo8(63) |
8105 460c 30E0 ldi r19,hi8(63) |
8106 460e 40E0 ldi r20,hlo8(63) |
8107 4610 50E0 ldi r21,hhi8(63) |
8108 4612 A20E add r10,r18 |
8109 4614 B31E adc r11,r19 |
8110 4616 C41E adc r12,r20 |
8111 4618 D51E adc r13,r21 |
8112 .L645: |
8113 461a E6E0 ldi r30,6 |
8114 461c D594 1: asr r13 |
8115 461e C794 ror r12 |
8116 4620 B794 ror r11 |
8117 4622 A794 ror r10 |
8118 4624 EA95 dec r30 |
8119 4626 01F4 brne 1b |
8120 4628 8091 0000 lds r24,IntegralFaktorGier |
8121 462c 282F mov r18,r24 |
8122 462e 3327 clr r19 |
8123 4630 4427 clr r20 |
8124 4632 5527 clr r21 |
8125 4634 8091 0000 lds r24,Integral_Gier |
8126 4638 9091 0000 lds r25,(Integral_Gier)+1 |
8127 463c A091 0000 lds r26,(Integral_Gier)+2 |
8128 4640 B091 0000 lds r27,(Integral_Gier)+3 |
8129 4644 BC01 movw r22,r24 |
8130 4646 CD01 movw r24,r26 |
8131 4648 0E94 0000 call __mulsi3 |
8132 464c DC01 movw r26,r24 |
8133 464e CB01 movw r24,r22 |
8134 4650 BC01 movw r22,r24 |
8135 4652 CD01 movw r24,r26 |
8136 4654 20EF ldi r18,lo8(22000) |
8137 4656 35E5 ldi r19,hi8(22000) |
8138 4658 40E0 ldi r20,hlo8(22000) |
8139 465a 50E0 ldi r21,hhi8(22000) |
8140 465c 0E94 0000 call __divmodsi4 |
8141 4660 B501 movw r22,r10 |
8142 4662 620F add r22,r18 |
8143 4664 731F adc r23,r19 |
8144 4666 7093 0000 sts (MesswertGier)+1,r23 |
8145 466a 6093 0000 sts MesswertGier,r22 |
8146 466e 0150 subi r16,lo8(4097) |
8147 4670 1041 sbci r17,hi8(4097) |
8148 4672 04F0 brlt .L646 |
8149 4674 80E0 ldi r24,lo8(4096) |
8150 4676 90E1 ldi r25,hi8(4096) |
8151 4678 9093 0000 sts (MesswertNick)+1,r25 |
8152 467c 8093 0000 sts MesswertNick,r24 |
8153 .L646: |
8154 4680 8091 0000 lds r24,MesswertNick |
8155 4684 9091 0000 lds r25,(MesswertNick)+1 |
8156 4688 8050 subi r24,lo8(-4096) |
8157 468a 904F sbci r25,hi8(-4096) |
8158 468c 04F4 brge .L647 |
8159 468e 80E0 ldi r24,lo8(-4096) |
8160 4690 90EF ldi r25,hi8(-4096) |
8161 4692 9093 0000 sts (MesswertNick)+1,r25 |
8162 4696 8093 0000 sts MesswertNick,r24 |
8163 .L647: |
8164 469a 51E0 ldi r21,lo8(4097) |
8165 469c 8516 cp r8,r21 |
8166 469e 50E1 ldi r21,hi8(4097) |
8167 46a0 9506 cpc r9,r21 |
8168 46a2 04F0 brlt .L648 |
8169 46a4 80E0 ldi r24,lo8(4096) |
8170 46a6 90E1 ldi r25,hi8(4096) |
8171 46a8 9093 0000 sts (MesswertRoll)+1,r25 |
8172 46ac 8093 0000 sts MesswertRoll,r24 |
8173 .L648: |
8174 46b0 8091 0000 lds r24,MesswertRoll |
8175 46b4 9091 0000 lds r25,(MesswertRoll)+1 |
8176 46b8 8050 subi r24,lo8(-4096) |
8177 46ba 904F sbci r25,hi8(-4096) |
8178 46bc 04F4 brge .L649 |
8179 46be 80E0 ldi r24,lo8(-4096) |
8180 46c0 90EF ldi r25,hi8(-4096) |
8181 46c2 9093 0000 sts (MesswertRoll)+1,r25 |
8182 46c6 8093 0000 sts MesswertRoll,r24 |
8183 .L649: |
8184 46ca 6150 subi r22,lo8(4097) |
8185 46cc 7041 sbci r23,hi8(4097) |
8186 46ce 04F0 brlt .L650 |
8187 46d0 80E0 ldi r24,lo8(4096) |
8188 46d2 90E1 ldi r25,hi8(4096) |
8189 46d4 9093 0000 sts (MesswertGier)+1,r25 |
8190 46d8 8093 0000 sts MesswertGier,r24 |
8191 .L650: |
8192 46dc 8091 0000 lds r24,MesswertGier |
8193 46e0 9091 0000 lds r25,(MesswertGier)+1 |
8194 46e4 8050 subi r24,lo8(-4096) |
8195 46e6 904F sbci r25,hi8(-4096) |
8196 46e8 04F4 brge .L651 |
8197 46ea 80E0 ldi r24,lo8(-4096) |
8198 46ec 90EF ldi r25,hi8(-4096) |
8199 46ee 9093 0000 sts (MesswertGier)+1,r25 |
8200 46f2 8093 0000 sts MesswertGier,r24 |
8201 .L651: |
8202 46f6 8091 0000 lds r24,BattLowVoltageWarning |
8203 46fa 482F mov r20,r24 |
8204 46fc 5527 clr r21 |
8205 46fe 8091 0000 lds r24,UBat |
8206 4702 9091 0000 lds r25,(UBat)+1 |
8207 4706 4817 cp r20,r24 |
8208 4708 5907 cpc r21,r25 |
8209 470a 04F4 brge .L652 |
8210 470c 2091 0000 lds r18,UBat |
8211 4710 3091 0000 lds r19,(UBat)+1 |
8212 4714 0981 ldd r16,Y+1 |
8213 4716 1A81 ldd r17,Y+2 |
8214 4718 049F mul r16,r20 |
8215 471a C001 movw r24,r0 |
8216 471c 059F mul r16,r21 |
8217 471e 900D add r25,r0 |
8218 4720 149F mul r17,r20 |
8219 4722 900D add r25,r0 |
8220 4724 1124 clr r1 |
8221 4726 B901 movw r22,r18 |
8222 4728 0E94 0000 call __udivmodhi4 |
8223 472c 7A83 std Y+2,r23 |
8224 472e 6983 std Y+1,r22 |
8225 .L652: |
8226 4730 2981 ldd r18,Y+1 |
8227 4732 3A81 ldd r19,Y+2 |
8228 4734 220F lsl r18 |
8229 4736 331F rol r19 |
8230 4738 220F lsl r18 |
8231 473a 331F rol r19 |
8232 473c 3A83 std Y+2,r19 |
8233 473e 2983 std Y+1,r18 |
8234 4740 4091 0000 lds r20,Parameter_GlobalConfig |
8235 4744 40FD sbrc r20,0 |
8236 4746 00C0 rjmp .+4 |
8237 4748 0C94 0000 jmp .L653 |
8238 474c EE20 tst r14 |
8239 474e 01F0 breq .+4 |
8240 4750 0C94 0000 jmp .L653 |
8241 4754 FF20 tst r15 |
8242 4756 01F0 breq .+4 |
8243 4758 0C94 0000 jmp .L653 |
8244 475c 00E0 ldi r16,lo8(0) |
8245 475e 10E0 ldi r17,hi8(0) |
8246 4760 4801 movw r8,r16 |
8247 4762 8091 0000 lds r24,HoverGas |
8248 4766 9091 0000 lds r25,(HoverGas)+1 |
8249 476a 9093 0000 sts (DebugOut+44)+1,r25 |
8250 476e 8093 0000 sts DebugOut+44,r24 |
8251 4772 2091 0000 lds r18,BaroExpandActive |
8252 4776 3091 0000 lds r19,(BaroExpandActive)+1 |
8253 477a 2115 cp r18,__zero_reg__ |
8254 477c 3105 cpc r19,__zero_reg__ |
8255 477e 01F0 breq .+2 |
8256 4780 00C0 rjmp .L654 |
8257 4782 8091 0000 lds r24,MessLuftdruck |
8258 4786 9091 0000 lds r25,(MessLuftdruck)+1 |
8259 478a 8959 subi r24,lo8(921) |
8260 478c 9340 sbci r25,hi8(921) |
8261 478e 00F0 brlo .L655 |
8262 4790 87B5 in r24,71-0x20 |
8263 4792 803F cpi r24,lo8(-16) |
8264 4794 00F4 brsh .L656 |
8265 4796 8091 0000 lds r24,ExpandBaro |
8266 479a 8150 subi r24,lo8(-(-1)) |
8267 479c 00C0 rjmp .L896 |
8268 .L656: |
8269 479e 81E0 ldi r24,lo8(1) |
8270 47a0 8093 0000 sts BaroAtLowerLimit.26,r24 |
8271 47a4 00C0 rjmp .L663 |
8272 .L655: |
8273 47a6 8091 0000 lds r24,MessLuftdruck |
8274 47aa 9091 0000 lds r25,(MessLuftdruck)+1 |
8275 47ae 8436 cpi r24,100 |
8276 47b0 9105 cpc r25,__zero_reg__ |
8277 47b2 00F4 brsh .L659 |
8278 47b4 87B5 in r24,71-0x20 |
8279 47b6 8031 cpi r24,lo8(16) |
8280 47b8 00F0 brlo .L660 |
8281 47ba 8091 0000 lds r24,ExpandBaro |
8282 47be 8F5F subi r24,lo8(-(1)) |
8283 .L896: |
8284 47c0 8093 0000 sts ExpandBaro,r24 |
8285 47c4 9FE0 ldi r25,lo8(15) |
8286 47c6 8902 muls r24,r25 |
8287 47c8 9001 movw r18,r0 |
8288 47ca 1124 clr r1 |
8289 47cc 8091 0000 lds r24,DruckOffsetSetting |
8290 47d0 821B sub r24,r18 |
8291 47d2 87BD out 71-0x20,r24 |
8292 47d4 8CE2 ldi r24,lo8(300) |
8293 47d6 91E0 ldi r25,hi8(300) |
8294 47d8 9093 0000 sts (beeptime)+1,r25 |
8295 47dc 8093 0000 sts beeptime,r24 |
8296 47e0 8EE5 ldi r24,lo8(350) |
8297 47e2 91E0 ldi r25,hi8(350) |
8298 47e4 9093 0000 sts (BaroExpandActive)+1,r25 |
8299 47e8 8093 0000 sts BaroExpandActive,r24 |
8300 47ec 00C0 rjmp .L663 |
8301 .L660: |
8302 47ee 81E0 ldi r24,lo8(1) |
8303 47f0 8093 0000 sts BaroAtUpperLimit.25,r24 |
8304 47f4 00C0 rjmp .L663 |
8305 .L659: |
8306 47f6 F092 0000 sts BaroAtUpperLimit.25,r15 |
8307 47fa F092 0000 sts BaroAtLowerLimit.26,r15 |
8308 47fe 00C0 rjmp .L663 |
8309 .L654: |
8310 4800 8091 0000 lds r24,HoehenWert |
8311 4804 9091 0000 lds r25,(HoehenWert)+1 |
8312 4808 A091 0000 lds r26,(HoehenWert)+2 |
8313 480c B091 0000 lds r27,(HoehenWert)+3 |
8314 4810 64E0 ldi r22,4 |
8315 4812 880F 1: lsl r24 |
8316 4814 991F rol r25 |
8317 4816 AA1F rol r26 |
8318 4818 BB1F rol r27 |
8319 481a 6A95 dec r22 |
8320 481c 01F4 brne 1b |
8321 481e 8093 0000 sts SummenHoehe,r24 |
8322 4822 9093 0000 sts (SummenHoehe)+1,r25 |
8323 4826 A093 0000 sts (SummenHoehe)+2,r26 |
8324 482a B093 0000 sts (SummenHoehe)+3,r27 |
8325 482e 1093 0000 sts (VarioMeter)+1,r17 |
8326 4832 0093 0000 sts VarioMeter,r16 |
8327 4836 2150 subi r18,lo8(-(-1)) |
8328 4838 3040 sbci r19,hi8(-(-1)) |
8329 483a 3093 0000 sts (BaroExpandActive)+1,r19 |
8330 483e 2093 0000 sts BaroExpandActive,r18 |
8331 .L663: |
8332 4842 2091 0000 lds r18,Parameter_HoehenSchalter |
8333 4846 41FF sbrs r20,1 |
8334 4848 00C0 rjmp .L664 |
8335 484a 2233 cpi r18,lo8(50) |
8336 484c 00F4 brsh .L665 |
8337 484e 8091 0000 lds r24,delay.24 |
8338 4852 8150 subi r24,lo8(-(-1)) |
8339 4854 8093 0000 sts delay.24,r24 |
8340 4858 8F3F cpi r24,lo8(-1) |
8341 485a 01F0 breq .+2 |
8342 485c 00C0 rjmp .L671 |
8343 485e 8091 0000 lds r24,SpeakHoTT |
8344 4862 8823 tst r24 |
8345 4864 01F4 brne .L667 |
8346 4866 8091 0000 lds r24,HoehenReglerAktiv |
8347 486a 8823 tst r24 |
8348 486c 01F0 breq .L667 |
8349 486e 88E2 ldi r24,lo8(40) |
8350 4870 8093 0000 sts SpeakHoTT,r24 |
8351 .L667: |
8352 4874 1092 0000 sts HoehenReglerAktiv,__zero_reg__ |
8353 4878 8091 0000 lds r24,HoehenWert |
8354 487c 9091 0000 lds r25,(HoehenWert)+1 |
8355 4880 A091 0000 lds r26,(HoehenWert)+2 |
8356 4884 B091 0000 lds r27,(HoehenWert)+3 |
8357 4888 8093 0000 sts SollHoehe,r24 |
8358 488c 9093 0000 sts (SollHoehe)+1,r25 |
8359 4890 A093 0000 sts (SollHoehe)+2,r26 |
8360 4894 B093 0000 sts (SollHoehe)+3,r27 |
8361 4898 81E0 ldi r24,lo8(1) |
8362 489a 8093 0000 sts delay.24,r24 |
8363 489e 00C0 rjmp .L671 |
8364 .L665: |
8365 48a0 2734 cpi r18,lo8(71) |
8366 48a2 00F0 brlo .L671 |
8367 48a4 8091 0000 lds r24,SpeakHoTT |
8368 48a8 8823 tst r24 |
8369 48aa 01F4 brne .L670 |
8370 48ac 8091 0000 lds r24,HoehenReglerAktiv |
8371 48b0 8823 tst r24 |
8372 48b2 01F4 brne .L670 |
8373 48b4 87E2 ldi r24,lo8(39) |
8374 48b6 8093 0000 sts SpeakHoTT,r24 |
8375 .L670: |
8376 48ba 88EC ldi r24,lo8(-56) |
8377 48bc 8093 0000 sts delay.24,r24 |
8378 48c0 00C0 rjmp .L897 |
8379 .L664: |
8380 48c2 8091 0000 lds r24,ExternHoehenValue |
8381 48c6 9091 0000 lds r25,(ExternHoehenValue)+1 |
8382 48ca 820F add r24,r18 |
8383 48cc 911D adc r25,__zero_reg__ |
8384 48ce 2091 0000 lds r18,EE_Parameter+18 |
8385 48d2 3327 clr r19 |
8386 48d4 829F mul r24,r18 |
8387 48d6 A001 movw r20,r0 |
8388 48d8 839F mul r24,r19 |
8389 48da 500D add r21,r0 |
8390 48dc 929F mul r25,r18 |
8391 48de 500D add r21,r0 |
8392 48e0 1124 clr r1 |
8393 48e2 CA01 movw r24,r20 |
8394 48e4 AA27 clr r26 |
8395 48e6 97FD sbrc r25,7 |
8396 48e8 A095 com r26 |
8397 48ea BA2F mov r27,r26 |
8398 48ec 8093 0000 sts SollHoehe,r24 |
8399 48f0 9093 0000 sts (SollHoehe)+1,r25 |
8400 48f4 A093 0000 sts (SollHoehe)+2,r26 |
8401 48f8 B093 0000 sts (SollHoehe)+3,r27 |
8402 .L897: |
8403 48fc 81E0 ldi r24,lo8(1) |
8404 48fe 8093 0000 sts HoehenReglerAktiv,r24 |
8405 .L671: |
8406 4902 8091 0000 lds r24,IntegralNick |
8407 4906 9091 0000 lds r25,(IntegralNick)+1 |
8408 490a A091 0000 lds r26,(IntegralNick)+2 |
8409 490e B091 0000 lds r27,(IntegralNick)+3 |
8410 4912 E090 0000 lds r14,GIER_GRAD_FAKTOR |
8411 4916 F090 0000 lds r15,(GIER_GRAD_FAKTOR)+1 |
8412 491a 0091 0000 lds r16,(GIER_GRAD_FAKTOR)+2 |
8413 491e 1091 0000 lds r17,(GIER_GRAD_FAKTOR)+3 |
8414 4922 BC01 movw r22,r24 |
8415 4924 CD01 movw r24,r26 |
8416 4926 A801 movw r20,r16 |
8417 4928 9701 movw r18,r14 |
8418 492a 0E94 0000 call __divmodsi4 |
8419 492e 5901 movw r10,r18 |
8420 4930 6A01 movw r12,r20 |
8421 4932 8091 0000 lds r24,IntegralRoll |
8422 4936 9091 0000 lds r25,(IntegralRoll)+1 |
8423 493a A091 0000 lds r26,(IntegralRoll)+2 |
8424 493e B091 0000 lds r27,(IntegralRoll)+3 |
8425 4942 BC01 movw r22,r24 |
8426 4944 CD01 movw r24,r26 |
8427 4946 A801 movw r20,r16 |
8428 4948 9701 movw r18,r14 |
8429 494a 0E94 0000 call __divmodsi4 |
8430 494e B901 movw r22,r18 |
8431 4950 C501 movw r24,r10 |
8432 4952 0E94 0000 call ihypot |
8433 4956 5C01 movw r10,r24 |
8434 4958 CC97 sbiw r24,60 |
8435 495a 04F0 brlt .L672 |
8436 495c 5CE3 ldi r21,lo8(60) |
8437 495e A52E mov r10,r21 |
8438 4960 B12C mov r11,__zero_reg__ |
8439 .L672: |
8440 4962 C501 movw r24,r10 |
8441 4964 0E94 0000 call c_cos_8192 |
8442 4968 5C01 movw r10,r24 |
8443 496a 80E2 ldi r24,lo8(32) |
8444 496c 8093 0000 sts VarioCharacter,r24 |
8445 4970 1092 0000 sts (AltitudeSetpointTrimming)+1,__zero_reg__ |
8446 4974 1092 0000 sts AltitudeSetpointTrimming,__zero_reg__ |
8447 4978 8091 0000 lds r24,HoehenReglerAktiv |
8448 497c 8823 tst r24 |
8449 497e 01F4 brne .+2 |
8450 4980 00C0 rjmp .L673 |
8451 4982 8091 0000 lds r24,FC_StatusFlags |
8452 4986 9927 clr r25 |
8453 4988 9C01 movw r18,r24 |
8454 498a 2071 andi r18,lo8(16) |
8455 498c 3070 andi r19,hi8(16) |
8456 498e 84FD sbrc r24,4 |
8457 4990 00C0 rjmp .L673 |
8458 4992 8091 0000 lds r24,FC_StatusFlags2 |
8459 4996 8260 ori r24,lo8(2) |
8460 4998 8093 0000 sts FC_StatusFlags2,r24 |
8461 499c 7091 0000 lds r23,Parameter_ExtraConfig |
8462 49a0 872F mov r24,r23 |
8463 49a2 9927 clr r25 |
8464 49a4 41E0 ldi r20,lo8(1) |
8465 49a6 C42E mov r12,r20 |
8466 49a8 D12C mov r13,__zero_reg__ |
8467 49aa C822 and r12,r24 |
8468 49ac D922 and r13,r25 |
8469 49ae 80FD sbrc r24,0 |
8470 49b0 00C0 rjmp .L675 |
8471 49b2 8091 0000 lds r24,Parameter_GlobalConfig |
8472 49b6 81FD sbrc r24,1 |
8473 49b8 00C0 rjmp .L674 |
8474 .L675: |
8475 49ba C980 ldd r12,Y+1 |
8476 49bc DA80 ldd r13,Y+2 |
8477 49be 3093 0000 sts (HeightTrimming.21)+1,r19 |
8478 49c2 2093 0000 sts HeightTrimming.21,r18 |
8479 49c6 3093 0000 sts (AltitudeSetpointTrimming)+1,r19 |
8480 49ca 2093 0000 sts AltitudeSetpointTrimming,r18 |
8481 49ce 8091 0000 lds r24,FC_StatusFlags |
8482 49d2 806C ori r24,lo8(-64) |
8483 49d4 8093 0000 sts FC_StatusFlags,r24 |
8484 49d8 00C0 rjmp .L676 |
8485 .L674: |
8486 49da 8091 0000 lds r24,FC_StatusFlags |
8487 49de 81FF sbrs r24,1 |
8488 49e0 00C0 rjmp .L677 |
8489 49e2 0091 0000 lds r16,StickGasHover |
8490 49e6 1091 0000 lds r17,(StickGasHover)+1 |
8491 49ea C801 movw r24,r16 |
8492 49ec 0F96 adiw r24,15 |
8493 49ee 2090 0000 lds r2,StickGas |
8494 49f2 3090 0000 lds r3,(StickGas)+1 |
8495 49f6 8215 cp r24,r2 |
8496 49f8 9305 cpc r25,r3 |
8497 49fa 04F0 brlt .+2 |
8498 49fc 00C0 rjmp .L678 |
8499 49fe 8091 0000 lds r24,BaroAtUpperLimit.25 |
8500 4a02 8823 tst r24 |
8501 4a04 01F0 breq .+2 |
8502 4a06 00C0 rjmp .L678 |
8503 4a08 8091 0000 lds r24,FC_StatusFlags |
8504 4a0c 87FF sbrs r24,7 |
8505 4a0e 00C0 rjmp .L679 |
8506 4a10 8091 0000 lds r24,FC_StatusFlags |
8507 4a14 8F77 andi r24,lo8(127) |
8508 4a16 8093 0000 sts FC_StatusFlags,r24 |
8509 4a1a 8091 0000 lds r24,HoehenWert |
8510 4a1e 9091 0000 lds r25,(HoehenWert)+1 |
8511 4a22 A091 0000 lds r26,(HoehenWert)+2 |
8512 4a26 B091 0000 lds r27,(HoehenWert)+3 |
8513 4a2a 8093 0000 sts SollHoehe,r24 |
8514 4a2e 9093 0000 sts (SollHoehe)+1,r25 |
8515 4a32 A093 0000 sts (SollHoehe)+2,r26 |
8516 4a36 B093 0000 sts (SollHoehe)+3,r27 |
8517 .L679: |
8518 4a3a 8091 0000 lds r24,FC_StatusFlags |
8519 4a3e 8064 ori r24,lo8(64) |
8520 4a40 8093 0000 sts FC_StatusFlags,r24 |
8521 4a44 E090 0000 lds r14,Parameter_MaximumAltitude |
8522 4a48 EE20 tst r14 |
8523 4a4a 01F0 breq .L680 |
8524 4a4c 8091 0000 lds r24,SollHoehe |
8525 4a50 9091 0000 lds r25,(SollHoehe)+1 |
8526 4a54 A091 0000 lds r26,(SollHoehe)+2 |
8527 4a58 B091 0000 lds r27,(SollHoehe)+3 |
8528 4a5c BC01 movw r22,r24 |
8529 4a5e CD01 movw r24,r26 |
8530 4a60 24E6 ldi r18,lo8(100) |
8531 4a62 30E0 ldi r19,hi8(100) |
8532 4a64 40E0 ldi r20,hlo8(100) |
8533 4a66 50E0 ldi r21,hhi8(100) |
8534 4a68 0E94 0000 call __divmodsi4 |
8535 4a6c 8E2D mov r24,r14 |
8536 4a6e 9927 clr r25 |
8537 4a70 AA27 clr r26 |
8538 4a72 BB27 clr r27 |
8539 4a74 8217 cp r24,r18 |
8540 4a76 9307 cpc r25,r19 |
8541 4a78 A407 cpc r26,r20 |
8542 4a7a B507 cpc r27,r21 |
8543 4a7c 04F4 brge .L680 |
8544 4a7e D092 0000 sts (AltitudeSetpointTrimming)+1,r13 |
8545 4a82 C092 0000 sts AltitudeSetpointTrimming,r12 |
8546 4a86 00C0 rjmp .L681 |
8547 .L680: |
8548 4a88 C101 movw r24,r2 |
8549 4a8a 801B sub r24,r16 |
8550 4a8c 910B sbc r25,r17 |
8551 4a8e 0F97 sbiw r24,15 |
8552 4a90 97FF sbrs r25,7 |
8553 4a92 00C0 rjmp .L682 |
8554 4a94 9095 com r25 |
8555 4a96 8195 neg r24 |
8556 4a98 9F4F sbci r25,lo8(-1) |
8557 .L682: |
8558 4a9a 9093 0000 sts (AltitudeSetpointTrimming)+1,r25 |
8559 4a9e 8093 0000 sts AltitudeSetpointTrimming,r24 |
8560 4aa2 8BE2 ldi r24,lo8(43) |
8561 4aa4 8093 0000 sts VarioCharacter,r24 |
8562 .L681: |
8563 4aa8 1092 0000 sts WaypointTrimming,__zero_reg__ |
8564 4aac 00C0 rjmp .L683 |
8565 .L678: |
8566 4aae C801 movw r24,r16 |
8567 4ab0 0F97 sbiw r24,15 |
8568 4ab2 2816 cp r2,r24 |
8569 4ab4 3906 cpc r3,r25 |
8570 4ab6 04F4 brge .L684 |
8571 4ab8 2091 0000 lds r18,BaroAtLowerLimit.26 |
8572 4abc 2223 tst r18 |
8573 4abe 01F4 brne .L684 |
8574 4ac0 8091 0000 lds r24,FC_StatusFlags |
8575 4ac4 86FF sbrs r24,6 |
8576 4ac6 00C0 rjmp .L685 |
8577 4ac8 8091 0000 lds r24,FC_StatusFlags |
8578 4acc 8F7B andi r24,lo8(-65) |
8579 4ace 8093 0000 sts FC_StatusFlags,r24 |
8580 4ad2 8091 0000 lds r24,HoehenWert |
8581 4ad6 9091 0000 lds r25,(HoehenWert)+1 |
8582 4ada A091 0000 lds r26,(HoehenWert)+2 |
8583 4ade B091 0000 lds r27,(HoehenWert)+3 |
8584 4ae2 8093 0000 sts SollHoehe,r24 |
8585 4ae6 9093 0000 sts (SollHoehe)+1,r25 |
8586 4aea A093 0000 sts (SollHoehe)+2,r26 |
8587 4aee B093 0000 sts (SollHoehe)+3,r27 |
8588 .L685: |
8589 4af2 8091 0000 lds r24,FC_StatusFlags |
8590 4af6 8068 ori r24,lo8(-128) |
8591 4af8 8093 0000 sts FC_StatusFlags,r24 |
8592 4afc C101 movw r24,r2 |
8593 4afe 801B sub r24,r16 |
8594 4b00 910B sbc r25,r17 |
8595 4b02 0F96 adiw r24,15 |
8596 4b04 97FF sbrs r25,7 |
8597 4b06 00C0 rjmp .L686 |
8598 4b08 9095 com r25 |
8599 4b0a 8195 neg r24 |
8600 4b0c 9F4F sbci r25,lo8(-1) |
8601 .L686: |
8602 4b0e 9095 com r25 |
8603 4b10 8195 neg r24 |
8604 4b12 9F4F sbci r25,lo8(-1) |
8605 4b14 9093 0000 sts (AltitudeSetpointTrimming)+1,r25 |
8606 4b18 8093 0000 sts AltitudeSetpointTrimming,r24 |
8607 4b1c 8DE2 ldi r24,lo8(45) |
8608 4b1e 8093 0000 sts VarioCharacter,r24 |
8609 4b22 2093 0000 sts WaypointTrimming,r18 |
8610 4b26 00C0 rjmp .L683 |
8611 .L684: |
8612 4b28 8DE3 ldi r24,lo8(61) |
8613 4b2a 8093 0000 sts VarioCharacter,r24 |
8614 4b2e 6091 0000 lds r22,FromNC_AltitudeSpeed |
8615 4b32 6623 tst r22 |
8616 4b34 01F0 breq .L688 |
8617 4b36 2091 0000 lds r18,FromNC_AltitudeSetpoint |
8618 4b3a 3091 0000 lds r19,(FromNC_AltitudeSetpoint)+1 |
8619 4b3e 4091 0000 lds r20,(FromNC_AltitudeSetpoint)+2 |
8620 4b42 5091 0000 lds r21,(FromNC_AltitudeSetpoint)+3 |
8621 4b46 8091 0000 lds r24,SollHoehe |
8622 4b4a 9091 0000 lds r25,(SollHoehe)+1 |
8623 4b4e A091 0000 lds r26,(SollHoehe)+2 |
8624 4b52 B091 0000 lds r27,(SollHoehe)+3 |
8625 4b56 8217 cp r24,r18 |
8626 4b58 9307 cpc r25,r19 |
8627 4b5a A407 cpc r26,r20 |
8628 4b5c B507 cpc r27,r21 |
8629 4b5e 04F4 brge .L688 |
8630 4b60 8091 0000 lds r24,FC_StatusFlags |
8631 4b64 8064 ori r24,lo8(64) |
8632 4b66 8093 0000 sts FC_StatusFlags,r24 |
8633 4b6a 862F mov r24,r22 |
8634 4b6c 9927 clr r25 |
8635 4b6e 9093 0000 sts (AltitudeSetpointTrimming)+1,r25 |
8636 4b72 8093 0000 sts AltitudeSetpointTrimming,r24 |
8637 4b76 8AE0 ldi r24,lo8(10) |
8638 4b78 8093 0000 sts WaypointTrimming,r24 |
8639 4b7c 8EE5 ldi r24,lo8(94) |
8640 4b7e 8093 0000 sts VarioCharacter,r24 |
8641 4b82 8091 0000 lds r24,FC_StatusFlags |
8642 4b86 87FF sbrs r24,7 |
8643 4b88 00C0 rjmp .L683 |
8644 4b8a 8091 0000 lds r24,FC_StatusFlags |
8645 4b8e 8F77 andi r24,lo8(127) |
8646 4b90 00C0 rjmp .L899 |
8647 .L688: |
8648 4b92 6623 tst r22 |
8649 4b94 01F4 brne .+2 |
8650 4b96 00C0 rjmp .L691 |
8651 4b98 2091 0000 lds r18,FromNC_AltitudeSetpoint |
8652 4b9c 3091 0000 lds r19,(FromNC_AltitudeSetpoint)+1 |
8653 4ba0 4091 0000 lds r20,(FromNC_AltitudeSetpoint)+2 |
8654 4ba4 5091 0000 lds r21,(FromNC_AltitudeSetpoint)+3 |
8655 4ba8 8091 0000 lds r24,SollHoehe |
8656 4bac 9091 0000 lds r25,(SollHoehe)+1 |
8657 4bb0 A091 0000 lds r26,(SollHoehe)+2 |
8658 4bb4 B091 0000 lds r27,(SollHoehe)+3 |
8659 4bb8 2817 cp r18,r24 |
8660 4bba 3907 cpc r19,r25 |
8661 4bbc 4A07 cpc r20,r26 |
8662 4bbe 5B07 cpc r21,r27 |
8663 4bc0 04F4 brge .L691 |
8664 4bc2 8091 0000 lds r24,FC_StatusFlags |
8665 4bc6 8068 ori r24,lo8(-128) |
8666 4bc8 8093 0000 sts FC_StatusFlags,r24 |
8667 4bcc 862F mov r24,r22 |
8668 4bce 9927 clr r25 |
8669 4bd0 9095 com r25 |
8670 4bd2 8195 neg r24 |
8671 4bd4 9F4F sbci r25,lo8(-1) |
8672 4bd6 9093 0000 sts (AltitudeSetpointTrimming)+1,r25 |
8673 4bda 8093 0000 sts AltitudeSetpointTrimming,r24 |
8674 4bde 86EF ldi r24,lo8(-10) |
8675 4be0 8093 0000 sts WaypointTrimming,r24 |
8676 4be4 86E7 ldi r24,lo8(118) |
8677 4be6 8093 0000 sts VarioCharacter,r24 |
8678 4bea 8091 0000 lds r24,FC_StatusFlags |
8679 4bee 86FF sbrs r24,6 |
8680 4bf0 00C0 rjmp .L683 |
8681 4bf2 8091 0000 lds r24,FC_StatusFlags |
8682 4bf6 8F7B andi r24,lo8(-65) |
8683 .L899: |
8684 4bf8 8093 0000 sts FC_StatusFlags,r24 |
8685 4bfc 8091 0000 lds r24,HoehenWert |
8686 4c00 9091 0000 lds r25,(HoehenWert)+1 |
8687 4c04 A091 0000 lds r26,(HoehenWert)+2 |
8688 4c08 B091 0000 lds r27,(HoehenWert)+3 |
8689 4c0c 8093 0000 sts SollHoehe,r24 |
8690 4c10 9093 0000 sts (SollHoehe)+1,r25 |
8691 4c14 A093 0000 sts (SollHoehe)+2,r26 |
8692 4c18 B093 0000 sts (SollHoehe)+3,r27 |
8693 4c1c 00C0 rjmp .L683 |
8694 .L691: |
8695 4c1e 8091 0000 lds r24,FC_StatusFlags |
8696 4c22 807C andi r24,lo8(-64) |
8697 4c24 01F4 brne .+2 |
8698 4c26 00C0 rjmp .L683 |
8699 4c28 8091 0000 lds r24,WaypointTrimming |
8700 4c2c 8823 tst r24 |
8701 4c2e 01F4 brne .L695 |
8702 4c30 E090 0000 lds r14,HoehenWert |
8703 4c34 F090 0000 lds r15,(HoehenWert)+1 |
8704 4c38 0091 0000 lds r16,(HoehenWert)+2 |
8705 4c3c 1091 0000 lds r17,(HoehenWert)+3 |
8706 4c40 D801 movw r26,r16 |
8707 4c42 C701 movw r24,r14 |
8708 4c44 8058 subi r24,lo8(-(-128)) |
8709 4c46 9040 sbci r25,hi8(-(-128)) |
8710 4c48 A040 sbci r26,hlo8(-(-128)) |
8711 4c4a B040 sbci r27,hhi8(-(-128)) |
8712 4c4c 2091 0000 lds r18,SollHoehe |
8713 4c50 3091 0000 lds r19,(SollHoehe)+1 |
8714 4c54 4091 0000 lds r20,(SollHoehe)+2 |
8715 4c58 5091 0000 lds r21,(SollHoehe)+3 |
8716 4c5c 8217 cp r24,r18 |
8717 4c5e 9307 cpc r25,r19 |
8718 4c60 A407 cpc r26,r20 |
8719 4c62 B507 cpc r27,r21 |
8720 4c64 04F4 brge .L898 |
8721 4c66 D801 movw r26,r16 |
8722 4c68 C701 movw r24,r14 |
8723 4c6a 8058 subi r24,lo8(-(128)) |
8724 4c6c 9F4F sbci r25,hi8(-(128)) |
8725 4c6e AF4F sbci r26,hlo8(-(128)) |
8726 4c70 BF4F sbci r27,hhi8(-(128)) |
8727 4c72 2817 cp r18,r24 |
8728 4c74 3907 cpc r19,r25 |
8729 4c76 4A07 cpc r20,r26 |
8730 4c78 5B07 cpc r21,r27 |
8731 4c7a 04F0 brlt .L699 |
8732 .L898: |
8733 4c7c 8093 0000 sts SollHoehe,r24 |
8734 4c80 9093 0000 sts (SollHoehe)+1,r25 |
8735 4c84 A093 0000 sts (SollHoehe)+2,r26 |
8736 4c88 B093 0000 sts (SollHoehe)+3,r27 |
8737 4c8c 00C0 rjmp .L699 |
8738 .L695: |
8739 4c8e 1092 0000 sts WaypointTrimming,__zero_reg__ |
8740 .L699: |
8741 4c92 8091 0000 lds r24,FC_StatusFlags |
8742 4c96 8F73 andi r24,lo8(63) |
8743 4c98 8093 0000 sts FC_StatusFlags,r24 |
8744 4c9c 1092 0000 sts (HeightTrimming.21)+1,__zero_reg__ |
8745 4ca0 1092 0000 sts HeightTrimming.21,__zero_reg__ |
8746 4ca4 71FF sbrs r23,1 |
8747 4ca6 00C0 rjmp .L700 |
8748 4ca8 84EF ldi r24,lo8(500) |
8749 4caa 91E0 ldi r25,hi8(500) |
8750 4cac 9093 0000 sts (beeptime)+1,r25 |
8751 4cb0 8093 0000 sts beeptime,r24 |
8752 .L700: |
8753 4cb4 8091 0000 lds r24,StartTrigger |
8754 4cb8 8823 tst r24 |
8755 4cba 01F4 brne .L683 |
8756 4cbc 8091 0000 lds r24,HoehenWert |
8757 4cc0 9091 0000 lds r25,(HoehenWert)+1 |
8758 4cc4 A091 0000 lds r26,(HoehenWert)+2 |
8759 4cc8 B091 0000 lds r27,(HoehenWert)+3 |
8760 4ccc C397 sbiw r24,51 |
8761 4cce A105 cpc r26,__zero_reg__ |
8762 4cd0 B105 cpc r27,__zero_reg__ |
8763 4cd2 04F0 brlt .L683 |
8764 4cd4 81E0 ldi r24,lo8(1) |
8765 4cd6 8093 0000 sts StartTrigger,r24 |
8766 .L683: |
8767 4cda 6091 0000 lds r22,HeightTrimming.21 |
8768 4cde 7091 0000 lds r23,(HeightTrimming.21)+1 |
8769 4ce2 8091 0000 lds r24,AltitudeSetpointTrimming |
8770 4ce6 9091 0000 lds r25,(AltitudeSetpointTrimming)+1 |
8771 4cea 680F add r22,r24 |
8772 4cec 791F adc r23,r25 |
8773 4cee 7093 0000 sts (HeightTrimming.21)+1,r23 |
8774 4cf2 6093 0000 sts HeightTrimming.21,r22 |
8775 4cf6 CB01 movw r24,r22 |
8776 4cf8 77FF sbrs r23,7 |
8777 4cfa 00C0 rjmp .L703 |
8778 4cfc 8827 clr r24 |
8779 4cfe 9927 clr r25 |
8780 4d00 861B sub r24,r22 |
8781 4d02 970B sbc r25,r23 |
8782 .L703: |
8783 4d04 855F subi r24,lo8(501) |
8784 4d06 9140 sbci r25,hi8(501) |
8785 4d08 04F4 brge .+2 |
8786 4d0a 00C0 rjmp .L702 |
8787 4d0c 4091 0000 lds r20,WaypointTrimming |
8788 4d10 4423 tst r20 |
8789 4d12 01F0 breq .L704 |
8790 4d14 8091 0000 lds r24,FromNC_AltitudeSetpoint |
8791 4d18 9091 0000 lds r25,(FromNC_AltitudeSetpoint)+1 |
8792 4d1c 2091 0000 lds r18,SollHoehe |
8793 4d20 3091 0000 lds r19,(SollHoehe)+1 |
8794 4d24 821B sub r24,r18 |
8795 4d26 930B sbc r25,r19 |
8796 4d28 0996 adiw r24,9 |
8797 4d2a 4397 sbiw r24,19 |
8798 4d2c 00F4 brsh .L705 |
8799 4d2e 8091 0000 lds r24,FromNC_AltitudeSetpoint |
8800 4d32 9091 0000 lds r25,(FromNC_AltitudeSetpoint)+1 |
8801 4d36 A091 0000 lds r26,(FromNC_AltitudeSetpoint)+2 |
8802 4d3a B091 0000 lds r27,(FromNC_AltitudeSetpoint)+3 |
8803 4d3e 00C0 rjmp .L901 |
8804 .L705: |
8805 4d40 242F mov r18,r20 |
8806 4d42 3327 clr r19 |
8807 4d44 27FD sbrc r18,7 |
8808 4d46 3095 com r19 |
8809 4d48 432F mov r20,r19 |
8810 4d4a 532F mov r21,r19 |
8811 4d4c 8091 0000 lds r24,SollHoehe |
8812 4d50 9091 0000 lds r25,(SollHoehe)+1 |
8813 4d54 A091 0000 lds r26,(SollHoehe)+2 |
8814 4d58 B091 0000 lds r27,(SollHoehe)+3 |
8815 4d5c 820F add r24,r18 |
8816 4d5e 931F adc r25,r19 |
8817 4d60 A41F adc r26,r20 |
8818 4d62 B51F adc r27,r21 |
8819 .L901: |
8820 4d64 8093 0000 sts SollHoehe,r24 |
8821 4d68 9093 0000 sts (SollHoehe)+1,r25 |
8822 4d6c A093 0000 sts (SollHoehe)+2,r26 |
8823 4d70 B093 0000 sts (SollHoehe)+3,r27 |
8824 4d74 00C0 rjmp .L707 |
8825 .L704: |
8826 4d76 8091 0000 lds r24,EE_Parameter+18 |
8827 4d7a 2091 0000 lds r18,SollHoehe |
8828 4d7e 3091 0000 lds r19,(SollHoehe)+1 |
8829 4d82 4091 0000 lds r20,(SollHoehe)+2 |
8830 4d86 5091 0000 lds r21,(SollHoehe)+3 |
8831 4d8a 1616 cp __zero_reg__,r22 |
8832 4d8c 1706 cpc __zero_reg__,r23 |
8833 4d8e 04F4 brge .L708 |
8834 4d90 63E0 ldi r22,lo8(3) |
8835 4d92 0E94 0000 call __udivmodqi4 |
8836 4d96 280F add r18,r24 |
8837 4d98 311D adc r19,__zero_reg__ |
8838 4d9a 411D adc r20,__zero_reg__ |
8839 4d9c 511D adc r21,__zero_reg__ |
8840 4d9e 00C0 rjmp .L900 |
8841 .L708: |
8842 4da0 63E0 ldi r22,lo8(3) |
8843 4da2 0E94 0000 call __udivmodqi4 |
8844 4da6 281B sub r18,r24 |
8845 4da8 3109 sbc r19,__zero_reg__ |
8846 4daa 4109 sbc r20,__zero_reg__ |
8847 4dac 5109 sbc r21,__zero_reg__ |
8848 .L900: |
8849 4dae 2093 0000 sts SollHoehe,r18 |
8850 4db2 3093 0000 sts (SollHoehe)+1,r19 |
8851 4db6 4093 0000 sts (SollHoehe)+2,r20 |
8852 4dba 5093 0000 sts (SollHoehe)+3,r21 |
8853 .L707: |
8854 4dbe 1092 0000 sts (HeightTrimming.21)+1,__zero_reg__ |
8855 4dc2 1092 0000 sts HeightTrimming.21,__zero_reg__ |
8856 4dc6 E090 0000 lds r14,HoehenWert |
8857 4dca F090 0000 lds r15,(HoehenWert)+1 |
8858 4dce 0091 0000 lds r16,(HoehenWert)+2 |
8859 4dd2 1091 0000 lds r17,(HoehenWert)+3 |
8860 4dd6 D801 movw r26,r16 |
8861 4dd8 C701 movw r24,r14 |
8862 4dda 8050 subi r24,lo8(-(-1024)) |
8863 4ddc 9440 sbci r25,hi8(-(-1024)) |
8864 4dde A040 sbci r26,hlo8(-(-1024)) |
8865 4de0 B040 sbci r27,hhi8(-(-1024)) |
8866 4de2 2091 0000 lds r18,SollHoehe |
8867 4de6 3091 0000 lds r19,(SollHoehe)+1 |
8868 4dea 4091 0000 lds r20,(SollHoehe)+2 |
8869 4dee 5091 0000 lds r21,(SollHoehe)+3 |
8870 4df2 8217 cp r24,r18 |
8871 4df4 9307 cpc r25,r19 |
8872 4df6 A407 cpc r26,r20 |
8873 4df8 B507 cpc r27,r21 |
8874 4dfa 04F4 brge .L902 |
8875 4dfc D801 movw r26,r16 |
8876 4dfe C701 movw r24,r14 |
8877 4e00 8050 subi r24,lo8(-(1024)) |
8878 4e02 9C4F sbci r25,hi8(-(1024)) |
8879 4e04 AF4F sbci r26,hlo8(-(1024)) |
8880 4e06 BF4F sbci r27,hhi8(-(1024)) |
8881 4e08 2817 cp r18,r24 |
8882 4e0a 3907 cpc r19,r25 |
8883 4e0c 4A07 cpc r20,r26 |
8884 4e0e 5B07 cpc r21,r27 |
8885 4e10 04F0 brlt .L711 |
8886 .L902: |
8887 4e12 8093 0000 sts SollHoehe,r24 |
8888 4e16 9093 0000 sts (SollHoehe)+1,r25 |
8889 4e1a A093 0000 sts (SollHoehe)+2,r26 |
8890 4e1e B093 0000 sts (SollHoehe)+3,r27 |
8891 .L711: |
8892 4e22 8091 0000 lds r24,Parameter_ExtraConfig |
8893 4e26 81FF sbrs r24,1 |
8894 4e28 00C0 rjmp .L713 |
8895 4e2a 84E6 ldi r24,lo8(100) |
8896 4e2c 90E0 ldi r25,hi8(100) |
8897 4e2e 9093 0000 sts (beeptime)+1,r25 |
8898 4e32 8093 0000 sts beeptime,r24 |
8899 .L713: |
8900 4e36 8091 0000 lds r24,EE_Parameter+22 |
8901 4e3a 8823 tst r24 |
8902 4e3c 01F4 brne .L702 |
8903 4e3e 8091 0000 lds r24,FromNC_AltitudeSpeed |
8904 4e42 8823 tst r24 |
8905 4e44 01F4 brne .L702 |
8906 4e46 4091 0000 lds r20,HoverGas |
8907 4e4a 5091 0000 lds r21,(HoverGas)+1 |
8908 4e4e 57FF sbrs r21,7 |
8909 4e50 00C0 rjmp .L715 |
8910 4e52 4D5F subi r20,lo8(-(3)) |
8911 4e54 5F4F sbci r21,hi8(-(3)) |
8912 .L715: |
8913 4e56 5595 asr r21 |
8914 4e58 4795 ror r20 |
8915 4e5a 5595 asr r21 |
8916 4e5c 4795 ror r20 |
8917 4e5e 8091 0000 lds r24,UBat |
8918 4e62 9091 0000 lds r25,(UBat)+1 |
8919 4e66 2091 0000 lds r18,BattLowVoltageWarning |
8920 4e6a 3327 clr r19 |
8921 4e6c 489F mul r20,r24 |
8922 4e6e F001 movw r30,r0 |
8923 4e70 499F mul r20,r25 |
8924 4e72 F00D add r31,r0 |
8925 4e74 589F mul r21,r24 |
8926 4e76 F00D add r31,r0 |
8927 4e78 1124 clr r1 |
8928 4e7a CF01 movw r24,r30 |
8929 4e7c B901 movw r22,r18 |
8930 4e7e 0E94 0000 call __divmodhi4 |
8931 4e82 7093 0000 sts (StickGasHover)+1,r23 |
8932 4e86 6093 0000 sts StickGasHover,r22 |
8933 4e8a 6634 cpi r22,70 |
8934 4e8c 7105 cpc r23,__zero_reg__ |
8935 4e8e 04F4 brge .L716 |
8936 4e90 86E4 ldi r24,lo8(70) |
8937 4e92 90E0 ldi r25,hi8(70) |
8938 4e94 00C0 rjmp .L903 |
8939 .L716: |
8940 4e96 6739 cpi r22,151 |
8941 4e98 7105 cpc r23,__zero_reg__ |
8942 4e9a 04F0 brlt .L702 |
8943 4e9c 86E9 ldi r24,lo8(150) |
8944 4e9e 90E0 ldi r25,hi8(150) |
8945 .L903: |
8946 4ea0 9093 0000 sts (StickGasHover)+1,r25 |
8947 4ea4 8093 0000 sts StickGasHover,r24 |
8948 .L702: |
8949 4ea8 8091 0000 lds r24,BaroExpandActive |
8950 4eac 9091 0000 lds r25,(BaroExpandActive)+1 |
8951 4eb0 892B or r24,r25 |
8952 4eb2 01F0 breq .L720 |
8953 4eb4 8091 0000 lds r24,HoehenWert |
8954 4eb8 9091 0000 lds r25,(HoehenWert)+1 |
8955 4ebc A091 0000 lds r26,(HoehenWert)+2 |
8956 4ec0 B091 0000 lds r27,(HoehenWert)+3 |
8957 4ec4 8093 0000 sts SollHoehe,r24 |
8958 4ec8 9093 0000 sts (SollHoehe)+1,r25 |
8959 4ecc A093 0000 sts (SollHoehe)+2,r26 |
8960 4ed0 B093 0000 sts (SollHoehe)+3,r27 |
8961 4ed4 00C0 rjmp .L720 |
8962 .L677: |
8963 4ed6 8091 0000 lds r24,HoehenWert |
8964 4eda 9091 0000 lds r25,(HoehenWert)+1 |
8965 4ede A091 0000 lds r26,(HoehenWert)+2 |
8966 4ee2 B091 0000 lds r27,(HoehenWert)+3 |
8967 4ee6 8059 subi r24,lo8(-(-400)) |
8968 4ee8 9140 sbci r25,hi8(-(-400)) |
8969 4eea A040 sbci r26,hlo8(-(-400)) |
8970 4eec B040 sbci r27,hhi8(-(-400)) |
8971 4eee 8093 0000 sts SollHoehe,r24 |
8972 4ef2 9093 0000 sts (SollHoehe)+1,r25 |
8973 4ef6 A093 0000 sts (SollHoehe)+2,r26 |
8974 4efa B093 0000 sts (SollHoehe)+3,r27 |
8975 4efe 8091 0000 lds r24,EE_Parameter+22 |
8976 4f02 8823 tst r24 |
8977 4f04 01F0 breq .L721 |
8978 4f06 9927 clr r25 |
8979 4f08 00C0 rjmp .L904 |
8980 .L721: |
8981 4f0a 88E7 ldi r24,lo8(120) |
8982 4f0c 90E0 ldi r25,hi8(120) |
8983 .L904: |
8984 4f0e 9093 0000 sts (StickGasHover)+1,r25 |
8985 4f12 8093 0000 sts StickGasHover,r24 |
8986 4f16 E980 ldd r14,Y+1 |
8987 4f18 FA80 ldd r15,Y+2 |
8988 4f1a F092 0000 sts (HoverGas)+1,r15 |
8989 4f1e E092 0000 sts HoverGas,r14 |
8990 4f22 8EE2 ldi r24,lo8(46) |
8991 4f24 8093 0000 sts VarioCharacter,r24 |
8992 .L720: |
8993 4f28 C090 0000 lds r12,HoverGas |
8994 4f2c D090 0000 lds r13,(HoverGas)+1 |
8995 .L676: |
8996 4f30 E090 0000 lds r14,HoehenWert |
8997 4f34 F090 0000 lds r15,(HoehenWert)+1 |
8998 4f38 0091 0000 lds r16,(HoehenWert)+2 |
8999 4f3c 1091 0000 lds r17,(HoehenWert)+3 |
9000 4f40 2091 0000 lds r18,SollHoehe |
9001 4f44 3091 0000 lds r19,(SollHoehe)+1 |
9002 4f48 4091 0000 lds r20,(SollHoehe)+2 |
9003 4f4c 5091 0000 lds r21,(SollHoehe)+3 |
9004 4f50 2E15 cp r18,r14 |
9005 4f52 3F05 cpc r19,r15 |
9006 4f54 4007 cpc r20,r16 |
9007 4f56 5107 cpc r21,r17 |
9008 4f58 04F0 brlt .L724 |
9009 4f5a 8091 0000 lds r24,Parameter_ExtraConfig |
9010 4f5e 80FD sbrc r24,0 |
9011 4f60 00C0 rjmp .L782 |
9012 .L724: |
9013 4f62 8091 0000 lds r24,BaroExpandActive |
9014 4f66 9091 0000 lds r25,(BaroExpandActive)+1 |
9015 4f6a 892B or r24,r25 |
9016 4f6c 01F0 breq .L725 |
9017 4f6e C090 0000 lds r12,HoverGas |
9018 4f72 D090 0000 lds r13,(HoverGas)+1 |
9019 4f76 00E0 ldi r16,lo8(0) |
9020 4f78 10E0 ldi r17,hi8(0) |
9021 4f7a 00C0 rjmp .L726 |
9022 .L725: |
9023 4f7c D801 movw r26,r16 |
9024 4f7e C701 movw r24,r14 |
9025 4f80 821B sub r24,r18 |
9026 4f82 930B sbc r25,r19 |
9027 4f84 A40B sbc r26,r20 |
9028 4f86 B50B sbc r27,r21 |
9029 4f88 8093 0000 sts tmp_long.1,r24 |
9030 4f8c 9093 0000 sts (tmp_long.1)+1,r25 |
9031 4f90 A093 0000 sts (tmp_long.1)+2,r26 |
9032 4f94 B093 0000 sts (tmp_long.1)+3,r27 |
9033 4f98 8230 cpi r24,lo8(-32766) |
9034 4f9a 00E8 ldi r16,hi8(-32766) |
9035 4f9c 9007 cpc r25,r16 |
9036 4f9e 0FEF ldi r16,hlo8(-32766) |
9037 4fa0 A007 cpc r26,r16 |
9038 4fa2 0FEF ldi r16,hhi8(-32766) |
9039 4fa4 B007 cpc r27,r16 |
9040 4fa6 04F4 brge .L727 |
9041 4fa8 81E0 ldi r24,lo8(-32767) |
9042 4faa 90E8 ldi r25,hi8(-32767) |
9043 4fac AFEF ldi r26,hlo8(-32767) |
9044 4fae BFEF ldi r27,hhi8(-32767) |
9045 4fb0 00C0 rjmp .L905 |
9046 .L727: |
9047 4fb2 8F5F subi r24,lo8(32767) |
9048 4fb4 9F47 sbci r25,hi8(32767) |
9049 4fb6 A040 sbci r26,hlo8(32767) |
9050 4fb8 B040 sbci r27,hhi8(32767) |
9051 4fba 04F0 brlt .L728 |
9052 4fbc 8FEF ldi r24,lo8(32767) |
9053 4fbe 9FE7 ldi r25,hi8(32767) |
9054 4fc0 A0E0 ldi r26,hlo8(32767) |
9055 4fc2 B0E0 ldi r27,hhi8(32767) |
9056 .L905: |
9057 4fc4 8093 0000 sts tmp_long.1,r24 |
9058 4fc8 9093 0000 sts (tmp_long.1)+1,r25 |
9059 4fcc A093 0000 sts (tmp_long.1)+2,r26 |
9060 4fd0 B093 0000 sts (tmp_long.1)+3,r27 |
9061 .L728: |
9062 4fd4 0091 0000 lds r16,tmp_long.1 |
9063 4fd8 1091 0000 lds r17,(tmp_long.1)+1 |
9064 4fdc 8091 0000 lds r24,Parameter_Hoehe_P |
9065 4fe0 282F mov r18,r24 |
9066 4fe2 3327 clr r19 |
9067 4fe4 4427 clr r20 |
9068 4fe6 5527 clr r21 |
9069 4fe8 8091 0000 lds r24,tmp_long.1 |
9070 4fec 9091 0000 lds r25,(tmp_long.1)+1 |
9071 4ff0 A091 0000 lds r26,(tmp_long.1)+2 |
9072 4ff4 B091 0000 lds r27,(tmp_long.1)+3 |
9073 4ff8 BC01 movw r22,r24 |
9074 4ffa CD01 movw r24,r26 |
9075 4ffc 0E94 0000 call __mulsi3 |
9076 5000 97FF sbrs r25,7 |
9077 5002 00C0 rjmp .L730 |
9078 5004 615E subi r22,lo8(-(31)) |
9079 5006 7F4F sbci r23,hi8(-(31)) |
9080 5008 8F4F sbci r24,hlo8(-(31)) |
9081 500a 9F4F sbci r25,hhi8(-(31)) |
9082 .L730: |
9083 500c 25E0 ldi r18,5 |
9084 500e 9595 1: asr r25 |
9085 5010 8795 ror r24 |
9086 5012 7795 ror r23 |
9087 5014 6795 ror r22 |
9088 5016 2A95 dec r18 |
9089 5018 01F4 brne 1b |
9090 501a 6093 0000 sts tmp_long.1,r22 |
9091 501e 7093 0000 sts (tmp_long.1)+1,r23 |
9092 5022 8093 0000 sts (tmp_long.1)+2,r24 |
9093 5026 9093 0000 sts (tmp_long.1)+3,r25 |
9094 502a 6530 cpi r22,lo8(-507) |
9095 502c 2EEF ldi r18,hi8(-507) |
9096 502e 7207 cpc r23,r18 |
9097 5030 2FEF ldi r18,hlo8(-507) |
9098 5032 8207 cpc r24,r18 |
9099 5034 2FEF ldi r18,hhi8(-507) |
9100 5036 9207 cpc r25,r18 |
9101 5038 04F4 brge .L731 |
9102 503a 84E0 ldi r24,lo8(-508) |
9103 503c 9EEF ldi r25,hi8(-508) |
9104 503e AFEF ldi r26,hlo8(-508) |
9105 5040 BFEF ldi r27,hhi8(-508) |
9106 5042 00C0 rjmp .L906 |
9107 .L731: |
9108 5044 6050 subi r22,lo8(1024) |
9109 5046 7440 sbci r23,hi8(1024) |
9110 5048 8040 sbci r24,hlo8(1024) |
9111 504a 9040 sbci r25,hhi8(1024) |
9112 504c 04F0 brlt .L732 |
9113 504e 80E0 ldi r24,lo8(1024) |
9114 5050 94E0 ldi r25,hi8(1024) |
9115 5052 A0E0 ldi r26,hlo8(1024) |
9116 5054 B0E0 ldi r27,hhi8(1024) |
9117 .L906: |
9118 5056 8093 0000 sts tmp_long.1,r24 |
9119 505a 9093 0000 sts (tmp_long.1)+1,r25 |
9120 505e A093 0000 sts (tmp_long.1)+2,r26 |
9121 5062 B093 0000 sts (tmp_long.1)+3,r27 |
9122 .L732: |
9123 5066 8090 0000 lds r8,tmp_long.1 |
9124 506a 9090 0000 lds r9,(tmp_long.1)+1 |
9125 506e 2091 0000 lds r18,VarioMeter |
9126 5072 3091 0000 lds r19,(VarioMeter)+1 |
9127 5076 37FF sbrs r19,7 |
9128 5078 00C0 rjmp .L734 |
9129 507a 295F subi r18,lo8(-(7)) |
9130 507c 3F4F sbci r19,hi8(-(7)) |
9131 .L734: |
9132 507e 83E0 ldi r24,3 |
9133 5080 3595 1: asr r19 |
9134 5082 2795 ror r18 |
9135 5084 8A95 dec r24 |
9136 5086 01F4 brne 1b |
9137 5088 4FEF ldi r20,hi8(-126) |
9138 508a 2238 cpi r18,lo8(-126) |
9139 508c 3407 cpc r19,r20 |
9140 508e 04F4 brge .L735 |
9141 5090 21E8 ldi r18,lo8(-127) |
9142 5092 3FEF ldi r19,hi8(-127) |
9143 5094 00C0 rjmp .L736 |
9144 .L735: |
9145 5096 2038 cpi r18,128 |
9146 5098 3105 cpc r19,__zero_reg__ |
9147 509a 04F0 brlt .L736 |
9148 509c 20E8 ldi r18,lo8(128) |
9149 509e 30E0 ldi r19,hi8(128) |
9150 .L736: |
9151 50a0 C901 movw r24,r18 |
9152 50a2 AA27 clr r26 |
9153 50a4 97FD sbrc r25,7 |
9154 50a6 A095 com r26 |
9155 50a8 BA2F mov r27,r26 |
9156 50aa 2091 0000 lds r18,Parameter_Luftdruck_D |
9157 50ae 3327 clr r19 |
9158 50b0 4427 clr r20 |
9159 50b2 5527 clr r21 |
9160 50b4 BC01 movw r22,r24 |
9161 50b6 CD01 movw r24,r26 |
9162 50b8 0E94 0000 call __mulsi3 |
9163 50bc 97FF sbrs r25,7 |
9164 50be 00C0 rjmp .L738 |
9165 50c0 6D5F subi r22,lo8(-(3)) |
9166 50c2 7F4F sbci r23,hi8(-(3)) |
9167 50c4 8F4F sbci r24,hlo8(-(3)) |
9168 50c6 9F4F sbci r25,hhi8(-(3)) |
9169 .L738: |
9170 50c8 B2E0 ldi r27,2 |
9171 50ca 9595 1: asr r25 |
9172 50cc 8795 ror r24 |
9173 50ce 7795 ror r23 |
9174 50d0 6795 ror r22 |
9175 50d2 BA95 dec r27 |
9176 50d4 01F4 brne 1b |
9177 50d6 9B01 movw r18,r22 |
9178 50d8 5FEF ldi r21,hi8(-255) |
9179 50da 6130 cpi r22,lo8(-255) |
9180 50dc 7507 cpc r23,r21 |
9181 50de 04F4 brge .L739 |
9182 50e0 20E0 ldi r18,lo8(-256) |
9183 50e2 3FEF ldi r19,hi8(-256) |
9184 50e4 00C0 rjmp .L740 |
9185 .L739: |
9186 50e6 6F3F cpi r22,255 |
9187 50e8 7105 cpc r23,__zero_reg__ |
9188 50ea 01F0 breq .L740 |
9189 50ec 04F0 brlt .L740 |
9190 50ee 20E0 ldi r18,lo8(256) |
9191 50f0 31E0 ldi r19,hi8(256) |
9192 .L740: |
9193 50f2 8091 0000 lds r24,FC_StatusFlags |
9194 50f6 807C andi r24,lo8(-64) |
9195 50f8 01F0 breq .L742 |
9196 50fa C901 movw r24,r18 |
9197 50fc 37FD sbrc r19,7 |
9198 50fe 0396 adiw r24,3 |
9199 .L743: |
9200 5100 9C01 movw r18,r24 |
9201 5102 3595 asr r19 |
9202 5104 2795 ror r18 |
9203 5106 3595 asr r19 |
9204 5108 2795 ror r18 |
9205 510a 00C0 rjmp .L744 |
9206 .L742: |
9207 510c 8091 0000 lds r24,Parameter_ExtraConfig |
9208 5110 80FF sbrs r24,0 |
9209 5112 00C0 rjmp .L744 |
9210 5114 C901 movw r24,r18 |
9211 5116 37FD sbrc r19,7 |
9212 5118 0796 adiw r24,7 |
9213 .L746: |
9214 511a 9C01 movw r18,r24 |
9215 511c F3E0 ldi r31,3 |
9216 511e 3595 1: asr r19 |
9217 5120 2795 ror r18 |
9218 5122 FA95 dec r31 |
9219 5124 01F4 brne 1b |
9220 .L744: |
9221 5126 820E add r8,r18 |
9222 5128 931E adc r9,r19 |
9223 .L726: |
9224 512a 2091 0000 lds r18,Parameter_Hoehe_ACC_Wirkung |
9225 512e 2223 tst r18 |
9226 5130 01F4 brne .+2 |
9227 5132 00C0 rjmp .L747 |
9228 5134 6091 0000 lds r22,Mess_Integral_Hoch |
9229 5138 7091 0000 lds r23,(Mess_Integral_Hoch)+1 |
9230 513c 8091 0000 lds r24,(Mess_Integral_Hoch)+2 |
9231 5140 9091 0000 lds r25,(Mess_Integral_Hoch)+3 |
9232 5144 97FF sbrs r25,7 |
9233 5146 00C0 rjmp .L748 |
9234 5148 6158 subi r22,lo8(-(127)) |
9235 514a 7F4F sbci r23,hi8(-(127)) |
9236 514c 8F4F sbci r24,hlo8(-(127)) |
9237 514e 9F4F sbci r25,hhi8(-(127)) |
9238 .L748: |
9239 5150 E7E0 ldi r30,7 |
9240 5152 9595 1: asr r25 |
9241 5154 8795 ror r24 |
9242 5156 7795 ror r23 |
9243 5158 6795 ror r22 |
9244 515a EA95 dec r30 |
9245 515c 01F4 brne 1b |
9246 515e 3327 clr r19 |
9247 5160 4427 clr r20 |
9248 5162 5527 clr r21 |
9249 5164 0E94 0000 call __mulsi3 |
9250 5168 97FF sbrs r25,7 |
9251 516a 00C0 rjmp .L749 |
9252 516c 615E subi r22,lo8(-(31)) |
9253 516e 7F4F sbci r23,hi8(-(31)) |
9254 5170 8F4F sbci r24,hlo8(-(31)) |
9255 5172 9F4F sbci r25,hhi8(-(31)) |
9256 .L749: |
9257 5174 55E0 ldi r21,5 |
9258 5176 9595 1: asr r25 |
9259 5178 8795 ror r24 |
9260 517a 7795 ror r23 |
9261 517c 6795 ror r22 |
9262 517e 5A95 dec r21 |
9263 5180 01F4 brne 1b |
9264 5182 6093 0000 sts tmp_long.1,r22 |
9265 5186 7093 0000 sts (tmp_long.1)+1,r23 |
9266 518a 8093 0000 sts (tmp_long.1)+2,r24 |
9267 518e 9093 0000 sts (tmp_long.1)+3,r25 |
9268 5192 6138 cpi r22,lo8(-127) |
9269 5194 AFEF ldi r26,hi8(-127) |
9270 5196 7A07 cpc r23,r26 |
9271 5198 AFEF ldi r26,hlo8(-127) |
9272 519a 8A07 cpc r24,r26 |
9273 519c AFEF ldi r26,hhi8(-127) |
9274 519e 9A07 cpc r25,r26 |
9275 51a0 04F4 brge .L750 |
9276 51a2 80E8 ldi r24,lo8(-128) |
9277 51a4 9FEF ldi r25,hi8(-128) |
9278 51a6 AFEF ldi r26,hlo8(-128) |
9279 51a8 BFEF ldi r27,hhi8(-128) |
9280 51aa 00C0 rjmp .L907 |
9281 .L750: |
9282 51ac 6F3F cpi r22,lo8(255) |
9283 51ae 7105 cpc r23,__zero_reg__ |
9284 51b0 8105 cpc r24,__zero_reg__ |
9285 51b2 9105 cpc r25,__zero_reg__ |
9286 51b4 01F0 breq .L751 |
9287 51b6 04F0 brlt .L751 |
9288 51b8 80E0 ldi r24,lo8(256) |
9289 51ba 91E0 ldi r25,hi8(256) |
9290 51bc A0E0 ldi r26,hlo8(256) |
9291 51be B0E0 ldi r27,hhi8(256) |
9292 .L907: |
9293 51c0 8093 0000 sts tmp_long.1,r24 |
9294 51c4 9093 0000 sts (tmp_long.1)+1,r25 |
9295 51c8 A093 0000 sts (tmp_long.1)+2,r26 |
9296 51cc B093 0000 sts (tmp_long.1)+3,r27 |
9297 .L751: |
9298 51d0 8091 0000 lds r24,tmp_long.1 |
9299 51d4 9091 0000 lds r25,(tmp_long.1)+1 |
9300 51d8 880E add r8,r24 |
9301 51da 991E adc r9,r25 |
9302 .L747: |
9303 51dc 8091 0000 lds r24,Parameter_Hoehe_GPS_Z |
9304 51e0 282F mov r18,r24 |
9305 51e2 3327 clr r19 |
9306 51e4 8091 0000 lds r24,FromNaviCtrl_Value+4 |
9307 51e8 9927 clr r25 |
9308 51ea 87FD sbrc r24,7 |
9309 51ec 9095 com r25 |
9310 51ee 289F mul r18,r24 |
9311 51f0 F001 movw r30,r0 |
9312 51f2 299F mul r18,r25 |
9313 51f4 F00D add r31,r0 |
9314 51f6 389F mul r19,r24 |
9315 51f8 F00D add r31,r0 |
9316 51fa 1124 clr r1 |
9317 51fc 9F01 movw r18,r30 |
9318 51fe F7FF sbrs r31,7 |
9319 5200 00C0 rjmp .L753 |
9320 5202 2158 subi r18,lo8(-(127)) |
9321 5204 3F4F sbci r19,hi8(-(127)) |
9322 .L753: |
9323 5206 220F lsl r18 |
9324 5208 232F mov r18,r19 |
9325 520a 221F rol r18 |
9326 520c 330B sbc r19,r19 |
9327 520e FFEF ldi r31,hi8(-127) |
9328 5210 2138 cpi r18,lo8(-127) |
9329 5212 3F07 cpc r19,r31 |
9330 5214 04F4 brge .L754 |
9331 5216 20E8 ldi r18,lo8(-128) |
9332 5218 3FEF ldi r19,hi8(-128) |
9333 521a 00C0 rjmp .L755 |
9334 .L754: |
9335 521c 2F3F cpi r18,255 |
9336 521e 3105 cpc r19,__zero_reg__ |
9337 5220 01F0 breq .L755 |
9338 5222 04F0 brlt .L755 |
9339 5224 20E0 ldi r18,lo8(256) |
9340 5226 31E0 ldi r19,hi8(256) |
9341 .L755: |
9342 5228 820E add r8,r18 |
9343 522a 931E adc r9,r19 |
9344 522c C401 movw r24,r8 |
9345 522e AA27 clr r26 |
9346 5230 97FD sbrc r25,7 |
9347 5232 A095 com r26 |
9348 5234 BA2F mov r27,r26 |
9349 5236 E090 0000 lds r14,HoverGas |
9350 523a F090 0000 lds r15,(HoverGas)+1 |
9351 523e 9701 movw r18,r14 |
9352 5240 4427 clr r20 |
9353 5242 37FD sbrc r19,7 |
9354 5244 4095 com r20 |
9355 5246 542F mov r21,r20 |
9356 5248 BC01 movw r22,r24 |
9357 524a CD01 movw r24,r26 |
9358 524c 0E94 0000 call __mulsi3 |
9359 5250 97FF sbrs r25,7 |
9360 5252 00C0 rjmp .L757 |
9361 5254 6150 subi r22,lo8(-(511)) |
9362 5256 7E4F sbci r23,hi8(-(511)) |
9363 5258 8F4F sbci r24,hlo8(-(511)) |
9364 525a 9F4F sbci r25,hhi8(-(511)) |
9365 .L757: |
9366 525c 29E0 ldi r18,9 |
9367 525e 9595 1: asr r25 |
9368 5260 8795 ror r24 |
9369 5262 7795 ror r23 |
9370 5264 6795 ror r22 |
9371 5266 2A95 dec r18 |
9372 5268 01F4 brne 1b |
9373 526a C61A sub r12,r22 |
9374 526c D70A sbc r13,r23 |
9375 526e 8091 0000 lds r24,AltitudeSetpointTrimming |
9376 5272 9091 0000 lds r25,(AltitudeSetpointTrimming)+1 |
9377 5276 892B or r24,r25 |
9378 5278 01F0 breq .+2 |
9379 527a 00C0 rjmp .L758 |
9380 527c 1E14 cp __zero_reg__,r14 |
9381 527e 1F04 cpc __zero_reg__,r15 |
9382 5280 04F0 brlt .+2 |
9383 5282 00C0 rjmp .L758 |
9384 5284 9801 movw r18,r16 |
9385 5286 17FF sbrs r17,7 |
9386 5288 00C0 rjmp .L759 |
9387 528a 3095 com r19 |
9388 528c 2195 neg r18 |
9389 528e 3F4F sbci r19,lo8(-1) |
9390 .L759: |
9391 5290 2D33 cpi r18,61 |
9392 5292 3105 cpc r19,__zero_reg__ |
9393 5294 00F4 brsh .L760 |
9394 5296 8091 0000 lds r24,HoverGasMin |
9395 529a 9091 0000 lds r25,(HoverGasMin)+1 |
9396 529e 8C15 cp r24,r12 |
9397 52a0 9D05 cpc r25,r13 |
9398 52a2 04F4 brge .L909 |
9399 52a4 00C0 rjmp .L918 |
9400 .L760: |
9401 52a6 2C53 subi r18,lo8(-(-60)) |
9402 52a8 3040 sbci r19,hi8(-(-60)) |
9403 52aa 85E0 ldi r24,5 |
9404 52ac 3695 1: lsr r19 |
9405 52ae 2795 ror r18 |
9406 52b0 8A95 dec r24 |
9407 52b2 01F4 brne 1b |
9408 52b4 2031 cpi r18,16 |
9409 52b6 3105 cpc r19,__zero_reg__ |
9410 52b8 00F0 brlo .L765 |
9411 52ba 2FE0 ldi r18,lo8(15) |
9412 52bc 30E0 ldi r19,hi8(15) |
9413 .L765: |
9414 52be 4091 0000 lds r20,HoverGasMin |
9415 52c2 5091 0000 lds r21,(HoverGasMin)+1 |
9416 52c6 1016 cp __zero_reg__,r16 |
9417 52c8 1106 cpc __zero_reg__,r17 |
9418 52ca 04F4 brge .L766 |
9419 52cc 80E1 ldi r24,lo8(16) |
9420 52ce 90E0 ldi r25,hi8(16) |
9421 52d0 821B sub r24,r18 |
9422 52d2 930B sbc r25,r19 |
9423 52d4 489F mul r20,r24 |
9424 52d6 9001 movw r18,r0 |
9425 52d8 499F mul r20,r25 |
9426 52da 300D add r19,r0 |
9427 52dc 589F mul r21,r24 |
9428 52de 300D add r19,r0 |
9429 52e0 1124 clr r1 |
9430 52e2 B4E0 ldi r27,4 |
9431 52e4 3695 1: lsr r19 |
9432 52e6 2795 ror r18 |
9433 52e8 BA95 dec r27 |
9434 52ea 01F4 brne 1b |
9435 52ec 2C15 cp r18,r12 |
9436 52ee 3D05 cpc r19,r13 |
9437 52f0 00F4 brsh .L908 |
9438 .L918: |
9439 52f2 8091 0000 lds r24,HoverGasMax |
9440 52f6 9091 0000 lds r25,(HoverGasMax)+1 |
9441 52fa C816 cp r12,r24 |
9442 52fc D906 cpc r13,r25 |
9443 52fe 04F0 brlt .L758 |
9444 .L909: |
9445 5300 6C01 movw r12,r24 |
9446 5302 00C0 rjmp .L758 |
9447 .L766: |
9448 5304 205F subi r18,lo8(-(16)) |
9449 5306 3F4F sbci r19,hi8(-(16)) |
9450 5308 8091 0000 lds r24,HoverGasMax |
9451 530c 9091 0000 lds r25,(HoverGasMax)+1 |
9452 5310 829F mul r24,r18 |
9453 5312 8001 movw r16,r0 |
9454 5314 839F mul r24,r19 |
9455 5316 100D add r17,r0 |
9456 5318 929F mul r25,r18 |
9457 531a 100D add r17,r0 |
9458 531c 1124 clr r1 |
9459 531e 9801 movw r18,r16 |
9460 5320 A4E0 ldi r26,4 |
9461 5322 3695 1: lsr r19 |
9462 5324 2795 ror r18 |
9463 5326 AA95 dec r26 |
9464 5328 01F4 brne 1b |
9465 532a 4C15 cp r20,r12 |
9466 532c 5D05 cpc r21,r13 |
9467 532e 04F0 brlt .L771 |
9468 5330 6A01 movw r12,r20 |
9469 5332 00C0 rjmp .L758 |
9470 .L771: |
9471 5334 C216 cp r12,r18 |
9472 5336 D306 cpc r13,r19 |
9473 5338 00F0 brlo .L758 |
9474 .L908: |
9475 533a 6901 movw r12,r18 |
9476 .L758: |
9477 533c C601 movw r24,r12 |
9478 533e AA27 clr r26 |
9479 5340 97FD sbrc r25,7 |
9480 5342 A095 com r26 |
9481 5344 BA2F mov r27,r26 |
9482 5346 FDE0 ldi r31,13 |
9483 5348 880F 1: lsl r24 |
9484 534a 991F rol r25 |
9485 534c AA1F rol r26 |
9486 534e BB1F rol r27 |
9487 5350 FA95 dec r31 |
9488 5352 01F4 brne 1b |
9489 5354 9501 movw r18,r10 |
9490 5356 4427 clr r20 |
9491 5358 37FD sbrc r19,7 |
9492 535a 4095 com r20 |
9493 535c 542F mov r21,r20 |
9494 535e BC01 movw r22,r24 |
9495 5360 CD01 movw r24,r26 |
9496 5362 0E94 0000 call __divmodsi4 |
9497 5366 2093 0000 sts tmp_long2.2,r18 |
9498 536a 3093 0000 sts (tmp_long2.2)+1,r19 |
9499 536e 4093 0000 sts (tmp_long2.2)+2,r20 |
9500 5372 5093 0000 sts (tmp_long2.2)+3,r21 |
9501 5376 C090 0000 lds r12,tmp_long2.2 |
9502 537a D090 0000 lds r13,(tmp_long2.2)+1 |
9503 537e 8091 0000 lds r24,FilterHCGas.22 |
9504 5382 9091 0000 lds r25,(FilterHCGas.22)+1 |
9505 5386 9C01 movw r18,r24 |
9506 5388 220F lsl r18 |
9507 538a 331F rol r19 |
9508 538c 280F add r18,r24 |
9509 538e 391F adc r19,r25 |
9510 5390 2C0D add r18,r12 |
9511 5392 3D1D adc r19,r13 |
9512 5394 37FF sbrs r19,7 |
9513 5396 00C0 rjmp .L774 |
9514 5398 2D5F subi r18,lo8(-(3)) |
9515 539a 3F4F sbci r19,hi8(-(3)) |
9516 .L774: |
9517 539c A901 movw r20,r18 |
9518 539e 5595 asr r21 |
9519 53a0 4795 ror r20 |
9520 53a2 5595 asr r21 |
9521 53a4 4795 ror r20 |
9522 53a6 5093 0000 sts (FilterHCGas.22)+1,r21 |
9523 53aa 4093 0000 sts FilterHCGas.22,r20 |
9524 53ae 8091 0000 lds r24,EE_Parameter+14 |
9525 53b2 282F mov r18,r24 |
9526 53b4 3327 clr r19 |
9527 53b6 220F lsl r18 |
9528 53b8 331F rol r19 |
9529 53ba 220F lsl r18 |
9530 53bc 331F rol r19 |
9531 53be 2417 cp r18,r20 |
9532 53c0 3507 cpc r19,r21 |
9533 53c2 04F4 brge .L910 |
9534 53c4 8091 0000 lds r24,MAX_GAS |
9535 53c8 282F mov r18,r24 |
9536 53ca 3327 clr r19 |
9537 53cc 220F lsl r18 |
9538 53ce 331F rol r19 |
9539 53d0 220F lsl r18 |
9540 53d2 331F rol r19 |
9541 53d4 2055 subi r18,lo8(-(-80)) |
9542 53d6 3040 sbci r19,hi8(-(-80)) |
9543 53d8 4217 cp r20,r18 |
9544 53da 5307 cpc r21,r19 |
9545 53dc 04F0 brlt .L776 |
9546 .L910: |
9547 53de 3093 0000 sts (FilterHCGas.22)+1,r19 |
9548 53e2 2093 0000 sts FilterHCGas.22,r18 |
9549 .L776: |
9550 53e6 8091 0000 lds r24,Parameter_ExtraConfig |
9551 53ea 80FF sbrs r24,0 |
9552 53ec 00C0 rjmp .L778 |
9553 53ee 8091 0000 lds r24,FilterHCGas.22 |
9554 53f2 9091 0000 lds r25,(FilterHCGas.22)+1 |
9555 53f6 2981 ldd r18,Y+1 |
9556 53f8 3A81 ldd r19,Y+2 |
9557 53fa 8217 cp r24,r18 |
9558 53fc 9307 cpc r25,r19 |
9559 53fe 04F0 brlt .L779 |
9560 5400 3093 0000 sts (FilterHCGas.22)+1,r19 |
9561 5404 2093 0000 sts FilterHCGas.22,r18 |
9562 .L779: |
9563 5408 4091 0000 lds r20,FilterHCGas.22 |
9564 540c 5091 0000 lds r21,(FilterHCGas.22)+1 |
9565 5410 5A83 std Y+2,r21 |
9566 5412 4983 std Y+1,r20 |
9567 5414 00C0 rjmp .L782 |
9568 .L778: |
9569 5416 2981 ldd r18,Y+1 |
9570 5418 3A81 ldd r19,Y+2 |
9571 541a 2E19 sub r18,r14 |
9572 541c 3F09 sbc r19,r15 |
9573 541e 37FF sbrs r19,7 |
9574 5420 00C0 rjmp .L781 |
9575 5422 2D5F subi r18,lo8(-(3)) |
9576 5424 3F4F sbci r19,hi8(-(3)) |
9577 .L781: |
9578 5426 3595 asr r19 |
9579 5428 2795 ror r18 |
9580 542a 3595 asr r19 |
9581 542c 2795 ror r18 |
9582 542e 6091 0000 lds r22,FilterHCGas.22 |
9583 5432 7091 0000 lds r23,(FilterHCGas.22)+1 |
9584 5436 620F add r22,r18 |
9585 5438 731F adc r23,r19 |
9586 543a 7A83 std Y+2,r23 |
9587 543c 6983 std Y+1,r22 |
9588 543e 00C0 rjmp .L782 |
9589 .L673: |
9590 5440 8091 0000 lds r24,EE_Parameter+22 |
9591 5444 8823 tst r24 |
9592 5446 01F4 brne .L783 |
9593 5448 6091 0000 lds r22,HoverGas |
9594 544c 7091 0000 lds r23,(HoverGas)+1 |
9595 5450 77FF sbrs r23,7 |
9596 5452 00C0 rjmp .L784 |
9597 5454 6D5F subi r22,lo8(-(3)) |
9598 5456 7F4F sbci r23,hi8(-(3)) |
9599 .L784: |
9600 5458 7595 asr r23 |
9601 545a 6795 ror r22 |
9602 545c 7595 asr r23 |
9603 545e 6795 ror r22 |
9604 5460 4091 0000 lds r20,UBat |
9605 5464 5091 0000 lds r21,(UBat)+1 |
9606 5468 8091 0000 lds r24,BattLowVoltageWarning |
9607 546c 282F mov r18,r24 |
9608 546e 3327 clr r19 |
9609 5470 649F mul r22,r20 |
9610 5472 C001 movw r24,r0 |
9611 5474 659F mul r22,r21 |
9612 5476 900D add r25,r0 |
9613 5478 749F mul r23,r20 |
9614 547a 900D add r25,r0 |
9615 547c 1124 clr r1 |
9616 547e B901 movw r22,r18 |
9617 5480 0E94 0000 call __divmodhi4 |
9618 5484 CB01 movw r24,r22 |
9619 5486 00C0 rjmp .L911 |
9620 .L783: |
9621 5488 9927 clr r25 |
9622 .L911: |
9623 548a 9093 0000 sts (StickGasHover)+1,r25 |
9624 548e 8093 0000 sts StickGasHover,r24 |
9625 5492 8091 0000 lds r24,StickGasHover |
9626 5496 9091 0000 lds r25,(StickGasHover)+1 |
9627 549a 8734 cpi r24,71 |
9628 549c 9105 cpc r25,__zero_reg__ |
9629 549e 04F4 brge .L786 |
9630 54a0 86E4 ldi r24,lo8(70) |
9631 54a2 90E0 ldi r25,hi8(70) |
9632 54a4 00C0 rjmp .L912 |
9633 .L786: |
9634 54a6 8639 cpi r24,150 |
9635 54a8 9105 cpc r25,__zero_reg__ |
9636 54aa 04F0 brlt .L787 |
9637 54ac 86E9 ldi r24,lo8(150) |
9638 54ae 90E0 ldi r25,hi8(150) |
9639 .L912: |
9640 54b0 9093 0000 sts (StickGasHover)+1,r25 |
9641 54b4 8093 0000 sts StickGasHover,r24 |
9642 .L787: |
9643 54b8 8981 ldd r24,Y+1 |
9644 54ba 9A81 ldd r25,Y+2 |
9645 54bc 9093 0000 sts (FilterHCGas.22)+1,r25 |
9646 54c0 8093 0000 sts FilterHCGas.22,r24 |
9647 54c4 8091 0000 lds r24,FC_StatusFlags |
9648 54c8 806C ori r24,lo8(-64) |
9649 54ca 8093 0000 sts FC_StatusFlags,r24 |
9650 54ce 8091 0000 lds r24,FC_StatusFlags2 |
9651 54d2 8D7F andi r24,lo8(-3) |
9652 54d4 8093 0000 sts FC_StatusFlags2,r24 |
9653 .L782: |
9654 54d8 8091 0000 lds r24,FC_StatusFlags |
9655 54dc 9927 clr r25 |
9656 54de 9C01 movw r18,r24 |
9657 54e0 2270 andi r18,lo8(2) |
9658 54e2 3070 andi r19,hi8(2) |
9659 54e4 81FF sbrs r24,1 |
9660 54e6 00C0 rjmp .L789 |
9661 54e8 8091 0000 lds r24,HoverGasFilter.23 |
9662 54ec 9091 0000 lds r25,(HoverGasFilter.23)+1 |
9663 54f0 A091 0000 lds r26,(HoverGasFilter.23)+2 |
9664 54f4 B091 0000 lds r27,(HoverGasFilter.23)+3 |
9665 54f8 0097 sbiw r24,0 |
9666 54fa A105 cpc r26,__zero_reg__ |
9667 54fc B105 cpc r27,__zero_reg__ |
9668 54fe 01F0 breq .L791 |
9669 5500 8091 0000 lds r24,StartTrigger |
9670 5504 8130 cpi r24,lo8(1) |
9671 5506 01F4 brne .L790 |
9672 .L791: |
9673 5508 E981 ldd r30,Y+1 |
9674 550a FA81 ldd r31,Y+2 |
9675 550c CF01 movw r24,r30 |
9676 550e AA27 clr r26 |
9677 5510 97FD sbrc r25,7 |
9678 5512 A095 com r26 |
9679 5514 BA2F mov r27,r26 |
9680 5516 1EE0 ldi r17,14 |
9681 5518 880F 1: lsl r24 |
9682 551a 991F rol r25 |
9683 551c AA1F rol r26 |
9684 551e BB1F rol r27 |
9685 5520 1A95 dec r17 |
9686 5522 01F4 brne 1b |
9687 5524 8093 0000 sts HoverGasFilter.23,r24 |
9688 5528 9093 0000 sts (HoverGasFilter.23)+1,r25 |
9689 552c A093 0000 sts (HoverGasFilter.23)+2,r26 |
9690 5530 B093 0000 sts (HoverGasFilter.23)+3,r27 |
9691 .L790: |
9692 5534 8091 0000 lds r24,StartTrigger |
9693 5538 8130 cpi r24,lo8(1) |
9694 553a 01F4 brne .L792 |
9695 553c 82E0 ldi r24,lo8(2) |
9696 553e 8093 0000 sts StartTrigger,r24 |
9697 .L792: |
9698 5542 E980 ldd r14,Y+1 |
9699 5544 FA80 ldd r15,Y+2 |
9700 5546 C701 movw r24,r14 |
9701 5548 AA27 clr r26 |
9702 554a 97FD sbrc r25,7 |
9703 554c A095 com r26 |
9704 554e BA2F mov r27,r26 |
9705 5550 9501 movw r18,r10 |
9706 5552 4427 clr r20 |
9707 5554 37FD sbrc r19,7 |
9708 5556 4095 com r20 |
9709 5558 542F mov r21,r20 |
9710 555a BC01 movw r22,r24 |
9711 555c CD01 movw r24,r26 |
9712 555e 0E94 0000 call __mulsi3 |
9713 5562 DC01 movw r26,r24 |
9714 5564 CB01 movw r24,r22 |
9715 5566 8093 0000 sts tmp_long2.2,r24 |
9716 556a 9093 0000 sts (tmp_long2.2)+1,r25 |
9717 556e A093 0000 sts (tmp_long2.2)+2,r26 |
9718 5572 B093 0000 sts (tmp_long2.2)+3,r27 |
9719 5576 B7FF sbrs r27,7 |
9720 5578 00C0 rjmp .L793 |
9721 557a 8150 subi r24,lo8(-(8191)) |
9722 557c 904E sbci r25,hi8(-(8191)) |
9723 557e AF4F sbci r26,hlo8(-(8191)) |
9724 5580 BF4F sbci r27,hhi8(-(8191)) |
9725 .L793: |
9726 5582 7C01 movw r14,r24 |
9727 5584 8D01 movw r16,r26 |
9728 5586 ADE0 ldi r26,13 |
9729 5588 1595 1: asr r17 |
9730 558a 0795 ror r16 |
9731 558c F794 ror r15 |
9732 558e E794 ror r14 |
9733 5590 AA95 dec r26 |
9734 5592 01F4 brne 1b |
9735 5594 E092 0000 sts tmp_long2.2,r14 |
9736 5598 F092 0000 sts (tmp_long2.2)+1,r15 |
9737 559c 0093 0000 sts (tmp_long2.2)+2,r16 |
9738 55a0 1093 0000 sts (tmp_long2.2)+3,r17 |
9739 55a4 6091 0000 lds r22,modell_fliegt |
9740 55a8 7091 0000 lds r23,(modell_fliegt)+1 |
9741 55ac 2FE0 ldi r18,hi8(4000) |
9742 55ae 603A cpi r22,lo8(4000) |
9743 55b0 7207 cpc r23,r18 |
9744 55b2 00F4 brsh .L794 |
9745 55b4 8091 0000 lds r24,HoverGasFilter.23 |
9746 55b8 9091 0000 lds r25,(HoverGasFilter.23)+1 |
9747 55bc A091 0000 lds r26,(HoverGasFilter.23)+2 |
9748 55c0 B091 0000 lds r27,(HoverGasFilter.23)+3 |
9749 55c4 9C01 movw r18,r24 |
9750 55c6 AD01 movw r20,r26 |
9751 55c8 FAE0 ldi r31,10 |
9752 55ca 5695 1: lsr r21 |
9753 55cc 4795 ror r20 |
9754 55ce 3795 ror r19 |
9755 55d0 2795 ror r18 |
9756 55d2 FA95 dec r31 |
9757 55d4 01F4 brne 1b |
9758 55d6 821B sub r24,r18 |
9759 55d8 930B sbc r25,r19 |
9760 55da A40B sbc r26,r20 |
9761 55dc B50B sbc r27,r21 |
9762 55de A801 movw r20,r16 |
9763 55e0 9701 movw r18,r14 |
9764 55e2 E4E0 ldi r30,4 |
9765 55e4 220F 1: lsl r18 |
9766 55e6 331F rol r19 |
9767 55e8 441F rol r20 |
9768 55ea 551F rol r21 |
9769 55ec EA95 dec r30 |
9770 55ee 01F4 brne 1b |
9771 55f0 820F add r24,r18 |
9772 55f2 931F adc r25,r19 |
9773 55f4 A41F adc r26,r20 |
9774 55f6 B51F adc r27,r21 |
9775 55f8 8093 0000 sts HoverGasFilter.23,r24 |
9776 55fc 9093 0000 sts (HoverGasFilter.23)+1,r25 |
9777 5600 A093 0000 sts (HoverGasFilter.23)+2,r26 |
9778 5604 B093 0000 sts (HoverGasFilter.23)+3,r27 |
9779 .L794: |
9780 5608 6054 subi r22,lo8(8000) |
9781 560a 7F41 sbci r23,hi8(8000) |
9782 560c 00F4 brsh .L795 |
9783 560e 8091 0000 lds r24,HoverGasFilter.23 |
9784 5612 9091 0000 lds r25,(HoverGasFilter.23)+1 |
9785 5616 A091 0000 lds r26,(HoverGasFilter.23)+2 |
9786 561a B091 0000 lds r27,(HoverGasFilter.23)+3 |
9787 561e 9C01 movw r18,r24 |
9788 5620 AD01 movw r20,r26 |
9789 5622 6CE0 ldi r22,12 |
9790 5624 5695 1: lsr r21 |
9791 5626 4795 ror r20 |
9792 5628 3795 ror r19 |
9793 562a 2795 ror r18 |
9794 562c 6A95 dec r22 |
9795 562e 01F4 brne 1b |
9796 5630 821B sub r24,r18 |
9797 5632 930B sbc r25,r19 |
9798 5634 A40B sbc r26,r20 |
9799 5636 B50B sbc r27,r21 |
9800 5638 A801 movw r20,r16 |
9801 563a 9701 movw r18,r14 |
9802 563c F2E0 ldi r31,2 |
9803 563e 220F 1: lsl r18 |
9804 5640 331F rol r19 |
9805 5642 441F rol r20 |
9806 5644 551F rol r21 |
9807 5646 FA95 dec r31 |
9808 5648 01F4 brne 1b |
9809 564a 820F add r24,r18 |
9810 564c 931F adc r25,r19 |
9811 564e A41F adc r26,r20 |
9812 5650 B51F adc r27,r21 |
9813 5652 00C0 rjmp .L913 |
9814 .L795: |
9815 5654 8091 0000 lds r24,VarioMeter |
9816 5658 9091 0000 lds r25,(VarioMeter)+1 |
9817 565c 8091 0000 lds r24,VarioMeter |
9818 5660 9091 0000 lds r25,(VarioMeter)+1 |
9819 5664 97FF sbrs r25,7 |
9820 5666 00C0 rjmp .L798 |
9821 5668 9095 com r25 |
9822 566a 8195 neg r24 |
9823 566c 9F4F sbci r25,lo8(-1) |
9824 .L798: |
9825 566e 8436 cpi r24,100 |
9826 5670 9105 cpc r25,__zero_reg__ |
9827 5672 04F4 brge .L796 |
9828 5674 8091 0000 lds r24,HoehenWert |
9829 5678 9091 0000 lds r25,(HoehenWert)+1 |
9830 567c 2091 0000 lds r18,SollHoehe |
9831 5680 3091 0000 lds r19,(SollHoehe)+1 |
9832 5684 821B sub r24,r18 |
9833 5686 930B sbc r25,r19 |
9834 5688 8150 subi r24,lo8(-(255)) |
9835 568a 9F4F sbci r25,hi8(-(255)) |
9836 568c 8F5F subi r24,lo8(511) |
9837 568e 9140 sbci r25,hi8(511) |
9838 5690 00F4 brsh .L796 |
9839 5692 8091 0000 lds r24,HoverGasFilter.23 |
9840 5696 9091 0000 lds r25,(HoverGasFilter.23)+1 |
9841 569a A091 0000 lds r26,(HoverGasFilter.23)+2 |
9842 569e B091 0000 lds r27,(HoverGasFilter.23)+3 |
9843 56a2 9C01 movw r18,r24 |
9844 56a4 AD01 movw r20,r26 |
9845 56a6 EEE0 ldi r30,14 |
9846 56a8 5695 1: lsr r21 |
9847 56aa 4795 ror r20 |
9848 56ac 3795 ror r19 |
9849 56ae 2795 ror r18 |
9850 56b0 EA95 dec r30 |
9851 56b2 01F4 brne 1b |
9852 56b4 821B sub r24,r18 |
9853 56b6 930B sbc r25,r19 |
9854 56b8 A40B sbc r26,r20 |
9855 56ba B50B sbc r27,r21 |
9856 56bc 8E0D add r24,r14 |
9857 56be 9F1D adc r25,r15 |
9858 56c0 A01F adc r26,r16 |
9859 56c2 B11F adc r27,r17 |
9860 .L913: |
9861 56c4 8093 0000 sts HoverGasFilter.23,r24 |
9862 56c8 9093 0000 sts (HoverGasFilter.23)+1,r25 |
9863 56cc A093 0000 sts (HoverGasFilter.23)+2,r26 |
9864 56d0 B093 0000 sts (HoverGasFilter.23)+3,r27 |
9865 .L796: |
9866 56d4 8091 0000 lds r24,HoverGasFilter.23 |
9867 56d8 9091 0000 lds r25,(HoverGasFilter.23)+1 |
9868 56dc A091 0000 lds r26,(HoverGasFilter.23)+2 |
9869 56e0 B091 0000 lds r27,(HoverGasFilter.23)+3 |
9870 56e4 7EE0 ldi r23,14 |
9871 56e6 B695 1: lsr r27 |
9872 56e8 A795 ror r26 |
9873 56ea 9795 ror r25 |
9874 56ec 8795 ror r24 |
9875 56ee 7A95 dec r23 |
9876 56f0 01F4 brne 1b |
9877 56f2 9093 0000 sts (HoverGas)+1,r25 |
9878 56f6 8093 0000 sts HoverGas,r24 |
9879 56fa 4091 0000 lds r20,EE_Parameter+20 |
9880 56fe 4423 tst r20 |
9881 5700 01F0 breq .L799 |
9882 5702 5527 clr r21 |
9883 5704 9C01 movw r18,r24 |
9884 5706 BA01 movw r22,r20 |
9885 5708 0E94 0000 call __divmodhi4 |
9886 570c C901 movw r24,r18 |
9887 570e 861B sub r24,r22 |
9888 5710 970B sbc r25,r23 |
9889 5712 9093 0000 sts (HoverGasMin)+1,r25 |
9890 5716 8093 0000 sts HoverGasMin,r24 |
9891 571a 260F add r18,r22 |
9892 571c 371F adc r19,r23 |
9893 571e 3093 0000 sts (HoverGasMax)+1,r19 |
9894 5722 2093 0000 sts HoverGasMax,r18 |
9895 5726 00C0 rjmp .L802 |
9896 .L799: |
9897 5728 1092 0000 sts (HoverGasMin)+1,__zero_reg__ |
9898 572c 1092 0000 sts HoverGasMin,__zero_reg__ |
9899 5730 8FEF ldi r24,lo8(1023) |
9900 5732 93E0 ldi r25,hi8(1023) |
9901 5734 9093 0000 sts (HoverGasMax)+1,r25 |
9902 5738 8093 0000 sts HoverGasMax,r24 |
9903 573c 00C0 rjmp .L802 |
9904 .L789: |
9905 573e 1092 0000 sts StartTrigger,__zero_reg__ |
9906 5742 1092 0000 sts HoverGasFilter.23,__zero_reg__ |
9907 5746 1092 0000 sts (HoverGasFilter.23)+1,__zero_reg__ |
9908 574a 1092 0000 sts (HoverGasFilter.23)+2,__zero_reg__ |
9909 574e 1092 0000 sts (HoverGasFilter.23)+3,__zero_reg__ |
9910 5752 3093 0000 sts (HoverGas)+1,r19 |
9911 5756 2093 0000 sts HoverGas,r18 |
9912 575a 00C0 rjmp .L802 |
9913 .L653: |
9914 575c 8091 0000 lds r24,FC_StatusFlags |
9915 5760 806C ori r24,lo8(-64) |
9916 5762 8093 0000 sts FC_StatusFlags,r24 |
9917 .L802: |
9918 5766 8091 0000 lds r24,NC_To_FC_Flags |
9919 576a 81FF sbrs r24,1 |
9920 576c 00C0 rjmp .L803 |
9921 576e 8981 ldd r24,Y+1 |
9922 5770 9A81 ldd r25,Y+2 |
9923 5772 97FD sbrc r25,7 |
9924 5774 0396 adiw r24,3 |
9925 .L805: |
9926 5776 9595 asr r25 |
9927 5778 8795 ror r24 |
9928 577a 9595 asr r25 |
9929 577c 8795 ror r24 |
9930 577e 2091 0000 lds r18,HooverGasEmergencyPercent |
9931 5782 3091 0000 lds r19,(HooverGasEmergencyPercent)+1 |
9932 5786 2817 cp r18,r24 |
9933 5788 3907 cpc r19,r25 |
9934 578a 00F4 brsh .L804 |
9935 578c 8091 0000 lds r24,HoverGas |
9936 5790 9091 0000 lds r25,(HoverGas)+1 |
9937 5794 892B or r24,r25 |
9938 5796 01F0 breq .L804 |
9939 5798 220F lsl r18 |
9940 579a 331F rol r19 |
9941 579c 220F lsl r18 |
9942 579e 331F rol r19 |
9943 57a0 3A83 std Y+2,r19 |
9944 57a2 2983 std Y+1,r18 |
9945 .L804: |
9946 57a4 8091 0000 lds r24,HoehenWert |
9947 57a8 9091 0000 lds r25,(HoehenWert)+1 |
9948 57ac A091 0000 lds r26,(HoehenWert)+2 |
9949 57b0 B091 0000 lds r27,(HoehenWert)+3 |
9950 57b4 8093 0000 sts SollHoehe,r24 |
9951 57b8 9093 0000 sts (SollHoehe)+1,r25 |
9952 57bc A093 0000 sts (SollHoehe)+2,r26 |
9953 57c0 B093 0000 sts (SollHoehe)+3,r27 |
9954 57c4 88E9 ldi r24,lo8(15000) |
9955 57c6 9AE3 ldi r25,hi8(15000) |
9956 57c8 9093 0000 sts (beeptime)+1,r25 |
9957 57cc 8093 0000 sts beeptime,r24 |
9958 57d0 80E0 ldi r24,lo8(3584) |
9959 57d2 9EE0 ldi r25,hi8(3584) |
9960 57d4 9093 0000 sts (BeepMuster)+1,r25 |
9961 57d8 8093 0000 sts BeepMuster,r24 |
9962 .L803: |
9963 57dc 2091 0000 lds r18,MIN_GAS |
9964 57e0 822F mov r24,r18 |
9965 57e2 9927 clr r25 |
9966 57e4 880F lsl r24 |
9967 57e6 991F rol r25 |
9968 57e8 880F lsl r24 |
9969 57ea 991F rol r25 |
9970 57ec 8896 adiw r24,40 |
9971 57ee 6981 ldd r22,Y+1 |
9972 57f0 7A81 ldd r23,Y+2 |
9973 57f2 8617 cp r24,r22 |
9974 57f4 9707 cpc r25,r23 |
9975 57f6 04F0 brlt .L806 |
9976 57f8 9A83 std Y+2,r25 |
9977 57fa 8983 std Y+1,r24 |
9978 .L806: |
9979 57fc 7091 0000 lds r23,MAX_GAS |
9980 5800 7D8B std Y+21,r23 |
9981 5802 872F mov r24,r23 |
9982 5804 9927 clr r25 |
9983 5806 880F lsl r24 |
9984 5808 991F rol r25 |
9985 580a 880F lsl r24 |
9986 580c 991F rol r25 |
9987 580e 8055 subi r24,lo8(-(-80)) |
9988 5810 9040 sbci r25,hi8(-(-80)) |
9989 5812 A981 ldd r26,Y+1 |
9990 5814 BA81 ldd r27,Y+2 |
9991 5816 8A17 cp r24,r26 |
9992 5818 9B07 cpc r25,r27 |
9993 581a 04F4 brge .L807 |
9994 581c 9A83 std Y+2,r25 |
9995 581e 8983 std Y+1,r24 |
9996 .L807: |
9997 5820 8091 0000 lds r24,MissingMotor |
9998 5824 8823 tst r24 |
9999 5826 01F4 brne .L809 |
10000 5828 8091 0000 lds r24,Capacity+6 |
10001 582c 8F3F cpi r24,lo8(-1) |
10002 582e 01F4 brne .L809 |
10003 5830 8091 0000 lds r24,NC_ErrorCode |
10004 5834 8823 tst r24 |
10005 5836 01F0 breq .L808 |
10006 .L809: |
10007 5838 8091 0000 lds r24,modell_fliegt |
10008 583c 9091 0000 lds r25,(modell_fliegt)+1 |
10009 5840 0297 sbiw r24,2 |
10010 5842 C097 sbiw r24,48 |
10011 5844 00F4 brsh .L808 |
10012 5846 E981 ldd r30,Y+1 |
10013 5848 FA81 ldd r31,Y+2 |
10014 584a 1E16 cp __zero_reg__,r30 |
10015 584c 1F06 cpc __zero_reg__,r31 |
10016 584e 04F4 brge .L808 |
10017 5850 81E0 ldi r24,lo8(1) |
10018 5852 90E0 ldi r25,hi8(1) |
10019 5854 9093 0000 sts (modell_fliegt)+1,r25 |
10020 5858 8093 0000 sts modell_fliegt,r24 |
10021 585c E22E mov r14,r18 |
10022 585e FF24 clr r15 |
10023 5860 EE0C lsl r14 |
10024 5862 FF1C rol r15 |
10025 5864 EE0C lsl r14 |
10026 5866 FF1C rol r15 |
10027 5868 8701 movw r16,r14 |
10028 586a 085D subi r16,lo8(-(40)) |
10029 586c 1F4F sbci r17,hi8(-(40)) |
10030 586e 1A83 std Y+2,r17 |
10031 5870 0983 std Y+1,r16 |
10032 .L808: |
10033 5872 2981 ldd r18,Y+1 |
10034 5874 3A81 ldd r19,Y+2 |
10035 5876 3093 0000 sts (DebugOut+16)+1,r19 |
10036 587a 2093 0000 sts DebugOut+16,r18 |
10037 587e 8091 0000 lds r24,sollGier.0 |
10038 5882 9091 0000 lds r25,(sollGier.0)+1 |
10039 5886 A091 0000 lds r26,(sollGier.0)+2 |
10040 588a B091 0000 lds r27,(sollGier.0)+3 |
10041 588e 12E0 ldi r17,2 |
10042 5890 880F 1: lsl r24 |
10043 5892 991F rol r25 |
10044 5894 AA1F rol r26 |
10045 5896 BB1F rol r27 |
10046 5898 1A95 dec r17 |
10047 589a 01F4 brne 1b |
10048 589c 0091 0000 lds r16,MesswertGier |
10049 58a0 1091 0000 lds r17,(MesswertGier)+1 |
10050 58a4 081B sub r16,r24 |
10051 58a6 190B sbc r17,r25 |
10052 58a8 213A cpi r18,161 |
10053 58aa 3105 cpc r19,__zero_reg__ |
10054 58ac 04F0 brlt .L811 |
10055 58ae C901 movw r24,r18 |
10056 58b0 37FD sbrc r19,7 |
10057 58b2 0196 adiw r24,1 |
10058 .L813: |
10059 58b4 9595 asr r25 |
10060 58b6 8795 ror r24 |
10061 58b8 8017 cp r24,r16 |
10062 58ba 9107 cpc r25,r17 |
10063 58bc 04F4 brge .L812 |
10064 58be 8C01 movw r16,r24 |
10065 .L812: |
10066 58c0 9095 com r25 |
10067 58c2 8195 neg r24 |
10068 58c4 9F4F sbci r25,lo8(-1) |
10069 58c6 0817 cp r16,r24 |
10070 58c8 1907 cpc r17,r25 |
10071 58ca 04F4 brge .L818 |
10072 58cc 8C01 movw r16,r24 |
10073 58ce 00C0 rjmp .L818 |
10074 .L811: |
10075 58d0 0135 cpi r16,81 |
10076 58d2 1105 cpc r17,__zero_reg__ |
10077 58d4 04F0 brlt .L819 |
10078 58d6 00E5 ldi r16,lo8(80) |
10079 58d8 10E0 ldi r17,hi8(80) |
10080 .L819: |
10081 58da 3FEF ldi r19,hi8(-80) |
10082 58dc 003B cpi r16,lo8(-80) |
10083 58de 1307 cpc r17,r19 |
10084 58e0 04F4 brge .L818 |
10085 58e2 00EB ldi r16,lo8(-80) |
10086 58e4 1FEF ldi r17,hi8(-80) |
10087 .L818: |
10088 58e6 4D89 ldd r20,Y+21 |
10089 58e8 242F mov r18,r20 |
10090 58ea 3327 clr r19 |
10091 58ec 220F lsl r18 |
10092 58ee 331F rol r19 |
10093 58f0 220F lsl r18 |
10094 58f2 331F rol r19 |
10095 58f4 C901 movw r24,r18 |
10096 58f6 6981 ldd r22,Y+1 |
10097 58f8 7A81 ldd r23,Y+2 |
10098 58fa 861B sub r24,r22 |
10099 58fc 970B sbc r25,r23 |
10100 58fe 8017 cp r24,r16 |
10101 5900 9107 cpc r25,r17 |
10102 5902 04F4 brge .L821 |
10103 5904 8C01 movw r16,r24 |
10104 .L821: |
10105 5906 8981 ldd r24,Y+1 |
10106 5908 9A81 ldd r25,Y+2 |
10107 590a 821B sub r24,r18 |
10108 590c 930B sbc r25,r19 |
10109 590e 0817 cp r16,r24 |
10110 5910 1907 cpc r17,r25 |
10111 5912 04F4 brge .L822 |
10112 5914 8C01 movw r16,r24 |
10113 .L822: |
10114 5916 8091 0000 lds r24,MesswertNick |
10115 591a 9091 0000 lds r25,(MesswertNick)+1 |
10116 591e 6091 0000 lds r22,StickNick |
10117 5922 7091 0000 lds r23,(StickNick)+1 |
10118 5926 861B sub r24,r22 |
10119 5928 970B sbc r25,r23 |
10120 592a 9093 0000 sts (DiffNick)+1,r25 |
10121 592e 8093 0000 sts DiffNick,r24 |
10122 5932 D090 0000 lds r13,IntegralFaktor |
10123 5936 2091 0000 lds r18,SummeNick |
10124 593a 3091 0000 lds r19,(SummeNick)+1 |
10125 593e 4091 0000 lds r20,(SummeNick)+2 |
10126 5942 5091 0000 lds r21,(SummeNick)+3 |
10127 5946 DD20 tst r13 |
10128 5948 01F0 breq .L823 |
10129 594a 661A sub r6,r22 |
10130 594c 770A sbc r7,r23 |
10131 594e C301 movw r24,r6 |
10132 5950 AA27 clr r26 |
10133 5952 97FD sbrc r25,7 |
10134 5954 A095 com r26 |
10135 5956 BA2F mov r27,r26 |
10136 5958 00C0 rjmp .L914 |
10137 .L823: |
10138 595a AA27 clr r26 |
10139 595c 97FD sbrc r25,7 |
10140 595e A095 com r26 |
10141 5960 BA2F mov r27,r26 |
10142 .L914: |
10143 5962 280F add r18,r24 |
10144 5964 391F adc r19,r25 |
10145 5966 4A1F adc r20,r26 |
10146 5968 5B1F adc r21,r27 |
10147 596a 2093 0000 sts SummeNick,r18 |
10148 596e 3093 0000 sts (SummeNick)+1,r19 |
10149 5972 4093 0000 sts (SummeNick)+2,r20 |
10150 5976 5093 0000 sts (SummeNick)+3,r21 |
10151 597a 8091 0000 lds r24,SummeNick |
10152 597e 9091 0000 lds r25,(SummeNick)+1 |
10153 5982 A091 0000 lds r26,(SummeNick)+2 |
10154 5986 B091 0000 lds r27,(SummeNick)+3 |
10155 598a 8150 subi r24,lo8(64001) |
10156 598c 9A4F sbci r25,hi8(64001) |
10157 598e A040 sbci r26,hlo8(64001) |
10158 5990 B040 sbci r27,hhi8(64001) |
10159 5992 04F0 brlt .L825 |
10160 5994 80E0 ldi r24,lo8(64000) |
10161 5996 9AEF ldi r25,hi8(64000) |
10162 5998 A0E0 ldi r26,hlo8(64000) |
10163 599a B0E0 ldi r27,hhi8(64000) |
10164 599c 8093 0000 sts SummeNick,r24 |
10165 59a0 9093 0000 sts (SummeNick)+1,r25 |
10166 59a4 A093 0000 sts (SummeNick)+2,r26 |
10167 59a8 B093 0000 sts (SummeNick)+3,r27 |
10168 .L825: |
10169 59ac 8091 0000 lds r24,SummeNick |
10170 59b0 9091 0000 lds r25,(SummeNick)+1 |
10171 59b4 A091 0000 lds r26,(SummeNick)+2 |
10172 59b8 B091 0000 lds r27,(SummeNick)+3 |
10173 59bc 8050 subi r24,lo8(-64000) |
10174 59be 9640 sbci r25,hi8(-64000) |
10175 59c0 AF4F sbci r26,hlo8(-64000) |
10176 59c2 BF4F sbci r27,hhi8(-64000) |
10177 59c4 04F4 brge .L826 |
10178 59c6 80E0 ldi r24,lo8(-64000) |
10179 59c8 96E0 ldi r25,hi8(-64000) |
10180 59ca AFEF ldi r26,hlo8(-64000) |
10181 59cc BFEF ldi r27,hhi8(-64000) |
10182 59ce 8093 0000 sts SummeNick,r24 |
10183 59d2 9093 0000 sts (SummeNick)+1,r25 |
10184 59d6 A093 0000 sts (SummeNick)+2,r26 |
10185 59da B093 0000 sts (SummeNick)+3,r27 |
10186 .L826: |
10187 59de C090 0000 lds r12,EE_Parameter+35 |
10188 59e2 2091 0000 lds r18,DiffNick |
10189 59e6 3091 0000 lds r19,(DiffNick)+1 |
10190 59ea 78E0 ldi r23,lo8(8) |
10191 59ec E72E mov r14,r23 |
10192 59ee EC14 cp r14,r12 |
10193 59f0 00F0 brlo .L827 |
10194 59f2 8C2D mov r24,r12 |
10195 59f4 9927 clr r25 |
10196 59f6 829F mul r24,r18 |
10197 59f8 A001 movw r20,r0 |
10198 59fa 839F mul r24,r19 |
10199 59fc 500D add r21,r0 |
10200 59fe 929F mul r25,r18 |
10201 5a00 500D add r21,r0 |
10202 5a02 1124 clr r1 |
10203 5a04 CA01 movw r24,r20 |
10204 5a06 57FD sbrc r21,7 |
10205 5a08 0796 adiw r24,7 |
10206 .L828: |
10207 5a0a 7C01 movw r14,r24 |
10208 5a0c 63E0 ldi r22,3 |
10209 5a0e F594 1: asr r15 |
10210 5a10 E794 ror r14 |
10211 5a12 6A95 dec r22 |
10212 5a14 01F4 brne 1b |
10213 5a16 00C0 rjmp .L829 |
10214 .L827: |
10215 5a18 8C2D mov r24,r12 |
10216 5a1a 8695 lsr r24 |
10217 5a1c 9927 clr r25 |
10218 5a1e 829F mul r24,r18 |
10219 5a20 B001 movw r22,r0 |
10220 5a22 839F mul r24,r19 |
10221 5a24 700D add r23,r0 |
10222 5a26 929F mul r25,r18 |
10223 5a28 700D add r23,r0 |
10224 5a2a 1124 clr r1 |
10225 5a2c CB01 movw r24,r22 |
10226 5a2e 77FD sbrc r23,7 |
10227 5a30 0396 adiw r24,3 |
10228 .L830: |
10229 5a32 7C01 movw r14,r24 |
10230 5a34 F594 asr r15 |
10231 5a36 E794 ror r14 |
10232 5a38 F594 asr r15 |
10233 5a3a E794 ror r14 |
10234 .L829: |
10235 5a3c A090 0000 lds r10,Ki |
10236 5a40 B090 0000 lds r11,(Ki)+1 |
10237 5a44 9501 movw r18,r10 |
10238 5a46 4427 clr r20 |
10239 5a48 37FD sbrc r19,7 |
10240 5a4a 4095 com r20 |
10241 5a4c 542F mov r21,r20 |
10242 5a4e 8091 0000 lds r24,SummeNick |
10243 5a52 9091 0000 lds r25,(SummeNick)+1 |
10244 5a56 A091 0000 lds r26,(SummeNick)+2 |
10245 5a5a B091 0000 lds r27,(SummeNick)+3 |
10246 5a5e BC01 movw r22,r24 |
10247 5a60 CD01 movw r24,r26 |
10248 5a62 0E94 0000 call __divmodsi4 |
10249 5a66 E20E add r14,r18 |
10250 5a68 F31E adc r15,r19 |
10251 5a6a 9090 0000 lds r9,Parameter_DynamicStability |
10252 5a6e 692D mov r22,r9 |
10253 5a70 7727 clr r23 |
10254 5a72 8827 clr r24 |
10255 5a74 9927 clr r25 |
10256 5a76 9801 movw r18,r16 |
10257 5a78 17FF sbrs r17,7 |
10258 5a7a 00C0 rjmp .L831 |
10259 5a7c 2227 clr r18 |
10260 5a7e 3327 clr r19 |
10261 5a80 201B sub r18,r16 |
10262 5a82 310B sbc r19,r17 |
10263 .L831: |
10264 5a84 37FF sbrs r19,7 |
10265 5a86 00C0 rjmp .L832 |
10266 5a88 2F5F subi r18,lo8(-(1)) |
10267 5a8a 3F4F sbci r19,hi8(-(1)) |
10268 .L832: |
10269 5a8c 3595 asr r19 |
10270 5a8e 2795 ror r18 |
10271 5a90 A981 ldd r26,Y+1 |
10272 5a92 BA81 ldd r27,Y+2 |
10273 5a94 2A0F add r18,r26 |
10274 5a96 3B1F adc r19,r27 |
10275 5a98 4427 clr r20 |
10276 5a9a 37FD sbrc r19,7 |
10277 5a9c 4095 com r20 |
10278 5a9e 542F mov r21,r20 |
10279 5aa0 0E94 0000 call __mulsi3 |
10280 5aa4 97FF sbrs r25,7 |
10281 5aa6 00C0 rjmp .L833 |
10282 5aa8 615C subi r22,lo8(-(63)) |
10283 5aaa 7F4F sbci r23,hi8(-(63)) |
10284 5aac 8F4F sbci r24,hlo8(-(63)) |
10285 5aae 9F4F sbci r25,hhi8(-(63)) |
10286 .L833: |
10287 5ab0 26E0 ldi r18,6 |
10288 5ab2 9595 1: asr r25 |
10289 5ab4 8795 ror r24 |
10290 5ab6 7795 ror r23 |
10291 5ab8 6795 ror r22 |
10292 5aba 2A95 dec r18 |
10293 5abc 01F4 brne 1b |
10294 5abe 9B01 movw r18,r22 |
10295 5ac0 6E15 cp r22,r14 |
10296 5ac2 7F05 cpc r23,r15 |
10297 5ac4 04F4 brge .L834 |
10298 5ac6 7B01 movw r14,r22 |
10299 .L834: |
10300 5ac8 3095 com r19 |
10301 5aca 2195 neg r18 |
10302 5acc 3F4F sbci r19,lo8(-1) |
10303 5ace E216 cp r14,r18 |
10304 5ad0 F306 cpc r15,r19 |
10305 5ad2 04F4 brge .L835 |
10306 5ad4 7901 movw r14,r18 |
10307 .L835: |
10308 5ad6 8091 0000 lds r24,MesswertRoll |
10309 5ada 9091 0000 lds r25,(MesswertRoll)+1 |
10310 5ade 6091 0000 lds r22,StickRoll |
10311 5ae2 7091 0000 lds r23,(StickRoll)+1 |
10312 5ae6 861B sub r24,r22 |
10313 5ae8 970B sbc r25,r23 |
10314 5aea 9093 0000 sts (DiffRoll)+1,r25 |
10315 5aee 8093 0000 sts DiffRoll,r24 |
10316 5af2 2091 0000 lds r18,SummeRoll |
10317 5af6 3091 0000 lds r19,(SummeRoll)+1 |
10318 5afa 4091 0000 lds r20,(SummeRoll)+2 |
10319 5afe 5091 0000 lds r21,(SummeRoll)+3 |
10320 5b02 DD20 tst r13 |
10321 5b04 01F0 breq .L836 |
10322 5b06 461A sub r4,r22 |
10323 5b08 570A sbc r5,r23 |
10324 5b0a C201 movw r24,r4 |
10325 5b0c AA27 clr r26 |
10326 5b0e 97FD sbrc r25,7 |
10327 5b10 A095 com r26 |
10328 5b12 BA2F mov r27,r26 |
10329 5b14 00C0 rjmp .L915 |
10330 .L836: |
10331 5b16 AA27 clr r26 |
10332 5b18 97FD sbrc r25,7 |
10333 5b1a A095 com r26 |
10334 5b1c BA2F mov r27,r26 |
10335 .L915: |
10336 5b1e 280F add r18,r24 |
10337 5b20 391F adc r19,r25 |
10338 5b22 4A1F adc r20,r26 |
10339 5b24 5B1F adc r21,r27 |
10340 5b26 2093 0000 sts SummeRoll,r18 |
10341 5b2a 3093 0000 sts (SummeRoll)+1,r19 |
10342 5b2e 4093 0000 sts (SummeRoll)+2,r20 |
10343 5b32 5093 0000 sts (SummeRoll)+3,r21 |
10344 5b36 8091 0000 lds r24,SummeRoll |
10345 5b3a 9091 0000 lds r25,(SummeRoll)+1 |
10346 5b3e A091 0000 lds r26,(SummeRoll)+2 |
10347 5b42 B091 0000 lds r27,(SummeRoll)+3 |
10348 5b46 8150 subi r24,lo8(64001) |
10349 5b48 9A4F sbci r25,hi8(64001) |
10350 5b4a A040 sbci r26,hlo8(64001) |
10351 5b4c B040 sbci r27,hhi8(64001) |
10352 5b4e 04F0 brlt .L838 |
10353 5b50 80E0 ldi r24,lo8(64000) |
10354 5b52 9AEF ldi r25,hi8(64000) |
10355 5b54 A0E0 ldi r26,hlo8(64000) |
10356 5b56 B0E0 ldi r27,hhi8(64000) |
10357 5b58 8093 0000 sts SummeRoll,r24 |
10358 5b5c 9093 0000 sts (SummeRoll)+1,r25 |
10359 5b60 A093 0000 sts (SummeRoll)+2,r26 |
10360 5b64 B093 0000 sts (SummeRoll)+3,r27 |
10361 .L838: |
10362 5b68 8091 0000 lds r24,SummeRoll |
10363 5b6c 9091 0000 lds r25,(SummeRoll)+1 |
10364 5b70 A091 0000 lds r26,(SummeRoll)+2 |
10365 5b74 B091 0000 lds r27,(SummeRoll)+3 |
10366 5b78 8050 subi r24,lo8(-64000) |
10367 5b7a 9640 sbci r25,hi8(-64000) |
10368 5b7c AF4F sbci r26,hlo8(-64000) |
10369 5b7e BF4F sbci r27,hhi8(-64000) |
10370 5b80 04F4 brge .L839 |
10371 5b82 80E0 ldi r24,lo8(-64000) |
10372 5b84 96E0 ldi r25,hi8(-64000) |
10373 5b86 AFEF ldi r26,hlo8(-64000) |
10374 5b88 BFEF ldi r27,hhi8(-64000) |
10375 5b8a 8093 0000 sts SummeRoll,r24 |
10376 5b8e 9093 0000 sts (SummeRoll)+1,r25 |
10377 5b92 A093 0000 sts (SummeRoll)+2,r26 |
10378 5b96 B093 0000 sts (SummeRoll)+3,r27 |
10379 .L839: |
10380 5b9a 2091 0000 lds r18,DiffRoll |
10381 5b9e 3091 0000 lds r19,(DiffRoll)+1 |
10382 5ba2 48E0 ldi r20,lo8(8) |
10383 5ba4 4C15 cp r20,r12 |
10384 5ba6 00F0 brlo .L840 |
10385 5ba8 8C2D mov r24,r12 |
10386 5baa 9927 clr r25 |
10387 5bac 829F mul r24,r18 |
10388 5bae B001 movw r22,r0 |
10389 5bb0 839F mul r24,r19 |
10390 5bb2 700D add r23,r0 |
10391 5bb4 929F mul r25,r18 |
10392 5bb6 700D add r23,r0 |
10393 5bb8 1124 clr r1 |
10394 5bba CB01 movw r24,r22 |
10395 5bbc 77FD sbrc r23,7 |
10396 5bbe 0796 adiw r24,7 |
10397 .L841: |
10398 5bc0 6C01 movw r12,r24 |
10399 5bc2 B3E0 ldi r27,3 |
10400 5bc4 D594 1: asr r13 |
10401 5bc6 C794 ror r12 |
10402 5bc8 BA95 dec r27 |
10403 5bca 01F4 brne 1b |
10404 5bcc 00C0 rjmp .L842 |
10405 .L840: |
10406 5bce C694 lsr r12 |
10407 5bd0 8C2D mov r24,r12 |
10408 5bd2 9927 clr r25 |
10409 5bd4 829F mul r24,r18 |
10410 5bd6 D001 movw r26,r0 |
10411 5bd8 839F mul r24,r19 |
10412 5bda B00D add r27,r0 |
10413 5bdc 929F mul r25,r18 |
10414 5bde B00D add r27,r0 |
10415 5be0 1124 clr r1 |
10416 5be2 CD01 movw r24,r26 |
10417 5be4 B7FD sbrc r27,7 |
10418 5be6 0396 adiw r24,3 |
10419 .L843: |
10420 5be8 6C01 movw r12,r24 |
10421 5bea D594 asr r13 |
10422 5bec C794 ror r12 |
10423 5bee D594 asr r13 |
10424 5bf0 C794 ror r12 |
10425 .L842: |
10426 5bf2 9501 movw r18,r10 |
10427 5bf4 4427 clr r20 |
10428 5bf6 37FD sbrc r19,7 |
10429 5bf8 4095 com r20 |
10430 5bfa 542F mov r21,r20 |
10431 5bfc 8091 0000 lds r24,SummeRoll |
10432 5c00 9091 0000 lds r25,(SummeRoll)+1 |
10433 5c04 A091 0000 lds r26,(SummeRoll)+2 |
10434 5c08 B091 0000 lds r27,(SummeRoll)+3 |
10435 5c0c BC01 movw r22,r24 |
10436 5c0e CD01 movw r24,r26 |
10437 5c10 0E94 0000 call __divmodsi4 |
10438 5c14 C20E add r12,r18 |
10439 5c16 D31E adc r13,r19 |
10440 5c18 692D mov r22,r9 |
10441 5c1a 7727 clr r23 |
10442 5c1c 8827 clr r24 |
10443 5c1e 9927 clr r25 |
10444 5c20 9801 movw r18,r16 |
10445 5c22 17FF sbrs r17,7 |
10446 5c24 00C0 rjmp .L844 |
10447 5c26 2227 clr r18 |
10448 5c28 3327 clr r19 |
10449 5c2a 201B sub r18,r16 |
10450 5c2c 310B sbc r19,r17 |
10451 .L844: |
10452 5c2e 37FF sbrs r19,7 |
10453 5c30 00C0 rjmp .L845 |
10454 5c32 2F5F subi r18,lo8(-(1)) |
10455 5c34 3F4F sbci r19,hi8(-(1)) |
10456 .L845: |
10457 5c36 3595 asr r19 |
10458 5c38 2795 ror r18 |
10459 5c3a E981 ldd r30,Y+1 |
10460 5c3c FA81 ldd r31,Y+2 |
10461 5c3e 2E0F add r18,r30 |
10462 5c40 3F1F adc r19,r31 |
10463 5c42 4427 clr r20 |
10464 5c44 37FD sbrc r19,7 |
10465 5c46 4095 com r20 |
10466 5c48 542F mov r21,r20 |
10467 5c4a 0E94 0000 call __mulsi3 |
10468 5c4e 97FF sbrs r25,7 |
10469 5c50 00C0 rjmp .L846 |
10470 5c52 615C subi r22,lo8(-(63)) |
10471 5c54 7F4F sbci r23,hi8(-(63)) |
10472 5c56 8F4F sbci r24,hlo8(-(63)) |
10473 5c58 9F4F sbci r25,hhi8(-(63)) |
10474 .L846: |
10475 5c5a E6E0 ldi r30,6 |
10476 5c5c 9595 1: asr r25 |
10477 5c5e 8795 ror r24 |
10478 5c60 7795 ror r23 |
10479 5c62 6795 ror r22 |
10480 5c64 EA95 dec r30 |
10481 5c66 01F4 brne 1b |
10482 5c68 9B01 movw r18,r22 |
10483 5c6a 6C15 cp r22,r12 |
10484 5c6c 7D05 cpc r23,r13 |
10485 5c6e 04F4 brge .L847 |
10486 5c70 6B01 movw r12,r22 |
10487 .L847: |
10488 5c72 3095 com r19 |
10489 5c74 2195 neg r18 |
10490 5c76 3F4F sbci r19,lo8(-1) |
10491 5c78 C216 cp r12,r18 |
10492 5c7a D306 cpc r13,r19 |
10493 5c7c 04F4 brge .L848 |
10494 5c7e 6901 movw r12,r18 |
10495 .L848: |
10496 5c80 8091 0000 lds r24,MIN_GAS |
10497 5c84 282E mov r2,r24 |
10498 5c86 3324 clr r3 |
10499 5c88 5090 0000 lds r5,EE_Parameter+101 |
10500 5c8c 60E0 ldi r22,lo8(Motor) |
10501 5c8e 862E mov r8,r22 |
10502 5c90 60E0 ldi r22,hi8(Motor) |
10503 5c92 962E mov r9,r22 |
10504 5c94 50E0 ldi r21,lo8(Mixer+13) |
10505 5c96 A52E mov r10,r21 |
10506 5c98 50E0 ldi r21,hi8(Mixer+13) |
10507 5c9a B52E mov r11,r21 |
10508 5c9c 4BE0 ldi r20,lo8(11) |
10509 5c9e 442E mov r4,r20 |
10510 5ca0 30E0 ldi r19,lo8(tmp_motorwert) |
10511 5ca2 632E mov r6,r19 |
10512 5ca4 30E0 ldi r19,hi8(tmp_motorwert) |
10513 5ca6 732E mov r7,r19 |
10514 .L883: |
10515 5ca8 D501 movw r26,r10 |
10516 5caa 2C91 ld r18,X |
10517 5cac 1216 cp __zero_reg__,r18 |
10518 5cae 04F0 brlt .+2 |
10519 5cb0 00C0 rjmp .L852 |
10520 5cb2 2034 cpi r18,lo8(64) |
10521 5cb4 01F4 brne .L853 |
10522 5cb6 E981 ldd r30,Y+1 |
10523 5cb8 FA81 ldd r31,Y+2 |
10524 5cba FF8B std Y+23,r31 |
10525 5cbc EE8B std Y+22,r30 |
10526 5cbe 00C0 rjmp .L854 |
10527 .L853: |
10528 5cc0 4981 ldd r20,Y+1 |
10529 5cc2 5A81 ldd r21,Y+2 |
10530 5cc4 CA01 movw r24,r20 |
10531 5cc6 AA27 clr r26 |
10532 5cc8 97FD sbrc r25,7 |
10533 5cca A095 com r26 |
10534 5ccc BA2F mov r27,r26 |
10535 5cce 3327 clr r19 |
10536 5cd0 27FD sbrc r18,7 |
10537 5cd2 3095 com r19 |
10538 5cd4 432F mov r20,r19 |
10539 5cd6 532F mov r21,r19 |
10540 5cd8 BC01 movw r22,r24 |
10541 5cda CD01 movw r24,r26 |
10542 5cdc 0E94 0000 call __mulsi3 |
10543 5ce0 97FF sbrs r25,7 |
10544 5ce2 00C0 rjmp .L855 |
10545 5ce4 615C subi r22,lo8(-(63)) |
10546 5ce6 7F4F sbci r23,hi8(-(63)) |
10547 5ce8 8F4F sbci r24,hlo8(-(63)) |
10548 5cea 9F4F sbci r25,hhi8(-(63)) |
10549 .L855: |
10550 5cec 26E0 ldi r18,6 |
10551 5cee 9595 1: asr r25 |
10552 5cf0 8795 ror r24 |
10553 5cf2 7795 ror r23 |
10554 5cf4 6795 ror r22 |
10555 5cf6 2A95 dec r18 |
10556 5cf8 01F4 brne 1b |
10557 5cfa 7F8B std Y+23,r23 |
10558 5cfc 6E8B std Y+22,r22 |
10559 .L854: |
10560 5cfe F501 movw r30,r10 |
10561 5d00 2181 ldd r18,Z+1 |
10562 5d02 2034 cpi r18,lo8(64) |
10563 5d04 01F4 brne .L856 |
10564 5d06 2E89 ldd r18,Y+22 |
10565 5d08 3F89 ldd r19,Y+23 |
10566 5d0a 2E0D add r18,r14 |
10567 5d0c 3F1D adc r19,r15 |
10568 5d0e 3F8B std Y+23,r19 |
10569 5d10 2E8B std Y+22,r18 |
10570 5d12 00C0 rjmp .L857 |
10571 .L856: |
10572 5d14 203C cpi r18,lo8(-64) |
10573 5d16 01F4 brne .L858 |
10574 5d18 4E89 ldd r20,Y+22 |
10575 5d1a 5F89 ldd r21,Y+23 |
10576 5d1c 4E19 sub r20,r14 |
10577 5d1e 5F09 sbc r21,r15 |
10578 5d20 5F8B std Y+23,r21 |
10579 5d22 4E8B std Y+22,r20 |
10580 5d24 00C0 rjmp .L857 |
10581 .L858: |
10582 5d26 C701 movw r24,r14 |
10583 5d28 AA27 clr r26 |
10584 5d2a 97FD sbrc r25,7 |
10585 5d2c A095 com r26 |
10586 5d2e BA2F mov r27,r26 |
10587 5d30 3327 clr r19 |
10588 5d32 27FD sbrc r18,7 |
10589 5d34 3095 com r19 |
10590 5d36 432F mov r20,r19 |
10591 5d38 532F mov r21,r19 |
10592 5d3a BC01 movw r22,r24 |
10593 5d3c CD01 movw r24,r26 |
10594 5d3e 0E94 0000 call __mulsi3 |
10595 5d42 97FF sbrs r25,7 |
10596 5d44 00C0 rjmp .L860 |
10597 5d46 615C subi r22,lo8(-(63)) |
10598 5d48 7F4F sbci r23,hi8(-(63)) |
10599 5d4a 8F4F sbci r24,hlo8(-(63)) |
10600 5d4c 9F4F sbci r25,hhi8(-(63)) |
10601 .L860: |
10602 5d4e B6E0 ldi r27,6 |
10603 5d50 9595 1: asr r25 |
10604 5d52 8795 ror r24 |
10605 5d54 7795 ror r23 |
10606 5d56 6795 ror r22 |
10607 5d58 BA95 dec r27 |
10608 5d5a 01F4 brne 1b |
10609 5d5c AE89 ldd r26,Y+22 |
10610 5d5e BF89 ldd r27,Y+23 |
10611 5d60 A60F add r26,r22 |
10612 5d62 B71F adc r27,r23 |
10613 5d64 BF8B std Y+23,r27 |
10614 5d66 AE8B std Y+22,r26 |
10615 .L857: |
10616 5d68 F501 movw r30,r10 |
10617 5d6a 2281 ldd r18,Z+2 |
10618 5d6c 2034 cpi r18,lo8(64) |
10619 5d6e 01F4 brne .L861 |
10620 5d70 2E89 ldd r18,Y+22 |
10621 5d72 3F89 ldd r19,Y+23 |
10622 5d74 2C0D add r18,r12 |
10623 5d76 3D1D adc r19,r13 |
10624 5d78 3F8B std Y+23,r19 |
10625 5d7a 2E8B std Y+22,r18 |
10626 5d7c 00C0 rjmp .L862 |
10627 .L861: |
10628 5d7e 203C cpi r18,lo8(-64) |
10629 5d80 01F4 brne .L863 |
10630 5d82 4E89 ldd r20,Y+22 |
10631 5d84 5F89 ldd r21,Y+23 |
10632 5d86 4C19 sub r20,r12 |
10633 5d88 5D09 sbc r21,r13 |
10634 5d8a 5F8B std Y+23,r21 |
10635 5d8c 4E8B std Y+22,r20 |
10636 5d8e 00C0 rjmp .L862 |
10637 .L863: |
10638 5d90 C601 movw r24,r12 |
10639 5d92 AA27 clr r26 |
10640 5d94 97FD sbrc r25,7 |
10641 5d96 A095 com r26 |
10642 5d98 BA2F mov r27,r26 |
10643 5d9a 3327 clr r19 |
10644 5d9c 27FD sbrc r18,7 |
10645 5d9e 3095 com r19 |
10646 5da0 432F mov r20,r19 |
10647 5da2 532F mov r21,r19 |
10648 5da4 BC01 movw r22,r24 |
10649 5da6 CD01 movw r24,r26 |
10650 5da8 0E94 0000 call __mulsi3 |
10651 5dac 97FF sbrs r25,7 |
10652 5dae 00C0 rjmp .L865 |
10653 5db0 615C subi r22,lo8(-(63)) |
10654 5db2 7F4F sbci r23,hi8(-(63)) |
10655 5db4 8F4F sbci r24,hlo8(-(63)) |
10656 5db6 9F4F sbci r25,hhi8(-(63)) |
10657 .L865: |
10658 5db8 A6E0 ldi r26,6 |
10659 5dba 9595 1: asr r25 |
10660 5dbc 8795 ror r24 |
10661 5dbe 7795 ror r23 |
10662 5dc0 6795 ror r22 |
10663 5dc2 AA95 dec r26 |
10664 5dc4 01F4 brne 1b |
10665 5dc6 AE89 ldd r26,Y+22 |
10666 5dc8 BF89 ldd r27,Y+23 |
10667 5dca A60F add r26,r22 |
10668 5dcc B71F adc r27,r23 |
10669 5dce BF8B std Y+23,r27 |
10670 5dd0 AE8B std Y+22,r26 |
10671 .L862: |
10672 5dd2 F501 movw r30,r10 |
10673 5dd4 2381 ldd r18,Z+3 |
10674 5dd6 2034 cpi r18,lo8(64) |
10675 5dd8 01F4 brne .L866 |
10676 5dda 2E89 ldd r18,Y+22 |
10677 5ddc 3F89 ldd r19,Y+23 |
10678 5dde 200F add r18,r16 |
10679 5de0 311F adc r19,r17 |
10680 5de2 3F8B std Y+23,r19 |
10681 5de4 2E8B std Y+22,r18 |
10682 5de6 00C0 rjmp .L867 |
10683 .L866: |
10684 5de8 203C cpi r18,lo8(-64) |
10685 5dea 01F4 brne .L868 |
10686 5dec 4E89 ldd r20,Y+22 |
10687 5dee 5F89 ldd r21,Y+23 |
10688 5df0 401B sub r20,r16 |
10689 5df2 510B sbc r21,r17 |
10690 5df4 5F8B std Y+23,r21 |
10691 5df6 4E8B std Y+22,r20 |
10692 5df8 00C0 rjmp .L867 |
10693 .L868: |
10694 5dfa C801 movw r24,r16 |
10695 5dfc AA27 clr r26 |
10696 5dfe 97FD sbrc r25,7 |
10697 5e00 A095 com r26 |
10698 5e02 BA2F mov r27,r26 |
10699 5e04 3327 clr r19 |
10700 5e06 27FD sbrc r18,7 |
10701 5e08 3095 com r19 |
10702 5e0a 432F mov r20,r19 |
10703 5e0c 532F mov r21,r19 |
10704 5e0e BC01 movw r22,r24 |
10705 5e10 CD01 movw r24,r26 |
10706 5e12 0E94 0000 call __mulsi3 |
10707 5e16 97FF sbrs r25,7 |
10708 5e18 00C0 rjmp .L870 |
10709 5e1a 615C subi r22,lo8(-(63)) |
10710 5e1c 7F4F sbci r23,hi8(-(63)) |
10711 5e1e 8F4F sbci r24,hlo8(-(63)) |
10712 5e20 9F4F sbci r25,hhi8(-(63)) |
10713 .L870: |
10714 5e22 F6E0 ldi r31,6 |
10715 5e24 9595 1: asr r25 |
10716 5e26 8795 ror r24 |
10717 5e28 7795 ror r23 |
10718 5e2a 6795 ror r22 |
10719 5e2c FA95 dec r31 |
10720 5e2e 01F4 brne 1b |
10721 5e30 AE89 ldd r26,Y+22 |
10722 5e32 BF89 ldd r27,Y+23 |
10723 5e34 A60F add r26,r22 |
10724 5e36 B71F adc r27,r23 |
10725 5e38 BF8B std Y+23,r27 |
10726 5e3a AE8B std Y+22,r26 |
10727 .L867: |
10728 5e3c F301 movw r30,r6 |
10729 5e3e 8081 ld r24,Z |
10730 5e40 9181 ldd r25,Z+1 |
10731 5e42 2E89 ldd r18,Y+22 |
10732 5e44 3F89 ldd r19,Y+23 |
10733 5e46 8217 cp r24,r18 |
10734 5e48 9307 cpc r25,r19 |
10735 5e4a 04F4 brge .L871 |
10736 5e4c B901 movw r22,r18 |
10737 5e4e 680F add r22,r24 |
10738 5e50 791F adc r23,r25 |
10739 5e52 77FF sbrs r23,7 |
10740 5e54 00C0 rjmp .L872 |
10741 5e56 6F5F subi r22,lo8(-(1)) |
10742 5e58 7F4F sbci r23,hi8(-(1)) |
10743 .L872: |
10744 5e5a 7595 asr r23 |
10745 5e5c 6795 ror r22 |
10746 5e5e 7F8B std Y+23,r23 |
10747 5e60 6E8B std Y+22,r22 |
10748 5e62 00C0 rjmp .L873 |
10749 .L871: |
10750 5e64 5520 tst r5 |
10751 5e66 01F4 brne .L874 |
10752 5e68 4E89 ldd r20,Y+22 |
10753 5e6a 5F89 ldd r21,Y+23 |
10754 5e6c 440F add r20,r20 |
10755 5e6e 551F adc r21,r21 |
10756 5e70 481B sub r20,r24 |
10757 5e72 590B sbc r21,r25 |
10758 5e74 5F8B std Y+23,r21 |
10759 5e76 4E8B std Y+22,r20 |
10760 5e78 00C0 rjmp .L873 |
10761 .L874: |
10762 5e7a 51E0 ldi r21,lo8(1) |
10763 5e7c 5515 cp r21,r5 |
10764 5e7e 00F4 brsh .L873 |
10765 5e80 252D mov r18,r5 |
10766 5e82 3327 clr r19 |
10767 5e84 6E89 ldd r22,Y+22 |
10768 5e86 7F89 ldd r23,Y+23 |
10769 5e88 861B sub r24,r22 |
10770 5e8a 970B sbc r25,r23 |
10771 5e8c B901 movw r22,r18 |
10772 5e8e 0E94 0000 call __divmodhi4 |
10773 5e92 AE89 ldd r26,Y+22 |
10774 5e94 BF89 ldd r27,Y+23 |
10775 5e96 A60F add r26,r22 |
10776 5e98 B71F adc r27,r23 |
10777 5e9a BF8B std Y+23,r27 |
10778 5e9c AE8B std Y+22,r26 |
10779 .L873: |
10780 5e9e C101 movw r24,r2 |
10781 5ea0 880F lsl r24 |
10782 5ea2 991F rol r25 |
10783 5ea4 880F lsl r24 |
10784 5ea6 991F rol r25 |
10785 5ea8 EE89 ldd r30,Y+22 |
10786 5eaa FF89 ldd r31,Y+23 |
10787 5eac 8E17 cp r24,r30 |
10788 5eae 9F07 cpc r25,r31 |
10789 5eb0 04F4 brge .L916 |
10790 5eb2 FD89 ldd r31,Y+21 |
10791 5eb4 8F2F mov r24,r31 |
10792 5eb6 9927 clr r25 |
10793 5eb8 880F lsl r24 |
10794 5eba 991F rol r25 |
10795 5ebc 880F lsl r24 |
10796 5ebe 991F rol r25 |
10797 5ec0 2E89 ldd r18,Y+22 |
10798 5ec2 3F89 ldd r19,Y+23 |
10799 5ec4 2817 cp r18,r24 |
10800 5ec6 3907 cpc r19,r25 |
10801 5ec8 04F0 brlt .L878 |
10802 .L916: |
10803 5eca 9F8B std Y+23,r25 |
10804 5ecc 8E8B std Y+22,r24 |
10805 .L878: |
10806 5ece 8E89 ldd r24,Y+22 |
10807 5ed0 9F89 ldd r25,Y+23 |
10808 5ed2 97FD sbrc r25,7 |
10809 5ed4 0396 adiw r24,3 |
10810 .L880: |
10811 5ed6 9595 asr r25 |
10812 5ed8 8795 ror r24 |
10813 5eda 9595 asr r25 |
10814 5edc 8795 ror r24 |
10815 5ede F401 movw r30,r8 |
10816 5ee0 8183 std Z+1,r24 |
10817 5ee2 880F lsl r24 |
10818 5ee4 991F rol r25 |
10819 5ee6 880F lsl r24 |
10820 5ee8 991F rol r25 |
10821 5eea 2E89 ldd r18,Y+22 |
10822 5eec 3F89 ldd r19,Y+23 |
10823 5eee 281B sub r18,r24 |
10824 5ef0 390B sbc r19,r25 |
10825 5ef2 C901 movw r24,r18 |
10826 5ef4 880F lsl r24 |
10827 5ef6 8283 std Z+2,r24 |
10828 5ef8 EE89 ldd r30,Y+22 |
10829 5efa FF89 ldd r31,Y+23 |
10830 5efc D301 movw r26,r6 |
10831 5efe ED93 st X+,r30 |
10832 5f00 FC93 st X,r31 |
10833 5f02 00C0 rjmp .L851 |
10834 .L852: |
10835 5f04 F401 movw r30,r8 |
10836 5f06 1182 std Z+1,__zero_reg__ |
10837 5f08 1282 std Z+2,__zero_reg__ |
10838 .L851: |
10839 5f0a 4A94 dec r4 |
10840 5f0c 22E0 ldi r18,lo8(2) |
10841 5f0e 30E0 ldi r19,hi8(2) |
10842 5f10 620E add r6,r18 |
10843 5f12 731E adc r7,r19 |
10844 5f14 44E0 ldi r20,lo8(4) |
10845 5f16 50E0 ldi r21,hi8(4) |
10846 5f18 A40E add r10,r20 |
10847 5f1a B51E adc r11,r21 |
10848 5f1c 68E0 ldi r22,lo8(8) |
10849 5f1e 70E0 ldi r23,hi8(8) |
10850 5f20 860E add r8,r22 |
10851 5f22 971E adc r9,r23 |
10852 5f24 47FE sbrs r4,7 |
10853 5f26 00C0 rjmp .L883 |
10854 /* epilogue: frame size=23 */ |
10855 5f28 E2E1 ldi r30,18 |
10856 5f2a C95E subi r28,-23 |
10857 5f2c 0C94 0000 jmp __epilogue_restores__+0 |
10858 /* epilogue end (size=4) */ |
10859 /* function MotorRegler size 8305 (8295) */ |
10861 .comm TrimNick,2,1 |
10862 .comm TrimRoll,2,1 |
10863 .comm ErsatzKompass,4,1 |
10864 .comm ErsatzKompassInGrad,2,1 |
10865 .comm MesswertNick,2,1 |
10866 .comm MesswertRoll,2,1 |
10867 .comm MesswertGier,2,1 |
10868 .comm Mittelwert_AccNick,2,1 |
10869 .comm Mittelwert_AccRoll,2,1 |
10870 .comm NaviAccNick,2,1 |
10871 .comm NaviAccRoll,2,1 |
10872 .comm h,1,1 |
10873 .comm m,1,1 |
10874 .comm s,1,1 |
10875 .comm DiffNick,2,1 |
10876 .comm DiffRoll,2,1 |
10877 .comm Parameter_Servo3,1,1 |
10878 .comm Parameter_Servo4,1,1 |
10879 .comm Parameter_Servo5,1,1 |
10880 .comm Parameter_J16Bitmask,1,1 |
10881 .comm Parameter_J16Timing,1,1 |
10882 .comm Parameter_J17Bitmask,1,1 |
10883 .comm Parameter_J17Timing,1,1 |
10884 .comm Parameter_GlobalConfig,1,1 |
10885 .comm Parameter_ExtraConfig,1,1 |
10886 .comm MesswertGierBias,2,1 |
10887 .comm RohMesswertNick,2,1 |
10888 .comm RohMesswertRoll,2,1 |
10889 .comm MittelIntegralNick,4,1 |
10890 .comm MittelIntegralRoll,4,1 |
10891 .comm MittelIntegralNick2,4,1 |
10892 .comm MittelIntegralRoll2,4,1 |
10893 .comm MAX_GAS,1,1 |
10894 .comm MIN_GAS,1,1 |
10895 .comm GyroFaktor,1,1 |
10896 .comm GyroFaktorGier,1,1 |
10897 .comm IntegralFaktor,1,1 |
10898 .comm IntegralFaktorGier,1,1 |
10899 .comm Parameter_NaviGpsModeControl,1,1 |
10900 .comm Parameter_NaviGpsGain,1,1 |
10901 .comm Parameter_NaviGpsP,1,1 |
10902 .comm Parameter_NaviGpsI,1,1 |
10903 .comm Parameter_NaviGpsD,1,1 |
10904 .comm Parameter_NaviGpsACC,1,1 |
10905 .comm Parameter_NaviOperatingRadius,1,1 |
10906 .comm Parameter_NaviWindCorrection,1,1 |
10907 .comm Parameter_NaviSpeedCompensation,1,1 |
10908 .comm Parameter_ExternalControl,1,1 |
10909 .comm Parameter_MaximumAltitude,1,1 |
10910 .comm KopplungsteilNickRoll,2,1 |
10911 .comm KopplungsteilRollNick,2,1 |
10912 .comm tmp_motorwert,24,1 |
10913 /* File "fc.c": code 12351 = 0x303f (12290), prologues 31, epilogues 30 */ |
DEFINED SYMBOLS |
*ABS*:00000000 fc.c |
C:\Temp/ccqfRHGa.s:3 *ABS*:0000003f __SREG__ |
C:\Temp/ccqfRHGa.s:4 *ABS*:0000003e __SP_H__ |
C:\Temp/ccqfRHGa.s:5 *ABS*:0000003d __SP_L__ |
C:\Temp/ccqfRHGa.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Temp/ccqfRHGa.s:7 *ABS*:00000001 __zero_reg__ |
C:\Temp/ccqfRHGa.s:15 .bss:00000000 GasIsZeroCnt |
C:\Temp/ccqfRHGa.s:21 .bss:00000002 HooverGasEmergencyPercent |
C:\Temp/ccqfRHGa.s:27 .data:00000000 VarioCharacter |
C:\Temp/ccqfRHGa.s:32 .data:00000001 GIER_GRAD_FAKTOR |
C:\Temp/ccqfRHGa.s:39 .bss:00000004 FC_StatusFlags2 |
C:\Temp/ccqfRHGa.s:45 .bss:00000005 FC_StatusFlags |
C:\Temp/ccqfRHGa.s:51 .bss:00000006 modell_fliegt |
C:\Temp/ccqfRHGa.s:57 .bss:00000008 MaxStickRoll |
C:\Temp/ccqfRHGa.s:63 .bss:0000000a MaxStickNick |
C:\Temp/ccqfRHGa.s:69 .data:00000005 ExternHoehenValue |
C:\Temp/ccqfRHGa.s:76 .bss:0000000c ExternStickGier |
C:\Temp/ccqfRHGa.s:82 .bss:0000000e ExternStickRoll |
C:\Temp/ccqfRHGa.s:88 .bss:00000010 ExternStickNick |
C:\Temp/ccqfRHGa.s:94 .data:00000007 sintab |
C:\Temp/ccqfRHGa.s:131 .bss:00000012 CareFree |
C:\Temp/ccqfRHGa.s:137 .data:00000026 Parameter_DynamicStability |
C:\Temp/ccqfRHGa.s:142 .data:00000027 Parameter_CouplingYawCorrection |
C:\Temp/ccqfRHGa.s:147 .data:00000028 Parameter_AchsKopplung2 |
C:\Temp/ccqfRHGa.s:152 .data:00000029 Parameter_AchsKopplung1 |
C:\Temp/ccqfRHGa.s:157 .data:0000002a Parameter_LoopGasLimit |
C:\Temp/ccqfRHGa.s:162 .data:0000002b Parameter_ServoRollControl |
C:\Temp/ccqfRHGa.s:167 .data:0000002c Parameter_ServoNickControl |
C:\Temp/ccqfRHGa.s:174 .bss:00000013 Parameter_UserParam8 |
C:\Temp/ccqfRHGa.s:180 .bss:00000014 Parameter_UserParam7 |
C:\Temp/ccqfRHGa.s:186 .bss:00000015 Parameter_UserParam6 |
C:\Temp/ccqfRHGa.s:192 .bss:00000016 Parameter_UserParam5 |
C:\Temp/ccqfRHGa.s:198 .bss:00000017 Parameter_UserParam4 |
C:\Temp/ccqfRHGa.s:204 .bss:00000018 Parameter_UserParam3 |
C:\Temp/ccqfRHGa.s:210 .bss:00000019 Parameter_UserParam2 |
C:\Temp/ccqfRHGa.s:216 .bss:0000001a Parameter_UserParam1 |
C:\Temp/ccqfRHGa.s:222 .data:0000002d Parameter_I_Faktor |
C:\Temp/ccqfRHGa.s:227 .data:0000002e Parameter_Gier_P |
C:\Temp/ccqfRHGa.s:232 .data:0000002f Parameter_Gyro_Gier_I |
C:\Temp/ccqfRHGa.s:237 .data:00000030 Parameter_Gyro_Gier_P |
C:\Temp/ccqfRHGa.s:242 .data:00000031 Parameter_Gyro_I |
C:\Temp/ccqfRHGa.s:247 .data:00000032 Parameter_Gyro_P |
C:\Temp/ccqfRHGa.s:252 .data:00000033 Parameter_Gyro_D |
C:\Temp/ccqfRHGa.s:257 .data:00000034 Parameter_Hoehe_GPS_Z |
C:\Temp/ccqfRHGa.s:262 .data:00000035 Parameter_KompassWirkung |
C:\Temp/ccqfRHGa.s:267 .data:00000036 Parameter_Hoehe_ACC_Wirkung |
C:\Temp/ccqfRHGa.s:272 .data:00000037 Parameter_Hoehe_P |
C:\Temp/ccqfRHGa.s:277 .data:00000038 Parameter_HoehenSchalter |
C:\Temp/ccqfRHGa.s:282 .data:00000039 Parameter_Luftdruck_D |
C:\Temp/ccqfRHGa.s:289 .bss:0000001b Looping_Oben |
C:\Temp/ccqfRHGa.s:295 .bss:0000001c Looping_Unten |
C:\Temp/ccqfRHGa.s:301 .bss:0000001d Looping_Rechts |
C:\Temp/ccqfRHGa.s:307 .bss:0000001e Looping_Links |
C:\Temp/ccqfRHGa.s:313 .bss:0000001f Looping_Roll |
C:\Temp/ccqfRHGa.s:319 .bss:00000020 Looping_Nick |
C:\Temp/ccqfRHGa.s:325 .data:0000003a Ki |
C:\Temp/ccqfRHGa.s:332 .bss:00000021 HoverGas |
C:\Temp/ccqfRHGa.s:338 .bss:00000023 LageKorrekturNick |
C:\Temp/ccqfRHGa.s:344 .bss:00000025 LageKorrekturRoll |
C:\Temp/ccqfRHGa.s:350 .bss:00000027 NeueKompassRichtungMerken |
C:\Temp/ccqfRHGa.s:356 .bss:00000028 CalibrationDone |
C:\Temp/ccqfRHGa.s:362 .bss:00000029 CompassGierSetpoint |
C:\Temp/ccqfRHGa.s:368 .bss:0000002b WaypointTrimming |
C:\Temp/ccqfRHGa.s:374 .data:0000003c carefree_old |
C:\Temp/ccqfRHGa.s:381 .bss:0000002c FromNC_AltitudeSpeed |
C:\Temp/ccqfRHGa.s:387 .bss:0000002d FromNC_AltitudeSetpoint |
C:\Temp/ccqfRHGa.s:393 .bss:00000031 AltitudeSetpointTrimming |
C:\Temp/ccqfRHGa.s:399 .bss:00000033 SollHoehe |
C:\Temp/ccqfRHGa.s:405 .bss:00000037 HoehenWert |
C:\Temp/ccqfRHGa.s:411 .bss:0000003b StartTrigger |
C:\Temp/ccqfRHGa.s:417 .bss:0000003c MotorenEin |
C:\Temp/ccqfRHGa.s:423 .bss:0000003d SenderOkay |
C:\Temp/ccqfRHGa.s:429 .bss:0000003e Poti |
C:\Temp/ccqfRHGa.s:435 .bss:00000047 StickGas |
C:\Temp/ccqfRHGa.s:441 .bss:00000049 StickGier |
C:\Temp/ccqfRHGa.s:447 .bss:0000004b StickRoll |
C:\Temp/ccqfRHGa.s:453 .bss:0000004d StickNick |
C:\Temp/ccqfRHGa.s:459 .data:0000003d HoverGasMax |
C:\Temp/ccqfRHGa.s:466 .bss:0000004f HoverGasMin |
C:\Temp/ccqfRHGa.s:472 .data:0000003f StickGasHover |
C:\Temp/ccqfRHGa.s:479 .bss:00000051 GierGyroFehler |
C:\Temp/ccqfRHGa.s:485 .data:00000041 Umschlag180Roll |
C:\Temp/ccqfRHGa.s:490 .data:00000045 Umschlag180Nick |
C:\Temp/ccqfRHGa.s:497 .bss:00000053 TrichterFlug |
C:\Temp/ccqfRHGa.s:503 .bss:00000054 HoehenReglerAktiv |
C:\Temp/ccqfRHGa.s:509 .data:00000049 KompassSignalSchlecht |
C:\Temp/ccqfRHGa.s:514 .data:0000004b KompassFusion |
C:\Temp/ccqfRHGa.s:519 .data:0000004c CalculateCompassTimer |
C:\Temp/ccqfRHGa.s:526 .bss:00000055 KompassSollWert |
C:\Temp/ccqfRHGa.s:532 .data:0000004d KompassValue |
C:\Temp/ccqfRHGa.s:539 .bss:00000057 Mess_Integral_Hoch |
C:\Temp/ccqfRHGa.s:545 .bss:0000005b SummeRoll |
C:\Temp/ccqfRHGa.s:551 .bss:0000005f SummeNick |
C:\Temp/ccqfRHGa.s:557 .bss:00000063 Mess_Integral_Gier2 |
C:\Temp/ccqfRHGa.s:563 .bss:00000067 Mess_Integral_Gier |
C:\Temp/ccqfRHGa.s:569 .bss:0000006b Mess_IntegralRoll2 |
C:\Temp/ccqfRHGa.s:575 .bss:0000006f Mess_IntegralRoll |
C:\Temp/ccqfRHGa.s:581 .bss:00000073 Mess_IntegralNick2 |
C:\Temp/ccqfRHGa.s:587 .bss:00000077 Mess_IntegralNick |
C:\Temp/ccqfRHGa.s:593 .bss:0000007b Integral_Gier |
C:\Temp/ccqfRHGa.s:599 .bss:0000007f IntegralAccZ |
C:\Temp/ccqfRHGa.s:605 .bss:00000083 IntegralAccRoll |
C:\Temp/ccqfRHGa.s:611 .bss:00000087 IntegralAccNick |
C:\Temp/ccqfRHGa.s:617 .bss:0000008b IntegralRoll2 |
C:\Temp/ccqfRHGa.s:623 .bss:0000008f IntegralRoll |
C:\Temp/ccqfRHGa.s:629 .bss:00000093 IntegralNick2 |
C:\Temp/ccqfRHGa.s:635 .bss:00000097 IntegralNick |
C:\Temp/ccqfRHGa.s:641 .bss:0000009b ControlHeading |
C:\Temp/ccqfRHGa.s:647 .bss:0000009c NeutralAccZ |
C:\Temp/ccqfRHGa.s:653 .bss:0000009e NaviCntAcc |
C:\Temp/ccqfRHGa.s:659 .bss:000000a0 NeutralAccY |
C:\Temp/ccqfRHGa.s:665 .bss:000000a2 NeutralAccX |
C:\Temp/ccqfRHGa.s:671 .bss:000000a4 StartNeutralNick |
C:\Temp/ccqfRHGa.s:677 .bss:000000a6 StartNeutralRoll |
C:\Temp/ccqfRHGa.s:683 .bss:000000a8 AdNeutralGier |
C:\Temp/ccqfRHGa.s:689 .bss:000000aa AdNeutralRoll |
C:\Temp/ccqfRHGa.s:695 .bss:000000ac AdNeutralNick |
C:\Temp/ccqfRHGa.s:701 .bss:000000ae BaroExpandActive |
C:\Temp/ccqfRHGa.s:706 .text:00000000 CopyDebugValues |
*COM*:00000002 Mittelwert_AccNick |
*COM*:00000002 Mittelwert_AccRoll |
*COM*:00000002 ErsatzKompassInGrad |
C:\Temp/ccqfRHGa.s:892 .text:0000022c Piep |
C:\Temp/ccqfRHGa.s:966 .text:000002b2 CalibrierMittelwert |
*COM*:00000002 MesswertNick |
*COM*:00000002 MesswertRoll |
*COM*:00000002 MesswertGier |
C:\Temp/ccqfRHGa.s:1108 .progmem.data:00000000 __c.35 |
C:\Temp/ccqfRHGa.s:1113 .text:000003f4 SetNeutral |
*COM*:00000004 ErsatzKompass |
.bss:000000b0 tmpl.27 |
C:\Temp/ccqfRHGa.s:1621 .bss:000000b4 tmpl2.28 |
C:\Temp/ccqfRHGa.s:1622 .bss:000000b8 tmpl3.29 |
C:\Temp/ccqfRHGa.s:1623 .bss:000000bc tmpl4.30 |
C:\Temp/ccqfRHGa.s:1624 .bss:000000c0 oldNick.31 |
C:\Temp/ccqfRHGa.s:1625 .bss:000000c2 oldRoll.32 |
C:\Temp/ccqfRHGa.s:1626 .bss:000000c4 d2Roll.33 |
C:\Temp/ccqfRHGa.s:1627 .bss:000000c6 d2Nick.34 |
C:\Temp/ccqfRHGa.s:1631 .text:00000960 Mittelwert |
*COM*:00000002 RohMesswertNick |
*COM*:00000002 RohMesswertRoll |
*COM*:00000002 NaviAccNick |
*COM*:00000002 NaviAccRoll |
*COM*:00000001 Parameter_GlobalConfig |
*COM*:00000002 KopplungsteilNickRoll |
*COM*:00000002 KopplungsteilRollNick |
*COM*:00000002 TrimRoll |
*COM*:00000002 TrimNick |
C:\Temp/ccqfRHGa.s:3196 .text:000018c4 SendMotorData |
C:\Temp/ccqfRHGa.s:3256 .text:0000193e ParameterZuordnung |
*COM*:00000001 Parameter_J16Timing |
*COM*:00000001 Parameter_J17Timing |
*COM*:00000001 Parameter_Servo3 |
*COM*:00000001 Parameter_Servo4 |
*COM*:00000001 Parameter_Servo5 |
*COM*:00000001 Parameter_MaximumAltitude |
*COM*:00000001 Parameter_ExtraConfig |
*COM*:00000001 Parameter_ExternalControl |
*COM*:00000001 MAX_GAS |
*COM*:00000001 MIN_GAS |
C:\Temp/ccqfRHGa.s:1628 .bss:000000c8 sollGier.0 |
C:\Temp/ccqfRHGa.s:3975 .bss:000000cc tmp_long.1 |
C:\Temp/ccqfRHGa.s:3976 .bss:000000d0 tmp_long2.2 |
C:\Temp/ccqfRHGa.s:3977 .bss:000000d4 IntegralFehlerNick.3 |
C:\Temp/ccqfRHGa.s:3978 .bss:000000d8 IntegralFehlerRoll.4 |
C:\Temp/ccqfRHGa.s:3979 .bss:000000dc RcLostTimer.5 |
C:\Temp/ccqfRHGa.s:3980 .bss:000000de delay_neutral.6 |
C:\Temp/ccqfRHGa.s:3981 .bss:000000df delay_einschalten.7 |
C:\Temp/ccqfRHGa.s:3982 .bss:000000e0 delay_ausschalten.8 |
C:\Temp/ccqfRHGa.s:3983 .bss:000000e1 move_safety_switch.9 |
C:\Temp/ccqfRHGa.s:3984 .bss:000000e2 ausgleichNick.10 |
C:\Temp/ccqfRHGa.s:3985 .bss:000000e6 ausgleichRoll.11 |
C:\Temp/ccqfRHGa.s:3986 .bss:000000ea stick_nick.12 |
C:\Temp/ccqfRHGa.s:3987 .bss:000000ec stick_roll.13 |
C:\Temp/ccqfRHGa.s:3988 .bss:000000ee cnt.14 |
C:\Temp/ccqfRHGa.s:3989 .bss:000000f0 last_n_p.15 |
C:\Temp/ccqfRHGa.s:3990 .bss:000000f1 last_n_n.16 |
C:\Temp/ccqfRHGa.s:3991 .bss:000000f2 last_r_p.17 |
C:\Temp/ccqfRHGa.s:3992 .bss:000000f3 last_r_n.18 |
C:\Temp/ccqfRHGa.s:3993 .bss:000000f4 MittelIntegralNick_Alt.19 |
C:\Temp/ccqfRHGa.s:3994 .bss:000000f8 MittelIntegralRoll_Alt.20 |
C:\Temp/ccqfRHGa.s:3995 .bss:000000fc HeightTrimming.21 |
C:\Temp/ccqfRHGa.s:3996 .bss:000000fe FilterHCGas.22 |
C:\Temp/ccqfRHGa.s:3997 .bss:00000100 HoverGasFilter.23 |
C:\Temp/ccqfRHGa.s:4002 .data:0000004f delay.24 |
C:\Temp/ccqfRHGa.s:3998 .bss:00000104 BaroAtUpperLimit.25 |
C:\Temp/ccqfRHGa.s:4004 .bss:00000105 BaroAtLowerLimit.26 |
C:\Temp/ccqfRHGa.s:4009 .text:00001f42 MotorRegler |
*COM*:00000001 GyroFaktor |
*COM*:00000001 IntegralFaktor |
*COM*:00000001 GyroFaktorGier |
*COM*:00000001 IntegralFaktorGier |
*COM*:00000004 MittelIntegralNick |
*COM*:00000004 MittelIntegralRoll |
*COM*:00000004 MittelIntegralNick2 |
*COM*:00000004 MittelIntegralRoll2 |
*COM*:00000002 DiffNick |
*COM*:00000002 DiffRoll |
*COM*:00000018 tmp_motorwert |
*COM*:00000001 h |
*COM*:00000001 m |
*COM*:00000001 s |
*COM*:00000001 Parameter_J16Bitmask |
*COM*:00000001 Parameter_J17Bitmask |
*COM*:00000002 MesswertGierBias |
*COM*:00000001 Parameter_NaviGpsModeControl |
*COM*:00000001 Parameter_NaviGpsGain |
*COM*:00000001 Parameter_NaviGpsP |
*COM*:00000001 Parameter_NaviGpsI |
*COM*:00000001 Parameter_NaviGpsD |
*COM*:00000001 Parameter_NaviGpsACC |
*COM*:00000001 Parameter_NaviOperatingRadius |
*COM*:00000001 Parameter_NaviWindCorrection |
*COM*:00000001 Parameter_NaviSpeedCompensation |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
EE_Parameter |
__divmodsi4 |
DebugOut |
AdWertGier |
AdWertAccHoch |
UBat |
Motor |
ServoNickValue |
Capacity |
GPS_Nick |
GPS_Roll |
VersionInfo |
PlatinenVersion |
beeptime |
UpdateMotor |
LIBFC_Polling |
SucheGyroOffset |
AdWertNick |
AdWertRoll |
AdWertAccNick |
AdWertAccRoll |
PPM_in |
__mulsi3 |
__prologue_saves__ |
ExpandBaro |
Delay_ms_Mess |
MessLuftdruck |
SucheLuftruckOffset |
__divmodhi4 |
Aktuell_az |
SetParamWord |
GetParamWord |
uart_putchar |
_printf_P |
Luftdruck |
StartLuftdruck |
VarioMeter |
LED_Init |
FromNaviCtrl_Value |
ServoActive |
NickServoValue |
LIBFC_HoTT_Clear |
__epilogue_restores__ |
AdWertNickFilter |
AdWertRollFilter |
AdReady |
HiResNick |
HiResRoll |
MotorTest |
PC_MotortestActive |
I2C_TransferActive |
motor_write |
twi_state |
BLFlags |
NC_To_FC_MaxAltitude |
SpeakHoTT |
FromNaviCtrl |
BeepMuster |
PPM_diff |
SetActiveParamSet |
WinkelOut |
GetActiveParamSet |
ParamSet_ReadFromEEProm |
LipoDetection |
LIBFC_ReceiverInit |
NC_ErrorCode |
GPSInfo |
NewPpmData |
FromNC_Rotate_C |
FromNC_Rotate_S |
GPS_Aid_StickMultiplikator |
__floatsisf |
__addsf3 |
__fixunssfsi |
ExternControl |
ZaehlMessungen |
BattLowVoltageWarning |
__udivmodhi4 |
DruckOffsetSetting |
SummenHoehe |
ihypot |
c_cos_8192 |
__udivmodqi4 |
NC_To_FC_Flags |
MissingMotor |
Mixer |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/flight.pnproj |
---|
0,0 → 1,0 |
<Project name="Flight-Ctrl"><File path="uart.h"></File><File path="jeti.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="uart.c"></File><File path="printf_P.h"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="old_macros.h"></File><File path="twimaster.c"></File><File path="version.txt"></File><File path="twimaster.h"></File><File path="rc.c"></File><File path="rc.h"></File><File path="fc.h"></File><File path="menu.h"></File><File path="menu.c"></File><File path="_Settings.h"></File><File path="analog.c"></File><File path="analog.h"></File><File path="GPS.c"></File><File path="gps.h"></File><File path="License.txt"></File><File path="spi.h"></File><File path="spi.c"></File><File path="led.h"></File><File path="led.c"></File><File path="fc.c"></File><File path="mymath.c"></File><File path="mymath.h"></File><File path="isqrt.S"></File><File path="Spektrum.c"></File><File path="Spektrum.h"></File><File path="eeprom.h"></File><File path="eeprom.c"></File><File path="libfc.h"></File><File path="debug.c"></File><File path="debug.h"></File></Project> |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/flight.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="Flight-Ctrl" x="true"></e></ViewState></pd> |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/gps.h |
---|
0,0 → 1,3 |
extern signed int GPS_Nick; |
extern signed int GPS_Roll; |
extern unsigned char GPS_Aid_StickMultiplikator; |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/hottmenu.c |
---|
0,0 → 1,810 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software Nutzungsbedingungen (english version: see below) |
// + der Fa. HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland - nachfolgend Lizenzgeber genannt - |
// + Der Lizenzgeber räumt dem Kunden ein nicht-ausschließliches, zeitlich und räumlich* unbeschränktes Recht ein, die im den |
// + Mikrocontroller verwendete Firmware für die Hardware Flight-Ctrl, Navi-Ctrl, BL-Ctrl, MK3Mag & PC-Programm MikroKopter-Tool |
// + - nachfolgend Software genannt - nur für private Zwecke zu nutzen. |
// + Der Einsatz dieser Software ist nur auf oder mit Produkten des Lizenzgebers zulässig. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die vom Lizenzgeber gelieferte Software ist urheberrechtlich geschützt. Alle Rechte an der Software sowie an sonstigen im |
// + Rahmen der Vertragsanbahnung und Vertragsdurchführung überlassenen Unterlagen stehen im Verhältnis der Vertragspartner ausschließlich dem Lizenzgeber zu. |
// + Die in der Software enthaltenen Copyright-Vermerke, Markenzeichen, andere Rechtsvorbehalte, Seriennummern sowie |
// + sonstige der Programmidentifikation dienenden Merkmale dürfen vom Kunden nicht verändert oder unkenntlich gemacht werden. |
// + Der Kunde trifft angemessene Vorkehrungen für den sicheren Einsatz der Software. Er wird die Software gründlich auf deren |
// + Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Die Haftung des Lizenzgebers wird - soweit gesetzlich zulässig - begrenzt in Höhe des typischen und vorhersehbaren |
// + Schadens. Die gesetzliche Haftung bei Personenschäden und nach dem Produkthaftungsgesetz bleibt unberührt. Dem Lizenzgeber steht jedoch der Einwand |
// + des Mitverschuldens offen. |
// + Der Kunde trifft angemessene Vorkehrungen für den Fall, dass die Software ganz oder teilweise nicht ordnungsgemäß arbeitet. |
// + Er wird die Software gründlich auf deren Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Der Kunde wird er seine Daten vor Einsatz der Software nach dem Stand der Technik sichern. |
// + Der Kunde ist darüber unterrichtet, dass der Lizenzgeber seine Daten im zur Vertragsdurchführung erforderlichen Umfang |
// + und auf Grundlage der Datenschutzvorschriften erhebt, speichert, verarbeitet und, sofern notwendig, an Dritte übermittelt. |
// + *) Die räumliche Nutzung bezieht sich nur auf den Einsatzort, nicht auf die Reichweite der programmierten Software. |
// + #### ENDE DER NUTZUNGSBEDINGUNGEN ####' |
// + Hinweis: Informationen über erweiterte Nutzungsrechte (wie z.B. Nutzung für nicht-private Zwecke) sind auf Anfrage per Email an info(@)hisystems.de verfügbar. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software LICENSING TERMS |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + of HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland, Germany - the Licensor - |
// + The Licensor grants the customer a non-exclusive license to use the microcontroller firmware of the Flight-Ctrl, Navi-Ctrl, BL-Ctrl, and MK3Mag hardware |
// + (the Software) exclusively for private purposes. The License is unrestricted with respect to time and territory*. |
// + The Software may only be used with the Licensor's products. |
// + The Software provided by the Licensor is protected by copyright. With respect to the relationship between the parties to this |
// + agreement, all rights pertaining to the Software and other documents provided during the preparation and execution of this |
// + agreement shall be the property of the Licensor. |
// + The information contained in the Software copyright notices, trademarks, other legal reservations, serial numbers and other |
// + features that can be used to identify the program may not be altered or defaced by the customer. |
// + The customer shall be responsible for taking reasonable precautions |
// + for the safe use of the Software. The customer shall test the Software thoroughly regarding its suitability for the |
// + intended purpose before implementing it for actual operation. The Licensor's liability shall be limited to the extent of typical and |
// + foreseeable damage to the extent permitted by law, notwithstanding statutory liability for bodily injury and product |
// + liability. However, the Licensor shall be entitled to the defense of contributory negligence. |
// + The customer will take adequate precautions in the case, that the software is not working properly. The customer will test |
// + the software for his purpose before any operational usage. The customer will backup his data before using the software. |
// + The customer understands that the Licensor collects, stores and processes, and, where required, forwards, customer data |
// + to third parties to the extent necessary for executing the agreement, subject to applicable data protection and privacy regulations. |
// + *) The territory aspect only refers to the place where the Software is used, not its programmed range. |
// + #### END OF LICENSING TERMS #### |
// + Note: For information on license extensions (e.g. commercial use), please contact us at info(@)hisystems.de. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "libfc.h" |
#include "printf_P.h" |
#include "main.h" |
#include "spi.h" |
#include "capacity.h" |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
#define HoTT_printf(format, args...) { _printf_P(&LIBFC_HoTT_Putchar, PSTR(format) , ## args);} |
#define HoTT_printfxy(x,y,format, args...) { LIBFC_HoTT_SetPos(y * 21 + x); _printf_P(&LIBFC_HoTT_Putchar, PSTR(format) , ## args);} |
#define HoTT_printfxy_INV(x,y,format, args...) { LIBFC_HoTT_SetPos(y * 21 + x); _printf_P(&LIBFC_HoTT_Putchar_INV, PSTR(format) , ## args);} |
#define HoTT_printfxy_BLINK(x,y,format, args...) { LIBFC_HoTT_SetPos(y * 21 + x); _printf_P(&LIBFC_HoTT_Putchar_BLINK, PSTR(format) , ## args);} |
#define HoTT_printf_BLINK(format, args...) { _printf_P(&LIBFC_HoTT_Putchar_BLINK, PSTR(format) , ## args);} |
#define HoTT_printf_INV(format, args...) { _printf_P(&LIBFC_HoTT_Putchar_INV, PSTR(format) , ## args);} |
#define VOICE_MINIMALE_EINGANSSPANNUNG 16 |
#define VOICE_BEEP 5 |
#define HoTT_GRAD 96 |
#define HoTT_LINKS 123 |
#define HoTT_RECHTS 124 |
#define HoTT_OBEN 125 |
#define HoTT_UNTEN 126 |
#define HOTT_KEY_RIGHT 1 |
#define HOTT_KEY_DOWN 2 |
#define HOTT_KEY_UP 4 |
#define HOTT_KEY_SET 6 |
#define HOTT_KEY_LEFT 8 |
unsigned char NaviData_WaypointIndex = 0, NaviData_WaypointNumber = 0, NaviData_TargetHoldTime = 0; |
unsigned int NaviData_TargetDistance = 0; |
GPSPacket_t GPSPacket; |
VarioPacket_t VarioPacket; |
ASCIIPacket_t ASCIIPacket; |
ElectricAirPacket_t ElectricAirPacket; |
HoTTGeneral_t HoTTGeneral; |
unsigned char SpeakHoTT = SPEAK_MIKROKOPTER; |
unsigned char ToNC_SpeakHoTT = 0; |
int HoTTVarioMeter = 0; |
const char PROGMEM MIKROKOPTER[] = {" MikroKopter "}; |
const char PROGMEM UNDERVOLTAGE[] = {" !! LiPo voltage !! "}; |
const char PROGMEM NC_ERROR_TEXT[MAX_ERR_NUMBER][17] = |
{ |
//0123456789123456 |
"No Error \0", // 0 |
"Not compatible \0", // 1 |
"MK3Mag not compa\0", // 2 |
"No FC communicat\0", // 3 |
"Compass communic\0", // 4 |
"GPS communicatio\0", // 5 |
"compass value \0", // 6 |
"RC Signal lost \0", // 7 |
"FC spi rx error \0", // 8 |
"No NC communicat\0", // 9 |
"FC Nick Gyro \0", // 10 |
"FC Roll Gyro \0", // 11 |
"FC Yaw Gyro \0", // 12 |
"FC Nick ACC \0", // 13 |
"FC Roll ACC \0", // 14 |
"FC Z-ACC \0", // 15 |
"Pressure sensor \0", // 16 |
"I2C FC->BL-Ctrl \0", // 17 |
"Bl Missing \0", // 18 |
"Mixer Error \0", // 19 |
"Carefree Error \0", // 20 |
"GPS Fix lost \0", // 21 |
"Magnet Error \0", // 22 |
"Motor restart \0", // 23 |
"BL Limitation \0", // 24 |
"GPS Range \0", // 25 |
"No SD-Card \0", // 26 |
"SD-Logging error\0", // 27 |
"Flying range! \0", // 28 |
"Max Altitude! \0", // 29 |
"No GPS fix \0", // 30 |
"compass not cal.\0" // 31 |
}; |
const char PROGMEM HOTT_ERROR[MAX_ERR_NUMBER][2] = |
{ // 1 -> only in flight 0 -> also on ground |
//0123456789123456 |
{0,0},// "No Error \0", // 0 |
{SPEAK_ERROR,0},// "Not compatible \0", // 1 |
{SPEAK_ERROR,0},// "MK3Mag not compa\0", // 2 |
{SPEAK_ERR_NAVI,1},// "No FC communicat\0", // 3 |
{SPEAK_ERR_COMPASS,1},// "MK3Mag communica\0", // 4 |
{SPEAK_ERR_GPS,0},// "GPS communicatio\0", // 5 |
{SPEAK_ERR_COMPASS,1},// "compass value \0", // 6 |
{SPEAK_ERR_RECEICER,0},// "RC Signal lost \0", // 7 |
{SPEAK_ERR_NAVI,0},// "FC spi rx error \0", // 8 |
{SPEAK_ERR_NAVI,0},// "No NC communicat\0", // 9 |
{SPEAK_ERR_SENSOR,0},// "FC Nick Gyro \0", // 10 |
{SPEAK_ERR_SENSOR,0},// "FC Roll Gyro \0", // 11 |
{SPEAK_ERR_SENSOR,0},// "FC Yaw Gyro \0", // 12 |
{SPEAK_ERR_SENSOR,0},// "FC Nick ACC \0", // 13 |
{SPEAK_ERR_SENSOR,0},// "FC Roll ACC \0", // 14 |
{SPEAK_ERR_SENSOR,0},// "FC Z-ACC \0", // 15 |
{SPEAK_ERR_SENSOR,0},// "Pressure sensor \0", // 16 |
{SPEAK_ERR_DATABUS,1},// "I2C FC->BL-Ctrl \0", // 17 |
{SPEAK_ERR_DATABUS,1},// "Bl Missing \0", // 18 |
{SPEAK_ERROR,0},// "Mixer Error \0", // 19 |
{SPEAK_CF_OFF,1},// "Carefree Error \0", // 20 |
{SPEAK_GPS_FIX,1},// "GPS Fix lost \0", // 21 |
{SPEAK_ERR_COMPASS,0},// "Magnet Error \0", // 22 |
{SPEAK_ERR_MOTOR,1},// "Motor restart \0", // 23 |
{SPEAK_MAX_TEMPERAT,1},// "BL Limitation \0", // 24 |
{SPEAK_MAX_RANGE,1},// "GPS Range \0", // 25 |
{SPEAK_ERROR,1},// "No SD-Card \0", // 26 |
{SPEAK_ERROR,1},// "SD-Logging error\0", // 27 |
{SPEAK_MAX_RANGE,1},// "Flying range! \0", // 28 |
{SPEAK_MAX_ALTITUD,1},// "Max Altitude! \0" // 29 |
{SPEAK_GPS_FIX,1}// "no GPS Fix, // 30 |
}; |
unsigned char MaxBlTempertaure = 0; |
unsigned char MinBlTempertaure = 0; |
unsigned char HottestBl = 0; |
void GetHottestBl(void) |
{ |
static unsigned char search = 0,tmp_max,tmp_min,who; |
if(Motor[search].Temperature > tmp_max) { tmp_max = Motor[search].Temperature; who = search;} |
else |
if(Motor[search].Temperature) if(Motor[search].Temperature < tmp_min) tmp_min = Motor[search].Temperature; |
if(++search > MAX_MOTORS) |
{ |
search = 0; |
if(tmp_min != 255) MinBlTempertaure = tmp_min; else MinBlTempertaure = 0; |
MaxBlTempertaure = tmp_max; |
HottestBl = who; |
tmp_min = 255; |
tmp_max = 0; |
who = 0; |
} |
} |
//--------------------------------------------------------------- |
void Hott_ClearLine(unsigned char line) |
{ |
HoTT_printfxy(0,line," "); |
} |
//--------------------------------------------------------------- |
unsigned char HoTT_Waring(void) |
{ |
unsigned char status = 0; |
static char old_status = 0; |
static int repeat; |
//if(Parameter_UserParam1) return(Parameter_UserParam1); |
ToNC_SpeakHoTT = SpeakHoTT; |
if(FC_StatusFlags & FC_STATUS_LOWBAT) status = VOICE_MINIMALE_EINGANSSPANNUNG; |
else |
if(NC_ErrorCode) // Fehlercodes |
{ |
if(MotorenEin || !pgm_read_byte(&HOTT_ERROR[NC_ErrorCode][1])) status = pgm_read_byte(&HOTT_ERROR[NC_ErrorCode][0]); |
} |
if(!status) // Sprachansagen |
{ |
// if(!(GetParamByte(PID_SPEAK_HOTT_CFG) & 0x01)) SpeakHoTT = 0; // is the voice wanted? |
if(!(EE_Parameter.GlobalConfig3 & CFG3_SPEAK_ALL)) SpeakHoTT = 0; // is the voice wanted? |
else status = SpeakHoTT; |
} |
else ToNC_SpeakHoTT = status; |
if(old_status == status) // Gleichen Fehler nur alle 5 sek bringen |
{ |
if(!CheckDelay(repeat)) return(0); |
repeat = SetDelay(5000); |
} |
else repeat = SetDelay(2000); |
if(status) |
{ |
if(status == SpeakHoTT) SpeakHoTT = 0; |
} |
old_status = status; |
// DebugOut.Analog[16] = status; |
return(status); |
} |
/* |
unsigned char HoTTErrorCode(void) |
{ |
return(NC_ErrorCode); |
} |
*/ |
//--------------------------------------------------------------- |
void NC_Fills_HoTT_Telemety(void) |
{ |
unsigned char *ptr = NULL; |
unsigned char max = 0,i,z; |
switch(FromNaviCtrl.Param.Byte[11]) |
{ |
case HOTT_VARIO_PACKET_ID: |
ptr = (unsigned char *) &VarioPacket; |
max = sizeof(VarioPacket); |
break; |
case HOTT_GPS_PACKET_ID: |
ptr = (unsigned char *) &GPSPacket; |
max = sizeof(GPSPacket); |
break; |
case HOTT_ELECTRIC_AIR_PACKET_ID: |
ptr = (unsigned char *) &ElectricAirPacket; |
max = sizeof(ElectricAirPacket); |
break; |
case HOTT_GENERAL_PACKET_ID: |
ptr = (unsigned char *) &HoTTGeneral; |
max = sizeof(HoTTGeneral); |
break; |
} |
z = FromNaviCtrl.Param.Byte[0]; // Data allocation |
for(i=0; i < FromNaviCtrl.Param.Byte[1]; i++) |
{ |
if(z >= max) break; |
ptr[z] = FromNaviCtrl.Param.Byte[2+i]; |
z++; |
} |
} |
unsigned int BuildHoTT_Vario(void) |
{ |
unsigned int tmp = 30000; |
if(VarioCharacter == '+' || VarioCharacter == '-') |
{ |
tmp = 30000 + (AltitudeSetpointTrimming * EE_Parameter.Hoehe_Verstaerkung) / 3; |
if(tmp < 30000 && tmp > 30000 - 50) tmp = 30000 - 50; // weil es sonst erst bei < 0,5m/sek piept |
} |
else |
if((VarioCharacter == ' ') && (FC_StatusFlags & FC_STATUS_FLY)) |
{ |
tmp = 30000 + HoTTVarioMeter; |
if(tmp > 30000) |
{ |
if(tmp < 30000 + 100) tmp = 30000; |
else tmp -= 100; |
} |
if(tmp < 30000) |
{ |
if(tmp > 30000 - 100) tmp = 30000; |
else tmp += 100; |
} |
} |
else |
if(VarioCharacter == '^') tmp = 30000 + FromNC_AltitudeSpeed * 10; |
else |
if(VarioCharacter == 'v') tmp = 30000 - FromNC_AltitudeSpeed * 10; |
return(tmp); |
} |
//--------------------------------------------------------------- |
unsigned char HoTT_Telemety(unsigned char packet_request) |
{ |
unsigned char i; |
//Debug("rqst: %02X",packet_request); |
switch(packet_request) |
{ |
case HOTT_VARIO_PACKET_ID: |
VarioPacket.Altitude = HoehenWert/100 + 500; |
VarioPacket.m_sec = BuildHoTT_Vario(); |
VarioPacket.m_3sec = VarioPacket.m_sec; |
VarioPacket.m_10sec = VarioPacket.m_sec; |
if (VarioPacket.Altitude < VarioPacket.MinAltitude) VarioPacket.MinAltitude = VarioPacket.Altitude; |
if (VarioPacket.Altitude > VarioPacket.MaxAltitude) VarioPacket.MaxAltitude = VarioPacket.Altitude; |
VarioPacket.WarnBeep = 0;//HoTT_Waring(); |
HoTT_DataPointer = (unsigned char *) &VarioPacket; |
VarioPacket.FreeCharacters[0] = VarioCharacter; |
if(FC_StatusFlags2 & FC_STATUS2_CAREFREE) VarioPacket.FreeCharacters[1] = 'C'; else VarioPacket.FreeCharacters[1] = ' '; |
// VarioPacket.FreeCharacters[2] = ' '; |
if(NC_ErrorCode) |
{ |
VarioPacket.Text[0] = NC_ErrorCode/10 + '0'; |
VarioPacket.Text[1] = NC_ErrorCode%10 + '0'; |
VarioPacket.Text[2] = ':'; |
for(i=0; i<16;i++) VarioPacket.Text[i+3] = pgm_read_byte(&NC_ERROR_TEXT[NC_ErrorCode][i]); |
} |
else |
if(FC_StatusFlags & FC_STATUS_LOWBAT) for(i=0; i<21;i++) VarioPacket.Text[i] = pgm_read_byte(&UNDERVOLTAGE[i]); // no Error |
else |
if(NaviData_WaypointNumber) |
{ |
unsigned int tmp_int; |
unsigned char tmp; |
VarioPacket.Text[0] = 'W'; VarioPacket.Text[1] = 'P'; |
VarioPacket.Text[2] = ' '; |
VarioPacket.Text[3] = '0'+(NaviData_WaypointIndex) / 10; |
VarioPacket.Text[4] = '0'+(NaviData_WaypointIndex) % 10; |
VarioPacket.Text[5] = '/'; |
VarioPacket.Text[6] = '0'+(NaviData_WaypointNumber) / 10; |
VarioPacket.Text[7] = '0'+(NaviData_WaypointNumber) % 10; |
VarioPacket.Text[8] = ' '; |
tmp_int = NaviData_TargetDistance; |
if(tmp_int > 1000) { VarioPacket.Text[9] = '0'+(tmp_int) / 1000; tmp_int %= 1000;} |
else VarioPacket.Text[9] = ' '; |
if(tmp_int > 100) { VarioPacket.Text[10] = '0'+(tmp_int) / 100; tmp_int %= 100;} |
else VarioPacket.Text[10] = ' '; |
VarioPacket.Text[11] = '0'+(tmp_int) / 10; |
VarioPacket.Text[12] = '0'+(tmp_int) % 10; |
VarioPacket.Text[13] = 'm'; |
VarioPacket.Text[14] = ' '; |
tmp = NaviData_TargetHoldTime; |
if(tmp > 100) { VarioPacket.Text[15] = '0'+(tmp) / 100; tmp %= 100;} else VarioPacket.Text[15] = ' '; |
VarioPacket.Text[16] = '0'+(tmp) / 10; |
VarioPacket.Text[17] = '0'+(tmp) % 10; |
VarioPacket.Text[18] = 's'; |
VarioPacket.Text[19] = ' '; |
//unsigned char NaviData_WaypointIndex = 0, NaviData_WaypointNumber = 0, NaviData_TargetHoldTime = 0; |
//unsigned int NaviData_TargetDistance = 0; |
} |
else |
for(i=0; i<21;i++) VarioPacket.Text[i] = pgm_read_byte(&MIKROKOPTER[i]); // no Error |
return(sizeof(VarioPacket)); |
break; |
case HOTT_GPS_PACKET_ID: |
GPSPacket.Altitude = HoehenWert/100 + 500; |
// GPSPacket.Distance = GPSInfo.HomeDistance/10; // macht die NC |
// GPSPacket.Heading = GPSInfo.HomeBearing/2; // macht die NC |
// GPSPacket.Speed = (GPSInfo.Speed * 36) / 10; // macht die NC |
GPSPacket.m_sec = BuildHoTT_Vario(); |
GPSPacket.m_3sec = 120; |
GPSPacket.NumOfSats = GPSInfo.NumOfSats; |
GPSPacket.WarnBeep = HoTT_Waring(); |
if(GPSInfo.Flags & FLAG_DIFFSOLN) GPSPacket.SatFix = 'D'; |
else |
if(GPSInfo.SatFix == SATFIX_3D) GPSPacket.SatFix = ' '; |
else GPSPacket.SatFix = '!'; |
HoTT_DataPointer = (unsigned char *) &GPSPacket; |
GPSPacket.FreeCharacters[0] = NC_GPS_ModeCharacter; |
GPSPacket.FreeCharacters[2] = GPSPacket.SatFix; |
GPSPacket.HomeDirection = GPSInfo.HomeBearing / 2;//230; |
return(sizeof(GPSPacket)); |
break; |
case HOTT_ELECTRIC_AIR_PACKET_ID: |
GetHottestBl(); |
ElectricAirPacket.Altitude = HoehenWert/100 + 500; |
ElectricAirPacket.Battery1 = UBat; |
ElectricAirPacket.Battery2 = UBat; |
ElectricAirPacket.VoltageCell1 = ErsatzKompassInGrad / 2; |
ElectricAirPacket.VoltageCell8 = ElectricAirPacket.VoltageCell1; |
ElectricAirPacket.VoltageCell6 = GPSInfo.HomeBearing / 2; |
ElectricAirPacket.VoltageCell7 = GPSInfo.HomeDistance/20; |
ElectricAirPacket.VoltageCell13 = ElectricAirPacket.VoltageCell6; |
ElectricAirPacket.VoltageCell14 = ElectricAirPacket.VoltageCell7; |
ElectricAirPacket.m_sec = BuildHoTT_Vario(); |
ElectricAirPacket.m_3sec = 120; |
ElectricAirPacket.InputVoltage = UBat; |
ElectricAirPacket.Temperature1 = MinBlTempertaure + 20; |
ElectricAirPacket.Temperature2 = MaxBlTempertaure + 20; |
ElectricAirPacket.Capacity = Capacity.UsedCapacity/10; |
ElectricAirPacket.WarnBeep = 0;//HoTT_Waring(); |
ElectricAirPacket.Current = Capacity.ActualCurrent; |
HoTT_DataPointer = (unsigned char *) &ElectricAirPacket; |
ElectricAirPacket.FlightTimeMinutes = FlugSekunden / 60; |
ElectricAirPacket.FlightTimeSeconds = FlugSekunden % 60; |
return(sizeof(ElectricAirPacket)); |
break; |
case HOTT_GENERAL_PACKET_ID: |
GetHottestBl(); |
HoTTGeneral.Rpm = GPSInfo.HomeDistance/100; |
HoTTGeneral.VoltageCell1 = ErsatzKompassInGrad / 2; |
HoTTGeneral.VoltageCell6 = GPSInfo.HomeBearing / 2; |
if(UBat > BattLowVoltageWarning + 5) HoTTGeneral.FuelPercent = (UBat - (BattLowVoltageWarning + 6)) * 3; |
else HoTTGeneral.FuelPercent = 0; |
HoTTGeneral.FuelCapacity = HoehenWert/100; |
if(HoTTGeneral.FuelCapacity < 0) HoTTGeneral.FuelCapacity = 0; |
HoTTGeneral.Altitude = HoehenWert/100 + 500; |
HoTTGeneral.Battery1 = UBat; |
HoTTGeneral.Battery2 = UBat; |
HoTTGeneral.m_sec = BuildHoTT_Vario(); |
HoTTGeneral.m_3sec = 120; |
HoTTGeneral.InputVoltage = UBat; |
HoTTGeneral.Temperature1 = MinBlTempertaure + 20; |
HoTTGeneral.Temperature2 = MaxBlTempertaure + 20; |
HoTTGeneral.Capacity = Capacity.UsedCapacity/10; |
HoTTGeneral.WarnBeep = 0;//HoTT_Waring(); |
HoTTGeneral.Current = Capacity.ActualCurrent; |
//HoTTGeneral.ErrorNumber = HoTTErrorCode(); |
HoTT_DataPointer = (unsigned char *) &HoTTGeneral; |
return(sizeof(HoTTGeneral)); |
break; |
default: return(0); |
} |
} |
//--------------------------------------------------------------- |
void HoTT_Menu(void) |
{ |
static unsigned char line, page = 0,show_current = 0,show_mag = 0, show_poti = 0; |
unsigned char tmp; |
HoTTVarioMeter = (HoTTVarioMeter * 7 + VarioMeter) / 8; |
if(page == 0) |
switch(line++) |
{ |
case 0: |
if(FC_StatusFlags & FC_STATUS_LOWBAT) |
HoTT_printfxy_BLINK(0,0," %2i.%1iV ",UBat/10, UBat%10) |
else |
HoTT_printfxy(0,0," %2i.%1iV ",UBat/10, UBat%10) |
if(Parameter_GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
if(HoehenReglerAktiv) HoTT_printfxy_INV(10,0,"ALT:%4im %c", (int16_t)(HoehenWert/100),VarioCharacter) |
else HoTT_printfxy(10,0,"ALT:%4im ", (int16_t)(HoehenWert/100)) |
} |
else HoTT_printfxy(10,0,"ALT:---- "); |
break; |
case 1: |
if(FC_StatusFlags & FC_STATUS_LOWBAT) |
HoTT_printfxy_BLINK(0,1," %2i:%02i ",FlugSekunden/60,FlugSekunden%60) |
else HoTT_printfxy(0,1," %2i:%02i ",FlugSekunden/60,FlugSekunden%60); |
HoTT_printfxy(10,1,"DIR: %3d%c",ErsatzKompassInGrad, HoTT_GRAD); |
if(FC_StatusFlags2 & FC_STATUS2_CAREFREE) HoTT_printfxy_INV(20,1,"C") else HoTT_printfxy(20,1," "); |
break; |
case 2: |
if(FC_StatusFlags & FC_STATUS_LOWBAT) |
HoTT_printfxy_BLINK(0,2," %5i ",Capacity.UsedCapacity) |
else HoTT_printfxy(0,2," %5i ",Capacity.UsedCapacity); |
HoTT_printfxy(12,2,"I:%2i.%1iA ",Capacity.ActualCurrent/10, Capacity.ActualCurrent%10); |
break; |
case 3: |
HoTT_printfxy(9,0,":"); |
HoTT_printfxy(9,1,":"); |
HoTT_printfxy(9,2,":"); |
HoTT_printfxy(0,3,"---------+-----------"); |
// HoTT_printfxy(0,3,"---------------------"); |
HoTT_printfxy(0,6,"---------------------"); |
break; |
case 4: |
if(NaviDataOkay) |
{ |
HoTT_printfxy(9,4,":"); |
HoTT_printfxy(0,4,"SAT:%2d ",GPSInfo.NumOfSats); |
HoTT_printfxy(10,4,"DIST:%3dm",GPSInfo.HomeDistance/10); |
switch (GPSInfo.SatFix) |
{ |
case SATFIX_3D: |
if(GPSInfo.Flags & FLAG_DIFFSOLN) HoTT_printfxy(7,4,"D ") |
else HoTT_printfxy(7,4,"3D"); |
break; |
default: |
HoTT_printfxy_BLINK(7,4,"!!"); |
break; |
} |
} |
else |
{ |
Hott_ClearLine(4); |
} |
break; |
case 5: |
if(NaviDataOkay) |
{ |
if(show_mag) |
{ |
HoTT_printfxy(0,5,"MAG:%3u%% ",EarthMagneticField); |
HoTT_printfxy(12,5,"HM:%3d%c %c", GPSInfo.HomeBearing, HoTT_GRAD, NC_GPS_ModeCharacter); |
HoTT_printfxy(9,5,"incl:%2d%c(%2i)",EarthMagneticInclination, HoTT_GRAD,EarthMagneticInclinationTheoretic); |
} |
else |
{ |
HoTT_printfxy(0,5," %2um/s: HM:%3d%c %c",GPSInfo.Speed, GPSInfo.HomeBearing, HoTT_GRAD, NC_GPS_ModeCharacter); |
} |
} |
else Hott_ClearLine(5); |
break; |
case 6: |
break; |
case 7: if(NC_ErrorCode) |
{ |
if(HoTTBlink && NC_ErrorCode < MAX_ERR_NUMBER) |
{ |
Hott_ClearLine(7); |
HoTT_printfxy_INV(0,7,"ERR: %2d !",NC_ErrorCode); |
} |
else |
{ |
HoTT_printfxy(0,7,"ERR: "); _printf_P(&LIBFC_HoTT_Putchar, NC_ERROR_TEXT[NC_ErrorCode] , 0);}; |
} |
else |
if(FC_StatusFlags & FC_STATUS_LOWBAT) HoTT_printfxy(1,7,"!! LiPo voltage !!") |
else HoTT_printfxy(0,7," www.MikroKopter.de "); |
break; |
case 8: //ASCIIPacket.WarnBeep = HoTT_Waring(); |
// ASCIIPacket.WarnBeep = Parameter_UserParam1; |
case 9: |
case 10: |
case 11: |
case 12: |
case 13: |
case 14: |
case 15: |
case 16: |
if(HottKeyboard == HOTT_KEY_SET) { if(show_mag) show_mag = 0; else show_mag = 1;} |
else |
if(HottKeyboard == HOTT_KEY_LEFT) { LIBFC_HoTT_Clear(); page = 1; line = 0;}; |
HottKeyboard = 0; |
break; |
default: line = 0; |
break; |
} |
else |
if(page == 1) |
switch(line++) |
{ |
case 0: |
if(FC_StatusFlags & FC_STATUS_LOWBAT) |
HoTT_printfxy_BLINK(0,0," %2i:%02i %2i.%1iV %4imAh",FlugSekunden/60,FlugSekunden%60,UBat/10, UBat%10,Capacity.UsedCapacity) |
else HoTT_printfxy(0,0," %2i:%02i %2i.%1iV %4imAh",FlugSekunden/60,FlugSekunden%60,UBat/10, UBat%10,Capacity.UsedCapacity); |
break; |
case 1: |
HoTT_printfxy(0,1,"DIR:%3d%c",KompassValue, HoTT_GRAD); |
if(Parameter_GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
if(HoehenReglerAktiv) HoTT_printfxy_INV(10,1,"ALT:%4im", (int16_t)(HoehenWert/100)) |
else HoTT_printfxy(10,1,"ALT:%4im", (int16_t)(HoehenWert/100)) |
} |
else HoTT_printfxy(10,1,"ALT:---- "); |
HoTT_printfxy(20,1,"%c",VarioCharacter); |
break; |
case 2: |
if(NaviDataOkay) |
{ |
HoTT_printfxy(1,2,"HM:%3d%c DIST:%3dm %c", GPSInfo.HomeBearing, HoTT_GRAD, GPSInfo.HomeDistance/10, NC_GPS_ModeCharacter); |
} |
else |
{ |
Hott_ClearLine(2); |
} |
break; |
case 3: |
HoTT_printfxy(0,3,"PWR:%2i.%1iA (%iW) ",Capacity.ActualCurrent/10, Capacity.ActualCurrent%10,Capacity.ActualPower); |
if(FC_StatusFlags2 & FC_STATUS2_CAREFREE) HoTT_printfxy_INV(19,3,"CF") else HoTT_printfxy(19,3," "); |
break; |
case 4: |
if(NaviDataOkay) |
{ |
HoTT_printfxy(0,4,"GPS:%2um/s SAT:%d ",GPSInfo.Speed,GPSInfo.NumOfSats); |
switch (GPSInfo.SatFix) |
{ |
case SATFIX_3D: |
HoTT_printfxy(16,4," 3D "); |
break; |
//case SATFIX_2D: |
//case SATFIX_NONE: |
default: |
HoTT_printfxy_BLINK(16,4,"NOFIX"); |
break; |
} |
if(GPSInfo.Flags & FLAG_DIFFSOLN) |
{ |
HoTT_printfxy(16,4,"DGPS "); |
} |
} |
else |
{ //012345678901234567890 |
HoTT_printfxy(0,4," No NaviCtrl "); |
} |
break; |
case 5: |
if(show_current) |
{ |
HoTT_printfxy(0,5,"%2i.%i %2i.%i %2i.%i %2i.%iA", Motor[0].Current/10,Motor[0].Current%10,Motor[1].Current/10,Motor[1].Current%10,Motor[2].Current/10,Motor[2].Current%10,Motor[3].Current/10,Motor[3].Current%10); |
} |
else |
{ |
HoTT_printfxy(0,5,"%3i %3i %3i %3i%cC", Motor[0].Temperature, Motor[1].Temperature, Motor[2].Temperature, Motor[3].Temperature,HoTT_GRAD); |
} |
break; |
case 6: |
if(show_current) |
{ |
if(RequiredMotors == 4) Hott_ClearLine(6); |
else |
if(RequiredMotors == 6) HoTT_printfxy(0,6,"%2i.%i %2i.%iA", Motor[4].Current/10,Motor[4].Current%10,Motor[5].Current/10,Motor[5].Current%10) |
else |
if(RequiredMotors > 6) HoTT_printfxy(0,6,"%2i.%i %2i.%i %2i.%i %2i.%iA", Motor[4].Current/10,Motor[4].Current%10,Motor[5].Current/10,Motor[5].Current%10,Motor[6].Current/10,Motor[6].Current%10,Motor[7].Current/10,Motor[7].Current%10); |
} |
else |
{ |
if(RequiredMotors == 4) Hott_ClearLine(6); |
else |
if(RequiredMotors == 6) HoTT_printfxy(0,6,"%3i %3i%cC ", Motor[4].Temperature, Motor[5].Temperature,HoTT_GRAD) |
else |
if(RequiredMotors > 6) HoTT_printfxy(0,6,"%3i %3i %3i %3i%cC", Motor[4].Temperature, Motor[5].Temperature, Motor[6].Temperature, Motor[7].Temperature,HoTT_GRAD); |
} |
break; |
case 7: if(NC_ErrorCode) |
{ |
if(HoTTBlink && NC_ErrorCode < MAX_ERR_NUMBER) |
{ |
Hott_ClearLine(7); |
HoTT_printfxy_INV(0,7,"ERR: %2d !",NC_ErrorCode); |
} |
else |
{ |
HoTT_printfxy(0,7,"ERR: "); _printf_P(&LIBFC_HoTT_Putchar, NC_ERROR_TEXT[NC_ErrorCode] , 0);}; |
} |
else |
if(FC_StatusFlags & FC_STATUS_LOWBAT) HoTT_printfxy(1,7,"!! LiPo voltage !!") |
else HoTT_printfxy(0,7," www.MikroKopter.de "); |
break; |
case 8: // ASCIIPacket.WarnBeep = HoTT_Waring(); |
// ASCIIPacket.WarnBeep = Parameter_UserParam1; |
case 9: |
case 10: |
case 11: |
case 12: |
case 13: |
case 14: |
case 15: |
case 16: |
if(HottKeyboard == HOTT_KEY_SET) { if(show_current) show_current = 0; else show_current = 1; Hott_ClearLine(5); Hott_ClearLine(6);} |
else |
if(HottKeyboard == HOTT_KEY_LEFT) { LIBFC_HoTT_Clear(); page = 2; line = 0;} |
else |
if(HottKeyboard == HOTT_KEY_RIGHT) { LIBFC_HoTT_Clear(); page = 0; line = 0;} |
//if(HottKeyboard) HoTT_printfxy(15,6,"%KEY:%02x ",HottKeyboard); |
HottKeyboard = 0; |
break; |
default: line = 0; |
break; |
} |
else |
if(page == 2) |
switch(line++) |
{ |
case 0: |
HoTT_printfxy_INV(0,0,"Setting:%u %s ",GetActiveParamSet(),EE_Parameter.Name); |
break; |
case 1: HoTT_printfxy(0,1,"Min:%2i.%1iV %s ",BattLowVoltageWarning/10, BattLowVoltageWarning%10, Mixer.Name); |
break; |
case 2: HoTT_printfxy(0,2,"ALT:"); |
if(Parameter_GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
if(!(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER)) HoTT_printf("POTI:%3u ", Parameter_HoehenSchalter) |
else |
{ |
if(Parameter_HoehenSchalter > 50) HoTT_printf("(ON) ") else HoTT_printf("(OFF) "); |
if((Parameter_ExtraConfig & CFG2_HEIGHT_LIMIT)) HoTT_printf("LIMIT", Parameter_HoehenSchalter) |
else HoTT_printf("VARIO", Parameter_HoehenSchalter); |
} |
} |
else |
HoTT_printf("DISABLED"); |
break; |
case 3: HoTT_printfxy(0,3,"CF:"); |
if(!EE_Parameter.CareFreeModeControl) HoTT_printf("DISABLED") |
else |
{ |
if(CareFree) HoTT_printf(" (ON) ") else HoTT_printf(" (OFF)"); |
if(EE_Parameter.ExtraConfig & CFG_LEARNABLE_CAREFREE) HoTT_printf(" TEACH"); |
} |
break; |
case 4: HoTT_printfxy(0,4,"GPS:"); |
if(!(Parameter_GlobalConfig & CFG_GPS_AKTIV)) HoTT_printf("DISABLED") |
else |
{ |
CHK_POTI(tmp,EE_Parameter.NaviGpsModeControl); |
if(tmp < 50) HoTT_printf("(FREE)") |
else |
if(tmp >= 180) HoTT_printf("(HOME)") |
else |
if(EE_Parameter.ExtraConfig & CFG_GPS_AID) HoTT_printf("(AID) ") |
else HoTT_printf("(HOLD)") |
} |
if(EE_Parameter.FailSafeTime) HoTT_printfxy(10,4," FS:%usek ",EE_Parameter.FailSafeTime) |
break; |
case 5: HoTT_printfxy(0,5,"HOME ALT:"); |
if(EE_Parameter.ComingHomeAltitude) HoTT_printf("%um",EE_Parameter.ComingHomeAltitude) else HoTT_printf("HOLD "); |
break; |
case 6: |
if(!show_poti) |
{ |
HoTT_printfxy(0,6,"Ni:%4i Ro:%4i C:%3i",PPM_in[EE_Parameter.Kanalbelegung[K_NICK]],PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]], Parameter_ServoNickControl); |
HoTT_printfxy(0,7,"Gs:%4i Ya:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_GAS]]+127,PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]); |
} |
else |
{ |
HoTT_printfxy(0,6,"P1:%4i P2:%4i 3:%3i",Poti1,Poti2, Poti3); |
HoTT_printfxy(0,7,"P4:%4i P5:%4i 6:%3i",Poti4,Poti5, Poti6); |
} |
break; |
case 7: //HoTT_printfxy(0,6,"WARNINGS:"); |
if(HoTTBlink) |
{ |
LIBFC_HoTT_SetPos(6 * 21); |
if(!(Parameter_GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV)) HoTT_printf_BLINK("COUPLING OFF! "); |
if(EE_Parameter.BitConfig & (CFG_LOOP_LINKS | CFG_LOOP_RECHTS | CFG_LOOP_UNTEN | CFG_LOOP_OBEN)) HoTT_printf_BLINK("LOOPING! "); |
if(Parameter_GlobalConfig & CFG_HEADING_HOLD) HoTT_printf_BLINK("HH! "); |
if(!(Parameter_GlobalConfig & CFG_KOMPASS_AKTIV)) HoTT_printf_BLINK("COMPASS OFF! "); |
} |
break; |
case 8: //ASCIIPacket.WarnBeep = HoTT_Waring(); |
break; |
case 9: |
case 10: |
case 11: |
case 12: |
case 13: |
case 14: |
case 15: |
case 16: |
if(HottKeyboard == HOTT_KEY_SET) { if(show_poti) show_poti = 0; else show_poti = 1; Hott_ClearLine(6); Hott_ClearLine(7);} |
// else |
// if(HottKeyboard == HOTT_KEY_LEFT) { LIBFC_HoTT_Clear(); page = 3; line = 0;} |
else |
if(HottKeyboard == HOTT_KEY_RIGHT) { LIBFC_HoTT_Clear(); page = 1; line = 0;}; |
HottKeyboard = 0; |
break; |
default: line = 0; |
break; |
} |
/* else |
if(page == 3) |
switch(line++) |
{ |
case 0: |
HoTT_printfxy(0,2,"Speak:"); |
break; |
case 1: |
// if(GetParamByte(PID_SPEAK_HOTT_CFG) & 0x01) |
if(!(GlobalConfig3 & CFG3_SPEAK_ALL) & 0x01)) HoTT_printfxy_INV(7,2,"All Messages ") |
else HoTT_printfxy_INV(7,2,"Warnings only"); |
break; |
case 2: |
HoTT_printfxy(1,4,"Use (set) to select"); |
break; |
default: |
if(HottKeyboard == HOTT_KEY_SET) |
{ |
SetParamByte(PID_SPEAK_HOTT_CFG, GetParamByte(PID_SPEAK_HOTT_CFG) ^ 0x01); |
} |
else |
if(HottKeyboard == HOTT_KEY_RIGHT) { LIBFC_HoTT_Clear(); page = 2; line = 0;}; |
HottKeyboard = 0; |
line = 0; |
break; |
} |
*/ |
else page = 0; |
} |
#endif |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/hottmenu.h |
---|
0,0 → 1,230 |
#ifndef _HOTTMENU_H |
#define _HOTTMENU_H |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
#define SPEAK_ERR_CALIBARTION 1 |
#define SPEAK_ERR_RECEICER 2 |
#define SPEAK_ERR_DATABUS 3 |
#define SPEAK_ERR_NAVI 4 |
#define SPEAK_ERROR 5 |
#define SPEAK_ERR_COMPASS 6 |
#define SPEAK_ERR_SENSOR 7 |
#define SPEAK_ERR_GPS 8 |
#define SPEAK_ERR_MOTOR 9 |
#define SPEAK_MAX_TEMPERAT 10 |
#define SPEAK_ALTI_REACHED 11 |
#define SPEAK_WP_REACHED 12 |
#define SPEAK_NEXT_WP 13 |
#define SPEAK_LANDING 14 |
#define SPEAK_GPS_FIX 15 |
#define SPEAK_UNDERVOLTAGE 16 |
#define SPEAK_GPS_HOLD 17 |
#define SPEAK_GPS_HOME 18 |
#define SPEAK_GPS_OFF 19 |
#define SPEAK_BEEP 20 |
#define SPEAK_MIKROKOPTER 21 |
#define SPEAK_CAPACITY 22 |
#define SPEAK_CF_OFF 23 |
#define SPEAK_CALIBRATE 24 |
#define SPEAK_MAX_RANGE 25 |
#define SPEAK_MAX_ALTITUD 26 |
#define SPEAK_MK_OFF 38 |
#define SPEAK_ALTITUDE_ON 39 |
#define SPEAK_ALTITUDE_OFF 40 |
#define SPEAK_CF_ON 46 |
#define SPEAK_SINKING 47 |
#define SPEAK_RISING 48 |
#define SPEAK_HOLDING 49 |
#define SPEAK_GPS_ON 50 |
#define SPEAK_FOLLWING 51 |
#define SPEAK_STARTING 52 |
#define MAX_ERR_NUMBER (31+1) |
extern const char PROGMEM NC_ERROR_TEXT[MAX_ERR_NUMBER][17]; |
extern unsigned char NaviData_WaypointIndex, NaviData_WaypointNumber, NaviData_TargetHoldTime; |
extern unsigned int NaviData_TargetDistance; |
extern unsigned char HottKeyboard,HoTT_RequestedSensor; |
extern unsigned char HottUpdate(unsigned char key); |
extern unsigned char SpeakHoTT; |
extern unsigned char ToNC_SpeakHoTT; |
extern volatile unsigned char *HoTT_DataPointer; |
extern unsigned char MaxBlTempertaure; |
extern void CreateHoTT_Menu(void); |
extern void LIBFC_HoTT_Putchar(char); |
extern void LIBFC_HoTT_Putchar_INV(char); // print Invers |
extern void LIBFC_HoTT_Putchar_BLINK(char); |
extern void LIBFC_HoTT_SetPos(unsigned char); |
extern void LIBFC_HoTT_Clear(void); |
extern void NC_Fills_HoTT_Telemety(void); |
extern void HoTT_Menu(void); |
extern unsigned char HoTT_Telemety(unsigned char); |
extern unsigned char HoTT_Waring(void); |
extern volatile unsigned char HoTTBlink; |
extern void GetHottestBl(void); |
typedef struct |
{ |
unsigned char StartByte; // 0x7C |
unsigned char Packet_ID; // HOTT_GENERAL_PACKET_ID |
unsigned char WarnBeep; // 3 Anzahl der Töne 0..36 |
unsigned char SensorID; // 4 0xD0 |
unsigned char InverseStatus1; // 5 |
unsigned char InverseStatus2; // 6 |
unsigned char VoltageCell1; // 7 208 = 4,16V (Voltage * 50 = Wert) |
unsigned char VoltageCell2; // 8 209 = 4,18V |
unsigned char VoltageCell3; // 9 |
unsigned char VoltageCell4; // 10 |
unsigned char VoltageCell5; // 11 |
unsigned char VoltageCell6; // 12 |
unsigned int Battery1; // 13+14 51 = 5,1V |
unsigned int Battery2; // 15+16 51 = 5,1V |
unsigned char Temperature1; // 17 44 = 24°C, 0 = -20°C |
unsigned char Temperature2; // 18 44 = 24°C, 0 = -20°C |
unsigned char FuelPercent; // 19 |
signed int FuelCapacity; // 20+21 |
unsigned int Rpm; // 22+23 |
signed int Altitude; // 24+25 |
unsigned int m_sec; // 26+27 3000 = 0 |
unsigned char m_3sec; // 28 120 = 0 |
unsigned int Current; // 29+30 1 = 0.1A |
unsigned int InputVoltage; // 31+32 66 = 6,6V |
unsigned int Capacity; // 33+34 1 = 10mAh |
unsigned int Speed; // 35+36 |
unsigned char LowestCellVoltage; // 37 |
unsigned char LowestCellNumber; // 38 |
unsigned int Rpm2; // 39+40 |
unsigned char ErrorNumber; // 41 |
unsigned char Pressure; // 42 in 0,1bar 20=2,0bar |
unsigned char Version; // 43 |
unsigned char EndByte; // 0x7D |
} HoTTGeneral_t; |
typedef struct |
{ |
unsigned char StartByte; // 0x7C |
unsigned char Packet_ID; // HOTT_ELECTRIC_AIR_PACKET_ID |
unsigned char WarnBeep; // Anzahl der Töne 0..36 |
unsigned char SensorID; // 4 0xE0 |
unsigned char InverseStatus1; // 5 |
unsigned char InverseStatus2; // 6 |
unsigned char VoltageCell1; // 7 208 = 4,16V (Voltage * 50 = Wert) |
unsigned char VoltageCell2; // 209 = 4,18V |
unsigned char VoltageCell3; // |
unsigned char VoltageCell4; // |
unsigned char VoltageCell5; // |
unsigned char VoltageCell6; // |
unsigned char VoltageCell7; // |
unsigned char VoltageCell8; // |
unsigned char VoltageCell9; // |
unsigned char VoltageCell10; // |
unsigned char VoltageCell11; // |
unsigned char VoltageCell12; // |
unsigned char VoltageCell13; // |
unsigned char VoltageCell14; // 20 |
unsigned int Battery1; // 21+22 51 = 5,1V |
unsigned int Battery2; // 23+24 51 = 5,1V |
unsigned char Temperature1; // 25 44 = 24°C, 0 = -20°C |
unsigned char Temperature2; // 26 44 = 24°C, 0 = -20°C |
signed int Altitude; // 27+28 |
unsigned int Current; // 29+30 1 = 0.1A |
unsigned int InputVoltage; // 31+32 66 = 6,6V |
unsigned int Capacity; // 33+34 1 = 10mAh |
unsigned int m_sec; // 35+36 30000 = 0 |
unsigned char m_3sec; // 37 120 = 0 |
unsigned int Rpm; // 38+39 |
unsigned char FlightTimeMinutes; // 40 |
unsigned char FlightTimeSeconds; // 41 |
unsigned char Speed; // 42 1=2km |
unsigned char Version; // 43 0x00 |
unsigned char EndByte; // 0x7D |
} ElectricAirPacket_t; |
typedef struct |
{ |
unsigned char StartByte; // 0x7C |
unsigned char Packet_ID; // 0x89 - Vario ID |
unsigned char WarnBeep; //3 // Anzahl der Töne 0..36 |
unsigned char SensorID; // 0x90 |
unsigned char InverseStatus; |
signed int Altitude; //6+7 // 500 = 0m |
signed int MaxAltitude; //8+9 // 500 = 0m |
signed int MinAltitude; //10+11 // 500 = 0m |
unsigned int m_sec; //12+13 // 3000 = 0 |
unsigned int m_3sec; //14+15 |
unsigned int m_10sec; //26+17 |
char Text[21]; //18-38 |
char FreeCharacters[3]; // 39-41 |
unsigned char NullByte; // 42 0x00 |
unsigned char Version; // 43 |
unsigned char EndByte; // 0x7D |
} VarioPacket_t; |
typedef struct |
{ |
unsigned char StartByte; //0 // 0x7C |
unsigned char Packet_ID; //1 // 0x8A - GPS ID |
unsigned char WarnBeep; //2 // Anzahl der Töne 0..36 |
unsigned char SensorID; // 4 0xA0 |
unsigned char InverseStatus1; // 5 |
unsigned char InverseStatus2; // 6 |
unsigned char Heading; //7 // 1 = 2° |
unsigned int Speed; //8+9 // in km/h |
unsigned char Lat_North; //10 |
unsigned char Lat_G; //11 |
unsigned char Lat_M; //12 |
unsigned char Lat_Sek1; //13 |
unsigned char Lat_Sek2; //14 |
unsigned char Lon_East; //15 |
unsigned char Lon_G; //16 |
unsigned char Lon_M; //17 |
unsigned char Lon_Sek1; //18 |
unsigned char Lon_Sek2; //19 |
unsigned int Distance; //20+21 // 9000 = 0m |
signed int Altitude; //22+23 // 500 = 0m |
unsigned int m_sec; //24+25 // 3000 = 0 |
unsigned char m_3sec; //26 120 = 0 |
unsigned char NumOfSats; //27 |
unsigned char SatFix; //28 |
unsigned char HomeDirection; // 29 |
unsigned char AngleX; // 30 |
unsigned char AngleY; // 31 |
unsigned char AngleZ; // 32 |
signed int GyroX; //33+34 |
signed int GyroY; //35+36 |
signed int GyroZ; //37+38 |
unsigned char Vibration; // 39 |
char FreeCharacters[3]; // 40-42 |
unsigned char Version; // 43 |
unsigned char EndByte; // 0x7D |
} GPSPacket_t; |
typedef struct |
{ |
unsigned char StartByte; // 0x7B |
unsigned char Packet_ID; // |
unsigned char WarnBeep; // Anzahl der Töne 0..36 |
char Text[8*21]; |
unsigned char EndByte; // 0x7D |
} ASCIIPacket_t; |
extern GPSPacket_t GPSPacket; |
extern VarioPacket_t VarioPacket; |
extern ASCIIPacket_t ASCIIPacket; |
extern ElectricAirPacket_t ElectricAirPacket; |
extern HoTTGeneral_t HoTTGeneral; |
#define HOTT_VARIO_PACKET_ID 0x89 |
#define HOTT_GPS_PACKET_ID 0x8A |
#define HOTT_ELECTRIC_AIR_PACKET_ID 0x8E |
#define HOTT_GENERAL_PACKET_ID 0x8D |
#endif |
#endif |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/hottmenu.lst |
---|
0,0 → 1,4096 |
1 .file "hottmenu.c" |
2 .arch atmega1284p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .global HottestBl |
11 .global HottestBl |
12 .section .bss |
15 HottestBl: |
16 0000 00 .skip 1,0 |
17 .global MinBlTempertaure |
18 .global MinBlTempertaure |
21 MinBlTempertaure: |
22 0001 00 .skip 1,0 |
23 .global MaxBlTempertaure |
24 .global MaxBlTempertaure |
27 MaxBlTempertaure: |
28 0002 00 .skip 1,0 |
29 .global HOTT_ERROR |
30 .section .progmem.data,"a",@progbits |
33 HOTT_ERROR: |
34 0000 00 .byte 0 |
35 0001 00 .byte 0 |
36 0002 05 .byte 5 |
37 0003 00 .byte 0 |
38 0004 05 .byte 5 |
39 0005 00 .byte 0 |
40 0006 04 .byte 4 |
41 0007 01 .byte 1 |
42 0008 06 .byte 6 |
43 0009 01 .byte 1 |
44 000a 08 .byte 8 |
45 000b 00 .byte 0 |
46 000c 06 .byte 6 |
47 000d 01 .byte 1 |
48 000e 02 .byte 2 |
49 000f 00 .byte 0 |
50 0010 04 .byte 4 |
51 0011 00 .byte 0 |
52 0012 04 .byte 4 |
53 0013 00 .byte 0 |
54 0014 07 .byte 7 |
55 0015 00 .byte 0 |
56 0016 07 .byte 7 |
57 0017 00 .byte 0 |
58 0018 07 .byte 7 |
59 0019 00 .byte 0 |
60 001a 07 .byte 7 |
61 001b 00 .byte 0 |
62 001c 07 .byte 7 |
63 001d 00 .byte 0 |
64 001e 07 .byte 7 |
65 001f 00 .byte 0 |
66 0020 07 .byte 7 |
67 0021 00 .byte 0 |
68 0022 03 .byte 3 |
69 0023 01 .byte 1 |
70 0024 03 .byte 3 |
71 0025 01 .byte 1 |
72 0026 05 .byte 5 |
73 0027 00 .byte 0 |
74 0028 17 .byte 23 |
75 0029 01 .byte 1 |
76 002a 0F .byte 15 |
77 002b 01 .byte 1 |
78 002c 06 .byte 6 |
79 002d 00 .byte 0 |
80 002e 09 .byte 9 |
81 002f 01 .byte 1 |
82 0030 0A .byte 10 |
83 0031 01 .byte 1 |
84 0032 19 .byte 25 |
85 0033 01 .byte 1 |
86 0034 05 .byte 5 |
87 0035 01 .byte 1 |
88 0036 05 .byte 5 |
89 0037 01 .byte 1 |
90 0038 19 .byte 25 |
91 0039 01 .byte 1 |
92 003a 1A .byte 26 |
93 003b 01 .byte 1 |
94 003c 0F .byte 15 |
95 003d 01 .byte 1 |
96 003e 0000 .skip 2,0 |
97 .global NC_ERROR_TEXT |
100 NC_ERROR_TEXT: |
101 0040 4E6F 2045 .string "No Error " |
101 7272 6F72 |
101 2020 2020 |
101 2020 2020 |
101 00 |
102 0051 4E6F 7420 .string "Not compatible " |
102 636F 6D70 |
102 6174 6962 |
102 6C65 2020 |
102 00 |
103 0062 4D4B 334D .string "MK3Mag not compa" |
103 6167 206E |
103 6F74 2063 |
103 6F6D 7061 |
103 00 |
104 0073 4E6F 2046 .string "No FC communicat" |
104 4320 636F |
104 6D6D 756E |
104 6963 6174 |
104 00 |
105 0084 436F 6D70 .string "Compass communic" |
105 6173 7320 |
105 636F 6D6D |
105 756E 6963 |
105 00 |
106 0095 4750 5320 .string "GPS communicatio" |
106 636F 6D6D |
106 756E 6963 |
106 6174 696F |
106 00 |
107 00a6 636F 6D70 .string "compass value " |
107 6173 7320 |
107 7661 6C75 |
107 6520 2020 |
107 00 |
108 00b7 5243 2053 .string "RC Signal lost " |
108 6967 6E61 |
108 6C20 6C6F |
108 7374 2020 |
108 00 |
109 00c8 4643 2073 .string "FC spi rx error " |
109 7069 2072 |
109 7820 6572 |
109 726F 7220 |
109 00 |
110 00d9 4E6F 204E .string "No NC communicat" |
110 4320 636F |
110 6D6D 756E |
110 6963 6174 |
110 00 |
111 00ea 4643 204E .string "FC Nick Gyro " |
111 6963 6B20 |
111 4779 726F |
111 2020 2020 |
111 00 |
112 00fb 4643 2052 .string "FC Roll Gyro " |
112 6F6C 6C20 |
112 4779 726F |
112 2020 2020 |
112 00 |
113 010c 4643 2059 .string "FC Yaw Gyro " |
113 6177 2047 |
113 7972 6F20 |
113 2020 2020 |
113 00 |
114 011d 4643 204E .string "FC Nick ACC " |
114 6963 6B20 |
114 4143 4320 |
114 2020 2020 |
114 00 |
115 012e 4643 2052 .string "FC Roll ACC " |
115 6F6C 6C20 |
115 4143 4320 |
115 2020 2020 |
115 00 |
116 013f 4643 205A .string "FC Z-ACC " |
116 2D41 4343 |
116 2020 2020 |
116 2020 2020 |
116 00 |
117 0150 5072 6573 .string "Pressure sensor " |
117 7375 7265 |
117 2073 656E |
117 736F 7220 |
117 00 |
118 0161 4932 4320 .string "I2C FC->BL-Ctrl " |
118 4643 2D3E |
118 424C 2D43 |
118 7472 6C20 |
118 00 |
119 0172 426C 204D .string "Bl Missing " |
119 6973 7369 |
119 6E67 2020 |
119 2020 2020 |
119 00 |
120 0183 4D69 7865 .string "Mixer Error " |
120 7220 4572 |
120 726F 7220 |
120 2020 2020 |
120 00 |
121 0194 4361 7265 .string "Carefree Error " |
121 6672 6565 |
121 2045 7272 |
121 6F72 2020 |
121 00 |
122 01a5 4750 5320 .string "GPS Fix lost " |
122 4669 7820 |
122 6C6F 7374 |
122 2020 2020 |
122 00 |
123 01b6 4D61 676E .string "Magnet Error " |
123 6574 2045 |
123 7272 6F72 |
123 2020 2020 |
123 00 |
124 01c7 4D6F 746F .string "Motor restart " |
124 7220 7265 |
124 7374 6172 |
124 7420 2020 |
124 00 |
125 01d8 424C 204C .string "BL Limitation " |
125 696D 6974 |
125 6174 696F |
125 6E20 2020 |
125 00 |
126 01e9 4750 5320 .string "GPS Range " |
126 5261 6E67 |
126 6520 2020 |
126 2020 2020 |
126 00 |
127 01fa 4E6F 2053 .string "No SD-Card " |
127 442D 4361 |
127 7264 2020 |
127 2020 2020 |
127 00 |
128 020b 5344 2D4C .string "SD-Logging error" |
128 6F67 6769 |
128 6E67 2065 |
128 7272 6F72 |
128 00 |
129 021c 466C 7969 .string "Flying range! " |
129 6E67 2072 |
129 616E 6765 |
129 2120 2020 |
129 00 |
130 022d 4D61 7820 .string "Max Altitude! " |
130 416C 7469 |
130 7475 6465 |
130 2120 2020 |
130 00 |
131 023e 4E6F 2047 .string "No GPS fix " |
131 5053 2066 |
131 6978 2020 |
131 2020 2020 |
131 00 |
132 024f 636F 6D70 .string "compass not cal." |
132 6173 7320 |
132 6E6F 7420 |
132 6361 6C2E |
132 00 |
133 .global UNDERVOLTAGE |
136 UNDERVOLTAGE: |
137 0260 2021 2120 .string " !! LiPo voltage !! " |
137 4C69 506F |
137 2076 6F6C |
137 7461 6765 |
137 2021 2120 |
138 .global MIKROKOPTER |
141 MIKROKOPTER: |
142 0276 2020 2020 .string " MikroKopter " |
142 204D 696B |
142 726F 4B6F |
142 7074 6572 |
142 2020 2020 |
143 .global HoTTVarioMeter |
144 .global HoTTVarioMeter |
145 .section .bss |
148 HoTTVarioMeter: |
149 0003 0000 .skip 2,0 |
150 .global ToNC_SpeakHoTT |
151 .global ToNC_SpeakHoTT |
154 ToNC_SpeakHoTT: |
155 0005 00 .skip 1,0 |
156 .global SpeakHoTT |
157 .data |
160 SpeakHoTT: |
161 0000 15 .byte 21 |
162 .global NaviData_TargetDistance |
163 .global NaviData_TargetDistance |
164 .section .bss |
167 NaviData_TargetDistance: |
168 0006 0000 .skip 2,0 |
169 .global NaviData_TargetHoldTime |
170 .global NaviData_TargetHoldTime |
173 NaviData_TargetHoldTime: |
174 0008 00 .skip 1,0 |
175 .global NaviData_WaypointNumber |
176 .global NaviData_WaypointNumber |
179 NaviData_WaypointNumber: |
180 0009 00 .skip 1,0 |
181 .global NaviData_WaypointIndex |
182 .global NaviData_WaypointIndex |
185 NaviData_WaypointIndex: |
186 000a 00 .skip 1,0 |
187 .lcomm search.98,1 |
188 .lcomm tmp_max.99,1 |
189 .lcomm tmp_min.100,1 |
190 .lcomm who.101,1 |
191 .text |
192 .global GetHottestBl |
194 GetHottestBl: |
195 /* prologue: frame size=0 */ |
196 /* prologue end (size=0) */ |
197 0000 3091 0000 lds r19,search.98 |
198 0004 E32F mov r30,r19 |
199 0006 FF27 clr r31 |
200 0008 83E0 ldi r24,3 |
201 000a EE0F 1: lsl r30 |
202 000c FF1F rol r31 |
203 000e 8A95 dec r24 |
204 0010 01F4 brne 1b |
205 0012 E050 subi r30,lo8(-(Motor)) |
206 0014 F040 sbci r31,hi8(-(Motor)) |
207 0016 2781 ldd r18,Z+7 |
208 0018 422F mov r20,r18 |
209 001a 5527 clr r21 |
210 001c 47FD sbrc r20,7 |
211 001e 5095 com r21 |
212 0020 8091 0000 lds r24,tmp_max.99 |
213 0024 9927 clr r25 |
214 0026 8417 cp r24,r20 |
215 0028 9507 cpc r25,r21 |
216 002a 04F4 brge .L2 |
217 002c 2093 0000 sts tmp_max.99,r18 |
218 0030 3093 0000 sts who.101,r19 |
219 0034 00C0 rjmp .L3 |
220 .L2: |
221 0036 2223 tst r18 |
222 0038 01F0 breq .L3 |
223 003a 8091 0000 lds r24,tmp_min.100 |
224 003e 9927 clr r25 |
225 0040 4817 cp r20,r24 |
226 0042 5907 cpc r21,r25 |
227 0044 04F4 brge .L3 |
228 0046 2093 0000 sts tmp_min.100,r18 |
229 .L3: |
230 004a 832F mov r24,r19 |
231 004c 8F5F subi r24,lo8(-(1)) |
232 004e 8093 0000 sts search.98,r24 |
233 0052 8D30 cpi r24,lo8(13) |
234 0054 00F0 brlo .L1 |
235 0056 1092 0000 sts search.98,__zero_reg__ |
236 005a 8091 0000 lds r24,tmp_min.100 |
237 005e 8F3F cpi r24,lo8(-1) |
238 0060 01F0 breq .L7 |
239 0062 8093 0000 sts MinBlTempertaure,r24 |
240 0066 00C0 rjmp .L8 |
241 .L7: |
242 0068 1092 0000 sts MinBlTempertaure,__zero_reg__ |
243 .L8: |
244 006c 8091 0000 lds r24,tmp_max.99 |
245 0070 8093 0000 sts MaxBlTempertaure,r24 |
246 0074 8091 0000 lds r24,who.101 |
247 0078 8093 0000 sts HottestBl,r24 |
248 007c 8FEF ldi r24,lo8(-1) |
249 007e 8093 0000 sts tmp_min.100,r24 |
250 0082 1092 0000 sts tmp_max.99,__zero_reg__ |
251 0086 1092 0000 sts who.101,__zero_reg__ |
252 .L1: |
253 008a 0895 ret |
254 /* epilogue: frame size=0 */ |
255 /* epilogue: noreturn */ |
256 /* epilogue end (size=0) */ |
257 /* function GetHottestBl size 70 (70) */ |
259 .section .progmem.data |
262 __c.97: |
263 028c 2020 2020 .string " " |
263 2020 2020 |
263 2020 2020 |
263 2020 2020 |
263 2020 2020 |
264 .text |
265 .global Hott_ClearLine |
267 Hott_ClearLine: |
268 /* prologue: frame size=0 */ |
269 /* prologue end (size=0) */ |
270 008c 95E1 ldi r25,lo8(21) |
271 008e 899F mul r24,r25 |
272 0090 802D mov r24,r0 |
273 0092 1124 clr r1 |
274 0094 0E94 0000 call LIBFC_HoTT_SetPos |
275 0098 80E0 ldi r24,lo8(__c.97) |
276 009a 90E0 ldi r25,hi8(__c.97) |
277 009c 9F93 push r25 |
278 009e 8F93 push r24 |
279 00a0 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar)) |
280 00a2 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar)) |
281 00a4 9F93 push r25 |
282 00a6 8F93 push r24 |
283 00a8 E091 0000 lds r30,_printf_P |
284 00ac F091 0000 lds r31,(_printf_P)+1 |
285 00b0 0995 icall |
286 00b2 0F90 pop __tmp_reg__ |
287 00b4 0F90 pop __tmp_reg__ |
288 00b6 0F90 pop __tmp_reg__ |
289 00b8 0F90 pop __tmp_reg__ |
290 /* epilogue: frame size=0 */ |
291 00ba 0895 ret |
292 /* epilogue end (size=1) */ |
293 /* function Hott_ClearLine size 24 (23) */ |
295 .lcomm old_status.95,1 |
296 .lcomm repeat.96,2 |
297 .global HoTT_Waring |
299 HoTT_Waring: |
300 /* prologue: frame size=0 */ |
301 00bc CF93 push r28 |
302 /* prologue end (size=1) */ |
303 00be C0E0 ldi r28,lo8(0) |
304 00c0 2091 0000 lds r18,SpeakHoTT |
305 00c4 2093 0000 sts ToNC_SpeakHoTT,r18 |
306 00c8 8091 0000 lds r24,FC_StatusFlags |
307 00cc 85FF sbrs r24,5 |
308 00ce 00C0 rjmp .L11 |
309 00d0 C0E1 ldi r28,lo8(16) |
310 00d2 00C0 rjmp .L16 |
311 .L11: |
312 00d4 9091 0000 lds r25,NC_ErrorCode |
313 00d8 9923 tst r25 |
314 00da 01F0 breq .L25 |
315 00dc 8091 0000 lds r24,MotorenEin |
316 00e0 8823 tst r24 |
317 00e2 01F4 brne .L15 |
318 00e4 E92F mov r30,r25 |
319 00e6 FF27 clr r31 |
320 00e8 EE0F add r30,r30 |
321 00ea FF1F adc r31,r31 |
322 00ec E050 subi r30,lo8(-(HOTT_ERROR+1)) |
323 00ee F040 sbci r31,hi8(-(HOTT_ERROR+1)) |
324 /* #APP */ |
325 00f0 8491 lpm r24, Z |
326 |
327 /* #NOAPP */ |
328 00f2 8823 tst r24 |
329 00f4 01F4 brne .L25 |
330 .L15: |
331 00f6 E92F mov r30,r25 |
332 00f8 FF27 clr r31 |
333 00fa EE0F add r30,r30 |
334 00fc FF1F adc r31,r31 |
335 00fe E050 subi r30,lo8(-(HOTT_ERROR)) |
336 0100 F040 sbci r31,hi8(-(HOTT_ERROR)) |
337 /* #APP */ |
338 0102 C491 lpm r28, Z |
339 |
340 /* #NOAPP */ |
341 0104 CC23 tst r28 |
342 0106 01F4 brne .L16 |
343 .L25: |
344 0108 8091 0000 lds r24,EE_Parameter+111 |
345 010c 86FD sbrc r24,6 |
346 010e 00C0 rjmp .L17 |
347 0110 1092 0000 sts SpeakHoTT,__zero_reg__ |
348 0114 00C0 rjmp .L19 |
349 .L17: |
350 0116 C22F mov r28,r18 |
351 0118 00C0 rjmp .L19 |
352 .L16: |
353 011a C093 0000 sts ToNC_SpeakHoTT,r28 |
354 .L19: |
355 011e 8091 0000 lds r24,old_status.95 |
356 0122 8C17 cp r24,r28 |
357 0124 01F4 brne .L20 |
358 0126 8091 0000 lds r24,repeat.96 |
359 012a 9091 0000 lds r25,(repeat.96)+1 |
360 012e 0E94 0000 call CheckDelay |
361 0132 8823 tst r24 |
362 0134 01F4 brne .L21 |
363 0136 80E0 ldi r24,lo8(0) |
364 0138 90E0 ldi r25,hi8(0) |
365 013a 00C0 rjmp .L10 |
366 .L21: |
367 013c 88E8 ldi r24,lo8(5000) |
368 013e 93E1 ldi r25,hi8(5000) |
369 0140 00C0 rjmp .L26 |
370 .L20: |
371 0142 80ED ldi r24,lo8(2000) |
372 0144 97E0 ldi r25,hi8(2000) |
373 .L26: |
374 0146 0E94 0000 call SetDelay |
375 014a 9093 0000 sts (repeat.96)+1,r25 |
376 014e 8093 0000 sts repeat.96,r24 |
377 0152 CC23 tst r28 |
378 0154 01F0 breq .L23 |
379 0156 8091 0000 lds r24,SpeakHoTT |
380 015a C817 cp r28,r24 |
381 015c 01F4 brne .L23 |
382 015e 1092 0000 sts SpeakHoTT,__zero_reg__ |
383 .L23: |
384 0162 C093 0000 sts old_status.95,r28 |
385 0166 8C2F mov r24,r28 |
386 0168 9927 clr r25 |
387 .L10: |
388 /* epilogue: frame size=0 */ |
389 016a CF91 pop r28 |
390 016c 0895 ret |
391 /* epilogue end (size=2) */ |
392 /* function HoTT_Waring size 95 (92) */ |
394 .global NC_Fills_HoTT_Telemety |
396 NC_Fills_HoTT_Telemety: |
397 /* prologue: frame size=0 */ |
398 /* prologue end (size=0) */ |
399 016e 40E0 ldi r20,lo8(0) |
400 0170 50E0 ldi r21,hi8(0) |
401 0172 30E0 ldi r19,lo8(0) |
402 0174 8091 0000 lds r24,FromNaviCtrl+30 |
403 0178 9927 clr r25 |
404 017a 8A38 cpi r24,138 |
405 017c 9105 cpc r25,__zero_reg__ |
406 017e 01F0 breq .L30 |
407 0180 8B38 cpi r24,139 |
408 0182 9105 cpc r25,__zero_reg__ |
409 0184 04F4 brge .L33 |
410 0186 8938 cpi r24,137 |
411 0188 9105 cpc r25,__zero_reg__ |
412 018a 01F0 breq .L29 |
413 018c 00C0 rjmp .L28 |
414 .L33: |
415 018e 8D38 cpi r24,141 |
416 0190 9105 cpc r25,__zero_reg__ |
417 0192 01F0 breq .L32 |
418 0194 8E38 cpi r24,142 |
419 0196 9105 cpc r25,__zero_reg__ |
420 0198 01F0 breq .L31 |
421 019a 00C0 rjmp .L28 |
422 .L29: |
423 019c 40E0 ldi r20,lo8(VarioPacket) |
424 019e 50E0 ldi r21,hi8(VarioPacket) |
425 01a0 00C0 rjmp .L40 |
426 .L30: |
427 01a2 40E0 ldi r20,lo8(GPSPacket) |
428 01a4 50E0 ldi r21,hi8(GPSPacket) |
429 01a6 00C0 rjmp .L40 |
430 .L31: |
431 01a8 40E0 ldi r20,lo8(ElectricAirPacket) |
432 01aa 50E0 ldi r21,hi8(ElectricAirPacket) |
433 01ac 00C0 rjmp .L40 |
434 .L32: |
435 01ae 40E0 ldi r20,lo8(HoTTGeneral) |
436 01b0 50E0 ldi r21,hi8(HoTTGeneral) |
437 .L40: |
438 01b2 3CE2 ldi r19,lo8(44) |
439 .L28: |
440 01b4 9091 0000 lds r25,FromNaviCtrl+19 |
441 01b8 20E0 ldi r18,lo8(0) |
442 .L41: |
443 01ba 8091 0000 lds r24,FromNaviCtrl+20 |
444 01be 2817 cp r18,r24 |
445 01c0 00F4 brsh .L35 |
446 01c2 9317 cp r25,r19 |
447 01c4 00F4 brsh .L35 |
448 01c6 DA01 movw r26,r20 |
449 01c8 A90F add r26,r25 |
450 01ca B11D adc r27,__zero_reg__ |
451 01cc E22F mov r30,r18 |
452 01ce FF27 clr r31 |
453 01d0 E050 subi r30,lo8(-(FromNaviCtrl)) |
454 01d2 F040 sbci r31,hi8(-(FromNaviCtrl)) |
455 01d4 8589 ldd r24,Z+21 |
456 01d6 8C93 st X,r24 |
457 01d8 9F5F subi r25,lo8(-(1)) |
458 01da 2F5F subi r18,lo8(-(1)) |
459 01dc 00C0 rjmp .L41 |
460 .L35: |
461 01de 0895 ret |
462 /* epilogue: frame size=0 */ |
463 /* epilogue: noreturn */ |
464 /* epilogue end (size=0) */ |
465 /* function NC_Fills_HoTT_Telemety size 57 (57) */ |
467 .global BuildHoTT_Vario |
469 BuildHoTT_Vario: |
470 /* prologue: frame size=0 */ |
471 /* prologue end (size=0) */ |
472 01e0 20E3 ldi r18,lo8(30000) |
473 01e2 35E7 ldi r19,hi8(30000) |
474 01e4 8091 0000 lds r24,VarioCharacter |
475 01e8 8B32 cpi r24,lo8(43) |
476 01ea 01F0 breq .L44 |
477 01ec 8D32 cpi r24,lo8(45) |
478 01ee 01F4 brne .L43 |
479 .L44: |
480 01f0 8091 0000 lds r24,EE_Parameter+18 |
481 01f4 282F mov r18,r24 |
482 01f6 3327 clr r19 |
483 01f8 8091 0000 lds r24,AltitudeSetpointTrimming |
484 01fc 9091 0000 lds r25,(AltitudeSetpointTrimming)+1 |
485 0200 829F mul r24,r18 |
486 0202 A001 movw r20,r0 |
487 0204 839F mul r24,r19 |
488 0206 500D add r21,r0 |
489 0208 929F mul r25,r18 |
490 020a 500D add r21,r0 |
491 020c 1124 clr r1 |
492 020e CA01 movw r24,r20 |
493 0210 63E0 ldi r22,lo8(3) |
494 0212 70E0 ldi r23,hi8(3) |
495 0214 0E94 0000 call __divmodhi4 |
496 0218 CB01 movw r24,r22 |
497 021a 9B01 movw r18,r22 |
498 021c 205D subi r18,lo8(-(30000)) |
499 021e 3A48 sbci r19,hi8(-(30000)) |
500 0220 C196 adiw r24,49 |
501 0222 C197 sbiw r24,49 |
502 0224 00F0 brlo .+2 |
503 0226 00C0 rjmp .L46 |
504 0228 2EEF ldi r18,lo8(29950) |
505 022a 34E7 ldi r19,hi8(29950) |
506 022c 00C0 rjmp .L46 |
507 .L43: |
508 022e 8032 cpi r24,lo8(32) |
509 0230 01F4 brne .L47 |
510 0232 8091 0000 lds r24,FC_StatusFlags |
511 0236 81FF sbrs r24,1 |
512 0238 00C0 rjmp .L46 |
513 023a 2091 0000 lds r18,HoTTVarioMeter |
514 023e 3091 0000 lds r19,(HoTTVarioMeter)+1 |
515 0242 205D subi r18,lo8(-(30000)) |
516 0244 3A48 sbci r19,hi8(-(30000)) |
517 0246 55E7 ldi r21,hi8(30001) |
518 0248 2133 cpi r18,lo8(30001) |
519 024a 3507 cpc r19,r21 |
520 024c 00F0 brlo .L48 |
521 024e 85E7 ldi r24,hi8(30100) |
522 0250 2439 cpi r18,lo8(30100) |
523 0252 3807 cpc r19,r24 |
524 0254 00F4 brsh .L49 |
525 0256 20E3 ldi r18,lo8(30000) |
526 0258 35E7 ldi r19,hi8(30000) |
527 025a 00C0 rjmp .L48 |
528 .L49: |
529 025c 2456 subi r18,lo8(-(-100)) |
530 025e 3040 sbci r19,hi8(-(-100)) |
531 .L48: |
532 0260 45E7 ldi r20,hi8(30000) |
533 0262 2033 cpi r18,lo8(30000) |
534 0264 3407 cpc r19,r20 |
535 0266 00F4 brsh .L46 |
536 0268 54E7 ldi r21,hi8(29901) |
537 026a 2D3C cpi r18,lo8(29901) |
538 026c 3507 cpc r19,r21 |
539 026e 00F0 brlo .L52 |
540 0270 20E3 ldi r18,lo8(30000) |
541 0272 35E7 ldi r19,hi8(30000) |
542 0274 00C0 rjmp .L46 |
543 .L52: |
544 0276 2C59 subi r18,lo8(-(100)) |
545 0278 3F4F sbci r19,hi8(-(100)) |
546 027a 00C0 rjmp .L46 |
547 .L47: |
548 027c 8E35 cpi r24,lo8(94) |
549 027e 01F4 brne .L55 |
550 0280 9091 0000 lds r25,FromNC_AltitudeSpeed |
551 0284 8AE0 ldi r24,lo8(10) |
552 0286 989F mul r25,r24 |
553 0288 9001 movw r18,r0 |
554 028a 1124 clr r1 |
555 028c 205D subi r18,lo8(-(30000)) |
556 028e 3A48 sbci r19,hi8(-(30000)) |
557 0290 00C0 rjmp .L46 |
558 .L55: |
559 0292 8637 cpi r24,lo8(118) |
560 0294 01F4 brne .L46 |
561 0296 9091 0000 lds r25,FromNC_AltitudeSpeed |
562 029a 8AE0 ldi r24,lo8(10) |
563 029c 989F mul r25,r24 |
564 029e C001 movw r24,r0 |
565 02a0 1124 clr r1 |
566 02a2 281B sub r18,r24 |
567 02a4 390B sbc r19,r25 |
568 .L46: |
569 02a6 C901 movw r24,r18 |
570 /* epilogue: frame size=0 */ |
571 02a8 0895 ret |
572 /* epilogue end (size=1) */ |
573 /* function BuildHoTT_Vario size 101 (100) */ |
575 .global HoTT_Telemety |
577 HoTT_Telemety: |
578 /* prologue: frame size=0 */ |
579 02aa EF92 push r14 |
580 02ac FF92 push r15 |
581 02ae 0F93 push r16 |
582 02b0 1F93 push r17 |
583 /* prologue end (size=4) */ |
584 02b2 9927 clr r25 |
585 02b4 8A38 cpi r24,138 |
586 02b6 9105 cpc r25,__zero_reg__ |
587 02b8 01F4 brne .+2 |
588 02ba 00C0 rjmp .L89 |
589 02bc 8B38 cpi r24,139 |
590 02be 9105 cpc r25,__zero_reg__ |
591 02c0 04F4 brge .L105 |
592 02c2 8938 cpi r24,137 |
593 02c4 9105 cpc r25,__zero_reg__ |
594 02c6 01F0 breq .L60 |
595 02c8 00C0 rjmp .L104 |
596 .L105: |
597 02ca 8D38 cpi r24,141 |
598 02cc 9105 cpc r25,__zero_reg__ |
599 02ce 01F4 brne .+2 |
600 02d0 00C0 rjmp .L98 |
601 02d2 8E38 cpi r24,142 |
602 02d4 9105 cpc r25,__zero_reg__ |
603 02d6 01F4 brne .+2 |
604 02d8 00C0 rjmp .L95 |
605 02da 00C0 rjmp .L104 |
606 .L60: |
607 02dc 8091 0000 lds r24,HoehenWert |
608 02e0 9091 0000 lds r25,(HoehenWert)+1 |
609 02e4 A091 0000 lds r26,(HoehenWert)+2 |
610 02e8 B091 0000 lds r27,(HoehenWert)+3 |
611 02ec BC01 movw r22,r24 |
612 02ee CD01 movw r24,r26 |
613 02f0 24E6 ldi r18,lo8(100) |
614 02f2 30E0 ldi r19,hi8(100) |
615 02f4 40E0 ldi r20,hlo8(100) |
616 02f6 50E0 ldi r21,hhi8(100) |
617 02f8 0E94 0000 call __divmodsi4 |
618 02fc DA01 movw r26,r20 |
619 02fe C901 movw r24,r18 |
620 0300 8C50 subi r24,lo8(-(500)) |
621 0302 9E4F sbci r25,hi8(-(500)) |
622 0304 9093 0000 sts (VarioPacket+5)+1,r25 |
623 0308 8093 0000 sts VarioPacket+5,r24 |
624 030c 0E94 0000 call BuildHoTT_Vario |
625 0310 9093 0000 sts (VarioPacket+11)+1,r25 |
626 0314 8093 0000 sts VarioPacket+11,r24 |
627 0318 9093 0000 sts (VarioPacket+13)+1,r25 |
628 031c 8093 0000 sts VarioPacket+13,r24 |
629 0320 9093 0000 sts (VarioPacket+15)+1,r25 |
630 0324 8093 0000 sts VarioPacket+15,r24 |
631 0328 2091 0000 lds r18,VarioPacket+5 |
632 032c 3091 0000 lds r19,(VarioPacket+5)+1 |
633 0330 8091 0000 lds r24,VarioPacket+9 |
634 0334 9091 0000 lds r25,(VarioPacket+9)+1 |
635 0338 2817 cp r18,r24 |
636 033a 3907 cpc r19,r25 |
637 033c 04F4 brge .L61 |
638 033e 3093 0000 sts (VarioPacket+9)+1,r19 |
639 0342 2093 0000 sts VarioPacket+9,r18 |
640 .L61: |
641 0346 8091 0000 lds r24,VarioPacket+7 |
642 034a 9091 0000 lds r25,(VarioPacket+7)+1 |
643 034e 8217 cp r24,r18 |
644 0350 9307 cpc r25,r19 |
645 0352 04F4 brge .L62 |
646 0354 3093 0000 sts (VarioPacket+7)+1,r19 |
647 0358 2093 0000 sts VarioPacket+7,r18 |
648 .L62: |
649 035c 1092 0000 sts VarioPacket+2,__zero_reg__ |
650 0360 80E0 ldi r24,lo8(VarioPacket) |
651 0362 90E0 ldi r25,hi8(VarioPacket) |
652 0364 9093 0000 sts (HoTT_DataPointer)+1,r25 |
653 0368 8093 0000 sts HoTT_DataPointer,r24 |
654 036c 8091 0000 lds r24,VarioCharacter |
655 0370 8093 0000 sts VarioPacket+38,r24 |
656 0374 8091 0000 lds r24,FC_StatusFlags2 |
657 0378 80FF sbrs r24,0 |
658 037a 00C0 rjmp .L63 |
659 037c 83E4 ldi r24,lo8(67) |
660 037e 00C0 rjmp .L111 |
661 .L63: |
662 0380 80E2 ldi r24,lo8(32) |
663 .L111: |
664 0382 8093 0000 sts VarioPacket+39,r24 |
665 0386 2091 0000 lds r18,NC_ErrorCode |
666 038a 2223 tst r18 |
667 038c 01F0 breq .L65 |
668 038e 822F mov r24,r18 |
669 0390 6AE0 ldi r22,lo8(10) |
670 0392 0E94 0000 call __udivmodqi4 |
671 0396 805D subi r24,lo8(-(48)) |
672 0398 8093 0000 sts VarioPacket+17,r24 |
673 039c 822F mov r24,r18 |
674 039e 0E94 0000 call __udivmodqi4 |
675 03a2 892F mov r24,r25 |
676 03a4 805D subi r24,lo8(-(48)) |
677 03a6 8093 0000 sts VarioPacket+18,r24 |
678 03aa 8AE3 ldi r24,lo8(58) |
679 03ac 8093 0000 sts VarioPacket+19,r24 |
680 03b0 81E1 ldi r24,lo8(17) |
681 03b2 289F mul r18,r24 |
682 03b4 F001 movw r30,r0 |
683 03b6 1124 clr r1 |
684 03b8 A0E0 ldi r26,lo8(VarioPacket+20) |
685 03ba B0E0 ldi r27,hi8(VarioPacket+20) |
686 03bc E050 subi r30,lo8(-(NC_ERROR_TEXT)) |
687 03be F040 sbci r31,hi8(-(NC_ERROR_TEXT)) |
688 03c0 9FE0 ldi r25,lo8(15) |
689 .L69: |
690 /* #APP */ |
691 03c2 8491 lpm r24, Z |
692 |
693 /* #NOAPP */ |
694 03c4 8D93 st X+,r24 |
695 03c6 9150 subi r25,lo8(-(-1)) |
696 03c8 3196 adiw r30,1 |
697 03ca 97FF sbrs r25,7 |
698 03cc 00C0 rjmp .L69 |
699 03ce 00C0 rjmp .L113 |
700 .L65: |
701 03d0 8091 0000 lds r24,FC_StatusFlags |
702 03d4 85FF sbrs r24,5 |
703 03d6 00C0 rjmp .L71 |
704 03d8 A0E0 ldi r26,lo8(VarioPacket+17) |
705 03da B0E0 ldi r27,hi8(VarioPacket+17) |
706 03dc E0E0 ldi r30,lo8(UNDERVOLTAGE) |
707 03de F0E0 ldi r31,hi8(UNDERVOLTAGE) |
708 03e0 94E1 ldi r25,lo8(20) |
709 .L75: |
710 /* #APP */ |
711 03e2 8491 lpm r24, Z |
712 |
713 /* #NOAPP */ |
714 03e4 8D93 st X+,r24 |
715 03e6 9150 subi r25,lo8(-(-1)) |
716 03e8 3196 adiw r30,1 |
717 03ea 97FF sbrs r25,7 |
718 03ec 00C0 rjmp .L75 |
719 03ee 00C0 rjmp .L113 |
720 .L71: |
721 03f0 3091 0000 lds r19,NaviData_WaypointNumber |
722 03f4 3323 tst r19 |
723 03f6 01F4 brne .+2 |
724 03f8 00C0 rjmp .L77 |
725 03fa 87E5 ldi r24,lo8(87) |
726 03fc 8093 0000 sts VarioPacket+17,r24 |
727 0400 80E5 ldi r24,lo8(80) |
728 0402 8093 0000 sts VarioPacket+18,r24 |
729 0406 40E2 ldi r20,lo8(32) |
730 0408 4093 0000 sts VarioPacket+19,r20 |
731 040c 2091 0000 lds r18,NaviData_WaypointIndex |
732 0410 822F mov r24,r18 |
733 0412 6AE0 ldi r22,lo8(10) |
734 0414 0E94 0000 call __udivmodqi4 |
735 0418 805D subi r24,lo8(-(48)) |
736 041a 8093 0000 sts VarioPacket+20,r24 |
737 041e 822F mov r24,r18 |
738 0420 0E94 0000 call __udivmodqi4 |
739 0424 892F mov r24,r25 |
740 0426 805D subi r24,lo8(-(48)) |
741 0428 8093 0000 sts VarioPacket+21,r24 |
742 042c 8FE2 ldi r24,lo8(47) |
743 042e 8093 0000 sts VarioPacket+22,r24 |
744 0432 832F mov r24,r19 |
745 0434 0E94 0000 call __udivmodqi4 |
746 0438 805D subi r24,lo8(-(48)) |
747 043a 8093 0000 sts VarioPacket+23,r24 |
748 043e 832F mov r24,r19 |
749 0440 0E94 0000 call __udivmodqi4 |
750 0444 892F mov r24,r25 |
751 0446 805D subi r24,lo8(-(48)) |
752 0448 8093 0000 sts VarioPacket+24,r24 |
753 044c 4093 0000 sts VarioPacket+25,r20 |
754 0450 2091 0000 lds r18,NaviData_TargetDistance |
755 0454 3091 0000 lds r19,(NaviData_TargetDistance)+1 |
756 0458 83E0 ldi r24,hi8(1001) |
757 045a 293E cpi r18,lo8(1001) |
758 045c 3807 cpc r19,r24 |
759 045e 00F0 brlo .L78 |
760 0460 C901 movw r24,r18 |
761 0462 68EE ldi r22,lo8(1000) |
762 0464 73E0 ldi r23,hi8(1000) |
763 0466 0E94 0000 call __udivmodhi4 |
764 046a CB01 movw r24,r22 |
765 046c 805D subi r24,lo8(-(48)) |
766 046e 8093 0000 sts VarioPacket+26,r24 |
767 0472 C901 movw r24,r18 |
768 0474 68EE ldi r22,lo8(1000) |
769 0476 73E0 ldi r23,hi8(1000) |
770 0478 0E94 0000 call __udivmodhi4 |
771 047c 9C01 movw r18,r24 |
772 047e 00C0 rjmp .L79 |
773 .L78: |
774 0480 4093 0000 sts VarioPacket+26,r20 |
775 .L79: |
776 0484 2536 cpi r18,101 |
777 0486 3105 cpc r19,__zero_reg__ |
778 0488 00F0 brlo .L80 |
779 048a C901 movw r24,r18 |
780 048c 64E6 ldi r22,lo8(100) |
781 048e 70E0 ldi r23,hi8(100) |
782 0490 0E94 0000 call __udivmodhi4 |
783 0494 CB01 movw r24,r22 |
784 0496 805D subi r24,lo8(-(48)) |
785 0498 8093 0000 sts VarioPacket+27,r24 |
786 049c C901 movw r24,r18 |
787 049e 64E6 ldi r22,lo8(100) |
788 04a0 70E0 ldi r23,hi8(100) |
789 04a2 0E94 0000 call __udivmodhi4 |
790 04a6 9C01 movw r18,r24 |
791 04a8 00C0 rjmp .L81 |
792 .L80: |
793 04aa 80E2 ldi r24,lo8(32) |
794 04ac 8093 0000 sts VarioPacket+27,r24 |
795 .L81: |
796 04b0 C901 movw r24,r18 |
797 04b2 6AE0 ldi r22,lo8(10) |
798 04b4 70E0 ldi r23,hi8(10) |
799 04b6 0E94 0000 call __udivmodhi4 |
800 04ba CB01 movw r24,r22 |
801 04bc 805D subi r24,lo8(-(48)) |
802 04be 8093 0000 sts VarioPacket+28,r24 |
803 04c2 C901 movw r24,r18 |
804 04c4 6AE0 ldi r22,lo8(10) |
805 04c6 70E0 ldi r23,hi8(10) |
806 04c8 0E94 0000 call __udivmodhi4 |
807 04cc 805D subi r24,lo8(-(48)) |
808 04ce 8093 0000 sts VarioPacket+29,r24 |
809 04d2 8DE6 ldi r24,lo8(109) |
810 04d4 8093 0000 sts VarioPacket+30,r24 |
811 04d8 80E2 ldi r24,lo8(32) |
812 04da 8093 0000 sts VarioPacket+31,r24 |
813 04de 2091 0000 lds r18,NaviData_TargetHoldTime |
814 04e2 2536 cpi r18,lo8(101) |
815 04e4 00F0 brlo .L82 |
816 04e6 822F mov r24,r18 |
817 04e8 64E6 ldi r22,lo8(100) |
818 04ea 0E94 0000 call __udivmodqi4 |
819 04ee 805D subi r24,lo8(-(48)) |
820 04f0 8093 0000 sts VarioPacket+32,r24 |
821 04f4 822F mov r24,r18 |
822 04f6 0E94 0000 call __udivmodqi4 |
823 04fa 292F mov r18,r25 |
824 04fc 00C0 rjmp .L83 |
825 .L82: |
826 04fe 8093 0000 sts VarioPacket+32,r24 |
827 .L83: |
828 0502 822F mov r24,r18 |
829 0504 6AE0 ldi r22,lo8(10) |
830 0506 0E94 0000 call __udivmodqi4 |
831 050a 805D subi r24,lo8(-(48)) |
832 050c 8093 0000 sts VarioPacket+33,r24 |
833 0510 822F mov r24,r18 |
834 0512 0E94 0000 call __udivmodqi4 |
835 0516 892F mov r24,r25 |
836 0518 805D subi r24,lo8(-(48)) |
837 051a 8093 0000 sts VarioPacket+34,r24 |
838 051e 83E7 ldi r24,lo8(115) |
839 0520 8093 0000 sts VarioPacket+35,r24 |
840 0524 80E2 ldi r24,lo8(32) |
841 0526 8093 0000 sts VarioPacket+36,r24 |
842 052a 00C0 rjmp .L113 |
843 .L77: |
844 052c A0E0 ldi r26,lo8(VarioPacket+17) |
845 052e B0E0 ldi r27,hi8(VarioPacket+17) |
846 0530 E0E0 ldi r30,lo8(MIKROKOPTER) |
847 0532 F0E0 ldi r31,hi8(MIKROKOPTER) |
848 0534 94E1 ldi r25,lo8(20) |
849 .L88: |
850 /* #APP */ |
851 0536 8491 lpm r24, Z |
852 |
853 /* #NOAPP */ |
854 0538 8D93 st X+,r24 |
855 053a 9150 subi r25,lo8(-(-1)) |
856 053c 3196 adiw r30,1 |
857 053e 97FF sbrs r25,7 |
858 0540 00C0 rjmp .L88 |
859 0542 00C0 rjmp .L113 |
860 .L89: |
861 0544 8091 0000 lds r24,HoehenWert |
862 0548 9091 0000 lds r25,(HoehenWert)+1 |
863 054c A091 0000 lds r26,(HoehenWert)+2 |
864 0550 B091 0000 lds r27,(HoehenWert)+3 |
865 0554 BC01 movw r22,r24 |
866 0556 CD01 movw r24,r26 |
867 0558 24E6 ldi r18,lo8(100) |
868 055a 30E0 ldi r19,hi8(100) |
869 055c 40E0 ldi r20,hlo8(100) |
870 055e 50E0 ldi r21,hhi8(100) |
871 0560 0E94 0000 call __divmodsi4 |
872 0564 DA01 movw r26,r20 |
873 0566 C901 movw r24,r18 |
874 0568 8C50 subi r24,lo8(-(500)) |
875 056a 9E4F sbci r25,hi8(-(500)) |
876 056c 9093 0000 sts (GPSPacket+21)+1,r25 |
877 0570 8093 0000 sts GPSPacket+21,r24 |
878 0574 0E94 0000 call BuildHoTT_Vario |
879 0578 9093 0000 sts (GPSPacket+23)+1,r25 |
880 057c 8093 0000 sts GPSPacket+23,r24 |
881 0580 88E7 ldi r24,lo8(120) |
882 0582 8093 0000 sts GPSPacket+25,r24 |
883 0586 8091 0000 lds r24,GPSInfo+1 |
884 058a 8093 0000 sts GPSPacket+26,r24 |
885 058e 0E94 0000 call HoTT_Waring |
886 0592 8093 0000 sts GPSPacket+2,r24 |
887 0596 8091 0000 lds r24,GPSInfo |
888 059a 81FF sbrs r24,1 |
889 059c 00C0 rjmp .L90 |
890 059e 84E4 ldi r24,lo8(68) |
891 05a0 00C0 rjmp .L112 |
892 .L90: |
893 05a2 8091 0000 lds r24,GPSInfo+2 |
894 05a6 8330 cpi r24,lo8(3) |
895 05a8 01F4 brne .L92 |
896 05aa 80E2 ldi r24,lo8(32) |
897 05ac 00C0 rjmp .L112 |
898 .L92: |
899 05ae 81E2 ldi r24,lo8(33) |
900 .L112: |
901 05b0 8093 0000 sts GPSPacket+27,r24 |
902 05b4 80E0 ldi r24,lo8(GPSPacket) |
903 05b6 90E0 ldi r25,hi8(GPSPacket) |
904 05b8 9093 0000 sts (HoTT_DataPointer)+1,r25 |
905 05bc 8093 0000 sts HoTT_DataPointer,r24 |
906 05c0 8091 0000 lds r24,NC_GPS_ModeCharacter |
907 05c4 8093 0000 sts GPSPacket+39,r24 |
908 05c8 8091 0000 lds r24,GPSPacket+27 |
909 05cc 8093 0000 sts GPSPacket+41,r24 |
910 05d0 8091 0000 lds r24,GPSInfo+6 |
911 05d4 9091 0000 lds r25,(GPSInfo+6)+1 |
912 05d8 97FD sbrc r25,7 |
913 05da 0196 adiw r24,1 |
914 .L94: |
915 05dc 9595 asr r25 |
916 05de 8795 ror r24 |
917 05e0 8093 0000 sts GPSPacket+28,r24 |
918 05e4 00C0 rjmp .L113 |
919 .L95: |
920 05e6 0E94 0000 call GetHottestBl |
921 05ea 8091 0000 lds r24,HoehenWert |
922 05ee 9091 0000 lds r25,(HoehenWert)+1 |
923 05f2 A091 0000 lds r26,(HoehenWert)+2 |
924 05f6 B091 0000 lds r27,(HoehenWert)+3 |
925 05fa BC01 movw r22,r24 |
926 05fc CD01 movw r24,r26 |
927 05fe 24E6 ldi r18,lo8(100) |
928 0600 30E0 ldi r19,hi8(100) |
929 0602 40E0 ldi r20,hlo8(100) |
930 0604 50E0 ldi r21,hhi8(100) |
931 0606 0E94 0000 call __divmodsi4 |
932 060a DA01 movw r26,r20 |
933 060c C901 movw r24,r18 |
934 060e 8C50 subi r24,lo8(-(500)) |
935 0610 9E4F sbci r25,hi8(-(500)) |
936 0612 9093 0000 sts (ElectricAirPacket+26)+1,r25 |
937 0616 8093 0000 sts ElectricAirPacket+26,r24 |
938 061a 8091 0000 lds r24,UBat |
939 061e 9091 0000 lds r25,(UBat)+1 |
940 0622 9093 0000 sts (ElectricAirPacket+20)+1,r25 |
941 0626 8093 0000 sts ElectricAirPacket+20,r24 |
942 062a 8091 0000 lds r24,UBat |
943 062e 9091 0000 lds r25,(UBat)+1 |
944 0632 9093 0000 sts (ElectricAirPacket+22)+1,r25 |
945 0636 8093 0000 sts ElectricAirPacket+22,r24 |
946 063a 8091 0000 lds r24,ErsatzKompassInGrad |
947 063e 9091 0000 lds r25,(ErsatzKompassInGrad)+1 |
948 0642 97FD sbrc r25,7 |
949 0644 0196 adiw r24,1 |
950 .L96: |
951 0646 9595 asr r25 |
952 0648 8795 ror r24 |
953 064a 8093 0000 sts ElectricAirPacket+6,r24 |
954 064e 8093 0000 sts ElectricAirPacket+13,r24 |
955 0652 2091 0000 lds r18,GPSInfo+6 |
956 0656 3091 0000 lds r19,(GPSInfo+6)+1 |
957 065a 37FF sbrs r19,7 |
958 065c 00C0 rjmp .L97 |
959 065e 2F5F subi r18,lo8(-(1)) |
960 0660 3F4F sbci r19,hi8(-(1)) |
961 .L97: |
962 0662 3595 asr r19 |
963 0664 2795 ror r18 |
964 0666 2093 0000 sts ElectricAirPacket+11,r18 |
965 066a 8091 0000 lds r24,GPSInfo+4 |
966 066e 9091 0000 lds r25,(GPSInfo+4)+1 |
967 0672 64E1 ldi r22,lo8(20) |
968 0674 70E0 ldi r23,hi8(20) |
969 0676 0E94 0000 call __udivmodhi4 |
970 067a 6093 0000 sts ElectricAirPacket+12,r22 |
971 067e 2093 0000 sts ElectricAirPacket+18,r18 |
972 0682 6093 0000 sts ElectricAirPacket+19,r22 |
973 0686 0E94 0000 call BuildHoTT_Vario |
974 068a 9093 0000 sts (ElectricAirPacket+34)+1,r25 |
975 068e 8093 0000 sts ElectricAirPacket+34,r24 |
976 0692 88E7 ldi r24,lo8(120) |
977 0694 8093 0000 sts ElectricAirPacket+36,r24 |
978 0698 8091 0000 lds r24,UBat |
979 069c 9091 0000 lds r25,(UBat)+1 |
980 06a0 9093 0000 sts (ElectricAirPacket+30)+1,r25 |
981 06a4 8093 0000 sts ElectricAirPacket+30,r24 |
982 06a8 8091 0000 lds r24,MinBlTempertaure |
983 06ac 8C5E subi r24,lo8(-(20)) |
984 06ae 8093 0000 sts ElectricAirPacket+24,r24 |
985 06b2 8091 0000 lds r24,MaxBlTempertaure |
986 06b6 8C5E subi r24,lo8(-(20)) |
987 06b8 8093 0000 sts ElectricAirPacket+25,r24 |
988 06bc 8091 0000 lds r24,Capacity+4 |
989 06c0 9091 0000 lds r25,(Capacity+4)+1 |
990 06c4 6AE0 ldi r22,lo8(10) |
991 06c6 70E0 ldi r23,hi8(10) |
992 06c8 0E94 0000 call __udivmodhi4 |
993 06cc 7093 0000 sts (ElectricAirPacket+32)+1,r23 |
994 06d0 6093 0000 sts ElectricAirPacket+32,r22 |
995 06d4 1092 0000 sts ElectricAirPacket+2,__zero_reg__ |
996 06d8 8091 0000 lds r24,Capacity |
997 06dc 9091 0000 lds r25,(Capacity)+1 |
998 06e0 9093 0000 sts (ElectricAirPacket+28)+1,r25 |
999 06e4 8093 0000 sts ElectricAirPacket+28,r24 |
1000 06e8 80E0 ldi r24,lo8(ElectricAirPacket) |
1001 06ea 90E0 ldi r25,hi8(ElectricAirPacket) |
1002 06ec 9093 0000 sts (HoTT_DataPointer)+1,r25 |
1003 06f0 8093 0000 sts HoTT_DataPointer,r24 |
1004 06f4 2091 0000 lds r18,FlugSekunden |
1005 06f8 3091 0000 lds r19,(FlugSekunden)+1 |
1006 06fc C901 movw r24,r18 |
1007 06fe 6CE3 ldi r22,lo8(60) |
1008 0700 70E0 ldi r23,hi8(60) |
1009 0702 0E94 0000 call __udivmodhi4 |
1010 0706 6093 0000 sts ElectricAirPacket+39,r22 |
1011 070a C901 movw r24,r18 |
1012 070c 6CE3 ldi r22,lo8(60) |
1013 070e 70E0 ldi r23,hi8(60) |
1014 0710 0E94 0000 call __udivmodhi4 |
1015 0714 8093 0000 sts ElectricAirPacket+40,r24 |
1016 0718 00C0 rjmp .L113 |
1017 .L98: |
1018 071a 0E94 0000 call GetHottestBl |
1019 071e 8091 0000 lds r24,GPSInfo+4 |
1020 0722 9091 0000 lds r25,(GPSInfo+4)+1 |
1021 0726 64E6 ldi r22,lo8(100) |
1022 0728 70E0 ldi r23,hi8(100) |
1023 072a 0E94 0000 call __udivmodhi4 |
1024 072e 7093 0000 sts (HoTTGeneral+21)+1,r23 |
1025 0732 6093 0000 sts HoTTGeneral+21,r22 |
1026 0736 8091 0000 lds r24,ErsatzKompassInGrad |
1027 073a 9091 0000 lds r25,(ErsatzKompassInGrad)+1 |
1028 073e 97FD sbrc r25,7 |
1029 0740 0196 adiw r24,1 |
1030 .L99: |
1031 0742 9595 asr r25 |
1032 0744 8795 ror r24 |
1033 0746 8093 0000 sts HoTTGeneral+6,r24 |
1034 074a 8091 0000 lds r24,GPSInfo+6 |
1035 074e 9091 0000 lds r25,(GPSInfo+6)+1 |
1036 0752 97FD sbrc r25,7 |
1037 0754 0196 adiw r24,1 |
1038 .L100: |
1039 0756 9595 asr r25 |
1040 0758 8795 ror r24 |
1041 075a 8093 0000 sts HoTTGeneral+11,r24 |
1042 075e 8091 0000 lds r24,BattLowVoltageWarning |
1043 0762 482F mov r20,r24 |
1044 0764 5527 clr r21 |
1045 0766 9A01 movw r18,r20 |
1046 0768 2B5F subi r18,lo8(-(5)) |
1047 076a 3F4F sbci r19,hi8(-(5)) |
1048 076c 8091 0000 lds r24,UBat |
1049 0770 9091 0000 lds r25,(UBat)+1 |
1050 0774 2817 cp r18,r24 |
1051 0776 3907 cpc r19,r25 |
1052 0778 04F4 brge .L101 |
1053 077a 8091 0000 lds r24,UBat |
1054 077e 9091 0000 lds r25,(UBat)+1 |
1055 0782 841B sub r24,r20 |
1056 0784 950B sbc r25,r21 |
1057 0786 9C01 movw r18,r24 |
1058 0788 220F lsl r18 |
1059 078a 331F rol r19 |
1060 078c 280F add r18,r24 |
1061 078e 391F adc r19,r25 |
1062 0790 822F mov r24,r18 |
1063 0792 8251 subi r24,lo8(-(-18)) |
1064 0794 8093 0000 sts HoTTGeneral+18,r24 |
1065 0798 00C0 rjmp .L102 |
1066 .L101: |
1067 079a 1092 0000 sts HoTTGeneral+18,__zero_reg__ |
1068 .L102: |
1069 079e E090 0000 lds r14,HoehenWert |
1070 07a2 F090 0000 lds r15,(HoehenWert)+1 |
1071 07a6 0091 0000 lds r16,(HoehenWert)+2 |
1072 07aa 1091 0000 lds r17,(HoehenWert)+3 |
1073 07ae C801 movw r24,r16 |
1074 07b0 B701 movw r22,r14 |
1075 07b2 24E6 ldi r18,lo8(100) |
1076 07b4 30E0 ldi r19,hi8(100) |
1077 07b6 40E0 ldi r20,hlo8(100) |
1078 07b8 50E0 ldi r21,hhi8(100) |
1079 07ba 0E94 0000 call __divmodsi4 |
1080 07be 3093 0000 sts (HoTTGeneral+19)+1,r19 |
1081 07c2 2093 0000 sts HoTTGeneral+19,r18 |
1082 07c6 37FF sbrs r19,7 |
1083 07c8 00C0 rjmp .L103 |
1084 07ca 1092 0000 sts (HoTTGeneral+19)+1,__zero_reg__ |
1085 07ce 1092 0000 sts HoTTGeneral+19,__zero_reg__ |
1086 .L103: |
1087 07d2 C801 movw r24,r16 |
1088 07d4 B701 movw r22,r14 |
1089 07d6 24E6 ldi r18,lo8(100) |
1090 07d8 30E0 ldi r19,hi8(100) |
1091 07da 40E0 ldi r20,hlo8(100) |
1092 07dc 50E0 ldi r21,hhi8(100) |
1093 07de 0E94 0000 call __divmodsi4 |
1094 07e2 DA01 movw r26,r20 |
1095 07e4 C901 movw r24,r18 |
1096 07e6 8C50 subi r24,lo8(-(500)) |
1097 07e8 9E4F sbci r25,hi8(-(500)) |
1098 07ea 9093 0000 sts (HoTTGeneral+23)+1,r25 |
1099 07ee 8093 0000 sts HoTTGeneral+23,r24 |
1100 07f2 8091 0000 lds r24,UBat |
1101 07f6 9091 0000 lds r25,(UBat)+1 |
1102 07fa 9093 0000 sts (HoTTGeneral+12)+1,r25 |
1103 07fe 8093 0000 sts HoTTGeneral+12,r24 |
1104 0802 8091 0000 lds r24,UBat |
1105 0806 9091 0000 lds r25,(UBat)+1 |
1106 080a 9093 0000 sts (HoTTGeneral+14)+1,r25 |
1107 080e 8093 0000 sts HoTTGeneral+14,r24 |
1108 0812 0E94 0000 call BuildHoTT_Vario |
1109 0816 9093 0000 sts (HoTTGeneral+25)+1,r25 |
1110 081a 8093 0000 sts HoTTGeneral+25,r24 |
1111 081e 88E7 ldi r24,lo8(120) |
1112 0820 8093 0000 sts HoTTGeneral+27,r24 |
1113 0824 8091 0000 lds r24,UBat |
1114 0828 9091 0000 lds r25,(UBat)+1 |
1115 082c 9093 0000 sts (HoTTGeneral+30)+1,r25 |
1116 0830 8093 0000 sts HoTTGeneral+30,r24 |
1117 0834 8091 0000 lds r24,MinBlTempertaure |
1118 0838 8C5E subi r24,lo8(-(20)) |
1119 083a 8093 0000 sts HoTTGeneral+16,r24 |
1120 083e 8091 0000 lds r24,MaxBlTempertaure |
1121 0842 8C5E subi r24,lo8(-(20)) |
1122 0844 8093 0000 sts HoTTGeneral+17,r24 |
1123 0848 8091 0000 lds r24,Capacity+4 |
1124 084c 9091 0000 lds r25,(Capacity+4)+1 |
1125 0850 6AE0 ldi r22,lo8(10) |
1126 0852 70E0 ldi r23,hi8(10) |
1127 0854 0E94 0000 call __udivmodhi4 |
1128 0858 7093 0000 sts (HoTTGeneral+32)+1,r23 |
1129 085c 6093 0000 sts HoTTGeneral+32,r22 |
1130 0860 1092 0000 sts HoTTGeneral+2,__zero_reg__ |
1131 0864 8091 0000 lds r24,Capacity |
1132 0868 9091 0000 lds r25,(Capacity)+1 |
1133 086c 9093 0000 sts (HoTTGeneral+28)+1,r25 |
1134 0870 8093 0000 sts HoTTGeneral+28,r24 |
1135 0874 80E0 ldi r24,lo8(HoTTGeneral) |
1136 0876 90E0 ldi r25,hi8(HoTTGeneral) |
1137 0878 9093 0000 sts (HoTT_DataPointer)+1,r25 |
1138 087c 8093 0000 sts HoTT_DataPointer,r24 |
1139 .L113: |
1140 0880 2CE2 ldi r18,lo8(44) |
1141 0882 30E0 ldi r19,hi8(44) |
1142 0884 00C0 rjmp .L58 |
1143 .L104: |
1144 0886 20E0 ldi r18,lo8(0) |
1145 0888 30E0 ldi r19,hi8(0) |
1146 .L58: |
1147 088a C901 movw r24,r18 |
1148 /* epilogue: frame size=0 */ |
1149 088c 1F91 pop r17 |
1150 088e 0F91 pop r16 |
1151 0890 FF90 pop r15 |
1152 0892 EF90 pop r14 |
1153 0894 0895 ret |
1154 /* epilogue end (size=5) */ |
1155 /* function HoTT_Telemety size 771 (762) */ |
1157 .lcomm line.0,1 |
1158 .lcomm page.1,1 |
1159 .lcomm show_current.2,1 |
1160 .lcomm show_mag.3,1 |
1161 .lcomm show_poti.4,1 |
1162 .section .progmem.data |
1165 __c.5: |
1166 02a2 2020 2532 .string " %2i.%1iV " |
1166 692E 2531 |
1166 6956 2020 |
1166 00 |
1169 __c.6: |
1170 02af 2020 2532 .string " %2i.%1iV " |
1170 692E 2531 |
1170 6956 2020 |
1170 00 |
1173 __c.7: |
1174 02bc 414C 543A .string "ALT:%4im %c" |
1174 2534 696D |
1174 2025 6300 |
1177 __c.8: |
1178 02c8 414C 543A .string "ALT:%4im " |
1178 2534 696D |
1178 2020 00 |
1181 __c.9: |
1182 02d3 414C 543A .string "ALT:---- " |
1182 2D2D 2D2D |
1182 2000 |
1185 __c.10: |
1186 02dd 2020 2532 .string " %2i:%02i " |
1186 693A 2530 |
1186 3269 2020 |
1186 00 |
1189 __c.11: |
1190 02ea 2020 2532 .string " %2i:%02i " |
1190 693A 2530 |
1190 3269 2020 |
1190 00 |
1193 __c.12: |
1194 02f7 4449 523A .string "DIR: %3d%c" |
1194 2025 3364 |
1194 2563 00 |
1197 __c.13: |
1198 0302 4300 .string "C" |
1201 __c.14: |
1202 0304 2000 .string " " |
1205 __c.15: |
1206 0306 2020 2535 .string " %5i " |
1206 6920 2000 |
1209 __c.16: |
1210 030e 2020 2535 .string " %5i " |
1210 6920 2000 |
1213 __c.17: |
1214 0316 493A 2532 .string "I:%2i.%1iA " |
1214 692E 2531 |
1214 6941 2000 |
1217 __c.18: |
1218 0322 3A00 .string ":" |
1221 __c.19: |
1222 0324 3A00 .string ":" |
1225 __c.20: |
1226 0326 3A00 .string ":" |
1229 __c.21: |
1230 0328 2D2D 2D2D .string "---------+-----------" |
1230 2D2D 2D2D |
1230 2D2B 2D2D |
1230 2D2D 2D2D |
1230 2D2D 2D2D |
1233 __c.22: |
1234 033e 2D2D 2D2D .string "---------------------" |
1234 2D2D 2D2D |
1234 2D2D 2D2D |
1234 2D2D 2D2D |
1234 2D2D 2D2D |
1237 __c.23: |
1238 0354 3A00 .string ":" |
1241 __c.24: |
1242 0356 5341 543A .string "SAT:%2d " |
1242 2532 6420 |
1242 00 |
1245 __c.25: |
1246 035f 4449 5354 .string "DIST:%3dm" |
1246 3A25 3364 |
1246 6D00 |
1249 __c.26: |
1250 0369 4420 00 .string "D " |
1253 __c.27: |
1254 036c 3344 00 .string "3D" |
1257 __c.28: |
1258 036f 2121 00 .string "!!" |
1261 __c.29: |
1262 0372 4D41 473A .string "MAG:%3u%% " |
1262 2533 7525 |
1262 2520 00 |
1265 __c.30: |
1266 037d 484D 3A25 .string "HM:%3d%c %c" |
1266 3364 2563 |
1266 2025 6300 |
1269 __c.31: |
1270 0389 696E 636C .string "incl:%2d%c(%2i)" |
1270 3A25 3264 |
1270 2563 2825 |
1270 3269 2900 |
1273 __c.32: |
1274 0399 2020 2020 .string " %2um/s: HM:%3d%c %c" |
1274 2532 756D |
1274 2F73 3A20 |
1274 2048 4D3A |
1274 2533 6425 |
1277 __c.33: |
1278 03b2 4552 523A .string "ERR: %2d !" |
1278 2025 3264 |
1278 2021 00 |
1281 __c.34: |
1282 03bd 4552 523A .string "ERR: " |
1282 2000 |
1285 __c.35: |
1286 03c3 2121 204C .string "!! LiPo voltage !!" |
1286 6950 6F20 |
1286 766F 6C74 |
1286 6167 6520 |
1286 2121 00 |
1289 __c.36: |
1290 03d6 2077 7777 .string " www.MikroKopter.de " |
1290 2E4D 696B |
1290 726F 4B6F |
1290 7074 6572 |
1290 2E64 6520 |
1293 __c.37: |
1294 03ec 2025 3269 .string " %2i:%02i %2i.%1iV %4imAh" |
1294 3A25 3032 |
1294 6920 2025 |
1294 3269 2E25 |
1294 3169 5620 |
1297 __c.38: |
1298 0407 2025 3269 .string " %2i:%02i %2i.%1iV %4imAh" |
1298 3A25 3032 |
1298 6920 2025 |
1298 3269 2E25 |
1298 3169 5620 |
1301 __c.39: |
1302 0422 4449 523A .string "DIR:%3d%c" |
1302 2533 6425 |
1302 6300 |
1305 __c.40: |
1306 042c 414C 543A .string "ALT:%4im" |
1306 2534 696D |
1306 00 |
1309 __c.41: |
1310 0435 414C 543A .string "ALT:%4im" |
1310 2534 696D |
1310 00 |
1313 __c.42: |
1314 043e 414C 543A .string "ALT:---- " |
1314 2D2D 2D2D |
1314 2000 |
1317 __c.43: |
1318 0448 2563 00 .string "%c" |
1321 __c.44: |
1322 044b 484D 3A25 .string "HM:%3d%c DIST:%3dm %c" |
1322 3364 2563 |
1322 2020 4449 |
1322 5354 3A25 |
1322 3364 6D20 |
1325 __c.45: |
1326 0462 5057 523A .string "PWR:%2i.%1iA (%iW) " |
1326 2532 692E |
1326 2531 6941 |
1326 2028 2569 |
1326 5729 2000 |
1329 __c.46: |
1330 0476 4346 00 .string "CF" |
1333 __c.47: |
1334 0479 2020 00 .string " " |
1337 __c.48: |
1338 047c 4750 533A .string "GPS:%2um/s SAT:%d " |
1338 2532 756D |
1338 2F73 2053 |
1338 4154 3A25 |
1338 6420 00 |
1341 __c.49: |
1342 048f 2020 3344 .string " 3D " |
1342 2000 |
1345 __c.50: |
1346 0495 4E4F 4649 .string "NOFIX" |
1346 5800 |
1349 __c.51: |
1350 049b 4447 5053 .string "DGPS " |
1350 2000 |
1353 __c.52: |
1354 04a1 2020 204E .string " No NaviCtrl " |
1354 6F20 4E61 |
1354 7669 4374 |
1354 726C 2020 |
1354 2020 2020 |
1357 __c.53: |
1358 04b7 2532 692E .string "%2i.%i %2i.%i %2i.%i %2i.%iA" |
1358 2569 2025 |
1358 3269 2E25 |
1358 6920 2532 |
1358 692E 2569 |
1361 __c.54: |
1362 04d4 2533 6920 .string "%3i %3i %3i %3i%cC" |
1362 2533 6920 |
1362 2533 6920 |
1362 2533 6925 |
1362 6343 00 |
1365 __c.55: |
1366 04e7 2532 692E .string "%2i.%i %2i.%iA" |
1366 2569 2025 |
1366 3269 2E25 |
1366 6941 00 |
1369 __c.56: |
1370 04f6 2532 692E .string "%2i.%i %2i.%i %2i.%i %2i.%iA" |
1370 2569 2025 |
1370 3269 2E25 |
1370 6920 2532 |
1370 692E 2569 |
1373 __c.57: |
1374 0513 2533 6920 .string "%3i %3i%cC " |
1374 2533 6925 |
1374 6343 2020 |
1374 2020 2020 |
1374 2020 00 |
1377 __c.58: |
1378 0526 2533 6920 .string "%3i %3i %3i %3i%cC" |
1378 2533 6920 |
1378 2533 6920 |
1378 2533 6925 |
1378 6343 00 |
1381 __c.59: |
1382 0539 4552 523A .string "ERR: %2d !" |
1382 2025 3264 |
1382 2021 00 |
1385 __c.60: |
1386 0544 4552 523A .string "ERR: " |
1386 2000 |
1389 __c.61: |
1390 054a 2121 204C .string "!! LiPo voltage !!" |
1390 6950 6F20 |
1390 766F 6C74 |
1390 6167 6520 |
1390 2121 00 |
1393 __c.62: |
1394 055d 2077 7777 .string " www.MikroKopter.de " |
1394 2E4D 696B |
1394 726F 4B6F |
1394 7074 6572 |
1394 2E64 6520 |
1397 __c.63: |
1398 0573 5365 7474 .string "Setting:%u %s " |
1398 696E 673A |
1398 2575 2025 |
1398 7320 00 |
1401 __c.64: |
1402 0582 4D69 6E3A .string "Min:%2i.%1iV %s " |
1402 2532 692E |
1402 2531 6956 |
1402 2025 7320 |
1402 00 |
1405 __c.65: |
1406 0593 414C 543A .string "ALT:" |
1406 00 |
1409 __c.66: |
1410 0598 504F 5449 .string "POTI:%3u " |
1410 3A25 3375 |
1410 2000 |
1413 __c.67: |
1414 05a2 284F 4E29 .string "(ON) " |
1414 2020 00 |
1417 __c.68: |
1418 05a9 284F 4646 .string "(OFF) " |
1418 2920 00 |
1421 __c.69: |
1422 05b0 4C49 4D49 .string "LIMIT" |
1422 5400 |
1425 __c.70: |
1426 05b6 5641 5249 .string "VARIO" |
1426 4F00 |
1429 __c.71: |
1430 05bc 4449 5341 .string "DISABLED" |
1430 424C 4544 |
1430 00 |
1433 __c.72: |
1434 05c5 4346 3A00 .string "CF:" |
1437 __c.73: |
1438 05c9 4449 5341 .string "DISABLED" |
1438 424C 4544 |
1438 00 |
1441 __c.74: |
1442 05d2 2028 4F4E .string " (ON) " |
1442 2920 00 |
1445 __c.75: |
1446 05d9 2028 4F46 .string " (OFF)" |
1446 4629 00 |
1449 __c.76: |
1450 05e0 2054 4541 .string " TEACH" |
1450 4348 00 |
1453 __c.77: |
1454 05e7 4750 533A .string "GPS:" |
1454 00 |
1457 __c.78: |
1458 05ec 4449 5341 .string "DISABLED" |
1458 424C 4544 |
1458 00 |
1461 __c.79: |
1462 05f5 2846 5245 .string "(FREE)" |
1462 4529 00 |
1465 __c.80: |
1466 05fc 2848 4F4D .string "(HOME)" |
1466 4529 00 |
1469 __c.81: |
1470 0603 2841 4944 .string "(AID) " |
1470 2920 00 |
1473 __c.82: |
1474 060a 2848 4F4C .string "(HOLD)" |
1474 4429 00 |
1477 __c.83: |
1478 0611 2046 533A .string " FS:%usek " |
1478 2575 7365 |
1478 6B20 00 |
1481 __c.84: |
1482 061c 484F 4D45 .string "HOME ALT:" |
1482 2041 4C54 |
1482 3A00 |
1485 __c.85: |
1486 0626 2575 6D00 .string "%um" |
1489 __c.86: |
1490 062a 484F 4C44 .string "HOLD " |
1490 2000 |
1493 __c.87: |
1494 0630 4E69 3A25 .string "Ni:%4i Ro:%4i C:%3i" |
1494 3469 2052 |
1494 6F3A 2534 |
1494 6920 433A |
1494 2533 6900 |
1497 __c.88: |
1498 0644 4773 3A25 .string "Gs:%4i Ya:%4i " |
1498 3469 2059 |
1498 613A 2534 |
1498 6920 00 |
1501 __c.89: |
1502 0653 5031 3A25 .string "P1:%4i P2:%4i 3:%3i" |
1502 3469 2050 |
1502 323A 2534 |
1502 6920 333A |
1502 2533 6900 |
1505 __c.90: |
1506 0667 5034 3A25 .string "P4:%4i P5:%4i 6:%3i" |
1506 3469 2050 |
1506 353A 2534 |
1506 6920 363A |
1506 2533 6900 |
1509 __c.91: |
1510 067b 434F 5550 .string "COUPLING OFF! " |
1510 4C49 4E47 |
1510 204F 4646 |
1510 2120 00 |
1513 __c.92: |
1514 068a 4C4F 4F50 .string "LOOPING! " |
1514 494E 4721 |
1514 2000 |
1517 __c.93: |
1518 0694 4848 2120 .string "HH! " |
1518 00 |
1521 __c.94: |
1522 0699 434F 4D50 .string "COMPASS OFF! " |
1522 4153 5320 |
1522 4F46 4621 |
1522 2000 |
1523 .text |
1524 .global HoTT_Menu |
1526 HoTT_Menu: |
1527 /* prologue: frame size=0 */ |
1528 0896 EF92 push r14 |
1529 0898 FF92 push r15 |
1530 089a 0F93 push r16 |
1531 089c 1F93 push r17 |
1532 089e CF93 push r28 |
1533 08a0 DF93 push r29 |
1534 /* prologue end (size=6) */ |
1535 08a2 8091 0000 lds r24,HoTTVarioMeter |
1536 08a6 9091 0000 lds r25,(HoTTVarioMeter)+1 |
1537 08aa 9C01 movw r18,r24 |
1538 08ac 53E0 ldi r21,3 |
1539 08ae 220F 1: lsl r18 |
1540 08b0 331F rol r19 |
1541 08b2 5A95 dec r21 |
1542 08b4 01F4 brne 1b |
1543 08b6 281B sub r18,r24 |
1544 08b8 390B sbc r19,r25 |
1545 08ba 8091 0000 lds r24,VarioMeter |
1546 08be 9091 0000 lds r25,(VarioMeter)+1 |
1547 08c2 280F add r18,r24 |
1548 08c4 391F adc r19,r25 |
1549 08c6 37FF sbrs r19,7 |
1550 08c8 00C0 rjmp .L115 |
1551 08ca 295F subi r18,lo8(-(7)) |
1552 08cc 3F4F sbci r19,hi8(-(7)) |
1553 .L115: |
1554 08ce 43E0 ldi r20,3 |
1555 08d0 3595 1: asr r19 |
1556 08d2 2795 ror r18 |
1557 08d4 4A95 dec r20 |
1558 08d6 01F4 brne 1b |
1559 08d8 3093 0000 sts (HoTTVarioMeter)+1,r19 |
1560 08dc 2093 0000 sts HoTTVarioMeter,r18 |
1561 08e0 9091 0000 lds r25,page.1 |
1562 08e4 9923 tst r25 |
1563 08e6 01F0 breq .+2 |
1564 08e8 00C0 rjmp .L116 |
1565 08ea 8091 0000 lds r24,line.0 |
1566 08ee 282F mov r18,r24 |
1567 08f0 3327 clr r19 |
1568 08f2 4427 clr r20 |
1569 08f4 5527 clr r21 |
1570 08f6 8F5F subi r24,lo8(-(1)) |
1571 08f8 8093 0000 sts line.0,r24 |
1572 08fc F901 movw r30,r18 |
1573 08fe 2131 cpi r18,17 |
1574 0900 3105 cpc r19,__zero_reg__ |
1575 0902 00F0 brlo .+2 |
1576 0904 00C0 rjmp .L169 |
1577 0906 E050 subi r30,lo8(-(pm(.L170))) |
1578 0908 F040 sbci r31,hi8(-(pm(.L170))) |
1579 090a 0C94 0000 jmp __tablejump2__ |
1580 .data |
1581 .section .progmem.gcc_sw_table, "a", @progbits |
1582 .p2align 1 |
1583 .L170: |
1584 0000 0000 .word pm(.L118) |
1585 0002 0000 .word pm(.L125) |
1586 0004 0000 .word pm(.L130) |
1587 0006 0000 .word pm(.L133) |
1588 0008 0000 .word pm(.L134) |
1589 000a 0000 .word pm(.L142) |
1590 000c 0000 .word pm(.L114) |
1591 000e 0000 .word pm(.L148) |
1592 0010 0000 .word pm(.L163) |
1593 0012 0000 .word pm(.L163) |
1594 0014 0000 .word pm(.L163) |
1595 0016 0000 .word pm(.L163) |
1596 0018 0000 .word pm(.L163) |
1597 001a 0000 .word pm(.L163) |
1598 001c 0000 .word pm(.L163) |
1599 001e 0000 .word pm(.L163) |
1600 0020 0000 .word pm(.L163) |
1601 .text |
1602 .L118: |
1603 090e 8091 0000 lds r24,FC_StatusFlags |
1604 0912 85FF sbrs r24,5 |
1605 0914 00C0 rjmp .L119 |
1606 0916 80E0 ldi r24,lo8(0) |
1607 0918 0E94 0000 call LIBFC_HoTT_SetPos |
1608 091c 8091 0000 lds r24,UBat |
1609 0920 9091 0000 lds r25,(UBat)+1 |
1610 0924 6AE0 ldi r22,lo8(10) |
1611 0926 70E0 ldi r23,hi8(10) |
1612 0928 0E94 0000 call __divmodhi4 |
1613 092c 9F93 push r25 |
1614 092e 8F93 push r24 |
1615 0930 8091 0000 lds r24,UBat |
1616 0934 9091 0000 lds r25,(UBat)+1 |
1617 0938 6AE0 ldi r22,lo8(10) |
1618 093a 70E0 ldi r23,hi8(10) |
1619 093c 0E94 0000 call __divmodhi4 |
1620 0940 7F93 push r23 |
1621 0942 6F93 push r22 |
1622 0944 80E0 ldi r24,lo8(__c.5) |
1623 0946 90E0 ldi r25,hi8(__c.5) |
1624 0948 9F93 push r25 |
1625 094a 8F93 push r24 |
1626 094c 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar_BLINK)) |
1627 094e 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar_BLINK)) |
1628 0950 9F93 push r25 |
1629 0952 8F93 push r24 |
1630 0954 E091 0000 lds r30,_printf_P |
1631 0958 F091 0000 lds r31,(_printf_P)+1 |
1632 095c 0995 icall |
1633 095e 2DB7 in r18,__SP_L__ |
1634 0960 3EB7 in r19,__SP_H__ |
1635 0962 285F subi r18,lo8(-(8)) |
1636 0964 3F4F sbci r19,hi8(-(8)) |
1637 0966 2DBF out __SP_L__,r18 |
1638 0968 00C0 rjmp .L120 |
1639 .L119: |
1640 096a 80E0 ldi r24,lo8(0) |
1641 096c 0E94 0000 call LIBFC_HoTT_SetPos |
1642 0970 8091 0000 lds r24,UBat |
1643 0974 9091 0000 lds r25,(UBat)+1 |
1644 0978 6AE0 ldi r22,lo8(10) |
1645 097a 70E0 ldi r23,hi8(10) |
1646 097c 0E94 0000 call __divmodhi4 |
1647 0980 9F93 push r25 |
1648 0982 8F93 push r24 |
1649 0984 8091 0000 lds r24,UBat |
1650 0988 9091 0000 lds r25,(UBat)+1 |
1651 098c 6AE0 ldi r22,lo8(10) |
1652 098e 70E0 ldi r23,hi8(10) |
1653 0990 0E94 0000 call __divmodhi4 |
1654 0994 7F93 push r23 |
1655 0996 6F93 push r22 |
1656 0998 80E0 ldi r24,lo8(__c.6) |
1657 099a 90E0 ldi r25,hi8(__c.6) |
1658 099c 9F93 push r25 |
1659 099e 8F93 push r24 |
1660 09a0 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar)) |
1661 09a2 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar)) |
1662 09a4 9F93 push r25 |
1663 09a6 8F93 push r24 |
1664 09a8 E091 0000 lds r30,_printf_P |
1665 09ac F091 0000 lds r31,(_printf_P)+1 |
1666 09b0 0995 icall |
1667 09b2 8DB7 in r24,__SP_L__ |
1668 09b4 9EB7 in r25,__SP_H__ |
1669 09b6 0896 adiw r24,8 |
1670 09b8 8DBF out __SP_L__,r24 |
1671 .L120: |
1672 09ba 8091 0000 lds r24,Parameter_GlobalConfig |
1673 09be 80FF sbrs r24,0 |
1674 09c0 00C0 rjmp .L121 |
1675 09c2 8091 0000 lds r24,HoehenReglerAktiv |
1676 09c6 8823 tst r24 |
1677 09c8 01F0 breq .L122 |
1678 09ca 8AE0 ldi r24,lo8(10) |
1679 09cc 0E94 0000 call LIBFC_HoTT_SetPos |
1680 09d0 8091 0000 lds r24,VarioCharacter |
1681 09d4 9927 clr r25 |
1682 09d6 9F93 push r25 |
1683 09d8 8F93 push r24 |
1684 09da 8091 0000 lds r24,HoehenWert |
1685 09de 9091 0000 lds r25,(HoehenWert)+1 |
1686 09e2 A091 0000 lds r26,(HoehenWert)+2 |
1687 09e6 B091 0000 lds r27,(HoehenWert)+3 |
1688 09ea BC01 movw r22,r24 |
1689 09ec CD01 movw r24,r26 |
1690 09ee 24E6 ldi r18,lo8(100) |
1691 09f0 30E0 ldi r19,hi8(100) |
1692 09f2 40E0 ldi r20,hlo8(100) |
1693 09f4 50E0 ldi r21,hhi8(100) |
1694 09f6 0E94 0000 call __divmodsi4 |
1695 09fa 3F93 push r19 |
1696 09fc 2F93 push r18 |
1697 09fe 80E0 ldi r24,lo8(__c.7) |
1698 0a00 90E0 ldi r25,hi8(__c.7) |
1699 0a02 00C0 rjmp .L313 |
1700 .L122: |
1701 0a04 8AE0 ldi r24,lo8(10) |
1702 0a06 0E94 0000 call LIBFC_HoTT_SetPos |
1703 0a0a 8091 0000 lds r24,HoehenWert |
1704 0a0e 9091 0000 lds r25,(HoehenWert)+1 |
1705 0a12 A091 0000 lds r26,(HoehenWert)+2 |
1706 0a16 B091 0000 lds r27,(HoehenWert)+3 |
1707 0a1a BC01 movw r22,r24 |
1708 0a1c CD01 movw r24,r26 |
1709 0a1e 24E6 ldi r18,lo8(100) |
1710 0a20 30E0 ldi r19,hi8(100) |
1711 0a22 40E0 ldi r20,hlo8(100) |
1712 0a24 50E0 ldi r21,hhi8(100) |
1713 0a26 0E94 0000 call __divmodsi4 |
1714 0a2a 3F93 push r19 |
1715 0a2c 2F93 push r18 |
1716 0a2e 80E0 ldi r24,lo8(__c.8) |
1717 0a30 90E0 ldi r25,hi8(__c.8) |
1718 0a32 00C0 rjmp .L331 |
1719 .L121: |
1720 0a34 8AE0 ldi r24,lo8(10) |
1721 0a36 0E94 0000 call LIBFC_HoTT_SetPos |
1722 0a3a 80E0 ldi r24,lo8(__c.9) |
1723 0a3c 90E0 ldi r25,hi8(__c.9) |
1724 0a3e 9F93 push r25 |
1725 0a40 8F93 push r24 |
1726 0a42 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar)) |
1727 0a44 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar)) |
1728 0a46 0C94 0000 jmp .L321 |
1729 .L125: |
1730 0a4a 8091 0000 lds r24,FC_StatusFlags |
1731 0a4e 85FF sbrs r24,5 |
1732 0a50 00C0 rjmp .L126 |
1733 0a52 85E1 ldi r24,lo8(21) |
1734 0a54 0E94 0000 call LIBFC_HoTT_SetPos |
1735 0a58 8091 0000 lds r24,FlugSekunden |
1736 0a5c 9091 0000 lds r25,(FlugSekunden)+1 |
1737 0a60 6CE3 ldi r22,lo8(60) |
1738 0a62 70E0 ldi r23,hi8(60) |
1739 0a64 0E94 0000 call __udivmodhi4 |
1740 0a68 9F93 push r25 |
1741 0a6a 8F93 push r24 |
1742 0a6c 8091 0000 lds r24,FlugSekunden |
1743 0a70 9091 0000 lds r25,(FlugSekunden)+1 |
1744 0a74 6CE3 ldi r22,lo8(60) |
1745 0a76 70E0 ldi r23,hi8(60) |
1746 0a78 0E94 0000 call __udivmodhi4 |
1747 0a7c 7F93 push r23 |
1748 0a7e 6F93 push r22 |
1749 0a80 80E0 ldi r24,lo8(__c.10) |
1750 0a82 90E0 ldi r25,hi8(__c.10) |
1751 0a84 9F93 push r25 |
1752 0a86 8F93 push r24 |
1753 0a88 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar_BLINK)) |
1754 0a8a 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar_BLINK)) |
1755 0a8c 9F93 push r25 |
1756 0a8e 8F93 push r24 |
1757 0a90 E091 0000 lds r30,_printf_P |
1758 0a94 F091 0000 lds r31,(_printf_P)+1 |
1759 0a98 0995 icall |
1760 0a9a 2DB7 in r18,__SP_L__ |
1761 0a9c 3EB7 in r19,__SP_H__ |
1762 0a9e 285F subi r18,lo8(-(8)) |
1763 0aa0 3F4F sbci r19,hi8(-(8)) |
1764 0aa2 2DBF out __SP_L__,r18 |
1765 0aa4 00C0 rjmp .L127 |
1766 .L126: |
1767 0aa6 85E1 ldi r24,lo8(21) |
1768 0aa8 0E94 0000 call LIBFC_HoTT_SetPos |
1769 0aac 8091 0000 lds r24,FlugSekunden |
1770 0ab0 9091 0000 lds r25,(FlugSekunden)+1 |
1771 0ab4 6CE3 ldi r22,lo8(60) |
1772 0ab6 70E0 ldi r23,hi8(60) |
1773 0ab8 0E94 0000 call __udivmodhi4 |
1774 0abc 9F93 push r25 |
1775 0abe 8F93 push r24 |
1776 0ac0 8091 0000 lds r24,FlugSekunden |
1777 0ac4 9091 0000 lds r25,(FlugSekunden)+1 |
1778 0ac8 6CE3 ldi r22,lo8(60) |
1779 0aca 70E0 ldi r23,hi8(60) |
1780 0acc 0E94 0000 call __udivmodhi4 |
1781 0ad0 7F93 push r23 |
1782 0ad2 6F93 push r22 |
1783 0ad4 80E0 ldi r24,lo8(__c.11) |
1784 0ad6 90E0 ldi r25,hi8(__c.11) |
1785 0ad8 9F93 push r25 |
1786 0ada 8F93 push r24 |
1787 0adc 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar)) |
1788 0ade 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar)) |
1789 0ae0 9F93 push r25 |
1790 0ae2 8F93 push r24 |
1791 0ae4 E091 0000 lds r30,_printf_P |
1792 0ae8 F091 0000 lds r31,(_printf_P)+1 |
1793 0aec 0995 icall |
1794 0aee 8DB7 in r24,__SP_L__ |
1795 0af0 9EB7 in r25,__SP_H__ |
1796 0af2 0896 adiw r24,8 |
1797 0af4 8DBF out __SP_L__,r24 |
1798 .L127: |
1799 0af6 8FE1 ldi r24,lo8(31) |
1800 0af8 0E94 0000 call LIBFC_HoTT_SetPos |
1801 0afc 80E6 ldi r24,lo8(96) |
1802 0afe 90E0 ldi r25,hi8(96) |
1803 0b00 9F93 push r25 |
1804 0b02 8F93 push r24 |
1805 0b04 8091 0000 lds r24,ErsatzKompassInGrad |
1806 0b08 9091 0000 lds r25,(ErsatzKompassInGrad)+1 |
1807 0b0c 9F93 push r25 |
1808 0b0e 8F93 push r24 |
1809 0b10 80E0 ldi r24,lo8(__c.12) |
1810 0b12 90E0 ldi r25,hi8(__c.12) |
1811 0b14 9F93 push r25 |
1812 0b16 8F93 push r24 |
1813 0b18 C0E0 ldi r28,lo8(pm(LIBFC_HoTT_Putchar)) |
1814 0b1a D0E0 ldi r29,hi8(pm(LIBFC_HoTT_Putchar)) |
1815 0b1c DF93 push r29 |
1816 0b1e CF93 push r28 |
1817 0b20 E091 0000 lds r30,_printf_P |
1818 0b24 F091 0000 lds r31,(_printf_P)+1 |
1819 0b28 0995 icall |
1820 0b2a 8091 0000 lds r24,FC_StatusFlags2 |
1821 0b2e 2DB7 in r18,__SP_L__ |
1822 0b30 3EB7 in r19,__SP_H__ |
1823 0b32 285F subi r18,lo8(-(8)) |
1824 0b34 3F4F sbci r19,hi8(-(8)) |
1825 0b36 2DBF out __SP_L__,r18 |
1826 0b38 80FF sbrs r24,0 |
1827 0b3a 00C0 rjmp .L128 |
1828 0b3c 89E2 ldi r24,lo8(41) |
1829 0b3e 0E94 0000 call LIBFC_HoTT_SetPos |
1830 0b42 80E0 ldi r24,lo8(__c.13) |
1831 0b44 90E0 ldi r25,hi8(__c.13) |
1832 0b46 00C0 rjmp .L333 |
1833 .L128: |
1834 0b48 89E2 ldi r24,lo8(41) |
1835 0b4a 0E94 0000 call LIBFC_HoTT_SetPos |
1836 0b4e 80E0 ldi r24,lo8(__c.14) |
1837 0b50 90E0 ldi r25,hi8(__c.14) |
1838 0b52 00C0 rjmp .L328 |
1839 .L130: |
1840 0b54 8091 0000 lds r24,FC_StatusFlags |
1841 0b58 85FF sbrs r24,5 |
1842 0b5a 00C0 rjmp .L131 |
1843 0b5c 8AE2 ldi r24,lo8(42) |
1844 0b5e 0E94 0000 call LIBFC_HoTT_SetPos |
1845 0b62 8091 0000 lds r24,Capacity+4 |
1846 0b66 9091 0000 lds r25,(Capacity+4)+1 |
1847 0b6a 9F93 push r25 |
1848 0b6c 8F93 push r24 |
1849 0b6e 80E0 ldi r24,lo8(__c.15) |
1850 0b70 90E0 ldi r25,hi8(__c.15) |
1851 0b72 9F93 push r25 |
1852 0b74 8F93 push r24 |
1853 0b76 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar_BLINK)) |
1854 0b78 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar_BLINK)) |
1855 0b7a 9F93 push r25 |
1856 0b7c 8F93 push r24 |
1857 0b7e E091 0000 lds r30,_printf_P |
1858 0b82 F091 0000 lds r31,(_printf_P)+1 |
1859 0b86 0995 icall |
1860 0b88 8DB7 in r24,__SP_L__ |
1861 0b8a 9EB7 in r25,__SP_H__ |
1862 0b8c 0696 adiw r24,6 |
1863 0b8e 8DBF out __SP_L__,r24 |
1864 0b90 00C0 rjmp .L132 |
1865 .L131: |
1866 0b92 8AE2 ldi r24,lo8(42) |
1867 0b94 0E94 0000 call LIBFC_HoTT_SetPos |
1868 0b98 8091 0000 lds r24,Capacity+4 |
1869 0b9c 9091 0000 lds r25,(Capacity+4)+1 |
1870 0ba0 9F93 push r25 |
1871 0ba2 8F93 push r24 |
1872 0ba4 80E0 ldi r24,lo8(__c.16) |
1873 0ba6 90E0 ldi r25,hi8(__c.16) |
1874 0ba8 9F93 push r25 |
1875 0baa 8F93 push r24 |
1876 0bac 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar)) |
1877 0bae 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar)) |
1878 0bb0 9F93 push r25 |
1879 0bb2 8F93 push r24 |
1880 0bb4 E091 0000 lds r30,_printf_P |
1881 0bb8 F091 0000 lds r31,(_printf_P)+1 |
1882 0bbc 0995 icall |
1883 0bbe 2DB7 in r18,__SP_L__ |
1884 0bc0 3EB7 in r19,__SP_H__ |
1885 0bc2 2A5F subi r18,lo8(-(6)) |
1886 0bc4 3F4F sbci r19,hi8(-(6)) |
1887 0bc6 2DBF out __SP_L__,r18 |
1888 .L132: |
1889 0bc8 86E3 ldi r24,lo8(54) |
1890 0bca 0E94 0000 call LIBFC_HoTT_SetPos |
1891 0bce 8091 0000 lds r24,Capacity |
1892 0bd2 9091 0000 lds r25,(Capacity)+1 |
1893 0bd6 6AE0 ldi r22,lo8(10) |
1894 0bd8 70E0 ldi r23,hi8(10) |
1895 0bda 0E94 0000 call __udivmodhi4 |
1896 0bde 9F93 push r25 |
1897 0be0 8F93 push r24 |
1898 0be2 8091 0000 lds r24,Capacity |
1899 0be6 9091 0000 lds r25,(Capacity)+1 |
1900 0bea 6AE0 ldi r22,lo8(10) |
1901 0bec 70E0 ldi r23,hi8(10) |
1902 0bee 0E94 0000 call __udivmodhi4 |
1903 0bf2 7F93 push r23 |
1904 0bf4 6F93 push r22 |
1905 0bf6 80E0 ldi r24,lo8(__c.17) |
1906 0bf8 90E0 ldi r25,hi8(__c.17) |
1907 0bfa 9F93 push r25 |
1908 0bfc 8F93 push r24 |
1909 0bfe 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar)) |
1910 0c00 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar)) |
1911 0c02 9F93 push r25 |
1912 0c04 8F93 push r24 |
1913 0c06 E091 0000 lds r30,_printf_P |
1914 0c0a F091 0000 lds r31,(_printf_P)+1 |
1915 0c0e 0995 icall |
1916 0c10 8DB7 in r24,__SP_L__ |
1917 0c12 9EB7 in r25,__SP_H__ |
1918 0c14 0896 adiw r24,8 |
1919 0c16 00C0 rjmp .L306 |
1920 .L133: |
1921 0c18 89E0 ldi r24,lo8(9) |
1922 0c1a 0E94 0000 call LIBFC_HoTT_SetPos |
1923 0c1e 80E0 ldi r24,lo8(__c.18) |
1924 0c20 90E0 ldi r25,hi8(__c.18) |
1925 0c22 9F93 push r25 |
1926 0c24 8F93 push r24 |
1927 0c26 00E0 ldi r16,lo8(pm(LIBFC_HoTT_Putchar)) |
1928 0c28 10E0 ldi r17,hi8(pm(LIBFC_HoTT_Putchar)) |
1929 0c2a 1F93 push r17 |
1930 0c2c 0F93 push r16 |
1931 0c2e E091 0000 lds r30,_printf_P |
1932 0c32 F091 0000 lds r31,(_printf_P)+1 |
1933 0c36 0995 icall |
1934 0c38 8EE1 ldi r24,lo8(30) |
1935 0c3a 0E94 0000 call LIBFC_HoTT_SetPos |
1936 0c3e 0F90 pop __tmp_reg__ |
1937 0c40 0F90 pop __tmp_reg__ |
1938 0c42 0F90 pop __tmp_reg__ |
1939 0c44 0F90 pop __tmp_reg__ |
1940 0c46 80E0 ldi r24,lo8(__c.19) |
1941 0c48 90E0 ldi r25,hi8(__c.19) |
1942 0c4a 9F93 push r25 |
1943 0c4c 8F93 push r24 |
1944 0c4e 1F93 push r17 |
1945 0c50 0F93 push r16 |
1946 0c52 E091 0000 lds r30,_printf_P |
1947 0c56 F091 0000 lds r31,(_printf_P)+1 |
1948 0c5a 0995 icall |
1949 0c5c 83E3 ldi r24,lo8(51) |
1950 0c5e 0E94 0000 call LIBFC_HoTT_SetPos |
1951 0c62 0F90 pop __tmp_reg__ |
1952 0c64 0F90 pop __tmp_reg__ |
1953 0c66 0F90 pop __tmp_reg__ |
1954 0c68 0F90 pop __tmp_reg__ |
1955 0c6a 80E0 ldi r24,lo8(__c.20) |
1956 0c6c 90E0 ldi r25,hi8(__c.20) |
1957 0c6e 9F93 push r25 |
1958 0c70 8F93 push r24 |
1959 0c72 1F93 push r17 |
1960 0c74 0F93 push r16 |
1961 0c76 E091 0000 lds r30,_printf_P |
1962 0c7a F091 0000 lds r31,(_printf_P)+1 |
1963 0c7e 0995 icall |
1964 0c80 8FE3 ldi r24,lo8(63) |
1965 0c82 0E94 0000 call LIBFC_HoTT_SetPos |
1966 0c86 0F90 pop __tmp_reg__ |
1967 0c88 0F90 pop __tmp_reg__ |
1968 0c8a 0F90 pop __tmp_reg__ |
1969 0c8c 0F90 pop __tmp_reg__ |
1970 0c8e 80E0 ldi r24,lo8(__c.21) |
1971 0c90 90E0 ldi r25,hi8(__c.21) |
1972 0c92 9F93 push r25 |
1973 0c94 8F93 push r24 |
1974 0c96 1F93 push r17 |
1975 0c98 0F93 push r16 |
1976 0c9a E091 0000 lds r30,_printf_P |
1977 0c9e F091 0000 lds r31,(_printf_P)+1 |
1978 0ca2 0995 icall |
1979 0ca4 8EE7 ldi r24,lo8(126) |
1980 0ca6 0E94 0000 call LIBFC_HoTT_SetPos |
1981 0caa 0F90 pop __tmp_reg__ |
1982 0cac 0F90 pop __tmp_reg__ |
1983 0cae 0F90 pop __tmp_reg__ |
1984 0cb0 0F90 pop __tmp_reg__ |
1985 0cb2 80E0 ldi r24,lo8(__c.22) |
1986 0cb4 90E0 ldi r25,hi8(__c.22) |
1987 0cb6 9F93 push r25 |
1988 0cb8 8F93 push r24 |
1989 0cba 1F93 push r17 |
1990 0cbc 0F93 push r16 |
1991 0cbe 00C0 rjmp .L322 |
1992 .L134: |
1993 0cc0 8091 0000 lds r24,NaviDataOkay |
1994 0cc4 8823 tst r24 |
1995 0cc6 01F4 brne .+2 |
1996 0cc8 00C0 rjmp .L135 |
1997 0cca 8DE5 ldi r24,lo8(93) |
1998 0ccc 0E94 0000 call LIBFC_HoTT_SetPos |
1999 0cd0 80E0 ldi r24,lo8(__c.23) |
2000 0cd2 90E0 ldi r25,hi8(__c.23) |
2001 0cd4 9F93 push r25 |
2002 0cd6 8F93 push r24 |
2003 0cd8 C0E0 ldi r28,lo8(pm(LIBFC_HoTT_Putchar)) |
2004 0cda D0E0 ldi r29,hi8(pm(LIBFC_HoTT_Putchar)) |
2005 0cdc DF93 push r29 |
2006 0cde CF93 push r28 |
2007 0ce0 E091 0000 lds r30,_printf_P |
2008 0ce4 F091 0000 lds r31,(_printf_P)+1 |
2009 0ce8 0995 icall |
2010 0cea 84E5 ldi r24,lo8(84) |
2011 0cec 0E94 0000 call LIBFC_HoTT_SetPos |
2012 0cf0 0F90 pop __tmp_reg__ |
2013 0cf2 0F90 pop __tmp_reg__ |
2014 0cf4 0F90 pop __tmp_reg__ |
2015 0cf6 0F90 pop __tmp_reg__ |
2016 0cf8 8091 0000 lds r24,GPSInfo+1 |
2017 0cfc 9927 clr r25 |
2018 0cfe 9F93 push r25 |
2019 0d00 8F93 push r24 |
2020 0d02 80E0 ldi r24,lo8(__c.24) |
2021 0d04 90E0 ldi r25,hi8(__c.24) |
2022 0d06 9F93 push r25 |
2023 0d08 8F93 push r24 |
2024 0d0a DF93 push r29 |
2025 0d0c CF93 push r28 |
2026 0d0e E091 0000 lds r30,_printf_P |
2027 0d12 F091 0000 lds r31,(_printf_P)+1 |
2028 0d16 0995 icall |
2029 0d18 8EE5 ldi r24,lo8(94) |
2030 0d1a 0E94 0000 call LIBFC_HoTT_SetPos |
2031 0d1e 2DB7 in r18,__SP_L__ |
2032 0d20 3EB7 in r19,__SP_H__ |
2033 0d22 2A5F subi r18,lo8(-(6)) |
2034 0d24 3F4F sbci r19,hi8(-(6)) |
2035 0d26 2DBF out __SP_L__,r18 |
2036 0d28 8091 0000 lds r24,GPSInfo+4 |
2037 0d2c 9091 0000 lds r25,(GPSInfo+4)+1 |
2038 0d30 6AE0 ldi r22,lo8(10) |
2039 0d32 70E0 ldi r23,hi8(10) |
2040 0d34 0E94 0000 call __udivmodhi4 |
2041 0d38 7F93 push r23 |
2042 0d3a 6F93 push r22 |
2043 0d3c 80E0 ldi r24,lo8(__c.25) |
2044 0d3e 90E0 ldi r25,hi8(__c.25) |
2045 0d40 9F93 push r25 |
2046 0d42 8F93 push r24 |
2047 0d44 DF93 push r29 |
2048 0d46 CF93 push r28 |
2049 0d48 E091 0000 lds r30,_printf_P |
2050 0d4c F091 0000 lds r31,(_printf_P)+1 |
2051 0d50 0995 icall |
2052 0d52 8DB7 in r24,__SP_L__ |
2053 0d54 9EB7 in r25,__SP_H__ |
2054 0d56 0696 adiw r24,6 |
2055 0d58 8DBF out __SP_L__,r24 |
2056 0d5a 8091 0000 lds r24,GPSInfo+2 |
2057 0d5e 8330 cpi r24,lo8(3) |
2058 0d60 01F4 brne .L140 |
2059 0d62 8091 0000 lds r24,GPSInfo |
2060 0d66 81FF sbrs r24,1 |
2061 0d68 00C0 rjmp .L138 |
2062 0d6a 8BE5 ldi r24,lo8(91) |
2063 0d6c 0E94 0000 call LIBFC_HoTT_SetPos |
2064 0d70 80E0 ldi r24,lo8(__c.26) |
2065 0d72 90E0 ldi r25,hi8(__c.26) |
2066 0d74 00C0 rjmp .L328 |
2067 .L138: |
2068 0d76 8BE5 ldi r24,lo8(91) |
2069 0d78 0E94 0000 call LIBFC_HoTT_SetPos |
2070 0d7c 80E0 ldi r24,lo8(__c.27) |
2071 0d7e 90E0 ldi r25,hi8(__c.27) |
2072 0d80 00C0 rjmp .L328 |
2073 .L140: |
2074 0d82 8BE5 ldi r24,lo8(91) |
2075 0d84 0E94 0000 call LIBFC_HoTT_SetPos |
2076 0d88 80E0 ldi r24,lo8(__c.28) |
2077 0d8a 90E0 ldi r25,hi8(__c.28) |
2078 0d8c 00C0 rjmp .L332 |
2079 .L135: |
2080 0d8e 84E0 ldi r24,lo8(4) |
2081 0d90 00C0 rjmp .L308 |
2082 .L142: |
2083 0d92 8091 0000 lds r24,NaviDataOkay |
2084 0d96 8823 tst r24 |
2085 0d98 01F4 brne .+2 |
2086 0d9a 00C0 rjmp .L143 |
2087 0d9c 8091 0000 lds r24,show_mag.3 |
2088 0da0 90E0 ldi r25,lo8(pm(LIBFC_HoTT_Putchar)) |
2089 0da2 E92E mov r14,r25 |
2090 0da4 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar)) |
2091 0da6 F92E mov r15,r25 |
2092 0da8 8823 tst r24 |
2093 0daa 01F4 brne .+2 |
2094 0dac 00C0 rjmp .L144 |
2095 0dae 89E6 ldi r24,lo8(105) |
2096 0db0 0E94 0000 call LIBFC_HoTT_SetPos |
2097 0db4 8091 0000 lds r24,EarthMagneticField |
2098 0db8 9927 clr r25 |
2099 0dba 9F93 push r25 |
2100 0dbc 8F93 push r24 |
2101 0dbe 80E0 ldi r24,lo8(__c.29) |
2102 0dc0 90E0 ldi r25,hi8(__c.29) |
2103 0dc2 9F93 push r25 |
2104 0dc4 8F93 push r24 |
2105 0dc6 FF92 push r15 |
2106 0dc8 EF92 push r14 |
2107 0dca E091 0000 lds r30,_printf_P |
2108 0dce F091 0000 lds r31,(_printf_P)+1 |
2109 0dd2 0995 icall |
2110 0dd4 85E7 ldi r24,lo8(117) |
2111 0dd6 0E94 0000 call LIBFC_HoTT_SetPos |
2112 0dda 2DB7 in r18,__SP_L__ |
2113 0ddc 3EB7 in r19,__SP_H__ |
2114 0dde 2A5F subi r18,lo8(-(6)) |
2115 0de0 3F4F sbci r19,hi8(-(6)) |
2116 0de2 2DBF out __SP_L__,r18 |
2117 0de4 8091 0000 lds r24,NC_GPS_ModeCharacter |
2118 0de8 9927 clr r25 |
2119 0dea 9F93 push r25 |
2120 0dec 8F93 push r24 |
2121 0dee 00E6 ldi r16,lo8(96) |
2122 0df0 10E0 ldi r17,hi8(96) |
2123 0df2 1F93 push r17 |
2124 0df4 0F93 push r16 |
2125 0df6 8091 0000 lds r24,GPSInfo+6 |
2126 0dfa 9091 0000 lds r25,(GPSInfo+6)+1 |
2127 0dfe 9F93 push r25 |
2128 0e00 8F93 push r24 |
2129 0e02 80E0 ldi r24,lo8(__c.30) |
2130 0e04 90E0 ldi r25,hi8(__c.30) |
2131 0e06 9F93 push r25 |
2132 0e08 8F93 push r24 |
2133 0e0a FF92 push r15 |
2134 0e0c EF92 push r14 |
2135 0e0e E091 0000 lds r30,_printf_P |
2136 0e12 F091 0000 lds r31,(_printf_P)+1 |
2137 0e16 0995 icall |
2138 0e18 82E7 ldi r24,lo8(114) |
2139 0e1a 0E94 0000 call LIBFC_HoTT_SetPos |
2140 0e1e 8DB7 in r24,__SP_L__ |
2141 0e20 9EB7 in r25,__SP_H__ |
2142 0e22 0A96 adiw r24,10 |
2143 0e24 8DBF out __SP_L__,r24 |
2144 0e26 8091 0000 lds r24,EarthMagneticInclinationTheoretic |
2145 0e2a 9927 clr r25 |
2146 0e2c 9F93 push r25 |
2147 0e2e 8F93 push r24 |
2148 0e30 1F93 push r17 |
2149 0e32 0F93 push r16 |
2150 0e34 8091 0000 lds r24,EarthMagneticInclination |
2151 0e38 9927 clr r25 |
2152 0e3a 9F93 push r25 |
2153 0e3c 8F93 push r24 |
2154 0e3e 80E0 ldi r24,lo8(__c.31) |
2155 0e40 90E0 ldi r25,hi8(__c.31) |
2156 0e42 00C0 rjmp .L314 |
2157 .L144: |
2158 0e44 89E6 ldi r24,lo8(105) |
2159 0e46 0E94 0000 call LIBFC_HoTT_SetPos |
2160 0e4a 8091 0000 lds r24,NC_GPS_ModeCharacter |
2161 0e4e 9927 clr r25 |
2162 0e50 9F93 push r25 |
2163 0e52 8F93 push r24 |
2164 0e54 80E6 ldi r24,lo8(96) |
2165 0e56 90E0 ldi r25,hi8(96) |
2166 0e58 9F93 push r25 |
2167 0e5a 8F93 push r24 |
2168 0e5c 8091 0000 lds r24,GPSInfo+6 |
2169 0e60 9091 0000 lds r25,(GPSInfo+6)+1 |
2170 0e64 9F93 push r25 |
2171 0e66 8F93 push r24 |
2172 0e68 8091 0000 lds r24,GPSInfo+3 |
2173 0e6c 9927 clr r25 |
2174 0e6e 9F93 push r25 |
2175 0e70 8F93 push r24 |
2176 0e72 80E0 ldi r24,lo8(__c.32) |
2177 0e74 90E0 ldi r25,hi8(__c.32) |
2178 0e76 9F93 push r25 |
2179 0e78 8F93 push r24 |
2180 0e7a FF92 push r15 |
2181 0e7c EF92 push r14 |
2182 0e7e E091 0000 lds r30,_printf_P |
2183 0e82 F091 0000 lds r31,(_printf_P)+1 |
2184 0e86 0995 icall |
2185 0e88 8DB7 in r24,__SP_L__ |
2186 0e8a 9EB7 in r25,__SP_H__ |
2187 0e8c 0C96 adiw r24,12 |
2188 0e8e 00C0 rjmp .L306 |
2189 .L143: |
2190 0e90 85E0 ldi r24,lo8(5) |
2191 0e92 00C0 rjmp .L308 |
2192 .L148: |
2193 0e94 9091 0000 lds r25,NC_ErrorCode |
2194 0e98 9923 tst r25 |
2195 0e9a 01F0 breq .L149 |
2196 0e9c 8091 0000 lds r24,HoTTBlink |
2197 0ea0 8823 tst r24 |
2198 0ea2 01F0 breq .L150 |
2199 0ea4 9032 cpi r25,lo8(32) |
2200 0ea6 00F4 brsh .L150 |
2201 0ea8 87E0 ldi r24,lo8(7) |
2202 0eaa 0E94 0000 call Hott_ClearLine |
2203 0eae 83E9 ldi r24,lo8(-109) |
2204 0eb0 0E94 0000 call LIBFC_HoTT_SetPos |
2205 0eb4 8091 0000 lds r24,NC_ErrorCode |
2206 0eb8 9927 clr r25 |
2207 0eba 9F93 push r25 |
2208 0ebc 8F93 push r24 |
2209 0ebe 80E0 ldi r24,lo8(__c.33) |
2210 0ec0 90E0 ldi r25,hi8(__c.33) |
2211 0ec2 00C0 rjmp .L315 |
2212 .L150: |
2213 0ec4 83E9 ldi r24,lo8(-109) |
2214 0ec6 0E94 0000 call LIBFC_HoTT_SetPos |
2215 0eca 80E0 ldi r24,lo8(__c.34) |
2216 0ecc 90E0 ldi r25,hi8(__c.34) |
2217 0ece 00C0 rjmp .L310 |
2218 .L149: |
2219 0ed0 8091 0000 lds r24,FC_StatusFlags |
2220 0ed4 00E0 ldi r16,lo8(pm(LIBFC_HoTT_Putchar)) |
2221 0ed6 E02E mov r14,r16 |
2222 0ed8 00E0 ldi r16,hi8(pm(LIBFC_HoTT_Putchar)) |
2223 0eda F02E mov r15,r16 |
2224 0edc 85FF sbrs r24,5 |
2225 0ede 00C0 rjmp .L153 |
2226 0ee0 84E9 ldi r24,lo8(-108) |
2227 0ee2 0E94 0000 call LIBFC_HoTT_SetPos |
2228 0ee6 80E0 ldi r24,lo8(__c.35) |
2229 0ee8 90E0 ldi r25,hi8(__c.35) |
2230 0eea 00C0 rjmp .L329 |
2231 .L153: |
2232 0eec 83E9 ldi r24,lo8(-109) |
2233 0eee 0E94 0000 call LIBFC_HoTT_SetPos |
2234 0ef2 80E0 ldi r24,lo8(__c.36) |
2235 0ef4 90E0 ldi r25,hi8(__c.36) |
2236 0ef6 00C0 rjmp .L329 |
2237 .L163: |
2238 0ef8 8091 0000 lds r24,HottKeyboard |
2239 0efc 8630 cpi r24,lo8(6) |
2240 0efe 01F4 brne .L164 |
2241 0f00 8091 0000 lds r24,show_mag.3 |
2242 0f04 8823 tst r24 |
2243 0f06 01F0 breq .L165 |
2244 0f08 1092 0000 sts show_mag.3,__zero_reg__ |
2245 0f0c 00C0 rjmp .L292 |
2246 .L165: |
2247 0f0e 81E0 ldi r24,lo8(1) |
2248 0f10 8093 0000 sts show_mag.3,r24 |
2249 0f14 00C0 rjmp .L292 |
2250 .L164: |
2251 0f16 8830 cpi r24,lo8(8) |
2252 0f18 01F0 breq .+2 |
2253 0f1a 00C0 rjmp .L292 |
2254 0f1c 0E94 0000 call LIBFC_HoTT_Clear |
2255 0f20 81E0 ldi r24,lo8(1) |
2256 0f22 00C0 rjmp .L330 |
2257 .L169: |
2258 0f24 9093 0000 sts line.0,r25 |
2259 0f28 00C0 rjmp .L114 |
2260 .L116: |
2261 0f2a 9130 cpi r25,lo8(1) |
2262 0f2c 01F0 breq .+2 |
2263 0f2e 00C0 rjmp .L172 |
2264 0f30 8091 0000 lds r24,line.0 |
2265 0f34 282F mov r18,r24 |
2266 0f36 3327 clr r19 |
2267 0f38 4427 clr r20 |
2268 0f3a 5527 clr r21 |
2269 0f3c 8F5F subi r24,lo8(-(1)) |
2270 0f3e 8093 0000 sts line.0,r24 |
2271 0f42 F901 movw r30,r18 |
2272 0f44 2131 cpi r18,17 |
2273 0f46 3105 cpc r19,__zero_reg__ |
2274 0f48 00F0 brlo .+2 |
2275 0f4a 00C0 rjmp .L294 |
2276 0f4c E050 subi r30,lo8(-(pm(.L235))) |
2277 0f4e F040 sbci r31,hi8(-(pm(.L235))) |
2278 0f50 0C94 0000 jmp __tablejump2__ |
2279 .data |
2280 .section .progmem.gcc_sw_table, "a", @progbits |
2281 .p2align 1 |
2282 .L235: |
2283 0022 0000 .word pm(.L174) |
2284 0024 0000 .word pm(.L177) |
2285 0026 0000 .word pm(.L182) |
2286 0028 0000 .word pm(.L185) |
2287 002a 0000 .word pm(.L188) |
2288 002c 0000 .word pm(.L195) |
2289 002e 0000 .word pm(.L198) |
2290 0030 0000 .word pm(.L211) |
2291 0032 0000 .word pm(.L226) |
2292 0034 0000 .word pm(.L226) |
2293 0036 0000 .word pm(.L226) |
2294 0038 0000 .word pm(.L226) |
2295 003a 0000 .word pm(.L226) |
2296 003c 0000 .word pm(.L226) |
2297 003e 0000 .word pm(.L226) |
2298 0040 0000 .word pm(.L226) |
2299 0042 0000 .word pm(.L226) |
2300 .text |
2301 .L174: |
2302 0f54 8091 0000 lds r24,FC_StatusFlags |
2303 0f58 85FF sbrs r24,5 |
2304 0f5a 00C0 rjmp .L175 |
2305 0f5c 80E0 ldi r24,lo8(0) |
2306 0f5e 0E94 0000 call LIBFC_HoTT_SetPos |
2307 0f62 8091 0000 lds r24,Capacity+4 |
2308 0f66 9091 0000 lds r25,(Capacity+4)+1 |
2309 0f6a 9F93 push r25 |
2310 0f6c 8F93 push r24 |
2311 0f6e 8091 0000 lds r24,UBat |
2312 0f72 9091 0000 lds r25,(UBat)+1 |
2313 0f76 6AE0 ldi r22,lo8(10) |
2314 0f78 70E0 ldi r23,hi8(10) |
2315 0f7a 0E94 0000 call __divmodhi4 |
2316 0f7e 9F93 push r25 |
2317 0f80 8F93 push r24 |
2318 0f82 8091 0000 lds r24,UBat |
2319 0f86 9091 0000 lds r25,(UBat)+1 |
2320 0f8a 6AE0 ldi r22,lo8(10) |
2321 0f8c 70E0 ldi r23,hi8(10) |
2322 0f8e 0E94 0000 call __divmodhi4 |
2323 0f92 7F93 push r23 |
2324 0f94 6F93 push r22 |
2325 0f96 8091 0000 lds r24,FlugSekunden |
2326 0f9a 9091 0000 lds r25,(FlugSekunden)+1 |
2327 0f9e 6CE3 ldi r22,lo8(60) |
2328 0fa0 70E0 ldi r23,hi8(60) |
2329 0fa2 0E94 0000 call __udivmodhi4 |
2330 0fa6 9F93 push r25 |
2331 0fa8 8F93 push r24 |
2332 0faa 8091 0000 lds r24,FlugSekunden |
2333 0fae 9091 0000 lds r25,(FlugSekunden)+1 |
2334 0fb2 6CE3 ldi r22,lo8(60) |
2335 0fb4 70E0 ldi r23,hi8(60) |
2336 0fb6 0E94 0000 call __udivmodhi4 |
2337 0fba 7F93 push r23 |
2338 0fbc 6F93 push r22 |
2339 0fbe 80E0 ldi r24,lo8(__c.37) |
2340 0fc0 90E0 ldi r25,hi8(__c.37) |
2341 0fc2 9F93 push r25 |
2342 0fc4 8F93 push r24 |
2343 0fc6 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar_BLINK)) |
2344 0fc8 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar_BLINK)) |
2345 0fca 9F93 push r25 |
2346 0fcc 8F93 push r24 |
2347 0fce E091 0000 lds r30,_printf_P |
2348 0fd2 F091 0000 lds r31,(_printf_P)+1 |
2349 0fd6 0995 icall |
2350 0fd8 2DB7 in r18,__SP_L__ |
2351 0fda 3EB7 in r19,__SP_H__ |
2352 0fdc 225F subi r18,lo8(-(14)) |
2353 0fde 3F4F sbci r19,hi8(-(14)) |
2354 0fe0 00C0 rjmp .L303 |
2355 .L175: |
2356 0fe2 80E0 ldi r24,lo8(0) |
2357 0fe4 0E94 0000 call LIBFC_HoTT_SetPos |
2358 0fe8 8091 0000 lds r24,Capacity+4 |
2359 0fec 9091 0000 lds r25,(Capacity+4)+1 |
2360 0ff0 9F93 push r25 |
2361 0ff2 8F93 push r24 |
2362 0ff4 8091 0000 lds r24,UBat |
2363 0ff8 9091 0000 lds r25,(UBat)+1 |
2364 0ffc 6AE0 ldi r22,lo8(10) |
2365 0ffe 70E0 ldi r23,hi8(10) |
2366 1000 0E94 0000 call __divmodhi4 |
2367 1004 9F93 push r25 |
2368 1006 8F93 push r24 |
2369 1008 8091 0000 lds r24,UBat |
2370 100c 9091 0000 lds r25,(UBat)+1 |
2371 1010 6AE0 ldi r22,lo8(10) |
2372 1012 70E0 ldi r23,hi8(10) |
2373 1014 0E94 0000 call __divmodhi4 |
2374 1018 7F93 push r23 |
2375 101a 6F93 push r22 |
2376 101c 8091 0000 lds r24,FlugSekunden |
2377 1020 9091 0000 lds r25,(FlugSekunden)+1 |
2378 1024 6CE3 ldi r22,lo8(60) |
2379 1026 70E0 ldi r23,hi8(60) |
2380 1028 0E94 0000 call __udivmodhi4 |
2381 102c 9F93 push r25 |
2382 102e 8F93 push r24 |
2383 1030 8091 0000 lds r24,FlugSekunden |
2384 1034 9091 0000 lds r25,(FlugSekunden)+1 |
2385 1038 6CE3 ldi r22,lo8(60) |
2386 103a 70E0 ldi r23,hi8(60) |
2387 103c 0E94 0000 call __udivmodhi4 |
2388 1040 7F93 push r23 |
2389 1042 6F93 push r22 |
2390 1044 80E0 ldi r24,lo8(__c.38) |
2391 1046 90E0 ldi r25,hi8(__c.38) |
2392 1048 00C0 rjmp .L325 |
2393 .L177: |
2394 104a 85E1 ldi r24,lo8(21) |
2395 104c 0E94 0000 call LIBFC_HoTT_SetPos |
2396 1050 80E6 ldi r24,lo8(96) |
2397 1052 90E0 ldi r25,hi8(96) |
2398 1054 9F93 push r25 |
2399 1056 8F93 push r24 |
2400 1058 8091 0000 lds r24,KompassValue |
2401 105c 9091 0000 lds r25,(KompassValue)+1 |
2402 1060 9F93 push r25 |
2403 1062 8F93 push r24 |
2404 1064 80E0 ldi r24,lo8(__c.39) |
2405 1066 90E0 ldi r25,hi8(__c.39) |
2406 1068 9F93 push r25 |
2407 106a 8F93 push r24 |
2408 106c C0E0 ldi r28,lo8(pm(LIBFC_HoTT_Putchar)) |
2409 106e D0E0 ldi r29,hi8(pm(LIBFC_HoTT_Putchar)) |
2410 1070 DF93 push r29 |
2411 1072 CF93 push r28 |
2412 1074 E091 0000 lds r30,_printf_P |
2413 1078 F091 0000 lds r31,(_printf_P)+1 |
2414 107c 0995 icall |
2415 107e 8091 0000 lds r24,Parameter_GlobalConfig |
2416 1082 2DB7 in r18,__SP_L__ |
2417 1084 3EB7 in r19,__SP_H__ |
2418 1086 285F subi r18,lo8(-(8)) |
2419 1088 3F4F sbci r19,hi8(-(8)) |
2420 108a 2DBF out __SP_L__,r18 |
2421 108c 80FF sbrs r24,0 |
2422 108e 00C0 rjmp .L178 |
2423 1090 8091 0000 lds r24,HoehenReglerAktiv |
2424 1094 8823 tst r24 |
2425 1096 01F0 breq .L179 |
2426 1098 8FE1 ldi r24,lo8(31) |
2427 109a 0E94 0000 call LIBFC_HoTT_SetPos |
2428 109e 8091 0000 lds r24,HoehenWert |
2429 10a2 9091 0000 lds r25,(HoehenWert)+1 |
2430 10a6 A091 0000 lds r26,(HoehenWert)+2 |
2431 10aa B091 0000 lds r27,(HoehenWert)+3 |
2432 10ae BC01 movw r22,r24 |
2433 10b0 CD01 movw r24,r26 |
2434 10b2 24E6 ldi r18,lo8(100) |
2435 10b4 30E0 ldi r19,hi8(100) |
2436 10b6 40E0 ldi r20,hlo8(100) |
2437 10b8 50E0 ldi r21,hhi8(100) |
2438 10ba 0E94 0000 call __divmodsi4 |
2439 10be 3F93 push r19 |
2440 10c0 2F93 push r18 |
2441 10c2 80E0 ldi r24,lo8(__c.40) |
2442 10c4 90E0 ldi r25,hi8(__c.40) |
2443 10c6 9F93 push r25 |
2444 10c8 8F93 push r24 |
2445 10ca 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar_INV)) |
2446 10cc 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar_INV)) |
2447 10ce 9F93 push r25 |
2448 10d0 8F93 push r24 |
2449 10d2 E091 0000 lds r30,_printf_P |
2450 10d6 F091 0000 lds r31,(_printf_P)+1 |
2451 10da 0995 icall |
2452 10dc 8DB7 in r24,__SP_L__ |
2453 10de 9EB7 in r25,__SP_H__ |
2454 10e0 0696 adiw r24,6 |
2455 10e2 8DBF out __SP_L__,r24 |
2456 10e4 00C0 rjmp .L181 |
2457 .L179: |
2458 10e6 8FE1 ldi r24,lo8(31) |
2459 10e8 0E94 0000 call LIBFC_HoTT_SetPos |
2460 10ec 8091 0000 lds r24,HoehenWert |
2461 10f0 9091 0000 lds r25,(HoehenWert)+1 |
2462 10f4 A091 0000 lds r26,(HoehenWert)+2 |
2463 10f8 B091 0000 lds r27,(HoehenWert)+3 |
2464 10fc BC01 movw r22,r24 |
2465 10fe CD01 movw r24,r26 |
2466 1100 24E6 ldi r18,lo8(100) |
2467 1102 30E0 ldi r19,hi8(100) |
2468 1104 40E0 ldi r20,hlo8(100) |
2469 1106 50E0 ldi r21,hhi8(100) |
2470 1108 0E94 0000 call __divmodsi4 |
2471 110c 3F93 push r19 |
2472 110e 2F93 push r18 |
2473 1110 80E0 ldi r24,lo8(__c.41) |
2474 1112 90E0 ldi r25,hi8(__c.41) |
2475 1114 9F93 push r25 |
2476 1116 8F93 push r24 |
2477 1118 DF93 push r29 |
2478 111a CF93 push r28 |
2479 111c E091 0000 lds r30,_printf_P |
2480 1120 F091 0000 lds r31,(_printf_P)+1 |
2481 1124 0995 icall |
2482 1126 2DB7 in r18,__SP_L__ |
2483 1128 3EB7 in r19,__SP_H__ |
2484 112a 2A5F subi r18,lo8(-(6)) |
2485 112c 3F4F sbci r19,hi8(-(6)) |
2486 112e 2DBF out __SP_L__,r18 |
2487 1130 00C0 rjmp .L181 |
2488 .L178: |
2489 1132 8FE1 ldi r24,lo8(31) |
2490 1134 0E94 0000 call LIBFC_HoTT_SetPos |
2491 1138 80E0 ldi r24,lo8(__c.42) |
2492 113a 90E0 ldi r25,hi8(__c.42) |
2493 113c 9F93 push r25 |
2494 113e 8F93 push r24 |
2495 1140 DF93 push r29 |
2496 1142 CF93 push r28 |
2497 1144 E091 0000 lds r30,_printf_P |
2498 1148 F091 0000 lds r31,(_printf_P)+1 |
2499 114c 0995 icall |
2500 114e 0F90 pop __tmp_reg__ |
2501 1150 0F90 pop __tmp_reg__ |
2502 1152 0F90 pop __tmp_reg__ |
2503 1154 0F90 pop __tmp_reg__ |
2504 .L181: |
2505 1156 89E2 ldi r24,lo8(41) |
2506 1158 0E94 0000 call LIBFC_HoTT_SetPos |
2507 115c 8091 0000 lds r24,VarioCharacter |
2508 1160 9927 clr r25 |
2509 1162 9F93 push r25 |
2510 1164 8F93 push r24 |
2511 1166 80E0 ldi r24,lo8(__c.43) |
2512 1168 90E0 ldi r25,hi8(__c.43) |
2513 116a 9F93 push r25 |
2514 116c 8F93 push r24 |
2515 116e DF93 push r29 |
2516 1170 CF93 push r28 |
2517 1172 00C0 rjmp .L327 |
2518 .L182: |
2519 1174 8091 0000 lds r24,NaviDataOkay |
2520 1178 8823 tst r24 |
2521 117a 01F0 breq .L183 |
2522 117c 8BE2 ldi r24,lo8(43) |
2523 117e 0E94 0000 call LIBFC_HoTT_SetPos |
2524 1182 8091 0000 lds r24,NC_GPS_ModeCharacter |
2525 1186 9927 clr r25 |
2526 1188 9F93 push r25 |
2527 118a 8F93 push r24 |
2528 118c 8091 0000 lds r24,GPSInfo+4 |
2529 1190 9091 0000 lds r25,(GPSInfo+4)+1 |
2530 1194 6AE0 ldi r22,lo8(10) |
2531 1196 70E0 ldi r23,hi8(10) |
2532 1198 0E94 0000 call __udivmodhi4 |
2533 119c 7F93 push r23 |
2534 119e 6F93 push r22 |
2535 11a0 80E6 ldi r24,lo8(96) |
2536 11a2 90E0 ldi r25,hi8(96) |
2537 11a4 9F93 push r25 |
2538 11a6 8F93 push r24 |
2539 11a8 8091 0000 lds r24,GPSInfo+6 |
2540 11ac 9091 0000 lds r25,(GPSInfo+6)+1 |
2541 11b0 9F93 push r25 |
2542 11b2 8F93 push r24 |
2543 11b4 80E0 ldi r24,lo8(__c.44) |
2544 11b6 90E0 ldi r25,hi8(__c.44) |
2545 11b8 00C0 rjmp .L316 |
2546 .L183: |
2547 11ba 82E0 ldi r24,lo8(2) |
2548 11bc 00C0 rjmp .L308 |
2549 .L185: |
2550 11be 8FE3 ldi r24,lo8(63) |
2551 11c0 0E94 0000 call LIBFC_HoTT_SetPos |
2552 11c4 8091 0000 lds r24,Capacity+2 |
2553 11c8 9091 0000 lds r25,(Capacity+2)+1 |
2554 11cc 9F93 push r25 |
2555 11ce 8F93 push r24 |
2556 11d0 8091 0000 lds r24,Capacity |
2557 11d4 9091 0000 lds r25,(Capacity)+1 |
2558 11d8 6AE0 ldi r22,lo8(10) |
2559 11da 70E0 ldi r23,hi8(10) |
2560 11dc 0E94 0000 call __udivmodhi4 |
2561 11e0 9F93 push r25 |
2562 11e2 8F93 push r24 |
2563 11e4 8091 0000 lds r24,Capacity |
2564 11e8 9091 0000 lds r25,(Capacity)+1 |
2565 11ec 6AE0 ldi r22,lo8(10) |
2566 11ee 70E0 ldi r23,hi8(10) |
2567 11f0 0E94 0000 call __udivmodhi4 |
2568 11f4 7F93 push r23 |
2569 11f6 6F93 push r22 |
2570 11f8 80E0 ldi r24,lo8(__c.45) |
2571 11fa 90E0 ldi r25,hi8(__c.45) |
2572 11fc 9F93 push r25 |
2573 11fe 8F93 push r24 |
2574 1200 C0E0 ldi r28,lo8(pm(LIBFC_HoTT_Putchar)) |
2575 1202 D0E0 ldi r29,hi8(pm(LIBFC_HoTT_Putchar)) |
2576 1204 DF93 push r29 |
2577 1206 CF93 push r28 |
2578 1208 E091 0000 lds r30,_printf_P |
2579 120c F091 0000 lds r31,(_printf_P)+1 |
2580 1210 0995 icall |
2581 1212 8091 0000 lds r24,FC_StatusFlags2 |
2582 1216 2DB7 in r18,__SP_L__ |
2583 1218 3EB7 in r19,__SP_H__ |
2584 121a 265F subi r18,lo8(-(10)) |
2585 121c 3F4F sbci r19,hi8(-(10)) |
2586 121e 2DBF out __SP_L__,r18 |
2587 1220 80FF sbrs r24,0 |
2588 1222 00C0 rjmp .L186 |
2589 1224 82E5 ldi r24,lo8(82) |
2590 1226 0E94 0000 call LIBFC_HoTT_SetPos |
2591 122a 80E0 ldi r24,lo8(__c.46) |
2592 122c 90E0 ldi r25,hi8(__c.46) |
2593 .L333: |
2594 122e 9F93 push r25 |
2595 1230 8F93 push r24 |
2596 1232 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar_INV)) |
2597 1234 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar_INV)) |
2598 1236 00C0 rjmp .L321 |
2599 .L186: |
2600 1238 82E5 ldi r24,lo8(82) |
2601 123a 0E94 0000 call LIBFC_HoTT_SetPos |
2602 123e 80E0 ldi r24,lo8(__c.47) |
2603 1240 90E0 ldi r25,hi8(__c.47) |
2604 1242 00C0 rjmp .L328 |
2605 .L188: |
2606 1244 8091 0000 lds r24,NaviDataOkay |
2607 1248 10E0 ldi r17,lo8(pm(LIBFC_HoTT_Putchar)) |
2608 124a E12E mov r14,r17 |
2609 124c 10E0 ldi r17,hi8(pm(LIBFC_HoTT_Putchar)) |
2610 124e F12E mov r15,r17 |
2611 1250 8823 tst r24 |
2612 1252 01F4 brne .+2 |
2613 1254 00C0 rjmp .L189 |
2614 1256 84E5 ldi r24,lo8(84) |
2615 1258 0E94 0000 call LIBFC_HoTT_SetPos |
2616 125c 8091 0000 lds r24,GPSInfo+1 |
2617 1260 9927 clr r25 |
2618 1262 9F93 push r25 |
2619 1264 8F93 push r24 |
2620 1266 8091 0000 lds r24,GPSInfo+3 |
2621 126a 9927 clr r25 |
2622 126c 9F93 push r25 |
2623 126e 8F93 push r24 |
2624 1270 80E0 ldi r24,lo8(__c.48) |
2625 1272 90E0 ldi r25,hi8(__c.48) |
2626 1274 9F93 push r25 |
2627 1276 8F93 push r24 |
2628 1278 E701 movw r28,r14 |
2629 127a FF92 push r15 |
2630 127c EF92 push r14 |
2631 127e E091 0000 lds r30,_printf_P |
2632 1282 F091 0000 lds r31,(_printf_P)+1 |
2633 1286 0995 icall |
2634 1288 8DB7 in r24,__SP_L__ |
2635 128a 9EB7 in r25,__SP_H__ |
2636 128c 0896 adiw r24,8 |
2637 128e 8DBF out __SP_L__,r24 |
2638 1290 8091 0000 lds r24,GPSInfo+2 |
2639 1294 8330 cpi r24,lo8(3) |
2640 1296 01F4 brne .L192 |
2641 1298 84E6 ldi r24,lo8(100) |
2642 129a 0E94 0000 call LIBFC_HoTT_SetPos |
2643 129e 80E0 ldi r24,lo8(__c.49) |
2644 12a0 90E0 ldi r25,hi8(__c.49) |
2645 12a2 9F93 push r25 |
2646 12a4 8F93 push r24 |
2647 12a6 FF92 push r15 |
2648 12a8 EF92 push r14 |
2649 12aa 00C0 rjmp .L297 |
2650 .L192: |
2651 12ac 84E6 ldi r24,lo8(100) |
2652 12ae 0E94 0000 call LIBFC_HoTT_SetPos |
2653 12b2 80E0 ldi r24,lo8(__c.50) |
2654 12b4 90E0 ldi r25,hi8(__c.50) |
2655 12b6 9F93 push r25 |
2656 12b8 8F93 push r24 |
2657 12ba 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar_BLINK)) |
2658 12bc 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar_BLINK)) |
2659 12be 9F93 push r25 |
2660 12c0 8F93 push r24 |
2661 .L297: |
2662 12c2 E091 0000 lds r30,_printf_P |
2663 12c6 F091 0000 lds r31,(_printf_P)+1 |
2664 12ca 0995 icall |
2665 12cc 0F90 pop __tmp_reg__ |
2666 12ce 0F90 pop __tmp_reg__ |
2667 12d0 0F90 pop __tmp_reg__ |
2668 12d2 0F90 pop __tmp_reg__ |
2669 12d4 8091 0000 lds r24,GPSInfo |
2670 12d8 81FF sbrs r24,1 |
2671 12da 00C0 rjmp .L114 |
2672 12dc 84E6 ldi r24,lo8(100) |
2673 12de 0E94 0000 call LIBFC_HoTT_SetPos |
2674 12e2 80E0 ldi r24,lo8(__c.51) |
2675 12e4 90E0 ldi r25,hi8(__c.51) |
2676 12e6 00C0 rjmp .L328 |
2677 .L189: |
2678 12e8 84E5 ldi r24,lo8(84) |
2679 12ea 0E94 0000 call LIBFC_HoTT_SetPos |
2680 12ee 80E0 ldi r24,lo8(__c.52) |
2681 12f0 90E0 ldi r25,hi8(__c.52) |
2682 12f2 00C0 rjmp .L329 |
2683 .L195: |
2684 12f4 8091 0000 lds r24,show_current.2 |
2685 12f8 C0E0 ldi r28,lo8(pm(LIBFC_HoTT_Putchar)) |
2686 12fa EC2E mov r14,r28 |
2687 12fc C0E0 ldi r28,hi8(pm(LIBFC_HoTT_Putchar)) |
2688 12fe FC2E mov r15,r28 |
2689 1300 8823 tst r24 |
2690 1302 01F4 brne .+2 |
2691 1304 00C0 rjmp .L196 |
2692 1306 89E6 ldi r24,lo8(105) |
2693 1308 0E94 0000 call LIBFC_HoTT_SetPos |
2694 130c 8091 0000 lds r24,Motor+29 |
2695 1310 6AE0 ldi r22,lo8(10) |
2696 1312 0E94 0000 call __udivmodqi4 |
2697 1316 892F mov r24,r25 |
2698 1318 9927 clr r25 |
2699 131a 9F93 push r25 |
2700 131c 8F93 push r24 |
2701 131e 8091 0000 lds r24,Motor+29 |
2702 1322 0E94 0000 call __udivmodqi4 |
2703 1326 9927 clr r25 |
2704 1328 9F93 push r25 |
2705 132a 8F93 push r24 |
2706 132c 8091 0000 lds r24,Motor+21 |
2707 1330 0E94 0000 call __udivmodqi4 |
2708 1334 892F mov r24,r25 |
2709 1336 9927 clr r25 |
2710 1338 9F93 push r25 |
2711 133a 8F93 push r24 |
2712 133c 8091 0000 lds r24,Motor+21 |
2713 1340 0E94 0000 call __udivmodqi4 |
2714 1344 9927 clr r25 |
2715 1346 9F93 push r25 |
2716 1348 8F93 push r24 |
2717 134a 8091 0000 lds r24,Motor+13 |
2718 134e 0E94 0000 call __udivmodqi4 |
2719 1352 892F mov r24,r25 |
2720 1354 9927 clr r25 |
2721 1356 9F93 push r25 |
2722 1358 8F93 push r24 |
2723 135a 8091 0000 lds r24,Motor+13 |
2724 135e 0E94 0000 call __udivmodqi4 |
2725 1362 9927 clr r25 |
2726 1364 9F93 push r25 |
2727 1366 8F93 push r24 |
2728 1368 8091 0000 lds r24,Motor+5 |
2729 136c 0E94 0000 call __udivmodqi4 |
2730 1370 892F mov r24,r25 |
2731 1372 9927 clr r25 |
2732 1374 9F93 push r25 |
2733 1376 8F93 push r24 |
2734 1378 8091 0000 lds r24,Motor+5 |
2735 137c 0E94 0000 call __udivmodqi4 |
2736 1380 9927 clr r25 |
2737 1382 9F93 push r25 |
2738 1384 8F93 push r24 |
2739 1386 80E0 ldi r24,lo8(__c.53) |
2740 1388 90E0 ldi r25,hi8(__c.53) |
2741 138a 9F93 push r25 |
2742 138c 8F93 push r24 |
2743 138e FF92 push r15 |
2744 1390 EF92 push r14 |
2745 1392 E091 0000 lds r30,_printf_P |
2746 1396 F091 0000 lds r31,(_printf_P)+1 |
2747 139a 0995 icall |
2748 139c 2DB7 in r18,__SP_L__ |
2749 139e 3EB7 in r19,__SP_H__ |
2750 13a0 2C5E subi r18,lo8(-(20)) |
2751 13a2 3F4F sbci r19,hi8(-(20)) |
2752 13a4 00C0 rjmp .L303 |
2753 .L196: |
2754 13a6 89E6 ldi r24,lo8(105) |
2755 13a8 0E94 0000 call LIBFC_HoTT_SetPos |
2756 13ac 80E6 ldi r24,lo8(96) |
2757 13ae 90E0 ldi r25,hi8(96) |
2758 13b0 9F93 push r25 |
2759 13b2 8F93 push r24 |
2760 13b4 8091 0000 lds r24,Motor+31 |
2761 13b8 9927 clr r25 |
2762 13ba 87FD sbrc r24,7 |
2763 13bc 9095 com r25 |
2764 13be 9F93 push r25 |
2765 13c0 8F93 push r24 |
2766 13c2 8091 0000 lds r24,Motor+23 |
2767 13c6 9927 clr r25 |
2768 13c8 87FD sbrc r24,7 |
2769 13ca 9095 com r25 |
2770 13cc 9F93 push r25 |
2771 13ce 8F93 push r24 |
2772 13d0 8091 0000 lds r24,Motor+15 |
2773 13d4 9927 clr r25 |
2774 13d6 87FD sbrc r24,7 |
2775 13d8 9095 com r25 |
2776 13da 9F93 push r25 |
2777 13dc 8F93 push r24 |
2778 13de 8091 0000 lds r24,Motor+7 |
2779 13e2 9927 clr r25 |
2780 13e4 87FD sbrc r24,7 |
2781 13e6 9095 com r25 |
2782 13e8 9F93 push r25 |
2783 13ea 8F93 push r24 |
2784 13ec 80E0 ldi r24,lo8(__c.54) |
2785 13ee 90E0 ldi r25,hi8(__c.54) |
2786 13f0 9F93 push r25 |
2787 13f2 8F93 push r24 |
2788 13f4 FF92 push r15 |
2789 13f6 EF92 push r14 |
2790 .L311: |
2791 13f8 E091 0000 lds r30,_printf_P |
2792 13fc F091 0000 lds r31,(_printf_P)+1 |
2793 1400 0995 icall |
2794 1402 8DB7 in r24,__SP_L__ |
2795 1404 9EB7 in r25,__SP_H__ |
2796 1406 0E96 adiw r24,14 |
2797 1408 00C0 rjmp .L306 |
2798 .L198: |
2799 140a 8091 0000 lds r24,show_current.2 |
2800 140e 9091 0000 lds r25,RequiredMotors |
2801 1412 8823 tst r24 |
2802 1414 01F4 brne .+2 |
2803 1416 00C0 rjmp .L199 |
2804 1418 9430 cpi r25,lo8(4) |
2805 141a 01F4 brne .+2 |
2806 141c 00C0 rjmp .L307 |
2807 141e 9630 cpi r25,lo8(6) |
2808 1420 01F4 brne .L202 |
2809 1422 8EE7 ldi r24,lo8(126) |
2810 1424 0E94 0000 call LIBFC_HoTT_SetPos |
2811 1428 8091 0000 lds r24,Motor+45 |
2812 142c 6AE0 ldi r22,lo8(10) |
2813 142e 0E94 0000 call __udivmodqi4 |
2814 1432 892F mov r24,r25 |
2815 1434 9927 clr r25 |
2816 1436 9F93 push r25 |
2817 1438 8F93 push r24 |
2818 143a 8091 0000 lds r24,Motor+45 |
2819 143e 0E94 0000 call __udivmodqi4 |
2820 1442 9927 clr r25 |
2821 1444 9F93 push r25 |
2822 1446 8F93 push r24 |
2823 1448 8091 0000 lds r24,Motor+37 |
2824 144c 0E94 0000 call __udivmodqi4 |
2825 1450 892F mov r24,r25 |
2826 1452 9927 clr r25 |
2827 1454 9F93 push r25 |
2828 1456 8F93 push r24 |
2829 1458 8091 0000 lds r24,Motor+37 |
2830 145c 0E94 0000 call __udivmodqi4 |
2831 1460 9927 clr r25 |
2832 1462 9F93 push r25 |
2833 1464 8F93 push r24 |
2834 1466 80E0 ldi r24,lo8(__c.55) |
2835 1468 90E0 ldi r25,hi8(__c.55) |
2836 .L316: |
2837 146a 9F93 push r25 |
2838 146c 8F93 push r24 |
2839 146e 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar)) |
2840 1470 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar)) |
2841 1472 9F93 push r25 |
2842 1474 8F93 push r24 |
2843 1476 E091 0000 lds r30,_printf_P |
2844 147a F091 0000 lds r31,(_printf_P)+1 |
2845 147e 0995 icall |
2846 1480 2DB7 in r18,__SP_L__ |
2847 1482 3EB7 in r19,__SP_H__ |
2848 1484 245F subi r18,lo8(-(12)) |
2849 1486 3F4F sbci r19,hi8(-(12)) |
2850 1488 00C0 rjmp .L303 |
2851 .L202: |
2852 148a 9730 cpi r25,lo8(7) |
2853 148c 00F4 brsh .+2 |
2854 148e 00C0 rjmp .L114 |
2855 1490 8EE7 ldi r24,lo8(126) |
2856 1492 0E94 0000 call LIBFC_HoTT_SetPos |
2857 1496 8091 0000 lds r24,Motor+61 |
2858 149a 6AE0 ldi r22,lo8(10) |
2859 149c 0E94 0000 call __udivmodqi4 |
2860 14a0 892F mov r24,r25 |
2861 14a2 9927 clr r25 |
2862 14a4 9F93 push r25 |
2863 14a6 8F93 push r24 |
2864 14a8 8091 0000 lds r24,Motor+61 |
2865 14ac 0E94 0000 call __udivmodqi4 |
2866 14b0 9927 clr r25 |
2867 14b2 9F93 push r25 |
2868 14b4 8F93 push r24 |
2869 14b6 8091 0000 lds r24,Motor+53 |
2870 14ba 0E94 0000 call __udivmodqi4 |
2871 14be 892F mov r24,r25 |
2872 14c0 9927 clr r25 |
2873 14c2 9F93 push r25 |
2874 14c4 8F93 push r24 |
2875 14c6 8091 0000 lds r24,Motor+53 |
2876 14ca 0E94 0000 call __udivmodqi4 |
2877 14ce 9927 clr r25 |
2878 14d0 9F93 push r25 |
2879 14d2 8F93 push r24 |
2880 14d4 8091 0000 lds r24,Motor+45 |
2881 14d8 0E94 0000 call __udivmodqi4 |
2882 14dc 892F mov r24,r25 |
2883 14de 9927 clr r25 |
2884 14e0 9F93 push r25 |
2885 14e2 8F93 push r24 |
2886 14e4 8091 0000 lds r24,Motor+45 |
2887 14e8 0E94 0000 call __udivmodqi4 |
2888 14ec 9927 clr r25 |
2889 14ee 9F93 push r25 |
2890 14f0 8F93 push r24 |
2891 14f2 8091 0000 lds r24,Motor+37 |
2892 14f6 0E94 0000 call __udivmodqi4 |
2893 14fa 892F mov r24,r25 |
2894 14fc 9927 clr r25 |
2895 14fe 9F93 push r25 |
2896 1500 8F93 push r24 |
2897 1502 8091 0000 lds r24,Motor+37 |
2898 1506 0E94 0000 call __udivmodqi4 |
2899 150a 9927 clr r25 |
2900 150c 9F93 push r25 |
2901 150e 8F93 push r24 |
2902 1510 80E0 ldi r24,lo8(__c.56) |
2903 1512 90E0 ldi r25,hi8(__c.56) |
2904 1514 9F93 push r25 |
2905 1516 8F93 push r24 |
2906 1518 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar)) |
2907 151a 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar)) |
2908 151c 9F93 push r25 |
2909 151e 8F93 push r24 |
2910 1520 E091 0000 lds r30,_printf_P |
2911 1524 F091 0000 lds r31,(_printf_P)+1 |
2912 1528 0995 icall |
2913 152a 8DB7 in r24,__SP_L__ |
2914 152c 9EB7 in r25,__SP_H__ |
2915 152e 4496 adiw r24,20 |
2916 1530 00C0 rjmp .L306 |
2917 .L199: |
2918 1532 9430 cpi r25,lo8(4) |
2919 1534 01F4 brne .L206 |
2920 .L307: |
2921 1536 86E0 ldi r24,lo8(6) |
2922 .L308: |
2923 1538 0E94 0000 call Hott_ClearLine |
2924 153c 00C0 rjmp .L114 |
2925 .L206: |
2926 153e 9630 cpi r25,lo8(6) |
2927 1540 01F4 brne .L208 |
2928 1542 8EE7 ldi r24,lo8(126) |
2929 1544 0E94 0000 call LIBFC_HoTT_SetPos |
2930 1548 80E6 ldi r24,lo8(96) |
2931 154a 90E0 ldi r25,hi8(96) |
2932 154c 9F93 push r25 |
2933 154e 8F93 push r24 |
2934 1550 8091 0000 lds r24,Motor+47 |
2935 1554 9927 clr r25 |
2936 1556 87FD sbrc r24,7 |
2937 1558 9095 com r25 |
2938 155a 9F93 push r25 |
2939 155c 8F93 push r24 |
2940 155e 8091 0000 lds r24,Motor+39 |
2941 1562 9927 clr r25 |
2942 1564 87FD sbrc r24,7 |
2943 1566 9095 com r25 |
2944 1568 9F93 push r25 |
2945 156a 8F93 push r24 |
2946 156c 80E0 ldi r24,lo8(__c.57) |
2947 156e 90E0 ldi r25,hi8(__c.57) |
2948 1570 9F93 push r25 |
2949 1572 8F93 push r24 |
2950 1574 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar)) |
2951 1576 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar)) |
2952 1578 9F93 push r25 |
2953 157a 8F93 push r24 |
2954 157c 00C0 rjmp .L317 |
2955 .L208: |
2956 157e 9730 cpi r25,lo8(7) |
2957 1580 00F4 brsh .+2 |
2958 1582 00C0 rjmp .L114 |
2959 1584 8EE7 ldi r24,lo8(126) |
2960 1586 0E94 0000 call LIBFC_HoTT_SetPos |
2961 158a 80E6 ldi r24,lo8(96) |
2962 158c 90E0 ldi r25,hi8(96) |
2963 158e 9F93 push r25 |
2964 1590 8F93 push r24 |
2965 1592 8091 0000 lds r24,Motor+63 |
2966 1596 9927 clr r25 |
2967 1598 87FD sbrc r24,7 |
2968 159a 9095 com r25 |
2969 159c 9F93 push r25 |
2970 159e 8F93 push r24 |
2971 15a0 8091 0000 lds r24,Motor+55 |
2972 15a4 9927 clr r25 |
2973 15a6 87FD sbrc r24,7 |
2974 15a8 9095 com r25 |
2975 15aa 9F93 push r25 |
2976 15ac 8F93 push r24 |
2977 15ae 8091 0000 lds r24,Motor+47 |
2978 15b2 9927 clr r25 |
2979 15b4 87FD sbrc r24,7 |
2980 15b6 9095 com r25 |
2981 15b8 9F93 push r25 |
2982 15ba 8F93 push r24 |
2983 15bc 8091 0000 lds r24,Motor+39 |
2984 15c0 9927 clr r25 |
2985 15c2 87FD sbrc r24,7 |
2986 15c4 9095 com r25 |
2987 15c6 9F93 push r25 |
2988 15c8 8F93 push r24 |
2989 15ca 80E0 ldi r24,lo8(__c.58) |
2990 15cc 90E0 ldi r25,hi8(__c.58) |
2991 .L325: |
2992 15ce 9F93 push r25 |
2993 15d0 8F93 push r24 |
2994 15d2 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar)) |
2995 15d4 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar)) |
2996 15d6 9F93 push r25 |
2997 15d8 8F93 push r24 |
2998 15da 00C0 rjmp .L311 |
2999 .L211: |
3000 15dc 9091 0000 lds r25,NC_ErrorCode |
3001 15e0 9923 tst r25 |
3002 15e2 01F4 brne .+2 |
3003 15e4 00C0 rjmp .L212 |
3004 15e6 8091 0000 lds r24,HoTTBlink |
3005 15ea 8823 tst r24 |
3006 15ec 01F0 breq .L213 |
3007 15ee 9032 cpi r25,lo8(32) |
3008 15f0 00F4 brsh .L213 |
3009 15f2 87E0 ldi r24,lo8(7) |
3010 15f4 0E94 0000 call Hott_ClearLine |
3011 15f8 83E9 ldi r24,lo8(-109) |
3012 15fa 0E94 0000 call LIBFC_HoTT_SetPos |
3013 15fe 8091 0000 lds r24,NC_ErrorCode |
3014 1602 9927 clr r25 |
3015 1604 9F93 push r25 |
3016 1606 8F93 push r24 |
3017 1608 80E0 ldi r24,lo8(__c.59) |
3018 160a 90E0 ldi r25,hi8(__c.59) |
3019 .L315: |
3020 160c 9F93 push r25 |
3021 160e 8F93 push r24 |
3022 1610 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar_INV)) |
3023 1612 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar_INV)) |
3024 1614 9F93 push r25 |
3025 1616 8F93 push r24 |
3026 .L318: |
3027 1618 E091 0000 lds r30,_printf_P |
3028 161c F091 0000 lds r31,(_printf_P)+1 |
3029 .L319: |
3030 1620 0995 icall |
3031 1622 2DB7 in r18,__SP_L__ |
3032 1624 3EB7 in r19,__SP_H__ |
3033 1626 2A5F subi r18,lo8(-(6)) |
3034 1628 3F4F sbci r19,hi8(-(6)) |
3035 162a 00C0 rjmp .L303 |
3036 .L213: |
3037 162c 83E9 ldi r24,lo8(-109) |
3038 162e 0E94 0000 call LIBFC_HoTT_SetPos |
3039 1632 80E0 ldi r24,lo8(__c.60) |
3040 1634 90E0 ldi r25,hi8(__c.60) |
3041 .L310: |
3042 1636 9F93 push r25 |
3043 1638 8F93 push r24 |
3044 163a 00E0 ldi r16,lo8(pm(LIBFC_HoTT_Putchar)) |
3045 163c 10E0 ldi r17,hi8(pm(LIBFC_HoTT_Putchar)) |
3046 163e 1F93 push r17 |
3047 1640 0F93 push r16 |
3048 1642 E091 0000 lds r30,_printf_P |
3049 1646 F091 0000 lds r31,(_printf_P)+1 |
3050 164a 0995 icall |
3051 164c 1F92 push __zero_reg__ |
3052 164e 1F92 push __zero_reg__ |
3053 1650 9091 0000 lds r25,NC_ErrorCode |
3054 1654 81E1 ldi r24,lo8(17) |
3055 1656 989F mul r25,r24 |
3056 1658 C001 movw r24,r0 |
3057 165a 1124 clr r1 |
3058 165c 8050 subi r24,lo8(-(NC_ERROR_TEXT)) |
3059 165e 9040 sbci r25,hi8(-(NC_ERROR_TEXT)) |
3060 1660 9F93 push r25 |
3061 1662 8F93 push r24 |
3062 1664 1F93 push r17 |
3063 1666 0F93 push r16 |
3064 1668 E091 0000 lds r30,_printf_P |
3065 166c F091 0000 lds r31,(_printf_P)+1 |
3066 1670 0995 icall |
3067 .L312: |
3068 1672 8DB7 in r24,__SP_L__ |
3069 1674 9EB7 in r25,__SP_H__ |
3070 1676 0A96 adiw r24,10 |
3071 1678 00C0 rjmp .L306 |
3072 .L212: |
3073 167a 8091 0000 lds r24,FC_StatusFlags |
3074 167e B0E0 ldi r27,lo8(pm(LIBFC_HoTT_Putchar)) |
3075 1680 EB2E mov r14,r27 |
3076 1682 B0E0 ldi r27,hi8(pm(LIBFC_HoTT_Putchar)) |
3077 1684 FB2E mov r15,r27 |
3078 1686 85FF sbrs r24,5 |
3079 1688 00C0 rjmp .L216 |
3080 168a 84E9 ldi r24,lo8(-108) |
3081 168c 0E94 0000 call LIBFC_HoTT_SetPos |
3082 1690 80E0 ldi r24,lo8(__c.61) |
3083 1692 90E0 ldi r25,hi8(__c.61) |
3084 1694 00C0 rjmp .L329 |
3085 .L216: |
3086 1696 83E9 ldi r24,lo8(-109) |
3087 1698 0E94 0000 call LIBFC_HoTT_SetPos |
3088 169c 80E0 ldi r24,lo8(__c.62) |
3089 169e 90E0 ldi r25,hi8(__c.62) |
3090 .L329: |
3091 16a0 9F93 push r25 |
3092 16a2 8F93 push r24 |
3093 16a4 FF92 push r15 |
3094 16a6 EF92 push r14 |
3095 16a8 00C0 rjmp .L322 |
3096 .L226: |
3097 16aa 8091 0000 lds r24,HottKeyboard |
3098 16ae 8630 cpi r24,lo8(6) |
3099 16b0 01F4 brne .L227 |
3100 16b2 8091 0000 lds r24,show_current.2 |
3101 16b6 8823 tst r24 |
3102 16b8 01F0 breq .L228 |
3103 16ba 1092 0000 sts show_current.2,__zero_reg__ |
3104 16be 00C0 rjmp .L229 |
3105 .L228: |
3106 16c0 81E0 ldi r24,lo8(1) |
3107 16c2 8093 0000 sts show_current.2,r24 |
3108 .L229: |
3109 16c6 85E0 ldi r24,lo8(5) |
3110 16c8 0E94 0000 call Hott_ClearLine |
3111 16cc 86E0 ldi r24,lo8(6) |
3112 16ce 00C0 rjmp .L323 |
3113 .L227: |
3114 16d0 8830 cpi r24,lo8(8) |
3115 16d2 01F4 brne .L231 |
3116 16d4 0E94 0000 call LIBFC_HoTT_Clear |
3117 16d8 82E0 ldi r24,lo8(2) |
3118 .L330: |
3119 16da 8093 0000 sts page.1,r24 |
3120 16de 00C0 rjmp .L324 |
3121 .L231: |
3122 16e0 8130 cpi r24,lo8(1) |
3123 16e2 01F0 breq .+2 |
3124 16e4 00C0 rjmp .L292 |
3125 16e6 0E94 0000 call LIBFC_HoTT_Clear |
3126 16ea 1092 0000 sts page.1,__zero_reg__ |
3127 16ee 00C0 rjmp .L324 |
3128 .L172: |
3129 16f0 9230 cpi r25,lo8(2) |
3130 16f2 01F0 breq .+2 |
3131 16f4 00C0 rjmp .L237 |
3132 16f6 8091 0000 lds r24,line.0 |
3133 16fa 282F mov r18,r24 |
3134 16fc 3327 clr r19 |
3135 16fe 4427 clr r20 |
3136 1700 5527 clr r21 |
3137 1702 8F5F subi r24,lo8(-(1)) |
3138 1704 8093 0000 sts line.0,r24 |
3139 1708 F901 movw r30,r18 |
3140 170a 2131 cpi r18,17 |
3141 170c 3105 cpc r19,__zero_reg__ |
3142 170e 00F0 brlo .+2 |
3143 1710 00C0 rjmp .L294 |
3144 1712 E050 subi r30,lo8(-(pm(.L295))) |
3145 1714 F040 sbci r31,hi8(-(pm(.L295))) |
3146 1716 0C94 0000 jmp __tablejump2__ |
3147 .data |
3148 .section .progmem.gcc_sw_table, "a", @progbits |
3149 .p2align 1 |
3150 .L295: |
3151 0044 0000 .word pm(.L239) |
3152 0046 0000 .word pm(.L240) |
3153 0048 0000 .word pm(.L241) |
3154 004a 0000 .word pm(.L250) |
3155 004c 0000 .word pm(.L256) |
3156 004e 0000 .word pm(.L268) |
3157 0050 0000 .word pm(.L271) |
3158 0052 0000 .word pm(.L274) |
3159 0054 0000 .word pm(.L114) |
3160 0056 0000 .word pm(.L288) |
3161 0058 0000 .word pm(.L288) |
3162 005a 0000 .word pm(.L288) |
3163 005c 0000 .word pm(.L288) |
3164 005e 0000 .word pm(.L288) |
3165 0060 0000 .word pm(.L288) |
3166 0062 0000 .word pm(.L288) |
3167 0064 0000 .word pm(.L288) |
3168 .text |
3169 .L239: |
3170 171a 80E0 ldi r24,lo8(0) |
3171 171c 0E94 0000 call LIBFC_HoTT_SetPos |
3172 1720 80E0 ldi r24,lo8(EE_Parameter+112) |
3173 1722 90E0 ldi r25,hi8(EE_Parameter+112) |
3174 1724 9F93 push r25 |
3175 1726 8F93 push r24 |
3176 1728 0E94 0000 call GetActiveParamSet |
3177 172c 9927 clr r25 |
3178 172e 9F93 push r25 |
3179 1730 8F93 push r24 |
3180 1732 80E0 ldi r24,lo8(__c.63) |
3181 1734 90E0 ldi r25,hi8(__c.63) |
3182 .L313: |
3183 1736 9F93 push r25 |
3184 1738 8F93 push r24 |
3185 173a 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar_INV)) |
3186 173c 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar_INV)) |
3187 173e 9F93 push r25 |
3188 1740 8F93 push r24 |
3189 .L320: |
3190 1742 E091 0000 lds r30,_printf_P |
3191 1746 F091 0000 lds r31,(_printf_P)+1 |
3192 174a 0995 icall |
3193 174c 2DB7 in r18,__SP_L__ |
3194 174e 3EB7 in r19,__SP_H__ |
3195 1750 285F subi r18,lo8(-(8)) |
3196 1752 3F4F sbci r19,hi8(-(8)) |
3197 1754 00C0 rjmp .L303 |
3198 .L240: |
3199 1756 85E1 ldi r24,lo8(21) |
3200 1758 0E94 0000 call LIBFC_HoTT_SetPos |
3201 175c 80E0 ldi r24,lo8(Mixer+1) |
3202 175e 90E0 ldi r25,hi8(Mixer+1) |
3203 1760 9F93 push r25 |
3204 1762 8F93 push r24 |
3205 1764 8091 0000 lds r24,BattLowVoltageWarning |
3206 1768 6AE0 ldi r22,lo8(10) |
3207 176a 0E94 0000 call __udivmodqi4 |
3208 176e 892F mov r24,r25 |
3209 1770 9927 clr r25 |
3210 1772 9F93 push r25 |
3211 1774 8F93 push r24 |
3212 1776 8091 0000 lds r24,BattLowVoltageWarning |
3213 177a 0E94 0000 call __udivmodqi4 |
3214 177e 9927 clr r25 |
3215 1780 9F93 push r25 |
3216 1782 8F93 push r24 |
3217 1784 80E0 ldi r24,lo8(__c.64) |
3218 1786 90E0 ldi r25,hi8(__c.64) |
3219 1788 9F93 push r25 |
3220 178a 8F93 push r24 |
3221 178c 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar)) |
3222 178e 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar)) |
3223 1790 9F93 push r25 |
3224 1792 8F93 push r24 |
3225 1794 E091 0000 lds r30,_printf_P |
3226 1798 F091 0000 lds r31,(_printf_P)+1 |
3227 179c 0995 icall |
3228 179e 00C0 rjmp .L312 |
3229 .L241: |
3230 17a0 8AE2 ldi r24,lo8(42) |
3231 17a2 0E94 0000 call LIBFC_HoTT_SetPos |
3232 17a6 80E0 ldi r24,lo8(__c.65) |
3233 17a8 90E0 ldi r25,hi8(__c.65) |
3234 17aa 9F93 push r25 |
3235 17ac 8F93 push r24 |
3236 17ae C0E0 ldi r28,lo8(pm(LIBFC_HoTT_Putchar)) |
3237 17b0 D0E0 ldi r29,hi8(pm(LIBFC_HoTT_Putchar)) |
3238 17b2 DF93 push r29 |
3239 17b4 CF93 push r28 |
3240 17b6 E091 0000 lds r30,_printf_P |
3241 17ba F091 0000 lds r31,(_printf_P)+1 |
3242 17be 0995 icall |
3243 17c0 8091 0000 lds r24,Parameter_GlobalConfig |
3244 17c4 0F90 pop __tmp_reg__ |
3245 17c6 0F90 pop __tmp_reg__ |
3246 17c8 0F90 pop __tmp_reg__ |
3247 17ca 0F90 pop __tmp_reg__ |
3248 17cc 80FF sbrs r24,0 |
3249 17ce 00C0 rjmp .L242 |
3250 17d0 8091 0000 lds r24,EE_Parameter+13 |
3251 17d4 9091 0000 lds r25,Parameter_HoehenSchalter |
3252 17d8 81FD sbrc r24,1 |
3253 17da 00C0 rjmp .L243 |
3254 17dc 892F mov r24,r25 |
3255 17de 9927 clr r25 |
3256 17e0 9F93 push r25 |
3257 17e2 8F93 push r24 |
3258 17e4 80E0 ldi r24,lo8(__c.66) |
3259 17e6 90E0 ldi r25,hi8(__c.66) |
3260 17e8 9F93 push r25 |
3261 17ea 8F93 push r24 |
3262 17ec DF93 push r29 |
3263 17ee CF93 push r28 |
3264 17f0 00C0 rjmp .L318 |
3265 .L243: |
3266 17f2 E091 0000 lds r30,_printf_P |
3267 17f6 F091 0000 lds r31,(_printf_P)+1 |
3268 17fa 9333 cpi r25,lo8(51) |
3269 17fc 00F0 brlo .L245 |
3270 17fe 80E0 ldi r24,lo8(__c.67) |
3271 1800 90E0 ldi r25,hi8(__c.67) |
3272 1802 00C0 rjmp .L299 |
3273 .L245: |
3274 1804 80E0 ldi r24,lo8(__c.68) |
3275 1806 90E0 ldi r25,hi8(__c.68) |
3276 .L299: |
3277 1808 9F93 push r25 |
3278 180a 8F93 push r24 |
3279 180c DF93 push r29 |
3280 180e CF93 push r28 |
3281 1810 0995 icall |
3282 1812 0F90 pop __tmp_reg__ |
3283 1814 0F90 pop __tmp_reg__ |
3284 1816 0F90 pop __tmp_reg__ |
3285 1818 0F90 pop __tmp_reg__ |
3286 181a 8091 0000 lds r24,Parameter_ExtraConfig |
3287 181e E091 0000 lds r30,_printf_P |
3288 1822 F091 0000 lds r31,(_printf_P)+1 |
3289 1826 9091 0000 lds r25,Parameter_HoehenSchalter |
3290 182a 80FF sbrs r24,0 |
3291 182c 00C0 rjmp .L247 |
3292 182e 892F mov r24,r25 |
3293 1830 9927 clr r25 |
3294 1832 9F93 push r25 |
3295 1834 8F93 push r24 |
3296 1836 80E0 ldi r24,lo8(__c.69) |
3297 1838 90E0 ldi r25,hi8(__c.69) |
3298 183a 9F93 push r25 |
3299 183c 8F93 push r24 |
3300 183e DF93 push r29 |
3301 1840 CF93 push r28 |
3302 1842 00C0 rjmp .L305 |
3303 .L247: |
3304 1844 892F mov r24,r25 |
3305 1846 9927 clr r25 |
3306 1848 9F93 push r25 |
3307 184a 8F93 push r24 |
3308 184c 80E0 ldi r24,lo8(__c.70) |
3309 184e 90E0 ldi r25,hi8(__c.70) |
3310 1850 00C0 rjmp .L326 |
3311 .L242: |
3312 1852 80E0 ldi r24,lo8(__c.71) |
3313 1854 90E0 ldi r25,hi8(__c.71) |
3314 1856 00C0 rjmp .L328 |
3315 .L250: |
3316 1858 8FE3 ldi r24,lo8(63) |
3317 185a 0E94 0000 call LIBFC_HoTT_SetPos |
3318 185e 80E0 ldi r24,lo8(__c.72) |
3319 1860 90E0 ldi r25,hi8(__c.72) |
3320 1862 9F93 push r25 |
3321 1864 8F93 push r24 |
3322 1866 C0E0 ldi r28,lo8(pm(LIBFC_HoTT_Putchar)) |
3323 1868 D0E0 ldi r29,hi8(pm(LIBFC_HoTT_Putchar)) |
3324 186a DF93 push r29 |
3325 186c CF93 push r28 |
3326 186e E091 0000 lds r30,_printf_P |
3327 1872 F091 0000 lds r31,(_printf_P)+1 |
3328 1876 0995 icall |
3329 1878 0F90 pop __tmp_reg__ |
3330 187a 0F90 pop __tmp_reg__ |
3331 187c 0F90 pop __tmp_reg__ |
3332 187e 0F90 pop __tmp_reg__ |
3333 1880 8091 0000 lds r24,EE_Parameter+99 |
3334 1884 8823 tst r24 |
3335 1886 01F4 brne .L251 |
3336 1888 80E0 ldi r24,lo8(__c.73) |
3337 188a 90E0 ldi r25,hi8(__c.73) |
3338 188c 00C0 rjmp .L328 |
3339 .L251: |
3340 188e 8091 0000 lds r24,CareFree |
3341 1892 E091 0000 lds r30,_printf_P |
3342 1896 F091 0000 lds r31,(_printf_P)+1 |
3343 189a 8823 tst r24 |
3344 189c 01F0 breq .L253 |
3345 189e 80E0 ldi r24,lo8(__c.74) |
3346 18a0 90E0 ldi r25,hi8(__c.74) |
3347 18a2 00C0 rjmp .L300 |
3348 .L253: |
3349 18a4 80E0 ldi r24,lo8(__c.75) |
3350 18a6 90E0 ldi r25,hi8(__c.75) |
3351 .L300: |
3352 18a8 9F93 push r25 |
3353 18aa 8F93 push r24 |
3354 18ac DF93 push r29 |
3355 18ae CF93 push r28 |
3356 18b0 0995 icall |
3357 18b2 0F90 pop __tmp_reg__ |
3358 18b4 0F90 pop __tmp_reg__ |
3359 18b6 0F90 pop __tmp_reg__ |
3360 18b8 0F90 pop __tmp_reg__ |
3361 18ba 8091 0000 lds r24,EE_Parameter+110 |
3362 18be 86FF sbrs r24,6 |
3363 18c0 00C0 rjmp .L114 |
3364 18c2 80E0 ldi r24,lo8(__c.76) |
3365 18c4 90E0 ldi r25,hi8(__c.76) |
3366 .L328: |
3367 18c6 9F93 push r25 |
3368 18c8 8F93 push r24 |
3369 18ca DF93 push r29 |
3370 18cc CF93 push r28 |
3371 18ce 00C0 rjmp .L322 |
3372 .L256: |
3373 18d0 84E5 ldi r24,lo8(84) |
3374 18d2 0E94 0000 call LIBFC_HoTT_SetPos |
3375 18d6 80E0 ldi r24,lo8(__c.77) |
3376 18d8 90E0 ldi r25,hi8(__c.77) |
3377 18da 9F93 push r25 |
3378 18dc 8F93 push r24 |
3379 18de C0E0 ldi r28,lo8(pm(LIBFC_HoTT_Putchar)) |
3380 18e0 D0E0 ldi r29,hi8(pm(LIBFC_HoTT_Putchar)) |
3381 18e2 DF93 push r29 |
3382 18e4 CF93 push r28 |
3383 18e6 E091 0000 lds r30,_printf_P |
3384 18ea F091 0000 lds r31,(_printf_P)+1 |
3385 18ee 0995 icall |
3386 18f0 8091 0000 lds r24,Parameter_GlobalConfig |
3387 18f4 0F90 pop __tmp_reg__ |
3388 18f6 0F90 pop __tmp_reg__ |
3389 18f8 0F90 pop __tmp_reg__ |
3390 18fa 0F90 pop __tmp_reg__ |
3391 18fc 85FD sbrc r24,5 |
3392 18fe 00C0 rjmp .L257 |
3393 1900 80E0 ldi r24,lo8(__c.78) |
3394 1902 90E0 ldi r25,hi8(__c.78) |
3395 1904 00C0 rjmp .L309 |
3396 .L257: |
3397 1906 8091 0000 lds r24,EE_Parameter+81 |
3398 190a 883F cpi r24,lo8(-8) |
3399 190c 00F4 brsh .L259 |
3400 190e E82F mov r30,r24 |
3401 1910 00C0 rjmp .L260 |
3402 .L259: |
3403 1912 EFEF ldi r30,lo8(255) |
3404 1914 F0E0 ldi r31,hi8(255) |
3405 1916 E81B sub r30,r24 |
3406 1918 F109 sbc r31,__zero_reg__ |
3407 191a E050 subi r30,lo8(-(Poti)) |
3408 191c F040 sbci r31,hi8(-(Poti)) |
3409 191e E081 ld r30,Z |
3410 .L260: |
3411 1920 E233 cpi r30,lo8(50) |
3412 1922 00F4 brsh .L261 |
3413 1924 80E0 ldi r24,lo8(__c.79) |
3414 1926 90E0 ldi r25,hi8(__c.79) |
3415 .L309: |
3416 1928 9F93 push r25 |
3417 192a 8F93 push r24 |
3418 192c DF93 push r29 |
3419 192e CF93 push r28 |
3420 1930 E091 0000 lds r30,_printf_P |
3421 1934 F091 0000 lds r31,(_printf_P)+1 |
3422 1938 00C0 rjmp .L302 |
3423 .L261: |
3424 193a E43B cpi r30,lo8(-76) |
3425 193c 00F0 brlo .L263 |
3426 193e 80E0 ldi r24,lo8(__c.80) |
3427 1940 90E0 ldi r25,hi8(__c.80) |
3428 1942 00C0 rjmp .L309 |
3429 .L263: |
3430 1944 8091 0000 lds r24,EE_Parameter+110 |
3431 1948 E091 0000 lds r30,_printf_P |
3432 194c F091 0000 lds r31,(_printf_P)+1 |
3433 1950 85FF sbrs r24,5 |
3434 1952 00C0 rjmp .L265 |
3435 1954 80E0 ldi r24,lo8(__c.81) |
3436 1956 90E0 ldi r25,hi8(__c.81) |
3437 1958 00C0 rjmp .L301 |
3438 .L265: |
3439 195a 80E0 ldi r24,lo8(__c.82) |
3440 195c 90E0 ldi r25,hi8(__c.82) |
3441 .L301: |
3442 195e 9F93 push r25 |
3443 1960 8F93 push r24 |
3444 1962 DF93 push r29 |
3445 1964 CF93 push r28 |
3446 .L302: |
3447 1966 0995 icall |
3448 1968 0F90 pop __tmp_reg__ |
3449 196a 0F90 pop __tmp_reg__ |
3450 196c 0F90 pop __tmp_reg__ |
3451 196e 0F90 pop __tmp_reg__ |
3452 1970 8091 0000 lds r24,EE_Parameter+103 |
3453 1974 8823 tst r24 |
3454 1976 01F4 brne .+2 |
3455 1978 00C0 rjmp .L114 |
3456 197a 8EE5 ldi r24,lo8(94) |
3457 197c 0E94 0000 call LIBFC_HoTT_SetPos |
3458 1980 8091 0000 lds r24,EE_Parameter+103 |
3459 1984 9927 clr r25 |
3460 1986 9F93 push r25 |
3461 1988 8F93 push r24 |
3462 198a 80E0 ldi r24,lo8(__c.83) |
3463 198c 90E0 ldi r25,hi8(__c.83) |
3464 .L331: |
3465 198e 9F93 push r25 |
3466 1990 8F93 push r24 |
3467 1992 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar)) |
3468 1994 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar)) |
3469 1996 9F93 push r25 |
3470 1998 8F93 push r24 |
3471 .L327: |
3472 199a E091 0000 lds r30,_printf_P |
3473 199e F091 0000 lds r31,(_printf_P)+1 |
3474 .L305: |
3475 19a2 0995 icall |
3476 19a4 8DB7 in r24,__SP_L__ |
3477 19a6 9EB7 in r25,__SP_H__ |
3478 19a8 0696 adiw r24,6 |
3479 .L306: |
3480 19aa 8DBF out __SP_L__,r24 |
3481 19ac 00C0 rjmp .L114 |
3482 .L268: |
3483 19ae 89E6 ldi r24,lo8(105) |
3484 19b0 0E94 0000 call LIBFC_HoTT_SetPos |
3485 19b4 80E0 ldi r24,lo8(__c.84) |
3486 19b6 90E0 ldi r25,hi8(__c.84) |
3487 19b8 9F93 push r25 |
3488 19ba 8F93 push r24 |
3489 19bc C0E0 ldi r28,lo8(pm(LIBFC_HoTT_Putchar)) |
3490 19be D0E0 ldi r29,hi8(pm(LIBFC_HoTT_Putchar)) |
3491 19c0 DF93 push r29 |
3492 19c2 CF93 push r28 |
3493 19c4 E091 0000 lds r30,_printf_P |
3494 19c8 F091 0000 lds r31,(_printf_P)+1 |
3495 19cc 0995 icall |
3496 19ce 0F90 pop __tmp_reg__ |
3497 19d0 0F90 pop __tmp_reg__ |
3498 19d2 0F90 pop __tmp_reg__ |
3499 19d4 0F90 pop __tmp_reg__ |
3500 19d6 8091 0000 lds r24,EE_Parameter+102 |
3501 19da E091 0000 lds r30,_printf_P |
3502 19de F091 0000 lds r31,(_printf_P)+1 |
3503 19e2 8823 tst r24 |
3504 19e4 01F0 breq .L269 |
3505 19e6 9927 clr r25 |
3506 19e8 9F93 push r25 |
3507 19ea 8F93 push r24 |
3508 19ec 80E0 ldi r24,lo8(__c.85) |
3509 19ee 90E0 ldi r25,hi8(__c.85) |
3510 .L326: |
3511 19f0 9F93 push r25 |
3512 19f2 8F93 push r24 |
3513 19f4 DF93 push r29 |
3514 19f6 CF93 push r28 |
3515 19f8 00C0 rjmp .L319 |
3516 .L269: |
3517 19fa 80E0 ldi r24,lo8(__c.86) |
3518 19fc 90E0 ldi r25,hi8(__c.86) |
3519 19fe 9F93 push r25 |
3520 1a00 8F93 push r24 |
3521 1a02 DF93 push r29 |
3522 1a04 CF93 push r28 |
3523 1a06 00C0 rjmp .L304 |
3524 .L271: |
3525 1a08 8091 0000 lds r24,show_poti.4 |
3526 1a0c A0E0 ldi r26,lo8(pm(LIBFC_HoTT_Putchar)) |
3527 1a0e EA2E mov r14,r26 |
3528 1a10 A0E0 ldi r26,hi8(pm(LIBFC_HoTT_Putchar)) |
3529 1a12 FA2E mov r15,r26 |
3530 1a14 8823 tst r24 |
3531 1a16 01F0 breq .+2 |
3532 1a18 00C0 rjmp .L272 |
3533 1a1a 8EE7 ldi r24,lo8(126) |
3534 1a1c 0E94 0000 call LIBFC_HoTT_SetPos |
3535 1a20 8091 0000 lds r24,Parameter_ServoNickControl |
3536 1a24 9927 clr r25 |
3537 1a26 9F93 push r25 |
3538 1a28 8F93 push r24 |
3539 1a2a 8091 0000 lds r24,EE_Parameter+2 |
3540 1a2e E82F mov r30,r24 |
3541 1a30 FF27 clr r31 |
3542 1a32 EE0F add r30,r30 |
3543 1a34 FF1F adc r31,r31 |
3544 1a36 E050 subi r30,lo8(-(PPM_in)) |
3545 1a38 F040 sbci r31,hi8(-(PPM_in)) |
3546 1a3a 8081 ld r24,Z |
3547 1a3c 9181 ldd r25,Z+1 |
3548 1a3e 9F93 push r25 |
3549 1a40 8F93 push r24 |
3550 1a42 8091 0000 lds r24,EE_Parameter+1 |
3551 1a46 E82F mov r30,r24 |
3552 1a48 FF27 clr r31 |
3553 1a4a EE0F add r30,r30 |
3554 1a4c FF1F adc r31,r31 |
3555 1a4e E050 subi r30,lo8(-(PPM_in)) |
3556 1a50 F040 sbci r31,hi8(-(PPM_in)) |
3557 1a52 8081 ld r24,Z |
3558 1a54 9181 ldd r25,Z+1 |
3559 1a56 9F93 push r25 |
3560 1a58 8F93 push r24 |
3561 1a5a 80E0 ldi r24,lo8(__c.87) |
3562 1a5c 90E0 ldi r25,hi8(__c.87) |
3563 1a5e 9F93 push r25 |
3564 1a60 8F93 push r24 |
3565 1a62 FF92 push r15 |
3566 1a64 EF92 push r14 |
3567 1a66 E091 0000 lds r30,_printf_P |
3568 1a6a F091 0000 lds r31,(_printf_P)+1 |
3569 1a6e 0995 icall |
3570 1a70 83E9 ldi r24,lo8(-109) |
3571 1a72 0E94 0000 call LIBFC_HoTT_SetPos |
3572 1a76 8DB7 in r24,__SP_L__ |
3573 1a78 9EB7 in r25,__SP_H__ |
3574 1a7a 0A96 adiw r24,10 |
3575 1a7c 8DBF out __SP_L__,r24 |
3576 1a7e 8091 0000 lds r24,EE_Parameter+4 |
3577 1a82 E82F mov r30,r24 |
3578 1a84 FF27 clr r31 |
3579 1a86 EE0F add r30,r30 |
3580 1a88 FF1F adc r31,r31 |
3581 1a8a E050 subi r30,lo8(-(PPM_in)) |
3582 1a8c F040 sbci r31,hi8(-(PPM_in)) |
3583 1a8e 8081 ld r24,Z |
3584 1a90 9181 ldd r25,Z+1 |
3585 1a92 9F93 push r25 |
3586 1a94 8F93 push r24 |
3587 1a96 8091 0000 lds r24,EE_Parameter+3 |
3588 1a9a E82F mov r30,r24 |
3589 1a9c FF27 clr r31 |
3590 1a9e EE0F add r30,r30 |
3591 1aa0 FF1F adc r31,r31 |
3592 1aa2 E050 subi r30,lo8(-(PPM_in)) |
3593 1aa4 F040 sbci r31,hi8(-(PPM_in)) |
3594 1aa6 8081 ld r24,Z |
3595 1aa8 9181 ldd r25,Z+1 |
3596 1aaa 8158 subi r24,lo8(-(127)) |
3597 1aac 9F4F sbci r25,hi8(-(127)) |
3598 1aae 9F93 push r25 |
3599 1ab0 8F93 push r24 |
3600 1ab2 80E0 ldi r24,lo8(__c.88) |
3601 1ab4 90E0 ldi r25,hi8(__c.88) |
3602 1ab6 9F93 push r25 |
3603 1ab8 8F93 push r24 |
3604 1aba FF92 push r15 |
3605 1abc EF92 push r14 |
3606 1abe 00C0 rjmp .L320 |
3607 .L272: |
3608 1ac0 8EE7 ldi r24,lo8(126) |
3609 1ac2 0E94 0000 call LIBFC_HoTT_SetPos |
3610 1ac6 8091 0000 lds r24,Poti+2 |
3611 1aca 9927 clr r25 |
3612 1acc 9F93 push r25 |
3613 1ace 8F93 push r24 |
3614 1ad0 8091 0000 lds r24,Poti+1 |
3615 1ad4 9927 clr r25 |
3616 1ad6 9F93 push r25 |
3617 1ad8 8F93 push r24 |
3618 1ada 8091 0000 lds r24,Poti |
3619 1ade 9927 clr r25 |
3620 1ae0 9F93 push r25 |
3621 1ae2 8F93 push r24 |
3622 1ae4 80E0 ldi r24,lo8(__c.89) |
3623 1ae6 90E0 ldi r25,hi8(__c.89) |
3624 1ae8 9F93 push r25 |
3625 1aea 8F93 push r24 |
3626 1aec FF92 push r15 |
3627 1aee EF92 push r14 |
3628 1af0 E091 0000 lds r30,_printf_P |
3629 1af4 F091 0000 lds r31,(_printf_P)+1 |
3630 1af8 0995 icall |
3631 1afa 83E9 ldi r24,lo8(-109) |
3632 1afc 0E94 0000 call LIBFC_HoTT_SetPos |
3633 1b00 8DB7 in r24,__SP_L__ |
3634 1b02 9EB7 in r25,__SP_H__ |
3635 1b04 0A96 adiw r24,10 |
3636 1b06 8DBF out __SP_L__,r24 |
3637 1b08 8091 0000 lds r24,Poti+5 |
3638 1b0c 9927 clr r25 |
3639 1b0e 9F93 push r25 |
3640 1b10 8F93 push r24 |
3641 1b12 8091 0000 lds r24,Poti+4 |
3642 1b16 9927 clr r25 |
3643 1b18 9F93 push r25 |
3644 1b1a 8F93 push r24 |
3645 1b1c 8091 0000 lds r24,Poti+3 |
3646 1b20 9927 clr r25 |
3647 1b22 9F93 push r25 |
3648 1b24 8F93 push r24 |
3649 1b26 80E0 ldi r24,lo8(__c.90) |
3650 1b28 90E0 ldi r25,hi8(__c.90) |
3651 .L314: |
3652 1b2a 9F93 push r25 |
3653 1b2c 8F93 push r24 |
3654 1b2e FF92 push r15 |
3655 1b30 EF92 push r14 |
3656 .L317: |
3657 1b32 E091 0000 lds r30,_printf_P |
3658 1b36 F091 0000 lds r31,(_printf_P)+1 |
3659 1b3a 0995 icall |
3660 1b3c 2DB7 in r18,__SP_L__ |
3661 1b3e 3EB7 in r19,__SP_H__ |
3662 1b40 265F subi r18,lo8(-(10)) |
3663 1b42 3F4F sbci r19,hi8(-(10)) |
3664 .L303: |
3665 1b44 2DBF out __SP_L__,r18 |
3666 1b46 00C0 rjmp .L114 |
3667 .L274: |
3668 1b48 8091 0000 lds r24,HoTTBlink |
3669 1b4c 8823 tst r24 |
3670 1b4e 01F4 brne .+2 |
3671 1b50 00C0 rjmp .L114 |
3672 1b52 8EE7 ldi r24,lo8(126) |
3673 1b54 0E94 0000 call LIBFC_HoTT_SetPos |
3674 1b58 8091 0000 lds r24,Parameter_GlobalConfig |
3675 1b5c 86FD sbrc r24,6 |
3676 1b5e 00C0 rjmp .L276 |
3677 1b60 80E0 ldi r24,lo8(__c.91) |
3678 1b62 90E0 ldi r25,hi8(__c.91) |
3679 1b64 9F93 push r25 |
3680 1b66 8F93 push r24 |
3681 1b68 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar_BLINK)) |
3682 1b6a 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar_BLINK)) |
3683 1b6c 9F93 push r25 |
3684 1b6e 8F93 push r24 |
3685 1b70 E091 0000 lds r30,_printf_P |
3686 1b74 F091 0000 lds r31,(_printf_P)+1 |
3687 1b78 0995 icall |
3688 1b7a 0F90 pop __tmp_reg__ |
3689 1b7c 0F90 pop __tmp_reg__ |
3690 1b7e 0F90 pop __tmp_reg__ |
3691 1b80 0F90 pop __tmp_reg__ |
3692 .L276: |
3693 1b82 8091 0000 lds r24,EE_Parameter+108 |
3694 1b86 9927 clr r25 |
3695 1b88 8F70 andi r24,lo8(15) |
3696 1b8a 9070 andi r25,hi8(15) |
3697 1b8c 892B or r24,r25 |
3698 1b8e 01F0 breq .L277 |
3699 1b90 80E0 ldi r24,lo8(__c.92) |
3700 1b92 90E0 ldi r25,hi8(__c.92) |
3701 1b94 9F93 push r25 |
3702 1b96 8F93 push r24 |
3703 1b98 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar_BLINK)) |
3704 1b9a 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar_BLINK)) |
3705 1b9c 9F93 push r25 |
3706 1b9e 8F93 push r24 |
3707 1ba0 E091 0000 lds r30,_printf_P |
3708 1ba4 F091 0000 lds r31,(_printf_P)+1 |
3709 1ba8 0995 icall |
3710 1baa 0F90 pop __tmp_reg__ |
3711 1bac 0F90 pop __tmp_reg__ |
3712 1bae 0F90 pop __tmp_reg__ |
3713 1bb0 0F90 pop __tmp_reg__ |
3714 .L277: |
3715 1bb2 8091 0000 lds r24,Parameter_GlobalConfig |
3716 1bb6 82FF sbrs r24,2 |
3717 1bb8 00C0 rjmp .L278 |
3718 1bba 80E0 ldi r24,lo8(__c.93) |
3719 1bbc 90E0 ldi r25,hi8(__c.93) |
3720 1bbe 9F93 push r25 |
3721 1bc0 8F93 push r24 |
3722 1bc2 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar_BLINK)) |
3723 1bc4 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar_BLINK)) |
3724 1bc6 9F93 push r25 |
3725 1bc8 8F93 push r24 |
3726 1bca E091 0000 lds r30,_printf_P |
3727 1bce F091 0000 lds r31,(_printf_P)+1 |
3728 1bd2 0995 icall |
3729 1bd4 0F90 pop __tmp_reg__ |
3730 1bd6 0F90 pop __tmp_reg__ |
3731 1bd8 0F90 pop __tmp_reg__ |
3732 1bda 0F90 pop __tmp_reg__ |
3733 .L278: |
3734 1bdc 8091 0000 lds r24,Parameter_GlobalConfig |
3735 1be0 83FD sbrc r24,3 |
3736 1be2 00C0 rjmp .L114 |
3737 1be4 80E0 ldi r24,lo8(__c.94) |
3738 1be6 90E0 ldi r25,hi8(__c.94) |
3739 .L332: |
3740 1be8 9F93 push r25 |
3741 1bea 8F93 push r24 |
3742 1bec 80E0 ldi r24,lo8(pm(LIBFC_HoTT_Putchar_BLINK)) |
3743 1bee 90E0 ldi r25,hi8(pm(LIBFC_HoTT_Putchar_BLINK)) |
3744 .L321: |
3745 1bf0 9F93 push r25 |
3746 1bf2 8F93 push r24 |
3747 .L322: |
3748 1bf4 E091 0000 lds r30,_printf_P |
3749 1bf8 F091 0000 lds r31,(_printf_P)+1 |
3750 .L304: |
3751 1bfc 0995 icall |
3752 1bfe 0F90 pop __tmp_reg__ |
3753 1c00 0F90 pop __tmp_reg__ |
3754 1c02 0F90 pop __tmp_reg__ |
3755 1c04 0F90 pop __tmp_reg__ |
3756 1c06 00C0 rjmp .L114 |
3757 .L288: |
3758 1c08 0091 0000 lds r16,HottKeyboard |
3759 1c0c 0630 cpi r16,lo8(6) |
3760 1c0e 01F4 brne .L289 |
3761 1c10 8091 0000 lds r24,show_poti.4 |
3762 1c14 8823 tst r24 |
3763 1c16 01F0 breq .L290 |
3764 1c18 1092 0000 sts show_poti.4,__zero_reg__ |
3765 1c1c 00C0 rjmp .L291 |
3766 .L290: |
3767 1c1e 81E0 ldi r24,lo8(1) |
3768 1c20 8093 0000 sts show_poti.4,r24 |
3769 .L291: |
3770 1c24 86E0 ldi r24,lo8(6) |
3771 1c26 0E94 0000 call Hott_ClearLine |
3772 1c2a 87E0 ldi r24,lo8(7) |
3773 .L323: |
3774 1c2c 0E94 0000 call Hott_ClearLine |
3775 1c30 00C0 rjmp .L292 |
3776 .L289: |
3777 1c32 0130 cpi r16,lo8(1) |
3778 1c34 01F4 brne .L292 |
3779 1c36 0E94 0000 call LIBFC_HoTT_Clear |
3780 1c3a 0093 0000 sts page.1,r16 |
3781 .L324: |
3782 1c3e 1092 0000 sts line.0,__zero_reg__ |
3783 .L292: |
3784 1c42 1092 0000 sts HottKeyboard,__zero_reg__ |
3785 1c46 00C0 rjmp .L114 |
3786 .L294: |
3787 1c48 1092 0000 sts line.0,__zero_reg__ |
3788 1c4c 00C0 rjmp .L114 |
3789 .L237: |
3790 1c4e 1092 0000 sts page.1,__zero_reg__ |
3791 .L114: |
3792 /* epilogue: frame size=0 */ |
3793 1c52 E6E0 ldi r30,6 |
3794 1c54 CDB7 in r28,__SP_L__ |
3795 1c56 DEB7 in r29,__SP_H__ |
3796 1c58 0C94 0000 jmp __epilogue_restores__+24 |
3797 /* epilogue end (size=5) */ |
3798 /* function HoTT_Menu size 2582 (2571) */ |
3800 .comm GPSPacket,44,1 |
3801 .comm VarioPacket,44,1 |
3802 .comm ASCIIPacket,172,1 |
3803 .comm ElectricAirPacket,44,1 |
3804 .comm HoTTGeneral,44,1 |
3805 /* File "hottmenu.c": code 3700 = 0x0e74 (3675), prologues 11, epilogues 14 */ |
DEFINED SYMBOLS |
*ABS*:00000000 hottmenu.c |
C:\Temp/ccbFCWV3.s:3 *ABS*:0000003f __SREG__ |
C:\Temp/ccbFCWV3.s:4 *ABS*:0000003e __SP_H__ |
C:\Temp/ccbFCWV3.s:5 *ABS*:0000003d __SP_L__ |
C:\Temp/ccbFCWV3.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Temp/ccbFCWV3.s:7 *ABS*:00000001 __zero_reg__ |
C:\Temp/ccbFCWV3.s:15 .bss:00000000 HottestBl |
C:\Temp/ccbFCWV3.s:21 .bss:00000001 MinBlTempertaure |
C:\Temp/ccbFCWV3.s:27 .bss:00000002 MaxBlTempertaure |
C:\Temp/ccbFCWV3.s:33 .progmem.data:00000000 HOTT_ERROR |
C:\Temp/ccbFCWV3.s:100 .progmem.data:00000040 NC_ERROR_TEXT |
C:\Temp/ccbFCWV3.s:136 .progmem.data:00000260 UNDERVOLTAGE |
C:\Temp/ccbFCWV3.s:141 .progmem.data:00000276 MIKROKOPTER |
C:\Temp/ccbFCWV3.s:148 .bss:00000003 HoTTVarioMeter |
C:\Temp/ccbFCWV3.s:154 .bss:00000005 ToNC_SpeakHoTT |
C:\Temp/ccbFCWV3.s:160 .data:00000000 SpeakHoTT |
C:\Temp/ccbFCWV3.s:167 .bss:00000006 NaviData_TargetDistance |
C:\Temp/ccbFCWV3.s:173 .bss:00000008 NaviData_TargetHoldTime |
C:\Temp/ccbFCWV3.s:179 .bss:00000009 NaviData_WaypointNumber |
C:\Temp/ccbFCWV3.s:185 .bss:0000000a NaviData_WaypointIndex |
.bss:0000000b search.98 |
C:\Temp/ccbFCWV3.s:187 .bss:0000000c tmp_max.99 |
C:\Temp/ccbFCWV3.s:188 .bss:0000000d tmp_min.100 |
C:\Temp/ccbFCWV3.s:189 .bss:0000000e who.101 |
C:\Temp/ccbFCWV3.s:194 .text:00000000 GetHottestBl |
C:\Temp/ccbFCWV3.s:262 .progmem.data:0000028c __c.97 |
C:\Temp/ccbFCWV3.s:267 .text:0000008c Hott_ClearLine |
C:\Temp/ccbFCWV3.s:190 .bss:0000000f old_status.95 |
C:\Temp/ccbFCWV3.s:295 .bss:00000010 repeat.96 |
C:\Temp/ccbFCWV3.s:299 .text:000000bc HoTT_Waring |
C:\Temp/ccbFCWV3.s:396 .text:0000016e NC_Fills_HoTT_Telemety |
*COM*:0000002c VarioPacket |
*COM*:0000002c GPSPacket |
*COM*:0000002c ElectricAirPacket |
*COM*:0000002c HoTTGeneral |
C:\Temp/ccbFCWV3.s:469 .text:000001e0 BuildHoTT_Vario |
C:\Temp/ccbFCWV3.s:577 .text:000002aa HoTT_Telemety |
C:\Temp/ccbFCWV3.s:296 .bss:00000012 line.0 |
C:\Temp/ccbFCWV3.s:1157 .bss:00000013 page.1 |
C:\Temp/ccbFCWV3.s:1158 .bss:00000014 show_current.2 |
C:\Temp/ccbFCWV3.s:1159 .bss:00000015 show_mag.3 |
C:\Temp/ccbFCWV3.s:1160 .bss:00000016 show_poti.4 |
C:\Temp/ccbFCWV3.s:1165 .progmem.data:000002a2 __c.5 |
C:\Temp/ccbFCWV3.s:1169 .progmem.data:000002af __c.6 |
C:\Temp/ccbFCWV3.s:1173 .progmem.data:000002bc __c.7 |
C:\Temp/ccbFCWV3.s:1177 .progmem.data:000002c8 __c.8 |
C:\Temp/ccbFCWV3.s:1181 .progmem.data:000002d3 __c.9 |
C:\Temp/ccbFCWV3.s:1185 .progmem.data:000002dd __c.10 |
C:\Temp/ccbFCWV3.s:1189 .progmem.data:000002ea __c.11 |
C:\Temp/ccbFCWV3.s:1193 .progmem.data:000002f7 __c.12 |
C:\Temp/ccbFCWV3.s:1197 .progmem.data:00000302 __c.13 |
C:\Temp/ccbFCWV3.s:1201 .progmem.data:00000304 __c.14 |
C:\Temp/ccbFCWV3.s:1205 .progmem.data:00000306 __c.15 |
C:\Temp/ccbFCWV3.s:1209 .progmem.data:0000030e __c.16 |
C:\Temp/ccbFCWV3.s:1213 .progmem.data:00000316 __c.17 |
C:\Temp/ccbFCWV3.s:1217 .progmem.data:00000322 __c.18 |
C:\Temp/ccbFCWV3.s:1221 .progmem.data:00000324 __c.19 |
C:\Temp/ccbFCWV3.s:1225 .progmem.data:00000326 __c.20 |
C:\Temp/ccbFCWV3.s:1229 .progmem.data:00000328 __c.21 |
C:\Temp/ccbFCWV3.s:1233 .progmem.data:0000033e __c.22 |
C:\Temp/ccbFCWV3.s:1237 .progmem.data:00000354 __c.23 |
C:\Temp/ccbFCWV3.s:1241 .progmem.data:00000356 __c.24 |
C:\Temp/ccbFCWV3.s:1245 .progmem.data:0000035f __c.25 |
C:\Temp/ccbFCWV3.s:1249 .progmem.data:00000369 __c.26 |
C:\Temp/ccbFCWV3.s:1253 .progmem.data:0000036c __c.27 |
C:\Temp/ccbFCWV3.s:1257 .progmem.data:0000036f __c.28 |
C:\Temp/ccbFCWV3.s:1261 .progmem.data:00000372 __c.29 |
C:\Temp/ccbFCWV3.s:1265 .progmem.data:0000037d __c.30 |
C:\Temp/ccbFCWV3.s:1269 .progmem.data:00000389 __c.31 |
C:\Temp/ccbFCWV3.s:1273 .progmem.data:00000399 __c.32 |
C:\Temp/ccbFCWV3.s:1277 .progmem.data:000003b2 __c.33 |
C:\Temp/ccbFCWV3.s:1281 .progmem.data:000003bd __c.34 |
C:\Temp/ccbFCWV3.s:1285 .progmem.data:000003c3 __c.35 |
C:\Temp/ccbFCWV3.s:1289 .progmem.data:000003d6 __c.36 |
C:\Temp/ccbFCWV3.s:1293 .progmem.data:000003ec __c.37 |
C:\Temp/ccbFCWV3.s:1297 .progmem.data:00000407 __c.38 |
C:\Temp/ccbFCWV3.s:1301 .progmem.data:00000422 __c.39 |
C:\Temp/ccbFCWV3.s:1305 .progmem.data:0000042c __c.40 |
C:\Temp/ccbFCWV3.s:1309 .progmem.data:00000435 __c.41 |
C:\Temp/ccbFCWV3.s:1313 .progmem.data:0000043e __c.42 |
C:\Temp/ccbFCWV3.s:1317 .progmem.data:00000448 __c.43 |
C:\Temp/ccbFCWV3.s:1321 .progmem.data:0000044b __c.44 |
C:\Temp/ccbFCWV3.s:1325 .progmem.data:00000462 __c.45 |
C:\Temp/ccbFCWV3.s:1329 .progmem.data:00000476 __c.46 |
C:\Temp/ccbFCWV3.s:1333 .progmem.data:00000479 __c.47 |
C:\Temp/ccbFCWV3.s:1337 .progmem.data:0000047c __c.48 |
C:\Temp/ccbFCWV3.s:1341 .progmem.data:0000048f __c.49 |
C:\Temp/ccbFCWV3.s:1345 .progmem.data:00000495 __c.50 |
C:\Temp/ccbFCWV3.s:1349 .progmem.data:0000049b __c.51 |
C:\Temp/ccbFCWV3.s:1353 .progmem.data:000004a1 __c.52 |
C:\Temp/ccbFCWV3.s:1357 .progmem.data:000004b7 __c.53 |
C:\Temp/ccbFCWV3.s:1361 .progmem.data:000004d4 __c.54 |
C:\Temp/ccbFCWV3.s:1365 .progmem.data:000004e7 __c.55 |
C:\Temp/ccbFCWV3.s:1369 .progmem.data:000004f6 __c.56 |
C:\Temp/ccbFCWV3.s:1373 .progmem.data:00000513 __c.57 |
C:\Temp/ccbFCWV3.s:1377 .progmem.data:00000526 __c.58 |
C:\Temp/ccbFCWV3.s:1381 .progmem.data:00000539 __c.59 |
C:\Temp/ccbFCWV3.s:1385 .progmem.data:00000544 __c.60 |
C:\Temp/ccbFCWV3.s:1389 .progmem.data:0000054a __c.61 |
C:\Temp/ccbFCWV3.s:1393 .progmem.data:0000055d __c.62 |
C:\Temp/ccbFCWV3.s:1397 .progmem.data:00000573 __c.63 |
C:\Temp/ccbFCWV3.s:1401 .progmem.data:00000582 __c.64 |
C:\Temp/ccbFCWV3.s:1405 .progmem.data:00000593 __c.65 |
C:\Temp/ccbFCWV3.s:1409 .progmem.data:00000598 __c.66 |
C:\Temp/ccbFCWV3.s:1413 .progmem.data:000005a2 __c.67 |
C:\Temp/ccbFCWV3.s:1417 .progmem.data:000005a9 __c.68 |
C:\Temp/ccbFCWV3.s:1421 .progmem.data:000005b0 __c.69 |
C:\Temp/ccbFCWV3.s:1425 .progmem.data:000005b6 __c.70 |
C:\Temp/ccbFCWV3.s:1429 .progmem.data:000005bc __c.71 |
C:\Temp/ccbFCWV3.s:1433 .progmem.data:000005c5 __c.72 |
C:\Temp/ccbFCWV3.s:1437 .progmem.data:000005c9 __c.73 |
C:\Temp/ccbFCWV3.s:1441 .progmem.data:000005d2 __c.74 |
C:\Temp/ccbFCWV3.s:1445 .progmem.data:000005d9 __c.75 |
C:\Temp/ccbFCWV3.s:1449 .progmem.data:000005e0 __c.76 |
C:\Temp/ccbFCWV3.s:1453 .progmem.data:000005e7 __c.77 |
C:\Temp/ccbFCWV3.s:1457 .progmem.data:000005ec __c.78 |
C:\Temp/ccbFCWV3.s:1461 .progmem.data:000005f5 __c.79 |
C:\Temp/ccbFCWV3.s:1465 .progmem.data:000005fc __c.80 |
C:\Temp/ccbFCWV3.s:1469 .progmem.data:00000603 __c.81 |
C:\Temp/ccbFCWV3.s:1473 .progmem.data:0000060a __c.82 |
C:\Temp/ccbFCWV3.s:1477 .progmem.data:00000611 __c.83 |
C:\Temp/ccbFCWV3.s:1481 .progmem.data:0000061c __c.84 |
C:\Temp/ccbFCWV3.s:1485 .progmem.data:00000626 __c.85 |
C:\Temp/ccbFCWV3.s:1489 .progmem.data:0000062a __c.86 |
C:\Temp/ccbFCWV3.s:1493 .progmem.data:00000630 __c.87 |
C:\Temp/ccbFCWV3.s:1497 .progmem.data:00000644 __c.88 |
C:\Temp/ccbFCWV3.s:1501 .progmem.data:00000653 __c.89 |
C:\Temp/ccbFCWV3.s:1505 .progmem.data:00000667 __c.90 |
C:\Temp/ccbFCWV3.s:1509 .progmem.data:0000067b __c.91 |
C:\Temp/ccbFCWV3.s:1513 .progmem.data:0000068a __c.92 |
C:\Temp/ccbFCWV3.s:1517 .progmem.data:00000694 __c.93 |
C:\Temp/ccbFCWV3.s:1521 .progmem.data:00000699 __c.94 |
C:\Temp/ccbFCWV3.s:1526 .text:00000896 HoTT_Menu |
*COM*:000000ac ASCIIPacket |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
Motor |
LIBFC_HoTT_SetPos |
LIBFC_HoTT_Putchar |
_printf_P |
FC_StatusFlags |
NC_ErrorCode |
MotorenEin |
EE_Parameter |
CheckDelay |
SetDelay |
FromNaviCtrl |
VarioCharacter |
AltitudeSetpointTrimming |
__divmodhi4 |
FromNC_AltitudeSpeed |
HoehenWert |
__divmodsi4 |
HoTT_DataPointer |
FC_StatusFlags2 |
__udivmodqi4 |
__udivmodhi4 |
GPSInfo |
NC_GPS_ModeCharacter |
UBat |
ErsatzKompassInGrad |
Capacity |
FlugSekunden |
BattLowVoltageWarning |
VarioMeter |
__tablejump2__ |
LIBFC_HoTT_Putchar_BLINK |
Parameter_GlobalConfig |
HoehenReglerAktiv |
NaviDataOkay |
EarthMagneticField |
EarthMagneticInclinationTheoretic |
EarthMagneticInclination |
HoTTBlink |
HottKeyboard |
LIBFC_HoTT_Clear |
KompassValue |
LIBFC_HoTT_Putchar_INV |
RequiredMotors |
GetActiveParamSet |
Mixer |
Parameter_HoehenSchalter |
Parameter_ExtraConfig |
CareFree |
Poti |
Parameter_ServoNickControl |
PPM_in |
__epilogue_restores__ |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/isqrt.S |
---|
0,0 → 1,203 |
;-----------------------------------------------------------------------------; |
; Fast integer squareroot routines for avr-gcc project (C)ChaN, 2008 |
; http://elm-chan.org/docs/avrlib/sqrt32.S |
;-----------------------------------------------------------------------------; |
; uint16_t isqrt32 (uint32_t n); |
; uint8_t isqrt16 (uint16_t n); |
; uint16_t ihypot (int16_t x, int16_t y); |
;-----------------------------------------------------------------------------: |
; 32bit integer squareroot |
;-----------------------------------------------------------------------------; |
; uint16_t isqrt32 ( |
; uint32_t n |
; ); |
; |
; Return Value: |
; Squareroot of n. |
; |
; Size = 53 words |
; Clock = 532..548 cycles |
; Stack = 0 byte |
.global isqrt32 |
.func isqrt32 |
isqrt32: |
clr r0 |
clr r18 |
clr r19 |
clr r20 |
ldi r21, 1 |
clr r27 |
clr r30 |
clr r31 |
ldi r26, 16 |
1: lsl r22 |
rol r23 |
rol r24 |
rol r25 |
rol r0 |
rol r18 |
rol r19 |
rol r20 |
lsl r22 |
rol r23 |
rol r24 |
rol r25 |
rol r0 |
rol r18 |
rol r19 |
rol r20 |
brpl 2f |
add r0, r21 |
adc r18, r27 |
adc r19, r30 |
adc r20, r31 |
rjmp 3f |
2: sub r0, r21 |
sbc r18, r27 |
sbc r19, r30 |
sbc r20, r31 |
3: lsl r21 |
rol r27 |
rol r30 |
andi r21, 0b11111000 |
ori r21, 0b00000101 |
sbrc r20, 7 |
subi r21, 2 |
dec r26 |
brne 1b |
lsr r30 |
ror r27 |
ror r21 |
lsr r30 |
ror r27 |
ror r21 |
mov r24, r21 |
mov r25, r27 |
ret |
.endfunc |
;-----------------------------------------------------------------------------: |
; 16bit integer squareroot |
;-----------------------------------------------------------------------------; |
; uint8_t isqrt16 ( |
; uint16_t n |
; ); |
; |
; Return Value: |
; Squareroot of n. |
; |
; Size = 33 words |
; Clock = 181..189 cycles |
; Stack = 0 byte |
.global isqrt16 |
.func isqrt16 |
isqrt16: |
clr r18 |
clr r19 |
ldi r20, 1 |
clr r21 |
ldi r22, 8 |
1: lsl r24 |
rol r25 |
rol r18 |
rol r19 |
lsl r24 |
rol r25 |
rol r18 |
rol r19 |
brpl 2f |
add r18, r20 |
adc r19, r21 |
rjmp 3f |
2: sub r18, r20 |
sbc r19, r21 |
3: lsl r20 |
rol r21 |
andi r20, 0b11111000 |
ori r20, 0b00000101 |
sbrc r19, 7 |
subi r20, 2 |
dec r22 |
brne 1b |
lsr r21 |
ror r20 |
lsr r21 |
ror r20 |
mov r24, r20 |
ret |
.endfunc |
;-----------------------------------------------------------------------------: |
; 16bit integer hypot (megaAVR is required) |
;-----------------------------------------------------------------------------; |
; uint16_t ihypot ( |
; int16_t x, |
; int16_t y |
; ); |
; |
; Return Value: |
; Squareroot of (x*x + y*y) |
; |
; Size = 42 words |
; Clock = 581..597 cycles |
; Stack = 0 byte |
.global ihypot |
.func ihypot |
ihypot: |
clr r26 |
sbrs r25, 7 |
rjmp 1f |
com r24 |
com r25 |
adc r24, r26 |
adc r25, r26 |
1: sbrs r23, 7 |
rjmp 2f |
com r22 |
com r23 |
adc r22, r26 |
adc r23, r26 |
2: mul r22, r22 |
movw r18, r0 |
mul r23, r23 |
movw r20, r0 |
mul r22, r23 |
add r19, r0 |
adc r20, r1 |
adc r21, r26 |
add r19, r0 |
adc r20, r1 |
adc r21, r26 |
mul r24, r24 |
movw r30, r0 |
mul r25, r25 |
add r18, r30 |
adc r19, r31 |
adc r20, r0 |
adc r21, r1 |
mul r24, r25 |
add r19, r0 |
adc r20, r1 |
adc r21, r26 |
add r19, r0 |
adc r20, r1 |
adc r21, r26 |
movw r24, r20 |
movw r22, r18 |
clr r1 |
rjmp isqrt32 |
.endfunc |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/isqrt.h |
---|
0,0 → 1,11 |
#ifndef _ISQRT_H |
#define _ISQRT_H |
#include <inttypes.h> |
// coded in assembler file |
extern uint16_t isqrt32(uint32_t n); |
extern uint8_t isqrt16(uint16_t n); |
extern uint16_t ihypot(int16_t x, int16_t y); |
#endif // _ISQRT_H |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/isqrt.lst |
---|
0,0 → 1,209 |
1 # 1 "isqrt.S" |
1 ;-----------------------------------------------------------------------------; |
0 |
0 |
2 ;-----------------------------------------------------------------------------; |
3 ; Fast integer squareroot routines for avr-gcc project (C)ChaN, 2008 |
4 ; http://elm-chan.org/docs/avrlib/sqrt32.S |
5 ;-----------------------------------------------------------------------------; |
6 ; uint16_t isqrt32 (uint32_t n); |
7 ; uint8_t isqrt16 (uint16_t n); |
8 ; uint16_t ihypot (int16_t x, int16_t y); |
9 |
10 ;-----------------------------------------------------------------------------: |
11 ; 32bit integer squareroot |
12 ;-----------------------------------------------------------------------------; |
13 ; uint16_t isqrt32 ( |
14 ; uint32_t n |
15 ; ); |
16 ; |
17 ; Return Value: |
18 ; Squareroot of n. |
19 ; |
20 ; Size = 53 words |
21 ; Clock = 532..548 cycles |
22 ; Stack = 0 byte |
23 |
24 .global isqrt32 |
25 .func isqrt32 |
26 |
27:isqrt.S **** isqrt32: |
28:isqrt.S **** clr r0 |
29:isqrt.S **** clr r18 |
30:isqrt.S **** clr r19 |
31:isqrt.S **** clr r20 |
32:isqrt.S **** ldi r21, 1 |
33:isqrt.S **** clr r27 |
34:isqrt.S **** clr r30 |
35:isqrt.S **** clr r31 |
36:isqrt.S **** ldi r26, 16 |
37:isqrt.S **** 1: lsl r22 |
38:isqrt.S **** rol r23 |
39:isqrt.S **** rol r24 |
40:isqrt.S **** rol r25 |
41:isqrt.S **** rol r0 |
42:isqrt.S **** rol r18 |
43:isqrt.S **** rol r19 |
44:isqrt.S **** rol r20 |
45:isqrt.S **** lsl r22 |
46:isqrt.S **** rol r23 |
47:isqrt.S **** rol r24 |
48:isqrt.S **** rol r25 |
49:isqrt.S **** rol r0 |
50:isqrt.S **** rol r18 |
51:isqrt.S **** rol r19 |
52:isqrt.S **** rol r20 |
53:isqrt.S **** brpl 2f |
54:isqrt.S **** add r0, r21 |
55:isqrt.S **** adc r18, r27 |
56:isqrt.S **** adc r19, r30 |
57:isqrt.S **** adc r20, r31 |
58:isqrt.S **** rjmp 3f |
59:isqrt.S **** 2: sub r0, r21 |
60:isqrt.S **** sbc r18, r27 |
61:isqrt.S **** sbc r19, r30 |
62:isqrt.S **** sbc r20, r31 |
63:isqrt.S **** 3: lsl r21 |
64:isqrt.S **** rol r27 |
65:isqrt.S **** rol r30 |
66:isqrt.S **** andi r21, 0b11111000 |
67:isqrt.S **** ori r21, 0b00000101 |
68:isqrt.S **** sbrc r20, 7 |
69:isqrt.S **** subi r21, 2 |
70:isqrt.S **** dec r26 |
71:isqrt.S **** brne 1b |
72:isqrt.S **** lsr r30 |
73:isqrt.S **** ror r27 |
74:isqrt.S **** ror r21 |
75:isqrt.S **** lsr r30 |
76:isqrt.S **** ror r27 |
77:isqrt.S **** ror r21 |
78:isqrt.S **** mov r24, r21 |
79:isqrt.S **** mov r25, r27 |
80 ret |
81 .endfunc |
82 |
83 |
84 |
85 ;-----------------------------------------------------------------------------: |
86 ; 16bit integer squareroot |
87 ;-----------------------------------------------------------------------------; |
88 ; uint8_t isqrt16 ( |
89 ; uint16_t n |
90 ; ); |
91 ; |
92 ; Return Value: |
93 ; Squareroot of n. |
94 ; |
95 ; Size = 33 words |
96 ; Clock = 181..189 cycles |
97 ; Stack = 0 byte |
98 |
99 .global isqrt16 |
100 .func isqrt16 |
101 |
102:isqrt.S **** isqrt16: |
103:isqrt.S **** clr r18 |
104:isqrt.S **** clr r19 |
105:isqrt.S **** ldi r20, 1 |
106:isqrt.S **** clr r21 |
107:isqrt.S **** ldi r22, 8 |
108:isqrt.S **** 1: lsl r24 |
109:isqrt.S **** rol r25 |
110:isqrt.S **** rol r18 |
111:isqrt.S **** rol r19 |
112:isqrt.S **** lsl r24 |
113:isqrt.S **** rol r25 |
114:isqrt.S **** rol r18 |
115:isqrt.S **** rol r19 |
116:isqrt.S **** brpl 2f |
117:isqrt.S **** add r18, r20 |
118:isqrt.S **** adc r19, r21 |
119:isqrt.S **** rjmp 3f |
120:isqrt.S **** 2: sub r18, r20 |
121:isqrt.S **** sbc r19, r21 |
122:isqrt.S **** 3: lsl r20 |
123:isqrt.S **** rol r21 |
124:isqrt.S **** andi r20, 0b11111000 |
125:isqrt.S **** ori r20, 0b00000101 |
126:isqrt.S **** sbrc r19, 7 |
127:isqrt.S **** subi r20, 2 |
128:isqrt.S **** dec r22 |
129:isqrt.S **** brne 1b |
130:isqrt.S **** lsr r21 |
131:isqrt.S **** ror r20 |
132:isqrt.S **** lsr r21 |
133:isqrt.S **** ror r20 |
134:isqrt.S **** mov r24, r20 |
135 ret |
136 .endfunc |
137 |
138 |
139 |
140 ;-----------------------------------------------------------------------------: |
141 ; 16bit integer hypot (megaAVR is required) |
142 ;-----------------------------------------------------------------------------; |
143 ; uint16_t ihypot ( |
144 ; int16_t x, |
145 ; int16_t y |
146 ; ); |
147 ; |
148 ; Return Value: |
149 ; Squareroot of (x*x + y*y) |
150 ; |
151 ; Size = 42 words |
152 ; Clock = 581..597 cycles |
153 ; Stack = 0 byte |
154 |
155 .global ihypot |
156 .func ihypot |
157 |
158:isqrt.S **** ihypot: |
159:isqrt.S **** clr r26 |
160:isqrt.S **** sbrs r25, 7 |
161:isqrt.S **** rjmp 1f |
162:isqrt.S **** com r24 |
163:isqrt.S **** com r25 |
164:isqrt.S **** adc r24, r26 |
165:isqrt.S **** adc r25, r26 |
166:isqrt.S **** 1: sbrs r23, 7 |
167:isqrt.S **** rjmp 2f |
168:isqrt.S **** com r22 |
169:isqrt.S **** com r23 |
170:isqrt.S **** adc r22, r26 |
171:isqrt.S **** adc r23, r26 |
172:isqrt.S **** 2: mul r22, r22 |
173:isqrt.S **** movw r18, r0 |
174:isqrt.S **** mul r23, r23 |
175:isqrt.S **** movw r20, r0 |
176:isqrt.S **** mul r22, r23 |
177:isqrt.S **** add r19, r0 |
178:isqrt.S **** adc r20, r1 |
179:isqrt.S **** adc r21, r26 |
180:isqrt.S **** add r19, r0 |
181:isqrt.S **** adc r20, r1 |
182:isqrt.S **** adc r21, r26 |
183:isqrt.S **** mul r24, r24 |
184:isqrt.S **** movw r30, r0 |
185:isqrt.S **** mul r25, r25 |
186:isqrt.S **** add r18, r30 |
187:isqrt.S **** adc r19, r31 |
188:isqrt.S **** adc r20, r0 |
189:isqrt.S **** adc r21, r1 |
190:isqrt.S **** mul r24, r25 |
191:isqrt.S **** add r19, r0 |
192:isqrt.S **** adc r20, r1 |
193:isqrt.S **** adc r21, r26 |
194:isqrt.S **** add r19, r0 |
195:isqrt.S **** adc r20, r1 |
196:isqrt.S **** adc r21, r26 |
197:isqrt.S **** movw r24, r20 |
198:isqrt.S **** movw r22, r18 |
199:isqrt.S **** clr r1 |
200 rjmp isqrt32 |
DEFINED SYMBOLS |
isqrt.S:26 .text:00000000 isqrt32 |
isqrt.S:101 .text:0000006a isqrt16 |
isqrt.S:157 .text:000000ac ihypot |
NO UNDEFINED SYMBOLS |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/jeti_ex.c |
---|
0,0 → 1,140 |
#include "libfc.h" |
#include "printf_P.h" |
#include "main.h" |
#include "spi.h" |
#include "capacity.h" |
#include "jeti_ex.h" |
#include "hottmenu.h" |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
const char PROGMEM JETI_CODE[53] = |
{ |
0, // 0 |
'O', // SPEAK_ERR_CALIBARTION 1 |
'P', // SPEAK_ERR_RECEICER 2 |
'Q', // SPEAK_ERR_DATABUS 3 |
'R', // SPEAK_ERR_NAVI 4 |
'S', // SPEAK_ERROR 5 |
'T', // SPEAK_ERR_COMPASS 6 |
'S', // SPEAK_ERR_SENSOR 7 |
'V', // SPEAK_ERR_GPS 8 |
'W', // SPEAK_ERR_MOTOR 9 |
'H', // SPEAK_MAX_TEMPERAT 10 |
0, // SPEAK_ALTI_REACHED 11 |
'X', // SPEAK_WP_REACHED 12 |
'Y', // SPEAK_NEXT_WP 13 |
0, // SPEAK_LANDING 14 |
'Z', // SPEAK_GPS_FIX 15 |
'U', // SPEAK_UNDERVOLTAGE 16 |
'E', // SPEAK_GPS_HOLD 17 |
'F', // SPEAK_GPS_HOME 18 |
'G', // SPEAK_GPS_OFF 19 |
'H', // SPEAK_BEEP 20 |
'A', // SPEAK_MIKROKOPTER 21 |
0, // SPEAK_CAPACITY 22 |
'I', // SPEAK_CF_OFF 23 |
'B', // SPEAK_CALIBRATE 24 |
'J', // SPEAK_MAX_RANGE 25 |
'J', // SPEAK_MAX_ALTITUD 26 |
0, // 27 |
0, // 28 |
0, // 29 |
0, // 30 |
0, // 31 |
0, // 32 |
0, // 33 |
0, // 34 |
0, // 35 |
0, // 36 |
0, // 37 |
'D', // SPEAK_MK_OFF 38 |
'L', // SPEAK_ALTITUDE_ON 39 |
'M', // SPEAK_ALTITUDE_OFF 40 |
0, // 41 |
0, // 42 |
0, // 43 |
0, // 44 |
0, // 45 |
'N', // SPEAK_CF_ON 46 |
0, // SPEAK_SINKING 47 |
0, // SPEAK_RISING 48 |
0, // SPEAK_HOLDING 49 |
'K', // SPEAK_GPS_ON 50 |
0, // SPEAK_FOLLWING 51 |
'C' // SPEAK_STARTING 52 |
}; |
JetiExPacket_t JetiExData[JETI_EX_PARAMETER_COUNT + 1] = // Parameter count + DeviceName (ID0) |
{ |
// Label[10] unit[3], data type, Data , position of decimal point |
// "1234567890", "123", |
{ "-=.M_K.=-" , " ", 1, 0 , 0 }, // first one is device name // datatype 1 = -8192...8192 |
{ "Voltage " , "V ", 1, 0 , 1 }, // ID 1 |
{ "Current " , "A ", 1, 0 , 1 }, // ID 2 |
{ "Capacity " , "Ah ", 1, 0 , 2 }, // ID 3 |
{ "Altitude " , "m ", 1, 0 , 0 }, // ID 4 |
{ "Compass " , "° ", 1, 0 , 0 }, // ID 5 |
{ "Sats " , " ", 1, 0 , 0 }, // ID 6 |
{ "Speed " , "m/s", 1, 0 , 0 }, // ID 7 |
{ "Distance " , "m ", 1, 0 , 0 }, // ID 8 |
{ "Home-Dir " , "° ", 1, 0 , 0 }, // ID 9 |
{ "max.Temp. " , "°C ", 1, 0 , 0 }, // ID 10 |
{ "Magn.field" , "% ", 1, 0 , 0 }, // ID 11 |
{ "Vario " , " ", 1, 0 , 0 }, // ID 12 |
{ "ErrorCode " , " ", 1, 0 , 0 }, // ID 13 |
{ "frei " , " ", 1, 0 , 3 }, // ID 14 |
{ "frei " , " ", 1, 0 , 3 }, // ID 15 |
}; |
void BuildJeti_Vario(void) |
{ |
signed int tmp = 0; |
static signed int JetiVarioMeter = 0; |
JetiVarioMeter = (JetiVarioMeter * 3 + VarioMeter) / 4; |
if(VarioCharacter == '+') |
{ |
tmp = (AltitudeSetpointTrimming * EE_Parameter.Hoehe_Verstaerkung) / 32 + 5; |
} |
else |
if(VarioCharacter == '-') |
{ |
tmp = (AltitudeSetpointTrimming * EE_Parameter.Hoehe_Verstaerkung) / 32 - 5; |
} |
else |
if((VarioCharacter == ' ') && (FC_StatusFlags & FC_STATUS_FLY)) |
{ |
tmp = (JetiVarioMeter/32); |
} |
else |
if(VarioCharacter == '^') tmp = FromNC_AltitudeSpeed; |
else |
if(VarioCharacter == 'v') tmp = tmp - FromNC_AltitudeSpeed; |
JetiExData[12].Value = tmp; |
} |
// -------------------------------------------------------------------------------------------------- |
void JetiEX_Update(void) |
{ |
GetHottestBl(); |
JetiExData[1].Value = UBat; |
JetiExData[2].Value = Capacity.ActualCurrent; |
JetiExData[3].Value = Capacity.UsedCapacity / 10; |
JetiExData[4].Value = HoehenWert / 100; |
JetiExData[5].Value = KompassValue; |
JetiExData[6].Value = GPSInfo.NumOfSats; |
JetiExData[7].Value = GPSInfo.Speed; |
JetiExData[8].Value = GPSInfo.HomeDistance / 10; |
JetiExData[9].Value = GPSInfo.HomeBearing; |
JetiExData[10].Value = MaxBlTempertaure; |
JetiExData[11].Value = EarthMagneticField; |
// JetiExData[12].Value = Vario; |
JetiExData[13].Value = NC_ErrorCode; |
} |
#endif |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/jeti_ex.h |
---|
0,0 → 1,37 |
#ifndef _JETI_EX_H |
#define _JETI_EX_H |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
extern void BuildJeti_Vario(void); |
// define here how many Jeti EX parameters should be transmitted (max. = 15) |
// |
#define JETI_EX_PARAMETER_COUNT 15 |
// |
// ------------------------------------------------------------------------- |
extern const char PROGMEM JETI_CODE[53]; |
typedef struct |
{ |
char Label[10]; |
char Unit[3]; |
unsigned char DataType; |
long Value; |
unsigned char DecimalPointPos; |
} JetiExPacket_t; |
extern JetiExPacket_t JetiExData[]; |
extern void JetiEX_Update(void); |
#if (JETI_EX_PARAMETER_COUNT > 15) |
#error "ERROR: Too many Jeti EX parameters (max. allowed 15)" |
#endif |
#endif |
#endif //_JETI_EX_H |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/jeti_ex.lst |
---|
0,0 → 1,477 |
1 .file "jeti_ex.c" |
2 .arch atmega1284p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .global JetiExData |
11 .data |
14 JetiExData: |
15 0000 2D3D 2E4D .string "-=.M_K.=-" |
15 5F4B 2E3D |
15 2D00 |
16 000a 2020 20 .ascii " " |
17 000d 01 .byte 1 |
18 000e 0000 0000 .long 0 |
19 0012 00 .byte 0 |
20 0013 566F 6C74 .ascii "Voltage " |
20 6167 6520 |
20 2020 |
21 001d 5620 20 .ascii "V " |
22 0020 01 .byte 1 |
23 0021 0000 0000 .long 0 |
24 0025 01 .byte 1 |
25 0026 4375 7272 .ascii "Current " |
25 656E 7420 |
25 2020 |
26 0030 4120 20 .ascii "A " |
27 0033 01 .byte 1 |
28 0034 0000 0000 .long 0 |
29 0038 01 .byte 1 |
30 0039 4361 7061 .ascii "Capacity " |
30 6369 7479 |
30 2020 |
31 0043 4168 20 .ascii "Ah " |
32 0046 01 .byte 1 |
33 0047 0000 0000 .long 0 |
34 004b 02 .byte 2 |
35 004c 416C 7469 .ascii "Altitude " |
35 7475 6465 |
35 2020 |
36 0056 6D20 20 .ascii "m " |
37 0059 01 .byte 1 |
38 005a 0000 0000 .long 0 |
39 005e 00 .byte 0 |
40 005f 436F 6D70 .ascii "Compass " |
40 6173 7320 |
40 2020 |
41 0069 B020 20 .ascii "\260 " |
42 006c 01 .byte 1 |
43 006d 0000 0000 .long 0 |
44 0071 00 .byte 0 |
45 0072 5361 7473 .ascii "Sats " |
45 2020 2020 |
45 2020 |
46 007c 2020 20 .ascii " " |
47 007f 01 .byte 1 |
48 0080 0000 0000 .long 0 |
49 0084 00 .byte 0 |
50 0085 5370 6565 .ascii "Speed " |
50 6420 2020 |
50 2020 |
51 008f 6D2F 73 .ascii "m/s" |
52 0092 01 .byte 1 |
53 0093 0000 0000 .long 0 |
54 0097 00 .byte 0 |
55 0098 4469 7374 .ascii "Distance " |
55 616E 6365 |
55 2020 |
56 00a2 6D20 20 .ascii "m " |
57 00a5 01 .byte 1 |
58 00a6 0000 0000 .long 0 |
59 00aa 00 .byte 0 |
60 00ab 486F 6D65 .ascii "Home-Dir " |
60 2D44 6972 |
60 2020 |
61 00b5 B020 20 .ascii "\260 " |
62 00b8 01 .byte 1 |
63 00b9 0000 0000 .long 0 |
64 00bd 00 .byte 0 |
65 00be 6D61 782E .ascii "max.Temp. " |
65 5465 6D70 |
65 2E20 |
66 00c8 B043 20 .ascii "\260C " |
67 00cb 01 .byte 1 |
68 00cc 0000 0000 .long 0 |
69 00d0 00 .byte 0 |
70 00d1 4D61 676E .ascii "Magn.field" |
70 2E66 6965 |
70 6C64 |
71 00db 2520 20 .ascii "% " |
72 00de 01 .byte 1 |
73 00df 0000 0000 .long 0 |
74 00e3 00 .byte 0 |
75 00e4 5661 7269 .ascii "Vario " |
75 6F20 2020 |
75 2020 |
76 00ee 2020 20 .ascii " " |
77 00f1 01 .byte 1 |
78 00f2 0000 0000 .long 0 |
79 00f6 00 .byte 0 |
80 00f7 4572 726F .ascii "ErrorCode " |
80 7243 6F64 |
80 6520 |
81 0101 2020 20 .ascii " " |
82 0104 01 .byte 1 |
83 0105 0000 0000 .long 0 |
84 0109 00 .byte 0 |
85 010a 6672 6569 .ascii "frei " |
85 2020 2020 |
85 2020 |
86 0114 2020 20 .ascii " " |
87 0117 01 .byte 1 |
88 0118 0000 0000 .long 0 |
89 011c 03 .byte 3 |
90 011d 6672 6569 .ascii "frei " |
90 2020 2020 |
90 2020 |
91 0127 2020 20 .ascii " " |
92 012a 01 .byte 1 |
93 012b 0000 0000 .long 0 |
94 012f 03 .byte 3 |
95 .global JETI_CODE |
96 .section .progmem.data,"a",@progbits |
99 JETI_CODE: |
100 0000 00 .byte 0 |
101 0001 4F .byte 79 |
102 0002 50 .byte 80 |
103 0003 51 .byte 81 |
104 0004 52 .byte 82 |
105 0005 53 .byte 83 |
106 0006 54 .byte 84 |
107 0007 53 .byte 83 |
108 0008 56 .byte 86 |
109 0009 57 .byte 87 |
110 000a 48 .byte 72 |
111 000b 00 .byte 0 |
112 000c 58 .byte 88 |
113 000d 59 .byte 89 |
114 000e 00 .byte 0 |
115 000f 5A .byte 90 |
116 0010 55 .byte 85 |
117 0011 45 .byte 69 |
118 0012 46 .byte 70 |
119 0013 47 .byte 71 |
120 0014 48 .byte 72 |
121 0015 41 .byte 65 |
122 0016 00 .byte 0 |
123 0017 49 .byte 73 |
124 0018 42 .byte 66 |
125 0019 4A .byte 74 |
126 001a 4A .byte 74 |
127 001b 00 .byte 0 |
128 001c 00 .byte 0 |
129 001d 00 .byte 0 |
130 001e 00 .byte 0 |
131 001f 00 .byte 0 |
132 0020 00 .byte 0 |
133 0021 00 .byte 0 |
134 0022 00 .byte 0 |
135 0023 00 .byte 0 |
136 0024 00 .byte 0 |
137 0025 00 .byte 0 |
138 0026 44 .byte 68 |
139 0027 4C .byte 76 |
140 0028 4D .byte 77 |
141 0029 00 .byte 0 |
142 002a 00 .byte 0 |
143 002b 00 .byte 0 |
144 002c 00 .byte 0 |
145 002d 00 .byte 0 |
146 002e 4E .byte 78 |
147 002f 00 .byte 0 |
148 0030 00 .byte 0 |
149 0031 00 .byte 0 |
150 0032 4B .byte 75 |
151 0033 00 .byte 0 |
152 0034 43 .byte 67 |
153 .lcomm JetiVarioMeter.0,2 |
154 .text |
155 .global BuildJeti_Vario |
157 BuildJeti_Vario: |
158 /* prologue: frame size=0 */ |
159 /* prologue end (size=0) */ |
160 0000 40E0 ldi r20,lo8(0) |
161 0002 50E0 ldi r21,hi8(0) |
162 0004 8091 0000 lds r24,JetiVarioMeter.0 |
163 0008 9091 0000 lds r25,(JetiVarioMeter.0)+1 |
164 000c 9C01 movw r18,r24 |
165 000e 220F lsl r18 |
166 0010 331F rol r19 |
167 0012 280F add r18,r24 |
168 0014 391F adc r19,r25 |
169 0016 8091 0000 lds r24,VarioMeter |
170 001a 9091 0000 lds r25,(VarioMeter)+1 |
171 001e 280F add r18,r24 |
172 0020 391F adc r19,r25 |
173 0022 37FF sbrs r19,7 |
174 0024 00C0 rjmp .L2 |
175 0026 2D5F subi r18,lo8(-(3)) |
176 0028 3F4F sbci r19,hi8(-(3)) |
177 .L2: |
178 002a 3595 asr r19 |
179 002c 2795 ror r18 |
180 002e 3595 asr r19 |
181 0030 2795 ror r18 |
182 0032 3093 0000 sts (JetiVarioMeter.0)+1,r19 |
183 0036 2093 0000 sts JetiVarioMeter.0,r18 |
184 003a 8091 0000 lds r24,VarioCharacter |
185 003e 8B32 cpi r24,lo8(43) |
186 0040 01F4 brne .L3 |
187 0042 8091 0000 lds r24,EE_Parameter+18 |
188 0046 282F mov r18,r24 |
189 0048 3327 clr r19 |
190 004a 8091 0000 lds r24,AltitudeSetpointTrimming |
191 004e 9091 0000 lds r25,(AltitudeSetpointTrimming)+1 |
192 0052 829F mul r24,r18 |
193 0054 A001 movw r20,r0 |
194 0056 839F mul r24,r19 |
195 0058 500D add r21,r0 |
196 005a 929F mul r25,r18 |
197 005c 500D add r21,r0 |
198 005e 1124 clr r1 |
199 0060 CA01 movw r24,r20 |
200 0062 57FD sbrc r21,7 |
201 0064 4F96 adiw r24,31 |
202 .L4: |
203 0066 AC01 movw r20,r24 |
204 0068 25E0 ldi r18,5 |
205 006a 5595 1: asr r21 |
206 006c 4795 ror r20 |
207 006e 2A95 dec r18 |
208 0070 01F4 brne 1b |
209 0072 4B5F subi r20,lo8(-(5)) |
210 0074 5F4F sbci r21,hi8(-(5)) |
211 0076 00C0 rjmp .L5 |
212 .L3: |
213 0078 8D32 cpi r24,lo8(45) |
214 007a 01F4 brne .L6 |
215 007c 8091 0000 lds r24,EE_Parameter+18 |
216 0080 282F mov r18,r24 |
217 0082 3327 clr r19 |
218 0084 8091 0000 lds r24,AltitudeSetpointTrimming |
219 0088 9091 0000 lds r25,(AltitudeSetpointTrimming)+1 |
220 008c 829F mul r24,r18 |
221 008e A001 movw r20,r0 |
222 0090 839F mul r24,r19 |
223 0092 500D add r21,r0 |
224 0094 929F mul r25,r18 |
225 0096 500D add r21,r0 |
226 0098 1124 clr r1 |
227 009a CA01 movw r24,r20 |
228 009c 57FD sbrc r21,7 |
229 009e 4F96 adiw r24,31 |
230 .L7: |
231 00a0 AC01 movw r20,r24 |
232 00a2 95E0 ldi r25,5 |
233 00a4 5595 1: asr r21 |
234 00a6 4795 ror r20 |
235 00a8 9A95 dec r25 |
236 00aa 01F4 brne 1b |
237 00ac 4550 subi r20,lo8(-(-5)) |
238 00ae 5040 sbci r21,hi8(-(-5)) |
239 00b0 00C0 rjmp .L5 |
240 .L6: |
241 00b2 8032 cpi r24,lo8(32) |
242 00b4 01F4 brne .L9 |
243 00b6 8091 0000 lds r24,FC_StatusFlags |
244 00ba 81FF sbrs r24,1 |
245 00bc 00C0 rjmp .L5 |
246 00be C901 movw r24,r18 |
247 00c0 37FD sbrc r19,7 |
248 00c2 4F96 adiw r24,31 |
249 .L10: |
250 00c4 AC01 movw r20,r24 |
251 00c6 85E0 ldi r24,5 |
252 00c8 5595 1: asr r21 |
253 00ca 4795 ror r20 |
254 00cc 8A95 dec r24 |
255 00ce 01F4 brne 1b |
256 00d0 00C0 rjmp .L5 |
257 .L9: |
258 00d2 8E35 cpi r24,lo8(94) |
259 00d4 01F4 brne .L12 |
260 00d6 8091 0000 lds r24,FromNC_AltitudeSpeed |
261 00da 482F mov r20,r24 |
262 00dc 5527 clr r21 |
263 00de 00C0 rjmp .L5 |
264 .L12: |
265 00e0 8637 cpi r24,lo8(118) |
266 00e2 01F4 brne .L5 |
267 00e4 8091 0000 lds r24,FromNC_AltitudeSpeed |
268 00e8 9927 clr r25 |
269 00ea 4427 clr r20 |
270 00ec 5527 clr r21 |
271 00ee 481B sub r20,r24 |
272 00f0 590B sbc r21,r25 |
273 .L5: |
274 00f2 CA01 movw r24,r20 |
275 00f4 AA27 clr r26 |
276 00f6 97FD sbrc r25,7 |
277 00f8 A095 com r26 |
278 00fa BA2F mov r27,r26 |
279 00fc 8093 0000 sts JetiExData+242,r24 |
280 0100 9093 0000 sts (JetiExData+242)+1,r25 |
281 0104 A093 0000 sts (JetiExData+242)+2,r26 |
282 0108 B093 0000 sts (JetiExData+242)+3,r27 |
283 /* epilogue: frame size=0 */ |
284 010c 0895 ret |
285 /* epilogue end (size=1) */ |
286 /* function BuildJeti_Vario size 138 (137) */ |
288 .global JetiEX_Update |
290 JetiEX_Update: |
291 /* prologue: frame size=0 */ |
292 010e 0F93 push r16 |
293 0110 1F93 push r17 |
294 /* prologue end (size=2) */ |
295 0112 0E94 0000 call GetHottestBl |
296 0116 8091 0000 lds r24,UBat |
297 011a 9091 0000 lds r25,(UBat)+1 |
298 011e AA27 clr r26 |
299 0120 97FD sbrc r25,7 |
300 0122 A095 com r26 |
301 0124 BA2F mov r27,r26 |
302 0126 8093 0000 sts JetiExData+33,r24 |
303 012a 9093 0000 sts (JetiExData+33)+1,r25 |
304 012e A093 0000 sts (JetiExData+33)+2,r26 |
305 0132 B093 0000 sts (JetiExData+33)+3,r27 |
306 0136 8091 0000 lds r24,Capacity |
307 013a 9091 0000 lds r25,(Capacity)+1 |
308 013e AA27 clr r26 |
309 0140 BB27 clr r27 |
310 0142 8093 0000 sts JetiExData+52,r24 |
311 0146 9093 0000 sts (JetiExData+52)+1,r25 |
312 014a A093 0000 sts (JetiExData+52)+2,r26 |
313 014e B093 0000 sts (JetiExData+52)+3,r27 |
314 0152 0AE0 ldi r16,lo8(10) |
315 0154 10E0 ldi r17,hi8(10) |
316 0156 8091 0000 lds r24,Capacity+4 |
317 015a 9091 0000 lds r25,(Capacity+4)+1 |
318 015e B801 movw r22,r16 |
319 0160 0E94 0000 call __udivmodhi4 |
320 0164 CB01 movw r24,r22 |
321 0166 AA27 clr r26 |
322 0168 BB27 clr r27 |
323 016a 8093 0000 sts JetiExData+71,r24 |
324 016e 9093 0000 sts (JetiExData+71)+1,r25 |
325 0172 A093 0000 sts (JetiExData+71)+2,r26 |
326 0176 B093 0000 sts (JetiExData+71)+3,r27 |
327 017a 8091 0000 lds r24,HoehenWert |
328 017e 9091 0000 lds r25,(HoehenWert)+1 |
329 0182 A091 0000 lds r26,(HoehenWert)+2 |
330 0186 B091 0000 lds r27,(HoehenWert)+3 |
331 018a BC01 movw r22,r24 |
332 018c CD01 movw r24,r26 |
333 018e 24E6 ldi r18,lo8(100) |
334 0190 30E0 ldi r19,hi8(100) |
335 0192 40E0 ldi r20,hlo8(100) |
336 0194 50E0 ldi r21,hhi8(100) |
337 0196 0E94 0000 call __divmodsi4 |
338 019a 2093 0000 sts JetiExData+90,r18 |
339 019e 3093 0000 sts (JetiExData+90)+1,r19 |
340 01a2 4093 0000 sts (JetiExData+90)+2,r20 |
341 01a6 5093 0000 sts (JetiExData+90)+3,r21 |
342 01aa 8091 0000 lds r24,KompassValue |
343 01ae 9091 0000 lds r25,(KompassValue)+1 |
344 01b2 AA27 clr r26 |
345 01b4 97FD sbrc r25,7 |
346 01b6 A095 com r26 |
347 01b8 BA2F mov r27,r26 |
348 01ba 8093 0000 sts JetiExData+109,r24 |
349 01be 9093 0000 sts (JetiExData+109)+1,r25 |
350 01c2 A093 0000 sts (JetiExData+109)+2,r26 |
351 01c6 B093 0000 sts (JetiExData+109)+3,r27 |
352 01ca 8091 0000 lds r24,GPSInfo+1 |
353 01ce 9927 clr r25 |
354 01d0 AA27 clr r26 |
355 01d2 BB27 clr r27 |
356 01d4 8093 0000 sts JetiExData+128,r24 |
357 01d8 9093 0000 sts (JetiExData+128)+1,r25 |
358 01dc A093 0000 sts (JetiExData+128)+2,r26 |
359 01e0 B093 0000 sts (JetiExData+128)+3,r27 |
360 01e4 8091 0000 lds r24,GPSInfo+3 |
361 01e8 9927 clr r25 |
362 01ea AA27 clr r26 |
363 01ec BB27 clr r27 |
364 01ee 8093 0000 sts JetiExData+147,r24 |
365 01f2 9093 0000 sts (JetiExData+147)+1,r25 |
366 01f6 A093 0000 sts (JetiExData+147)+2,r26 |
367 01fa B093 0000 sts (JetiExData+147)+3,r27 |
368 01fe 8091 0000 lds r24,GPSInfo+4 |
369 0202 9091 0000 lds r25,(GPSInfo+4)+1 |
370 0206 B801 movw r22,r16 |
371 0208 0E94 0000 call __udivmodhi4 |
372 020c CB01 movw r24,r22 |
373 020e AA27 clr r26 |
374 0210 BB27 clr r27 |
375 0212 8093 0000 sts JetiExData+166,r24 |
376 0216 9093 0000 sts (JetiExData+166)+1,r25 |
377 021a A093 0000 sts (JetiExData+166)+2,r26 |
378 021e B093 0000 sts (JetiExData+166)+3,r27 |
379 0222 8091 0000 lds r24,GPSInfo+6 |
380 0226 9091 0000 lds r25,(GPSInfo+6)+1 |
381 022a AA27 clr r26 |
382 022c 97FD sbrc r25,7 |
383 022e A095 com r26 |
384 0230 BA2F mov r27,r26 |
385 0232 8093 0000 sts JetiExData+185,r24 |
386 0236 9093 0000 sts (JetiExData+185)+1,r25 |
387 023a A093 0000 sts (JetiExData+185)+2,r26 |
388 023e B093 0000 sts (JetiExData+185)+3,r27 |
389 0242 8091 0000 lds r24,MaxBlTempertaure |
390 0246 9927 clr r25 |
391 0248 AA27 clr r26 |
392 024a BB27 clr r27 |
393 024c 8093 0000 sts JetiExData+204,r24 |
394 0250 9093 0000 sts (JetiExData+204)+1,r25 |
395 0254 A093 0000 sts (JetiExData+204)+2,r26 |
396 0258 B093 0000 sts (JetiExData+204)+3,r27 |
397 025c 8091 0000 lds r24,EarthMagneticField |
398 0260 9927 clr r25 |
399 0262 AA27 clr r26 |
400 0264 BB27 clr r27 |
401 0266 8093 0000 sts JetiExData+223,r24 |
402 026a 9093 0000 sts (JetiExData+223)+1,r25 |
403 026e A093 0000 sts (JetiExData+223)+2,r26 |
404 0272 B093 0000 sts (JetiExData+223)+3,r27 |
405 0276 8091 0000 lds r24,NC_ErrorCode |
406 027a 9927 clr r25 |
407 027c AA27 clr r26 |
408 027e BB27 clr r27 |
409 0280 8093 0000 sts JetiExData+261,r24 |
410 0284 9093 0000 sts (JetiExData+261)+1,r25 |
411 0288 A093 0000 sts (JetiExData+261)+2,r26 |
412 028c B093 0000 sts (JetiExData+261)+3,r27 |
413 /* epilogue: frame size=0 */ |
414 0290 1F91 pop r17 |
415 0292 0F91 pop r16 |
416 0294 0895 ret |
417 /* epilogue end (size=3) */ |
418 /* function JetiEX_Update size 196 (191) */ |
420 /* File "jeti_ex.c": code 334 = 0x014e ( 328), prologues 2, epilogues 4 */ |
DEFINED SYMBOLS |
*ABS*:00000000 jeti_ex.c |
C:\Temp/ccANnLno.s:3 *ABS*:0000003f __SREG__ |
C:\Temp/ccANnLno.s:4 *ABS*:0000003e __SP_H__ |
C:\Temp/ccANnLno.s:5 *ABS*:0000003d __SP_L__ |
C:\Temp/ccANnLno.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Temp/ccANnLno.s:7 *ABS*:00000001 __zero_reg__ |
C:\Temp/ccANnLno.s:14 .data:00000000 JetiExData |
C:\Temp/ccANnLno.s:99 .progmem.data:00000000 JETI_CODE |
.bss:00000000 JetiVarioMeter.0 |
C:\Temp/ccANnLno.s:157 .text:00000000 BuildJeti_Vario |
C:\Temp/ccANnLno.s:290 .text:0000010e JetiEX_Update |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
VarioMeter |
VarioCharacter |
EE_Parameter |
AltitudeSetpointTrimming |
FC_StatusFlags |
FromNC_AltitudeSpeed |
GetHottestBl |
UBat |
Capacity |
__udivmodhi4 |
HoehenWert |
__divmodsi4 |
KompassValue |
GPSInfo |
MaxBlTempertaure |
EarthMagneticField |
NC_ErrorCode |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/jetimenu.c |
---|
0,0 → 1,259 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software Nutzungsbedingungen (english version: see below) |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + der Fa. HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland - nachfolgend Lizenzgeber genannt - |
// + Der Lizenzgeber räumt dem Kunden ein nicht-ausschließliches, zeitlich und räumlich* unbeschränktes Recht ein, die im den |
// + Mikrocontroller verwendete Firmware für die Hardware Flight-Ctrl, Navi-Ctrl, BL-Ctrl, MK3Mag & PC-Programm MikroKopter-Tool |
// + - nachfolgend Software genannt - nur für private Zwecke zu nutzen. |
// + Der Einsatz dieser Software ist nur auf oder mit Produkten des Lizenzgebers zulässig. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die vom Lizenzgeber gelieferte Software ist urheberrechtlich geschützt. Alle Rechte an der Software sowie an sonstigen im |
// + Rahmen der Vertragsanbahnung und Vertragsdurchführung überlassenen Unterlagen stehen im Verhältnis der Vertragspartner ausschließlich dem Lizenzgeber zu. |
// + Die in der Software enthaltenen Copyright-Vermerke, Markenzeichen, andere Rechtsvorbehalte, Seriennummern sowie |
// + sonstige der Programmidentifikation dienenden Merkmale dürfen vom Kunden nicht verändert oder unkenntlich gemacht werden. |
// + Der Kunde trifft angemessene Vorkehrungen für den sicheren Einsatz der Software. Er wird die Software gründlich auf deren |
// + Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Die Haftung des Lizenzgebers wird - soweit gesetzlich zulässig - begrenzt in Höhe des typischen und vorhersehbaren |
// + Schadens. Die gesetzliche Haftung bei Personenschäden und nach dem Produkthaftungsgesetz bleibt unberührt. Dem Lizenzgeber steht jedoch der Einwand |
// + des Mitverschuldens offen. |
// + Der Kunde trifft angemessene Vorkehrungen für den Fall, dass die Software ganz oder teilweise nicht ordnungsgemäß arbeitet. |
// + Er wird die Software gründlich auf deren Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Der Kunde wird er seine Daten vor Einsatz der Software nach dem Stand der Technik sichern. |
// + Der Kunde ist darüber unterrichtet, dass der Lizenzgeber seine Daten im zur Vertragsdurchführung erforderlichen Umfang |
// + und auf Grundlage der Datenschutzvorschriften erhebt, speichert, verarbeitet und, sofern notwendig, an Dritte übermittelt. |
// + *) Die räumliche Nutzung bezieht sich nur auf den Einsatzort, nicht auf die Reichweite der programmierten Software. |
// + #### ENDE DER NUTZUNGSBEDINGUNGEN ####' |
// + Hinweis: Informationen über erweiterte Nutzungsrechte (wie z.B. Nutzung für nicht-private Zwecke) sind auf Anfrage per Email an info(@)hisystems.de verfügbar. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software LICENSING TERMS |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + of HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland, Germany - the Licensor - |
// + The Licensor grants the customer a non-exclusive license to use the microcontroller firmware of the Flight-Ctrl, Navi-Ctrl, BL-Ctrl, and MK3Mag hardware |
// + (the Software) exclusively for private purposes. The License is unrestricted with respect to time and territory*. |
// + The Software may only be used with the Licensor's products. |
// + The Software provided by the Licensor is protected by copyright. With respect to the relationship between the parties to this |
// + agreement, all rights pertaining to the Software and other documents provided during the preparation and execution of this |
// + agreement shall be the property of the Licensor. |
// + The information contained in the Software copyright notices, trademarks, other legal reservations, serial numbers and other |
// + features that can be used to identify the program may not be altered or defaced by the customer. |
// + The customer shall be responsible for taking reasonable precautions |
// + for the safe use of the Software. The customer shall test the Software thoroughly regarding its suitability for the |
// + intended purpose before implementing it for actual operation. The Licensor's liability shall be limited to the extent of typical and |
// + foreseeable damage to the extent permitted by law, notwithstanding statutory liability for bodily injury and product |
// + liability. However, the Licensor shall be entitled to the defense of contributory negligence. |
// + The customer will take adequate precautions in the case, that the software is not working properly. The customer will test |
// + the software for his purpose before any operational usage. The customer will backup his data before using the software. |
// + The customer understands that the Licensor collects, stores and processes, and, where required, forwards, customer data |
// + to third parties to the extent necessary for executing the agreement, subject to applicable data protection and privacy regulations. |
// + *) The territory aspect only refers to the place where the Software is used, not its programmed range. |
// + #### END OF LICENSING TERMS #### |
// + Note: For information on license extensions (e.g. commercial use), please contact us at info(@)hisystems.de. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "jetimenu.h" |
#include "libfc.h" |
#include "printf_P.h" |
#include "main.h" |
#include "spi.h" |
#include "capacity.h" |
#include "hottmenu.h" |
#define JETIBOX_KEY_RIGHT 0x1F |
#define JETIBOX_KEY_UP 0x2F |
#define JETIBOX_KEY_DOWN 0x4F |
#define JETIBOX_KEY_LEFT 0x8F |
#define JETIBOX_KEY_NONE 0x0F |
#define JETIBOX_KEY_UNDEF 0x00 |
#define JetiBox_printfxy(x,y,format, args...) { LIBFC_JetiBox_SetPos(y * 16 + x); _printf_P(&LIBFC_JetiBox_Putchar, PSTR(format) , ## args);} |
#define JetiBox_printf(format, args...) { _printf_P(&LIBFC_JetiBox_Putchar, PSTR(format) , ## args);} |
// ----------------------------------------------------------- |
// the menu functions |
// ----------------------------------------------------------- |
void Menu_Status(uint8_t key) |
{ //0123456789ABCDEF |
#if !defined (RECEIVER_SPEKTRUM_DX7EXP) && !defined (RECEIVER_SPEKTRUM_DX8EXP) |
JetiBox_printfxy(0,0,"%2i.%1iV",UBat/10, UBat%10); |
if(NaviDataOkay) |
{ |
JetiBox_printfxy(6,0,"%3d%c %03dm%c",ErsatzKompassInGrad, 0xDF, GPSInfo.HomeDistance/10,NC_GPS_ModeCharacter); |
} |
else |
{ |
JetiBox_printfxy(6,0,"Status"); |
} |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
if(NC_ErrorCode) |
{ |
static unsigned int timer; |
static char toggle = 1; |
if(CheckDelay(timer)) { if(toggle) toggle = 0; else toggle = 1; timer = SetDelay(1500);}; |
if(toggle) |
{ |
LIBFC_JetiBox_SetPos(0); |
_printf_P(&LIBFC_JetiBox_Putchar, NC_ERROR_TEXT[NC_ErrorCode] , 0); |
} |
else |
{ |
JetiBox_printfxy(6,0,"ERROR: %2d ",NC_ErrorCode); |
if(MotorenEin) JetiBeep = 'O'; |
} |
} |
#else |
if(NC_ErrorCode) { JetiBox_printfxy(6,0,"ERROR: %2d ",NC_ErrorCode); if(MotorenEin) JetiBeep = 'O';}; |
#endif |
JetiBox_printfxy(0,1,"%4i %2i:%02i",Capacity.UsedCapacity,FlugSekunden/60,FlugSekunden%60); |
if(Parameter_GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
JetiBox_printfxy(10,1,"%4im%c", (int16_t)(HoehenWert/100),VarioCharacter); |
} |
#endif |
} |
void Menu_Temperature(uint8_t key) |
{ //0123456789ABCDEF |
#if !defined (RECEIVER_SPEKTRUM_DX7EXP) && !defined (RECEIVER_SPEKTRUM_DX8EXP) |
JetiBox_printfxy(0,0,"%3i %3i %3i %3i", Motor[0].Temperature, Motor[1].Temperature, Motor[2].Temperature, Motor[3].Temperature); |
JetiBox_printfxy(0,1,"%3i %3i %3i %3i", Motor[4].Temperature, Motor[5].Temperature, Motor[6].Temperature, Motor[7].Temperature); |
if(RequiredMotors <= 4) |
{ |
JetiBox_printfxy(0,1,"Temperatures "); |
} |
else |
if(RequiredMotors <= 6) |
{ |
JetiBox_printfxy(8,1,"\%cC ",0xdf); |
} |
#endif |
} |
void Menu_Battery(uint8_t key) |
{ //0123456789ABCDEF |
#if !defined (RECEIVER_SPEKTRUM_DX7EXP) && !defined (RECEIVER_SPEKTRUM_DX8EXP) |
JetiBox_printfxy(0,0,"%2i.%1iV %3i.%1iA", UBat/10, UBat%10, Capacity.ActualCurrent/10, Capacity.ActualCurrent%10); |
JetiBox_printfxy(0,1,"%4iW %6imAh",Capacity.ActualPower, Capacity.UsedCapacity); |
#endif |
} |
void Magnet_Values(uint8_t key) |
{ //0123456789ABCDEF |
#if !defined (RECEIVER_SPEKTRUM_DX7EXP) && !defined (RECEIVER_SPEKTRUM_DX8EXP) |
JetiBox_printfxy(0,0,"Magnet:%3i%% %3i%c",EarthMagneticField, KompassValue,0xDF); |
JetiBox_printfxy(0,1,"Incli.:%3i%c (%i) ",EarthMagneticInclination, 0xDF,EarthMagneticInclinationTheoretic); |
#endif |
} |
void Menu_PosInfo(uint8_t key) |
{ |
#if !defined (RECEIVER_SPEKTRUM_DX7EXP) && !defined (RECEIVER_SPEKTRUM_DX8EXP) |
if(NaviDataOkay) |
{ |
JetiBox_printfxy(0,0,"%2um/s Sat:%d ",GPSInfo.Speed,GPSInfo.NumOfSats); |
switch (GPSInfo.SatFix) |
{ |
case SATFIX_3D: |
JetiBox_printfxy(12,0," 3D"); |
break; |
// case SATFIX_2D: |
// case SATFIX_NONE: |
default: |
JetiBox_printfxy(12,0,"NoFx"); |
break; |
} |
if(GPSInfo.Flags & FLAG_DIFFSOLN) |
{ |
JetiBox_printfxy(12,0,"DGPS"); |
} |
JetiBox_printfxy(0,1,"Home:%3dm %3d%c %c", GPSInfo.HomeDistance/10, GPSInfo.HomeBearing, 0xDF,NC_GPS_ModeCharacter); |
} |
else |
{ //0123456789ABCDEF |
JetiBox_printfxy(2,0,"No NaviCtrl!"); |
} |
#endif |
} |
// ----------------------------------------------------------- |
// the menu topology |
// ----------------------------------------------------------- |
typedef void (*pFctMenu) (uint8_t); // the menu item handler function pointer |
typedef struct{ |
int8_t left; |
int8_t right; |
int8_t up; |
int8_t down; |
pFctMenu pHandler; |
} MENU_ENTRY; |
// the menu navigation structure |
/* | |
3 - 0 - 1 - 2 - 3 - 0 |
*/ |
const MENU_ENTRY JetiBox_Menu[] PROGMEM= |
{ // l r u d pHandler |
#if !defined (RECEIVER_SPEKTRUM_DX7EXP) && !defined (RECEIVER_SPEKTRUM_DX8EXP) |
{4, 1, 0, 0, &Menu_Status }, // 0 |
{0, 2, 1, 1, &Menu_Temperature }, // 1 |
{1, 3, 2, 2, &Menu_Battery }, // 2 |
{2, 4, 3, 3, &Menu_PosInfo }, // 3 |
{3, 0, 4, 4, &Magnet_Values } // 4 |
#endif |
}; |
// ----------------------------------------------------------- |
// Update display buffer |
// ----------------------------------------------------------- |
unsigned char JetiBox_Update(unsigned char key) |
{ |
#if !defined (RECEIVER_SPEKTRUM_DX7EXP) && !defined (RECEIVER_SPEKTRUM_DX8EXP) |
static uint8_t item = 0, last_item = 0; // the menu item |
static uint8_t updateDelay = 1; |
// navigate within the menu by key action |
last_item = item; |
switch(key) |
{ |
case JETIBOX_KEY_LEFT: |
//if (item == 0) return (1); // switch back to jeti expander menu |
// else |
item = pgm_read_byte(&JetiBox_Menu[item].left); //trigger to left menu item |
break; |
case JETIBOX_KEY_RIGHT: |
item = pgm_read_byte(&JetiBox_Menu[item].right); //trigger to right menu item |
break; |
case JETIBOX_KEY_UP: |
item = pgm_read_byte(&JetiBox_Menu[item].up); //trigger to up menu item |
break; |
case JETIBOX_KEY_DOWN: |
item = pgm_read_byte(&JetiBox_Menu[item].down); //trigger to down menu item |
break; |
default: |
break; |
} |
// if the menu item has been changed, do not pass the key to the item handler |
// to avoid jumping over to items |
if(item != last_item) key = JETIBOX_KEY_UNDEF; |
if (updateDelay++ & 0x01) |
{ |
LIBFC_JetiBox_Clear(); |
//execute menu item handler |
((pFctMenu)(pgm_read_word(&(JetiBox_Menu[item].pHandler))))(key); |
} |
#endif |
return (0); |
} |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/jetimenu.h |
---|
0,0 → 1,6 |
#ifndef _JETIMENU_H |
#define _JETIMENU_H |
extern unsigned char JetiBox_Update(unsigned char key); |
#endif //_JETIMENU_H |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/jetimenu.lst |
---|
0,0 → 1,82 |
1 .file "jetimenu.c" |
2 .arch atmega1284p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .global JetiBox_Menu |
11 .section .progmem.data,"a",@progbits |
14 JetiBox_Menu: |
15 .text |
16 .global Menu_Status |
18 Menu_Status: |
19 /* prologue: frame size=0 */ |
20 /* prologue end (size=0) */ |
21 /* epilogue: frame size=0 */ |
22 0000 0895 ret |
23 /* epilogue end (size=1) */ |
24 /* function Menu_Status size 1 (0) */ |
26 .global Menu_Temperature |
28 Menu_Temperature: |
29 /* prologue: frame size=0 */ |
30 /* prologue end (size=0) */ |
31 /* epilogue: frame size=0 */ |
32 0002 0895 ret |
33 /* epilogue end (size=1) */ |
34 /* function Menu_Temperature size 1 (0) */ |
36 .global Menu_Battery |
38 Menu_Battery: |
39 /* prologue: frame size=0 */ |
40 /* prologue end (size=0) */ |
41 /* epilogue: frame size=0 */ |
42 0004 0895 ret |
43 /* epilogue end (size=1) */ |
44 /* function Menu_Battery size 1 (0) */ |
46 .global Magnet_Values |
48 Magnet_Values: |
49 /* prologue: frame size=0 */ |
50 /* prologue end (size=0) */ |
51 /* epilogue: frame size=0 */ |
52 0006 0895 ret |
53 /* epilogue end (size=1) */ |
54 /* function Magnet_Values size 1 (0) */ |
56 .global Menu_PosInfo |
58 Menu_PosInfo: |
59 /* prologue: frame size=0 */ |
60 /* prologue end (size=0) */ |
61 /* epilogue: frame size=0 */ |
62 0008 0895 ret |
63 /* epilogue end (size=1) */ |
64 /* function Menu_PosInfo size 1 (0) */ |
66 .global JetiBox_Update |
68 JetiBox_Update: |
69 /* prologue: frame size=0 */ |
70 /* prologue end (size=0) */ |
71 000a 80E0 ldi r24,lo8(0) |
72 000c 90E0 ldi r25,hi8(0) |
73 /* epilogue: frame size=0 */ |
74 000e 0895 ret |
75 /* epilogue end (size=1) */ |
76 /* function JetiBox_Update size 3 (2) */ |
78 /* File "jetimenu.c": code 8 = 0x0008 ( 2), prologues 0, epilogues 6 */ |
DEFINED SYMBOLS |
*ABS*:00000000 jetimenu.c |
C:\Temp/ccvRbAMN.s:3 *ABS*:0000003f __SREG__ |
C:\Temp/ccvRbAMN.s:4 *ABS*:0000003e __SP_H__ |
C:\Temp/ccvRbAMN.s:5 *ABS*:0000003d __SP_L__ |
C:\Temp/ccvRbAMN.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Temp/ccvRbAMN.s:7 *ABS*:00000001 __zero_reg__ |
C:\Temp/ccvRbAMN.s:14 .progmem.data:00000000 JetiBox_Menu |
C:\Temp/ccvRbAMN.s:18 .text:00000000 Menu_Status |
C:\Temp/ccvRbAMN.s:28 .text:00000002 Menu_Temperature |
C:\Temp/ccvRbAMN.s:38 .text:00000004 Menu_Battery |
C:\Temp/ccvRbAMN.s:48 .text:00000006 Magnet_Values |
C:\Temp/ccvRbAMN.s:58 .text:00000008 Menu_PosInfo |
C:\Temp/ccvRbAMN.s:68 .text:0000000a JetiBox_Update |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/led.c |
---|
0,0 → 1,127 |
#include <inttypes.h> |
#include "main.h" |
uint16_t LED1_Timing = 0; |
uint16_t LED2_Timing = 0; |
unsigned char J16Blinkcount = 0, J16Mask = 1; |
unsigned char J17Blinkcount = 0, J17Mask = 1; |
// initializes the LED control outputs J16, J17 |
void LED_Init(void) |
{ |
// set PC2 & PC3 as output (control of J16 & J17) |
DDRC |= (1<<DDC2)|(1<<DDC3); |
J16_OFF; |
J17_OFF; |
J16Blinkcount = 0; J16Mask = 128; |
J17Blinkcount = 0; J17Mask = 128; |
} |
// called in UpdateMotors() every 2ms |
void LED_Update(void) |
{ |
static char delay = 0; |
static unsigned char J16Bitmask = 0; |
static unsigned char J17Bitmask = 0; |
static unsigned char J16Warn = 0, J17Warn = 0; |
static unsigned char from_nc = 0; |
if(!delay--) // 20ms Intervall |
{ |
delay = 9; |
if(FromNC_WP_EventChannel != -127) from_nc = (unsigned char) FromNC_WP_EventChannel + 127; |
if(FC_StatusFlags & (FC_STATUS_LOWBAT | FC_STATUS_EMERGENCY_LANDING) || (VersionInfo.HardwareError[1] & FC_ERROR1_I2C)) |
{ |
if(EE_Parameter.WARN_J16_Bitmask) |
{ |
if(!J16Warn) J16Blinkcount = 4; |
J16Warn = 1; |
} |
if(EE_Parameter.WARN_J17_Bitmask) |
{ |
if(!J17Warn) J17Blinkcount = 4; |
J17Warn = 1; |
} |
} |
else |
{ |
J16Warn = 0; |
J17Warn = 0; |
J16Bitmask = EE_Parameter.J16Bitmask; |
J17Bitmask = EE_Parameter.J17Bitmask; |
} |
//DebugOut.Analog[29] = EE_Parameter.GlobalConfig3; |
// Output 1 |
if(!J16Warn) |
{ |
if((EE_Parameter.BitConfig & CFG_MOTOR_BLINK1) && !MotorenEin) {if(EE_Parameter.BitConfig & CFG_MOTOR_OFF_LED1) J16_ON; else J16_OFF;} |
else |
if((EE_Parameter.J16Timing > 247) && (Parameter_J16Timing > 220)) {if(J16Bitmask & 128) J16_ON; else J16_OFF; J16Mask = 1;} |
else |
if((EE_Parameter.J16Timing > 247) && (Parameter_J16Timing == 5)) {if(J16Bitmask & 128) J16_OFF; else J16_ON; J16Mask = 1;} |
else |
if(!J16Blinkcount--) |
{ |
if(EE_Parameter.GlobalConfig3 & CFG3_USE_NC_FOR_OUT1) |
{ |
J16Blinkcount = from_nc / 2; |
if(!from_nc) { if(J16Bitmask & 128) J16_OFF; else J16_ON; J16Mask = 0; } // Ausschalten |
else |
{ |
if(J16Mask == 0) |
{ |
from_nc = 0; |
J16Mask = 128; |
if(J16Bitmask & 128) J16_OFF; else J16_ON; // Ausschalten |
} |
else |
{ |
if(J16Mask & J16Bitmask) J16_ON; else J16_OFF; |
J16Mask /= 2; |
} |
} |
} |
else |
{ |
J16Blinkcount = Parameter_J16Timing / 2; |
if(J16Mask == 1) { from_nc = 0; J16Mask = 128; } else J16Mask /= 2; |
if(J16Mask & J16Bitmask) J16_ON; else J16_OFF; |
} |
} |
} |
else // warning case |
if(!J16Blinkcount--) |
{ |
J16Blinkcount = 10-1; |
if(J16Mask == 1) J16Mask = 128; else J16Mask /= 2; |
if(J16Mask & EE_Parameter.WARN_J16_Bitmask) J16_ON; else J16_OFF; |
} |
// Output 2 |
if(!J17Warn) |
{ |
if((EE_Parameter.BitConfig & CFG_MOTOR_BLINK2) && !MotorenEin) {if(EE_Parameter.BitConfig & CFG_MOTOR_OFF_LED2) J17_ON; else J17_OFF;} |
else |
if((EE_Parameter.J17Timing > 247) && (Parameter_J17Timing > 220)) {if(J17Bitmask & 128) J17_ON; else J17_OFF; J17Mask = 1;} |
else |
if((EE_Parameter.J17Timing > 247) && (Parameter_J17Timing == 5)) {if(J17Bitmask & 128) J17_OFF; else J17_ON; J17Mask = 1;} |
else |
if(!J17Blinkcount--) |
{ |
J17Blinkcount = Parameter_J17Timing / 2; |
if(J17Mask == 1) J17Mask = 128; else J17Mask /= 2; |
if(J17Mask & J17Bitmask) J17_ON; else J17_OFF; |
} |
} |
else // warning case |
if(!J17Blinkcount--) |
{ |
J17Blinkcount = 10-1; |
if(J17Mask == 1) J17Mask = 128; else J17Mask /= 2; |
if(J17Mask & EE_Parameter.WARN_J17_Bitmask) J17_ON; else J17_OFF; |
} |
if(PORTC & (1<<PORTC2)) FC_StatusFlags2 |= FC_STATUS2_OUT1_ACTIVE; else FC_StatusFlags2 &= ~FC_STATUS2_OUT1_ACTIVE; // Out1 (J16) |
if(PORTC & (1<<PORTC3)) FC_StatusFlags2 |= FC_STATUS2_OUT2_ACTIVE; else FC_StatusFlags2 &= ~FC_STATUS2_OUT2_ACTIVE; // Out2 (J17) |
} |
} |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/led.h |
---|
0,0 → 1,11 |
#include <avr/io.h> |
#define J16_ON PORTC |= (1<<PORTC2) |
#define J16_OFF PORTC &= ~(1<<PORTC2) |
#define J16_TOGGLE PORTC ^= (1<<PORTC2) |
#define J17_ON PORTC |= (1<<PORTC3) |
#define J17_OFF PORTC &= ~(1<<PORTC3) |
#define J17_TOGGLE PORTC ^= (1<<PORTC3) |
extern void LED_Init(void); |
extern void LED_Update(void); |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/led.lst |
---|
0,0 → 1,412 |
1 .file "led.c" |
2 .arch atmega1284p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .global J17Mask |
11 .data |
14 J17Mask: |
15 0000 01 .byte 1 |
16 .global J17Blinkcount |
17 .global J17Blinkcount |
18 .section .bss |
21 J17Blinkcount: |
22 0000 00 .skip 1,0 |
23 .global J16Mask |
24 .data |
27 J16Mask: |
28 0001 01 .byte 1 |
29 .global J16Blinkcount |
30 .global J16Blinkcount |
31 .section .bss |
34 J16Blinkcount: |
35 0001 00 .skip 1,0 |
36 .global LED2_Timing |
37 .global LED2_Timing |
40 LED2_Timing: |
41 0002 0000 .skip 2,0 |
42 .global LED1_Timing |
43 .global LED1_Timing |
46 LED1_Timing: |
47 0004 0000 .skip 2,0 |
48 .text |
49 .global LED_Init |
51 LED_Init: |
52 /* prologue: frame size=0 */ |
53 /* prologue end (size=0) */ |
54 0000 87B1 in r24,39-0x20 |
55 0002 8C60 ori r24,lo8(12) |
56 0004 87B9 out 39-0x20,r24 |
57 0006 4298 cbi 40-0x20,2 |
58 0008 4398 cbi 40-0x20,3 |
59 000a 1092 0000 sts J16Blinkcount,__zero_reg__ |
60 000e 80E8 ldi r24,lo8(-128) |
61 0010 8093 0000 sts J16Mask,r24 |
62 0014 1092 0000 sts J17Blinkcount,__zero_reg__ |
63 0018 8093 0000 sts J17Mask,r24 |
64 /* epilogue: frame size=0 */ |
65 001c 0895 ret |
66 /* epilogue end (size=1) */ |
67 /* function LED_Init size 15 (14) */ |
69 .lcomm delay.0,1 |
70 .lcomm J16Bitmask.1,1 |
71 .lcomm J17Bitmask.2,1 |
72 .lcomm J16Warn.3,1 |
73 .lcomm J17Warn.4,1 |
74 .lcomm from_nc.5,1 |
75 .global LED_Update |
77 LED_Update: |
78 /* prologue: frame size=0 */ |
79 /* prologue end (size=0) */ |
80 001e 8091 0000 lds r24,delay.0 |
81 0022 8150 subi r24,lo8(-(-1)) |
82 0024 8093 0000 sts delay.0,r24 |
83 0028 8F3F cpi r24,lo8(-1) |
84 002a 01F0 breq .+2 |
85 002c 00C0 rjmp .L2 |
86 002e 89E0 ldi r24,lo8(9) |
87 0030 8093 0000 sts delay.0,r24 |
88 0034 8091 0000 lds r24,PPM_in+50 |
89 0038 9091 0000 lds r25,(PPM_in+50)+1 |
90 003c 8158 subi r24,lo8(-127) |
91 003e 9F4F sbci r25,hi8(-127) |
92 0040 01F0 breq .L4 |
93 0042 8091 0000 lds r24,PPM_in+50 |
94 0046 9091 0000 lds r25,(PPM_in+50)+1 |
95 004a 8158 subi r24,lo8(-(127)) |
96 004c 8093 0000 sts from_nc.5,r24 |
97 .L4: |
98 0050 8091 0000 lds r24,FC_StatusFlags |
99 0054 9927 clr r25 |
100 0056 8073 andi r24,lo8(48) |
101 0058 9070 andi r25,hi8(48) |
102 005a 892B or r24,r25 |
103 005c 01F4 brne .L6 |
104 005e 8091 0000 lds r24,VersionInfo+6 |
105 0062 80FF sbrs r24,0 |
106 0064 00C0 rjmp .L5 |
107 .L6: |
108 0066 8091 0000 lds r24,EE_Parameter+78 |
109 006a 8823 tst r24 |
110 006c 01F0 breq .L7 |
111 006e 8091 0000 lds r24,J16Warn.3 |
112 0072 8823 tst r24 |
113 0074 01F4 brne .L8 |
114 0076 84E0 ldi r24,lo8(4) |
115 0078 8093 0000 sts J16Blinkcount,r24 |
116 .L8: |
117 007c 81E0 ldi r24,lo8(1) |
118 007e 8093 0000 sts J16Warn.3,r24 |
119 .L7: |
120 0082 8091 0000 lds r24,EE_Parameter+79 |
121 0086 8823 tst r24 |
122 0088 01F0 breq .L11 |
123 008a 8091 0000 lds r24,J17Warn.4 |
124 008e 8823 tst r24 |
125 0090 01F4 brne .L10 |
126 0092 84E0 ldi r24,lo8(4) |
127 0094 8093 0000 sts J17Blinkcount,r24 |
128 .L10: |
129 0098 81E0 ldi r24,lo8(1) |
130 009a 8093 0000 sts J17Warn.4,r24 |
131 009e 00C0 rjmp .L11 |
132 .L5: |
133 00a0 1092 0000 sts J16Warn.3,__zero_reg__ |
134 00a4 1092 0000 sts J17Warn.4,__zero_reg__ |
135 00a8 8091 0000 lds r24,EE_Parameter+74 |
136 00ac 8093 0000 sts J16Bitmask.1,r24 |
137 00b0 8091 0000 lds r24,EE_Parameter+76 |
138 00b4 8093 0000 sts J17Bitmask.2,r24 |
139 .L11: |
140 00b8 8091 0000 lds r24,J16Warn.3 |
141 00bc 8823 tst r24 |
142 00be 01F0 breq .+2 |
143 00c0 00C0 rjmp .L12 |
144 00c2 8091 0000 lds r24,EE_Parameter+108 |
145 00c6 282F mov r18,r24 |
146 00c8 3327 clr r19 |
147 00ca 24FF sbrs r18,4 |
148 00cc 00C0 rjmp .L13 |
149 00ce 8091 0000 lds r24,MotorenEin |
150 00d2 8823 tst r24 |
151 00d4 01F4 brne .L13 |
152 00d6 25FD sbrc r18,5 |
153 00d8 00C0 rjmp .L78 |
154 00da 00C0 rjmp .L46 |
155 .L13: |
156 00dc 9091 0000 lds r25,EE_Parameter+75 |
157 00e0 983F cpi r25,lo8(-8) |
158 00e2 00F0 brlo .L17 |
159 00e4 8091 0000 lds r24,Parameter_J16Timing |
160 00e8 8D3D cpi r24,lo8(-35) |
161 00ea 00F0 brlo .L17 |
162 00ec 8091 0000 lds r24,J16Bitmask.1 |
163 00f0 8823 tst r24 |
164 00f2 04F0 brlt .L22 |
165 00f4 00C0 rjmp .L87 |
166 .L17: |
167 00f6 983F cpi r25,lo8(-8) |
168 00f8 00F0 brlo .L21 |
169 00fa 8091 0000 lds r24,Parameter_J16Timing |
170 00fe 8530 cpi r24,lo8(5) |
171 0100 01F4 brne .L21 |
172 0102 8091 0000 lds r24,J16Bitmask.1 |
173 0106 87FF sbrs r24,7 |
174 0108 00C0 rjmp .L22 |
175 .L87: |
176 010a 4298 cbi 40-0x20,2 |
177 010c 00C0 rjmp .L23 |
178 .L22: |
179 010e 429A sbi 40-0x20,2 |
180 .L23: |
181 0110 81E0 ldi r24,lo8(1) |
182 0112 00C0 rjmp .L79 |
183 .L21: |
184 0114 8091 0000 lds r24,J16Blinkcount |
185 0118 8150 subi r24,lo8(-(-1)) |
186 011a 8093 0000 sts J16Blinkcount,r24 |
187 011e 8F3F cpi r24,lo8(-1) |
188 0120 01F0 breq .+2 |
189 0122 00C0 rjmp .L42 |
190 0124 8091 0000 lds r24,EE_Parameter+111 |
191 0128 85FF sbrs r24,5 |
192 012a 00C0 rjmp .L26 |
193 012c 9091 0000 lds r25,from_nc.5 |
194 0130 892F mov r24,r25 |
195 0132 8695 lsr r24 |
196 0134 8093 0000 sts J16Blinkcount,r24 |
197 0138 9923 tst r25 |
198 013a 01F4 brne .L27 |
199 013c 8091 0000 lds r24,J16Bitmask.1 |
200 0140 87FF sbrs r24,7 |
201 0142 00C0 rjmp .L28 |
202 0144 4298 cbi 40-0x20,2 |
203 0146 00C0 rjmp .L29 |
204 .L28: |
205 0148 429A sbi 40-0x20,2 |
206 .L29: |
207 014a 1092 0000 sts J16Mask,__zero_reg__ |
208 014e 00C0 rjmp .L42 |
209 .L27: |
210 0150 8091 0000 lds r24,J16Mask |
211 0154 9091 0000 lds r25,J16Bitmask.1 |
212 0158 8823 tst r24 |
213 015a 01F4 brne .L31 |
214 015c 8093 0000 sts from_nc.5,r24 |
215 0160 80E8 ldi r24,lo8(-128) |
216 0162 8093 0000 sts J16Mask,r24 |
217 0166 9923 tst r25 |
218 0168 04F0 brlt .L46 |
219 016a 00C0 rjmp .L78 |
220 .L31: |
221 016c 9823 and r25,r24 |
222 016e 01F0 breq .L35 |
223 0170 429A sbi 40-0x20,2 |
224 0172 00C0 rjmp .L36 |
225 .L35: |
226 0174 4298 cbi 40-0x20,2 |
227 .L36: |
228 0176 8695 lsr r24 |
229 .L79: |
230 0178 8093 0000 sts J16Mask,r24 |
231 017c 00C0 rjmp .L42 |
232 .L26: |
233 017e 8091 0000 lds r24,Parameter_J16Timing |
234 0182 8695 lsr r24 |
235 0184 8093 0000 sts J16Blinkcount,r24 |
236 0188 8091 0000 lds r24,J16Mask |
237 018c 8130 cpi r24,lo8(1) |
238 018e 01F4 brne .L38 |
239 0190 1092 0000 sts from_nc.5,__zero_reg__ |
240 0194 80E8 ldi r24,lo8(-128) |
241 0196 00C0 rjmp .L76 |
242 .L38: |
243 0198 8695 lsr r24 |
244 .L76: |
245 019a 8093 0000 sts J16Mask,r24 |
246 019e 8091 0000 lds r24,J16Mask |
247 01a2 9091 0000 lds r25,J16Bitmask.1 |
248 01a6 00C0 rjmp .L84 |
249 .L12: |
250 01a8 8091 0000 lds r24,J16Blinkcount |
251 01ac 8150 subi r24,lo8(-(-1)) |
252 01ae 8093 0000 sts J16Blinkcount,r24 |
253 01b2 8F3F cpi r24,lo8(-1) |
254 01b4 01F4 brne .L42 |
255 01b6 89E0 ldi r24,lo8(9) |
256 01b8 8093 0000 sts J16Blinkcount,r24 |
257 01bc 8091 0000 lds r24,J16Mask |
258 01c0 8130 cpi r24,lo8(1) |
259 01c2 01F4 brne .L44 |
260 01c4 80E8 ldi r24,lo8(-128) |
261 01c6 00C0 rjmp .L77 |
262 .L44: |
263 01c8 8695 lsr r24 |
264 .L77: |
265 01ca 8093 0000 sts J16Mask,r24 |
266 01ce 8091 0000 lds r24,J16Mask |
267 01d2 9091 0000 lds r25,EE_Parameter+78 |
268 .L84: |
269 01d6 8923 and r24,r25 |
270 01d8 01F0 breq .L46 |
271 .L78: |
272 01da 429A sbi 40-0x20,2 |
273 01dc 00C0 rjmp .L42 |
274 .L46: |
275 01de 4298 cbi 40-0x20,2 |
276 .L42: |
277 01e0 8091 0000 lds r24,J17Warn.4 |
278 01e4 8823 tst r24 |
279 01e6 01F0 breq .+2 |
280 01e8 00C0 rjmp .L48 |
281 01ea 9091 0000 lds r25,EE_Parameter+108 |
282 01ee 97FF sbrs r25,7 |
283 01f0 00C0 rjmp .L49 |
284 01f2 8091 0000 lds r24,MotorenEin |
285 01f6 8823 tst r24 |
286 01f8 01F4 brne .L49 |
287 01fa 96FD sbrc r25,6 |
288 01fc 00C0 rjmp .L82 |
289 01fe 00C0 rjmp .L70 |
290 .L49: |
291 0200 9091 0000 lds r25,EE_Parameter+77 |
292 0204 983F cpi r25,lo8(-8) |
293 0206 00F0 brlo .L53 |
294 0208 8091 0000 lds r24,Parameter_J17Timing |
295 020c 8D3D cpi r24,lo8(-35) |
296 020e 00F0 brlo .L53 |
297 0210 8091 0000 lds r24,J17Bitmask.2 |
298 0214 8823 tst r24 |
299 0216 04F0 brlt .L58 |
300 0218 00C0 rjmp .L85 |
301 .L53: |
302 021a 983F cpi r25,lo8(-8) |
303 021c 00F0 brlo .L57 |
304 021e 8091 0000 lds r24,Parameter_J17Timing |
305 0222 8530 cpi r24,lo8(5) |
306 0224 01F4 brne .L57 |
307 0226 8091 0000 lds r24,J17Bitmask.2 |
308 022a 87FF sbrs r24,7 |
309 022c 00C0 rjmp .L58 |
310 .L85: |
311 022e 4398 cbi 40-0x20,3 |
312 0230 00C0 rjmp .L59 |
313 .L58: |
314 0232 439A sbi 40-0x20,3 |
315 .L59: |
316 0234 81E0 ldi r24,lo8(1) |
317 0236 8093 0000 sts J17Mask,r24 |
318 023a 00C0 rjmp .L66 |
319 .L57: |
320 023c 8091 0000 lds r24,J17Blinkcount |
321 0240 8150 subi r24,lo8(-(-1)) |
322 0242 8093 0000 sts J17Blinkcount,r24 |
323 0246 8F3F cpi r24,lo8(-1) |
324 0248 01F4 brne .L66 |
325 024a 8091 0000 lds r24,Parameter_J17Timing |
326 024e 8695 lsr r24 |
327 0250 8093 0000 sts J17Blinkcount,r24 |
328 0254 8091 0000 lds r24,J17Mask |
329 0258 8130 cpi r24,lo8(1) |
330 025a 01F4 brne .L62 |
331 025c 80E8 ldi r24,lo8(-128) |
332 025e 00C0 rjmp .L80 |
333 .L62: |
334 0260 8695 lsr r24 |
335 .L80: |
336 0262 8093 0000 sts J17Mask,r24 |
337 0266 8091 0000 lds r24,J17Mask |
338 026a 9091 0000 lds r25,J17Bitmask.2 |
339 026e 00C0 rjmp .L86 |
340 .L48: |
341 0270 8091 0000 lds r24,J17Blinkcount |
342 0274 8150 subi r24,lo8(-(-1)) |
343 0276 8093 0000 sts J17Blinkcount,r24 |
344 027a 8F3F cpi r24,lo8(-1) |
345 027c 01F4 brne .L66 |
346 027e 89E0 ldi r24,lo8(9) |
347 0280 8093 0000 sts J17Blinkcount,r24 |
348 0284 8091 0000 lds r24,J17Mask |
349 0288 8130 cpi r24,lo8(1) |
350 028a 01F4 brne .L68 |
351 028c 80E8 ldi r24,lo8(-128) |
352 028e 00C0 rjmp .L81 |
353 .L68: |
354 0290 8695 lsr r24 |
355 .L81: |
356 0292 8093 0000 sts J17Mask,r24 |
357 0296 8091 0000 lds r24,J17Mask |
358 029a 9091 0000 lds r25,EE_Parameter+79 |
359 .L86: |
360 029e 8923 and r24,r25 |
361 02a0 01F0 breq .L70 |
362 .L82: |
363 02a2 439A sbi 40-0x20,3 |
364 02a4 00C0 rjmp .L66 |
365 .L70: |
366 02a6 4398 cbi 40-0x20,3 |
367 .L66: |
368 02a8 429B sbis 40-0x20,2 |
369 02aa 00C0 rjmp .L72 |
370 02ac 8091 0000 lds r24,FC_StatusFlags2 |
371 02b0 8860 ori r24,lo8(8) |
372 02b2 00C0 rjmp .L83 |
373 .L72: |
374 02b4 8091 0000 lds r24,FC_StatusFlags2 |
375 02b8 877F andi r24,lo8(-9) |
376 .L83: |
377 02ba 8093 0000 sts FC_StatusFlags2,r24 |
378 02be 439B sbis 40-0x20,3 |
379 02c0 00C0 rjmp .L74 |
380 02c2 8091 0000 lds r24,FC_StatusFlags2 |
381 02c6 8061 ori r24,lo8(16) |
382 02c8 8093 0000 sts FC_StatusFlags2,r24 |
383 02cc 0895 ret |
384 .L74: |
385 02ce 8091 0000 lds r24,FC_StatusFlags2 |
386 02d2 8F7E andi r24,lo8(-17) |
387 02d4 8093 0000 sts FC_StatusFlags2,r24 |
388 .L2: |
389 02d8 0895 ret |
390 /* epilogue: frame size=0 */ |
391 /* epilogue: noreturn */ |
392 /* epilogue end (size=0) */ |
393 /* function LED_Update size 357 (357) */ |
395 /* File "led.c": code 372 = 0x0174 ( 371), prologues 0, epilogues 1 */ |
DEFINED SYMBOLS |
*ABS*:00000000 led.c |
C:\Temp/ccffEeZr.s:3 *ABS*:0000003f __SREG__ |
C:\Temp/ccffEeZr.s:4 *ABS*:0000003e __SP_H__ |
C:\Temp/ccffEeZr.s:5 *ABS*:0000003d __SP_L__ |
C:\Temp/ccffEeZr.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Temp/ccffEeZr.s:7 *ABS*:00000001 __zero_reg__ |
C:\Temp/ccffEeZr.s:14 .data:00000000 J17Mask |
C:\Temp/ccffEeZr.s:21 .bss:00000000 J17Blinkcount |
C:\Temp/ccffEeZr.s:27 .data:00000001 J16Mask |
C:\Temp/ccffEeZr.s:34 .bss:00000001 J16Blinkcount |
C:\Temp/ccffEeZr.s:40 .bss:00000002 LED2_Timing |
C:\Temp/ccffEeZr.s:46 .bss:00000004 LED1_Timing |
C:\Temp/ccffEeZr.s:51 .text:00000000 LED_Init |
.bss:00000006 delay.0 |
C:\Temp/ccffEeZr.s:69 .bss:00000007 J16Bitmask.1 |
C:\Temp/ccffEeZr.s:70 .bss:00000008 J17Bitmask.2 |
C:\Temp/ccffEeZr.s:71 .bss:00000009 J16Warn.3 |
C:\Temp/ccffEeZr.s:72 .bss:0000000a J17Warn.4 |
C:\Temp/ccffEeZr.s:73 .bss:0000000b from_nc.5 |
C:\Temp/ccffEeZr.s:77 .text:0000001e LED_Update |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
PPM_in |
FC_StatusFlags |
VersionInfo |
EE_Parameter |
MotorenEin |
Parameter_J16Timing |
Parameter_J17Timing |
FC_StatusFlags2 |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/libfc.h |
---|
0,0 → 1,21 |
#ifndef _LIBFC_H |
#define _LIBFC_H |
#define CPU_UNKNOWN 0 |
#define CPU_ATMEGA644 1 |
#define CPU_ATMEGA644P 2 |
#define CPU_ATMEGA1284 3 |
#define CPU_ATMEGA1284P 4 |
extern void LIBFC_Init(void); |
extern void LIBFC_Polling(void); |
extern void LIBFC_ReceiverInit(unsigned char rtype); |
extern void LIBFC_JetiBox_Putchar(char c); |
extern void LIBFC_JetiBox_SetPos(unsigned char index); |
extern void LIBFC_JetiBox_Clear(void); |
extern void LIBFC_CheckSettings(void); |
extern unsigned char LIBFC_GetCPUType(void); |
#endif //_LIBFC_H |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/main.c |
---|
0,0 → 1,435 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software Nutzungsbedingungen (english version: see below) |
// + der Fa. HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland - nachfolgend Lizenzgeber genannt - |
// + Der Lizenzgeber räumt dem Kunden ein nicht-ausschließliches, zeitlich und räumlich* unbeschränktes Recht ein, die im den |
// + Mikrocontroller verwendete Firmware für die Hardware Flight-Ctrl, Navi-Ctrl, BL-Ctrl, MK3Mag & PC-Programm MikroKopter-Tool |
// + - nachfolgend Software genannt - nur für private Zwecke zu nutzen. |
// + Der Einsatz dieser Software ist nur auf oder mit Produkten des Lizenzgebers zulässig. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die vom Lizenzgeber gelieferte Software ist urheberrechtlich geschützt. Alle Rechte an der Software sowie an sonstigen im |
// + Rahmen der Vertragsanbahnung und Vertragsdurchführung überlassenen Unterlagen stehen im Verhältnis der Vertragspartner ausschließlich dem Lizenzgeber zu. |
// + Die in der Software enthaltenen Copyright-Vermerke, Markenzeichen, andere Rechtsvorbehalte, Seriennummern sowie |
// + sonstige der Programmidentifikation dienenden Merkmale dürfen vom Kunden nicht verändert oder unkenntlich gemacht werden. |
// + Der Kunde trifft angemessene Vorkehrungen für den sicheren Einsatz der Software. Er wird die Software gründlich auf deren |
// + Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Die Haftung des Lizenzgebers wird - soweit gesetzlich zulässig - begrenzt in Höhe des typischen und vorhersehbaren |
// + Schadens. Die gesetzliche Haftung bei Personenschäden und nach dem Produkthaftungsgesetz bleibt unberührt. Dem Lizenzgeber steht jedoch der Einwand |
// + des Mitverschuldens offen. |
// + Der Kunde trifft angemessene Vorkehrungen für den Fall, dass die Software ganz oder teilweise nicht ordnungsgemäß arbeitet. |
// + Er wird die Software gründlich auf deren Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Der Kunde wird er seine Daten vor Einsatz der Software nach dem Stand der Technik sichern. |
// + Der Kunde ist darüber unterrichtet, dass der Lizenzgeber seine Daten im zur Vertragsdurchführung erforderlichen Umfang |
// + und auf Grundlage der Datenschutzvorschriften erhebt, speichert, verarbeitet und, sofern notwendig, an Dritte übermittelt. |
// + *) Die räumliche Nutzung bezieht sich nur auf den Einsatzort, nicht auf die Reichweite der programmierten Software. |
// + #### ENDE DER NUTZUNGSBEDINGUNGEN ####' |
// + Hinweis: Informationen über erweiterte Nutzungsrechte (wie z.B. Nutzung für nicht-private Zwecke) sind auf Anfrage per Email an info(@)hisystems.de verfügbar. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software LICENSING TERMS |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + of HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland, Germany - the Licensor - |
// + The Licensor grants the customer a non-exclusive license to use the microcontroller firmware of the Flight-Ctrl, Navi-Ctrl, BL-Ctrl, and MK3Mag hardware |
// + (the Software) exclusively for private purposes. The License is unrestricted with respect to time and territory*. |
// + The Software may only be used with the Licensor's products. |
// + The Software provided by the Licensor is protected by copyright. With respect to the relationship between the parties to this |
// + agreement, all rights pertaining to the Software and other documents provided during the preparation and execution of this |
// + agreement shall be the property of the Licensor. |
// + The information contained in the Software copyright notices, trademarks, other legal reservations, serial numbers and other |
// + features that can be used to identify the program may not be altered or defaced by the customer. |
// + The customer shall be responsible for taking reasonable precautions |
// + for the safe use of the Software. The customer shall test the Software thoroughly regarding its suitability for the |
// + intended purpose before implementing it for actual operation. The Licensor's liability shall be limited to the extent of typical and |
// + foreseeable damage to the extent permitted by law, notwithstanding statutory liability for bodily injury and product |
// + liability. However, the Licensor shall be entitled to the defense of contributory negligence. |
// + The customer will take adequate precautions in the case, that the software is not working properly. The customer will test |
// + the software for his purpose before any operational usage. The customer will backup his data before using the software. |
// + The customer understands that the Licensor collects, stores and processes, and, where required, forwards, customer data |
// + to third parties to the extent necessary for executing the agreement, subject to applicable data protection and privacy regulations. |
// + *) The territory aspect only refers to the place where the Software is used, not its programmed range. |
// + #### END OF LICENSING TERMS #### |
// + Note: For information on license extensions (e.g. commercial use), please contact us at info(@)hisystems.de. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned char DisableRcOffBeeping = 0; |
unsigned char PlatinenVersion = 10; |
unsigned char BattLowVoltageWarning = 94; |
unsigned int FlugMinuten = 0,FlugMinutenGesamt = 0; |
unsigned int FlugSekunden = 0; |
pVoidFnct_pVoidFnctChar_const_fmt _printf_P; |
unsigned char FoundMotors = 0; |
unsigned char JetiBeep = 0; // to allow any Morse-Beeping of the Jeti-Box |
void PrintLine(void) |
{ |
printf("\n\r==================================="); |
} |
void CalMk3Mag(void) |
{ |
static unsigned char stick = 1; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > -20) stick = 0; |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70) && !stick) |
{ |
stick = 1; |
WinkelOut.CalcState++; |
if(WinkelOut.CalcState > 4) |
{ |
// WinkelOut.CalcState = 0; // in Uart.c |
beeptime = 1000; |
} |
else Piep(WinkelOut.CalcState,150); |
} |
DebugOut.Analog[19] = WinkelOut.CalcState; |
} |
void LipoDetection(unsigned char print) |
{ |
#define MAX_CELL_VOLTAGE 43 // max cell volatage for LiPO |
unsigned int timer, cells; |
if(print) printf("\n\rBatt:"); |
if(EE_Parameter.UnterspannungsWarnung < 50) // automatische Zellenerkennung |
{ |
timer = SetDelay(500); |
if(print) while (!CheckDelay(timer)); |
// up to 6s LiPo, less than 2s is technical impossible |
for(cells = 2; cells < 7; cells++) |
{ |
if(UBat < cells * MAX_CELL_VOLTAGE) break; |
} |
BattLowVoltageWarning = cells * EE_Parameter.UnterspannungsWarnung; |
if(print) |
{ |
Piep(cells, 200); |
printf(" %d Cells ", cells); |
} |
} |
else BattLowVoltageWarning = EE_Parameter.UnterspannungsWarnung; |
if(print) printf(" Low warning: %d.%d",BattLowVoltageWarning/10,BattLowVoltageWarning%10); |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
unsigned int timer,i,timer2 = 0, timerPolling; |
DDRB = 0x00; |
PORTB = 0x00; |
for(timer = 0; timer < 1000; timer++); // verzögern |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
if(PINB & 0x02) PlatinenVersion = 21; |
else |
{ |
PlatinenVersion = 22; |
// ACC_AMPLIFY = 7; // der ACC-Sensor hat etwa 16% weniger Ausschlag |
} |
#else |
if(PINB & 0x01) |
{ |
if(PINB & 0x02) PlatinenVersion = 13; |
else PlatinenVersion = 11; |
} |
else |
{ |
if(PINB & 0x02) PlatinenVersion = 20; |
else PlatinenVersion = 10; |
} |
#endif |
DDRC = 0x81; // SCL |
DDRC |=0x40; // HEF4017 Reset |
PORTC = 0xff; // Pullup SDA |
DDRB = 0x1B; // LEDs und Druckoffset |
PORTB = 0x01; // LED_Rot |
DDRD = 0x3E; // Speaker & TXD & J3 J4 J5 |
PORTD = 0x47; // LED |
HEF4017Reset_ON; |
MCUSR &=~(1<<WDRF); |
WDTCSR |= (1<<WDCE)|(1<<WDE); |
WDTCSR = 0; |
beeptime = 2500; |
StickGier = 0; PPM_in[K_GAS] = 0; StickRoll = 0; StickNick = 0; |
if(PlatinenVersion >= 20) GIER_GRAD_FAKTOR = 1220; else GIER_GRAD_FAKTOR = 1291; // unterschiedlich für ME und ENC |
ROT_OFF; |
GRN_ON; |
Timer_Init(); |
TIMER2_Init(); |
UART_Init(); |
rc_sum_init(); |
ADC_Init(); |
I2C_Init(1); |
SPI_MasterInit(); |
Capacity_Init(); |
LIBFC_Init(); |
GRN_ON; |
sei(); |
ParamSet_Init(); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Check connected BL-Ctrls |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Check connected BL-Ctrls |
BLFlags |= BLFLAG_READ_VERSION; |
motor_read = 0; // read the first I2C-Data |
SendMotorData(); |
timer = SetDelay(500); |
while(!(BLFlags & BLFLAG_TX_COMPLETE) && !CheckDelay(timer)); //wait for complete transfer |
printf("\n\rFound BL-Ctrl: "); |
timer = SetDelay(4000); |
for(i=0; i < MAX_MOTORS; i++) |
{ |
SendMotorData(); |
while(!(BLFlags & BLFLAG_TX_COMPLETE) && !CheckDelay(timer)); //wait for complete transfer |
if(Mixer.Motor[i][0] > 0) // wait max 4 sec for the BL-Ctrls to wake up |
{ |
while(!CheckDelay(timer) && !(Motor[i].State & MOTOR_STATE_PRESENT_MASK) ) |
{ |
SendMotorData(); |
while(!(BLFlags & BLFLAG_TX_COMPLETE) && !CheckDelay(timer)); //wait for complete transfer |
} |
} |
if(Motor[i].State & MOTOR_STATE_PRESENT_MASK) |
{ |
printf("%d",i+1); |
FoundMotors++; |
// if(Motor[i].Version & MOTOR_STATE_NEW_PROTOCOL_MASK) printf("(new) "); |
} |
} |
for(i=0; i < MAX_MOTORS; i++) |
{ |
if(!(Motor[i].State & MOTOR_STATE_PRESENT_MASK) && Mixer.Motor[i][0] > 0) |
{ |
printf("\n\r\n\r!! MISSING BL-CTRL: %d !!",i+1); |
ServoActive = 2; // just in case the FC would be used as camera-stabilizer |
} |
Motor[i].State &= ~MOTOR_STATE_ERROR_MASK; // clear error counter |
} |
PrintLine();// ("\n\r==================================="); |
if(RequiredMotors < FoundMotors) VersionInfo.HardwareError[1] |= FC_ERROR1_MIXER; |
//if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
printf("\n\rCalibrating pressure sensor.."); |
timer = SetDelay(1000); |
SucheLuftruckOffset(); |
while (!CheckDelay(timer)); |
printf("OK\n\r"); |
} |
SetNeutral(0); |
ROT_OFF; |
beeptime = 2000; |
ExternControl.Digital[0] = 0x55; |
FlugMinuten = (unsigned int)GetParamByte(PID_FLIGHT_MINUTES) * 256 + (unsigned int)GetParamByte(PID_FLIGHT_MINUTES + 1); |
FlugMinutenGesamt = (unsigned int)GetParamByte(PID_FLIGHT_MINUTES_TOTAL) * 256 + (unsigned int)GetParamByte(PID_FLIGHT_MINUTES_TOTAL + 1); |
if((FlugMinutenGesamt == 0xFFFF) || (FlugMinuten == 0xFFFF)) |
{ |
FlugMinuten = 0; |
FlugMinutenGesamt = 0; |
} |
printf("\n\rFlight-time %u min Total:%u min", FlugMinuten, FlugMinutenGesamt); |
LcdClear(); |
I2CTimeout = 5000; |
WinkelOut.Orientation = 1; |
LipoDetection(1); |
LIBFC_ReceiverInit(EE_Parameter.Receiver); |
PrintLine();// ("\n\r==================================="); |
//SpektrumBinding(); |
timer = SetDelay(2000); |
timerPolling = SetDelay(250); |
Debug(ANSI_CLEAR "FC-Start!\n\rFlugzeit: %d min", FlugMinutenGesamt); // Note: this won't waste flash memory, if #DEBUG is not active |
DebugOut.Status[0] = 0x01 | 0x02; |
JetiBeep = 0; |
if(EE_Parameter.ExtraConfig & CFG_NO_RCOFF_BEEPING) DisableRcOffBeeping = 1; |
while (1) |
{ |
if(ReceiverUpdateModeActive) while (1) PORTC &= ~(1<<7); // Beeper off |
//GRN_ON; |
if(UpdateMotor && AdReady) // ReglerIntervall |
{ |
//GRN_OFF; |
UpdateMotor=0; |
if(WinkelOut.CalcState) CalMk3Mag(); |
else MotorRegler(); |
SendMotorData(); |
ROT_OFF; |
if(SenderOkay) { SenderOkay--; /*VersionInfo.HardwareError[1] &= ~FC_ERROR1_PPM;*/ } |
else |
{ |
TIMSK1 |= _BV(ICIE1); // enable PPM-Input |
PPM_in[0] = 0; // set RSSI to zero on data timeout |
VersionInfo.HardwareError[1] |= FC_ERROR1_PPM; |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//if(HoehenReglerAktiv && NaviDataOkay && SenderOkay < 160 && SenderOkay > 10 && FromNaviCtrl_Value.SerialDataOkay > 220) SenderOkay = 160; |
//if(HoehenReglerAktiv && NaviDataOkay && SenderOkay < 101 && SenderOkay > 10 && FromNaviCtrl_Value.SerialDataOkay > 1) SenderOkay = 101; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!--I2CTimeout || MissingMotor) |
{ |
if(!I2CTimeout) |
{ |
I2C_Reset(); |
I2CTimeout = 5; |
DebugOut.Analog[28]++; // I2C-Error |
VersionInfo.HardwareError[1] |= FC_ERROR1_I2C; |
DebugOut.Status[1] |= 0x02; // BL-Error-Status |
} |
if((BeepMuster == 0xffff) && MotorenEin) |
{ |
beeptime = 25000; |
BeepMuster = 0x0080; |
} |
} |
else |
{ |
ROT_OFF; |
} |
LIBFC_Polling(); |
if(!UpdateMotor) |
{ |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
if(NewSBusData) ProcessSBus(); |
else |
#endif |
{ |
if(CalculateServoSignals) CalculateServo(); |
DatenUebertragung(); |
BearbeiteRxDaten(); |
if(CheckDelay(timer)) |
{ |
static unsigned char second; |
timer += 20; // 20 ms interval |
CalcNickServoValue(); |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
if(EE_Parameter.Receiver == RECEIVER_HOTT) HoTT_Menu(); |
else |
if(EE_Parameter.Receiver == RECEIVER_JETI) BuildJeti_Vario(); |
#endif |
if(MissingMotor) |
{ |
VersionInfo.HardwareError[1] |= FC_ERROR1_BL_MISSING; |
DebugOut.Status[1] |= 0x02; // BL-Error-Status |
} |
else |
{ |
if(!beeptime) |
{ |
if(I2CTimeout > 6) DebugOut.Status[1] &= ~0x02; // BL-Error-Status |
} |
} |
if(DisableRcOffBeeping) if(SenderOkay > 150) { DisableRcOffBeeping = 0; beeptime = 5000;}; |
if(PcZugriff) PcZugriff--; |
else |
{ |
ExternControl.Config = 0; |
ExternStickNick = 0; |
ExternStickRoll = 0; |
ExternStickGier = 0; |
if(!SenderOkay) |
{ |
if(BeepMuster == 0xffff && DisableRcOffBeeping != 2) |
{ |
beeptime = 15000; |
BeepMuster = 0x0c00; |
if(DisableRcOffBeeping) DisableRcOffBeeping = 2; |
} |
} |
} |
if(NaviDataOkay > 200) |
{ |
NaviDataOkay--; |
VersionInfo.HardwareError[1] &= ~FC_ERROR1_SPI_RX; |
} |
else |
{ |
if(NC_Version.Compatible) |
{ |
VersionInfo.HardwareError[1] |= FC_ERROR1_SPI_RX; |
NC_ErrorCode = 9; // "ERR: no NC communication" |
if(BeepMuster == 0xffff && MotorenEin) |
{ |
beeptime = 15000; |
BeepMuster = 0xA800; |
} |
} |
GPS_Nick = 0; |
GPS_Roll = 0; |
GPS_Aid_StickMultiplikator = 0; |
GPSInfo.Flags = 0; |
FromNaviCtrl.AccErrorN = 0; |
FromNaviCtrl.AccErrorR = 0; |
FromNaviCtrl.CompassValue = -1; |
NaviDataOkay = 0; |
} |
if(UBat < BattLowVoltageWarning) |
{ |
FC_StatusFlags |= FC_STATUS_LOWBAT; |
if(BeepMuster == 0xffff) |
{ |
beeptime = 6000; |
BeepMuster = 0x0300; |
} |
} |
else if(!beeptime) FC_StatusFlags &= ~FC_STATUS_LOWBAT; |
SPI_StartTransmitPacket(); |
SendSPI = 4; |
// +++++++++++++++++++++++++++++++++ |
// Sekundentakt |
if(++second == 49) |
{ |
second = 0; |
if(FC_StatusFlags & FC_STATUS_FLY) FlugSekunden++; |
else |
{ |
timer2 = 1450; // 0,5 Minuten aufrunden |
if(StartLuftdruck < Luftdruck) StartLuftdruck++; |
else |
if(StartLuftdruck > Luftdruck) StartLuftdruck--; |
} |
} |
// +++++++++++++++++++++++++++++++++ |
if(++timer2 == 2930) // eine Minute |
{ |
timer2 = 0; |
FlugMinuten++; |
FlugMinutenGesamt++; |
SetParamByte(PID_FLIGHT_MINUTES,FlugMinuten / 256); |
SetParamByte(PID_FLIGHT_MINUTES+1,FlugMinuten % 256); |
SetParamByte(PID_FLIGHT_MINUTES_TOTAL,FlugMinutenGesamt / 256); |
SetParamByte(PID_FLIGHT_MINUTES_TOTAL+1,FlugMinutenGesamt % 256); |
timer = SetDelay(20); // falls "timer += 20;" mal nicht geht |
} |
} |
LED_Update(); |
Capacity_Update(); |
} //else DebugOut.Analog[26]++; |
} |
} |
if(!SendSPI) { SPI_TransmitByte(); } |
} |
return (1); |
} |
//DebugOut.Analog[16] |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/main.h |
---|
0,0 → 1,82 |
#ifndef _MAIN_H |
#define _MAIN_H |
//#define DEBUG // use to activate debug output to MK-Tool: use Debug(text); |
//#define ACT_S3D_SUMMENSIGNAL |
//#define UserParameter8_FAILSAFE |
#define RECEIVER_SPEKTRUM_DX7EXP |
//#define RECEIVER_SPEKTRUM_DX8EXP |
// neue Hardware |
#define ROT_OFF {if((PlatinenVersion == 10)||(PlatinenVersion >= 20)) PORTB &=~0x01; else PORTB |= 0x01;} |
#define ROT_ON {if((PlatinenVersion == 10)||(PlatinenVersion >= 20)) PORTB |= 0x01; else PORTB &=~0x01;} |
#define ROT_FLASH PORTB ^= 0x01 |
#define GRN_OFF {if((PlatinenVersion < 12) || PlatinenVersion == 22) PORTB &=~0x02; else PORTB |= 0x02;} |
#define GRN_ON {if((PlatinenVersion < 12) || PlatinenVersion == 22) PORTB |= 0x02; else PORTB &=~0x02;} |
#define GRN_FLASH PORTB ^= 0x02 |
#define SYSCLK F_CPU |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define J3High PORTD |= 0x20 |
#define J3Low PORTD &= ~0x20 |
#define J4High PORTD |= 0x10 |
#define J4Low PORTD &= ~0x10 |
#define J5High PORTD |= 0x08 |
#define J5Low PORTD &= ~0x08 |
extern volatile unsigned char SenderOkay; |
extern unsigned char BattLowVoltageWarning; |
extern unsigned char CosinusNickWinkel, CosinusRollWinkel; |
extern unsigned char PlatinenVersion; |
extern unsigned char FoundMotors,DisableRcOffBeeping; |
extern unsigned char JetiBeep; |
void LipoDetection(unsigned char print); |
extern unsigned int FlugMinuten,FlugMinutenGesamt,FlugSekunden; |
extern void PrintLine(void); // "=================================" |
#include <avr/pgmspace.h> |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
#endif |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "old_macros.h" |
#include "printf_P.h" |
#include "timer0.h" |
#include "uart.h" |
#include "analog.h" |
#include "twimaster.h" |
#include "menu.h" |
#include "rc.h" |
#include "fc.h" |
#include "gps.h" |
#include "spi.h" |
#include "led.h" |
#include "spektrum.h" |
#include "capacity.h" |
#include "eeprom.h" |
#include "libfc.h" |
#include "hottmenu.h" |
#include "debug.h" |
#include "sbus.h" |
#include "jeti_ex.h" |
#endif //_MAIN_H |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/main.lst |
---|
0,0 → 1,1331 |
1 .file "main.c" |
2 .arch atmega1284p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .global JetiBeep |
11 .global JetiBeep |
12 .section .bss |
15 JetiBeep: |
16 0000 00 .skip 1,0 |
17 .global FoundMotors |
18 .global FoundMotors |
21 FoundMotors: |
22 0001 00 .skip 1,0 |
23 .global FlugSekunden |
24 .global FlugSekunden |
27 FlugSekunden: |
28 0002 0000 .skip 2,0 |
29 .global FlugMinutenGesamt |
30 .global FlugMinutenGesamt |
33 FlugMinutenGesamt: |
34 0004 0000 .skip 2,0 |
35 .global FlugMinuten |
36 .global FlugMinuten |
39 FlugMinuten: |
40 0006 0000 .skip 2,0 |
41 .global BattLowVoltageWarning |
42 .data |
45 BattLowVoltageWarning: |
46 0000 5E .byte 94 |
47 .global PlatinenVersion |
50 PlatinenVersion: |
51 0001 0A .byte 10 |
52 .global DisableRcOffBeeping |
53 .global DisableRcOffBeeping |
54 .section .bss |
57 DisableRcOffBeeping: |
58 0008 00 .skip 1,0 |
59 .section .progmem.data,"a",@progbits |
62 __c.11: |
63 0000 0A0D 3D3D .string "\n\r===================================" |
63 3D3D 3D3D |
63 3D3D 3D3D |
63 3D3D 3D3D |
63 3D3D 3D3D |
64 .text |
65 .global PrintLine |
67 PrintLine: |
68 /* prologue: frame size=0 */ |
69 /* prologue end (size=0) */ |
70 0000 80E0 ldi r24,lo8(__c.11) |
71 0002 90E0 ldi r25,hi8(__c.11) |
72 0004 9F93 push r25 |
73 0006 8F93 push r24 |
74 0008 80E0 ldi r24,lo8(pm(uart_putchar)) |
75 000a 90E0 ldi r25,hi8(pm(uart_putchar)) |
76 000c 9F93 push r25 |
77 000e 8F93 push r24 |
78 0010 E091 0000 lds r30,_printf_P |
79 0014 F091 0000 lds r31,(_printf_P)+1 |
80 0018 0995 icall |
81 001a 0F90 pop __tmp_reg__ |
82 001c 0F90 pop __tmp_reg__ |
83 001e 0F90 pop __tmp_reg__ |
84 0020 0F90 pop __tmp_reg__ |
85 /* epilogue: frame size=0 */ |
86 0022 0895 ret |
87 /* epilogue end (size=1) */ |
88 /* function PrintLine size 18 (17) */ |
90 .data |
93 stick.10: |
94 0002 01 .byte 1 |
95 .text |
96 .global CalMk3Mag |
98 CalMk3Mag: |
99 /* prologue: frame size=0 */ |
100 /* prologue end (size=0) */ |
101 0024 8091 0000 lds r24,EE_Parameter+1 |
102 0028 E82F mov r30,r24 |
103 002a FF27 clr r31 |
104 002c EE0F add r30,r30 |
105 002e FF1F adc r31,r31 |
106 0030 E050 subi r30,lo8(-(PPM_in)) |
107 0032 F040 sbci r31,hi8(-(PPM_in)) |
108 0034 8081 ld r24,Z |
109 0036 9181 ldd r25,Z+1 |
110 0038 8D5E subi r24,lo8(-19) |
111 003a 9F4F sbci r25,hi8(-19) |
112 003c 04F0 brlt .L3 |
113 003e 1092 0000 sts stick.10,__zero_reg__ |
114 .L3: |
115 0042 8081 ld r24,Z |
116 0044 9181 ldd r25,Z+1 |
117 0046 8A5B subi r24,lo8(-70) |
118 0048 9F4F sbci r25,hi8(-70) |
119 004a 04F4 brge .L4 |
120 004c 8091 0000 lds r24,stick.10 |
121 0050 8823 tst r24 |
122 0052 01F4 brne .L4 |
123 0054 81E0 ldi r24,lo8(1) |
124 0056 8093 0000 sts stick.10,r24 |
125 005a 8091 0000 lds r24,WinkelOut+6 |
126 005e 8F5F subi r24,lo8(-(1)) |
127 0060 8093 0000 sts WinkelOut+6,r24 |
128 0064 8530 cpi r24,lo8(5) |
129 0066 00F0 brlo .L5 |
130 0068 88EE ldi r24,lo8(1000) |
131 006a 93E0 ldi r25,hi8(1000) |
132 006c 9093 0000 sts (beeptime)+1,r25 |
133 0070 8093 0000 sts beeptime,r24 |
134 0074 00C0 rjmp .L4 |
135 .L5: |
136 0076 66E9 ldi r22,lo8(150) |
137 0078 70E0 ldi r23,hi8(150) |
138 007a 0E94 0000 call Piep |
139 .L4: |
140 007e 8091 0000 lds r24,WinkelOut+6 |
141 0082 9927 clr r25 |
142 0084 9093 0000 sts (DebugOut+40)+1,r25 |
143 0088 8093 0000 sts DebugOut+40,r24 |
144 /* epilogue: frame size=0 */ |
145 008c 0895 ret |
146 /* epilogue end (size=1) */ |
147 /* function CalMk3Mag size 55 (54) */ |
149 .section .progmem.data |
152 __c.7: |
153 0026 0A0D 4261 .string "\n\rBatt:" |
153 7474 3A00 |
156 __c.8: |
157 002e 2025 6420 .string " %d Cells " |
157 4365 6C6C |
157 7320 00 |
160 __c.9: |
161 0039 204C 6F77 .string " Low warning: %d.%d" |
161 2077 6172 |
161 6E69 6E67 |
161 3A20 2564 |
161 2E25 6400 |
162 .text |
163 .global LipoDetection |
165 LipoDetection: |
166 /* prologue: frame size=0 */ |
167 008e 1F93 push r17 |
168 0090 CF93 push r28 |
169 0092 DF93 push r29 |
170 /* prologue end (size=3) */ |
171 0094 182F mov r17,r24 |
172 0096 8823 tst r24 |
173 0098 01F0 breq .L8 |
174 009a 80E0 ldi r24,lo8(__c.7) |
175 009c 90E0 ldi r25,hi8(__c.7) |
176 009e 9F93 push r25 |
177 00a0 8F93 push r24 |
178 00a2 80E0 ldi r24,lo8(pm(uart_putchar)) |
179 00a4 90E0 ldi r25,hi8(pm(uart_putchar)) |
180 00a6 9F93 push r25 |
181 00a8 8F93 push r24 |
182 00aa E091 0000 lds r30,_printf_P |
183 00ae F091 0000 lds r31,(_printf_P)+1 |
184 00b2 0995 icall |
185 00b4 0F90 pop __tmp_reg__ |
186 00b6 0F90 pop __tmp_reg__ |
187 00b8 0F90 pop __tmp_reg__ |
188 00ba 0F90 pop __tmp_reg__ |
189 .L8: |
190 00bc 8091 0000 lds r24,EE_Parameter+36 |
191 00c0 8233 cpi r24,lo8(50) |
192 00c2 00F0 brlo .+2 |
193 00c4 00C0 rjmp .L9 |
194 00c6 84EF ldi r24,lo8(500) |
195 00c8 91E0 ldi r25,hi8(500) |
196 00ca 0E94 0000 call SetDelay |
197 00ce EC01 movw r28,r24 |
198 00d0 1123 tst r17 |
199 00d2 01F0 breq .L10 |
200 .L11: |
201 00d4 CE01 movw r24,r28 |
202 00d6 0E94 0000 call CheckDelay |
203 00da 8823 tst r24 |
204 00dc 01F0 breq .L11 |
205 .L10: |
206 00de C2E0 ldi r28,lo8(2) |
207 00e0 D0E0 ldi r29,hi8(2) |
208 00e2 26E5 ldi r18,lo8(86) |
209 00e4 30E0 ldi r19,hi8(86) |
210 .L18: |
211 00e6 8091 0000 lds r24,UBat |
212 00ea 9091 0000 lds r25,(UBat)+1 |
213 00ee 8217 cp r24,r18 |
214 00f0 9307 cpc r25,r19 |
215 00f2 00F0 brlo .L15 |
216 00f4 2196 adiw r28,1 |
217 00f6 255D subi r18,lo8(-(43)) |
218 00f8 3F4F sbci r19,hi8(-(43)) |
219 00fa C730 cpi r28,7 |
220 00fc D105 cpc r29,__zero_reg__ |
221 00fe 00F0 brlo .L18 |
222 .L15: |
223 0100 8091 0000 lds r24,EE_Parameter+36 |
224 0104 9927 clr r25 |
225 0106 C89F mul r28,r24 |
226 0108 9001 movw r18,r0 |
227 010a C99F mul r28,r25 |
228 010c 300D add r19,r0 |
229 010e D89F mul r29,r24 |
230 0110 300D add r19,r0 |
231 0112 1124 clr r1 |
232 0114 2093 0000 sts BattLowVoltageWarning,r18 |
233 0118 1123 tst r17 |
234 011a 01F0 breq .L20 |
235 011c 68EC ldi r22,lo8(200) |
236 011e 70E0 ldi r23,hi8(200) |
237 0120 8C2F mov r24,r28 |
238 0122 0E94 0000 call Piep |
239 0126 DF93 push r29 |
240 0128 CF93 push r28 |
241 012a 80E0 ldi r24,lo8(__c.8) |
242 012c 90E0 ldi r25,hi8(__c.8) |
243 012e 9F93 push r25 |
244 0130 8F93 push r24 |
245 0132 80E0 ldi r24,lo8(pm(uart_putchar)) |
246 0134 90E0 ldi r25,hi8(pm(uart_putchar)) |
247 0136 9F93 push r25 |
248 0138 8F93 push r24 |
249 013a E091 0000 lds r30,_printf_P |
250 013e F091 0000 lds r31,(_printf_P)+1 |
251 0142 0995 icall |
252 0144 8DB7 in r24,__SP_L__ |
253 0146 9EB7 in r25,__SP_H__ |
254 0148 0696 adiw r24,6 |
255 014a 8DBF out __SP_L__,r24 |
256 014c 00C0 rjmp .L20 |
257 .L9: |
258 014e 8093 0000 sts BattLowVoltageWarning,r24 |
259 .L20: |
260 0152 1123 tst r17 |
261 0154 01F0 breq .L7 |
262 0156 8091 0000 lds r24,BattLowVoltageWarning |
263 015a 6AE0 ldi r22,lo8(10) |
264 015c 0E94 0000 call __udivmodqi4 |
265 0160 892F mov r24,r25 |
266 0162 9927 clr r25 |
267 0164 9F93 push r25 |
268 0166 8F93 push r24 |
269 0168 8091 0000 lds r24,BattLowVoltageWarning |
270 016c 0E94 0000 call __udivmodqi4 |
271 0170 9927 clr r25 |
272 0172 9F93 push r25 |
273 0174 8F93 push r24 |
274 0176 80E0 ldi r24,lo8(__c.9) |
275 0178 90E0 ldi r25,hi8(__c.9) |
276 017a 9F93 push r25 |
277 017c 8F93 push r24 |
278 017e 80E0 ldi r24,lo8(pm(uart_putchar)) |
279 0180 90E0 ldi r25,hi8(pm(uart_putchar)) |
280 0182 9F93 push r25 |
281 0184 8F93 push r24 |
282 0186 E091 0000 lds r30,_printf_P |
283 018a F091 0000 lds r31,(_printf_P)+1 |
284 018e 0995 icall |
285 0190 2DB7 in r18,__SP_L__ |
286 0192 3EB7 in r19,__SP_H__ |
287 0194 285F subi r18,lo8(-(8)) |
288 0196 3F4F sbci r19,hi8(-(8)) |
289 0198 2DBF out __SP_L__,r18 |
290 .L7: |
291 /* epilogue: frame size=0 */ |
292 019a DF91 pop r29 |
293 019c CF91 pop r28 |
294 019e 1F91 pop r17 |
295 01a0 0895 ret |
296 /* epilogue end (size=4) */ |
297 /* function LipoDetection size 138 (131) */ |
299 .section .progmem.data |
302 __c.0: |
303 004d 0A0D 466F .string "\n\rFound BL-Ctrl: " |
303 756E 6420 |
303 424C 2D43 |
303 7472 6C3A |
303 2000 |
306 __c.1: |
307 005f 2564 00 .string "%d" |
310 __c.2: |
311 0062 0A0D 0A0D .string "\n\r\n\r!! MISSING BL-CTRL: %d !!" |
311 2121 204D |
311 4953 5349 |
311 4E47 2042 |
311 4C2D 4354 |
314 __c.3: |
315 0080 0A0D 4361 .string "\n\rCalibrating pressure sensor.." |
315 6C69 6272 |
315 6174 696E |
315 6720 7072 |
315 6573 7375 |
318 __c.4: |
319 00a0 4F4B 0A0D .string "OK\n\r" |
319 00 |
322 __c.5: |
323 00a5 0A0D 466C .string "\n\rFlight-time %u min Total:%u min" |
323 6967 6874 |
323 2D74 696D |
323 6520 2575 |
323 206D 696E |
324 .lcomm second.6,1 |
325 .text |
326 .global main |
328 main: |
329 /* prologue: frame size=0 */ |
330 01a2 C0E0 ldi r28,lo8(__stack - 0) |
331 01a4 D0E0 ldi r29,hi8(__stack - 0) |
332 01a6 DEBF out __SP_H__,r29 |
333 01a8 CDBF out __SP_L__,r28 |
334 /* prologue end (size=4) */ |
335 01aa 8824 clr r8 |
336 01ac 9924 clr r9 |
337 01ae 14B8 out 36-0x20,__zero_reg__ |
338 01b0 15B8 out 37-0x20,__zero_reg__ |
339 01b2 B7EE ldi r27,lo8(999) |
340 01b4 EB2E mov r14,r27 |
341 01b6 B3E0 ldi r27,hi8(999) |
342 01b8 FB2E mov r15,r27 |
343 .L27: |
344 01ba 2EEC ldi r18,lo8(-50) |
345 01bc 3FEF ldi r19,hi8(-50) |
346 01be E20E add r14,r18 |
347 01c0 F31E adc r15,r19 |
348 01c2 F7FE sbrs r15,7 |
349 01c4 00C0 rjmp .L27 |
350 01c6 199B sbis 35-0x20,1 |
351 01c8 00C0 rjmp .L28 |
352 01ca 85E1 ldi r24,lo8(21) |
353 01cc 00C0 rjmp .L242 |
354 .L28: |
355 01ce 86E1 ldi r24,lo8(22) |
356 .L242: |
357 01d0 8093 0000 sts PlatinenVersion,r24 |
358 01d4 81E8 ldi r24,lo8(-127) |
359 01d6 87B9 out 39-0x20,r24 |
360 01d8 3E9A sbi 39-0x20,6 |
361 01da 8FEF ldi r24,lo8(-1) |
362 01dc 88B9 out 40-0x20,r24 |
363 01de 8BE1 ldi r24,lo8(27) |
364 01e0 84B9 out 36-0x20,r24 |
365 01e2 81E0 ldi r24,lo8(1) |
366 01e4 85B9 out 37-0x20,r24 |
367 01e6 8EE3 ldi r24,lo8(62) |
368 01e8 8AB9 out 42-0x20,r24 |
369 01ea 87E4 ldi r24,lo8(71) |
370 01ec 8BB9 out 43-0x20,r24 |
371 01ee 469A sbi 40-0x20,6 |
372 01f0 84B7 in r24,84-0x20 |
373 01f2 877F andi r24,lo8(-9) |
374 01f4 84BF out 84-0x20,r24 |
375 01f6 8091 6000 lds r24,96 |
376 01fa 8861 ori r24,lo8(24) |
377 01fc 8093 6000 sts 96,r24 |
378 0200 1092 6000 sts 96,__zero_reg__ |
379 0204 84EC ldi r24,lo8(2500) |
380 0206 99E0 ldi r25,hi8(2500) |
381 0208 9093 0000 sts (beeptime)+1,r25 |
382 020c 8093 0000 sts beeptime,r24 |
383 0210 1092 0000 sts (StickGier)+1,__zero_reg__ |
384 0214 1092 0000 sts StickGier,__zero_reg__ |
385 0218 1092 0000 sts (PPM_in+4)+1,__zero_reg__ |
386 021c 1092 0000 sts PPM_in+4,__zero_reg__ |
387 0220 1092 0000 sts (StickRoll)+1,__zero_reg__ |
388 0224 1092 0000 sts StickRoll,__zero_reg__ |
389 0228 1092 0000 sts (StickNick)+1,__zero_reg__ |
390 022c 1092 0000 sts StickNick,__zero_reg__ |
391 0230 2091 0000 lds r18,PlatinenVersion |
392 0234 2431 cpi r18,lo8(20) |
393 0236 00F0 brlo .L30 |
394 0238 84EC ldi r24,lo8(1220) |
395 023a 94E0 ldi r25,hi8(1220) |
396 023c A0E0 ldi r26,hlo8(1220) |
397 023e B0E0 ldi r27,hhi8(1220) |
398 0240 00C0 rjmp .L243 |
399 .L30: |
400 0242 8BE0 ldi r24,lo8(1291) |
401 0244 95E0 ldi r25,hi8(1291) |
402 0246 A0E0 ldi r26,hlo8(1291) |
403 0248 B0E0 ldi r27,hhi8(1291) |
404 .L243: |
405 024a 8093 0000 sts GIER_GRAD_FAKTOR,r24 |
406 024e 9093 0000 sts (GIER_GRAD_FAKTOR)+1,r25 |
407 0252 A093 0000 sts (GIER_GRAD_FAKTOR)+2,r26 |
408 0256 B093 0000 sts (GIER_GRAD_FAKTOR)+3,r27 |
409 025a 2A30 cpi r18,lo8(10) |
410 025c 01F0 breq .L33 |
411 025e 2431 cpi r18,lo8(20) |
412 0260 00F0 brlo .L32 |
413 .L33: |
414 0262 2898 cbi 37-0x20,0 |
415 0264 00C0 rjmp .L34 |
416 .L32: |
417 0266 289A sbi 37-0x20,0 |
418 .L34: |
419 0268 2C30 cpi r18,lo8(12) |
420 026a 00F0 brlo .L36 |
421 026c 2631 cpi r18,lo8(22) |
422 026e 01F4 brne .L35 |
423 .L36: |
424 0270 299A sbi 37-0x20,1 |
425 0272 00C0 rjmp .L37 |
426 .L35: |
427 0274 2998 cbi 37-0x20,1 |
428 .L37: |
429 0276 0E94 0000 call Timer_Init |
430 027a 0E94 0000 call TIMER2_Init |
431 027e 0E94 0000 call UART_Init |
432 0282 0E94 0000 call rc_sum_init |
433 0286 0E94 0000 call ADC_Init |
434 028a 81E0 ldi r24,lo8(1) |
435 028c 0E94 0000 call I2C_Init |
436 0290 0E94 0000 call SPI_MasterInit |
437 0294 0E94 0000 call Capacity_Init |
438 0298 0E94 0000 call LIBFC_Init |
439 029c 8091 0000 lds r24,PlatinenVersion |
440 02a0 8C30 cpi r24,lo8(12) |
441 02a2 00F0 brlo .L39 |
442 02a4 8631 cpi r24,lo8(22) |
443 02a6 01F4 brne .L38 |
444 .L39: |
445 02a8 299A sbi 37-0x20,1 |
446 02aa 00C0 rjmp .L40 |
447 .L38: |
448 02ac 2998 cbi 37-0x20,1 |
449 .L40: |
450 /* #APP */ |
451 02ae 7894 sei |
452 /* #NOAPP */ |
453 02b0 0E94 0000 call ParamSet_Init |
454 02b4 8091 0000 lds r24,BLFlags |
455 02b8 8260 ori r24,lo8(2) |
456 02ba 8093 0000 sts BLFlags,r24 |
457 02be 1092 0000 sts motor_read,__zero_reg__ |
458 02c2 0E94 0000 call SendMotorData |
459 02c6 84EF ldi r24,lo8(500) |
460 02c8 91E0 ldi r25,hi8(500) |
461 02ca 0E94 0000 call SetDelay |
462 02ce 7C01 movw r14,r24 |
463 .L41: |
464 02d0 8091 0000 lds r24,BLFlags |
465 02d4 80FD sbrc r24,0 |
466 02d6 00C0 rjmp .L42 |
467 02d8 C701 movw r24,r14 |
468 02da 0E94 0000 call CheckDelay |
469 02de 8823 tst r24 |
470 02e0 01F0 breq .L41 |
471 .L42: |
472 02e2 80E0 ldi r24,lo8(__c.0) |
473 02e4 90E0 ldi r25,hi8(__c.0) |
474 02e6 9F93 push r25 |
475 02e8 8F93 push r24 |
476 02ea A0E0 ldi r26,lo8(pm(uart_putchar)) |
477 02ec AA2E mov r10,r26 |
478 02ee A0E0 ldi r26,hi8(pm(uart_putchar)) |
479 02f0 BA2E mov r11,r26 |
480 02f2 BF92 push r11 |
481 02f4 AF92 push r10 |
482 02f6 E091 0000 lds r30,_printf_P |
483 02fa F091 0000 lds r31,(_printf_P)+1 |
484 02fe 0995 icall |
485 0300 80EA ldi r24,lo8(4000) |
486 0302 9FE0 ldi r25,hi8(4000) |
487 0304 0E94 0000 call SetDelay |
488 0308 7C01 movw r14,r24 |
489 030a C0E0 ldi r28,lo8(0) |
490 030c D0E0 ldi r29,hi8(0) |
491 030e 0F90 pop __tmp_reg__ |
492 0310 0F90 pop __tmp_reg__ |
493 0312 0F90 pop __tmp_reg__ |
494 0314 0F90 pop __tmp_reg__ |
495 0316 00E0 ldi r16,lo8(Motor+3) |
496 0318 10E0 ldi r17,hi8(Motor+3) |
497 031a F0E0 ldi r31,lo8(Mixer+13) |
498 031c CF2E mov r12,r31 |
499 031e F0E0 ldi r31,hi8(Mixer+13) |
500 0320 DF2E mov r13,r31 |
501 .L58: |
502 0322 0E94 0000 call SendMotorData |
503 .L47: |
504 0326 8091 0000 lds r24,BLFlags |
505 032a 80FD sbrc r24,0 |
506 032c 00C0 rjmp .L48 |
507 032e C701 movw r24,r14 |
508 0330 0E94 0000 call CheckDelay |
509 0334 8823 tst r24 |
510 0336 01F0 breq .L47 |
511 .L48: |
512 0338 F601 movw r30,r12 |
513 033a 8081 ld r24,Z |
514 033c 1816 cp __zero_reg__,r24 |
515 033e 04F4 brge .L50 |
516 0340 00C0 rjmp .L246 |
517 .L56: |
518 0342 0E94 0000 call SendMotorData |
519 .L53: |
520 0346 8091 0000 lds r24,BLFlags |
521 034a 80FD sbrc r24,0 |
522 034c 00C0 rjmp .L246 |
523 034e C701 movw r24,r14 |
524 0350 0E94 0000 call CheckDelay |
525 0354 8823 tst r24 |
526 0356 01F0 breq .L53 |
527 .L246: |
528 0358 C701 movw r24,r14 |
529 035a 0E94 0000 call CheckDelay |
530 035e 8823 tst r24 |
531 0360 01F4 brne .L50 |
532 0362 F801 movw r30,r16 |
533 0364 8081 ld r24,Z |
534 0366 8823 tst r24 |
535 0368 04F4 brge .L56 |
536 .L50: |
537 036a F801 movw r30,r16 |
538 036c 8081 ld r24,Z |
539 036e 87FF sbrs r24,7 |
540 0370 00C0 rjmp .L46 |
541 0372 2196 adiw r28,1 |
542 0374 DF93 push r29 |
543 0376 CF93 push r28 |
544 0378 2197 sbiw r28,1 |
545 037a 80E0 ldi r24,lo8(__c.1) |
546 037c 90E0 ldi r25,hi8(__c.1) |
547 037e 9F93 push r25 |
548 0380 8F93 push r24 |
549 0382 BF92 push r11 |
550 0384 AF92 push r10 |
551 0386 E091 0000 lds r30,_printf_P |
552 038a F091 0000 lds r31,(_printf_P)+1 |
553 038e 0995 icall |
554 0390 8091 0000 lds r24,FoundMotors |
555 0394 8F5F subi r24,lo8(-(1)) |
556 0396 8093 0000 sts FoundMotors,r24 |
557 039a 2DB7 in r18,__SP_L__ |
558 039c 3EB7 in r19,__SP_H__ |
559 039e 2A5F subi r18,lo8(-(6)) |
560 03a0 3F4F sbci r19,hi8(-(6)) |
561 03a2 2DBF out __SP_L__,r18 |
562 .L46: |
563 03a4 2196 adiw r28,1 |
564 03a6 84E0 ldi r24,lo8(4) |
565 03a8 90E0 ldi r25,hi8(4) |
566 03aa C80E add r12,r24 |
567 03ac D91E adc r13,r25 |
568 03ae 085F subi r16,lo8(-(8)) |
569 03b0 1F4F sbci r17,hi8(-(8)) |
570 03b2 CC30 cpi r28,12 |
571 03b4 D105 cpc r29,__zero_reg__ |
572 03b6 00F4 brsh .+2 |
573 03b8 00C0 rjmp .L58 |
574 03ba C0E0 ldi r28,lo8(0) |
575 03bc D0E0 ldi r29,hi8(0) |
576 03be 00E0 ldi r16,lo8(Motor) |
577 03c0 10E0 ldi r17,hi8(Motor) |
578 03c2 E0E0 ldi r30,lo8(Mixer+13) |
579 03c4 EE2E mov r14,r30 |
580 03c6 E0E0 ldi r30,hi8(Mixer+13) |
581 03c8 FE2E mov r15,r30 |
582 .L63: |
583 03ca F801 movw r30,r16 |
584 03cc 8381 ldd r24,Z+3 |
585 03ce 87FD sbrc r24,7 |
586 03d0 00C0 rjmp .L62 |
587 03d2 F701 movw r30,r14 |
588 03d4 8081 ld r24,Z |
589 03d6 1816 cp __zero_reg__,r24 |
590 03d8 04F4 brge .L62 |
591 03da 2196 adiw r28,1 |
592 03dc DF93 push r29 |
593 03de CF93 push r28 |
594 03e0 2197 sbiw r28,1 |
595 03e2 80E0 ldi r24,lo8(__c.2) |
596 03e4 90E0 ldi r25,hi8(__c.2) |
597 03e6 9F93 push r25 |
598 03e8 8F93 push r24 |
599 03ea 80E0 ldi r24,lo8(pm(uart_putchar)) |
600 03ec 90E0 ldi r25,hi8(pm(uart_putchar)) |
601 03ee 9F93 push r25 |
602 03f0 8F93 push r24 |
603 03f2 E091 0000 lds r30,_printf_P |
604 03f6 F091 0000 lds r31,(_printf_P)+1 |
605 03fa 0995 icall |
606 03fc 82E0 ldi r24,lo8(2) |
607 03fe 8093 0000 sts ServoActive,r24 |
608 0402 2DB7 in r18,__SP_L__ |
609 0404 3EB7 in r19,__SP_H__ |
610 0406 2A5F subi r18,lo8(-(6)) |
611 0408 3F4F sbci r19,hi8(-(6)) |
612 040a 2DBF out __SP_L__,r18 |
613 .L62: |
614 040c F801 movw r30,r16 |
615 040e 8381 ldd r24,Z+3 |
616 0410 8078 andi r24,lo8(-128) |
617 0412 8383 std Z+3,r24 |
618 0414 2196 adiw r28,1 |
619 0416 24E0 ldi r18,lo8(4) |
620 0418 30E0 ldi r19,hi8(4) |
621 041a E20E add r14,r18 |
622 041c F31E adc r15,r19 |
623 041e 085F subi r16,lo8(-(8)) |
624 0420 1F4F sbci r17,hi8(-(8)) |
625 0422 CC30 cpi r28,12 |
626 0424 D105 cpc r29,__zero_reg__ |
627 0426 00F0 brlo .L63 |
628 0428 0E94 0000 call PrintLine |
629 042c 9091 0000 lds r25,RequiredMotors |
630 0430 8091 0000 lds r24,FoundMotors |
631 0434 9817 cp r25,r24 |
632 0436 00F4 brsh .L64 |
633 0438 8091 0000 lds r24,VersionInfo+6 |
634 043c 8061 ori r24,lo8(16) |
635 043e 8093 0000 sts VersionInfo+6,r24 |
636 .L64: |
637 0442 80E0 ldi r24,lo8(__c.3) |
638 0444 90E0 ldi r25,hi8(__c.3) |
639 0446 9F93 push r25 |
640 0448 8F93 push r24 |
641 044a C0E0 ldi r28,lo8(pm(uart_putchar)) |
642 044c D0E0 ldi r29,hi8(pm(uart_putchar)) |
643 044e DF93 push r29 |
644 0450 CF93 push r28 |
645 0452 E091 0000 lds r30,_printf_P |
646 0456 F091 0000 lds r31,(_printf_P)+1 |
647 045a 0995 icall |
648 045c 88EE ldi r24,lo8(1000) |
649 045e 93E0 ldi r25,hi8(1000) |
650 0460 0E94 0000 call SetDelay |
651 0464 7C01 movw r14,r24 |
652 0466 0E94 0000 call SucheLuftruckOffset |
653 046a 0F90 pop __tmp_reg__ |
654 046c 0F90 pop __tmp_reg__ |
655 046e 0F90 pop __tmp_reg__ |
656 0470 0F90 pop __tmp_reg__ |
657 .L65: |
658 0472 C701 movw r24,r14 |
659 0474 0E94 0000 call CheckDelay |
660 0478 8823 tst r24 |
661 047a 01F0 breq .L65 |
662 047c 80E0 ldi r24,lo8(__c.4) |
663 047e 90E0 ldi r25,hi8(__c.4) |
664 0480 9F93 push r25 |
665 0482 8F93 push r24 |
666 0484 DF93 push r29 |
667 0486 CF93 push r28 |
668 0488 E091 0000 lds r30,_printf_P |
669 048c F091 0000 lds r31,(_printf_P)+1 |
670 0490 0995 icall |
671 0492 80E0 ldi r24,lo8(0) |
672 0494 0E94 0000 call SetNeutral |
673 0498 8091 0000 lds r24,PlatinenVersion |
674 049c 0F90 pop __tmp_reg__ |
675 049e 0F90 pop __tmp_reg__ |
676 04a0 0F90 pop __tmp_reg__ |
677 04a2 0F90 pop __tmp_reg__ |
678 04a4 8A30 cpi r24,lo8(10) |
679 04a6 01F0 breq .L69 |
680 04a8 8431 cpi r24,lo8(20) |
681 04aa 00F0 brlo .L68 |
682 .L69: |
683 04ac 2898 cbi 37-0x20,0 |
684 04ae 00C0 rjmp .L70 |
685 .L68: |
686 04b0 289A sbi 37-0x20,0 |
687 .L70: |
688 04b2 80ED ldi r24,lo8(2000) |
689 04b4 97E0 ldi r25,hi8(2000) |
690 04b6 9093 0000 sts (beeptime)+1,r25 |
691 04ba 8093 0000 sts beeptime,r24 |
692 04be 85E5 ldi r24,lo8(85) |
693 04c0 8093 0000 sts ExternControl,r24 |
694 04c4 8EE0 ldi r24,lo8(14) |
695 04c6 90E0 ldi r25,hi8(14) |
696 04c8 0E94 0000 call GetParamByte |
697 04cc 9927 clr r25 |
698 04ce 182F mov r17,r24 |
699 04d0 0027 clr r16 |
700 04d2 8FE0 ldi r24,lo8(15) |
701 04d4 90E0 ldi r25,hi8(15) |
702 04d6 0E94 0000 call GetParamByte |
703 04da 080F add r16,r24 |
704 04dc 111D adc r17,__zero_reg__ |
705 04de 1093 0000 sts (FlugMinuten)+1,r17 |
706 04e2 0093 0000 sts FlugMinuten,r16 |
707 04e6 8AE0 ldi r24,lo8(10) |
708 04e8 90E0 ldi r25,hi8(10) |
709 04ea 0E94 0000 call GetParamByte |
710 04ee 9927 clr r25 |
711 04f0 182F mov r17,r24 |
712 04f2 0027 clr r16 |
713 04f4 8BE0 ldi r24,lo8(11) |
714 04f6 90E0 ldi r25,hi8(11) |
715 04f8 0E94 0000 call GetParamByte |
716 04fc 080F add r16,r24 |
717 04fe 111D adc r17,__zero_reg__ |
718 0500 1093 0000 sts (FlugMinutenGesamt)+1,r17 |
719 0504 0093 0000 sts FlugMinutenGesamt,r16 |
720 0508 0F5F subi r16,lo8(-1) |
721 050a 1F4F sbci r17,hi8(-1) |
722 050c 01F0 breq .L72 |
723 050e 8091 0000 lds r24,FlugMinuten |
724 0512 9091 0000 lds r25,(FlugMinuten)+1 |
725 0516 8F5F subi r24,lo8(-1) |
726 0518 9F4F sbci r25,hi8(-1) |
727 051a 01F4 brne .L71 |
728 .L72: |
729 051c 1092 0000 sts (FlugMinuten)+1,__zero_reg__ |
730 0520 1092 0000 sts FlugMinuten,__zero_reg__ |
731 0524 1092 0000 sts (FlugMinutenGesamt)+1,__zero_reg__ |
732 0528 1092 0000 sts FlugMinutenGesamt,__zero_reg__ |
733 .L71: |
734 052c 8091 0000 lds r24,FlugMinutenGesamt |
735 0530 9091 0000 lds r25,(FlugMinutenGesamt)+1 |
736 0534 9F93 push r25 |
737 0536 8F93 push r24 |
738 0538 8091 0000 lds r24,FlugMinuten |
739 053c 9091 0000 lds r25,(FlugMinuten)+1 |
740 0540 9F93 push r25 |
741 0542 8F93 push r24 |
742 0544 80E0 ldi r24,lo8(__c.5) |
743 0546 90E0 ldi r25,hi8(__c.5) |
744 0548 9F93 push r25 |
745 054a 8F93 push r24 |
746 054c DF93 push r29 |
747 054e CF93 push r28 |
748 0550 E091 0000 lds r30,_printf_P |
749 0554 F091 0000 lds r31,(_printf_P)+1 |
750 0558 0995 icall |
751 055a 0E94 0000 call LcdClear |
752 055e 88E8 ldi r24,lo8(5000) |
753 0560 93E1 ldi r25,hi8(5000) |
754 0562 9093 0000 sts (I2CTimeout)+1,r25 |
755 0566 8093 0000 sts I2CTimeout,r24 |
756 056a C1E0 ldi r28,lo8(1) |
757 056c C093 0000 sts WinkelOut+7,r28 |
758 0570 8C2F mov r24,r28 |
759 0572 0E94 0000 call LipoDetection |
760 0576 8091 0000 lds r24,EE_Parameter+39 |
761 057a 0E94 0000 call LIBFC_ReceiverInit |
762 057e 0E94 0000 call PrintLine |
763 0582 80ED ldi r24,lo8(2000) |
764 0584 97E0 ldi r25,hi8(2000) |
765 0586 0E94 0000 call SetDelay |
766 058a 7C01 movw r14,r24 |
767 058c 8AEF ldi r24,lo8(250) |
768 058e 90E0 ldi r25,hi8(250) |
769 0590 0E94 0000 call SetDelay |
770 0594 83E0 ldi r24,lo8(3) |
771 0596 8093 0000 sts DebugOut,r24 |
772 059a 1092 0000 sts JetiBeep,__zero_reg__ |
773 059e 8091 0000 lds r24,EE_Parameter+110 |
774 05a2 2DB7 in r18,__SP_L__ |
775 05a4 3EB7 in r19,__SP_H__ |
776 05a6 285F subi r18,lo8(-(8)) |
777 05a8 3F4F sbci r19,hi8(-(8)) |
778 05aa 2DBF out __SP_L__,r18 |
779 05ac 84FF sbrs r24,4 |
780 05ae 00C0 rjmp .L247 |
781 05b0 C093 0000 sts DisableRcOffBeeping,r28 |
782 .L247: |
783 05b4 8091 0000 lds r24,ReceiverUpdateModeActive |
784 05b8 8823 tst r24 |
785 05ba 01F0 breq .L76 |
786 .L77: |
787 05bc 4798 cbi 40-0x20,7 |
788 05be 00C0 rjmp .L77 |
789 .L76: |
790 05c0 8091 0000 lds r24,UpdateMotor |
791 05c4 8823 tst r24 |
792 05c6 01F4 brne .+2 |
793 05c8 00C0 rjmp .L79 |
794 05ca 8091 0000 lds r24,AdReady |
795 05ce 8823 tst r24 |
796 05d0 01F4 brne .+2 |
797 05d2 00C0 rjmp .L79 |
798 05d4 1092 0000 sts UpdateMotor,__zero_reg__ |
799 05d8 8091 0000 lds r24,WinkelOut+6 |
800 05dc 8823 tst r24 |
801 05de 01F0 breq .L80 |
802 05e0 0E94 0000 call CalMk3Mag |
803 05e4 00C0 rjmp .L81 |
804 .L80: |
805 05e6 0E94 0000 call MotorRegler |
806 .L81: |
807 05ea 0E94 0000 call SendMotorData |
808 05ee 2091 0000 lds r18,PlatinenVersion |
809 05f2 2A30 cpi r18,lo8(10) |
810 05f4 01F0 breq .L83 |
811 05f6 2431 cpi r18,lo8(20) |
812 05f8 00F0 brlo .L82 |
813 .L83: |
814 05fa 2898 cbi 37-0x20,0 |
815 05fc 00C0 rjmp .L84 |
816 .L82: |
817 05fe 289A sbi 37-0x20,0 |
818 .L84: |
819 0600 8091 0000 lds r24,SenderOkay |
820 0604 8823 tst r24 |
821 0606 01F0 breq .L85 |
822 0608 8091 0000 lds r24,SenderOkay |
823 060c 8150 subi r24,lo8(-(-1)) |
824 060e 8093 0000 sts SenderOkay,r24 |
825 0612 00C0 rjmp .L86 |
826 .L85: |
827 0614 8091 6F00 lds r24,111 |
828 0618 8062 ori r24,lo8(32) |
829 061a 8093 6F00 sts 111,r24 |
830 061e 1092 0000 sts (PPM_in)+1,__zero_reg__ |
831 0622 1092 0000 sts PPM_in,__zero_reg__ |
832 0626 8091 0000 lds r24,VersionInfo+6 |
833 062a 8860 ori r24,lo8(8) |
834 062c 8093 0000 sts VersionInfo+6,r24 |
835 .L86: |
836 0630 8091 0000 lds r24,I2CTimeout |
837 0634 9091 0000 lds r25,(I2CTimeout)+1 |
838 0638 0197 sbiw r24,1 |
839 063a 9093 0000 sts (I2CTimeout)+1,r25 |
840 063e 8093 0000 sts I2CTimeout,r24 |
841 0642 8091 0000 lds r24,I2CTimeout |
842 0646 9091 0000 lds r25,(I2CTimeout)+1 |
843 064a 892B or r24,r25 |
844 064c 01F0 breq .L88 |
845 064e 8091 0000 lds r24,MissingMotor |
846 0652 8823 tst r24 |
847 0654 01F0 breq .L87 |
848 .L88: |
849 0656 8091 0000 lds r24,I2CTimeout |
850 065a 9091 0000 lds r25,(I2CTimeout)+1 |
851 065e 892B or r24,r25 |
852 0660 01F4 brne .L89 |
853 0662 0E94 0000 call I2C_Reset |
854 0666 85E0 ldi r24,lo8(5) |
855 0668 90E0 ldi r25,hi8(5) |
856 066a 9093 0000 sts (I2CTimeout)+1,r25 |
857 066e 8093 0000 sts I2CTimeout,r24 |
858 0672 8091 0000 lds r24,DebugOut+58 |
859 0676 9091 0000 lds r25,(DebugOut+58)+1 |
860 067a 0196 adiw r24,1 |
861 067c 9093 0000 sts (DebugOut+58)+1,r25 |
862 0680 8093 0000 sts DebugOut+58,r24 |
863 0684 8091 0000 lds r24,VersionInfo+6 |
864 0688 8160 ori r24,lo8(1) |
865 068a 8093 0000 sts VersionInfo+6,r24 |
866 068e 8091 0000 lds r24,DebugOut+1 |
867 0692 8260 ori r24,lo8(2) |
868 0694 8093 0000 sts DebugOut+1,r24 |
869 .L89: |
870 0698 8091 0000 lds r24,BeepMuster |
871 069c 9091 0000 lds r25,(BeepMuster)+1 |
872 06a0 8F5F subi r24,lo8(-1) |
873 06a2 9F4F sbci r25,hi8(-1) |
874 06a4 01F4 brne .L91 |
875 06a6 8091 0000 lds r24,MotorenEin |
876 06aa 8823 tst r24 |
877 06ac 01F0 breq .L91 |
878 06ae 88EA ldi r24,lo8(25000) |
879 06b0 91E6 ldi r25,hi8(25000) |
880 06b2 9093 0000 sts (beeptime)+1,r25 |
881 06b6 8093 0000 sts beeptime,r24 |
882 06ba 80E8 ldi r24,lo8(128) |
883 06bc 90E0 ldi r25,hi8(128) |
884 06be 9093 0000 sts (BeepMuster)+1,r25 |
885 06c2 8093 0000 sts BeepMuster,r24 |
886 06c6 00C0 rjmp .L91 |
887 .L87: |
888 06c8 2A30 cpi r18,lo8(10) |
889 06ca 01F0 breq .L93 |
890 06cc 2431 cpi r18,lo8(20) |
891 06ce 00F0 brlo .L92 |
892 .L93: |
893 06d0 2898 cbi 37-0x20,0 |
894 06d2 00C0 rjmp .L91 |
895 .L92: |
896 06d4 289A sbi 37-0x20,0 |
897 .L91: |
898 06d6 0E94 0000 call LIBFC_Polling |
899 06da 8091 0000 lds r24,UpdateMotor |
900 06de 8823 tst r24 |
901 06e0 01F0 breq .+2 |
902 06e2 00C0 rjmp .L79 |
903 06e4 8091 0000 lds r24,NewSBusData |
904 06e8 8823 tst r24 |
905 06ea 01F0 breq .L96 |
906 06ec 0E94 0000 call ProcessSBus |
907 06f0 00C0 rjmp .L79 |
908 .L96: |
909 06f2 8091 0000 lds r24,CalculateServoSignals |
910 06f6 8823 tst r24 |
911 06f8 01F0 breq .L98 |
912 06fa 0E94 0000 call CalculateServo |
913 .L98: |
914 06fe 0E94 0000 call DatenUebertragung |
915 0702 0E94 0000 call BearbeiteRxDaten |
916 0706 C701 movw r24,r14 |
917 0708 0E94 0000 call CheckDelay |
918 070c 8823 tst r24 |
919 070e 01F4 brne .+2 |
920 0710 00C0 rjmp .L99 |
921 0712 84E1 ldi r24,lo8(20) |
922 0714 90E0 ldi r25,hi8(20) |
923 0716 E80E add r14,r24 |
924 0718 F91E adc r15,r25 |
925 071a 0E94 0000 call CalcNickServoValue |
926 071e 8091 0000 lds r24,EE_Parameter+39 |
927 0722 8630 cpi r24,lo8(6) |
928 0724 01F4 brne .L100 |
929 0726 0E94 0000 call HoTT_Menu |
930 072a 00C0 rjmp .L101 |
931 .L100: |
932 072c 8430 cpi r24,lo8(4) |
933 072e 01F4 brne .L101 |
934 0730 0E94 0000 call BuildJeti_Vario |
935 .L101: |
936 0734 8091 0000 lds r24,MissingMotor |
937 0738 8823 tst r24 |
938 073a 01F0 breq .L103 |
939 073c 8091 0000 lds r24,VersionInfo+6 |
940 0740 8260 ori r24,lo8(2) |
941 0742 8093 0000 sts VersionInfo+6,r24 |
942 0746 8091 0000 lds r24,DebugOut+1 |
943 074a 8260 ori r24,lo8(2) |
944 074c 00C0 rjmp .L244 |
945 .L103: |
946 074e 8091 0000 lds r24,beeptime |
947 0752 9091 0000 lds r25,(beeptime)+1 |
948 0756 892B or r24,r25 |
949 0758 01F4 brne .L104 |
950 075a 8091 0000 lds r24,I2CTimeout |
951 075e 9091 0000 lds r25,(I2CTimeout)+1 |
952 0762 0797 sbiw r24,7 |
953 0764 00F0 brlo .L104 |
954 0766 8091 0000 lds r24,DebugOut+1 |
955 076a 8D7F andi r24,lo8(-3) |
956 .L244: |
957 076c 8093 0000 sts DebugOut+1,r24 |
958 .L104: |
959 0770 8091 0000 lds r24,DisableRcOffBeeping |
960 0774 8823 tst r24 |
961 0776 01F0 breq .L107 |
962 0778 8091 0000 lds r24,SenderOkay |
963 077c 8739 cpi r24,lo8(-105) |
964 077e 00F0 brlo .L107 |
965 0780 1092 0000 sts DisableRcOffBeeping,__zero_reg__ |
966 0784 88E8 ldi r24,lo8(5000) |
967 0786 93E1 ldi r25,hi8(5000) |
968 0788 9093 0000 sts (beeptime)+1,r25 |
969 078c 8093 0000 sts beeptime,r24 |
970 .L107: |
971 0790 8091 0000 lds r24,PcZugriff |
972 0794 8823 tst r24 |
973 0796 01F0 breq .L109 |
974 0798 8150 subi r24,lo8(-(-1)) |
975 079a 8093 0000 sts PcZugriff,r24 |
976 079e 00C0 rjmp .L110 |
977 .L109: |
978 07a0 8093 0000 sts ExternControl+10,r24 |
979 07a4 1092 0000 sts (ExternStickNick)+1,__zero_reg__ |
980 07a8 1092 0000 sts ExternStickNick,__zero_reg__ |
981 07ac 1092 0000 sts (ExternStickRoll)+1,__zero_reg__ |
982 07b0 1092 0000 sts ExternStickRoll,__zero_reg__ |
983 07b4 1092 0000 sts (ExternStickGier)+1,__zero_reg__ |
984 07b8 1092 0000 sts ExternStickGier,__zero_reg__ |
985 07bc 8091 0000 lds r24,SenderOkay |
986 07c0 8823 tst r24 |
987 07c2 01F4 brne .L110 |
988 07c4 8091 0000 lds r24,BeepMuster |
989 07c8 9091 0000 lds r25,(BeepMuster)+1 |
990 07cc 8F5F subi r24,lo8(-1) |
991 07ce 9F4F sbci r25,hi8(-1) |
992 07d0 01F4 brne .L110 |
993 07d2 2091 0000 lds r18,DisableRcOffBeeping |
994 07d6 2230 cpi r18,lo8(2) |
995 07d8 01F0 breq .L110 |
996 07da 88E9 ldi r24,lo8(15000) |
997 07dc 9AE3 ldi r25,hi8(15000) |
998 07de 9093 0000 sts (beeptime)+1,r25 |
999 07e2 8093 0000 sts beeptime,r24 |
1000 07e6 80E0 ldi r24,lo8(3072) |
1001 07e8 9CE0 ldi r25,hi8(3072) |
1002 07ea 9093 0000 sts (BeepMuster)+1,r25 |
1003 07ee 8093 0000 sts BeepMuster,r24 |
1004 07f2 2223 tst r18 |
1005 07f4 01F0 breq .L110 |
1006 07f6 82E0 ldi r24,lo8(2) |
1007 07f8 8093 0000 sts DisableRcOffBeeping,r24 |
1008 .L110: |
1009 07fc 8091 0000 lds r24,NaviDataOkay |
1010 0800 893C cpi r24,lo8(-55) |
1011 0802 00F0 brlo .L114 |
1012 0804 8150 subi r24,lo8(-(-1)) |
1013 0806 8093 0000 sts NaviDataOkay,r24 |
1014 080a 8091 0000 lds r24,VersionInfo+6 |
1015 080e 8B7F andi r24,lo8(-5) |
1016 0810 8093 0000 sts VersionInfo+6,r24 |
1017 0814 00C0 rjmp .L115 |
1018 .L114: |
1019 0816 8091 0000 lds r24,NC_Version+3 |
1020 081a 8823 tst r24 |
1021 081c 01F0 breq .L116 |
1022 081e 8091 0000 lds r24,VersionInfo+6 |
1023 0822 8460 ori r24,lo8(4) |
1024 0824 8093 0000 sts VersionInfo+6,r24 |
1025 0828 89E0 ldi r24,lo8(9) |
1026 082a 8093 0000 sts NC_ErrorCode,r24 |
1027 082e 8091 0000 lds r24,BeepMuster |
1028 0832 9091 0000 lds r25,(BeepMuster)+1 |
1029 0836 8F5F subi r24,lo8(-1) |
1030 0838 9F4F sbci r25,hi8(-1) |
1031 083a 01F4 brne .L116 |
1032 083c 8091 0000 lds r24,MotorenEin |
1033 0840 8823 tst r24 |
1034 0842 01F0 breq .L116 |
1035 0844 88E9 ldi r24,lo8(15000) |
1036 0846 9AE3 ldi r25,hi8(15000) |
1037 0848 9093 0000 sts (beeptime)+1,r25 |
1038 084c 8093 0000 sts beeptime,r24 |
1039 0850 80E0 ldi r24,lo8(-22528) |
1040 0852 98EA ldi r25,hi8(-22528) |
1041 0854 9093 0000 sts (BeepMuster)+1,r25 |
1042 0858 8093 0000 sts BeepMuster,r24 |
1043 .L116: |
1044 085c 1092 0000 sts (GPS_Nick)+1,__zero_reg__ |
1045 0860 1092 0000 sts GPS_Nick,__zero_reg__ |
1046 0864 1092 0000 sts (GPS_Roll)+1,__zero_reg__ |
1047 0868 1092 0000 sts GPS_Roll,__zero_reg__ |
1048 086c 1092 0000 sts GPS_Aid_StickMultiplikator,__zero_reg__ |
1049 0870 1092 0000 sts GPSInfo,__zero_reg__ |
1050 0874 1092 0000 sts (FromNaviCtrl+9)+1,__zero_reg__ |
1051 0878 1092 0000 sts FromNaviCtrl+9,__zero_reg__ |
1052 087c 1092 0000 sts (FromNaviCtrl+11)+1,__zero_reg__ |
1053 0880 1092 0000 sts FromNaviCtrl+11,__zero_reg__ |
1054 0884 8FEF ldi r24,lo8(-1) |
1055 0886 9FEF ldi r25,hi8(-1) |
1056 0888 9093 0000 sts (FromNaviCtrl+7)+1,r25 |
1057 088c 8093 0000 sts FromNaviCtrl+7,r24 |
1058 0890 1092 0000 sts NaviDataOkay,__zero_reg__ |
1059 .L115: |
1060 0894 8091 0000 lds r24,BattLowVoltageWarning |
1061 0898 282F mov r18,r24 |
1062 089a 3327 clr r19 |
1063 089c 8091 0000 lds r24,UBat |
1064 08a0 9091 0000 lds r25,(UBat)+1 |
1065 08a4 8217 cp r24,r18 |
1066 08a6 9307 cpc r25,r19 |
1067 08a8 04F4 brge .L118 |
1068 08aa 8091 0000 lds r24,FC_StatusFlags |
1069 08ae 8062 ori r24,lo8(32) |
1070 08b0 8093 0000 sts FC_StatusFlags,r24 |
1071 08b4 8091 0000 lds r24,BeepMuster |
1072 08b8 9091 0000 lds r25,(BeepMuster)+1 |
1073 08bc 8F5F subi r24,lo8(-1) |
1074 08be 9F4F sbci r25,hi8(-1) |
1075 08c0 01F4 brne .L120 |
1076 08c2 80E7 ldi r24,lo8(6000) |
1077 08c4 97E1 ldi r25,hi8(6000) |
1078 08c6 9093 0000 sts (beeptime)+1,r25 |
1079 08ca 8093 0000 sts beeptime,r24 |
1080 08ce 80E0 ldi r24,lo8(768) |
1081 08d0 93E0 ldi r25,hi8(768) |
1082 08d2 9093 0000 sts (BeepMuster)+1,r25 |
1083 08d6 8093 0000 sts BeepMuster,r24 |
1084 08da 00C0 rjmp .L120 |
1085 .L118: |
1086 08dc 8091 0000 lds r24,beeptime |
1087 08e0 9091 0000 lds r25,(beeptime)+1 |
1088 08e4 892B or r24,r25 |
1089 08e6 01F4 brne .L120 |
1090 08e8 8091 0000 lds r24,FC_StatusFlags |
1091 08ec 8F7D andi r24,lo8(-33) |
1092 08ee 8093 0000 sts FC_StatusFlags,r24 |
1093 .L120: |
1094 08f2 0E94 0000 call SPI_StartTransmitPacket |
1095 08f6 84E0 ldi r24,lo8(4) |
1096 08f8 8093 0000 sts SendSPI,r24 |
1097 08fc 8091 0000 lds r24,second.6 |
1098 0900 8F5F subi r24,lo8(-(1)) |
1099 0902 8093 0000 sts second.6,r24 |
1100 0906 8133 cpi r24,lo8(49) |
1101 0908 01F0 breq .+2 |
1102 090a 00C0 rjmp .L122 |
1103 090c 1092 0000 sts second.6,__zero_reg__ |
1104 0910 8091 0000 lds r24,FC_StatusFlags |
1105 0914 81FF sbrs r24,1 |
1106 0916 00C0 rjmp .L123 |
1107 0918 8091 0000 lds r24,FlugSekunden |
1108 091c 9091 0000 lds r25,(FlugSekunden)+1 |
1109 0920 0196 adiw r24,1 |
1110 0922 9093 0000 sts (FlugSekunden)+1,r25 |
1111 0926 8093 0000 sts FlugSekunden,r24 |
1112 092a 00C0 rjmp .L122 |
1113 .L123: |
1114 092c 5AEA ldi r21,lo8(1450) |
1115 092e 852E mov r8,r21 |
1116 0930 55E0 ldi r21,hi8(1450) |
1117 0932 952E mov r9,r21 |
1118 0934 8091 0000 lds r24,StartLuftdruck |
1119 0938 9091 0000 lds r25,(StartLuftdruck)+1 |
1120 093c 9C01 movw r18,r24 |
1121 093e 4427 clr r20 |
1122 0940 37FD sbrc r19,7 |
1123 0942 4095 com r20 |
1124 0944 542F mov r21,r20 |
1125 0946 8091 0000 lds r24,Luftdruck |
1126 094a 9091 0000 lds r25,(Luftdruck)+1 |
1127 094e A091 0000 lds r26,(Luftdruck)+2 |
1128 0952 B091 0000 lds r27,(Luftdruck)+3 |
1129 0956 2817 cp r18,r24 |
1130 0958 3907 cpc r19,r25 |
1131 095a 4A07 cpc r20,r26 |
1132 095c 5B07 cpc r21,r27 |
1133 095e 04F4 brge .L125 |
1134 0960 8091 0000 lds r24,StartLuftdruck |
1135 0964 9091 0000 lds r25,(StartLuftdruck)+1 |
1136 0968 0196 adiw r24,1 |
1137 096a 00C0 rjmp .L245 |
1138 .L125: |
1139 096c 8091 0000 lds r24,StartLuftdruck |
1140 0970 9091 0000 lds r25,(StartLuftdruck)+1 |
1141 0974 9C01 movw r18,r24 |
1142 0976 4427 clr r20 |
1143 0978 37FD sbrc r19,7 |
1144 097a 4095 com r20 |
1145 097c 542F mov r21,r20 |
1146 097e 8091 0000 lds r24,Luftdruck |
1147 0982 9091 0000 lds r25,(Luftdruck)+1 |
1148 0986 A091 0000 lds r26,(Luftdruck)+2 |
1149 098a B091 0000 lds r27,(Luftdruck)+3 |
1150 098e 8217 cp r24,r18 |
1151 0990 9307 cpc r25,r19 |
1152 0992 A407 cpc r26,r20 |
1153 0994 B507 cpc r27,r21 |
1154 0996 04F4 brge .L122 |
1155 0998 8091 0000 lds r24,StartLuftdruck |
1156 099c 9091 0000 lds r25,(StartLuftdruck)+1 |
1157 09a0 0197 sbiw r24,1 |
1158 .L245: |
1159 09a2 9093 0000 sts (StartLuftdruck)+1,r25 |
1160 09a6 8093 0000 sts StartLuftdruck,r24 |
1161 .L122: |
1162 09aa 0894 sec |
1163 09ac 811C adc r8,__zero_reg__ |
1164 09ae 911C adc r9,__zero_reg__ |
1165 09b0 32E7 ldi r19,lo8(2930) |
1166 09b2 8316 cp r8,r19 |
1167 09b4 3BE0 ldi r19,hi8(2930) |
1168 09b6 9306 cpc r9,r19 |
1169 09b8 01F0 breq .+2 |
1170 09ba 00C0 rjmp .L99 |
1171 09bc 8824 clr r8 |
1172 09be 9924 clr r9 |
1173 09c0 2091 0000 lds r18,FlugMinuten |
1174 09c4 3091 0000 lds r19,(FlugMinuten)+1 |
1175 09c8 2F5F subi r18,lo8(-(1)) |
1176 09ca 3F4F sbci r19,hi8(-(1)) |
1177 09cc 3093 0000 sts (FlugMinuten)+1,r19 |
1178 09d0 2093 0000 sts FlugMinuten,r18 |
1179 09d4 8091 0000 lds r24,FlugMinutenGesamt |
1180 09d8 9091 0000 lds r25,(FlugMinutenGesamt)+1 |
1181 09dc 0196 adiw r24,1 |
1182 09de 9093 0000 sts (FlugMinutenGesamt)+1,r25 |
1183 09e2 8093 0000 sts FlugMinutenGesamt,r24 |
1184 09e6 832F mov r24,r19 |
1185 09e8 9927 clr r25 |
1186 09ea 682F mov r22,r24 |
1187 09ec 8EE0 ldi r24,lo8(14) |
1188 09ee 90E0 ldi r25,hi8(14) |
1189 09f0 0E94 0000 call SetParamByte |
1190 09f4 8091 0000 lds r24,FlugMinuten |
1191 09f8 9091 0000 lds r25,(FlugMinuten)+1 |
1192 09fc 9070 andi r25,hi8(255) |
1193 09fe 682F mov r22,r24 |
1194 0a00 8FE0 ldi r24,lo8(15) |
1195 0a02 90E0 ldi r25,hi8(15) |
1196 0a04 0E94 0000 call SetParamByte |
1197 0a08 8091 0000 lds r24,FlugMinutenGesamt |
1198 0a0c 9091 0000 lds r25,(FlugMinutenGesamt)+1 |
1199 0a10 892F mov r24,r25 |
1200 0a12 9927 clr r25 |
1201 0a14 682F mov r22,r24 |
1202 0a16 8AE0 ldi r24,lo8(10) |
1203 0a18 90E0 ldi r25,hi8(10) |
1204 0a1a 0E94 0000 call SetParamByte |
1205 0a1e 8091 0000 lds r24,FlugMinutenGesamt |
1206 0a22 9091 0000 lds r25,(FlugMinutenGesamt)+1 |
1207 0a26 9070 andi r25,hi8(255) |
1208 0a28 682F mov r22,r24 |
1209 0a2a 8BE0 ldi r24,lo8(11) |
1210 0a2c 90E0 ldi r25,hi8(11) |
1211 0a2e 0E94 0000 call SetParamByte |
1212 0a32 84E1 ldi r24,lo8(20) |
1213 0a34 90E0 ldi r25,hi8(20) |
1214 0a36 0E94 0000 call SetDelay |
1215 0a3a 7C01 movw r14,r24 |
1216 .L99: |
1217 0a3c 0E94 0000 call LED_Update |
1218 0a40 0E94 0000 call Capacity_Update |
1219 .L79: |
1220 0a44 8091 0000 lds r24,SendSPI |
1221 0a48 8823 tst r24 |
1222 0a4a 01F0 breq .+2 |
1223 0a4c 00C0 rjmp .L247 |
1224 0a4e 0E94 0000 call SPI_TransmitByte |
1225 0a52 00C0 rjmp .L247 |
1226 /* epilogue: frame size=0 */ |
1227 /* epilogue: noreturn */ |
1228 /* epilogue end (size=0) */ |
1229 /* function main size 1124 (1120) */ |
1231 .comm _printf_P,2,1 |
1232 /* File "main.c": code 1335 = 0x0537 (1322), prologues 7, epilogues 6 */ |
DEFINED SYMBOLS |
*ABS*:00000000 main.c |
C:\Temp/ccNa7tFS.s:3 *ABS*:0000003f __SREG__ |
C:\Temp/ccNa7tFS.s:4 *ABS*:0000003e __SP_H__ |
C:\Temp/ccNa7tFS.s:5 *ABS*:0000003d __SP_L__ |
C:\Temp/ccNa7tFS.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Temp/ccNa7tFS.s:7 *ABS*:00000001 __zero_reg__ |
C:\Temp/ccNa7tFS.s:15 .bss:00000000 JetiBeep |
C:\Temp/ccNa7tFS.s:21 .bss:00000001 FoundMotors |
C:\Temp/ccNa7tFS.s:27 .bss:00000002 FlugSekunden |
C:\Temp/ccNa7tFS.s:33 .bss:00000004 FlugMinutenGesamt |
C:\Temp/ccNa7tFS.s:39 .bss:00000006 FlugMinuten |
C:\Temp/ccNa7tFS.s:45 .data:00000000 BattLowVoltageWarning |
C:\Temp/ccNa7tFS.s:50 .data:00000001 PlatinenVersion |
C:\Temp/ccNa7tFS.s:57 .bss:00000008 DisableRcOffBeeping |
C:\Temp/ccNa7tFS.s:62 .progmem.data:00000000 __c.11 |
C:\Temp/ccNa7tFS.s:67 .text:00000000 PrintLine |
*COM*:00000002 _printf_P |
C:\Temp/ccNa7tFS.s:93 .data:00000002 stick.10 |
C:\Temp/ccNa7tFS.s:98 .text:00000024 CalMk3Mag |
C:\Temp/ccNa7tFS.s:152 .progmem.data:00000026 __c.7 |
C:\Temp/ccNa7tFS.s:156 .progmem.data:0000002e __c.8 |
C:\Temp/ccNa7tFS.s:160 .progmem.data:00000039 __c.9 |
C:\Temp/ccNa7tFS.s:165 .text:0000008e LipoDetection |
C:\Temp/ccNa7tFS.s:302 .progmem.data:0000004d __c.0 |
C:\Temp/ccNa7tFS.s:306 .progmem.data:0000005f __c.1 |
C:\Temp/ccNa7tFS.s:310 .progmem.data:00000062 __c.2 |
C:\Temp/ccNa7tFS.s:314 .progmem.data:00000080 __c.3 |
C:\Temp/ccNa7tFS.s:318 .progmem.data:000000a0 __c.4 |
C:\Temp/ccNa7tFS.s:322 .progmem.data:000000a5 __c.5 |
.bss:00000009 second.6 |
C:\Temp/ccNa7tFS.s:328 .text:000001a2 main |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
uart_putchar |
EE_Parameter |
PPM_in |
WinkelOut |
beeptime |
Piep |
DebugOut |
SetDelay |
CheckDelay |
UBat |
__udivmodqi4 |
__stack |
StickGier |
StickRoll |
StickNick |
GIER_GRAD_FAKTOR |
Timer_Init |
TIMER2_Init |
UART_Init |
rc_sum_init |
ADC_Init |
I2C_Init |
SPI_MasterInit |
Capacity_Init |
LIBFC_Init |
ParamSet_Init |
BLFlags |
motor_read |
SendMotorData |
Motor |
Mixer |
ServoActive |
RequiredMotors |
VersionInfo |
SucheLuftruckOffset |
SetNeutral |
ExternControl |
GetParamByte |
LcdClear |
I2CTimeout |
LIBFC_ReceiverInit |
ReceiverUpdateModeActive |
UpdateMotor |
AdReady |
MotorRegler |
SenderOkay |
MissingMotor |
I2C_Reset |
BeepMuster |
MotorenEin |
LIBFC_Polling |
NewSBusData |
ProcessSBus |
CalculateServoSignals |
CalculateServo |
DatenUebertragung |
BearbeiteRxDaten |
CalcNickServoValue |
HoTT_Menu |
BuildJeti_Vario |
PcZugriff |
ExternStickNick |
ExternStickRoll |
ExternStickGier |
NaviDataOkay |
NC_Version |
NC_ErrorCode |
GPS_Nick |
GPS_Roll |
GPS_Aid_StickMultiplikator |
GPSInfo |
FromNaviCtrl |
FC_StatusFlags |
SPI_StartTransmitPacket |
SendSPI |
StartLuftdruck |
Luftdruck |
SetParamByte |
LED_Update |
Capacity_Update |
SPI_TransmitByte |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/makefile |
---|
0,0 → 1,495 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega1284p |
#MCU = atmega644p |
F_CPU = 20000000 |
#------------------------------------------------------------------- |
VERSION_MAJOR = 0 |
VERSION_MINOR = 90 |
VERSION_PATCH = 3 |
VERSION_SERIAL_MAJOR = 11 # Serial Protocol |
VERSION_SERIAL_MINOR = 0 # Serial Protocol |
NC_SPI_COMPATIBLE = 52 # Navi-Kompatibilität |
#------------------------------------------------------------------- |
# ATMEGA644: 63487 is maximum |
#------------------------------------------------------------------- |
# 0 a |
# 1 b |
# 2 c |
# 3 d |
# 4 e |
# 5 f |
# 6 g |
# 7 h |
# 8 i |
# 9 j |
# 10 k |
# 11 L |
#------------------------------------------------------------------- |
# get SVN revision |
REV := $(shell sh -c "cat .svn/entries | sed -n '4p'") |
ifeq ($(MCU), atmega1284p) |
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
HEX_NAME = MEGA1284P |
LIBFC_EXT = 1284 |
endif |
ifeq ($(MCU), atmega644p) |
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
HEX_NAME = MEGA644 |
LIBFC_EXT = 644 |
endif |
ifeq ($(F_CPU), 16000000) |
QUARZ = 16MHZ |
endif |
ifeq ($(F_CPU), 20000000) |
QUARZ = 20MHZ |
endif |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
ifeq ($(VERSION_PATCH), 0) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)a_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 1) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)b_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 2) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)c_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 3) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)d_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 4) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)e_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 5) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)f_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 6) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)g_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 7) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)h_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 8) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)i_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 9) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)j_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 10) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)k_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 11) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)L_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 12) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)m_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 13) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)n_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 14) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)o_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 15) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)p_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 16) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)q_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 17) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)r_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 18) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)s_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 19) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)t_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 20) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)u_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 21) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)v_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 22) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)w_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 23) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)x_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 24) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)y_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 25) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)z_SVN$(REV) |
endif |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
#OPT = 2 |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c timer0.c analog.c menu.c eeprom.c |
SRC += twimaster.c rc.c fc.c GPS.c spi.c led.c Spektrum.c |
SRC += mymath.c jetimenu.c capacity.c debug.c |
SRC += hottmenu.c sbus.c user_receiver.c |
SRC += jeti_ex.c |
########################################################################################################## |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = isqrt.S |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -O$(OPT) -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=$(<:%.c=%.lst) $(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
# shrink code size |
CFLAGS += -mtiny-stack |
#CFLAGS += -fno-inline-functions |
CFLAGS += -mcall-prologues |
CFLAGS += -DF_CPU=$(F_CPU) -DVERSION_MAJOR=$(VERSION_MAJOR) -DVERSION_MINOR=$(VERSION_MINOR) -DVERSION_PATCH=$(VERSION_PATCH) -DVERSION_SERIAL_MAJOR=$(VERSION_SERIAL_MAJOR) -DVERSION_SERIAL_MINOR=$(VERSION_SERIAL_MINOR) -DNC_SPI_COMPATIBLE=$(NC_SPI_COMPATIBLE) |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
LDFLAGS += libfc$(LIBFC_EXT).a |
##LDFLAGS += -T./linkerfile/avr5.x |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
#AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = stk200 |
#AVRDUDE_PROGRAMMER = ponyser |
AVRDUDE_PROGRAMMER = avrispv2 |
#falls Ponyser ausgewählt wird, muss sich unsere avrdude-Configdatei im Bin-Verzeichnis des Compilers befinden |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
#AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
AVRDUDE_PORT = usb # programmer connected to USB |
#AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex $(FUSE_SETTINGS) |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
#avrdude -c avrispv2 -P usb -p m32 -U flash:w:blink.hex |
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
AVRDUDE_FLAGS += -V |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -x -A $(TARGET).elf |
LIMITS = $(SIZE) --mcu=$(MCU) -C $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
#ALL_CFLAGS = -mmcu=$(MCU) -DF_CPU=$(F_CPU) -I. $(CFLAGS) |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo Size before:; $(ELFSIZE); $(HEXSIZE); $(LIMITS); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo Size after:; $(ELFSIZE); $(HEXSIZE); $(LIMITS); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
$(REMOVE) Flight-Ctrl_*.hex |
$(REMOVE) Flight-Ctrl_*.eep |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) Flight-Ctrl_*.elf |
$(REMOVE) Flight-Ctrl_*.map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) Flight-Ctrl_*.sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
$(REMOVE) $(SRC:.c=.o) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:%.c=%.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/menu.c |
---|
0,0 → 1,262 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software Nutzungsbedingungen (english version: see below) |
// + der Fa. HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland - nachfolgend Lizenzgeber genannt - |
// + Der Lizenzgeber räumt dem Kunden ein nicht-ausschließliches, zeitlich und räumlich* unbeschränktes Recht ein, die im den |
// + Mikrocontroller verwendete Firmware für die Hardware Flight-Ctrl, Navi-Ctrl, BL-Ctrl, MK3Mag & PC-Programm MikroKopter-Tool |
// + - nachfolgend Software genannt - nur für private Zwecke zu nutzen. |
// + Der Einsatz dieser Software ist nur auf oder mit Produkten des Lizenzgebers zulässig. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die vom Lizenzgeber gelieferte Software ist urheberrechtlich geschützt. Alle Rechte an der Software sowie an sonstigen im |
// + Rahmen der Vertragsanbahnung und Vertragsdurchführung überlassenen Unterlagen stehen im Verhältnis der Vertragspartner ausschließlich dem Lizenzgeber zu. |
// + Die in der Software enthaltenen Copyright-Vermerke, Markenzeichen, andere Rechtsvorbehalte, Seriennummern sowie |
// + sonstige der Programmidentifikation dienenden Merkmale dürfen vom Kunden nicht verändert oder unkenntlich gemacht werden. |
// + Der Kunde trifft angemessene Vorkehrungen für den sicheren Einsatz der Software. Er wird die Software gründlich auf deren |
// + Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Die Haftung des Lizenzgebers wird - soweit gesetzlich zulässig - begrenzt in Höhe des typischen und vorhersehbaren |
// + Schadens. Die gesetzliche Haftung bei Personenschäden und nach dem Produkthaftungsgesetz bleibt unberührt. Dem Lizenzgeber steht jedoch der Einwand |
// + des Mitverschuldens offen. |
// + Der Kunde trifft angemessene Vorkehrungen für den Fall, dass die Software ganz oder teilweise nicht ordnungsgemäß arbeitet. |
// + Er wird die Software gründlich auf deren Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Der Kunde wird er seine Daten vor Einsatz der Software nach dem Stand der Technik sichern. |
// + Der Kunde ist darüber unterrichtet, dass der Lizenzgeber seine Daten im zur Vertragsdurchführung erforderlichen Umfang |
// + und auf Grundlage der Datenschutzvorschriften erhebt, speichert, verarbeitet und, sofern notwendig, an Dritte übermittelt. |
// + *) Die räumliche Nutzung bezieht sich nur auf den Einsatzort, nicht auf die Reichweite der programmierten Software. |
// + #### ENDE DER NUTZUNGSBEDINGUNGEN ####' |
// + Hinweis: Informationen über erweiterte Nutzungsrechte (wie z.B. Nutzung für nicht-private Zwecke) sind auf Anfrage per Email an info(@)hisystems.de verfügbar. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software LICENSING TERMS |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + of HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland, Germany - the Licensor - |
// + The Licensor grants the customer a non-exclusive license to use the microcontroller firmware of the Flight-Ctrl, Navi-Ctrl, BL-Ctrl, and MK3Mag hardware |
// + (the Software) exclusively for private purposes. The License is unrestricted with respect to time and territory*. |
// + The Software may only be used with the Licensor's products. |
// + The Software provided by the Licensor is protected by copyright. With respect to the relationship between the parties to this |
// + agreement, all rights pertaining to the Software and other documents provided during the preparation and execution of this |
// + agreement shall be the property of the Licensor. |
// + The information contained in the Software copyright notices, trademarks, other legal reservations, serial numbers and other |
// + features that can be used to identify the program may not be altered or defaced by the customer. |
// + The customer shall be responsible for taking reasonable precautions |
// + for the safe use of the Software. The customer shall test the Software thoroughly regarding its suitability for the |
// + intended purpose before implementing it for actual operation. The Licensor's liability shall be limited to the extent of typical and |
// + foreseeable damage to the extent permitted by law, notwithstanding statutory liability for bodily injury and product |
// + liability. However, the Licensor shall be entitled to the defense of contributory negligence. |
// + The customer will take adequate precautions in the case, that the software is not working properly. The customer will test |
// + the software for his purpose before any operational usage. The customer will backup his data before using the software. |
// + The customer understands that the Licensor collects, stores and processes, and, where required, forwards, customer data |
// + to third parties to the extent necessary for executing the agreement, subject to applicable data protection and privacy regulations. |
// + *) The territory aspect only refers to the place where the Software is used, not its programmed range. |
// + #### END OF LICENSING TERMS #### |
// + Note: For information on license extensions (e.g. commercial use), please contact us at info(@)hisystems.de. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "eeprom.h" |
char DisplayBuff[80]; |
unsigned char DispPtr = 0; |
unsigned char MaxMenue = 16; |
unsigned char MenuePunkt = 0; |
unsigned char RemoteKeys = 0; |
#define KEY1 0x01 |
#define KEY2 0x02 |
#define KEY3 0x04 |
#define KEY4 0x08 |
#define KEY5 0x10 |
void LcdClear(void) |
{ |
unsigned char i; |
for(i=0;i<80;i++) DisplayBuff[i] = ' '; |
} |
void Menu_Putchar(char c) |
{ |
if(DispPtr < 80) DisplayBuff[DispPtr++] = c; |
} |
void Menu(void) |
{ |
unsigned char i; |
if(RemoteKeys & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue;} |
if(RemoteKeys & KEY2) { if(MenuePunkt == MaxMenue) MenuePunkt = 0; else MenuePunkt++;} |
if((RemoteKeys & KEY1) && (RemoteKeys & KEY2)) MenuePunkt = 0; |
LcdClear(); |
if(MenuePunkt < 10) {LCD_printfxy(17,0,"[%i]",MenuePunkt);} |
else {LCD_printfxy(16,0,"[%i]",MenuePunkt);}; |
switch(MenuePunkt) |
{ |
case 0: |
LCD_printfxy(0,0,"+ MikroKopter +"); |
LCD_printfxy(0,1,"HW:V%d.%d SW:%d.%d%c V4",PlatinenVersion/10,PlatinenVersion%10, VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH +'a'); |
LCD_printfxy(0,2,"Setting:%d %s", GetActiveParamSet(),Mixer.Name); |
if(VersionInfo.HardwareError[1] & FC_ERROR1_MIXER) LCD_printfxy(0,3,"Mixer Error!") |
else |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
if(NC_ErrorCode) |
{ |
LCD_printfxy(0,3,"ERR%2d:",NC_ErrorCode); |
_printf_P(&Menu_Putchar, NC_ERROR_TEXT[NC_ErrorCode] , 0); |
} |
else |
#endif |
if(VersionInfo.HardwareError[0]) LCD_printfxy(0,3,"Hardware Error 1:%d !!",VersionInfo.HardwareError[0]) |
else |
if(MissingMotor) LCD_printfxy(0,3,"Missing BL-Ctrl:%d!!",MissingMotor) |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
#else |
else |
if(NC_ErrorCode) |
{ |
LCD_printfxy(0,3,"! NC-ERR: %2d ! ",NC_ErrorCode); |
} |
#endif |
// if(VersionInfo.HardwareError[1]) LCD_printfxy(0,3,"Error 2:%d !!",VersionInfo.HardwareError[1]) |
else |
if(I2CTimeout < 6) LCD_printfxy(0,3,"I2C ERROR!!!") |
break; |
case 1: |
if(Parameter_GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
LCD_printfxy(0,0,"Height: %5i",(int)(HoehenWert/5)); |
LCD_printfxy(0,1,"Setpoint:%5i",(int)(SollHoehe/5)); |
LCD_printfxy(0,2,"Pressure:%5i",MessLuftdruck); |
LCD_printfxy(0,3,"Offset: %5i",OCR0A); |
} |
else |
{ |
LCD_printfxy(0,0,"Height control"); |
LCD_printfxy(0,1,"DISABLED"); |
//LCD_printfxy(0,2,"Height control"); |
//LCD_printfxy(0,3,"DISABLED"); |
} |
break; |
case 2: |
LCD_printfxy(0,0,"act. bearing"); |
LCD_printfxy(0,1,"Nick: %5i",IntegralNick/1024); |
LCD_printfxy(0,2,"Roll: %5i",IntegralRoll/1024); |
LCD_printfxy(0,3,"Compass: %5i",ErsatzKompassInGrad); |
break; |
case 3: |
for(i=1;i<9;i+=2) LCD_printfxy(0,i/2,"K%i:%4i K%i:%4i ",i,PPM_in[i],i+1,PPM_in[i+1]); |
break; |
case 4: |
LCD_printfxy(0,0,"Ni:%4i Ro:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_NICK]],PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]); |
LCD_printfxy(0,1,"Gs:%4i Gi:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_GAS]]+127,PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]); |
LCD_printfxy(0,2,"P1:%4i P2:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]]+127,PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]]+127); |
LCD_printfxy(0,3,"P3:%4i P4:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]]+127,PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]]+127); |
break; |
case 5: |
LCD_printfxy(0,0,"Gyro - Sensor"); |
if(PlatinenVersion == 10) |
{ |
LCD_printfxy(0,1,"Nick%4i (%3i.%i)",AdWertNick - AdNeutralNick/8, AdNeutralNick/8, AdNeutralNick%8); |
LCD_printfxy(0,2,"Roll%4i (%3i.%i)",AdWertRoll - AdNeutralRoll/8, AdNeutralRoll/8, AdNeutralRoll%8); |
LCD_printfxy(0,3,"Gier%4i (%3i)",AdNeutralGier - AdWertGier, AdNeutralGier); |
} |
else |
if((PlatinenVersion == 11) || (PlatinenVersion >= 20)) |
{ |
LCD_printfxy(0,1,"Nick %4i (%3i.%x)",AdWertNick - AdNeutralNick/8, AdNeutralNick/16, (AdNeutralNick%16)/2); |
LCD_printfxy(0,2,"Roll %4i (%3i.%x)",AdWertRoll - AdNeutralRoll/8, AdNeutralRoll/16, (AdNeutralRoll%16)/2); |
LCD_printfxy(0,3,"Yaw %4i (%3i)",AdNeutralGier - AdWertGier, AdNeutralGier/2); |
} |
else |
if(PlatinenVersion == 13) |
{ |
LCD_printfxy(0,1,"Nick %4i (%3i)(%3i)",AdWertNick - AdNeutralNick/8, AdNeutralNick/16,AnalogOffsetNick); |
LCD_printfxy(0,2,"Roll %4i (%3i)(%3i)",AdWertRoll - AdNeutralRoll/8, AdNeutralRoll/16,AnalogOffsetRoll); |
LCD_printfxy(0,3,"Yaw %4i (%3i)(%3i)",AdNeutralGier - AdWertGier, AdNeutralGier/2,AnalogOffsetGier); |
} |
break; |
case 6: |
LCD_printfxy(0,0,"ACC - Sensor"); |
LCD_printfxy(0,1,"Nick %4i (%3i)",AdWertAccNick,NeutralAccX); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AdWertAccRoll,NeutralAccY); |
LCD_printfxy(0,3,"Z %4i (%3i)",AdWertAccHoch,(int)NeutralAccZ); |
break; |
case 7: |
LCD_printfxy(0,0,"Voltage: %3i.%1iV",UBat/10, UBat%10); |
LCD_printfxy(0,1,"Current: %3i.%1iA",Capacity.ActualCurrent/10, Capacity.ActualCurrent%10); |
LCD_printfxy(0,2,"Power: %4iW",Capacity.ActualPower); |
LCD_printfxy(0,3,"Discharge: %5imAh", Capacity.UsedCapacity); |
break; |
case 8: |
LCD_printfxy(0,0,"Receiver"); |
LCD_printfxy(0,1,"RC-RSSI: %4i", PPM_in[0]); |
LCD_printfxy(0,2,"RC-Quality: %4i", SenderOkay); |
LCD_printfxy(0,3,"RC-Channels:%4i", Channels-1); |
break; |
case 9: |
LCD_printfxy(0,0,"Compass"); |
LCD_printfxy(0,1,"Magnet: %5i",KompassValue); |
LCD_printfxy(0,2,"Gyro: %5i",ErsatzKompassInGrad); |
LCD_printfxy(0,3,"Setpoint: %5i",KompassSollWert); |
break; |
case 10: |
for(i=0;i<4;i++) LCD_printfxy(0,i,"Poti%i: %3i",i+1,Poti[i]); |
break; |
case 11: |
for(i=0;i<4;i++) LCD_printfxy(0,i,"Poti%i: %3i",i+5,Poti[i+4]); |
break; |
case 12: |
LCD_printfxy(0,0,"Servo " ); |
LCD_printfxy(0,1,"Setpoint %3i",Parameter_ServoNickControl); |
LCD_printfxy(0,2,"Position: %3i",ServoNickValue/4); |
LCD_printfxy(0,3,"Range:%3i-%3i",EE_Parameter.ServoNickMin,EE_Parameter.ServoNickMax); |
break; |
/* case 13: |
LCD_printfxy(0,0,"ExternControl " ); |
LCD_printfxy(0,1,"Ni:%4i Ro:%4i ",ExternControl.Nick,ExternControl.Roll); |
LCD_printfxy(0,2,"Gs:%4i Gi:%4i ",ExternControl.Gas,ExternControl.Gier); |
LCD_printfxy(0,3,"Hi:%4i Cf:%4i ",ExternControl.Hight,ExternControl.Config); |
break; |
*/ |
case 13: |
LCD_printfxy(0,0,"BL-Ctrl Errors " ); |
for(i=0;i<3;i++) |
{ |
LCD_printfxy(0,i+1,"%3d %3d %3d %3d ",Motor[i*4].State & MOTOR_STATE_ERROR_MASK,Motor[i*4+1].State & MOTOR_STATE_ERROR_MASK,Motor[i*4+2].State & MOTOR_STATE_ERROR_MASK,Motor[i*4+3].State & MOTOR_STATE_ERROR_MASK); |
// if(i*4 >= RequiredMotors) break; |
} |
break; |
case 14: |
LCD_printfxy(0,0,"BL Temperature" ); |
for(i=0;i<3;i++) |
{ |
LCD_printfxy(0,i+1,"%3d %3d %3d %3d ",Motor[i*4].Temperature,Motor[i*4+1].Temperature,Motor[i*4+2].Temperature,Motor[i*4+3].Temperature); |
// if(4 + i * 4 >= RequiredMotors) break; |
} |
break; |
case 15: |
LCD_printfxy(0,0,"BL-Ctrl found " ); |
LCD_printfxy(0,1," %c %c %c %c ",'-' + 4 * (Motor[0].State>>7),'-' + 5 * (Motor[1].State>>7),'-' + 6 * (Motor[2].State>>7),'-' + 7 * (Motor[3].State>>7)); |
LCD_printfxy(0,2," %c %c %c %c ",'-' + 8 * (Motor[4].State>>7),'-' + 9 * (Motor[5].State>>7),'-' + 10 * (Motor[6].State>>7),'-' + 11 * (Motor[7].State>>7)); |
LCD_printfxy(0,3," %c - - - ",'-' + 12 * (Motor[8].State>>7)); |
if(Motor[9].State>>7) LCD_printfxy(4,3,"10"); |
if(Motor[10].State>>7) LCD_printfxy(8,3,"11"); |
if(Motor[11].State>>7) LCD_printfxy(12,3,"12"); |
break; |
case 16: |
LCD_printfxy(0,0,"Flight-Time " ); |
LCD_printfxy(0,1,"Total:%5umin",FlugMinutenGesamt); |
LCD_printfxy(0,2,"Act: %5umin",FlugMinuten); |
LCD_printfxy(13,3,"(reset)"); |
if(RemoteKeys & KEY4) |
{ |
FlugMinuten = 0; |
SetParamWord(PID_FLIGHT_MINUTES, FlugMinuten); |
} |
break; |
default: |
if(MenuePunkt == MaxMenue) MaxMenue--; |
MenuePunkt = 0; |
break; |
} |
RemoteKeys = 0; |
} |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/menu.h |
---|
0,0 → 1,17 |
#ifndef _MENU_H |
#define _MENU_H |
extern void Menu(void); |
extern void LcdClear(void); |
extern void Menu_Putchar(char c); |
extern char DisplayBuff[80]; |
extern unsigned char DispPtr; |
extern unsigned char MaxMenue; |
extern unsigned char MenuePunkt; |
extern unsigned char RemoteKeys; |
#define LCD_printfxy(x,y,format, args...) { DispPtr = (y) * 20 + (x); _printf_P(&Menu_Putchar,PSTR(format) , ## args);} |
#define LCD_printf(format, args...) { _printf_P(&Menu_Putchar, PSTR(format) , ## args);} |
#endif //_MENU_H |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/menu.lst |
---|
0,0 → 1,2726 |
1 .file "menu.c" |
2 .arch atmega1284p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .global RemoteKeys |
11 .global RemoteKeys |
12 .section .bss |
15 RemoteKeys: |
16 0000 00 .skip 1,0 |
17 .global MenuePunkt |
18 .global MenuePunkt |
21 MenuePunkt: |
22 0001 00 .skip 1,0 |
23 .global MaxMenue |
24 .data |
27 MaxMenue: |
28 0000 10 .byte 16 |
29 .global DispPtr |
30 .global DispPtr |
31 .section .bss |
34 DispPtr: |
35 0002 00 .skip 1,0 |
36 .text |
37 .global LcdClear |
39 LcdClear: |
40 /* prologue: frame size=0 */ |
41 /* prologue end (size=0) */ |
42 0000 90E2 ldi r25,lo8(32) |
43 0002 E0E0 ldi r30,lo8(DisplayBuff) |
44 0004 F0E0 ldi r31,hi8(DisplayBuff) |
45 0006 8FE4 ldi r24,lo8(79) |
46 .L5: |
47 0008 9193 st Z+,r25 |
48 000a 8150 subi r24,lo8(-(-1)) |
49 000c 87FF sbrs r24,7 |
50 000e 00C0 rjmp .L5 |
51 /* epilogue: frame size=0 */ |
52 0010 0895 ret |
53 /* epilogue end (size=1) */ |
54 /* function LcdClear size 9 (8) */ |
56 .global Menu_Putchar |
58 Menu_Putchar: |
59 /* prologue: frame size=0 */ |
60 /* prologue end (size=0) */ |
61 0012 9091 0000 lds r25,DispPtr |
62 0016 9035 cpi r25,lo8(80) |
63 0018 00F4 brsh .L8 |
64 001a E92F mov r30,r25 |
65 001c FF27 clr r31 |
66 001e E050 subi r30,lo8(-(DisplayBuff)) |
67 0020 F040 sbci r31,hi8(-(DisplayBuff)) |
68 0022 8083 st Z,r24 |
69 0024 9F5F subi r25,lo8(-(1)) |
70 0026 9093 0000 sts DispPtr,r25 |
71 .L8: |
72 002a 0895 ret |
73 /* epilogue: frame size=0 */ |
74 /* epilogue: noreturn */ |
75 /* epilogue end (size=0) */ |
76 /* function Menu_Putchar size 13 (13) */ |
78 .section .progmem.data,"a",@progbits |
81 __c.0: |
82 0000 5B25 695D .string "[%i]" |
82 00 |
85 __c.1: |
86 0005 5B25 695D .string "[%i]" |
86 00 |
89 __c.2: |
90 000a 2B20 4D69 .string "+ MikroKopter +" |
90 6B72 6F4B |
90 6F70 7465 |
90 7220 2B00 |
93 __c.3: |
94 001a 4857 3A56 .string "HW:V%d.%d SW:%d.%d%c V4" |
94 2564 2E25 |
94 6420 5357 |
94 3A25 642E |
94 2564 2563 |
97 __c.4: |
98 0032 5365 7474 .string "Setting:%d %s" |
98 696E 673A |
98 2564 2025 |
98 7300 |
101 __c.5: |
102 0040 4D69 7865 .string "Mixer Error!" |
102 7220 4572 |
102 726F 7221 |
102 00 |
105 __c.6: |
106 004d 4552 5225 .string "ERR%2d:" |
106 3264 3A00 |
109 __c.7: |
110 0055 4861 7264 .string "Hardware Error 1:%d !!" |
110 7761 7265 |
110 2045 7272 |
110 6F72 2031 |
110 3A25 6420 |
113 __c.8: |
114 006c 4D69 7373 .string "Missing BL-Ctrl:%d!!" |
114 696E 6720 |
114 424C 2D43 |
114 7472 6C3A |
114 2564 2121 |
117 __c.9: |
118 0081 4932 4320 .string "I2C ERROR!!!" |
118 4552 524F |
118 5221 2121 |
118 00 |
121 __c.10: |
122 008e 4865 6967 .string "Height: %5i" |
122 6874 3A20 |
122 2025 3569 |
122 00 |
125 __c.11: |
126 009b 5365 7470 .string "Setpoint:%5i" |
126 6F69 6E74 |
126 3A25 3569 |
126 00 |
129 __c.12: |
130 00a8 5072 6573 .string "Pressure:%5i" |
130 7375 7265 |
130 3A25 3569 |
130 00 |
133 __c.13: |
134 00b5 4F66 6673 .string "Offset: %5i" |
134 6574 3A20 |
134 2025 3569 |
134 00 |
137 __c.14: |
138 00c2 4865 6967 .string "Height control" |
138 6874 2063 |
138 6F6E 7472 |
138 6F6C 00 |
141 __c.15: |
142 00d1 4449 5341 .string "DISABLED" |
142 424C 4544 |
142 00 |
145 __c.16: |
146 00da 6163 742E .string "act. bearing" |
146 2062 6561 |
146 7269 6E67 |
146 00 |
149 __c.17: |
150 00e7 4E69 636B .string "Nick: %5i" |
150 3A20 2020 |
150 2020 2025 |
150 3569 00 |
153 __c.18: |
154 00f6 526F 6C6C .string "Roll: %5i" |
154 3A20 2020 |
154 2020 2025 |
154 3569 00 |
157 __c.19: |
158 0105 436F 6D70 .string "Compass: %5i" |
158 6173 733A |
158 2020 2025 |
158 3569 00 |
161 __c.20: |
162 0114 4B25 693A .string "K%i:%4i K%i:%4i " |
162 2534 6920 |
162 204B 2569 |
162 3A25 3469 |
162 2000 |
165 __c.21: |
166 0126 4E69 3A25 .string "Ni:%4i Ro:%4i " |
166 3469 2020 |
166 526F 3A25 |
166 3469 2000 |
169 __c.22: |
170 0136 4773 3A25 .string "Gs:%4i Gi:%4i " |
170 3469 2020 |
170 4769 3A25 |
170 3469 2000 |
173 __c.23: |
174 0146 5031 3A25 .string "P1:%4i P2:%4i " |
174 3469 2020 |
174 5032 3A25 |
174 3469 2000 |
177 __c.24: |
178 0156 5033 3A25 .string "P3:%4i P4:%4i " |
178 3469 2020 |
178 5034 3A25 |
178 3469 2000 |
181 __c.25: |
182 0166 4779 726F .string "Gyro - Sensor" |
182 202D 2053 |
182 656E 736F |
182 7200 |
185 __c.26: |
186 0174 4E69 636B .string "Nick%4i (%3i.%i)" |
186 2534 6920 |
186 2825 3369 |
186 2E25 6929 |
186 00 |
189 __c.27: |
190 0185 526F 6C6C .string "Roll%4i (%3i.%i)" |
190 2534 6920 |
190 2825 3369 |
190 2E25 6929 |
190 00 |
193 __c.28: |
194 0196 4769 6572 .string "Gier%4i (%3i)" |
194 2534 6920 |
194 2825 3369 |
194 2900 |
197 __c.29: |
198 01a4 4E69 636B .string "Nick %4i (%3i.%x)" |
198 2025 3469 |
198 2028 2533 |
198 692E 2578 |
198 2900 |
201 __c.30: |
202 01b6 526F 6C6C .string "Roll %4i (%3i.%x)" |
202 2025 3469 |
202 2028 2533 |
202 692E 2578 |
202 2900 |
205 __c.31: |
206 01c8 5961 7720 .string "Yaw %4i (%3i)" |
206 2025 3469 |
206 2028 2533 |
206 6929 00 |
209 __c.32: |
210 01d7 4E69 636B .string "Nick %4i (%3i)(%3i)" |
210 2025 3469 |
210 2028 2533 |
210 6929 2825 |
210 3369 2900 |
213 __c.33: |
214 01eb 526F 6C6C .string "Roll %4i (%3i)(%3i)" |
214 2025 3469 |
214 2028 2533 |
214 6929 2825 |
214 3369 2900 |
217 __c.34: |
218 01ff 5961 7720 .string "Yaw %4i (%3i)(%3i)" |
218 2025 3469 |
218 2028 2533 |
218 6929 2825 |
218 3369 2900 |
221 __c.35: |
222 0213 4143 4320 .string "ACC - Sensor" |
222 2D20 5365 |
222 6E73 6F72 |
222 00 |
225 __c.36: |
226 0220 4E69 636B .string "Nick %4i (%3i)" |
226 2025 3469 |
226 2028 2533 |
226 6929 00 |
229 __c.37: |
230 022f 526F 6C6C .string "Roll %4i (%3i)" |
230 2025 3469 |
230 2028 2533 |
230 6929 00 |
233 __c.38: |
234 023e 5A20 2020 .string "Z %4i (%3i)" |
234 2025 3469 |
234 2028 2533 |
234 6929 00 |
237 __c.39: |
238 024d 566F 6C74 .string "Voltage: %3i.%1iV" |
238 6167 653A |
238 2020 2025 |
238 3369 2E25 |
238 3169 5600 |
241 __c.40: |
242 0261 4375 7272 .string "Current: %3i.%1iA" |
242 656E 743A |
242 2020 2025 |
242 3369 2E25 |
242 3169 4100 |
245 __c.41: |
246 0275 506F 7765 .string "Power: %4iW" |
246 723A 2020 |
246 2020 2025 |
246 3469 5700 |
249 __c.42: |
250 0285 4469 7363 .string "Discharge: %5imAh" |
250 6861 7267 |
250 653A 2025 |
250 3569 6D41 |
250 6800 |
253 __c.43: |
254 0297 5265 6365 .string "Receiver" |
254 6976 6572 |
254 00 |
257 __c.44: |
258 02a0 5243 2D52 .string "RC-RSSI: %4i" |
258 5353 493A |
258 2020 2020 |
258 2534 6900 |
261 __c.45: |
262 02b0 5243 2D51 .string "RC-Quality: %4i" |
262 7561 6C69 |
262 7479 3A20 |
262 2534 6900 |
265 __c.46: |
266 02c0 5243 2D43 .string "RC-Channels:%4i" |
266 6861 6E6E |
266 656C 733A |
266 2534 6900 |
269 __c.47: |
270 02d0 436F 6D70 .string "Compass" |
270 6173 7300 |
273 __c.48: |
274 02d8 4D61 676E .string "Magnet: %5i" |
274 6574 3A20 |
274 2020 2535 |
274 6900 |
277 __c.49: |
278 02e6 4779 726F .string "Gyro: %5i" |
278 3A20 2020 |
278 2020 2535 |
278 6900 |
281 __c.50: |
282 02f4 5365 7470 .string "Setpoint: %5i" |
282 6F69 6E74 |
282 3A20 2535 |
282 6900 |
285 __c.51: |
286 0302 506F 7469 .string "Poti%i: %3i" |
286 2569 3A20 |
286 2025 3369 |
286 00 |
289 __c.52: |
290 030f 506F 7469 .string "Poti%i: %3i" |
290 2569 3A20 |
290 2025 3369 |
290 00 |
293 __c.53: |
294 031c 5365 7276 .string "Servo " |
294 6F20 2000 |
297 __c.54: |
298 0324 5365 7470 .string "Setpoint %3i" |
298 6F69 6E74 |
298 2020 2533 |
298 6900 |
301 __c.55: |
302 0332 506F 7369 .string "Position: %3i" |
302 7469 6F6E |
302 3A20 2533 |
302 6900 |
305 __c.56: |
306 0340 5261 6E67 .string "Range:%3i-%3i" |
306 653A 2533 |
306 692D 2533 |
306 6900 |
309 __c.57: |
310 034e 424C 2D43 .string "BL-Ctrl Errors " |
310 7472 6C20 |
310 4572 726F |
310 7273 2000 |
313 __c.58: |
314 035e 2533 6420 .string "%3d %3d %3d %3d " |
314 2533 6420 |
314 2533 6420 |
314 2533 6420 |
314 00 |
317 __c.59: |
318 036f 424C 2054 .string "BL Temperature" |
318 656D 7065 |
318 7261 7475 |
318 7265 00 |
321 __c.60: |
322 037e 2533 6420 .string "%3d %3d %3d %3d " |
322 2533 6420 |
322 2533 6420 |
322 2533 6420 |
322 00 |
325 __c.61: |
326 038f 424C 2D43 .string "BL-Ctrl found " |
326 7472 6C20 |
326 666F 756E |
326 6420 00 |
329 __c.62: |
330 039e 2025 6320 .string " %c %c %c %c " |
330 2020 2563 |
330 2020 2025 |
330 6320 2020 |
330 2563 2000 |
333 __c.63: |
334 03b2 2025 6320 .string " %c %c %c %c " |
334 2020 2563 |
334 2020 2025 |
334 6320 2020 |
334 2563 2000 |
337 __c.64: |
338 03c6 2025 6320 .string " %c - - - " |
338 2020 2D20 |
338 2020 2D20 |
338 2020 2D20 |
338 00 |
341 __c.65: |
342 03d7 3130 00 .string "10" |
345 __c.66: |
346 03da 3131 00 .string "11" |
349 __c.67: |
350 03dd 3132 00 .string "12" |
353 __c.68: |
354 03e0 466C 6967 .string "Flight-Time " |
354 6874 2D54 |
354 696D 6520 |
354 2000 |
357 __c.69: |
358 03ee 546F 7461 .string "Total:%5umin" |
358 6C3A 2535 |
358 756D 696E |
358 00 |
361 __c.70: |
362 03fb 4163 743A .string "Act: %5umin" |
362 2020 2535 |
362 756D 696E |
362 00 |
365 __c.71: |
366 0408 2872 6573 .string "(reset)" |
366 6574 2900 |
367 .text |
368 .global Menu |
370 Menu: |
371 /* prologue: frame size=0 */ |
372 002c AF92 push r10 |
373 002e BF92 push r11 |
374 0030 CF92 push r12 |
375 0032 DF92 push r13 |
376 0034 FF92 push r15 |
377 0036 0F93 push r16 |
378 0038 1F93 push r17 |
379 003a CF93 push r28 |
380 003c DF93 push r29 |
381 /* prologue end (size=9) */ |
382 003e 2091 0000 lds r18,RemoteKeys |
383 0042 20FF sbrs r18,0 |
384 0044 00C0 rjmp .L11 |
385 0046 8091 0000 lds r24,MenuePunkt |
386 004a 8823 tst r24 |
387 004c 01F0 breq .L12 |
388 004e 8150 subi r24,lo8(-(-1)) |
389 0050 00C0 rjmp .L115 |
390 .L12: |
391 0052 8091 0000 lds r24,MaxMenue |
392 .L115: |
393 0056 8093 0000 sts MenuePunkt,r24 |
394 .L11: |
395 005a 21FF sbrs r18,1 |
396 005c 00C0 rjmp .L14 |
397 005e 9091 0000 lds r25,MenuePunkt |
398 0062 8091 0000 lds r24,MaxMenue |
399 0066 9817 cp r25,r24 |
400 0068 01F4 brne .L15 |
401 006a 1092 0000 sts MenuePunkt,__zero_reg__ |
402 006e 00C0 rjmp .L14 |
403 .L15: |
404 0070 9F5F subi r25,lo8(-(1)) |
405 0072 9093 0000 sts MenuePunkt,r25 |
406 .L14: |
407 0076 822F mov r24,r18 |
408 0078 9927 clr r25 |
409 007a 80FF sbrs r24,0 |
410 007c 00C0 rjmp .L17 |
411 007e 81FF sbrs r24,1 |
412 0080 00C0 rjmp .L17 |
413 0082 1092 0000 sts MenuePunkt,__zero_reg__ |
414 .L17: |
415 0086 0E94 0000 call LcdClear |
416 008a 8091 0000 lds r24,MenuePunkt |
417 008e 282F mov r18,r24 |
418 0090 3327 clr r19 |
419 0092 90E0 ldi r25,lo8(pm(Menu_Putchar)) |
420 0094 C92E mov r12,r25 |
421 0096 90E0 ldi r25,hi8(pm(Menu_Putchar)) |
422 0098 D92E mov r13,r25 |
423 009a C091 0000 lds r28,_printf_P |
424 009e D091 0000 lds r29,(_printf_P)+1 |
425 00a2 8A30 cpi r24,lo8(10) |
426 00a4 00F4 brsh .L18 |
427 00a6 81E1 ldi r24,lo8(17) |
428 00a8 8093 0000 sts DispPtr,r24 |
429 00ac 3F93 push r19 |
430 00ae 2F93 push r18 |
431 00b0 80E0 ldi r24,lo8(__c.0) |
432 00b2 90E0 ldi r25,hi8(__c.0) |
433 00b4 9F93 push r25 |
434 00b6 8F93 push r24 |
435 00b8 DF92 push r13 |
436 00ba CF92 push r12 |
437 00bc FE01 movw r30,r28 |
438 00be 0995 icall |
439 00c0 2DB7 in r18,__SP_L__ |
440 00c2 3EB7 in r19,__SP_H__ |
441 00c4 2A5F subi r18,lo8(-(6)) |
442 00c6 3F4F sbci r19,hi8(-(6)) |
443 00c8 2DBF out __SP_L__,r18 |
444 00ca 00C0 rjmp .L19 |
445 .L18: |
446 00cc 80E1 ldi r24,lo8(16) |
447 00ce 8093 0000 sts DispPtr,r24 |
448 00d2 3F93 push r19 |
449 00d4 2F93 push r18 |
450 00d6 80E0 ldi r24,lo8(__c.1) |
451 00d8 90E0 ldi r25,hi8(__c.1) |
452 00da 9F93 push r25 |
453 00dc 8F93 push r24 |
454 00de DF92 push r13 |
455 00e0 CF92 push r12 |
456 00e2 FE01 movw r30,r28 |
457 00e4 0995 icall |
458 00e6 8DB7 in r24,__SP_L__ |
459 00e8 9EB7 in r25,__SP_H__ |
460 00ea 0696 adiw r24,6 |
461 00ec 8DBF out __SP_L__,r24 |
462 .L19: |
463 00ee 2091 0000 lds r18,MenuePunkt |
464 00f2 822F mov r24,r18 |
465 00f4 9927 clr r25 |
466 00f6 AA27 clr r26 |
467 00f8 BB27 clr r27 |
468 00fa FC01 movw r30,r24 |
469 00fc 4197 sbiw r24,17 |
470 00fe 00F0 brlo .+4 |
471 0100 0C94 0000 jmp .L102 |
472 0104 E050 subi r30,lo8(-(pm(.L104))) |
473 0106 F040 sbci r31,hi8(-(pm(.L104))) |
474 0108 00E0 ldi r16,lo8(pm(Menu_Putchar)) |
475 010a C02E mov r12,r16 |
476 010c 00E0 ldi r16,hi8(pm(Menu_Putchar)) |
477 010e D02E mov r13,r16 |
478 0110 C091 0000 lds r28,_printf_P |
479 0114 D091 0000 lds r29,(_printf_P)+1 |
480 0118 0C94 0000 jmp __tablejump2__ |
481 .data |
482 .section .progmem.gcc_sw_table, "a", @progbits |
483 .p2align 1 |
484 .L104: |
485 0000 0000 .word pm(.L21) |
486 0002 0000 .word pm(.L31) |
487 0004 0000 .word pm(.L34) |
488 0006 0000 .word pm(.L37) |
489 0008 0000 .word pm(.L42) |
490 000a 0000 .word pm(.L43) |
491 000c 0000 .word pm(.L70) |
492 000e 0000 .word pm(.L71) |
493 0010 0000 .word pm(.L72) |
494 0012 0000 .word pm(.L73) |
495 0014 0000 .word pm(.L74) |
496 0016 0000 .word pm(.L79) |
497 0018 0000 .word pm(.L84) |
498 001a 0000 .word pm(.L86) |
499 001c 0000 .word pm(.L91) |
500 001e 0000 .word pm(.L96) |
501 0020 0000 .word pm(.L100) |
502 .text |
503 .L21: |
504 011c 1092 0000 sts DispPtr,__zero_reg__ |
505 0120 80E0 ldi r24,lo8(__c.2) |
506 0122 90E0 ldi r25,hi8(__c.2) |
507 0124 9F93 push r25 |
508 0126 8F93 push r24 |
509 0128 00E0 ldi r16,lo8(pm(Menu_Putchar)) |
510 012a 10E0 ldi r17,hi8(pm(Menu_Putchar)) |
511 012c DF92 push r13 |
512 012e CF92 push r12 |
513 0130 FE01 movw r30,r28 |
514 0132 0995 icall |
515 0134 84E1 ldi r24,lo8(20) |
516 0136 8093 0000 sts DispPtr,r24 |
517 013a 0F90 pop __tmp_reg__ |
518 013c 0F90 pop __tmp_reg__ |
519 013e 0F90 pop __tmp_reg__ |
520 0140 0F90 pop __tmp_reg__ |
521 0142 84E6 ldi r24,lo8(100) |
522 0144 90E0 ldi r25,hi8(100) |
523 0146 9F93 push r25 |
524 0148 8F93 push r24 |
525 014a 8AE5 ldi r24,lo8(90) |
526 014c 90E0 ldi r25,hi8(90) |
527 014e 9F93 push r25 |
528 0150 8F93 push r24 |
529 0152 1F92 push __zero_reg__ |
530 0154 1F92 push __zero_reg__ |
531 0156 8091 0000 lds r24,PlatinenVersion |
532 015a 6AE0 ldi r22,lo8(10) |
533 015c 0E94 0000 call __udivmodqi4 |
534 0160 892F mov r24,r25 |
535 0162 9927 clr r25 |
536 0164 9F93 push r25 |
537 0166 8F93 push r24 |
538 0168 8091 0000 lds r24,PlatinenVersion |
539 016c 0E94 0000 call __udivmodqi4 |
540 0170 9927 clr r25 |
541 0172 9F93 push r25 |
542 0174 8F93 push r24 |
543 0176 80E0 ldi r24,lo8(__c.3) |
544 0178 90E0 ldi r25,hi8(__c.3) |
545 017a 9F93 push r25 |
546 017c 8F93 push r24 |
547 017e DF92 push r13 |
548 0180 CF92 push r12 |
549 0182 E091 0000 lds r30,_printf_P |
550 0186 F091 0000 lds r31,(_printf_P)+1 |
551 018a 0995 icall |
552 018c 88E2 ldi r24,lo8(40) |
553 018e 8093 0000 sts DispPtr,r24 |
554 0192 EDB7 in r30,__SP_L__ |
555 0194 FEB7 in r31,__SP_H__ |
556 0196 3E96 adiw r30,14 |
557 0198 EDBF out __SP_L__,r30 |
558 019a 80E0 ldi r24,lo8(Mixer+1) |
559 019c 90E0 ldi r25,hi8(Mixer+1) |
560 019e 9F93 push r25 |
561 01a0 8F93 push r24 |
562 01a2 0E94 0000 call GetActiveParamSet |
563 01a6 9927 clr r25 |
564 01a8 9F93 push r25 |
565 01aa 8F93 push r24 |
566 01ac 80E0 ldi r24,lo8(__c.4) |
567 01ae 90E0 ldi r25,hi8(__c.4) |
568 01b0 9F93 push r25 |
569 01b2 8F93 push r24 |
570 01b4 DF92 push r13 |
571 01b6 CF92 push r12 |
572 01b8 E091 0000 lds r30,_printf_P |
573 01bc F091 0000 lds r31,(_printf_P)+1 |
574 01c0 0995 icall |
575 01c2 8091 0000 lds r24,VersionInfo+6 |
576 01c6 9927 clr r25 |
577 01c8 2DB7 in r18,__SP_L__ |
578 01ca 3EB7 in r19,__SP_H__ |
579 01cc 285F subi r18,lo8(-(8)) |
580 01ce 3F4F sbci r19,hi8(-(8)) |
581 01d0 2DBF out __SP_L__,r18 |
582 01d2 EC01 movw r28,r24 |
583 01d4 C071 andi r28,lo8(16) |
584 01d6 D070 andi r29,hi8(16) |
585 01d8 84FF sbrs r24,4 |
586 01da 00C0 rjmp .L22 |
587 01dc 8CE3 ldi r24,lo8(60) |
588 01de 8093 0000 sts DispPtr,r24 |
589 01e2 80E0 ldi r24,lo8(__c.5) |
590 01e4 90E0 ldi r25,hi8(__c.5) |
591 01e6 00C0 rjmp .L124 |
592 .L22: |
593 01e8 9091 0000 lds r25,NC_ErrorCode |
594 01ec 9923 tst r25 |
595 01ee 01F0 breq .L24 |
596 01f0 8CE3 ldi r24,lo8(60) |
597 01f2 8093 0000 sts DispPtr,r24 |
598 01f6 892F mov r24,r25 |
599 01f8 9927 clr r25 |
600 01fa 9F93 push r25 |
601 01fc 8F93 push r24 |
602 01fe 80E0 ldi r24,lo8(__c.6) |
603 0200 90E0 ldi r25,hi8(__c.6) |
604 0202 9F93 push r25 |
605 0204 8F93 push r24 |
606 0206 1F93 push r17 |
607 0208 0F93 push r16 |
608 020a E091 0000 lds r30,_printf_P |
609 020e F091 0000 lds r31,(_printf_P)+1 |
610 0212 0995 icall |
611 0214 DF93 push r29 |
612 0216 CF93 push r28 |
613 0218 9091 0000 lds r25,NC_ErrorCode |
614 021c 81E1 ldi r24,lo8(17) |
615 021e 989F mul r25,r24 |
616 0220 C001 movw r24,r0 |
617 0222 1124 clr r1 |
618 0224 8050 subi r24,lo8(-(NC_ERROR_TEXT)) |
619 0226 9040 sbci r25,hi8(-(NC_ERROR_TEXT)) |
620 0228 9F93 push r25 |
621 022a 8F93 push r24 |
622 022c 1F93 push r17 |
623 022e 0F93 push r16 |
624 0230 E091 0000 lds r30,_printf_P |
625 0234 F091 0000 lds r31,(_printf_P)+1 |
626 0238 0995 icall |
627 023a 8DB7 in r24,__SP_L__ |
628 023c 9EB7 in r25,__SP_H__ |
629 023e 0C96 adiw r24,12 |
630 0240 00C0 rjmp .L120 |
631 .L24: |
632 0242 9091 0000 lds r25,VersionInfo+5 |
633 0246 9923 tst r25 |
634 0248 01F0 breq .L26 |
635 024a 8CE3 ldi r24,lo8(60) |
636 024c 8093 0000 sts DispPtr,r24 |
637 0250 892F mov r24,r25 |
638 0252 9927 clr r25 |
639 0254 9F93 push r25 |
640 0256 8F93 push r24 |
641 0258 80E0 ldi r24,lo8(__c.7) |
642 025a 90E0 ldi r25,hi8(__c.7) |
643 025c 9F93 push r25 |
644 025e 8F93 push r24 |
645 0260 1F93 push r17 |
646 0262 0F93 push r16 |
647 0264 E091 0000 lds r30,_printf_P |
648 0268 F091 0000 lds r31,(_printf_P)+1 |
649 026c 0995 icall |
650 026e EDB7 in r30,__SP_L__ |
651 0270 FEB7 in r31,__SP_H__ |
652 0272 3696 adiw r30,6 |
653 0274 00C0 rjmp .L117 |
654 .L26: |
655 0276 9091 0000 lds r25,MissingMotor |
656 027a 9923 tst r25 |
657 027c 01F0 breq .L28 |
658 027e 8CE3 ldi r24,lo8(60) |
659 0280 8093 0000 sts DispPtr,r24 |
660 0284 892F mov r24,r25 |
661 0286 9927 clr r25 |
662 0288 9F93 push r25 |
663 028a 8F93 push r24 |
664 028c 80E0 ldi r24,lo8(__c.8) |
665 028e 90E0 ldi r25,hi8(__c.8) |
666 0290 9F93 push r25 |
667 0292 8F93 push r24 |
668 0294 1F93 push r17 |
669 0296 0F93 push r16 |
670 0298 00C0 rjmp .L123 |
671 .L28: |
672 029a 8091 0000 lds r24,I2CTimeout |
673 029e 9091 0000 lds r25,(I2CTimeout)+1 |
674 02a2 0697 sbiw r24,6 |
675 02a4 00F0 brlo .+4 |
676 02a6 0C94 0000 jmp .L20 |
677 02aa 8CE3 ldi r24,lo8(60) |
678 02ac 8093 0000 sts DispPtr,r24 |
679 02b0 80E0 ldi r24,lo8(__c.9) |
680 02b2 90E0 ldi r25,hi8(__c.9) |
681 02b4 00C0 rjmp .L125 |
682 .L31: |
683 02b6 8091 0000 lds r24,Parameter_GlobalConfig |
684 02ba 10E0 ldi r17,lo8(pm(Menu_Putchar)) |
685 02bc C12E mov r12,r17 |
686 02be 10E0 ldi r17,hi8(pm(Menu_Putchar)) |
687 02c0 D12E mov r13,r17 |
688 02c2 C091 0000 lds r28,_printf_P |
689 02c6 D091 0000 lds r29,(_printf_P)+1 |
690 02ca 80FF sbrs r24,0 |
691 02cc 00C0 rjmp .L32 |
692 02ce 1092 0000 sts DispPtr,__zero_reg__ |
693 02d2 8091 0000 lds r24,HoehenWert |
694 02d6 9091 0000 lds r25,(HoehenWert)+1 |
695 02da A091 0000 lds r26,(HoehenWert)+2 |
696 02de B091 0000 lds r27,(HoehenWert)+3 |
697 02e2 BC01 movw r22,r24 |
698 02e4 CD01 movw r24,r26 |
699 02e6 25E0 ldi r18,lo8(5) |
700 02e8 30E0 ldi r19,hi8(5) |
701 02ea 40E0 ldi r20,hlo8(5) |
702 02ec 50E0 ldi r21,hhi8(5) |
703 02ee 0E94 0000 call __divmodsi4 |
704 02f2 3F93 push r19 |
705 02f4 2F93 push r18 |
706 02f6 80E0 ldi r24,lo8(__c.10) |
707 02f8 90E0 ldi r25,hi8(__c.10) |
708 02fa 9F93 push r25 |
709 02fc 8F93 push r24 |
710 02fe DF92 push r13 |
711 0300 CF92 push r12 |
712 0302 FE01 movw r30,r28 |
713 0304 0995 icall |
714 0306 84E1 ldi r24,lo8(20) |
715 0308 8093 0000 sts DispPtr,r24 |
716 030c 8DB7 in r24,__SP_L__ |
717 030e 9EB7 in r25,__SP_H__ |
718 0310 0696 adiw r24,6 |
719 0312 8DBF out __SP_L__,r24 |
720 0314 8091 0000 lds r24,SollHoehe |
721 0318 9091 0000 lds r25,(SollHoehe)+1 |
722 031c A091 0000 lds r26,(SollHoehe)+2 |
723 0320 B091 0000 lds r27,(SollHoehe)+3 |
724 0324 BC01 movw r22,r24 |
725 0326 CD01 movw r24,r26 |
726 0328 25E0 ldi r18,lo8(5) |
727 032a 30E0 ldi r19,hi8(5) |
728 032c 40E0 ldi r20,hlo8(5) |
729 032e 50E0 ldi r21,hhi8(5) |
730 0330 0E94 0000 call __divmodsi4 |
731 0334 3F93 push r19 |
732 0336 2F93 push r18 |
733 0338 80E0 ldi r24,lo8(__c.11) |
734 033a 90E0 ldi r25,hi8(__c.11) |
735 033c 9F93 push r25 |
736 033e 8F93 push r24 |
737 0340 DF92 push r13 |
738 0342 CF92 push r12 |
739 0344 E091 0000 lds r30,_printf_P |
740 0348 F091 0000 lds r31,(_printf_P)+1 |
741 034c 0995 icall |
742 034e 88E2 ldi r24,lo8(40) |
743 0350 8093 0000 sts DispPtr,r24 |
744 0354 EDB7 in r30,__SP_L__ |
745 0356 FEB7 in r31,__SP_H__ |
746 0358 3696 adiw r30,6 |
747 035a EDBF out __SP_L__,r30 |
748 035c 8091 0000 lds r24,MessLuftdruck |
749 0360 9091 0000 lds r25,(MessLuftdruck)+1 |
750 0364 9F93 push r25 |
751 0366 8F93 push r24 |
752 0368 80E0 ldi r24,lo8(__c.12) |
753 036a 90E0 ldi r25,hi8(__c.12) |
754 036c 9F93 push r25 |
755 036e 8F93 push r24 |
756 0370 DF92 push r13 |
757 0372 CF92 push r12 |
758 0374 E091 0000 lds r30,_printf_P |
759 0378 F091 0000 lds r31,(_printf_P)+1 |
760 037c 0995 icall |
761 037e 8CE3 ldi r24,lo8(60) |
762 0380 8093 0000 sts DispPtr,r24 |
763 0384 2DB7 in r18,__SP_L__ |
764 0386 3EB7 in r19,__SP_H__ |
765 0388 2A5F subi r18,lo8(-(6)) |
766 038a 3F4F sbci r19,hi8(-(6)) |
767 038c 2DBF out __SP_L__,r18 |
768 038e 87B5 in r24,71-0x20 |
769 0390 9927 clr r25 |
770 0392 9F93 push r25 |
771 0394 8F93 push r24 |
772 0396 80E0 ldi r24,lo8(__c.13) |
773 0398 90E0 ldi r25,hi8(__c.13) |
774 039a 9F93 push r25 |
775 039c 8F93 push r24 |
776 039e DF92 push r13 |
777 03a0 CF92 push r12 |
778 03a2 00C0 rjmp .L119 |
779 .L32: |
780 03a4 1092 0000 sts DispPtr,__zero_reg__ |
781 03a8 80E0 ldi r24,lo8(__c.14) |
782 03aa 90E0 ldi r25,hi8(__c.14) |
783 03ac 9F93 push r25 |
784 03ae 8F93 push r24 |
785 03b0 DF92 push r13 |
786 03b2 CF92 push r12 |
787 03b4 FE01 movw r30,r28 |
788 03b6 0995 icall |
789 03b8 84E1 ldi r24,lo8(20) |
790 03ba 8093 0000 sts DispPtr,r24 |
791 03be 0F90 pop __tmp_reg__ |
792 03c0 0F90 pop __tmp_reg__ |
793 03c2 0F90 pop __tmp_reg__ |
794 03c4 0F90 pop __tmp_reg__ |
795 03c6 80E0 ldi r24,lo8(__c.15) |
796 03c8 90E0 ldi r25,hi8(__c.15) |
797 .L124: |
798 03ca 9F93 push r25 |
799 03cc 8F93 push r24 |
800 03ce DF92 push r13 |
801 03d0 CF92 push r12 |
802 03d2 00C0 rjmp .L118 |
803 .L34: |
804 03d4 1092 0000 sts DispPtr,__zero_reg__ |
805 03d8 80E0 ldi r24,lo8(__c.16) |
806 03da 90E0 ldi r25,hi8(__c.16) |
807 03dc 9F93 push r25 |
808 03de 8F93 push r24 |
809 03e0 00E0 ldi r16,lo8(pm(Menu_Putchar)) |
810 03e2 10E0 ldi r17,hi8(pm(Menu_Putchar)) |
811 03e4 DF92 push r13 |
812 03e6 CF92 push r12 |
813 03e8 FE01 movw r30,r28 |
814 03ea 0995 icall |
815 03ec 84E1 ldi r24,lo8(20) |
816 03ee 8093 0000 sts DispPtr,r24 |
817 03f2 0F90 pop __tmp_reg__ |
818 03f4 0F90 pop __tmp_reg__ |
819 03f6 0F90 pop __tmp_reg__ |
820 03f8 0F90 pop __tmp_reg__ |
821 03fa 8091 0000 lds r24,IntegralNick |
822 03fe 9091 0000 lds r25,(IntegralNick)+1 |
823 0402 A091 0000 lds r26,(IntegralNick)+2 |
824 0406 B091 0000 lds r27,(IntegralNick)+3 |
825 040a B7FF sbrs r27,7 |
826 040c 00C0 rjmp .L35 |
827 040e 8150 subi r24,lo8(-(1023)) |
828 0410 9C4F sbci r25,hi8(-(1023)) |
829 0412 AF4F sbci r26,hlo8(-(1023)) |
830 0414 BF4F sbci r27,hhi8(-(1023)) |
831 .L35: |
832 0416 CAE0 ldi r28,10 |
833 0418 B595 1: asr r27 |
834 041a A795 ror r26 |
835 041c 9795 ror r25 |
836 041e 8795 ror r24 |
837 0420 CA95 dec r28 |
838 0422 01F4 brne 1b |
839 0424 BF93 push r27 |
840 0426 AF93 push r26 |
841 0428 9F93 push r25 |
842 042a 8F93 push r24 |
843 042c 80E0 ldi r24,lo8(__c.17) |
844 042e 90E0 ldi r25,hi8(__c.17) |
845 0430 9F93 push r25 |
846 0432 8F93 push r24 |
847 0434 1F93 push r17 |
848 0436 0F93 push r16 |
849 0438 E091 0000 lds r30,_printf_P |
850 043c F091 0000 lds r31,(_printf_P)+1 |
851 0440 0995 icall |
852 0442 88E2 ldi r24,lo8(40) |
853 0444 8093 0000 sts DispPtr,r24 |
854 0448 EDB7 in r30,__SP_L__ |
855 044a FEB7 in r31,__SP_H__ |
856 044c 3896 adiw r30,8 |
857 044e EDBF out __SP_L__,r30 |
858 0450 8091 0000 lds r24,IntegralRoll |
859 0454 9091 0000 lds r25,(IntegralRoll)+1 |
860 0458 A091 0000 lds r26,(IntegralRoll)+2 |
861 045c B091 0000 lds r27,(IntegralRoll)+3 |
862 0460 B7FF sbrs r27,7 |
863 0462 00C0 rjmp .L36 |
864 0464 8150 subi r24,lo8(-(1023)) |
865 0466 9C4F sbci r25,hi8(-(1023)) |
866 0468 AF4F sbci r26,hlo8(-(1023)) |
867 046a BF4F sbci r27,hhi8(-(1023)) |
868 .L36: |
869 046c FAE0 ldi r31,10 |
870 046e B595 1: asr r27 |
871 0470 A795 ror r26 |
872 0472 9795 ror r25 |
873 0474 8795 ror r24 |
874 0476 FA95 dec r31 |
875 0478 01F4 brne 1b |
876 047a BF93 push r27 |
877 047c AF93 push r26 |
878 047e 9F93 push r25 |
879 0480 8F93 push r24 |
880 0482 80E0 ldi r24,lo8(__c.18) |
881 0484 90E0 ldi r25,hi8(__c.18) |
882 0486 9F93 push r25 |
883 0488 8F93 push r24 |
884 048a 1F93 push r17 |
885 048c 0F93 push r16 |
886 048e E091 0000 lds r30,_printf_P |
887 0492 F091 0000 lds r31,(_printf_P)+1 |
888 0496 0995 icall |
889 0498 8CE3 ldi r24,lo8(60) |
890 049a 8093 0000 sts DispPtr,r24 |
891 049e 2DB7 in r18,__SP_L__ |
892 04a0 3EB7 in r19,__SP_H__ |
893 04a2 285F subi r18,lo8(-(8)) |
894 04a4 3F4F sbci r19,hi8(-(8)) |
895 04a6 2DBF out __SP_L__,r18 |
896 04a8 8091 0000 lds r24,ErsatzKompassInGrad |
897 04ac 9091 0000 lds r25,(ErsatzKompassInGrad)+1 |
898 04b0 9F93 push r25 |
899 04b2 8F93 push r24 |
900 04b4 80E0 ldi r24,lo8(__c.19) |
901 04b6 90E0 ldi r25,hi8(__c.19) |
902 04b8 9F93 push r25 |
903 04ba 8F93 push r24 |
904 04bc 1F93 push r17 |
905 04be 0F93 push r16 |
906 .L119: |
907 04c0 E091 0000 lds r30,_printf_P |
908 04c4 F091 0000 lds r31,(_printf_P)+1 |
909 04c8 0995 icall |
910 04ca 8DB7 in r24,__SP_L__ |
911 04cc 9EB7 in r25,__SP_H__ |
912 04ce 0696 adiw r24,6 |
913 .L120: |
914 04d0 8DBF out __SP_L__,r24 |
915 04d2 00C0 rjmp .L20 |
916 .L37: |
917 04d4 E1E0 ldi r30,lo8(1) |
918 04d6 FE2E mov r15,r30 |
919 04d8 C1E0 ldi r28,lo8(1) |
920 04da D0E0 ldi r29,hi8(1) |
921 04dc 00E0 ldi r16,lo8(PPM_in+2) |
922 04de 10E0 ldi r17,hi8(PPM_in+2) |
923 .L41: |
924 04e0 9F2D mov r25,r15 |
925 04e2 9695 lsr r25 |
926 04e4 84E1 ldi r24,lo8(20) |
927 04e6 989F mul r25,r24 |
928 04e8 C001 movw r24,r0 |
929 04ea 1124 clr r1 |
930 04ec 8093 0000 sts DispPtr,r24 |
931 04f0 F801 movw r30,r16 |
932 04f2 8281 ldd r24,Z+2 |
933 04f4 9381 ldd r25,Z+3 |
934 04f6 9F93 push r25 |
935 04f8 8F93 push r24 |
936 04fa 2196 adiw r28,1 |
937 04fc DF93 push r29 |
938 04fe CF93 push r28 |
939 0500 2197 sbiw r28,1 |
940 0502 8081 ld r24,Z |
941 0504 9181 ldd r25,Z+1 |
942 0506 9F93 push r25 |
943 0508 8F93 push r24 |
944 050a DF93 push r29 |
945 050c CF93 push r28 |
946 050e 80E0 ldi r24,lo8(__c.20) |
947 0510 90E0 ldi r25,hi8(__c.20) |
948 0512 9F93 push r25 |
949 0514 8F93 push r24 |
950 0516 80E0 ldi r24,lo8(pm(Menu_Putchar)) |
951 0518 90E0 ldi r25,hi8(pm(Menu_Putchar)) |
952 051a 9F93 push r25 |
953 051c 8F93 push r24 |
954 051e E091 0000 lds r30,_printf_P |
955 0522 F091 0000 lds r31,(_printf_P)+1 |
956 0526 0995 icall |
957 0528 2DB7 in r18,__SP_L__ |
958 052a 3EB7 in r19,__SP_H__ |
959 052c 245F subi r18,lo8(-(12)) |
960 052e 3F4F sbci r19,hi8(-(12)) |
961 0530 2DBF out __SP_L__,r18 |
962 0532 32E0 ldi r19,lo8(2) |
963 0534 F30E add r15,r19 |
964 0536 2296 adiw r28,2 |
965 0538 0C5F subi r16,lo8(-(4)) |
966 053a 1F4F sbci r17,hi8(-(4)) |
967 053c 88E0 ldi r24,lo8(8) |
968 053e 8F15 cp r24,r15 |
969 0540 00F4 brsh .L41 |
970 0542 00C0 rjmp .L20 |
971 .L42: |
972 0544 1092 0000 sts DispPtr,__zero_reg__ |
973 0548 8091 0000 lds r24,EE_Parameter+2 |
974 054c E82F mov r30,r24 |
975 054e FF27 clr r31 |
976 0550 EE0F add r30,r30 |
977 0552 FF1F adc r31,r31 |
978 0554 E050 subi r30,lo8(-(PPM_in)) |
979 0556 F040 sbci r31,hi8(-(PPM_in)) |
980 0558 8081 ld r24,Z |
981 055a 9181 ldd r25,Z+1 |
982 055c 9F93 push r25 |
983 055e 8F93 push r24 |
984 0560 8091 0000 lds r24,EE_Parameter+1 |
985 0564 E82F mov r30,r24 |
986 0566 FF27 clr r31 |
987 0568 EE0F add r30,r30 |
988 056a FF1F adc r31,r31 |
989 056c E050 subi r30,lo8(-(PPM_in)) |
990 056e F040 sbci r31,hi8(-(PPM_in)) |
991 0570 8081 ld r24,Z |
992 0572 9181 ldd r25,Z+1 |
993 0574 9F93 push r25 |
994 0576 8F93 push r24 |
995 0578 80E0 ldi r24,lo8(__c.21) |
996 057a 90E0 ldi r25,hi8(__c.21) |
997 057c 9F93 push r25 |
998 057e 8F93 push r24 |
999 0580 DF92 push r13 |
1000 0582 CF92 push r12 |
1001 0584 FE01 movw r30,r28 |
1002 0586 0995 icall |
1003 0588 84E1 ldi r24,lo8(20) |
1004 058a 8093 0000 sts DispPtr,r24 |
1005 058e EDB7 in r30,__SP_L__ |
1006 0590 FEB7 in r31,__SP_H__ |
1007 0592 3896 adiw r30,8 |
1008 0594 EDBF out __SP_L__,r30 |
1009 0596 8091 0000 lds r24,EE_Parameter+4 |
1010 059a E82F mov r30,r24 |
1011 059c FF27 clr r31 |
1012 059e EE0F add r30,r30 |
1013 05a0 FF1F adc r31,r31 |
1014 05a2 E050 subi r30,lo8(-(PPM_in)) |
1015 05a4 F040 sbci r31,hi8(-(PPM_in)) |
1016 05a6 8081 ld r24,Z |
1017 05a8 9181 ldd r25,Z+1 |
1018 05aa 9F93 push r25 |
1019 05ac 8F93 push r24 |
1020 05ae 8091 0000 lds r24,EE_Parameter+3 |
1021 05b2 E82F mov r30,r24 |
1022 05b4 FF27 clr r31 |
1023 05b6 EE0F add r30,r30 |
1024 05b8 FF1F adc r31,r31 |
1025 05ba E050 subi r30,lo8(-(PPM_in)) |
1026 05bc F040 sbci r31,hi8(-(PPM_in)) |
1027 05be 8081 ld r24,Z |
1028 05c0 9181 ldd r25,Z+1 |
1029 05c2 8158 subi r24,lo8(-(127)) |
1030 05c4 9F4F sbci r25,hi8(-(127)) |
1031 05c6 9F93 push r25 |
1032 05c8 8F93 push r24 |
1033 05ca 80E0 ldi r24,lo8(__c.22) |
1034 05cc 90E0 ldi r25,hi8(__c.22) |
1035 05ce 9F93 push r25 |
1036 05d0 8F93 push r24 |
1037 05d2 DF92 push r13 |
1038 05d4 CF92 push r12 |
1039 05d6 E091 0000 lds r30,_printf_P |
1040 05da F091 0000 lds r31,(_printf_P)+1 |
1041 05de 0995 icall |
1042 05e0 88E2 ldi r24,lo8(40) |
1043 05e2 8093 0000 sts DispPtr,r24 |
1044 05e6 2DB7 in r18,__SP_L__ |
1045 05e8 3EB7 in r19,__SP_H__ |
1046 05ea 285F subi r18,lo8(-(8)) |
1047 05ec 3F4F sbci r19,hi8(-(8)) |
1048 05ee 2DBF out __SP_L__,r18 |
1049 05f0 8091 0000 lds r24,EE_Parameter+6 |
1050 05f4 E82F mov r30,r24 |
1051 05f6 FF27 clr r31 |
1052 05f8 EE0F add r30,r30 |
1053 05fa FF1F adc r31,r31 |
1054 05fc E050 subi r30,lo8(-(PPM_in)) |
1055 05fe F040 sbci r31,hi8(-(PPM_in)) |
1056 0600 8081 ld r24,Z |
1057 0602 9181 ldd r25,Z+1 |
1058 0604 8158 subi r24,lo8(-(127)) |
1059 0606 9F4F sbci r25,hi8(-(127)) |
1060 0608 9F93 push r25 |
1061 060a 8F93 push r24 |
1062 060c 8091 0000 lds r24,EE_Parameter+5 |
1063 0610 E82F mov r30,r24 |
1064 0612 FF27 clr r31 |
1065 0614 EE0F add r30,r30 |
1066 0616 FF1F adc r31,r31 |
1067 0618 E050 subi r30,lo8(-(PPM_in)) |
1068 061a F040 sbci r31,hi8(-(PPM_in)) |
1069 061c 8081 ld r24,Z |
1070 061e 9181 ldd r25,Z+1 |
1071 0620 8158 subi r24,lo8(-(127)) |
1072 0622 9F4F sbci r25,hi8(-(127)) |
1073 0624 9F93 push r25 |
1074 0626 8F93 push r24 |
1075 0628 80E0 ldi r24,lo8(__c.23) |
1076 062a 90E0 ldi r25,hi8(__c.23) |
1077 062c 9F93 push r25 |
1078 062e 8F93 push r24 |
1079 0630 DF92 push r13 |
1080 0632 CF92 push r12 |
1081 0634 E091 0000 lds r30,_printf_P |
1082 0638 F091 0000 lds r31,(_printf_P)+1 |
1083 063c 0995 icall |
1084 063e 8CE3 ldi r24,lo8(60) |
1085 0640 8093 0000 sts DispPtr,r24 |
1086 0644 8DB7 in r24,__SP_L__ |
1087 0646 9EB7 in r25,__SP_H__ |
1088 0648 0896 adiw r24,8 |
1089 064a 8DBF out __SP_L__,r24 |
1090 064c 8091 0000 lds r24,EE_Parameter+8 |
1091 0650 E82F mov r30,r24 |
1092 0652 FF27 clr r31 |
1093 0654 EE0F add r30,r30 |
1094 0656 FF1F adc r31,r31 |
1095 0658 E050 subi r30,lo8(-(PPM_in)) |
1096 065a F040 sbci r31,hi8(-(PPM_in)) |
1097 065c 8081 ld r24,Z |
1098 065e 9181 ldd r25,Z+1 |
1099 0660 8158 subi r24,lo8(-(127)) |
1100 0662 9F4F sbci r25,hi8(-(127)) |
1101 0664 9F93 push r25 |
1102 0666 8F93 push r24 |
1103 0668 8091 0000 lds r24,EE_Parameter+7 |
1104 066c E82F mov r30,r24 |
1105 066e FF27 clr r31 |
1106 0670 EE0F add r30,r30 |
1107 0672 FF1F adc r31,r31 |
1108 0674 E050 subi r30,lo8(-(PPM_in)) |
1109 0676 F040 sbci r31,hi8(-(PPM_in)) |
1110 0678 8081 ld r24,Z |
1111 067a 9181 ldd r25,Z+1 |
1112 067c 8158 subi r24,lo8(-(127)) |
1113 067e 9F4F sbci r25,hi8(-(127)) |
1114 0680 9F93 push r25 |
1115 0682 8F93 push r24 |
1116 0684 80E0 ldi r24,lo8(__c.24) |
1117 0686 90E0 ldi r25,hi8(__c.24) |
1118 0688 00C0 rjmp .L121 |
1119 .L43: |
1120 068a 1092 0000 sts DispPtr,__zero_reg__ |
1121 068e 80E0 ldi r24,lo8(__c.25) |
1122 0690 90E0 ldi r25,hi8(__c.25) |
1123 0692 9F93 push r25 |
1124 0694 8F93 push r24 |
1125 0696 00E0 ldi r16,lo8(pm(Menu_Putchar)) |
1126 0698 10E0 ldi r17,hi8(pm(Menu_Putchar)) |
1127 069a DF92 push r13 |
1128 069c CF92 push r12 |
1129 069e FE01 movw r30,r28 |
1130 06a0 0995 icall |
1131 06a2 8091 0000 lds r24,PlatinenVersion |
1132 06a6 0F90 pop __tmp_reg__ |
1133 06a8 0F90 pop __tmp_reg__ |
1134 06aa 0F90 pop __tmp_reg__ |
1135 06ac 0F90 pop __tmp_reg__ |
1136 06ae 8A30 cpi r24,lo8(10) |
1137 06b0 01F0 breq .+2 |
1138 06b2 00C0 rjmp .L44 |
1139 06b4 84E1 ldi r24,lo8(20) |
1140 06b6 8093 0000 sts DispPtr,r24 |
1141 06ba 8091 0000 lds r24,AdNeutralNick |
1142 06be 9091 0000 lds r25,(AdNeutralNick)+1 |
1143 06c2 9C01 movw r18,r24 |
1144 06c4 97FF sbrs r25,7 |
1145 06c6 00C0 rjmp .L45 |
1146 06c8 295F subi r18,lo8(-(7)) |
1147 06ca 3F4F sbci r19,hi8(-(7)) |
1148 .L45: |
1149 06cc 287F andi r18,lo8(-8) |
1150 06ce 821B sub r24,r18 |
1151 06d0 930B sbc r25,r19 |
1152 06d2 9F93 push r25 |
1153 06d4 8F93 push r24 |
1154 06d6 8091 0000 lds r24,AdNeutralNick |
1155 06da 9091 0000 lds r25,(AdNeutralNick)+1 |
1156 06de 97FD sbrc r25,7 |
1157 06e0 0796 adiw r24,7 |
1158 .L46: |
1159 06e2 73E0 ldi r23,3 |
1160 06e4 9595 1: asr r25 |
1161 06e6 8795 ror r24 |
1162 06e8 7A95 dec r23 |
1163 06ea 01F4 brne 1b |
1164 06ec 9F93 push r25 |
1165 06ee 8F93 push r24 |
1166 06f0 2091 0000 lds r18,AdNeutralNick |
1167 06f4 3091 0000 lds r19,(AdNeutralNick)+1 |
1168 06f8 37FF sbrs r19,7 |
1169 06fa 00C0 rjmp .L47 |
1170 06fc 295F subi r18,lo8(-(7)) |
1171 06fe 3F4F sbci r19,hi8(-(7)) |
1172 .L47: |
1173 0700 63E0 ldi r22,3 |
1174 0702 3595 1: asr r19 |
1175 0704 2795 ror r18 |
1176 0706 6A95 dec r22 |
1177 0708 01F4 brne 1b |
1178 070a 8091 0000 lds r24,AdWertNick |
1179 070e 9091 0000 lds r25,(AdWertNick)+1 |
1180 0712 821B sub r24,r18 |
1181 0714 930B sbc r25,r19 |
1182 0716 9F93 push r25 |
1183 0718 8F93 push r24 |
1184 071a 80E0 ldi r24,lo8(__c.26) |
1185 071c 90E0 ldi r25,hi8(__c.26) |
1186 071e 9F93 push r25 |
1187 0720 8F93 push r24 |
1188 0722 1F93 push r17 |
1189 0724 0F93 push r16 |
1190 0726 E091 0000 lds r30,_printf_P |
1191 072a F091 0000 lds r31,(_printf_P)+1 |
1192 072e 0995 icall |
1193 0730 88E2 ldi r24,lo8(40) |
1194 0732 8093 0000 sts DispPtr,r24 |
1195 0736 2DB7 in r18,__SP_L__ |
1196 0738 3EB7 in r19,__SP_H__ |
1197 073a 265F subi r18,lo8(-(10)) |
1198 073c 3F4F sbci r19,hi8(-(10)) |
1199 073e 2DBF out __SP_L__,r18 |
1200 0740 8091 0000 lds r24,AdNeutralRoll |
1201 0744 9091 0000 lds r25,(AdNeutralRoll)+1 |
1202 0748 9C01 movw r18,r24 |
1203 074a 97FF sbrs r25,7 |
1204 074c 00C0 rjmp .L48 |
1205 074e 295F subi r18,lo8(-(7)) |
1206 0750 3F4F sbci r19,hi8(-(7)) |
1207 .L48: |
1208 0752 287F andi r18,lo8(-8) |
1209 0754 821B sub r24,r18 |
1210 0756 930B sbc r25,r19 |
1211 0758 9F93 push r25 |
1212 075a 8F93 push r24 |
1213 075c 8091 0000 lds r24,AdNeutralRoll |
1214 0760 9091 0000 lds r25,(AdNeutralRoll)+1 |
1215 0764 97FD sbrc r25,7 |
1216 0766 0796 adiw r24,7 |
1217 .L49: |
1218 0768 53E0 ldi r21,3 |
1219 076a 9595 1: asr r25 |
1220 076c 8795 ror r24 |
1221 076e 5A95 dec r21 |
1222 0770 01F4 brne 1b |
1223 0772 9F93 push r25 |
1224 0774 8F93 push r24 |
1225 0776 2091 0000 lds r18,AdNeutralRoll |
1226 077a 3091 0000 lds r19,(AdNeutralRoll)+1 |
1227 077e 37FF sbrs r19,7 |
1228 0780 00C0 rjmp .L50 |
1229 0782 295F subi r18,lo8(-(7)) |
1230 0784 3F4F sbci r19,hi8(-(7)) |
1231 .L50: |
1232 0786 43E0 ldi r20,3 |
1233 0788 3595 1: asr r19 |
1234 078a 2795 ror r18 |
1235 078c 4A95 dec r20 |
1236 078e 01F4 brne 1b |
1237 0790 8091 0000 lds r24,AdWertRoll |
1238 0794 9091 0000 lds r25,(AdWertRoll)+1 |
1239 0798 821B sub r24,r18 |
1240 079a 930B sbc r25,r19 |
1241 079c 9F93 push r25 |
1242 079e 8F93 push r24 |
1243 07a0 80E0 ldi r24,lo8(__c.27) |
1244 07a2 90E0 ldi r25,hi8(__c.27) |
1245 07a4 9F93 push r25 |
1246 07a6 8F93 push r24 |
1247 07a8 1F93 push r17 |
1248 07aa 0F93 push r16 |
1249 07ac E091 0000 lds r30,_printf_P |
1250 07b0 F091 0000 lds r31,(_printf_P)+1 |
1251 07b4 0995 icall |
1252 07b6 8CE3 ldi r24,lo8(60) |
1253 07b8 8093 0000 sts DispPtr,r24 |
1254 07bc 8DB7 in r24,__SP_L__ |
1255 07be 9EB7 in r25,__SP_H__ |
1256 07c0 0A96 adiw r24,10 |
1257 07c2 8DBF out __SP_L__,r24 |
1258 07c4 8091 0000 lds r24,AdNeutralGier |
1259 07c8 9091 0000 lds r25,(AdNeutralGier)+1 |
1260 07cc 9F93 push r25 |
1261 07ce 8F93 push r24 |
1262 07d0 8091 0000 lds r24,AdNeutralGier |
1263 07d4 9091 0000 lds r25,(AdNeutralGier)+1 |
1264 07d8 2091 0000 lds r18,AdWertGier |
1265 07dc 3091 0000 lds r19,(AdWertGier)+1 |
1266 07e0 821B sub r24,r18 |
1267 07e2 930B sbc r25,r19 |
1268 07e4 9F93 push r25 |
1269 07e6 8F93 push r24 |
1270 07e8 80E0 ldi r24,lo8(__c.28) |
1271 07ea 90E0 ldi r25,hi8(__c.28) |
1272 07ec 00C0 rjmp .L126 |
1273 .L44: |
1274 07ee 8B30 cpi r24,lo8(11) |
1275 07f0 01F0 breq .L53 |
1276 07f2 8431 cpi r24,lo8(20) |
1277 07f4 00F4 brsh .+2 |
1278 07f6 00C0 rjmp .L52 |
1279 .L53: |
1280 07f8 84E1 ldi r24,lo8(20) |
1281 07fa 8093 0000 sts DispPtr,r24 |
1282 07fe 8091 0000 lds r24,AdNeutralNick |
1283 0802 9091 0000 lds r25,(AdNeutralNick)+1 |
1284 0806 9C01 movw r18,r24 |
1285 0808 97FF sbrs r25,7 |
1286 080a 00C0 rjmp .L54 |
1287 080c 215F subi r18,lo8(-(15)) |
1288 080e 3F4F sbci r19,hi8(-(15)) |
1289 .L54: |
1290 0810 207F andi r18,lo8(-16) |
1291 0812 821B sub r24,r18 |
1292 0814 930B sbc r25,r19 |
1293 0816 97FD sbrc r25,7 |
1294 0818 0196 adiw r24,1 |
1295 .L55: |
1296 081a 9595 asr r25 |
1297 081c 8795 ror r24 |
1298 081e 9F93 push r25 |
1299 0820 8F93 push r24 |
1300 0822 8091 0000 lds r24,AdNeutralNick |
1301 0826 9091 0000 lds r25,(AdNeutralNick)+1 |
1302 082a 97FD sbrc r25,7 |
1303 082c 0F96 adiw r24,15 |
1304 .L56: |
1305 082e 24E0 ldi r18,4 |
1306 0830 9595 1: asr r25 |
1307 0832 8795 ror r24 |
1308 0834 2A95 dec r18 |
1309 0836 01F4 brne 1b |
1310 0838 9F93 push r25 |
1311 083a 8F93 push r24 |
1312 083c 2091 0000 lds r18,AdNeutralNick |
1313 0840 3091 0000 lds r19,(AdNeutralNick)+1 |
1314 0844 37FF sbrs r19,7 |
1315 0846 00C0 rjmp .L57 |
1316 0848 295F subi r18,lo8(-(7)) |
1317 084a 3F4F sbci r19,hi8(-(7)) |
1318 .L57: |
1319 084c C3E0 ldi r28,3 |
1320 084e 3595 1: asr r19 |
1321 0850 2795 ror r18 |
1322 0852 CA95 dec r28 |
1323 0854 01F4 brne 1b |
1324 0856 8091 0000 lds r24,AdWertNick |
1325 085a 9091 0000 lds r25,(AdWertNick)+1 |
1326 085e 821B sub r24,r18 |
1327 0860 930B sbc r25,r19 |
1328 0862 9F93 push r25 |
1329 0864 8F93 push r24 |
1330 0866 80E0 ldi r24,lo8(__c.29) |
1331 0868 90E0 ldi r25,hi8(__c.29) |
1332 086a 9F93 push r25 |
1333 086c 8F93 push r24 |
1334 086e 1F93 push r17 |
1335 0870 0F93 push r16 |
1336 0872 E091 0000 lds r30,_printf_P |
1337 0876 F091 0000 lds r31,(_printf_P)+1 |
1338 087a 0995 icall |
1339 087c 88E2 ldi r24,lo8(40) |
1340 087e 8093 0000 sts DispPtr,r24 |
1341 0882 2DB7 in r18,__SP_L__ |
1342 0884 3EB7 in r19,__SP_H__ |
1343 0886 265F subi r18,lo8(-(10)) |
1344 0888 3F4F sbci r19,hi8(-(10)) |
1345 088a 2DBF out __SP_L__,r18 |
1346 088c 8091 0000 lds r24,AdNeutralRoll |
1347 0890 9091 0000 lds r25,(AdNeutralRoll)+1 |
1348 0894 9C01 movw r18,r24 |
1349 0896 97FF sbrs r25,7 |
1350 0898 00C0 rjmp .L58 |
1351 089a 215F subi r18,lo8(-(15)) |
1352 089c 3F4F sbci r19,hi8(-(15)) |
1353 .L58: |
1354 089e 207F andi r18,lo8(-16) |
1355 08a0 821B sub r24,r18 |
1356 08a2 930B sbc r25,r19 |
1357 08a4 97FD sbrc r25,7 |
1358 08a6 0196 adiw r24,1 |
1359 .L59: |
1360 08a8 9595 asr r25 |
1361 08aa 8795 ror r24 |
1362 08ac 9F93 push r25 |
1363 08ae 8F93 push r24 |
1364 08b0 8091 0000 lds r24,AdNeutralRoll |
1365 08b4 9091 0000 lds r25,(AdNeutralRoll)+1 |
1366 08b8 97FD sbrc r25,7 |
1367 08ba 0F96 adiw r24,15 |
1368 .L60: |
1369 08bc A4E0 ldi r26,4 |
1370 08be 9595 1: asr r25 |
1371 08c0 8795 ror r24 |
1372 08c2 AA95 dec r26 |
1373 08c4 01F4 brne 1b |
1374 08c6 9F93 push r25 |
1375 08c8 8F93 push r24 |
1376 08ca 2091 0000 lds r18,AdNeutralRoll |
1377 08ce 3091 0000 lds r19,(AdNeutralRoll)+1 |
1378 08d2 37FF sbrs r19,7 |
1379 08d4 00C0 rjmp .L61 |
1380 08d6 295F subi r18,lo8(-(7)) |
1381 08d8 3F4F sbci r19,hi8(-(7)) |
1382 .L61: |
1383 08da F3E0 ldi r31,3 |
1384 08dc 3595 1: asr r19 |
1385 08de 2795 ror r18 |
1386 08e0 FA95 dec r31 |
1387 08e2 01F4 brne 1b |
1388 08e4 8091 0000 lds r24,AdWertRoll |
1389 08e8 9091 0000 lds r25,(AdWertRoll)+1 |
1390 08ec 821B sub r24,r18 |
1391 08ee 930B sbc r25,r19 |
1392 08f0 9F93 push r25 |
1393 08f2 8F93 push r24 |
1394 08f4 80E0 ldi r24,lo8(__c.30) |
1395 08f6 90E0 ldi r25,hi8(__c.30) |
1396 08f8 9F93 push r25 |
1397 08fa 8F93 push r24 |
1398 08fc 1F93 push r17 |
1399 08fe 0F93 push r16 |
1400 0900 E091 0000 lds r30,_printf_P |
1401 0904 F091 0000 lds r31,(_printf_P)+1 |
1402 0908 0995 icall |
1403 090a 8CE3 ldi r24,lo8(60) |
1404 090c 8093 0000 sts DispPtr,r24 |
1405 0910 8DB7 in r24,__SP_L__ |
1406 0912 9EB7 in r25,__SP_H__ |
1407 0914 0A96 adiw r24,10 |
1408 0916 8DBF out __SP_L__,r24 |
1409 0918 8091 0000 lds r24,AdNeutralGier |
1410 091c 9091 0000 lds r25,(AdNeutralGier)+1 |
1411 0920 97FD sbrc r25,7 |
1412 0922 0196 adiw r24,1 |
1413 .L62: |
1414 0924 9595 asr r25 |
1415 0926 8795 ror r24 |
1416 0928 9F93 push r25 |
1417 092a 8F93 push r24 |
1418 092c 8091 0000 lds r24,AdNeutralGier |
1419 0930 9091 0000 lds r25,(AdNeutralGier)+1 |
1420 0934 2091 0000 lds r18,AdWertGier |
1421 0938 3091 0000 lds r19,(AdWertGier)+1 |
1422 093c 821B sub r24,r18 |
1423 093e 930B sbc r25,r19 |
1424 0940 9F93 push r25 |
1425 0942 8F93 push r24 |
1426 0944 80E0 ldi r24,lo8(__c.31) |
1427 0946 90E0 ldi r25,hi8(__c.31) |
1428 .L126: |
1429 0948 9F93 push r25 |
1430 094a 8F93 push r24 |
1431 094c 1F93 push r17 |
1432 094e 0F93 push r16 |
1433 0950 00C0 rjmp .L122 |
1434 .L52: |
1435 0952 8D30 cpi r24,lo8(13) |
1436 0954 01F0 breq .+2 |
1437 0956 00C0 rjmp .L20 |
1438 0958 84E1 ldi r24,lo8(20) |
1439 095a 8093 0000 sts DispPtr,r24 |
1440 095e 8091 0000 lds r24,AnalogOffsetNick |
1441 0962 9927 clr r25 |
1442 0964 9F93 push r25 |
1443 0966 8F93 push r24 |
1444 0968 8091 0000 lds r24,AdNeutralNick |
1445 096c 9091 0000 lds r25,(AdNeutralNick)+1 |
1446 0970 97FD sbrc r25,7 |
1447 0972 0F96 adiw r24,15 |
1448 .L65: |
1449 0974 74E0 ldi r23,4 |
1450 0976 9595 1: asr r25 |
1451 0978 8795 ror r24 |
1452 097a 7A95 dec r23 |
1453 097c 01F4 brne 1b |
1454 097e 9F93 push r25 |
1455 0980 8F93 push r24 |
1456 0982 2091 0000 lds r18,AdNeutralNick |
1457 0986 3091 0000 lds r19,(AdNeutralNick)+1 |
1458 098a 37FF sbrs r19,7 |
1459 098c 00C0 rjmp .L66 |
1460 098e 295F subi r18,lo8(-(7)) |
1461 0990 3F4F sbci r19,hi8(-(7)) |
1462 .L66: |
1463 0992 63E0 ldi r22,3 |
1464 0994 3595 1: asr r19 |
1465 0996 2795 ror r18 |
1466 0998 6A95 dec r22 |
1467 099a 01F4 brne 1b |
1468 099c 8091 0000 lds r24,AdWertNick |
1469 09a0 9091 0000 lds r25,(AdWertNick)+1 |
1470 09a4 821B sub r24,r18 |
1471 09a6 930B sbc r25,r19 |
1472 09a8 9F93 push r25 |
1473 09aa 8F93 push r24 |
1474 09ac 80E0 ldi r24,lo8(__c.32) |
1475 09ae 90E0 ldi r25,hi8(__c.32) |
1476 09b0 9F93 push r25 |
1477 09b2 8F93 push r24 |
1478 09b4 1F93 push r17 |
1479 09b6 0F93 push r16 |
1480 09b8 E091 0000 lds r30,_printf_P |
1481 09bc F091 0000 lds r31,(_printf_P)+1 |
1482 09c0 0995 icall |
1483 09c2 88E2 ldi r24,lo8(40) |
1484 09c4 8093 0000 sts DispPtr,r24 |
1485 09c8 2DB7 in r18,__SP_L__ |
1486 09ca 3EB7 in r19,__SP_H__ |
1487 09cc 265F subi r18,lo8(-(10)) |
1488 09ce 3F4F sbci r19,hi8(-(10)) |
1489 09d0 2DBF out __SP_L__,r18 |
1490 09d2 8091 0000 lds r24,AnalogOffsetRoll |
1491 09d6 9927 clr r25 |
1492 09d8 9F93 push r25 |
1493 09da 8F93 push r24 |
1494 09dc 8091 0000 lds r24,AdNeutralRoll |
1495 09e0 9091 0000 lds r25,(AdNeutralRoll)+1 |
1496 09e4 97FD sbrc r25,7 |
1497 09e6 0F96 adiw r24,15 |
1498 .L67: |
1499 09e8 54E0 ldi r21,4 |
1500 09ea 9595 1: asr r25 |
1501 09ec 8795 ror r24 |
1502 09ee 5A95 dec r21 |
1503 09f0 01F4 brne 1b |
1504 09f2 9F93 push r25 |
1505 09f4 8F93 push r24 |
1506 09f6 2091 0000 lds r18,AdNeutralRoll |
1507 09fa 3091 0000 lds r19,(AdNeutralRoll)+1 |
1508 09fe 37FF sbrs r19,7 |
1509 0a00 00C0 rjmp .L68 |
1510 0a02 295F subi r18,lo8(-(7)) |
1511 0a04 3F4F sbci r19,hi8(-(7)) |
1512 .L68: |
1513 0a06 43E0 ldi r20,3 |
1514 0a08 3595 1: asr r19 |
1515 0a0a 2795 ror r18 |
1516 0a0c 4A95 dec r20 |
1517 0a0e 01F4 brne 1b |
1518 0a10 8091 0000 lds r24,AdWertRoll |
1519 0a14 9091 0000 lds r25,(AdWertRoll)+1 |
1520 0a18 821B sub r24,r18 |
1521 0a1a 930B sbc r25,r19 |
1522 0a1c 9F93 push r25 |
1523 0a1e 8F93 push r24 |
1524 0a20 80E0 ldi r24,lo8(__c.33) |
1525 0a22 90E0 ldi r25,hi8(__c.33) |
1526 0a24 9F93 push r25 |
1527 0a26 8F93 push r24 |
1528 0a28 1F93 push r17 |
1529 0a2a 0F93 push r16 |
1530 0a2c E091 0000 lds r30,_printf_P |
1531 0a30 F091 0000 lds r31,(_printf_P)+1 |
1532 0a34 0995 icall |
1533 0a36 8CE3 ldi r24,lo8(60) |
1534 0a38 8093 0000 sts DispPtr,r24 |
1535 0a3c 8DB7 in r24,__SP_L__ |
1536 0a3e 9EB7 in r25,__SP_H__ |
1537 0a40 0A96 adiw r24,10 |
1538 0a42 8DBF out __SP_L__,r24 |
1539 0a44 8091 0000 lds r24,AnalogOffsetGier |
1540 0a48 9927 clr r25 |
1541 0a4a 9F93 push r25 |
1542 0a4c 8F93 push r24 |
1543 0a4e 8091 0000 lds r24,AdNeutralGier |
1544 0a52 9091 0000 lds r25,(AdNeutralGier)+1 |
1545 0a56 97FD sbrc r25,7 |
1546 0a58 0196 adiw r24,1 |
1547 .L69: |
1548 0a5a 9595 asr r25 |
1549 0a5c 8795 ror r24 |
1550 0a5e 9F93 push r25 |
1551 0a60 8F93 push r24 |
1552 0a62 8091 0000 lds r24,AdNeutralGier |
1553 0a66 9091 0000 lds r25,(AdNeutralGier)+1 |
1554 0a6a 2091 0000 lds r18,AdWertGier |
1555 0a6e 3091 0000 lds r19,(AdWertGier)+1 |
1556 0a72 821B sub r24,r18 |
1557 0a74 930B sbc r25,r19 |
1558 0a76 9F93 push r25 |
1559 0a78 8F93 push r24 |
1560 0a7a 80E0 ldi r24,lo8(__c.34) |
1561 0a7c 90E0 ldi r25,hi8(__c.34) |
1562 0a7e 9F93 push r25 |
1563 0a80 8F93 push r24 |
1564 0a82 1F93 push r17 |
1565 0a84 0F93 push r16 |
1566 0a86 E091 0000 lds r30,_printf_P |
1567 0a8a F091 0000 lds r31,(_printf_P)+1 |
1568 0a8e 0995 icall |
1569 0a90 EDB7 in r30,__SP_L__ |
1570 0a92 FEB7 in r31,__SP_H__ |
1571 0a94 3A96 adiw r30,10 |
1572 0a96 00C0 rjmp .L117 |
1573 .L70: |
1574 0a98 1092 0000 sts DispPtr,__zero_reg__ |
1575 0a9c 80E0 ldi r24,lo8(__c.35) |
1576 0a9e 90E0 ldi r25,hi8(__c.35) |
1577 0aa0 9F93 push r25 |
1578 0aa2 8F93 push r24 |
1579 0aa4 DF92 push r13 |
1580 0aa6 CF92 push r12 |
1581 0aa8 FE01 movw r30,r28 |
1582 0aaa 0995 icall |
1583 0aac 84E1 ldi r24,lo8(20) |
1584 0aae 8093 0000 sts DispPtr,r24 |
1585 0ab2 0F90 pop __tmp_reg__ |
1586 0ab4 0F90 pop __tmp_reg__ |
1587 0ab6 0F90 pop __tmp_reg__ |
1588 0ab8 0F90 pop __tmp_reg__ |
1589 0aba 8091 0000 lds r24,NeutralAccX |
1590 0abe 9091 0000 lds r25,(NeutralAccX)+1 |
1591 0ac2 9F93 push r25 |
1592 0ac4 8F93 push r24 |
1593 0ac6 8091 0000 lds r24,AdWertAccNick |
1594 0aca 9091 0000 lds r25,(AdWertAccNick)+1 |
1595 0ace 9F93 push r25 |
1596 0ad0 8F93 push r24 |
1597 0ad2 80E0 ldi r24,lo8(__c.36) |
1598 0ad4 90E0 ldi r25,hi8(__c.36) |
1599 0ad6 9F93 push r25 |
1600 0ad8 8F93 push r24 |
1601 0ada DF92 push r13 |
1602 0adc CF92 push r12 |
1603 0ade E091 0000 lds r30,_printf_P |
1604 0ae2 F091 0000 lds r31,(_printf_P)+1 |
1605 0ae6 0995 icall |
1606 0ae8 88E2 ldi r24,lo8(40) |
1607 0aea 8093 0000 sts DispPtr,r24 |
1608 0aee 2DB7 in r18,__SP_L__ |
1609 0af0 3EB7 in r19,__SP_H__ |
1610 0af2 285F subi r18,lo8(-(8)) |
1611 0af4 3F4F sbci r19,hi8(-(8)) |
1612 0af6 2DBF out __SP_L__,r18 |
1613 0af8 8091 0000 lds r24,NeutralAccY |
1614 0afc 9091 0000 lds r25,(NeutralAccY)+1 |
1615 0b00 9F93 push r25 |
1616 0b02 8F93 push r24 |
1617 0b04 8091 0000 lds r24,AdWertAccRoll |
1618 0b08 9091 0000 lds r25,(AdWertAccRoll)+1 |
1619 0b0c 9F93 push r25 |
1620 0b0e 8F93 push r24 |
1621 0b10 80E0 ldi r24,lo8(__c.37) |
1622 0b12 90E0 ldi r25,hi8(__c.37) |
1623 0b14 9F93 push r25 |
1624 0b16 8F93 push r24 |
1625 0b18 DF92 push r13 |
1626 0b1a CF92 push r12 |
1627 0b1c E091 0000 lds r30,_printf_P |
1628 0b20 F091 0000 lds r31,(_printf_P)+1 |
1629 0b24 0995 icall |
1630 0b26 8CE3 ldi r24,lo8(60) |
1631 0b28 8093 0000 sts DispPtr,r24 |
1632 0b2c 8DB7 in r24,__SP_L__ |
1633 0b2e 9EB7 in r25,__SP_H__ |
1634 0b30 0896 adiw r24,8 |
1635 0b32 8DBF out __SP_L__,r24 |
1636 0b34 8091 0000 lds r24,NeutralAccZ |
1637 0b38 9091 0000 lds r25,(NeutralAccZ)+1 |
1638 0b3c 9F93 push r25 |
1639 0b3e 8F93 push r24 |
1640 0b40 8091 0000 lds r24,AdWertAccHoch |
1641 0b44 9091 0000 lds r25,(AdWertAccHoch)+1 |
1642 0b48 9F93 push r25 |
1643 0b4a 8F93 push r24 |
1644 0b4c 80E0 ldi r24,lo8(__c.38) |
1645 0b4e 90E0 ldi r25,hi8(__c.38) |
1646 .L121: |
1647 0b50 9F93 push r25 |
1648 0b52 8F93 push r24 |
1649 0b54 DF92 push r13 |
1650 0b56 CF92 push r12 |
1651 .L122: |
1652 0b58 E091 0000 lds r30,_printf_P |
1653 0b5c F091 0000 lds r31,(_printf_P)+1 |
1654 0b60 0995 icall |
1655 0b62 EDB7 in r30,__SP_L__ |
1656 0b64 FEB7 in r31,__SP_H__ |
1657 0b66 3896 adiw r30,8 |
1658 .L117: |
1659 0b68 EDBF out __SP_L__,r30 |
1660 0b6a 00C0 rjmp .L20 |
1661 .L71: |
1662 0b6c 1092 0000 sts DispPtr,__zero_reg__ |
1663 0b70 8091 0000 lds r24,UBat |
1664 0b74 9091 0000 lds r25,(UBat)+1 |
1665 0b78 6AE0 ldi r22,lo8(10) |
1666 0b7a 70E0 ldi r23,hi8(10) |
1667 0b7c 0E94 0000 call __divmodhi4 |
1668 0b80 9F93 push r25 |
1669 0b82 8F93 push r24 |
1670 0b84 8091 0000 lds r24,UBat |
1671 0b88 9091 0000 lds r25,(UBat)+1 |
1672 0b8c 6AE0 ldi r22,lo8(10) |
1673 0b8e 70E0 ldi r23,hi8(10) |
1674 0b90 0E94 0000 call __divmodhi4 |
1675 0b94 7F93 push r23 |
1676 0b96 6F93 push r22 |
1677 0b98 80E0 ldi r24,lo8(__c.39) |
1678 0b9a 90E0 ldi r25,hi8(__c.39) |
1679 0b9c 9F93 push r25 |
1680 0b9e 8F93 push r24 |
1681 0ba0 DF92 push r13 |
1682 0ba2 CF92 push r12 |
1683 0ba4 FE01 movw r30,r28 |
1684 0ba6 0995 icall |
1685 0ba8 84E1 ldi r24,lo8(20) |
1686 0baa 8093 0000 sts DispPtr,r24 |
1687 0bae 2DB7 in r18,__SP_L__ |
1688 0bb0 3EB7 in r19,__SP_H__ |
1689 0bb2 285F subi r18,lo8(-(8)) |
1690 0bb4 3F4F sbci r19,hi8(-(8)) |
1691 0bb6 2DBF out __SP_L__,r18 |
1692 0bb8 8091 0000 lds r24,Capacity |
1693 0bbc 9091 0000 lds r25,(Capacity)+1 |
1694 0bc0 6AE0 ldi r22,lo8(10) |
1695 0bc2 70E0 ldi r23,hi8(10) |
1696 0bc4 0E94 0000 call __udivmodhi4 |
1697 0bc8 9F93 push r25 |
1698 0bca 8F93 push r24 |
1699 0bcc 8091 0000 lds r24,Capacity |
1700 0bd0 9091 0000 lds r25,(Capacity)+1 |
1701 0bd4 6AE0 ldi r22,lo8(10) |
1702 0bd6 70E0 ldi r23,hi8(10) |
1703 0bd8 0E94 0000 call __udivmodhi4 |
1704 0bdc 7F93 push r23 |
1705 0bde 6F93 push r22 |
1706 0be0 80E0 ldi r24,lo8(__c.40) |
1707 0be2 90E0 ldi r25,hi8(__c.40) |
1708 0be4 9F93 push r25 |
1709 0be6 8F93 push r24 |
1710 0be8 DF92 push r13 |
1711 0bea CF92 push r12 |
1712 0bec E091 0000 lds r30,_printf_P |
1713 0bf0 F091 0000 lds r31,(_printf_P)+1 |
1714 0bf4 0995 icall |
1715 0bf6 88E2 ldi r24,lo8(40) |
1716 0bf8 8093 0000 sts DispPtr,r24 |
1717 0bfc 8DB7 in r24,__SP_L__ |
1718 0bfe 9EB7 in r25,__SP_H__ |
1719 0c00 0896 adiw r24,8 |
1720 0c02 8DBF out __SP_L__,r24 |
1721 0c04 8091 0000 lds r24,Capacity+2 |
1722 0c08 9091 0000 lds r25,(Capacity+2)+1 |
1723 0c0c 9F93 push r25 |
1724 0c0e 8F93 push r24 |
1725 0c10 80E0 ldi r24,lo8(__c.41) |
1726 0c12 90E0 ldi r25,hi8(__c.41) |
1727 0c14 9F93 push r25 |
1728 0c16 8F93 push r24 |
1729 0c18 DF92 push r13 |
1730 0c1a CF92 push r12 |
1731 0c1c E091 0000 lds r30,_printf_P |
1732 0c20 F091 0000 lds r31,(_printf_P)+1 |
1733 0c24 0995 icall |
1734 0c26 8CE3 ldi r24,lo8(60) |
1735 0c28 8093 0000 sts DispPtr,r24 |
1736 0c2c EDB7 in r30,__SP_L__ |
1737 0c2e FEB7 in r31,__SP_H__ |
1738 0c30 3696 adiw r30,6 |
1739 0c32 EDBF out __SP_L__,r30 |
1740 0c34 8091 0000 lds r24,Capacity+4 |
1741 0c38 9091 0000 lds r25,(Capacity+4)+1 |
1742 0c3c 9F93 push r25 |
1743 0c3e 8F93 push r24 |
1744 0c40 80E0 ldi r24,lo8(__c.42) |
1745 0c42 90E0 ldi r25,hi8(__c.42) |
1746 .L127: |
1747 0c44 9F93 push r25 |
1748 0c46 8F93 push r24 |
1749 0c48 DF92 push r13 |
1750 0c4a CF92 push r12 |
1751 .L123: |
1752 0c4c E091 0000 lds r30,_printf_P |
1753 0c50 F091 0000 lds r31,(_printf_P)+1 |
1754 0c54 0995 icall |
1755 0c56 2DB7 in r18,__SP_L__ |
1756 0c58 3EB7 in r19,__SP_H__ |
1757 0c5a 2A5F subi r18,lo8(-(6)) |
1758 0c5c 3F4F sbci r19,hi8(-(6)) |
1759 0c5e 00C0 rjmp .L116 |
1760 .L72: |
1761 0c60 1092 0000 sts DispPtr,__zero_reg__ |
1762 0c64 80E0 ldi r24,lo8(__c.43) |
1763 0c66 90E0 ldi r25,hi8(__c.43) |
1764 0c68 9F93 push r25 |
1765 0c6a 8F93 push r24 |
1766 0c6c DF92 push r13 |
1767 0c6e CF92 push r12 |
1768 0c70 FE01 movw r30,r28 |
1769 0c72 0995 icall |
1770 0c74 84E1 ldi r24,lo8(20) |
1771 0c76 8093 0000 sts DispPtr,r24 |
1772 0c7a 0F90 pop __tmp_reg__ |
1773 0c7c 0F90 pop __tmp_reg__ |
1774 0c7e 0F90 pop __tmp_reg__ |
1775 0c80 0F90 pop __tmp_reg__ |
1776 0c82 8091 0000 lds r24,PPM_in |
1777 0c86 9091 0000 lds r25,(PPM_in)+1 |
1778 0c8a 9F93 push r25 |
1779 0c8c 8F93 push r24 |
1780 0c8e 80E0 ldi r24,lo8(__c.44) |
1781 0c90 90E0 ldi r25,hi8(__c.44) |
1782 0c92 9F93 push r25 |
1783 0c94 8F93 push r24 |
1784 0c96 DF92 push r13 |
1785 0c98 CF92 push r12 |
1786 0c9a E091 0000 lds r30,_printf_P |
1787 0c9e F091 0000 lds r31,(_printf_P)+1 |
1788 0ca2 0995 icall |
1789 0ca4 88E2 ldi r24,lo8(40) |
1790 0ca6 8093 0000 sts DispPtr,r24 |
1791 0caa 8DB7 in r24,__SP_L__ |
1792 0cac 9EB7 in r25,__SP_H__ |
1793 0cae 0696 adiw r24,6 |
1794 0cb0 8DBF out __SP_L__,r24 |
1795 0cb2 8091 0000 lds r24,SenderOkay |
1796 0cb6 9927 clr r25 |
1797 0cb8 9F93 push r25 |
1798 0cba 8F93 push r24 |
1799 0cbc 80E0 ldi r24,lo8(__c.45) |
1800 0cbe 90E0 ldi r25,hi8(__c.45) |
1801 0cc0 9F93 push r25 |
1802 0cc2 8F93 push r24 |
1803 0cc4 DF92 push r13 |
1804 0cc6 CF92 push r12 |
1805 0cc8 E091 0000 lds r30,_printf_P |
1806 0ccc F091 0000 lds r31,(_printf_P)+1 |
1807 0cd0 0995 icall |
1808 0cd2 8CE3 ldi r24,lo8(60) |
1809 0cd4 8093 0000 sts DispPtr,r24 |
1810 0cd8 EDB7 in r30,__SP_L__ |
1811 0cda FEB7 in r31,__SP_H__ |
1812 0cdc 3696 adiw r30,6 |
1813 0cde EDBF out __SP_L__,r30 |
1814 0ce0 8091 0000 lds r24,Channels |
1815 0ce4 9927 clr r25 |
1816 0ce6 0197 sbiw r24,1 |
1817 0ce8 9F93 push r25 |
1818 0cea 8F93 push r24 |
1819 0cec 80E0 ldi r24,lo8(__c.46) |
1820 0cee 90E0 ldi r25,hi8(__c.46) |
1821 0cf0 00C0 rjmp .L127 |
1822 .L73: |
1823 0cf2 1092 0000 sts DispPtr,__zero_reg__ |
1824 0cf6 80E0 ldi r24,lo8(__c.47) |
1825 0cf8 90E0 ldi r25,hi8(__c.47) |
1826 0cfa 9F93 push r25 |
1827 0cfc 8F93 push r24 |
1828 0cfe DF92 push r13 |
1829 0d00 CF92 push r12 |
1830 0d02 FE01 movw r30,r28 |
1831 0d04 0995 icall |
1832 0d06 84E1 ldi r24,lo8(20) |
1833 0d08 8093 0000 sts DispPtr,r24 |
1834 0d0c 0F90 pop __tmp_reg__ |
1835 0d0e 0F90 pop __tmp_reg__ |
1836 0d10 0F90 pop __tmp_reg__ |
1837 0d12 0F90 pop __tmp_reg__ |
1838 0d14 8091 0000 lds r24,KompassValue |
1839 0d18 9091 0000 lds r25,(KompassValue)+1 |
1840 0d1c 9F93 push r25 |
1841 0d1e 8F93 push r24 |
1842 0d20 80E0 ldi r24,lo8(__c.48) |
1843 0d22 90E0 ldi r25,hi8(__c.48) |
1844 0d24 9F93 push r25 |
1845 0d26 8F93 push r24 |
1846 0d28 DF92 push r13 |
1847 0d2a CF92 push r12 |
1848 0d2c E091 0000 lds r30,_printf_P |
1849 0d30 F091 0000 lds r31,(_printf_P)+1 |
1850 0d34 0995 icall |
1851 0d36 88E2 ldi r24,lo8(40) |
1852 0d38 8093 0000 sts DispPtr,r24 |
1853 0d3c 8DB7 in r24,__SP_L__ |
1854 0d3e 9EB7 in r25,__SP_H__ |
1855 0d40 0696 adiw r24,6 |
1856 0d42 8DBF out __SP_L__,r24 |
1857 0d44 8091 0000 lds r24,ErsatzKompassInGrad |
1858 0d48 9091 0000 lds r25,(ErsatzKompassInGrad)+1 |
1859 0d4c 9F93 push r25 |
1860 0d4e 8F93 push r24 |
1861 0d50 80E0 ldi r24,lo8(__c.49) |
1862 0d52 90E0 ldi r25,hi8(__c.49) |
1863 0d54 9F93 push r25 |
1864 0d56 8F93 push r24 |
1865 0d58 DF92 push r13 |
1866 0d5a CF92 push r12 |
1867 0d5c E091 0000 lds r30,_printf_P |
1868 0d60 F091 0000 lds r31,(_printf_P)+1 |
1869 0d64 0995 icall |
1870 0d66 8CE3 ldi r24,lo8(60) |
1871 0d68 8093 0000 sts DispPtr,r24 |
1872 0d6c EDB7 in r30,__SP_L__ |
1873 0d6e FEB7 in r31,__SP_H__ |
1874 0d70 3696 adiw r30,6 |
1875 0d72 EDBF out __SP_L__,r30 |
1876 0d74 8091 0000 lds r24,KompassSollWert |
1877 0d78 9091 0000 lds r25,(KompassSollWert)+1 |
1878 0d7c 9F93 push r25 |
1879 0d7e 8F93 push r24 |
1880 0d80 80E0 ldi r24,lo8(__c.50) |
1881 0d82 90E0 ldi r25,hi8(__c.50) |
1882 0d84 00C0 rjmp .L127 |
1883 .L74: |
1884 0d86 C0E0 ldi r28,lo8(Poti) |
1885 0d88 CC2E mov r12,r28 |
1886 0d8a C0E0 ldi r28,hi8(Poti) |
1887 0d8c DC2E mov r13,r28 |
1888 0d8e 20E0 ldi r18,lo8(0) |
1889 0d90 30E0 ldi r19,hi8(0) |
1890 0d92 E901 movw r28,r18 |
1891 0d94 B3E0 ldi r27,lo8(3) |
1892 0d96 FB2E mov r15,r27 |
1893 .L78: |
1894 0d98 C093 0000 sts DispPtr,r28 |
1895 0d9c F601 movw r30,r12 |
1896 0d9e 8191 ld r24,Z+ |
1897 0da0 6F01 movw r12,r30 |
1898 0da2 9927 clr r25 |
1899 0da4 9F93 push r25 |
1900 0da6 8F93 push r24 |
1901 0da8 8901 movw r16,r18 |
1902 0daa 0F5F subi r16,lo8(-(1)) |
1903 0dac 1F4F sbci r17,hi8(-(1)) |
1904 0dae 1F93 push r17 |
1905 0db0 0F93 push r16 |
1906 0db2 80E0 ldi r24,lo8(__c.51) |
1907 0db4 90E0 ldi r25,hi8(__c.51) |
1908 0db6 9F93 push r25 |
1909 0db8 8F93 push r24 |
1910 0dba 80E0 ldi r24,lo8(pm(Menu_Putchar)) |
1911 0dbc 90E0 ldi r25,hi8(pm(Menu_Putchar)) |
1912 0dbe 9F93 push r25 |
1913 0dc0 8F93 push r24 |
1914 0dc2 E091 0000 lds r30,_printf_P |
1915 0dc6 F091 0000 lds r31,(_printf_P)+1 |
1916 0dca 0995 icall |
1917 0dcc 2DB7 in r18,__SP_L__ |
1918 0dce 3EB7 in r19,__SP_H__ |
1919 0dd0 285F subi r18,lo8(-(8)) |
1920 0dd2 3F4F sbci r19,hi8(-(8)) |
1921 0dd4 2DBF out __SP_L__,r18 |
1922 0dd6 FA94 dec r15 |
1923 0dd8 6496 adiw r28,20 |
1924 0dda 9801 movw r18,r16 |
1925 0ddc F7FE sbrs r15,7 |
1926 0dde 00C0 rjmp .L78 |
1927 0de0 00C0 rjmp .L20 |
1928 .L79: |
1929 0de2 A0E0 ldi r26,lo8(Poti+4) |
1930 0de4 CA2E mov r12,r26 |
1931 0de6 A0E0 ldi r26,hi8(Poti+4) |
1932 0de8 DA2E mov r13,r26 |
1933 0dea C0E0 ldi r28,lo8(0) |
1934 0dec D0E0 ldi r29,hi8(0) |
1935 0dee 8E01 movw r16,r28 |
1936 0df0 F3E0 ldi r31,lo8(3) |
1937 0df2 FF2E mov r15,r31 |
1938 .L83: |
1939 0df4 0093 0000 sts DispPtr,r16 |
1940 0df8 F601 movw r30,r12 |
1941 0dfa 8191 ld r24,Z+ |
1942 0dfc 6F01 movw r12,r30 |
1943 0dfe 9927 clr r25 |
1944 0e00 9F93 push r25 |
1945 0e02 8F93 push r24 |
1946 0e04 2596 adiw r28,5 |
1947 0e06 DF93 push r29 |
1948 0e08 CF93 push r28 |
1949 0e0a 80E0 ldi r24,lo8(__c.52) |
1950 0e0c 90E0 ldi r25,hi8(__c.52) |
1951 0e0e 9F93 push r25 |
1952 0e10 8F93 push r24 |
1953 0e12 80E0 ldi r24,lo8(pm(Menu_Putchar)) |
1954 0e14 90E0 ldi r25,hi8(pm(Menu_Putchar)) |
1955 0e16 9F93 push r25 |
1956 0e18 8F93 push r24 |
1957 0e1a E091 0000 lds r30,_printf_P |
1958 0e1e F091 0000 lds r31,(_printf_P)+1 |
1959 0e22 0995 icall |
1960 0e24 2DB7 in r18,__SP_L__ |
1961 0e26 3EB7 in r19,__SP_H__ |
1962 0e28 285F subi r18,lo8(-(8)) |
1963 0e2a 3F4F sbci r19,hi8(-(8)) |
1964 0e2c 2DBF out __SP_L__,r18 |
1965 0e2e FA94 dec r15 |
1966 0e30 0C5E subi r16,lo8(-(20)) |
1967 0e32 1F4F sbci r17,hi8(-(20)) |
1968 0e34 2497 sbiw r28,4 |
1969 0e36 F7FE sbrs r15,7 |
1970 0e38 00C0 rjmp .L83 |
1971 0e3a 00C0 rjmp .L20 |
1972 .L84: |
1973 0e3c 1092 0000 sts DispPtr,__zero_reg__ |
1974 0e40 80E0 ldi r24,lo8(__c.53) |
1975 0e42 90E0 ldi r25,hi8(__c.53) |
1976 0e44 9F93 push r25 |
1977 0e46 8F93 push r24 |
1978 0e48 00E0 ldi r16,lo8(pm(Menu_Putchar)) |
1979 0e4a 10E0 ldi r17,hi8(pm(Menu_Putchar)) |
1980 0e4c DF92 push r13 |
1981 0e4e CF92 push r12 |
1982 0e50 FE01 movw r30,r28 |
1983 0e52 0995 icall |
1984 0e54 84E1 ldi r24,lo8(20) |
1985 0e56 8093 0000 sts DispPtr,r24 |
1986 0e5a 0F90 pop __tmp_reg__ |
1987 0e5c 0F90 pop __tmp_reg__ |
1988 0e5e 0F90 pop __tmp_reg__ |
1989 0e60 0F90 pop __tmp_reg__ |
1990 0e62 8091 0000 lds r24,Parameter_ServoNickControl |
1991 0e66 9927 clr r25 |
1992 0e68 9F93 push r25 |
1993 0e6a 8F93 push r24 |
1994 0e6c 80E0 ldi r24,lo8(__c.54) |
1995 0e6e 90E0 ldi r25,hi8(__c.54) |
1996 0e70 9F93 push r25 |
1997 0e72 8F93 push r24 |
1998 0e74 DF92 push r13 |
1999 0e76 CF92 push r12 |
2000 0e78 E091 0000 lds r30,_printf_P |
2001 0e7c F091 0000 lds r31,(_printf_P)+1 |
2002 0e80 0995 icall |
2003 0e82 88E2 ldi r24,lo8(40) |
2004 0e84 8093 0000 sts DispPtr,r24 |
2005 0e88 8DB7 in r24,__SP_L__ |
2006 0e8a 9EB7 in r25,__SP_H__ |
2007 0e8c 0696 adiw r24,6 |
2008 0e8e 8DBF out __SP_L__,r24 |
2009 0e90 8091 0000 lds r24,ServoNickValue |
2010 0e94 9091 0000 lds r25,(ServoNickValue)+1 |
2011 0e98 97FD sbrc r25,7 |
2012 0e9a 0396 adiw r24,3 |
2013 .L85: |
2014 0e9c 9595 asr r25 |
2015 0e9e 8795 ror r24 |
2016 0ea0 9595 asr r25 |
2017 0ea2 8795 ror r24 |
2018 0ea4 9F93 push r25 |
2019 0ea6 8F93 push r24 |
2020 0ea8 80E0 ldi r24,lo8(__c.55) |
2021 0eaa 90E0 ldi r25,hi8(__c.55) |
2022 0eac 9F93 push r25 |
2023 0eae 8F93 push r24 |
2024 0eb0 1F93 push r17 |
2025 0eb2 0F93 push r16 |
2026 0eb4 E091 0000 lds r30,_printf_P |
2027 0eb8 F091 0000 lds r31,(_printf_P)+1 |
2028 0ebc 0995 icall |
2029 0ebe 8CE3 ldi r24,lo8(60) |
2030 0ec0 8093 0000 sts DispPtr,r24 |
2031 0ec4 EDB7 in r30,__SP_L__ |
2032 0ec6 FEB7 in r31,__SP_H__ |
2033 0ec8 3696 adiw r30,6 |
2034 0eca EDBF out __SP_L__,r30 |
2035 0ecc 8091 0000 lds r24,EE_Parameter+48 |
2036 0ed0 9927 clr r25 |
2037 0ed2 9F93 push r25 |
2038 0ed4 8F93 push r24 |
2039 0ed6 8091 0000 lds r24,EE_Parameter+47 |
2040 0eda 9927 clr r25 |
2041 0edc 9F93 push r25 |
2042 0ede 8F93 push r24 |
2043 0ee0 80E0 ldi r24,lo8(__c.56) |
2044 0ee2 90E0 ldi r25,hi8(__c.56) |
2045 0ee4 9F93 push r25 |
2046 0ee6 8F93 push r24 |
2047 0ee8 1F93 push r17 |
2048 0eea 0F93 push r16 |
2049 0eec E091 0000 lds r30,_printf_P |
2050 0ef0 F091 0000 lds r31,(_printf_P)+1 |
2051 0ef4 0995 icall |
2052 0ef6 2DB7 in r18,__SP_L__ |
2053 0ef8 3EB7 in r19,__SP_H__ |
2054 0efa 285F subi r18,lo8(-(8)) |
2055 0efc 3F4F sbci r19,hi8(-(8)) |
2056 .L116: |
2057 0efe 2DBF out __SP_L__,r18 |
2058 0f00 00C0 rjmp .L20 |
2059 .L86: |
2060 0f02 1092 0000 sts DispPtr,__zero_reg__ |
2061 0f06 80E0 ldi r24,lo8(__c.57) |
2062 0f08 90E0 ldi r25,hi8(__c.57) |
2063 0f0a 9F93 push r25 |
2064 0f0c 8F93 push r24 |
2065 0f0e 70E0 ldi r23,lo8(pm(Menu_Putchar)) |
2066 0f10 A72E mov r10,r23 |
2067 0f12 70E0 ldi r23,hi8(pm(Menu_Putchar)) |
2068 0f14 B72E mov r11,r23 |
2069 0f16 DF92 push r13 |
2070 0f18 CF92 push r12 |
2071 0f1a FE01 movw r30,r28 |
2072 0f1c 0995 icall |
2073 0f1e 0F90 pop __tmp_reg__ |
2074 0f20 0F90 pop __tmp_reg__ |
2075 0f22 0F90 pop __tmp_reg__ |
2076 0f24 0F90 pop __tmp_reg__ |
2077 0f26 C0E0 ldi r28,lo8(Motor) |
2078 0f28 D0E0 ldi r29,hi8(Motor) |
2079 0f2a 00E0 ldi r16,lo8(0) |
2080 0f2c 10E0 ldi r17,hi8(0) |
2081 0f2e 62E0 ldi r22,lo8(2) |
2082 0f30 F62E mov r15,r22 |
2083 .L90: |
2084 0f32 802F mov r24,r16 |
2085 0f34 8C5E subi r24,lo8(-(20)) |
2086 0f36 8093 0000 sts DispPtr,r24 |
2087 0f3a 8B8D ldd r24,Y+27 |
2088 0f3c 9927 clr r25 |
2089 0f3e 8F77 andi r24,lo8(127) |
2090 0f40 9070 andi r25,hi8(127) |
2091 0f42 9F93 push r25 |
2092 0f44 8F93 push r24 |
2093 0f46 8B89 ldd r24,Y+19 |
2094 0f48 9927 clr r25 |
2095 0f4a 8F77 andi r24,lo8(127) |
2096 0f4c 9070 andi r25,hi8(127) |
2097 0f4e 9F93 push r25 |
2098 0f50 8F93 push r24 |
2099 0f52 8B85 ldd r24,Y+11 |
2100 0f54 9927 clr r25 |
2101 0f56 8F77 andi r24,lo8(127) |
2102 0f58 9070 andi r25,hi8(127) |
2103 0f5a 9F93 push r25 |
2104 0f5c 8F93 push r24 |
2105 0f5e 8B81 ldd r24,Y+3 |
2106 0f60 9927 clr r25 |
2107 0f62 8F77 andi r24,lo8(127) |
2108 0f64 9070 andi r25,hi8(127) |
2109 0f66 9F93 push r25 |
2110 0f68 8F93 push r24 |
2111 0f6a 80E0 ldi r24,lo8(__c.58) |
2112 0f6c 90E0 ldi r25,hi8(__c.58) |
2113 0f6e 9F93 push r25 |
2114 0f70 8F93 push r24 |
2115 0f72 BF92 push r11 |
2116 0f74 AF92 push r10 |
2117 0f76 E091 0000 lds r30,_printf_P |
2118 0f7a F091 0000 lds r31,(_printf_P)+1 |
2119 0f7e 0995 icall |
2120 0f80 8DB7 in r24,__SP_L__ |
2121 0f82 9EB7 in r25,__SP_H__ |
2122 0f84 0C96 adiw r24,12 |
2123 0f86 8DBF out __SP_L__,r24 |
2124 0f88 FA94 dec r15 |
2125 0f8a 0C5E subi r16,lo8(-(20)) |
2126 0f8c 1F4F sbci r17,hi8(-(20)) |
2127 0f8e A096 adiw r28,32 |
2128 0f90 F7FE sbrs r15,7 |
2129 0f92 00C0 rjmp .L90 |
2130 0f94 00C0 rjmp .L20 |
2131 .L91: |
2132 0f96 1092 0000 sts DispPtr,__zero_reg__ |
2133 0f9a 80E0 ldi r24,lo8(__c.59) |
2134 0f9c 90E0 ldi r25,hi8(__c.59) |
2135 0f9e 9F93 push r25 |
2136 0fa0 8F93 push r24 |
2137 0fa2 50E0 ldi r21,lo8(pm(Menu_Putchar)) |
2138 0fa4 A52E mov r10,r21 |
2139 0fa6 50E0 ldi r21,hi8(pm(Menu_Putchar)) |
2140 0fa8 B52E mov r11,r21 |
2141 0faa DF92 push r13 |
2142 0fac CF92 push r12 |
2143 0fae FE01 movw r30,r28 |
2144 0fb0 0995 icall |
2145 0fb2 0F90 pop __tmp_reg__ |
2146 0fb4 0F90 pop __tmp_reg__ |
2147 0fb6 0F90 pop __tmp_reg__ |
2148 0fb8 0F90 pop __tmp_reg__ |
2149 0fba C0E0 ldi r28,lo8(Motor) |
2150 0fbc D0E0 ldi r29,hi8(Motor) |
2151 0fbe 00E0 ldi r16,lo8(0) |
2152 0fc0 10E0 ldi r17,hi8(0) |
2153 0fc2 42E0 ldi r20,lo8(2) |
2154 0fc4 F42E mov r15,r20 |
2155 .L95: |
2156 0fc6 802F mov r24,r16 |
2157 0fc8 8C5E subi r24,lo8(-(20)) |
2158 0fca 8093 0000 sts DispPtr,r24 |
2159 0fce 8F8D ldd r24,Y+31 |
2160 0fd0 9927 clr r25 |
2161 0fd2 87FD sbrc r24,7 |
2162 0fd4 9095 com r25 |
2163 0fd6 9F93 push r25 |
2164 0fd8 8F93 push r24 |
2165 0fda 8F89 ldd r24,Y+23 |
2166 0fdc 9927 clr r25 |
2167 0fde 87FD sbrc r24,7 |
2168 0fe0 9095 com r25 |
2169 0fe2 9F93 push r25 |
2170 0fe4 8F93 push r24 |
2171 0fe6 8F85 ldd r24,Y+15 |
2172 0fe8 9927 clr r25 |
2173 0fea 87FD sbrc r24,7 |
2174 0fec 9095 com r25 |
2175 0fee 9F93 push r25 |
2176 0ff0 8F93 push r24 |
2177 0ff2 8F81 ldd r24,Y+7 |
2178 0ff4 9927 clr r25 |
2179 0ff6 87FD sbrc r24,7 |
2180 0ff8 9095 com r25 |
2181 0ffa 9F93 push r25 |
2182 0ffc 8F93 push r24 |
2183 0ffe 80E0 ldi r24,lo8(__c.60) |
2184 1000 90E0 ldi r25,hi8(__c.60) |
2185 1002 9F93 push r25 |
2186 1004 8F93 push r24 |
2187 1006 BF92 push r11 |
2188 1008 AF92 push r10 |
2189 100a E091 0000 lds r30,_printf_P |
2190 100e F091 0000 lds r31,(_printf_P)+1 |
2191 1012 0995 icall |
2192 1014 EDB7 in r30,__SP_L__ |
2193 1016 FEB7 in r31,__SP_H__ |
2194 1018 3C96 adiw r30,12 |
2195 101a EDBF out __SP_L__,r30 |
2196 101c FA94 dec r15 |
2197 101e 0C5E subi r16,lo8(-(20)) |
2198 1020 1F4F sbci r17,hi8(-(20)) |
2199 1022 A096 adiw r28,32 |
2200 1024 F7FE sbrs r15,7 |
2201 1026 00C0 rjmp .L95 |
2202 1028 00C0 rjmp .L20 |
2203 .L96: |
2204 102a 1092 0000 sts DispPtr,__zero_reg__ |
2205 102e 80E0 ldi r24,lo8(__c.61) |
2206 1030 90E0 ldi r25,hi8(__c.61) |
2207 1032 9F93 push r25 |
2208 1034 8F93 push r24 |
2209 1036 00E0 ldi r16,lo8(pm(Menu_Putchar)) |
2210 1038 10E0 ldi r17,hi8(pm(Menu_Putchar)) |
2211 103a DF92 push r13 |
2212 103c CF92 push r12 |
2213 103e FE01 movw r30,r28 |
2214 1040 0995 icall |
2215 1042 84E1 ldi r24,lo8(20) |
2216 1044 8093 0000 sts DispPtr,r24 |
2217 1048 0F90 pop __tmp_reg__ |
2218 104a 0F90 pop __tmp_reg__ |
2219 104c 0F90 pop __tmp_reg__ |
2220 104e 0F90 pop __tmp_reg__ |
2221 1050 8091 0000 lds r24,Motor+27 |
2222 1054 881F rol r24 |
2223 1056 8827 clr r24 |
2224 1058 881F rol r24 |
2225 105a 97E0 ldi r25,lo8(7) |
2226 105c 899F mul r24,r25 |
2227 105e C001 movw r24,r0 |
2228 1060 1124 clr r1 |
2229 1062 8D96 adiw r24,45 |
2230 1064 9F93 push r25 |
2231 1066 8F93 push r24 |
2232 1068 8091 0000 lds r24,Motor+19 |
2233 106c 881F rol r24 |
2234 106e 8827 clr r24 |
2235 1070 881F rol r24 |
2236 1072 96E0 ldi r25,lo8(6) |
2237 1074 899F mul r24,r25 |
2238 1076 C001 movw r24,r0 |
2239 1078 1124 clr r1 |
2240 107a 8D96 adiw r24,45 |
2241 107c 9F93 push r25 |
2242 107e 8F93 push r24 |
2243 1080 8091 0000 lds r24,Motor+11 |
2244 1084 881F rol r24 |
2245 1086 8827 clr r24 |
2246 1088 881F rol r24 |
2247 108a 95E0 ldi r25,lo8(5) |
2248 108c 899F mul r24,r25 |
2249 108e C001 movw r24,r0 |
2250 1090 1124 clr r1 |
2251 1092 8D96 adiw r24,45 |
2252 1094 9F93 push r25 |
2253 1096 8F93 push r24 |
2254 1098 8091 0000 lds r24,Motor+3 |
2255 109c 881F rol r24 |
2256 109e 8827 clr r24 |
2257 10a0 881F rol r24 |
2258 10a2 9927 clr r25 |
2259 10a4 880F lsl r24 |
2260 10a6 991F rol r25 |
2261 10a8 880F lsl r24 |
2262 10aa 991F rol r25 |
2263 10ac 8D96 adiw r24,45 |
2264 10ae 9F93 push r25 |
2265 10b0 8F93 push r24 |
2266 10b2 80E0 ldi r24,lo8(__c.62) |
2267 10b4 90E0 ldi r25,hi8(__c.62) |
2268 10b6 9F93 push r25 |
2269 10b8 8F93 push r24 |
2270 10ba DF92 push r13 |
2271 10bc CF92 push r12 |
2272 10be E091 0000 lds r30,_printf_P |
2273 10c2 F091 0000 lds r31,(_printf_P)+1 |
2274 10c6 0995 icall |
2275 10c8 88E2 ldi r24,lo8(40) |
2276 10ca 8093 0000 sts DispPtr,r24 |
2277 10ce 2DB7 in r18,__SP_L__ |
2278 10d0 3EB7 in r19,__SP_H__ |
2279 10d2 245F subi r18,lo8(-(12)) |
2280 10d4 3F4F sbci r19,hi8(-(12)) |
2281 10d6 2DBF out __SP_L__,r18 |
2282 10d8 8091 0000 lds r24,Motor+59 |
2283 10dc 881F rol r24 |
2284 10de 8827 clr r24 |
2285 10e0 881F rol r24 |
2286 10e2 9BE0 ldi r25,lo8(11) |
2287 10e4 899F mul r24,r25 |
2288 10e6 C001 movw r24,r0 |
2289 10e8 1124 clr r1 |
2290 10ea 8D96 adiw r24,45 |
2291 10ec 9F93 push r25 |
2292 10ee 8F93 push r24 |
2293 10f0 8091 0000 lds r24,Motor+51 |
2294 10f4 881F rol r24 |
2295 10f6 8827 clr r24 |
2296 10f8 881F rol r24 |
2297 10fa 9AE0 ldi r25,lo8(10) |
2298 10fc 899F mul r24,r25 |
2299 10fe C001 movw r24,r0 |
2300 1100 1124 clr r1 |
2301 1102 8D96 adiw r24,45 |
2302 1104 9F93 push r25 |
2303 1106 8F93 push r24 |
2304 1108 8091 0000 lds r24,Motor+43 |
2305 110c 881F rol r24 |
2306 110e 8827 clr r24 |
2307 1110 881F rol r24 |
2308 1112 99E0 ldi r25,lo8(9) |
2309 1114 899F mul r24,r25 |
2310 1116 C001 movw r24,r0 |
2311 1118 1124 clr r1 |
2312 111a 8D96 adiw r24,45 |
2313 111c 9F93 push r25 |
2314 111e 8F93 push r24 |
2315 1120 8091 0000 lds r24,Motor+35 |
2316 1124 881F rol r24 |
2317 1126 8827 clr r24 |
2318 1128 881F rol r24 |
2319 112a 9927 clr r25 |
2320 112c 23E0 ldi r18,3 |
2321 112e 880F 1: lsl r24 |
2322 1130 991F rol r25 |
2323 1132 2A95 dec r18 |
2324 1134 01F4 brne 1b |
2325 1136 8D96 adiw r24,45 |
2326 1138 9F93 push r25 |
2327 113a 8F93 push r24 |
2328 113c 80E0 ldi r24,lo8(__c.63) |
2329 113e 90E0 ldi r25,hi8(__c.63) |
2330 1140 9F93 push r25 |
2331 1142 8F93 push r24 |
2332 1144 DF92 push r13 |
2333 1146 CF92 push r12 |
2334 1148 E091 0000 lds r30,_printf_P |
2335 114c F091 0000 lds r31,(_printf_P)+1 |
2336 1150 0995 icall |
2337 1152 8CE3 ldi r24,lo8(60) |
2338 1154 8093 0000 sts DispPtr,r24 |
2339 1158 8DB7 in r24,__SP_L__ |
2340 115a 9EB7 in r25,__SP_H__ |
2341 115c 0C96 adiw r24,12 |
2342 115e 8DBF out __SP_L__,r24 |
2343 1160 8091 0000 lds r24,Motor+67 |
2344 1164 881F rol r24 |
2345 1166 8827 clr r24 |
2346 1168 881F rol r24 |
2347 116a 9CE0 ldi r25,lo8(12) |
2348 116c 899F mul r24,r25 |
2349 116e C001 movw r24,r0 |
2350 1170 1124 clr r1 |
2351 1172 8D96 adiw r24,45 |
2352 1174 9F93 push r25 |
2353 1176 8F93 push r24 |
2354 1178 80E0 ldi r24,lo8(__c.64) |
2355 117a 90E0 ldi r25,hi8(__c.64) |
2356 117c 9F93 push r25 |
2357 117e 8F93 push r24 |
2358 1180 DF92 push r13 |
2359 1182 CF92 push r12 |
2360 1184 E091 0000 lds r30,_printf_P |
2361 1188 F091 0000 lds r31,(_printf_P)+1 |
2362 118c 0995 icall |
2363 118e 8091 0000 lds r24,Motor+75 |
2364 1192 EDB7 in r30,__SP_L__ |
2365 1194 FEB7 in r31,__SP_H__ |
2366 1196 3696 adiw r30,6 |
2367 1198 EDBF out __SP_L__,r30 |
2368 119a 87FF sbrs r24,7 |
2369 119c 00C0 rjmp .L97 |
2370 119e 80E4 ldi r24,lo8(64) |
2371 11a0 8093 0000 sts DispPtr,r24 |
2372 11a4 80E0 ldi r24,lo8(__c.65) |
2373 11a6 90E0 ldi r25,hi8(__c.65) |
2374 11a8 9F93 push r25 |
2375 11aa 8F93 push r24 |
2376 11ac DF92 push r13 |
2377 11ae CF92 push r12 |
2378 11b0 E091 0000 lds r30,_printf_P |
2379 11b4 F091 0000 lds r31,(_printf_P)+1 |
2380 11b8 0995 icall |
2381 11ba 0F90 pop __tmp_reg__ |
2382 11bc 0F90 pop __tmp_reg__ |
2383 11be 0F90 pop __tmp_reg__ |
2384 11c0 0F90 pop __tmp_reg__ |
2385 .L97: |
2386 11c2 8091 0000 lds r24,Motor+83 |
2387 11c6 87FF sbrs r24,7 |
2388 11c8 00C0 rjmp .L98 |
2389 11ca 84E4 ldi r24,lo8(68) |
2390 11cc 8093 0000 sts DispPtr,r24 |
2391 11d0 80E0 ldi r24,lo8(__c.66) |
2392 11d2 90E0 ldi r25,hi8(__c.66) |
2393 11d4 9F93 push r25 |
2394 11d6 8F93 push r24 |
2395 11d8 1F93 push r17 |
2396 11da 0F93 push r16 |
2397 11dc E091 0000 lds r30,_printf_P |
2398 11e0 F091 0000 lds r31,(_printf_P)+1 |
2399 11e4 0995 icall |
2400 11e6 0F90 pop __tmp_reg__ |
2401 11e8 0F90 pop __tmp_reg__ |
2402 11ea 0F90 pop __tmp_reg__ |
2403 11ec 0F90 pop __tmp_reg__ |
2404 .L98: |
2405 11ee 8091 0000 lds r24,Motor+91 |
2406 11f2 87FF sbrs r24,7 |
2407 11f4 00C0 rjmp .L20 |
2408 11f6 88E4 ldi r24,lo8(72) |
2409 11f8 8093 0000 sts DispPtr,r24 |
2410 11fc 80E0 ldi r24,lo8(__c.67) |
2411 11fe 90E0 ldi r25,hi8(__c.67) |
2412 .L125: |
2413 1200 9F93 push r25 |
2414 1202 8F93 push r24 |
2415 1204 1F93 push r17 |
2416 1206 0F93 push r16 |
2417 .L118: |
2418 1208 E091 0000 lds r30,_printf_P |
2419 120c F091 0000 lds r31,(_printf_P)+1 |
2420 1210 0995 icall |
2421 1212 0F90 pop __tmp_reg__ |
2422 1214 0F90 pop __tmp_reg__ |
2423 1216 0F90 pop __tmp_reg__ |
2424 1218 0F90 pop __tmp_reg__ |
2425 121a 00C0 rjmp .L20 |
2426 .L100: |
2427 121c 1092 0000 sts DispPtr,__zero_reg__ |
2428 1220 80E0 ldi r24,lo8(__c.68) |
2429 1222 90E0 ldi r25,hi8(__c.68) |
2430 1224 9F93 push r25 |
2431 1226 8F93 push r24 |
2432 1228 DF92 push r13 |
2433 122a CF92 push r12 |
2434 122c FE01 movw r30,r28 |
2435 122e 0995 icall |
2436 1230 84E1 ldi r24,lo8(20) |
2437 1232 8093 0000 sts DispPtr,r24 |
2438 1236 0F90 pop __tmp_reg__ |
2439 1238 0F90 pop __tmp_reg__ |
2440 123a 0F90 pop __tmp_reg__ |
2441 123c 0F90 pop __tmp_reg__ |
2442 123e 8091 0000 lds r24,FlugMinutenGesamt |
2443 1242 9091 0000 lds r25,(FlugMinutenGesamt)+1 |
2444 1246 9F93 push r25 |
2445 1248 8F93 push r24 |
2446 124a 80E0 ldi r24,lo8(__c.69) |
2447 124c 90E0 ldi r25,hi8(__c.69) |
2448 124e 9F93 push r25 |
2449 1250 8F93 push r24 |
2450 1252 DF92 push r13 |
2451 1254 CF92 push r12 |
2452 1256 E091 0000 lds r30,_printf_P |
2453 125a F091 0000 lds r31,(_printf_P)+1 |
2454 125e 0995 icall |
2455 1260 88E2 ldi r24,lo8(40) |
2456 1262 8093 0000 sts DispPtr,r24 |
2457 1266 2DB7 in r18,__SP_L__ |
2458 1268 3EB7 in r19,__SP_H__ |
2459 126a 2A5F subi r18,lo8(-(6)) |
2460 126c 3F4F sbci r19,hi8(-(6)) |
2461 126e 2DBF out __SP_L__,r18 |
2462 1270 8091 0000 lds r24,FlugMinuten |
2463 1274 9091 0000 lds r25,(FlugMinuten)+1 |
2464 1278 9F93 push r25 |
2465 127a 8F93 push r24 |
2466 127c 80E0 ldi r24,lo8(__c.70) |
2467 127e 90E0 ldi r25,hi8(__c.70) |
2468 1280 9F93 push r25 |
2469 1282 8F93 push r24 |
2470 1284 DF92 push r13 |
2471 1286 CF92 push r12 |
2472 1288 E091 0000 lds r30,_printf_P |
2473 128c F091 0000 lds r31,(_printf_P)+1 |
2474 1290 0995 icall |
2475 1292 89E4 ldi r24,lo8(73) |
2476 1294 8093 0000 sts DispPtr,r24 |
2477 1298 8DB7 in r24,__SP_L__ |
2478 129a 9EB7 in r25,__SP_H__ |
2479 129c 0696 adiw r24,6 |
2480 129e 8DBF out __SP_L__,r24 |
2481 12a0 80E0 ldi r24,lo8(__c.71) |
2482 12a2 90E0 ldi r25,hi8(__c.71) |
2483 12a4 9F93 push r25 |
2484 12a6 8F93 push r24 |
2485 12a8 DF92 push r13 |
2486 12aa CF92 push r12 |
2487 12ac E091 0000 lds r30,_printf_P |
2488 12b0 F091 0000 lds r31,(_printf_P)+1 |
2489 12b4 0995 icall |
2490 12b6 8091 0000 lds r24,RemoteKeys |
2491 12ba 0F90 pop __tmp_reg__ |
2492 12bc 0F90 pop __tmp_reg__ |
2493 12be 0F90 pop __tmp_reg__ |
2494 12c0 0F90 pop __tmp_reg__ |
2495 12c2 83FF sbrs r24,3 |
2496 12c4 00C0 rjmp .L20 |
2497 12c6 1092 0000 sts (FlugMinuten)+1,__zero_reg__ |
2498 12ca 1092 0000 sts FlugMinuten,__zero_reg__ |
2499 12ce 60E0 ldi r22,lo8(0) |
2500 12d0 70E0 ldi r23,hi8(0) |
2501 12d2 8EE0 ldi r24,lo8(14) |
2502 12d4 90E0 ldi r25,hi8(14) |
2503 12d6 0E94 0000 call SetParamWord |
2504 12da 00C0 rjmp .L20 |
2505 .L102: |
2506 12dc 8091 0000 lds r24,MaxMenue |
2507 12e0 2817 cp r18,r24 |
2508 12e2 01F4 brne .L103 |
2509 12e4 2150 subi r18,lo8(-(-1)) |
2510 12e6 2093 0000 sts MaxMenue,r18 |
2511 .L103: |
2512 12ea 1092 0000 sts MenuePunkt,__zero_reg__ |
2513 .L20: |
2514 12ee 1092 0000 sts RemoteKeys,__zero_reg__ |
2515 /* epilogue: frame size=0 */ |
2516 12f2 DF91 pop r29 |
2517 12f4 CF91 pop r28 |
2518 12f6 1F91 pop r17 |
2519 12f8 0F91 pop r16 |
2520 12fa FF90 pop r15 |
2521 12fc DF90 pop r13 |
2522 12fe CF90 pop r12 |
2523 1300 BF90 pop r11 |
2524 1302 AF90 pop r10 |
2525 1304 0895 ret |
2526 /* epilogue end (size=10) */ |
2527 /* function Menu size 2447 (2428) */ |
2529 .comm DisplayBuff,80,1 |
2530 /* File "menu.c": code 2469 = 0x09a5 (2449), prologues 9, epilogues 11 */ |
DEFINED SYMBOLS |
*ABS*:00000000 menu.c |
C:\Temp/ccvGmRUy.s:3 *ABS*:0000003f __SREG__ |
C:\Temp/ccvGmRUy.s:4 *ABS*:0000003e __SP_H__ |
C:\Temp/ccvGmRUy.s:5 *ABS*:0000003d __SP_L__ |
C:\Temp/ccvGmRUy.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Temp/ccvGmRUy.s:7 *ABS*:00000001 __zero_reg__ |
C:\Temp/ccvGmRUy.s:15 .bss:00000000 RemoteKeys |
C:\Temp/ccvGmRUy.s:21 .bss:00000001 MenuePunkt |
C:\Temp/ccvGmRUy.s:27 .data:00000000 MaxMenue |
C:\Temp/ccvGmRUy.s:34 .bss:00000002 DispPtr |
C:\Temp/ccvGmRUy.s:39 .text:00000000 LcdClear |
*COM*:00000050 DisplayBuff |
C:\Temp/ccvGmRUy.s:58 .text:00000012 Menu_Putchar |
C:\Temp/ccvGmRUy.s:81 .progmem.data:00000000 __c.0 |
C:\Temp/ccvGmRUy.s:85 .progmem.data:00000005 __c.1 |
C:\Temp/ccvGmRUy.s:89 .progmem.data:0000000a __c.2 |
C:\Temp/ccvGmRUy.s:93 .progmem.data:0000001a __c.3 |
C:\Temp/ccvGmRUy.s:97 .progmem.data:00000032 __c.4 |
C:\Temp/ccvGmRUy.s:101 .progmem.data:00000040 __c.5 |
C:\Temp/ccvGmRUy.s:105 .progmem.data:0000004d __c.6 |
C:\Temp/ccvGmRUy.s:109 .progmem.data:00000055 __c.7 |
C:\Temp/ccvGmRUy.s:113 .progmem.data:0000006c __c.8 |
C:\Temp/ccvGmRUy.s:117 .progmem.data:00000081 __c.9 |
C:\Temp/ccvGmRUy.s:121 .progmem.data:0000008e __c.10 |
C:\Temp/ccvGmRUy.s:125 .progmem.data:0000009b __c.11 |
C:\Temp/ccvGmRUy.s:129 .progmem.data:000000a8 __c.12 |
C:\Temp/ccvGmRUy.s:133 .progmem.data:000000b5 __c.13 |
C:\Temp/ccvGmRUy.s:137 .progmem.data:000000c2 __c.14 |
C:\Temp/ccvGmRUy.s:141 .progmem.data:000000d1 __c.15 |
C:\Temp/ccvGmRUy.s:145 .progmem.data:000000da __c.16 |
C:\Temp/ccvGmRUy.s:149 .progmem.data:000000e7 __c.17 |
C:\Temp/ccvGmRUy.s:153 .progmem.data:000000f6 __c.18 |
C:\Temp/ccvGmRUy.s:157 .progmem.data:00000105 __c.19 |
C:\Temp/ccvGmRUy.s:161 .progmem.data:00000114 __c.20 |
C:\Temp/ccvGmRUy.s:165 .progmem.data:00000126 __c.21 |
C:\Temp/ccvGmRUy.s:169 .progmem.data:00000136 __c.22 |
C:\Temp/ccvGmRUy.s:173 .progmem.data:00000146 __c.23 |
C:\Temp/ccvGmRUy.s:177 .progmem.data:00000156 __c.24 |
C:\Temp/ccvGmRUy.s:181 .progmem.data:00000166 __c.25 |
C:\Temp/ccvGmRUy.s:185 .progmem.data:00000174 __c.26 |
C:\Temp/ccvGmRUy.s:189 .progmem.data:00000185 __c.27 |
C:\Temp/ccvGmRUy.s:193 .progmem.data:00000196 __c.28 |
C:\Temp/ccvGmRUy.s:197 .progmem.data:000001a4 __c.29 |
C:\Temp/ccvGmRUy.s:201 .progmem.data:000001b6 __c.30 |
C:\Temp/ccvGmRUy.s:205 .progmem.data:000001c8 __c.31 |
C:\Temp/ccvGmRUy.s:209 .progmem.data:000001d7 __c.32 |
C:\Temp/ccvGmRUy.s:213 .progmem.data:000001eb __c.33 |
C:\Temp/ccvGmRUy.s:217 .progmem.data:000001ff __c.34 |
C:\Temp/ccvGmRUy.s:221 .progmem.data:00000213 __c.35 |
C:\Temp/ccvGmRUy.s:225 .progmem.data:00000220 __c.36 |
C:\Temp/ccvGmRUy.s:229 .progmem.data:0000022f __c.37 |
C:\Temp/ccvGmRUy.s:233 .progmem.data:0000023e __c.38 |
C:\Temp/ccvGmRUy.s:237 .progmem.data:0000024d __c.39 |
C:\Temp/ccvGmRUy.s:241 .progmem.data:00000261 __c.40 |
C:\Temp/ccvGmRUy.s:245 .progmem.data:00000275 __c.41 |
C:\Temp/ccvGmRUy.s:249 .progmem.data:00000285 __c.42 |
C:\Temp/ccvGmRUy.s:253 .progmem.data:00000297 __c.43 |
C:\Temp/ccvGmRUy.s:257 .progmem.data:000002a0 __c.44 |
C:\Temp/ccvGmRUy.s:261 .progmem.data:000002b0 __c.45 |
C:\Temp/ccvGmRUy.s:265 .progmem.data:000002c0 __c.46 |
C:\Temp/ccvGmRUy.s:269 .progmem.data:000002d0 __c.47 |
C:\Temp/ccvGmRUy.s:273 .progmem.data:000002d8 __c.48 |
C:\Temp/ccvGmRUy.s:277 .progmem.data:000002e6 __c.49 |
C:\Temp/ccvGmRUy.s:281 .progmem.data:000002f4 __c.50 |
C:\Temp/ccvGmRUy.s:285 .progmem.data:00000302 __c.51 |
C:\Temp/ccvGmRUy.s:289 .progmem.data:0000030f __c.52 |
C:\Temp/ccvGmRUy.s:293 .progmem.data:0000031c __c.53 |
C:\Temp/ccvGmRUy.s:297 .progmem.data:00000324 __c.54 |
C:\Temp/ccvGmRUy.s:301 .progmem.data:00000332 __c.55 |
C:\Temp/ccvGmRUy.s:305 .progmem.data:00000340 __c.56 |
C:\Temp/ccvGmRUy.s:309 .progmem.data:0000034e __c.57 |
C:\Temp/ccvGmRUy.s:313 .progmem.data:0000035e __c.58 |
C:\Temp/ccvGmRUy.s:317 .progmem.data:0000036f __c.59 |
C:\Temp/ccvGmRUy.s:321 .progmem.data:0000037e __c.60 |
C:\Temp/ccvGmRUy.s:325 .progmem.data:0000038f __c.61 |
C:\Temp/ccvGmRUy.s:329 .progmem.data:0000039e __c.62 |
C:\Temp/ccvGmRUy.s:333 .progmem.data:000003b2 __c.63 |
C:\Temp/ccvGmRUy.s:337 .progmem.data:000003c6 __c.64 |
C:\Temp/ccvGmRUy.s:341 .progmem.data:000003d7 __c.65 |
C:\Temp/ccvGmRUy.s:345 .progmem.data:000003da __c.66 |
C:\Temp/ccvGmRUy.s:349 .progmem.data:000003dd __c.67 |
C:\Temp/ccvGmRUy.s:353 .progmem.data:000003e0 __c.68 |
C:\Temp/ccvGmRUy.s:357 .progmem.data:000003ee __c.69 |
C:\Temp/ccvGmRUy.s:361 .progmem.data:000003fb __c.70 |
C:\Temp/ccvGmRUy.s:365 .progmem.data:00000408 __c.71 |
C:\Temp/ccvGmRUy.s:370 .text:0000002c Menu |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
_printf_P |
__tablejump2__ |
PlatinenVersion |
__udivmodqi4 |
Mixer |
GetActiveParamSet |
VersionInfo |
NC_ErrorCode |
NC_ERROR_TEXT |
MissingMotor |
I2CTimeout |
Parameter_GlobalConfig |
HoehenWert |
__divmodsi4 |
SollHoehe |
MessLuftdruck |
IntegralNick |
IntegralRoll |
ErsatzKompassInGrad |
PPM_in |
EE_Parameter |
AdNeutralNick |
AdWertNick |
AdNeutralRoll |
AdWertRoll |
AdNeutralGier |
AdWertGier |
AnalogOffsetNick |
AnalogOffsetRoll |
AnalogOffsetGier |
NeutralAccX |
AdWertAccNick |
NeutralAccY |
AdWertAccRoll |
NeutralAccZ |
AdWertAccHoch |
UBat |
__divmodhi4 |
Capacity |
__udivmodhi4 |
SenderOkay |
Channels |
KompassValue |
KompassSollWert |
Poti |
Parameter_ServoNickControl |
ServoNickValue |
Motor |
FlugMinutenGesamt |
FlugMinuten |
SetParamWord |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/mymath.c |
---|
0,0 → 1,41 |
#include <stdlib.h> |
#include <avr/pgmspace.h> |
#include "mymath.h" |
// discrete mathematics |
// Sinus with argument in degree at an angular resolution of 1 degree and a discretisation of 13 bit. |
const uint16_t pgm_sinlookup[91] PROGMEM = {0, 143, 286, 429, 571, 714, 856, 998, 1140, 1282, 1423, 1563, 1703, 1843, 1982, 2120, 2258, 2395, 2531, 2667, 2802, 2936, 3069, 3201, 3332, 3462, 3591, 3719, 3846, 3972, 4096, 4219, 4341, 4462, 4581, 4699, 4815, 4930, 5043, 5155, 5266, 5374, 5482, 5587, 5691, 5793, 5893, 5991, 6088, 6183, 6275, 6366, 6455, 6542, 6627, 6710, 6791, 6870, 6947, 7022, 7094, 7165, 7233, 7299, 7363, 7424, 7484, 7541, 7595, 7648, 7698, 7746, 7791, 7834, 7875, 7913, 7949, 7982, 8013, 8041, 8068, 8091, 8112, 8131, 8147, 8161, 8172, 8181, 8187, 8191, 8192}; |
int16_t c_sin_8192(int16_t angle) |
{ |
int8_t m,n; |
int16_t sinus; |
// avoid negative angles |
if (angle < 0) |
{ |
m = -1; |
angle = abs(angle); |
} |
else m = +1; |
// fold angle to intervall 0 to 359 |
angle %= 360; |
// check quadrant |
if (angle <= 90) n=1; // first quadrant |
else if ((angle > 90) && (angle <= 180)) {angle = 180 - angle; n = 1;} // second quadrant |
else if ((angle > 180) && (angle <= 270)) {angle = angle - 180; n = -1;} // third quadrant |
else {angle = 360 - angle; n = -1;} //fourth quadrant |
// get lookup value |
sinus = pgm_read_word(&pgm_sinlookup[angle]); |
// calculate sinus value |
return (sinus * m * n); |
} |
// Cosinus with argument in degree at an angular resolution of 1 degree and a discretisation of 13 bit. |
int16_t c_cos_8192(int16_t angle) |
{ |
return (c_sin_8192(90 - angle)); |
} |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/mymath.h |
---|
0,0 → 1,10 |
#ifndef _MYMATH_H |
#define _MYMATH_H |
#include <inttypes.h> |
extern int16_t c_sin_8192(int16_t angle); |
extern int16_t c_cos_8192(int16_t angle); |
extern int16_t c_atan2(int16_t y, int16_t x); |
extern uint32_t c_sqrt(uint32_t a); |
#endif // _MYMATH_H |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/mymath.lst |
---|
0,0 → 1,226 |
1 .file "mymath.c" |
2 .arch atmega1284p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .global pgm_sinlookup |
11 .section .progmem.data,"a",@progbits |
14 pgm_sinlookup: |
15 0000 0000 .word 0 |
16 0002 8F00 .word 143 |
17 0004 1E01 .word 286 |
18 0006 AD01 .word 429 |
19 0008 3B02 .word 571 |
20 000a CA02 .word 714 |
21 000c 5803 .word 856 |
22 000e E603 .word 998 |
23 0010 7404 .word 1140 |
24 0012 0205 .word 1282 |
25 0014 8F05 .word 1423 |
26 0016 1B06 .word 1563 |
27 0018 A706 .word 1703 |
28 001a 3307 .word 1843 |
29 001c BE07 .word 1982 |
30 001e 4808 .word 2120 |
31 0020 D208 .word 2258 |
32 0022 5B09 .word 2395 |
33 0024 E309 .word 2531 |
34 0026 6B0A .word 2667 |
35 0028 F20A .word 2802 |
36 002a 780B .word 2936 |
37 002c FD0B .word 3069 |
38 002e 810C .word 3201 |
39 0030 040D .word 3332 |
40 0032 860D .word 3462 |
41 0034 070E .word 3591 |
42 0036 870E .word 3719 |
43 0038 060F .word 3846 |
44 003a 840F .word 3972 |
45 003c 0010 .word 4096 |
46 003e 7B10 .word 4219 |
47 0040 F510 .word 4341 |
48 0042 6E11 .word 4462 |
49 0044 E511 .word 4581 |
50 0046 5B12 .word 4699 |
51 0048 CF12 .word 4815 |
52 004a 4213 .word 4930 |
53 004c B313 .word 5043 |
54 004e 2314 .word 5155 |
55 0050 9214 .word 5266 |
56 0052 FE14 .word 5374 |
57 0054 6A15 .word 5482 |
58 0056 D315 .word 5587 |
59 0058 3B16 .word 5691 |
60 005a A116 .word 5793 |
61 005c 0517 .word 5893 |
62 005e 6717 .word 5991 |
63 0060 C817 .word 6088 |
64 0062 2718 .word 6183 |
65 0064 8318 .word 6275 |
66 0066 DE18 .word 6366 |
67 0068 3719 .word 6455 |
68 006a 8E19 .word 6542 |
69 006c E319 .word 6627 |
70 006e 361A .word 6710 |
71 0070 871A .word 6791 |
72 0072 D61A .word 6870 |
73 0074 231B .word 6947 |
74 0076 6E1B .word 7022 |
75 0078 B61B .word 7094 |
76 007a FD1B .word 7165 |
77 007c 411C .word 7233 |
78 007e 831C .word 7299 |
79 0080 C31C .word 7363 |
80 0082 001D .word 7424 |
81 0084 3C1D .word 7484 |
82 0086 751D .word 7541 |
83 0088 AB1D .word 7595 |
84 008a E01D .word 7648 |
85 008c 121E .word 7698 |
86 008e 421E .word 7746 |
87 0090 6F1E .word 7791 |
88 0092 9A1E .word 7834 |
89 0094 C31E .word 7875 |
90 0096 E91E .word 7913 |
91 0098 0D1F .word 7949 |
92 009a 2E1F .word 7982 |
93 009c 4D1F .word 8013 |
94 009e 691F .word 8041 |
95 00a0 841F .word 8068 |
96 00a2 9B1F .word 8091 |
97 00a4 B01F .word 8112 |
98 00a6 C31F .word 8131 |
99 00a8 D31F .word 8147 |
100 00aa E11F .word 8161 |
101 00ac EC1F .word 8172 |
102 00ae F51F .word 8181 |
103 00b0 FB1F .word 8187 |
104 00b2 FF1F .word 8191 |
105 00b4 0020 .word 8192 |
106 .text |
107 .global c_sin_8192 |
109 c_sin_8192: |
110 /* prologue: frame size=0 */ |
111 0000 CF93 push r28 |
112 /* prologue end (size=1) */ |
113 0002 FC01 movw r30,r24 |
114 0004 97FF sbrs r25,7 |
115 0006 00C0 rjmp .L2 |
116 0008 CFEF ldi r28,lo8(-1) |
117 000a F095 com r31 |
118 000c E195 neg r30 |
119 000e FF4F sbci r31,lo8(-1) |
120 0010 00C0 rjmp .L4 |
121 .L2: |
122 0012 C1E0 ldi r28,lo8(1) |
123 .L4: |
124 0014 28E6 ldi r18,lo8(360) |
125 0016 31E0 ldi r19,hi8(360) |
126 0018 CF01 movw r24,r30 |
127 001a B901 movw r22,r18 |
128 001c 0E94 0000 call __divmodhi4 |
129 0020 FC01 movw r30,r24 |
130 0022 8B35 cpi r24,91 |
131 0024 9105 cpc r25,__zero_reg__ |
132 0026 04F0 brlt .L12 |
133 0028 8B55 subi r24,lo8(-(-91)) |
134 002a 9040 sbci r25,hi8(-(-91)) |
135 002c 8A35 cpi r24,90 |
136 002e 9105 cpc r25,__zero_reg__ |
137 0030 00F4 brsh .L7 |
138 0032 84EB ldi r24,lo8(180) |
139 0034 90E0 ldi r25,hi8(180) |
140 0036 8E1B sub r24,r30 |
141 0038 9F0B sbc r25,r31 |
142 003a FC01 movw r30,r24 |
143 .L12: |
144 003c 41E0 ldi r20,lo8(1) |
145 003e 00C0 rjmp .L6 |
146 .L7: |
147 0040 CF01 movw r24,r30 |
148 0042 855B subi r24,lo8(-(-181)) |
149 0044 9040 sbci r25,hi8(-(-181)) |
150 0046 8A35 cpi r24,90 |
151 0048 9105 cpc r25,__zero_reg__ |
152 004a 00F4 brsh .L9 |
153 004c E45B subi r30,lo8(-(-180)) |
154 004e F040 sbci r31,hi8(-(-180)) |
155 0050 00C0 rjmp .L11 |
156 .L9: |
157 0052 2E1B sub r18,r30 |
158 0054 3F0B sbc r19,r31 |
159 0056 F901 movw r30,r18 |
160 .L11: |
161 0058 4FEF ldi r20,lo8(-1) |
162 .L6: |
163 005a EE0F add r30,r30 |
164 005c FF1F adc r31,r31 |
165 005e E050 subi r30,lo8(-(pgm_sinlookup)) |
166 0060 F040 sbci r31,hi8(-(pgm_sinlookup)) |
167 /* #APP */ |
168 0062 2591 lpm r18, Z+ |
169 0064 3491 lpm r19, Z |
170 |
171 /* #NOAPP */ |
172 0066 8C2F mov r24,r28 |
173 0068 9927 clr r25 |
174 006a 87FD sbrc r24,7 |
175 006c 9095 com r25 |
176 006e 289F mul r18,r24 |
177 0070 B001 movw r22,r0 |
178 0072 299F mul r18,r25 |
179 0074 700D add r23,r0 |
180 0076 389F mul r19,r24 |
181 0078 700D add r23,r0 |
182 007a 1124 clr r1 |
183 007c 842F mov r24,r20 |
184 007e 9927 clr r25 |
185 0080 87FD sbrc r24,7 |
186 0082 9095 com r25 |
187 0084 689F mul r22,r24 |
188 0086 A001 movw r20,r0 |
189 0088 699F mul r22,r25 |
190 008a 500D add r21,r0 |
191 008c 789F mul r23,r24 |
192 008e 500D add r21,r0 |
193 0090 1124 clr r1 |
194 0092 CA01 movw r24,r20 |
195 /* epilogue: frame size=0 */ |
196 0094 CF91 pop r28 |
197 0096 0895 ret |
198 /* epilogue end (size=2) */ |
199 /* function c_sin_8192 size 80 (77) */ |
201 .global c_cos_8192 |
203 c_cos_8192: |
204 /* prologue: frame size=0 */ |
205 /* prologue end (size=0) */ |
206 0098 2AE5 ldi r18,lo8(90) |
207 009a 30E0 ldi r19,hi8(90) |
208 009c 281B sub r18,r24 |
209 009e 390B sbc r19,r25 |
210 00a0 C901 movw r24,r18 |
211 00a2 0E94 0000 call c_sin_8192 |
212 /* epilogue: frame size=0 */ |
213 00a6 0895 ret |
214 /* epilogue end (size=1) */ |
215 /* function c_cos_8192 size 8 (7) */ |
217 /* File "mymath.c": code 88 = 0x0058 ( 84), prologues 1, epilogues 3 */ |
DEFINED SYMBOLS |
*ABS*:00000000 mymath.c |
C:\Temp/cctSHyeF.s:3 *ABS*:0000003f __SREG__ |
C:\Temp/cctSHyeF.s:4 *ABS*:0000003e __SP_H__ |
C:\Temp/cctSHyeF.s:5 *ABS*:0000003d __SP_L__ |
C:\Temp/cctSHyeF.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Temp/cctSHyeF.s:7 *ABS*:00000001 __zero_reg__ |
C:\Temp/cctSHyeF.s:14 .progmem.data:00000000 pgm_sinlookup |
C:\Temp/cctSHyeF.s:109 .text:00000000 c_sin_8192 |
C:\Temp/cctSHyeF.s:203 .text:00000098 c_cos_8192 |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
__divmodhi4 |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/old_macros.h |
---|
0,0 → 1,47 |
/* |
For backwards compatibility only. |
Ingo Busker ingo@mikrocontroller.com |
*/ |
#ifndef cbi |
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) |
#endif |
#ifndef sbi |
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) |
#endif |
#ifndef inb |
#define inb(sfr) _SFR_BYTE(sfr) |
#endif |
#ifndef outb |
#define outb(sfr, val) (_SFR_BYTE(sfr) = (val)) |
#endif |
#ifndef inw |
#define inw(sfr) _SFR_WORD(sfr) |
#endif |
#ifndef outw |
#define outw(sfr, val) (_SFR_WORD(sfr) = (val)) |
#endif |
#ifndef outp |
#define outp(val, sfr) outb(sfr, val) |
#endif |
#ifndef inp |
#define inp(sfr) inb(sfr) |
#endif |
#ifndef BV |
#define BV(bit) _BV(bit) |
#endif |
#ifndef PRG_RDB |
#define PRG_RDB pgm_read_byte |
#endif |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/printf_P.h |
---|
0,0 → 1,69 |
// Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist nicht von der Lizenz für den MikroKopter-Teil unterstellt |
/* |
Copyright (C) 1993 Free Software Foundation |
This file is part of the GNU IO Library. This library is free |
software; you can redistribute it and/or modify it under the |
terms of the GNU General Public License as published by the |
Free Software Foundation; either version 2, or (at your option) |
any later version. |
This library is distributed in the hope that it will be useful, |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
GNU General Public License for more details. |
You should have received a copy of the GNU General Public License |
along with this library; see the file COPYING. If not, write to the Free |
Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
As a special exception, if you link this library with files |
compiled with a GNU compiler to produce an executable, this does not cause |
the resulting executable to be covered by the GNU General Public License. |
This exception does not however invalidate any other reasons why |
the executable file might be covered by the GNU General Public License. */ |
/* |
* Copyright (c) 1990 Regents of the University of California. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. [rescinded 22 July 1999] |
* 4. Neither the name of the University nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
/******************************************************************************/ |
#ifndef _PRINTF_P_H_ |
#define _PRINTF_P_H_ |
#include <avr/pgmspace.h> |
// function pointer to external callback function |
typedef void (*pVoidFnctChar) (char ); |
typedef void (*pVoidFnct_pVoidFnctChar_const_fmt) (pVoidFnctChar, char const *fmt0, ...); |
extern pVoidFnct_pVoidFnctChar_const_fmt _printf_P; |
#endif //_PRINTF_P_H_ |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/rc.c |
---|
0,0 → 1,269 |
/*####################################################################################### |
Decodieren eines RC Summen Signals |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software Nutzungsbedingungen (english version: see below) |
// + der Fa. HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland - nachfolgend Lizenzgeber genannt - |
// + Der Lizenzgeber räumt dem Kunden ein nicht-ausschließliches, zeitlich und räumlich* unbeschränktes Recht ein, die im den |
// + Mikrocontroller verwendete Firmware für die Hardware Flight-Ctrl, Navi-Ctrl, BL-Ctrl, MK3Mag & PC-Programm MikroKopter-Tool |
// + - nachfolgend Software genannt - nur für private Zwecke zu nutzen. |
// + Der Einsatz dieser Software ist nur auf oder mit Produkten des Lizenzgebers zulässig. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die vom Lizenzgeber gelieferte Software ist urheberrechtlich geschützt. Alle Rechte an der Software sowie an sonstigen im |
// + Rahmen der Vertragsanbahnung und Vertragsdurchführung überlassenen Unterlagen stehen im Verhältnis der Vertragspartner ausschließlich dem Lizenzgeber zu. |
// + Die in der Software enthaltenen Copyright-Vermerke, Markenzeichen, andere Rechtsvorbehalte, Seriennummern sowie |
// + sonstige der Programmidentifikation dienenden Merkmale dürfen vom Kunden nicht verändert oder unkenntlich gemacht werden. |
// + Der Kunde trifft angemessene Vorkehrungen für den sicheren Einsatz der Software. Er wird die Software gründlich auf deren |
// + Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Die Haftung des Lizenzgebers wird - soweit gesetzlich zulässig - begrenzt in Höhe des typischen und vorhersehbaren |
// + Schadens. Die gesetzliche Haftung bei Personenschäden und nach dem Produkthaftungsgesetz bleibt unberührt. Dem Lizenzgeber steht jedoch der Einwand |
// + des Mitverschuldens offen. |
// + Der Kunde trifft angemessene Vorkehrungen für den Fall, dass die Software ganz oder teilweise nicht ordnungsgemäß arbeitet. |
// + Er wird die Software gründlich auf deren Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Der Kunde wird er seine Daten vor Einsatz der Software nach dem Stand der Technik sichern. |
// + Der Kunde ist darüber unterrichtet, dass der Lizenzgeber seine Daten im zur Vertragsdurchführung erforderlichen Umfang |
// + und auf Grundlage der Datenschutzvorschriften erhebt, speichert, verarbeitet und, sofern notwendig, an Dritte übermittelt. |
// + *) Die räumliche Nutzung bezieht sich nur auf den Einsatzort, nicht auf die Reichweite der programmierten Software. |
// + #### ENDE DER NUTZUNGSBEDINGUNGEN ####' |
// + Hinweis: Informationen über erweiterte Nutzungsrechte (wie z.B. Nutzung für nicht-private Zwecke) sind auf Anfrage per Email an info(@)hisystems.de verfügbar. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software LICENSING TERMS |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + of HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland, Germany - the Licensor - |
// + The Licensor grants the customer a non-exclusive license to use the microcontroller firmware of the Flight-Ctrl, Navi-Ctrl, BL-Ctrl, and MK3Mag hardware |
// + (the Software) exclusively for private purposes. The License is unrestricted with respect to time and territory*. |
// + The Software may only be used with the Licensor's products. |
// + The Software provided by the Licensor is protected by copyright. With respect to the relationship between the parties to this |
// + agreement, all rights pertaining to the Software and other documents provided during the preparation and execution of this |
// + agreement shall be the property of the Licensor. |
// + The information contained in the Software copyright notices, trademarks, other legal reservations, serial numbers and other |
// + features that can be used to identify the program may not be altered or defaced by the customer. |
// + The customer shall be responsible for taking reasonable precautions |
// + for the safe use of the Software. The customer shall test the Software thoroughly regarding its suitability for the |
// + intended purpose before implementing it for actual operation. The Licensor's liability shall be limited to the extent of typical and |
// + foreseeable damage to the extent permitted by law, notwithstanding statutory liability for bodily injury and product |
// + liability. However, the Licensor shall be entitled to the defense of contributory negligence. |
// + The customer will take adequate precautions in the case, that the software is not working properly. The customer will test |
// + the software for his purpose before any operational usage. The customer will backup his data before using the software. |
// + The customer understands that the Licensor collects, stores and processes, and, where required, forwards, customer data |
// + to third parties to the extent necessary for executing the agreement, subject to applicable data protection and privacy regulations. |
// + *) The territory aspect only refers to the place where the Software is used, not its programmed range. |
// + #### END OF LICENSING TERMS #### |
// + Note: For information on license extensions (e.g. commercial use), please contact us at info(@)hisystems.de. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "rc.h" |
#include "main.h" |
// Achtung: ACT_S3D_SUMMENSIGNAL wird in der Main.h gesetzt |
volatile int PPM_in[26]; |
volatile int PPM_diff[26]; // das diffenzierte Stick-Signal |
volatile char Channels,tmpChannels = 0; |
volatile unsigned char NewPpmData = 1; |
unsigned int PPM_Neutral = 466; |
//############################################################################ |
// Clear the values |
void rc_sum_init (void) |
//############################################################################ |
{ |
unsigned char i; |
for(i=0;i<26;i++) |
{ |
if(i < 5) PPM_in[i] = 0; else PPM_in[i] = -127; |
PPM_diff[i] = 0; |
} |
AdNeutralGier = 0; |
AdNeutralRoll = 0; |
AdNeutralNick = 0; |
return; |
} |
#ifndef ACT_S3D_SUMMENSIGNAL |
//############################################################################ |
// Interrupt function for the PPM-Input |
ISR(TIMER1_CAPT_vect) |
//############################################################################ |
{ |
if(!(EE_Parameter.ExtraConfig & CFG_SENSITIVE_RC)) |
{ |
static unsigned int AltICR=0; |
signed int signal = 0,tmp; |
static int index; |
signal = (unsigned int) ICR1 - AltICR; |
AltICR = ICR1; |
//Syncronisationspause? (3.52 ms < signal < 25.6 ms) |
if((signal > 1100) && (signal < 8000)) |
{ |
Channels = index; |
if(index >= 4) NewPpmData = 0; // Null bedeutet: Neue Daten |
index = 1; |
} |
else |
{ |
if(index < 13) |
{ |
if((signal > 250) && (signal < 687)) |
{ |
signal -= PPM_Neutral; |
// Stabiles Signal |
if(EE_Parameter.FailsafeChannel == 0 || PPM_in[EE_Parameter.FailsafeChannel] < 100) // forces Failsafe if the receiver doesn't have 'signal loss' on Failsafe |
{ |
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10; else SenderOkay = 200;} |
} |
tmp = (3 * (PPM_in[index]) + signal) / 4; |
if(tmp > signal+1) tmp--; else |
if(tmp < signal-1) tmp++; |
if(SenderOkay >= 195) PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3; |
else PPM_diff[index] = 0; |
PPM_in[index] = tmp; |
} |
index++; |
if(PlatinenVersion < 20) |
{ |
if(index == 5) J3High; else J3Low; // Servosignal an J3 anlegen |
if(index == 6) J4High; else J4Low; // Servosignal an J4 anlegen |
if(index == 7) J5High; else J5Low; // Servosignal an J5 anlegen |
} |
} |
} |
} |
else |
{ |
static unsigned int AltICR=0; |
static int ppm_in[13]; |
static int ppm_diff[13]; |
static int old_ppm_in[13]; |
static int old_ppm_diff[13]; |
signed int signal = 0,tmp; |
static unsigned char index, okay_cnt = 0; |
signal = (unsigned int) ICR1 - AltICR; |
AltICR = ICR1; |
//Syncronisationspause? (3.52 ms < signal < 25.6 ms) |
if((signal > 1100) && (signal < 8000)) |
{ |
tmpChannels = index; |
if(tmpChannels >= 4 && Channels == tmpChannels) |
{ |
if(okay_cnt > 10) |
{ |
NewPpmData = 0; // Null bedeutet: Neue Daten |
for(index = 0; index < 13; index++) |
{ |
if(okay_cnt > 30) |
{ |
old_ppm_in[index] = PPM_in[index]; |
old_ppm_diff[index] = PPM_diff[index]; |
} |
PPM_in[index] = ppm_in[index]; |
PPM_diff[index] = ppm_diff[index]; |
} |
} |
if(okay_cnt < 255) okay_cnt++; |
} |
else |
{ |
if(okay_cnt > 100) okay_cnt = 10; else okay_cnt = 0; |
ROT_ON; |
} |
index = 1; |
if(!MotorenEin) Channels = tmpChannels; |
} |
else |
{ |
if(index < 13) |
{ |
if((signal > 250) && (signal < 687)) |
{ |
signal -= PPM_Neutral; |
// Stabiles Signal |
if((abs(signal - ppm_in[index]) < 6)) |
{ |
if(EE_Parameter.FailsafeChannel == 0 || PPM_in[EE_Parameter.FailsafeChannel] < 100) // forces Failsafe if the receiver doesn't have 'signal loss' on Failsafe |
{ |
if(okay_cnt > 25) SenderOkay += 10; |
else |
if(okay_cnt > 10) SenderOkay += 2; |
if(SenderOkay > 200) SenderOkay = 200; |
} |
} |
tmp = (3 * (ppm_in[index]) + signal) / 4; |
if(tmp > signal+1) tmp--; else |
if(tmp < signal-1) tmp++; |
if(SenderOkay >= 190) ppm_diff[index] = ((tmp - ppm_in[index]) / 3) * 3; |
else ppm_diff[index] = 0; |
ppm_in[index] = tmp; |
} |
else ROT_ON; |
if(PlatinenVersion < 20) |
{ |
if(index == 5) J3High; else J3Low; // Servosignal an J3 anlegen |
if(index == 6) J4High; else J4Low; // Servosignal an J4 anlegen |
if(index == 7) J5High; else J5Low; // Servosignal an J5 anlegen |
} |
} |
if(index < 20) index++; |
else |
if(index == 20) |
{ |
unsigned char i; |
ROT_ON; |
index = 30; |
for(i=0;i<13;i++) // restore from older data |
{ |
PPM_in[i] = old_ppm_in[i]; |
PPM_diff[i] = 0; |
// okay_cnt /= 2; |
} |
} |
} |
} |
} |
#else |
//############################################################################ |
// Interrupt function for the PPM-Input |
ISR(TIMER1_CAPT_vect) |
//############################################################################ |
{ |
static unsigned int AltICR=0; |
signed int signal = 0,tmp; |
static int index; |
signal = (unsigned int) ICR1 - AltICR; |
signal /= 2; |
AltICR = ICR1; |
//Syncronisationspause? |
if((signal > 1100*2) && (signal < 8000*2)) |
{ |
if(index >= 4) NewPpmData = 0; // Null bedeutet: Neue Daten |
index = 1; |
} |
else |
{ |
if(index < 13) |
{ |
if((signal > 250) && (signal < 687*2)) |
{ |
signal -= 962; |
// Stabiles Signal |
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10;} |
tmp = (3 * (PPM_in[index]) + signal) / 4; |
if(tmp > signal+1) tmp--; else |
if(tmp < signal-1) tmp++; |
if(SenderOkay >= 195) PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3; |
else PPM_diff[index] = 0; |
PPM_in[index] = tmp; |
} |
index++; |
} |
} |
} |
#endif |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/rc.h |
---|
0,0 → 1,27 |
/*####################################################################################### |
Derkodieren eines RC Summen Signals |
#######################################################################################*/ |
#ifndef _RC_H |
#define _RC_H |
#if defined (__AVR_ATmega644__) |
#define TIMER_RELOAD_VALUE 250 |
#endif |
#if defined (__AVR_ATmega644P__) |
#define TIMER_RELOAD_VALUE 250 |
#endif |
#define GAS PPM_in[2] |
#define FromNC_WP_EventChannel PPM_in[25] // WP_EVENT-Channel-Value |
extern void rc_sum_init (void); |
extern volatile int PPM_in[26]; |
extern volatile int PPM_diff[26]; // das diffenzierte Stick-Signal |
extern volatile unsigned char NewPpmData; |
extern volatile char Channels,tmpChannels; |
extern unsigned int PPM_Neutral; |
#endif //_RC_H |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/rc.lst |
---|
0,0 → 1,741 |
1 .file "rc.c" |
2 .arch atmega1284p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .global PPM_Neutral |
11 .data |
14 PPM_Neutral: |
15 0000 D201 .word 466 |
16 .global NewPpmData |
19 NewPpmData: |
20 0002 01 .byte 1 |
21 .global tmpChannels |
22 .global tmpChannels |
23 .section .bss |
26 tmpChannels: |
27 0000 00 .skip 1,0 |
28 .text |
29 .global rc_sum_init |
31 rc_sum_init: |
32 /* prologue: frame size=0 */ |
33 0000 CF93 push r28 |
34 0002 DF93 push r29 |
35 /* prologue end (size=2) */ |
36 0004 80E0 ldi r24,lo8(0) |
37 0006 21E8 ldi r18,lo8(-127) |
38 0008 3FEF ldi r19,hi8(-127) |
39 000a C0E0 ldi r28,lo8(PPM_diff) |
40 000c D0E0 ldi r29,hi8(PPM_diff) |
41 000e E0E0 ldi r30,lo8(PPM_in) |
42 0010 F0E0 ldi r31,hi8(PPM_in) |
43 0012 DF01 movw r26,r30 |
44 .L7: |
45 0014 8530 cpi r24,lo8(5) |
46 0016 00F4 brsh .L5 |
47 0018 1196 adiw r26,1 |
48 001a 1C92 st X,__zero_reg__ |
49 001c 1E92 st -X,__zero_reg__ |
50 001e 00C0 rjmp .L6 |
51 .L5: |
52 0020 3183 std Z+1,r19 |
53 0022 2083 st Z,r18 |
54 .L6: |
55 0024 1982 std Y+1,__zero_reg__ |
56 0026 1882 st Y,__zero_reg__ |
57 0028 2296 adiw r28,2 |
58 002a 8F5F subi r24,lo8(-(1)) |
59 002c 1296 adiw r26,2 |
60 002e 3296 adiw r30,2 |
61 0030 8A31 cpi r24,lo8(26) |
62 0032 00F0 brlo .L7 |
63 0034 1092 0000 sts (AdNeutralGier)+1,__zero_reg__ |
64 0038 1092 0000 sts AdNeutralGier,__zero_reg__ |
65 003c 1092 0000 sts (AdNeutralRoll)+1,__zero_reg__ |
66 0040 1092 0000 sts AdNeutralRoll,__zero_reg__ |
67 0044 1092 0000 sts (AdNeutralNick)+1,__zero_reg__ |
68 0048 1092 0000 sts AdNeutralNick,__zero_reg__ |
69 /* epilogue: frame size=0 */ |
70 004c DF91 pop r29 |
71 004e CF91 pop r28 |
72 0050 0895 ret |
73 /* epilogue end (size=3) */ |
74 /* function rc_sum_init size 41 (36) */ |
76 .lcomm AltICR.0,2 |
77 .lcomm index.1,2 |
78 .lcomm AltICR.2,2 |
79 .lcomm ppm_in.3,26 |
80 .lcomm ppm_diff.4,26 |
81 .lcomm old_ppm_in.5,26 |
82 .lcomm old_ppm_diff.6,26 |
83 .lcomm index.7,1 |
84 .lcomm okay_cnt.8,1 |
85 .global __vector_12 |
87 __vector_12: |
88 /* prologue: frame size=0 */ |
89 0052 1F92 push __zero_reg__ |
90 0054 0F92 push __tmp_reg__ |
91 0056 0FB6 in __tmp_reg__,__SREG__ |
92 0058 0F92 push __tmp_reg__ |
93 005a 1124 clr __zero_reg__ |
94 005c 0F93 push r16 |
95 005e 1F93 push r17 |
96 0060 2F93 push r18 |
97 0062 3F93 push r19 |
98 0064 4F93 push r20 |
99 0066 5F93 push r21 |
100 0068 6F93 push r22 |
101 006a 7F93 push r23 |
102 006c 8F93 push r24 |
103 006e 9F93 push r25 |
104 0070 AF93 push r26 |
105 0072 BF93 push r27 |
106 0074 CF93 push r28 |
107 0076 DF93 push r29 |
108 0078 EF93 push r30 |
109 007a FF93 push r31 |
110 /* prologue end (size=21) */ |
111 007c 8091 0000 lds r24,EE_Parameter+110 |
112 0080 82FD sbrc r24,2 |
113 0082 00C0 rjmp .L11 |
114 0084 4091 8600 lds r20,134 |
115 0088 5091 8700 lds r21,(134)+1 |
116 008c 8091 0000 lds r24,AltICR.0 |
117 0090 9091 0000 lds r25,(AltICR.0)+1 |
118 0094 481B sub r20,r24 |
119 0096 590B sbc r21,r25 |
120 0098 8091 8600 lds r24,134 |
121 009c 9091 8700 lds r25,(134)+1 |
122 00a0 9093 0000 sts (AltICR.0)+1,r25 |
123 00a4 8093 0000 sts AltICR.0,r24 |
124 00a8 CA01 movw r24,r20 |
125 00aa 8D54 subi r24,lo8(-(-1101)) |
126 00ac 9440 sbci r25,hi8(-(-1101)) |
127 00ae A091 0000 lds r26,index.1 |
128 00b2 B091 0000 lds r27,(index.1)+1 |
129 00b6 835F subi r24,lo8(6899) |
130 00b8 9A41 sbci r25,hi8(6899) |
131 00ba 00F4 brsh .L12 |
132 00bc 8091 0000 lds r24,index.1 |
133 00c0 8093 0000 sts Channels,r24 |
134 00c4 1497 sbiw r26,4 |
135 00c6 04F0 brlt .L13 |
136 00c8 1092 0000 sts NewPpmData,__zero_reg__ |
137 .L13: |
138 00cc 81E0 ldi r24,lo8(1) |
139 00ce 90E0 ldi r25,hi8(1) |
140 00d0 9093 0000 sts (index.1)+1,r25 |
141 00d4 8093 0000 sts index.1,r24 |
142 00d8 00C0 rjmp .L10 |
143 .L12: |
144 00da AD30 cpi r26,13 |
145 00dc B105 cpc r27,__zero_reg__ |
146 00de 04F0 brlt .+2 |
147 00e0 00C0 rjmp .L10 |
148 00e2 CA01 movw r24,r20 |
149 00e4 8B5F subi r24,lo8(-(-251)) |
150 00e6 9040 sbci r25,hi8(-(-251)) |
151 00e8 845B subi r24,lo8(436) |
152 00ea 9140 sbci r25,hi8(436) |
153 00ec 00F0 brlo .+2 |
154 00ee 00C0 rjmp .L16 |
155 00f0 8091 0000 lds r24,PPM_Neutral |
156 00f4 9091 0000 lds r25,(PPM_Neutral)+1 |
157 00f8 481B sub r20,r24 |
158 00fa 590B sbc r21,r25 |
159 00fc E091 0000 lds r30,EE_Parameter+105 |
160 0100 EE23 tst r30 |
161 0102 01F0 breq .L18 |
162 0104 FF27 clr r31 |
163 0106 EE0F add r30,r30 |
164 0108 FF1F adc r31,r31 |
165 010a E050 subi r30,lo8(-(PPM_in)) |
166 010c F040 sbci r31,hi8(-(PPM_in)) |
167 010e 8081 ld r24,Z |
168 0110 9181 ldd r25,Z+1 |
169 0112 8436 cpi r24,100 |
170 0114 9105 cpc r25,__zero_reg__ |
171 0116 04F4 brge .L17 |
172 .L18: |
173 0118 FD01 movw r30,r26 |
174 011a EA0F add r30,r26 |
175 011c FB1F adc r31,r27 |
176 011e E050 subi r30,lo8(-(PPM_in)) |
177 0120 F040 sbci r31,hi8(-(PPM_in)) |
178 0122 8081 ld r24,Z |
179 0124 9181 ldd r25,Z+1 |
180 0126 FA01 movw r30,r20 |
181 0128 E81B sub r30,r24 |
182 012a F90B sbc r31,r25 |
183 012c CF01 movw r24,r30 |
184 012e F7FF sbrs r31,7 |
185 0130 00C0 rjmp .L20 |
186 0132 9095 com r25 |
187 0134 8195 neg r24 |
188 0136 9F4F sbci r25,lo8(-1) |
189 .L20: |
190 0138 0697 sbiw r24,6 |
191 013a 04F4 brge .L17 |
192 013c 8091 0000 lds r24,SenderOkay |
193 0140 883C cpi r24,lo8(-56) |
194 0142 00F4 brsh .L21 |
195 0144 8091 0000 lds r24,SenderOkay |
196 0148 865F subi r24,lo8(-(10)) |
197 014a 00C0 rjmp .L93 |
198 .L21: |
199 014c 88EC ldi r24,lo8(-56) |
200 .L93: |
201 014e 8093 0000 sts SenderOkay,r24 |
202 .L17: |
203 0152 FD01 movw r30,r26 |
204 0154 EA0F add r30,r26 |
205 0156 FB1F adc r31,r27 |
206 0158 E050 subi r30,lo8(-(PPM_in)) |
207 015a F040 sbci r31,hi8(-(PPM_in)) |
208 015c 8081 ld r24,Z |
209 015e 9181 ldd r25,Z+1 |
210 0160 9C01 movw r18,r24 |
211 0162 220F lsl r18 |
212 0164 331F rol r19 |
213 0166 280F add r18,r24 |
214 0168 391F adc r19,r25 |
215 016a 240F add r18,r20 |
216 016c 351F adc r19,r21 |
217 016e 37FF sbrs r19,7 |
218 0170 00C0 rjmp .L23 |
219 0172 2D5F subi r18,lo8(-(3)) |
220 0174 3F4F sbci r19,hi8(-(3)) |
221 .L23: |
222 0176 E901 movw r28,r18 |
223 0178 D595 asr r29 |
224 017a C795 ror r28 |
225 017c D595 asr r29 |
226 017e C795 ror r28 |
227 0180 CA01 movw r24,r20 |
228 0182 0196 adiw r24,1 |
229 0184 8C17 cp r24,r28 |
230 0186 9D07 cpc r25,r29 |
231 0188 04F4 brge .L24 |
232 018a 2197 sbiw r28,1 |
233 018c 00C0 rjmp .L25 |
234 .L24: |
235 018e 4150 subi r20,lo8(-(-1)) |
236 0190 5040 sbci r21,hi8(-(-1)) |
237 0192 C417 cp r28,r20 |
238 0194 D507 cpc r29,r21 |
239 0196 04F4 brge .L25 |
240 0198 2196 adiw r28,1 |
241 .L25: |
242 019a 8091 0000 lds r24,SenderOkay |
243 019e 833C cpi r24,lo8(-61) |
244 01a0 00F0 brlo .L27 |
245 01a2 8D01 movw r16,r26 |
246 01a4 0A0F add r16,r26 |
247 01a6 1B1F adc r17,r27 |
248 01a8 F801 movw r30,r16 |
249 01aa E050 subi r30,lo8(-(PPM_in)) |
250 01ac F040 sbci r31,hi8(-(PPM_in)) |
251 01ae 8081 ld r24,Z |
252 01b0 9181 ldd r25,Z+1 |
253 01b2 9E01 movw r18,r28 |
254 01b4 281B sub r18,r24 |
255 01b6 390B sbc r19,r25 |
256 01b8 C901 movw r24,r18 |
257 01ba 63E0 ldi r22,lo8(3) |
258 01bc 70E0 ldi r23,hi8(3) |
259 01be 0E94 0000 call __divmodhi4 |
260 01c2 CB01 movw r24,r22 |
261 01c4 880F lsl r24 |
262 01c6 991F rol r25 |
263 01c8 860F add r24,r22 |
264 01ca 971F adc r25,r23 |
265 01cc 0050 subi r16,lo8(-(PPM_diff)) |
266 01ce 1040 sbci r17,hi8(-(PPM_diff)) |
267 01d0 D801 movw r26,r16 |
268 01d2 1196 adiw r26,1 |
269 01d4 9C93 st X,r25 |
270 01d6 8E93 st -X,r24 |
271 01d8 00C0 rjmp .L28 |
272 .L27: |
273 01da AA0F add r26,r26 |
274 01dc BB1F adc r27,r27 |
275 01de A050 subi r26,lo8(-(PPM_diff)) |
276 01e0 B040 sbci r27,hi8(-(PPM_diff)) |
277 01e2 1196 adiw r26,1 |
278 01e4 1C92 st X,__zero_reg__ |
279 01e6 1E92 st -X,__zero_reg__ |
280 .L28: |
281 01e8 E091 0000 lds r30,index.1 |
282 01ec F091 0000 lds r31,(index.1)+1 |
283 01f0 EE0F add r30,r30 |
284 01f2 FF1F adc r31,r31 |
285 01f4 E050 subi r30,lo8(-(PPM_in)) |
286 01f6 F040 sbci r31,hi8(-(PPM_in)) |
287 01f8 D183 std Z+1,r29 |
288 01fa C083 st Z,r28 |
289 .L16: |
290 01fc 2091 0000 lds r18,index.1 |
291 0200 3091 0000 lds r19,(index.1)+1 |
292 0204 2F5F subi r18,lo8(-(1)) |
293 0206 3F4F sbci r19,hi8(-(1)) |
294 0208 3093 0000 sts (index.1)+1,r19 |
295 020c 2093 0000 sts index.1,r18 |
296 0210 8091 0000 lds r24,PlatinenVersion |
297 0214 8431 cpi r24,lo8(20) |
298 0216 00F0 brlo .+2 |
299 0218 00C0 rjmp .L10 |
300 021a 2530 cpi r18,5 |
301 021c 3105 cpc r19,__zero_reg__ |
302 021e 01F4 brne .L30 |
303 0220 5D9A sbi 43-0x20,5 |
304 0222 00C0 rjmp .L31 |
305 .L30: |
306 0224 5D98 cbi 43-0x20,5 |
307 .L31: |
308 0226 8091 0000 lds r24,index.1 |
309 022a 9091 0000 lds r25,(index.1)+1 |
310 022e 8630 cpi r24,6 |
311 0230 9105 cpc r25,__zero_reg__ |
312 0232 01F4 brne .L32 |
313 0234 5C9A sbi 43-0x20,4 |
314 0236 00C0 rjmp .L33 |
315 .L32: |
316 0238 5C98 cbi 43-0x20,4 |
317 .L33: |
318 023a 0797 sbiw r24,7 |
319 023c 01F4 brne .L34 |
320 023e 5B9A sbi 43-0x20,3 |
321 0240 00C0 rjmp .L10 |
322 .L34: |
323 0242 5B98 cbi 43-0x20,3 |
324 0244 00C0 rjmp .L10 |
325 .L11: |
326 0246 4091 8600 lds r20,134 |
327 024a 5091 8700 lds r21,(134)+1 |
328 024e 8091 0000 lds r24,AltICR.2 |
329 0252 9091 0000 lds r25,(AltICR.2)+1 |
330 0256 481B sub r20,r24 |
331 0258 590B sbc r21,r25 |
332 025a 8091 8600 lds r24,134 |
333 025e 9091 8700 lds r25,(134)+1 |
334 0262 9093 0000 sts (AltICR.2)+1,r25 |
335 0266 8093 0000 sts AltICR.2,r24 |
336 026a CA01 movw r24,r20 |
337 026c 8D54 subi r24,lo8(-(-1101)) |
338 026e 9440 sbci r25,hi8(-(-1101)) |
339 0270 6091 0000 lds r22,index.7 |
340 0274 835F subi r24,lo8(6899) |
341 0276 9A41 sbci r25,hi8(6899) |
342 0278 00F0 brlo .+2 |
343 027a 00C0 rjmp .L37 |
344 027c 6093 0000 sts tmpChannels,r22 |
345 0280 8091 0000 lds r24,tmpChannels |
346 0284 8430 cpi r24,lo8(4) |
347 0286 00F4 brsh .+2 |
348 0288 00C0 rjmp .L38 |
349 028a 9091 0000 lds r25,Channels |
350 028e 8091 0000 lds r24,tmpChannels |
351 0292 9817 cp r25,r24 |
352 0294 01F0 breq .+2 |
353 0296 00C0 rjmp .L38 |
354 0298 5091 0000 lds r21,okay_cnt.8 |
355 029c 5B30 cpi r21,lo8(11) |
356 029e 00F4 brsh .+2 |
357 02a0 00C0 rjmp .L39 |
358 02a2 1092 0000 sts NewPpmData,__zero_reg__ |
359 02a6 1092 0000 sts index.7,__zero_reg__ |
360 02aa 40E0 ldi r20,lo8(0) |
361 .L44: |
362 02ac 5F31 cpi r21,lo8(31) |
363 02ae 00F0 brlo .L43 |
364 02b0 E42F mov r30,r20 |
365 02b2 FF27 clr r31 |
366 02b4 EE0F add r30,r30 |
367 02b6 FF1F adc r31,r31 |
368 02b8 9F01 movw r18,r30 |
369 02ba 2050 subi r18,lo8(-(old_ppm_in.5)) |
370 02bc 3040 sbci r19,hi8(-(old_ppm_in.5)) |
371 02be DF01 movw r26,r30 |
372 02c0 A050 subi r26,lo8(-(PPM_in)) |
373 02c2 B040 sbci r27,hi8(-(PPM_in)) |
374 02c4 8D91 ld r24,X+ |
375 02c6 9C91 ld r25,X |
376 02c8 D901 movw r26,r18 |
377 02ca 8D93 st X+,r24 |
378 02cc 9C93 st X,r25 |
379 02ce DF01 movw r26,r30 |
380 02d0 A050 subi r26,lo8(-(PPM_diff)) |
381 02d2 B040 sbci r27,hi8(-(PPM_diff)) |
382 02d4 8D91 ld r24,X+ |
383 02d6 9C91 ld r25,X |
384 02d8 E050 subi r30,lo8(-(old_ppm_diff.6)) |
385 02da F040 sbci r31,hi8(-(old_ppm_diff.6)) |
386 02dc 9183 std Z+1,r25 |
387 02de 8083 st Z,r24 |
388 .L43: |
389 02e0 E42F mov r30,r20 |
390 02e2 FF27 clr r31 |
391 02e4 EE0F add r30,r30 |
392 02e6 FF1F adc r31,r31 |
393 02e8 9F01 movw r18,r30 |
394 02ea 2050 subi r18,lo8(-(PPM_in)) |
395 02ec 3040 sbci r19,hi8(-(PPM_in)) |
396 02ee DF01 movw r26,r30 |
397 02f0 A050 subi r26,lo8(-(ppm_in.3)) |
398 02f2 B040 sbci r27,hi8(-(ppm_in.3)) |
399 02f4 8D91 ld r24,X+ |
400 02f6 9C91 ld r25,X |
401 02f8 D901 movw r26,r18 |
402 02fa 1196 adiw r26,1 |
403 02fc 9C93 st X,r25 |
404 02fe 8E93 st -X,r24 |
405 0300 DF01 movw r26,r30 |
406 0302 A050 subi r26,lo8(-(ppm_diff.4)) |
407 0304 B040 sbci r27,hi8(-(ppm_diff.4)) |
408 0306 8D91 ld r24,X+ |
409 0308 9C91 ld r25,X |
410 030a E050 subi r30,lo8(-(PPM_diff)) |
411 030c F040 sbci r31,hi8(-(PPM_diff)) |
412 030e 9183 std Z+1,r25 |
413 0310 8083 st Z,r24 |
414 0312 842F mov r24,r20 |
415 0314 8F5F subi r24,lo8(-(1)) |
416 0316 482F mov r20,r24 |
417 0318 8D30 cpi r24,lo8(13) |
418 031a 00F0 brlo .L44 |
419 031c 8093 0000 sts index.7,r24 |
420 .L39: |
421 0320 8091 0000 lds r24,okay_cnt.8 |
422 0324 8F3F cpi r24,lo8(-1) |
423 0326 01F0 breq .L46 |
424 0328 8F5F subi r24,lo8(-(1)) |
425 032a 8093 0000 sts okay_cnt.8,r24 |
426 032e 00C0 rjmp .L46 |
427 .L38: |
428 0330 8091 0000 lds r24,okay_cnt.8 |
429 0334 8536 cpi r24,lo8(101) |
430 0336 00F0 brlo .L47 |
431 0338 8AE0 ldi r24,lo8(10) |
432 033a 8093 0000 sts okay_cnt.8,r24 |
433 033e 00C0 rjmp .L48 |
434 .L47: |
435 0340 1092 0000 sts okay_cnt.8,__zero_reg__ |
436 .L48: |
437 0344 8091 0000 lds r24,PlatinenVersion |
438 0348 8A30 cpi r24,lo8(10) |
439 034a 01F0 breq .L50 |
440 034c 8431 cpi r24,lo8(20) |
441 034e 00F0 brlo .L49 |
442 .L50: |
443 0350 289A sbi 37-0x20,0 |
444 0352 00C0 rjmp .L46 |
445 .L49: |
446 0354 2898 cbi 37-0x20,0 |
447 .L46: |
448 0356 81E0 ldi r24,lo8(1) |
449 0358 8093 0000 sts index.7,r24 |
450 035c 8091 0000 lds r24,MotorenEin |
451 0360 8823 tst r24 |
452 0362 01F0 breq .+2 |
453 0364 00C0 rjmp .L10 |
454 0366 8091 0000 lds r24,tmpChannels |
455 036a 8093 0000 sts Channels,r24 |
456 036e 00C0 rjmp .L10 |
457 .L37: |
458 0370 6D30 cpi r22,lo8(13) |
459 0372 00F0 brlo .+2 |
460 0374 00C0 rjmp .L54 |
461 0376 CA01 movw r24,r20 |
462 0378 8B5F subi r24,lo8(-(-251)) |
463 037a 9040 sbci r25,hi8(-(-251)) |
464 037c 845B subi r24,lo8(436) |
465 037e 9140 sbci r25,hi8(436) |
466 0380 00F0 brlo .+2 |
467 0382 00C0 rjmp .L55 |
468 0384 8091 0000 lds r24,PPM_Neutral |
469 0388 9091 0000 lds r25,(PPM_Neutral)+1 |
470 038c 481B sub r20,r24 |
471 038e 590B sbc r21,r25 |
472 0390 E62F mov r30,r22 |
473 0392 FF27 clr r31 |
474 0394 EE0F add r30,r30 |
475 0396 FF1F adc r31,r31 |
476 0398 E050 subi r30,lo8(-(ppm_in.3)) |
477 039a F040 sbci r31,hi8(-(ppm_in.3)) |
478 039c 8081 ld r24,Z |
479 039e 9181 ldd r25,Z+1 |
480 03a0 FA01 movw r30,r20 |
481 03a2 E81B sub r30,r24 |
482 03a4 F90B sbc r31,r25 |
483 03a6 CF01 movw r24,r30 |
484 03a8 0596 adiw r24,5 |
485 03aa 0B97 sbiw r24,11 |
486 03ac 00F4 brsh .L56 |
487 03ae E091 0000 lds r30,EE_Parameter+105 |
488 03b2 EE23 tst r30 |
489 03b4 01F0 breq .L58 |
490 03b6 FF27 clr r31 |
491 03b8 EE0F add r30,r30 |
492 03ba FF1F adc r31,r31 |
493 03bc E050 subi r30,lo8(-(PPM_in)) |
494 03be F040 sbci r31,hi8(-(PPM_in)) |
495 03c0 8081 ld r24,Z |
496 03c2 9181 ldd r25,Z+1 |
497 03c4 8436 cpi r24,100 |
498 03c6 9105 cpc r25,__zero_reg__ |
499 03c8 04F4 brge .L56 |
500 .L58: |
501 03ca 8091 0000 lds r24,okay_cnt.8 |
502 03ce 8A31 cpi r24,lo8(26) |
503 03d0 00F0 brlo .L59 |
504 03d2 8091 0000 lds r24,SenderOkay |
505 03d6 865F subi r24,lo8(-(10)) |
506 03d8 00C0 rjmp .L94 |
507 .L59: |
508 03da 8B30 cpi r24,lo8(11) |
509 03dc 00F0 brlo .L60 |
510 03de 8091 0000 lds r24,SenderOkay |
511 03e2 8E5F subi r24,lo8(-(2)) |
512 .L94: |
513 03e4 8093 0000 sts SenderOkay,r24 |
514 .L60: |
515 03e8 8091 0000 lds r24,SenderOkay |
516 03ec 893C cpi r24,lo8(-55) |
517 03ee 00F0 brlo .L56 |
518 03f0 88EC ldi r24,lo8(-56) |
519 03f2 8093 0000 sts SenderOkay,r24 |
520 .L56: |
521 03f6 E62F mov r30,r22 |
522 03f8 FF27 clr r31 |
523 03fa EE0F add r30,r30 |
524 03fc FF1F adc r31,r31 |
525 03fe E050 subi r30,lo8(-(ppm_in.3)) |
526 0400 F040 sbci r31,hi8(-(ppm_in.3)) |
527 0402 8081 ld r24,Z |
528 0404 9181 ldd r25,Z+1 |
529 0406 9C01 movw r18,r24 |
530 0408 220F lsl r18 |
531 040a 331F rol r19 |
532 040c 280F add r18,r24 |
533 040e 391F adc r19,r25 |
534 0410 240F add r18,r20 |
535 0412 351F adc r19,r21 |
536 0414 37FF sbrs r19,7 |
537 0416 00C0 rjmp .L63 |
538 0418 2D5F subi r18,lo8(-(3)) |
539 041a 3F4F sbci r19,hi8(-(3)) |
540 .L63: |
541 041c E901 movw r28,r18 |
542 041e D595 asr r29 |
543 0420 C795 ror r28 |
544 0422 D595 asr r29 |
545 0424 C795 ror r28 |
546 0426 CA01 movw r24,r20 |
547 0428 0196 adiw r24,1 |
548 042a 8C17 cp r24,r28 |
549 042c 9D07 cpc r25,r29 |
550 042e 04F4 brge .L64 |
551 0430 2197 sbiw r28,1 |
552 0432 00C0 rjmp .L65 |
553 .L64: |
554 0434 4150 subi r20,lo8(-(-1)) |
555 0436 5040 sbci r21,hi8(-(-1)) |
556 0438 C417 cp r28,r20 |
557 043a D507 cpc r29,r21 |
558 043c 04F4 brge .L65 |
559 043e 2196 adiw r28,1 |
560 .L65: |
561 0440 8091 0000 lds r24,SenderOkay |
562 0444 8E3B cpi r24,lo8(-66) |
563 0446 00F0 brlo .L67 |
564 0448 E62F mov r30,r22 |
565 044a FF27 clr r31 |
566 044c EE0F add r30,r30 |
567 044e FF1F adc r31,r31 |
568 0450 DF01 movw r26,r30 |
569 0452 A050 subi r26,lo8(-(ppm_in.3)) |
570 0454 B040 sbci r27,hi8(-(ppm_in.3)) |
571 0456 8D91 ld r24,X+ |
572 0458 9C91 ld r25,X |
573 045a 9E01 movw r18,r28 |
574 045c 281B sub r18,r24 |
575 045e 390B sbc r19,r25 |
576 0460 C901 movw r24,r18 |
577 0462 63E0 ldi r22,lo8(3) |
578 0464 70E0 ldi r23,hi8(3) |
579 0466 0E94 0000 call __divmodhi4 |
580 046a CB01 movw r24,r22 |
581 046c 880F lsl r24 |
582 046e 991F rol r25 |
583 0470 860F add r24,r22 |
584 0472 971F adc r25,r23 |
585 0474 E050 subi r30,lo8(-(ppm_diff.4)) |
586 0476 F040 sbci r31,hi8(-(ppm_diff.4)) |
587 0478 9183 std Z+1,r25 |
588 047a 8083 st Z,r24 |
589 047c 00C0 rjmp .L68 |
590 .L67: |
591 047e E62F mov r30,r22 |
592 0480 FF27 clr r31 |
593 0482 EE0F add r30,r30 |
594 0484 FF1F adc r31,r31 |
595 0486 E050 subi r30,lo8(-(ppm_diff.4)) |
596 0488 F040 sbci r31,hi8(-(ppm_diff.4)) |
597 048a 1182 std Z+1,__zero_reg__ |
598 048c 1082 st Z,__zero_reg__ |
599 .L68: |
600 048e 8091 0000 lds r24,index.7 |
601 0492 E82F mov r30,r24 |
602 0494 FF27 clr r31 |
603 0496 EE0F add r30,r30 |
604 0498 FF1F adc r31,r31 |
605 049a E050 subi r30,lo8(-(ppm_in.3)) |
606 049c F040 sbci r31,hi8(-(ppm_in.3)) |
607 049e D183 std Z+1,r29 |
608 04a0 C083 st Z,r28 |
609 04a2 00C0 rjmp .L69 |
610 .L55: |
611 04a4 8091 0000 lds r24,PlatinenVersion |
612 04a8 8A30 cpi r24,lo8(10) |
613 04aa 01F0 breq .L71 |
614 04ac 8431 cpi r24,lo8(20) |
615 04ae 00F0 brlo .L70 |
616 .L71: |
617 04b0 289A sbi 37-0x20,0 |
618 04b2 00C0 rjmp .L69 |
619 .L70: |
620 04b4 2898 cbi 37-0x20,0 |
621 .L69: |
622 04b6 8091 0000 lds r24,PlatinenVersion |
623 04ba 8431 cpi r24,lo8(20) |
624 04bc 00F4 brsh .L54 |
625 04be 8091 0000 lds r24,index.7 |
626 04c2 8530 cpi r24,lo8(5) |
627 04c4 01F4 brne .L74 |
628 04c6 5D9A sbi 43-0x20,5 |
629 04c8 00C0 rjmp .L76 |
630 .L74: |
631 04ca 5D98 cbi 43-0x20,5 |
632 04cc 8630 cpi r24,lo8(6) |
633 04ce 01F4 brne .L76 |
634 04d0 5C9A sbi 43-0x20,4 |
635 04d2 00C0 rjmp .L78 |
636 .L76: |
637 04d4 5C98 cbi 43-0x20,4 |
638 04d6 8730 cpi r24,lo8(7) |
639 04d8 01F4 brne .L78 |
640 04da 5B9A sbi 43-0x20,3 |
641 04dc 00C0 rjmp .L54 |
642 .L78: |
643 04de 5B98 cbi 43-0x20,3 |
644 .L54: |
645 04e0 8091 0000 lds r24,index.7 |
646 04e4 8431 cpi r24,lo8(20) |
647 04e6 00F4 brsh .L80 |
648 04e8 8F5F subi r24,lo8(-(1)) |
649 04ea 8093 0000 sts index.7,r24 |
650 04ee 00C0 rjmp .L10 |
651 .L80: |
652 04f0 8431 cpi r24,lo8(20) |
653 04f2 01F4 brne .L10 |
654 04f4 8091 0000 lds r24,PlatinenVersion |
655 04f8 8A30 cpi r24,lo8(10) |
656 04fa 01F0 breq .L84 |
657 04fc 8431 cpi r24,lo8(20) |
658 04fe 00F0 brlo .L83 |
659 .L84: |
660 0500 289A sbi 37-0x20,0 |
661 0502 00C0 rjmp .L85 |
662 .L83: |
663 0504 2898 cbi 37-0x20,0 |
664 .L85: |
665 0506 8EE1 ldi r24,lo8(30) |
666 0508 8093 0000 sts index.7,r24 |
667 050c 2CE0 ldi r18,lo8(12) |
668 050e C0E0 ldi r28,lo8(PPM_diff) |
669 0510 D0E0 ldi r29,hi8(PPM_diff) |
670 0512 A0E0 ldi r26,lo8(old_ppm_in.5) |
671 0514 B0E0 ldi r27,hi8(old_ppm_in.5) |
672 0516 E0E0 ldi r30,lo8(PPM_in) |
673 0518 F0E0 ldi r31,hi8(PPM_in) |
674 .L89: |
675 051a 8D91 ld r24,X+ |
676 051c 9D91 ld r25,X+ |
677 051e 9183 std Z+1,r25 |
678 0520 8083 st Z,r24 |
679 0522 3296 adiw r30,2 |
680 0524 1982 std Y+1,__zero_reg__ |
681 0526 1882 st Y,__zero_reg__ |
682 0528 2296 adiw r28,2 |
683 052a 2150 subi r18,lo8(-(-1)) |
684 052c 27FF sbrs r18,7 |
685 052e 00C0 rjmp .L89 |
686 .L10: |
687 /* epilogue: frame size=0 */ |
688 0530 FF91 pop r31 |
689 0532 EF91 pop r30 |
690 0534 DF91 pop r29 |
691 0536 CF91 pop r28 |
692 0538 BF91 pop r27 |
693 053a AF91 pop r26 |
694 053c 9F91 pop r25 |
695 053e 8F91 pop r24 |
696 0540 7F91 pop r23 |
697 0542 6F91 pop r22 |
698 0544 5F91 pop r21 |
699 0546 4F91 pop r20 |
700 0548 3F91 pop r19 |
701 054a 2F91 pop r18 |
702 054c 1F91 pop r17 |
703 054e 0F91 pop r16 |
704 0550 0F90 pop __tmp_reg__ |
705 0552 0FBE out __SREG__,__tmp_reg__ |
706 0554 0F90 pop __tmp_reg__ |
707 0556 1F90 pop __zero_reg__ |
708 0558 1895 reti |
709 /* epilogue end (size=21) */ |
710 /* function __vector_12 size 651 (609) */ |
712 .comm PPM_in,52,1 |
713 .comm PPM_diff,52,1 |
714 .comm Channels,1,1 |
715 /* File "rc.c": code 692 = 0x02b4 ( 645), prologues 23, epilogues 24 */ |
DEFINED SYMBOLS |
*ABS*:00000000 rc.c |
C:\Temp/cctnQZFd.s:3 *ABS*:0000003f __SREG__ |
C:\Temp/cctnQZFd.s:4 *ABS*:0000003e __SP_H__ |
C:\Temp/cctnQZFd.s:5 *ABS*:0000003d __SP_L__ |
C:\Temp/cctnQZFd.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Temp/cctnQZFd.s:7 *ABS*:00000001 __zero_reg__ |
C:\Temp/cctnQZFd.s:14 .data:00000000 PPM_Neutral |
C:\Temp/cctnQZFd.s:19 .data:00000002 NewPpmData |
C:\Temp/cctnQZFd.s:26 .bss:00000000 tmpChannels |
C:\Temp/cctnQZFd.s:31 .text:00000000 rc_sum_init |
*COM*:00000034 PPM_diff |
*COM*:00000034 PPM_in |
.bss:00000001 AltICR.0 |
C:\Temp/cctnQZFd.s:76 .bss:00000003 index.1 |
C:\Temp/cctnQZFd.s:77 .bss:00000005 AltICR.2 |
C:\Temp/cctnQZFd.s:78 .bss:00000007 ppm_in.3 |
C:\Temp/cctnQZFd.s:79 .bss:00000021 ppm_diff.4 |
C:\Temp/cctnQZFd.s:80 .bss:0000003b old_ppm_in.5 |
C:\Temp/cctnQZFd.s:81 .bss:00000055 old_ppm_diff.6 |
C:\Temp/cctnQZFd.s:82 .bss:0000006f index.7 |
C:\Temp/cctnQZFd.s:83 .bss:00000070 okay_cnt.8 |
C:\Temp/cctnQZFd.s:87 .text:00000052 __vector_12 |
*COM*:00000001 Channels |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
AdNeutralGier |
AdNeutralRoll |
AdNeutralNick |
EE_Parameter |
SenderOkay |
__divmodhi4 |
PlatinenVersion |
MotorenEin |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/sbus.c |
---|
0,0 → 1,199 |
/*####################################################################################### |
Decodes the sbus protocol |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software Nutzungsbedingungen (english version: see below) |
// + der Fa. HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland - nachfolgend Lizenzgeber genannt - |
// + Der Lizenzgeber räumt dem Kunden ein nicht-ausschließliches, zeitlich und räumlich* unbeschränktes Recht ein, die im den |
// + Mikrocontroller verwendete Firmware für die Hardware Flight-Ctrl, Navi-Ctrl, BL-Ctrl, MK3Mag & PC-Programm MikroKopter-Tool |
// + - nachfolgend Software genannt - nur für private Zwecke zu nutzen. |
// + Der Einsatz dieser Software ist nur auf oder mit Produkten des Lizenzgebers zulässig. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die vom Lizenzgeber gelieferte Software ist urheberrechtlich geschützt. Alle Rechte an der Software sowie an sonstigen im |
// + Rahmen der Vertragsanbahnung und Vertragsdurchführung überlassenen Unterlagen stehen im Verhältnis der Vertragspartner ausschließlich dem Lizenzgeber zu. |
// + Die in der Software enthaltenen Copyright-Vermerke, Markenzeichen, andere Rechtsvorbehalte, Seriennummern sowie |
// + sonstige der Programmidentifikation dienenden Merkmale dürfen vom Kunden nicht verändert oder unkenntlich gemacht werden. |
// + Der Kunde trifft angemessene Vorkehrungen für den sicheren Einsatz der Software. Er wird die Software gründlich auf deren |
// + Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Die Haftung des Lizenzgebers wird - soweit gesetzlich zulässig - begrenzt in Höhe des typischen und vorhersehbaren |
// + Schadens. Die gesetzliche Haftung bei Personenschäden und nach dem Produkthaftungsgesetz bleibt unberührt. Dem Lizenzgeber steht jedoch der Einwand |
// + des Mitverschuldens offen. |
// + Der Kunde trifft angemessene Vorkehrungen für den Fall, dass die Software ganz oder teilweise nicht ordnungsgemäß arbeitet. |
// + Er wird die Software gründlich auf deren Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Der Kunde wird er seine Daten vor Einsatz der Software nach dem Stand der Technik sichern. |
// + Der Kunde ist darüber unterrichtet, dass der Lizenzgeber seine Daten im zur Vertragsdurchführung erforderlichen Umfang |
// + und auf Grundlage der Datenschutzvorschriften erhebt, speichert, verarbeitet und, sofern notwendig, an Dritte übermittelt. |
// + *) Die räumliche Nutzung bezieht sich nur auf den Einsatzort, nicht auf die Reichweite der programmierten Software. |
// + #### ENDE DER NUTZUNGSBEDINGUNGEN ####' |
// + Hinweis: Informationen über erweiterte Nutzungsrechte (wie z.B. Nutzung für nicht-private Zwecke) sind auf Anfrage per Email an info(@)hisystems.de verfügbar. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software LICENSING TERMS |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + of HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland, Germany - the Licensor - |
// + The Licensor grants the customer a non-exclusive license to use the microcontroller firmware of the Flight-Ctrl, Navi-Ctrl, BL-Ctrl, and MK3Mag hardware |
// + (the Software) exclusively for private purposes. The License is unrestricted with respect to time and territory*. |
// + The Software may only be used with the Licensor's products. |
// + The Software provided by the Licensor is protected by copyright. With respect to the relationship between the parties to this |
// + agreement, all rights pertaining to the Software and other documents provided during the preparation and execution of this |
// + agreement shall be the property of the Licensor. |
// + The information contained in the Software copyright notices, trademarks, other legal reservations, serial numbers and other |
// + features that can be used to identify the program may not be altered or defaced by the customer. |
// + The customer shall be responsible for taking reasonable precautions |
// + for the safe use of the Software. The customer shall test the Software thoroughly regarding its suitability for the |
// + intended purpose before implementing it for actual operation. The Licensor's liability shall be limited to the extent of typical and |
// + foreseeable damage to the extent permitted by law, notwithstanding statutory liability for bodily injury and product |
// + liability. However, the Licensor shall be entitled to the defense of contributory negligence. |
// + The customer will take adequate precautions in the case, that the software is not working properly. The customer will test |
// + the software for his purpose before any operational usage. The customer will backup his data before using the software. |
// + The customer understands that the Licensor collects, stores and processes, and, where required, forwards, customer data |
// + to third parties to the extent necessary for executing the agreement, subject to applicable data protection and privacy regulations. |
// + *) The territory aspect only refers to the place where the Software is used, not its programmed range. |
// + #### END OF LICENSING TERMS #### |
// + Note: For information on license extensions (e.g. commercial use), please contact us at info(@)hisystems.de. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "sbus.h" |
#include "main.h" |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
unsigned char NewSBusData = 0, sBusBuffer[25]; |
//############################################################################ |
// USART1 initialisation from killagreg |
void SbusUartInit(void) |
//############################################################################ |
{ |
// -- Start of USART1 initialisation for Spekturm seriell-mode |
// USART1 Control and Status Register A, B, C and baud rate register |
uint8_t sreg = SREG; |
uint16_t ubrr = (uint16_t) ((uint32_t) SYSCLK/(8 * 100000) - 1); |
// disable all interrupts before reconfiguration |
cli(); |
// disable RX-Interrupt |
UCSR1B &= ~(1 << RXCIE1); |
// disable TX-Interrupt |
UCSR1B &= ~(1 << TXCIE1); |
// disable DRE-Interrupt |
UCSR1B &= ~(1 << UDRIE1); |
// set direction of RXD1 and TXD1 pins |
// set RXD1 (PD2) as an input pin |
PORTD |= (1 << PORTD2); |
DDRD &= ~(1 << DDD2); |
// set TXD1 (PD3) as an output pin |
PORTD |= (1 << PORTD3); |
DDRD |= (1 << DDD3); |
// USART0 Baud Rate Register |
// set clock divider |
UBRR1H = (uint8_t)(ubrr>>8); |
UBRR1L = (uint8_t)ubrr; |
// enable double speed operation |
UCSR1A |= (1 << U2X1); |
// enable receiver and transmitter |
//UCSR1B = (1<<RXEN1)|(1<<TXEN1); |
UCSR1B = (1<<RXEN1); |
// set asynchronous mode |
UCSR1C &= ~(1 << UMSEL11); |
UCSR1C &= ~(1 << UMSEL10); |
// parity |
UCSR1C <= (1 << UPM11); // even |
UCSR1C &= ~(1 << UPM10); |
// stop bit |
UCSR1C |= (1 << USBS1); // two |
// 8-bit |
UCSR1B &= ~(1 << UCSZ12); |
UCSR1C |= (1 << UCSZ11); |
UCSR1C |= (1 << UCSZ10); |
// flush receive buffer explicit |
while(UCSR1A & (1<<RXC1)) UDR1; |
// enable RX-interrupts at the end |
UCSR1B |= (1 << RXCIE1); |
// -- End of USART1 initialisation |
// restore global interrupt flags |
sBusBuffer[23] |= 4; // This Bit contains the 'Signal loss' |
SREG = sreg; |
return; |
} |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define MIN_FRAMEGAP 68 // 7ms |
#define MAX_BYTEGAP 3 // 310us |
//############################################################################ |
// Is called by the uart RX interrupt |
//############################################################################ |
void SbusParser(unsigned char udr) |
{ |
static unsigned char ptr = 0; |
if(!SpektrumTimer && udr == 0x0f) // wait for the start |
{ |
ptr = 0; |
SpektrumTimer = 80; // 8ms gap |
} |
else |
{ |
if(++ptr == 24) // last byte |
{ |
NewSBusData = 1; |
} |
else |
if(ptr > 24) ptr = 25; |
else |
{ |
sBusBuffer[ptr] = udr; // collect all bytes |
} |
} |
} |
void ProcessSBus(void) |
{ |
static unsigned char load = 0; |
unsigned char bitmask8 = 1, sbyte = 2, i, index = 1, process; |
unsigned int bitmask11 = 256; |
signed int signal = 0,tmp; |
if(!(sBusBuffer[23] & 4)) // This Bit contains the 'Signal loss' |
{ |
TIMSK1 &= ~_BV(ICIE1); // disable PPM-Input |
if(EE_Parameter.FailsafeChannel == 0 || PPM_in[EE_Parameter.FailsafeChannel] < 100) // forces Failsafe if the receiver doesn't have 'signal loss' on Failsafe |
{ |
if(SenderOkay < 200) SenderOkay += 20; else SenderOkay = 200; |
} |
signal = sBusBuffer[1]; |
if(!load--) { process = (12*11 - 8); load = 2;} else process = (4*11 - 8); // lowers the processor load |
for(i = 0; i < process; i++) // collect the single bits |
{ |
if(sBusBuffer[sbyte] & bitmask8) signal |= bitmask11; |
bitmask8 *= 2; |
if(!bitmask8) |
{ |
bitmask8 = 1; |
sbyte++; |
} |
bitmask11 *= 2; |
if(bitmask11 == 2048) |
{ |
bitmask11 = 1; |
signal = (signal-1024) / 5; // the resolution is higher than required |
tmp = (3 * (PPM_in[index]) + signal) / 4; |
if(tmp > signal+1) tmp--; else |
if(tmp < signal-1) tmp++; |
if(SenderOkay >= 195) PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3; |
else PPM_diff[index] = 0; |
PPM_in[index] = tmp; |
signal = 0; |
index++; // next channel |
} |
} |
NewPpmData = 0; // Null bedeutet: Neue Daten |
} |
NewSBusData = 0; |
} |
#endif |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/sbus.h |
---|
0,0 → 1,11 |
#ifndef _SBUS_H |
#define _SBUS_H |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
extern unsigned char NewSBusData, sBusBuffer[25]; |
extern void SbusParser(unsigned char); |
extern void SbusUartInit(void); |
extern void ProcessSBus(void); |
#endif |
#endif |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/sbus.lst |
---|
0,0 → 1,369 |
1 .file "sbus.c" |
2 .arch atmega1284p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .global NewSBusData |
11 .global NewSBusData |
12 .section .bss |
15 NewSBusData: |
16 0000 00 .skip 1,0 |
17 .text |
18 .global SbusUartInit |
20 SbusUartInit: |
21 /* prologue: frame size=0 */ |
22 /* prologue end (size=0) */ |
23 0000 4FB7 in r20,95-0x20 |
24 0002 28E1 ldi r18,lo8(24) |
25 0004 30E0 ldi r19,hi8(24) |
26 /* #APP */ |
27 0006 F894 cli |
28 /* #NOAPP */ |
29 0008 8091 C900 lds r24,201 |
30 000c 8F77 andi r24,lo8(127) |
31 000e 8093 C900 sts 201,r24 |
32 0012 8091 C900 lds r24,201 |
33 0016 8F7B andi r24,lo8(-65) |
34 0018 8093 C900 sts 201,r24 |
35 001c 8091 C900 lds r24,201 |
36 0020 8F7D andi r24,lo8(-33) |
37 0022 8093 C900 sts 201,r24 |
38 0026 5A9A sbi 43-0x20,2 |
39 0028 5298 cbi 42-0x20,2 |
40 002a 5B9A sbi 43-0x20,3 |
41 002c 539A sbi 42-0x20,3 |
42 002e 832F mov r24,r19 |
43 0030 9927 clr r25 |
44 0032 8093 CD00 sts 205,r24 |
45 0036 2093 CC00 sts 204,r18 |
46 003a 8091 C800 lds r24,200 |
47 003e 8260 ori r24,lo8(2) |
48 0040 8093 C800 sts 200,r24 |
49 0044 80E1 ldi r24,lo8(16) |
50 0046 8093 C900 sts 201,r24 |
51 004a 8091 CA00 lds r24,202 |
52 004e 8F77 andi r24,lo8(127) |
53 0050 8093 CA00 sts 202,r24 |
54 0054 8091 CA00 lds r24,202 |
55 0058 8F7B andi r24,lo8(-65) |
56 005a 8093 CA00 sts 202,r24 |
57 005e 8091 CA00 lds r24,202 |
58 0062 8091 CA00 lds r24,202 |
59 0066 8F7E andi r24,lo8(-17) |
60 0068 8093 CA00 sts 202,r24 |
61 006c 8091 CA00 lds r24,202 |
62 0070 8860 ori r24,lo8(8) |
63 0072 8093 CA00 sts 202,r24 |
64 0076 8091 C900 lds r24,201 |
65 007a 8B7F andi r24,lo8(-5) |
66 007c 8093 C900 sts 201,r24 |
67 0080 8091 CA00 lds r24,202 |
68 0084 8460 ori r24,lo8(4) |
69 0086 8093 CA00 sts 202,r24 |
70 008a 8091 CA00 lds r24,202 |
71 008e 8260 ori r24,lo8(2) |
72 0090 8093 CA00 sts 202,r24 |
73 .L7: |
74 0094 8091 C800 lds r24,200 |
75 0098 87FF sbrs r24,7 |
76 009a 00C0 rjmp .L6 |
77 009c 8091 CE00 lds r24,206 |
78 00a0 00C0 rjmp .L7 |
79 .L6: |
80 00a2 8091 C900 lds r24,201 |
81 00a6 8068 ori r24,lo8(-128) |
82 00a8 8093 C900 sts 201,r24 |
83 00ac 8091 0000 lds r24,sBusBuffer+23 |
84 00b0 8460 ori r24,lo8(4) |
85 00b2 8093 0000 sts sBusBuffer+23,r24 |
86 00b6 4FBF out 95-0x20,r20 |
87 /* epilogue: frame size=0 */ |
88 00b8 0895 ret |
89 /* epilogue end (size=1) */ |
90 /* function SbusUartInit size 94 (93) */ |
92 .lcomm ptr.1,1 |
93 .global SbusParser |
95 SbusParser: |
96 /* prologue: frame size=0 */ |
97 /* prologue end (size=0) */ |
98 00ba 9091 0000 lds r25,SpektrumTimer |
99 00be 9923 tst r25 |
100 00c0 01F4 brne .L9 |
101 00c2 8F30 cpi r24,lo8(15) |
102 00c4 01F4 brne .L9 |
103 00c6 9093 0000 sts ptr.1,r25 |
104 00ca 80E5 ldi r24,lo8(80) |
105 00cc 8093 0000 sts SpektrumTimer,r24 |
106 00d0 0895 ret |
107 .L9: |
108 00d2 E091 0000 lds r30,ptr.1 |
109 00d6 EF5F subi r30,lo8(-(1)) |
110 00d8 E093 0000 sts ptr.1,r30 |
111 00dc E831 cpi r30,lo8(24) |
112 00de 01F4 brne .L11 |
113 00e0 81E0 ldi r24,lo8(1) |
114 00e2 8093 0000 sts NewSBusData,r24 |
115 00e6 0895 ret |
116 .L11: |
117 00e8 E931 cpi r30,lo8(25) |
118 00ea 00F0 brlo .L13 |
119 00ec 89E1 ldi r24,lo8(25) |
120 00ee 8093 0000 sts ptr.1,r24 |
121 00f2 0895 ret |
122 .L13: |
123 00f4 FF27 clr r31 |
124 00f6 E050 subi r30,lo8(-(sBusBuffer)) |
125 00f8 F040 sbci r31,hi8(-(sBusBuffer)) |
126 00fa 8083 st Z,r24 |
127 00fc 0895 ret |
128 /* epilogue: frame size=0 */ |
129 /* epilogue: noreturn */ |
130 /* epilogue end (size=0) */ |
131 /* function SbusParser size 34 (34) */ |
133 .lcomm load.0,1 |
134 .global ProcessSBus |
136 ProcessSBus: |
137 /* prologue: frame size=0 */ |
138 00fe A0E0 ldi r26,lo8(0) |
139 0100 B0E0 ldi r27,hi8(0) |
140 0102 E0E0 ldi r30,pm_lo8(1f) |
141 0104 F0E0 ldi r31,pm_hi8(1f) |
142 0106 0C94 0000 jmp __prologue_saves__+16 |
143 1: |
144 /* prologue end (size=6) */ |
145 010a 91E0 ldi r25,lo8(1) |
146 010c D92E mov r13,r25 |
147 010e 82E0 ldi r24,lo8(2) |
148 0110 A82E mov r10,r24 |
149 0112 BD2C mov r11,r13 |
150 0114 E12C mov r14,__zero_reg__ |
151 0116 01E0 ldi r16,hi8(256) |
152 0118 F02E mov r15,r16 |
153 011a 8091 0000 lds r24,sBusBuffer+23 |
154 011e 82FD sbrc r24,2 |
155 0120 00C0 rjmp .L16 |
156 0122 8091 6F00 lds r24,111 |
157 0126 8F7D andi r24,lo8(-33) |
158 0128 8093 6F00 sts 111,r24 |
159 012c E091 0000 lds r30,EE_Parameter+105 |
160 0130 EE23 tst r30 |
161 0132 01F0 breq .L18 |
162 0134 FF27 clr r31 |
163 0136 EE0F add r30,r30 |
164 0138 FF1F adc r31,r31 |
165 013a E050 subi r30,lo8(-(PPM_in)) |
166 013c F040 sbci r31,hi8(-(PPM_in)) |
167 013e 8081 ld r24,Z |
168 0140 9181 ldd r25,Z+1 |
169 0142 8436 cpi r24,100 |
170 0144 9105 cpc r25,__zero_reg__ |
171 0146 04F4 brge .L17 |
172 .L18: |
173 0148 8091 0000 lds r24,SenderOkay |
174 014c 883C cpi r24,lo8(-56) |
175 014e 00F4 brsh .L19 |
176 0150 8091 0000 lds r24,SenderOkay |
177 0154 8C5E subi r24,lo8(-(20)) |
178 0156 00C0 rjmp .L38 |
179 .L19: |
180 0158 88EC ldi r24,lo8(-56) |
181 .L38: |
182 015a 8093 0000 sts SenderOkay,r24 |
183 .L17: |
184 015e 8091 0000 lds r24,sBusBuffer+1 |
185 0162 682F mov r22,r24 |
186 0164 7727 clr r23 |
187 0166 8091 0000 lds r24,load.0 |
188 016a 8150 subi r24,lo8(-(-1)) |
189 016c 8093 0000 sts load.0,r24 |
190 0170 8F3F cpi r24,lo8(-1) |
191 0172 01F4 brne .L21 |
192 0174 1CE7 ldi r17,lo8(124) |
193 0176 C12E mov r12,r17 |
194 0178 82E0 ldi r24,lo8(2) |
195 017a 8093 0000 sts load.0,r24 |
196 017e 00C0 rjmp .L22 |
197 .L21: |
198 0180 C4E2 ldi r28,lo8(36) |
199 0182 CC2E mov r12,r28 |
200 .L22: |
201 0184 40E0 ldi r20,lo8(0) |
202 .L39: |
203 0186 4C15 cp r20,r12 |
204 0188 00F0 brlo .+2 |
205 018a 00C0 rjmp .L37 |
206 018c EA2D mov r30,r10 |
207 018e FF27 clr r31 |
208 0190 E050 subi r30,lo8(-(sBusBuffer)) |
209 0192 F040 sbci r31,hi8(-(sBusBuffer)) |
210 0194 8081 ld r24,Z |
211 0196 8D21 and r24,r13 |
212 0198 01F0 breq .L26 |
213 019a 6E29 or r22,r14 |
214 019c 7F29 or r23,r15 |
215 .L26: |
216 019e 8D2D mov r24,r13 |
217 01a0 9927 clr r25 |
218 01a2 880F add r24,r24 |
219 01a4 991F adc r25,r25 |
220 01a6 D82E mov r13,r24 |
221 01a8 8823 tst r24 |
222 01aa 01F4 brne .L27 |
223 01ac B1E0 ldi r27,lo8(1) |
224 01ae DB2E mov r13,r27 |
225 01b0 AD0C add r10,r13 |
226 .L27: |
227 01b2 EE0C add r14,r14 |
228 01b4 FF1C adc r15,r15 |
229 01b6 20E0 ldi r18,lo8(2048) |
230 01b8 E216 cp r14,r18 |
231 01ba 28E0 ldi r18,hi8(2048) |
232 01bc F206 cpc r15,r18 |
233 01be 01F0 breq .+2 |
234 01c0 00C0 rjmp .L25 |
235 01c2 A1E0 ldi r26,lo8(1) |
236 01c4 EA2E mov r14,r26 |
237 01c6 F12C mov r15,__zero_reg__ |
238 01c8 CB01 movw r24,r22 |
239 01ca 8050 subi r24,lo8(-(-1024)) |
240 01cc 9440 sbci r25,hi8(-(-1024)) |
241 01ce 65E0 ldi r22,lo8(5) |
242 01d0 70E0 ldi r23,hi8(5) |
243 01d2 0E94 0000 call __divmodhi4 |
244 01d6 AB2D mov r26,r11 |
245 01d8 BB27 clr r27 |
246 01da FD01 movw r30,r26 |
247 01dc EA0F add r30,r26 |
248 01de FB1F adc r31,r27 |
249 01e0 E050 subi r30,lo8(-(PPM_in)) |
250 01e2 F040 sbci r31,hi8(-(PPM_in)) |
251 01e4 8081 ld r24,Z |
252 01e6 9181 ldd r25,Z+1 |
253 01e8 9C01 movw r18,r24 |
254 01ea 220F lsl r18 |
255 01ec 331F rol r19 |
256 01ee 280F add r18,r24 |
257 01f0 391F adc r19,r25 |
258 01f2 260F add r18,r22 |
259 01f4 371F adc r19,r23 |
260 01f6 37FF sbrs r19,7 |
261 01f8 00C0 rjmp .L29 |
262 01fa 2D5F subi r18,lo8(-(3)) |
263 01fc 3F4F sbci r19,hi8(-(3)) |
264 .L29: |
265 01fe E901 movw r28,r18 |
266 0200 D595 asr r29 |
267 0202 C795 ror r28 |
268 0204 D595 asr r29 |
269 0206 C795 ror r28 |
270 0208 CB01 movw r24,r22 |
271 020a 0196 adiw r24,1 |
272 020c 8C17 cp r24,r28 |
273 020e 9D07 cpc r25,r29 |
274 0210 04F4 brge .L30 |
275 0212 2197 sbiw r28,1 |
276 0214 00C0 rjmp .L31 |
277 .L30: |
278 0216 6150 subi r22,lo8(-(-1)) |
279 0218 7040 sbci r23,hi8(-(-1)) |
280 021a C617 cp r28,r22 |
281 021c D707 cpc r29,r23 |
282 021e 04F4 brge .L31 |
283 0220 2196 adiw r28,1 |
284 .L31: |
285 0222 8091 0000 lds r24,SenderOkay |
286 0226 833C cpi r24,lo8(-61) |
287 0228 00F0 brlo .L33 |
288 022a 8D01 movw r16,r26 |
289 022c 0A0F add r16,r26 |
290 022e 1B1F adc r17,r27 |
291 0230 F801 movw r30,r16 |
292 0232 E050 subi r30,lo8(-(PPM_in)) |
293 0234 F040 sbci r31,hi8(-(PPM_in)) |
294 0236 8081 ld r24,Z |
295 0238 9181 ldd r25,Z+1 |
296 023a FE01 movw r30,r28 |
297 023c E81B sub r30,r24 |
298 023e F90B sbc r31,r25 |
299 0240 CF01 movw r24,r30 |
300 0242 63E0 ldi r22,lo8(3) |
301 0244 70E0 ldi r23,hi8(3) |
302 0246 0E94 0000 call __divmodhi4 |
303 024a CB01 movw r24,r22 |
304 024c 880F lsl r24 |
305 024e 991F rol r25 |
306 0250 860F add r24,r22 |
307 0252 971F adc r25,r23 |
308 0254 0050 subi r16,lo8(-(PPM_diff)) |
309 0256 1040 sbci r17,hi8(-(PPM_diff)) |
310 0258 F801 movw r30,r16 |
311 025a 9183 std Z+1,r25 |
312 025c 8083 st Z,r24 |
313 025e 00C0 rjmp .L34 |
314 .L33: |
315 0260 AA0F add r26,r26 |
316 0262 BB1F adc r27,r27 |
317 0264 A050 subi r26,lo8(-(PPM_diff)) |
318 0266 B040 sbci r27,hi8(-(PPM_diff)) |
319 0268 1196 adiw r26,1 |
320 026a 1C92 st X,__zero_reg__ |
321 026c 1E92 st -X,__zero_reg__ |
322 .L34: |
323 026e EB2D mov r30,r11 |
324 0270 FF27 clr r31 |
325 0272 EE0F add r30,r30 |
326 0274 FF1F adc r31,r31 |
327 0276 E050 subi r30,lo8(-(PPM_in)) |
328 0278 F040 sbci r31,hi8(-(PPM_in)) |
329 027a D183 std Z+1,r29 |
330 027c C083 st Z,r28 |
331 027e 60E0 ldi r22,lo8(0) |
332 0280 70E0 ldi r23,hi8(0) |
333 0282 B394 inc r11 |
334 .L25: |
335 0284 4F5F subi r20,lo8(-(1)) |
336 0286 00C0 rjmp .L39 |
337 .L37: |
338 0288 1092 0000 sts NewPpmData,__zero_reg__ |
339 .L16: |
340 028c 1092 0000 sts NewSBusData,__zero_reg__ |
341 /* epilogue: frame size=0 */ |
342 0290 EAE0 ldi r30,10 |
343 0292 CDB7 in r28,__SP_L__ |
344 0294 DEB7 in r29,__SP_H__ |
345 0296 0C94 0000 jmp __epilogue_restores__+16 |
346 /* epilogue end (size=5) */ |
347 /* function ProcessSBus size 207 (196) */ |
349 .comm sBusBuffer,25,1 |
350 /* File "sbus.c": code 335 = 0x014f ( 323), prologues 6, epilogues 6 */ |
DEFINED SYMBOLS |
*ABS*:00000000 sbus.c |
C:\Temp/ccCCtwIg.s:3 *ABS*:0000003f __SREG__ |
C:\Temp/ccCCtwIg.s:4 *ABS*:0000003e __SP_H__ |
C:\Temp/ccCCtwIg.s:5 *ABS*:0000003d __SP_L__ |
C:\Temp/ccCCtwIg.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Temp/ccCCtwIg.s:7 *ABS*:00000001 __zero_reg__ |
C:\Temp/ccCCtwIg.s:15 .bss:00000000 NewSBusData |
C:\Temp/ccCCtwIg.s:20 .text:00000000 SbusUartInit |
*COM*:00000019 sBusBuffer |
.bss:00000001 ptr.1 |
C:\Temp/ccCCtwIg.s:95 .text:000000ba SbusParser |
C:\Temp/ccCCtwIg.s:92 .bss:00000002 load.0 |
C:\Temp/ccCCtwIg.s:136 .text:000000fe ProcessSBus |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
SpektrumTimer |
__prologue_saves__ |
EE_Parameter |
PPM_in |
SenderOkay |
__divmodhi4 |
PPM_diff |
NewPpmData |
__epilogue_restores__ |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/spi.c |
---|
0,0 → 1,417 |
// ######################## SPI - FlightCtrl ################### |
#include "main.h" |
#include "eeprom.h" |
//struct str_ToNaviCtrl_Version ToNaviCtrl_Version; |
//struct str_FromNaviCtrl_Version FromNaviCtrl_Version; |
struct str_ToNaviCtrl ToNaviCtrl; |
struct str_FromNaviCtrl FromNaviCtrl; |
struct str_FromNaviCtrl_Value FromNaviCtrl_Value; |
struct str_SPI_VersionInfo NC_Version; |
struct str_GPSInfo GPSInfo; |
unsigned char SPI_BufferIndex; |
unsigned char SPI_RxBufferIndex; |
signed char FromNC_Rotate_C = 32, FromNC_Rotate_S = 0; |
volatile unsigned char SPI_Buffer[sizeof(FromNaviCtrl)]; |
unsigned char *SPI_TX_Buffer; |
unsigned char SPITransferCompleted, SPI_ChkSum; |
unsigned char SPI_RxDataValid,NaviDataOkay = 250; |
unsigned char SPI_CommandSequence[] = { SPI_FCCMD_STICK, SPI_FCCMD_USER, SPI_FCCMD_PARAMETER1, |
SPI_FCCMD_STICK, SPI_FCCMD_MISC, SPI_FCCMD_VERSION, |
SPI_FCCMD_STICK, SPI_FCCMD_SERVOS, SPI_FCCMD_ACCU, |
SPI_FCCMD_STICK, SPI_FCCMD_PARAMETER2 |
}; |
unsigned char SPI_CommandCounter = 0; |
unsigned char NC_ErrorCode = 0; |
unsigned char NC_GPS_ModeCharacter = ' '; |
unsigned char EarthMagneticField = 0; |
unsigned char EarthMagneticInclination = 0, EarthMagneticInclinationTheoretic = 0; |
unsigned char NC_To_FC_Flags = 0; |
unsigned char NC_To_FC_MaxAltitude = 0; // this is a Parameter on the SD-card |
signed int POI_KameraNick = 0; // in 0,1° |
vector16_t MagVec = {0,0,0}; |
#ifdef USE_SPI_COMMUNICATION |
//------------------------------------------------------ |
void SPI_MasterInit(void) |
{ |
DDR_SPI |= (1<<DD_MOSI)|(1<<DD_SCK); // Set MOSI and SCK output, all others input |
SLAVE_SELECT_DDR_PORT |= (1 << SPI_SLAVE_SELECT); |
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR1)|(0<<SPR0)|(0<<SPIE); // Enable SPI, Master, set clock rate fck/64 |
SPSR = 0;//(1<<SPI2X); |
SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); |
SPITransferCompleted = 1; |
//SPDR = 0x00; // dummy write |
ToNaviCtrl.Sync1 = 0xAA; |
ToNaviCtrl.Sync2 = 0x83; |
ToNaviCtrl.Command = SPI_FCCMD_USER; |
ToNaviCtrl.IntegralNick = 0; |
ToNaviCtrl.IntegralRoll = 0; |
FromNaviCtrl_Value.SerialDataOkay = 0; |
SPI_RxDataValid = 0; |
} |
//------------------------------------------------------ |
void SPI_StartTransmitPacket(void) |
{ |
//if ((SLAVE_SELECT_PORT & (1 << SPI_SLAVE_SELECT)) == 0) return; // transfer of prev. packet not completed |
if (!SPITransferCompleted) return; |
// _delay_us(30); |
SLAVE_SELECT_PORT &= ~(1 << SPI_SLAVE_SELECT); // SelectSlave |
SPI_TX_Buffer = (unsigned char *) &ToNaviCtrl; |
ToNaviCtrl.Command = SPI_CommandSequence[SPI_CommandCounter++]; |
if (SPI_CommandCounter >= sizeof(SPI_CommandSequence)) SPI_CommandCounter = 0; |
SPITransferCompleted = 0; |
UpdateSPI_Buffer(); // update buffer |
SPI_BufferIndex = 1; |
// -- Debug-Output --- |
//---- |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
ToNaviCtrl.Chksum = ToNaviCtrl.Sync1; |
SPDR = ToNaviCtrl.Sync1; // Start transmission |
// SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave |
} |
//------------------------------------------------------ |
//SIGNAL(SIG_SPI) |
void SPI_TransmitByte(void) |
{ |
static unsigned char SPI_RXState = 0; |
unsigned char rxdata; |
static unsigned char rxchksum; |
if (SPITransferCompleted) return; |
if (!(SPSR & (1 << SPIF))) return; |
SendSPI = 4; |
// _delay_us(30); |
SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave |
rxdata = SPDR; |
switch ( SPI_RXState) |
{ |
case 0: |
SPI_RxBufferIndex = 0; |
rxchksum = rxdata; |
if (rxdata == 0x81 ) { SPI_RXState = 1; } // 1. Syncbyte ok |
break; |
case 1: |
if (rxdata == 0x55) { rxchksum += rxdata; SPI_RXState = 2; } // 2. Syncbyte ok |
else SPI_RXState = 0; |
break; |
case 2: |
SPI_Buffer[SPI_RxBufferIndex++]= rxdata; // get data |
//DebugOut.Analog[19]++; |
if (SPI_RxBufferIndex >= sizeof(FromNaviCtrl)) |
{ |
if (rxdata == rxchksum) |
{ |
unsigned char *ptr = (unsigned char *)&FromNaviCtrl; |
memcpy(ptr, (unsigned char *) SPI_Buffer, sizeof(SPI_Buffer)); |
SPI_RxDataValid = 1; |
} |
else |
{ |
SPI_RxDataValid = 0; |
} |
SPI_RXState = 0; |
} |
else rxchksum += rxdata; |
break; |
} |
if (SPI_BufferIndex < sizeof(ToNaviCtrl)) |
{ |
SLAVE_SELECT_PORT &= ~(1 << SPI_SLAVE_SELECT); // SelectSlave |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
SPDR = SPI_TX_Buffer[SPI_BufferIndex]; |
ToNaviCtrl.Chksum += SPI_TX_Buffer[SPI_BufferIndex]; |
// SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave |
} |
else SPITransferCompleted = 1; |
SPI_BufferIndex++; |
} |
//------------------------------------------------------ |
void UpdateSPI_Buffer(void) |
{ |
signed int tmp; |
static unsigned char motorindex, oldcommand = SPI_NCCMD_VERSION; |
ToNaviCtrl.IntegralNick = (int) (IntegralNick / (long)(EE_Parameter.GyroAccFaktor * 4)); |
ToNaviCtrl.IntegralRoll = (int) (IntegralRoll / (long)(EE_Parameter.GyroAccFaktor * 4)); |
ToNaviCtrl.GyroCompass = (10 * ErsatzKompass) / GIER_GRAD_FAKTOR; |
ToNaviCtrl.GyroGier = (signed int) AdNeutralGier - AdWertGier; |
ToNaviCtrl.AccNick = ((int) ACC_AMPLIFY * (NaviAccNick / NaviCntAcc))/4; |
ToNaviCtrl.AccRoll = ((int) ACC_AMPLIFY * (NaviAccRoll / NaviCntAcc))/4; |
NaviCntAcc = 0; NaviAccNick = 0; NaviAccRoll = 0; |
// ToNaviCtrl.User8 = Parameter_UserParam8; |
// ToNaviCtrl.CalState = WinkelOut.CalcState; |
switch(ToNaviCtrl.Command) // |
{ |
case SPI_FCCMD_USER: |
ToNaviCtrl.Param.Byte[0] = Parameter_UserParam1; |
ToNaviCtrl.Param.Byte[1] = Parameter_UserParam2; |
ToNaviCtrl.Param.Byte[2] = Parameter_UserParam3; |
ToNaviCtrl.Param.Byte[3] = Parameter_UserParam4; |
ToNaviCtrl.Param.Byte[4] = Parameter_UserParam5; |
ToNaviCtrl.Param.Byte[5] = Parameter_UserParam6; |
ToNaviCtrl.Param.Byte[6] = Parameter_UserParam7; |
ToNaviCtrl.Param.Byte[7] = Parameter_UserParam8; |
ToNaviCtrl.Param.Byte[8] = FC_StatusFlags; |
FC_StatusFlags &= ~(FC_STATUS_CALIBRATE | FC_STATUS_START); |
ToNaviCtrl.Param.Byte[9] = GetActiveParamSet(); |
ToNaviCtrl.Param.Byte[10] = EE_Parameter.ComingHomeAltitude; |
ToNaviCtrl.Param.Byte[11] = FC_StatusFlags2; |
break; |
case SPI_FCCMD_ACCU: |
ToNaviCtrl.Param.Int[0] = Capacity.ActualCurrent; // 0.1A |
ToNaviCtrl.Param.Int[1] = Capacity.UsedCapacity; // mAh |
ToNaviCtrl.Param.Byte[4] = (unsigned char) UBat; // 0.1V |
ToNaviCtrl.Param.Byte[5] = (unsigned char) BattLowVoltageWarning; //0.1V |
ToNaviCtrl.Param.Byte[6] = VarioCharacter; |
ToNaviCtrl.Param.Byte[7] = motorindex; |
ToNaviCtrl.Param.Byte[8] = Motor[motorindex].MaxPWM; |
ToNaviCtrl.Param.Byte[9] = Motor[motorindex].State; |
ToNaviCtrl.Param.Byte[10] = Motor[motorindex].Temperature; |
ToNaviCtrl.Param.Byte[11] = Motor[motorindex++].Current; |
motorindex %= 12; |
break; |
case SPI_FCCMD_PARAMETER1: |
ToNaviCtrl.Param.Byte[0] = EE_Parameter.NaviGpsModeControl; // Parameters for the Naviboard |
ToNaviCtrl.Param.Byte[1] = EE_Parameter.NaviGpsGain; |
ToNaviCtrl.Param.Byte[2] = EE_Parameter.NaviGpsP; |
ToNaviCtrl.Param.Byte[3] = EE_Parameter.NaviGpsI; |
ToNaviCtrl.Param.Byte[4] = EE_Parameter.NaviGpsD; |
ToNaviCtrl.Param.Byte[5] = EE_Parameter.NaviGpsACC; |
ToNaviCtrl.Param.Byte[6] = EE_Parameter.NaviGpsMinSat; |
ToNaviCtrl.Param.Byte[7] = EE_Parameter.NaviStickThreshold; |
ToNaviCtrl.Param.Byte[8] = EE_Parameter.NaviOperatingRadius; |
ToNaviCtrl.Param.Byte[9] = EE_Parameter.NaviWindCorrection; |
ToNaviCtrl.Param.Byte[10] = EE_Parameter.NaviAccCompensation; |
ToNaviCtrl.Param.Byte[11] = EE_Parameter.NaviAngleLimitation; |
break; |
case SPI_FCCMD_PARAMETER2: |
ToNaviCtrl.Param.Byte[0] = EE_Parameter.NaviOut1Parameter; // Distance between Photo releases |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
// create the ToNC_SpeakHoTT |
if(EE_Parameter.Receiver != RECEIVER_HOTT) |
{ |
if(JetiBeep != 'B') JetiBeep = pgm_read_byte(&JETI_CODE[HoTT_Waring()]); |
else HoTT_Waring(); |
} |
ToNaviCtrl.Param.Byte[1] = ToNC_SpeakHoTT; |
#else |
ToNaviCtrl.Param.Byte[1] = 0; |
#endif |
break; |
case SPI_FCCMD_STICK: |
cli(); |
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127; |
ToNaviCtrl.Param.Byte[0] = (char) tmp; |
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127; |
ToNaviCtrl.Param.Byte[1] = (char) tmp; |
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127; |
ToNaviCtrl.Param.Byte[2] = (char) tmp; |
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127; |
sei(); |
ToNaviCtrl.Param.Byte[3] = (char) tmp; |
ToNaviCtrl.Param.Byte[4] = (unsigned char) Poti[0]; |
ToNaviCtrl.Param.Byte[5] = (unsigned char) Poti[1]; |
ToNaviCtrl.Param.Byte[6] = (unsigned char) Poti[2]; |
ToNaviCtrl.Param.Byte[7] = (unsigned char) Poti[3]; |
ToNaviCtrl.Param.Byte[8] = (unsigned char) Poti[4]; |
ToNaviCtrl.Param.Byte[9] = (unsigned char) Poti[5]; |
ToNaviCtrl.Param.Byte[10] = (unsigned char) Poti[6]; |
ToNaviCtrl.Param.Byte[11] = (unsigned char) Poti[7]; |
break; |
case SPI_FCCMD_MISC: |
if(WinkelOut.CalcState > 5) |
{ |
WinkelOut.CalcState = 0; |
ToNaviCtrl.Param.Byte[0] = 5; |
} |
else ToNaviCtrl.Param.Byte[0] = WinkelOut.CalcState; |
ToNaviCtrl.Param.Byte[1] = EE_Parameter.NaviPH_LoginTime; |
ToNaviCtrl.Param.Int[1] = (int)(HoehenWert/5); |
ToNaviCtrl.Param.Int[2] = (int)(SollHoehe/5); |
ToNaviCtrl.Param.Byte[6] = EE_Parameter.NaviGpsPLimit; |
ToNaviCtrl.Param.Byte[7] = EE_Parameter.NaviGpsILimit; |
ToNaviCtrl.Param.Byte[8] = EE_Parameter.NaviGpsDLimit; |
ToNaviCtrl.Param.Byte[9] = (unsigned char) SenderOkay; |
ToNaviCtrl.Param.Byte[10] = (unsigned char) PPM_in[0]; |
ToNaviCtrl.Param.Byte[11] = DebugOut.Analog[7] / 4; //GasMischanteil |
break; |
case SPI_FCCMD_VERSION: |
ToNaviCtrl.Param.Byte[0] = VERSION_MAJOR; |
ToNaviCtrl.Param.Byte[1] = VERSION_MINOR; |
ToNaviCtrl.Param.Byte[2] = VERSION_PATCH; |
ToNaviCtrl.Param.Byte[3] = NC_SPI_COMPATIBLE; |
ToNaviCtrl.Param.Byte[4] = PlatinenVersion; |
ToNaviCtrl.Param.Byte[5] = VersionInfo.HardwareError[0]; |
ToNaviCtrl.Param.Byte[6] = VersionInfo.HardwareError[1]; |
VersionInfo.HardwareError[0] &= ~FC_ERROR0_CAREFREE; // VersionInfo.HardwareError[0] = 0; |
VersionInfo.HardwareError[1] &= FC_ERROR1_MIXER; |
ToNaviCtrl.Param.Byte[7] = VersionInfo.HardwareError[2]; // unused |
ToNaviCtrl.Param.Byte[8] = Parameter_GlobalConfig; |
ToNaviCtrl.Param.Byte[9] = Parameter_ExtraConfig; |
ToNaviCtrl.Param.Byte[10] = EE_Parameter.OrientationAngle; |
ToNaviCtrl.Param.Byte[11] = EE_Parameter.GlobalConfig3; |
break; |
case SPI_FCCMD_SERVOS: |
ToNaviCtrl.Param.Byte[0] = EE_Parameter.ServoNickRefresh; // Parameters for the Servo Control |
ToNaviCtrl.Param.Byte[1] = EE_Parameter.ServoCompInvert; |
ToNaviCtrl.Param.Byte[2] = Parameter_ServoNickControl; |
ToNaviCtrl.Param.Byte[3] = EE_Parameter.ServoNickComp; |
ToNaviCtrl.Param.Byte[4] = EE_Parameter.ServoNickMin; |
ToNaviCtrl.Param.Byte[5] = EE_Parameter.ServoNickMax; |
ToNaviCtrl.Param.Byte[6] = Parameter_ServoRollControl; |
ToNaviCtrl.Param.Byte[7] = EE_Parameter.ServoRollComp; |
ToNaviCtrl.Param.Byte[8] = EE_Parameter.ServoRollMin; |
ToNaviCtrl.Param.Byte[9] = EE_Parameter.ServoRollMax; |
ToNaviCtrl.Param.Byte[10] = Capacity.MinOfMaxPWM; |
ToNaviCtrl.Param.Byte[11] = DebugOut.Analog[28]; // I2C-Error counter |
break; |
} |
if(SPI_RxDataValid) |
{ |
if(FromNaviCtrl.Command != oldcommand) NaviDataOkay = 250; |
oldcommand = FromNaviCtrl.Command; |
CalculateCompassTimer = 1; |
if(abs(FromNaviCtrl.GPS_Nick) < 512 && abs(FromNaviCtrl.GPS_Roll) < 512 && (EE_Parameter.GlobalConfig & CFG_GPS_AKTIV)) |
{ |
GPS_Nick = FromNaviCtrl.GPS_Nick; |
GPS_Roll = FromNaviCtrl.GPS_Roll; |
} |
// update compass readings |
// MagVec.x = FromNaviCtrl.MagVecX; |
// MagVec.y = FromNaviCtrl.MagVecY; |
// MagVec.z = FromNaviCtrl.MagVecZ; |
if(FromNaviCtrl.CompassValue <= 360) KompassValue = FromNaviCtrl.CompassValue; |
// KompassRichtung = ((540 + KompassValue - KompassSollWert) % 360) - 180; |
if(FromNaviCtrl.BeepTime > beeptime && !DisableRcOffBeeping) beeptime = FromNaviCtrl.BeepTime; |
switch (FromNaviCtrl.Command) |
{ |
case SPI_NCCMD_KALMAN: |
FromNaviCtrl_Value.Kalman_K = FromNaviCtrl.Param.sByte[0]; |
FromNaviCtrl_Value.Kalman_MaxFusion = FromNaviCtrl.Param.sByte[1]; |
FromNaviCtrl_Value.Kalman_MaxDrift = FromNaviCtrl.Param.sByte[2]; |
KompassFusion = FromNaviCtrl.Param.sByte[3]; |
FromNaviCtrl_Value.GpsZ = FromNaviCtrl.Param.Byte[4]; |
FromNC_Rotate_C = FromNaviCtrl.Param.Byte[5]; |
FromNC_Rotate_S = FromNaviCtrl.Param.Byte[6]; |
GPS_Aid_StickMultiplikator = FromNaviCtrl.Param.Byte[7]; |
if(CareFree && FromNaviCtrl.Param.sInt[4] >= 0) |
{ |
KompassSollWert = FromNaviCtrl.Param.sInt[4]; // bei Carefree kann NC den Kompass-Sollwinkel vorgeben |
if(EE_Parameter.CamOrientation) // Kamera angle is not front |
{ |
KompassSollWert += 360 - ((unsigned int) EE_Parameter.CamOrientation * 15); |
KompassSollWert %= 360; |
} |
} |
POI_KameraNick = (POI_KameraNick + FromNaviCtrl.Param.sInt[5]) / 2; // FromNaviCtrl.Param.sInt[5]; // Nickwinkel |
break; |
case SPI_NCCMD_VERSION: |
NC_Version.Major = FromNaviCtrl.Param.Byte[0]; |
NC_Version.Minor = FromNaviCtrl.Param.Byte[1]; |
NC_Version.Patch = FromNaviCtrl.Param.Byte[2]; |
NC_Version.Compatible = FromNaviCtrl.Param.Byte[3]; |
NC_Version.Hardware = FromNaviCtrl.Param.Byte[4]; |
DebugOut.Status[0] |= FromNaviCtrl.Param.Byte[5]; |
DebugOut.Status[1] = (DebugOut.Status[1] & (0x01|0x02)) | (FromNaviCtrl.Param.Byte[6] & (0x04 | 0x08)); |
NC_ErrorCode = FromNaviCtrl.Param.Byte[7]; |
NC_GPS_ModeCharacter = FromNaviCtrl.Param.Byte[8]; |
FromNaviCtrl_Value.SerialDataOkay = FromNaviCtrl.Param.Byte[9]; |
NC_To_FC_Flags = FromNaviCtrl.Param.Byte[10]; |
NC_To_FC_MaxAltitude = FromNaviCtrl.Param.Byte[11]; |
break; |
case SPI_NCCMD_GPSINFO: |
GPSInfo.Flags = FromNaviCtrl.Param.Byte[0]; |
GPSInfo.NumOfSats = FromNaviCtrl.Param.Byte[1]; |
GPSInfo.SatFix = FromNaviCtrl.Param.Byte[2]; |
GPSInfo.Speed = FromNaviCtrl.Param.Byte[3]; |
GPSInfo.HomeDistance = FromNaviCtrl.Param.Int[2]; |
GPSInfo.HomeBearing = FromNaviCtrl.Param.sInt[3]; |
PPM_in[25] = (signed char) FromNaviCtrl.Param.Byte[8]; // WP_EVENT-Channel-Value (FromNC_WP_EventChannel) |
FromNC_AltitudeSpeed = FromNaviCtrl.Param.Byte[9]; |
FromNC_AltitudeSetpoint = (long) FromNaviCtrl.Param.sInt[5] * 10; // in cm |
break; |
case SPI_MISC: |
EarthMagneticField = FromNaviCtrl.Param.Byte[0]; |
EarthMagneticInclination = FromNaviCtrl.Param.Byte[1]; |
EarthMagneticInclinationTheoretic = FromNaviCtrl.Param.Byte[2]; |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
if(FromNaviCtrl.Param.Byte[3]) |
if(!SpeakHoTT || (SpeakHoTT >= SPEAK_GPS_HOLD && SpeakHoTT <= SPEAK_GPS_OFF)) SpeakHoTT = FromNaviCtrl.Param.Byte[3]; |
NaviData_WaypointIndex = FromNaviCtrl.Param.Byte[4]; |
NaviData_WaypointNumber = FromNaviCtrl.Param.Byte[5]; |
NaviData_TargetDistance = FromNaviCtrl.Param.Int[3]; |
NaviData_TargetHoldTime = FromNaviCtrl.Param.Byte[8]; |
#endif |
break; |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
case SPI_NCCMD_HOTT_DATA: |
if(EE_Parameter.Receiver == RECEIVER_HOTT) NC_Fills_HoTT_Telemety(); |
break; |
#endif |
// 0 = 0,1 |
// 1 = 2,3 |
// 2 = 4,5 |
// 3 = 6,7 |
// 4 = 8,9 |
// 5 = 10,11 |
default: |
break; |
} |
} |
else |
{ |
// KompassValue = 0; |
// KompassRichtung = 0; |
GPS_Nick = 0; |
GPS_Roll = 0; |
} |
} |
#endif |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/spi.h |
---|
0,0 → 1,197 |
// ######################## SPI - FlightCtrl ################### |
#ifndef _SPI_H |
#define _SPI_H |
#include <util/delay.h> |
#include "vector.h" |
#define USE_SPI_COMMUNICATION |
//----------------------------------------- |
#define DDR_SPI DDRB |
#define SLAVE_SELECT_DDR_PORT DDRC |
#define SLAVE_SELECT_PORT PORTC |
#if defined(__AVR_ATmega1284P__) |
#define DD_SS PORTB4 |
#define DD_SCK PORTB7 |
#define DD_MOSI PORTB5 |
#define DD_MISO PORTB6 |
#define SPI_SLAVE_SELECT PORTC5 |
#else |
#define DD_SS PB4 |
#define DD_SCK PB7 |
#define DD_MOSI PB5 |
#define DD_MISO PB6 |
#define SPI_SLAVE_SELECT PC5 |
#endif |
// for compatibility reasons gcc3.x <-> gcc4.x |
#ifndef SPCR |
#define SPCR SPCR0 |
#endif |
#ifndef SPE |
#define SPE SPE0 |
#endif |
#ifndef MSTR |
#define MSTR MSTR0 |
#endif |
#ifndef SPR1 |
#define SPR1 SPR01 |
#endif |
#ifndef SPR0 |
#define SPR0 SPR00 |
#endif |
#ifndef SPIE |
#define SPIE SPIE0 |
#endif |
#ifndef SPDR |
#define SPDR SPDR0 |
#endif |
#ifndef SPIF |
#define SPIF SPIF0 |
#endif |
#ifndef SPSR |
#define SPSR SPSR0 |
#endif |
// ------------------------- |
#define SPI_FCCMD_USER 10 |
#define SPI_FCCMD_STICK 11 |
#define SPI_FCCMD_MISC 12 |
#define SPI_FCCMD_PARAMETER1 13 |
#define SPI_FCCMD_VERSION 14 |
#define SPI_FCCMD_SERVOS 15 |
#define SPI_FCCMD_ACCU 16 |
#define SPI_FCCMD_PARAMETER2 17 |
struct str_ToNaviCtrl |
{ |
unsigned char Sync1, Sync2; |
unsigned char Command; |
signed int IntegralNick; |
signed int IntegralRoll; |
signed int AccNick; |
signed int AccRoll; |
signed int GyroCompass; |
signed int GyroNick; |
signed int GyroRoll; |
signed int GyroGier; |
unsigned int FCStatus; |
union |
{ |
unsigned char Byte[12]; |
char sByte[12]; |
unsigned int Int[6]; |
int sInt[6]; |
unsigned long Long[3]; |
long sLong[3]; |
float Float[3]; |
} Param; |
unsigned char Chksum; |
}; |
#define SPI_NCCMD_KALMAN 103 |
#define SPI_NCCMD_VERSION 104 |
#define SPI_NCCMD_GPSINFO 105 |
#define SPI_NCCMD_HOTT_DATA 106 |
#define SPI_MISC 107 |
struct str_FromNaviCtrl |
{ |
unsigned char Command; |
signed int GPS_Nick; |
signed int GPS_Roll; |
signed int MagVecX; |
signed int CompassValue; |
signed int AccErrorN; |
signed int AccErrorR; |
signed int MagVecY; |
signed int MagVecZ; |
unsigned int BeepTime; |
union |
{ |
unsigned char Byte[12]; |
char sByte[12]; |
unsigned int Int[6]; |
int sInt[6]; |
unsigned long Long[3]; |
long sLong[3]; |
float Float[3]; |
} Param; |
unsigned char Chksum; |
}; |
struct str_FromNaviCtrl_Value |
{ |
signed char Kalman_K; |
signed char Kalman_MaxDrift; |
signed char Kalman_MaxFusion; |
unsigned char SerialDataOkay; |
signed char GpsZ; |
}; |
struct str_SPI_VersionInfo |
{ |
unsigned char Major; |
unsigned char Minor; |
unsigned char Patch; |
unsigned char Compatible; |
unsigned char Hardware; |
}; |
// Satfix types for GPSData.SatFix |
#define SATFIX_NONE 0x00 |
#define SATFIX_DEADRECKOING 0x01 |
#define SATFIX_2D 0x02 |
#define SATFIX_3D 0x03 |
#define SATFIX_GPS_DEADRECKOING 0x04 |
#define SATFIX_TIMEONLY 0x05 |
// Flags for interpretation of the GPSData.Flags |
#define FLAG_GPSFIXOK 0x01 // (i.e. within DOP & ACC Masks) |
#define FLAG_DIFFSOLN 0x02 // (is DGPS used) |
#define FLAG_WKNSET 0x04 // (is Week Number valid) |
#define FLAG_TOWSET 0x08 // (is Time of Week valid) |
#define FLAG_GPS_NAVIGATION_ACTIVE 0x10 // NC to FC -> NC is ready to navigate |
struct str_GPSInfo |
{ |
unsigned char Flags; // Status Flags |
unsigned char NumOfSats; // number of satelites |
unsigned char SatFix; // type of satfix |
unsigned char Speed; // m/sek |
unsigned int HomeDistance; // distance to Home in dm |
int HomeBearing; // bearing to home in deg |
}; |
#ifdef USE_SPI_COMMUNICATION |
extern struct str_GPSInfo GPSInfo; |
extern struct str_SPI_VersionInfo NC_Version; |
extern struct str_FromNaviCtrl_Value FromNaviCtrl_Value; |
extern struct str_ToNaviCtrl ToNaviCtrl; |
extern struct str_FromNaviCtrl FromNaviCtrl; |
extern unsigned char SPI_CommandCounter,NaviDataOkay; |
extern signed char FromNC_Rotate_C, FromNC_Rotate_S; |
extern unsigned char NC_ErrorCode; |
extern void SPI_MasterInit(void); |
extern void SPI_StartTransmitPacket(void); |
extern void UpdateSPI_Buffer(void); |
extern void SPI_TransmitByte(void); |
extern signed int POI_KameraNick; |
extern unsigned char NC_GPS_ModeCharacter, NC_To_FC_Flags, NC_To_FC_MaxAltitude; |
extern vector16_t MagVec; |
extern unsigned char EarthMagneticField; |
extern unsigned char EarthMagneticInclination,EarthMagneticInclinationTheoretic; |
#else |
// -------------------------------- Dummy ----------------------------------------- |
#define SPI_MasterInit() ; |
#define SPI_StartTransmitPacket() ; |
#define UpdateSPI_Buffer() ; |
#define SPI_TransmitByte() ; |
#endif |
#endif |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/spi.lst |
---|
0,0 → 1,1243 |
1 .file "spi.c" |
2 .arch atmega1284p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .global MagVec |
11 .global MagVec |
12 .section .bss |
15 MagVec: |
16 0000 0000 0000 .skip 6,0 |
16 0000 |
17 .global POI_KameraNick |
18 .global POI_KameraNick |
21 POI_KameraNick: |
22 0006 0000 .skip 2,0 |
23 .global NC_To_FC_MaxAltitude |
24 .global NC_To_FC_MaxAltitude |
27 NC_To_FC_MaxAltitude: |
28 0008 00 .skip 1,0 |
29 .global NC_To_FC_Flags |
30 .global NC_To_FC_Flags |
33 NC_To_FC_Flags: |
34 0009 00 .skip 1,0 |
35 .global EarthMagneticInclinationTheoretic |
36 .global EarthMagneticInclinationTheoretic |
39 EarthMagneticInclinationTheoretic: |
40 000a 00 .skip 1,0 |
41 .global EarthMagneticInclination |
42 .global EarthMagneticInclination |
45 EarthMagneticInclination: |
46 000b 00 .skip 1,0 |
47 .global EarthMagneticField |
48 .global EarthMagneticField |
51 EarthMagneticField: |
52 000c 00 .skip 1,0 |
53 .global NC_GPS_ModeCharacter |
54 .data |
57 NC_GPS_ModeCharacter: |
58 0000 20 .byte 32 |
59 .global NC_ErrorCode |
60 .global NC_ErrorCode |
61 .section .bss |
64 NC_ErrorCode: |
65 000d 00 .skip 1,0 |
66 .global SPI_CommandCounter |
67 .global SPI_CommandCounter |
70 SPI_CommandCounter: |
71 000e 00 .skip 1,0 |
72 .global SPI_CommandSequence |
73 .data |
76 SPI_CommandSequence: |
77 0001 0B .byte 11 |
78 0002 0A .byte 10 |
79 0003 0D .byte 13 |
80 0004 0B .byte 11 |
81 0005 0C .byte 12 |
82 0006 0E .byte 14 |
83 0007 0B .byte 11 |
84 0008 0F .byte 15 |
85 0009 10 .byte 16 |
86 000a 0B .byte 11 |
87 000b 11 .byte 17 |
88 .global NaviDataOkay |
91 NaviDataOkay: |
92 000c FA .byte -6 |
93 .global FromNC_Rotate_S |
94 .global FromNC_Rotate_S |
95 .section .bss |
98 FromNC_Rotate_S: |
99 000f 00 .skip 1,0 |
100 .global FromNC_Rotate_C |
101 .data |
104 FromNC_Rotate_C: |
105 000d 20 .byte 32 |
106 .text |
107 .global SPI_MasterInit |
109 SPI_MasterInit: |
110 /* prologue: frame size=0 */ |
111 /* prologue end (size=0) */ |
112 0000 84B1 in r24,36-0x20 |
113 0002 806A ori r24,lo8(-96) |
114 0004 84B9 out 36-0x20,r24 |
115 0006 3D9A sbi 39-0x20,5 |
116 0008 82E5 ldi r24,lo8(82) |
117 000a 8CBD out 76-0x20,r24 |
118 000c 1DBC out 77-0x20,__zero_reg__ |
119 000e 459A sbi 40-0x20,5 |
120 0010 81E0 ldi r24,lo8(1) |
121 0012 8093 0000 sts SPITransferCompleted,r24 |
122 0016 8AEA ldi r24,lo8(-86) |
123 0018 8093 0000 sts ToNaviCtrl,r24 |
124 001c 83E8 ldi r24,lo8(-125) |
125 001e 8093 0000 sts ToNaviCtrl+1,r24 |
126 0022 8AE0 ldi r24,lo8(10) |
127 0024 8093 0000 sts ToNaviCtrl+2,r24 |
128 0028 1092 0000 sts (ToNaviCtrl+3)+1,__zero_reg__ |
129 002c 1092 0000 sts ToNaviCtrl+3,__zero_reg__ |
130 0030 1092 0000 sts (ToNaviCtrl+5)+1,__zero_reg__ |
131 0034 1092 0000 sts ToNaviCtrl+5,__zero_reg__ |
132 0038 1092 0000 sts FromNaviCtrl_Value+3,__zero_reg__ |
133 003c 1092 0000 sts SPI_RxDataValid,__zero_reg__ |
134 /* epilogue: frame size=0 */ |
135 0040 0895 ret |
136 /* epilogue end (size=1) */ |
137 /* function SPI_MasterInit size 33 (32) */ |
139 .lcomm SPI_RXState.2,1 |
140 .lcomm rxchksum.3,1 |
141 .global SPI_TransmitByte |
143 SPI_TransmitByte: |
144 /* prologue: frame size=0 */ |
145 /* prologue end (size=0) */ |
146 0042 3091 0000 lds r19,SPITransferCompleted |
147 0046 3323 tst r19 |
148 0048 01F0 breq .+2 |
149 004a 00C0 rjmp .L2 |
150 004c 0DB4 in __tmp_reg__,77-0x20 |
151 004e 07FE sbrs __tmp_reg__,7 |
152 0050 00C0 rjmp .L2 |
153 0052 84E0 ldi r24,lo8(4) |
154 0054 8093 0000 sts SendSPI,r24 |
155 0058 459A sbi 40-0x20,5 |
156 005a 2EB5 in r18,78-0x20 |
157 005c 8091 0000 lds r24,SPI_RXState.2 |
158 0060 9927 clr r25 |
159 0062 8130 cpi r24,1 |
160 0064 9105 cpc r25,__zero_reg__ |
161 0066 01F0 breq .L8 |
162 0068 8230 cpi r24,2 |
163 006a 9105 cpc r25,__zero_reg__ |
164 006c 04F4 brge .L16 |
165 006e 892B or r24,r25 |
166 0070 01F0 breq .L6 |
167 0072 00C0 rjmp .L5 |
168 .L16: |
169 0074 0297 sbiw r24,2 |
170 0076 01F0 breq .L11 |
171 0078 00C0 rjmp .L5 |
172 .L6: |
173 007a 3093 0000 sts SPI_RxBufferIndex,r19 |
174 007e 2093 0000 sts rxchksum.3,r18 |
175 0082 2138 cpi r18,lo8(-127) |
176 0084 01F4 brne .L5 |
177 0086 81E0 ldi r24,lo8(1) |
178 0088 00C0 rjmp .L19 |
179 .L8: |
180 008a 2535 cpi r18,lo8(85) |
181 008c 01F4 brne .L9 |
182 008e 8091 0000 lds r24,rxchksum.3 |
183 0092 820F add r24,r18 |
184 0094 8093 0000 sts rxchksum.3,r24 |
185 0098 82E0 ldi r24,lo8(2) |
186 .L19: |
187 009a 8093 0000 sts SPI_RXState.2,r24 |
188 009e 00C0 rjmp .L5 |
189 .L9: |
190 00a0 3093 0000 sts SPI_RXState.2,r19 |
191 00a4 00C0 rjmp .L5 |
192 .L11: |
193 00a6 8091 0000 lds r24,SPI_RxBufferIndex |
194 00aa E82F mov r30,r24 |
195 00ac FF27 clr r31 |
196 00ae E050 subi r30,lo8(-(SPI_Buffer)) |
197 00b0 F040 sbci r31,hi8(-(SPI_Buffer)) |
198 00b2 2083 st Z,r18 |
199 00b4 8F5F subi r24,lo8(-(1)) |
200 00b6 8093 0000 sts SPI_RxBufferIndex,r24 |
201 00ba 9091 0000 lds r25,rxchksum.3 |
202 00be 8032 cpi r24,lo8(32) |
203 00c0 00F0 brlo .L12 |
204 00c2 2917 cp r18,r25 |
205 00c4 01F4 brne .L13 |
206 00c6 80E2 ldi r24,lo8(32) |
207 00c8 A0E0 ldi r26,lo8(SPI_Buffer) |
208 00ca B0E0 ldi r27,hi8(SPI_Buffer) |
209 00cc E0E0 ldi r30,lo8(FromNaviCtrl) |
210 00ce F0E0 ldi r31,hi8(FromNaviCtrl) |
211 00d0 0D90 ld __tmp_reg__,X+ |
212 00d2 0192 st Z+,__tmp_reg__ |
213 00d4 8A95 dec r24 |
214 00d6 01F4 brne .-8 |
215 00d8 81E0 ldi r24,lo8(1) |
216 00da 8093 0000 sts SPI_RxDataValid,r24 |
217 00de 00C0 rjmp .L14 |
218 .L13: |
219 00e0 3093 0000 sts SPI_RxDataValid,r19 |
220 .L14: |
221 00e4 1092 0000 sts SPI_RXState.2,__zero_reg__ |
222 00e8 00C0 rjmp .L5 |
223 .L12: |
224 00ea 920F add r25,r18 |
225 00ec 9093 0000 sts rxchksum.3,r25 |
226 .L5: |
227 00f0 2091 0000 lds r18,SPI_BufferIndex |
228 00f4 2232 cpi r18,lo8(34) |
229 00f6 00F0 brlo .+2 |
230 00f8 00C0 rjmp .L17 |
231 00fa 4598 cbi 40-0x20,5 |
232 /* #APP */ |
233 00fc 0000 nop |
234 00fe 0000 nop |
235 0100 0000 nop |
236 0102 0000 nop |
237 0104 0000 nop |
238 0106 0000 nop |
239 0108 0000 nop |
240 010a 0000 nop |
241 010c 0000 nop |
242 010e 0000 nop |
243 0110 0000 nop |
244 0112 0000 nop |
245 0114 0000 nop |
246 0116 0000 nop |
247 0118 0000 nop |
248 011a 0000 nop |
249 011c 0000 nop |
250 011e 0000 nop |
251 0120 0000 nop |
252 0122 0000 nop |
253 0124 0000 nop |
254 0126 0000 nop |
255 0128 0000 nop |
256 012a 0000 nop |
257 /* #NOAPP */ |
258 012c E091 0000 lds r30,SPI_TX_Buffer |
259 0130 F091 0000 lds r31,(SPI_TX_Buffer)+1 |
260 0134 E20F add r30,r18 |
261 0136 F11D adc r31,__zero_reg__ |
262 0138 8081 ld r24,Z |
263 013a 8EBD out 78-0x20,r24 |
264 013c 8091 0000 lds r24,ToNaviCtrl+33 |
265 0140 9081 ld r25,Z |
266 0142 890F add r24,r25 |
267 0144 8093 0000 sts ToNaviCtrl+33,r24 |
268 0148 00C0 rjmp .L18 |
269 .L17: |
270 014a 81E0 ldi r24,lo8(1) |
271 014c 8093 0000 sts SPITransferCompleted,r24 |
272 .L18: |
273 0150 2F5F subi r18,lo8(-(1)) |
274 0152 2093 0000 sts SPI_BufferIndex,r18 |
275 .L2: |
276 0156 0895 ret |
277 /* epilogue: frame size=0 */ |
278 /* epilogue: noreturn */ |
279 /* epilogue end (size=0) */ |
280 /* function SPI_TransmitByte size 164 (164) */ |
282 .lcomm motorindex.0,1 |
283 .data |
286 oldcommand.1: |
287 000e 68 .byte 104 |
288 .text |
289 .global UpdateSPI_Buffer |
291 UpdateSPI_Buffer: |
292 /* prologue: frame size=0 */ |
293 0158 EF92 push r14 |
294 015a FF92 push r15 |
295 015c 0F93 push r16 |
296 015e 1F93 push r17 |
297 /* prologue end (size=4) */ |
298 0160 8091 0000 lds r24,EE_Parameter+28 |
299 0164 9927 clr r25 |
300 0166 880F lsl r24 |
301 0168 991F rol r25 |
302 016a 880F lsl r24 |
303 016c 991F rol r25 |
304 016e 7C01 movw r14,r24 |
305 0170 0027 clr r16 |
306 0172 F7FC sbrc r15,7 |
307 0174 0095 com r16 |
308 0176 102F mov r17,r16 |
309 0178 8091 0000 lds r24,IntegralNick |
310 017c 9091 0000 lds r25,(IntegralNick)+1 |
311 0180 A091 0000 lds r26,(IntegralNick)+2 |
312 0184 B091 0000 lds r27,(IntegralNick)+3 |
313 0188 BC01 movw r22,r24 |
314 018a CD01 movw r24,r26 |
315 018c A801 movw r20,r16 |
316 018e 9701 movw r18,r14 |
317 0190 0E94 0000 call __divmodsi4 |
318 0194 3093 0000 sts (ToNaviCtrl+3)+1,r19 |
319 0198 2093 0000 sts ToNaviCtrl+3,r18 |
320 019c 8091 0000 lds r24,IntegralRoll |
321 01a0 9091 0000 lds r25,(IntegralRoll)+1 |
322 01a4 A091 0000 lds r26,(IntegralRoll)+2 |
323 01a8 B091 0000 lds r27,(IntegralRoll)+3 |
324 01ac BC01 movw r22,r24 |
325 01ae CD01 movw r24,r26 |
326 01b0 A801 movw r20,r16 |
327 01b2 9701 movw r18,r14 |
328 01b4 0E94 0000 call __divmodsi4 |
329 01b8 3093 0000 sts (ToNaviCtrl+5)+1,r19 |
330 01bc 2093 0000 sts ToNaviCtrl+5,r18 |
331 01c0 2091 0000 lds r18,ErsatzKompass |
332 01c4 3091 0000 lds r19,(ErsatzKompass)+1 |
333 01c8 4091 0000 lds r20,(ErsatzKompass)+2 |
334 01cc 5091 0000 lds r21,(ErsatzKompass)+3 |
335 01d0 DA01 movw r26,r20 |
336 01d2 C901 movw r24,r18 |
337 01d4 63E0 ldi r22,3 |
338 01d6 880F 1: lsl r24 |
339 01d8 991F rol r25 |
340 01da AA1F rol r26 |
341 01dc BB1F rol r27 |
342 01de 6A95 dec r22 |
343 01e0 01F4 brne 1b |
344 01e2 820F add r24,r18 |
345 01e4 931F adc r25,r19 |
346 01e6 A41F adc r26,r20 |
347 01e8 B51F adc r27,r21 |
348 01ea 820F add r24,r18 |
349 01ec 931F adc r25,r19 |
350 01ee A41F adc r26,r20 |
351 01f0 B51F adc r27,r21 |
352 01f2 2091 0000 lds r18,GIER_GRAD_FAKTOR |
353 01f6 3091 0000 lds r19,(GIER_GRAD_FAKTOR)+1 |
354 01fa 4091 0000 lds r20,(GIER_GRAD_FAKTOR)+2 |
355 01fe 5091 0000 lds r21,(GIER_GRAD_FAKTOR)+3 |
356 0202 BC01 movw r22,r24 |
357 0204 CD01 movw r24,r26 |
358 0206 0E94 0000 call __divmodsi4 |
359 020a 3093 0000 sts (ToNaviCtrl+11)+1,r19 |
360 020e 2093 0000 sts ToNaviCtrl+11,r18 |
361 0212 8091 0000 lds r24,AdNeutralGier |
362 0216 9091 0000 lds r25,(AdNeutralGier)+1 |
363 021a 2091 0000 lds r18,AdWertGier |
364 021e 3091 0000 lds r19,(AdWertGier)+1 |
365 0222 821B sub r24,r18 |
366 0224 930B sbc r25,r19 |
367 0226 9093 0000 sts (ToNaviCtrl+17)+1,r25 |
368 022a 8093 0000 sts ToNaviCtrl+17,r24 |
369 022e E091 0000 lds r30,NaviCntAcc |
370 0232 F091 0000 lds r31,(NaviCntAcc)+1 |
371 0236 8091 0000 lds r24,NaviAccNick |
372 023a 9091 0000 lds r25,(NaviAccNick)+1 |
373 023e BF01 movw r22,r30 |
374 0240 0E94 0000 call __divmodhi4 |
375 0244 9B01 movw r18,r22 |
376 0246 220F lsl r18 |
377 0248 331F rol r19 |
378 024a 220F lsl r18 |
379 024c 331F rol r19 |
380 024e 260F add r18,r22 |
381 0250 371F adc r19,r23 |
382 0252 260F add r18,r22 |
383 0254 371F adc r19,r23 |
384 0256 37FF sbrs r19,7 |
385 0258 00C0 rjmp .L21 |
386 025a 2D5F subi r18,lo8(-(3)) |
387 025c 3F4F sbci r19,hi8(-(3)) |
388 .L21: |
389 025e 3595 asr r19 |
390 0260 2795 ror r18 |
391 0262 3595 asr r19 |
392 0264 2795 ror r18 |
393 0266 3093 0000 sts (ToNaviCtrl+7)+1,r19 |
394 026a 2093 0000 sts ToNaviCtrl+7,r18 |
395 026e 8091 0000 lds r24,NaviAccRoll |
396 0272 9091 0000 lds r25,(NaviAccRoll)+1 |
397 0276 BF01 movw r22,r30 |
398 0278 0E94 0000 call __divmodhi4 |
399 027c 9B01 movw r18,r22 |
400 027e 220F lsl r18 |
401 0280 331F rol r19 |
402 0282 220F lsl r18 |
403 0284 331F rol r19 |
404 0286 260F add r18,r22 |
405 0288 371F adc r19,r23 |
406 028a 260F add r18,r22 |
407 028c 371F adc r19,r23 |
408 028e 37FF sbrs r19,7 |
409 0290 00C0 rjmp .L22 |
410 0292 2D5F subi r18,lo8(-(3)) |
411 0294 3F4F sbci r19,hi8(-(3)) |
412 .L22: |
413 0296 3595 asr r19 |
414 0298 2795 ror r18 |
415 029a 3595 asr r19 |
416 029c 2795 ror r18 |
417 029e 3093 0000 sts (ToNaviCtrl+9)+1,r19 |
418 02a2 2093 0000 sts ToNaviCtrl+9,r18 |
419 02a6 1092 0000 sts (NaviCntAcc)+1,__zero_reg__ |
420 02aa 1092 0000 sts NaviCntAcc,__zero_reg__ |
421 02ae 1092 0000 sts (NaviAccNick)+1,__zero_reg__ |
422 02b2 1092 0000 sts NaviAccNick,__zero_reg__ |
423 02b6 1092 0000 sts (NaviAccRoll)+1,__zero_reg__ |
424 02ba 1092 0000 sts NaviAccRoll,__zero_reg__ |
425 02be 8091 0000 lds r24,ToNaviCtrl+2 |
426 02c2 9927 clr r25 |
427 02c4 AA27 clr r26 |
428 02c6 BB27 clr r27 |
429 02c8 FC01 movw r30,r24 |
430 02ca 3A97 sbiw r30,10 |
431 02cc E830 cpi r30,8 |
432 02ce F105 cpc r31,__zero_reg__ |
433 02d0 00F0 brlo .+2 |
434 02d2 00C0 rjmp .L23 |
435 02d4 E050 subi r30,lo8(-(pm(.L50))) |
436 02d6 F040 sbci r31,hi8(-(pm(.L50))) |
437 02d8 0C94 0000 jmp __tablejump2__ |
438 .data |
439 .section .progmem.gcc_sw_table, "a", @progbits |
440 .p2align 1 |
441 .L50: |
442 0000 0000 .word pm(.L24) |
443 0002 0000 .word pm(.L31) |
444 0004 0000 .word pm(.L44) |
445 0006 0000 .word pm(.L26) |
446 0008 0000 .word pm(.L48) |
447 000a 0000 .word pm(.L49) |
448 000c 0000 .word pm(.L25) |
449 000e 0000 .word pm(.L27) |
450 .text |
451 .L24: |
452 02dc 8091 0000 lds r24,Parameter_UserParam1 |
453 02e0 8093 0000 sts ToNaviCtrl+21,r24 |
454 02e4 8091 0000 lds r24,Parameter_UserParam2 |
455 02e8 8093 0000 sts ToNaviCtrl+22,r24 |
456 02ec 8091 0000 lds r24,Parameter_UserParam3 |
457 02f0 8093 0000 sts ToNaviCtrl+23,r24 |
458 02f4 8091 0000 lds r24,Parameter_UserParam4 |
459 02f8 8093 0000 sts ToNaviCtrl+24,r24 |
460 02fc 8091 0000 lds r24,Parameter_UserParam5 |
461 0300 8093 0000 sts ToNaviCtrl+25,r24 |
462 0304 8091 0000 lds r24,Parameter_UserParam6 |
463 0308 8093 0000 sts ToNaviCtrl+26,r24 |
464 030c 8091 0000 lds r24,Parameter_UserParam7 |
465 0310 8093 0000 sts ToNaviCtrl+27,r24 |
466 0314 8091 0000 lds r24,Parameter_UserParam8 |
467 0318 8093 0000 sts ToNaviCtrl+28,r24 |
468 031c 8091 0000 lds r24,FC_StatusFlags |
469 0320 8093 0000 sts ToNaviCtrl+29,r24 |
470 0324 8091 0000 lds r24,FC_StatusFlags |
471 0328 837F andi r24,lo8(-13) |
472 032a 8093 0000 sts FC_StatusFlags,r24 |
473 032e 0E94 0000 call GetActiveParamSet |
474 0332 8093 0000 sts ToNaviCtrl+30,r24 |
475 0336 8091 0000 lds r24,EE_Parameter+102 |
476 033a 8093 0000 sts ToNaviCtrl+31,r24 |
477 033e 8091 0000 lds r24,FC_StatusFlags2 |
478 0342 00C0 rjmp .L72 |
479 .L25: |
480 0344 8091 0000 lds r24,Capacity |
481 0348 9091 0000 lds r25,(Capacity)+1 |
482 034c 9093 0000 sts (ToNaviCtrl+21)+1,r25 |
483 0350 8093 0000 sts ToNaviCtrl+21,r24 |
484 0354 8091 0000 lds r24,Capacity+4 |
485 0358 9091 0000 lds r25,(Capacity+4)+1 |
486 035c 9093 0000 sts (ToNaviCtrl+23)+1,r25 |
487 0360 8093 0000 sts ToNaviCtrl+23,r24 |
488 0364 8091 0000 lds r24,UBat |
489 0368 9091 0000 lds r25,(UBat)+1 |
490 036c 8093 0000 sts ToNaviCtrl+25,r24 |
491 0370 8091 0000 lds r24,BattLowVoltageWarning |
492 0374 8093 0000 sts ToNaviCtrl+26,r24 |
493 0378 8091 0000 lds r24,VarioCharacter |
494 037c 8093 0000 sts ToNaviCtrl+27,r24 |
495 0380 9091 0000 lds r25,motorindex.0 |
496 0384 9093 0000 sts ToNaviCtrl+28,r25 |
497 0388 E92F mov r30,r25 |
498 038a FF27 clr r31 |
499 038c A3E0 ldi r26,3 |
500 038e EE0F 1: lsl r30 |
501 0390 FF1F rol r31 |
502 0392 AA95 dec r26 |
503 0394 01F4 brne 1b |
504 0396 E050 subi r30,lo8(-(Motor)) |
505 0398 F040 sbci r31,hi8(-(Motor)) |
506 039a 8681 ldd r24,Z+6 |
507 039c 8093 0000 sts ToNaviCtrl+29,r24 |
508 03a0 8381 ldd r24,Z+3 |
509 03a2 8093 0000 sts ToNaviCtrl+30,r24 |
510 03a6 8781 ldd r24,Z+7 |
511 03a8 8093 0000 sts ToNaviCtrl+31,r24 |
512 03ac 8581 ldd r24,Z+5 |
513 03ae 8093 0000 sts ToNaviCtrl+32,r24 |
514 03b2 892F mov r24,r25 |
515 03b4 8F5F subi r24,lo8(-(1)) |
516 03b6 6CE0 ldi r22,lo8(12) |
517 03b8 0E94 0000 call __udivmodqi4 |
518 03bc 9093 0000 sts motorindex.0,r25 |
519 03c0 00C0 rjmp .L23 |
520 .L26: |
521 03c2 8091 0000 lds r24,EE_Parameter+81 |
522 03c6 8093 0000 sts ToNaviCtrl+21,r24 |
523 03ca 8091 0000 lds r24,EE_Parameter+82 |
524 03ce 8093 0000 sts ToNaviCtrl+22,r24 |
525 03d2 8091 0000 lds r24,EE_Parameter+83 |
526 03d6 8093 0000 sts ToNaviCtrl+23,r24 |
527 03da 8091 0000 lds r24,EE_Parameter+84 |
528 03de 8093 0000 sts ToNaviCtrl+24,r24 |
529 03e2 8091 0000 lds r24,EE_Parameter+85 |
530 03e6 8093 0000 sts ToNaviCtrl+25,r24 |
531 03ea 8091 0000 lds r24,EE_Parameter+89 |
532 03ee 8093 0000 sts ToNaviCtrl+26,r24 |
533 03f2 8091 0000 lds r24,EE_Parameter+90 |
534 03f6 8093 0000 sts ToNaviCtrl+27,r24 |
535 03fa 8091 0000 lds r24,EE_Parameter+91 |
536 03fe 8093 0000 sts ToNaviCtrl+28,r24 |
537 0402 8091 0000 lds r24,EE_Parameter+94 |
538 0406 8093 0000 sts ToNaviCtrl+29,r24 |
539 040a 8091 0000 lds r24,EE_Parameter+92 |
540 040e 8093 0000 sts ToNaviCtrl+30,r24 |
541 0412 8091 0000 lds r24,EE_Parameter+93 |
542 0416 8093 0000 sts ToNaviCtrl+31,r24 |
543 041a 8091 0000 lds r24,EE_Parameter+95 |
544 041e 00C0 rjmp .L72 |
545 .L27: |
546 0420 8091 0000 lds r24,EE_Parameter+80 |
547 0424 8093 0000 sts ToNaviCtrl+21,r24 |
548 0428 8091 0000 lds r24,EE_Parameter+39 |
549 042c 8630 cpi r24,lo8(6) |
550 042e 01F0 breq .L28 |
551 0430 8091 0000 lds r24,JetiBeep |
552 0434 8234 cpi r24,lo8(66) |
553 0436 01F0 breq .L29 |
554 0438 0E94 0000 call HoTT_Waring |
555 043c E82F mov r30,r24 |
556 043e FF27 clr r31 |
557 0440 E050 subi r30,lo8(-(JETI_CODE)) |
558 0442 F040 sbci r31,hi8(-(JETI_CODE)) |
559 /* #APP */ |
560 0444 8491 lpm r24, Z |
561 |
562 /* #NOAPP */ |
563 0446 8093 0000 sts JetiBeep,r24 |
564 044a 00C0 rjmp .L28 |
565 .L29: |
566 044c 0E94 0000 call HoTT_Waring |
567 .L28: |
568 0450 8091 0000 lds r24,ToNC_SpeakHoTT |
569 0454 8093 0000 sts ToNaviCtrl+22,r24 |
570 0458 00C0 rjmp .L23 |
571 .L31: |
572 /* #APP */ |
573 045a F894 cli |
574 /* #NOAPP */ |
575 045c 8091 0000 lds r24,EE_Parameter+3 |
576 0460 E82F mov r30,r24 |
577 0462 FF27 clr r31 |
578 0464 EE0F add r30,r30 |
579 0466 FF1F adc r31,r31 |
580 0468 E050 subi r30,lo8(-(PPM_in)) |
581 046a F040 sbci r31,hi8(-(PPM_in)) |
582 046c 0190 ld __tmp_reg__,Z+ |
583 046e F081 ld r31,Z |
584 0470 E02D mov r30,__tmp_reg__ |
585 0472 E038 cpi r30,128 |
586 0474 F105 cpc r31,__zero_reg__ |
587 0476 04F0 brlt .L32 |
588 0478 EFE7 ldi r30,lo8(127) |
589 047a F0E0 ldi r31,hi8(127) |
590 047c 00C0 rjmp .L33 |
591 .L32: |
592 047e 2FEF ldi r18,hi8(-127) |
593 0480 E138 cpi r30,lo8(-127) |
594 0482 F207 cpc r31,r18 |
595 0484 04F4 brge .L33 |
596 0486 E1E8 ldi r30,lo8(-127) |
597 0488 FFEF ldi r31,hi8(-127) |
598 .L33: |
599 048a E093 0000 sts ToNaviCtrl+21,r30 |
600 048e 8091 0000 lds r24,EE_Parameter+4 |
601 0492 E82F mov r30,r24 |
602 0494 FF27 clr r31 |
603 0496 EE0F add r30,r30 |
604 0498 FF1F adc r31,r31 |
605 049a E050 subi r30,lo8(-(PPM_in)) |
606 049c F040 sbci r31,hi8(-(PPM_in)) |
607 049e 0190 ld __tmp_reg__,Z+ |
608 04a0 F081 ld r31,Z |
609 04a2 E02D mov r30,__tmp_reg__ |
610 04a4 E038 cpi r30,128 |
611 04a6 F105 cpc r31,__zero_reg__ |
612 04a8 04F0 brlt .L35 |
613 04aa EFE7 ldi r30,lo8(127) |
614 04ac F0E0 ldi r31,hi8(127) |
615 04ae 00C0 rjmp .L36 |
616 .L35: |
617 04b0 7FEF ldi r23,hi8(-127) |
618 04b2 E138 cpi r30,lo8(-127) |
619 04b4 F707 cpc r31,r23 |
620 04b6 04F4 brge .L36 |
621 04b8 E1E8 ldi r30,lo8(-127) |
622 04ba FFEF ldi r31,hi8(-127) |
623 .L36: |
624 04bc E093 0000 sts ToNaviCtrl+22,r30 |
625 04c0 8091 0000 lds r24,EE_Parameter+2 |
626 04c4 E82F mov r30,r24 |
627 04c6 FF27 clr r31 |
628 04c8 EE0F add r30,r30 |
629 04ca FF1F adc r31,r31 |
630 04cc E050 subi r30,lo8(-(PPM_in)) |
631 04ce F040 sbci r31,hi8(-(PPM_in)) |
632 04d0 0190 ld __tmp_reg__,Z+ |
633 04d2 F081 ld r31,Z |
634 04d4 E02D mov r30,__tmp_reg__ |
635 04d6 E038 cpi r30,128 |
636 04d8 F105 cpc r31,__zero_reg__ |
637 04da 04F0 brlt .L38 |
638 04dc EFE7 ldi r30,lo8(127) |
639 04de F0E0 ldi r31,hi8(127) |
640 04e0 00C0 rjmp .L39 |
641 .L38: |
642 04e2 8FEF ldi r24,hi8(-127) |
643 04e4 E138 cpi r30,lo8(-127) |
644 04e6 F807 cpc r31,r24 |
645 04e8 04F4 brge .L39 |
646 04ea E1E8 ldi r30,lo8(-127) |
647 04ec FFEF ldi r31,hi8(-127) |
648 .L39: |
649 04ee E093 0000 sts ToNaviCtrl+23,r30 |
650 04f2 8091 0000 lds r24,EE_Parameter+1 |
651 04f6 E82F mov r30,r24 |
652 04f8 FF27 clr r31 |
653 04fa EE0F add r30,r30 |
654 04fc FF1F adc r31,r31 |
655 04fe E050 subi r30,lo8(-(PPM_in)) |
656 0500 F040 sbci r31,hi8(-(PPM_in)) |
657 0502 0190 ld __tmp_reg__,Z+ |
658 0504 F081 ld r31,Z |
659 0506 E02D mov r30,__tmp_reg__ |
660 0508 E038 cpi r30,128 |
661 050a F105 cpc r31,__zero_reg__ |
662 050c 04F0 brlt .L41 |
663 050e EFE7 ldi r30,lo8(127) |
664 0510 F0E0 ldi r31,hi8(127) |
665 0512 00C0 rjmp .L42 |
666 .L41: |
667 0514 2FEF ldi r18,hi8(-127) |
668 0516 E138 cpi r30,lo8(-127) |
669 0518 F207 cpc r31,r18 |
670 051a 04F4 brge .L42 |
671 051c E1E8 ldi r30,lo8(-127) |
672 051e FFEF ldi r31,hi8(-127) |
673 .L42: |
674 /* #APP */ |
675 0520 7894 sei |
676 /* #NOAPP */ |
677 0522 E093 0000 sts ToNaviCtrl+24,r30 |
678 0526 8091 0000 lds r24,Poti |
679 052a 8093 0000 sts ToNaviCtrl+25,r24 |
680 052e 8091 0000 lds r24,Poti+1 |
681 0532 8093 0000 sts ToNaviCtrl+26,r24 |
682 0536 8091 0000 lds r24,Poti+2 |
683 053a 8093 0000 sts ToNaviCtrl+27,r24 |
684 053e 8091 0000 lds r24,Poti+3 |
685 0542 8093 0000 sts ToNaviCtrl+28,r24 |
686 0546 8091 0000 lds r24,Poti+4 |
687 054a 8093 0000 sts ToNaviCtrl+29,r24 |
688 054e 8091 0000 lds r24,Poti+5 |
689 0552 8093 0000 sts ToNaviCtrl+30,r24 |
690 0556 8091 0000 lds r24,Poti+6 |
691 055a 8093 0000 sts ToNaviCtrl+31,r24 |
692 055e 8091 0000 lds r24,Poti+7 |
693 0562 00C0 rjmp .L72 |
694 .L44: |
695 0564 8091 0000 lds r24,WinkelOut+6 |
696 0568 8630 cpi r24,lo8(6) |
697 056a 00F0 brlo .L45 |
698 056c 1092 0000 sts WinkelOut+6,__zero_reg__ |
699 0570 85E0 ldi r24,lo8(5) |
700 .L45: |
701 0572 8093 0000 sts ToNaviCtrl+21,r24 |
702 0576 8091 0000 lds r24,EE_Parameter+96 |
703 057a 8093 0000 sts ToNaviCtrl+22,r24 |
704 057e 8091 0000 lds r24,HoehenWert |
705 0582 9091 0000 lds r25,(HoehenWert)+1 |
706 0586 A091 0000 lds r26,(HoehenWert)+2 |
707 058a B091 0000 lds r27,(HoehenWert)+3 |
708 058e BC01 movw r22,r24 |
709 0590 CD01 movw r24,r26 |
710 0592 25E0 ldi r18,lo8(5) |
711 0594 30E0 ldi r19,hi8(5) |
712 0596 40E0 ldi r20,hlo8(5) |
713 0598 50E0 ldi r21,hhi8(5) |
714 059a 0E94 0000 call __divmodsi4 |
715 059e 3093 0000 sts (ToNaviCtrl+23)+1,r19 |
716 05a2 2093 0000 sts ToNaviCtrl+23,r18 |
717 05a6 8091 0000 lds r24,SollHoehe |
718 05aa 9091 0000 lds r25,(SollHoehe)+1 |
719 05ae A091 0000 lds r26,(SollHoehe)+2 |
720 05b2 B091 0000 lds r27,(SollHoehe)+3 |
721 05b6 BC01 movw r22,r24 |
722 05b8 CD01 movw r24,r26 |
723 05ba 25E0 ldi r18,lo8(5) |
724 05bc 30E0 ldi r19,hi8(5) |
725 05be 40E0 ldi r20,hlo8(5) |
726 05c0 50E0 ldi r21,hhi8(5) |
727 05c2 0E94 0000 call __divmodsi4 |
728 05c6 3093 0000 sts (ToNaviCtrl+25)+1,r19 |
729 05ca 2093 0000 sts ToNaviCtrl+25,r18 |
730 05ce 8091 0000 lds r24,EE_Parameter+86 |
731 05d2 8093 0000 sts ToNaviCtrl+27,r24 |
732 05d6 8091 0000 lds r24,EE_Parameter+87 |
733 05da 8093 0000 sts ToNaviCtrl+28,r24 |
734 05de 8091 0000 lds r24,EE_Parameter+88 |
735 05e2 8093 0000 sts ToNaviCtrl+29,r24 |
736 05e6 8091 0000 lds r24,SenderOkay |
737 05ea 8093 0000 sts ToNaviCtrl+30,r24 |
738 05ee 8091 0000 lds r24,PPM_in |
739 05f2 9091 0000 lds r25,(PPM_in)+1 |
740 05f6 8093 0000 sts ToNaviCtrl+31,r24 |
741 05fa 8091 0000 lds r24,DebugOut+16 |
742 05fe 9091 0000 lds r25,(DebugOut+16)+1 |
743 0602 97FD sbrc r25,7 |
744 0604 0396 adiw r24,3 |
745 .L47: |
746 0606 9595 asr r25 |
747 0608 8795 ror r24 |
748 060a 9595 asr r25 |
749 060c 8795 ror r24 |
750 060e 00C0 rjmp .L72 |
751 .L48: |
752 0610 1092 0000 sts ToNaviCtrl+21,__zero_reg__ |
753 0614 8AE5 ldi r24,lo8(90) |
754 0616 8093 0000 sts ToNaviCtrl+22,r24 |
755 061a 83E0 ldi r24,lo8(3) |
756 061c 8093 0000 sts ToNaviCtrl+23,r24 |
757 0620 84E3 ldi r24,lo8(52) |
758 0622 8093 0000 sts ToNaviCtrl+24,r24 |
759 0626 8091 0000 lds r24,PlatinenVersion |
760 062a 8093 0000 sts ToNaviCtrl+25,r24 |
761 062e 8091 0000 lds r24,VersionInfo+5 |
762 0632 8093 0000 sts ToNaviCtrl+26,r24 |
763 0636 9091 0000 lds r25,VersionInfo+6 |
764 063a 9093 0000 sts ToNaviCtrl+27,r25 |
765 063e 8F77 andi r24,lo8(127) |
766 0640 8093 0000 sts VersionInfo+5,r24 |
767 0644 9071 andi r25,lo8(16) |
768 0646 9093 0000 sts VersionInfo+6,r25 |
769 064a 8091 0000 lds r24,VersionInfo+7 |
770 064e 8093 0000 sts ToNaviCtrl+28,r24 |
771 0652 8091 0000 lds r24,Parameter_GlobalConfig |
772 0656 8093 0000 sts ToNaviCtrl+29,r24 |
773 065a 8091 0000 lds r24,Parameter_ExtraConfig |
774 065e 8093 0000 sts ToNaviCtrl+30,r24 |
775 0662 8091 0000 lds r24,EE_Parameter+98 |
776 0666 8093 0000 sts ToNaviCtrl+31,r24 |
777 066a 8091 0000 lds r24,EE_Parameter+111 |
778 066e 00C0 rjmp .L72 |
779 .L49: |
780 0670 8091 0000 lds r24,EE_Parameter+53 |
781 0674 8093 0000 sts ToNaviCtrl+21,r24 |
782 0678 8091 0000 lds r24,EE_Parameter+109 |
783 067c 8093 0000 sts ToNaviCtrl+22,r24 |
784 0680 8091 0000 lds r24,Parameter_ServoNickControl |
785 0684 8093 0000 sts ToNaviCtrl+23,r24 |
786 0688 8091 0000 lds r24,EE_Parameter+46 |
787 068c 8093 0000 sts ToNaviCtrl+24,r24 |
788 0690 8091 0000 lds r24,EE_Parameter+47 |
789 0694 8093 0000 sts ToNaviCtrl+25,r24 |
790 0698 8091 0000 lds r24,EE_Parameter+48 |
791 069c 8093 0000 sts ToNaviCtrl+26,r24 |
792 06a0 8091 0000 lds r24,Parameter_ServoRollControl |
793 06a4 8093 0000 sts ToNaviCtrl+27,r24 |
794 06a8 8091 0000 lds r24,EE_Parameter+50 |
795 06ac 8093 0000 sts ToNaviCtrl+28,r24 |
796 06b0 8091 0000 lds r24,EE_Parameter+51 |
797 06b4 8093 0000 sts ToNaviCtrl+29,r24 |
798 06b8 8091 0000 lds r24,EE_Parameter+52 |
799 06bc 8093 0000 sts ToNaviCtrl+30,r24 |
800 06c0 8091 0000 lds r24,Capacity+6 |
801 06c4 8093 0000 sts ToNaviCtrl+31,r24 |
802 06c8 8091 0000 lds r24,DebugOut+58 |
803 .L72: |
804 06cc 8093 0000 sts ToNaviCtrl+32,r24 |
805 .L23: |
806 06d0 8091 0000 lds r24,SPI_RxDataValid |
807 06d4 8823 tst r24 |
808 06d6 01F4 brne .+2 |
809 06d8 00C0 rjmp .L51 |
810 06da 6091 0000 lds r22,FromNaviCtrl |
811 06de 8091 0000 lds r24,oldcommand.1 |
812 06e2 6817 cp r22,r24 |
813 06e4 01F0 breq .L52 |
814 06e6 8AEF ldi r24,lo8(-6) |
815 06e8 8093 0000 sts NaviDataOkay,r24 |
816 .L52: |
817 06ec 6093 0000 sts oldcommand.1,r22 |
818 06f0 81E0 ldi r24,lo8(1) |
819 06f2 8093 0000 sts CalculateCompassTimer,r24 |
820 06f6 4091 0000 lds r20,FromNaviCtrl+1 |
821 06fa 5091 0000 lds r21,(FromNaviCtrl+1)+1 |
822 06fe CA01 movw r24,r20 |
823 0700 8150 subi r24,lo8(-(511)) |
824 0702 9E4F sbci r25,hi8(-(511)) |
825 0704 8F5F subi r24,lo8(1023) |
826 0706 9340 sbci r25,hi8(1023) |
827 0708 00F4 brsh .L53 |
828 070a 2091 0000 lds r18,FromNaviCtrl+3 |
829 070e 3091 0000 lds r19,(FromNaviCtrl+3)+1 |
830 0712 C901 movw r24,r18 |
831 0714 8150 subi r24,lo8(-(511)) |
832 0716 9E4F sbci r25,hi8(-(511)) |
833 0718 8F5F subi r24,lo8(1023) |
834 071a 9340 sbci r25,hi8(1023) |
835 071c 00F4 brsh .L53 |
836 071e 8091 0000 lds r24,EE_Parameter+13 |
837 0722 85FF sbrs r24,5 |
838 0724 00C0 rjmp .L53 |
839 0726 5093 0000 sts (GPS_Nick)+1,r21 |
840 072a 4093 0000 sts GPS_Nick,r20 |
841 072e 3093 0000 sts (GPS_Roll)+1,r19 |
842 0732 2093 0000 sts GPS_Roll,r18 |
843 .L53: |
844 0736 8091 0000 lds r24,FromNaviCtrl+7 |
845 073a 9091 0000 lds r25,(FromNaviCtrl+7)+1 |
846 073e 21E0 ldi r18,hi8(361) |
847 0740 8936 cpi r24,lo8(361) |
848 0742 9207 cpc r25,r18 |
849 0744 04F4 brge .L54 |
850 0746 9093 0000 sts (KompassValue)+1,r25 |
851 074a 8093 0000 sts KompassValue,r24 |
852 .L54: |
853 074e 2091 0000 lds r18,FromNaviCtrl+17 |
854 0752 3091 0000 lds r19,(FromNaviCtrl+17)+1 |
855 0756 8091 0000 lds r24,beeptime |
856 075a 9091 0000 lds r25,(beeptime)+1 |
857 075e 8217 cp r24,r18 |
858 0760 9307 cpc r25,r19 |
859 0762 00F4 brsh .L55 |
860 0764 8091 0000 lds r24,DisableRcOffBeeping |
861 0768 8823 tst r24 |
862 076a 01F4 brne .L55 |
863 076c 3093 0000 sts (beeptime)+1,r19 |
864 0770 2093 0000 sts beeptime,r18 |
865 .L55: |
866 0774 862F mov r24,r22 |
867 0776 9927 clr r25 |
868 0778 8936 cpi r24,105 |
869 077a 9105 cpc r25,__zero_reg__ |
870 077c 01F4 brne .+2 |
871 077e 00C0 rjmp .L62 |
872 0780 8A36 cpi r24,106 |
873 0782 9105 cpc r25,__zero_reg__ |
874 0784 04F4 brge .L70 |
875 0786 8736 cpi r24,103 |
876 0788 9105 cpc r25,__zero_reg__ |
877 078a 01F0 breq .L57 |
878 078c 8836 cpi r24,104 |
879 078e 9105 cpc r25,__zero_reg__ |
880 0790 01F4 brne .+2 |
881 0792 00C0 rjmp .L61 |
882 0794 00C0 rjmp .L20 |
883 .L70: |
884 0796 8A36 cpi r24,106 |
885 0798 9105 cpc r25,__zero_reg__ |
886 079a 01F4 brne .+2 |
887 079c 00C0 rjmp .L67 |
888 079e 8B36 cpi r24,107 |
889 07a0 9105 cpc r25,__zero_reg__ |
890 07a2 01F4 brne .+2 |
891 07a4 00C0 rjmp .L63 |
892 07a6 00C0 rjmp .L20 |
893 .L57: |
894 07a8 8091 0000 lds r24,FromNaviCtrl+19 |
895 07ac 8093 0000 sts FromNaviCtrl_Value,r24 |
896 07b0 8091 0000 lds r24,FromNaviCtrl+20 |
897 07b4 8093 0000 sts FromNaviCtrl_Value+2,r24 |
898 07b8 8091 0000 lds r24,FromNaviCtrl+21 |
899 07bc 8093 0000 sts FromNaviCtrl_Value+1,r24 |
900 07c0 8091 0000 lds r24,FromNaviCtrl+22 |
901 07c4 8093 0000 sts KompassFusion,r24 |
902 07c8 8091 0000 lds r24,FromNaviCtrl+23 |
903 07cc 8093 0000 sts FromNaviCtrl_Value+4,r24 |
904 07d0 8091 0000 lds r24,FromNaviCtrl+24 |
905 07d4 8093 0000 sts FromNC_Rotate_C,r24 |
906 07d8 8091 0000 lds r24,FromNaviCtrl+25 |
907 07dc 8093 0000 sts FromNC_Rotate_S,r24 |
908 07e0 8091 0000 lds r24,FromNaviCtrl+26 |
909 07e4 8093 0000 sts GPS_Aid_StickMultiplikator,r24 |
910 07e8 8091 0000 lds r24,CareFree |
911 07ec 8823 tst r24 |
912 07ee 01F0 breq .L58 |
913 07f0 2091 0000 lds r18,FromNaviCtrl+27 |
914 07f4 3091 0000 lds r19,(FromNaviCtrl+27)+1 |
915 07f8 37FD sbrc r19,7 |
916 07fa 00C0 rjmp .L58 |
917 07fc 3093 0000 sts (KompassSollWert)+1,r19 |
918 0800 2093 0000 sts KompassSollWert,r18 |
919 0804 9091 0000 lds r25,EE_Parameter+55 |
920 0808 9923 tst r25 |
921 080a 01F0 breq .L58 |
922 080c 8FE0 ldi r24,lo8(15) |
923 080e 989F mul r25,r24 |
924 0810 C001 movw r24,r0 |
925 0812 1124 clr r1 |
926 0814 281B sub r18,r24 |
927 0816 390B sbc r19,r25 |
928 0818 C901 movw r24,r18 |
929 081a 8859 subi r24,lo8(-(360)) |
930 081c 9E4F sbci r25,hi8(-(360)) |
931 081e 68E6 ldi r22,lo8(360) |
932 0820 71E0 ldi r23,hi8(360) |
933 0822 0E94 0000 call __divmodhi4 |
934 0826 9093 0000 sts (KompassSollWert)+1,r25 |
935 082a 8093 0000 sts KompassSollWert,r24 |
936 .L58: |
937 082e 2091 0000 lds r18,POI_KameraNick |
938 0832 3091 0000 lds r19,(POI_KameraNick)+1 |
939 0836 8091 0000 lds r24,FromNaviCtrl+29 |
940 083a 9091 0000 lds r25,(FromNaviCtrl+29)+1 |
941 083e 280F add r18,r24 |
942 0840 391F adc r19,r25 |
943 0842 37FF sbrs r19,7 |
944 0844 00C0 rjmp .L60 |
945 0846 2F5F subi r18,lo8(-(1)) |
946 0848 3F4F sbci r19,hi8(-(1)) |
947 .L60: |
948 084a 3595 asr r19 |
949 084c 2795 ror r18 |
950 084e 3093 0000 sts (POI_KameraNick)+1,r19 |
951 0852 2093 0000 sts POI_KameraNick,r18 |
952 0856 00C0 rjmp .L20 |
953 .L61: |
954 0858 8091 0000 lds r24,FromNaviCtrl+19 |
955 085c 8093 0000 sts NC_Version,r24 |
956 0860 8091 0000 lds r24,FromNaviCtrl+20 |
957 0864 8093 0000 sts NC_Version+1,r24 |
958 0868 8091 0000 lds r24,FromNaviCtrl+21 |
959 086c 8093 0000 sts NC_Version+2,r24 |
960 0870 8091 0000 lds r24,FromNaviCtrl+22 |
961 0874 8093 0000 sts NC_Version+3,r24 |
962 0878 8091 0000 lds r24,FromNaviCtrl+23 |
963 087c 8093 0000 sts NC_Version+4,r24 |
964 0880 8091 0000 lds r24,DebugOut |
965 0884 9091 0000 lds r25,FromNaviCtrl+24 |
966 0888 892B or r24,r25 |
967 088a 8093 0000 sts DebugOut,r24 |
968 088e 9091 0000 lds r25,DebugOut+1 |
969 0892 9370 andi r25,lo8(3) |
970 0894 8091 0000 lds r24,FromNaviCtrl+25 |
971 0898 8C70 andi r24,lo8(12) |
972 089a 982B or r25,r24 |
973 089c 9093 0000 sts DebugOut+1,r25 |
974 08a0 8091 0000 lds r24,FromNaviCtrl+26 |
975 08a4 8093 0000 sts NC_ErrorCode,r24 |
976 08a8 8091 0000 lds r24,FromNaviCtrl+27 |
977 08ac 8093 0000 sts NC_GPS_ModeCharacter,r24 |
978 08b0 8091 0000 lds r24,FromNaviCtrl+28 |
979 08b4 8093 0000 sts FromNaviCtrl_Value+3,r24 |
980 08b8 8091 0000 lds r24,FromNaviCtrl+29 |
981 08bc 8093 0000 sts NC_To_FC_Flags,r24 |
982 08c0 8091 0000 lds r24,FromNaviCtrl+30 |
983 08c4 8093 0000 sts NC_To_FC_MaxAltitude,r24 |
984 08c8 00C0 rjmp .L20 |
985 .L62: |
986 08ca 8091 0000 lds r24,FromNaviCtrl+19 |
987 08ce 8093 0000 sts GPSInfo,r24 |
988 08d2 8091 0000 lds r24,FromNaviCtrl+20 |
989 08d6 8093 0000 sts GPSInfo+1,r24 |
990 08da 8091 0000 lds r24,FromNaviCtrl+21 |
991 08de 8093 0000 sts GPSInfo+2,r24 |
992 08e2 8091 0000 lds r24,FromNaviCtrl+22 |
993 08e6 8093 0000 sts GPSInfo+3,r24 |
994 08ea 8091 0000 lds r24,FromNaviCtrl+23 |
995 08ee 9091 0000 lds r25,(FromNaviCtrl+23)+1 |
996 08f2 9093 0000 sts (GPSInfo+4)+1,r25 |
997 08f6 8093 0000 sts GPSInfo+4,r24 |
998 08fa 8091 0000 lds r24,FromNaviCtrl+25 |
999 08fe 9091 0000 lds r25,(FromNaviCtrl+25)+1 |
1000 0902 9093 0000 sts (GPSInfo+6)+1,r25 |
1001 0906 8093 0000 sts GPSInfo+6,r24 |
1002 090a 8091 0000 lds r24,FromNaviCtrl+27 |
1003 090e 9927 clr r25 |
1004 0910 87FD sbrc r24,7 |
1005 0912 9095 com r25 |
1006 0914 9093 0000 sts (PPM_in+50)+1,r25 |
1007 0918 8093 0000 sts PPM_in+50,r24 |
1008 091c 8091 0000 lds r24,FromNaviCtrl+28 |
1009 0920 8093 0000 sts FromNC_AltitudeSpeed,r24 |
1010 0924 8091 0000 lds r24,FromNaviCtrl+29 |
1011 0928 9091 0000 lds r25,(FromNaviCtrl+29)+1 |
1012 092c 9C01 movw r18,r24 |
1013 092e 4427 clr r20 |
1014 0930 37FD sbrc r19,7 |
1015 0932 4095 com r20 |
1016 0934 542F mov r21,r20 |
1017 0936 DA01 movw r26,r20 |
1018 0938 C901 movw r24,r18 |
1019 093a 63E0 ldi r22,3 |
1020 093c 880F 1: lsl r24 |
1021 093e 991F rol r25 |
1022 0940 AA1F rol r26 |
1023 0942 BB1F rol r27 |
1024 0944 6A95 dec r22 |
1025 0946 01F4 brne 1b |
1026 0948 820F add r24,r18 |
1027 094a 931F adc r25,r19 |
1028 094c A41F adc r26,r20 |
1029 094e B51F adc r27,r21 |
1030 0950 820F add r24,r18 |
1031 0952 931F adc r25,r19 |
1032 0954 A41F adc r26,r20 |
1033 0956 B51F adc r27,r21 |
1034 0958 8093 0000 sts FromNC_AltitudeSetpoint,r24 |
1035 095c 9093 0000 sts (FromNC_AltitudeSetpoint)+1,r25 |
1036 0960 A093 0000 sts (FromNC_AltitudeSetpoint)+2,r26 |
1037 0964 B093 0000 sts (FromNC_AltitudeSetpoint)+3,r27 |
1038 0968 00C0 rjmp .L20 |
1039 .L63: |
1040 096a 8091 0000 lds r24,FromNaviCtrl+19 |
1041 096e 8093 0000 sts EarthMagneticField,r24 |
1042 0972 8091 0000 lds r24,FromNaviCtrl+20 |
1043 0976 8093 0000 sts EarthMagneticInclination,r24 |
1044 097a 8091 0000 lds r24,FromNaviCtrl+21 |
1045 097e 8093 0000 sts EarthMagneticInclinationTheoretic,r24 |
1046 0982 9091 0000 lds r25,FromNaviCtrl+22 |
1047 0986 9923 tst r25 |
1048 0988 01F0 breq .L64 |
1049 098a 8091 0000 lds r24,SpeakHoTT |
1050 098e 8823 tst r24 |
1051 0990 01F0 breq .L66 |
1052 0992 8151 subi r24,lo8(-(-17)) |
1053 0994 8330 cpi r24,lo8(3) |
1054 0996 00F4 brsh .L64 |
1055 .L66: |
1056 0998 9093 0000 sts SpeakHoTT,r25 |
1057 .L64: |
1058 099c 8091 0000 lds r24,FromNaviCtrl+23 |
1059 09a0 8093 0000 sts NaviData_WaypointIndex,r24 |
1060 09a4 8091 0000 lds r24,FromNaviCtrl+24 |
1061 09a8 8093 0000 sts NaviData_WaypointNumber,r24 |
1062 09ac 8091 0000 lds r24,FromNaviCtrl+25 |
1063 09b0 9091 0000 lds r25,(FromNaviCtrl+25)+1 |
1064 09b4 9093 0000 sts (NaviData_TargetDistance)+1,r25 |
1065 09b8 8093 0000 sts NaviData_TargetDistance,r24 |
1066 09bc 8091 0000 lds r24,FromNaviCtrl+27 |
1067 09c0 8093 0000 sts NaviData_TargetHoldTime,r24 |
1068 09c4 00C0 rjmp .L20 |
1069 .L67: |
1070 09c6 8091 0000 lds r24,EE_Parameter+39 |
1071 09ca 8630 cpi r24,lo8(6) |
1072 09cc 01F4 brne .L20 |
1073 09ce 0E94 0000 call NC_Fills_HoTT_Telemety |
1074 09d2 00C0 rjmp .L20 |
1075 .L51: |
1076 09d4 1092 0000 sts (GPS_Nick)+1,__zero_reg__ |
1077 09d8 1092 0000 sts GPS_Nick,__zero_reg__ |
1078 09dc 1092 0000 sts (GPS_Roll)+1,__zero_reg__ |
1079 09e0 1092 0000 sts GPS_Roll,__zero_reg__ |
1080 .L20: |
1081 /* epilogue: frame size=0 */ |
1082 09e4 1F91 pop r17 |
1083 09e6 0F91 pop r16 |
1084 09e8 FF90 pop r15 |
1085 09ea EF90 pop r14 |
1086 09ec 0895 ret |
1087 /* epilogue end (size=5) */ |
1088 /* function UpdateSPI_Buffer size 1115 (1106) */ |
1090 .global SPI_StartTransmitPacket |
1092 SPI_StartTransmitPacket: |
1093 /* prologue: frame size=0 */ |
1094 /* prologue end (size=0) */ |
1095 09ee 8091 0000 lds r24,SPITransferCompleted |
1096 09f2 8823 tst r24 |
1097 09f4 01F4 brne .+2 |
1098 09f6 00C0 rjmp .L73 |
1099 09f8 4598 cbi 40-0x20,5 |
1100 09fa 80E0 ldi r24,lo8(ToNaviCtrl) |
1101 09fc 90E0 ldi r25,hi8(ToNaviCtrl) |
1102 09fe 9093 0000 sts (SPI_TX_Buffer)+1,r25 |
1103 0a02 8093 0000 sts SPI_TX_Buffer,r24 |
1104 0a06 9091 0000 lds r25,SPI_CommandCounter |
1105 0a0a E92F mov r30,r25 |
1106 0a0c FF27 clr r31 |
1107 0a0e E050 subi r30,lo8(-(SPI_CommandSequence)) |
1108 0a10 F040 sbci r31,hi8(-(SPI_CommandSequence)) |
1109 0a12 9F5F subi r25,lo8(-(1)) |
1110 0a14 9093 0000 sts SPI_CommandCounter,r25 |
1111 0a18 8081 ld r24,Z |
1112 0a1a 8093 0000 sts ToNaviCtrl+2,r24 |
1113 0a1e 9B30 cpi r25,lo8(11) |
1114 0a20 00F0 brlo .L75 |
1115 0a22 1092 0000 sts SPI_CommandCounter,__zero_reg__ |
1116 .L75: |
1117 0a26 1092 0000 sts SPITransferCompleted,__zero_reg__ |
1118 0a2a 0E94 0000 call UpdateSPI_Buffer |
1119 0a2e 81E0 ldi r24,lo8(1) |
1120 0a30 8093 0000 sts SPI_BufferIndex,r24 |
1121 /* #APP */ |
1122 0a34 0000 nop |
1123 0a36 0000 nop |
1124 0a38 0000 nop |
1125 0a3a 0000 nop |
1126 0a3c 0000 nop |
1127 0a3e 0000 nop |
1128 0a40 0000 nop |
1129 0a42 0000 nop |
1130 0a44 0000 nop |
1131 0a46 0000 nop |
1132 0a48 0000 nop |
1133 0a4a 0000 nop |
1134 0a4c 0000 nop |
1135 0a4e 0000 nop |
1136 0a50 0000 nop |
1137 0a52 0000 nop |
1138 0a54 0000 nop |
1139 0a56 0000 nop |
1140 0a58 0000 nop |
1141 0a5a 0000 nop |
1142 0a5c 0000 nop |
1143 0a5e 0000 nop |
1144 0a60 0000 nop |
1145 0a62 0000 nop |
1146 /* #NOAPP */ |
1147 0a64 8091 0000 lds r24,ToNaviCtrl |
1148 0a68 8093 0000 sts ToNaviCtrl+33,r24 |
1149 0a6c 8EBD out 78-0x20,r24 |
1150 .L73: |
1151 0a6e 0895 ret |
1152 /* epilogue: frame size=0 */ |
1153 /* epilogue: noreturn */ |
1154 /* epilogue end (size=0) */ |
1155 /* function SPI_StartTransmitPacket size 89 (89) */ |
1157 .comm GPSInfo,8,1 |
1158 .comm NC_Version,5,1 |
1159 .comm FromNaviCtrl_Value,5,1 |
1160 .comm ToNaviCtrl,34,1 |
1161 .comm FromNaviCtrl,32,1 |
1162 .comm SPI_BufferIndex,1,1 |
1163 .comm SPI_RxBufferIndex,1,1 |
1164 .comm SPI_Buffer,32,1 |
1165 .comm SPI_TX_Buffer,2,1 |
1166 .comm SPITransferCompleted,1,1 |
1167 .comm SPI_ChkSum,1,1 |
1168 .comm SPI_RxDataValid,1,1 |
1169 /* File "spi.c": code 1401 = 0x0579 (1391), prologues 4, epilogues 6 */ |
DEFINED SYMBOLS |
*ABS*:00000000 spi.c |
C:\Temp/ccnBcmNg.s:3 *ABS*:0000003f __SREG__ |
C:\Temp/ccnBcmNg.s:4 *ABS*:0000003e __SP_H__ |
C:\Temp/ccnBcmNg.s:5 *ABS*:0000003d __SP_L__ |
C:\Temp/ccnBcmNg.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Temp/ccnBcmNg.s:7 *ABS*:00000001 __zero_reg__ |
C:\Temp/ccnBcmNg.s:15 .bss:00000000 MagVec |
C:\Temp/ccnBcmNg.s:21 .bss:00000006 POI_KameraNick |
C:\Temp/ccnBcmNg.s:27 .bss:00000008 NC_To_FC_MaxAltitude |
C:\Temp/ccnBcmNg.s:33 .bss:00000009 NC_To_FC_Flags |
C:\Temp/ccnBcmNg.s:39 .bss:0000000a EarthMagneticInclinationTheoretic |
C:\Temp/ccnBcmNg.s:45 .bss:0000000b EarthMagneticInclination |
C:\Temp/ccnBcmNg.s:51 .bss:0000000c EarthMagneticField |
C:\Temp/ccnBcmNg.s:57 .data:00000000 NC_GPS_ModeCharacter |
C:\Temp/ccnBcmNg.s:64 .bss:0000000d NC_ErrorCode |
C:\Temp/ccnBcmNg.s:70 .bss:0000000e SPI_CommandCounter |
C:\Temp/ccnBcmNg.s:76 .data:00000001 SPI_CommandSequence |
C:\Temp/ccnBcmNg.s:91 .data:0000000c NaviDataOkay |
C:\Temp/ccnBcmNg.s:98 .bss:0000000f FromNC_Rotate_S |
C:\Temp/ccnBcmNg.s:104 .data:0000000d FromNC_Rotate_C |
C:\Temp/ccnBcmNg.s:109 .text:00000000 SPI_MasterInit |
*COM*:00000001 SPITransferCompleted |
*COM*:00000022 ToNaviCtrl |
*COM*:00000005 FromNaviCtrl_Value |
*COM*:00000001 SPI_RxDataValid |
.bss:00000010 SPI_RXState.2 |
C:\Temp/ccnBcmNg.s:139 .bss:00000011 rxchksum.3 |
C:\Temp/ccnBcmNg.s:143 .text:00000042 SPI_TransmitByte |
*COM*:00000001 SPI_RxBufferIndex |
*COM*:00000020 SPI_Buffer |
*COM*:00000020 FromNaviCtrl |
*COM*:00000001 SPI_BufferIndex |
*COM*:00000002 SPI_TX_Buffer |
C:\Temp/ccnBcmNg.s:140 .bss:00000012 motorindex.0 |
C:\Temp/ccnBcmNg.s:286 .data:0000000e oldcommand.1 |
C:\Temp/ccnBcmNg.s:291 .text:00000158 UpdateSPI_Buffer |
*COM*:00000005 NC_Version |
*COM*:00000008 GPSInfo |
C:\Temp/ccnBcmNg.s:1092 .text:000009ee SPI_StartTransmitPacket |
*COM*:00000001 SPI_ChkSum |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
SendSPI |
EE_Parameter |
IntegralNick |
__divmodsi4 |
IntegralRoll |
ErsatzKompass |
GIER_GRAD_FAKTOR |
AdNeutralGier |
AdWertGier |
NaviCntAcc |
NaviAccNick |
__divmodhi4 |
NaviAccRoll |
__tablejump2__ |
Parameter_UserParam1 |
Parameter_UserParam2 |
Parameter_UserParam3 |
Parameter_UserParam4 |
Parameter_UserParam5 |
Parameter_UserParam6 |
Parameter_UserParam7 |
Parameter_UserParam8 |
FC_StatusFlags |
GetActiveParamSet |
FC_StatusFlags2 |
Capacity |
UBat |
BattLowVoltageWarning |
VarioCharacter |
Motor |
__udivmodqi4 |
JetiBeep |
HoTT_Waring |
JETI_CODE |
ToNC_SpeakHoTT |
PPM_in |
Poti |
WinkelOut |
HoehenWert |
SollHoehe |
SenderOkay |
DebugOut |
PlatinenVersion |
VersionInfo |
Parameter_GlobalConfig |
Parameter_ExtraConfig |
Parameter_ServoNickControl |
Parameter_ServoRollControl |
CalculateCompassTimer |
GPS_Nick |
GPS_Roll |
KompassValue |
beeptime |
DisableRcOffBeeping |
KompassFusion |
GPS_Aid_StickMultiplikator |
CareFree |
KompassSollWert |
FromNC_AltitudeSpeed |
FromNC_AltitudeSetpoint |
SpeakHoTT |
NaviData_WaypointIndex |
NaviData_WaypointNumber |
NaviData_TargetDistance |
NaviData_TargetHoldTime |
NC_Fills_HoTT_Telemety |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/timer0.c |
---|
0,0 → 1,478 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software Nutzungsbedingungen (english version: see below) |
// + der Fa. HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland - nachfolgend Lizenzgeber genannt - |
// + Der Lizenzgeber räumt dem Kunden ein nicht-ausschließliches, zeitlich und räumlich* unbeschränktes Recht ein, die im den |
// + Mikrocontroller verwendete Firmware für die Hardware Flight-Ctrl, Navi-Ctrl, BL-Ctrl, MK3Mag & PC-Programm MikroKopter-Tool |
// + - nachfolgend Software genannt - nur für private Zwecke zu nutzen. |
// + Der Einsatz dieser Software ist nur auf oder mit Produkten des Lizenzgebers zulässig. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die vom Lizenzgeber gelieferte Software ist urheberrechtlich geschützt. Alle Rechte an der Software sowie an sonstigen im |
// + Rahmen der Vertragsanbahnung und Vertragsdurchführung überlassenen Unterlagen stehen im Verhältnis der Vertragspartner ausschließlich dem Lizenzgeber zu. |
// + Die in der Software enthaltenen Copyright-Vermerke, Markenzeichen, andere Rechtsvorbehalte, Seriennummern sowie |
// + sonstige der Programmidentifikation dienenden Merkmale dürfen vom Kunden nicht verändert oder unkenntlich gemacht werden. |
// + Der Kunde trifft angemessene Vorkehrungen für den sicheren Einsatz der Software. Er wird die Software gründlich auf deren |
// + Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Die Haftung des Lizenzgebers wird - soweit gesetzlich zulässig - begrenzt in Höhe des typischen und vorhersehbaren |
// + Schadens. Die gesetzliche Haftung bei Personenschäden und nach dem Produkthaftungsgesetz bleibt unberührt. Dem Lizenzgeber steht jedoch der Einwand |
// + des Mitverschuldens offen. |
// + Der Kunde trifft angemessene Vorkehrungen für den Fall, dass die Software ganz oder teilweise nicht ordnungsgemäß arbeitet. |
// + Er wird die Software gründlich auf deren Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Der Kunde wird er seine Daten vor Einsatz der Software nach dem Stand der Technik sichern. |
// + Der Kunde ist darüber unterrichtet, dass der Lizenzgeber seine Daten im zur Vertragsdurchführung erforderlichen Umfang |
// + und auf Grundlage der Datenschutzvorschriften erhebt, speichert, verarbeitet und, sofern notwendig, an Dritte übermittelt. |
// + *) Die räumliche Nutzung bezieht sich nur auf den Einsatzort, nicht auf die Reichweite der programmierten Software. |
// + #### ENDE DER NUTZUNGSBEDINGUNGEN ####' |
// + Hinweis: Informationen über erweiterte Nutzungsrechte (wie z.B. Nutzung für nicht-private Zwecke) sind auf Anfrage per Email an info(@)hisystems.de verfügbar. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software LICENSING TERMS |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + of HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland, Germany - the Licensor - |
// + The Licensor grants the customer a non-exclusive license to use the microcontroller firmware of the Flight-Ctrl, Navi-Ctrl, BL-Ctrl, and MK3Mag hardware |
// + (the Software) exclusively for private purposes. The License is unrestricted with respect to time and territory*. |
// + The Software may only be used with the Licensor's products. |
// + The Software provided by the Licensor is protected by copyright. With respect to the relationship between the parties to this |
// + agreement, all rights pertaining to the Software and other documents provided during the preparation and execution of this |
// + agreement shall be the property of the Licensor. |
// + The information contained in the Software copyright notices, trademarks, other legal reservations, serial numbers and other |
// + features that can be used to identify the program may not be altered or defaced by the customer. |
// + The customer shall be responsible for taking reasonable precautions |
// + for the safe use of the Software. The customer shall test the Software thoroughly regarding its suitability for the |
// + intended purpose before implementing it for actual operation. The Licensor's liability shall be limited to the extent of typical and |
// + foreseeable damage to the extent permitted by law, notwithstanding statutory liability for bodily injury and product |
// + liability. However, the Licensor shall be entitled to the defense of contributory negligence. |
// + The customer will take adequate precautions in the case, that the software is not working properly. The customer will test |
// + the software for his purpose before any operational usage. The customer will backup his data before using the software. |
// + The customer understands that the Licensor collects, stores and processes, and, where required, forwards, customer data |
// + to third parties to the extent necessary for executing the agreement, subject to applicable data protection and privacy regulations. |
// + *) The territory aspect only refers to the place where the Software is used, not its programmed range. |
// + #### END OF LICENSING TERMS #### |
// + Note: For information on license extensions (e.g. commercial use), please contact us at info(@)hisystems.de. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#define MULTIPLYER 4 |
volatile unsigned int CountMilliseconds = 0; |
volatile unsigned int tim_main; |
volatile unsigned char UpdateMotor = 0; |
volatile unsigned int cntKompass = 0; |
volatile unsigned int beeptime = 0; |
volatile unsigned char SendSPI = 0, ServoActive = 0, CalculateServoSignals = 1; |
uint16_t RemainingPulse = 0; |
volatile int16_t ServoNickOffset = (255 / 2) * MULTIPLYER * 16; // initial value near center positon |
volatile int16_t ServoRollOffset = (255 / 2) * MULTIPLYER * 16; // initial value near center positon |
unsigned int BeepMuster = 0xffff; |
signed int NickServoValue = 128 * MULTIPLYER * 16; |
volatile int16_t ServoNickValue = 0; |
volatile int16_t ServoRollValue = 0; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
ISR(TIMER0_OVF_vect) // 9,7kHz |
{ |
static unsigned char cnt_1ms = 1,cnt = 0, compass_active = 0; |
unsigned char pieper_ein = 0; |
if(SendSPI) SendSPI--; |
if(SpektrumTimer) SpektrumTimer--; |
if(!cnt--) |
{ |
cnt = 9; |
CountMilliseconds++; |
cnt_1ms++; |
cnt_1ms %= 2; |
if(!cnt_1ms) UpdateMotor = 1; |
if(!(PINC & 0x10)) compass_active = 1; |
if(beeptime) |
{ |
if(beeptime > 10) beeptime -= 10; else beeptime = 0; |
if(beeptime & BeepMuster) |
{ |
pieper_ein = 1; |
} |
else pieper_ein = 0; |
} |
else |
{ |
pieper_ein = 0; |
BeepMuster = 0xffff; |
} |
if(pieper_ein) |
{ |
if(PlatinenVersion == 10) PORTD |= (1<<2); // Speaker an PORTD.2 |
else PORTC |= (1<<7); // Speaker an PORTC.7 |
} |
else |
{ |
if(PlatinenVersion == 10) PORTD &= ~(1<<2); |
else PORTC &= ~(1<<7); |
} |
} |
if(compass_active && !NaviDataOkay && Parameter_GlobalConfig & CFG_KOMPASS_AKTIV) |
{ |
if(PINC & 0x10) |
{ |
if(++cntKompass > 1000) compass_active = 0; |
} |
else |
{ |
if((cntKompass) && (cntKompass < 362)) |
{ |
cntKompass += cntKompass / 41; |
if(cntKompass > 10) KompassValue = cntKompass - 10; else KompassValue = 0; |
// KompassRichtung = ((540 + KompassValue - KompassSollWert) % 360) - 180; |
} |
cntKompass = 0; |
} |
} |
} |
// ----------------------------------------------------------------------- |
unsigned int SetDelay(unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(CountMilliseconds + t + 1); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
char CheckDelay(unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(((t - CountMilliseconds) & 0x8000) >> 9); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
void Delay_ms_Mess(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)) if(AdReady) {AdReady = 0; ANALOG_ON;} |
} |
/*****************************************************/ |
/* Initialize Timer 2 */ |
/*****************************************************/ |
// The timer 2 is used to generate the PWM at PD7 (J7) |
// to control a camera servo for nick compensation. |
void TIMER2_Init(void) |
{ |
uint8_t sreg = SREG; |
// disable all interrupts before reconfiguration |
cli(); |
PORTD &= ~(1<<PORTD7); // set PD7 to low |
DDRC |= (1<<DDC6); // set PC6 as output (Reset for HEF4017) |
HEF4017Reset_ON; |
// Timer/Counter 2 Control Register A |
// Timer Mode is FastPWM with timer reload at OCR2A (Bits: WGM22 = 1, WGM21 = 1, WGM20 = 1) |
// PD7: Normal port operation, OC2A disconnected, (Bits: COM2A1 = 0, COM2A0 = 0) |
// PD6: Normal port operation, OC2B disconnected, (Bits: COM2B1 = 0, COM2B0 = 0) |
TCCR2A &= ~((1<<COM2A1)|(1<<COM2A0)|(1<<COM2B1)|(1<<COM2B0)); |
TCCR2A |= (1<<WGM21)|(1<<WGM20); |
// Timer/Counter 2 Control Register B |
// Set clock divider for timer 2 to SYSKLOCK/32 = 20MHz / 32 = 625 kHz |
// The timer increments from 0x00 to 0xFF with an update rate of 625 kHz or 1.6 us |
// hence the timer overflow interrupt frequency is 625 kHz / 256 = 2.44 kHz or 0.4096 ms |
// divider 32 (Bits: CS022 = 0, CS21 = 1, CS20 = 1) |
TCCR2B &= ~((1<<FOC2A)|(1<<FOC2B)|(1<<CS22)); |
TCCR2B |= (1<<CS21)|(1<<CS20)|(1<<WGM22); |
// Initialize the Timer/Counter 2 Register |
TCNT2 = 0; |
// Initialize the Output Compare Register A used for PWM generation on port PD7. |
OCR2A = 255; |
TCCR2A |= (1<<COM2A1); // set or clear at compare match depends on value of COM2A0 |
// Timer/Counter 2 Interrupt Mask Register |
// Enable timer output compare match A Interrupt only |
TIMSK2 &= ~((1<<OCIE2B)|(1<<TOIE2)); |
TIMSK2 |= (1<<OCIE2A); |
SREG = sreg; |
} |
//---------------------------- |
void Timer_Init(void) |
{ |
tim_main = SetDelay(10); |
TCCR0B = CK8; |
TCCR0A = (1<<COM0A1)|(1<<COM0B1)|3;//fast PWM |
OCR0A = 0; |
OCR0B = 180; |
TCNT0 = (unsigned char)-TIMER_RELOAD_VALUE; // reload |
//OCR1 = 0x00; |
TIMSK0 |= _BV(TOIE0); |
} |
/*****************************************************/ |
/* Control Servo Position */ |
/*****************************************************/ |
void CalcNickServoValue(void) |
{ |
signed int max, min; |
if(EE_Parameter.ServoCompInvert & SERVO_RELATIVE) // relative moving of the servo value |
{ |
max = ((unsigned int) EE_Parameter.ServoNickMax * MULTIPLYER * 15); |
min = ((unsigned int) EE_Parameter.ServoNickMin * MULTIPLYER * 20); |
NickServoValue -= ((signed char) (Parameter_ServoNickControl - 128) / 4) * 6; |
LIMIT_MIN_MAX(NickServoValue,min, max); |
} |
else NickServoValue = (int16_t)Parameter_ServoNickControl * (MULTIPLYER*16); // direct poti control |
} |
void CalculateServo(void) |
{ |
signed char cosinus, sinus; |
signed long nick, roll; |
cosinus = sintab[EE_Parameter.CamOrientation + 6]; |
sinus = sintab[EE_Parameter.CamOrientation]; |
if(CalculateServoSignals == 1) |
{ |
nick = (cosinus * IntegralNick) / 128L - (sinus * IntegralRoll) / 128L; |
nick -= POI_KameraNick * 7; |
nick = ((long)EE_Parameter.ServoNickComp * nick) / 512L; |
// offset (Range from 0 to 255 * 3 = 765) |
if(EE_Parameter.ServoCompInvert & SERVO_RELATIVE) ServoNickOffset = NickServoValue; |
else ServoNickOffset += (NickServoValue - ServoNickOffset) / EE_Parameter.ServoManualControlSpeed; |
if(EE_Parameter.ServoCompInvert & SERVO_NICK_INV) // inverting movement of servo |
{ |
nick = ServoNickOffset / 16 + nick; |
} |
else |
{ // inverting movement of servo |
nick = ServoNickOffset / 16 - nick; |
} |
if(EE_Parameter.ServoFilterNick) ServoNickValue = ((ServoNickValue * EE_Parameter.ServoFilterNick) + nick) / (EE_Parameter.ServoFilterNick + 1); |
else ServoNickValue = nick; |
// limit servo value to its parameter range definition |
if(ServoNickValue < ((int16_t)EE_Parameter.ServoNickMin * MULTIPLYER)) |
{ |
ServoNickValue = (int16_t)EE_Parameter.ServoNickMin * MULTIPLYER; |
} |
else |
if(ServoNickValue > ((int16_t)EE_Parameter.ServoNickMax * MULTIPLYER)) |
{ |
ServoNickValue = (int16_t)EE_Parameter.ServoNickMax * MULTIPLYER; |
} |
if(PlatinenVersion < 20) CalculateServoSignals = 0; else CalculateServoSignals++; |
} |
else |
{ |
roll = (cosinus * IntegralRoll) / 128L + (sinus * IntegralNick) / 128L; |
roll = ((long)EE_Parameter.ServoRollComp * roll) / 512L; |
ServoRollOffset += ((int16_t)Parameter_ServoRollControl * (MULTIPLYER*16) - ServoRollOffset) / EE_Parameter.ServoManualControlSpeed; |
if(EE_Parameter.ServoCompInvert & SERVO_ROLL_INV) |
{ // inverting movement of servo |
roll = ServoRollOffset / 16 + roll; |
} |
else |
{ // inverting movement of servo |
roll = ServoRollOffset / 16 - roll; |
} |
if(EE_Parameter.ServoFilterRoll) ServoRollValue = ((ServoRollValue * EE_Parameter.ServoFilterRoll) + roll) / (EE_Parameter.ServoFilterRoll + 1); |
else ServoRollValue = roll; |
// limit servo value to its parameter range definition |
if(ServoRollValue < ((int16_t)EE_Parameter.ServoRollMin * MULTIPLYER)) |
{ |
ServoRollValue = (int16_t)EE_Parameter.ServoRollMin * MULTIPLYER; |
} |
else |
if(ServoRollValue > ((int16_t)EE_Parameter.ServoRollMax * MULTIPLYER)) |
{ |
ServoRollValue = (int16_t)EE_Parameter.ServoRollMax * MULTIPLYER; |
} |
CalculateServoSignals = 0; |
} |
} |
ISR(TIMER2_COMPA_vect) |
{ |
// frame len 22.5 ms = 14063 * 1.6 us |
// stop pulse: 0.3 ms = 188 * 1.6 us |
// min servo pulse: 0.6 ms = 375 * 1.6 us |
// max servo pulse: 2.4 ms = 1500 * 1.6 us |
// resolution: 1500 - 375 = 1125 steps |
#define IRS_RUNTIME 127 |
#define PPM_STOPPULSE 188 |
#define PPM_FRAMELEN (1757 * EE_Parameter.ServoNickRefresh) |
#define MINSERVOPULSE 375 |
#define MAXSERVOPULSE 1500 |
#define SERVORANGE (MAXSERVOPULSE - MINSERVOPULSE) |
static uint8_t PulseOutput = 0; |
static uint16_t ServoFrameTime = 0; |
static uint8_t ServoIndex = 0; |
if(PlatinenVersion < 20) |
{ |
//--------------------------- |
// Nick servo state machine |
//--------------------------- |
if(!PulseOutput) // pulse output complete |
{ |
if(TCCR2A & (1<<COM2A0)) // we had a low pulse |
{ |
TCCR2A &= ~(1<<COM2A0);// make a high pulse |
RemainingPulse = MINSERVOPULSE + SERVORANGE/2; // center position ~ 1.5ms |
RemainingPulse += ServoNickValue - (256 / 2) * MULTIPLYER; // shift ServoNickValue to center position |
// range servo pulse width |
if(RemainingPulse > MAXSERVOPULSE ) RemainingPulse = MAXSERVOPULSE; // upper servo pulse limit |
else if(RemainingPulse < MINSERVOPULSE ) RemainingPulse = MINSERVOPULSE; // lower servo pulse limit |
// accumulate time for correct update rate |
ServoFrameTime = RemainingPulse; |
} |
else // we had a high pulse |
{ |
TCCR2A |= (1<<COM2A0); // make a low pulse |
RemainingPulse = PPM_FRAMELEN - ServoFrameTime; |
CalculateServoSignals = 1; |
} |
// set pulse output active |
PulseOutput = 1; |
} |
} // EOF Nick servo state machine |
else |
{ |
//----------------------------------------------------- |
// PPM state machine, onboard demultiplexed by HEF4017 |
//----------------------------------------------------- |
if(!PulseOutput) // pulse output complete |
{ |
if(TCCR2A & (1<<COM2A0)) // we had a low pulse |
{ |
TCCR2A &= ~(1<<COM2A0);// make a high pulse |
if(ServoIndex == 0) // if we are at the sync gap |
{ |
RemainingPulse = PPM_FRAMELEN - ServoFrameTime; // generate sync gap by filling time to full frame time |
ServoFrameTime = 0; // reset servo frame time |
HEF4017Reset_ON; // enable HEF4017 reset |
} |
else // servo channels |
if(ServoIndex > EE_Parameter.ServoNickRefresh) |
{ |
RemainingPulse = 10; // end it here |
} |
else |
{ |
RemainingPulse = MINSERVOPULSE + SERVORANGE/2; // center position ~ 1.5ms |
switch(ServoIndex) // map servo channels |
{ |
case 1: // Nick Compensation Servo |
RemainingPulse += ServoNickValue - (256 / 2) * MULTIPLYER; // shift ServoNickValue to center position |
break; |
case 2: // Roll Compensation Servo |
RemainingPulse += ServoRollValue - (256 / 2) * MULTIPLYER; // shift ServoNickValue to center position |
break; |
case 3: |
RemainingPulse += ((int16_t)Parameter_Servo3 * MULTIPLYER) - (256 / 2) * MULTIPLYER; |
break; |
case 4: |
RemainingPulse += ((int16_t)Parameter_Servo4 * MULTIPLYER) - (256 / 2) * MULTIPLYER; |
break; |
case 5: |
RemainingPulse += ((int16_t)Parameter_Servo5 * MULTIPLYER) - (256 / 2) * MULTIPLYER; |
break; |
default: // other servo channels |
RemainingPulse += 2 * PPM_in[ServoIndex]; // add channel value, factor of 2 because timer 1 increments 3.2µs |
break; |
} |
// range servo pulse width |
if(RemainingPulse > MAXSERVOPULSE) RemainingPulse = MAXSERVOPULSE; // upper servo pulse limit |
else if(RemainingPulse < MINSERVOPULSE) RemainingPulse = MINSERVOPULSE; // lower servo pulse limit |
// substract stop pulse width |
RemainingPulse -= PPM_STOPPULSE; |
// accumulate time for correct sync gap |
ServoFrameTime += RemainingPulse; |
} |
} |
else // we had a high pulse |
{ |
TCCR2A |= (1<<COM2A0); // make a low pulse |
// set pulsewidth to stop pulse width |
RemainingPulse = PPM_STOPPULSE; |
// accumulate time for correct sync gap |
ServoFrameTime += RemainingPulse; |
if((ServoActive && SenderOkay) || ServoActive == 2) HEF4017Reset_OFF; // disable HEF4017 reset |
else HEF4017Reset_ON; |
ServoIndex++; |
if(ServoIndex > EE_Parameter.ServoNickRefresh+1) |
{ |
CalculateServoSignals = 1; |
ServoIndex = 0; // reset to the sync gap |
} |
} |
// set pulse output active |
PulseOutput = 1; |
} |
} // EOF PPM state machine |
// General pulse output generator |
if(RemainingPulse > (255 + IRS_RUNTIME)) |
{ |
OCR2A = 255; |
RemainingPulse -= 255; |
} |
else |
{ |
if(RemainingPulse > 255) // this is the 2nd last part |
{ |
if((RemainingPulse - 255) < IRS_RUNTIME) |
{ |
OCR2A = 255 - IRS_RUNTIME; |
RemainingPulse -= 255 - IRS_RUNTIME; |
} |
else // last part > ISR_RUNTIME |
{ |
OCR2A = 255; |
RemainingPulse -= 255; |
} |
} |
else // this is the last part |
{ |
OCR2A = RemainingPulse; |
RemainingPulse = 0; |
PulseOutput = 0; // trigger to stop pulse |
} |
} // EOF general pulse output generator |
} |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/timer0.h |
---|
0,0 → 1,24 |
#define TIMER_TEILER CK8 |
#define TIMER_RELOAD_VALUE 250 |
#define HEF4017Reset_ON PORTC |= (1<<PORTC6) |
#define HEF4017Reset_OFF PORTC &= ~(1<<PORTC6) |
void Timer_Init(void); |
void TIMER2_Init(void); |
void Delay_ms(unsigned int); |
void Delay_ms_Mess(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
void CalculateServo(void); |
void CalcNickServoValue(void); |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char UpdateMotor; |
extern volatile unsigned int beeptime; |
extern volatile unsigned int cntKompass; |
extern unsigned int BeepMuster; |
extern volatile unsigned char SendSPI, ServoActive, CalculateServoSignals; |
extern volatile int16_t ServoNickValue; |
extern volatile int16_t ServoRollValue; |
extern signed int NickServoValue; |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/timer0.lst |
---|
0,0 → 1,1376 |
1 .file "timer0.c" |
2 .arch atmega1284p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .global ServoRollValue |
11 .global ServoRollValue |
12 .section .bss |
15 ServoRollValue: |
16 0000 0000 .skip 2,0 |
17 .global ServoNickValue |
18 .global ServoNickValue |
21 ServoNickValue: |
22 0002 0000 .skip 2,0 |
23 .global NickServoValue |
24 .data |
27 NickServoValue: |
28 0000 0020 .word 8192 |
29 .global BeepMuster |
32 BeepMuster: |
33 0002 FFFF .word -1 |
34 .global ServoRollOffset |
37 ServoRollOffset: |
38 0004 C01F .word 8128 |
39 .global ServoNickOffset |
42 ServoNickOffset: |
43 0006 C01F .word 8128 |
44 .global RemainingPulse |
45 .global RemainingPulse |
46 .section .bss |
49 RemainingPulse: |
50 0004 0000 .skip 2,0 |
51 .global CalculateServoSignals |
52 .data |
55 CalculateServoSignals: |
56 0008 01 .byte 1 |
57 .global ServoActive |
58 .global ServoActive |
59 .section .bss |
62 ServoActive: |
63 0006 00 .skip 1,0 |
64 .global SendSPI |
65 .global SendSPI |
68 SendSPI: |
69 0007 00 .skip 1,0 |
70 .global beeptime |
71 .global beeptime |
74 beeptime: |
75 0008 0000 .skip 2,0 |
76 .global cntKompass |
77 .global cntKompass |
80 cntKompass: |
81 000a 0000 .skip 2,0 |
82 .global UpdateMotor |
83 .global UpdateMotor |
86 UpdateMotor: |
87 000c 00 .skip 1,0 |
88 .global CountMilliseconds |
89 .global CountMilliseconds |
92 CountMilliseconds: |
93 000d 0000 .skip 2,0 |
94 .data |
97 cnt_1ms.3: |
98 0009 01 .byte 1 |
99 .lcomm cnt.4,1 |
100 .lcomm compass_active.5,1 |
101 .text |
102 .global __vector_18 |
104 __vector_18: |
105 /* prologue: frame size=0 */ |
106 0000 1F92 push __zero_reg__ |
107 0002 0F92 push __tmp_reg__ |
108 0004 0FB6 in __tmp_reg__,__SREG__ |
109 0006 0F92 push __tmp_reg__ |
110 0008 1124 clr __zero_reg__ |
111 000a 2F93 push r18 |
112 000c 3F93 push r19 |
113 000e 5F93 push r21 |
114 0010 6F93 push r22 |
115 0012 7F93 push r23 |
116 0014 8F93 push r24 |
117 0016 9F93 push r25 |
118 0018 AF93 push r26 |
119 001a BF93 push r27 |
120 001c EF93 push r30 |
121 001e FF93 push r31 |
122 /* prologue end (size=16) */ |
123 0020 20E0 ldi r18,lo8(0) |
124 0022 8091 0000 lds r24,SendSPI |
125 0026 8823 tst r24 |
126 0028 01F0 breq .L2 |
127 002a 8091 0000 lds r24,SendSPI |
128 002e 8150 subi r24,lo8(-(-1)) |
129 0030 8093 0000 sts SendSPI,r24 |
130 .L2: |
131 0034 8091 0000 lds r24,SpektrumTimer |
132 0038 8823 tst r24 |
133 003a 01F0 breq .L3 |
134 003c 8150 subi r24,lo8(-(-1)) |
135 003e 8093 0000 sts SpektrumTimer,r24 |
136 .L3: |
137 0042 8091 0000 lds r24,cnt.4 |
138 0046 8150 subi r24,lo8(-(-1)) |
139 0048 8093 0000 sts cnt.4,r24 |
140 004c 8F3F cpi r24,lo8(-1) |
141 004e 01F0 breq .+2 |
142 0050 00C0 rjmp .L4 |
143 0052 89E0 ldi r24,lo8(9) |
144 0054 8093 0000 sts cnt.4,r24 |
145 0058 8091 0000 lds r24,CountMilliseconds |
146 005c 9091 0000 lds r25,(CountMilliseconds)+1 |
147 0060 0196 adiw r24,1 |
148 0062 9093 0000 sts (CountMilliseconds)+1,r25 |
149 0066 8093 0000 sts CountMilliseconds,r24 |
150 006a 8091 0000 lds r24,cnt_1ms.3 |
151 006e 8F5F subi r24,lo8(-(1)) |
152 0070 8170 andi r24,lo8(1) |
153 0072 8093 0000 sts cnt_1ms.3,r24 |
154 0076 8823 tst r24 |
155 0078 01F4 brne .L5 |
156 007a 81E0 ldi r24,lo8(1) |
157 007c 8093 0000 sts UpdateMotor,r24 |
158 .L5: |
159 0080 3499 sbic 38-0x20,4 |
160 0082 00C0 rjmp .L6 |
161 0084 81E0 ldi r24,lo8(1) |
162 0086 8093 0000 sts compass_active.5,r24 |
163 .L6: |
164 008a 8091 0000 lds r24,beeptime |
165 008e 9091 0000 lds r25,(beeptime)+1 |
166 0092 892B or r24,r25 |
167 0094 01F0 breq .L7 |
168 0096 8091 0000 lds r24,beeptime |
169 009a 9091 0000 lds r25,(beeptime)+1 |
170 009e 0B97 sbiw r24,11 |
171 00a0 00F0 brlo .L8 |
172 00a2 8091 0000 lds r24,beeptime |
173 00a6 9091 0000 lds r25,(beeptime)+1 |
174 00aa 0A97 sbiw r24,10 |
175 00ac 9093 0000 sts (beeptime)+1,r25 |
176 00b0 8093 0000 sts beeptime,r24 |
177 00b4 00C0 rjmp .L9 |
178 .L8: |
179 00b6 1092 0000 sts (beeptime)+1,__zero_reg__ |
180 00ba 1092 0000 sts beeptime,__zero_reg__ |
181 .L9: |
182 00be 8091 0000 lds r24,beeptime |
183 00c2 9091 0000 lds r25,(beeptime)+1 |
184 00c6 2091 0000 lds r18,BeepMuster |
185 00ca 3091 0000 lds r19,(BeepMuster)+1 |
186 00ce 8223 and r24,r18 |
187 00d0 9323 and r25,r19 |
188 00d2 892B or r24,r25 |
189 00d4 01F0 breq .L10 |
190 00d6 21E0 ldi r18,lo8(1) |
191 00d8 00C0 rjmp .L12 |
192 .L10: |
193 00da 20E0 ldi r18,lo8(0) |
194 00dc 00C0 rjmp .L12 |
195 .L7: |
196 00de 8FEF ldi r24,lo8(-1) |
197 00e0 9FEF ldi r25,hi8(-1) |
198 00e2 9093 0000 sts (BeepMuster)+1,r25 |
199 00e6 8093 0000 sts BeepMuster,r24 |
200 .L12: |
201 00ea 8091 0000 lds r24,PlatinenVersion |
202 00ee 2223 tst r18 |
203 00f0 01F0 breq .L13 |
204 00f2 8A30 cpi r24,lo8(10) |
205 00f4 01F4 brne .L14 |
206 00f6 5A9A sbi 43-0x20,2 |
207 00f8 00C0 rjmp .L4 |
208 .L14: |
209 00fa 479A sbi 40-0x20,7 |
210 00fc 00C0 rjmp .L4 |
211 .L13: |
212 00fe 8A30 cpi r24,lo8(10) |
213 0100 01F4 brne .L17 |
214 0102 5A98 cbi 43-0x20,2 |
215 0104 00C0 rjmp .L4 |
216 .L17: |
217 0106 4798 cbi 40-0x20,7 |
218 .L4: |
219 0108 8091 0000 lds r24,compass_active.5 |
220 010c 8823 tst r24 |
221 010e 01F4 brne .+2 |
222 0110 00C0 rjmp .L1 |
223 0112 2091 0000 lds r18,NaviDataOkay |
224 0116 2223 tst r18 |
225 0118 01F0 breq .+2 |
226 011a 00C0 rjmp .L1 |
227 011c 8091 0000 lds r24,Parameter_GlobalConfig |
228 0120 83FF sbrs r24,3 |
229 0122 00C0 rjmp .L1 |
230 0124 86B1 in r24,38-0x20 |
231 0126 9927 clr r25 |
232 0128 FC01 movw r30,r24 |
233 012a E071 andi r30,lo8(16) |
234 012c F070 andi r31,hi8(16) |
235 012e 84FF sbrs r24,4 |
236 0130 00C0 rjmp .L20 |
237 0132 8091 0000 lds r24,cntKompass |
238 0136 9091 0000 lds r25,(cntKompass)+1 |
239 013a 0196 adiw r24,1 |
240 013c 9093 0000 sts (cntKompass)+1,r25 |
241 0140 8093 0000 sts cntKompass,r24 |
242 0144 8091 0000 lds r24,cntKompass |
243 0148 9091 0000 lds r25,(cntKompass)+1 |
244 014c 895E subi r24,lo8(1001) |
245 014e 9340 sbci r25,hi8(1001) |
246 0150 00F0 brlo .L1 |
247 0152 2093 0000 sts compass_active.5,r18 |
248 0156 00C0 rjmp .L1 |
249 .L20: |
250 0158 8091 0000 lds r24,cntKompass |
251 015c 9091 0000 lds r25,(cntKompass)+1 |
252 0160 892B or r24,r25 |
253 0162 01F0 breq .L23 |
254 0164 8091 0000 lds r24,cntKompass |
255 0168 9091 0000 lds r25,(cntKompass)+1 |
256 016c 8A56 subi r24,lo8(362) |
257 016e 9140 sbci r25,hi8(362) |
258 0170 00F4 brsh .L23 |
259 0172 8091 0000 lds r24,cntKompass |
260 0176 9091 0000 lds r25,(cntKompass)+1 |
261 017a 69E2 ldi r22,lo8(41) |
262 017c 70E0 ldi r23,hi8(41) |
263 017e 0E94 0000 call __udivmodhi4 |
264 0182 8091 0000 lds r24,cntKompass |
265 0186 9091 0000 lds r25,(cntKompass)+1 |
266 018a 860F add r24,r22 |
267 018c 971F adc r25,r23 |
268 018e 9093 0000 sts (cntKompass)+1,r25 |
269 0192 8093 0000 sts cntKompass,r24 |
270 0196 8091 0000 lds r24,cntKompass |
271 019a 9091 0000 lds r25,(cntKompass)+1 |
272 019e 0B97 sbiw r24,11 |
273 01a0 00F0 brlo .L24 |
274 01a2 8091 0000 lds r24,cntKompass |
275 01a6 9091 0000 lds r25,(cntKompass)+1 |
276 01aa 0A97 sbiw r24,10 |
277 01ac 9093 0000 sts (KompassValue)+1,r25 |
278 01b0 8093 0000 sts KompassValue,r24 |
279 01b4 00C0 rjmp .L23 |
280 .L24: |
281 01b6 F093 0000 sts (KompassValue)+1,r31 |
282 01ba E093 0000 sts KompassValue,r30 |
283 .L23: |
284 01be 1092 0000 sts (cntKompass)+1,__zero_reg__ |
285 01c2 1092 0000 sts cntKompass,__zero_reg__ |
286 .L1: |
287 /* epilogue: frame size=0 */ |
288 01c6 FF91 pop r31 |
289 01c8 EF91 pop r30 |
290 01ca BF91 pop r27 |
291 01cc AF91 pop r26 |
292 01ce 9F91 pop r25 |
293 01d0 8F91 pop r24 |
294 01d2 7F91 pop r23 |
295 01d4 6F91 pop r22 |
296 01d6 5F91 pop r21 |
297 01d8 3F91 pop r19 |
298 01da 2F91 pop r18 |
299 01dc 0F90 pop __tmp_reg__ |
300 01de 0FBE out __SREG__,__tmp_reg__ |
301 01e0 0F90 pop __tmp_reg__ |
302 01e2 1F90 pop __zero_reg__ |
303 01e4 1895 reti |
304 /* epilogue end (size=16) */ |
305 /* function __vector_18 size 247 (215) */ |
307 .global SetDelay |
309 SetDelay: |
310 /* prologue: frame size=0 */ |
311 /* prologue end (size=0) */ |
312 01e6 2091 0000 lds r18,CountMilliseconds |
313 01ea 3091 0000 lds r19,(CountMilliseconds)+1 |
314 01ee 280F add r18,r24 |
315 01f0 391F adc r19,r25 |
316 01f2 C901 movw r24,r18 |
317 01f4 0196 adiw r24,1 |
318 /* epilogue: frame size=0 */ |
319 01f6 0895 ret |
320 /* epilogue end (size=1) */ |
321 /* function SetDelay size 9 (8) */ |
323 .global CheckDelay |
325 CheckDelay: |
326 /* prologue: frame size=0 */ |
327 /* prologue end (size=0) */ |
328 01f8 2091 0000 lds r18,CountMilliseconds |
329 01fc 3091 0000 lds r19,(CountMilliseconds)+1 |
330 0200 821B sub r24,r18 |
331 0202 930B sbc r25,r19 |
332 0204 892F mov r24,r25 |
333 0206 9927 clr r25 |
334 0208 8695 lsr r24 |
335 020a 8074 andi r24,lo8(64) |
336 020c 9070 andi r25,hi8(64) |
337 /* epilogue: frame size=0 */ |
338 020e 0895 ret |
339 /* epilogue end (size=1) */ |
340 /* function CheckDelay size 12 (11) */ |
342 .global Delay_ms |
344 Delay_ms: |
345 /* prologue: frame size=0 */ |
346 0210 CF93 push r28 |
347 0212 DF93 push r29 |
348 /* prologue end (size=2) */ |
349 0214 0E94 0000 call SetDelay |
350 0218 EC01 movw r28,r24 |
351 .L29: |
352 021a CE01 movw r24,r28 |
353 021c 0E94 0000 call CheckDelay |
354 0220 8823 tst r24 |
355 0222 01F0 breq .L29 |
356 /* epilogue: frame size=0 */ |
357 0224 DF91 pop r29 |
358 0226 CF91 pop r28 |
359 0228 0895 ret |
360 /* epilogue end (size=3) */ |
361 /* function Delay_ms size 13 (8) */ |
363 .global Delay_ms_Mess |
365 Delay_ms_Mess: |
366 /* prologue: frame size=0 */ |
367 022a CF93 push r28 |
368 022c DF93 push r29 |
369 /* prologue end (size=2) */ |
370 022e 0E94 0000 call SetDelay |
371 0232 EC01 movw r28,r24 |
372 0234 00C0 rjmp .L40 |
373 .L36: |
374 0236 8091 0000 lds r24,AdReady |
375 023a 8823 tst r24 |
376 023c 01F0 breq .L40 |
377 023e 9093 0000 sts AdReady,r25 |
378 0242 8FEC ldi r24,lo8(-49) |
379 0244 8093 7A00 sts 122,r24 |
380 .L40: |
381 0248 CE01 movw r24,r28 |
382 024a 0E94 0000 call CheckDelay |
383 024e 982F mov r25,r24 |
384 0250 8823 tst r24 |
385 0252 01F0 breq .L36 |
386 /* epilogue: frame size=0 */ |
387 0254 DF91 pop r29 |
388 0256 CF91 pop r28 |
389 0258 0895 ret |
390 /* epilogue end (size=3) */ |
391 /* function Delay_ms_Mess size 24 (19) */ |
393 .global TIMER2_Init |
395 TIMER2_Init: |
396 /* prologue: frame size=0 */ |
397 /* prologue end (size=0) */ |
398 025a 9FB7 in r25,95-0x20 |
399 /* #APP */ |
400 025c F894 cli |
401 /* #NOAPP */ |
402 025e 5F98 cbi 43-0x20,7 |
403 0260 3E9A sbi 39-0x20,6 |
404 0262 469A sbi 40-0x20,6 |
405 0264 8091 B000 lds r24,176 |
406 0268 8F70 andi r24,lo8(15) |
407 026a 8093 B000 sts 176,r24 |
408 026e 8091 B000 lds r24,176 |
409 0272 8360 ori r24,lo8(3) |
410 0274 8093 B000 sts 176,r24 |
411 0278 8091 B100 lds r24,177 |
412 027c 8B73 andi r24,lo8(59) |
413 027e 8093 B100 sts 177,r24 |
414 0282 8091 B100 lds r24,177 |
415 0286 8B60 ori r24,lo8(11) |
416 0288 8093 B100 sts 177,r24 |
417 028c 1092 B200 sts 178,__zero_reg__ |
418 0290 8FEF ldi r24,lo8(-1) |
419 0292 8093 B300 sts 179,r24 |
420 0296 8091 B000 lds r24,176 |
421 029a 8068 ori r24,lo8(-128) |
422 029c 8093 B000 sts 176,r24 |
423 02a0 8091 7000 lds r24,112 |
424 02a4 8A7F andi r24,lo8(-6) |
425 02a6 8093 7000 sts 112,r24 |
426 02aa 8091 7000 lds r24,112 |
427 02ae 8260 ori r24,lo8(2) |
428 02b0 8093 7000 sts 112,r24 |
429 02b4 9FBF out 95-0x20,r25 |
430 /* epilogue: frame size=0 */ |
431 02b6 0895 ret |
432 /* epilogue end (size=1) */ |
433 /* function TIMER2_Init size 48 (47) */ |
435 .global Timer_Init |
437 Timer_Init: |
438 /* prologue: frame size=0 */ |
439 /* prologue end (size=0) */ |
440 02b8 8AE0 ldi r24,lo8(10) |
441 02ba 90E0 ldi r25,hi8(10) |
442 02bc 0E94 0000 call SetDelay |
443 02c0 9093 0000 sts (tim_main)+1,r25 |
444 02c4 8093 0000 sts tim_main,r24 |
445 02c8 82E0 ldi r24,lo8(2) |
446 02ca 85BD out 69-0x20,r24 |
447 02cc 83EA ldi r24,lo8(-93) |
448 02ce 84BD out 68-0x20,r24 |
449 02d0 17BC out 71-0x20,__zero_reg__ |
450 02d2 84EB ldi r24,lo8(-76) |
451 02d4 88BD out 72-0x20,r24 |
452 02d6 86E0 ldi r24,lo8(6) |
453 02d8 86BD out 70-0x20,r24 |
454 02da 8091 6E00 lds r24,110 |
455 02de 8160 ori r24,lo8(1) |
456 02e0 8093 6E00 sts 110,r24 |
457 /* epilogue: frame size=0 */ |
458 02e4 0895 ret |
459 /* epilogue end (size=1) */ |
460 /* function Timer_Init size 23 (22) */ |
462 .global CalcNickServoValue |
464 CalcNickServoValue: |
465 /* prologue: frame size=0 */ |
466 /* prologue end (size=0) */ |
467 02e6 8091 0000 lds r24,EE_Parameter+109 |
468 02ea 2091 0000 lds r18,Parameter_ServoNickControl |
469 02ee 82FF sbrs r24,2 |
470 02f0 00C0 rjmp .L44 |
471 02f2 9091 0000 lds r25,EE_Parameter+48 |
472 02f6 8CE3 ldi r24,lo8(60) |
473 02f8 989F mul r25,r24 |
474 02fa B001 movw r22,r0 |
475 02fc 1124 clr r1 |
476 02fe 9091 0000 lds r25,EE_Parameter+47 |
477 0302 80E5 ldi r24,lo8(80) |
478 0304 989F mul r25,r24 |
479 0306 A001 movw r20,r0 |
480 0308 1124 clr r1 |
481 030a 922F mov r25,r18 |
482 030c 9058 subi r25,lo8(-(-128)) |
483 030e 97FD sbrc r25,7 |
484 0310 9D5F subi r25,lo8(-(3)) |
485 .L45: |
486 0312 9595 asr r25 |
487 0314 9595 asr r25 |
488 0316 86E0 ldi r24,lo8(6) |
489 0318 9802 muls r25,r24 |
490 031a C001 movw r24,r0 |
491 031c 1124 clr r1 |
492 031e 2091 0000 lds r18,NickServoValue |
493 0322 3091 0000 lds r19,(NickServoValue)+1 |
494 0326 281B sub r18,r24 |
495 0328 390B sbc r19,r25 |
496 032a 3093 0000 sts (NickServoValue)+1,r19 |
497 032e 2093 0000 sts NickServoValue,r18 |
498 0332 4217 cp r20,r18 |
499 0334 5307 cpc r21,r19 |
500 0336 04F0 brlt .L46 |
501 0338 5093 0000 sts (NickServoValue)+1,r21 |
502 033c 4093 0000 sts NickServoValue,r20 |
503 0340 0895 ret |
504 .L46: |
505 0342 2617 cp r18,r22 |
506 0344 3707 cpc r19,r23 |
507 0346 04F0 brlt .L43 |
508 0348 7093 0000 sts (NickServoValue)+1,r23 |
509 034c 6093 0000 sts NickServoValue,r22 |
510 0350 0895 ret |
511 .L44: |
512 0352 822F mov r24,r18 |
513 0354 9927 clr r25 |
514 0356 36E0 ldi r19,6 |
515 0358 880F 1: lsl r24 |
516 035a 991F rol r25 |
517 035c 3A95 dec r19 |
518 035e 01F4 brne 1b |
519 0360 9093 0000 sts (NickServoValue)+1,r25 |
520 0364 8093 0000 sts NickServoValue,r24 |
521 .L43: |
522 0368 0895 ret |
523 /* epilogue: frame size=0 */ |
524 /* epilogue: noreturn */ |
525 /* epilogue end (size=0) */ |
526 /* function CalcNickServoValue size 67 (67) */ |
528 .global CalculateServo |
530 CalculateServo: |
531 /* prologue: frame size=0 */ |
532 036a A0E0 ldi r26,lo8(0) |
533 036c B0E0 ldi r27,hi8(0) |
534 036e E0E0 ldi r30,pm_lo8(1f) |
535 0370 F0E0 ldi r31,pm_hi8(1f) |
536 0372 0C94 0000 jmp __prologue_saves__+22 |
537 1: |
538 /* prologue end (size=6) */ |
539 0376 8091 0000 lds r24,EE_Parameter+55 |
540 037a E82F mov r30,r24 |
541 037c FF27 clr r31 |
542 037e E050 subi r30,lo8(-(sintab)) |
543 0380 F040 sbci r31,hi8(-(sintab)) |
544 0382 9681 ldd r25,Z+6 |
545 0384 D080 ld r13,Z |
546 0386 8091 0000 lds r24,CalculateServoSignals |
547 038a A92F mov r26,r25 |
548 038c BB27 clr r27 |
549 038e A7FD sbrc r26,7 |
550 0390 B095 com r27 |
551 0392 CB2F mov r28,r27 |
552 0394 DB2F mov r29,r27 |
553 0396 8130 cpi r24,lo8(1) |
554 0398 01F0 breq .+2 |
555 039a 00C0 rjmp .L51 |
556 039c 2091 0000 lds r18,IntegralNick |
557 03a0 3091 0000 lds r19,(IntegralNick)+1 |
558 03a4 4091 0000 lds r20,(IntegralNick)+2 |
559 03a8 5091 0000 lds r21,(IntegralNick)+3 |
560 03ac BD01 movw r22,r26 |
561 03ae CE01 movw r24,r28 |
562 03b0 0E94 0000 call __mulsi3 |
563 03b4 97FF sbrs r25,7 |
564 03b6 00C0 rjmp .L52 |
565 03b8 6158 subi r22,lo8(-(127)) |
566 03ba 7F4F sbci r23,hi8(-(127)) |
567 03bc 8F4F sbci r24,hlo8(-(127)) |
568 03be 9F4F sbci r25,hhi8(-(127)) |
569 .L52: |
570 03c0 7B01 movw r14,r22 |
571 03c2 8C01 movw r16,r24 |
572 03c4 C7E0 ldi r28,7 |
573 03c6 1595 1: asr r17 |
574 03c8 0795 ror r16 |
575 03ca F794 ror r15 |
576 03cc E794 ror r14 |
577 03ce CA95 dec r28 |
578 03d0 01F4 brne 1b |
579 03d2 8D2D mov r24,r13 |
580 03d4 9927 clr r25 |
581 03d6 87FD sbrc r24,7 |
582 03d8 9095 com r25 |
583 03da A92F mov r26,r25 |
584 03dc B92F mov r27,r25 |
585 03de 2091 0000 lds r18,IntegralRoll |
586 03e2 3091 0000 lds r19,(IntegralRoll)+1 |
587 03e6 4091 0000 lds r20,(IntegralRoll)+2 |
588 03ea 5091 0000 lds r21,(IntegralRoll)+3 |
589 03ee BC01 movw r22,r24 |
590 03f0 CD01 movw r24,r26 |
591 03f2 0E94 0000 call __mulsi3 |
592 03f6 97FF sbrs r25,7 |
593 03f8 00C0 rjmp .L53 |
594 03fa 6158 subi r22,lo8(-(127)) |
595 03fc 7F4F sbci r23,hi8(-(127)) |
596 03fe 8F4F sbci r24,hlo8(-(127)) |
597 0400 9F4F sbci r25,hhi8(-(127)) |
598 .L53: |
599 0402 B7E0 ldi r27,7 |
600 0404 9595 1: asr r25 |
601 0406 8795 ror r24 |
602 0408 7795 ror r23 |
603 040a 6795 ror r22 |
604 040c BA95 dec r27 |
605 040e 01F4 brne 1b |
606 0410 F801 movw r30,r16 |
607 0412 E701 movw r28,r14 |
608 0414 C61B sub r28,r22 |
609 0416 D70B sbc r29,r23 |
610 0418 E80B sbc r30,r24 |
611 041a F90B sbc r31,r25 |
612 041c 2091 0000 lds r18,POI_KameraNick |
613 0420 3091 0000 lds r19,(POI_KameraNick)+1 |
614 0424 C901 movw r24,r18 |
615 0426 A3E0 ldi r26,3 |
616 0428 880F 1: lsl r24 |
617 042a 991F rol r25 |
618 042c AA95 dec r26 |
619 042e 01F4 brne 1b |
620 0430 821B sub r24,r18 |
621 0432 930B sbc r25,r19 |
622 0434 AA27 clr r26 |
623 0436 97FD sbrc r25,7 |
624 0438 A095 com r26 |
625 043a BA2F mov r27,r26 |
626 043c C81B sub r28,r24 |
627 043e D90B sbc r29,r25 |
628 0440 EA0B sbc r30,r26 |
629 0442 FB0B sbc r31,r27 |
630 0444 8091 0000 lds r24,EE_Parameter+46 |
631 0448 9927 clr r25 |
632 044a AA27 clr r26 |
633 044c BB27 clr r27 |
634 044e BC01 movw r22,r24 |
635 0450 CD01 movw r24,r26 |
636 0452 9E01 movw r18,r28 |
637 0454 AF01 movw r20,r30 |
638 0456 0E94 0000 call __mulsi3 |
639 045a 97FF sbrs r25,7 |
640 045c 00C0 rjmp .L54 |
641 045e 6150 subi r22,lo8(-(511)) |
642 0460 7E4F sbci r23,hi8(-(511)) |
643 0462 8F4F sbci r24,hlo8(-(511)) |
644 0464 9F4F sbci r25,hhi8(-(511)) |
645 .L54: |
646 0466 FC01 movw r30,r24 |
647 0468 EB01 movw r28,r22 |
648 046a 79E0 ldi r23,9 |
649 046c F595 1: asr r31 |
650 046e E795 ror r30 |
651 0470 D795 ror r29 |
652 0472 C795 ror r28 |
653 0474 7A95 dec r23 |
654 0476 01F4 brne 1b |
655 0478 1091 0000 lds r17,EE_Parameter+109 |
656 047c 6091 0000 lds r22,NickServoValue |
657 0480 7091 0000 lds r23,(NickServoValue)+1 |
658 0484 12FF sbrs r17,2 |
659 0486 00C0 rjmp .L55 |
660 0488 7093 0000 sts (ServoNickOffset)+1,r23 |
661 048c 6093 0000 sts ServoNickOffset,r22 |
662 0490 00C0 rjmp .L56 |
663 .L55: |
664 0492 4091 0000 lds r20,ServoNickOffset |
665 0496 5091 0000 lds r21,(ServoNickOffset)+1 |
666 049a 8091 0000 lds r24,EE_Parameter+54 |
667 049e 282F mov r18,r24 |
668 04a0 3327 clr r19 |
669 04a2 CB01 movw r24,r22 |
670 04a4 841B sub r24,r20 |
671 04a6 950B sbc r25,r21 |
672 04a8 B901 movw r22,r18 |
673 04aa 0E94 0000 call __divmodhi4 |
674 04ae 8091 0000 lds r24,ServoNickOffset |
675 04b2 9091 0000 lds r25,(ServoNickOffset)+1 |
676 04b6 860F add r24,r22 |
677 04b8 971F adc r25,r23 |
678 04ba 9093 0000 sts (ServoNickOffset)+1,r25 |
679 04be 8093 0000 sts ServoNickOffset,r24 |
680 .L56: |
681 04c2 10FF sbrs r17,0 |
682 04c4 00C0 rjmp .L57 |
683 04c6 8091 0000 lds r24,ServoNickOffset |
684 04ca 9091 0000 lds r25,(ServoNickOffset)+1 |
685 04ce 97FD sbrc r25,7 |
686 04d0 0F96 adiw r24,15 |
687 .L58: |
688 04d2 64E0 ldi r22,4 |
689 04d4 9595 1: asr r25 |
690 04d6 8795 ror r24 |
691 04d8 6A95 dec r22 |
692 04da 01F4 brne 1b |
693 04dc AA27 clr r26 |
694 04de 97FD sbrc r25,7 |
695 04e0 A095 com r26 |
696 04e2 BA2F mov r27,r26 |
697 04e4 C80F add r28,r24 |
698 04e6 D91F adc r29,r25 |
699 04e8 EA1F adc r30,r26 |
700 04ea FB1F adc r31,r27 |
701 04ec 00C0 rjmp .L59 |
702 .L57: |
703 04ee 8091 0000 lds r24,ServoNickOffset |
704 04f2 9091 0000 lds r25,(ServoNickOffset)+1 |
705 04f6 97FD sbrc r25,7 |
706 04f8 0F96 adiw r24,15 |
707 .L60: |
708 04fa 54E0 ldi r21,4 |
709 04fc 9595 1: asr r25 |
710 04fe 8795 ror r24 |
711 0500 5A95 dec r21 |
712 0502 01F4 brne 1b |
713 0504 AA27 clr r26 |
714 0506 97FD sbrc r25,7 |
715 0508 A095 com r26 |
716 050a BA2F mov r27,r26 |
717 050c 8C1B sub r24,r28 |
718 050e 9D0B sbc r25,r29 |
719 0510 AE0B sbc r26,r30 |
720 0512 BF0B sbc r27,r31 |
721 0514 FD01 movw r30,r26 |
722 0516 EC01 movw r28,r24 |
723 .L59: |
724 0518 2091 0000 lds r18,EE_Parameter+106 |
725 051c 2223 tst r18 |
726 051e 01F0 breq .L61 |
727 0520 3327 clr r19 |
728 0522 8091 0000 lds r24,ServoNickValue |
729 0526 9091 0000 lds r25,(ServoNickValue)+1 |
730 052a 829F mul r24,r18 |
731 052c A001 movw r20,r0 |
732 052e 839F mul r24,r19 |
733 0530 500D add r21,r0 |
734 0532 929F mul r25,r18 |
735 0534 500D add r21,r0 |
736 0536 1124 clr r1 |
737 0538 CA01 movw r24,r20 |
738 053a AA27 clr r26 |
739 053c 97FD sbrc r25,7 |
740 053e A095 com r26 |
741 0540 BA2F mov r27,r26 |
742 0542 8C0F add r24,r28 |
743 0544 9D1F adc r25,r29 |
744 0546 AE1F adc r26,r30 |
745 0548 BF1F adc r27,r31 |
746 054a 2F5F subi r18,lo8(-(1)) |
747 054c 3F4F sbci r19,hi8(-(1)) |
748 054e 4427 clr r20 |
749 0550 37FD sbrc r19,7 |
750 0552 4095 com r20 |
751 0554 542F mov r21,r20 |
752 0556 BC01 movw r22,r24 |
753 0558 CD01 movw r24,r26 |
754 055a 0E94 0000 call __divmodsi4 |
755 055e 3093 0000 sts (ServoNickValue)+1,r19 |
756 0562 2093 0000 sts ServoNickValue,r18 |
757 0566 00C0 rjmp .L62 |
758 .L61: |
759 0568 D093 0000 sts (ServoNickValue)+1,r29 |
760 056c C093 0000 sts ServoNickValue,r28 |
761 .L62: |
762 0570 8091 0000 lds r24,EE_Parameter+47 |
763 0574 282F mov r18,r24 |
764 0576 3327 clr r19 |
765 0578 220F lsl r18 |
766 057a 331F rol r19 |
767 057c 220F lsl r18 |
768 057e 331F rol r19 |
769 0580 8091 0000 lds r24,ServoNickValue |
770 0584 9091 0000 lds r25,(ServoNickValue)+1 |
771 0588 8217 cp r24,r18 |
772 058a 9307 cpc r25,r19 |
773 058c 04F0 brlt .L81 |
774 058e 8091 0000 lds r24,EE_Parameter+48 |
775 0592 282F mov r18,r24 |
776 0594 3327 clr r19 |
777 0596 220F lsl r18 |
778 0598 331F rol r19 |
779 059a 220F lsl r18 |
780 059c 331F rol r19 |
781 059e 8091 0000 lds r24,ServoNickValue |
782 05a2 9091 0000 lds r25,(ServoNickValue)+1 |
783 05a6 2817 cp r18,r24 |
784 05a8 3907 cpc r19,r25 |
785 05aa 04F4 brge .L64 |
786 .L81: |
787 05ac 3093 0000 sts (ServoNickValue)+1,r19 |
788 05b0 2093 0000 sts ServoNickValue,r18 |
789 .L64: |
790 05b4 8091 0000 lds r24,PlatinenVersion |
791 05b8 8431 cpi r24,lo8(20) |
792 05ba 00F4 brsh .+2 |
793 05bc 00C0 rjmp .L79 |
794 05be 8091 0000 lds r24,CalculateServoSignals |
795 05c2 8F5F subi r24,lo8(-(1)) |
796 05c4 8093 0000 sts CalculateServoSignals,r24 |
797 05c8 00C0 rjmp .L50 |
798 .L51: |
799 05ca 2091 0000 lds r18,IntegralRoll |
800 05ce 3091 0000 lds r19,(IntegralRoll)+1 |
801 05d2 4091 0000 lds r20,(IntegralRoll)+2 |
802 05d6 5091 0000 lds r21,(IntegralRoll)+3 |
803 05da BD01 movw r22,r26 |
804 05dc CE01 movw r24,r28 |
805 05de 0E94 0000 call __mulsi3 |
806 05e2 97FF sbrs r25,7 |
807 05e4 00C0 rjmp .L69 |
808 05e6 6158 subi r22,lo8(-(127)) |
809 05e8 7F4F sbci r23,hi8(-(127)) |
810 05ea 8F4F sbci r24,hlo8(-(127)) |
811 05ec 9F4F sbci r25,hhi8(-(127)) |
812 .L69: |
813 05ee 7B01 movw r14,r22 |
814 05f0 8C01 movw r16,r24 |
815 05f2 87E0 ldi r24,7 |
816 05f4 1595 1: asr r17 |
817 05f6 0795 ror r16 |
818 05f8 F794 ror r15 |
819 05fa E794 ror r14 |
820 05fc 8A95 dec r24 |
821 05fe 01F4 brne 1b |
822 0600 8D2D mov r24,r13 |
823 0602 9927 clr r25 |
824 0604 87FD sbrc r24,7 |
825 0606 9095 com r25 |
826 0608 A92F mov r26,r25 |
827 060a B92F mov r27,r25 |
828 060c 2091 0000 lds r18,IntegralNick |
829 0610 3091 0000 lds r19,(IntegralNick)+1 |
830 0614 4091 0000 lds r20,(IntegralNick)+2 |
831 0618 5091 0000 lds r21,(IntegralNick)+3 |
832 061c BC01 movw r22,r24 |
833 061e CD01 movw r24,r26 |
834 0620 0E94 0000 call __mulsi3 |
835 0624 9B01 movw r18,r22 |
836 0626 AC01 movw r20,r24 |
837 0628 97FF sbrs r25,7 |
838 062a 00C0 rjmp .L70 |
839 062c 2158 subi r18,lo8(-(127)) |
840 062e 3F4F sbci r19,hi8(-(127)) |
841 0630 4F4F sbci r20,hlo8(-(127)) |
842 0632 5F4F sbci r21,hhi8(-(127)) |
843 .L70: |
844 0634 C7E0 ldi r28,7 |
845 0636 5595 1: asr r21 |
846 0638 4795 ror r20 |
847 063a 3795 ror r19 |
848 063c 2795 ror r18 |
849 063e CA95 dec r28 |
850 0640 01F4 brne 1b |
851 0642 2E0D add r18,r14 |
852 0644 3F1D adc r19,r15 |
853 0646 401F adc r20,r16 |
854 0648 511F adc r21,r17 |
855 064a 8091 0000 lds r24,EE_Parameter+50 |
856 064e 9927 clr r25 |
857 0650 AA27 clr r26 |
858 0652 BB27 clr r27 |
859 0654 BC01 movw r22,r24 |
860 0656 CD01 movw r24,r26 |
861 0658 0E94 0000 call __mulsi3 |
862 065c 97FF sbrs r25,7 |
863 065e 00C0 rjmp .L71 |
864 0660 6150 subi r22,lo8(-(511)) |
865 0662 7E4F sbci r23,hi8(-(511)) |
866 0664 8F4F sbci r24,hlo8(-(511)) |
867 0666 9F4F sbci r25,hhi8(-(511)) |
868 .L71: |
869 0668 FC01 movw r30,r24 |
870 066a EB01 movw r28,r22 |
871 066c B9E0 ldi r27,9 |
872 066e F595 1: asr r31 |
873 0670 E795 ror r30 |
874 0672 D795 ror r29 |
875 0674 C795 ror r28 |
876 0676 BA95 dec r27 |
877 0678 01F4 brne 1b |
878 067a 8091 0000 lds r24,Parameter_ServoRollControl |
879 067e 9927 clr r25 |
880 0680 A6E0 ldi r26,6 |
881 0682 880F 1: lsl r24 |
882 0684 991F rol r25 |
883 0686 AA95 dec r26 |
884 0688 01F4 brne 1b |
885 068a 4091 0000 lds r20,ServoRollOffset |
886 068e 5091 0000 lds r21,(ServoRollOffset)+1 |
887 0692 2091 0000 lds r18,EE_Parameter+54 |
888 0696 3327 clr r19 |
889 0698 841B sub r24,r20 |
890 069a 950B sbc r25,r21 |
891 069c B901 movw r22,r18 |
892 069e 0E94 0000 call __divmodhi4 |
893 06a2 8091 0000 lds r24,ServoRollOffset |
894 06a6 9091 0000 lds r25,(ServoRollOffset)+1 |
895 06aa 860F add r24,r22 |
896 06ac 971F adc r25,r23 |
897 06ae 9093 0000 sts (ServoRollOffset)+1,r25 |
898 06b2 8093 0000 sts ServoRollOffset,r24 |
899 06b6 8091 0000 lds r24,EE_Parameter+109 |
900 06ba 81FF sbrs r24,1 |
901 06bc 00C0 rjmp .L72 |
902 06be 8091 0000 lds r24,ServoRollOffset |
903 06c2 9091 0000 lds r25,(ServoRollOffset)+1 |
904 06c6 97FD sbrc r25,7 |
905 06c8 0F96 adiw r24,15 |
906 .L73: |
907 06ca 74E0 ldi r23,4 |
908 06cc 9595 1: asr r25 |
909 06ce 8795 ror r24 |
910 06d0 7A95 dec r23 |
911 06d2 01F4 brne 1b |
912 06d4 AA27 clr r26 |
913 06d6 97FD sbrc r25,7 |
914 06d8 A095 com r26 |
915 06da BA2F mov r27,r26 |
916 06dc C80F add r28,r24 |
917 06de D91F adc r29,r25 |
918 06e0 EA1F adc r30,r26 |
919 06e2 FB1F adc r31,r27 |
920 06e4 00C0 rjmp .L74 |
921 .L72: |
922 06e6 8091 0000 lds r24,ServoRollOffset |
923 06ea 9091 0000 lds r25,(ServoRollOffset)+1 |
924 06ee 97FD sbrc r25,7 |
925 06f0 0F96 adiw r24,15 |
926 .L75: |
927 06f2 64E0 ldi r22,4 |
928 06f4 9595 1: asr r25 |
929 06f6 8795 ror r24 |
930 06f8 6A95 dec r22 |
931 06fa 01F4 brne 1b |
932 06fc AA27 clr r26 |
933 06fe 97FD sbrc r25,7 |
934 0700 A095 com r26 |
935 0702 BA2F mov r27,r26 |
936 0704 8C1B sub r24,r28 |
937 0706 9D0B sbc r25,r29 |
938 0708 AE0B sbc r26,r30 |
939 070a BF0B sbc r27,r31 |
940 070c FD01 movw r30,r26 |
941 070e EC01 movw r28,r24 |
942 .L74: |
943 0710 2091 0000 lds r18,EE_Parameter+107 |
944 0714 2223 tst r18 |
945 0716 01F0 breq .L76 |
946 0718 3327 clr r19 |
947 071a 8091 0000 lds r24,ServoRollValue |
948 071e 9091 0000 lds r25,(ServoRollValue)+1 |
949 0722 829F mul r24,r18 |
950 0724 A001 movw r20,r0 |
951 0726 839F mul r24,r19 |
952 0728 500D add r21,r0 |
953 072a 929F mul r25,r18 |
954 072c 500D add r21,r0 |
955 072e 1124 clr r1 |
956 0730 CA01 movw r24,r20 |
957 0732 AA27 clr r26 |
958 0734 97FD sbrc r25,7 |
959 0736 A095 com r26 |
960 0738 BA2F mov r27,r26 |
961 073a 8C0F add r24,r28 |
962 073c 9D1F adc r25,r29 |
963 073e AE1F adc r26,r30 |
964 0740 BF1F adc r27,r31 |
965 0742 2F5F subi r18,lo8(-(1)) |
966 0744 3F4F sbci r19,hi8(-(1)) |
967 0746 4427 clr r20 |
968 0748 37FD sbrc r19,7 |
969 074a 4095 com r20 |
970 074c 542F mov r21,r20 |
971 074e BC01 movw r22,r24 |
972 0750 CD01 movw r24,r26 |
973 0752 0E94 0000 call __divmodsi4 |
974 0756 3093 0000 sts (ServoRollValue)+1,r19 |
975 075a 2093 0000 sts ServoRollValue,r18 |
976 075e 00C0 rjmp .L77 |
977 .L76: |
978 0760 D093 0000 sts (ServoRollValue)+1,r29 |
979 0764 C093 0000 sts ServoRollValue,r28 |
980 .L77: |
981 0768 8091 0000 lds r24,EE_Parameter+51 |
982 076c 282F mov r18,r24 |
983 076e 3327 clr r19 |
984 0770 220F lsl r18 |
985 0772 331F rol r19 |
986 0774 220F lsl r18 |
987 0776 331F rol r19 |
988 0778 8091 0000 lds r24,ServoRollValue |
989 077c 9091 0000 lds r25,(ServoRollValue)+1 |
990 0780 8217 cp r24,r18 |
991 0782 9307 cpc r25,r19 |
992 0784 04F0 brlt .L82 |
993 0786 8091 0000 lds r24,EE_Parameter+52 |
994 078a 282F mov r18,r24 |
995 078c 3327 clr r19 |
996 078e 220F lsl r18 |
997 0790 331F rol r19 |
998 0792 220F lsl r18 |
999 0794 331F rol r19 |
1000 0796 8091 0000 lds r24,ServoRollValue |
1001 079a 9091 0000 lds r25,(ServoRollValue)+1 |
1002 079e 2817 cp r18,r24 |
1003 07a0 3907 cpc r19,r25 |
1004 07a2 04F4 brge .L79 |
1005 .L82: |
1006 07a4 3093 0000 sts (ServoRollValue)+1,r19 |
1007 07a8 2093 0000 sts ServoRollValue,r18 |
1008 .L79: |
1009 07ac 1092 0000 sts CalculateServoSignals,__zero_reg__ |
1010 .L50: |
1011 /* epilogue: frame size=0 */ |
1012 07b0 E7E0 ldi r30,7 |
1013 07b2 CDB7 in r28,__SP_L__ |
1014 07b4 DEB7 in r29,__SP_H__ |
1015 07b6 0C94 0000 jmp __epilogue_restores__+22 |
1016 /* epilogue end (size=5) */ |
1017 /* function CalculateServo size 556 (545) */ |
1019 .lcomm PulseOutput.0,1 |
1020 .lcomm ServoFrameTime.1,2 |
1021 .lcomm ServoIndex.2,1 |
1022 .global __vector_9 |
1024 __vector_9: |
1025 /* prologue: frame size=0 */ |
1026 07ba 1F92 push __zero_reg__ |
1027 07bc 0F92 push __tmp_reg__ |
1028 07be 0FB6 in __tmp_reg__,__SREG__ |
1029 07c0 0F92 push __tmp_reg__ |
1030 07c2 1124 clr __zero_reg__ |
1031 07c4 2F93 push r18 |
1032 07c6 3F93 push r19 |
1033 07c8 4F93 push r20 |
1034 07ca 5F93 push r21 |
1035 07cc 8F93 push r24 |
1036 07ce 9F93 push r25 |
1037 07d0 EF93 push r30 |
1038 07d2 FF93 push r31 |
1039 /* prologue end (size=13) */ |
1040 07d4 8091 0000 lds r24,PlatinenVersion |
1041 07d8 9091 0000 lds r25,PulseOutput.0 |
1042 07dc 8431 cpi r24,lo8(20) |
1043 07de 00F0 brlo .+2 |
1044 07e0 00C0 rjmp .L84 |
1045 07e2 9923 tst r25 |
1046 07e4 01F0 breq .+2 |
1047 07e6 00C0 rjmp .L91 |
1048 07e8 8091 B000 lds r24,176 |
1049 07ec 86FF sbrs r24,6 |
1050 07ee 00C0 rjmp .L86 |
1051 07f0 8091 B000 lds r24,176 |
1052 07f4 8F7B andi r24,lo8(-65) |
1053 07f6 8093 B000 sts 176,r24 |
1054 07fa 8091 0000 lds r24,ServoNickValue |
1055 07fe 9091 0000 lds r25,(ServoNickValue)+1 |
1056 0802 8755 subi r24,lo8(-(425)) |
1057 0804 9E4F sbci r25,hi8(-(425)) |
1058 0806 9093 0000 sts (RemainingPulse)+1,r25 |
1059 080a 8093 0000 sts RemainingPulse,r24 |
1060 080e 25E0 ldi r18,hi8(1501) |
1061 0810 8D3D cpi r24,lo8(1501) |
1062 0812 9207 cpc r25,r18 |
1063 0814 00F0 brlo .L87 |
1064 0816 8CED ldi r24,lo8(1500) |
1065 0818 95E0 ldi r25,hi8(1500) |
1066 081a 00C0 rjmp .L121 |
1067 .L87: |
1068 081c 8757 subi r24,lo8(375) |
1069 081e 9140 sbci r25,hi8(375) |
1070 0820 00F4 brsh .L88 |
1071 0822 87E7 ldi r24,lo8(375) |
1072 0824 91E0 ldi r25,hi8(375) |
1073 .L121: |
1074 0826 9093 0000 sts (RemainingPulse)+1,r25 |
1075 082a 8093 0000 sts RemainingPulse,r24 |
1076 .L88: |
1077 082e 8091 0000 lds r24,RemainingPulse |
1078 0832 9091 0000 lds r25,(RemainingPulse)+1 |
1079 0836 00C0 rjmp .L126 |
1080 .L86: |
1081 0838 8091 B000 lds r24,176 |
1082 083c 8064 ori r24,lo8(64) |
1083 083e 8093 B000 sts 176,r24 |
1084 0842 8091 0000 lds r24,EE_Parameter+53 |
1085 0846 282F mov r18,r24 |
1086 0848 3327 clr r19 |
1087 084a 8DED ldi r24,lo8(1757) |
1088 084c 96E0 ldi r25,hi8(1757) |
1089 084e 289F mul r18,r24 |
1090 0850 A001 movw r20,r0 |
1091 0852 299F mul r18,r25 |
1092 0854 500D add r21,r0 |
1093 0856 389F mul r19,r24 |
1094 0858 500D add r21,r0 |
1095 085a 1124 clr r1 |
1096 085c CA01 movw r24,r20 |
1097 085e 2091 0000 lds r18,ServoFrameTime.1 |
1098 0862 3091 0000 lds r19,(ServoFrameTime.1)+1 |
1099 0866 821B sub r24,r18 |
1100 0868 930B sbc r25,r19 |
1101 086a 9093 0000 sts (RemainingPulse)+1,r25 |
1102 086e 8093 0000 sts RemainingPulse,r24 |
1103 0872 81E0 ldi r24,lo8(1) |
1104 0874 8093 0000 sts CalculateServoSignals,r24 |
1105 0878 00C0 rjmp .L109 |
1106 .L84: |
1107 087a 9923 tst r25 |
1108 087c 01F0 breq .+2 |
1109 087e 00C0 rjmp .L91 |
1110 0880 8091 B000 lds r24,176 |
1111 0884 86FF sbrs r24,6 |
1112 0886 00C0 rjmp .L93 |
1113 0888 8091 B000 lds r24,176 |
1114 088c 8F7B andi r24,lo8(-65) |
1115 088e 8093 B000 sts 176,r24 |
1116 0892 E091 0000 lds r30,ServoIndex.2 |
1117 0896 2091 0000 lds r18,EE_Parameter+53 |
1118 089a EE23 tst r30 |
1119 089c 01F4 brne .L94 |
1120 089e 3327 clr r19 |
1121 08a0 8DED ldi r24,lo8(1757) |
1122 08a2 96E0 ldi r25,hi8(1757) |
1123 08a4 289F mul r18,r24 |
1124 08a6 A001 movw r20,r0 |
1125 08a8 299F mul r18,r25 |
1126 08aa 500D add r21,r0 |
1127 08ac 389F mul r19,r24 |
1128 08ae 500D add r21,r0 |
1129 08b0 1124 clr r1 |
1130 08b2 CA01 movw r24,r20 |
1131 08b4 2091 0000 lds r18,ServoFrameTime.1 |
1132 08b8 3091 0000 lds r19,(ServoFrameTime.1)+1 |
1133 08bc 821B sub r24,r18 |
1134 08be 930B sbc r25,r19 |
1135 08c0 9093 0000 sts (RemainingPulse)+1,r25 |
1136 08c4 8093 0000 sts RemainingPulse,r24 |
1137 08c8 1092 0000 sts (ServoFrameTime.1)+1,__zero_reg__ |
1138 08cc 1092 0000 sts ServoFrameTime.1,__zero_reg__ |
1139 08d0 469A sbi 40-0x20,6 |
1140 08d2 00C0 rjmp .L109 |
1141 .L94: |
1142 08d4 2E17 cp r18,r30 |
1143 08d6 00F4 brsh .L96 |
1144 08d8 8AE0 ldi r24,lo8(10) |
1145 08da 90E0 ldi r25,hi8(10) |
1146 08dc 9093 0000 sts (RemainingPulse)+1,r25 |
1147 08e0 8093 0000 sts RemainingPulse,r24 |
1148 08e4 00C0 rjmp .L109 |
1149 .L96: |
1150 08e6 89EA ldi r24,lo8(937) |
1151 08e8 93E0 ldi r25,hi8(937) |
1152 08ea 9093 0000 sts (RemainingPulse)+1,r25 |
1153 08ee 8093 0000 sts RemainingPulse,r24 |
1154 08f2 8E2F mov r24,r30 |
1155 08f4 9927 clr r25 |
1156 08f6 8330 cpi r24,3 |
1157 08f8 9105 cpc r25,__zero_reg__ |
1158 08fa 01F0 breq .L101 |
1159 08fc 8430 cpi r24,4 |
1160 08fe 9105 cpc r25,__zero_reg__ |
1161 0900 04F4 brge .L105 |
1162 0902 8130 cpi r24,1 |
1163 0904 9105 cpc r25,__zero_reg__ |
1164 0906 01F0 breq .L99 |
1165 0908 0297 sbiw r24,2 |
1166 090a 01F0 breq .L100 |
1167 090c 00C0 rjmp .L104 |
1168 .L105: |
1169 090e 8430 cpi r24,4 |
1170 0910 9105 cpc r25,__zero_reg__ |
1171 0912 01F0 breq .L102 |
1172 0914 0597 sbiw r24,5 |
1173 0916 01F0 breq .L103 |
1174 0918 00C0 rjmp .L104 |
1175 .L99: |
1176 091a 8091 0000 lds r24,ServoNickValue |
1177 091e 9091 0000 lds r25,(ServoNickValue)+1 |
1178 0922 00C0 rjmp .L125 |
1179 .L100: |
1180 0924 8091 0000 lds r24,ServoRollValue |
1181 0928 9091 0000 lds r25,(ServoRollValue)+1 |
1182 .L125: |
1183 092c 8755 subi r24,lo8(-(425)) |
1184 092e 9E4F sbci r25,hi8(-(425)) |
1185 0930 00C0 rjmp .L122 |
1186 .L101: |
1187 0932 8091 0000 lds r24,Parameter_Servo3 |
1188 0936 00C0 rjmp .L127 |
1189 .L102: |
1190 0938 8091 0000 lds r24,Parameter_Servo4 |
1191 093c 00C0 rjmp .L127 |
1192 .L103: |
1193 093e 8091 0000 lds r24,Parameter_Servo5 |
1194 .L127: |
1195 0942 9927 clr r25 |
1196 0944 880F lsl r24 |
1197 0946 991F rol r25 |
1198 0948 880F lsl r24 |
1199 094a 991F rol r25 |
1200 094c 00C0 rjmp .L125 |
1201 .L104: |
1202 094e FF27 clr r31 |
1203 0950 EE0F add r30,r30 |
1204 0952 FF1F adc r31,r31 |
1205 0954 E050 subi r30,lo8(-(PPM_in)) |
1206 0956 F040 sbci r31,hi8(-(PPM_in)) |
1207 0958 2081 ld r18,Z |
1208 095a 3181 ldd r19,Z+1 |
1209 095c 220F add r18,r18 |
1210 095e 331F adc r19,r19 |
1211 0960 8091 0000 lds r24,RemainingPulse |
1212 0964 9091 0000 lds r25,(RemainingPulse)+1 |
1213 0968 820F add r24,r18 |
1214 096a 931F adc r25,r19 |
1215 .L122: |
1216 096c 9093 0000 sts (RemainingPulse)+1,r25 |
1217 0970 8093 0000 sts RemainingPulse,r24 |
1218 0974 8091 0000 lds r24,RemainingPulse |
1219 0978 9091 0000 lds r25,(RemainingPulse)+1 |
1220 097c 55E0 ldi r21,hi8(1501) |
1221 097e 8D3D cpi r24,lo8(1501) |
1222 0980 9507 cpc r25,r21 |
1223 0982 00F0 brlo .L106 |
1224 0984 8CED ldi r24,lo8(1500) |
1225 0986 95E0 ldi r25,hi8(1500) |
1226 0988 00C0 rjmp .L123 |
1227 .L106: |
1228 098a 8757 subi r24,lo8(375) |
1229 098c 9140 sbci r25,hi8(375) |
1230 098e 00F4 brsh .L107 |
1231 0990 87E7 ldi r24,lo8(375) |
1232 0992 91E0 ldi r25,hi8(375) |
1233 .L123: |
1234 0994 9093 0000 sts (RemainingPulse)+1,r25 |
1235 0998 8093 0000 sts RemainingPulse,r24 |
1236 .L107: |
1237 099c 2091 0000 lds r18,RemainingPulse |
1238 09a0 3091 0000 lds r19,(RemainingPulse)+1 |
1239 09a4 2C5B subi r18,lo8(-(-188)) |
1240 09a6 3040 sbci r19,hi8(-(-188)) |
1241 09a8 3093 0000 sts (RemainingPulse)+1,r19 |
1242 09ac 2093 0000 sts RemainingPulse,r18 |
1243 09b0 8091 0000 lds r24,ServoFrameTime.1 |
1244 09b4 9091 0000 lds r25,(ServoFrameTime.1)+1 |
1245 09b8 820F add r24,r18 |
1246 09ba 931F adc r25,r19 |
1247 .L126: |
1248 09bc 9093 0000 sts (ServoFrameTime.1)+1,r25 |
1249 09c0 8093 0000 sts ServoFrameTime.1,r24 |
1250 09c4 00C0 rjmp .L109 |
1251 .L93: |
1252 09c6 8091 B000 lds r24,176 |
1253 09ca 8064 ori r24,lo8(64) |
1254 09cc 8093 B000 sts 176,r24 |
1255 09d0 8CEB ldi r24,lo8(188) |
1256 09d2 90E0 ldi r25,hi8(188) |
1257 09d4 9093 0000 sts (RemainingPulse)+1,r25 |
1258 09d8 8093 0000 sts RemainingPulse,r24 |
1259 09dc 8091 0000 lds r24,ServoFrameTime.1 |
1260 09e0 9091 0000 lds r25,(ServoFrameTime.1)+1 |
1261 09e4 8454 subi r24,lo8(-(188)) |
1262 09e6 9F4F sbci r25,hi8(-(188)) |
1263 09e8 9093 0000 sts (ServoFrameTime.1)+1,r25 |
1264 09ec 8093 0000 sts ServoFrameTime.1,r24 |
1265 09f0 8091 0000 lds r24,ServoActive |
1266 09f4 8823 tst r24 |
1267 09f6 01F0 breq .L112 |
1268 09f8 8091 0000 lds r24,SenderOkay |
1269 09fc 8823 tst r24 |
1270 09fe 01F4 brne .L111 |
1271 .L112: |
1272 0a00 8091 0000 lds r24,ServoActive |
1273 0a04 8230 cpi r24,lo8(2) |
1274 0a06 01F4 brne .L110 |
1275 .L111: |
1276 0a08 4698 cbi 40-0x20,6 |
1277 0a0a 00C0 rjmp .L113 |
1278 .L110: |
1279 0a0c 469A sbi 40-0x20,6 |
1280 .L113: |
1281 0a0e 8091 0000 lds r24,ServoIndex.2 |
1282 0a12 8F5F subi r24,lo8(-(1)) |
1283 0a14 8093 0000 sts ServoIndex.2,r24 |
1284 0a18 282F mov r18,r24 |
1285 0a1a 3327 clr r19 |
1286 0a1c 8091 0000 lds r24,EE_Parameter+53 |
1287 0a20 9927 clr r25 |
1288 0a22 0196 adiw r24,1 |
1289 0a24 8217 cp r24,r18 |
1290 0a26 9307 cpc r25,r19 |
1291 0a28 04F4 brge .L109 |
1292 0a2a 81E0 ldi r24,lo8(1) |
1293 0a2c 8093 0000 sts CalculateServoSignals,r24 |
1294 0a30 1092 0000 sts ServoIndex.2,__zero_reg__ |
1295 .L109: |
1296 0a34 81E0 ldi r24,lo8(1) |
1297 0a36 8093 0000 sts PulseOutput.0,r24 |
1298 .L91: |
1299 0a3a 2091 0000 lds r18,RemainingPulse |
1300 0a3e 3091 0000 lds r19,(RemainingPulse)+1 |
1301 0a42 41E0 ldi r20,hi8(383) |
1302 0a44 2F37 cpi r18,lo8(383) |
1303 0a46 3407 cpc r19,r20 |
1304 0a48 00F0 brlo .L115 |
1305 0a4a 8FEF ldi r24,lo8(-1) |
1306 0a4c 8093 B300 sts 179,r24 |
1307 0a50 2F5F subi r18,lo8(-(-255)) |
1308 0a52 3040 sbci r19,hi8(-(-255)) |
1309 0a54 00C0 rjmp .L124 |
1310 .L115: |
1311 0a56 2F3F cpi r18,255 |
1312 0a58 3105 cpc r19,__zero_reg__ |
1313 0a5a 01F0 breq .L117 |
1314 0a5c 00F0 brlo .L117 |
1315 0a5e A901 movw r20,r18 |
1316 0a60 4F5F subi r20,lo8(-(-255)) |
1317 0a62 5040 sbci r21,hi8(-(-255)) |
1318 0a64 4F37 cpi r20,127 |
1319 0a66 5105 cpc r21,__zero_reg__ |
1320 0a68 00F4 brsh .L118 |
1321 0a6a 80E8 ldi r24,lo8(-128) |
1322 0a6c 8093 B300 sts 179,r24 |
1323 0a70 2058 subi r18,lo8(-(-128)) |
1324 0a72 3040 sbci r19,hi8(-(-128)) |
1325 .L124: |
1326 0a74 3093 0000 sts (RemainingPulse)+1,r19 |
1327 0a78 2093 0000 sts RemainingPulse,r18 |
1328 0a7c 00C0 rjmp .L83 |
1329 .L118: |
1330 0a7e 8FEF ldi r24,lo8(-1) |
1331 0a80 8093 B300 sts 179,r24 |
1332 0a84 5093 0000 sts (RemainingPulse)+1,r21 |
1333 0a88 4093 0000 sts RemainingPulse,r20 |
1334 0a8c 00C0 rjmp .L83 |
1335 .L117: |
1336 0a8e 8091 0000 lds r24,RemainingPulse |
1337 0a92 8093 B300 sts 179,r24 |
1338 0a96 1092 0000 sts (RemainingPulse)+1,__zero_reg__ |
1339 0a9a 1092 0000 sts RemainingPulse,__zero_reg__ |
1340 0a9e 1092 0000 sts PulseOutput.0,__zero_reg__ |
1341 .L83: |
1342 /* epilogue: frame size=0 */ |
1343 0aa2 FF91 pop r31 |
1344 0aa4 EF91 pop r30 |
1345 0aa6 9F91 pop r25 |
1346 0aa8 8F91 pop r24 |
1347 0aaa 5F91 pop r21 |
1348 0aac 4F91 pop r20 |
1349 0aae 3F91 pop r19 |
1350 0ab0 2F91 pop r18 |
1351 0ab2 0F90 pop __tmp_reg__ |
1352 0ab4 0FBE out __SREG__,__tmp_reg__ |
1353 0ab6 0F90 pop __tmp_reg__ |
1354 0ab8 1F90 pop __zero_reg__ |
1355 0aba 1895 reti |
1356 /* epilogue end (size=13) */ |
1357 /* function __vector_9 size 389 (363) */ |
1359 .comm tim_main,2,1 |
1360 /* File "timer0.c": code 1388 = 0x056c (1305), prologues 39, epilogues 44 */ |
DEFINED SYMBOLS |
*ABS*:00000000 timer0.c |
C:\Temp/ccpPrtda.s:3 *ABS*:0000003f __SREG__ |
C:\Temp/ccpPrtda.s:4 *ABS*:0000003e __SP_H__ |
C:\Temp/ccpPrtda.s:5 *ABS*:0000003d __SP_L__ |
C:\Temp/ccpPrtda.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Temp/ccpPrtda.s:7 *ABS*:00000001 __zero_reg__ |
C:\Temp/ccpPrtda.s:15 .bss:00000000 ServoRollValue |
C:\Temp/ccpPrtda.s:21 .bss:00000002 ServoNickValue |
C:\Temp/ccpPrtda.s:27 .data:00000000 NickServoValue |
C:\Temp/ccpPrtda.s:32 .data:00000002 BeepMuster |
C:\Temp/ccpPrtda.s:37 .data:00000004 ServoRollOffset |
C:\Temp/ccpPrtda.s:42 .data:00000006 ServoNickOffset |
C:\Temp/ccpPrtda.s:49 .bss:00000004 RemainingPulse |
C:\Temp/ccpPrtda.s:55 .data:00000008 CalculateServoSignals |
C:\Temp/ccpPrtda.s:62 .bss:00000006 ServoActive |
C:\Temp/ccpPrtda.s:68 .bss:00000007 SendSPI |
C:\Temp/ccpPrtda.s:74 .bss:00000008 beeptime |
C:\Temp/ccpPrtda.s:80 .bss:0000000a cntKompass |
C:\Temp/ccpPrtda.s:86 .bss:0000000c UpdateMotor |
C:\Temp/ccpPrtda.s:92 .bss:0000000d CountMilliseconds |
C:\Temp/ccpPrtda.s:97 .data:00000009 cnt_1ms.3 |
.bss:0000000f cnt.4 |
C:\Temp/ccpPrtda.s:99 .bss:00000010 compass_active.5 |
C:\Temp/ccpPrtda.s:104 .text:00000000 __vector_18 |
C:\Temp/ccpPrtda.s:309 .text:000001e6 SetDelay |
C:\Temp/ccpPrtda.s:325 .text:000001f8 CheckDelay |
C:\Temp/ccpPrtda.s:344 .text:00000210 Delay_ms |
C:\Temp/ccpPrtda.s:365 .text:0000022a Delay_ms_Mess |
C:\Temp/ccpPrtda.s:395 .text:0000025a TIMER2_Init |
C:\Temp/ccpPrtda.s:437 .text:000002b8 Timer_Init |
*COM*:00000002 tim_main |
C:\Temp/ccpPrtda.s:464 .text:000002e6 CalcNickServoValue |
C:\Temp/ccpPrtda.s:530 .text:0000036a CalculateServo |
C:\Temp/ccpPrtda.s:100 .bss:00000011 PulseOutput.0 |
C:\Temp/ccpPrtda.s:1019 .bss:00000012 ServoFrameTime.1 |
C:\Temp/ccpPrtda.s:1020 .bss:00000014 ServoIndex.2 |
C:\Temp/ccpPrtda.s:1024 .text:000007ba __vector_9 |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
SpektrumTimer |
PlatinenVersion |
NaviDataOkay |
Parameter_GlobalConfig |
__udivmodhi4 |
KompassValue |
AdReady |
EE_Parameter |
Parameter_ServoNickControl |
__prologue_saves__ |
sintab |
IntegralNick |
__mulsi3 |
IntegralRoll |
POI_KameraNick |
__divmodhi4 |
__divmodsi4 |
Parameter_ServoRollControl |
__epilogue_restores__ |
Parameter_Servo3 |
Parameter_Servo4 |
Parameter_Servo5 |
PPM_in |
SenderOkay |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/twimaster.c |
---|
0,0 → 1,469 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software Nutzungsbedingungen (english version: see below) |
// + der Fa. HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland - nachfolgend Lizenzgeber genannt - |
// + Der Lizenzgeber räumt dem Kunden ein nicht-ausschließliches, zeitlich und räumlich* unbeschränktes Recht ein, die im den |
// + Mikrocontroller verwendete Firmware für die Hardware Flight-Ctrl, Navi-Ctrl, BL-Ctrl, MK3Mag & PC-Programm MikroKopter-Tool |
// + - nachfolgend Software genannt - nur für private Zwecke zu nutzen. |
// + Der Einsatz dieser Software ist nur auf oder mit Produkten des Lizenzgebers zulässig. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die vom Lizenzgeber gelieferte Software ist urheberrechtlich geschützt. Alle Rechte an der Software sowie an sonstigen im |
// + Rahmen der Vertragsanbahnung und Vertragsdurchführung überlassenen Unterlagen stehen im Verhältnis der Vertragspartner ausschließlich dem Lizenzgeber zu. |
// + Die in der Software enthaltenen Copyright-Vermerke, Markenzeichen, andere Rechtsvorbehalte, Seriennummern sowie |
// + sonstige der Programmidentifikation dienenden Merkmale dürfen vom Kunden nicht verändert oder unkenntlich gemacht werden. |
// + Der Kunde trifft angemessene Vorkehrungen für den sicheren Einsatz der Software. Er wird die Software gründlich auf deren |
// + Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Die Haftung des Lizenzgebers wird - soweit gesetzlich zulässig - begrenzt in Höhe des typischen und vorhersehbaren |
// + Schadens. Die gesetzliche Haftung bei Personenschäden und nach dem Produkthaftungsgesetz bleibt unberührt. Dem Lizenzgeber steht jedoch der Einwand |
// + des Mitverschuldens offen. |
// + Der Kunde trifft angemessene Vorkehrungen für den Fall, dass die Software ganz oder teilweise nicht ordnungsgemäß arbeitet. |
// + Er wird die Software gründlich auf deren Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Der Kunde wird er seine Daten vor Einsatz der Software nach dem Stand der Technik sichern. |
// + Der Kunde ist darüber unterrichtet, dass der Lizenzgeber seine Daten im zur Vertragsdurchführung erforderlichen Umfang |
// + und auf Grundlage der Datenschutzvorschriften erhebt, speichert, verarbeitet und, sofern notwendig, an Dritte übermittelt. |
// + *) Die räumliche Nutzung bezieht sich nur auf den Einsatzort, nicht auf die Reichweite der programmierten Software. |
// + #### ENDE DER NUTZUNGSBEDINGUNGEN ####' |
// + Hinweis: Informationen über erweiterte Nutzungsrechte (wie z.B. Nutzung für nicht-private Zwecke) sind auf Anfrage per Email an info(@)hisystems.de verfügbar. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software LICENSING TERMS |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + of HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland, Germany - the Licensor - |
// + The Licensor grants the customer a non-exclusive license to use the microcontroller firmware of the Flight-Ctrl, Navi-Ctrl, BL-Ctrl, and MK3Mag hardware |
// + (the Software) exclusively for private purposes. The License is unrestricted with respect to time and territory*. |
// + The Software may only be used with the Licensor's products. |
// + The Software provided by the Licensor is protected by copyright. With respect to the relationship between the parties to this |
// + agreement, all rights pertaining to the Software and other documents provided during the preparation and execution of this |
// + agreement shall be the property of the Licensor. |
// + The information contained in the Software copyright notices, trademarks, other legal reservations, serial numbers and other |
// + features that can be used to identify the program may not be altered or defaced by the customer. |
// + The customer shall be responsible for taking reasonable precautions |
// + for the safe use of the Software. The customer shall test the Software thoroughly regarding its suitability for the |
// + intended purpose before implementing it for actual operation. The Licensor's liability shall be limited to the extent of typical and |
// + foreseeable damage to the extent permitted by law, notwithstanding statutory liability for bodily injury and product |
// + liability. However, the Licensor shall be entitled to the defense of contributory negligence. |
// + The customer will take adequate precautions in the case, that the software is not working properly. The customer will test |
// + the software for his purpose before any operational usage. The customer will backup his data before using the software. |
// + The customer understands that the Licensor collects, stores and processes, and, where required, forwards, customer data |
// + to third parties to the extent necessary for executing the agreement, subject to applicable data protection and privacy regulations. |
// + *) The territory aspect only refers to the place where the Software is used, not its programmed range. |
// + #### END OF LICENSING TERMS #### |
// + Note: For information on license extensions (e.g. commercial use), please contact us at info(@)hisystems.de. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include <avr/io.h> |
#include <avr/interrupt.h> |
#include <util/twi.h> |
#include "eeprom.h" |
#include "twimaster.h" |
#include "fc.h" |
#include "analog.h" |
#include "uart.h" |
#include "timer0.h" |
volatile uint8_t twi_state = TWI_STATE_MOTOR_TX; |
volatile uint8_t dac_channel = 0; |
volatile uint8_t motor_write = 0; |
volatile uint8_t motor_read = 0; |
volatile uint8_t I2C_TransferActive = 0; |
volatile uint16_t I2CTimeout = 100; |
uint8_t MissingMotor = 0; |
volatile uint8_t BLFlags = 0; |
MotorData_t Motor[MAX_MOTORS]; |
// bit mask for witch BL the configuration should be sent |
volatile uint16_t BLConfig_WriteMask = 0; |
// bit mask for witch BL the configuration should be read |
volatile uint16_t BLConfig_ReadMask = 0; |
// buffer for BL Configuration |
BLConfig_t BLConfig; |
#define I2C_WriteByte(byte) {TWDR = byte; TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE);} |
#define I2C_ReceiveByte() {TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA);} |
#define I2C_ReceiveLastByte() {TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE);} |
#define SCL_CLOCK 200000L |
#define I2C_TIMEOUT 30000 |
#define TWI_BASE_ADDRESS 0x52 |
/**************************************************/ |
/* Initialize I2C (TWI) */ |
/**************************************************/ |
void I2C_Init(char clear) |
{ |
uint8_t i; |
uint8_t sreg = SREG; |
cli(); |
// SDA is INPUT |
DDRC &= ~(1<<DDC1); |
// SCL is output |
DDRC |= (1<<DDC0); |
// pull up SDA |
PORTC |= (1<<PORTC0)|(1<<PORTC1); |
// TWI Status Register |
// prescaler 1 (TWPS1 = 0, TWPS0 = 0) |
TWSR &= ~((1<<TWPS1)|(1<<TWPS0)); |
// set TWI Bit Rate Register |
TWBR = ((F_CPU/SCL_CLOCK)-16)/2; |
twi_state = TWI_STATE_MOTOR_TX; |
motor_write = 0; |
motor_read = 0; |
if(clear) for(i=0; i < MAX_MOTORS; i++) |
{ |
Motor[i].Version = 0; |
Motor[i].SetPoint = 0; |
Motor[i].SetPointLowerBits = 0; |
Motor[i].State = 0; |
Motor[i].ReadMode = BL_READMODE_STATUS; |
Motor[i].Current = 0; |
Motor[i].MaxPWM = 0; |
Motor[i].Temperature = 0; |
} |
sei(); |
SREG = sreg; |
} |
void I2C_Reset(void) |
{ |
// stop i2c bus |
I2C_Stop(TWI_STATE_MOTOR_TX); |
TWCR = (1<<TWINT); // reset to original state incl. interrupt flag reset |
TWAMR = 0; |
TWAR = 0; |
TWDR = 0; |
TWSR = 0; |
TWBR = 0; |
I2C_TransferActive = 0; |
I2C_Init(0); |
I2C_WriteByte(0); |
BLFlags |= BLFLAG_READ_VERSION; |
} |
/****************************************/ |
/* I2C ISR */ |
/****************************************/ |
ISR (TWI_vect) |
{ |
static uint8_t missing_motor = 0, motor_read_temperature = 0; |
static uint8_t *pBuff = 0; |
static uint8_t BuffLen = 0; |
switch (twi_state++) |
{ |
// Master Transmit |
case 0: // TWI_STATE_MOTOR_TX |
I2C_TransferActive = 1; |
// skip motor if not used in mixer |
while((Mixer.Motor[motor_write][MIX_GAS] <= 0) && (motor_write < MAX_MOTORS)) motor_write++; |
if(motor_write >= MAX_MOTORS) // writing finished, read now |
{ |
BLConfig_WriteMask = 0; // reset configuration bitmask |
motor_write = 0; // reset motor write counter for next cycle |
twi_state = TWI_STATE_MOTOR_RX; |
I2C_WriteByte(TWI_BASE_ADDRESS + TW_READ + (motor_read<<1) ); // select slave address in rx mode |
} |
else I2C_WriteByte(TWI_BASE_ADDRESS + TW_WRITE + (motor_write<<1) ); // select slave address in tx mode |
break; |
case 1: // Send Data to Slave |
I2C_WriteByte(Motor[motor_write].SetPoint); // transmit setpoint |
// if old version has been detected |
if(!(Motor[motor_write].Version & MOTOR_STATE_NEW_PROTOCOL_MASK)) |
{ |
twi_state = 4; //jump over sending more data |
} |
// the new version has been detected |
else if(!( (Motor[motor_write].SetPointLowerBits && (RequiredMotors < 7)) || BLConfig_WriteMask || BLConfig_ReadMask ) ) |
{ // or LowerBits are zero and no BlConfig should be sent (saves round trip time) |
twi_state = 4; //jump over sending more data |
} |
break; |
case 2: // lower bits of setpoint (higher resolution) |
if ((0x0001<<motor_write) & BLConfig_ReadMask) |
{ |
Motor[motor_write].ReadMode = BL_READMODE_CONFIG; // configuration request |
} |
else |
{ |
Motor[motor_write].ReadMode = BL_READMODE_STATUS; // normal status request |
} |
// send read mode and the lower bits of setpoint |
I2C_WriteByte((Motor[motor_write].ReadMode<<3)|(Motor[motor_write].SetPointLowerBits & 0x07)); |
// configuration tranmission request? |
if((0x0001<<motor_write) & BLConfig_WriteMask) |
{ // redirect tx pointer to configuration data |
pBuff = (uint8_t*)&BLConfig; // select config for motor |
BuffLen = sizeof(BLConfig_t); |
} |
else |
{ // jump to end of transmission for that motor |
twi_state = 4; |
} |
break; |
case 3: // send configuration |
I2C_WriteByte(*pBuff); |
pBuff++; |
if(--BuffLen > 0) twi_state = 3; // if there are some bytes left |
break; |
case 4: // repeat case 0-4 for all motors |
if(TWSR == TW_MT_DATA_NACK) // Data transmitted, NACK received |
{ |
if(!missing_motor) missing_motor = motor_write + 1; |
if((Motor[motor_write].State & MOTOR_STATE_ERROR_MASK) < MOTOR_STATE_ERROR_MASK) Motor[motor_write].State++; // increment error counter and handle overflow |
} |
I2C_Stop(TWI_STATE_MOTOR_TX); |
I2CTimeout = 10; |
motor_write++; // next motor |
I2C_Start(TWI_STATE_MOTOR_TX); // Repeated start -> switch slave or switch Master Transmit -> Master Receive |
break; |
// Master Receive Data |
case 5: // TWI_STATE_MOTOR_RX |
if(TWSR != TW_MR_SLA_ACK) // SLA+R transmitted but no ACK received |
{ // no response from the addressed slave received |
Motor[motor_read].State &= ~MOTOR_STATE_PRESENT_MASK; // clear present bit |
if(++motor_read >= MAX_MOTORS) |
{ // all motors read |
motor_read = 0; // restart from beginning |
BLConfig_ReadMask = 0; // reset read configuration bitmask |
if(++motor_read_temperature >= MAX_MOTORS) |
{ |
motor_read_temperature = 0; |
BLFlags &= ~BLFLAG_READ_VERSION; |
} |
} |
BLFlags |= BLFLAG_TX_COMPLETE; |
I2C_Stop(TWI_STATE_MOTOR_TX); |
I2C_TransferActive = 0; |
} |
else |
{ // motor successfully addressed |
Motor[motor_read].State |= MOTOR_STATE_PRESENT_MASK; // set present bit |
if(Motor[motor_read].Version & MOTOR_STATE_NEW_PROTOCOL_MASK) |
{ |
// new BL found |
switch(Motor[motor_read].ReadMode) |
{ |
case BL_READMODE_CONFIG: |
pBuff = (uint8_t*)&BLConfig; |
BuffLen = sizeof(BLConfig_t); |
break; |
case BL_READMODE_STATUS: |
pBuff = (uint8_t*)&(Motor[motor_read].Current); |
if(motor_read == motor_read_temperature) BuffLen = 3; // read Current, MaxPwm & Temp |
else BuffLen = 1;// read Current only |
break; |
} |
} |
else // old BL version |
{ |
pBuff = (uint8_t*)&(Motor[motor_read].Current); |
if((BLFlags & BLFLAG_READ_VERSION) || (motor_read == motor_read_temperature)) BuffLen = 2; // Current & MaxPwm |
else BuffLen = 1; // read Current only |
} |
if(BuffLen == 1) |
{ |
I2C_ReceiveLastByte(); // read last byte |
} |
else |
{ |
I2C_ReceiveByte(); // read next byte |
} |
} |
MissingMotor = missing_motor; |
missing_motor = 0; |
break; |
case 6: // receive bytes |
*pBuff = TWDR; |
pBuff++; |
BuffLen--; |
if(BuffLen>1) |
{ |
I2C_ReceiveByte(); // read next byte |
} |
else if (BuffLen == 1) |
{ |
I2C_ReceiveLastByte(); // read last byte |
} |
else // nothing left |
{ |
if(BLFlags & BLFLAG_READ_VERSION) |
{ |
if(!(FC_StatusFlags & FC_STATUS_MOTOR_RUN) && (Motor[motor_read].MaxPWM == 250) ) Motor[motor_read].Version |= MOTOR_STATE_NEW_PROTOCOL_MASK; |
else Motor[motor_read].Version = 0; |
} |
if(++motor_read >= MAX_MOTORS) |
{ |
motor_read = 0; // restart from beginning |
BLConfig_ReadMask = 0; // reset read configuration bitmask |
if(++motor_read_temperature >= MAX_MOTORS) |
{ |
motor_read_temperature = 0; |
BLFlags &= ~BLFLAG_READ_VERSION; |
} |
} |
I2C_Stop(TWI_STATE_MOTOR_TX); |
BLFlags |= BLFLAG_TX_COMPLETE; |
I2C_TransferActive = 0; |
return; |
} |
twi_state = 6; // if there are some bytes left |
break; |
// writing Gyro-Offsets |
case 18: |
I2C_WriteByte(0x98); // Address the DAC |
break; |
case 19: |
I2C_WriteByte(0x10 + (dac_channel * 2)); // Select DAC Channel (0x10 = A, 0x12 = B, 0x14 = C) |
break; |
case 20: |
switch(dac_channel) |
{ |
case 0: |
I2C_WriteByte(AnalogOffsetNick); // 1st byte for Channel A |
break; |
case 1: |
I2C_WriteByte(AnalogOffsetRoll); // 1st byte for Channel B |
break; |
case 2: |
I2C_WriteByte(AnalogOffsetGier); // 1st byte for Channel C |
break; |
} |
break; |
case 21: |
I2C_WriteByte(0x80); // 2nd byte for all channels is 0x80 |
break; |
case 22: |
I2C_Stop(TWI_STATE_MOTOR_TX); |
I2C_TransferActive = 0; |
I2CTimeout = 10; |
// repeat case 18...22 until all DAC Channels are updated |
if(dac_channel < 2) |
{ |
dac_channel ++; // jump to next channel |
I2C_Start(TWI_STATE_GYRO_OFFSET_TX); // start transmission for next channel |
} |
else |
{ |
dac_channel = 0; // reset dac channel counter |
BLFlags |= BLFLAG_TX_COMPLETE; |
} |
break; |
default: |
I2C_Stop(TWI_STATE_MOTOR_TX); |
BLFlags |= BLFLAG_TX_COMPLETE; |
I2CTimeout = 10; |
motor_write = 0; |
motor_read = 0; |
I2C_TransferActive = 0; |
break; |
} |
} |
uint8_t I2C_WriteBLConfig(uint8_t motor) |
{ |
uint8_t i; |
uint16_t timer; |
if(MotorenEin || PC_MotortestActive) return(BLCONFIG_ERR_MOTOR_RUNNING); // not when motors are running! |
if(motor > MAX_MOTORS) return (BLCONFIG_ERR_MOTOR_NOT_EXIST); // motor does not exist! |
if(motor) |
{ |
if(!(Motor[motor-1].State & MOTOR_STATE_PRESENT_MASK)) return(BLCONFIG_ERR_MOTOR_NOT_EXIST); // motor does not exist! |
if(!(Motor[motor-1].Version & MOTOR_STATE_NEW_PROTOCOL_MASK)) return(BLCONFIG_ERR_HW_NOT_COMPATIBLE); // not a new BL! |
} |
// check BL configuration to send |
if(BLConfig.Revision != BLCONFIG_REVISION) return (BLCONFIG_ERR_SW_NOT_COMPATIBLE); // bad revison |
i = RAM_Checksum((uint8_t*)&BLConfig, sizeof(BLConfig_t) - 1); |
if(i != BLConfig.crc) return(BLCONFIG_ERR_CHECKSUM); // bad checksum |
timer = SetDelay(2000); |
while(!(BLFlags & BLFLAG_TX_COMPLETE) && !CheckDelay(timer)); //wait for complete transfer |
// prepare the bitmask |
if(!motor) // 0 means all |
{ |
BLConfig_WriteMask = 0xFF; // all motors at once with the same configuration |
} |
else //only one specific motor |
{ |
BLConfig_WriteMask = 0x0001<<(motor-1); |
} |
for(i = 0; i < MAX_MOTORS; i++) |
{ |
if((0x0001<<i) & BLConfig_WriteMask) |
{ |
Motor[i].SetPoint = 0; |
Motor[i].SetPointLowerBits = 0; |
} |
} |
motor_write = 0; |
// needs at least MAX_MOTORS loops of 2 ms (12*2ms = 24ms) |
do |
{ |
I2C_Start(TWI_STATE_MOTOR_TX); // start an i2c transmission |
while(!(BLFlags & BLFLAG_TX_COMPLETE) && !CheckDelay(timer)); //wait for complete transfer |
}while(BLConfig_WriteMask && !CheckDelay(timer)); // repeat until the BL config has been sent |
if(BLConfig_WriteMask) return(BLCONFIG_ERR_MOTOR_NOT_EXIST); |
return(BLCONFIG_SUCCESS); |
} |
uint8_t I2C_ReadBLConfig(uint8_t motor) |
{ |
uint8_t i; |
uint16_t timer; |
if(MotorenEin || PC_MotortestActive) return(BLCONFIG_ERR_MOTOR_RUNNING); // not when motors are running! |
if(motor > MAX_MOTORS) return (BLCONFIG_ERR_MOTOR_NOT_EXIST); // motor does not exist! |
if(motor == 0) return (BLCONFIG_ERR_READ_NOT_POSSIBLE); |
if(!(Motor[motor-1].State & MOTOR_STATE_PRESENT_MASK)) return(BLCONFIG_ERR_MOTOR_NOT_EXIST); // motor does not exist! |
if(!(Motor[motor-1].Version & MOTOR_STATE_NEW_PROTOCOL_MASK)) return(BLCONFIG_ERR_HW_NOT_COMPATIBLE); // not a new BL! |
timer = SetDelay(2000); |
while(!(BLFlags & BLFLAG_TX_COMPLETE) && !CheckDelay(timer)); //wait for complete transfer |
// prepare the bitmask |
BLConfig_ReadMask = 0x0001<<(motor-1); |
for(i = 0; i < MAX_MOTORS; i++) |
{ |
if((0x0001<<i) & BLConfig_ReadMask) |
{ |
Motor[i].SetPoint = 0; |
Motor[i].SetPointLowerBits = 0; |
} |
} |
motor_read = 0; |
BLConfig.Revision = 0; // bad revision |
BLConfig.crc = 0; // bad checksum |
// needs at least MAX_MOTORS loops of 2 ms (12*2ms = 24ms) |
do |
{ |
I2C_Start(TWI_STATE_MOTOR_TX); // start an i2c transmission |
while(!(BLFlags & BLFLAG_TX_COMPLETE) && !CheckDelay(timer)); //wait for complete transfer |
}while(BLConfig_ReadMask && !CheckDelay(timer)); // repeat until the BL config has been received from all motors |
// validate result |
if(BLConfig.Revision != BLCONFIG_REVISION) return (BLCONFIG_ERR_SW_NOT_COMPATIBLE); // bad revison |
i = RAM_Checksum((uint8_t*)&BLConfig, sizeof(BLConfig_t) - 1); |
if(i != BLConfig.crc) return(BLCONFIG_ERR_CHECKSUM); // bad checksum |
return(BLCONFIG_SUCCESS); |
} |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/twimaster.h |
---|
0,0 → 1,100 |
#ifndef _I2C_MASTER_H |
#define _I2C_MASTER_H |
+ |
+#include <inttypes.h> |
+ |
+#define TWI_STATE_MOTOR_TX 0 |
+#define TWI_STATE_MOTOR_RX 5 |
+#define TWI_STATE_GYRO_OFFSET_TX 18 |
+ |
+extern volatile uint8_t twi_state; |
+extern volatile uint8_t motor_write; |
+extern volatile uint8_t motor_read; |
+extern volatile uint8_t I2C_TransferActive; |
+ |
+extern uint8_t MissingMotor; |
+ |
+#define MAX_MOTORS 12 |
+#define MOTOR_STATE_PRESENT_MASK 0x80 |
+#define MOTOR_STATE_ERROR_MASK 0x7F |
+ |
+#define MOTOR_STATE_NEW_PROTOCOL_MASK 0x01 |
+ |
+#define BLFLAG_TX_COMPLETE 0x01 |
+#define BLFLAG_READ_VERSION 0x02 |
+ |
+extern volatile uint8_t BLFlags; |
+ |
+ |
+#define BL_READMODE_STATUS 0 |
+#define BL_READMODE_CONFIG 16 |
+ |
+typedef struct |
+{ |
+ uint8_t Version; // the version of the BL (0 = old) |
+ uint8_t SetPoint; // written by attitude controller |
+ uint8_t SetPointLowerBits; // for higher Resolution of new BLs |
+ uint8_t State; // 7 bit for I2C error counter, highest bit indicates if motor is present |
+ uint8_t ReadMode; // select data to read |
+ // the following bytes must be exactly in that order! |
+ uint8_t Current; // in 0.1 A steps, read back from BL |
+ uint8_t MaxPWM; // read back from BL -> is less than 255 if BL is in current limit, not running (250) or starting (40) |
+ int8_t Temperature; // old BL-Ctrl will return a 255 here, the new version the temp. in °C |
+} __attribute__((packed)) MotorData_t; |
+ |
+extern MotorData_t Motor[MAX_MOTORS]; |
+ |
+#define BLCONFIG_REVISION 2 |
+ |
+#define MASK_SET_PWM_SCALING 0x01 |
+#define MASK_SET_CURRENT_LIMIT 0x02 |
+#define MASK_SET_TEMP_LIMIT 0x04 |
+#define MASK_SET_CURRENT_SCALING 0x08 |
+#define MASK_SET_BITCONFIG 0x10 |
+#define MASK_RESET_CAPCOUNTER 0x20 |
+#define MASK_SET_DEFAULT_PARAMS 0x40 |
+#define MASK_SET_SAVE_EEPROM 0x80 |
+ |
+#define BITCONF_REVERSE_ROTATION 0x01 |
+#define BITCONF_RES1 0x02 |
+#define BITCONF_RES2 0x04 |
+#define BITCONF_RES3 0x08 |
+#define BITCONF_RES4 0x10 |
+#define BITCONF_RES5 0x20 |
+#define BITCONF_RES6 0x40 |
+#define BITCONF_RES7 0x80 |
+ |
+typedef struct |
+{ |
+ uint8_t Revision; // must be BL_REVISION |
+ uint8_t SetMask; // settings mask |
+ uint8_t PwmScaling; // maximum value of control pwm, acts like a thrust limit |
+ uint8_t CurrentLimit; // current limit in A |
+ uint8_t TempLimit; // in °C |
+ uint8_t CurrentScaling; // scaling factor for current measurement |
+ uint8_t BitConfig; // see defines above |
+ uint8_t crc; // checksum |
+} __attribute__((packed)) BLConfig_t; |
+ |
+extern BLConfig_t BLConfig; |
+ |
+extern volatile uint16_t I2CTimeout; |
+ |
+void I2C_Init(char); // Initialize I2C |
+#define I2C_Start(start_state) {twi_state = start_state; BLFlags &= ~BLFLAG_TX_COMPLETE; TWCR = (1<<TWSTA) | (1<<TWEN) | (1<<TWINT) | (1<<TWIE);} |
+#define I2C_Stop(start_state) {twi_state = start_state; TWCR = (1<<TWEN) | (1<<TWSTO) | (1<<TWINT);} |
+void I2C_Reset(void); // Reset I2C |
+ |
+#define BLCONFIG_SUCCESS 0 |
+#define BLCONFIG_ERR_MOTOR_RUNNING 1 |
+#define BLCONFIG_ERR_MOTOR_NOT_EXIST 2 |
+#define BLCONFIG_ERR_HW_NOT_COMPATIBLE 3 |
+#define BLCONFIG_ERR_SW_NOT_COMPATIBLE 4 |
+#define BLCONFIG_ERR_CHECKSUM 5 |
+#define BLCONFIG_ERR_READ_NOT_POSSIBLE 6 |
+ |
+uint8_t I2C_WriteBLConfig(uint8_t motor); |
+uint8_t I2C_ReadBLConfig(uint8_t motor); |
+ |
+#endif |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/twimaster.lst |
---|
0,0 → 1,1208 |
1 .file "twimaster.c" |
2 .arch atmega1284p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .global BLConfig_ReadMask |
11 .global BLConfig_ReadMask |
12 .section .bss |
15 BLConfig_ReadMask: |
16 0000 0000 .skip 2,0 |
17 .global BLConfig_WriteMask |
18 .global BLConfig_WriteMask |
21 BLConfig_WriteMask: |
22 0002 0000 .skip 2,0 |
23 .global BLFlags |
24 .global BLFlags |
27 BLFlags: |
28 0004 00 .skip 1,0 |
29 .global MissingMotor |
30 .global MissingMotor |
33 MissingMotor: |
34 0005 00 .skip 1,0 |
35 .global I2CTimeout |
36 .data |
39 I2CTimeout: |
40 0000 6400 .word 100 |
41 .global I2C_TransferActive |
42 .global I2C_TransferActive |
43 .section .bss |
46 I2C_TransferActive: |
47 0006 00 .skip 1,0 |
48 .global motor_read |
49 .global motor_read |
52 motor_read: |
53 0007 00 .skip 1,0 |
54 .global motor_write |
55 .global motor_write |
58 motor_write: |
59 0008 00 .skip 1,0 |
60 .global dac_channel |
61 .global dac_channel |
64 dac_channel: |
65 0009 00 .skip 1,0 |
66 .global twi_state |
67 .global twi_state |
70 twi_state: |
71 000a 00 .skip 1,0 |
72 .text |
73 .global I2C_Init |
75 I2C_Init: |
76 /* prologue: frame size=0 */ |
77 /* prologue end (size=0) */ |
78 0000 982F mov r25,r24 |
79 0002 2FB7 in r18,95-0x20 |
80 /* #APP */ |
81 0004 F894 cli |
82 /* #NOAPP */ |
83 0006 3998 cbi 39-0x20,1 |
84 0008 389A sbi 39-0x20,0 |
85 000a 88B1 in r24,40-0x20 |
86 000c 8360 ori r24,lo8(3) |
87 000e 88B9 out 40-0x20,r24 |
88 0010 8091 B900 lds r24,185 |
89 0014 8C7F andi r24,lo8(-4) |
90 0016 8093 B900 sts 185,r24 |
91 001a 8AE2 ldi r24,lo8(42) |
92 001c 8093 B800 sts 184,r24 |
93 0020 1092 0000 sts twi_state,__zero_reg__ |
94 0024 1092 0000 sts motor_write,__zero_reg__ |
95 0028 1092 0000 sts motor_read,__zero_reg__ |
96 002c 9923 tst r25 |
97 002e 01F0 breq .L2 |
98 0030 E0E0 ldi r30,lo8(Motor) |
99 0032 F0E0 ldi r31,hi8(Motor) |
100 0034 8BE0 ldi r24,lo8(11) |
101 .L6: |
102 0036 1082 st Z,__zero_reg__ |
103 0038 1182 std Z+1,__zero_reg__ |
104 003a 1282 std Z+2,__zero_reg__ |
105 003c 1382 std Z+3,__zero_reg__ |
106 003e 1482 std Z+4,__zero_reg__ |
107 0040 1582 std Z+5,__zero_reg__ |
108 0042 1682 std Z+6,__zero_reg__ |
109 0044 1782 std Z+7,__zero_reg__ |
110 0046 8150 subi r24,lo8(-(-1)) |
111 0048 3896 adiw r30,8 |
112 004a 87FF sbrs r24,7 |
113 004c 00C0 rjmp .L6 |
114 .L2: |
115 /* #APP */ |
116 004e 7894 sei |
117 /* #NOAPP */ |
118 0050 2FBF out 95-0x20,r18 |
119 /* epilogue: frame size=0 */ |
120 0052 0895 ret |
121 /* epilogue end (size=1) */ |
122 /* function I2C_Init size 44 (43) */ |
124 .global I2C_Reset |
126 I2C_Reset: |
127 /* prologue: frame size=0 */ |
128 /* prologue end (size=0) */ |
129 0054 1092 0000 sts twi_state,__zero_reg__ |
130 0058 84E9 ldi r24,lo8(-108) |
131 005a 8093 BC00 sts 188,r24 |
132 005e 80E8 ldi r24,lo8(-128) |
133 0060 8093 BC00 sts 188,r24 |
134 0064 1092 BD00 sts 189,__zero_reg__ |
135 0068 1092 BA00 sts 186,__zero_reg__ |
136 006c 1092 BB00 sts 187,__zero_reg__ |
137 0070 1092 B900 sts 185,__zero_reg__ |
138 0074 1092 B800 sts 184,__zero_reg__ |
139 0078 1092 0000 sts I2C_TransferActive,__zero_reg__ |
140 007c 80E0 ldi r24,lo8(0) |
141 007e 0E94 0000 call I2C_Init |
142 0082 1092 BB00 sts 187,__zero_reg__ |
143 0086 85E8 ldi r24,lo8(-123) |
144 0088 8093 BC00 sts 188,r24 |
145 008c 8091 0000 lds r24,BLFlags |
146 0090 8260 ori r24,lo8(2) |
147 0092 8093 0000 sts BLFlags,r24 |
148 /* epilogue: frame size=0 */ |
149 0096 0895 ret |
150 /* epilogue end (size=1) */ |
151 /* function I2C_Reset size 34 (33) */ |
153 .lcomm missing_motor.0,1 |
154 .lcomm motor_read_temperature.1,1 |
155 .lcomm pBuff.2,2 |
156 .lcomm BuffLen.3,1 |
157 .global __vector_26 |
159 __vector_26: |
160 /* prologue: frame size=0 */ |
161 0098 1F92 push __zero_reg__ |
162 009a 0F92 push __tmp_reg__ |
163 009c 0FB6 in __tmp_reg__,__SREG__ |
164 009e 0F92 push __tmp_reg__ |
165 00a0 1124 clr __zero_reg__ |
166 00a2 2F93 push r18 |
167 00a4 3F93 push r19 |
168 00a6 4F93 push r20 |
169 00a8 5F93 push r21 |
170 00aa 8F93 push r24 |
171 00ac 9F93 push r25 |
172 00ae EF93 push r30 |
173 00b0 FF93 push r31 |
174 /* prologue end (size=13) */ |
175 00b2 8091 0000 lds r24,twi_state |
176 00b6 282F mov r18,r24 |
177 00b8 3327 clr r19 |
178 00ba 4427 clr r20 |
179 00bc 5527 clr r21 |
180 00be 8F5F subi r24,lo8(-(1)) |
181 00c0 8093 0000 sts twi_state,r24 |
182 00c4 F901 movw r30,r18 |
183 00c6 2731 cpi r18,23 |
184 00c8 3105 cpc r19,__zero_reg__ |
185 00ca 00F0 brlo .+2 |
186 00cc 00C0 rjmp .L72 |
187 00ce E050 subi r30,lo8(-(pm(.L73))) |
188 00d0 F040 sbci r31,hi8(-(pm(.L73))) |
189 00d2 0C94 0000 jmp __tablejump2__ |
190 .data |
191 .section .progmem.gcc_sw_table, "a", @progbits |
192 .p2align 1 |
193 .L73: |
194 0000 0000 .word pm(.L11) |
195 0002 0000 .word pm(.L17) |
196 0004 0000 .word pm(.L22) |
197 0006 0000 .word pm(.L27) |
198 0008 0000 .word pm(.L29) |
199 000a 0000 .word pm(.L33) |
200 000c 0000 .word pm(.L50) |
201 000e 0000 .word pm(.L72) |
202 0010 0000 .word pm(.L72) |
203 0012 0000 .word pm(.L72) |
204 0014 0000 .word pm(.L72) |
205 0016 0000 .word pm(.L72) |
206 0018 0000 .word pm(.L72) |
207 001a 0000 .word pm(.L72) |
208 001c 0000 .word pm(.L72) |
209 001e 0000 .word pm(.L72) |
210 0020 0000 .word pm(.L72) |
211 0022 0000 .word pm(.L72) |
212 0024 0000 .word pm(.L60) |
213 0026 0000 .word pm(.L61) |
214 0028 0000 .word pm(.L62) |
215 002a 0000 .word pm(.L68) |
216 002c 0000 .word pm(.L69) |
217 .text |
218 .L11: |
219 00d6 81E0 ldi r24,lo8(1) |
220 00d8 8093 0000 sts I2C_TransferActive,r24 |
221 00dc 00C0 rjmp .L76 |
222 .L75: |
223 00de 8091 0000 lds r24,motor_write |
224 00e2 8C30 cpi r24,lo8(12) |
225 00e4 00F4 brsh .L13 |
226 00e6 8091 0000 lds r24,motor_write |
227 00ea 8F5F subi r24,lo8(-(1)) |
228 00ec 8093 0000 sts motor_write,r24 |
229 .L76: |
230 00f0 8091 0000 lds r24,motor_write |
231 00f4 E82F mov r30,r24 |
232 00f6 FF27 clr r31 |
233 00f8 EE0F lsl r30 |
234 00fa FF1F rol r31 |
235 00fc EE0F lsl r30 |
236 00fe FF1F rol r31 |
237 0100 E050 subi r30,lo8(-(Mixer)) |
238 0102 F040 sbci r31,hi8(-(Mixer)) |
239 0104 8585 ldd r24,Z+13 |
240 0106 1816 cp __zero_reg__,r24 |
241 0108 04F4 brge .L75 |
242 .L13: |
243 010a 8091 0000 lds r24,motor_write |
244 010e 8C30 cpi r24,lo8(12) |
245 0110 00F0 brlo .L15 |
246 0112 1092 0000 sts (BLConfig_WriteMask)+1,__zero_reg__ |
247 0116 1092 0000 sts BLConfig_WriteMask,__zero_reg__ |
248 011a 1092 0000 sts motor_write,__zero_reg__ |
249 011e 85E0 ldi r24,lo8(5) |
250 0120 8093 0000 sts twi_state,r24 |
251 0124 8091 0000 lds r24,motor_read |
252 0128 880F lsl r24 |
253 012a 8D5A subi r24,lo8(-(83)) |
254 012c 00C0 rjmp .L84 |
255 .L15: |
256 012e 8091 0000 lds r24,motor_write |
257 0132 880F lsl r24 |
258 0134 8E5A subi r24,lo8(-(82)) |
259 .L84: |
260 0136 8093 BB00 sts 187,r24 |
261 013a 85E8 ldi r24,lo8(-123) |
262 013c 00C0 rjmp .L80 |
263 .L17: |
264 013e 8091 0000 lds r24,motor_write |
265 0142 E82F mov r30,r24 |
266 0144 FF27 clr r31 |
267 0146 83E0 ldi r24,3 |
268 0148 EE0F 1: lsl r30 |
269 014a FF1F rol r31 |
270 014c 8A95 dec r24 |
271 014e 01F4 brne 1b |
272 0150 E050 subi r30,lo8(-(Motor)) |
273 0152 F040 sbci r31,hi8(-(Motor)) |
274 0154 8181 ldd r24,Z+1 |
275 0156 8093 BB00 sts 187,r24 |
276 015a 85E8 ldi r24,lo8(-123) |
277 015c 8093 BC00 sts 188,r24 |
278 0160 8091 0000 lds r24,motor_write |
279 0164 E82F mov r30,r24 |
280 0166 FF27 clr r31 |
281 0168 EE0F lsl r30 |
282 016a FF1F rol r31 |
283 016c EE0F lsl r30 |
284 016e FF1F rol r31 |
285 0170 EE0F lsl r30 |
286 0172 FF1F rol r31 |
287 0174 E050 subi r30,lo8(-(Motor)) |
288 0176 F040 sbci r31,hi8(-(Motor)) |
289 0178 8081 ld r24,Z |
290 017a 80FF sbrs r24,0 |
291 017c 00C0 rjmp .L25 |
292 017e 8091 0000 lds r24,motor_write |
293 0182 E82F mov r30,r24 |
294 0184 FF27 clr r31 |
295 0186 EE0F lsl r30 |
296 0188 FF1F rol r31 |
297 018a EE0F lsl r30 |
298 018c FF1F rol r31 |
299 018e EE0F lsl r30 |
300 0190 FF1F rol r31 |
301 0192 E050 subi r30,lo8(-(Motor)) |
302 0194 F040 sbci r31,hi8(-(Motor)) |
303 0196 8281 ldd r24,Z+2 |
304 0198 8823 tst r24 |
305 019a 01F0 breq .L21 |
306 019c 8091 0000 lds r24,RequiredMotors |
307 01a0 8730 cpi r24,lo8(7) |
308 01a2 00F4 brsh .+2 |
309 01a4 00C0 rjmp .L9 |
310 .L21: |
311 01a6 8091 0000 lds r24,BLConfig_WriteMask |
312 01aa 9091 0000 lds r25,(BLConfig_WriteMask)+1 |
313 01ae 892B or r24,r25 |
314 01b0 01F0 breq .+2 |
315 01b2 00C0 rjmp .L9 |
316 01b4 8091 0000 lds r24,BLConfig_ReadMask |
317 01b8 9091 0000 lds r25,(BLConfig_ReadMask)+1 |
318 01bc 892B or r24,r25 |
319 01be 01F0 breq .+2 |
320 01c0 00C0 rjmp .L9 |
321 01c2 00C0 rjmp .L25 |
322 .L22: |
323 01c4 8091 0000 lds r24,motor_write |
324 01c8 21E0 ldi r18,lo8(1) |
325 01ca 30E0 ldi r19,hi8(1) |
326 01cc 00C0 rjmp 2f |
327 01ce 220F 1: lsl r18 |
328 01d0 331F rol r19 |
329 01d2 8A95 2: dec r24 |
330 01d4 02F4 brpl 1b |
331 01d6 8091 0000 lds r24,BLConfig_ReadMask |
332 01da 9091 0000 lds r25,(BLConfig_ReadMask)+1 |
333 01de 2823 and r18,r24 |
334 01e0 3923 and r19,r25 |
335 01e2 232B or r18,r19 |
336 01e4 01F0 breq .L23 |
337 01e6 8091 0000 lds r24,motor_write |
338 01ea E82F mov r30,r24 |
339 01ec FF27 clr r31 |
340 01ee EE0F lsl r30 |
341 01f0 FF1F rol r31 |
342 01f2 EE0F lsl r30 |
343 01f4 FF1F rol r31 |
344 01f6 EE0F lsl r30 |
345 01f8 FF1F rol r31 |
346 01fa E050 subi r30,lo8(-(Motor)) |
347 01fc F040 sbci r31,hi8(-(Motor)) |
348 01fe 80E1 ldi r24,lo8(16) |
349 0200 8483 std Z+4,r24 |
350 0202 00C0 rjmp .L24 |
351 .L23: |
352 0204 8091 0000 lds r24,motor_write |
353 0208 E82F mov r30,r24 |
354 020a FF27 clr r31 |
355 020c EE0F lsl r30 |
356 020e FF1F rol r31 |
357 0210 EE0F lsl r30 |
358 0212 FF1F rol r31 |
359 0214 EE0F lsl r30 |
360 0216 FF1F rol r31 |
361 0218 E050 subi r30,lo8(-(Motor)) |
362 021a F040 sbci r31,hi8(-(Motor)) |
363 021c 1482 std Z+4,__zero_reg__ |
364 .L24: |
365 021e 8091 0000 lds r24,motor_write |
366 0222 E82F mov r30,r24 |
367 0224 FF27 clr r31 |
368 0226 53E0 ldi r21,3 |
369 0228 EE0F 1: lsl r30 |
370 022a FF1F rol r31 |
371 022c 5A95 dec r21 |
372 022e 01F4 brne 1b |
373 0230 E050 subi r30,lo8(-(Motor)) |
374 0232 F040 sbci r31,hi8(-(Motor)) |
375 0234 8481 ldd r24,Z+4 |
376 0236 282F mov r18,r24 |
377 0238 3327 clr r19 |
378 023a 43E0 ldi r20,3 |
379 023c 220F 1: lsl r18 |
380 023e 331F rol r19 |
381 0240 4A95 dec r20 |
382 0242 01F4 brne 1b |
383 0244 8091 0000 lds r24,motor_write |
384 0248 E82F mov r30,r24 |
385 024a FF27 clr r31 |
386 024c 93E0 ldi r25,3 |
387 024e EE0F 1: lsl r30 |
388 0250 FF1F rol r31 |
389 0252 9A95 dec r25 |
390 0254 01F4 brne 1b |
391 0256 E050 subi r30,lo8(-(Motor)) |
392 0258 F040 sbci r31,hi8(-(Motor)) |
393 025a 8281 ldd r24,Z+2 |
394 025c 8770 andi r24,lo8(7) |
395 025e 822B or r24,r18 |
396 0260 8093 BB00 sts 187,r24 |
397 0264 85E8 ldi r24,lo8(-123) |
398 0266 8093 BC00 sts 188,r24 |
399 026a 2091 0000 lds r18,motor_write |
400 026e 81E0 ldi r24,lo8(1) |
401 0270 90E0 ldi r25,hi8(1) |
402 0272 00C0 rjmp 2f |
403 0274 880F 1: lsl r24 |
404 0276 991F rol r25 |
405 0278 2A95 2: dec r18 |
406 027a 02F4 brpl 1b |
407 027c 2091 0000 lds r18,BLConfig_WriteMask |
408 0280 3091 0000 lds r19,(BLConfig_WriteMask)+1 |
409 0284 8223 and r24,r18 |
410 0286 9323 and r25,r19 |
411 0288 892B or r24,r25 |
412 028a 01F0 breq .L25 |
413 028c 80E0 ldi r24,lo8(BLConfig) |
414 028e 90E0 ldi r25,hi8(BLConfig) |
415 0290 9093 0000 sts (pBuff.2)+1,r25 |
416 0294 8093 0000 sts pBuff.2,r24 |
417 0298 88E0 ldi r24,lo8(8) |
418 029a 8093 0000 sts BuffLen.3,r24 |
419 029e 00C0 rjmp .L9 |
420 .L25: |
421 02a0 84E0 ldi r24,lo8(4) |
422 02a2 00C0 rjmp .L82 |
423 .L27: |
424 02a4 E091 0000 lds r30,pBuff.2 |
425 02a8 F091 0000 lds r31,(pBuff.2)+1 |
426 02ac 8191 ld r24,Z+ |
427 02ae 8093 BB00 sts 187,r24 |
428 02b2 85E8 ldi r24,lo8(-123) |
429 02b4 8093 BC00 sts 188,r24 |
430 02b8 F093 0000 sts (pBuff.2)+1,r31 |
431 02bc E093 0000 sts pBuff.2,r30 |
432 02c0 8091 0000 lds r24,BuffLen.3 |
433 02c4 8150 subi r24,lo8(-(-1)) |
434 02c6 8093 0000 sts BuffLen.3,r24 |
435 02ca 8823 tst r24 |
436 02cc 01F4 brne .+2 |
437 02ce 00C0 rjmp .L9 |
438 02d0 83E0 ldi r24,lo8(3) |
439 02d2 00C0 rjmp .L82 |
440 .L29: |
441 02d4 8091 B900 lds r24,185 |
442 02d8 8033 cpi r24,lo8(48) |
443 02da 01F4 brne .L30 |
444 02dc 8091 0000 lds r24,missing_motor.0 |
445 02e0 8823 tst r24 |
446 02e2 01F4 brne .L31 |
447 02e4 8091 0000 lds r24,motor_write |
448 02e8 8F5F subi r24,lo8(-(1)) |
449 02ea 8093 0000 sts missing_motor.0,r24 |
450 .L31: |
451 02ee 8091 0000 lds r24,motor_write |
452 02f2 E82F mov r30,r24 |
453 02f4 FF27 clr r31 |
454 02f6 83E0 ldi r24,3 |
455 02f8 EE0F 1: lsl r30 |
456 02fa FF1F rol r31 |
457 02fc 8A95 dec r24 |
458 02fe 01F4 brne 1b |
459 0300 E050 subi r30,lo8(-(Motor)) |
460 0302 F040 sbci r31,hi8(-(Motor)) |
461 0304 8381 ldd r24,Z+3 |
462 0306 9927 clr r25 |
463 0308 8F77 andi r24,lo8(127) |
464 030a 9070 andi r25,hi8(127) |
465 030c 8F37 cpi r24,127 |
466 030e 9105 cpc r25,__zero_reg__ |
467 0310 04F4 brge .L30 |
468 0312 8091 0000 lds r24,motor_write |
469 0316 E82F mov r30,r24 |
470 0318 FF27 clr r31 |
471 031a EE0F lsl r30 |
472 031c FF1F rol r31 |
473 031e EE0F lsl r30 |
474 0320 FF1F rol r31 |
475 0322 EE0F lsl r30 |
476 0324 FF1F rol r31 |
477 0326 E050 subi r30,lo8(-(Motor)) |
478 0328 F040 sbci r31,hi8(-(Motor)) |
479 032a 8381 ldd r24,Z+3 |
480 032c 8F5F subi r24,lo8(-(1)) |
481 032e 8383 std Z+3,r24 |
482 .L30: |
483 0330 1092 0000 sts twi_state,__zero_reg__ |
484 0334 84E9 ldi r24,lo8(-108) |
485 0336 8093 BC00 sts 188,r24 |
486 033a 8AE0 ldi r24,lo8(10) |
487 033c 90E0 ldi r25,hi8(10) |
488 033e 9093 0000 sts (I2CTimeout)+1,r25 |
489 0342 8093 0000 sts I2CTimeout,r24 |
490 0346 8091 0000 lds r24,motor_write |
491 034a 8F5F subi r24,lo8(-(1)) |
492 034c 8093 0000 sts motor_write,r24 |
493 0350 1092 0000 sts twi_state,__zero_reg__ |
494 0354 00C0 rjmp .L85 |
495 .L33: |
496 0356 8091 B900 lds r24,185 |
497 035a 8034 cpi r24,lo8(64) |
498 035c 01F0 breq .L34 |
499 035e 8091 0000 lds r24,motor_read |
500 0362 E82F mov r30,r24 |
501 0364 FF27 clr r31 |
502 0366 EE0F lsl r30 |
503 0368 FF1F rol r31 |
504 036a EE0F lsl r30 |
505 036c FF1F rol r31 |
506 036e EE0F lsl r30 |
507 0370 FF1F rol r31 |
508 0372 E050 subi r30,lo8(-(Motor)) |
509 0374 F040 sbci r31,hi8(-(Motor)) |
510 0376 8381 ldd r24,Z+3 |
511 0378 8F77 andi r24,lo8(127) |
512 037a 8383 std Z+3,r24 |
513 037c 8091 0000 lds r24,motor_read |
514 0380 8F5F subi r24,lo8(-(1)) |
515 0382 8093 0000 sts motor_read,r24 |
516 0386 8091 0000 lds r24,motor_read |
517 038a 8C30 cpi r24,lo8(12) |
518 038c 00F0 brlo .L35 |
519 038e 1092 0000 sts motor_read,__zero_reg__ |
520 0392 1092 0000 sts (BLConfig_ReadMask)+1,__zero_reg__ |
521 0396 1092 0000 sts BLConfig_ReadMask,__zero_reg__ |
522 039a 8091 0000 lds r24,motor_read_temperature.1 |
523 039e 8F5F subi r24,lo8(-(1)) |
524 03a0 8093 0000 sts motor_read_temperature.1,r24 |
525 03a4 8C30 cpi r24,lo8(12) |
526 03a6 00F0 brlo .L35 |
527 03a8 1092 0000 sts motor_read_temperature.1,__zero_reg__ |
528 03ac 8091 0000 lds r24,BLFlags |
529 03b0 8D7F andi r24,lo8(-3) |
530 03b2 8093 0000 sts BLFlags,r24 |
531 .L35: |
532 03b6 8091 0000 lds r24,BLFlags |
533 03ba 8160 ori r24,lo8(1) |
534 03bc 8093 0000 sts BLFlags,r24 |
535 03c0 1092 0000 sts twi_state,__zero_reg__ |
536 03c4 84E9 ldi r24,lo8(-108) |
537 03c6 8093 BC00 sts 188,r24 |
538 03ca 1092 0000 sts I2C_TransferActive,__zero_reg__ |
539 03ce 00C0 rjmp .L37 |
540 .L34: |
541 03d0 8091 0000 lds r24,motor_read |
542 03d4 E82F mov r30,r24 |
543 03d6 FF27 clr r31 |
544 03d8 EE0F lsl r30 |
545 03da FF1F rol r31 |
546 03dc EE0F lsl r30 |
547 03de FF1F rol r31 |
548 03e0 EE0F lsl r30 |
549 03e2 FF1F rol r31 |
550 03e4 E050 subi r30,lo8(-(Motor)) |
551 03e6 F040 sbci r31,hi8(-(Motor)) |
552 03e8 8381 ldd r24,Z+3 |
553 03ea 8068 ori r24,lo8(-128) |
554 03ec 8383 std Z+3,r24 |
555 03ee 8091 0000 lds r24,motor_read |
556 03f2 E82F mov r30,r24 |
557 03f4 FF27 clr r31 |
558 03f6 EE0F lsl r30 |
559 03f8 FF1F rol r31 |
560 03fa EE0F lsl r30 |
561 03fc FF1F rol r31 |
562 03fe EE0F lsl r30 |
563 0400 FF1F rol r31 |
564 0402 E050 subi r30,lo8(-(Motor)) |
565 0404 F040 sbci r31,hi8(-(Motor)) |
566 0406 8081 ld r24,Z |
567 0408 80FF sbrs r24,0 |
568 040a 00C0 rjmp .L38 |
569 040c 8091 0000 lds r24,motor_read |
570 0410 E82F mov r30,r24 |
571 0412 FF27 clr r31 |
572 0414 53E0 ldi r21,3 |
573 0416 EE0F 1: lsl r30 |
574 0418 FF1F rol r31 |
575 041a 5A95 dec r21 |
576 041c 01F4 brne 1b |
577 041e E050 subi r30,lo8(-(Motor)) |
578 0420 F040 sbci r31,hi8(-(Motor)) |
579 0422 8481 ldd r24,Z+4 |
580 0424 9927 clr r25 |
581 0426 0097 sbiw r24,0 |
582 0428 01F0 breq .L41 |
583 042a 4097 sbiw r24,16 |
584 042c 01F4 brne .L44 |
585 042e 80E0 ldi r24,lo8(BLConfig) |
586 0430 90E0 ldi r25,hi8(BLConfig) |
587 0432 9093 0000 sts (pBuff.2)+1,r25 |
588 0436 8093 0000 sts pBuff.2,r24 |
589 043a 88E0 ldi r24,lo8(8) |
590 043c 00C0 rjmp .L77 |
591 .L41: |
592 043e 8091 0000 lds r24,motor_read |
593 0442 9927 clr r25 |
594 0444 43E0 ldi r20,3 |
595 0446 880F 1: lsl r24 |
596 0448 991F rol r25 |
597 044a 4A95 dec r20 |
598 044c 01F4 brne 1b |
599 044e 8050 subi r24,lo8(-(Motor+5)) |
600 0450 9040 sbci r25,hi8(-(Motor+5)) |
601 0452 9093 0000 sts (pBuff.2)+1,r25 |
602 0456 8093 0000 sts pBuff.2,r24 |
603 045a 9091 0000 lds r25,motor_read |
604 045e 8091 0000 lds r24,motor_read_temperature.1 |
605 0462 9817 cp r25,r24 |
606 0464 01F4 brne .L45 |
607 0466 83E0 ldi r24,lo8(3) |
608 0468 00C0 rjmp .L77 |
609 .L38: |
610 046a 8091 0000 lds r24,motor_read |
611 046e 9927 clr r25 |
612 0470 33E0 ldi r19,3 |
613 0472 880F 1: lsl r24 |
614 0474 991F rol r25 |
615 0476 3A95 dec r19 |
616 0478 01F4 brne 1b |
617 047a 8050 subi r24,lo8(-(Motor+5)) |
618 047c 9040 sbci r25,hi8(-(Motor+5)) |
619 047e 9093 0000 sts (pBuff.2)+1,r25 |
620 0482 8093 0000 sts pBuff.2,r24 |
621 0486 8091 0000 lds r24,BLFlags |
622 048a 81FD sbrc r24,1 |
623 048c 00C0 rjmp .L46 |
624 048e 9091 0000 lds r25,motor_read |
625 0492 8091 0000 lds r24,motor_read_temperature.1 |
626 0496 9817 cp r25,r24 |
627 0498 01F4 brne .L45 |
628 .L46: |
629 049a 82E0 ldi r24,lo8(2) |
630 049c 00C0 rjmp .L77 |
631 .L45: |
632 049e 81E0 ldi r24,lo8(1) |
633 .L77: |
634 04a0 8093 0000 sts BuffLen.3,r24 |
635 .L44: |
636 04a4 8091 0000 lds r24,BuffLen.3 |
637 04a8 8130 cpi r24,lo8(1) |
638 04aa 01F4 brne .L48 |
639 04ac 85E8 ldi r24,lo8(-123) |
640 04ae 00C0 rjmp .L78 |
641 .L48: |
642 04b0 85EC ldi r24,lo8(-59) |
643 .L78: |
644 04b2 8093 BC00 sts 188,r24 |
645 .L37: |
646 04b6 8091 0000 lds r24,missing_motor.0 |
647 04ba 8093 0000 sts MissingMotor,r24 |
648 04be 1092 0000 sts missing_motor.0,__zero_reg__ |
649 04c2 00C0 rjmp .L9 |
650 .L50: |
651 04c4 E091 0000 lds r30,pBuff.2 |
652 04c8 F091 0000 lds r31,(pBuff.2)+1 |
653 04cc 8091 BB00 lds r24,187 |
654 04d0 8083 st Z,r24 |
655 04d2 8091 0000 lds r24,pBuff.2 |
656 04d6 9091 0000 lds r25,(pBuff.2)+1 |
657 04da 0196 adiw r24,1 |
658 04dc 9093 0000 sts (pBuff.2)+1,r25 |
659 04e0 8093 0000 sts pBuff.2,r24 |
660 04e4 8091 0000 lds r24,BuffLen.3 |
661 04e8 8150 subi r24,lo8(-(-1)) |
662 04ea 8093 0000 sts BuffLen.3,r24 |
663 04ee 8230 cpi r24,lo8(2) |
664 04f0 00F0 brlo .L51 |
665 04f2 85EC ldi r24,lo8(-59) |
666 04f4 00C0 rjmp .L79 |
667 .L51: |
668 04f6 8130 cpi r24,lo8(1) |
669 04f8 01F4 brne .L53 |
670 04fa 85E8 ldi r24,lo8(-123) |
671 04fc 00C0 rjmp .L79 |
672 .L53: |
673 04fe 8091 0000 lds r24,BLFlags |
674 0502 81FF sbrs r24,1 |
675 0504 00C0 rjmp .L55 |
676 0506 8091 0000 lds r24,FC_StatusFlags |
677 050a 80FD sbrc r24,0 |
678 050c 00C0 rjmp .L56 |
679 050e 8091 0000 lds r24,motor_read |
680 0512 E82F mov r30,r24 |
681 0514 FF27 clr r31 |
682 0516 23E0 ldi r18,3 |
683 0518 EE0F 1: lsl r30 |
684 051a FF1F rol r31 |
685 051c 2A95 dec r18 |
686 051e 01F4 brne 1b |
687 0520 E050 subi r30,lo8(-(Motor)) |
688 0522 F040 sbci r31,hi8(-(Motor)) |
689 0524 8681 ldd r24,Z+6 |
690 0526 8A3F cpi r24,lo8(-6) |
691 0528 01F4 brne .L56 |
692 052a 8091 0000 lds r24,motor_read |
693 052e E82F mov r30,r24 |
694 0530 FF27 clr r31 |
695 0532 93E0 ldi r25,3 |
696 0534 EE0F 1: lsl r30 |
697 0536 FF1F rol r31 |
698 0538 9A95 dec r25 |
699 053a 01F4 brne 1b |
700 053c E050 subi r30,lo8(-(Motor)) |
701 053e F040 sbci r31,hi8(-(Motor)) |
702 0540 8081 ld r24,Z |
703 0542 8160 ori r24,lo8(1) |
704 0544 8083 st Z,r24 |
705 0546 00C0 rjmp .L55 |
706 .L56: |
707 0548 8091 0000 lds r24,motor_read |
708 054c E82F mov r30,r24 |
709 054e FF27 clr r31 |
710 0550 83E0 ldi r24,3 |
711 0552 EE0F 1: lsl r30 |
712 0554 FF1F rol r31 |
713 0556 8A95 dec r24 |
714 0558 01F4 brne 1b |
715 055a E050 subi r30,lo8(-(Motor)) |
716 055c F040 sbci r31,hi8(-(Motor)) |
717 055e 1082 st Z,__zero_reg__ |
718 .L55: |
719 0560 8091 0000 lds r24,motor_read |
720 0564 8F5F subi r24,lo8(-(1)) |
721 0566 8093 0000 sts motor_read,r24 |
722 056a 8091 0000 lds r24,motor_read |
723 056e 8C30 cpi r24,lo8(12) |
724 0570 00F0 brlo .L58 |
725 0572 1092 0000 sts motor_read,__zero_reg__ |
726 0576 1092 0000 sts (BLConfig_ReadMask)+1,__zero_reg__ |
727 057a 1092 0000 sts BLConfig_ReadMask,__zero_reg__ |
728 057e 8091 0000 lds r24,motor_read_temperature.1 |
729 0582 8F5F subi r24,lo8(-(1)) |
730 0584 8093 0000 sts motor_read_temperature.1,r24 |
731 0588 8C30 cpi r24,lo8(12) |
732 058a 00F0 brlo .L58 |
733 058c 1092 0000 sts motor_read_temperature.1,__zero_reg__ |
734 0590 8091 0000 lds r24,BLFlags |
735 0594 8D7F andi r24,lo8(-3) |
736 0596 8093 0000 sts BLFlags,r24 |
737 .L58: |
738 059a 1092 0000 sts twi_state,__zero_reg__ |
739 059e 84E9 ldi r24,lo8(-108) |
740 05a0 8093 BC00 sts 188,r24 |
741 05a4 8091 0000 lds r24,BLFlags |
742 05a8 8160 ori r24,lo8(1) |
743 05aa 8093 0000 sts BLFlags,r24 |
744 05ae 00C0 rjmp .L81 |
745 .L79: |
746 05b0 8093 BC00 sts 188,r24 |
747 05b4 86E0 ldi r24,lo8(6) |
748 .L82: |
749 05b6 8093 0000 sts twi_state,r24 |
750 05ba 00C0 rjmp .L9 |
751 .L60: |
752 05bc 88E9 ldi r24,lo8(-104) |
753 05be 00C0 rjmp .L84 |
754 .L61: |
755 05c0 8091 0000 lds r24,dac_channel |
756 05c4 880F lsl r24 |
757 05c6 805F subi r24,lo8(-(16)) |
758 05c8 00C0 rjmp .L84 |
759 .L62: |
760 05ca 8091 0000 lds r24,dac_channel |
761 05ce 9927 clr r25 |
762 05d0 8130 cpi r24,1 |
763 05d2 9105 cpc r25,__zero_reg__ |
764 05d4 01F0 breq .L65 |
765 05d6 8230 cpi r24,2 |
766 05d8 9105 cpc r25,__zero_reg__ |
767 05da 04F4 brge .L67 |
768 05dc 892B or r24,r25 |
769 05de 01F0 breq .L64 |
770 05e0 00C0 rjmp .L9 |
771 .L67: |
772 05e2 0297 sbiw r24,2 |
773 05e4 01F0 breq .L66 |
774 05e6 00C0 rjmp .L9 |
775 .L64: |
776 05e8 8091 0000 lds r24,AnalogOffsetNick |
777 05ec 00C0 rjmp .L84 |
778 .L65: |
779 05ee 8091 0000 lds r24,AnalogOffsetRoll |
780 05f2 00C0 rjmp .L84 |
781 .L66: |
782 05f4 8091 0000 lds r24,AnalogOffsetGier |
783 05f8 00C0 rjmp .L84 |
784 .L68: |
785 05fa 80E8 ldi r24,lo8(-128) |
786 05fc 00C0 rjmp .L84 |
787 .L69: |
788 05fe 1092 0000 sts twi_state,__zero_reg__ |
789 0602 84E9 ldi r24,lo8(-108) |
790 0604 8093 BC00 sts 188,r24 |
791 0608 1092 0000 sts I2C_TransferActive,__zero_reg__ |
792 060c 8AE0 ldi r24,lo8(10) |
793 060e 90E0 ldi r25,hi8(10) |
794 0610 9093 0000 sts (I2CTimeout)+1,r25 |
795 0614 8093 0000 sts I2CTimeout,r24 |
796 0618 8091 0000 lds r24,dac_channel |
797 061c 8230 cpi r24,lo8(2) |
798 061e 00F4 brsh .L70 |
799 0620 8091 0000 lds r24,dac_channel |
800 0624 8F5F subi r24,lo8(-(1)) |
801 0626 8093 0000 sts dac_channel,r24 |
802 062a 82E1 ldi r24,lo8(18) |
803 062c 8093 0000 sts twi_state,r24 |
804 .L85: |
805 0630 8091 0000 lds r24,BLFlags |
806 0634 8E7F andi r24,lo8(-2) |
807 0636 8093 0000 sts BLFlags,r24 |
808 063a 85EA ldi r24,lo8(-91) |
809 .L80: |
810 063c 8093 BC00 sts 188,r24 |
811 0640 00C0 rjmp .L9 |
812 .L70: |
813 0642 1092 0000 sts dac_channel,__zero_reg__ |
814 0646 8091 0000 lds r24,BLFlags |
815 064a 8160 ori r24,lo8(1) |
816 064c 8093 0000 sts BLFlags,r24 |
817 0650 00C0 rjmp .L9 |
818 .L72: |
819 0652 1092 0000 sts twi_state,__zero_reg__ |
820 0656 84E9 ldi r24,lo8(-108) |
821 0658 8093 BC00 sts 188,r24 |
822 065c 8091 0000 lds r24,BLFlags |
823 0660 8160 ori r24,lo8(1) |
824 0662 8093 0000 sts BLFlags,r24 |
825 0666 8AE0 ldi r24,lo8(10) |
826 0668 90E0 ldi r25,hi8(10) |
827 066a 9093 0000 sts (I2CTimeout)+1,r25 |
828 066e 8093 0000 sts I2CTimeout,r24 |
829 0672 1092 0000 sts motor_write,__zero_reg__ |
830 0676 1092 0000 sts motor_read,__zero_reg__ |
831 .L81: |
832 067a 1092 0000 sts I2C_TransferActive,__zero_reg__ |
833 .L9: |
834 /* epilogue: frame size=0 */ |
835 067e FF91 pop r31 |
836 0680 EF91 pop r30 |
837 0682 9F91 pop r25 |
838 0684 8F91 pop r24 |
839 0686 5F91 pop r21 |
840 0688 4F91 pop r20 |
841 068a 3F91 pop r19 |
842 068c 2F91 pop r18 |
843 068e 0F90 pop __tmp_reg__ |
844 0690 0FBE out __SREG__,__tmp_reg__ |
845 0692 0F90 pop __tmp_reg__ |
846 0694 1F90 pop __zero_reg__ |
847 0696 1895 reti |
848 /* epilogue end (size=13) */ |
849 /* function __vector_26 size 796 (770) */ |
851 .global I2C_WriteBLConfig |
853 I2C_WriteBLConfig: |
854 /* prologue: frame size=0 */ |
855 0698 1F93 push r17 |
856 069a CF93 push r28 |
857 069c DF93 push r29 |
858 /* prologue end (size=3) */ |
859 069e 182F mov r17,r24 |
860 06a0 8091 0000 lds r24,MotorenEin |
861 06a4 8823 tst r24 |
862 06a6 01F4 brne .L88 |
863 06a8 8091 0000 lds r24,PC_MotortestActive |
864 06ac 8823 tst r24 |
865 06ae 01F0 breq .L87 |
866 .L88: |
867 06b0 81E0 ldi r24,lo8(1) |
868 06b2 90E0 ldi r25,hi8(1) |
869 06b4 00C0 rjmp .L86 |
870 .L87: |
871 06b6 1D30 cpi r17,lo8(13) |
872 06b8 00F0 brlo .+2 |
873 06ba 00C0 rjmp .L115 |
874 06bc 1123 tst r17 |
875 06be 01F0 breq .L90 |
876 06c0 E12F mov r30,r17 |
877 06c2 FF27 clr r31 |
878 06c4 23E0 ldi r18,3 |
879 06c6 EE0F 1: lsl r30 |
880 06c8 FF1F rol r31 |
881 06ca 2A95 dec r18 |
882 06cc 01F4 brne 1b |
883 06ce E050 subi r30,lo8(-(Motor)) |
884 06d0 F040 sbci r31,hi8(-(Motor)) |
885 06d2 3597 sbiw r30,5 |
886 06d4 8081 ld r24,Z |
887 06d6 3596 adiw r30,5 |
888 06d8 8823 tst r24 |
889 06da 04F0 brlt .+2 |
890 06dc 00C0 rjmp .L115 |
891 06de 3897 sbiw r30,8 |
892 06e0 8081 ld r24,Z |
893 06e2 80FD sbrc r24,0 |
894 06e4 00C0 rjmp .L90 |
895 06e6 83E0 ldi r24,lo8(3) |
896 06e8 90E0 ldi r25,hi8(3) |
897 06ea 00C0 rjmp .L86 |
898 .L90: |
899 06ec 8091 0000 lds r24,BLConfig |
900 06f0 8230 cpi r24,lo8(2) |
901 06f2 01F0 breq .L93 |
902 06f4 84E0 ldi r24,lo8(4) |
903 06f6 90E0 ldi r25,hi8(4) |
904 06f8 00C0 rjmp .L86 |
905 .L93: |
906 06fa 67E0 ldi r22,lo8(7) |
907 06fc 70E0 ldi r23,hi8(7) |
908 06fe 80E0 ldi r24,lo8(BLConfig) |
909 0700 90E0 ldi r25,hi8(BLConfig) |
910 0702 0E94 0000 call RAM_Checksum |
911 0706 9091 0000 lds r25,BLConfig+7 |
912 070a 8917 cp r24,r25 |
913 070c 01F0 breq .L94 |
914 070e 85E0 ldi r24,lo8(5) |
915 0710 90E0 ldi r25,hi8(5) |
916 0712 00C0 rjmp .L86 |
917 .L94: |
918 0714 80ED ldi r24,lo8(2000) |
919 0716 97E0 ldi r25,hi8(2000) |
920 0718 0E94 0000 call SetDelay |
921 071c EC01 movw r28,r24 |
922 .L95: |
923 071e 8091 0000 lds r24,BLFlags |
924 0722 80FD sbrc r24,0 |
925 0724 00C0 rjmp .L96 |
926 0726 CE01 movw r24,r28 |
927 0728 0E94 0000 call CheckDelay |
928 072c 8823 tst r24 |
929 072e 01F0 breq .L95 |
930 .L96: |
931 0730 1123 tst r17 |
932 0732 01F4 brne .L98 |
933 0734 8FEF ldi r24,lo8(255) |
934 0736 90E0 ldi r25,hi8(255) |
935 0738 00C0 rjmp .L114 |
936 .L98: |
937 073a 212F mov r18,r17 |
938 073c 3327 clr r19 |
939 073e 2150 subi r18,lo8(-(-1)) |
940 0740 3040 sbci r19,hi8(-(-1)) |
941 0742 81E0 ldi r24,lo8(1) |
942 0744 90E0 ldi r25,hi8(1) |
943 0746 00C0 rjmp 2f |
944 0748 880F 1: lsl r24 |
945 074a 991F rol r25 |
946 074c 2A95 2: dec r18 |
947 074e 02F4 brpl 1b |
948 .L114: |
949 0750 9093 0000 sts (BLConfig_WriteMask)+1,r25 |
950 0754 8093 0000 sts BLConfig_WriteMask,r24 |
951 0758 A1E0 ldi r26,lo8(1) |
952 075a B0E0 ldi r27,hi8(1) |
953 075c E0E0 ldi r30,lo8(Motor) |
954 075e F0E0 ldi r31,hi8(Motor) |
955 0760 40E0 ldi r20,lo8(0) |
956 0762 50E0 ldi r21,hi8(0) |
957 0764 6BE0 ldi r22,lo8(11) |
958 .L104: |
959 0766 CD01 movw r24,r26 |
960 0768 042E mov r0,r20 |
961 076a 00C0 rjmp 2f |
962 076c 880F 1: lsl r24 |
963 076e 991F rol r25 |
964 0770 0A94 2: dec r0 |
965 0772 02F4 brpl 1b |
966 0774 2091 0000 lds r18,BLConfig_WriteMask |
967 0778 3091 0000 lds r19,(BLConfig_WriteMask)+1 |
968 077c 8223 and r24,r18 |
969 077e 9323 and r25,r19 |
970 0780 892B or r24,r25 |
971 0782 01F0 breq .L102 |
972 0784 1182 std Z+1,__zero_reg__ |
973 0786 1282 std Z+2,__zero_reg__ |
974 .L102: |
975 0788 6150 subi r22,lo8(-(-1)) |
976 078a 4F5F subi r20,lo8(-(1)) |
977 078c 5F4F sbci r21,hi8(-(1)) |
978 078e 3896 adiw r30,8 |
979 0790 67FF sbrs r22,7 |
980 0792 00C0 rjmp .L104 |
981 0794 1092 0000 sts motor_write,__zero_reg__ |
982 .L105: |
983 0798 1092 0000 sts twi_state,__zero_reg__ |
984 079c 8091 0000 lds r24,BLFlags |
985 07a0 8E7F andi r24,lo8(-2) |
986 07a2 8093 0000 sts BLFlags,r24 |
987 07a6 85EA ldi r24,lo8(-91) |
988 07a8 8093 BC00 sts 188,r24 |
989 .L108: |
990 07ac 8091 0000 lds r24,BLFlags |
991 07b0 80FD sbrc r24,0 |
992 07b2 00C0 rjmp .L109 |
993 07b4 CE01 movw r24,r28 |
994 07b6 0E94 0000 call CheckDelay |
995 07ba 8823 tst r24 |
996 07bc 01F0 breq .L108 |
997 .L109: |
998 07be 8091 0000 lds r24,BLConfig_WriteMask |
999 07c2 9091 0000 lds r25,(BLConfig_WriteMask)+1 |
1000 07c6 892B or r24,r25 |
1001 07c8 01F0 breq .L106 |
1002 07ca CE01 movw r24,r28 |
1003 07cc 0E94 0000 call CheckDelay |
1004 07d0 8823 tst r24 |
1005 07d2 01F0 breq .L105 |
1006 .L106: |
1007 07d4 8091 0000 lds r24,BLConfig_WriteMask |
1008 07d8 9091 0000 lds r25,(BLConfig_WriteMask)+1 |
1009 07dc 0097 sbiw r24,0 |
1010 07de 01F0 breq .L86 |
1011 .L115: |
1012 07e0 82E0 ldi r24,lo8(2) |
1013 07e2 90E0 ldi r25,hi8(2) |
1014 .L86: |
1015 /* epilogue: frame size=0 */ |
1016 07e4 DF91 pop r29 |
1017 07e6 CF91 pop r28 |
1018 07e8 1F91 pop r17 |
1019 07ea 0895 ret |
1020 /* epilogue end (size=4) */ |
1021 /* function I2C_WriteBLConfig size 172 (165) */ |
1023 .global I2C_ReadBLConfig |
1025 I2C_ReadBLConfig: |
1026 /* prologue: frame size=0 */ |
1027 07ec 0F93 push r16 |
1028 07ee 1F93 push r17 |
1029 07f0 CF93 push r28 |
1030 07f2 DF93 push r29 |
1031 /* prologue end (size=4) */ |
1032 07f4 982F mov r25,r24 |
1033 07f6 8091 0000 lds r24,MotorenEin |
1034 07fa 8823 tst r24 |
1035 07fc 01F4 brne .L118 |
1036 07fe 8091 0000 lds r24,PC_MotortestActive |
1037 0802 8823 tst r24 |
1038 0804 01F0 breq .L117 |
1039 .L118: |
1040 0806 81E0 ldi r24,lo8(1) |
1041 0808 90E0 ldi r25,hi8(1) |
1042 080a 00C0 rjmp .L116 |
1043 .L117: |
1044 080c 9D30 cpi r25,lo8(13) |
1045 080e 00F4 brsh .L141 |
1046 0810 9923 tst r25 |
1047 0812 01F4 brne .L120 |
1048 0814 86E0 ldi r24,lo8(6) |
1049 0816 90E0 ldi r25,hi8(6) |
1050 0818 00C0 rjmp .L116 |
1051 .L120: |
1052 081a C92F mov r28,r25 |
1053 081c DD27 clr r29 |
1054 081e FE01 movw r30,r28 |
1055 0820 33E0 ldi r19,3 |
1056 0822 EE0F 1: lsl r30 |
1057 0824 FF1F rol r31 |
1058 0826 3A95 dec r19 |
1059 0828 01F4 brne 1b |
1060 082a E050 subi r30,lo8(-(Motor)) |
1061 082c F040 sbci r31,hi8(-(Motor)) |
1062 082e 3597 sbiw r30,5 |
1063 0830 8081 ld r24,Z |
1064 0832 3596 adiw r30,5 |
1065 0834 87FD sbrc r24,7 |
1066 0836 00C0 rjmp .L121 |
1067 .L141: |
1068 0838 82E0 ldi r24,lo8(2) |
1069 083a 90E0 ldi r25,hi8(2) |
1070 083c 00C0 rjmp .L116 |
1071 .L121: |
1072 083e 3897 sbiw r30,8 |
1073 0840 8081 ld r24,Z |
1074 0842 80FD sbrc r24,0 |
1075 0844 00C0 rjmp .L122 |
1076 0846 83E0 ldi r24,lo8(3) |
1077 0848 90E0 ldi r25,hi8(3) |
1078 084a 00C0 rjmp .L116 |
1079 .L122: |
1080 084c 80ED ldi r24,lo8(2000) |
1081 084e 97E0 ldi r25,hi8(2000) |
1082 0850 0E94 0000 call SetDelay |
1083 0854 8C01 movw r16,r24 |
1084 .L123: |
1085 0856 8091 0000 lds r24,BLFlags |
1086 085a 80FD sbrc r24,0 |
1087 085c 00C0 rjmp .L124 |
1088 085e C801 movw r24,r16 |
1089 0860 0E94 0000 call CheckDelay |
1090 0864 8823 tst r24 |
1091 0866 01F0 breq .L123 |
1092 .L124: |
1093 0868 2197 sbiw r28,1 |
1094 086a 21E0 ldi r18,lo8(1) |
1095 086c 30E0 ldi r19,hi8(1) |
1096 086e C901 movw r24,r18 |
1097 0870 00C0 rjmp 2f |
1098 0872 880F 1: lsl r24 |
1099 0874 991F rol r25 |
1100 0876 CA95 2: dec r28 |
1101 0878 02F4 brpl 1b |
1102 087a 9093 0000 sts (BLConfig_ReadMask)+1,r25 |
1103 087e 8093 0000 sts BLConfig_ReadMask,r24 |
1104 0882 D901 movw r26,r18 |
1105 0884 E0E0 ldi r30,lo8(Motor) |
1106 0886 F0E0 ldi r31,hi8(Motor) |
1107 0888 40E0 ldi r20,lo8(0) |
1108 088a 50E0 ldi r21,hi8(0) |
1109 088c 6BE0 ldi r22,lo8(11) |
1110 .L130: |
1111 088e CD01 movw r24,r26 |
1112 0890 042E mov r0,r20 |
1113 0892 00C0 rjmp 2f |
1114 0894 880F 1: lsl r24 |
1115 0896 991F rol r25 |
1116 0898 0A94 2: dec r0 |
1117 089a 02F4 brpl 1b |
1118 089c 2091 0000 lds r18,BLConfig_ReadMask |
1119 08a0 3091 0000 lds r19,(BLConfig_ReadMask)+1 |
1120 08a4 8223 and r24,r18 |
1121 08a6 9323 and r25,r19 |
1122 08a8 892B or r24,r25 |
1123 08aa 01F0 breq .L128 |
1124 08ac 1182 std Z+1,__zero_reg__ |
1125 08ae 1282 std Z+2,__zero_reg__ |
1126 .L128: |
1127 08b0 6150 subi r22,lo8(-(-1)) |
1128 08b2 4F5F subi r20,lo8(-(1)) |
1129 08b4 5F4F sbci r21,hi8(-(1)) |
1130 08b6 3896 adiw r30,8 |
1131 08b8 67FF sbrs r22,7 |
1132 08ba 00C0 rjmp .L130 |
1133 08bc 1092 0000 sts motor_read,__zero_reg__ |
1134 08c0 1092 0000 sts BLConfig,__zero_reg__ |
1135 08c4 1092 0000 sts BLConfig+7,__zero_reg__ |
1136 .L131: |
1137 08c8 1092 0000 sts twi_state,__zero_reg__ |
1138 08cc 8091 0000 lds r24,BLFlags |
1139 08d0 8E7F andi r24,lo8(-2) |
1140 08d2 8093 0000 sts BLFlags,r24 |
1141 08d6 85EA ldi r24,lo8(-91) |
1142 08d8 8093 BC00 sts 188,r24 |
1143 .L134: |
1144 08dc 8091 0000 lds r24,BLFlags |
1145 08e0 80FD sbrc r24,0 |
1146 08e2 00C0 rjmp .L135 |
1147 08e4 C801 movw r24,r16 |
1148 08e6 0E94 0000 call CheckDelay |
1149 08ea 8823 tst r24 |
1150 08ec 01F0 breq .L134 |
1151 .L135: |
1152 08ee 8091 0000 lds r24,BLConfig_ReadMask |
1153 08f2 9091 0000 lds r25,(BLConfig_ReadMask)+1 |
1154 08f6 892B or r24,r25 |
1155 08f8 01F0 breq .L132 |
1156 08fa C801 movw r24,r16 |
1157 08fc 0E94 0000 call CheckDelay |
1158 0900 8823 tst r24 |
1159 0902 01F0 breq .L131 |
1160 .L132: |
1161 0904 8091 0000 lds r24,BLConfig |
1162 0908 8230 cpi r24,lo8(2) |
1163 090a 01F0 breq .L137 |
1164 090c 84E0 ldi r24,lo8(4) |
1165 090e 90E0 ldi r25,hi8(4) |
1166 0910 00C0 rjmp .L116 |
1167 .L137: |
1168 0912 67E0 ldi r22,lo8(7) |
1169 0914 70E0 ldi r23,hi8(7) |
1170 0916 80E0 ldi r24,lo8(BLConfig) |
1171 0918 90E0 ldi r25,hi8(BLConfig) |
1172 091a 0E94 0000 call RAM_Checksum |
1173 091e 9091 0000 lds r25,BLConfig+7 |
1174 0922 8917 cp r24,r25 |
1175 0924 01F0 breq .L138 |
1176 0926 85E0 ldi r24,lo8(5) |
1177 0928 90E0 ldi r25,hi8(5) |
1178 092a 00C0 rjmp .L116 |
1179 .L138: |
1180 092c 80E0 ldi r24,lo8(0) |
1181 092e 90E0 ldi r25,hi8(0) |
1182 .L116: |
1183 /* epilogue: frame size=0 */ |
1184 0930 DF91 pop r29 |
1185 0932 CF91 pop r28 |
1186 0934 1F91 pop r17 |
1187 0936 0F91 pop r16 |
1188 0938 0895 ret |
1189 /* epilogue end (size=5) */ |
1190 /* function I2C_ReadBLConfig size 168 (159) */ |
1192 .comm Motor,96,1 |
1193 .comm BLConfig,8,1 |
1194 /* File "twimaster.c": code 1214 = 0x04be (1170), prologues 20, epilogues 24 */ |
DEFINED SYMBOLS |
*ABS*:00000000 twimaster.c |
C:\Temp/ccpDF3o1.s:3 *ABS*:0000003f __SREG__ |
C:\Temp/ccpDF3o1.s:4 *ABS*:0000003e __SP_H__ |
C:\Temp/ccpDF3o1.s:5 *ABS*:0000003d __SP_L__ |
C:\Temp/ccpDF3o1.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Temp/ccpDF3o1.s:7 *ABS*:00000001 __zero_reg__ |
C:\Temp/ccpDF3o1.s:15 .bss:00000000 BLConfig_ReadMask |
C:\Temp/ccpDF3o1.s:21 .bss:00000002 BLConfig_WriteMask |
C:\Temp/ccpDF3o1.s:27 .bss:00000004 BLFlags |
C:\Temp/ccpDF3o1.s:33 .bss:00000005 MissingMotor |
C:\Temp/ccpDF3o1.s:39 .data:00000000 I2CTimeout |
C:\Temp/ccpDF3o1.s:46 .bss:00000006 I2C_TransferActive |
C:\Temp/ccpDF3o1.s:52 .bss:00000007 motor_read |
C:\Temp/ccpDF3o1.s:58 .bss:00000008 motor_write |
C:\Temp/ccpDF3o1.s:64 .bss:00000009 dac_channel |
C:\Temp/ccpDF3o1.s:70 .bss:0000000a twi_state |
C:\Temp/ccpDF3o1.s:75 .text:00000000 I2C_Init |
*COM*:00000060 Motor |
C:\Temp/ccpDF3o1.s:126 .text:00000054 I2C_Reset |
.bss:0000000b missing_motor.0 |
C:\Temp/ccpDF3o1.s:153 .bss:0000000c motor_read_temperature.1 |
C:\Temp/ccpDF3o1.s:154 .bss:0000000d pBuff.2 |
C:\Temp/ccpDF3o1.s:155 .bss:0000000f BuffLen.3 |
C:\Temp/ccpDF3o1.s:159 .text:00000098 __vector_26 |
*COM*:00000008 BLConfig |
C:\Temp/ccpDF3o1.s:853 .text:00000698 I2C_WriteBLConfig |
C:\Temp/ccpDF3o1.s:1025 .text:000007ec I2C_ReadBLConfig |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
__tablejump2__ |
Mixer |
RequiredMotors |
FC_StatusFlags |
AnalogOffsetNick |
AnalogOffsetRoll |
AnalogOffsetGier |
MotorenEin |
PC_MotortestActive |
RAM_Checksum |
SetDelay |
CheckDelay |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/uart.c |
---|
0,0 → 1,795 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software Nutzungsbedingungen (english version: see below) |
// + der Fa. HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland - nachfolgend Lizenzgeber genannt - |
// + Der Lizenzgeber räumt dem Kunden ein nicht-ausschließliches, zeitlich und räumlich* unbeschränktes Recht ein, die im den |
// + Mikrocontroller verwendete Firmware für die Hardware Flight-Ctrl, Navi-Ctrl, BL-Ctrl, MK3Mag & PC-Programm MikroKopter-Tool |
// + - nachfolgend Software genannt - nur für private Zwecke zu nutzen. |
// + Der Einsatz dieser Software ist nur auf oder mit Produkten des Lizenzgebers zulässig. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die vom Lizenzgeber gelieferte Software ist urheberrechtlich geschützt. Alle Rechte an der Software sowie an sonstigen im |
// + Rahmen der Vertragsanbahnung und Vertragsdurchführung überlassenen Unterlagen stehen im Verhältnis der Vertragspartner ausschließlich dem Lizenzgeber zu. |
// + Die in der Software enthaltenen Copyright-Vermerke, Markenzeichen, andere Rechtsvorbehalte, Seriennummern sowie |
// + sonstige der Programmidentifikation dienenden Merkmale dürfen vom Kunden nicht verändert oder unkenntlich gemacht werden. |
// + Der Kunde trifft angemessene Vorkehrungen für den sicheren Einsatz der Software. Er wird die Software gründlich auf deren |
// + Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Die Haftung des Lizenzgebers wird - soweit gesetzlich zulässig - begrenzt in Höhe des typischen und vorhersehbaren |
// + Schadens. Die gesetzliche Haftung bei Personenschäden und nach dem Produkthaftungsgesetz bleibt unberührt. Dem Lizenzgeber steht jedoch der Einwand |
// + des Mitverschuldens offen. |
// + Der Kunde trifft angemessene Vorkehrungen für den Fall, dass die Software ganz oder teilweise nicht ordnungsgemäß arbeitet. |
// + Er wird die Software gründlich auf deren Verwendbarkeit zu dem von ihm beabsichtigten Zweck testen, bevor er diese operativ einsetzt. |
// + Der Kunde wird er seine Daten vor Einsatz der Software nach dem Stand der Technik sichern. |
// + Der Kunde ist darüber unterrichtet, dass der Lizenzgeber seine Daten im zur Vertragsdurchführung erforderlichen Umfang |
// + und auf Grundlage der Datenschutzvorschriften erhebt, speichert, verarbeitet und, sofern notwendig, an Dritte übermittelt. |
// + *) Die räumliche Nutzung bezieht sich nur auf den Einsatzort, nicht auf die Reichweite der programmierten Software. |
// + #### ENDE DER NUTZUNGSBEDINGUNGEN ####' |
// + Hinweis: Informationen über erweiterte Nutzungsrechte (wie z.B. Nutzung für nicht-private Zwecke) sind auf Anfrage per Email an info(@)hisystems.de verfügbar. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Software LICENSING TERMS |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + of HiSystems GmbH, Flachsmeerstrasse 2, 26802 Moormerland, Germany - the Licensor - |
// + The Licensor grants the customer a non-exclusive license to use the microcontroller firmware of the Flight-Ctrl, Navi-Ctrl, BL-Ctrl, and MK3Mag hardware |
// + (the Software) exclusively for private purposes. The License is unrestricted with respect to time and territory*. |
// + The Software may only be used with the Licensor's products. |
// + The Software provided by the Licensor is protected by copyright. With respect to the relationship between the parties to this |
// + agreement, all rights pertaining to the Software and other documents provided during the preparation and execution of this |
// + agreement shall be the property of the Licensor. |
// + The information contained in the Software copyright notices, trademarks, other legal reservations, serial numbers and other |
// + features that can be used to identify the program may not be altered or defaced by the customer. |
// + The customer shall be responsible for taking reasonable precautions |
// + for the safe use of the Software. The customer shall test the Software thoroughly regarding its suitability for the |
// + intended purpose before implementing it for actual operation. The Licensor's liability shall be limited to the extent of typical and |
// + foreseeable damage to the extent permitted by law, notwithstanding statutory liability for bodily injury and product |
// + liability. However, the Licensor shall be entitled to the defense of contributory negligence. |
// + The customer will take adequate precautions in the case, that the software is not working properly. The customer will test |
// + the software for his purpose before any operational usage. The customer will backup his data before using the software. |
// + The customer understands that the Licensor collects, stores and processes, and, where required, forwards, customer data |
// + to third parties to the extent necessary for executing the agreement, subject to applicable data protection and privacy regulations. |
// + *) The territory aspect only refers to the place where the Software is used, not its programmed range. |
// + #### END OF LICENSING TERMS #### |
// + Note: For information on license extensions (e.g. commercial use), please contact us at info(@)hisystems.de. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include <stdarg.h> |
#include <string.h> |
#include <avr/pgmspace.h> |
#include "main.h" |
#include "uart.h" |
#include "libfc.h" |
#include "eeprom.h" |
#define FC_ADDRESS 1 |
#define NC_ADDRESS 2 |
#define MK3MAG_ADDRESS 3 |
#define BL_CTRL_ADDRESS 5 |
#define ABO_TIMEOUT 4000 // disable abo after 4 seconds |
#define MAX_SENDE_BUFF 175 |
#define MAX_EMPFANGS_BUFF 175 |
#define BLPARAM_REVISION 1 |
#define MASK_SET_PWM_SCALING 0x01 |
#define MASK_SET_CURRENT_LIMIT 0x02 |
#define MASK_SET_TEMP_LIMIT 0x04 |
#define MASK_SET_CURRENT_SCALING 0x08 |
#define MASK_SET_BITCONFIG 0x10 |
#define MASK_RESET_CAPCOUNTER 0x20 |
#define MASK_SET_DEFAULT_PARAMS 0x40 |
#define MASK_SET_SAVE_EEPROM 0x80 |
unsigned char GetExternalControl = 0,DebugDisplayAnforderung1 = 0, DebugDisplayAnforderung = 0,DebugDataAnforderung = 0,GetVersionAnforderung = 0, GetPPMChannelAnforderung = 0; |
unsigned char DisplayLine = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char NeueKoordinateEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned volatile char CntCrcError = 0; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
unsigned volatile char TxdBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned char *pRxData = 0; |
unsigned char RxDataLen = 0; |
unsigned volatile char PC_DebugTimeout = 0; |
unsigned volatile char PC_MotortestActive = 0; |
unsigned char DebugTextAnforderung = 255; |
unsigned char PcZugriff = 100; |
unsigned char MotorTest[16]; |
unsigned char MeineSlaveAdresse = 1; // Flight-Ctrl |
unsigned char ConfirmFrame; |
struct str_DebugOut DebugOut; |
struct str_ExternControl ExternControl; |
struct str_VersionInfo VersionInfo; |
struct str_WinkelOut WinkelOut; |
struct str_Data3D Data3D; |
int Display_Timer, Debug_Timer,Kompass_Timer,Timer3D; |
unsigned int DebugDataIntervall = 0, Intervall3D = 0, Display_Interval = 0; |
unsigned int AboTimeOut = 0; |
unsigned volatile char ReceiverUpdateModeActive = 0; // 1 = Update 2 = JetiBox-Simulation |
const unsigned char ANALOG_TEXT[32][16] PROGMEM = |
{ |
//1234567890123456 |
"AngleNick ", //0 |
"AngleRoll ", |
"AccNick ", |
"AccRoll ", |
"YawGyro ", |
"Height Value ", //5 |
"AccZ ", |
"Gas ", |
"Compass Value ", |
"Voltage [0.1V] ", |
"Receiver Level ", //10 |
"Gyro Compass ", |
"Motor 1 ", |
"Motor 2 ", |
"Motor 3 ", |
"Motor 4 ", //15 |
"16 ", |
"17 ", |
"18 ", |
"19 ", |
"Servo ", //20 |
"Hovergas ", |
"Current [0.1A] ", |
"Capacity [mAh] ", |
"Height Setpoint ", |
"25 ", //25 |
"26 ", //"26 CPU OverLoad ", |
"Compass Setpoint", |
"I2C-Error ", |
"BL Limit ", |
"GPS_Nick ", //30 |
"GPS_Roll " |
}; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
ISR(USART0_TX_vect) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = TxdBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
UDR0 = tmp_tx; |
} |
else ptr = 0; |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
ISR(USART0_RX_vect) |
{ |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
if (ReceiverUpdateModeActive == 1) { UDR1 = UDR0; return; } // 1 = Update |
if (ReceiverUpdateModeActive == 2) { RxdBuffer[0] = UDR0; return; } // 2 = JetiBox-Simulation |
SioTmp = UDR0; |
if(buf_ptr >= MAX_SENDE_BUFF) UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;}; |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
{ |
NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr + 1; |
RxdBuffer[buf_ptr] = '\r'; |
if(RxdBuffer[2] == 'R') |
{ |
LcdClear(); |
wdt_enable(WDTO_250MS); // Reset-Commando |
ServoActive = 0; |
} |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
} |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += TxdBuffer[i]; |
} |
tmpCRC %= 4096; |
TxdBuffer[i++] = '=' + tmpCRC / 64; |
TxdBuffer[i++] = '=' + tmpCRC % 64; |
TxdBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR0 = TxdBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char address, unsigned char BufferAnzahl, ...) //unsigned char *snd, unsigned char len) |
{ |
va_list ap; |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
unsigned char *snd = 0; |
int len = 0; |
TxdBuffer[pt++] = '#'; // Startzeichen |
TxdBuffer[pt++] = 'a' + address; // Adresse (a=0; b=1,...) |
TxdBuffer[pt++] = cmd; // Commando |
va_start(ap, BufferAnzahl); |
if(BufferAnzahl) |
{ |
snd = va_arg(ap, unsigned char*); |
len = va_arg(ap, int); |
ptr = 0; |
BufferAnzahl--; |
} |
while(len) |
{ |
if(len) |
{ |
a = snd[ptr++]; |
len--; |
if((!len) && BufferAnzahl) |
{ |
snd = va_arg(ap, unsigned char*); |
len = va_arg(ap, int); |
ptr = 0; |
BufferAnzahl--; |
} |
} |
else a = 0; |
if(len) |
{ |
b = snd[ptr++]; |
len--; |
if((!len) && BufferAnzahl) |
{ |
snd = va_arg(ap, unsigned char*); |
len = va_arg(ap, int); |
ptr = 0; |
BufferAnzahl--; |
} |
} |
else b = 0; |
if(len) |
{ |
c = snd[ptr++]; |
len--; |
if((!len) && BufferAnzahl) |
{ |
snd = va_arg(ap, unsigned char*); |
len = va_arg(ap, int); |
ptr = 0; |
BufferAnzahl--; |
} |
} |
else c = 0; |
TxdBuffer[pt++] = '=' + (a >> 2); |
TxdBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
TxdBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
TxdBuffer[pt++] = '=' + ( c & 0x3f); |
} |
va_end(ap); |
AddCRC(pt); |
} |
// -------------------------------------------------------------------------- |
void Decode64(void) // die daten werden im rx buffer dekodiert, das geht nur, weil aus 4 byte immer 3 gemacht werden. |
{ |
unsigned char a,b,c,d; |
unsigned char x,y,z; |
unsigned char ptrIn = 3; // start at begin of data block |
unsigned char ptrOut = 3; |
unsigned char len = AnzahlEmpfangsBytes - 6; // von der Gesamtbytezahl eines Frames gehen 3 Bytes des Headers ('#',Addr, Cmd) und 3 Bytes des Footers (CRC1, CRC2, '\r') ab. |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) RxdBuffer[ptrOut++] = x; else break; |
if(len--) RxdBuffer[ptrOut++] = y; else break; |
if(len--) RxdBuffer[ptrOut++] = z; else break; |
} |
pRxData = (unsigned char*)&RxdBuffer[3]; // decodierte Daten beginnen beim 4. Byte |
RxDataLen = ptrOut - 3; // wie viele Bytes wurden dekodiert? |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
if(!NeuerDatensatzEmpfangen) return; |
unsigned char tempchar1, tempchar2; |
Decode64(); // dekodiere datenblock im Empfangsbuffer |
switch(RxdBuffer[1]-'a') // check for Slave Address |
{ |
case FC_ADDRESS: // FC special commands |
switch(RxdBuffer[2]) |
{ |
case 'K':// Kompasswert |
memcpy((unsigned char *)&KompassValue , (unsigned char *)pRxData, sizeof(KompassValue)); |
// KompassRichtung = ((540 + KompassValue - KompassSollWert) % 360) - 180; |
break; |
case 't':// Motortest |
if(AnzahlEmpfangsBytes > 20) memcpy(&MotorTest[0], (unsigned char *)pRxData, sizeof(MotorTest)); |
else memcpy(&MotorTest[0], (unsigned char *)pRxData, 4); |
PC_MotortestActive = 240; |
//while(!UebertragungAbgeschlossen); |
//SendOutData('T', MeineSlaveAdresse, 0); |
PcZugriff = 255; |
break; |
case 'n':// "Get Mixer |
while(!UebertragungAbgeschlossen); |
SendOutData('N', FC_ADDRESS, 1, (unsigned char *) &Mixer, sizeof(Mixer) - 1); |
Debug("Mixer lesen"); |
break; |
case 'm':// "Write Mixer |
if(pRxData[0] == EEMIXER_REVISION) |
{ |
memcpy(&Mixer, (unsigned char *)pRxData, sizeof(Mixer) - 1); |
MixerTable_WriteToEEProm(); |
tempchar1 = 1; |
VersionInfo.HardwareError[1] &= ~FC_ERROR1_MIXER; |
} |
else |
{ |
tempchar1 = 0; |
} |
while(!UebertragungAbgeschlossen); |
SendOutData('M', FC_ADDRESS, 1, &tempchar1, sizeof(tempchar1)); |
break; |
case 'p': // get PPM Channels |
GetPPMChannelAnforderung = 1; |
PcZugriff = 255; |
break; |
case 'q':// "Get"-Anforderung für Settings |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
if((10 <= pRxData[0]) && (pRxData[0] < 20)) |
{ |
tempchar1 = pRxData[0] - 10; |
if(tempchar1< 1) tempchar1 = 1; // limit to 1 |
else if(tempchar1 > 5) tempchar1 = 5; // limit to 5 |
SetDefaultParameter(tempchar1, 1); |
} |
else if((20 <= pRxData[0]) && (pRxData[0] < 30)) |
{ |
tempchar1 = pRxData[0] - 20; |
if(tempchar1< 1) tempchar1 = 1; // limit to 1 |
else if(tempchar1 > 5) tempchar1 = 5; // limit to 5 |
SetDefaultParameter(tempchar1, 0); |
} |
else |
{ |
tempchar1 = pRxData[0]; |
if(tempchar1 == 0xFF) |
{ |
tempchar1 = GetActiveParamSet(); |
} |
if(tempchar1< 1) tempchar1 = 1; // limit to 1 |
else if(tempchar1 > 5) tempchar1 = 5; // limit to 5 |
// load requested parameter set |
ParamSet_ReadFromEEProm(tempchar1); |
} |
while(!UebertragungAbgeschlossen); |
SendOutData('Q', FC_ADDRESS, 2, &tempchar1, sizeof(tempchar1), (unsigned char *) &EE_Parameter, sizeof(EE_Parameter) - 1); |
Debug("Lese Setting %d", tempchar1); |
break; |
case 's': // Parametersatz speichern |
if((1 <= pRxData[0]) && (pRxData[0] <= 5) && (pRxData[1] == EEPARAM_REVISION) && MotorenEin == 0) // check for setting to be in range |
{ |
memcpy(&EE_Parameter, (uint8_t*)&pRxData[1], sizeof(EE_Parameter) - 1); |
ParamSet_WriteToEEProm(pRxData[0]); |
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L; |
tempchar1 = GetActiveParamSet(); |
} |
else |
{ |
tempchar1 = 0; // mark in response an invlid setting |
} |
while(!UebertragungAbgeschlossen); |
SendOutData('S', FC_ADDRESS, 1, &tempchar1, sizeof(tempchar1)); |
if(!MotorenEin) Piep(tempchar1,110); |
LipoDetection(0); |
LIBFC_ReceiverInit(EE_Parameter.Receiver); |
break; |
case 'f': // auf anderen Parametersatz umschalten |
if((1 <= pRxData[0]) && (pRxData[0] <= 5)) ParamSet_ReadFromEEProm(pRxData[0]); |
tempchar1 = GetActiveParamSet(); |
while(!UebertragungAbgeschlossen); |
SendOutData('F', FC_ADDRESS, 1, &tempchar1, sizeof(tempchar1)); |
if(!MotorenEin) Piep(tempchar1,110); |
LipoDetection(0); |
LIBFC_ReceiverInit(EE_Parameter.Receiver); |
break; |
case 'y':// serial Potis |
PPM_in[13] = (signed char) pRxData[0]; PPM_in[14] = (signed char) pRxData[1]; PPM_in[15] = (signed char) pRxData[2]; PPM_in[16] = (signed char) pRxData[3]; |
PPM_in[17] = (signed char) pRxData[4]; PPM_in[18] = (signed char) pRxData[5]; PPM_in[19] = (signed char) pRxData[6]; PPM_in[20] = (signed char) pRxData[7]; |
PPM_in[21] = (signed char) pRxData[8]; PPM_in[22] = (signed char) pRxData[9]; PPM_in[23] = (signed char) pRxData[10]; PPM_in[24] = (signed char) pRxData[11]; |
break; |
case 'u': // request BL parameter |
Debug("Reading BL %d", pRxData[0]); |
// try to read BL configuration |
tempchar2 = I2C_ReadBLConfig(pRxData[0]); |
if(tempchar2 == BLCONFIG_SUCCESS) tempchar1 = 1; |
else tempchar1 = 0; |
while(!UebertragungAbgeschlossen); // wait for previous frame to be sent |
SendOutData('U', FC_ADDRESS, 4, &tempchar1, sizeof(tempchar1), &tempchar2, sizeof(tempchar2), &pRxData[0], 1, &BLConfig, sizeof(BLConfig_t)); |
break; |
case 'w': // write BL parameter |
Debug("Writing BL %d", pRxData[0]); |
if(RxDataLen >= 1+sizeof(BLConfig_t)) |
{ |
memcpy(&BLConfig, (uint8_t*)(&pRxData[1]), sizeof(BLConfig_t)); |
tempchar2 = I2C_WriteBLConfig(pRxData[0]); |
if(tempchar2 == BLCONFIG_SUCCESS) tempchar1 = 1; |
else tempchar1 = 0; // indicate error |
while(!UebertragungAbgeschlossen); // wait for previous frame to be sent |
SendOutData('W', FC_ADDRESS,2, &tempchar1, sizeof(tempchar1), &tempchar2, sizeof(tempchar2)); |
} |
break; |
case 'j': |
if(MotorenEin) break; |
tempchar1 = LIBFC_GetCPUType(); |
if((tempchar1 == CPU_ATMEGA644P) || (tempchar1 == CPU_ATMEGA1284P)) |
{ |
uint16_t ubrr = (uint16_t) ((uint32_t) F_CPU/ (8 * 38400L) - 1); |
cli(); |
// UART0 & UART1 disable RX and TX-Interrupt |
UCSR0B &= ~((1 << RXCIE0)|(1 << TXCIE0)); |
UCSR1B &= ~((1 << RXCIE1)|(1 << TXCIE1)); |
// UART0 & UART1 disable receiver and transmitter |
UCSR0B &= ~((1 << TXEN0) | (1 << RXEN0)); |
UCSR1B &= ~((1 << TXEN1) | (1 << RXEN1)); |
// UART0 & UART1 flush receive buffer explicit |
while ( UCSR1A & (1<<RXC1) ) UDR1; |
while ( UCSR0A & (1<<RXC0) ) UDR0; |
if(pRxData[0] == 1) ReceiverUpdateModeActive = 2; |
else |
{ // Jeti or HoTT update |
//#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
if(pRxData[0] == 100) ubrr = (uint16_t) ((uint32_t) F_CPU/ (8 * 19200L) - 1); // HoTT |
//#endif |
ReceiverUpdateModeActive = 1; |
// UART0 & UART1 set baudrate |
UBRR1H = (uint8_t)(ubrr>>8); |
UBRR1L = (uint8_t)ubrr; |
UBRR0H = UBRR1H; |
UBRR0L = UBRR1L; |
// UART1 no parity |
UCSR1C &= ~(1 << UPM11); |
UCSR1C &= ~(1 << UPM10); |
// UART1 8-bit |
UCSR1B &= ~(1 << UCSZ12); |
UCSR1C |= (1 << UCSZ11); |
UCSR1C |= (1 << UCSZ10); |
} |
// UART0 & UART1 1 stop bit |
UCSR1C &= ~(1 << USBS1); |
UCSR0C &= ~(1 << USBS0); |
// UART1 clear 9th bit |
UCSR1B &= ~(1<<TXB81); |
// enable receiver and transmitter for UART0 and UART1 |
UCSR0B |= (1 << TXEN0) | (1 << RXEN0); |
UCSR1B |= (1 << TXEN1) | (1 << RXEN1); |
// enable RX-Interrupt for UART0 and UART1 |
UCSR0B |= (1 << RXCIE0); |
UCSR1B |= (1 << RXCIE1); |
// disable other Interrupts |
TIMSK0 = 0; |
TIMSK1 = 0; |
TIMSK2 = 0; |
sei(); |
} |
break; |
} // case FC_ADDRESS: |
default: // any Slave Address |
switch(RxdBuffer[2]) |
{ |
// 't' comand placed here only for compatibility to BL |
case 't':// Motortest |
if(AnzahlEmpfangsBytes >= sizeof(MotorTest)) memcpy(&MotorTest[0], (unsigned char *)pRxData, sizeof(MotorTest)); |
else memcpy(&MotorTest[0], (unsigned char *)pRxData, 4); |
while(!UebertragungAbgeschlossen); |
SendOutData('T', MeineSlaveAdresse, 0); |
PC_MotortestActive = 250; |
PcZugriff = 255; |
AboTimeOut = SetDelay(ABO_TIMEOUT); |
break; |
// 'K' comand placed here only for compatibility to old MK3MAG software, that does not send the right Slave Address |
case 'K':// Kompasswert |
memcpy((unsigned char *)&KompassValue , (unsigned char *)pRxData, sizeof(KompassValue)); |
// KompassRichtung = ((540 + KompassValue - KompassSollWert) % 360) - 180; |
break; |
case 'a':// Texte der Analogwerte |
DebugTextAnforderung = pRxData[0]; |
if (DebugTextAnforderung > 31) DebugTextAnforderung = 31; |
PcZugriff = 255; |
break; |
case 'b': |
memcpy((unsigned char *)&ExternControl, (unsigned char *)pRxData, sizeof(ExternControl)); |
ConfirmFrame = ExternControl.Frame; |
PcZugriff = 255; |
break; |
case 'c': // Poll the 3D-Data |
if(!Intervall3D) { if(pRxData[0]) Timer3D = SetDelay(pRxData[0] * 10);} |
Intervall3D = pRxData[0] * 10; |
AboTimeOut = SetDelay(ABO_TIMEOUT); |
break; |
case 'd': // Poll the debug data |
PcZugriff = 255; |
DebugDataIntervall = (unsigned int)pRxData[0] * 10; |
if(DebugDataIntervall > 0) DebugDataAnforderung = 1; |
AboTimeOut = SetDelay(ABO_TIMEOUT); |
break; |
case 'h':// x-1 Displayzeilen |
PcZugriff = 255; |
if((pRxData[0] & 0x80) == 0x00) // old format |
{ |
DisplayLine = 2; |
Display_Interval = 0; |
} |
else // new format |
{ |
RemoteKeys |= ~pRxData[0]; |
Display_Interval = (unsigned int)pRxData[1] * 10; |
DisplayLine = 4; |
AboTimeOut = SetDelay(ABO_TIMEOUT); |
} |
DebugDisplayAnforderung = 1; |
break; |
case 'l':// x-1 Displayzeilen |
PcZugriff = 255; |
MenuePunkt = pRxData[0]; |
DebugDisplayAnforderung1 = 1; |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'g':// |
GetExternalControl = 1; |
break; |
default: |
//unsupported command received |
break; |
} |
break; // default: |
} |
NeuerDatensatzEmpfangen = 0; |
pRxData = 0; |
RxDataLen = 0; |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
void uart_putchar (char c) |
//############################################################################ |
{ |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(UCSR0A, UDRE0); |
//Ausgabe des Zeichens |
UDR0 = c; |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
unsigned int ubrr = (unsigned int) ((unsigned long) F_CPU/(8 * USART0_BAUD) - 1); |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCSR0B = (1 << TXEN0) | (1 << RXEN0); |
// UART Double Speed (U2X) |
UCSR0A |= (1 << U2X0); |
// RX-Interrupt Freigabe |
UCSR0B |= (1 << RXCIE0); |
// TX-Interrupt Freigabe |
UCSR0B |= (1 << TXCIE0); |
// USART0 Baud Rate Register |
// set clock divider |
UBRR0H = (uint8_t)(ubrr >> 8); |
UBRR0L = (uint8_t)ubrr; |
Debug_Timer = SetDelay(DebugDataIntervall); |
Kompass_Timer = SetDelay(220); |
VersionInfo.SWMajor = VERSION_MAJOR; |
VersionInfo.SWMinor = VERSION_MINOR; |
VersionInfo.SWPatch = VERSION_PATCH; |
VersionInfo.ProtoMajor = VERSION_SERIAL_MAJOR; |
VersionInfo.ProtoMinor = VERSION_SERIAL_MINOR; |
pRxData = 0; |
RxDataLen = 0; |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if(!UebertragungAbgeschlossen) return; |
if(CheckDelay(AboTimeOut)) |
{ |
Display_Interval = 0; |
DebugDataIntervall = 0; |
Intervall3D = 0; |
} |
if(((Display_Interval>0 && CheckDelay(Display_Timer)) || DebugDisplayAnforderung) && UebertragungAbgeschlossen) |
{ |
if(DisplayLine > 3)// new format |
{ |
Menu(); |
SendOutData('H', FC_ADDRESS, 1, (uint8_t *)DisplayBuff, 80); |
} |
else // old format |
{ |
LCD_printfxy(0,0,"!!! INCOMPATIBLE !!!"); |
SendOutData('H', FC_ADDRESS, 2, &DisplayLine, sizeof(DisplayLine), (uint8_t *)DisplayBuff, 20); |
if(DisplayLine++ > 3) DisplayLine = 0; |
} |
Display_Timer = SetDelay(Display_Interval); |
DebugDisplayAnforderung = 0; |
} |
if(DebugDisplayAnforderung1 && UebertragungAbgeschlossen) |
{ |
Menu(); |
SendOutData('L', FC_ADDRESS, 3, &MenuePunkt, sizeof(MenuePunkt), &MaxMenue, sizeof(MaxMenue), DisplayBuff, sizeof(DisplayBuff)); |
DebugDisplayAnforderung1 = 0; |
} |
if(GetVersionAnforderung && UebertragungAbgeschlossen) |
{ |
SendOutData('V', FC_ADDRESS, 1, (unsigned char *) &VersionInfo, sizeof(VersionInfo)); |
GetVersionAnforderung = 0; |
Debug_OK("Version gesendet"); |
} |
if(GetExternalControl && UebertragungAbgeschlossen) // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
{ |
SendOutData('G',MeineSlaveAdresse, 1, (unsigned char *) &ExternControl, sizeof(ExternControl)); |
GetExternalControl = 0; |
} |
if((CheckDelay(Kompass_Timer)) && UebertragungAbgeschlossen) |
{ |
WinkelOut.Winkel[0] = (int) (IntegralNick / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad |
WinkelOut.Winkel[1] = (int) (IntegralRoll / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad |
WinkelOut.UserParameter[0] = Parameter_UserParam1; |
WinkelOut.UserParameter[1] = Parameter_UserParam2; |
SendOutData('k', MK3MAG_ADDRESS, 1, (unsigned char *) &WinkelOut,sizeof(WinkelOut)); |
if(WinkelOut.CalcState > 4) WinkelOut.CalcState = 6; // wird dann in SPI auf Null gesetzt |
Kompass_Timer = SetDelay(99); |
} |
if(((DebugDataIntervall>0 && CheckDelay(Debug_Timer)) || DebugDataAnforderung) && UebertragungAbgeschlossen) |
{ |
CopyDebugValues(); |
SendOutData('D', FC_ADDRESS, 1, (unsigned char *) &DebugOut,sizeof(DebugOut)); |
DebugDataAnforderung = 0; |
if(DebugDataIntervall>0) Debug_Timer = SetDelay(DebugDataIntervall); |
} |
if(Intervall3D > 0 && CheckDelay(Timer3D) && UebertragungAbgeschlossen) |
{ |
Data3D.Winkel[0] = (int) (IntegralNick / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad |
Data3D.Winkel[1] = (int) (IntegralRoll / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad |
Data3D.Winkel[2] = (int) ((10 * ErsatzKompass) / GIER_GRAD_FAKTOR); |
Data3D.Centroid[0] = SummeNick >> 9; |
Data3D.Centroid[1] = SummeRoll >> 9; |
Data3D.Centroid[2] = Mess_Integral_Gier >> 9; |
SendOutData('C', FC_ADDRESS, 1, (unsigned char *) &Data3D,sizeof(Data3D)); |
Timer3D = SetDelay(Intervall3D); |
} |
if(DebugTextAnforderung != 255) // Texte für die Analogdaten |
{ |
unsigned char label[16]; // local sram buffer |
memcpy_P(label, ANALOG_TEXT[DebugTextAnforderung], 16); // read lable from flash to sra |
SendOutData('A', FC_ADDRESS, 2, (unsigned char *)&DebugTextAnforderung, sizeof(DebugTextAnforderung),label, 16); |
DebugTextAnforderung = 255; |
} |
if(ConfirmFrame && UebertragungAbgeschlossen) // Datensatz bestätigen |
{ |
SendOutData('B', FC_ADDRESS, 1, (uint8_t*)&ConfirmFrame, sizeof(ConfirmFrame)); |
ConfirmFrame = 0; |
} |
if(GetPPMChannelAnforderung && UebertragungAbgeschlossen) |
{ |
SendOutData('P', FC_ADDRESS, 1, (unsigned char *) &PPM_in, sizeof(PPM_in)); |
GetPPMChannelAnforderung = 0; |
} |
#ifdef DEBUG // only include functions if DEBUG is defined |
if(SendDebugOutput && UebertragungAbgeschlossen) |
{ |
SendOutData('0', FC_ADDRESS, 1, (unsigned char *) &tDebug, sizeof(tDebug)); |
SendDebugOutput = 0; |
} |
#endif |
} |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/uart.h |
---|
0,0 → 1,107 |
#ifndef _UART_H |
#define _UART_H |
#define printf_P(format, args...) _printf_P(&uart_putchar, format , ## args) |
#define printf(format, args...) _printf_P(&uart_putchar, PSTR(format) , ## args) |
void BearbeiteRxDaten(void); |
extern unsigned char DebugGetAnforderung; |
extern unsigned volatile char ReceiverUpdateModeActive; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned volatile char NeueKoordinateEmpfangen; |
extern unsigned volatile char PC_MotortestActive; |
extern unsigned char MeineSlaveAdresse; |
extern unsigned char PcZugriff; |
extern unsigned char RemotePollDisplayLine; |
extern unsigned volatile char RxdBuffer[]; |
extern int Debug_Timer,Kompass_Timer; |
extern void UART_Init (void); |
extern void uart_putchar (char c); |
//extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void DatenUebertragung(void); |
extern void Uart1Init(void); |
extern void BearbeiteRxDaten(void); |
extern unsigned char MotorTest[16]; |
struct str_DebugOut |
{ |
unsigned char Status[2]; |
signed int Analog[32]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
struct str_WinkelOut |
{ |
signed int Winkel[2]; |
unsigned char UserParameter[2]; |
unsigned char CalcState; |
unsigned char Orientation; |
}; |
extern struct str_WinkelOut WinkelOut; |
struct str_Data3D |
{ |
signed int Winkel[3]; // nick, roll, compass in 0,1° |
signed char Centroid[3]; |
signed char reserve[5]; |
}; |
extern struct str_Data3D Data3D; |
struct str_ExternControl |
{ |
unsigned char Digital[2]; |
unsigned char RemoteTasten; |
signed char Nick; |
signed char Roll; |
signed char Gier; |
unsigned char Gas; |
signed char Hight; |
unsigned char free; |
unsigned char Frame; |
unsigned char Config; |
}; |
extern struct str_ExternControl ExternControl; |
// FC hardware errors |
// bitmask for UART_VersionInfo_t.HardwareError[0] |
#define FC_ERROR0_GYRO_NICK 0x01 |
#define FC_ERROR0_GYRO_ROLL 0x02 |
#define FC_ERROR0_GYRO_YAW 0x04 |
#define FC_ERROR0_ACC_NICK 0x08 |
#define FC_ERROR0_ACC_ROLL 0x10 |
#define FC_ERROR0_ACC_TOP 0x20 |
#define FC_ERROR0_PRESSURE 0x40 |
#define FC_ERROR0_CAREFREE 0x80 |
// bitmask for UART_VersionInfo_t.HardwareError[1] |
#define FC_ERROR1_I2C 0x01 |
#define FC_ERROR1_BL_MISSING 0x02 |
#define FC_ERROR1_SPI_RX 0x04 |
#define FC_ERROR1_PPM 0x08 |
#define FC_ERROR1_MIXER 0x10 |
#define FC_ERROR1_RES1 0x20 |
#define FC_ERROR1_RES2 0x40 |
#define FC_ERROR1_RES3 0x80 |
struct str_VersionInfo |
{ |
unsigned char SWMajor; |
unsigned char SWMinor; |
unsigned char ProtoMajor; |
unsigned char ProtoMinor; |
unsigned char SWPatch; |
unsigned char HardwareError[5]; |
}; |
extern struct str_VersionInfo VersionInfo; |
//#define USART0_BAUD 9600 |
//#define USART0_BAUD 14400 |
//#define USART0_BAUD 28800 |
//#define USART0_BAUD 38400 |
#define USART0_BAUD 57600 |
#endif //_UART_H |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/uart.lst |
---|
0,0 → 1,2665 |
1 .file "uart.c" |
2 .arch atmega1284p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .global ANALOG_TEXT |
11 .section .progmem.data,"a",@progbits |
14 ANALOG_TEXT: |
15 0000 416E 676C .ascii "AngleNick " |
15 654E 6963 |
15 6B20 2020 |
15 2020 2020 |
16 0010 416E 676C .ascii "AngleRoll " |
16 6552 6F6C |
16 6C20 2020 |
16 2020 2020 |
17 0020 4163 634E .ascii "AccNick " |
17 6963 6B20 |
17 2020 2020 |
17 2020 2020 |
18 0030 4163 6352 .ascii "AccRoll " |
18 6F6C 6C20 |
18 2020 2020 |
18 2020 2020 |
19 0040 5961 7747 .ascii "YawGyro " |
19 7972 6F20 |
19 2020 2020 |
19 2020 2020 |
20 0050 4865 6967 .ascii "Height Value " |
20 6874 2056 |
20 616C 7565 |
20 2020 2020 |
21 0060 4163 635A .ascii "AccZ " |
21 2020 2020 |
21 2020 2020 |
21 2020 2020 |
22 0070 4761 7320 .ascii "Gas " |
22 2020 2020 |
22 2020 2020 |
22 2020 2020 |
23 0080 436F 6D70 .ascii "Compass Value " |
23 6173 7320 |
23 5661 6C75 |
23 6520 2020 |
24 0090 566F 6C74 .ascii "Voltage [0.1V] " |
24 6167 6520 |
24 5B30 2E31 |
24 565D 2020 |
25 00a0 5265 6365 .ascii "Receiver Level " |
25 6976 6572 |
25 204C 6576 |
25 656C 2020 |
26 00b0 4779 726F .ascii "Gyro Compass " |
26 2043 6F6D |
26 7061 7373 |
26 2020 2020 |
27 00c0 4D6F 746F .ascii "Motor 1 " |
27 7220 3120 |
27 2020 2020 |
27 2020 2020 |
28 00d0 4D6F 746F .ascii "Motor 2 " |
28 7220 3220 |
28 2020 2020 |
28 2020 2020 |
29 00e0 4D6F 746F .ascii "Motor 3 " |
29 7220 3320 |
29 2020 2020 |
29 2020 2020 |
30 00f0 4D6F 746F .ascii "Motor 4 " |
30 7220 3420 |
30 2020 2020 |
30 2020 2020 |
31 0100 3136 2020 .ascii "16 " |
31 2020 2020 |
31 2020 2020 |
31 2020 2020 |
32 0110 3137 2020 .ascii "17 " |
32 2020 2020 |
32 2020 2020 |
32 2020 2020 |
33 0120 3138 2020 .ascii "18 " |
33 2020 2020 |
33 2020 2020 |
33 2020 2020 |
34 0130 3139 2020 .ascii "19 " |
34 2020 2020 |
34 2020 2020 |
34 2020 2020 |
35 0140 5365 7276 .ascii "Servo " |
35 6F20 2020 |
35 2020 2020 |
35 2020 2020 |
36 0150 486F 7665 .ascii "Hovergas " |
36 7267 6173 |
36 2020 2020 |
36 2020 2020 |
37 0160 4375 7272 .ascii "Current [0.1A] " |
37 656E 7420 |
37 5B30 2E31 |
37 415D 2020 |
38 0170 4361 7061 .ascii "Capacity [mAh] " |
38 6369 7479 |
38 205B 6D41 |
38 685D 2020 |
39 0180 4865 6967 .ascii "Height Setpoint " |
39 6874 2053 |
39 6574 706F |
39 696E 7420 |
40 0190 3235 2020 .ascii "25 " |
40 2020 2020 |
40 2020 2020 |
40 2020 2020 |
41 01a0 3236 2020 .ascii "26 " |
41 2020 2020 |
41 2020 2020 |
41 2020 2020 |
42 01b0 436F 6D70 .ascii "Compass Setpoint" |
42 6173 7320 |
42 5365 7470 |
42 6F69 6E74 |
43 01c0 4932 432D .ascii "I2C-Error " |
43 4572 726F |
43 7220 2020 |
43 2020 2020 |
44 01d0 424C 204C .ascii "BL Limit " |
44 696D 6974 |
44 2020 2020 |
44 2020 2020 |
45 01e0 4750 535F .ascii "GPS_Nick " |
45 4E69 636B |
45 2020 2020 |
45 2020 2020 |
46 01f0 4750 535F .ascii "GPS_Roll " |
46 526F 6C6C |
46 2020 2020 |
46 2020 2020 |
47 .global ReceiverUpdateModeActive |
48 .global ReceiverUpdateModeActive |
49 .section .bss |
52 ReceiverUpdateModeActive: |
53 0000 00 .skip 1,0 |
54 .global AboTimeOut |
55 .global AboTimeOut |
58 AboTimeOut: |
59 0001 0000 .skip 2,0 |
60 .global Display_Interval |
61 .global Display_Interval |
64 Display_Interval: |
65 0003 0000 .skip 2,0 |
66 .global Intervall3D |
67 .global Intervall3D |
70 Intervall3D: |
71 0005 0000 .skip 2,0 |
72 .global DebugDataIntervall |
73 .global DebugDataIntervall |
76 DebugDataIntervall: |
77 0007 0000 .skip 2,0 |
78 .global MeineSlaveAdresse |
79 .data |
82 MeineSlaveAdresse: |
83 0000 01 .byte 1 |
84 .global PcZugriff |
87 PcZugriff: |
88 0001 64 .byte 100 |
89 .global DebugTextAnforderung |
92 DebugTextAnforderung: |
93 0002 FF .byte -1 |
94 .global PC_MotortestActive |
95 .global PC_MotortestActive |
96 .section .bss |
99 PC_MotortestActive: |
100 0009 00 .skip 1,0 |
101 .global PC_DebugTimeout |
102 .global PC_DebugTimeout |
105 PC_DebugTimeout: |
106 000a 00 .skip 1,0 |
107 .global RxDataLen |
108 .global RxDataLen |
111 RxDataLen: |
112 000b 00 .skip 1,0 |
113 .global pRxData |
114 .global pRxData |
117 pRxData: |
118 000c 0000 .skip 2,0 |
119 .global AnzahlEmpfangsBytes |
120 .global AnzahlEmpfangsBytes |
123 AnzahlEmpfangsBytes: |
124 000e 00 .skip 1,0 |
125 .global CntCrcError |
126 .global CntCrcError |
129 CntCrcError: |
130 000f 00 .skip 1,0 |
131 .global UebertragungAbgeschlossen |
132 .data |
135 UebertragungAbgeschlossen: |
136 0003 01 .byte 1 |
137 .global NeueKoordinateEmpfangen |
138 .global NeueKoordinateEmpfangen |
139 .section .bss |
142 NeueKoordinateEmpfangen: |
143 0010 00 .skip 1,0 |
144 .global NeuerDatensatzEmpfangen |
145 .global NeuerDatensatzEmpfangen |
148 NeuerDatensatzEmpfangen: |
149 0011 00 .skip 1,0 |
150 .global SioTmp |
151 .global SioTmp |
154 SioTmp: |
155 0012 00 .skip 1,0 |
156 .global DisplayLine |
157 .global DisplayLine |
160 DisplayLine: |
161 0013 00 .skip 1,0 |
162 .global GetPPMChannelAnforderung |
163 .global GetPPMChannelAnforderung |
166 GetPPMChannelAnforderung: |
167 0014 00 .skip 1,0 |
168 .global GetVersionAnforderung |
169 .global GetVersionAnforderung |
172 GetVersionAnforderung: |
173 0015 00 .skip 1,0 |
174 .global DebugDataAnforderung |
175 .global DebugDataAnforderung |
178 DebugDataAnforderung: |
179 0016 00 .skip 1,0 |
180 .global DebugDisplayAnforderung |
181 .global DebugDisplayAnforderung |
184 DebugDisplayAnforderung: |
185 0017 00 .skip 1,0 |
186 .global DebugDisplayAnforderung1 |
187 .global DebugDisplayAnforderung1 |
190 DebugDisplayAnforderung1: |
191 0018 00 .skip 1,0 |
192 .global GetExternalControl |
193 .global GetExternalControl |
196 GetExternalControl: |
197 0019 00 .skip 1,0 |
198 .lcomm ptr.6,2 |
199 .text |
200 .global __vector_22 |
202 __vector_22: |
203 /* prologue: frame size=0 */ |
204 0000 1F92 push __zero_reg__ |
205 0002 0F92 push __tmp_reg__ |
206 0004 0FB6 in __tmp_reg__,__SREG__ |
207 0006 0F92 push __tmp_reg__ |
208 0008 1124 clr __zero_reg__ |
209 000a 8F93 push r24 |
210 000c 9F93 push r25 |
211 000e EF93 push r30 |
212 0010 FF93 push r31 |
213 /* prologue end (size=9) */ |
214 0012 8091 0000 lds r24,UebertragungAbgeschlossen |
215 0016 8823 tst r24 |
216 0018 01F4 brne .L2 |
217 001a 8091 0000 lds r24,ptr.6 |
218 001e 9091 0000 lds r25,(ptr.6)+1 |
219 0022 0196 adiw r24,1 |
220 0024 9093 0000 sts (ptr.6)+1,r25 |
221 0028 8093 0000 sts ptr.6,r24 |
222 002c FC01 movw r30,r24 |
223 002e E050 subi r30,lo8(-(TxdBuffer)) |
224 0030 F040 sbci r31,hi8(-(TxdBuffer)) |
225 0032 E081 ld r30,Z |
226 0034 ED30 cpi r30,lo8(13) |
227 0036 01F0 breq .L4 |
228 0038 8F3A cpi r24,175 |
229 003a 9105 cpc r25,__zero_reg__ |
230 003c 01F4 brne .L3 |
231 .L4: |
232 003e 1092 0000 sts (ptr.6)+1,__zero_reg__ |
233 0042 1092 0000 sts ptr.6,__zero_reg__ |
234 0046 81E0 ldi r24,lo8(1) |
235 0048 8093 0000 sts UebertragungAbgeschlossen,r24 |
236 .L3: |
237 004c E093 C600 sts 198,r30 |
238 0050 00C0 rjmp .L1 |
239 .L2: |
240 0052 1092 0000 sts (ptr.6)+1,__zero_reg__ |
241 0056 1092 0000 sts ptr.6,__zero_reg__ |
242 .L1: |
243 /* epilogue: frame size=0 */ |
244 005a FF91 pop r31 |
245 005c EF91 pop r30 |
246 005e 9F91 pop r25 |
247 0060 8F91 pop r24 |
248 0062 0F90 pop __tmp_reg__ |
249 0064 0FBE out __SREG__,__tmp_reg__ |
250 0066 0F90 pop __tmp_reg__ |
251 0068 1F90 pop __zero_reg__ |
252 006a 1895 reti |
253 /* epilogue end (size=9) */ |
254 /* function __vector_22 size 54 (36) */ |
256 .lcomm crc.1,2 |
257 .lcomm crc1.2,1 |
258 .lcomm crc2.3,1 |
259 .lcomm buf_ptr.4,1 |
260 .lcomm UartState.5,1 |
261 .global __vector_20 |
263 __vector_20: |
264 /* prologue: frame size=0 */ |
265 006c 1F92 push __zero_reg__ |
266 006e 0F92 push __tmp_reg__ |
267 0070 0FB6 in __tmp_reg__,__SREG__ |
268 0072 0F92 push __tmp_reg__ |
269 0074 1124 clr __zero_reg__ |
270 0076 2F93 push r18 |
271 0078 3F93 push r19 |
272 007a 4F93 push r20 |
273 007c 5F93 push r21 |
274 007e 6F93 push r22 |
275 0080 7F93 push r23 |
276 0082 8F93 push r24 |
277 0084 9F93 push r25 |
278 0086 AF93 push r26 |
279 0088 BF93 push r27 |
280 008a CF93 push r28 |
281 008c EF93 push r30 |
282 008e FF93 push r31 |
283 /* prologue end (size=18) */ |
284 0090 90E0 ldi r25,lo8(0) |
285 0092 8091 0000 lds r24,ReceiverUpdateModeActive |
286 0096 8130 cpi r24,lo8(1) |
287 0098 01F4 brne .L7 |
288 009a 8091 C600 lds r24,198 |
289 009e 8093 CE00 sts 206,r24 |
290 00a2 00C0 rjmp .L6 |
291 .L7: |
292 00a4 8091 0000 lds r24,ReceiverUpdateModeActive |
293 00a8 8230 cpi r24,lo8(2) |
294 00aa 01F4 brne .L8 |
295 00ac 8091 C600 lds r24,198 |
296 00b0 8093 0000 sts RxdBuffer,r24 |
297 00b4 00C0 rjmp .L6 |
298 .L8: |
299 00b6 8091 C600 lds r24,198 |
300 00ba 8093 0000 sts SioTmp,r24 |
301 00be 5091 0000 lds r21,buf_ptr.4 |
302 00c2 5F3A cpi r21,lo8(-81) |
303 00c4 00F0 brlo .L9 |
304 00c6 9093 0000 sts UartState.5,r25 |
305 .L9: |
306 00ca 8091 0000 lds r24,SioTmp |
307 00ce 8D30 cpi r24,lo8(13) |
308 00d0 01F0 breq .+2 |
309 00d2 00C0 rjmp .L10 |
310 00d4 8091 0000 lds r24,UartState.5 |
311 00d8 8230 cpi r24,lo8(2) |
312 00da 01F0 breq .+2 |
313 00dc 00C0 rjmp .L10 |
314 00de 9093 0000 sts UartState.5,r25 |
315 00e2 852F mov r24,r21 |
316 00e4 9927 clr r25 |
317 00e6 8050 subi r24,lo8(-(RxdBuffer)) |
318 00e8 9040 sbci r25,hi8(-(RxdBuffer)) |
319 00ea FC01 movw r30,r24 |
320 00ec 3297 sbiw r30,2 |
321 00ee 4081 ld r20,Z |
322 00f0 2091 0000 lds r18,crc.1 |
323 00f4 3091 0000 lds r19,(crc.1)+1 |
324 00f8 241B sub r18,r20 |
325 00fa 3109 sbc r19,__zero_reg__ |
326 00fc DC01 movw r26,r24 |
327 00fe 1197 sbiw r26,1 |
328 0100 8C91 ld r24,X |
329 0102 281B sub r18,r24 |
330 0104 3109 sbc r19,__zero_reg__ |
331 0106 C901 movw r24,r18 |
332 0108 9F70 andi r25,hi8(4095) |
333 010a 9093 0000 sts (crc.1)+1,r25 |
334 010e 8093 0000 sts crc.1,r24 |
335 0112 46E0 ldi r20,6 |
336 0114 9695 1: lsr r25 |
337 0116 8795 ror r24 |
338 0118 4A95 dec r20 |
339 011a 01F4 brne 1b |
340 011c 982F mov r25,r24 |
341 011e 935C subi r25,lo8(-(61)) |
342 0120 9093 0000 sts crc1.2,r25 |
343 0124 2F73 andi r18,lo8(63) |
344 0126 3070 andi r19,hi8(63) |
345 0128 235C subi r18,lo8(-(61)) |
346 012a 2093 0000 sts crc2.3,r18 |
347 012e 8081 ld r24,Z |
348 0130 9817 cp r25,r24 |
349 0132 01F4 brne .L11 |
350 0134 8C91 ld r24,X |
351 0136 2817 cp r18,r24 |
352 0138 01F4 brne .L11 |
353 013a 91E0 ldi r25,lo8(1) |
354 013c 00C0 rjmp .L12 |
355 .L11: |
356 013e 90E0 ldi r25,lo8(0) |
357 0140 8091 0000 lds r24,CntCrcError |
358 0144 8F5F subi r24,lo8(-(1)) |
359 0146 8093 0000 sts CntCrcError,r24 |
360 .L12: |
361 014a C091 0000 lds r28,NeuerDatensatzEmpfangen |
362 014e CC23 tst r28 |
363 0150 01F0 breq .+2 |
364 0152 00C0 rjmp .L6 |
365 0154 9923 tst r25 |
366 0156 01F4 brne .+2 |
367 0158 00C0 rjmp .L6 |
368 015a 81E0 ldi r24,lo8(1) |
369 015c 8093 0000 sts NeuerDatensatzEmpfangen,r24 |
370 0160 580F add r21,r24 |
371 0162 5093 0000 sts AnzahlEmpfangsBytes,r21 |
372 0166 5150 subi r21,lo8(-(-1)) |
373 0168 E52F mov r30,r21 |
374 016a FF27 clr r31 |
375 016c E050 subi r30,lo8(-(RxdBuffer)) |
376 016e F040 sbci r31,hi8(-(RxdBuffer)) |
377 0170 8DE0 ldi r24,lo8(13) |
378 0172 8083 st Z,r24 |
379 0174 8091 0000 lds r24,RxdBuffer+2 |
380 0178 8235 cpi r24,lo8(82) |
381 017a 01F0 breq .+2 |
382 017c 00C0 rjmp .L6 |
383 017e 0E94 0000 call LcdClear |
384 0182 88E1 ldi r24,lo8(24) |
385 0184 90E0 ldi r25,hi8(24) |
386 0186 2CE0 ldi r18,lo8(12) |
387 /* #APP */ |
388 0188 0FB6 in __tmp_reg__,__SREG__ |
389 018a F894 cli |
390 018c A895 wdr |
391 018e 8093 6000 sts 96,r24 |
392 0192 0FBE out __SREG__,__tmp_reg__ |
393 0194 2093 6000 sts 96,r18 |
394 |
395 /* #NOAPP */ |
396 0198 C093 0000 sts ServoActive,r28 |
397 019c 00C0 rjmp .L6 |
398 .L10: |
399 019e 2091 0000 lds r18,UartState.5 |
400 01a2 822F mov r24,r18 |
401 01a4 9927 clr r25 |
402 01a6 8130 cpi r24,1 |
403 01a8 9105 cpc r25,__zero_reg__ |
404 01aa 01F0 breq .L19 |
405 01ac 8230 cpi r24,2 |
406 01ae 9105 cpc r25,__zero_reg__ |
407 01b0 04F4 brge .L24 |
408 01b2 892B or r24,r25 |
409 01b4 01F0 breq .L17 |
410 01b6 00C0 rjmp .L23 |
411 .L24: |
412 01b8 0297 sbiw r24,2 |
413 01ba 01F0 breq .L20 |
414 01bc 00C0 rjmp .L23 |
415 .L17: |
416 01be 8091 0000 lds r24,SioTmp |
417 01c2 8332 cpi r24,lo8(35) |
418 01c4 01F4 brne .L18 |
419 01c6 8091 0000 lds r24,NeuerDatensatzEmpfangen |
420 01ca 8823 tst r24 |
421 01cc 01F4 brne .L18 |
422 01ce 81E0 ldi r24,lo8(1) |
423 01d0 8093 0000 sts UartState.5,r24 |
424 .L18: |
425 01d4 8091 0000 lds r24,SioTmp |
426 01d8 8093 0000 sts RxdBuffer,r24 |
427 01dc 81E0 ldi r24,lo8(1) |
428 01de 8093 0000 sts buf_ptr.4,r24 |
429 01e2 8091 0000 lds r24,SioTmp |
430 01e6 9927 clr r25 |
431 01e8 00C0 rjmp .L25 |
432 .L19: |
433 01ea 2F5F subi r18,lo8(-(1)) |
434 01ec 2093 0000 sts UartState.5,r18 |
435 01f0 E52F mov r30,r21 |
436 01f2 FF27 clr r31 |
437 01f4 E050 subi r30,lo8(-(RxdBuffer)) |
438 01f6 F040 sbci r31,hi8(-(RxdBuffer)) |
439 01f8 8091 0000 lds r24,SioTmp |
440 01fc 8083 st Z,r24 |
441 01fe 00C0 rjmp .L26 |
442 .L20: |
443 0200 E52F mov r30,r21 |
444 0202 FF27 clr r31 |
445 0204 E050 subi r30,lo8(-(RxdBuffer)) |
446 0206 F040 sbci r31,hi8(-(RxdBuffer)) |
447 0208 8091 0000 lds r24,SioTmp |
448 020c 8083 st Z,r24 |
449 020e 5F3A cpi r21,lo8(-81) |
450 0210 00F4 brsh .L21 |
451 .L26: |
452 0212 5F5F subi r21,lo8(-(1)) |
453 0214 5093 0000 sts buf_ptr.4,r21 |
454 0218 00C0 rjmp .L22 |
455 .L21: |
456 021a 1092 0000 sts UartState.5,__zero_reg__ |
457 .L22: |
458 021e 2091 0000 lds r18,SioTmp |
459 0222 8091 0000 lds r24,crc.1 |
460 0226 9091 0000 lds r25,(crc.1)+1 |
461 022a 820F add r24,r18 |
462 022c 911D adc r25,__zero_reg__ |
463 .L25: |
464 022e 9093 0000 sts (crc.1)+1,r25 |
465 0232 8093 0000 sts crc.1,r24 |
466 0236 00C0 rjmp .L6 |
467 .L23: |
468 0238 1092 0000 sts UartState.5,__zero_reg__ |
469 .L6: |
470 /* epilogue: frame size=0 */ |
471 023c FF91 pop r31 |
472 023e EF91 pop r30 |
473 0240 CF91 pop r28 |
474 0242 BF91 pop r27 |
475 0244 AF91 pop r26 |
476 0246 9F91 pop r25 |
477 0248 8F91 pop r24 |
478 024a 7F91 pop r23 |
479 024c 6F91 pop r22 |
480 024e 5F91 pop r21 |
481 0250 4F91 pop r20 |
482 0252 3F91 pop r19 |
483 0254 2F91 pop r18 |
484 0256 0F90 pop __tmp_reg__ |
485 0258 0FBE out __SREG__,__tmp_reg__ |
486 025a 0F90 pop __tmp_reg__ |
487 025c 1F90 pop __zero_reg__ |
488 025e 1895 reti |
489 /* epilogue end (size=18) */ |
490 /* function __vector_20 size 258 (222) */ |
492 .global AddCRC |
494 AddCRC: |
495 /* prologue: frame size=0 */ |
496 /* prologue end (size=0) */ |
497 0260 AC01 movw r20,r24 |
498 0262 A0E0 ldi r26,lo8(0) |
499 0264 B0E0 ldi r27,hi8(0) |
500 0266 9D01 movw r18,r26 |
501 0268 A817 cp r26,r24 |
502 026a B907 cpc r27,r25 |
503 026c 00F4 brsh .L33 |
504 026e E0E0 ldi r30,lo8(TxdBuffer) |
505 0270 F0E0 ldi r31,hi8(TxdBuffer) |
506 .L31: |
507 0272 8191 ld r24,Z+ |
508 0274 280F add r18,r24 |
509 0276 311D adc r19,__zero_reg__ |
510 0278 1196 adiw r26,1 |
511 027a A417 cp r26,r20 |
512 027c B507 cpc r27,r21 |
513 027e 00F0 brlo .L31 |
514 .L33: |
515 0280 3F70 andi r19,hi8(4095) |
516 0282 FD01 movw r30,r26 |
517 0284 E050 subi r30,lo8(-(TxdBuffer)) |
518 0286 F040 sbci r31,hi8(-(TxdBuffer)) |
519 0288 C901 movw r24,r18 |
520 028a 56E0 ldi r21,6 |
521 028c 9695 1: lsr r25 |
522 028e 8795 ror r24 |
523 0290 5A95 dec r21 |
524 0292 01F4 brne 1b |
525 0294 835C subi r24,lo8(-(61)) |
526 0296 8083 st Z,r24 |
527 0298 1196 adiw r26,1 |
528 029a FD01 movw r30,r26 |
529 029c E050 subi r30,lo8(-(TxdBuffer)) |
530 029e F040 sbci r31,hi8(-(TxdBuffer)) |
531 02a0 2F73 andi r18,lo8(63) |
532 02a2 3070 andi r19,hi8(63) |
533 02a4 822F mov r24,r18 |
534 02a6 835C subi r24,lo8(-(61)) |
535 02a8 8083 st Z,r24 |
536 02aa A050 subi r26,lo8(-(TxdBuffer+1)) |
537 02ac B040 sbci r27,hi8(-(TxdBuffer+1)) |
538 02ae 8DE0 ldi r24,lo8(13) |
539 02b0 8C93 st X,r24 |
540 02b2 1092 0000 sts UebertragungAbgeschlossen,__zero_reg__ |
541 02b6 8091 0000 lds r24,TxdBuffer |
542 02ba 8093 C600 sts 198,r24 |
543 /* epilogue: frame size=0 */ |
544 02be 0895 ret |
545 /* epilogue end (size=1) */ |
546 /* function AddCRC size 49 (48) */ |
548 .global SendOutData |
550 SendOutData: |
551 /* prologue: frame size=0 */ |
552 02c0 A0E0 ldi r26,lo8(0) |
553 02c2 B0E0 ldi r27,hi8(0) |
554 02c4 E0E0 ldi r30,pm_lo8(1f) |
555 02c6 F0E0 ldi r31,pm_hi8(1f) |
556 02c8 0C94 0000 jmp __prologue_saves__+18 |
557 1: |
558 /* prologue end (size=6) */ |
559 02cc 2C85 ldd r18,Y+12 |
560 02ce 9D85 ldd r25,Y+13 |
561 02d0 0E85 ldd r16,Y+14 |
562 02d2 BB24 clr r11 |
563 02d4 83E2 ldi r24,lo8(35) |
564 02d6 8093 0000 sts TxdBuffer,r24 |
565 02da 9F59 subi r25,lo8(-(97)) |
566 02dc 9093 0000 sts TxdBuffer+1,r25 |
567 02e0 2093 0000 sts TxdBuffer+2,r18 |
568 02e4 33E0 ldi r19,lo8(3) |
569 02e6 E32E mov r14,r19 |
570 02e8 F12C mov r15,__zero_reg__ |
571 02ea 0023 tst r16 |
572 02ec 01F4 brne .+2 |
573 02ee 00C0 rjmp .L49 |
574 02f0 CF84 ldd r12,Y+15 |
575 02f2 D888 ldd r13,Y+16 |
576 02f4 BE01 movw r22,r28 |
577 02f6 6D5E subi r22,lo8(-(19)) |
578 02f8 7F4F sbci r23,hi8(-(19)) |
579 02fa A989 ldd r26,Y+17 |
580 02fc BA89 ldd r27,Y+18 |
581 02fe 0150 subi r16,lo8(-(-1)) |
582 .L50: |
583 0300 1097 sbiw r26,0 |
584 0302 01F4 brne .+2 |
585 0304 00C0 rjmp .L49 |
586 0306 1097 sbiw r26,0 |
587 0308 01F0 breq .L38 |
588 030a F601 movw r30,r12 |
589 030c EB0D add r30,r11 |
590 030e F11D adc r31,__zero_reg__ |
591 0310 B394 inc r11 |
592 0312 9081 ld r25,Z |
593 0314 1197 sbiw r26,1 |
594 0316 01F4 brne .L40 |
595 0318 0023 tst r16 |
596 031a 01F0 breq .L41 |
597 031c FB01 movw r30,r22 |
598 031e 6E5F subi r22,lo8(-(2)) |
599 0320 7F4F sbci r23,hi8(-(2)) |
600 0322 DB01 movw r26,r22 |
601 0324 C080 ld r12,Z |
602 0326 D180 ldd r13,Z+1 |
603 0328 6E5F subi r22,lo8(-(2)) |
604 032a 7F4F sbci r23,hi8(-(2)) |
605 032c 0D90 ld __tmp_reg__,X+ |
606 032e BC91 ld r27,X |
607 0330 A02D mov r26,__tmp_reg__ |
608 0332 BB24 clr r11 |
609 0334 0150 subi r16,lo8(-(-1)) |
610 0336 00C0 rjmp .L40 |
611 .L38: |
612 0338 90E0 ldi r25,lo8(0) |
613 033a 00C0 rjmp .L41 |
614 .L40: |
615 033c 1097 sbiw r26,0 |
616 033e 01F0 breq .L41 |
617 0340 F601 movw r30,r12 |
618 0342 EB0D add r30,r11 |
619 0344 F11D adc r31,__zero_reg__ |
620 0346 B394 inc r11 |
621 0348 4081 ld r20,Z |
622 034a 1197 sbiw r26,1 |
623 034c 01F4 brne .L43 |
624 034e 0023 tst r16 |
625 0350 01F0 breq .L44 |
626 0352 FB01 movw r30,r22 |
627 0354 6E5F subi r22,lo8(-(2)) |
628 0356 7F4F sbci r23,hi8(-(2)) |
629 0358 DB01 movw r26,r22 |
630 035a C080 ld r12,Z |
631 035c D180 ldd r13,Z+1 |
632 035e 6E5F subi r22,lo8(-(2)) |
633 0360 7F4F sbci r23,hi8(-(2)) |
634 0362 0D90 ld __tmp_reg__,X+ |
635 0364 BC91 ld r27,X |
636 0366 A02D mov r26,__tmp_reg__ |
637 0368 BB24 clr r11 |
638 036a 0150 subi r16,lo8(-(-1)) |
639 036c 00C0 rjmp .L43 |
640 .L41: |
641 036e 40E0 ldi r20,lo8(0) |
642 0370 00C0 rjmp .L44 |
643 .L43: |
644 0372 1097 sbiw r26,0 |
645 0374 01F0 breq .L44 |
646 0376 F601 movw r30,r12 |
647 0378 EB0D add r30,r11 |
648 037a F11D adc r31,__zero_reg__ |
649 037c B394 inc r11 |
650 037e 1081 ld r17,Z |
651 0380 1197 sbiw r26,1 |
652 0382 01F4 brne .L46 |
653 0384 0023 tst r16 |
654 0386 01F0 breq .L46 |
655 0388 FB01 movw r30,r22 |
656 038a 3296 adiw r30,2 |
657 038c DB01 movw r26,r22 |
658 038e CD90 ld r12,X+ |
659 0390 DC90 ld r13,X |
660 0392 BF01 movw r22,r30 |
661 0394 6E5F subi r22,lo8(-(2)) |
662 0396 7F4F sbci r23,hi8(-(2)) |
663 0398 A081 ld r26,Z |
664 039a B181 ldd r27,Z+1 |
665 039c BB24 clr r11 |
666 039e 0150 subi r16,lo8(-(-1)) |
667 03a0 00C0 rjmp .L46 |
668 .L44: |
669 03a2 10E0 ldi r17,lo8(0) |
670 .L46: |
671 03a4 F701 movw r30,r14 |
672 03a6 E050 subi r30,lo8(-(TxdBuffer)) |
673 03a8 F040 sbci r31,hi8(-(TxdBuffer)) |
674 03aa 892F mov r24,r25 |
675 03ac 8695 lsr r24 |
676 03ae 8695 lsr r24 |
677 03b0 835C subi r24,lo8(-(61)) |
678 03b2 8083 st Z,r24 |
679 03b4 0894 sec |
680 03b6 E11C adc r14,__zero_reg__ |
681 03b8 F11C adc r15,__zero_reg__ |
682 03ba F701 movw r30,r14 |
683 03bc E050 subi r30,lo8(-(TxdBuffer)) |
684 03be F040 sbci r31,hi8(-(TxdBuffer)) |
685 03c0 892F mov r24,r25 |
686 03c2 9927 clr r25 |
687 03c4 8370 andi r24,lo8(3) |
688 03c6 9070 andi r25,hi8(3) |
689 03c8 24E0 ldi r18,4 |
690 03ca 880F 1: lsl r24 |
691 03cc 991F rol r25 |
692 03ce 2A95 dec r18 |
693 03d0 01F4 brne 1b |
694 03d2 5527 clr r21 |
695 03d4 9A01 movw r18,r20 |
696 03d6 94E0 ldi r25,4 |
697 03d8 3695 1: lsr r19 |
698 03da 2795 ror r18 |
699 03dc 9A95 dec r25 |
700 03de 01F4 brne 1b |
701 03e0 822B or r24,r18 |
702 03e2 835C subi r24,lo8(-(61)) |
703 03e4 8083 st Z,r24 |
704 03e6 0894 sec |
705 03e8 E11C adc r14,__zero_reg__ |
706 03ea F11C adc r15,__zero_reg__ |
707 03ec F701 movw r30,r14 |
708 03ee E050 subi r30,lo8(-(TxdBuffer)) |
709 03f0 F040 sbci r31,hi8(-(TxdBuffer)) |
710 03f2 4F70 andi r20,lo8(15) |
711 03f4 5070 andi r21,hi8(15) |
712 03f6 440F lsl r20 |
713 03f8 551F rol r21 |
714 03fa 440F lsl r20 |
715 03fc 551F rol r21 |
716 03fe 812F mov r24,r17 |
717 0400 9927 clr r25 |
718 0402 26E0 ldi r18,6 |
719 0404 9695 1: lsr r25 |
720 0406 8795 ror r24 |
721 0408 2A95 dec r18 |
722 040a 01F4 brne 1b |
723 040c 842B or r24,r20 |
724 040e 835C subi r24,lo8(-(61)) |
725 0410 8083 st Z,r24 |
726 0412 0894 sec |
727 0414 E11C adc r14,__zero_reg__ |
728 0416 F11C adc r15,__zero_reg__ |
729 0418 F701 movw r30,r14 |
730 041a E050 subi r30,lo8(-(TxdBuffer)) |
731 041c F040 sbci r31,hi8(-(TxdBuffer)) |
732 041e 1F73 andi r17,lo8(63) |
733 0420 135C subi r17,lo8(-(61)) |
734 0422 1083 st Z,r17 |
735 0424 0894 sec |
736 0426 E11C adc r14,__zero_reg__ |
737 0428 F11C adc r15,__zero_reg__ |
738 042a 00C0 rjmp .L50 |
739 .L49: |
740 042c C701 movw r24,r14 |
741 042e 0E94 0000 call AddCRC |
742 /* epilogue: frame size=0 */ |
743 0432 E9E0 ldi r30,9 |
744 0434 0C94 0000 jmp __epilogue_restores__+18 |
745 /* epilogue end (size=3) */ |
746 /* function SendOutData size 191 (182) */ |
748 .global Decode64 |
750 Decode64: |
751 /* prologue: frame size=0 */ |
752 /* prologue end (size=0) */ |
753 0438 A3E0 ldi r26,lo8(3) |
754 043a 7A2F mov r23,r26 |
755 043c 4091 0000 lds r20,AnzahlEmpfangsBytes |
756 0440 4650 subi r20,lo8(-(-6)) |
757 .L62: |
758 0442 4423 tst r20 |
759 0444 01F4 brne .+2 |
760 0446 00C0 rjmp .L53 |
761 0448 E72F mov r30,r23 |
762 044a FF27 clr r31 |
763 044c E050 subi r30,lo8(-(RxdBuffer)) |
764 044e F040 sbci r31,hi8(-(RxdBuffer)) |
765 0450 8081 ld r24,Z |
766 0452 8D53 subi r24,lo8(-(-61)) |
767 0454 7F5F subi r23,lo8(-(1)) |
768 0456 E72F mov r30,r23 |
769 0458 FF27 clr r31 |
770 045a E050 subi r30,lo8(-(RxdBuffer)) |
771 045c F040 sbci r31,hi8(-(RxdBuffer)) |
772 045e 2081 ld r18,Z |
773 0460 2D53 subi r18,lo8(-(-61)) |
774 0462 7F5F subi r23,lo8(-(1)) |
775 0464 E72F mov r30,r23 |
776 0466 FF27 clr r31 |
777 0468 E050 subi r30,lo8(-(RxdBuffer)) |
778 046a F040 sbci r31,hi8(-(RxdBuffer)) |
779 046c 3081 ld r19,Z |
780 046e 3D53 subi r19,lo8(-(-61)) |
781 0470 7F5F subi r23,lo8(-(1)) |
782 0472 E72F mov r30,r23 |
783 0474 FF27 clr r31 |
784 0476 E050 subi r30,lo8(-(RxdBuffer)) |
785 0478 F040 sbci r31,hi8(-(RxdBuffer)) |
786 047a 6081 ld r22,Z |
787 047c 6D53 subi r22,lo8(-(-61)) |
788 047e 7F5F subi r23,lo8(-(1)) |
789 0480 9927 clr r25 |
790 0482 880F lsl r24 |
791 0484 991F rol r25 |
792 0486 880F lsl r24 |
793 0488 991F rol r25 |
794 048a 522F mov r21,r18 |
795 048c 5295 swap r21 |
796 048e 5F70 andi r21,0x0f |
797 0490 582B or r21,r24 |
798 0492 822F mov r24,r18 |
799 0494 9927 clr r25 |
800 0496 8F70 andi r24,lo8(15) |
801 0498 9070 andi r25,hi8(15) |
802 049a F4E0 ldi r31,4 |
803 049c 880F 1: lsl r24 |
804 049e 991F rol r25 |
805 04a0 FA95 dec r31 |
806 04a2 01F4 brne 1b |
807 04a4 232F mov r18,r19 |
808 04a6 2695 lsr r18 |
809 04a8 2695 lsr r18 |
810 04aa 282B or r18,r24 |
811 04ac 832F mov r24,r19 |
812 04ae 9927 clr r25 |
813 04b0 8370 andi r24,lo8(3) |
814 04b2 9070 andi r25,hi8(3) |
815 04b4 E6E0 ldi r30,6 |
816 04b6 880F 1: lsl r24 |
817 04b8 991F rol r25 |
818 04ba EA95 dec r30 |
819 04bc 01F4 brne 1b |
820 04be 682B or r22,r24 |
821 04c0 4150 subi r20,lo8(-(-1)) |
822 04c2 4F3F cpi r20,lo8(-1) |
823 04c4 01F0 breq .L53 |
824 04c6 EA2F mov r30,r26 |
825 04c8 FF27 clr r31 |
826 04ca E050 subi r30,lo8(-(RxdBuffer)) |
827 04cc F040 sbci r31,hi8(-(RxdBuffer)) |
828 04ce 5083 st Z,r21 |
829 04d0 AF5F subi r26,lo8(-(1)) |
830 04d2 4150 subi r20,lo8(-(-1)) |
831 04d4 4F3F cpi r20,lo8(-1) |
832 04d6 01F0 breq .L53 |
833 04d8 EA2F mov r30,r26 |
834 04da FF27 clr r31 |
835 04dc E050 subi r30,lo8(-(RxdBuffer)) |
836 04de F040 sbci r31,hi8(-(RxdBuffer)) |
837 04e0 2083 st Z,r18 |
838 04e2 AF5F subi r26,lo8(-(1)) |
839 04e4 4150 subi r20,lo8(-(-1)) |
840 04e6 4F3F cpi r20,lo8(-1) |
841 04e8 01F0 breq .L53 |
842 04ea EA2F mov r30,r26 |
843 04ec FF27 clr r31 |
844 04ee E050 subi r30,lo8(-(RxdBuffer)) |
845 04f0 F040 sbci r31,hi8(-(RxdBuffer)) |
846 04f2 6083 st Z,r22 |
847 04f4 AF5F subi r26,lo8(-(1)) |
848 04f6 00C0 rjmp .L62 |
849 .L53: |
850 04f8 80E0 ldi r24,lo8(RxdBuffer+3) |
851 04fa 90E0 ldi r25,hi8(RxdBuffer+3) |
852 04fc 9093 0000 sts (pRxData)+1,r25 |
853 0500 8093 0000 sts pRxData,r24 |
854 0504 A350 subi r26,lo8(-(-3)) |
855 0506 A093 0000 sts RxDataLen,r26 |
856 /* epilogue: frame size=0 */ |
857 050a 0895 ret |
858 /* epilogue end (size=1) */ |
859 /* function Decode64 size 106 (105) */ |
861 .global BearbeiteRxDaten |
863 BearbeiteRxDaten: |
864 /* prologue: frame size=2 */ |
865 050c A2E0 ldi r26,lo8(2) |
866 050e B0E0 ldi r27,hi8(2) |
867 0510 E0E0 ldi r30,pm_lo8(1f) |
868 0512 F0E0 ldi r31,pm_hi8(1f) |
869 0514 0C94 0000 jmp __prologue_saves__+30 |
870 1: |
871 /* prologue end (size=6) */ |
872 0518 8091 0000 lds r24,NeuerDatensatzEmpfangen |
873 051c 8823 tst r24 |
874 051e 01F4 brne .+2 |
875 0520 00C0 rjmp .L63 |
876 0522 0E94 0000 call Decode64 |
877 0526 8091 0000 lds r24,RxdBuffer+1 |
878 052a 8236 cpi r24,lo8(98) |
879 052c 01F0 breq .+2 |
880 052e 00C0 rjmp .L145 |
881 0530 8091 0000 lds r24,RxdBuffer+2 |
882 0534 9927 clr r25 |
883 0536 8037 cpi r24,112 |
884 0538 9105 cpc r25,__zero_reg__ |
885 053a 01F4 brne .+2 |
886 053c 00C0 rjmp .L82 |
887 053e 8137 cpi r24,113 |
888 0540 9105 cpc r25,__zero_reg__ |
889 0542 04F4 brge .L141 |
890 0544 8A36 cpi r24,106 |
891 0546 9105 cpc r25,__zero_reg__ |
892 0548 01F4 brne .+2 |
893 054a 00C0 rjmp .L128 |
894 054c 8B36 cpi r24,107 |
895 054e 9105 cpc r25,__zero_reg__ |
896 0550 04F4 brge .L142 |
897 0552 8B34 cpi r24,75 |
898 0554 9105 cpc r25,__zero_reg__ |
899 0556 01F0 breq .L68 |
900 0558 8636 cpi r24,102 |
901 055a 9105 cpc r25,__zero_reg__ |
902 055c 01F4 brne .+2 |
903 055e 00C0 rjmp .L108 |
904 0560 00C0 rjmp .L145 |
905 .L142: |
906 0562 8D36 cpi r24,109 |
907 0564 9105 cpc r25,__zero_reg__ |
908 0566 01F4 brne .+2 |
909 0568 00C0 rjmp .L76 |
910 056a 8E36 cpi r24,110 |
911 056c 9105 cpc r25,__zero_reg__ |
912 056e 01F4 brne .+2 |
913 0570 00C0 rjmp .L73 |
914 0572 00C0 rjmp .L145 |
915 .L141: |
916 0574 8437 cpi r24,116 |
917 0576 9105 cpc r25,__zero_reg__ |
918 0578 01F0 breq .L69 |
919 057a 8537 cpi r24,117 |
920 057c 9105 cpc r25,__zero_reg__ |
921 057e 04F4 brge .L143 |
922 0580 8137 cpi r24,113 |
923 0582 9105 cpc r25,__zero_reg__ |
924 0584 01F4 brne .+2 |
925 0586 00C0 rjmp .L83 |
926 0588 8337 cpi r24,115 |
927 058a 9105 cpc r25,__zero_reg__ |
928 058c 01F4 brne .+2 |
929 058e 00C0 rjmp .L101 |
930 0590 00C0 rjmp .L145 |
931 .L143: |
932 0592 8737 cpi r24,119 |
933 0594 9105 cpc r25,__zero_reg__ |
934 0596 01F4 brne .+2 |
935 0598 00C0 rjmp .L121 |
936 059a 8837 cpi r24,120 |
937 059c 9105 cpc r25,__zero_reg__ |
938 059e 04F4 brge .L144 |
939 05a0 8537 cpi r24,117 |
940 05a2 9105 cpc r25,__zero_reg__ |
941 05a4 01F4 brne .+2 |
942 05a6 00C0 rjmp .L115 |
943 05a8 00C0 rjmp .L145 |
944 .L144: |
945 05aa 8937 cpi r24,121 |
946 05ac 9105 cpc r25,__zero_reg__ |
947 05ae 01F4 brne .+2 |
948 05b0 00C0 rjmp .L114 |
949 05b2 00C0 rjmp .L145 |
950 .L68: |
951 05b4 E091 0000 lds r30,pRxData |
952 05b8 F091 0000 lds r31,(pRxData)+1 |
953 05bc 8081 ld r24,Z |
954 05be 9181 ldd r25,Z+1 |
955 05c0 9093 0000 sts (KompassValue)+1,r25 |
956 05c4 8093 0000 sts KompassValue,r24 |
957 05c8 00C0 rjmp .L145 |
958 .L69: |
959 05ca 8091 0000 lds r24,AnzahlEmpfangsBytes |
960 05ce A091 0000 lds r26,pRxData |
961 05d2 B091 0000 lds r27,(pRxData)+1 |
962 05d6 8531 cpi r24,lo8(21) |
963 05d8 00F0 brlo .L70 |
964 05da 80E1 ldi r24,lo8(16) |
965 05dc E0E0 ldi r30,lo8(MotorTest) |
966 05de F0E0 ldi r31,hi8(MotorTest) |
967 05e0 0D90 ld __tmp_reg__,X+ |
968 05e2 0192 st Z+,__tmp_reg__ |
969 05e4 8A95 dec r24 |
970 05e6 01F4 brne .-8 |
971 05e8 00C0 rjmp .L71 |
972 .L70: |
973 05ea 8D91 ld r24,X+ |
974 05ec 9D91 ld r25,X+ |
975 05ee 0D90 ld __tmp_reg__,X+ |
976 05f0 BC91 ld r27,X |
977 05f2 A02D mov r26,__tmp_reg__ |
978 05f4 8093 0000 sts MotorTest,r24 |
979 05f8 9093 0000 sts (MotorTest)+1,r25 |
980 05fc A093 0000 sts (MotorTest)+2,r26 |
981 0600 B093 0000 sts (MotorTest)+3,r27 |
982 .L71: |
983 0604 80EF ldi r24,lo8(-16) |
984 0606 8093 0000 sts PC_MotortestActive,r24 |
985 060a 00C0 rjmp .L182 |
986 .L73: |
987 060c 8091 0000 lds r24,UebertragungAbgeschlossen |
988 0610 8823 tst r24 |
989 0612 01F0 breq .L73 |
990 0614 8DE4 ldi r24,lo8(77) |
991 0616 90E0 ldi r25,hi8(77) |
992 0618 9F93 push r25 |
993 061a 8F93 push r24 |
994 061c 80E0 ldi r24,lo8(Mixer) |
995 061e 90E0 ldi r25,hi8(Mixer) |
996 0620 9F93 push r25 |
997 0622 8F93 push r24 |
998 0624 81E0 ldi r24,lo8(1) |
999 0626 8F93 push r24 |
1000 0628 8F93 push r24 |
1001 062a 8EE4 ldi r24,lo8(78) |
1002 062c 8F93 push r24 |
1003 062e 0E94 0000 call SendOutData |
1004 0632 8DB7 in r24,__SP_L__ |
1005 0634 9EB7 in r25,__SP_H__ |
1006 0636 0796 adiw r24,7 |
1007 0638 8DBF out __SP_L__,r24 |
1008 063a 00C0 rjmp .L145 |
1009 .L76: |
1010 063c A091 0000 lds r26,pRxData |
1011 0640 B091 0000 lds r27,(pRxData)+1 |
1012 0644 1C91 ld r17,X |
1013 0646 1130 cpi r17,lo8(1) |
1014 0648 01F4 brne .L77 |
1015 064a 8DE4 ldi r24,lo8(77) |
1016 064c E0E0 ldi r30,lo8(Mixer) |
1017 064e F0E0 ldi r31,hi8(Mixer) |
1018 0650 0D90 ld __tmp_reg__,X+ |
1019 0652 0192 st Z+,__tmp_reg__ |
1020 0654 8A95 dec r24 |
1021 0656 01F4 brne .-8 |
1022 0658 0E94 0000 call MixerTable_WriteToEEProm |
1023 065c 1983 std Y+1,r17 |
1024 065e 8091 0000 lds r24,VersionInfo+6 |
1025 0662 8F7E andi r24,lo8(-17) |
1026 0664 8093 0000 sts VersionInfo+6,r24 |
1027 0668 00C0 rjmp .L79 |
1028 .L77: |
1029 066a 1982 std Y+1,__zero_reg__ |
1030 .L79: |
1031 066c 8091 0000 lds r24,UebertragungAbgeschlossen |
1032 0670 8823 tst r24 |
1033 0672 01F0 breq .L79 |
1034 0674 81E0 ldi r24,lo8(1) |
1035 0676 90E0 ldi r25,hi8(1) |
1036 0678 9F93 push r25 |
1037 067a 8F93 push r24 |
1038 067c CE01 movw r24,r28 |
1039 067e 0196 adiw r24,1 |
1040 0680 9F93 push r25 |
1041 0682 8F93 push r24 |
1042 0684 81E0 ldi r24,lo8(1) |
1043 0686 8F93 push r24 |
1044 0688 8F93 push r24 |
1045 068a 8DE4 ldi r24,lo8(77) |
1046 068c 8F93 push r24 |
1047 068e 0E94 0000 call SendOutData |
1048 0692 ADB7 in r26,__SP_L__ |
1049 0694 BEB7 in r27,__SP_H__ |
1050 0696 1796 adiw r26,7 |
1051 0698 ADBF out __SP_L__,r26 |
1052 069a 00C0 rjmp .L145 |
1053 .L82: |
1054 069c 81E0 ldi r24,lo8(1) |
1055 069e 8093 0000 sts GetPPMChannelAnforderung,r24 |
1056 .L182: |
1057 06a2 8FEF ldi r24,lo8(-1) |
1058 06a4 8093 0000 sts PcZugriff,r24 |
1059 06a8 00C0 rjmp .L145 |
1060 .L83: |
1061 06aa E091 0000 lds r30,pRxData |
1062 06ae F091 0000 lds r31,(pRxData)+1 |
1063 06b2 E081 ld r30,Z |
1064 06b4 8E2F mov r24,r30 |
1065 06b6 8A50 subi r24,lo8(-(-10)) |
1066 06b8 8A30 cpi r24,lo8(10) |
1067 06ba 00F4 brsh .L84 |
1068 06bc 8983 std Y+1,r24 |
1069 06be 8823 tst r24 |
1070 06c0 01F4 brne .L85 |
1071 06c2 81E0 ldi r24,lo8(1) |
1072 06c4 00C0 rjmp .L176 |
1073 .L85: |
1074 06c6 8630 cpi r24,lo8(6) |
1075 06c8 00F0 brlo .L86 |
1076 06ca 85E0 ldi r24,lo8(5) |
1077 .L176: |
1078 06cc 8983 std Y+1,r24 |
1079 .L86: |
1080 06ce 61E0 ldi r22,lo8(1) |
1081 06d0 00C0 rjmp .L179 |
1082 .L84: |
1083 06d2 8E2F mov r24,r30 |
1084 06d4 8451 subi r24,lo8(-(-20)) |
1085 06d6 8A30 cpi r24,lo8(10) |
1086 06d8 00F4 brsh .L89 |
1087 06da 8983 std Y+1,r24 |
1088 06dc 8823 tst r24 |
1089 06de 01F4 brne .L90 |
1090 06e0 81E0 ldi r24,lo8(1) |
1091 06e2 00C0 rjmp .L177 |
1092 .L90: |
1093 06e4 8630 cpi r24,lo8(6) |
1094 06e6 00F0 brlo .L91 |
1095 06e8 85E0 ldi r24,lo8(5) |
1096 .L177: |
1097 06ea 8983 std Y+1,r24 |
1098 .L91: |
1099 06ec 60E0 ldi r22,lo8(0) |
1100 .L179: |
1101 06ee 8981 ldd r24,Y+1 |
1102 06f0 0E94 0000 call SetDefaultParameter |
1103 06f4 00C0 rjmp .L98 |
1104 .L89: |
1105 06f6 E983 std Y+1,r30 |
1106 06f8 EF3F cpi r30,lo8(-1) |
1107 06fa 01F4 brne .L94 |
1108 06fc 0E94 0000 call GetActiveParamSet |
1109 0700 8983 std Y+1,r24 |
1110 .L94: |
1111 0702 8981 ldd r24,Y+1 |
1112 0704 8823 tst r24 |
1113 0706 01F4 brne .L95 |
1114 0708 81E0 ldi r24,lo8(1) |
1115 070a 00C0 rjmp .L178 |
1116 .L95: |
1117 070c 8630 cpi r24,lo8(6) |
1118 070e 00F0 brlo .L96 |
1119 0710 85E0 ldi r24,lo8(5) |
1120 .L178: |
1121 0712 8983 std Y+1,r24 |
1122 .L96: |
1123 0714 8981 ldd r24,Y+1 |
1124 0716 0E94 0000 call ParamSet_ReadFromEEProm |
1125 .L98: |
1126 071a 8091 0000 lds r24,UebertragungAbgeschlossen |
1127 071e 8823 tst r24 |
1128 0720 01F0 breq .L98 |
1129 0722 8CE7 ldi r24,lo8(124) |
1130 0724 90E0 ldi r25,hi8(124) |
1131 0726 9F93 push r25 |
1132 0728 8F93 push r24 |
1133 072a 80E0 ldi r24,lo8(EE_Parameter) |
1134 072c 90E0 ldi r25,hi8(EE_Parameter) |
1135 072e 9F93 push r25 |
1136 0730 8F93 push r24 |
1137 0732 81E0 ldi r24,lo8(1) |
1138 0734 90E0 ldi r25,hi8(1) |
1139 0736 9F93 push r25 |
1140 0738 8F93 push r24 |
1141 073a CE01 movw r24,r28 |
1142 073c 0196 adiw r24,1 |
1143 073e 9F93 push r25 |
1144 0740 8F93 push r24 |
1145 0742 82E0 ldi r24,lo8(2) |
1146 0744 8F93 push r24 |
1147 0746 81E0 ldi r24,lo8(1) |
1148 0748 8F93 push r24 |
1149 074a 81E5 ldi r24,lo8(81) |
1150 074c 00C0 rjmp .L185 |
1151 .L101: |
1152 074e 2091 0000 lds r18,pRxData |
1153 0752 3091 0000 lds r19,(pRxData)+1 |
1154 0756 D901 movw r26,r18 |
1155 0758 8C91 ld r24,X |
1156 075a 8150 subi r24,lo8(-(-1)) |
1157 075c 8530 cpi r24,lo8(5) |
1158 075e 00F0 brlo .+2 |
1159 0760 00C0 rjmp .L102 |
1160 0762 F901 movw r30,r18 |
1161 0764 8181 ldd r24,Z+1 |
1162 0766 8C35 cpi r24,lo8(92) |
1163 0768 01F0 breq .+2 |
1164 076a 00C0 rjmp .L102 |
1165 076c 8091 0000 lds r24,MotorenEin |
1166 0770 8823 tst r24 |
1167 0772 01F4 brne .L102 |
1168 0774 2F5F subi r18,lo8(-(1)) |
1169 0776 3F4F sbci r19,hi8(-(1)) |
1170 0778 8CE7 ldi r24,lo8(124) |
1171 077a E0E0 ldi r30,lo8(EE_Parameter) |
1172 077c F0E0 ldi r31,hi8(EE_Parameter) |
1173 077e D901 movw r26,r18 |
1174 0780 0D90 ld __tmp_reg__,X+ |
1175 0782 0192 st Z+,__tmp_reg__ |
1176 0784 8A95 dec r24 |
1177 0786 01F4 brne .-8 |
1178 0788 F901 movw r30,r18 |
1179 078a 8291 ld r24,-Z |
1180 078c 0E94 0000 call ParamSet_WriteToEEProm |
1181 0790 8091 0000 lds r24,EE_Parameter+65 |
1182 0794 9927 clr r25 |
1183 0796 AA27 clr r26 |
1184 0798 BB27 clr r27 |
1185 079a BC01 movw r22,r24 |
1186 079c CD01 movw r24,r26 |
1187 079e 24EC ldi r18,lo8(2500) |
1188 07a0 39E0 ldi r19,hi8(2500) |
1189 07a2 40E0 ldi r20,hlo8(2500) |
1190 07a4 50E0 ldi r21,hhi8(2500) |
1191 07a6 0E94 0000 call __mulsi3 |
1192 07aa DC01 movw r26,r24 |
1193 07ac CB01 movw r24,r22 |
1194 07ae 8093 0000 sts Umschlag180Nick,r24 |
1195 07b2 9093 0000 sts (Umschlag180Nick)+1,r25 |
1196 07b6 A093 0000 sts (Umschlag180Nick)+2,r26 |
1197 07ba B093 0000 sts (Umschlag180Nick)+3,r27 |
1198 07be 8091 0000 lds r24,EE_Parameter+66 |
1199 07c2 9927 clr r25 |
1200 07c4 AA27 clr r26 |
1201 07c6 BB27 clr r27 |
1202 07c8 BC01 movw r22,r24 |
1203 07ca CD01 movw r24,r26 |
1204 07cc 0E94 0000 call __mulsi3 |
1205 07d0 DC01 movw r26,r24 |
1206 07d2 CB01 movw r24,r22 |
1207 07d4 8093 0000 sts Umschlag180Roll,r24 |
1208 07d8 9093 0000 sts (Umschlag180Roll)+1,r25 |
1209 07dc A093 0000 sts (Umschlag180Roll)+2,r26 |
1210 07e0 B093 0000 sts (Umschlag180Roll)+3,r27 |
1211 07e4 0E94 0000 call GetActiveParamSet |
1212 07e8 8983 std Y+1,r24 |
1213 07ea 00C0 rjmp .L104 |
1214 .L102: |
1215 07ec 1982 std Y+1,__zero_reg__ |
1216 .L104: |
1217 07ee 8091 0000 lds r24,UebertragungAbgeschlossen |
1218 07f2 8823 tst r24 |
1219 07f4 01F0 breq .L104 |
1220 07f6 81E0 ldi r24,lo8(1) |
1221 07f8 90E0 ldi r25,hi8(1) |
1222 07fa 9F93 push r25 |
1223 07fc 8F93 push r24 |
1224 07fe CE01 movw r24,r28 |
1225 0800 0196 adiw r24,1 |
1226 0802 9F93 push r25 |
1227 0804 8F93 push r24 |
1228 0806 81E0 ldi r24,lo8(1) |
1229 0808 8F93 push r24 |
1230 080a 8F93 push r24 |
1231 080c 83E5 ldi r24,lo8(83) |
1232 080e 8F93 push r24 |
1233 0810 0E94 0000 call SendOutData |
1234 0814 8DB7 in r24,__SP_L__ |
1235 0816 9EB7 in r25,__SP_H__ |
1236 0818 0796 adiw r24,7 |
1237 081a 8DBF out __SP_L__,r24 |
1238 081c 00C0 rjmp .L186 |
1239 .L108: |
1240 081e E091 0000 lds r30,pRxData |
1241 0822 F091 0000 lds r31,(pRxData)+1 |
1242 0826 E081 ld r30,Z |
1243 0828 8E2F mov r24,r30 |
1244 082a 8150 subi r24,lo8(-(-1)) |
1245 082c 8530 cpi r24,lo8(5) |
1246 082e 00F4 brsh .L109 |
1247 0830 8E2F mov r24,r30 |
1248 0832 0E94 0000 call ParamSet_ReadFromEEProm |
1249 .L109: |
1250 0836 0E94 0000 call GetActiveParamSet |
1251 083a 8983 std Y+1,r24 |
1252 .L110: |
1253 083c 8091 0000 lds r24,UebertragungAbgeschlossen |
1254 0840 8823 tst r24 |
1255 0842 01F0 breq .L110 |
1256 0844 81E0 ldi r24,lo8(1) |
1257 0846 90E0 ldi r25,hi8(1) |
1258 0848 9F93 push r25 |
1259 084a 8F93 push r24 |
1260 084c CE01 movw r24,r28 |
1261 084e 0196 adiw r24,1 |
1262 0850 9F93 push r25 |
1263 0852 8F93 push r24 |
1264 0854 81E0 ldi r24,lo8(1) |
1265 0856 8F93 push r24 |
1266 0858 8F93 push r24 |
1267 085a 86E4 ldi r24,lo8(70) |
1268 085c 8F93 push r24 |
1269 085e 0E94 0000 call SendOutData |
1270 0862 ADB7 in r26,__SP_L__ |
1271 0864 BEB7 in r27,__SP_H__ |
1272 0866 1796 adiw r26,7 |
1273 0868 ADBF out __SP_L__,r26 |
1274 .L186: |
1275 086a 8091 0000 lds r24,MotorenEin |
1276 086e 8823 tst r24 |
1277 0870 01F4 brne .L113 |
1278 0872 6EE6 ldi r22,lo8(110) |
1279 0874 70E0 ldi r23,hi8(110) |
1280 0876 8981 ldd r24,Y+1 |
1281 0878 0E94 0000 call Piep |
1282 .L113: |
1283 087c 80E0 ldi r24,lo8(0) |
1284 087e 0E94 0000 call LipoDetection |
1285 0882 8091 0000 lds r24,EE_Parameter+39 |
1286 0886 0E94 0000 call LIBFC_ReceiverInit |
1287 088a 00C0 rjmp .L145 |
1288 .L114: |
1289 088c E091 0000 lds r30,pRxData |
1290 0890 F091 0000 lds r31,(pRxData)+1 |
1291 0894 8081 ld r24,Z |
1292 0896 9927 clr r25 |
1293 0898 87FD sbrc r24,7 |
1294 089a 9095 com r25 |
1295 089c 9093 0000 sts (PPM_in+26)+1,r25 |
1296 08a0 8093 0000 sts PPM_in+26,r24 |
1297 08a4 8181 ldd r24,Z+1 |
1298 08a6 9927 clr r25 |
1299 08a8 87FD sbrc r24,7 |
1300 08aa 9095 com r25 |
1301 08ac 9093 0000 sts (PPM_in+28)+1,r25 |
1302 08b0 8093 0000 sts PPM_in+28,r24 |
1303 08b4 8281 ldd r24,Z+2 |
1304 08b6 9927 clr r25 |
1305 08b8 87FD sbrc r24,7 |
1306 08ba 9095 com r25 |
1307 08bc 9093 0000 sts (PPM_in+30)+1,r25 |
1308 08c0 8093 0000 sts PPM_in+30,r24 |
1309 08c4 8381 ldd r24,Z+3 |
1310 08c6 9927 clr r25 |
1311 08c8 87FD sbrc r24,7 |
1312 08ca 9095 com r25 |
1313 08cc 9093 0000 sts (PPM_in+32)+1,r25 |
1314 08d0 8093 0000 sts PPM_in+32,r24 |
1315 08d4 8481 ldd r24,Z+4 |
1316 08d6 9927 clr r25 |
1317 08d8 87FD sbrc r24,7 |
1318 08da 9095 com r25 |
1319 08dc 9093 0000 sts (PPM_in+34)+1,r25 |
1320 08e0 8093 0000 sts PPM_in+34,r24 |
1321 08e4 8581 ldd r24,Z+5 |
1322 08e6 9927 clr r25 |
1323 08e8 87FD sbrc r24,7 |
1324 08ea 9095 com r25 |
1325 08ec 9093 0000 sts (PPM_in+36)+1,r25 |
1326 08f0 8093 0000 sts PPM_in+36,r24 |
1327 08f4 8681 ldd r24,Z+6 |
1328 08f6 9927 clr r25 |
1329 08f8 87FD sbrc r24,7 |
1330 08fa 9095 com r25 |
1331 08fc 9093 0000 sts (PPM_in+38)+1,r25 |
1332 0900 8093 0000 sts PPM_in+38,r24 |
1333 0904 8781 ldd r24,Z+7 |
1334 0906 9927 clr r25 |
1335 0908 87FD sbrc r24,7 |
1336 090a 9095 com r25 |
1337 090c 9093 0000 sts (PPM_in+40)+1,r25 |
1338 0910 8093 0000 sts PPM_in+40,r24 |
1339 0914 8085 ldd r24,Z+8 |
1340 0916 9927 clr r25 |
1341 0918 87FD sbrc r24,7 |
1342 091a 9095 com r25 |
1343 091c 9093 0000 sts (PPM_in+42)+1,r25 |
1344 0920 8093 0000 sts PPM_in+42,r24 |
1345 0924 8185 ldd r24,Z+9 |
1346 0926 9927 clr r25 |
1347 0928 87FD sbrc r24,7 |
1348 092a 9095 com r25 |
1349 092c 9093 0000 sts (PPM_in+44)+1,r25 |
1350 0930 8093 0000 sts PPM_in+44,r24 |
1351 0934 8285 ldd r24,Z+10 |
1352 0936 9927 clr r25 |
1353 0938 87FD sbrc r24,7 |
1354 093a 9095 com r25 |
1355 093c 9093 0000 sts (PPM_in+46)+1,r25 |
1356 0940 8093 0000 sts PPM_in+46,r24 |
1357 0944 8385 ldd r24,Z+11 |
1358 0946 9927 clr r25 |
1359 0948 87FD sbrc r24,7 |
1360 094a 9095 com r25 |
1361 094c 9093 0000 sts (PPM_in+48)+1,r25 |
1362 0950 8093 0000 sts PPM_in+48,r24 |
1363 0954 00C0 rjmp .L145 |
1364 .L115: |
1365 0956 E091 0000 lds r30,pRxData |
1366 095a F091 0000 lds r31,(pRxData)+1 |
1367 095e 8081 ld r24,Z |
1368 0960 0E94 0000 call I2C_ReadBLConfig |
1369 0964 8A83 std Y+2,r24 |
1370 0966 8823 tst r24 |
1371 0968 01F4 brne .L116 |
1372 096a 81E0 ldi r24,lo8(1) |
1373 096c 8983 std Y+1,r24 |
1374 096e 00C0 rjmp .L118 |
1375 .L116: |
1376 0970 1982 std Y+1,__zero_reg__ |
1377 .L118: |
1378 0972 8091 0000 lds r24,UebertragungAbgeschlossen |
1379 0976 8823 tst r24 |
1380 0978 01F0 breq .L118 |
1381 097a 88E0 ldi r24,lo8(8) |
1382 097c 90E0 ldi r25,hi8(8) |
1383 097e 9F93 push r25 |
1384 0980 8F93 push r24 |
1385 0982 80E0 ldi r24,lo8(BLConfig) |
1386 0984 90E0 ldi r25,hi8(BLConfig) |
1387 0986 9F93 push r25 |
1388 0988 8F93 push r24 |
1389 098a 21E0 ldi r18,lo8(1) |
1390 098c 30E0 ldi r19,hi8(1) |
1391 098e 3F93 push r19 |
1392 0990 2F93 push r18 |
1393 0992 8091 0000 lds r24,pRxData |
1394 0996 9091 0000 lds r25,(pRxData)+1 |
1395 099a 9F93 push r25 |
1396 099c 8F93 push r24 |
1397 099e 3F93 push r19 |
1398 09a0 2F93 push r18 |
1399 09a2 CE01 movw r24,r28 |
1400 09a4 0296 adiw r24,2 |
1401 09a6 9F93 push r25 |
1402 09a8 8F93 push r24 |
1403 09aa 3F93 push r19 |
1404 09ac 2F93 push r18 |
1405 09ae CE01 movw r24,r28 |
1406 09b0 820F add r24,r18 |
1407 09b2 931F adc r25,r19 |
1408 09b4 9F93 push r25 |
1409 09b6 8F93 push r24 |
1410 09b8 84E0 ldi r24,lo8(4) |
1411 09ba 8F93 push r24 |
1412 09bc 81E0 ldi r24,lo8(1) |
1413 09be 8F93 push r24 |
1414 09c0 85E5 ldi r24,lo8(85) |
1415 09c2 8F93 push r24 |
1416 09c4 0E94 0000 call SendOutData |
1417 09c8 EDB7 in r30,__SP_L__ |
1418 09ca FEB7 in r31,__SP_H__ |
1419 09cc 7396 adiw r30,19 |
1420 09ce 00C0 rjmp .L181 |
1421 .L121: |
1422 09d0 8091 0000 lds r24,RxDataLen |
1423 09d4 8930 cpi r24,lo8(9) |
1424 09d6 00F4 brsh .+2 |
1425 09d8 00C0 rjmp .L145 |
1426 09da 2091 0000 lds r18,pRxData |
1427 09de 3091 0000 lds r19,(pRxData)+1 |
1428 09e2 2F5F subi r18,lo8(-(1)) |
1429 09e4 3F4F sbci r19,hi8(-(1)) |
1430 09e6 88E0 ldi r24,lo8(8) |
1431 09e8 A0E0 ldi r26,lo8(BLConfig) |
1432 09ea B0E0 ldi r27,hi8(BLConfig) |
1433 09ec F901 movw r30,r18 |
1434 09ee 0190 ld __tmp_reg__,Z+ |
1435 09f0 0D92 st X+,__tmp_reg__ |
1436 09f2 8A95 dec r24 |
1437 09f4 01F4 brne .-8 |
1438 09f6 D901 movw r26,r18 |
1439 09f8 8E91 ld r24,-X |
1440 09fa 0E94 0000 call I2C_WriteBLConfig |
1441 09fe 8A83 std Y+2,r24 |
1442 0a00 8823 tst r24 |
1443 0a02 01F4 brne .L123 |
1444 0a04 81E0 ldi r24,lo8(1) |
1445 0a06 8983 std Y+1,r24 |
1446 0a08 00C0 rjmp .L125 |
1447 .L123: |
1448 0a0a 1982 std Y+1,__zero_reg__ |
1449 .L125: |
1450 0a0c 8091 0000 lds r24,UebertragungAbgeschlossen |
1451 0a10 8823 tst r24 |
1452 0a12 01F0 breq .L125 |
1453 0a14 21E0 ldi r18,lo8(1) |
1454 0a16 30E0 ldi r19,hi8(1) |
1455 0a18 3F93 push r19 |
1456 0a1a 2F93 push r18 |
1457 0a1c CE01 movw r24,r28 |
1458 0a1e 0296 adiw r24,2 |
1459 0a20 9F93 push r25 |
1460 0a22 8F93 push r24 |
1461 0a24 3F93 push r19 |
1462 0a26 2F93 push r18 |
1463 0a28 CE01 movw r24,r28 |
1464 0a2a 820F add r24,r18 |
1465 0a2c 931F adc r25,r19 |
1466 0a2e 9F93 push r25 |
1467 0a30 8F93 push r24 |
1468 0a32 82E0 ldi r24,lo8(2) |
1469 0a34 8F93 push r24 |
1470 0a36 81E0 ldi r24,lo8(1) |
1471 0a38 8F93 push r24 |
1472 0a3a 87E5 ldi r24,lo8(87) |
1473 .L185: |
1474 0a3c 8F93 push r24 |
1475 0a3e 0E94 0000 call SendOutData |
1476 0a42 EDB7 in r30,__SP_L__ |
1477 0a44 FEB7 in r31,__SP_H__ |
1478 0a46 3B96 adiw r30,11 |
1479 .L181: |
1480 0a48 EDBF out __SP_L__,r30 |
1481 0a4a 00C0 rjmp .L145 |
1482 .L128: |
1483 0a4c 8091 0000 lds r24,MotorenEin |
1484 0a50 8823 tst r24 |
1485 0a52 01F0 breq .+2 |
1486 0a54 00C0 rjmp .L145 |
1487 0a56 0E94 0000 call LIBFC_GetCPUType |
1488 0a5a 8983 std Y+1,r24 |
1489 0a5c 8230 cpi r24,lo8(2) |
1490 0a5e 01F0 breq .L131 |
1491 0a60 8430 cpi r24,lo8(4) |
1492 0a62 01F0 breq .+2 |
1493 0a64 00C0 rjmp .L145 |
1494 .L131: |
1495 0a66 20E4 ldi r18,lo8(64) |
1496 0a68 30E0 ldi r19,hi8(64) |
1497 /* #APP */ |
1498 0a6a F894 cli |
1499 /* #NOAPP */ |
1500 0a6c 8091 C100 lds r24,193 |
1501 0a70 8F73 andi r24,lo8(63) |
1502 0a72 8093 C100 sts 193,r24 |
1503 0a76 8091 C900 lds r24,201 |
1504 0a7a 8F73 andi r24,lo8(63) |
1505 0a7c 8093 C900 sts 201,r24 |
1506 0a80 8091 C100 lds r24,193 |
1507 0a84 877E andi r24,lo8(-25) |
1508 0a86 8093 C100 sts 193,r24 |
1509 0a8a 8091 C900 lds r24,201 |
1510 0a8e 877E andi r24,lo8(-25) |
1511 0a90 8093 C900 sts 201,r24 |
1512 .L180: |
1513 0a94 8091 C800 lds r24,200 |
1514 0a98 87FF sbrs r24,7 |
1515 0a9a 00C0 rjmp .L173 |
1516 0a9c 8091 CE00 lds r24,206 |
1517 0aa0 00C0 rjmp .L180 |
1518 .L173: |
1519 0aa2 8091 C000 lds r24,192 |
1520 0aa6 87FF sbrs r24,7 |
1521 0aa8 00C0 rjmp .L175 |
1522 0aaa 8091 C600 lds r24,198 |
1523 0aae 00C0 rjmp .L173 |
1524 .L175: |
1525 0ab0 E091 0000 lds r30,pRxData |
1526 0ab4 F091 0000 lds r31,(pRxData)+1 |
1527 0ab8 E081 ld r30,Z |
1528 0aba E130 cpi r30,lo8(1) |
1529 0abc 01F4 brne .L138 |
1530 0abe 82E0 ldi r24,lo8(2) |
1531 0ac0 8093 0000 sts ReceiverUpdateModeActive,r24 |
1532 0ac4 00C0 rjmp .L139 |
1533 .L138: |
1534 0ac6 E436 cpi r30,lo8(100) |
1535 0ac8 01F4 brne .L140 |
1536 0aca 21E8 ldi r18,lo8(129) |
1537 0acc 30E0 ldi r19,hi8(129) |
1538 .L140: |
1539 0ace 81E0 ldi r24,lo8(1) |
1540 0ad0 8093 0000 sts ReceiverUpdateModeActive,r24 |
1541 0ad4 832F mov r24,r19 |
1542 0ad6 9927 clr r25 |
1543 0ad8 8093 CD00 sts 205,r24 |
1544 0adc 2093 CC00 sts 204,r18 |
1545 0ae0 8091 CD00 lds r24,205 |
1546 0ae4 8093 C500 sts 197,r24 |
1547 0ae8 8091 CC00 lds r24,204 |
1548 0aec 8093 C400 sts 196,r24 |
1549 0af0 8091 CA00 lds r24,202 |
1550 0af4 8F7D andi r24,lo8(-33) |
1551 0af6 8093 CA00 sts 202,r24 |
1552 0afa 8091 CA00 lds r24,202 |
1553 0afe 8F7E andi r24,lo8(-17) |
1554 0b00 8093 CA00 sts 202,r24 |
1555 0b04 8091 C900 lds r24,201 |
1556 0b08 8B7F andi r24,lo8(-5) |
1557 0b0a 8093 C900 sts 201,r24 |
1558 0b0e 8091 CA00 lds r24,202 |
1559 0b12 8460 ori r24,lo8(4) |
1560 0b14 8093 CA00 sts 202,r24 |
1561 0b18 8091 CA00 lds r24,202 |
1562 0b1c 8260 ori r24,lo8(2) |
1563 0b1e 8093 CA00 sts 202,r24 |
1564 .L139: |
1565 0b22 8091 CA00 lds r24,202 |
1566 0b26 877F andi r24,lo8(-9) |
1567 0b28 8093 CA00 sts 202,r24 |
1568 0b2c 8091 C200 lds r24,194 |
1569 0b30 877F andi r24,lo8(-9) |
1570 0b32 8093 C200 sts 194,r24 |
1571 0b36 8091 C900 lds r24,201 |
1572 0b3a 8E7F andi r24,lo8(-2) |
1573 0b3c 8093 C900 sts 201,r24 |
1574 0b40 8091 C100 lds r24,193 |
1575 0b44 8861 ori r24,lo8(24) |
1576 0b46 8093 C100 sts 193,r24 |
1577 0b4a 8091 C900 lds r24,201 |
1578 0b4e 8861 ori r24,lo8(24) |
1579 0b50 8093 C900 sts 201,r24 |
1580 0b54 8091 C100 lds r24,193 |
1581 0b58 8068 ori r24,lo8(-128) |
1582 0b5a 8093 C100 sts 193,r24 |
1583 0b5e 8091 C900 lds r24,201 |
1584 0b62 8068 ori r24,lo8(-128) |
1585 0b64 8093 C900 sts 201,r24 |
1586 0b68 1092 6E00 sts 110,__zero_reg__ |
1587 0b6c 1092 6F00 sts 111,__zero_reg__ |
1588 0b70 1092 7000 sts 112,__zero_reg__ |
1589 /* #APP */ |
1590 0b74 7894 sei |
1591 /* #NOAPP */ |
1592 .L145: |
1593 0b76 8091 0000 lds r24,RxdBuffer+2 |
1594 0b7a 9927 clr r25 |
1595 0b7c 8436 cpi r24,100 |
1596 0b7e 9105 cpc r25,__zero_reg__ |
1597 0b80 01F4 brne .+2 |
1598 0b82 00C0 rjmp .L160 |
1599 0b84 8536 cpi r24,101 |
1600 0b86 9105 cpc r25,__zero_reg__ |
1601 0b88 04F4 brge .L169 |
1602 0b8a 8136 cpi r24,97 |
1603 0b8c 9105 cpc r25,__zero_reg__ |
1604 0b8e 01F4 brne .+2 |
1605 0b90 00C0 rjmp .L154 |
1606 0b92 8236 cpi r24,98 |
1607 0b94 9105 cpc r25,__zero_reg__ |
1608 0b96 04F4 brge .L170 |
1609 0b98 8B34 cpi r24,75 |
1610 0b9a 9105 cpc r25,__zero_reg__ |
1611 0b9c 01F4 brne .+2 |
1612 0b9e 00C0 rjmp .L153 |
1613 0ba0 00C0 rjmp .L65 |
1614 .L170: |
1615 0ba2 8236 cpi r24,98 |
1616 0ba4 9105 cpc r25,__zero_reg__ |
1617 0ba6 01F4 brne .+2 |
1618 0ba8 00C0 rjmp .L156 |
1619 0baa 8336 cpi r24,99 |
1620 0bac 9105 cpc r25,__zero_reg__ |
1621 0bae 01F4 brne .+2 |
1622 0bb0 00C0 rjmp .L157 |
1623 0bb2 00C0 rjmp .L65 |
1624 .L169: |
1625 0bb4 8C36 cpi r24,108 |
1626 0bb6 9105 cpc r25,__zero_reg__ |
1627 0bb8 01F4 brne .+2 |
1628 0bba 00C0 rjmp .L165 |
1629 0bbc 8D36 cpi r24,109 |
1630 0bbe 9105 cpc r25,__zero_reg__ |
1631 0bc0 04F4 brge .L171 |
1632 0bc2 8736 cpi r24,103 |
1633 0bc4 9105 cpc r25,__zero_reg__ |
1634 0bc6 01F4 brne .+2 |
1635 0bc8 00C0 rjmp .L167 |
1636 0bca 8836 cpi r24,104 |
1637 0bcc 9105 cpc r25,__zero_reg__ |
1638 0bce 01F4 brne .+2 |
1639 0bd0 00C0 rjmp .L162 |
1640 0bd2 00C0 rjmp .L65 |
1641 .L171: |
1642 0bd4 8437 cpi r24,116 |
1643 0bd6 9105 cpc r25,__zero_reg__ |
1644 0bd8 01F0 breq .L147 |
1645 0bda 8637 cpi r24,118 |
1646 0bdc 9105 cpc r25,__zero_reg__ |
1647 0bde 01F4 brne .+2 |
1648 0be0 00C0 rjmp .L166 |
1649 0be2 00C0 rjmp .L65 |
1650 .L147: |
1651 0be4 8091 0000 lds r24,AnzahlEmpfangsBytes |
1652 0be8 A091 0000 lds r26,pRxData |
1653 0bec B091 0000 lds r27,(pRxData)+1 |
1654 0bf0 8031 cpi r24,lo8(16) |
1655 0bf2 00F0 brlo .L148 |
1656 0bf4 80E1 ldi r24,lo8(16) |
1657 0bf6 E0E0 ldi r30,lo8(MotorTest) |
1658 0bf8 F0E0 ldi r31,hi8(MotorTest) |
1659 0bfa 0D90 ld __tmp_reg__,X+ |
1660 0bfc 0192 st Z+,__tmp_reg__ |
1661 0bfe 8A95 dec r24 |
1662 0c00 01F4 brne .-8 |
1663 0c02 00C0 rjmp .L150 |
1664 .L148: |
1665 0c04 8D91 ld r24,X+ |
1666 0c06 9D91 ld r25,X+ |
1667 0c08 0D90 ld __tmp_reg__,X+ |
1668 0c0a BC91 ld r27,X |
1669 0c0c A02D mov r26,__tmp_reg__ |
1670 0c0e 8093 0000 sts MotorTest,r24 |
1671 0c12 9093 0000 sts (MotorTest)+1,r25 |
1672 0c16 A093 0000 sts (MotorTest)+2,r26 |
1673 0c1a B093 0000 sts (MotorTest)+3,r27 |
1674 .L150: |
1675 0c1e 8091 0000 lds r24,UebertragungAbgeschlossen |
1676 0c22 8823 tst r24 |
1677 0c24 01F0 breq .L150 |
1678 0c26 1F92 push __zero_reg__ |
1679 0c28 8091 0000 lds r24,MeineSlaveAdresse |
1680 0c2c 8F93 push r24 |
1681 0c2e 84E5 ldi r24,lo8(84) |
1682 0c30 8F93 push r24 |
1683 0c32 0E94 0000 call SendOutData |
1684 0c36 8AEF ldi r24,lo8(-6) |
1685 0c38 8093 0000 sts PC_MotortestActive,r24 |
1686 0c3c 8FEF ldi r24,lo8(-1) |
1687 0c3e 8093 0000 sts PcZugriff,r24 |
1688 0c42 80EA ldi r24,lo8(4000) |
1689 0c44 9FE0 ldi r25,hi8(4000) |
1690 0c46 0E94 0000 call SetDelay |
1691 0c4a 9093 0000 sts (AboTimeOut)+1,r25 |
1692 0c4e 8093 0000 sts AboTimeOut,r24 |
1693 0c52 0F90 pop __tmp_reg__ |
1694 0c54 0F90 pop __tmp_reg__ |
1695 0c56 0F90 pop __tmp_reg__ |
1696 0c58 00C0 rjmp .L65 |
1697 .L153: |
1698 0c5a E091 0000 lds r30,pRxData |
1699 0c5e F091 0000 lds r31,(pRxData)+1 |
1700 0c62 8081 ld r24,Z |
1701 0c64 9181 ldd r25,Z+1 |
1702 0c66 9093 0000 sts (KompassValue)+1,r25 |
1703 0c6a 8093 0000 sts KompassValue,r24 |
1704 0c6e 00C0 rjmp .L65 |
1705 .L154: |
1706 0c70 E091 0000 lds r30,pRxData |
1707 0c74 F091 0000 lds r31,(pRxData)+1 |
1708 0c78 8081 ld r24,Z |
1709 0c7a 8093 0000 sts DebugTextAnforderung,r24 |
1710 0c7e 8032 cpi r24,lo8(32) |
1711 0c80 00F0 brlo .L183 |
1712 0c82 8FE1 ldi r24,lo8(31) |
1713 0c84 8093 0000 sts DebugTextAnforderung,r24 |
1714 0c88 00C0 rjmp .L183 |
1715 .L156: |
1716 0c8a A091 0000 lds r26,pRxData |
1717 0c8e B091 0000 lds r27,(pRxData)+1 |
1718 0c92 8BE0 ldi r24,lo8(11) |
1719 0c94 E0E0 ldi r30,lo8(ExternControl) |
1720 0c96 F0E0 ldi r31,hi8(ExternControl) |
1721 0c98 0D90 ld __tmp_reg__,X+ |
1722 0c9a 0192 st Z+,__tmp_reg__ |
1723 0c9c 8A95 dec r24 |
1724 0c9e 01F4 brne .-8 |
1725 0ca0 8091 0000 lds r24,ExternControl+9 |
1726 0ca4 8093 0000 sts ConfirmFrame,r24 |
1727 .L183: |
1728 0ca8 8FEF ldi r24,lo8(-1) |
1729 0caa 8093 0000 sts PcZugriff,r24 |
1730 0cae 00C0 rjmp .L65 |
1731 .L157: |
1732 0cb0 8091 0000 lds r24,Intervall3D |
1733 0cb4 9091 0000 lds r25,(Intervall3D)+1 |
1734 0cb8 892B or r24,r25 |
1735 0cba 01F4 brne .L158 |
1736 0cbc E091 0000 lds r30,pRxData |
1737 0cc0 F091 0000 lds r31,(pRxData)+1 |
1738 0cc4 E081 ld r30,Z |
1739 0cc6 EE23 tst r30 |
1740 0cc8 01F0 breq .L158 |
1741 0cca 8AE0 ldi r24,lo8(10) |
1742 0ccc E89F mul r30,r24 |
1743 0cce C001 movw r24,r0 |
1744 0cd0 1124 clr r1 |
1745 0cd2 0E94 0000 call SetDelay |
1746 0cd6 9093 0000 sts (Timer3D)+1,r25 |
1747 0cda 8093 0000 sts Timer3D,r24 |
1748 .L158: |
1749 0cde E091 0000 lds r30,pRxData |
1750 0ce2 F091 0000 lds r31,(pRxData)+1 |
1751 0ce6 9081 ld r25,Z |
1752 0ce8 8AE0 ldi r24,lo8(10) |
1753 0cea 989F mul r25,r24 |
1754 0cec C001 movw r24,r0 |
1755 0cee 1124 clr r1 |
1756 0cf0 9093 0000 sts (Intervall3D)+1,r25 |
1757 0cf4 8093 0000 sts Intervall3D,r24 |
1758 0cf8 00C0 rjmp .L161 |
1759 .L160: |
1760 0cfa 8FEF ldi r24,lo8(-1) |
1761 0cfc 8093 0000 sts PcZugriff,r24 |
1762 0d00 E091 0000 lds r30,pRxData |
1763 0d04 F091 0000 lds r31,(pRxData)+1 |
1764 0d08 9081 ld r25,Z |
1765 0d0a 8AE0 ldi r24,lo8(10) |
1766 0d0c 989F mul r25,r24 |
1767 0d0e C001 movw r24,r0 |
1768 0d10 1124 clr r1 |
1769 0d12 9093 0000 sts (DebugDataIntervall)+1,r25 |
1770 0d16 8093 0000 sts DebugDataIntervall,r24 |
1771 0d1a 892B or r24,r25 |
1772 0d1c 01F0 breq .L161 |
1773 0d1e 81E0 ldi r24,lo8(1) |
1774 0d20 8093 0000 sts DebugDataAnforderung,r24 |
1775 .L161: |
1776 0d24 80EA ldi r24,lo8(4000) |
1777 0d26 9FE0 ldi r25,hi8(4000) |
1778 0d28 0E94 0000 call SetDelay |
1779 0d2c 9093 0000 sts (AboTimeOut)+1,r25 |
1780 0d30 8093 0000 sts AboTimeOut,r24 |
1781 0d34 00C0 rjmp .L65 |
1782 .L162: |
1783 0d36 8FEF ldi r24,lo8(-1) |
1784 0d38 8093 0000 sts PcZugriff,r24 |
1785 0d3c E091 0000 lds r30,pRxData |
1786 0d40 F091 0000 lds r31,(pRxData)+1 |
1787 0d44 9081 ld r25,Z |
1788 0d46 97FD sbrc r25,7 |
1789 0d48 00C0 rjmp .L163 |
1790 0d4a 82E0 ldi r24,lo8(2) |
1791 0d4c 8093 0000 sts DisplayLine,r24 |
1792 0d50 1092 0000 sts (Display_Interval)+1,__zero_reg__ |
1793 0d54 1092 0000 sts Display_Interval,__zero_reg__ |
1794 0d58 00C0 rjmp .L164 |
1795 .L163: |
1796 0d5a 9095 com r25 |
1797 0d5c 8091 0000 lds r24,RemoteKeys |
1798 0d60 892B or r24,r25 |
1799 0d62 8093 0000 sts RemoteKeys,r24 |
1800 0d66 9181 ldd r25,Z+1 |
1801 0d68 8AE0 ldi r24,lo8(10) |
1802 0d6a 989F mul r25,r24 |
1803 0d6c C001 movw r24,r0 |
1804 0d6e 1124 clr r1 |
1805 0d70 9093 0000 sts (Display_Interval)+1,r25 |
1806 0d74 8093 0000 sts Display_Interval,r24 |
1807 0d78 84E0 ldi r24,lo8(4) |
1808 0d7a 8093 0000 sts DisplayLine,r24 |
1809 0d7e 80EA ldi r24,lo8(4000) |
1810 0d80 9FE0 ldi r25,hi8(4000) |
1811 0d82 0E94 0000 call SetDelay |
1812 0d86 9093 0000 sts (AboTimeOut)+1,r25 |
1813 0d8a 8093 0000 sts AboTimeOut,r24 |
1814 .L164: |
1815 0d8e 81E0 ldi r24,lo8(1) |
1816 0d90 8093 0000 sts DebugDisplayAnforderung,r24 |
1817 0d94 00C0 rjmp .L65 |
1818 .L165: |
1819 0d96 8FEF ldi r24,lo8(-1) |
1820 0d98 8093 0000 sts PcZugriff,r24 |
1821 0d9c E091 0000 lds r30,pRxData |
1822 0da0 F091 0000 lds r31,(pRxData)+1 |
1823 0da4 8081 ld r24,Z |
1824 0da6 8093 0000 sts MenuePunkt,r24 |
1825 0daa 81E0 ldi r24,lo8(1) |
1826 0dac 8093 0000 sts DebugDisplayAnforderung1,r24 |
1827 0db0 00C0 rjmp .L65 |
1828 .L166: |
1829 0db2 81E0 ldi r24,lo8(1) |
1830 0db4 8093 0000 sts GetVersionAnforderung,r24 |
1831 0db8 00C0 rjmp .L65 |
1832 .L167: |
1833 0dba 81E0 ldi r24,lo8(1) |
1834 0dbc 8093 0000 sts GetExternalControl,r24 |
1835 .L65: |
1836 0dc0 1092 0000 sts NeuerDatensatzEmpfangen,__zero_reg__ |
1837 0dc4 1092 0000 sts (pRxData)+1,__zero_reg__ |
1838 0dc8 1092 0000 sts pRxData,__zero_reg__ |
1839 0dcc 1092 0000 sts RxDataLen,__zero_reg__ |
1840 .L63: |
1841 /* epilogue: frame size=2 */ |
1842 0dd0 E3E0 ldi r30,3 |
1843 0dd2 CE5F subi r28,-2 |
1844 0dd4 0C94 0000 jmp __epilogue_restores__+30 |
1845 /* epilogue end (size=4) */ |
1846 /* function BearbeiteRxDaten size 1128 (1118) */ |
1848 .global uart_putchar |
1850 uart_putchar: |
1851 /* prologue: frame size=0 */ |
1852 /* prologue end (size=0) */ |
1853 0dd8 982F mov r25,r24 |
1854 .L188: |
1855 0dda 8091 C000 lds r24,192 |
1856 0dde 85FF sbrs r24,5 |
1857 0de0 00C0 rjmp .L188 |
1858 0de2 9093 C600 sts 198,r25 |
1859 /* epilogue: frame size=0 */ |
1860 0de6 0895 ret |
1861 /* epilogue end (size=1) */ |
1862 /* function uart_putchar size 8 (7) */ |
1864 .global UART_Init |
1866 UART_Init: |
1867 /* prologue: frame size=0 */ |
1868 0de8 0F93 push r16 |
1869 0dea 1F93 push r17 |
1870 /* prologue end (size=2) */ |
1871 0dec 88E1 ldi r24,lo8(24) |
1872 0dee 8093 C100 sts 193,r24 |
1873 0df2 8091 C000 lds r24,192 |
1874 0df6 8260 ori r24,lo8(2) |
1875 0df8 8093 C000 sts 192,r24 |
1876 0dfc 8091 C100 lds r24,193 |
1877 0e00 8068 ori r24,lo8(-128) |
1878 0e02 8093 C100 sts 193,r24 |
1879 0e06 8091 C100 lds r24,193 |
1880 0e0a 8064 ori r24,lo8(64) |
1881 0e0c 8093 C100 sts 193,r24 |
1882 0e10 00E0 ldi r16,lo8(0) |
1883 0e12 10E0 ldi r17,hi8(0) |
1884 0e14 0093 C500 sts 197,r16 |
1885 0e18 8AE2 ldi r24,lo8(42) |
1886 0e1a 90E0 ldi r25,hi8(42) |
1887 0e1c 8093 C400 sts 196,r24 |
1888 0e20 8091 0000 lds r24,DebugDataIntervall |
1889 0e24 9091 0000 lds r25,(DebugDataIntervall)+1 |
1890 0e28 0E94 0000 call SetDelay |
1891 0e2c 9093 0000 sts (Debug_Timer)+1,r25 |
1892 0e30 8093 0000 sts Debug_Timer,r24 |
1893 0e34 8CED ldi r24,lo8(220) |
1894 0e36 90E0 ldi r25,hi8(220) |
1895 0e38 0E94 0000 call SetDelay |
1896 0e3c 9093 0000 sts (Kompass_Timer)+1,r25 |
1897 0e40 8093 0000 sts Kompass_Timer,r24 |
1898 0e44 1092 0000 sts VersionInfo,__zero_reg__ |
1899 0e48 8AE5 ldi r24,lo8(90) |
1900 0e4a 8093 0000 sts VersionInfo+1,r24 |
1901 0e4e 83E0 ldi r24,lo8(3) |
1902 0e50 8093 0000 sts VersionInfo+4,r24 |
1903 0e54 8BE0 ldi r24,lo8(11) |
1904 0e56 8093 0000 sts VersionInfo+2,r24 |
1905 0e5a 1092 0000 sts VersionInfo+3,__zero_reg__ |
1906 0e5e 1093 0000 sts (pRxData)+1,r17 |
1907 0e62 0093 0000 sts pRxData,r16 |
1908 0e66 1092 0000 sts RxDataLen,__zero_reg__ |
1909 /* epilogue: frame size=0 */ |
1910 0e6a 1F91 pop r17 |
1911 0e6c 0F91 pop r16 |
1912 0e6e 0895 ret |
1913 /* epilogue end (size=3) */ |
1914 /* function UART_Init size 68 (63) */ |
1916 .section .progmem.data |
1919 __c.0: |
1920 0200 2121 2120 .string "!!! INCOMPATIBLE !!!" |
1920 494E 434F |
1920 4D50 4154 |
1920 4942 4C45 |
1920 2021 2121 |
1921 .text |
1922 .global DatenUebertragung |
1924 DatenUebertragung: |
1925 /* prologue: frame size=16 */ |
1926 0e70 A0E1 ldi r26,lo8(16) |
1927 0e72 B0E0 ldi r27,hi8(16) |
1928 0e74 E0E0 ldi r30,pm_lo8(1f) |
1929 0e76 F0E0 ldi r31,pm_hi8(1f) |
1930 0e78 0C94 0000 jmp __prologue_saves__+24 |
1931 1: |
1932 /* prologue end (size=6) */ |
1933 0e7c 8091 0000 lds r24,UebertragungAbgeschlossen |
1934 0e80 8823 tst r24 |
1935 0e82 01F4 brne .+2 |
1936 0e84 00C0 rjmp .L192 |
1937 0e86 8091 0000 lds r24,AboTimeOut |
1938 0e8a 9091 0000 lds r25,(AboTimeOut)+1 |
1939 0e8e 0E94 0000 call CheckDelay |
1940 0e92 8823 tst r24 |
1941 0e94 01F0 breq .L194 |
1942 0e96 1092 0000 sts (Display_Interval)+1,__zero_reg__ |
1943 0e9a 1092 0000 sts Display_Interval,__zero_reg__ |
1944 0e9e 1092 0000 sts (DebugDataIntervall)+1,__zero_reg__ |
1945 0ea2 1092 0000 sts DebugDataIntervall,__zero_reg__ |
1946 0ea6 1092 0000 sts (Intervall3D)+1,__zero_reg__ |
1947 0eaa 1092 0000 sts Intervall3D,__zero_reg__ |
1948 .L194: |
1949 0eae 8091 0000 lds r24,Display_Interval |
1950 0eb2 9091 0000 lds r25,(Display_Interval)+1 |
1951 0eb6 892B or r24,r25 |
1952 0eb8 01F0 breq .L197 |
1953 0eba 8091 0000 lds r24,Display_Timer |
1954 0ebe 9091 0000 lds r25,(Display_Timer)+1 |
1955 0ec2 0E94 0000 call CheckDelay |
1956 0ec6 8823 tst r24 |
1957 0ec8 01F4 brne .L196 |
1958 .L197: |
1959 0eca 8091 0000 lds r24,DebugDisplayAnforderung |
1960 0ece 8823 tst r24 |
1961 0ed0 01F4 brne .+2 |
1962 0ed2 00C0 rjmp .L195 |
1963 .L196: |
1964 0ed4 8091 0000 lds r24,UebertragungAbgeschlossen |
1965 0ed8 8823 tst r24 |
1966 0eda 01F4 brne .+2 |
1967 0edc 00C0 rjmp .L195 |
1968 0ede 8091 0000 lds r24,DisplayLine |
1969 0ee2 00E0 ldi r16,lo8(DisplayBuff) |
1970 0ee4 10E0 ldi r17,hi8(DisplayBuff) |
1971 0ee6 8430 cpi r24,lo8(4) |
1972 0ee8 00F0 brlo .L198 |
1973 0eea 0E94 0000 call Menu |
1974 0eee 80E5 ldi r24,lo8(80) |
1975 0ef0 90E0 ldi r25,hi8(80) |
1976 0ef2 9F93 push r25 |
1977 0ef4 8F93 push r24 |
1978 0ef6 1F93 push r17 |
1979 0ef8 0F93 push r16 |
1980 0efa 81E0 ldi r24,lo8(1) |
1981 0efc 8F93 push r24 |
1982 0efe 8F93 push r24 |
1983 0f00 88E4 ldi r24,lo8(72) |
1984 0f02 8F93 push r24 |
1985 0f04 0E94 0000 call SendOutData |
1986 0f08 2DB7 in r18,__SP_L__ |
1987 0f0a 3EB7 in r19,__SP_H__ |
1988 0f0c 295F subi r18,lo8(-(7)) |
1989 0f0e 3F4F sbci r19,hi8(-(7)) |
1990 0f10 2DBF out __SP_L__,r18 |
1991 0f12 00C0 rjmp .L199 |
1992 .L198: |
1993 0f14 1092 0000 sts DispPtr,__zero_reg__ |
1994 0f18 80E0 ldi r24,lo8(__c.0) |
1995 0f1a 90E0 ldi r25,hi8(__c.0) |
1996 0f1c 9F93 push r25 |
1997 0f1e 8F93 push r24 |
1998 0f20 80E0 ldi r24,lo8(pm(Menu_Putchar)) |
1999 0f22 90E0 ldi r25,hi8(pm(Menu_Putchar)) |
2000 0f24 9F93 push r25 |
2001 0f26 8F93 push r24 |
2002 0f28 E091 0000 lds r30,_printf_P |
2003 0f2c F091 0000 lds r31,(_printf_P)+1 |
2004 0f30 0995 icall |
2005 0f32 84E1 ldi r24,lo8(20) |
2006 0f34 90E0 ldi r25,hi8(20) |
2007 0f36 9F93 push r25 |
2008 0f38 8F93 push r24 |
2009 0f3a 1F93 push r17 |
2010 0f3c 0F93 push r16 |
2011 0f3e 81E0 ldi r24,lo8(1) |
2012 0f40 90E0 ldi r25,hi8(1) |
2013 0f42 9F93 push r25 |
2014 0f44 8F93 push r24 |
2015 0f46 80E0 ldi r24,lo8(DisplayLine) |
2016 0f48 90E0 ldi r25,hi8(DisplayLine) |
2017 0f4a 9F93 push r25 |
2018 0f4c 8F93 push r24 |
2019 0f4e 82E0 ldi r24,lo8(2) |
2020 0f50 8F93 push r24 |
2021 0f52 81E0 ldi r24,lo8(1) |
2022 0f54 8F93 push r24 |
2023 0f56 88E4 ldi r24,lo8(72) |
2024 0f58 8F93 push r24 |
2025 0f5a 0E94 0000 call SendOutData |
2026 0f5e 8091 0000 lds r24,DisplayLine |
2027 0f62 982F mov r25,r24 |
2028 0f64 8F5F subi r24,lo8(-(1)) |
2029 0f66 8093 0000 sts DisplayLine,r24 |
2030 0f6a 2DB7 in r18,__SP_L__ |
2031 0f6c 3EB7 in r19,__SP_H__ |
2032 0f6e 215F subi r18,lo8(-(15)) |
2033 0f70 3F4F sbci r19,hi8(-(15)) |
2034 0f72 2DBF out __SP_L__,r18 |
2035 0f74 9430 cpi r25,lo8(4) |
2036 0f76 00F0 brlo .L199 |
2037 0f78 1092 0000 sts DisplayLine,__zero_reg__ |
2038 .L199: |
2039 0f7c 8091 0000 lds r24,Display_Interval |
2040 0f80 9091 0000 lds r25,(Display_Interval)+1 |
2041 0f84 0E94 0000 call SetDelay |
2042 0f88 9093 0000 sts (Display_Timer)+1,r25 |
2043 0f8c 8093 0000 sts Display_Timer,r24 |
2044 0f90 1092 0000 sts DebugDisplayAnforderung,__zero_reg__ |
2045 .L195: |
2046 0f94 8091 0000 lds r24,DebugDisplayAnforderung1 |
2047 0f98 8823 tst r24 |
2048 0f9a 01F0 breq .L201 |
2049 0f9c 8091 0000 lds r24,UebertragungAbgeschlossen |
2050 0fa0 8823 tst r24 |
2051 0fa2 01F0 breq .L201 |
2052 0fa4 0E94 0000 call Menu |
2053 0fa8 80E5 ldi r24,lo8(80) |
2054 0faa 90E0 ldi r25,hi8(80) |
2055 0fac 9F93 push r25 |
2056 0fae 8F93 push r24 |
2057 0fb0 80E0 ldi r24,lo8(DisplayBuff) |
2058 0fb2 90E0 ldi r25,hi8(DisplayBuff) |
2059 0fb4 9F93 push r25 |
2060 0fb6 8F93 push r24 |
2061 0fb8 21E0 ldi r18,lo8(1) |
2062 0fba 30E0 ldi r19,hi8(1) |
2063 0fbc 3F93 push r19 |
2064 0fbe 2F93 push r18 |
2065 0fc0 80E0 ldi r24,lo8(MaxMenue) |
2066 0fc2 90E0 ldi r25,hi8(MaxMenue) |
2067 0fc4 9F93 push r25 |
2068 0fc6 8F93 push r24 |
2069 0fc8 3F93 push r19 |
2070 0fca 2F93 push r18 |
2071 0fcc 80E0 ldi r24,lo8(MenuePunkt) |
2072 0fce 90E0 ldi r25,hi8(MenuePunkt) |
2073 0fd0 9F93 push r25 |
2074 0fd2 8F93 push r24 |
2075 0fd4 83E0 ldi r24,lo8(3) |
2076 0fd6 8F93 push r24 |
2077 0fd8 81E0 ldi r24,lo8(1) |
2078 0fda 8F93 push r24 |
2079 0fdc 8CE4 ldi r24,lo8(76) |
2080 0fde 8F93 push r24 |
2081 0fe0 0E94 0000 call SendOutData |
2082 0fe4 1092 0000 sts DebugDisplayAnforderung1,__zero_reg__ |
2083 0fe8 8DB7 in r24,__SP_L__ |
2084 0fea 9EB7 in r25,__SP_H__ |
2085 0fec 0F96 adiw r24,15 |
2086 0fee 8DBF out __SP_L__,r24 |
2087 .L201: |
2088 0ff0 8091 0000 lds r24,GetVersionAnforderung |
2089 0ff4 8823 tst r24 |
2090 0ff6 01F0 breq .L202 |
2091 0ff8 8091 0000 lds r24,UebertragungAbgeschlossen |
2092 0ffc 8823 tst r24 |
2093 0ffe 01F0 breq .L202 |
2094 1000 8AE0 ldi r24,lo8(10) |
2095 1002 90E0 ldi r25,hi8(10) |
2096 1004 9F93 push r25 |
2097 1006 8F93 push r24 |
2098 1008 80E0 ldi r24,lo8(VersionInfo) |
2099 100a 90E0 ldi r25,hi8(VersionInfo) |
2100 100c 9F93 push r25 |
2101 100e 8F93 push r24 |
2102 1010 81E0 ldi r24,lo8(1) |
2103 1012 8F93 push r24 |
2104 1014 8F93 push r24 |
2105 1016 86E5 ldi r24,lo8(86) |
2106 1018 8F93 push r24 |
2107 101a 0E94 0000 call SendOutData |
2108 101e 1092 0000 sts GetVersionAnforderung,__zero_reg__ |
2109 1022 2DB7 in r18,__SP_L__ |
2110 1024 3EB7 in r19,__SP_H__ |
2111 1026 295F subi r18,lo8(-(7)) |
2112 1028 3F4F sbci r19,hi8(-(7)) |
2113 102a 2DBF out __SP_L__,r18 |
2114 .L202: |
2115 102c 8091 0000 lds r24,GetExternalControl |
2116 1030 8823 tst r24 |
2117 1032 01F0 breq .L203 |
2118 1034 8091 0000 lds r24,UebertragungAbgeschlossen |
2119 1038 8823 tst r24 |
2120 103a 01F0 breq .L203 |
2121 103c 8BE0 ldi r24,lo8(11) |
2122 103e 90E0 ldi r25,hi8(11) |
2123 1040 9F93 push r25 |
2124 1042 8F93 push r24 |
2125 1044 80E0 ldi r24,lo8(ExternControl) |
2126 1046 90E0 ldi r25,hi8(ExternControl) |
2127 1048 9F93 push r25 |
2128 104a 8F93 push r24 |
2129 104c 81E0 ldi r24,lo8(1) |
2130 104e 8F93 push r24 |
2131 1050 8091 0000 lds r24,MeineSlaveAdresse |
2132 1054 8F93 push r24 |
2133 1056 87E4 ldi r24,lo8(71) |
2134 1058 8F93 push r24 |
2135 105a 0E94 0000 call SendOutData |
2136 105e 1092 0000 sts GetExternalControl,__zero_reg__ |
2137 1062 8DB7 in r24,__SP_L__ |
2138 1064 9EB7 in r25,__SP_H__ |
2139 1066 0796 adiw r24,7 |
2140 1068 8DBF out __SP_L__,r24 |
2141 .L203: |
2142 106a 8091 0000 lds r24,Kompass_Timer |
2143 106e 9091 0000 lds r25,(Kompass_Timer)+1 |
2144 1072 0E94 0000 call CheckDelay |
2145 1076 8823 tst r24 |
2146 1078 01F4 brne .+2 |
2147 107a 00C0 rjmp .L204 |
2148 107c 8091 0000 lds r24,UebertragungAbgeschlossen |
2149 1080 8823 tst r24 |
2150 1082 01F4 brne .+2 |
2151 1084 00C0 rjmp .L204 |
2152 1086 8091 0000 lds r24,EE_Parameter+28 |
2153 108a 9927 clr r25 |
2154 108c 880F lsl r24 |
2155 108e 991F rol r25 |
2156 1090 880F lsl r24 |
2157 1092 991F rol r25 |
2158 1094 7C01 movw r14,r24 |
2159 1096 0027 clr r16 |
2160 1098 F7FC sbrc r15,7 |
2161 109a 0095 com r16 |
2162 109c 102F mov r17,r16 |
2163 109e 8091 0000 lds r24,IntegralNick |
2164 10a2 9091 0000 lds r25,(IntegralNick)+1 |
2165 10a6 A091 0000 lds r26,(IntegralNick)+2 |
2166 10aa B091 0000 lds r27,(IntegralNick)+3 |
2167 10ae BC01 movw r22,r24 |
2168 10b0 CD01 movw r24,r26 |
2169 10b2 A801 movw r20,r16 |
2170 10b4 9701 movw r18,r14 |
2171 10b6 0E94 0000 call __divmodsi4 |
2172 10ba 3093 0000 sts (WinkelOut)+1,r19 |
2173 10be 2093 0000 sts WinkelOut,r18 |
2174 10c2 8091 0000 lds r24,IntegralRoll |
2175 10c6 9091 0000 lds r25,(IntegralRoll)+1 |
2176 10ca A091 0000 lds r26,(IntegralRoll)+2 |
2177 10ce B091 0000 lds r27,(IntegralRoll)+3 |
2178 10d2 BC01 movw r22,r24 |
2179 10d4 CD01 movw r24,r26 |
2180 10d6 A801 movw r20,r16 |
2181 10d8 9701 movw r18,r14 |
2182 10da 0E94 0000 call __divmodsi4 |
2183 10de 3093 0000 sts (WinkelOut+2)+1,r19 |
2184 10e2 2093 0000 sts WinkelOut+2,r18 |
2185 10e6 8091 0000 lds r24,Parameter_UserParam1 |
2186 10ea 8093 0000 sts WinkelOut+4,r24 |
2187 10ee 8091 0000 lds r24,Parameter_UserParam2 |
2188 10f2 8093 0000 sts WinkelOut+5,r24 |
2189 10f6 88E0 ldi r24,lo8(8) |
2190 10f8 90E0 ldi r25,hi8(8) |
2191 10fa 9F93 push r25 |
2192 10fc 8F93 push r24 |
2193 10fe 80E0 ldi r24,lo8(WinkelOut) |
2194 1100 90E0 ldi r25,hi8(WinkelOut) |
2195 1102 9F93 push r25 |
2196 1104 8F93 push r24 |
2197 1106 81E0 ldi r24,lo8(1) |
2198 1108 8F93 push r24 |
2199 110a 83E0 ldi r24,lo8(3) |
2200 110c 8F93 push r24 |
2201 110e 8BE6 ldi r24,lo8(107) |
2202 1110 8F93 push r24 |
2203 1112 0E94 0000 call SendOutData |
2204 1116 8091 0000 lds r24,WinkelOut+6 |
2205 111a 2DB7 in r18,__SP_L__ |
2206 111c 3EB7 in r19,__SP_H__ |
2207 111e 295F subi r18,lo8(-(7)) |
2208 1120 3F4F sbci r19,hi8(-(7)) |
2209 1122 2DBF out __SP_L__,r18 |
2210 1124 8530 cpi r24,lo8(5) |
2211 1126 00F0 brlo .L205 |
2212 1128 86E0 ldi r24,lo8(6) |
2213 112a 8093 0000 sts WinkelOut+6,r24 |
2214 .L205: |
2215 112e 83E6 ldi r24,lo8(99) |
2216 1130 90E0 ldi r25,hi8(99) |
2217 1132 0E94 0000 call SetDelay |
2218 1136 9093 0000 sts (Kompass_Timer)+1,r25 |
2219 113a 8093 0000 sts Kompass_Timer,r24 |
2220 .L204: |
2221 113e 8091 0000 lds r24,DebugDataIntervall |
2222 1142 9091 0000 lds r25,(DebugDataIntervall)+1 |
2223 1146 892B or r24,r25 |
2224 1148 01F0 breq .L208 |
2225 114a 8091 0000 lds r24,Debug_Timer |
2226 114e 9091 0000 lds r25,(Debug_Timer)+1 |
2227 1152 0E94 0000 call CheckDelay |
2228 1156 8823 tst r24 |
2229 1158 01F4 brne .L207 |
2230 .L208: |
2231 115a 8091 0000 lds r24,DebugDataAnforderung |
2232 115e 8823 tst r24 |
2233 1160 01F0 breq .L206 |
2234 .L207: |
2235 1162 8091 0000 lds r24,UebertragungAbgeschlossen |
2236 1166 8823 tst r24 |
2237 1168 01F0 breq .L206 |
2238 116a 0E94 0000 call CopyDebugValues |
2239 116e 82E4 ldi r24,lo8(66) |
2240 1170 90E0 ldi r25,hi8(66) |
2241 1172 9F93 push r25 |
2242 1174 8F93 push r24 |
2243 1176 80E0 ldi r24,lo8(DebugOut) |
2244 1178 90E0 ldi r25,hi8(DebugOut) |
2245 117a 9F93 push r25 |
2246 117c 8F93 push r24 |
2247 117e 81E0 ldi r24,lo8(1) |
2248 1180 8F93 push r24 |
2249 1182 8F93 push r24 |
2250 1184 84E4 ldi r24,lo8(68) |
2251 1186 8F93 push r24 |
2252 1188 0E94 0000 call SendOutData |
2253 118c 1092 0000 sts DebugDataAnforderung,__zero_reg__ |
2254 1190 8DB7 in r24,__SP_L__ |
2255 1192 9EB7 in r25,__SP_H__ |
2256 1194 0796 adiw r24,7 |
2257 1196 8DBF out __SP_L__,r24 |
2258 1198 8091 0000 lds r24,DebugDataIntervall |
2259 119c 9091 0000 lds r25,(DebugDataIntervall)+1 |
2260 11a0 0097 sbiw r24,0 |
2261 11a2 01F0 breq .L206 |
2262 11a4 0E94 0000 call SetDelay |
2263 11a8 9093 0000 sts (Debug_Timer)+1,r25 |
2264 11ac 8093 0000 sts Debug_Timer,r24 |
2265 .L206: |
2266 11b0 8091 0000 lds r24,Intervall3D |
2267 11b4 9091 0000 lds r25,(Intervall3D)+1 |
2268 11b8 892B or r24,r25 |
2269 11ba 01F4 brne .+2 |
2270 11bc 00C0 rjmp .L210 |
2271 11be 8091 0000 lds r24,Timer3D |
2272 11c2 9091 0000 lds r25,(Timer3D)+1 |
2273 11c6 0E94 0000 call CheckDelay |
2274 11ca 8823 tst r24 |
2275 11cc 01F4 brne .+2 |
2276 11ce 00C0 rjmp .L210 |
2277 11d0 8091 0000 lds r24,UebertragungAbgeschlossen |
2278 11d4 8823 tst r24 |
2279 11d6 01F4 brne .+2 |
2280 11d8 00C0 rjmp .L210 |
2281 11da 8091 0000 lds r24,EE_Parameter+28 |
2282 11de 9927 clr r25 |
2283 11e0 880F lsl r24 |
2284 11e2 991F rol r25 |
2285 11e4 880F lsl r24 |
2286 11e6 991F rol r25 |
2287 11e8 7C01 movw r14,r24 |
2288 11ea 0027 clr r16 |
2289 11ec F7FC sbrc r15,7 |
2290 11ee 0095 com r16 |
2291 11f0 102F mov r17,r16 |
2292 11f2 8091 0000 lds r24,IntegralNick |
2293 11f6 9091 0000 lds r25,(IntegralNick)+1 |
2294 11fa A091 0000 lds r26,(IntegralNick)+2 |
2295 11fe B091 0000 lds r27,(IntegralNick)+3 |
2296 1202 BC01 movw r22,r24 |
2297 1204 CD01 movw r24,r26 |
2298 1206 A801 movw r20,r16 |
2299 1208 9701 movw r18,r14 |
2300 120a 0E94 0000 call __divmodsi4 |
2301 120e 3093 0000 sts (Data3D)+1,r19 |
2302 1212 2093 0000 sts Data3D,r18 |
2303 1216 8091 0000 lds r24,IntegralRoll |
2304 121a 9091 0000 lds r25,(IntegralRoll)+1 |
2305 121e A091 0000 lds r26,(IntegralRoll)+2 |
2306 1222 B091 0000 lds r27,(IntegralRoll)+3 |
2307 1226 BC01 movw r22,r24 |
2308 1228 CD01 movw r24,r26 |
2309 122a A801 movw r20,r16 |
2310 122c 9701 movw r18,r14 |
2311 122e 0E94 0000 call __divmodsi4 |
2312 1232 3093 0000 sts (Data3D+2)+1,r19 |
2313 1236 2093 0000 sts Data3D+2,r18 |
2314 123a 2091 0000 lds r18,ErsatzKompass |
2315 123e 3091 0000 lds r19,(ErsatzKompass)+1 |
2316 1242 4091 0000 lds r20,(ErsatzKompass)+2 |
2317 1246 5091 0000 lds r21,(ErsatzKompass)+3 |
2318 124a DA01 movw r26,r20 |
2319 124c C901 movw r24,r18 |
2320 124e 63E0 ldi r22,3 |
2321 1250 880F 1: lsl r24 |
2322 1252 991F rol r25 |
2323 1254 AA1F rol r26 |
2324 1256 BB1F rol r27 |
2325 1258 6A95 dec r22 |
2326 125a 01F4 brne 1b |
2327 125c 820F add r24,r18 |
2328 125e 931F adc r25,r19 |
2329 1260 A41F adc r26,r20 |
2330 1262 B51F adc r27,r21 |
2331 1264 820F add r24,r18 |
2332 1266 931F adc r25,r19 |
2333 1268 A41F adc r26,r20 |
2334 126a B51F adc r27,r21 |
2335 126c 2091 0000 lds r18,GIER_GRAD_FAKTOR |
2336 1270 3091 0000 lds r19,(GIER_GRAD_FAKTOR)+1 |
2337 1274 4091 0000 lds r20,(GIER_GRAD_FAKTOR)+2 |
2338 1278 5091 0000 lds r21,(GIER_GRAD_FAKTOR)+3 |
2339 127c BC01 movw r22,r24 |
2340 127e CD01 movw r24,r26 |
2341 1280 0E94 0000 call __divmodsi4 |
2342 1284 3093 0000 sts (Data3D+4)+1,r19 |
2343 1288 2093 0000 sts Data3D+4,r18 |
2344 128c 8091 0000 lds r24,SummeNick |
2345 1290 9091 0000 lds r25,(SummeNick)+1 |
2346 1294 A091 0000 lds r26,(SummeNick)+2 |
2347 1298 B091 0000 lds r27,(SummeNick)+3 |
2348 129c 49E0 ldi r20,9 |
2349 129e B595 1: asr r27 |
2350 12a0 A795 ror r26 |
2351 12a2 9795 ror r25 |
2352 12a4 8795 ror r24 |
2353 12a6 4A95 dec r20 |
2354 12a8 01F4 brne 1b |
2355 12aa 8093 0000 sts Data3D+6,r24 |
2356 12ae 8091 0000 lds r24,SummeRoll |
2357 12b2 9091 0000 lds r25,(SummeRoll)+1 |
2358 12b6 A091 0000 lds r26,(SummeRoll)+2 |
2359 12ba B091 0000 lds r27,(SummeRoll)+3 |
2360 12be 39E0 ldi r19,9 |
2361 12c0 B595 1: asr r27 |
2362 12c2 A795 ror r26 |
2363 12c4 9795 ror r25 |
2364 12c6 8795 ror r24 |
2365 12c8 3A95 dec r19 |
2366 12ca 01F4 brne 1b |
2367 12cc 8093 0000 sts Data3D+7,r24 |
2368 12d0 8091 0000 lds r24,Mess_Integral_Gier |
2369 12d4 9091 0000 lds r25,(Mess_Integral_Gier)+1 |
2370 12d8 A091 0000 lds r26,(Mess_Integral_Gier)+2 |
2371 12dc B091 0000 lds r27,(Mess_Integral_Gier)+3 |
2372 12e0 29E0 ldi r18,9 |
2373 12e2 B595 1: asr r27 |
2374 12e4 A795 ror r26 |
2375 12e6 9795 ror r25 |
2376 12e8 8795 ror r24 |
2377 12ea 2A95 dec r18 |
2378 12ec 01F4 brne 1b |
2379 12ee 8093 0000 sts Data3D+8,r24 |
2380 12f2 8EE0 ldi r24,lo8(14) |
2381 12f4 90E0 ldi r25,hi8(14) |
2382 12f6 9F93 push r25 |
2383 12f8 8F93 push r24 |
2384 12fa 80E0 ldi r24,lo8(Data3D) |
2385 12fc 90E0 ldi r25,hi8(Data3D) |
2386 12fe 9F93 push r25 |
2387 1300 8F93 push r24 |
2388 1302 81E0 ldi r24,lo8(1) |
2389 1304 8F93 push r24 |
2390 1306 8F93 push r24 |
2391 1308 83E4 ldi r24,lo8(67) |
2392 130a 8F93 push r24 |
2393 130c 0E94 0000 call SendOutData |
2394 1310 8091 0000 lds r24,Intervall3D |
2395 1314 9091 0000 lds r25,(Intervall3D)+1 |
2396 1318 0E94 0000 call SetDelay |
2397 131c 9093 0000 sts (Timer3D)+1,r25 |
2398 1320 8093 0000 sts Timer3D,r24 |
2399 1324 2DB7 in r18,__SP_L__ |
2400 1326 3EB7 in r19,__SP_H__ |
2401 1328 295F subi r18,lo8(-(7)) |
2402 132a 3F4F sbci r19,hi8(-(7)) |
2403 132c 2DBF out __SP_L__,r18 |
2404 .L210: |
2405 132e 8091 0000 lds r24,DebugTextAnforderung |
2406 1332 8F3F cpi r24,lo8(-1) |
2407 1334 01F0 breq .L211 |
2408 1336 9927 clr r25 |
2409 1338 04E0 ldi r16,4 |
2410 133a 880F 1: lsl r24 |
2411 133c 991F rol r25 |
2412 133e 0A95 dec r16 |
2413 1340 01F4 brne 1b |
2414 1342 8050 subi r24,lo8(-(ANALOG_TEXT)) |
2415 1344 9040 sbci r25,hi8(-(ANALOG_TEXT)) |
2416 1346 40E1 ldi r20,lo8(16) |
2417 1348 50E0 ldi r21,hi8(16) |
2418 134a BC01 movw r22,r24 |
2419 134c CE01 movw r24,r28 |
2420 134e 0196 adiw r24,1 |
2421 1350 0E94 0000 call memcpy_P |
2422 1354 80E1 ldi r24,lo8(16) |
2423 1356 90E0 ldi r25,hi8(16) |
2424 1358 9F93 push r25 |
2425 135a 8F93 push r24 |
2426 135c CE01 movw r24,r28 |
2427 135e 0196 adiw r24,1 |
2428 1360 9F93 push r25 |
2429 1362 8F93 push r24 |
2430 1364 81E0 ldi r24,lo8(1) |
2431 1366 90E0 ldi r25,hi8(1) |
2432 1368 9F93 push r25 |
2433 136a 8F93 push r24 |
2434 136c 80E0 ldi r24,lo8(DebugTextAnforderung) |
2435 136e 90E0 ldi r25,hi8(DebugTextAnforderung) |
2436 1370 9F93 push r25 |
2437 1372 8F93 push r24 |
2438 1374 82E0 ldi r24,lo8(2) |
2439 1376 8F93 push r24 |
2440 1378 81E0 ldi r24,lo8(1) |
2441 137a 8F93 push r24 |
2442 137c 81E4 ldi r24,lo8(65) |
2443 137e 8F93 push r24 |
2444 1380 0E94 0000 call SendOutData |
2445 1384 8FEF ldi r24,lo8(-1) |
2446 1386 8093 0000 sts DebugTextAnforderung,r24 |
2447 138a 8DB7 in r24,__SP_L__ |
2448 138c 9EB7 in r25,__SP_H__ |
2449 138e 0B96 adiw r24,11 |
2450 1390 8DBF out __SP_L__,r24 |
2451 .L211: |
2452 1392 8091 0000 lds r24,ConfirmFrame |
2453 1396 8823 tst r24 |
2454 1398 01F0 breq .L212 |
2455 139a 8091 0000 lds r24,UebertragungAbgeschlossen |
2456 139e 8823 tst r24 |
2457 13a0 01F0 breq .L212 |
2458 13a2 81E0 ldi r24,lo8(1) |
2459 13a4 90E0 ldi r25,hi8(1) |
2460 13a6 9F93 push r25 |
2461 13a8 8F93 push r24 |
2462 13aa 80E0 ldi r24,lo8(ConfirmFrame) |
2463 13ac 90E0 ldi r25,hi8(ConfirmFrame) |
2464 13ae 9F93 push r25 |
2465 13b0 8F93 push r24 |
2466 13b2 81E0 ldi r24,lo8(1) |
2467 13b4 8F93 push r24 |
2468 13b6 8F93 push r24 |
2469 13b8 82E4 ldi r24,lo8(66) |
2470 13ba 8F93 push r24 |
2471 13bc 0E94 0000 call SendOutData |
2472 13c0 1092 0000 sts ConfirmFrame,__zero_reg__ |
2473 13c4 2DB7 in r18,__SP_L__ |
2474 13c6 3EB7 in r19,__SP_H__ |
2475 13c8 295F subi r18,lo8(-(7)) |
2476 13ca 3F4F sbci r19,hi8(-(7)) |
2477 13cc 2DBF out __SP_L__,r18 |
2478 .L212: |
2479 13ce 8091 0000 lds r24,GetPPMChannelAnforderung |
2480 13d2 8823 tst r24 |
2481 13d4 01F0 breq .L192 |
2482 13d6 8091 0000 lds r24,UebertragungAbgeschlossen |
2483 13da 8823 tst r24 |
2484 13dc 01F0 breq .L192 |
2485 13de 84E3 ldi r24,lo8(52) |
2486 13e0 90E0 ldi r25,hi8(52) |
2487 13e2 9F93 push r25 |
2488 13e4 8F93 push r24 |
2489 13e6 80E0 ldi r24,lo8(PPM_in) |
2490 13e8 90E0 ldi r25,hi8(PPM_in) |
2491 13ea 9F93 push r25 |
2492 13ec 8F93 push r24 |
2493 13ee 81E0 ldi r24,lo8(1) |
2494 13f0 8F93 push r24 |
2495 13f2 8F93 push r24 |
2496 13f4 80E5 ldi r24,lo8(80) |
2497 13f6 8F93 push r24 |
2498 13f8 0E94 0000 call SendOutData |
2499 13fc 1092 0000 sts GetPPMChannelAnforderung,__zero_reg__ |
2500 1400 8DB7 in r24,__SP_L__ |
2501 1402 9EB7 in r25,__SP_H__ |
2502 1404 0796 adiw r24,7 |
2503 1406 8DBF out __SP_L__,r24 |
2504 .L192: |
2505 /* epilogue: frame size=16 */ |
2506 1408 E6E0 ldi r30,6 |
2507 140a C05F subi r28,-16 |
2508 140c 0C94 0000 jmp __epilogue_restores__+24 |
2509 /* epilogue end (size=4) */ |
2510 /* function DatenUebertragung size 720 (710) */ |
2512 .comm RxdBuffer,175,1 |
2513 .comm Debug_Timer,2,1 |
2514 .comm Kompass_Timer,2,1 |
2515 .comm MotorTest,16,1 |
2516 .comm DebugOut,66,1 |
2517 .comm WinkelOut,8,1 |
2518 .comm Data3D,14,1 |
2519 .comm ExternControl,11,1 |
2520 .comm VersionInfo,10,1 |
2521 .comm TxdBuffer,175,1 |
2522 .comm ConfirmFrame,1,1 |
2523 .comm Display_Timer,2,1 |
2524 .comm Timer3D,2,1 |
2525 /* File "uart.c": code 2582 = 0x0a16 (2491), prologues 47, epilogues 44 */ |
DEFINED SYMBOLS |
*ABS*:00000000 uart.c |
C:\Temp/cc8UwPV0.s:3 *ABS*:0000003f __SREG__ |
C:\Temp/cc8UwPV0.s:4 *ABS*:0000003e __SP_H__ |
C:\Temp/cc8UwPV0.s:5 *ABS*:0000003d __SP_L__ |
C:\Temp/cc8UwPV0.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Temp/cc8UwPV0.s:7 *ABS*:00000001 __zero_reg__ |
C:\Temp/cc8UwPV0.s:14 .progmem.data:00000000 ANALOG_TEXT |
C:\Temp/cc8UwPV0.s:52 .bss:00000000 ReceiverUpdateModeActive |
C:\Temp/cc8UwPV0.s:58 .bss:00000001 AboTimeOut |
C:\Temp/cc8UwPV0.s:64 .bss:00000003 Display_Interval |
C:\Temp/cc8UwPV0.s:70 .bss:00000005 Intervall3D |
C:\Temp/cc8UwPV0.s:76 .bss:00000007 DebugDataIntervall |
C:\Temp/cc8UwPV0.s:82 .data:00000000 MeineSlaveAdresse |
C:\Temp/cc8UwPV0.s:87 .data:00000001 PcZugriff |
C:\Temp/cc8UwPV0.s:92 .data:00000002 DebugTextAnforderung |
C:\Temp/cc8UwPV0.s:99 .bss:00000009 PC_MotortestActive |
C:\Temp/cc8UwPV0.s:105 .bss:0000000a PC_DebugTimeout |
C:\Temp/cc8UwPV0.s:111 .bss:0000000b RxDataLen |
C:\Temp/cc8UwPV0.s:117 .bss:0000000c pRxData |
C:\Temp/cc8UwPV0.s:123 .bss:0000000e AnzahlEmpfangsBytes |
C:\Temp/cc8UwPV0.s:129 .bss:0000000f CntCrcError |
C:\Temp/cc8UwPV0.s:135 .data:00000003 UebertragungAbgeschlossen |
C:\Temp/cc8UwPV0.s:142 .bss:00000010 NeueKoordinateEmpfangen |
C:\Temp/cc8UwPV0.s:148 .bss:00000011 NeuerDatensatzEmpfangen |
C:\Temp/cc8UwPV0.s:154 .bss:00000012 SioTmp |
C:\Temp/cc8UwPV0.s:160 .bss:00000013 DisplayLine |
C:\Temp/cc8UwPV0.s:166 .bss:00000014 GetPPMChannelAnforderung |
C:\Temp/cc8UwPV0.s:172 .bss:00000015 GetVersionAnforderung |
C:\Temp/cc8UwPV0.s:178 .bss:00000016 DebugDataAnforderung |
C:\Temp/cc8UwPV0.s:184 .bss:00000017 DebugDisplayAnforderung |
C:\Temp/cc8UwPV0.s:190 .bss:00000018 DebugDisplayAnforderung1 |
C:\Temp/cc8UwPV0.s:196 .bss:00000019 GetExternalControl |
.bss:0000001a ptr.6 |
C:\Temp/cc8UwPV0.s:202 .text:00000000 __vector_22 |
*COM*:000000af TxdBuffer |
C:\Temp/cc8UwPV0.s:198 .bss:0000001c crc.1 |
C:\Temp/cc8UwPV0.s:256 .bss:0000001e crc1.2 |
C:\Temp/cc8UwPV0.s:257 .bss:0000001f crc2.3 |
C:\Temp/cc8UwPV0.s:258 .bss:00000020 buf_ptr.4 |
C:\Temp/cc8UwPV0.s:259 .bss:00000021 UartState.5 |
C:\Temp/cc8UwPV0.s:263 .text:0000006c __vector_20 |
*COM*:000000af RxdBuffer |
C:\Temp/cc8UwPV0.s:494 .text:00000260 AddCRC |
C:\Temp/cc8UwPV0.s:550 .text:000002c0 SendOutData |
C:\Temp/cc8UwPV0.s:750 .text:00000438 Decode64 |
C:\Temp/cc8UwPV0.s:863 .text:0000050c BearbeiteRxDaten |
*COM*:00000010 MotorTest |
*COM*:0000000a VersionInfo |
*COM*:0000000b ExternControl |
*COM*:00000001 ConfirmFrame |
*COM*:00000002 Timer3D |
C:\Temp/cc8UwPV0.s:1850 .text:00000dd8 uart_putchar |
C:\Temp/cc8UwPV0.s:1866 .text:00000de8 UART_Init |
*COM*:00000002 Debug_Timer |
*COM*:00000002 Kompass_Timer |
C:\Temp/cc8UwPV0.s:1919 .progmem.data:00000200 __c.0 |
C:\Temp/cc8UwPV0.s:1924 .text:00000e70 DatenUebertragung |
*COM*:00000002 Display_Timer |
*COM*:00000008 WinkelOut |
*COM*:00000042 DebugOut |
*COM*:0000000e Data3D |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
LcdClear |
ServoActive |
__prologue_saves__ |
__epilogue_restores__ |
KompassValue |
Mixer |
MixerTable_WriteToEEProm |
SetDefaultParameter |
GetActiveParamSet |
ParamSet_ReadFromEEProm |
EE_Parameter |
MotorenEin |
ParamSet_WriteToEEProm |
__mulsi3 |
Umschlag180Nick |
Umschlag180Roll |
Piep |
LipoDetection |
LIBFC_ReceiverInit |
PPM_in |
I2C_ReadBLConfig |
BLConfig |
I2C_WriteBLConfig |
LIBFC_GetCPUType |
SetDelay |
RemoteKeys |
MenuePunkt |
CheckDelay |
DisplayBuff |
Menu |
DispPtr |
Menu_Putchar |
_printf_P |
MaxMenue |
IntegralNick |
__divmodsi4 |
IntegralRoll |
Parameter_UserParam1 |
Parameter_UserParam2 |
CopyDebugValues |
ErsatzKompass |
GIER_GRAD_FAKTOR |
SummeNick |
SummeRoll |
Mess_Integral_Gier |
memcpy_P |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/user_receiver.c |
---|
0,0 → 1,23 |
//############################################################################ |
// Implement your own RC-decoding routines here |
//############################################################################ |
//############################################################################ |
// Initialize the UART here |
//############################################################################ |
void User_Receiver_Init(void) |
{ |
// SpektrumUartInit(); // or use an existing routine like this |
}; |
//############################################################################ |
// Is called by the uart RX interrupt |
// UDR contains the received byte |
//############################################################################ |
void User_RX_Parser(unsigned char udr) |
{ |
}; |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/user_receiver.h |
---|
0,0 → 1,4 |
// for own implementations |
void User_Receiver_Init(void); |
void User_RX_Parser(unsigned char); |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/user_receiver.lst |
---|
0,0 → 1,40 |
1 .file "user_receiver.c" |
2 .arch atmega1284p |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .text |
11 .global User_Receiver_Init |
13 User_Receiver_Init: |
14 /* prologue: frame size=0 */ |
15 /* prologue end (size=0) */ |
16 /* epilogue: frame size=0 */ |
17 0000 0895 ret |
18 /* epilogue end (size=1) */ |
19 /* function User_Receiver_Init size 1 (0) */ |
21 .global User_RX_Parser |
23 User_RX_Parser: |
24 /* prologue: frame size=0 */ |
25 /* prologue end (size=0) */ |
26 /* epilogue: frame size=0 */ |
27 0002 0895 ret |
28 /* epilogue end (size=1) */ |
29 /* function User_RX_Parser size 1 (0) */ |
31 /* File "user_receiver.c": code 2 = 0x0002 ( 0), prologues 0, epilogues 2 */ |
DEFINED SYMBOLS |
*ABS*:00000000 user_receiver.c |
C:\Temp/ccW27kvk.s:3 *ABS*:0000003f __SREG__ |
C:\Temp/ccW27kvk.s:4 *ABS*:0000003e __SP_H__ |
C:\Temp/ccW27kvk.s:5 *ABS*:0000003d __SP_L__ |
C:\Temp/ccW27kvk.s:6 *ABS*:00000000 __tmp_reg__ |
C:\Temp/ccW27kvk.s:7 *ABS*:00000001 __zero_reg__ |
C:\Temp/ccW27kvk.s:13 .text:00000000 User_Receiver_Init |
C:\Temp/ccW27kvk.s:23 .text:00000002 User_RX_Parser |
UNDEFINED SYMBOLS |
__do_copy_data |
__do_clear_bss |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/vector.h |
---|
0,0 → 1,19 |
#ifndef _VECTOR_H |
#define _VECTOR_H |
typedef struct |
{ |
int32_t x; |
int32_t y; |
int32_t z; |
} __attribute__((packed)) vector32_t; |
typedef struct |
{ |
int16_t x; |
int16_t y; |
int16_t z; |
} __attribute__((packed)) vector16_t; |
#endif //_VECTOR_H |
/branches/v0.90d_Ernstl_4-Motoren+Sexpander/version.txt |
---|
0,0 → 1,566 |
------- |
V0.53 27.04.2007 H.Buss |
- erste öffentliche Version |
V0.53b 29.04.2007 H.Buss |
- der FAKTOR_I war versehentlich auf Null, dann liegt der MikroKopter nicht so hart in der Luft |
V0.53c 29.04.2007 H.Buss |
- es gib ein Menü, in dem die Werte der Kanäle nach Nick, Roll, Gas,... sortiert sind. |
Die angezeigten Werte waren nicht die Werte der Funke |
V0.54 01.05.2007 H.Buss |
- die Paramtersätze können jetzt vor dem Start ausgewählt werden |
Dazu wird beim Kalibrieren der Messwerte (Gashebel oben links) der Nick-Rollhebel abgefragt: |
2 3 4 |
1 x 5 |
- - - |
Bedeutet: Nick-Rollhebel Links Mitte = Setting:1 Links Oben = Setting:2 usw. |
- der Faktor_I für den Hauptregler ist hinzugekommen. Im Heading-Hold-Modus sollte er vergössert werden, was Stabilität bringt |
V0.55 14.05.2007 H.Buss |
- es können nun Servos an J3,J4,J5 mit den Kanälen 5-7 gesteuert werden |
V0.56 14.05.2007 H.Buss |
- es gab Probleme mit Funken, die mehr als 8 Kanäle haben, wenn mehrere Kanäle dann auf Null waren |
- Funken, die nicht bis +-120 aussteuern können, sollten jetzt auch gehen |
V0.57 24.05.2007 H.Buss |
- Der Höhenregler kann nun auch mittels Schalter bedient werden |
- Bug im Gier-Algorithmus behoben; Schnelles Gieren fürhrte dazu, dass der MK zu weit gedreht hat |
- Kompass-Einfluss dämpfen bei Neigung |
- Man kann zwischen Kompass FIX (Richtung beim Kalibrieren) und Variabel (einstellbar per Gier) wählen |
- Der Motortest vom Kopter-Tool geht jetzt |
- Man kann den Parametersätzen einen Namen geben |
- Das Kamerasetting ist unter Setting 2 defaultmässig integriert |
V0.58 30.05.2007 H.Buss |
- Der Höhenregler-Algorithmus wird nun umgangen, wenn der Höhenreglerschalter aus ist |
V0.60 17.08.2007 H.Buss |
- "Schwindel-Bug" behoben |
- Die Poti-Werte werden jetzt auf Unterlauf (<0) überprüft |
- Poti4 zugefügt |
- Es werden jetzt 8 Kanäle ausgewertet |
- Kamera-Servo (an J7) |
- Die Settings müssen überschrieben werden |
V0.61 - V0.63 H.Buss 27.09.2007 |
- Poti 4 und Kanal 8 werden im Menü angezeigt |
- ein paar Kleinigkeiten bei den DefaultKonstanten2 bereinigt |
- Analog.c: Aktuell_ax korrigiert |
- auf 32 Debug-Kanäle erweitert |
- Loopings sind jetzt möglich und einzeln im KopterTool freischaltbar |
- leichte Anpassungen im Gier - Geschwindigkeit und Drift |
- die Hardwareversion V1.1 wird erkannt und das Programm stellt sich auf die geänderte Gyroverstärkung und die geänderten Portpins ein |
- die Software startet nach dem Einschalten schneller, weil der Luftdruckoffset schneller gefunden wird |
- die PPM-Ausgänge liegen wieder an den Pins an |
- Details an der Sensordatenverarbeitung -> es fliegt sich geringfügig anders |
- der MK ist bei wenig Gas nicht mehr so giftig -> soll das Landen vereinfachen |
- I2C-Bus läuft jetzt sicher nach einer Störung wieder an |
- Sticksignale werden präziser ausgewertet |
- Stick-Kanäle werden ans Kopter-Tool übertragen |
- Es muss die Version V1.47 des Kopter-Tool verwendet werden |
- Die Settings werden auf Default zurückgesetzt |
- am Piepen kann man die Fehlerart unterscheiden |
1. einzelnes Piepen beim Einschalten und Kalibrieren |
2. langsames Intervall mindestens 1 Sek -> Empfangsausfall |
3. schnelleres Intervall mindestens 1 Sek -> Akku |
4. sehr schnelles Intervall mindestens 1 Sek -> Kommunikation zu den Reglern gestört |
V0.64 H.Buss 30.09.2007 |
- beim Gieren wurden die Achsen nicht hart genug geregelt |
V0.65a H.Buss 15.10.2007 |
- Integral im Mischer wieder integriert |
- Feinabstimmung im ACC/Gyro Abgleich -> 1/32 & 100 |
- ACC/Gyro Abgleich auch bei HH |
V0.66a H.Buss 3.11.2007 |
- Messwertverarbeitung aus dem Analog-Interrupt entfernt |
- Analogmessung hängt jetzt am FC-Timing |
- Looping-Stick-Hysterese eingebaut |
- Looping-180°-Umschlag einstellbar |
- Achsenkopplung: Gierbewegung verkoppelt Nick und Roll |
- Lageregelung nach ACC-Sensor verbessert |
- zusätzlicher I-Anteil in der Lageregelung verbessert die Neutrallage |
- Gyrodriftkompensation überarbeitet |
- Bug in der Gier-Stick-Berechnung behoben |
- Gyro-Messung auf 1kHz beschleunigt |
V0.67a H.Buss 16.11.2007 |
- der Hauptregler-I-Anteil wirkt jetzt nur noch auf den Winkel (ausser im HH-Mode) |
- Gyro-Acc-Abgleich jetzt wieder in jedem Zyklus |
- Feinabstimmung |
- Beim HH-Modus gab es noch Bugs |
V0.67e H.Buss 29.11.2007 |
- Parameter: Dynamic Stability und Driftfaktor eingeführt |
- Die Namen der Analogwerte werden jetzt zum Koptertool übertragen |
- Kompatibilität zum Koptertool erhöht |
V0.67f H.Buss 04.12.2007 |
- Das Integral des Hauptreglers wird jetzt linear entladen und nicht mehr proportional |
- Schub für Gier wird jetzt auf den Gaswert begrenzt, dadurch steigt der MK nicht mehr beim Gieren. Gier ist allerdings nicht mehr so agressiv |
- Die ACC-Nullwerte können jetzt dauerhaft im EEPROM gespeichert werden (Stick:Vollgas und Gier rechts) |
V0.68a I.Busker 28.12.2007 |
- SPI.c & SPI.h ins Projekt aufgenommen |
SPI-Kommuikation kann in SPI.h aktiviert/deaktivert werden |
V0.68c H.Buss 05.01.2008 |
- Stickauswertung verbessert -> träger und präziser |
- Alle Settings angepasst |
V0.69e H.Buss 05.05.2008 |
- kleinere Bugs beseitigt |
- Schneller Sinkflug jetzt möglich |
- Min- und Maxgas in den Settings geändert |
- Lagewinkel wird jetzt in 0,1 Grad an Kompass und Navi gesendet |
- Kalibrierung für MK3Mag -> Nick unten beim Kalibrieren |
- Kompassroutine um den Ersatzkompass (Gyro unterstützt Kompasswert) erweitert |
V0.69h H.Buss 21.05.2008 |
- STICK_GAIN = 4 eingeführt. Das erhöht die Auflösung der Sollwerte. Stick_P und Stick_I müssen nun um Faktor 4 erhöht werden |
- SenderOkay auch an das Naviboard übertragen |
- Bessere Parameter bei Senderausfall |
V0.69j H.Buss 30.05.2008 |
- Höhere Präzision der Achsenkopplung |
V0.69k H.Buss 31.05.2008 |
- Bug in SPI.C behoben |
- in 0.69h war ein Bug, der zu ungewollten Loopings führen konnte |
V0.69L H.Buss 14.06.2008 |
- feinere Cam-Servo-Auflösung |
V0.70a H.Buss 01.07.2008 |
- Unterstützung der V1.3-Hardware mit automatischem Hardware-Gyro-Abgleich |
V0.70b H.Buss 14.07.2008 |
- flexible Einstellungsmöglichkeit von J16 und J17 (Transistorausgänge) |
- eigene Parameter für GPS-Naviboard |
- eigener Parameter für ExternalControl (war vorher UserParameter1 bzw. 8) |
- neue Parameter im EEPROM-Datensatz: J16Bitmask, J16Timing, ExternalControl, Navi... |
- MikroKopterFlags eingeführt, damit das Navi den Status des MKs kennt |
- KopterTool-Kompatibilität auf 8 erhöht |
V0.70c H.Buss 30.07.2008 |
- Parameter der Datenfusion leicht modifiziert |
- EEPROM-Parameter für Looping-Umschlag angepasst (von 100 auf 85) |
- MaxStick wird auf 100 begrenzt |
V0.70d H.Buss 02.08.2008 |
- Transistorausgänge: das oberste Bit der Blinkmaske (im KopterTool linkes Bit) gibt nun den Zustand des Ausgangs im Schalterbetrieb an |
0.71b: H.Buss 19.10.2008 |
Kommunikation zum Navi erweitert: |
- Beeptime jetzt 32Bit |
- Datenfusion und Driftkopensation wird durch NaviBoard unterstützt |
0.71c: H.Buss 20.10.2008 |
- LoopConfig heisst jetzt BitConfig |
- 3-Fach-Schalter für Höhensteuerung möglich -> kann man mit GPS-Schalter zusammenlegen |
- bei den Settings wurde Setting[0] mit abgespeichert, welches es nicht gab. |
- in Zukunft werden bei neuen EEPROM-Settings die Kanäle von Setting 1 übernommen |
- Variablen NaviWindCorrection, NaviSpeedCompensation, NaviOperatingRadius eingeführt |
0.71f: H.Buss 15.11.2008 |
- Ausschalten der Höhenregelung per Schalter um 0,3 sek verzögert |
- bei der seriellen Übertragung hat die FC jetzt als SlaveAdresse die 1 |
- VersionInfo.NaviKompatibel eingeführt |
- wenn manuell gegiert wird, wird der GyroKompass-Wert auf den Kompasswert gesetzt |
- Luftdruckwert wird an das Navi übertragen |
- Der Baro-Offset wird jetzt nachgeführt, um den Messbereich zu erweitern. Geht nur bei Höhenregler mit Schalter |
- Debugdaten können jetzt mit 'f' gepollt werden |
0.71g: Gregor 09.12.2008 |
- Kommunikation überarbeitet |
Infos hier: http://www.mikrokopter.de/ucwiki/en/SerialCommands |
0.71h: H.Buss 15.12.2008 |
- Freigegebene Version |
- NaviAngleLimitation als Parameter zum Navi implementiert |
- Antwort auf CMD: 't' entfernt |
0.72d: H.Buss 22.01.2009 |
- OCTO als Compilerschalter |
- Unterstützung der FC 2.0 (ME) |
- GYRO_D eingeführt |
- Achsenkopplung jetzt auch auf Nick/Roll-Bewegung |
0.72e: H.Buss 27.01.2009 |
- die 0.72d hatte kein Integral im Gier |
- Parameter eingeführt: |
EE_Parameter.NaviGpsPLimit |
EE_Parameter.NaviGpsILimit |
EE_Parameter.NaviGpsDLimit |
EE_Parameter.NaviPH_LoginTime |
EE_Parameter.AchsKopplung2 |
EE_Parameter.CouplingYawCorrection |
0.72f: H.Buss 28.01.2009 |
- Bug im Ersatzkompass entfernt |
0.72h: H.Buss 05.02.2009 |
- Algorithmen beschleunigt -> Floats durch Fixkomma ersetzt |
- Achsentkopplung weiter verbessert |
- Nick- und Roll im Octo-Mischer auf jeweils vier Motoren aufgeteilt |
0.72i: H.Buss 07.02.2009 |
- Abtastrate von 1kHz auf 2kHz erhöht |
0.72j: H.Buss 09.02.2009 |
- neue Implementierung der Servoausgänge |
0.72k: H.Buss 10.02.2009 |
- Abtastrate auf 5kHz erhöht |
0.72L: H.Buss 13.02.2009 |
- Signalfilterung überarbeitet |
- OCTO2 implementiert |
0.72M: H.Buss 13.02.2009 |
- Code Cleanup |
0.72o: H.Buss 24.02.2009 |
- Abtastrate auf 2kHz |
- HW-Version an Navi |
- neuer Datensatz 'c' -> Lagedaten für 3D-Grafik |
- Auswerteroutine für Spectrum-Satteliten implementiert |
- Kanalsettings werden beim Parameterreset nicht mehr gelöscht |
- die Driftkompensation wird jetzt feiner aufgelöst --> EE_Parameter.Driftkomp muss mal 8 genommen werden |
- die Integrale und ACC-Werte werden jetzt im Scope in ca. 0,1° angezeigt (wie beim NaviBrd) |
0.72p: H.Buss 01.03.2009 |
- Octo3 erstellt |
- Analogwerte umbenannt |
0.73a-d: H.Buss 05.04.2009 |
- MixerTabelle implementiert |
- I2C-Bus auf bis zu 12 Motoren erweitert |
- die Busfehler der BL-Regler werden im Menü angezeigt |
- Revision der MixerTabelle eingeführt |
- MixerTabelle wird bei Parameterreset neu initialisiert |
- Motortest auf [12] erweitert |
- Motorschalter nicht mehr 3-Stufig |
0.74a |
- Datenfusion im Flug auch, wenn ACC-Z < 512 |
- Wert für die Luftdruck-Messbereichserweiterung abgefangen |
0.74d |
- Die Driftkompensation ist jetzt dreistufig -> 0,5% pro sekunde zusätzlich eingeführts |
0.75a G.Stobrawa 22.5.2009 |
- Extern Control also received from NC via SPI |
0.75b H.Buss 27.05.2009 |
- Spektrum-Singale schalten den PPM-Eingang aus |
- max. 2 Sekunden nach dem Start auf die BL-Regler warten |
- Automatische Zellenerkennung, wenn Spannungswarnung < 5,0V |
- Bei automatischer Zellenerkennung piept es je nach Zellenzahl |
- EE_DATENREVISION auf 76 erhöht |
- Servo: |
- Roll-Servo für FC ME implementiert |
- Update-Cmd stoppt Servos |
- Servos werden erst nach dem ersten Kalibrieren aktiviert |
0.75c G.Stobrawa 25.7.2009 |
- Übertragung der Servo-Settings zur NC |
- RSSI wird an NC gesendet, derzeit wird der Wert nicht gesetzt |
- Bugfix Messbereichsumschaltung des Luftdrucksensors springt |
- Auflösung des Luftdrucks nun bis auf 1 cm (5mal feiner) zur genaueren Berechnung des D-Anteils |
- Unterstützung von Warnings-Bitmasks für die J16, J17-Outputs bei Unterspannung |
- Unterspannung für einzelne Zelle´n von 3.2V auf 3.3V angehoben (9.6V --> 9.9V für 3S) |
0.75d H.Buss 13.8.2009 |
- RC-Routine: Empfangsausfall soll sicherer erkannt werden |
- Zellenerkennung nun auch beim Speichern der Settings |
- Warnungs-Blinkmaske auch bei Empfangsausfall |
0.75e H.Buss 18.8.2009 |
- LED-Blinken kann an die Motoren gekoppelt werden |
- Feinabstimmung des Höhenreglers |
0.75f H.Buss 27.8.2009 |
- D-Anteil des Höhenreglers jetzt mit Quadratischer Komponente |
- Lagewinkel wirkt jetzt mit 1/Cos(x) mit in den Höhenregler |
- leichte Modifikation der RC-Empfangroutine |
0.75g H.Buss 31.08.2009 |
- die Akkuspannung geht jetzt antiproportional ins Gas ein |
0.75h H.Buss 3.09.2009 |
- im Höhenregler werden jetzt die Stellwerte begrenzt --> max +- 16% vom geschätzten Schwebegas |
0.75i H.Buss 7.09.2009 |
- GpsZ vom Navi zur FC für den Höhenregler |
- "hoovergas-Variation" als Parameter |
- Kompatibilität zu NC und PC erhöht |
0.75j H.Buss 17.09.2009 |
- Laufzeitzähler eingebaut |
0.75k H.Buss 22.09.2009 |
- zweite Variante (Gregor) der Höhenregelung implementiert |
- umschaltbare RC-Routine |
0.75L H.Buss 23.09.2009 |
- SollHoehe und Gas geht nun auch an die NC |
0.75M H.Buss 29.09.2009 |
- Spektrum-Timing wird nun überwacht |
- die FC kann nun stand-Alone als Kamera-Stabilizer eingesetzt werden, weil die Servos aktiviert werden, wenn I2C fehlt |
0.75N H.Buss 29.09.2009 |
- Hoover-Stickpunkt wird bei aktivem Höhenregler nicht nachgeführt |
- Hoover-Stickpunkt kann per Parameter fest eingestellt werden |
- Baro-Messbereichserweiterung auch bei aktiviertem Höhenregler |
- Gyro_Gier_P und Gyro_Gier_I eingeführt |
- I2C_fehler-Zähler jetzt in den Analogdaten |
0.75o H.Buss 01.10.2009 |
- der Höhenregler wird jetzt nur alle 10ms bearbeitet |
- Baro-Messbereichserweiterung auch bei Poti als Sollwert |
0.76d H.Buss 10.10.2009 |
- bei aktiver Messbereichserweiterung wird die aktuelle Höhe übernommen |
0.76e H.Buss 27.10.2009 |
- es werden beim Start einmal alle BL-Regler angesprochen, damit BL-Regler#8 auch einen Selbsttest macht |
- S3D-ACT-Summensignal als Compilerschalter |
0.76f H.Buss 05.11.2009 |
- untere Spannungsgrenze der Unterspannungswarnung (9,3V) entfernt |
0.76g H.Buss 10.11.2009 |
- Casting-Fehler in der Gas-Berechnung |
0.77a H.Buss 11.11.2009 |
- Erweiterung auf 12 Kanäle |
- Bei Koptertool-Kanalabfrage kein Empfangsausfall-Piepsen |
- serielle Kanalerweiterung eingebaut -> PPM_in auf 25 erweitert |
- Servos3-5 einstellbar |
- neues Kommando "f" -> schaltet auf anderen Parametersatz um |
0.77b H.Buss 09.12.2009 |
- JetiBox: Menü wird übertragen |
- neu: FCFlags |= FCFLAG_I2CERR; |
- LED-Warn-Blinken nun mit festem Timing und abschaltbar |
0.77c H.Buss 07.01.2010 |
- zwei weitere Spektrum-Varianten implementiert |
0.77d H.Buss 25.01.2010 |
- Strom-Messung eingebaut |
0.78a H.Buss 03.02.2010 |
- Bugfix: Settingsumschaltung im Flug |
0.78b H.Buss |
- veröffentlichte Version |
0.78c H.Buss + G.Stobrawa 22.2.2010 |
- Bewegungsbegrenzung an Servo 3 to 5 der FC 2.0 |
- Theoretischer Variablenüberlauf bei Vario-Höhenregler |
- Anzeige des "SPI RX communication error" wenn GPS Option nicht aktiv |
- LED-Schwellwerte fürs Blinken waren unterschiedlich |
0.78c H.Buss + G.Stobrawa 04.3.2010 |
- Code cosmetics |
0.78f H.Buss + I.Busker 23.3.2010 |
- Unterstützung für Jeti-Expander |
- Begrenzung des Vario-Höhenreglers auf ein 10m-Fenster um Überläufe zu verhindern |
- Einführung eines Vario-Zeichens (+/-/ ) auf der Jetibox |
- BL-Timeout beim Start erhöht |
0.80a-d H. Buss + G.Stobrawa 20.5.2010 - 22.7.2010 |
- Motoren Starten nicht ohne Kalibrierung |
- Unterstützung der BL2.0-Regler |
- statt 8 nun 10 Bit Auflösung der Lageregekung |
- Unterstützung der BL2.0-Regler Konfiguration via MK-Tool |
- Parametersätze werden per I2C an die BL-Regler durchgereicht |
- "Care-Free" implementiert |
- Freie Belegung der "Vorne"-Richtung |
- nur wenn Motoren laufen: Beepen, wenn Carefree ohne Navi oder ohne gültigen MK3Mag-Wert |
- nur wenn Motoren laufen: Beepen wenn NC plötzlich ausfällt |
- #define RECEIVER_SPEKTRUM_EXP eingeführt |
- #define SWITCH_LEARNS_CAREFREE eingeführt |
- Schwerpunktanzeige in den 3D-Daten |
- Checksummen gesicherte Datenablage im EEProm |
- Fehlerdiagnose implementiert (Wiki: ErrorCodes) |
- ErrorCode aufs Jeti-Display |
- JetiMenü: bis acht Temperaturen der BL-Regler |
- GPSInfo.Speed im Jeti-Display |
- Compass-Richtung nun im Jeti-menü |
- diverse Änderungen im Höhenregler |
- P wirkt schwächer |
- D wirkt stärker |
- Anpassung der Höhenregelung auf Level des Hoovergases |
- AccZ schneller nachführen |
Parameter modifiziert: |
- EEPROM-Kompatibilität auf 84 -> Parameter werden resettet |
- EE_Parameter.Hoehe_ACC_Wirkung = 0; // war 30 |
- EE_Parameter.Hoehe_HoverBand = 8; // war 5 |
- Notgas = 45 |
- NotgasZeit = 90 |
- Beginnersetting: EE_Parameter.DynamicStability = 70; |
- Neu: GyroStability = 6 |
- GPS-Login-Time auf 2 reduziert |
0.80e H.Buss 02.08.2010 |
- MK3Mag ohne NC ging nicht |
0.80f H.Buss 04.08.2010 |
- Beim Höhenregler "Deckel" wird das Gas wieder wie in der alten Version behandelt und der D-Anteil auf das alte Verhalten (um Faktor 8) reduziert |
0.80g H.Buss 11.08.2010 |
- erweitetern Messbereich für Luftdruck bei der FC2.1 aktiviert |
0.80h H.Buss 30.08.2010 |
- bei I2C-Fehlern wurden die Counter zurück gesetzt und für einige ms die Interrupts angehalten - das ist jetzt behoben |
- Nur I2C-Daten senden, wenn das alte Paket komplett raus ist |
0.82a H.Buss 08.11.2010 |
- MotorSafetySwitch - Verriegelt das Ein/Ausschalten |
- ServoManualControlSpeed - Verlangsamt das Cam-Servo |
- CamOrientation - für verdrehte Kamera-Servos |
- Position der Status-Bits verändert |
- "Zucken" der Servos bei kurzen Empfangsausfällen behoben |
- jeti update command 'j' added |
- Poti-Auswertung nach ParameterZuordnung() verschoben -> FC-Code schneller |
- Waypont-Events z.B. zum Triggern der Kamera |
- Gyro-Sytbility: Werte bis 16 möglich |
0.82b H.Buss 08.12.2010 |
- Unterstützung von 3,3V-Referenzspannung (nur ATMEGA128) |
0.84a H.Buss 21.03.2011 (Release: 30.03.2011) |
- nur starten, wenn NC_ErrorCode = 0 |
- Beeptime von NC auch beim Kalibrieren durchlassen |
- Varible "JetiBeep" eingeführt |
- Kompass-Winkelvorgabe von NaviControl -> POI |
- Piepen beim Umschalten von CareFree |
- Compass-Routinen überarbeitet |
- Dafaultvalues Servo-Min/MAx an MKDS18 angepasst |
- Defaultreceiver ist RECEIVER_JETI |
- GPS-Operation-Radius per default auf 245m bzw. 100% |
- Höhenvorgabe im Vario-Mode durch Waypoints |
- bei laufenden Motoren keine neuen Settings annehmen |
- immer einmal Carefree Beepen nach dem Kalibrieren |
- Kanaloffset für Potis von 110 auf 127 erhöht, damit es gleich ist mit allen anderen Kanälen |
- POI-Richtung (Soll-Himmelsrichtung) bezieht sich auf den Kamera-Winkel |
0.86a H.Buss 13.09.2011 |
- Variable "JetiBeep" wird gelöscht, wenn an den Empfänger gesendet wurde |
- wenn GPS deaktiviert ist, keinen Fehler bringen, wenn GPS fehlt. Auch dann nicht piepsen |
- GPS-Sollwertverschiebung |
- Empfangs-Piepen unterdrücken -> einstellbar |
- MotorSmooth einstellbar |
- Höhenregler: keine 'harte' IstWert-Übernahme bei Bewegen des Sticks in die Hoover-Position |
- Coming Home mit Höhenvorgabe |
- Coming Home als Failsafe |
- Einführung des GPS-Characters (- / W H D P) |
- Klartext bei den Jeti-Fehlermeldungen |
- Jeti-Beep "3*kurz" bei NC-Errors |
- Jeti-LCD-Aufruf nur noch alle 300ms, weil die Werte zu unruhig waren |
- Mixer-Settings werden nicht gelöscht, wenn sich die Parameter-Revision ändert |
- GPS-Angle limit von 100 auf 140 |
- GPS-I-Limit von 75 auf 85 |
- GAS-Offset von 120 auf 127 erhöht, damit es für alle Kanäle gleich ist |
- EE_Parameter.Hoehe_StickNeutralPoint auf Werte zwischen 80 und 180 begrenzt |
- PPM_Neutral eingeführt, um den Offset bei HoTT auszugleichen; |
- LED_Update() nun nur noch alle 20ms, weil die schnellste Ausgabe (bei Potivorgabe) ohnehin nur 40ms sind |
- Jeti & HoTT: Nur beim Fehler auch JetiBeep, wenn die Motoren laufen -> sonst nervt das bei der Fehlerbehebung (Compass-Kalibrieren usw.) |
- Error-Text auch im virtuellen Display des Koptertools |
- virtuelles LCD-Menü: |
- "ExternControl" aus Platzgründen aus dem virtuellen LCD-Menü entfernt. |
- keine BL-Temperaturen und I2C-Fehler anzeigen, wenn die BL-Regler nicht verwendet werden |
- nach dem Gieren nicht den Ersatzkompass auf den Kompasswert stellen, die Umschaltung war zu hart |
- ACC Correction eingeführt |
- I2C Fehler kamen nicht bei der NC an, weil die zu kurz waren - jetzt meldet die NC die Fehler mind. 8 Sekunden |
- Fehlermeldungen stehen jetzt mind. so lange an, bis sie an die Nc ge sendet wurden |
- neue Fehlermeldungen: |
"No NC communicat", // 9 |
"GPS Fix lost ", // 21 |
"Magnet Error ", // 22 |
"Motor restart ", // 23 |
"BL Limitation " // 24 |
- LED: Schaltfläche "nur bei Motor start" bei beiden getrennt |
- Ausbau der HoTT-Telemetrie |
- Variable "KompassRichtung" entfernt |
- ErsatzKompassInGrad sinvoll genutzt |
- HoTT-Update per Uart-Durchschleifen |
- AltitudeSetpointTrimming eingeführt |
- Vario-Anzeige für HoTT |
- Verhindern eines Überlaufs im Vario |
- echter Varioton auch ohne Vario-Höhenregler |
- Flugminuten laufen jetzt bei (FC_StatusFlags & FC_STATUS_FLY) los, weil sonst die Zeit zur NC verschieden war |
- KompassFusion wird jetzt getrennt von der NC berechnet |
- Sport-Setting entfernt und ein "Easy-Setting" eingeführt (leicht reduzierte Sticks); "Beginner" ist jetzt "Normal" |
- MagnetError kann man in der Startphase ignorieren |
- BL-Temperaturen, I2C-Fehler und BL-MaxPWM zum Loggen an NC |
- Einzelströme nun auch bei HoTT angezeigt |
0.86b H.Buss 20.09.2011 |
- Höhenbegrenzung bewirkt nur, dass im Vario-Mode der Sollwert nicht weiter nach oben geschoben werden kann |
- grüne LED ging aus - gefixt |
- K1-K8 wurden im LCD mit 0-7 bezeichnet |
0.86c H.Buss 22.09.2011 |
- Neue Anzeige: Magnetfeld und Inklination bei HoTT und Jeti |
- Neuer SPI-Block 'SPI_MISC' |
- Kompass-Fusions-Dämpfung bei Neigung leicht verringert |
- '.' im Vario-Höhenregler |
0.86d H.Buss 26.09.2011 |
- Analog.c: Vario Überlauf anders verhinden |
- Poti1-6 auch im HoTT-Display |
0.88 H.Buss 12.12.2011 - 26.03.2012 |
- Failsafe-Kanal |
- Failsafe: 5 Sekunden warten & Höhe ändern (macht die NC) |
- Option: Failsafe-Sinkflug xx% Schwebegas |
- Stopp der Motoren wenn bei Failsafe ein Motor blockiert |
- von 30 auf 60 Sekunden Failsafe-Zeit verlängert |
- Höhenwert auf cm kalibriert (zeigte ca. 10% zu viel an) |
- Neue Error-Codes: "No SD-Card", "Flying range!" und "Error SD-Logging" |
- Wenn die Motoren aus sind, den Luftduckwert langsam nachführen |
- das sbus-protokoll implementiert (nur FC2.1) |
- Schaltkanal auf Servo-Ausgang |
- Filter auf den Ausgängen der Servos |
- Option: Failsafe-Sinkflug xx% Schwebegas |
- "Max Altitude" als Parameter auf der SD-Karte im Navi -> Beeinflusst "Parameter_MaximumAltitude" (das niedrigste gilt) und es gibt eine Fehlermeldung "ERR:Max Altitude" |
- SPI-Protokoll: BL.Status eingefügt und Parameter.GlobalConfig & Parameter.ExtraConfig verschoben |
- Senden der Out1 & Out2-Zustände an die NC, damit es in der OSD-Darstellung angezeigt werden kann |
- Kompassrichtung neu merken, wenn CF geschaltet wird |
- "I" aus dem Hott-Menü entfernt und durch ":" ersetzt, weil das nur auf der mx-20 gut aussah |
- Höhenregler-Settings: GPS-Z von 64 auf 20 reduziert |
0.88M H.Buss 15.05.2012 |
- HoTT V4 |
- Kamera-Servo beim Kalibrieren weiter laufen lassen. |
- Error 30: no GPS fix bei Start |
- echter MotorSchalter |
0.88n H.Buss 06.07.2012 |
- Bugfix: Der letzte angesteuerte Servo-Puls war zu kurz |
0.90 H.Buss 04.03.2013 |
- Anzeige WP x/Y in der HoTT-Telemetrie |
- Schalter und WP-Event gleichzeitig |
- Photo-Auslösung als Entfernungsintervalle |
- Jeti + |
- Kamera-Neitung als Integral |
- RC-Lost am Startpunkt macht kein Failsafe, wenn GAS auf Null für 1,5sek war |
- Auswahl:Speak-All nun in der KopterTool-Config |
0.90 Ernstl 4-Motoren und Sexpander für DX7 |
- Aktivierung der Sexpanderunterstützung |