From 8f2f29987b40d938fe7d2c8b9a1c95117f973dc4 Mon Sep 17 00:00:00 2001 From: klassents Date: Tue, 8 Oct 2024 13:15:45 +0700 Subject: [PATCH] =?UTF-8?q?=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20bootloader,=20=D0=B2=20SS=20=D0=B2=D1=81=D0=B5=20?= =?UTF-8?q?=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B8,=20=D1=81=D0=B2?= =?UTF-8?q?=D1=8F=D0=B7=D0=B0=D0=BD=D0=BD=D1=8B=D0=B5=20=D1=81=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B5=D1=80=D1=8B=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=D0=BC?= =?UTF-8?q?=D0=B8,=20=D0=B2=D1=8B=D0=BD=D0=B5=D1=81=D0=B5=D0=BD=D1=8B=20?= =?UTF-8?q?=D0=B2=20ram.=20=D0=BD=D0=B0=20115200=20=D1=80=D0=B0=D0=B1?= =?UTF-8?q?=D0=BE=D1=82=D0=B0=D0=B5=D1=82,=20=D0=BD=D0=BE=20=D0=B2=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=87=D0=B8=D0=BA?= =?UTF-8?q?=D0=B5=20=D0=BD=D1=83=D0=B6=D0=BD=D0=B0=D1=8F=20=D1=84=D1=83?= =?UTF-8?q?=D0=BD=D0=BA=D1=86=D0=B8=D1=8F=20=D0=B2=D1=8B=D0=B7=D1=8B=D0=B2?= =?UTF-8?q?=D0=B0=D0=B5=D1=82=D1=81=D1=8F=20=D0=BD=D0=B0=D0=BF=D1=80=D1=8F?= =?UTF-8?q?=D0=BC=D1=83=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bootloaders/ace-uno/bootloader.hex | 446 +++++++++--------- cores/arduino/trap_handler.c | 4 +- .../SoftwareSerial/src/SoftwareSerial.cpp | 47 +- libraries/SoftwareSerial/src/SoftwareSerial.h | 4 +- 4 files changed, 252 insertions(+), 249 deletions(-) diff --git a/bootloaders/ace-uno/bootloader.hex b/bootloaders/ace-uno/bootloader.hex index f0462b5..3e826ca 100644 --- a/bootloaders/ace-uno/bootloader.hex +++ b/bootloaders/ace-uno/bootloader.hex @@ -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 diff --git a/cores/arduino/trap_handler.c b/cores/arduino/trap_handler.c index 4495da8..dc8ecd2 100644 --- a/cores/arduino/trap_handler.c +++ b/cores/arduino/trap_handler.c @@ -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()) diff --git a/libraries/SoftwareSerial/src/SoftwareSerial.cpp b/libraries/SoftwareSerial/src/SoftwareSerial.cpp index 455bebb..eb42f25 100644 --- a/libraries/SoftwareSerial/src/SoftwareSerial.cpp +++ b/libraries/SoftwareSerial/src/SoftwareSerial.cpp @@ -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,7 +155,8 @@ inline void SoftwareSerial::handle_interrupt() } } -extern "C" void softSerial_handler_wrapper(void) +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 - - // 1 bit time - // _rx_delay_intrabit = subtract_cap(bit_delay, 200); // spifi - _rx_delay_intrabit = subtract_cap(bit_delay, 60); // ram - - // 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 + // 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); - if (speed==115200) - { - _rx_delay_intrabit = subtract_cap(_rx_delay_intrabit, 10); - _rx_delay_stopbit+=30; - } + // 1 bit time + _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, 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(); diff --git a/libraries/SoftwareSerial/src/SoftwareSerial.h b/libraries/SoftwareSerial/src/SoftwareSerial.h index a7584de..eea17bc 100644 --- a/libraries/SoftwareSerial/src/SoftwareSerial.h +++ b/libraries/SoftwareSerial/src/SoftwareSerial.h @@ -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