From 5ff5b69db65dca595705dd7c861c644547f2a8a4 Mon Sep 17 00:00:00 2001 From: timecop Date: Sat, 18 Feb 2012 14:12:17 +0000 Subject: [PATCH] turn on both leds when entering STM32 bootloader mode. this should give visual cue when bootloader has been activated. added i2c timeouts and i2c error counter. git-svn-id: https://afrodevices.googlecode.com/svn/trunk/baseflight@90 7c89a4a9-59b9-e629-4cfe-3a2d53b20e61 --- baseflight.uvgui.timecop | 158 +++++++++++++++++++++++++++------------ baseflight.uvopt | 76 +++++++++---------- baseflight.uvproj | 39 ++++++++++ drv_bmp085.c | 6 +- drv_i2c.c | 53 +++++++++++-- drv_i2c.h | 2 +- main.c | 8 ++ mw.c | 1 - mw.h | 1 - serial.c | 2 +- startup_stm32f10x_md.s | 30 +++++++- 11 files changed, 280 insertions(+), 96 deletions(-) diff --git a/baseflight.uvgui.timecop b/baseflight.uvgui.timecop index 4bf5aae45b..c325186e66 100755 --- a/baseflight.uvgui.timecop +++ b/baseflight.uvgui.timecop @@ -17,7 +17,7 @@ 38003 Registers - 115 93 + 115 100 346 @@ -96,8 +96,8 @@ 0 - 1014 - 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000C0000000A0000000100000035443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C737461727475705F73746D3332663130785F6D642E730000000016737461727475705F73746D3332663130785F6D642E7300000000B3A6BE00FFFFFFFF27443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C73657269616C2E63000000000873657269616C2E6300000000FFDC7800FFFFFFFF23443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6D772E6300000000046D772E6300000000BECEA100FFFFFFFF2C443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6472765F6D7075333035302E63000000000D6472765F6D7075333035302E6300000000F0A0A100FFFFFFFF2C443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6472765F6164786C3334352E63000000000D6472765F6164786C3334352E6300000000BCA8E100FFFFFFFF2D443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6472765F686D63353838336C2E63000000000E6472765F686D63353838336C2E63000000009CC1B600FFFFFFFF24443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C696D752E630000000005696D752E6300000000F7B88600FFFFFFFF28443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C73656E736F72732E63000000000973656E736F72732E6300000000D9ADC200FFFFFFFF25443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6D61696E2E6300000000066D61696E2E6300000000B3A6BE00FFFFFFFF28443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6472765F6932632E6300000000096472765F6932632E6300000000EAD6A300FFFFFFFF2B443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6472765F73797374656D2E63000000000C6472765F73797374656D2E6300000000EAD6A300FFFFFFFF2B443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6472765F73797374656D2E68000000000C6472765F73797374656D2E6800000000F6FA7D00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000DE0000005E00000000080000FE020000 + 1795 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000015000000080000000100000035443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C737461727475705F73746D3332663130785F6D642E730000000016737461727475705F73746D3332663130785F6D642E7300000000A5C2D700FFFFFFFF28443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6472765F6164632E6300000000096472765F6164632E63000000005FC3CF00FFFFFFFF28443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6472765F6932632E6800000000096472765F6932632E6800000000FFDC7800FFFFFFFF23443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6D772E6800000000046D772E6800000000C5D4F200FFFFFFFF52443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6C69625C53544D3332463130785F5374645065726970685F4472697665725C7372635C73746D3332663130785F6770696F2E63000000001073746D3332663130785F6770696F2E6300000000C1838300FFFFFFFF25443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6D61696E2E6300000000066D61696E2E6300000000B5E99D00FFFFFFFF26443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C626F6172642E680000000007626F6172642E6800000000C5D4F200FFFFFFFF27443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C73657269616C2E63000000000873657269616C2E6300000000FFDC7800FFFFFFFF23443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6D772E6300000000046D772E6300000000BECEA100FFFFFFFF2C443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6472765F6D7075333035302E63000000000D6472765F6D7075333035302E6300000000F0A0A100FFFFFFFF2C443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6472765F6164786C3334352E63000000000D6472765F6164786C3334352E6300000000BCA8E100FFFFFFFF2D443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6472765F686D63353838336C2E63000000000E6472765F686D63353838336C2E63000000009CC1B600FFFFFFFF24443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C696D752E630000000005696D752E6300000000F7B88600FFFFFFFF28443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C73656E736F72732E63000000000973656E736F72732E6300000000D9ADC200FFFFFFFF28443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6472765F6932632E6300000000096472765F6932632E6300000000B5E99D00FFFFFFFF2B443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6472765F626D703038352E63000000000C6472765F626D703038352E6300000000B3A6BE00FFFFFFFF2B443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6472765F73797374656D2E63000000000C6472765F73797374656D2E6300000000EAD6A300FFFFFFFF51443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6C69625C53544D3332463130785F5374645065726970685F4472697665725C7372635C73746D3332663130785F7263632E63000000000F73746D3332663130785F7263632E6300000000F6FA7D00FFFFFFFF51443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6C69625C53544D3332463130785F5374645065726970685F4472697665725C696E635C73746D3332663130785F7263632E68000000000F73746D3332663130785F7263632E68000000005FC3CF00FFFFFFFF52443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6C69625C53544D3332463130785F5374645065726970685F4472697665725C696E635C73746D3332663130785F6770696F2E68000000001073746D3332663130785F6770696F2E6800000000CACAD500FFFFFFFF28443A5C666C795F3132325C70726F6A656374735C62617365666C696768745C6472765F70776D2E6300000000096472765F70776D2E6300000000BCA8E100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000DE0000005E00000000080000FE020000 @@ -3576,7 +3576,7 @@ 0 16 - 00000000000000000008000017000000 + 00000000000000000108000017000000 16 @@ -3612,7 +3612,7 @@ File 2002 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000004000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000004000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000004001100000000000000000000000000000000010000000100000001800A810000000004001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C6572030000 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020000001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C6572030000 1423 @@ -3644,7 +3644,7 @@ Debug 2290 - 00200000000000001B00FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000000000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180460100000000000049000000000000000000000000000000000100000001000000000000000544656275675A020000 + 00200000000000001B00FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000000000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180460100000000000049000000000000000000000000000000000100000001000000000000000544656275675A020000 968 @@ -3677,11 +3677,11 @@ 0 16 - DE0000004B0000006C060000DA000000 + DE0000004B0000006C06000092010000 16 - DE0000005E0000006C060000ED000000 + DE0000005E0000006C060000A5010000 @@ -3837,7 +3837,7 @@ 0 16 - E10000006200000069060000C1000000 + E1000000620000006906000079010000 16 @@ -4097,7 +4097,7 @@ 0 16 - DE0000005F0000006C060000DA000000 + DE0000005F0000006C06000092010000 16 @@ -4117,7 +4117,7 @@ 0 16 - E10000006200000069060000C1000000 + E1000000620000006906000079010000 16 @@ -4157,7 +4157,7 @@ 0 16 - E10000006200000069060000C1000000 + E1000000620000006906000079010000 16 @@ -4177,7 +4177,7 @@ 0 16 - E10000006200000069060000C1000000 + E1000000620000006906000079010000 16 @@ -4197,7 +4197,7 @@ 0 16 - E10000006200000069060000C1000000 + E1000000620000006906000079010000 16 @@ -4217,7 +4217,7 @@ 0 16 - E10000006200000069060000C1000000 + E1000000620000006906000079010000 16 @@ -6706,14 +6706,14 @@ 2466 - 000000000B000000000000000020000001000000FFFFFFFFFFFFFFFFDE000000DA0000006C060000DE000000010000000100001004000000010000005AFEFFFF20010000FFFFFFFF07000000CB00000057010000CC000000F08B00005A01000079070000CA090000FFFF02000B004354616262656450616E650020000001000000DE0000005E0000006C060000ED000000DE0000004B0000006C060000DA0000000000000040280056070000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000001000000FFFFFFFFFFFFFFFF6C0600004B000000700600001C030000010000000200001004000000010000000000000000000000FFFFFFFF16000000E20500002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000001800040000001000000700600005E000000000800002F030000700600004B000000000800001C0300000000000040410056160000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF044932433201000000418C000001000000FFFFFFFFFFFFFFFF15000000000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFDA0000004B000000DE0000001C030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000000000005E000000DA0000002F030000000000004B000000DA0000001C0300000000000040140056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF04000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF000000001C0300000008000020030000010000000100001004000000010000005AFDFFFF6500000000000000000000000000000001000000C6000000FFFFFFFF0B0000008F070000930700009407000095070000960700009007000091070000B9050000BA050000BB050000BC05000001800080000001000000040400003303000000080000510400000404000020030000000800003E04000000000000404100560B0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203201000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF050000000000000001000000000000000100000001000000FFFFFFFF0004000020030000040400003E04000001000000020000100400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF0000000087030000000800008B0300000000000001000000040000000100000084FDFFFFDE000000FFFFFFFF03000000C5000000C70000007794000001800080000000000000000000009E0300000008000051040000000000008B030000000800003E0400000000000040820046030000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000001000000FFFFFFFFFFFFFFFFDE000000920100006C060000960100000100000001000010040000000100000033FFFFFFF9010000FFFFFFFF07000000CB00000057010000CC000000F08B00005A01000079070000CA090000FFFF02000B004354616262656450616E650020000001000000DE0000005E0000006C060000A5010000DE0000004B0000006C060000920100000000000040280056070000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000001000000FFFFFFFFFFFFFFFF6C0600004B000000700600001C030000010000000200001004000000010000000000000000000000FFFFFFFF16000000E20500002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000001800040000001000000700600005E000000000800002F030000700600004B000000000800001C0300000000000040410056160000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF044932433201000000418C000001000000FFFFFFFFFFFFFFFF15000000000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFDA0000004B000000DE0000001C030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000000000005E000000DA0000002F030000000000004B000000DA0000001C0300000000000040140056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF04000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF000000001C0300000008000020030000010000000100001004000000010000005AFDFFFF6500000000000000000000000000000001000000C6000000FFFFFFFF0B0000008F070000930700009407000095070000960700009007000091070000B9050000BA050000BB050000BC05000001800080000001000000040400003303000000080000510400000404000020030000000800003E04000000000000404100560B0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203201000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF050000000000000001000000000000000100000001000000FFFFFFFF0004000020030000040400003E04000001000000020000100400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF0000000087030000000800008B0300000000000001000000040000000100000084FDFFFFDE000000FFFFFFFF03000000C5000000C70000007794000001800080000000000000000000009E0300000008000051040000000000008B030000000800003E0400000000000040820046030000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 File 2002 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020001001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C6572030000 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000004000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000004000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000004001100000000000000000000000000000000010000000100000001800A810000000004001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020001001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C6572030000 1423 @@ -6745,7 +6745,7 @@ Debug 2290 - 00200000010000001B00FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000002000100320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000020000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000020000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180460100000000040049000000000000000000000000000000000100000001000000000000000544656275675A020000 + 00200000010000001B00FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000002000100320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000020000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000020000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180460100000000040049000000000000000000000000000000000100000001000000000000000544656275675A020000 968 @@ -6766,10 +6766,22 @@ - D:\fly_122\projects\baseflight\drv_system.h + D:\fly_122\projects\baseflight\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_rcc.h + 0 + 499 + 499 + + + D:\fly_122\projects\baseflight\lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_gpio.h + 0 + 53 + 74 + + + D:\fly_122\projects\baseflight\drv_i2c.h 0 1 - 24 + 6 @@ -6778,24 +6790,60 @@ 0 100 - 10 + 8 .\startup_stm32f10x_md.s - 17 - 122 - 133 + 21 + 133 + 143 + + + .\drv_adc.c + 6 + 18 + 18 + + + drv_i2c.h + 0 + 1 + 6 + + + mw.h + 0 + 154 + 167 + + + .\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_gpio.c + 0 + 576 + 591 + + + .\main.c + 32 + 1 + 23 + + + board.h + 14 + 22 + 28 .\serial.c - 0 - 180 - 212 + 12 + 162 + 181 .\mw.c - 8 - 5 - 5 + 0 + 624 + 631 .\drv_mpu3050.c @@ -6818,38 +6866,56 @@ .\imu.c 0 - 57 - 67 + 27 + 27 .\sensors.c 0 187 - 214 - - - .\main.c - 0 - 1 - 8 + 212 .\drv_i2c.c 0 - 95 - 105 + 283 + 300 + + + .\drv_bmp085.c + 0 + 213 + 232 .\drv_system.c - 25 - 169 - 196 + 115 + 55 + 60 - drv_system.h + .\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_rcc.c + 34 + 1095 + 1102 + + + lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_rcc.h + 62 + 499 + 499 + + + lib\STM32F10x_StdPeriph_Driver\inc\stm32f10x_gpio.h + 15 + 53 + 74 + + + .\drv_pwm.c 0 1 - 24 + 1 diff --git a/baseflight.uvopt b/baseflight.uvopt index 3e4b1e61fa..cdb0cb202f 100755 --- a/baseflight.uvopt +++ b/baseflight.uvopt @@ -229,7 +229,7 @@ 1 0 - write_p + buf @@ -545,10 +545,10 @@ 1 0 0 - 0 + 32 0 1 - 8 + 23 0 .\main.c main.c @@ -559,10 +559,10 @@ 5 0 0 - 0 + 14 0 - 0 - 0 + 22 + 28 0 .\board.h board.h @@ -575,8 +575,8 @@ 0 0 0 - 57 - 67 + 27 + 27 0 .\imu.c imu.c @@ -587,10 +587,10 @@ 1 0 0 - 8 + 0 0 - 5 - 5 + 624 + 631 0 .\mw.c mw.c @@ -601,10 +601,10 @@ 5 0 0 - 20 + 0 0 - 0 - 0 + 154 + 167 0 .\mw.h mw.h @@ -618,7 +618,7 @@ 0 0 187 - 214 + 212 0 .\sensors.c sensors.c @@ -643,10 +643,10 @@ 1 0 0 - 0 + 12 0 - 180 - 212 + 162 + 181 0 .\serial.c serial.c @@ -680,8 +680,8 @@ 0 0 0 - 95 - 105 + 283 + 300 0 .\drv_i2c.c drv_i2c.c @@ -694,8 +694,8 @@ 0 0 0 - 0 - 0 + 1 + 1 0 .\drv_pwm.c drv_pwm.c @@ -706,10 +706,10 @@ 1 0 0 - 0 + 6 0 - 0 - 0 + 18 + 18 0 .\drv_adc.c drv_adc.c @@ -722,8 +722,8 @@ 0 0 0 - 0 - 0 + 213 + 232 0 .\drv_bmp085.c drv_bmp085.c @@ -776,10 +776,10 @@ 1 0 0 - 25 + 115 0 - 169 - 196 + 55 + 60 0 .\drv_system.c drv_system.c @@ -909,10 +909,10 @@ 1 0 0 - 0 + 34 0 - 0 - 0 + 1095 + 1102 0 .\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_rcc.c stm32f10x_rcc.c @@ -953,8 +953,8 @@ 0 0 0 - 0 - 0 + 576 + 591 0 .\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_gpio.c stm32f10x_gpio.c @@ -979,10 +979,10 @@ 2 0 0 - 17 + 21 0 - 122 - 133 + 133 + 143 0 .\startup_stm32f10x_md.s startup_stm32f10x_md.s diff --git a/baseflight.uvproj b/baseflight.uvproj index d05ca046cd..305ed6fe39 100755 --- a/baseflight.uvproj +++ b/baseflight.uvproj @@ -390,6 +390,45 @@ main.c 1 .\main.c + + + 2 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + 11 + + + + + + 2 + 4 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + + + + + + + + + board.h diff --git a/drv_bmp085.c b/drv_bmp085.c index e16d9707cd..202cfe7454 100755 --- a/drv_bmp085.c +++ b/drv_bmp085.c @@ -228,9 +228,10 @@ uint16_t bmp085_get_ut(void) { uint16_t ut; uint8_t data[2]; + uint16_t timeout = 10000; // wait in case of cockup - while (!convDone) { + while (!convDone && timeout-- > 0) { __nop(); } @@ -256,9 +257,10 @@ uint32_t bmp085_get_up(void) { uint32_t up = 0; uint8_t data[3]; + uint16_t timeout = 10000; // wait in case of cockup - while (!convDone) { + while (!convDone && timeout-- > 0) { __nop(); } diff --git a/drv_i2c.c b/drv_i2c.c index d07a0cbf05..e84a27d9d0 100755 --- a/drv_i2c.c +++ b/drv_i2c.c @@ -4,11 +4,27 @@ // SCL PB10 // SDA PB11 +#ifdef __gnuc__ // TODO check this +#define DMB() asm volatile ("dmb":::"memory") +#else +#define DMB() __DMB() +#endif + static I2C_TypeDef *I2Cx; static void i2c_er_handler(void); static void i2c_ev_handler(void); static void i2cUnstick(void); +void I2C1_ER_IRQHandler(void) +{ + i2c_er_handler(); +} + +void I2C1_EV_IRQHandler(void) +{ + i2c_ev_handler(); +} + void I2C2_ER_IRQHandler(void) { i2c_er_handler(); @@ -19,6 +35,10 @@ void I2C2_EV_IRQHandler(void) i2c_ev_handler(); } + +#define I2C_DEFAULT_TIMEOUT 30000 +static volatile uint16_t i2cErrorCount = 0; + static volatile bool error = false; static volatile bool busy; @@ -62,6 +82,7 @@ static void i2c_er_handler(void) bool i2cWrite(uint8_t addr_, uint8_t reg_, uint8_t data) { uint8_t my_data[1]; + uint32_t timeout = I2C_DEFAULT_TIMEOUT; addr = addr_ << 1; reg = reg_; @@ -81,12 +102,21 @@ bool i2cWrite(uint8_t addr_, uint8_t reg_, uint8_t data) I2C_ITConfig(I2Cx, I2C_IT_EVT | I2C_IT_ERR, ENABLE); //allow the interrupts to fire off again } - while (busy); // TODO timeout + while (busy && --timeout > 0); + if (timeout == 0) { + i2cErrorCount++; + // reinit peripheral + clock out garbage + i2cInit(I2Cx); + return false; + } + return true; } bool i2cRead(uint8_t addr_, uint8_t reg_, uint8_t len, uint8_t* buf) { + uint32_t timeout = I2C_DEFAULT_TIMEOUT; + addr = addr_ << 1; reg = reg_; writing = 0; @@ -103,7 +133,15 @@ bool i2cRead(uint8_t addr_, uint8_t reg_, uint8_t len, uint8_t* buf) } I2C_ITConfig(I2Cx, I2C_IT_EVT | I2C_IT_ERR, ENABLE); //allow the interrupts to fire off again } - while (busy); // TODO timeout + + while (busy && --timeout > 0); + if (timeout == 0) { + i2cErrorCount++; + // reinit peripheral + clock out garbage + i2cInit(I2Cx); + return false; + } + return true; } @@ -130,17 +168,17 @@ void i2c_ev_handler(void) } else if (SReg_1 & 0x0002) { //we just sent the address - EV6 in ref manual //Read SR1,2 to clear ADDR volatile uint8_t a; - __DMB(); // asm volatile ("dmb":::"memory"); //memory fence to control hardware + DMB(); // memory fence to control hardware if (bytes == 1 && reading && subaddress_sent) { //we are receiving 1 byte - EV6_3 I2C_AcknowledgeConfig(I2Cx, DISABLE); //turn off ACK - __DMB(); // asm volatile ("dmb":::"memory"); + DMB(); a = I2Cx->SR2; //clear ADDR after ACK is turned off I2C_GenerateSTOP(I2Cx, ENABLE); //program the stop final_stop = 1; I2C_ITConfig(I2Cx, I2C_IT_BUF, ENABLE); //allow us to have an EV7 } else { //EV6 and EV6_1 a = I2Cx->SR2; //clear the ADDR here - __DMB(); // asm volatile ("dmb":::"memory"); + DMB(); if (bytes == 2 && reading && subaddress_sent) { //rx 2 bytes - EV6_1 I2C_AcknowledgeConfig(I2Cx, DISABLE); //turn off ACK I2C_ITConfig(I2Cx, I2C_IT_BUF, DISABLE); //disable TXE to allow the buffer to fill @@ -255,6 +293,11 @@ void i2cInit(I2C_TypeDef *I2C) } +uint16_t i2cGetErrorCounter(void) +{ + return i2cErrorCount; +} + static void i2cUnstick(void) { GPIO_InitTypeDef GPIO_InitStructure; diff --git a/drv_i2c.h b/drv_i2c.h index e3041911ab..f7148d7011 100755 --- a/drv_i2c.h +++ b/drv_i2c.h @@ -3,4 +3,4 @@ void i2cInit(I2C_TypeDef *I2Cx); bool i2cWrite(uint8_t addr_, uint8_t reg, uint8_t data); bool i2cRead(uint8_t addr_, uint8_t reg, uint8_t len, uint8_t* buf); - +uint16_t i2cGetErrorCounter(void); diff --git a/main.c b/main.c index a661cb8464..2d6385e948 100755 --- a/main.c +++ b/main.c @@ -5,6 +5,14 @@ int main(void) { uint8_t i; +#if 0 + RCC->APB2ENR |= RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO; // GPIOB + AFIO + AFIO->MAPR &= 0xF0FFFFFF; + AFIO->MAPR = 0x02000000; + GPIOB->BRR = 0x18; // set low 4 & 3 + GPIOB->CRL = 0x44433444; // PIN 4 & 3 Output 50MHz +#endif + systemInit(); readEEPROM(); diff --git a/mw.c b/mw.c index 259b07cc3e..b76176928b 100755 --- a/mw.c +++ b/mw.c @@ -15,7 +15,6 @@ uint8_t headFreeMode = 0; // if head free mode is a activated uint8_t passThruMode = 0; // if passthrough mode is activated int16_t headFreeModeHold; int16_t annex650_overrun_count = 0; -int16_t i2c_errors_count = 0; uint8_t armed = 0; uint8_t vbat; // battery voltage in 0.1V steps diff --git a/mw.h b/mw.h index 5d9ce61dfb..08c6afd99d 100755 --- a/mw.h +++ b/mw.h @@ -164,7 +164,6 @@ extern uint8_t calibratingM; extern uint16_t calibratingG; extern int16_t heading; extern int16_t annex650_overrun_count; -extern int16_t i2c_errors_count; extern int32_t pressure; extern int16_t BaroAlt; extern uint8_t headFreeMode; diff --git a/serial.c b/serial.c index 7ab37fc925..d33d68fead 100755 --- a/serial.c +++ b/serial.c @@ -178,7 +178,7 @@ void serialCom(void) serialize16(intPowerTrigger1); serialize8(vbat); serialize16(BaroAlt); // 4 variables are here for general monitoring purpose - serialize16(i2c_errors_count); // debug2 + serialize16(i2cGetErrorCounter()); // debug2 serialize16(debug3); // debug3 serialize16(debug4); // debug4 serialize8('M'); diff --git a/startup_stm32f10x_md.s b/startup_stm32f10x_md.s index 44065c6b5b..af36eeeaf4 100644 --- a/startup_stm32f10x_md.s +++ b/startup_stm32f10x_md.s @@ -141,9 +141,37 @@ Reset_Handler PROC LDR R0, =__main BX R0 ENDP - + +RCC_APB2ENR EQU 0x40021018 +GPIO_AFIO_MASK EQU 0x00000009 +GPIOB_CRL EQU 0x40010C00 +GPIOB_BRR EQU 0x40010C14 +AFIO_MAPR EQU 0x40010004 + Reboot_Loader PROC EXPORT Reboot_Loader + + ; RCC Enable GPIOB+AFIO + LDR R6, =RCC_APB2ENR + LDR R0, =GPIO_AFIO_MASK + STR R0, [R6] + ; MAPR pt1 + LDR R0, =AFIO_MAPR + LDR R1, [R0] + BIC R1, R1, #0xF000000 + STR R1, [R0] + ; MAPR pt2 + LSLS R1, R0, #9 + STR R1, [R0] + ; BRR + LDR R4, =GPIOB_BRR + MOVS R0, #0x18 + STR R0, [R4] + ; CRL + LDR R1, =GPIOB_CRL + LDR R0, =0x44433444 + STR R0, [R1] + ; Reboot to ROM LDR R0, =0x1FFFF000 LDR SP,[R0, #0] LDR R0,[R0, #4]