Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
Почему ассемблер? 9 Эта книга для тех, кому надоело раз за разом повторять готовые рецепты из Интер- нета, закачивая в громоздкую «этажерку» плат готовые решения. Конечно, вам тут же предлагают перейти на нормальный С и работать напрямую с AVR Studio и дру- гими подобными монстрами. И не подумайте, что я вас от этого пути буду отгова- ривать — смотря, какие задачи вы перед собой ставите. Конечно, на «чистом» С программировать контроллеры удобнее, никто не спорит, и стать профессионалом можно только на этом пути. И переносится такой код при смене модели контролле- ра даже в рамках одного только семейства AVR лучше, и значительную часть опе- раций проводить проще, текст программы получается компактнее. З АМЕТКИ НА ПОЛЯХ Многие любители соблазняются средами программирования microPascal для AVR и BASCom, в которых они могут перейти на знакомые еще по школьным урокам инфор- матики языки Pascal или Basic. Вот этого действительно делать не следует — и не по- тому, что код получается гораздо хуже, чем в случае С, а потому что так вы еще дальше уходите от сути происходящего внутри контроллера, ничего не приобретая взамен, кроме сиюминутного удобства. Значительная часть преимуществ языка С кроется в доступности готовых библиотек на все случаи жизни, а в случае BASCom и тем более microPascal подобной развитой экосистемы даже близко не сложилось. Из этих сред вам почти некуда развиваться, а в случае С вы, как минимум, приобретаете базу для дальнейшего роста. Но даже профессионалы вряд ли будут спорить с тем, что имея за плечами только Arduino, с полпинка вы на C ничего хорошего не напишете. Чтобы писать эффек- тивные программы в условиях тотального дефицита ресурсов, надо знать устра- шающее количество различных тонкостей. Знания того, что означают, например, термины static и volatile , недостаточно — надо отчетливо понимать детали меха- низма действия этих и других спецификаторов в различных случаях, и еще много чего сверх того. А вы твердо уверены, что именно этого хотели — углубиться в изучение тонкостей программирования? Все споры о преимуществах того или иного подхода обычно ведутся во вполне виртуальном пространстве абстракций, игнорирующих собственно поставленную задачу. Как выразился один знаток программирования, « одна из сторон доказыва- ет, что дерево плавает, а другая, что кирпич тонет. Естественно, что при такой постановке каждая из сторон уверена в своей правоте и будет вечно ее отстаи- вать ». Мы постарается не ввязываться в беспочвенные холивары, а сразу сформу- лируем задачу: мы собираемся создать экономичный, эстетично выглядящий и удобный в применении прибор. Надо ли для этого преодолевать многочисленные нюансы реализации языка С для 8-разрядных контроллеров? Да, если вы хотите посвятить этому всю жизнь. Но и в этом случае профессионалы (см., например, [2]) рекомендуют начинать с ассемблера, потому что только так можно полностью освоить возможности контроллера. Тем, кто готовится програм- мировать контроллеры профессионально, тоже будет небезынтересно узнать, как в 150 байт кода вмещается программка генерации вполне качественного синуса частотой 50 Гц, способная управлять инвертором напряжения киловаттной мощ- ности (см. главу 9 ).
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==