обновлен bootloader, в SS все функции, связанные с прерываниями, вынесены в ram. на 115200 работает, но в обработчике нужная функция вызывается напрямую

This commit is contained in:
klassents committed 2024-10-08 13:15:45 +07:00
1 parent d228bc7ff9
commit 8f2f29987b
4 files changed
+249 -246

No files matched your search

+230 -216
View File
@@ -1,15 +1,15 @@
:020000040100F9
:10000000FD62938202400100FD12E39E02FE374131
:10001000000213010100B701000293810100B7152E
:100020000001938505F137160001130606F4B706A3
:100020000001938505FF3716000113060602B70687
:1000300000029386060039A083A2050023A0560083
:1000400091059106E3EAC5FEB7150001938505F415
:1000500037160001130606F4B7060002938606263B
:1000400091059106E3EAC5FEB71500019385050207
:100050003716000113060602B7060002938606262D
:1000600039A083A2050023A0560091059106E3EA7A
:10007000C5FEB70500029385050337060002130687
:10008000062621A023A005009105E3EDC5FEB700DB
:100090000001E780C00AB7000001E780C00AB7008E
:1000A0000001E780007273005010F5BF82800000ED
:100090000001E780C00AB7000001E780C00AB7107E
:1000A0000001E780808473005010F5BF828000005B
:1000B0000000000000000000000000000000000040
:1000C0006F004000197106C20AC40EC612C816CAD3
:1000D0001ACC1ECE22D026D22AD42ED632D836DA48
@@ -32,216 +32,230 @@
:1001E00027009702000096968682E78086FA96801E
:1001F000C1171D8F3E96E374C3F8A5B7B707050076
:100200000947D8CFB7170500938707C0984385667D
:1002100093860640558F98C3B71708009387074009
:1002200023A0070023A2070023A407001307A008A8
:10023000D8C77D57D8CF354798C3D84F9356570165
:100240008D8AE5DE8280B71708009387074023A0D8
:10025000070023A2070023A4070023A607007D5759
:10026000D8CF23A40702B7170500938707C0984388
:10027000F1769386F63F758F98C3B7070500D84F80
:1002800023AE07008280B71708009387074088D7FE
:10029000D84F137707046DDF828037070002B71548
:1002A000080037460F0023200704814781469385C5
:1002B000054013061624C84D137505020DC991CECD
:1002C0002320F70437470F00130707246397E7003D
:1002D000B707000205472383E700B7170800938795
:1002E0000740C8534205418182808546E9B78507AA
:1002F000E39DC7FEFDD2B7470F0093870724232055
:10030000F704F9B74111B707000222C413870700A9
:1003100006C6834667000547138407006390E6021C
:100320001305000F8D37B717080093870740D84F84
:10033000218B09C7D84F13678700D8CF2303040048
:10034000B240224441018280411106C622C426C225
:10035000AA84EF009013E1689388086A01488147F6
:10036000014781460146B70520C726853794980086
:10037000EF000077130414687D1419E40D45B240B2
:10038000224492444101828085452685EF00501128
:1003900005897DF10145E5B7411122C4370400020A
:1003A000930704008C43B70700804AC0BE95B70787
:1003B000000223ACB70206C626C293974501130478
:1003C00004003709000289E713058900EF00701A5D
:1003D0000C40B70400029386440413060010130572
:1003E0008900EF0050141C40370700028356470372
:1003F000938707101CC013060010B68763F4C6006D
:1004000093070010138444041305F400938707F046
:100410001306100F814513040410231AF7021D3B25
:10042000A285138544043D46EF00F0182320040004
:1004300023220400232404002316040023070400BD
:10044000B240224492440249410182805D71130608
:1004500080028145280886C6F539BD47230CF10086
:100460008947230EF1003ED2E177938707082C08D5
:100470000A85231AF1021923B640616182805D71F9
:10048000A2C4370400021305840086C6A6C2652BE9
:1004900013058400E525894513058400EF0050000D
:1004A0009377250085E3AA84854513058400EF0032
:1004B000207F13E62400AA851376F60F1305840027
:1004C000EF007001E1689388086A0148814701479D
:1004D00081460146B7052038130584001125E168DF
:1004E00038009388086A1308000285468147014650
:1004F000B70599EB1305840023040100D523B71534
:10050000000151469385C5EF6800EF00D00A9304BF
:1005100084009C406C0051463ED085473ED2681016
:10052000C1673ED4EF003009B70607009C42370789
:10053000F1FF7D17F98F08109CC2812BB64026442D
:10054000964461618280411106C6F5390D3FB707B7
:10055000008073905730B70000808290B240410114
:100560008280411106C622C426C24AC08347350094
:1005700005476383E70811472A846389E7008DCF25
:10058000B24022449244024941018280B7070002EE
:1005900083D7470391C30935834744000347540079
:1005A000E2074207BA9737070002232EF702370700
:1005B00000022320F700E9B73709000283544903FA
:1005C0000346050093054500370500021305450461
:1005D0002695EF00407E83470400BE94C204C1808C
:1005E000231A99029307F00FE3FC97F82244B240D4
:1005F0009244024941014DB33D457131B7070002B4
:1006000083D7470391C3493B2244B24092440249F5
:10061000410115BF3707000293070700B705000225
:1006200003DE470083A705043716080037450F008F
:1006300037480F00B708000201438146130707003F
:10064000130606401305152413080824938848153B
:1006500063EEC6016304030023A0F504834767002B
:10066000A9E73705000213054515E5BD81470323BA
:10067000C60113730302631F03008507E399A7FEF6
:10068000B7470F009387072423A0F504854723036A
:10069000F7008280E38607FF832E46023383D8006B
:1006A00085062300D301054365B78280011122CC62
:1006B0003704000226CA4AC84EC652C406CE1304E6
:1006C0000400930400061309E00FB7090002130A9F
:1006D0000003E136834764001375F50FA303A400FC
:1006E00099C30D31FDB7630F950063042503E31231
:1006F00045FF3D45493E553605052312A4003D45BD
:100700005936C1BF3D454136313783476400F1FB5F
:10071000FDB7138589000D397DD11305000FCDB7C5
:10072000011106CE22CC1D333704000213058400CC
:10073000192E130584009921E1689388086A0148FD
:100740008147780085460146B705D9EB130584003B
:10075000230601007126E168814701478146014671
:10076000B70538FF9388086A0148130584008D2E69
:10077000713437070002B715080037460F002320F1
:100780000704814781469385054013061624C84D0A
:100790001375050211CD85CA2320F70437470F00D2
:1007A000130707246391E702793B01A08546C5B78B
:1007B0008507E39DC7FE81CAB7470F0093870724CB
:1007C0002320F704D5B7DD350547AA876305E50281
:1007D00009476300E506054591EBB7060600DC4ACC
:1007E0007D771307F73FF98FDCCA014582807D17BB
:1007F00019EB0D4582809306004037A707001307C9
:100800000712B7050500905D7D8E75D2370606008C
:100810005C4A7D771307F73FF98FD58F41115CCA8A
:1008200002C613073006B2476359F700014541017C
:100830008280856693860680C9B7B24785073EC623
:10084000DDB791476307F50263EAA7008547630AAE
:10085000F50489476309F50405458280A147E31D36
:10086000F5FE0947094501A8FD1781EFC8D20D45DE
:10087000828005470D45B7A7070093870712B70683
:100880000500905E798E6DD28A05C98D4111CCD25A
:1008900002C613073006B247635AF700014541010B
:1008A00082801147C9BF21470145F1B7B24785078B
:1008B0003EC6D5B70547AA876305E5020947630227
:1008C000E506054591EBB70606009C4A7D771307C0
:1008D000F73FF98F9CCA014582807D1719EB0D45C2
:1008E00082809306004037A7070013070712B70559
:1008F0000500905D7D8E75D2370706001C4B7D7616
:100900001306F63FF18FD58F1CCB85471CCF4111C5
:1009100002C613073006B2476359F700014541018B
:1009200082808566938606807DBFB24785073EC676
:10093000DDB711C98547630DF50205458280FD17B6
:1009400091EB0D4582800946B7A7070093870712F0
:10095000B7060500985E718F7DD34111C8D602C6D7
:1009600013073006B2476357F70001454101828003
:100970000546D9BFB24785073EC6EDB7011126CA65
:10098000B7040600DC4806CE22CC4AC84EC652C484
:1009900056C2F19BDCC89C482A89C845F19B9CC87B
:1009A00083C7C5012E848A07DCC883C7D5018A079F
:1009B0009CC8193D0C44AA8A03454400593518487F
:1009C000B70705002A8A98C358480850D8C3184C5E
:1009D00098C7CD35AA894850A93F834704002A8784
:1009E00093F6170089E6D44893E62600D4C893F618
:1009F000270099E637060600544A93E6160054CAC3
:100A000093F6470099E637060600144A93E6260057
:100A100014CAA18B99E7B70606009C4A93E7170012
:100A20009CCAF24062442320590123224901232415
:100A300039012326E900D244B249224A924A4A8522
:100A4000424905618280011106CE22CC02C402C651
:100A50002147B707050037550800D8C705448D471B
:100A60008A85130505803EC022C2292A3755080011
:100A70009307C0038A851305058022C222C43EC0A5
:100A80001122F240624405618280411122C406C6EF
:100A90002A84553F18405C4F93E707015CCF1C4404
:100AA0001CCB5C4085CB1C43B7061000D58F1CC304
:100AB000144C5C48B240D606CE07D58F834604015D
:100AC000C206D58F8346C4012244E206D58F1CCFCF
:100AD000410182801C43B706F0FFFD16F58FC1BFB0
:100AE000032305002A8E0325C30113650502232E67
:100AF000A3002324C3001396260149824D8E23268A
:100B000003012322C300139605016354060299C210
:100B10000545B1CB01476346D700639C08020D45EC
:100B200082803386E700034606000507230AC300D8
:100B3000DDB799C2054505CB8147E3D0D7FE032633
:100B40000E00034546013306F70085072300A60083
:100B5000EDB783270E00FD18DC4F93F70702D5DFB2
:100B600011656D8D11E18280B707070083C74701CA
:100B700013F585001D8D3335A00082801C4141474F
:100B8000D8CF8280B7470800938707402A8863043C
:100B9000F508B7570800938707806304F50A3747BD
:100BA0000800630DE50A05458280331E1F01337678
:100BB000DE0129C683A345008843139318003396AA
:100BC0006F001346F6FF13F43300718D3314640085
:100BD000418D88C3638B5302638C0302084303AEC9
:100BE000C500718D331E6E003365C50108C3884290
:100BF000698E884533156500498E90C2850833D5C6
:100C00001E0145F53244410182802326C801F9B70F
:100C10002324C801E1B7B716050037170500B71739
:100C20000500938646C1130707C19387C7C083AEEB
:100C300005008148054F8D4F914233D51E0105EDCA
:100C40008280B716050037170500B7170500938691
:100C500006C21307C7C1938787C1D1BFB716050066
:100C600037170500B7170500938686C0130747C0DE
:100C7000938707C06DBF331E1F013376DE0119E273
:100C8000850865BF411122C635B7E1689388086AB7
:100C900001488147014781460146B705200689B5CD
:100CA000011106CEA307010089476393F502B7053A
:100CB0002035E1681307F1009388086A01488147ED
:100CC00085460146313DF2400345F10005618280D1
:100CD000B7052005F9BF011106CE22CC26CA23068E
:100CE000B100AA84A306C1004D37E1689388086A61
:100CF00001487C00014789460146B78520012685C9
:100D00000964F93B130414717D1419E40D45F24094
:100D10006244D24405618280854526855137058924
:100D200065F50145EDB7011106CE22CC26CA2E8409
:100D30004AC8AA84328936C6893FB247E16822860A
:100D40009388086A01480147CA86B78580022685CC
:100D5000616479331304146A7D1411C485452685B2
:100D60008137058975F9F2406244D24442490561F0
:100D70008280011106CE22CC26CA2EC6AA84313723
:100D80003246E1689388086A0148814701478146F5
:100D9000B705802026856164A1331304146A7D148D
:100DA00011C485452685ED3D058975F9F2406244FB
:100DB000D24405618280B3C7A5008D8BB308C500FE
:100DC000B1E78D4763F4C704937735002A87B9EB01
:100DD00013F6C8FFB306E6409307000263C8D706C0
:100DE000AE86BA876371C70203A806009107910611
:100DF00023AE07FFE3EAC7FE9307F6FF998FF19B47
:100E000091073E97BE956366170182802A87637EAD
:100E1000150383C7050005078505A30FF7FEE39AB1
:100E2000E8FE828083C60500050793773700A30F8D
:100E3000D7FE8505D1DF83C6050005079377370008
:100E4000A30FD7FE8505F9FF61B78280411122C645
:100E50001304000283A3050083A2450083AF85002D
:100E600003AFC50083AE050103AE450103A38501B1
:100E700003A8C501945113074702B307E640232E88
:100E800077FC232057FE2322F7FF2324E7FF2326A6
:100E9000D7FF2328C7FF232A67FE232C07FF232E13
:100EA000D7FE93854502E347F4FAAE86BA876371AD
:100EB000C70203A806009107910623AE07FFE3EAE5
:100EC000C7FE9307F6FF998FF19B91073E97BE955A
:100ED0006365170132444101828083C7050005071D
:100EE0008505A30FF7FEE387E8FE83C70500050726
:100EF0008505A30FF7FEE392E8FEE9BF200000009E
:100F0000010000000300000006000000EB000000EC
:100F10000000008000010000000007000000000049
:100F200000000000000000000000000000000000C1
:100F300000000000000000000000000000000000B1
:1002100093860640558F98C398471367074098C741
:10022000B71708009387074023A0070023A2070001
:1002300023A407001307A008D8C77D57D8CF354798
:1002400098C3D84F935657018D8AE5DE8280B71741
:1002500008009387074023A0070023A2070023A4D8
:10026000070023A607007D57D8CF23A40702B7179E
:100270000500938707C09843F1769386F63F758F04
:1002800098C398471377F7BF98C7B7070500094782
:1002900098D38280B71708009387074088D7D84F34
:1002A000137707046DDF82803707000203234704BA
:1002B000B706000237150800B7450F0023A406044F
:1002C0008147014613050540938515240328C50180
:1002D000B308F30013780802630C080205C2232256
:1002E000170537470F0023A4F60413070724639765
:1002F000E700B707000205472383E700B7170800A8
:1003000093870740C85342054181828005467DBFDF
:100310008507E39DB7FE7DD2B7470F00938707247B
:1003200023A4F60423221705E9B7411106C622C407
:1003300026C2AA84EF00B022E1689388086A0148C7
:100340008147014781460146B70520C72685379476
:100350009800EF003006130414687D1419E40D456D
:10036000B240224492444101828085452685EF00B7
:10037000702005897DF10145E5B7411122C437049C
:100380000002930704008C43B70700804AC0BE9563
:10039000B707000223AEB70206C626C293974501EF
:1003A000130404003709000289E713058900EF00F0
:1003B00090290C40B70400029386C4041306001071
:1003C00013058900EF0070231C4037070002835695
:1003D0008703938707101CC013060010B68763F4C9
:1003E000C600930700101384C4041305F400938718
:1003F00007F01306100F814513040410231CF702A5
:10040000913BA2851385C4043D46EF0010282320AC
:1004100004002322040023240400231604002307DD
:100420000400B240224492440249410182805D713D
:10043000130680028145280886C6293BBD47230C48
:10044000F1008947230EF1003ED2E1779387070838
:100450002C080A85231AF102E52BB64061618280DF
:100460005D71A2C4370400021305840086C6A6C2CB
:10047000CAC0652513058400EF00807D85451305FE
:100480008400EF00300F8D47814463E3A700AA8406
:10049000894513058400EF00F00D937725002A8627
:1004A00089E7136625001376F60FA68513058400E9
:1004B000EF00B00FE1689388086A0148814701475F
:1004C00081460146B705203813058400E525E1681B
:1004D00038009388086A1308000285468147014660
:1004E000B70599EB1305840023040100E125B71536
:1004F00000015146938505FD6800EF0010191309AE
:100500008400832709006C0051463ED085473ED2C7
:100510006810C1673ED4EF005017B70607009C4231
:100520003707F1FF7D17F98F08109CC20D2DB640DB
:1005300026449644064961618280411106C6013B0A
:100540000537B707008073905730B700008082905E
:10055000B2404101828041113707000222C406C621
:100560009307070083C76700854613040700638E5F
:10057000D70009476388E70023030400B240224400
:10058000410182801305000F3133B71708009387AC
:100590000740D84F218B09C7D84F13678700D8CFA2
:1005A000693FD9BF411106C622C426C24AC083474B
:1005B000350005476383E70811472A846389E7000C
:1005C0008DCFB24022449244024941018280B70754
:1005D000000283D7870391C34D3383474400034709
:1005E0005400E2074207BA97370700022320F704B6
:1005F000370700022320F700E9B7370900028354C8
:1006000089030346050093054500370500021305DD
:10061000C5042695EF00700783470400BE94C2040A
:10062000C180231C99029307F00FE3FC97F8224442
:10063000B24092440249410189B33D45A139B7070F
:10064000000283D7870391C30D3B2244B2409244FA
:1006500002494101DDB53707000241119306070049
:1006600003DF460026C4B704000283A2840422C626
:100670003715080037040002B7480F0037430F0052
:10068000370E00024AC28147232A04021309FFFFE2
:10069000814E814681458143014801461307070089
:1006A000130505409388182413030324130ECE1555
:1006B000636FE60363850E0009462303C70089C6FE
:1006C000B7060002A388F60299C1232A74026304C4
:1006D000080023A4540483476700A9E73244A244D6
:1006E0001249370500021305C515410165BD814258
:1006F0000328C50113780802631B08028502E399E9
:1007000012FF89C6B7060002A388F60299C1232A00
:100710007402B7470F009387072423A4F404854786
:100720002303F7003244A244124941018280E38A44
:1007300062FC03284502937FF80F637D260113783E
:10074000F80FC29385453308CE002300F801050653
:100750000548B9BFB307704093F7F70F6394FF00E4
:100760008546D5B7854EEDBF011122CC4EC652C489
:1007700037040002B7490F00371ADCBA26CA4AC844
:1007800056C25AC006CE13040400370900029389EA
:10079000F923930A0003B7040002391A370B000249
:1007A000213683274904A303A40063F3F9007133BE
:1007B0008347640099C34533E5B783467400638873
:1007C0005605930700066381F60603C704038D47A9
:1007D000998F8E07B357FA0093F7F70F6393F606D6
:1007E0009307170093F7F70F2388F4021147639DCF
:1007F000E7003D45453413058B00053E29C113052F
:10080000000F493C238804022322090451BF3D45BF
:100810002322090423880402B53C793405052312F8
:10082000A4003D45853CADBF3D45232209042388F6
:1008300004028D340D3583476400B5FFDDB73D45B7
:10084000C9B723880402A9BF011106CE22CCC53640
:100850003704000213058400C92413058400CD2E3B
:10086000E1689388086A0148814778008546014617
:10087000B705D9EB1305840023060100252EE16896
:100880009388086A01488147014781460146B705B8
:1008900038FF13058400392E9532F9350547AA87AC
:1008A0006305E50209476300E506054591EBB706D8
:1008B0000600DC4A7D771307F73FF98FDCCA014554
:1008C00082807D1719EB0D4582809306004037A783
:1008D000070013070712B7050500905D7D8E75D2DE
:1008E000370606005C4A7D771307F73FF98FD58FEF
:1008F00041115CCA02C613073006B2476359F700BC
:10090000014541018280856693860680C9B7B2475A
:1009100085073EC6DDB791476307F50263EAA70086
:100920008547630AF50489476309F5040545828014
:10093000A147E31DF5FE0947094501A8FD1781EF11
:10094000C8D20D45828005470D45B7A7070093879C
:100950000712B7060500905E798E6DD28A05C98DA3
:100960004111CCD202C613073006B247635AF700D2
:100970000145410182801147C9BF21470145F1B7B7
:10098000B24785073EC6D5B70547AA876305E50286
:1009900009476302E506054591EBB70606009C4A48
:1009A0007D771307F73FF98F9CCA014582807D1739
:1009B00019EB0D4582809306004037A70700130707
:1009C0000712B7050500905D7D8E75D237070600CA
:1009D0001C4B7D761306F63FF18FD58F1CCB8547D8
:1009E0001CCF411102C613073006B2476359F70006
:1009F0000145410182808566938606807DBFB247AE
:100A000085073EC6DDB711C98547630DF50205456B
:100A10008280FD1791EB0D4582800946B7A707003C
:100A200093870712B7060500985E718F7DD3411139
:100A3000C8D602C613073006B2476357F700014510
:100A4000410182800546D9BFB24785073EC6EDB752
:100A5000011126CAB7040600DC4806CE22CC4AC8DB
:100A60004EC652C456C2F19BDCC89C482A89C84570
:100A7000F19B9CC883C7C5012E848A07DCC883C745
:100A8000D5018A079CC8193D0C44AA8A0345440035
:100A900059351848B70705002A8A98C3584808509E
:100AA000D8C3184C98C7CD35AA894850A93F834769
:100AB00004002A8793F6170089E6D44893E62600B7
:100AC000D4C893F6270099E637060600544A93E601
:100AD000160054CA93F6470099E637060600144AF2
:100AE00093E6260014CAA18B99E7B70606009C4A34
:100AF00093E717009CCAF240624423205901232245
:100B00004901232439012326E900D244B249224A6B
:100B1000924A4A85424905618280011106CE22CC63
:100B200002C402C62147B707050037550800D8C7D9
:100B300005448D478A85130505803EC022C2292AB7
:100B4000375508009307C0038A851305058022C224
:100B500022C43EC01122F2406244056182804111EC
:100B600022C406C62A84553F18405C4F93E707010C
:100B70005CCF1C441CCB5C4085CB1C43B7061000EB
:100B8000D58F1CC3144C5C48B240D606CE07D58F17
:100B900083460401C206D58F8346C4012244E2067F
:100BA000D58F1CCF410182801C43B706F0FFFD1694
:100BB000F58FC1BF032305002A8E0325C3011365EA
:100BC0000502232EA3002324C30013962601498285
:100BD0004D8E232603012322C3001396050163547F
:100BE000060299C20545B1CB01476346D700639C15
:100BF00008020D4582803386E7000346060005079C
:100C0000230AC300DDB799C2054505CB8147E3D070
:100C1000D7FE03260E00034546013306F70085077D
:100C20002300A600EDB783270E00FD18DC4F93F7D5
:100C30000702D5DF11656D8D11E18280B7070700CE
:100C400083C7470113F585001D8D3335A0008280D1
:100C50001C414147D8CF8280B7470800938707409F
:100C60002A886304F508B757080093870780630450
:100C7000F50A37470800630DE50A05458280331EF3
:100C80001F013376DE0129C683A3450088431393F1
:100C9000180033966F001346F6FF13F43300718D7E
:100CA00033146400418D88C3638B5302638C030249
:100CB000084303AEC500718D331E6E003365C50158
:100CC00008C38842698E884533156500498E90C2F5
:100CD000850833D51E0145F5324441018280232623
:100CE000C801F9B72324C801E1B7B71605003717C3
:100CF0000500B7170500938646C1130707C1938700
:100D0000C7C083AE05008148054F8D4F914233D552
:100D10001E0105ED8280B716050037170500B717CD
:100D20000500938606C21307C7C1938787C1D1BF49
:100D3000B716050037170500B7170500938686C05C
:100D4000130747C0938707C06DBF331E1F0133765B
:100D5000DE0119E2850865BF411122C635B7E16899
:100D60009388086A01488147014781460146B705D3
:100D7000200689B5011106CEA307010089476393B8
:100D8000F502B7052035E1681307F1009388086A7A
:100D90000148814785460146313DF2400345F10057
:100DA00005618280B7052005F9BF011106CE22CC6E
:100DB00026CA2306B100AA84A306C1004D37E16804
:100DC0009388086A01487C00014789460146B78537
:100DD000200126850964F93B130414717D1419E47C
:100DE0000D45F2406244D2440561828085452685E6
:100DF0005137058965F50145EDB7011106CE22CCC5
:100E000026CA2E844AC8AA84328936C6893FB24788
:100E1000E16822869388086A01480147CA86B78537
:100E200080022685616479331304146A7D1411C429
:100E3000854526858137058975F9F2406244D2449B
:100E4000424905618280011106CE22CC26CA2EC6F7
:100E5000AA8431373246E1689388086A014881479D
:100E600001478146B705802026856164A1331304BC
:100E7000146A7D1411C485452685ED3D058975F9F3
:100E8000F2406244D24405618280B3C7A5008D8BD5
:100E9000B308C500B1E78D4763F4C7049377350005
:100EA0002A87B9EB13F6C8FFB306E64093070002A2
:100EB00063C8D706AE86BA876371C70203A8060067
:100EC0009107910623AE07FFE3EAC7FE9307F6FFFB
:100ED000998FF19B91073E97BE95636617018280BB
:100EE0002A87637E150383C7050005078505A30FC1
:100EF000F7FEE39AE8FE828083C605000507937734
:100F00003700A30FD7FE8505D1DF83C6050005078F
:100F100093773700A30FD7FE8505F9FF61B782806D
:100F2000411122C61304000283A3050083A24500D9
:100F300083AF850003AFC50083AE050103AE450155
:100F400003A3850103A8C501945113074702B30702
:100F5000E640232E77FC232057FE2322F7FF23248D
:100F6000E7FF2326D7FF2328C7FF232A67FE232C6A
:100F700007FF232ED7FE93854502E347F4FAAE869A
:100F8000BA876371C70203A806009107910623AED2
:100F900007FFE3EAC7FE9307F6FF998FF19B9107DE
:100FA0003E97BE956365170132444101828083C735
:100FB000050005078505A30FF7FEE387E8FE83C755
:100FC000050005078505A30FF7FEE392E8FEE9BFDC
:100FD00020000000010000000300000006000000E7
:100FE000EB00000000000000000000000000000016
:100FF000000000800000000000000700000000006A
:1010000000000000000000000000000000000000E0
:1010100000000000000000000000000000000000D0
:0400000501000000F6
:00000001FF
+2 -2
View File
@@ -19,8 +19,8 @@ void __attribute__((noinline, section(".ram_text"))) trap_handler(void)
((GPIO_0)->CLEAR = (GPIO_PIN_0));
// gpio interrupt
if (EPIC_CHECK_GPIO_IRQ())
gpio_interrupts_handler();
// softSerial_handler_wrapper();
// gpio_interrupts_handler();
softSerial_handler_wrapper();
// tone timer interrupt
if (EPIC_CHECK_TIMER16_1())
+15 -26
View File
@@ -34,7 +34,7 @@ volatile uint8_t SoftwareSerial::_receive_buffer_head = 0;
// Private methods
// function placed in ram. Should not call other function placed in flash
void SoftwareSerial::tunedDelay(uint32_t delayTicks)
void SoftwareSerial::tunedDelay(uint32_t delayTicks) // .ram_text
{
if (delayTicks > 1)
{
@@ -82,25 +82,25 @@ bool SoftwareSerial::stopListening()
//
// The receive routine called by the interrupt handler
//
void SoftwareSerial::recv()
void SoftwareSerial::recv() // .ram_text
{
uint8_t data = 0;
// If RX line is high, then we don't see any start bit
// so interrupt is probably not for us
bool rxState = (bool)GPIO_READ_PIN((GPIO_TypeDef *)_receivePortRegister, (HAL_PinsTypeDef)_receiveBitMask);
if (_inverse_logic ? rxState : !rxState)
{
// Disable further interrupts during reception, this prevents
// triggering another interrupt directly after we return, which can
// cause problems at higher baudrates.
setRxIntMsk(false); // __always_inline__
// Wait approximately 1/2 of a bit width to "center" the sample
tunedDelay(_rx_delay_centering); // __always_inline__
if (_rx_delay_centering > 0)
tunedDelay(_rx_delay_centering); // .ram_text
GPIO_0->OUTPUT_ ^= GPIO_PIN_1;
// Read each of the 8 bits
uint8_t data = 0;
for (uint8_t i=8; i > 0; --i)
{
tunedDelay(_rx_delay_intrabit);
@@ -147,7 +147,7 @@ uint8_t SoftwareSerial::rx_pin_read()
// Interrupt handling
/* static */
inline void SoftwareSerial::handle_interrupt()
void SoftwareSerial::handle_interrupt() // .ram_text
{
if (active_object)
{
@@ -155,6 +155,7 @@ inline void SoftwareSerial::handle_interrupt()
}
}
extern "C" void softSerial_handler_wrapper(void) __attribute__((noinline, section(".ram_text")));
extern "C" void softSerial_handler_wrapper(void)
{
SoftwareSerial::handle_interrupt();
@@ -237,28 +238,16 @@ void SoftwareSerial::begin(long speed)
// Only setup rx when we have a valid INT for this pin
if (digitalPinToInterrupt(_receivePin) != NOT_AN_INTERRUPT)
{
// We want to have a total delay of 1.5 bit time from start bit.
// Inside the loop, we already wait for 1 bit time, so here we
// wait for 0.5 bit time
// _rx_delay_centering = subtract_cap(bit_delay / 2, 750); // spifi
_rx_delay_centering = subtract_cap(bit_delay / 2, 315); // ram
// We want to have a total delay of 1.5 bit time from start bit. Inside the loop, we already
// wait for 1 bit time, so here we wait for 0.5 bit time
_rx_delay_centering = subtract_cap(bit_delay / 2, 315);
// 1 bit time
// _rx_delay_intrabit = subtract_cap(bit_delay, 200); // spifi
_rx_delay_intrabit = subtract_cap(bit_delay, 60); // ram
_rx_delay_intrabit = subtract_cap(bit_delay, 60);
// This delay aims at 3/4 of a bit time, meaning the end of the
// delay will be at 1/4th of the stopbit. This allows some extra
// time for ISR cleanup, which makes 115200 baud at 16Mhz work more
// reliably
// _rx_delay_stopbit = subtract_cap(bit_delay * 3 / 4, 950); // spifi
_rx_delay_stopbit = subtract_cap(bit_delay * 3 / 4, 142); // ram
if (speed==115200)
{
_rx_delay_intrabit = subtract_cap(_rx_delay_intrabit, 10);
_rx_delay_stopbit+=30;
}
// This delay aims at 3/4 of a bit time, meaning the end of the delay will be at 1/4th of the stopbit.
// This allows some extra time for ISR cleanup, which makes 115200 baud at 16Mhz work more reliably
_rx_delay_stopbit = subtract_cap(bit_delay * 3 / 4, 142);
// Save gpio_line for turning on/off interrupts
_int_maskLine = digitalPinToGpioIntLine(_receivePin);
@@ -274,7 +263,7 @@ void SoftwareSerial::begin(long speed)
tunedDelay(_tx_delay); // if we were low this establishes the end
// todo убрать
HAL_GPIO_PinConfig(GPIO_0, GPIO_PIN_8, HAL_GPIO_MODE_GPIO_OUTPUT, HAL_GPIO_PULL_NONE, HAL_GPIO_DS_2MA);
HAL_GPIO_PinConfig(GPIO_0, GPIO_PIN_0, HAL_GPIO_MODE_GPIO_OUTPUT, HAL_GPIO_PULL_NONE, HAL_GPIO_DS_2MA);
HAL_GPIO_PinConfig(GPIO_0, GPIO_PIN_1, HAL_GPIO_MODE_GPIO_OUTPUT, HAL_GPIO_PULL_NONE, HAL_GPIO_DS_2MA);
listen();
@@ -64,7 +64,7 @@ private:
static SoftwareSerial *active_object;
// private methods
inline void recv() __attribute__((__always_inline__));
void recv() __attribute__((noinline, section(".ram_text")));
uint8_t rx_pin_read();
void setTX(uint8_t transmitPin);
void setRX(uint8_t receivePin);
@@ -103,7 +103,7 @@ public:
using Print::write;
// public only for easy access by interrupt handlers
static inline void handle_interrupt() __attribute__((__always_inline__));
static void handle_interrupt() __attribute__((noinline, section(".ram_text")));
};
#endif