diff --git a/README.md b/README.md index 475223b..1db3f64 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,8 @@ ## Особенности использования пакета в ArduinoIDE ### Цифровые выводы -В отличие от стандартного функционала Arduino на платах, входящих в состав пакета, невозможно управлять притяжками цифрового вывода, настроенного на вход, с помощью функции `void digitalWrite(uint32_t PinNumber, uint32_t Val)`. Для включения притяжки к питанию необходимо воспользоваться функцией `void pinMode(PinNumber, INPUT_PULLUP)`. +В отличие от стандартного функционала Arduino на платах, входящих в состав пакета, невозможно управлять притяжками цифрового вывода, настроенного на вход, с помощью функции `void digitalWrite(uint32_t PinNumber, uint32_t Val)`. Для включения притяжки к питанию необходимо воспользоваться функцией `pinMode(PinNumber, INPUT_PULLUP)`. +Доступна возможность конфигурирования цифрового вывода на вход с притяжкой к земле, для этого необходимо использовать макрос `INPUT_PULLDOWN` - `pinMode(PinNumber, INPUT_PULLDOWN)`. Для инвертирования состояния цифровых выводов доступна функция `void digitalToggle(uint32_t PinNumber)`. ### Аналоговые выводы @@ -37,7 +38,32 @@ Общая функция-обработчик прерываний располагается в RAM памяти. Это позволяет устранить задержки, связанные с кэшированием при работе из FLASH памяти. Обработчики прерываний, назначаемые на цифровые выводы с помощью функции `void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode)`, и обработчик прерывания для функции `tone()` так же располагаются в памяти RAM. Глобальное разрешение прерываний активируется после завершения функции `setup()`. Если необходимо использовать прерывания внутри самой функции `setup()`, их можно включить вручную, вызвав функцию `interrupts()` перед вызовом функций, работающих с прерываниями. Прерывания используются для приема данных модулями `Serial`, `Wire`, для работы библиотеки `Servo`, функцией `tone()`. - + +В пакете поддержки доступна возможность дополнения или замены стандартного обработчика прерываний пользовательской функцией-обработчиком. Для этого в своем скетче необходимо определить функцию `extern "C" bool ISR()`, она вызывается первой в стандартном обработчике. Внутри функции можно проверять флаги прерываний и реагировать на нужные. Важно очищать флаги обрабатываемых прерываний, чтобы обработчик работал корректно. +Если функция возвращает `false`, после ее выполнения так же будет выполнен код стандартного обработчика прерываний. Если функция возвращает `true`, выполнение кода стандартного обработчика будет пропущено. +Пользовательскую функцию необходимо располагать в RAM памяти, так как стандартный обработчик прерываний расположен именно там. +Ниже приведен пример пользовательского обработчика прерывания по переполнению от 16-битного таймера 1: +``` +extern "C" __attribute__((section(".ram_text"))) bool ISR(void) +{ + // обработка прерывания от 16-битного таймера + if (EPIC_CHECK_TIMER16_1()) + { + if (TIM16_GET_ARRM_INT_STATUS(htimer16_1_)) + { + // необходимые действия при переполнении таймера + } + // очистить флаги прерывания от таймера 1 + TIM16_CLEAR_INT_MASK(htimer16_1_, 0xFFFFFFFF); + } + return false; +} +``` +Для корректной работы функции из примера необходимо подключить в скетче следующие файлы: +``` +#include "mik32_hal_timer16.h" +#include "wiring_LL.h" +``` ### Serial Для работы доступно два последовательных интерфейса. Нулевой интерфейс используется экземпляром класса `Serial`. Информации в Монитор порта в Arduino IDE поступает через него. Первый интерфейс используется экземпляром класса `Serial1`. Выводы, на которых доступны указанные интерфейсы, перечислены в описании отдельных плат. Доступны следующие макросы для настройки режима работы каждого интерфейса в функции `Serial.begin()`: `SERIAL_7N1`, `SERIAL_8N1`, `SERIAL_7N2`, `SERIAL_8N2`, `SERIAL_7E1`, `SERIAL_8E1`, `SERIAL_7E2`, `SERIAL_8E2`, `SERIAL_7O1`, `SERIAL_8O1`, `SERIAL_7O2`, `SERIAL_8O2`. Здесь длина данных - 7 или 8 бит; бит четности - нет(N), четный(E), нечетный(O); стоп бит - 1 или 2 бита. diff --git a/bootloaders/elbear/bootloader.hex b/bootloaders/elbear/bootloader.hex index 3e826ca..5040f83 100644 --- a/bootloaders/elbear/bootloader.hex +++ b/bootloaders/elbear/bootloader.hex @@ -1,261 +1,281 @@ :020000040100F9 -:10000000FD62938202400100FD12E39E02FE374131 -:10001000000213010100B701000293810100B7152E -:100020000001938505FF3716000113060602B70687 -:1000300000029386060039A083A2050023A0560083 -:1000400091059106E3EAC5FEB71500019385050207 -:100050003716000113060602B7060002938606262D -:1000600039A083A2050023A0560091059106E3EA7A -:10007000C5FEB70500029385050337060002130687 -:10008000062621A023A005009105E3EDC5FEB700DB -:100090000001E780C00AB7000001E780C00AB7107E -:1000A0000001E780808473005010F5BF828000005B -:1000B0000000000000000000000000000000000040 -:1000C0006F004000197106C20AC40EC612C816CAD3 -:1000D0001ACC1ECE22D026D22AD42ED632D836DA48 -:1000E0003ADC3EDEC2C0C6C2CAC4CEC6D2C8D6CA78 -:1000F000DACCDECEE2D0E6D2EAD4EED6F2D8F6DA28 -:10010000FADCFEDE970000009380E00482909240CB -:100110002241B2414242D2426243F24302549254DB -:100120002255B2554256D2566257F2570648964863 -:100130002649B649464AD64A664BF64B065C965C5B -:10014000265DB65D465ED65E665FF65F096173004A -:10015000203001A03D432A876373C3029377F700E1 -:10016000BDEFADE5937606FF3D8ABA960CC34CC34E -:100170000CC74CC74107E36BD7FE11E28280B30680 -:10018000C3408A069702000096966780A600230760 -:10019000B700A306B7002306B700A305B7002305E1 -:1001A000B700A304B7002304B700A303B7002303D9 -:1001B000B700A302B7002302B700A301B7002301D1 -:1001C000B700A300B7002300B700828093F5F50FB6 -:1001D00093968500D58D93960501D58D61B793963D -:1001E00027009702000096968682E78086FA96801E -:1001F000C1171D8F3E96E374C3F8A5B7B707050076 -:100200000947D8CFB7170500938707C0984385667D -: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 +:10000000FD6293820240FD12E39F02FE374100022F +:1000100013010100B711000293818193B71500010C +:10002000938585103716000113068613B706000264 +:100030009386861539A083A2050023A0560091055A +:100040009106E3EAC5FEB70500019385850B3706E7 +:10005000000113060621B70600029386060039A0A8 +:1000600083A2050023A0560091059106E3EAC5FE90 +:10007000B705000293858518370600021306464B24 +:1000800021A023A005009105E3EDC5FEB702000203 +:100090009382020C73905230B7000001E780600B2E +:1000A000B7000001E780600BB7100001E780E09324 +:0800B00073005010F5BF8280BF +:1000B8000000000000000000000000000000000038 +:1000C8000000000000000000000000000000000028 +:1000D8000000000000000000000000000000000018 +:1000E8000000000000000000000000000000000008 +:1000F80000000000000000000000000000000000F8 +:1001080000000000000000000000000000000000E7 +:1001180000000000000000000000000000000000D7 +:1001280000000000000000000000000000000000C7 +:1001380000000000000000000000000000000000B7 +:1001480000000000000000000000000000000000A7 +:100158000000000000000000000000000000000097 +:100168000000000000000000000000000000000087 +:100178006F004000130141F806C00AC20EC412C63F +:1001880016C81ACA1ECC22CE26D02AD22ED432D6CF +:1001980036D83ADA3EDC42DEC6C0CAC2CEC4D2C6BF +:1001A800D6C8DACADECCE2CEE6D0EAD2EED4F2D6AF +:1001B800F6D8FADAFEDC97000000938000058290FA +:1001C80082401241A2413242C2425243E243724447 +:1001D80082541255A2553256C2565257E257725897 +:1001E80086481649A649364AC64A564BE64B764CC7 +:1001F800865C165DA65D365EC65E565FE65F1301D9 +:08020800C1077300203001A0C2 +:100210003D432A876373C3029377F700BDEFADE5D3 +:10022000937606FF3D8ABA960CC34CC30CC74CC7E5 +:100230004107E36BD7FE11E28280B306C3408A0612 +:100240009702000096966780A6002307B700A306D2 +:10025000B7002306B700A305B7002305B700A30422 +:10026000B7002304B700A303B7002303B700A3021A +:10027000B7002302B700A301B7002301B700A30012 +:10028000B7002300B700828093F5F50F93968500A1 +:10029000D58D93960501D58D61B79396270097026A +:1002A000000096968682E78086FA9680C1171D8F99 +:1002B0003E96E374C3F8A5B7B70705000947D8CF42 +:1002C000B7170500938707C0984385669386064055 +:1002D000558F98C398471367074098C7B71708000A +:1002E0009387074023A0070023A2070023A4070049 +:1002F0001307A008D8C77D57D8CF354798C3D84F24 +:10030000935657018D8AE5DE8280B71708009387E0 +:10031000074023A0070023A2070023A4070023A669 +:1003200007007D57D8CF23A40702B717050093878E +:1003300007C09843F1769386F63F758F98C3984728 +:100340001377F7BF98C7B7070500094798D382808E +:10035000B71708009387074088D7D84F137707044B +:100360006DDF828003A3418637150800B7450F0073 +:1003700023A4018681470146130505409385152472 +:100380000328C501B308F30013780802630A0802C2 +:1003900011CE23A2118737470F0023A4F18613073C +:1003A00007246395E70005472387E184B717080012 +:1003B00093870740C8534205418182800546C9B7EB +:1003C0008507E39DB7FE7DD2B7470F0093870724CB +:1003D00023A4F18623A21187F9B7411106C622C4CE +:1003E00026C2AA84EF007028E1689388086A014851 +:1003F0008147014781460146B70520C726853794C6 +:100400009800EF00F00B130414687D1419E40D45F7 +:10041000B240224492444101828085452685EF0006 +:10042000302605897DF10145E5B7411122C4130647 +:1004300000109305F00F1385C18606C6D13B83A536 +:1004400081849386C1861306001013850182EF0014 +:1004500090341384C186814793050410130600105D +:10046000B306F4003387F50083C606000347070090 +:10047000639AE6008507E395C7FE0545B24022442E +:10048000410182800145DDBF411126C293878184ED +:100490008C43B70700804AC0BE9523AEB18406C620 +:1004A00022C4939745019384818489E7138501824F +:1004B000EF00302A8C409386C18613850182938693 +:1004C000061013060010EF00102485371384C18630 +:1004D00011E989472383F400B2402244924402493F +:1004E000410182809C4083D68185938707109CC000 +:1004F00013060010B68763F4C600930700109387B5 +:1005000007F01306100F9305F00F1305F410239C4A +:10051000F18413040420ED39A2853D461385C1966C +:10052000EF00D02822852244B240924402493D4641 +:100530009305F00F4101E9B95D7113068002814511 +:10054000280886C6F131BD47230CF1008947230EE8 +:10055000F1003ED2E177938707082C080A85231A19 +:10056000F102DD23B640616182805D71A2C4138512 +:10057000018286C6A6C2CAC0EF00E06A1385018266 +:10058000EF00C07D854513850182EF00700F8D4718 +:10059000814463E3A700AA84894513850182EF00A3 +:1005A000300E937725002A8689E713662500137697 +:1005B000F60F9377060499C31376F60BA685138579 +:1005C0000182EF00500FE1689388086A0148814773 +:1005D000014781460146B705203813850182EF00A7 +:1005E000206EE16838009388086A13080002854687 +:1005F00081470146B70599EB138501822304010069 +:10060000EF00006CB715000151469385450F680057 +:10061000EF00D01913890182832709006C0051462D +:100620003ED085473ED26810C1673ED4EF00101817 +:10063000B70607009C423707F1FF7D17F98F0810B6 +:100640009CC22525B64026449644064961618280B5 +:10065000411106C65D39113FB707008073905730CE +:10066000B70000808290B24041018280411122C4D3 +:1006700006C69387818483C7670085461384818477 +:10068000638ED70009476388E70023030400B24064 +:100690002244410182801305000F5D39B71708001D +:1006A00093870740D84F218B09C7D84F136787001E +:1006B000D8CF793FD9BF411106C622C426C24AC04D +:1006C0008347350005476389E70611472A84638914 +:1006D000E7009DC7B2402244924402494101828012 +:1006E00083D7818591C34D3383474400034754002A +:1006F000E2074207BA9723A0F18623A4F184D9BF69 +:1007000083D48185034604001385C19626959305FD +:100710004400EF00B00983470400BE94C204C180C6 +:10072000239C91849307F00FE3F697FA2244B2409A +:1007300092440249410189BB3D45193983D78185DE +:1007400099E72244B24092440249410111B72D3B3E +:1007500083C7E184FDD7BDBF41119386818403DF48 +:10076000460026C483A2818622C637150800B748F2 +:100770000F0037430F004AC2814723AA018413099F +:10078000FFFF814E81468145814301480146138721 +:100790008184130505409388182413030324138EC2 +:1007A000C1A7636BE60363850E0009462303C700F8 +:1007B00099C2A388F18499C123AA718463040800B3 +:1007C00023A4518683476700A9E33244A244124917 +:1007D0001385C1A74101C5B581420328C50113781E +:1007E0000802631908028502E39912FF99C2A388DF +:1007F000F18499C123AA7184B7470F009387072416 +:1008000023A4F18685472303F7003244A24412490A +:1008100041018280E38C62FC03284502937FF80F3C +:10082000637D26011378F80FC29385453308CE0007 +:100830002300F80105060548ADB7B307704093F7EC +:10084000F70F6394FF008546D5B7854EEDBF0111C4 +:1008500026CA4EC652C4B7490F00371ADCBA22CC9A +:100860004AC856C25AC006CE938481849389F9231C +:10087000930A0006130B0009391AED3483A7418649 +:10088000A383A40063F3F900E13383C7640099C331 +:10089000F13BE5B783C67400638356096388660538 +:1008A000930700036381F60603C701858D47998F7F +:1008B0008E07B357FA0093F7F70F639FF606930777 +:1008C000170093F7F70F2388F1841147639DE70022 +:1008D0003D45BD3C13850182093629CD1305000F26 +:1008E000853C2388018423A2018641BF3D4523A284 +:1008F000018623880184A93C0145993C0945893C2E +:100900000145B9349DBF3D4523A20186238801845A +:100910008134893C05052392A4003D45DDB73D4562 +:1009200023A201862388018425343D3583C76400D2 +:10093000A5F3E5B73D456DB7238801843DBF01119F +:1009400006CE22CCD53E13850182F12C138501827F +:100950003121E1689388086A01488147780085461B +:100960000146B705D9EB1385018223060100892EC4 +:10097000E1689388086A014881470147814601463A +:10098000B70538FF13850182252EEFF0FF92C135A0 +:100990000547AA876305E50209476300E5060545A3 +:1009A00091EBB7060600DC4A7D771307F73FF98F16 +:1009B000DCCA014582807D1719EB0D4582809306C4 +:1009C000004037A7070013070712B7050500905D21 +:1009D0007D8E75D2370606005C4A7D771307F73F98 +:1009E000F98FD58F41115CCA02C613073006B24792 +:1009F0006359F70001454101828085669386068030 +:100A0000C9B7B24785073EC6DDB791476307F50210 +:100A100063EAA7008547630AF50489476309F5047B +:100A200005458280A147E31DF5FE0947094501A858 +:100A3000FD1781EFC8D20D45828005470D45B7A748 +:100A4000070093870712B7060500905E798E6DD276 +:100A50008A05C98D4111CCD202C613073006B247B0 +:100A6000635AF7000145410182801147C9BF214700 +:100A70000145F1B7B24785073EC6D5B70547AA87F6 +:100A80006305E50209476304E506054591EBB706F2 +:100A900006009C4A7D771307F73FF98F9CCA0145F2 +:100AA00082807D1719EB0D4582809306004037A7A1 +:100AB000070013070712B7050500905D7D8E75D2FC +:100AC000370706001C4B7D761306F63FF18FD58F56 +:100AD0001CCB232C070085471CCF411102C61307EE +:100AE0003006B2476359F7000145410182808566AF +:100AF000938606806DBFB24785073EC6DDB711C934 +:100B00008547630DF50205458280FD1791EB0D4584 +:100B100082800946B7A7070093870712B70605002A +:100B2000985E718F7DD34111C8D602C61307300677 +:100B3000B2476357F7000145410182800546D9BF9E +:100B4000B24785073EC6EDB7011126CAB7040600B5 +:100B5000DC4806CE22CC4AC84EC652C456C2F19BCF +:100B6000DCC89C482A89C845F19B9CC8D84883C7E3 +:100B7000C5012E84137737C08A07D98FDCC883C795 +:100B8000D50198489A071377F7C393F7073CD98F95 +:100B90009CC8FD3B0C44AA8A03454400BD35184857 +:100BA000B70705002A8A98C358480850D8C3184C7C +:100BB00098C7E935AA8948509937834704002A879E +:100BC00093F6170089E6D44893E62600D4C893F636 +:100BD000270099E637060600544A93E6160054CAE1 +:100BE00093F6470099E637060600144A93E6260076 +:100BF00014CAA18B99E7B70606009C4A93E7170031 +:100C00009CCAF24062442320590123224901232433 +:100C100039012326E900D244B249224A924A4A8540 +:100C2000424905618280011106CE22CC02C402C66F +:100C30002147B707050037550800D8C705448D4739 +:100C40008A85130505803EC022C2292A375508002F +:100C50009307C0038A851305058022C222C43EC0C3 +:100C60001122F240624405618280411122C406C60D +:100C70002A84553F18405C4F93E707015CCF1C4422 +:100C80001CCB5C4085CB1C43B7061000D58F1CC322 +:100C9000144C5C48B240D606CE07D58F834604017B +:100CA000C206D58F8346C4012244E206D58F1CCFED +:100CB000410182801C43B706F0FFFD16F58FC1BFCE +:100CC000032305002A8E0325C30113650502232E85 +:100CD000A3002324C3001396260149824D8E2326A8 +:100CE00003012322C300139605016354060299C22F +:100CF0000545B1CB01476346D700639C08020D450B +:100D000082803386E700034606000507230AC300F6 +:100D1000DDB799C2054505CB8147E3D0D7FE032651 +:100D20000E00034546013306F70085072300A600A1 +:100D3000EDB783270E00FD18DC4F93F70702D5DFD0 +:100D400011656D8D11E18280B707070083C74701E8 +:100D500013F585001D8D3335A00082801C4141476D +:100D6000D8CF8280B7470800938707402A8863045A +:100D7000F508B7570800938707806304F50A3747DB +:100D80000800630DE50A05458280331E1F01337696 +:100D9000DE0129C683A345008843139318003396C8 +:100DA0006F001346F6FF13F43300718D33146400A3 +:100DB000418D88C3638B5302638C0302084303AEE7 +:100DC000C500718D331E6E003365C50108C38842AE +:100DD000698E884533156500498E90C2850833D5E4 +:100DE0001E0145F53244410182802326C801F9B72E +:100DF0002324C801E1B7B716050037170500B71758 +:100E00000500938646C1130707C19387C7C083AE09 +:100E100005008148054F8D4F914233D51E0105EDE8 +:100E20008280B716050037170500B71705009386AF +:100E300006C21307C7C1938787C1D1BFB716050084 +:100E400037170500B7170500938686C0130747C0FC +:100E5000938707C06DBF331E1F013376DE0119E291 +:100E6000850865BF411122C635B7E1689388086AD5 +:100E700001488147014781460146B705200689B5EB +:100E8000011106CEA307010089476393F502B70558 +:100E90002035E1681307F1009388086A014881470B +:100EA00085460146313DF2400345F10005618280EF +:100EB000B7052005F9BF011106CE22CC26CA2306AC +:100EC000B100AA84A306C1004D37E1689388086A7F +:100ED00001487C00014789460146B78520012685E7 +:100EE0000964F93B130414717D1419E40D45F240B3 +:100EF0006244D24405618280854526855137058943 +:100F000065F50145EDB7011106CE22CC26CA2E8427 +:100F10004AC8AA84328936C6893FB247E168228628 +:100F20009388086A01480147CA86B78580022685EA +:100F3000616479331304146A7D1411C485452685D0 +:100F40008137058975F9F2406244D244424905610E +:100F50008280011106CE22CC26CA2EC6AA84313741 +:100F60003246E1689388086A014881470147814613 +:100F7000B705802026856164A1331304146A7D14AB +:100F800011C485452685ED3D058975F9F240624419 +:100F9000D24405618280E16836879388086AB28608 +:100FA00001482E868147B705800319BBB3C7A5004A +:100FB0008D8BB308C500B1E78D4763F4C704937701 +:100FC00035002A87B9EB13F6C8FFB306E64093074E +:100FD000000263C8D706AE86BA876371C70203A84A +:100FE00006009107910623AE07FFE3EAC7FE9307C9 +:100FF000F6FF998FF19B91073E97BE9563661701A7 +:1010000082802A87637E150383C70500050785054F +:10101000A30FF7FEE39AE8FE828083C6050005076A +:1010200093773700A30FD7FE8505D1DF83C6050070 +:10103000050793773700A30FD7FE8505F9FF61B742 +:101040008280411122C61304000283A3050083A2FB +:10105000450083AF850003AFC50083AE050103AE35 +:10106000450103A3850103A8C50194511307470255 +:10107000B307E640232E77FC232057FE2322F7FFF9 +:101080002324E7FF2326D7FF2328C7FF232A67FE51 +:10109000232C07FF232ED7FE93854502E347F4FA5E +:1010A000AE86BA876371C70203A80600910791064E +:1010B00023AE07FFE3EAC7FE9307F6FF998FF19B84 +:1010C00091073E97BE9563651701324441018280C6 +:1010D00083C7050005078505A30FF7FEE387E8FE34 +:1010E00083C7050005078505A30FF7FEE392E8FE19 +:1010F000E9BF000020000000010000000300000024 +:0811000006000000EB000000F6 +:1011080000000700000000000000000000000000D0 +:1011180000000000000000000000000000000000C7 +:081128000000000000000000BF +:08113000000000800000000037 :0400000501000000F6 :00000001FF diff --git a/bootloaders/elsomik/bootloader.hex b/bootloaders/elsomik/bootloader.hex index 3e826ca..5040f83 100644 --- a/bootloaders/elsomik/bootloader.hex +++ b/bootloaders/elsomik/bootloader.hex @@ -1,261 +1,281 @@ :020000040100F9 -:10000000FD62938202400100FD12E39E02FE374131 -:10001000000213010100B701000293810100B7152E -:100020000001938505FF3716000113060602B70687 -:1000300000029386060039A083A2050023A0560083 -:1000400091059106E3EAC5FEB71500019385050207 -:100050003716000113060602B7060002938606262D -:1000600039A083A2050023A0560091059106E3EA7A -:10007000C5FEB70500029385050337060002130687 -:10008000062621A023A005009105E3EDC5FEB700DB -:100090000001E780C00AB7000001E780C00AB7107E -:1000A0000001E780808473005010F5BF828000005B -:1000B0000000000000000000000000000000000040 -:1000C0006F004000197106C20AC40EC612C816CAD3 -:1000D0001ACC1ECE22D026D22AD42ED632D836DA48 -:1000E0003ADC3EDEC2C0C6C2CAC4CEC6D2C8D6CA78 -:1000F000DACCDECEE2D0E6D2EAD4EED6F2D8F6DA28 -:10010000FADCFEDE970000009380E00482909240CB -:100110002241B2414242D2426243F24302549254DB -:100120002255B2554256D2566257F2570648964863 -:100130002649B649464AD64A664BF64B065C965C5B -:10014000265DB65D465ED65E665FF65F096173004A -:10015000203001A03D432A876373C3029377F700E1 -:10016000BDEFADE5937606FF3D8ABA960CC34CC34E -:100170000CC74CC74107E36BD7FE11E28280B30680 -:10018000C3408A069702000096966780A600230760 -:10019000B700A306B7002306B700A305B7002305E1 -:1001A000B700A304B7002304B700A303B7002303D9 -:1001B000B700A302B7002302B700A301B7002301D1 -:1001C000B700A300B7002300B700828093F5F50FB6 -:1001D00093968500D58D93960501D58D61B793963D -:1001E00027009702000096968682E78086FA96801E -:1001F000C1171D8F3E96E374C3F8A5B7B707050076 -:100200000947D8CFB7170500938707C0984385667D -: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 +:10000000FD6293820240FD12E39F02FE374100022F +:1000100013010100B711000293818193B71500010C +:10002000938585103716000113068613B706000264 +:100030009386861539A083A2050023A0560091055A +:100040009106E3EAC5FEB70500019385850B3706E7 +:10005000000113060621B70600029386060039A0A8 +:1000600083A2050023A0560091059106E3EAC5FE90 +:10007000B705000293858518370600021306464B24 +:1000800021A023A005009105E3EDC5FEB702000203 +:100090009382020C73905230B7000001E780600B2E +:1000A000B7000001E780600BB7100001E780E09324 +:0800B00073005010F5BF8280BF +:1000B8000000000000000000000000000000000038 +:1000C8000000000000000000000000000000000028 +:1000D8000000000000000000000000000000000018 +:1000E8000000000000000000000000000000000008 +:1000F80000000000000000000000000000000000F8 +:1001080000000000000000000000000000000000E7 +:1001180000000000000000000000000000000000D7 +:1001280000000000000000000000000000000000C7 +:1001380000000000000000000000000000000000B7 +:1001480000000000000000000000000000000000A7 +:100158000000000000000000000000000000000097 +:100168000000000000000000000000000000000087 +:100178006F004000130141F806C00AC20EC412C63F +:1001880016C81ACA1ECC22CE26D02AD22ED432D6CF +:1001980036D83ADA3EDC42DEC6C0CAC2CEC4D2C6BF +:1001A800D6C8DACADECCE2CEE6D0EAD2EED4F2D6AF +:1001B800F6D8FADAFEDC97000000938000058290FA +:1001C80082401241A2413242C2425243E243724447 +:1001D80082541255A2553256C2565257E257725897 +:1001E80086481649A649364AC64A564BE64B764CC7 +:1001F800865C165DA65D365EC65E565FE65F1301D9 +:08020800C1077300203001A0C2 +:100210003D432A876373C3029377F700BDEFADE5D3 +:10022000937606FF3D8ABA960CC34CC30CC74CC7E5 +:100230004107E36BD7FE11E28280B306C3408A0612 +:100240009702000096966780A6002307B700A306D2 +:10025000B7002306B700A305B7002305B700A30422 +:10026000B7002304B700A303B7002303B700A3021A +:10027000B7002302B700A301B7002301B700A30012 +:10028000B7002300B700828093F5F50F93968500A1 +:10029000D58D93960501D58D61B79396270097026A +:1002A000000096968682E78086FA9680C1171D8F99 +:1002B0003E96E374C3F8A5B7B70705000947D8CF42 +:1002C000B7170500938707C0984385669386064055 +:1002D000558F98C398471367074098C7B71708000A +:1002E0009387074023A0070023A2070023A4070049 +:1002F0001307A008D8C77D57D8CF354798C3D84F24 +:10030000935657018D8AE5DE8280B71708009387E0 +:10031000074023A0070023A2070023A4070023A669 +:1003200007007D57D8CF23A40702B717050093878E +:1003300007C09843F1769386F63F758F98C3984728 +:100340001377F7BF98C7B7070500094798D382808E +:10035000B71708009387074088D7D84F137707044B +:100360006DDF828003A3418637150800B7450F0073 +:1003700023A4018681470146130505409385152472 +:100380000328C501B308F30013780802630A0802C2 +:1003900011CE23A2118737470F0023A4F18613073C +:1003A00007246395E70005472387E184B717080012 +:1003B00093870740C8534205418182800546C9B7EB +:1003C0008507E39DB7FE7DD2B7470F0093870724CB +:1003D00023A4F18623A21187F9B7411106C622C4CE +:1003E00026C2AA84EF007028E1689388086A014851 +:1003F0008147014781460146B70520C726853794C6 +:100400009800EF00F00B130414687D1419E40D45F7 +:10041000B240224492444101828085452685EF0006 +:10042000302605897DF10145E5B7411122C4130647 +:1004300000109305F00F1385C18606C6D13B83A536 +:1004400081849386C1861306001013850182EF0014 +:1004500090341384C186814793050410130600105D +:10046000B306F4003387F50083C606000347070090 +:10047000639AE6008507E395C7FE0545B24022442E +:10048000410182800145DDBF411126C293878184ED +:100490008C43B70700804AC0BE9523AEB18406C620 +:1004A00022C4939745019384818489E7138501824F +:1004B000EF00302A8C409386C18613850182938693 +:1004C000061013060010EF00102485371384C18630 +:1004D00011E989472383F400B2402244924402493F +:1004E000410182809C4083D68185938707109CC000 +:1004F00013060010B68763F4C600930700109387B5 +:1005000007F01306100F9305F00F1305F410239C4A +:10051000F18413040420ED39A2853D461385C1966C +:10052000EF00D02822852244B240924402493D4641 +:100530009305F00F4101E9B95D7113068002814511 +:10054000280886C6F131BD47230CF1008947230EE8 +:10055000F1003ED2E177938707082C080A85231A19 +:10056000F102DD23B640616182805D71A2C4138512 +:10057000018286C6A6C2CAC0EF00E06A1385018266 +:10058000EF00C07D854513850182EF00700F8D4718 +:10059000814463E3A700AA84894513850182EF00A3 +:1005A000300E937725002A8689E713662500137697 +:1005B000F60F9377060499C31376F60BA685138579 +:1005C0000182EF00500FE1689388086A0148814773 +:1005D000014781460146B705203813850182EF00A7 +:1005E000206EE16838009388086A13080002854687 +:1005F00081470146B70599EB138501822304010069 +:10060000EF00006CB715000151469385450F680057 +:10061000EF00D01913890182832709006C0051462D +:100620003ED085473ED26810C1673ED4EF00101817 +:10063000B70607009C423707F1FF7D17F98F0810B6 +:100640009CC22525B64026449644064961618280B5 +:10065000411106C65D39113FB707008073905730CE +:10066000B70000808290B24041018280411122C4D3 +:1006700006C69387818483C7670085461384818477 +:10068000638ED70009476388E70023030400B24064 +:100690002244410182801305000F5D39B71708001D +:1006A00093870740D84F218B09C7D84F136787001E +:1006B000D8CF793FD9BF411106C622C426C24AC04D +:1006C0008347350005476389E70611472A84638914 +:1006D000E7009DC7B2402244924402494101828012 +:1006E00083D7818591C34D3383474400034754002A +:1006F000E2074207BA9723A0F18623A4F184D9BF69 +:1007000083D48185034604001385C19626959305FD +:100710004400EF00B00983470400BE94C204C180C6 +:10072000239C91849307F00FE3F697FA2244B2409A +:1007300092440249410189BB3D45193983D78185DE +:1007400099E72244B24092440249410111B72D3B3E +:1007500083C7E184FDD7BDBF41119386818403DF48 +:10076000460026C483A2818622C637150800B748F2 +:100770000F0037430F004AC2814723AA018413099F +:10078000FFFF814E81468145814301480146138721 +:100790008184130505409388182413030324138EC2 +:1007A000C1A7636BE60363850E0009462303C700F8 +:1007B00099C2A388F18499C123AA718463040800B3 +:1007C00023A4518683476700A9E33244A244124917 +:1007D0001385C1A74101C5B581420328C50113781E +:1007E0000802631908028502E39912FF99C2A388DF +:1007F000F18499C123AA7184B7470F009387072416 +:1008000023A4F18685472303F7003244A24412490A +:1008100041018280E38C62FC03284502937FF80F3C +:10082000637D26011378F80FC29385453308CE0007 +:100830002300F80105060548ADB7B307704093F7EC +:10084000F70F6394FF008546D5B7854EEDBF0111C4 +:1008500026CA4EC652C4B7490F00371ADCBA22CC9A +:100860004AC856C25AC006CE938481849389F9231C +:10087000930A0006130B0009391AED3483A7418649 +:10088000A383A40063F3F900E13383C7640099C331 +:10089000F13BE5B783C67400638356096388660538 +:1008A000930700036381F60603C701858D47998F7F +:1008B0008E07B357FA0093F7F70F639FF606930777 +:1008C000170093F7F70F2388F1841147639DE70022 +:1008D0003D45BD3C13850182093629CD1305000F26 +:1008E000853C2388018423A2018641BF3D4523A284 +:1008F000018623880184A93C0145993C0945893C2E +:100900000145B9349DBF3D4523A20186238801845A +:100910008134893C05052392A4003D45DDB73D4562 +:1009200023A201862388018425343D3583C76400D2 +:10093000A5F3E5B73D456DB7238801843DBF01119F +:1009400006CE22CCD53E13850182F12C138501827F +:100950003121E1689388086A01488147780085461B +:100960000146B705D9EB1385018223060100892EC4 +:10097000E1689388086A014881470147814601463A +:10098000B70538FF13850182252EEFF0FF92C135A0 +:100990000547AA876305E50209476300E5060545A3 +:1009A00091EBB7060600DC4A7D771307F73FF98F16 +:1009B000DCCA014582807D1719EB0D4582809306C4 +:1009C000004037A7070013070712B7050500905D21 +:1009D0007D8E75D2370606005C4A7D771307F73F98 +:1009E000F98FD58F41115CCA02C613073006B24792 +:1009F0006359F70001454101828085669386068030 +:100A0000C9B7B24785073EC6DDB791476307F50210 +:100A100063EAA7008547630AF50489476309F5047B +:100A200005458280A147E31DF5FE0947094501A858 +:100A3000FD1781EFC8D20D45828005470D45B7A748 +:100A4000070093870712B7060500905E798E6DD276 +:100A50008A05C98D4111CCD202C613073006B247B0 +:100A6000635AF7000145410182801147C9BF214700 +:100A70000145F1B7B24785073EC6D5B70547AA87F6 +:100A80006305E50209476304E506054591EBB706F2 +:100A900006009C4A7D771307F73FF98F9CCA0145F2 +:100AA00082807D1719EB0D4582809306004037A7A1 +:100AB000070013070712B7050500905D7D8E75D2FC +:100AC000370706001C4B7D761306F63FF18FD58F56 +:100AD0001CCB232C070085471CCF411102C61307EE +:100AE0003006B2476359F7000145410182808566AF +:100AF000938606806DBFB24785073EC6DDB711C934 +:100B00008547630DF50205458280FD1791EB0D4584 +:100B100082800946B7A7070093870712B70605002A +:100B2000985E718F7DD34111C8D602C61307300677 +:100B3000B2476357F7000145410182800546D9BF9E +:100B4000B24785073EC6EDB7011126CAB7040600B5 +:100B5000DC4806CE22CC4AC84EC652C456C2F19BCF +:100B6000DCC89C482A89C845F19B9CC8D84883C7E3 +:100B7000C5012E84137737C08A07D98FDCC883C795 +:100B8000D50198489A071377F7C393F7073CD98F95 +:100B90009CC8FD3B0C44AA8A03454400BD35184857 +:100BA000B70705002A8A98C358480850D8C3184C7C +:100BB00098C7E935AA8948509937834704002A879E +:100BC00093F6170089E6D44893E62600D4C893F636 +:100BD000270099E637060600544A93E6160054CAE1 +:100BE00093F6470099E637060600144A93E6260076 +:100BF00014CAA18B99E7B70606009C4A93E7170031 +:100C00009CCAF24062442320590123224901232433 +:100C100039012326E900D244B249224A924A4A8540 +:100C2000424905618280011106CE22CC02C402C66F +:100C30002147B707050037550800D8C705448D4739 +:100C40008A85130505803EC022C2292A375508002F +:100C50009307C0038A851305058022C222C43EC0C3 +:100C60001122F240624405618280411122C406C60D +:100C70002A84553F18405C4F93E707015CCF1C4422 +:100C80001CCB5C4085CB1C43B7061000D58F1CC322 +:100C9000144C5C48B240D606CE07D58F834604017B +:100CA000C206D58F8346C4012244E206D58F1CCFED +:100CB000410182801C43B706F0FFFD16F58FC1BFCE +:100CC000032305002A8E0325C30113650502232E85 +:100CD000A3002324C3001396260149824D8E2326A8 +:100CE00003012322C300139605016354060299C22F +:100CF0000545B1CB01476346D700639C08020D450B +:100D000082803386E700034606000507230AC300F6 +:100D1000DDB799C2054505CB8147E3D0D7FE032651 +:100D20000E00034546013306F70085072300A600A1 +:100D3000EDB783270E00FD18DC4F93F70702D5DFD0 +:100D400011656D8D11E18280B707070083C74701E8 +:100D500013F585001D8D3335A00082801C4141476D +:100D6000D8CF8280B7470800938707402A8863045A +:100D7000F508B7570800938707806304F50A3747DB +:100D80000800630DE50A05458280331E1F01337696 +:100D9000DE0129C683A345008843139318003396C8 +:100DA0006F001346F6FF13F43300718D33146400A3 +:100DB000418D88C3638B5302638C0302084303AEE7 +:100DC000C500718D331E6E003365C50108C38842AE +:100DD000698E884533156500498E90C2850833D5E4 +:100DE0001E0145F53244410182802326C801F9B72E +:100DF0002324C801E1B7B716050037170500B71758 +:100E00000500938646C1130707C19387C7C083AE09 +:100E100005008148054F8D4F914233D51E0105EDE8 +:100E20008280B716050037170500B71705009386AF +:100E300006C21307C7C1938787C1D1BFB716050084 +:100E400037170500B7170500938686C0130747C0FC +:100E5000938707C06DBF331E1F013376DE0119E291 +:100E6000850865BF411122C635B7E1689388086AD5 +:100E700001488147014781460146B705200689B5EB +:100E8000011106CEA307010089476393F502B70558 +:100E90002035E1681307F1009388086A014881470B +:100EA00085460146313DF2400345F10005618280EF +:100EB000B7052005F9BF011106CE22CC26CA2306AC +:100EC000B100AA84A306C1004D37E1689388086A7F +:100ED00001487C00014789460146B78520012685E7 +:100EE0000964F93B130414717D1419E40D45F240B3 +:100EF0006244D24405618280854526855137058943 +:100F000065F50145EDB7011106CE22CC26CA2E8427 +:100F10004AC8AA84328936C6893FB247E168228628 +:100F20009388086A01480147CA86B78580022685EA +:100F3000616479331304146A7D1411C485452685D0 +:100F40008137058975F9F2406244D244424905610E +:100F50008280011106CE22CC26CA2EC6AA84313741 +:100F60003246E1689388086A014881470147814613 +:100F7000B705802026856164A1331304146A7D14AB +:100F800011C485452685ED3D058975F9F240624419 +:100F9000D24405618280E16836879388086AB28608 +:100FA00001482E868147B705800319BBB3C7A5004A +:100FB0008D8BB308C500B1E78D4763F4C704937701 +:100FC00035002A87B9EB13F6C8FFB306E64093074E +:100FD000000263C8D706AE86BA876371C70203A84A +:100FE00006009107910623AE07FFE3EAC7FE9307C9 +:100FF000F6FF998FF19B91073E97BE9563661701A7 +:1010000082802A87637E150383C70500050785054F +:10101000A30FF7FEE39AE8FE828083C6050005076A +:1010200093773700A30FD7FE8505D1DF83C6050070 +:10103000050793773700A30FD7FE8505F9FF61B742 +:101040008280411122C61304000283A3050083A2FB +:10105000450083AF850003AFC50083AE050103AE35 +:10106000450103A3850103A8C50194511307470255 +:10107000B307E640232E77FC232057FE2322F7FFF9 +:101080002324E7FF2326D7FF2328C7FF232A67FE51 +:10109000232C07FF232ED7FE93854502E347F4FA5E +:1010A000AE86BA876371C70203A80600910791064E +:1010B00023AE07FFE3EAC7FE9307F6FF998FF19B84 +:1010C00091073E97BE9563651701324441018280C6 +:1010D00083C7050005078505A30FF7FEE387E8FE34 +:1010E00083C7050005078505A30FF7FEE392E8FE19 +:1010F000E9BF000020000000010000000300000024 +:0811000006000000EB000000F6 +:1011080000000700000000000000000000000000D0 +:1011180000000000000000000000000000000000C7 +:081128000000000000000000BF +:08113000000000800000000037 :0400000501000000F6 :00000001FF diff --git a/cores/arduino/trap_handler.c b/cores/arduino/trap_handler.c index e3c5901..a561880 100644 --- a/cores/arduino/trap_handler.c +++ b/cores/arduino/trap_handler.c @@ -18,12 +18,12 @@ void __attribute__((weak)) IRremote_interrupt_handler(void) // dummy function for case when IRremote library is not in use } -void __attribute__((weak)) ISR(void) -{ +bool __attribute__((section(".ram_text"), weak)) ISR(void) +{ /* A dummy function for the case when additional interrupts are not used in the project. In the project, you need to create a function of the form: - extern "C" void ISR() + extern "C" __attribute__((section(".ram_text"))) bool ISR(void) { if (EPIC_CHECK_TIMER16_1()) { @@ -35,20 +35,31 @@ void __attribute__((weak)) ISR(void) // reset timer interrupt flags TIM16_CLEAR_INT_MASK(htimer16_1_, 0xFFFFFFFF); } + return false; } + + If you don't need to call standard trap_handler() code, you can return true from this function + and trap_handler() code will be missed. But you must carefully clear interrupt flags by yourself + in your custom ISR() function. + libraries required to use this example: #include "mik32_hal_timer16.h" - #include "mik32_hal_irq.h" #include "wiring_LL.h" */ + return false; } // ---------------------------------------------- // void __attribute__((noinline, section(".ram_text"), optimize("O3"))) trap_handler (void) { // custom interrupt - ISR(); - + if(ISR()) + { + // reset all interrupts and miss trap_handler() code + EPIC_CLEAR_ALL(); + return; + } + // gpio interrupt if (EPIC_CHECK_GPIO_IRQ()) gpio_interrupt_handler(); @@ -77,6 +88,7 @@ void __attribute__((noinline, section(".ram_text"), optimize("O3"))) trap_handle if (EPIC_CHECK_I2C_0()) wire_interrupt_handler(0); + // i2c1 interrupt if (EPIC_CHECK_I2C_1()) wire_interrupt_handler(1); diff --git a/cores/arduino/wiring_analog.c b/cores/arduino/wiring_analog.c index c497b6b..6379d90 100644 --- a/cores/arduino/wiring_analog.c +++ b/cores/arduino/wiring_analog.c @@ -104,55 +104,64 @@ It is recommended to enable the timer in the following order: */ void analogWrite(uint32_t PinNumber, uint32_t writeVal) { - if (writeVal > WriteValMax) writeVal = WriteValMax; - - if (digitalPinPwmIsOn(PinNumber) > 0) // pin has pwm and pwm is already on + if (writeVal >= WriteValMax) { - // we can only change writeVal if it is differ from current value - TIMER32_TypeDef* timer = pwmPinToTimer(PinNumber); - uint32_t newOCR = (uint32_t) (((uint64_t)pwmTopVal * writeVal) / WriteValMax); - if (timer->CHANNELS[pwmPinToTimerChannel(PinNumber)].OCR != newOCR) + // if we need max value, use digitalWrite to supply constant level + digitalWrite(PinNumber, HIGH); + } + else + { + // if we need less then max, use pwm + int8_t pwmState = digitalPinPwmIsOn(PinNumber); + + if (pwmState > 0) // pin has pwm and pwm is already on { - // if new ocr differs from current, set new ocr - timer->CHANNELS[pwmPinToTimerChannel(PinNumber)].OCR = newOCR; + // we can only change writeVal if it is differ from current value + TIMER32_TypeDef* timer = pwmPinToTimer(PinNumber); + uint32_t newOCR = (uint32_t) (((uint64_t)pwmTopVal * writeVal) / WriteValMax); + if (timer->CHANNELS[pwmPinToTimerChannel(PinNumber)].OCR != newOCR) + { + // if new ocr differs from current, set new ocr + timer->CHANNELS[pwmPinToTimerChannel(PinNumber)].OCR = newOCR; + } } + else if (pwmState == 0) // pin has pwm and pwm is off + { + // init pin as pwm + uint32_t OCRval = (pwmTopVal * writeVal) / WriteValMax; + + // initialization of the required timer + htimer32.Instance = pwmPinToTimer(PinNumber); + htimer32.Top = pwmTopVal; + htimer32.State = TIMER32_STATE_DISABLE; + htimer32.Clock.Source = TIMER32_SOURCE_PRESCALER; + htimer32.Clock.Prescaler = 0; // Prescaler = 1 + htimer32.InterruptMask = 0; + htimer32.CountMode = TIMER32_COUNTMODE_FORWARD; + HAL_Timer32_Init(&htimer32); + + // gpio init as timer channel pin + HAL_GPIO_PinConfig(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber), + HAL_GPIO_MODE_TIMER_SERIAL, HAL_GPIO_PULL_NONE, HAL_GPIO_DS_2MA); + + htimer32_channel.TimerInstance = htimer32.Instance; + htimer32_channel.ChannelIndex = pwmPinToTimerChannel(PinNumber); + htimer32_channel.PWM_Invert = TIMER32_CHANNEL_NON_INVERTED_PWM; + htimer32_channel.Mode = TIMER32_CHANNEL_MODE_PWM; + htimer32_channel.CaptureEdge = TIMER32_CHANNEL_CAPTUREEDGE_RISING; + htimer32_channel.OCR = OCRval; + htimer32_channel.Noise = TIMER32_CHANNEL_FILTER_OFF; + HAL_Timer32_Channel_Init(&htimer32_channel); + + // start timer with initialized channel + HAL_Timer32_Channel_Enable(&htimer32_channel); + HAL_Timer32_Value_Clear(&htimer32); + HAL_Timer32_Start(&htimer32); + pwmIsInited++; // increase inited channels qty + } + else // pin doesn't have pwm + ErrorMsgHandler("analogWrite(): invalid pwm pin number"); } - else if (digitalPinPwmIsOn(PinNumber) == 0) // pin has pwm and pwm is off - { - // init pin as pwm - uint32_t OCRval = (uint32_t) (((uint64_t)pwmTopVal * writeVal) / WriteValMax); - - // initialization of the required timer - htimer32.Instance = pwmPinToTimer(PinNumber); - htimer32.Top = pwmTopVal; - htimer32.State = TIMER32_STATE_DISABLE; - htimer32.Clock.Source = TIMER32_SOURCE_PRESCALER; - htimer32.Clock.Prescaler = 0; // Prescaler = 1 - htimer32.InterruptMask = 0; - htimer32.CountMode = TIMER32_COUNTMODE_FORWARD; - HAL_Timer32_Init(&htimer32); - - // gpio init as timer channel pin - HAL_GPIO_PinConfig(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber), - HAL_GPIO_MODE_TIMER_SERIAL, HAL_GPIO_PULL_NONE, HAL_GPIO_DS_2MA); - - htimer32_channel.TimerInstance = htimer32.Instance; - htimer32_channel.ChannelIndex = pwmPinToTimerChannel(PinNumber); - htimer32_channel.PWM_Invert = TIMER32_CHANNEL_NON_INVERTED_PWM; - htimer32_channel.Mode = TIMER32_CHANNEL_MODE_PWM; - htimer32_channel.CaptureEdge = TIMER32_CHANNEL_CAPTUREEDGE_RISING; - htimer32_channel.OCR = OCRval; - htimer32_channel.Noise = TIMER32_CHANNEL_FILTER_OFF; - HAL_Timer32_Channel_Init(&htimer32_channel); - - // start timer with initialized channel - HAL_Timer32_Channel_Enable(&htimer32_channel); - HAL_Timer32_Value_Clear(&htimer32); - HAL_Timer32_Start(&htimer32); - pwmIsInited++; // increase inited channels qty - } - else // pin doesn't have pwm - ErrorMsgHandler("analogWrite(): invalid pwm pin number"); } // Set the resolution of analogWrite parameters diff --git a/cores/arduino/wiring_constants.h b/cores/arduino/wiring_constants.h index f46dc93..32d59ea 100644 --- a/cores/arduino/wiring_constants.h +++ b/cores/arduino/wiring_constants.h @@ -23,12 +23,14 @@ #include #include "wiring_private.h" -#define HIGH 0x1 -#define LOW 0x0 -#define INPUT 0x0 -#define OUTPUT 0x1 -#define INPUT_PULLUP 0x2 -#define NC 0xFFFFFFFF // Not connected +#define HIGH 0x1 +#define LOW 0x0 + +#define INPUT 0x0 +#define OUTPUT 0x1 +#define INPUT_PULLUP 0x2 +#define INPUT_PULLDOWN 0x3 +#define NC 0xFFFFFFFF // Not connected #define PI 3.1415926535897932384626433832795 #define HALF_PI 1.5707963267948966192313216916398 diff --git a/cores/arduino/wiring_digital.c b/cores/arduino/wiring_digital.c index e4f6633..a815a7a 100644 --- a/cores/arduino/wiring_digital.c +++ b/cores/arduino/wiring_digital.c @@ -37,7 +37,7 @@ void pinMode(uint32_t PinNumber, uint32_t PinMode) return; } - if (digitalPinPwmIsOn(PinNumber)) + if (digitalPinPwmIsOn(PinNumber) > 0 ) // if the pin use PWM, disable PWM analogWriteStop(PinNumber); @@ -56,6 +56,10 @@ void pinMode(uint32_t PinNumber, uint32_t PinMode) GPIO_InitStruct.Mode = HAL_GPIO_MODE_GPIO_INPUT; GPIO_InitStruct.Pull = HAL_GPIO_PULL_UP; break; + case INPUT_PULLDOWN: + GPIO_InitStruct.Mode = HAL_GPIO_MODE_GPIO_INPUT; + GPIO_InitStruct.Pull = HAL_GPIO_PULL_DOWN; + break; case OUTPUT: GPIO_InitStruct.Mode = HAL_GPIO_MODE_GPIO_OUTPUT; GPIO_InitStruct.Pull = HAL_GPIO_PULL_NONE; @@ -102,15 +106,22 @@ __attribute__((noinline, section(".ram_text"))) void digitalWrite(uint32_t PinNu ErrorMsgHandler("digitalWrite(): pin number exceeds the total number of pins"); return; } - - if (digitalPinPwmIsOn(PinNumber)) + + GPIO_TypeDef* port = digitalPinToPort(PinNumber); + HAL_PinsTypeDef mask = digitalPinToBitMask(PinNumber); + + if (digitalPinPwmIsOn(PinNumber) > 0) + { // if the pin use PWM, disable PWM analogWriteStop(PinNumber); - + // and configure pin as output + HAL_GPIO_PinConfig(port, mask, HAL_GPIO_MODE_GPIO_OUTPUT, HAL_GPIO_PULL_NONE, HAL_GPIO_DS_2MA); + } + if (Val == HIGH) - GPIO_SET_PIN(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber)); + GPIO_SET_PIN(port, mask); else - GPIO_CLEAR_PIN(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber)); + GPIO_CLEAR_PIN(port, mask); } // read pin @@ -122,9 +133,9 @@ __attribute__((noinline, section(".ram_text"))) int digitalRead(uint32_t PinNumb return -1; } - if (digitalPinPwmIsOn(PinNumber)) + if (digitalPinPwmIsOn(PinNumber) > 0) // if the pin use PWM, disable PWM - analogWriteStop(PinNumber); + analogWriteStop(PinNumber); // pin is configured as input here return GPIO_READ_PIN(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber)); } @@ -138,11 +149,17 @@ __attribute__((noinline, section(".ram_text"))) void digitalToggle(uint32_t PinN return; } - if (digitalPinPwmIsOn(PinNumber)) + GPIO_TypeDef* port = digitalPinToPort(PinNumber); + HAL_PinsTypeDef mask = digitalPinToBitMask(PinNumber); + + if (digitalPinPwmIsOn(PinNumber) > 0) + { // if the pin use PWM, disable PWM analogWriteStop(PinNumber); - - GPIO_TOGGLE_PIN(digitalPinToPort(PinNumber), digitalPinToBitMask(PinNumber)); + // and configure pin as output + HAL_GPIO_PinConfig(port, mask, HAL_GPIO_MODE_GPIO_OUTPUT, HAL_GPIO_PULL_NONE, HAL_GPIO_DS_2MA); + } + GPIO_TOGGLE_PIN(port, mask); } #ifdef __cplusplus diff --git a/docs/Elbear_description.md b/docs/Elbear_description.md index 7d2e3e8..6682471 100644 --- a/docs/Elbear_description.md +++ b/docs/Elbear_description.md @@ -5,9 +5,10 @@ ### Цифровые выводы На плате ELBEAR ACE-UNO доступны встроенные светодиод и кнопка. Для их использования необходимо воспользоваться макросами `LED_BUILTIN` и `BTN_BUILTIN`, передавая их в качестве аргументов функции вместо номера цифрового вывода. Макросу `LED_BUILTIN` соответствует номер вывода D22, а макросу `BTN_BUILTIN` - D23. ### Аналоговые выводы -Выводы A0...A5 на плате могут использоваться как в аналоговом, так и в цифровом режиме. +Аналоговые выводы на плате могут использоваться как в аналоговом, так и в цифровом режиме. Для использования вывода в качестве аналогового необходимо перевести соответствующий DIP-переключатель, расположенный рядом с аналоговыми выводами, в положение OFF. В этом режиме внешнее напряжение, подаваемое на вывод, будет понижаться резистивным делителем перед подачей на микроконтроллер. -Для использования вывода в качестве цифрового нужно перевести переключатель в положение ON. В этом случае напряжение с вывода платы передается на микроконтроллер без изменений. +Для использования вывода в качестве цифрового нужно перевести переключатель в положение ON. В этом случае напряжение с вывода платы передается на микроконтроллер без изменений. Вывод А5 недоступен для использования в качестве цифрового вывода. +Для аналоговых выводов режим цифрового вывода с подтяжкой к питанию(`INPUT_PULLUP`) не дает желаемого результата, так как на этих сигналах установлена неотключаемая подтяжка к земеле (10 кОм), а подтяжка к питанию внутри микроконтроллера осуществляется резистором 50 кОм. Для реализации такого режима на аналоговых выводах необходимо использовать внешний дополнительный резистор 1...2 кОм, подключенный к питанию. Таблица соответствия выводов платы и номера DIP-переключателя представлена ниже. Переключатель 5 относится сразу к двум аналоговым выводам - А4, А5. |Вывод|Номер переключателя| @@ -20,7 +21,20 @@ |А5|5| #### ШИМ -На плате ELBEAR ACE-UNO доступно 8 выводов для формирования ШИМ-сигнала: D3, D5, D6, D9...D13. Генерация сигнала осуществляется с помощью 32-битного таймера. Выводы D3, D5, D6, D9 подключены к таймеру 1, выводы D10...D13 подключены к таймеру 2. Выводы, подключенные к одному и тому же таймеру, выдают ШИМ-сигнал одинаковой частоты. +На плате ELBEAR ACE-UNO доступно 8 выводов для формирования ШИМ-сигнала. Генерация сигнала осуществляется с помощью 32-битного таймера. Выводы, подключенные к одному и тому же таймеру, выдают ШИМ-сигнал одинаковой частоты. +Доступные выводы: + +|Цифровой вывод|Используемый таймер| +|---------|---------| +|D3|таймер 1| +|D5|таймер 1| +|D6|таймер 1| +|D9|таймер 1| +|D10|таймер 2| +|D11|таймер 2| +|D12|таймер 2| +|D13|таймер 2| + Цифровые выводы D9, D10 не могут быть использованы для генерации ШИМ, если одновременно активен интерфейс SPI (при использовании экземпляра `SPI` недоступен ШИМ на выводе D10, при использовании экземпляра `SPI0` - на выводе D9). Это ограничение связано с особенностями работы микроконтроллера. Ограничение не распространяется на использование D9, D10 в качестве цифрового вывода при активном SPI. ### Прерывания На плате ELBEAR ACE-UNO доступно 8 прерываний, настраиваемых функцией `void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode)`: diff --git a/docs/nano_description.md b/docs/nano_description.md index d09bb5a..ee3dc48 100644 --- a/docs/nano_description.md +++ b/docs/nano_description.md @@ -5,10 +5,11 @@ ### Цифровые выводы На плате ELBEAR ACE-NANO доступен встроенный светодиод. Для его использования необходимо воспользоваться макросом `LED_BUILTIN`, передавая его в качестве аргумента функции вместо номера цифрового вывода. Макросу соответствует номер вывода D22. ### Аналоговые выводы -Выводы A0...A7 на плате могут использоваться как в аналоговом, так и в цифровом режиме. +Аналоговые выводы на плате могут использоваться как в аналоговом, так и в цифровом режиме. Для использования вывода в качестве аналогового необходимо перевести соответствующий DIP-переключатель, расположенный рядом с аналоговыми выводами, в положение OFF. В этом режиме внешнее напряжение, подаваемое на вывод, будет понижаться резистивным делителем перед подачей на микроконтроллер. -Для использования вывода в качестве цифрового нужно перевести переключатель в положение ON. В этом случае напряжение с вывода платы передается на микроконтроллер без изменений. -Выводы А4...А7 используют один и тот же канал АЦП, поэтому не могут использоваться одновременно. +Для использования вывода в качестве цифрового нужно перевести переключатель в положение ON. В этом случае напряжение с вывода платы передается на микроконтроллер без изменений. Выводы А5, А6, А7 недоступны для использования в качестве цифровых выводов. +Выводы А4...А7 используют один и тот же канал АЦП, поэтому не могут использоваться одновременно. +Для аналоговых выводов режим цифрового вывода с подтяжкой к питанию(`INPUT_PULLUP`) не дает желаемого результата, так как на этих сигналах установлена неотключаемая подтяжка к земеле (10 кОм), а подтяжка к питанию внутри микроконтроллера осуществляется резистором 50 кОм. Для реализации такого режима на аналоговых выводах необходимо использовать внешний дополнительный резистор 1...2 кОм, подключенный к питанию. Таблица соответствия выводов платы и номера DIP-переключателя представлена ниже. Переключатель 5 относится сразу к четырем аналоговым выводам - А4...А7. |Вывод|Номер переключателя| @@ -23,7 +24,20 @@ |А7|5| #### ШИМ -На плате ELBEAR ACE-NANO доступно 8 выводов для формирования ШИМ-сигнала: D3, D5, D6, D9...D13. Генерация сигнала осуществляется с помощью 32-битного таймера. Выводы D3, D5, D6, D9 подключены к таймеру 1, выводы D10...D13 подключены к таймеру 2. Выводы, подключенные к одному и тому же таймеру, выдают ШИМ-сигнал одинаковой частоты. +На плате ELBEAR ACE-NANO доступно 8 выводов для формирования ШИМ-сигнала. Генерация сигнала осуществляется с помощью 32-битного таймера. Выводы, подключенные к одному и тому же таймеру, выдают ШИМ-сигнал одинаковой частоты. +Доступные выводы: + +|Цифровой вывод|Используемый таймер| +|---------|---------| +|D3|таймер 1| +|D5|таймер 1| +|D6|таймер 1| +|D9|таймер 1| +|D10|таймер 2| +|D11|таймер 2| +|D12|таймер 2| +|D13|таймер 2| + Цифровые выводы D9, D10 не могут быть использованы для генерации ШИМ, если одновременно активен интерфейс SPI (при использовании экземпляра `SPI` недоступен ШИМ на выводе D10, при использовании экземпляра `SPI0` - на выводе D9). Это ограничение связано с особенностями работы микроконтроллера. Ограничение не распространяется на использование D9, D10 в качестве цифрового вывода при активном SPI. ### Прерывания На плате ELBEAR ACE-NANO доступно 8 прерываний, настраиваемых функцией `void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode)`: diff --git a/libraries/MFRC522/examples/ChangeUID/ChangeUID.ino b/libraries/MFRC522/examples/ChangeUID/ChangeUID.ino index eb7b8c8..ca8abb9 100644 --- a/libraries/MFRC522/examples/ChangeUID/ChangeUID.ino +++ b/libraries/MFRC522/examples/ChangeUID/ChangeUID.ino @@ -11,15 +11,15 @@ * * Typical pin layout used: * ----------------------------------------------------------------------------------------- - * MFRC522 Arduino Arduino Arduino Arduino Arduino - * Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro - * Signal Pin Pin Pin Pin Pin Pin + * MFRC522 Elbear/ Arduino Arduino Arduino Arduino + * Reader/PCD Elsomik/Start Mega Nano v3 Leonardo/Micro Pro Micro + * Signal Pin Pin Pin Pin Pin Pin * ----------------------------------------------------------------------------------------- - * RST/Reset RST 9 5 D9 RESET/ICSP-5 RST - * SPI SS SDA(SS) 10 53 D10 10 10 - * SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16 - * SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14 - * SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15 + * RST/Reset RST 9 / P0_3 5 D9 RESET/ICSP-5 RST + * SPI SS SDA(SS) 10 / P1_4 53 D10 10 10 + * SPI MOSI MOSI 11 / P1_1 51 D11 ICSP-4 16 + * SPI MISO MISO 12 / P1_0 50 D12 ICSP-1 14 + * SPI SCK SCK 13 / P1_2 52 D13 ICSP-3 15 * * More pin layouts for other boards can be found here: https://github.com/miguelbalboa/rfid#pin-layout */ @@ -27,8 +27,8 @@ #include #include -#define RST_PIN 9 // Configurable, see typical pin layout above -#define SS_PIN 10 // Configurable, see typical pin layout above +#define RST_PIN 9 // P0_3 Configurable, see typical pin layout above +#define SS_PIN 10 // P1_4 Configurable, see typical pin layout above MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance diff --git a/libraries/MFRC522/examples/DumpInfo/DumpInfo.ino b/libraries/MFRC522/examples/DumpInfo/DumpInfo.ino index 1a799e0..01069b8 100644 --- a/libraries/MFRC522/examples/DumpInfo/DumpInfo.ino +++ b/libraries/MFRC522/examples/DumpInfo/DumpInfo.ino @@ -22,15 +22,15 @@ * * Typical pin layout used: * ----------------------------------------------------------------------------------------- - * MFRC522 Arduino Arduino Arduino Arduino Arduino - * Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro - * Signal Pin Pin Pin Pin Pin Pin + * MFRC522 Elbear/ Arduino Arduino Arduino Arduino + * Reader/PCD Elsomik/Start Mega Nano v3 Leonardo/Micro Pro Micro + * Signal Pin Pin Pin Pin Pin Pin * ----------------------------------------------------------------------------------------- - * RST/Reset RST 9 5 D9 RESET/ICSP-5 RST - * SPI SS SDA(SS) 10 53 D10 10 10 - * SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16 - * SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14 - * SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15 + * RST/Reset RST 9 / P0_3 5 D9 RESET/ICSP-5 RST + * SPI SS SDA(SS) 10 / P1_4 53 D10 10 10 + * SPI MOSI MOSI 11 / P1_1 51 D11 ICSP-4 16 + * SPI MISO MISO 12 / P1_0 50 D12 ICSP-1 14 + * SPI SCK SCK 13 / P1_2 52 D13 ICSP-3 15 * * More pin layouts for other boards can be found here: https://github.com/miguelbalboa/rfid#pin-layout */ diff --git a/libraries/MFRC522/examples/FixBrickedUID/FixBrickedUID.ino b/libraries/MFRC522/examples/FixBrickedUID/FixBrickedUID.ino index 8530d41..0788318 100644 --- a/libraries/MFRC522/examples/FixBrickedUID/FixBrickedUID.ino +++ b/libraries/MFRC522/examples/FixBrickedUID/FixBrickedUID.ino @@ -11,15 +11,15 @@ * * Typical pin layout used: * ----------------------------------------------------------------------------------------- - * MFRC522 Arduino Arduino Arduino Arduino Arduino - * Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro - * Signal Pin Pin Pin Pin Pin Pin + * MFRC522 Elbear/ Arduino Arduino Arduino Arduino + * Reader/PCD Elsomik/Start Mega Nano v3 Leonardo/Micro Pro Micro + * Signal Pin Pin Pin Pin Pin Pin * ----------------------------------------------------------------------------------------- - * RST/Reset RST 9 5 D9 RESET/ICSP-5 RST - * SPI SS SDA(SS) 10 53 D10 10 10 - * SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16 - * SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14 - * SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15 + * RST/Reset RST 9 / P0_3 5 D9 RESET/ICSP-5 RST + * SPI SS SDA(SS) 10 / P1_4 53 D10 10 10 + * SPI MOSI MOSI 11 / P1_1 51 D11 ICSP-4 16 + * SPI MISO MISO 12 / P1_0 50 D12 ICSP-1 14 + * SPI SCK SCK 13 / P1_2 52 D13 ICSP-3 15 * * More pin layouts for other boards can be found here: https://github.com/miguelbalboa/rfid#pin-layout */ diff --git a/libraries/MFRC522/examples/MifareClassicValueBlock/MifareClassicValueBlock.ino b/libraries/MFRC522/examples/MifareClassicValueBlock/MifareClassicValueBlock.ino index 21359b0..944cecb 100644 --- a/libraries/MFRC522/examples/MifareClassicValueBlock/MifareClassicValueBlock.ino +++ b/libraries/MFRC522/examples/MifareClassicValueBlock/MifareClassicValueBlock.ino @@ -16,15 +16,15 @@ * * Typical pin layout used: * ----------------------------------------------------------------------------------------- - * MFRC522 Arduino Arduino Arduino Arduino Arduino - * Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro - * Signal Pin Pin Pin Pin Pin Pin + * MFRC522 Elbear/ Arduino Arduino Arduino Arduino + * Reader/PCD Elsomik/Start Mega Nano v3 Leonardo/Micro Pro Micro + * Signal Pin Pin Pin Pin Pin Pin * ----------------------------------------------------------------------------------------- - * RST/Reset RST 9 5 D9 RESET/ICSP-5 RST - * SPI SS SDA(SS) 10 53 D10 10 10 - * SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16 - * SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14 - * SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15 + * RST/Reset RST 9 / P0_3 5 D9 RESET/ICSP-5 RST + * SPI SS SDA(SS) 10 / P1_4 53 D10 10 10 + * SPI MOSI MOSI 11 / P1_1 51 D11 ICSP-4 16 + * SPI MISO MISO 12 / P1_0 50 D12 ICSP-1 14 + * SPI SCK SCK 13 / P1_2 52 D13 ICSP-3 15 * * More pin layouts for other boards can be found here: https://github.com/miguelbalboa/rfid#pin-layout * diff --git a/libraries/MFRC522/examples/MinimalInterrupt/MinimalInterrupt.ino b/libraries/MFRC522/examples/MinimalInterrupt/MinimalInterrupt.ino index 37ec436..d507b4a 100644 --- a/libraries/MFRC522/examples/MinimalInterrupt/MinimalInterrupt.ino +++ b/libraries/MFRC522/examples/MinimalInterrupt/MinimalInterrupt.ino @@ -13,16 +13,16 @@ * * Typical pin layout used: * ----------------------------------------------------------------------------------------- - * MFRC522 Arduino Arduino Arduino Arduino Arduino - * Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro - * Signal Pin Pin Pin Pin Pin Pin + * MFRC522 Elbear/ Arduino Arduino Arduino Arduino + * Reader/PCD Elsomik/Start Mega Nano v3 Leonardo/Micro Pro Micro + * Signal Pin Pin Pin Pin Pin Pin * ----------------------------------------------------------------------------------------- - * RST/Reset RST 9 5 D9 RESET/ICSP-5 RST - * SPI SS SDA(SS) 10 53 D10 3 10 + * RST/Reset RST 9 / P0_3 5 D9 RESET/ICSP-5 RST + * SPI SS SDA(SS) 10 / P1_4 53 D10 10 10 * IRQ ? ? ? ? 2 10 - * SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16 - * SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14 - * SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15 + * SPI MOSI MOSI 11 / P1_1 51 D11 ICSP-4 16 + * SPI MISO MISO 12 / P1_0 50 D12 ICSP-1 14 + * SPI SCK SCK 13 / P1_2 52 D13 ICSP-3 15 * * More pin layouts for other boards can be found here: https://github.com/miguelbalboa/rfid#pin-layout * diff --git a/libraries/MFRC522/examples/Ntag216_AUTH/Ntag216_AUTH.ino b/libraries/MFRC522/examples/Ntag216_AUTH/Ntag216_AUTH.ino index b2f3905..b7fd138 100644 --- a/libraries/MFRC522/examples/Ntag216_AUTH/Ntag216_AUTH.ino +++ b/libraries/MFRC522/examples/Ntag216_AUTH/Ntag216_AUTH.ino @@ -16,8 +16,8 @@ #include #include -#define RST_PIN 9 // -#define SS_PIN 10 // +#define RST_PIN 9 // P0_3 +#define SS_PIN 10 // P1_4 MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance diff --git a/libraries/MFRC522/examples/RFID-Cloner/RFID-Cloner.ino b/libraries/MFRC522/examples/RFID-Cloner/RFID-Cloner.ino index 2a0986a..20a83f4 100644 --- a/libraries/MFRC522/examples/RFID-Cloner/RFID-Cloner.ino +++ b/libraries/MFRC522/examples/RFID-Cloner/RFID-Cloner.ino @@ -8,15 +8,15 @@ * * Typical pin layout used: * ----------------------------------------------------------------------------------------- - * MFRC522 Arduino Arduino Arduino Arduino Arduino - * Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro - * Signal Pin Pin Pin Pin Pin Pin + * MFRC522 Elbear/ Arduino Arduino Arduino Arduino + * Reader/PCD Elsomik/Start Mega Nano v3 Leonardo/Micro Pro Micro + * Signal Pin Pin Pin Pin Pin Pin * ----------------------------------------------------------------------------------------- - * RST/Reset RST 9 5 D9 RESET/ICSP-5 RST - * SPI SS SDA(SS) 10 53 D10 10 10 - * SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16 - * SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14 - * SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15 + * RST/Reset RST 9 / P0_3 5 D9 RESET/ICSP-5 RST + * SPI SS SDA(SS) 10 / P1_4 53 D10 10 10 + * SPI MOSI MOSI 11 / P1_1 51 D11 ICSP-4 16 + * SPI MISO MISO 12 / P1_0 50 D12 ICSP-1 14 + * SPI SCK SCK 13 / P1_2 52 D13 ICSP-3 15 * * More pin layouts for other boards can be found here: https://github.com/miguelbalboa/rfid#pin-layout * diff --git a/libraries/MFRC522/examples/ReadAndWrite/ReadAndWrite.ino b/libraries/MFRC522/examples/ReadAndWrite/ReadAndWrite.ino index ab05e68..fea3114 100644 --- a/libraries/MFRC522/examples/ReadAndWrite/ReadAndWrite.ino +++ b/libraries/MFRC522/examples/ReadAndWrite/ReadAndWrite.ino @@ -15,15 +15,15 @@ * * Typical pin layout used: * ----------------------------------------------------------------------------------------- - * MFRC522 Arduino Arduino Arduino Arduino Arduino - * Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro - * Signal Pin Pin Pin Pin Pin Pin + * MFRC522 Elbear/ Arduino Arduino Arduino Arduino + * Reader/PCD Elsomik/Start Mega Nano v3 Leonardo/Micro Pro Micro + * Signal Pin Pin Pin Pin Pin Pin * ----------------------------------------------------------------------------------------- - * RST/Reset RST 9 5 D9 RESET/ICSP-5 RST - * SPI SS SDA(SS) 10 53 D10 10 10 - * SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16 - * SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14 - * SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15 + * RST/Reset RST 9 / P0_3 5 D9 RESET/ICSP-5 RST + * SPI SS SDA(SS) 10 / P1_4 53 D10 10 10 + * SPI MOSI MOSI 11 / P1_1 51 D11 ICSP-4 16 + * SPI MISO MISO 12 / P1_0 50 D12 ICSP-1 14 + * SPI SCK SCK 13 / P1_2 52 D13 ICSP-3 15 * * More pin layouts for other boards can be found here: https://github.com/miguelbalboa/rfid#pin-layout * diff --git a/libraries/MFRC522/examples/ReadNUID/ReadNUID.ino b/libraries/MFRC522/examples/ReadNUID/ReadNUID.ino index ffc924e..a406f52 100644 --- a/libraries/MFRC522/examples/ReadNUID/ReadNUID.ino +++ b/libraries/MFRC522/examples/ReadNUID/ReadNUID.ino @@ -17,15 +17,15 @@ * * Typical pin layout used: * ----------------------------------------------------------------------------------------- - * MFRC522 Arduino Arduino Arduino Arduino Arduino - * Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro - * Signal Pin Pin Pin Pin Pin Pin + * MFRC522 Elbear/ Arduino Arduino Arduino Arduino + * Reader/PCD Elsomik/Start Mega Nano v3 Leonardo/Micro Pro Micro + * Signal Pin Pin Pin Pin Pin Pin * ----------------------------------------------------------------------------------------- - * RST/Reset RST 9 5 D9 RESET/ICSP-5 RST - * SPI SS SDA(SS) 10 53 D10 10 10 - * SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16 - * SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14 - * SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15 + * RST/Reset RST 9 / P0_3 5 D9 RESET/ICSP-5 RST + * SPI SS SDA(SS) 10 / P1_4 53 D10 10 10 + * SPI MOSI MOSI 11 / P1_1 51 D11 ICSP-4 16 + * SPI MISO MISO 12 / P1_0 50 D12 ICSP-1 14 + * SPI SCK SCK 13 / P1_2 52 D13 ICSP-3 15 * * More pin layouts for other boards can be found here: https://github.com/miguelbalboa/rfid#pin-layout */ diff --git a/libraries/MFRC522/examples/ReadUidMultiReader/ReadUidMultiReader.ino b/libraries/MFRC522/examples/ReadUidMultiReader/ReadUidMultiReader.ino index 348a374..2663bf8 100644 --- a/libraries/MFRC522/examples/ReadUidMultiReader/ReadUidMultiReader.ino +++ b/libraries/MFRC522/examples/ReadUidMultiReader/ReadUidMultiReader.ino @@ -14,16 +14,16 @@ * * Typical pin layout used: * ----------------------------------------------------------------------------------------- - * MFRC522 Arduino Arduino Arduino Arduino Arduino - * Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro - * Signal Pin Pin Pin Pin Pin Pin + * MFRC522 Elbear/ Arduino Arduino Arduino Arduino + * Reader/PCD Elsomik/Start Mega Nano v3 Leonardo/Micro Pro Micro + * Signal Pin Pin Pin Pin Pin Pin * ----------------------------------------------------------------------------------------- - * RST/Reset RST 9 5 D9 RESET/ICSP-5 RST + * RST/Reset RST 9 / P0_3 5 D9 RESET/ICSP-5 RST * SPI SS 1 SDA(SS) ** custom, take a unused pin, only HIGH/LOW required ** * SPI SS 2 SDA(SS) ** custom, take a unused pin, only HIGH/LOW required ** - * SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16 - * SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14 - * SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15 + * SPI MOSI MOSI 11 / P1_1 51 D11 ICSP-4 16 + * SPI MISO MISO 12 / P1_0 50 D12 ICSP-1 14 + * SPI SCK SCK 13 / P1_2 52 D13 ICSP-3 15 * * More pin layouts for other boards can be found here: https://github.com/miguelbalboa/rfid#pin-layout * diff --git a/libraries/MFRC522/examples/firmware_check/firmware_check.ino b/libraries/MFRC522/examples/firmware_check/firmware_check.ino index 2213f3b..26799b3 100644 --- a/libraries/MFRC522/examples/firmware_check/firmware_check.ino +++ b/libraries/MFRC522/examples/firmware_check/firmware_check.ino @@ -12,15 +12,15 @@ * * Typical pin layout used: * ----------------------------------------------------------------------------------------- - * MFRC522 Arduino Arduino Arduino Arduino Arduino - * Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro - * Signal Pin Pin Pin Pin Pin Pin + * MFRC522 Elbear/ Arduino Arduino Arduino Arduino + * Reader/PCD Elsomik/Start Mega Nano v3 Leonardo/Micro Pro Micro + * Signal Pin Pin Pin Pin Pin Pin * ----------------------------------------------------------------------------------------- - * RST/Reset RST 9 5 D9 RESET/ICSP-5 RST - * SPI SS SDA(SS) 10 53 D10 10 10 - * SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16 - * SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14 - * SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15 + * RST/Reset RST 9 / P0_3 5 D9 RESET/ICSP-5 RST + * SPI SS SDA(SS) 10 / P1_4 53 D10 10 10 + * SPI MOSI MOSI 11 / P1_1 51 D11 ICSP-4 16 + * SPI MISO MISO 12 / P1_0 50 D12 ICSP-1 14 + * SPI SCK SCK 13 / P1_2 52 D13 ICSP-3 15 * * More pin layouts for other boards can be found here: https://github.com/miguelbalboa/rfid#pin-layout */ diff --git a/libraries/MFRC522/examples/rfid_default_keys/rfid_default_keys.ino b/libraries/MFRC522/examples/rfid_default_keys/rfid_default_keys.ino index 13bce31..aceb342 100644 --- a/libraries/MFRC522/examples/rfid_default_keys/rfid_default_keys.ino +++ b/libraries/MFRC522/examples/rfid_default_keys/rfid_default_keys.ino @@ -13,15 +13,15 @@ * * Typical pin layout used: * ----------------------------------------------------------------------------------------- - * MFRC522 Arduino Arduino Arduino Arduino Arduino - * Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro - * Signal Pin Pin Pin Pin Pin Pin + * MFRC522 Elbear/ Arduino Arduino Arduino Arduino + * Reader/PCD Elsomik/Start Mega Nano v3 Leonardo/Micro Pro Micro + * Signal Pin Pin Pin Pin Pin Pin * ----------------------------------------------------------------------------------------- - * RST/Reset RST 9 5 D9 RESET/ICSP-5 RST - * SPI SS SDA(SS) 10 53 D10 10 10 - * SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16 - * SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14 - * SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15 + * RST/Reset RST 9 / P0_3 5 D9 RESET/ICSP-5 RST + * SPI SS SDA(SS) 10 / P1_4 53 D10 10 10 + * SPI MOSI MOSI 11 / P1_1 51 D11 ICSP-4 16 + * SPI MISO MISO 12 / P1_0 50 D12 ICSP-1 14 + * SPI SCK SCK 13 / P1_2 52 D13 ICSP-3 15 * * More pin layouts for other boards can be found here: https://github.com/miguelbalboa/rfid#pin-layout * diff --git a/libraries/MFRC522/examples/rfid_read_personal_data/rfid_read_personal_data.ino b/libraries/MFRC522/examples/rfid_read_personal_data/rfid_read_personal_data.ino index 993eda5..085e6df 100644 --- a/libraries/MFRC522/examples/rfid_read_personal_data/rfid_read_personal_data.ino +++ b/libraries/MFRC522/examples/rfid_read_personal_data/rfid_read_personal_data.ino @@ -8,15 +8,15 @@ * Uses MIFARE RFID card using RFID-RC522 reader * Uses MFRC522 - Library * ----------------------------------------------------------------------------------------- - * MFRC522 Arduino Arduino Arduino Arduino Arduino - * Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro - * Signal Pin Pin Pin Pin Pin Pin + * MFRC522 Elbear/ Arduino Arduino Arduino Arduino + * Reader/PCD Elsomik/Start Mega Nano v3 Leonardo/Micro Pro Micro + * Signal Pin Pin Pin Pin Pin Pin * ----------------------------------------------------------------------------------------- - * RST/Reset RST 9 5 D9 RESET/ICSP-5 RST - * SPI SS SDA(SS) 10 53 D10 10 10 - * SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16 - * SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14 - * SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15 + * RST/Reset RST 9 / P0_3 5 D9 RESET/ICSP-5 RST + * SPI SS SDA(SS) 10 / P1_4 53 D10 10 10 + * SPI MOSI MOSI 11 / P1_1 51 D11 ICSP-4 16 + * SPI MISO MISO 12 / P1_0 50 D12 ICSP-1 14 + * SPI SCK SCK 13 / P1_2 52 D13 ICSP-3 15 * * More pin layouts for other boards can be found here: https://github.com/miguelbalboa/rfid#pin-layout */ diff --git a/libraries/MFRC522/examples/rfid_write_personal_data/rfid_write_personal_data.ino b/libraries/MFRC522/examples/rfid_write_personal_data/rfid_write_personal_data.ino index fa74670..f82138c 100644 --- a/libraries/MFRC522/examples/rfid_write_personal_data/rfid_write_personal_data.ino +++ b/libraries/MFRC522/examples/rfid_write_personal_data/rfid_write_personal_data.ino @@ -2,15 +2,15 @@ * Write personal data of a MIFARE RFID card using a RFID-RC522 reader * Uses MFRC522 - Library to use ARDUINO RFID MODULE KIT 13.56 MHZ WITH TAGS SPI W AND R BY COOQROBOT. * ----------------------------------------------------------------------------------------- - * MFRC522 Arduino Arduino Arduino Arduino Arduino - * Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro - * Signal Pin Pin Pin Pin Pin Pin + * MFRC522 Elbear/ Arduino Arduino Arduino Arduino + * Reader/PCD Elsomik/Start Mega Nano v3 Leonardo/Micro Pro Micro + * Signal Pin Pin Pin Pin Pin Pin * ----------------------------------------------------------------------------------------- - * RST/Reset RST 9 5 D9 RESET/ICSP-5 RST - * SPI SS SDA(SS) 10 53 D10 10 10 - * SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16 - * SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14 - * SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15 + * RST/Reset RST 9 / P0_3 5 D9 RESET/ICSP-5 RST + * SPI SS SDA(SS) 10 / P1_4 53 D10 10 10 + * SPI MOSI MOSI 11 / P1_1 51 D11 ICSP-4 16 + * SPI MISO MISO 12 / P1_0 50 D12 ICSP-1 14 + * SPI SCK SCK 13 / P1_2 52 D13 ICSP-3 15 * * More pin layouts for other boards can be found here: https://github.com/miguelbalboa/rfid#pin-layout * diff --git a/libraries/NeoPixel/examples/simple/simple.ino b/libraries/NeoPixel/examples/simple/simple.ino index b888daa..159e31b 100644 --- a/libraries/NeoPixel/examples/simple/simple.ino +++ b/libraries/NeoPixel/examples/simple/simple.ino @@ -1,6 +1,6 @@ #include -#define PIN 2 +#define PIN 2 // P0_0 #define NUMPIXELS 1 NeoPixel pixels(NUMPIXELS, PIN); diff --git a/libraries/NeoPixel/examples/simpleWithSerial/simpleWithSerial.ino b/libraries/NeoPixel/examples/simpleWithSerial/simpleWithSerial.ino index ff59018..02ec912 100644 --- a/libraries/NeoPixel/examples/simpleWithSerial/simpleWithSerial.ino +++ b/libraries/NeoPixel/examples/simpleWithSerial/simpleWithSerial.ino @@ -1,6 +1,6 @@ #include -#define PIN 2 +#define PIN 2 // P0_0 #define NUMPIXELS 1 NeoPixel pixels(NUMPIXELS, PIN); diff --git a/libraries/OneWire/examples/DS18x20_Temperature/DS18x20_Temperature.ino b/libraries/OneWire/examples/DS18x20_Temperature/DS18x20_Temperature.ino index 34a5e44..d9474ef 100644 --- a/libraries/OneWire/examples/DS18x20_Temperature/DS18x20_Temperature.ino +++ b/libraries/OneWire/examples/DS18x20_Temperature/DS18x20_Temperature.ino @@ -7,7 +7,9 @@ // The DallasTemperature library can do all this work for you! // https://github.com/milesburton/Arduino-Temperature-Control-Library -OneWire ds(10); // on pin 10 (a 4.7K resistor is necessary) +int pin = 10; // P1_4 for Start/Elsomik + +OneWire ds(pin); // a 4.7K resistor is necessary on used pin void setup(void) { Serial.begin(9600); diff --git a/libraries/OneWire/examples/DS2408_Switch/DS2408_Switch.ino b/libraries/OneWire/examples/DS2408_Switch/DS2408_Switch.ino index b70eda9..9b555bd 100644 --- a/libraries/OneWire/examples/DS2408_Switch/DS2408_Switch.ino +++ b/libraries/OneWire/examples/DS2408_Switch/DS2408_Switch.ino @@ -12,8 +12,9 @@ * - For reading from a switch, you should use 10K pull-up resisters. */ -OneWire net(10); // on pin 10 +int pin = 10; // P1_4 for Start/Elsomik +OneWire net(pin); void PrintBytes(const uint8_t* addr, uint8_t count, bool newline=false) { for (uint8_t i = 0; i < count; i++) { diff --git a/libraries/OneWire/examples/DS250x_PROM/DS250x_PROM.ino b/libraries/OneWire/examples/DS250x_PROM/DS250x_PROM.ino index db95a5e..fb5e5d4 100644 --- a/libraries/OneWire/examples/DS250x_PROM/DS250x_PROM.ino +++ b/libraries/OneWire/examples/DS250x_PROM/DS250x_PROM.ino @@ -23,14 +23,19 @@ DS250x add-only programmable memory reader w/SKIP ROM. */ #include -OneWire ds(6); // OneWire bus on digital pin 6 + +// OneWire bus on digital pin 6 +int pin = 6; // P0_2 for Start/Elsomik + +OneWire ds(pin); + void setup() { Serial.begin (9600); } void loop() { byte i; // This is for the for loops - boolean present; // device present var + bool present; // device present var byte data[32]; // container for the data from device byte leemem[3] = { // array with the commands to initiate a read, DS250x devices expect 3 bytes to start a read: command,LSB&MSB adresses 0xF0 , 0x00 , 0x00 }; // 0xF0 is the Read Data command, followed by 00h 00h as starting address(the beginning, 0000h) diff --git a/libraries/SPI/examples/SDcard_readInfo/SDcard_readInfo.ino b/libraries/SPI/examples/SDcard_readInfo/SDcard_readInfo.ino index 858418f..b0eab3a 100644 --- a/libraries/SPI/examples/SDcard_readInfo/SDcard_readInfo.ino +++ b/libraries/SPI/examples/SDcard_readInfo/SDcard_readInfo.ino @@ -12,7 +12,7 @@ Sd2Card card; SdVolume volume; SdFile root; -const int chipSelect = 9; +const int chipSelect = 9; // P0_3 void setup() { // Open serial communications and wait for port to open: diff --git a/libraries/Servo/examples/Broom/Broom.ino b/libraries/Servo/examples/Broom/Broom.ino index 511e2f9..33e613b 100644 --- a/libraries/Servo/examples/Broom/Broom.ino +++ b/libraries/Servo/examples/Broom/Broom.ino @@ -10,9 +10,9 @@ Servo servo; // create an Servo class instance to control the servo int pos = 0; // variable for storing servo position - +int pin = 8; // P1_9 for Start/Elsomik void setup() { - servo.attach(8); // connecting the servo drive to digital pin 8 (D8) + servo.attach(pin); // connecting the servo drive to specified digital pin } void loop() { diff --git a/libraries/Servo/examples/Jerks/Jerks.ino b/libraries/Servo/examples/Jerks/Jerks.ino index 3e5727d..7c34eaf 100644 --- a/libraries/Servo/examples/Jerks/Jerks.ino +++ b/libraries/Servo/examples/Jerks/Jerks.ino @@ -8,9 +8,9 @@ #include Servo servo; // create an Servo class instance to control the servo - +int pin = 8; // P1_9 for Start/Elsomik void setup() { - servo.attach(8); // connecting the servo drive to digital pin 8 (D8) + servo.attach(pin); // connecting the servo drive to specified digital pin } void loop() { diff --git a/libraries/Servo/examples/Resist/Resist.ino b/libraries/Servo/examples/Resist/Resist.ino index 2e25383..bdc0584 100644 --- a/libraries/Servo/examples/Resist/Resist.ino +++ b/libraries/Servo/examples/Resist/Resist.ino @@ -8,12 +8,13 @@ #include Servo servo; // create an Servo class instance to control the servo - -int potpin = A0; // analog pin used to connect a potentiometer +// analog pin used to connect a potentiometer +int potpin = A0; // P1_5 for Start/Elsomik int val; // variable for reading the analog output value +int pin = 8; // P1_9 for Start/Elsomik void setup() { - servo.attach(8); // connecting the servo drive to digital pin 8 (D8) + servo.attach(pin); // connecting the servo drive to specified digital pin } void loop() { diff --git a/libraries/SoftwareSerial/examples/SoftwareSerialExample/SoftwareSerialExample.ino b/libraries/SoftwareSerial/examples/SoftwareSerialExample/SoftwareSerialExample.ino index 1663767..cbefe09 100644 --- a/libraries/SoftwareSerial/examples/SoftwareSerialExample/SoftwareSerialExample.ino +++ b/libraries/SoftwareSerial/examples/SoftwareSerialExample/SoftwareSerialExample.ino @@ -5,13 +5,14 @@ Receives from software serial, sends to hardware serial. The circuit: - * RX is digital pin 2 (connect to TX of other device) - * TX is digital pin 6 (connect to RX of other device) + * RX is digital pin 2 (P0_10) (connect to TX of other device) + * TX is digital pin 6 (P0_2) (connect to RX of other device) Note: - Not all pins on the Elbear Ace-Uno support interrupts, - so only the following can be used for RX: - 2, 3, 4, 5, 8, 9 + Not all pins on the Elbear Ace-Uno/Ace-Nano support interrupts, + so only the following can be used for RX: 2, 3, 4, 5, 8, 9 + Elsomik board pins with interrupts: P0_8, P1_4, P1_5, P1_6, P1_9, P1_10, P1_15, P2_7 + Start board pins with interrupts: P0_10, P0_12, P0_13, P0_14, P0_15, P1_9, P1_15 created back in the mists of time modified 25 May 2012 @@ -22,8 +23,9 @@ */ #include - -SoftwareSerial mySerial(2, 6); // RX, TX +int rx_pin = 2; // P1_9 for Start/Elsomik +int tx_pin = 6; // P0_2 for Start/Elsomik +SoftwareSerial mySerial(rx_pin, tx_pin); void setup() { // Open serial communications and wait for port to open: diff --git a/libraries/SoftwareSerial/examples/TwoPortReceive/TwoPortReceive.ino b/libraries/SoftwareSerial/examples/TwoPortReceive/TwoPortReceive.ino index 62a57cc..2d13b54 100644 --- a/libraries/SoftwareSerial/examples/TwoPortReceive/TwoPortReceive.ino +++ b/libraries/SoftwareSerial/examples/TwoPortReceive/TwoPortReceive.ino @@ -17,17 +17,22 @@ * Second serial device's TX attached to digital pin 8(RX), RX to pin 10(TX) Note: - Not all pins on the Elbear Ace-Uno support interrupts, - so only the following can be used for RX: - 2, 3, 4, 5, 8, 9 + Not all pins on the Elbear Ace-Uno/Ace-Nano support interrupts, + so only the following can be used for RX: 2, 3, 4, 5, 8, 9 + Elsomik board pins with interrupts: P0_8, P1_4, P1_5, P1_6, P1_9, P1_10, P1_15, P2_7 + Start board pins with interrupts: P0_10, P0_12, P0_13, P0_14, P0_15, P1_9, P1_15 */ #include // software serial #1: RX = digital pin 2, TX = digital pin 6 -SoftwareSerial portOne(2, 6); +int rx_pin_1 = 2; // P1_9 for Start/Elsomik +int tx_pin_1 = 6; // P0_2 for Start/Elsomik +SoftwareSerial portOne(rx_pin_1, tx_pin_1); // software serial #2: RX = digital pin 8, TX = digital pin 10 -SoftwareSerial portTwo(8, 10); +int rx_pin_2 = 8; // P1_15 for Start/Elsomik +int tx_pin_2 = 10; // P1_3 for Start/Elsomik +SoftwareSerial portTwo(rx_pin_2, tx_pin_2); // active port is changed by user button pressing volatile bool isPortOneActive = true; diff --git a/libraries/Start_mik32_Guide/examples/Circuit_1_Blink/Circuit_1_Blink.ino b/libraries/Start_mik32_Guide/examples/Circuit_1_Blink/Circuit_1_Blink.ino index 6619475..162fce4 100644 --- a/libraries/Start_mik32_Guide/examples/Circuit_1_Blink/Circuit_1_Blink.ino +++ b/libraries/Start_mik32_Guide/examples/Circuit_1_Blink/Circuit_1_Blink.ino @@ -1,13 +1,22 @@ +// задать пин, к которому подсоединен светодиод +#ifdef LED_BUILTIN // для плат Elbear/Start можно использовать встроенный светодиод +uint8_t ledPin = LED_BUILTIN; +#elif defined(ARDUINO_ELSOMIK) // для плат Elsomik нужно задать вывод +uint8_t ledPin = P0_0; +#else +uint8_t ledPin = 2; +#endif + // функция настройки запускается один раз при нажатии кнопки reset или подаче питания на плату void setup() { - // Инициализация пина P0_3 как выход - pinMode(LED_BUILTIN, OUTPUT); + // Инициализация пина как выход + pinMode(ledPin, OUTPUT); } // функция цикла выполняется снова и снова бесконечно void loop() { - digitalWrite(LED_BUILTIN, HIGH); // включить светодиод (HIGH - высокий уровень напряжения) - delay(1000); // Секунда ожидания - digitalWrite(LED_BUILTIN, LOW); // выключить светодиод (LOW - низкий уровень напряжения) - delay(1000); // Секунда ожидания + digitalWrite(ledPin, HIGH); // включить светодиод (HIGH - высокий уровень напряжения) + delay(1000); // Секунда ожидания + digitalWrite(ledPin, LOW); // выключить светодиод (LOW - низкий уровень напряжения) + delay(1000); // Секунда ожидания } diff --git a/libraries/Start_mik32_Guide/examples/Circuit_2_Button/Circuit_2_Button.ino b/libraries/Start_mik32_Guide/examples/Circuit_2_Button/Circuit_2_Button.ino index ff23f9d..391a4b9 100644 --- a/libraries/Start_mik32_Guide/examples/Circuit_2_Button/Circuit_2_Button.ino +++ b/libraries/Start_mik32_Guide/examples/Circuit_2_Button/Circuit_2_Button.ino @@ -1,22 +1,37 @@ +// задать пин, к которому подсоединен светодиод +#ifdef LED_BUILTIN // для плат Elbear/Start можно использовать встроенный светодиод +uint8_t ledPin = LED_BUILTIN; +#elif defined(ARDUINO_ELSOMIK) // для плат Elsomik нужно задать вывод +uint8_t ledPin = P0_0; +#else +uint8_t ledPin = 2; +#endif + +// задать пин, к которому подсоединена кнопка +#ifdef BTN_BUILTIN // для плат Elbear Ace-Uno/Start можно использовать встроенную кнопку +uint8_t btn_pin = BTN_BUILTIN; +#elif defined(ARDUINO_ELSOMIK) // для плат Elsomik нужно задать вывод в формате порт-вывод +uint8_t btn_pin = P0_1; +#else +uint8_t btn_pin = 4; // для платы Elbear Ace-Nano нужно задать номер цифрового вывода +#endif + int buttonS = 0; // задаем переменную для хранения состояния кнопки // функция настройки запускается один раз при нажатии кнопки reset или подаче питания на плату void setup() { - pinMode(LED_BUILTIN, OUTPUT); // P0_3 - pinMode(LED_BUILTIN1, OUTPUT); // P1_3 - pinMode(BTN_BUILTIN, INPUT); // P0_8 + pinMode(ledPin, OUTPUT); + pinMode(btn_pin, INPUT); } // функция цикла выполняется снова и снова бесконечно void loop() { - buttonS = digitalRead(BTN_BUILTIN); // считываем значение с кнопки - if (buttonS == 0) // если кнопка нажата, то + buttonS = digitalRead(btn_pin); // считываем значение с кнопки + if (buttonS == 0) // если кнопка нажата, то { - digitalWrite(LED_BUILTIN, HIGH); // включить светодиод на пине P0_3 - digitalWrite(LED_BUILTIN1, LOW); // выключить светодиод на пине P1_3 - } else // если кнопка отпущена, то + digitalWrite(ledPin, HIGH); // включить светодиод + } else // если кнопка отпущена, то { - digitalWrite(LED_BUILTIN, LOW); // выключить светодиод на пине P0_3 - digitalWrite(LED_BUILTIN1, HIGH); // включить светодиод на пине P1_3 + digitalWrite(ledPin, LOW); // выключить светодиод } } diff --git a/libraries/Start_mik32_Guide/examples/Circuit_3_Buttons/Circuit_3_Buttons.ino b/libraries/Start_mik32_Guide/examples/Circuit_3_Buttons/Circuit_3_Buttons.ino index 4124914..7e751c8 100644 --- a/libraries/Start_mik32_Guide/examples/Circuit_3_Buttons/Circuit_3_Buttons.ino +++ b/libraries/Start_mik32_Guide/examples/Circuit_3_Buttons/Circuit_3_Buttons.ino @@ -1,14 +1,29 @@ -const int button1Pin = P0_2; // кнопка №1 - пин P0_2 -const int button2Pin = P0_3; // кнопка №2 - пин P0_3 -const int ledPin = P1_3; // пин P1_3, для светодиода +// задать пин, к которому подсоединен светодиод +#ifdef LED_BUILTIN // для плат Elbear/Start можно использовать встроенный светодиод +uint8_t ledPin = LED_BUILTIN; +#elif defined(ARDUINO_ELSOMIK) // для плат Elsomik нужно задать вывод +uint8_t ledPin = P0_0; +#else +uint8_t ledPin = 2; +#endif +// задать пины, к которым подсоединены кнопки +#if defined(ARDUINO_ELSOMIK) || defined(ARDUINO_START_MIK32_V1) +// для плат Elsomik и Start задать пины в формате порт_вывод +const int button1Pin = P0_2; // кнопка №1 +const int button2Pin = P0_3; // кнопка №2 +#else +// для плат Elbear задать номера цифровых выводов +const int button1Pin = 3; // кнопка №1 +const int button2Pin = 4; // кнопка №2 +#endif // функция настройки запускается один раз при нажатии кнопки reset или подаче питания на плату void setup() { - // Установим пины кнопок как входящие: + // Установим пины кнопок как входы: pinMode(button1Pin, INPUT); pinMode(button2Pin, INPUT); - // Установим пин светодиода как исходящий: + // Установим пин светодиода как выход: pinMode(ledPin, OUTPUT); } @@ -18,7 +33,7 @@ void loop() { /* * Здесь мы читаем текущее состояние кнопок и помещаем их значение - * в две пепременные. + * в две переменные. */ button1State = digitalRead(button1Pin); button2State = digitalRead(button2Pin); @@ -26,7 +41,7 @@ void loop() { if (((button1State == LOW) || (button2State == LOW)) // Проверяем нажата ли только одна из кнопок && !((button1State == LOW) && (button2State == LOW))) { digitalWrite(ledPin, HIGH); // Включаем светодиод - } else // иначе + } else // иначе { digitalWrite(ledPin, LOW); // Выключаем светодиод } diff --git a/libraries/Start_mik32_Guide/examples/Circuit_4_Potentiometer/Circuit_4_Potentiometer.ino b/libraries/Start_mik32_Guide/examples/Circuit_4_Potentiometer/Circuit_4_Potentiometer.ino index 82ca9ad..2392f39 100644 --- a/libraries/Start_mik32_Guide/examples/Circuit_4_Potentiometer/Circuit_4_Potentiometer.ino +++ b/libraries/Start_mik32_Guide/examples/Circuit_4_Potentiometer/Circuit_4_Potentiometer.ino @@ -1,5 +1,20 @@ -const int ledPin = LED_BUILTIN; // Пин P0_3 для светодиода. -const int sensorPin = P1_5; // Пин, к которому подключается средний вывод потенциометра. +// задать пин, к которому подсоединен светодиод +#ifdef LED_BUILTIN // для плат Elbear/Start можно использовать встроенный светодиод +uint8_t ledPin = LED_BUILTIN; +#elif defined(ARDUINO_ELSOMIK) // для плат Elsomik нужно задать вывод +uint8_t ledPin = P0_0; +#else +uint8_t ledPin = 2; +#endif +// задать пин, к которому подключается средний вывод потенциометра +#if defined(ARDUINO_ELSOMIK) || defined(ARDUINO_START_MIK32_V1) +// для плат Elsomik и Start задать пин в формате порт_вывод. Пин должен поддерживать АЦП измерения +const int sensorPin = P1_5; +#else +// для плат Elbear задать номер аналогового вывода +const int sensorPin = A0; +#endif + int sensorValue = 0; // Переменная для хранения значения потенциометра // функция настройки запускается один раз при нажатии кнопки reset или подаче питания на плату diff --git a/libraries/Start_mik32_Guide/examples/Circuit_5_Brightness/Circuit_5_Brightness.ino b/libraries/Start_mik32_Guide/examples/Circuit_5_Brightness/Circuit_5_Brightness.ino index dcb4b6f..d0b32bc 100644 --- a/libraries/Start_mik32_Guide/examples/Circuit_5_Brightness/Circuit_5_Brightness.ino +++ b/libraries/Start_mik32_Guide/examples/Circuit_5_Brightness/Circuit_5_Brightness.ino @@ -1,11 +1,24 @@ -// Имена для пинов светодиода и потенциометра (англ potentiometr или "pot") -#define LED_PIN P0_0 -#define POT_PIN P1_5 +// задать пин, к которому подсоединен светодиод +#ifdef LED_BUILTIN // для плат Elbear/Start можно использовать встроенный светодиод +uint8_t ledPin = LED_BUILTIN; +#elif defined(ARDUINO_ELSOMIK) // для плат Elsomik нужно задать вывод +uint8_t ledPin = P0_0; +#else +uint8_t ledPin = 2; +#endif +// задать пин, к которому подключается средний вывод потенциометра +#if defined(ARDUINO_ELSOMIK) || defined(ARDUINO_START_MIK32_V1) +// для плат Elsomik и Start задать пин в формате порт_вывод. Пин должен поддерживать АЦП измерения +const int sensorPin = P1_5; +#else +// для плат Elbear задать номер аналогового вывода +const int sensorPin = A0; +#endif // функция настройки запускается один раз при нажатии кнопки reset или подаче питания на плату void setup() { // Установим пин светодиода как выход - pinMode(LED_PIN, OUTPUT); + pinMode(ledPin, OUTPUT); } // функция цикла выполняется снова и снова бесконечно @@ -18,7 +31,7 @@ void loop() { * микроконтроллер выдаст число от 0 до 1023 * пропорциональное углу поворота ручки. */ - rotation = analogRead(POT_PIN); + rotation = analogRead(sensorPin); /* * В brightness записывается полученное ранее значение rotation @@ -29,7 +42,7 @@ void loop() { brightness = rotation / 4; // Итоговое напряжение подается на светодиод. - analogWrite(LED_PIN, brightness); + analogWrite(ledPin, brightness); } diff --git a/libraries/Start_mik32_Guide/examples/Circuit_6_RGB_LED/Circuit_6_RGB_LED.ino b/libraries/Start_mik32_Guide/examples/Circuit_6_RGB_LED/Circuit_6_RGB_LED.ino index e75706d..2d57388 100644 --- a/libraries/Start_mik32_Guide/examples/Circuit_6_RGB_LED/Circuit_6_RGB_LED.ino +++ b/libraries/Start_mik32_Guide/examples/Circuit_6_RGB_LED/Circuit_6_RGB_LED.ino @@ -1,7 +1,16 @@ // Имена пинов для светодиодов +// задать пины, к которым подсоединен светодиод. Пины должны поддерживать функцию ШИМ +#if defined(ARDUINO_ELSOMIK) || defined(ARDUINO_START_MIK32_V1) +// для плат Elsomik и Start задать пины в формате порт_вывод const int RED_PIN = P0_0; const int GREEN_PIN = P0_1; const int BLUE_PIN = P0_2; +#else +// для плат Elbear задать номера цифровых выводов +const int RED_PIN = 3; +const int GREEN_PIN = 5; +const int BLUE_PIN = 6; +#endif /* * Следующая переменная контролирует, насколько быстро выполняется цикл по смене diff --git a/libraries/Start_mik32_Guide/examples/Circuit_7_Photoresistor/Circuit_7_Photoresistor.ino b/libraries/Start_mik32_Guide/examples/Circuit_7_Photoresistor/Circuit_7_Photoresistor.ino index f299cc5..25cfa18 100644 --- a/libraries/Start_mik32_Guide/examples/Circuit_7_Photoresistor/Circuit_7_Photoresistor.ino +++ b/libraries/Start_mik32_Guide/examples/Circuit_7_Photoresistor/Circuit_7_Photoresistor.ino @@ -1,6 +1,19 @@ -// Константы с именами для используемых пинов. -const int sensorPin = P1_5; -const int ledPin = P0_0; +// задать пин, к которому подсоединен светодиод +#ifdef LED_BUILTIN // для плат Elbear/Start можно использовать встроенный светодиод +uint8_t ledPin = LED_BUILTIN; +#elif defined(ARDUINO_ELSOMIK) // для плат Elsomik нужно задать вывод +uint8_t ledPin = P0_0; +#else +uint8_t ledPin = 2; +#endif +// задать пин, к которому подключается средний вывод потенциометра +#if defined(ARDUINO_ELSOMIK) || defined(ARDUINO_START_MIK32_V1) +// для плат Elsomik и Start задать пин в формате порт_вывод. Пин должен поддерживать АЦП измерения +const int sensorPin = P1_5; +#else +// для плат Elbear задать номер аналогового вывода +const int sensorPin = A0; +#endif /* * Глобальны переменные для уровней яркости: diff --git a/libraries/Start_mik32_Guide/examples/Circuit_8_Buzzer/Circuit_8_Buzzer.ino b/libraries/Start_mik32_Guide/examples/Circuit_8_Buzzer/Circuit_8_Buzzer.ino index ad01304..c68928f 100644 --- a/libraries/Start_mik32_Guide/examples/Circuit_8_Buzzer/Circuit_8_Buzzer.ino +++ b/libraries/Start_mik32_Guide/examples/Circuit_8_Buzzer/Circuit_8_Buzzer.ino @@ -1,7 +1,13 @@ #include "notes.h" // Библиотека с частотой нот -// Константы с именами для используемых пинов. -const int buzzerPin = P0_0; +// задать пин, к которому подсоединен пьезоэлемент +#if defined(ARDUINO_ELSOMIK) || defined(ARDUINO_START_MIK32_V1) +// для плат Elsomik и Start задать пин в формате порт_вывод +const int buzzerPin = P0_0; +#else +// для плат Elbear задать номер цифрового вывода +const int buzzerPin = 2; +#endif /* * BPM (bpm, англ. beats per minute[1], удары в минуту) в музыке — показатель, определяющий скорость исполнения