Как и зачем читать даташиты, если микроконтроллеры – ваше хобби

  • Tutorial


Микроэлектроника – модное увлечение последних лет благодаря волшебному Arduino. Но вот беда: при должном интересе перерасти DigitalWrite() получается быстро, а что делать дальше – не совсем ясно. Разработчики Arduino приложили немало усилий для снижения порога вхождения в свою экосистему, но за ее пределами по-прежнему колышется темный лес суровой схемотехники, малодоступный любителю.


Например, даташиты. Вроде бы в них есть все, бери и пользуйся. Но только их авторы явно не ставят перед собой задачу популяризации микроконтроллеров; иногда кажется, что они специально злоупотребляют непонятными терминами и аббревиатурами при описании простых вещей, чтобы максимально запутать непосвященного. Но не все так плохо, при желании ларчик открывается.


В этой статье я поделюсь опытом общения гуманитария с даташитами в хобби-целях. Текст предназначен для выросших из штанишек Arduino любителей, он предполагает некоторое представление о принципах работы микроконтроллеров.


Начну с традиционного


Мигаем светодиодом на Ардуино


И сразу код:


void setup() {
DDRB |= (1<<5);
}

void loop() {
PINB = (1<<5);
for (volatile uint32_t k=0; k<100000; k++);
}

«Что это? – Спросит искушенный читатель. – Зачем ты что-то пишешь во входной регистр PINB? Он же только для чтения!» Действительно, документация Arduino, как и большинство учебных статей в интернете, утверждает, что этот регистр read-only. Я и сам так думал, пока не перечитал даташит к Atmega328p, готовя это статью. А там:



Это относительно новый функционал, его не было на Atmega8, о нем не все знают или не упоминают из соображений обратной совместимости. Но вполне годный для демонстрации мысли, что даташиты стоит читать, чтобы использовать все возможности чипа, включая малоизвестные. И это не единственная причина.


Зачем еще читать даташиты


Обычно ардуинщики, наигравшись со светодиодами и AnalogWrite'ами, начинают подключать к плате всякие модули и чипы, для которых есть уже написанные библиотеки. Рано или поздно появляется библиотека, работающая не так, как надо. Тогда любитель начинает ее ковырять, чтобы починить, а там...


А там происходит что-то категорически непонятное, поэтому приходится отправляться в гугл, читать многочисленные тьюториалы, дергать по частям чей-то подходящий код и наконец добиваться своего. Это дает мощное ощущение свершения, но на самом деле процесс напоминает изобретение велосипеда путем реверс-инжиниринга мотоцикла. Причем понимания, как работает этот велосипед, не прибавляется. Знаю, поскольку сам этим занимался довольно долго.


Если бы я вместо этого увлекательного занятия потратил пару дней на изучение документации к Atmega328, я бы сэкономил огромное количество времени. В конце концов, это довольно простой микроконтроллер.


Таким образом, читать даташиты надо хотя бы для того, чтобы представлять себе, как вообще устроен микроконтроллер и что он умеет делать. И еще:


  • чтобы проверять и оптимизировать чужие библиотеки. Их часто пишут такие же любители, изобретающие велосипед; или же, напротив, авторы намеренно делают в них избыточную защиту от дурака. Пусть будет в три раза больше и медленнее, зато точно сработает;
  • чтобы иметь возможность использовать в проекте чипы, к которым никто не написал библиотеку;
  • чтобы облегчить себе задачу по миграции с одной линейки МК на другую;
  • чтобы наконец оптимизировать свой старый код, который никак не влезал в Ардуину;
  • чтобы научиться управлять любым чипом напрямую через его регистры, не заморачиваясь изучением устройства его библиотек, если таковые вообще есть.

Зачем писать в регистры напрямую, когда есть HAL и LL?


Словарик
HAL, Hardware Abstraction Layer – библиотека для управления микроконтроллером с высоким уровнем абстракции. Если надо использовать интерфейс SPI1, просто настраиваем и включаем SPI1, не задумываясь, какие регистры за что отвечают.
LL, Low Level API – библиотека, содержащая макросы или структуры с адресами регистров, позволяющая обращаться к ним по имени. DDRx, PORTx, PINx на Атмеге – это LL.


Споры на тему «HAL, LL или регистры» регулярно случаются в комментариях на Хабре. Не претендуя на доступ к астральному знанию, просто поделюсь своим любительским опытом и соображениями.


Более-менее разобравшись с Атмегой и начитавшись статей про прекрасности STM32, я накупил полдюжины разных плат – и Discovery, и «Синие Таблетки», и даже просто чипы под свои самоделки. Все они два года пылились в коробке. Иногда я говорил себе: «все, с этих выходных осваиваю STM», запускал CubeMX, генерил сетап для SPI, смотрел на получившуюся стену текста, обильно сдобренную копирайтами STM, и решал, что это как-то уж слишком.



Разобраться, что тут понаписал CubeMX, конечно, можно. Но одновременно понятно, что запомнить все формулировки, чтобы потом писать их руками, нереально. А уж дебажить это, если я случайно забуду в Кубе поставить какую-нибудь галочку, – совсем привет.


Прошло два года, я по-прежнему облизывался в ST MCU Finder на всякие вкусные, но недоступные моему пониманию чипы, и случайно наткнулся на замечательную статью, пусть и про STM8. И внезапно понял, что все это время стучался в открытую дверь: регистры у STM устроены так же, как у любого другого МК, и для работы с ними Куб необязателен. А что, так можно было?..


HAL и конкретно STM32CubeMX – инструмент для профессиональных инженеров, плотно работающих с чипами STM32. Главная фишка – высокий уровень абстракции, возможность быстро мигрировать с одного МК на другой и даже с одного ядра на другое, оставаясь в рамках линейки STM32. Любители с такими задачами сталкиваются редко – наш выбор МК, как правило, ограничен ассортиментом AliExpress, и мы чаще мигрируем между кардинально разными чипами – переезжаем с Атмеги на STM, с STM на ESP, ну или что там нам новенького подкинут китайские друзья. HAL здесь не поможет, а времени его изучение съест немало.


Остается LL – но от него до регистров полшага. Лично я нахожу написание своих макросов с адресами регистров полезным: я внимательнее изучаю даташит, думаю, что мне потребуется в будущем, а что точно нет, лучше структурирую свои программы, ну и вообще преодоление способствует запоминанию.


Кроме того, есть нюанс с популярным STM32F103 – для него существуют две несовместимые версии LL, одна официальная от STM, вторая – от Leaf Labs, используемая в проекте STM32duino. Если писать open-source библиотеку (а у меня была именно такая задача), надо либо делать две версии, либо обращаться к регистрам напрямую.


Наконец, отказ от LL, на мой взгляд, упрощает миграцию, особенно если закладываться на нее с самого начала работы над проектом. Утрированный пример: напишем ардуиновский blink в Atmel Studio без LL:


#include <stdint.h>

#define _REG(addr) (*(volatile uint8_t*)(addr))

#define DDR_B 0x24
#define OUT_B 0x25

int main(void)
{
    volatile uint32_t k;

    _REG(DDR_B) |= (1<<5);

    while(1)
    {
        _REG(OUT_B) |= (1<<5);
        for (k=0; k<50000; k++);
        _REG(OUT_B) &= ~(1<<5);
        for (k=0; k<50000; k++);
    } 
}

Чтобы этот код замигал светодиодом на китайской платке с STM8 (из ST Visual Desktop), в нем достаточно поменять два адреса:


#define DDR_B 0x5007
#define OUT_B 0x5005

Да, я использую особенность подключения светодиода на конкретной плате, мигать будет очень медленно, но будет же!


Какие бывают даташиты


В статьях и на форумах, и русско-, и англоязычных, под «даташитами» понимают любую техническую документацию к чипам, так же поступаю и я в этом тексте. Формально они – лишь один из видов такой документации:


Datasheet – ТТХ, тактико- технические характеристики. Обязательно имеется у любого электронного компонента. Справочная информация, полезно держать под рукой, но вдумчиво читать в нем особо нечего. Впрочем, чипы попроще часто ограничиваются даташитом, чтобы не плодить лишних документов; в этом случае Reference Manual включается сюда же.


Reference Manual – собственно инструкция, здоровая книжка на 1000+ страниц. Подробно расписывается работа всего, что понапихано в чип. Главный документ для освоения микроконтроллера. В отличие от datasheet, инструкции пишут для широкой линейки МК, в них содержится много информации о периферии, отсутствующей в вашей конкретной модели.


Programming Manual или Instruction Set Manual – инструкция по уникальным командам микроконтроллера. Предназначена для тех, кто программирует на Ассемблере. Авторы компиляторов активно ее используют для оптимизации кода, поэтому в общем случае нам она не потребуется. Но заглядывать сюда полезно для общего понимания, за некоторыми специфическими командами типа выхода из прерывания, а также при активном использовании дебаггера.


Application Note – полезные советы по решению конкретных задач, часто с примерами кода.


Errata Sheet – описание случаев нестандартного поведения чипа с вариантами обхода, если есть.


Что есть в даташитах


Непосредственно в Datasheet нам могут потребоваться такие разделы:


Device Summary – первая страница даташита вкратце рассказывает об устройстве. Очень полезна в ситуациях, когда вы где-то нашли чип (увидели в магазине, выпаяли, встретили упоминание) и хотите понять, что это.


General Description – более подробное описание возможностей чипов из линейки.


Pinouts – схемы распиновки для всех возможных корпусов чипа (на какой ноге какой пин).


Pin Description – описание назначения и возможностей каждого пина.


Memory Map – карта адресов в памяти нам вряд ли потребуется, но иногда в нее включается также таблица адресов блоков регистров.


Register Map – таблица адресов блоков регистров, как правило, находится именно в даташите, а в Ref Manual – только сдвиги (address offsets).


Electrical Characteristics – в этом разделе нас в первую очередь интересуют absolute maximum ratings, перечисляющие максимальные нагрузки на чип. В отличие от неубиваемой Atmega328p, большинство МК не позволяет подключать к пинам серьезные нагрузки, что становится неприятным сюрпризом для ардуинщиков.


Package Information – чертежи доступных корпусов, полезные при проектировании своих плат.


Reference Manual структурно состоит из разделов, посвященных конкретной периферии, указанной в их заголовке. Каждую главу можно условно поделить на три части:


Overview, Introduction, Features – обзор возможностей периферии;


Functional Description, Usage Guide или просто основной блок раздела – подробное текстовое описание принципов устройства периферии и способов ее использования;


Registers – описание управляющих регистров. В простых случаях типа GPIO или SPI этого может быть вполне достаточно, чтобы начать использовать периферию, но часто приходится все-таки читать и предыдущие части.


Как читать даташиты


Даташиты с непривычки отпугивают своим объемом и обилием непонятных слов. На самом деле все не так страшно, если знать несколько лайфхаков.


Установите хорошую PDF-читалку. Даташиты пишутся в славных традициях бумажных инструкций, их здорово распечатать, проложить пластиковыми закладками и сшить. Гипертекст в них наблюдается в следовых количествах. К счастью, хотя бы структуру документа оформляют закладками, поэтому годная читалка с удобной навигацией очень нужна.


Даташит – не учебник Страуструпа, в нем не надо читать все подряд. Если воспользовались предыдущим советом – просто найдите в панели закладок нужный раздел.


Даташиты, особенно Reference Manuals, могут описывать возможности не конкретного чипа, а всей линейки. Это значит, что половина, а то и две трети информации не имеет отношения к вашему чипу. Прежде чем изучать регистры TIM7, проверьте в General Description, есть ли он у вас.


Знать английский достаточно на базовом уровне. Даташиты наполовину состоят из терминов, незнакомых среднестатистическому носителю языка, и наполовину – из простых связующих конструкций. Еще бывают прекрасные китайские даташиты на китайском английском, где половина также термины, а вторая половина – рандомный набор слов.


Если встречаете незнакомое слово, не пытайтесь перевести его с помощью англо-русского словаря. Если вас ставит в тупик hysteresis, то от перевода «гистерезис» теплее вам не станет. Пользуйтесь Гуглом, Stack Overflow, Википедией, форумами, где нужное понятие будет объяснено простыми словами с примерами.


Лучший способ понять прочитанное – проверить в деле. Поэтому держите под рукой отладочную плату, с которой знакомитесь, а лучше две – на случай, если все-таки что-то недопоняли и увидели волшебный дымок.


Полезна привычка держать под рукой даташит, когда вы читаете чей-то тьюториал или изучаете чужую библиотеку. Вполне возможно, в нем вы найдете более оптимальное решение своей задачи. И наоборот – если из даташита никак не удается понять, как же все-таки работает регистр, загуглите его: скорее всего, кто-то уже все описал простыми словами или оставил понятный код на ГитХабе.


Словарик


Немного полезных слов и обозначений, помогающих быстрее освоиться с даташитами. То, что вспомнилось в последние пару дней, дополнения и исправления приветствуются.


Электричество
Vcc, Vdd – «плюс», питание
Vss, Vee – «минус», земля
current – ток
voltage – напряжение
to sink current – работать «землей» для внешней нагрузки
to source current – питать внешнюю нагрузку
high sink/source pin – пин с повышенной «терпимостью» к нагрузке


IO
H, High – на пине Vcc
L, Low – на пине Vss
High Impedance, Hi-Z, floating – на пине ничего нет, «высокое сопротивление», он фактически невидим внешнему миру.
weak pull up, weak pull down – встроенный подтягивающий/стягивающий резистор, примерный аналог 50 кОм (см. даташит). Используется, например, чтобы входной пин не болтался в воздухе, вызывая ложные срабатывания. Weak – потому что его легко «перебить».
push pull – выходной режим пина, в котором он переключается между High и Low – обычный OUTPUT с Arduino.
open drain – обозначение выходного режима, в котором пин может быть либо Low, либо High Impedance / Floating. При этом почти всегда это не «настоящий» открытый сток, есть защитные диоды, резисторы, еще что. Это просто обозначение режима земля/ничего.
true open drain – а вот это уже настоящий открытый сток: пин напрямую ведет в землю, если открыт, или пребывает в подвешенном состоянии, если закрыт. Это значит, что через него при необходимости можно пускать напряжение больше Vcc, но максимум все равно оговаривается в даташите в разделе Absolute Maximum Ratings / Voltage.


Интерфейсы
in series – подключенные последовательно
to chain – собирать чипы в цепочку последовательным подключением, увеличивая количество выходов.
shift – сдвиг, обычно обозначает сдвиг битов. Соответственно, to shift in и to shift out – принимать и передавать данные побитно.
latch – задвижка, прикрывающая буфер, пока через него сдвигаются биты. Когда передача закончена, задвижка открывается, биты начинают работать.
to clock in – выполнить побитную передачу, сдвинуть все биты на нужные места.
double buffer, shadow register, preload register – обозначения истории, когда регистр должен уметь принимать новые данные, но придерживать их до какого-то момента. Например, для корректной работы ШИМ его параметры (скважность, частота) не должны меняться, пока не закончится текущий цикл, но новые параметры уже могут быть переданы. Соответственно, текущие держатся в shadow register, а новые попадают в preload register, будучи записанными в соответствующий регистр чипа.


Всякое
prescaler – предделитель частоты
to set a bit – установить бит в 1
to clear/reset a bit – сбросить бит в 0 (reset – фишка даташитов STM)
to toggle a bit – поменять значение бита на противоположное (см. пример в начале статьи)


Что дальше


Вообще тут планировалась практическая часть с демонстрацией трех проектов на STM32 и STM8, выполненных специально для этой статьи при помощи даташитов, с лампочками, SPI, таймерами, ШИМом и прерываниями:



Но текста получается многовато, поэтому проекты отправляются во вторую часть.


Навык чтения даташитов поможет вам с вашим хобби, но едва ли заменит живое общение с коллегами по увлечению на форумах и в чатах. Для него надо все-таки в первую очередь подтягивать английский язык. А потому дочитавшим – специальный приз: два бесплатных урока в Skyeng при первой оплате по коду HABR2.

Skyeng
125,52
Компания
Поделиться публикацией

Похожие публикации

Комментарии 29

    +10
    Неужели все настолько запущено, что даже о ТАКИХ базовых вещах надо писать?
      +8
      Надо писать, любительский народ в своей массе не читают даташиты. Технические решения выбирают зачастую, ориентируясь на устное творчество из ютюба других любителей. Доходит зачастую до абсурда, вместо, чтобы почитать даташит на микросхему, увидеть там рекомендованную схему для его задачи, купить эту микросхему за копейки в ЧипеДипе, плюс купить там же еще пару транзисторов, собрать и радоваться жизни, начинают городить немыслимые конструкции на дискретных порой еще советских элементах по советам случайных любителей из ютюба. Механизатору из глубинки нечерноземья верят больше, чем инженеру из Texas или Linear Devices.
        +1
        В глубинке нечерноземья чипидиповские цены могут показаться и не копеечными, а уж «доставка через интернет» и вовсе звучать как какое-то колдунство. А советских деталей при этом могут быть залежи — и куда-то ж их применить надо?

        в своей массе не читают
        ориентируясь на устное творчество из ютюба
        А вот это кажется взаимосвязанным. Ориентированные на устное творчество — не читают. Точка.
          0
          Ну так вы только подтверждаете, что тягу к изучению даташитов нужно нести в массы. Чтобы делали по даташитам, а не по устным сказаниям механизатора из глубинки, которому куда-то надо задействовать большую банку из под кофе, набитую выкушенными из старой техники транзисторами МП39Б :-)
            0
            Более того, буквари следует читать чтобы определить наличие ресурсов конкретно выбранного МК. Ибо маркетологи пишут «А вот у STM32F1хх есть USB Phy!». Человек покупает недорогой и компактный STM32F100 и недоумевает — а где USB то? Ну, в общем, посыл понятен. И Кубик, кстати, тут тоже помогает.
        0
        запущено это мягко сказано… иногда сталкиваясь со «специалистами»… в общем они тратят месяцы в поисках ошибки, но отказаться от «багованых» библиотек не готовы… да и многие готовы использовать кучу библиотек, и пофигу что они настолько «эффективные» что превращают STM32 в MSP430G2553…
        0
        Хороший словарик. Надо побольше таких!

        И перевод фразы 14.2.2, наверное, стоит сделать прямо в статье.
          0
          Добавил toggle из 14.2.2 в словарик, спасибо.
          0
          Гипертекст в них наблюдается в следовых количествах.

          нуу, если говорить о МК AVR — там обычно перекрестных ссылок внутри документа полно («см. таблицу Х», «описано в разделе Y» и т.п.)
            0
            Перекрестные ссылки встречаются, ссылки на таблицы — есть (даже если таблица в двух сантиметрах ниже), но вот ссылок в содержании нет, как и ссылок на него со страниц. А еще бывает так:

            Забыли, бывает. Проще говоря, не получится, как в случае с онлайновой документацией, например, AVR Libc, пользоваться только гиперссылками. А прыгать между разделами надо много.
              0
              ссылок в содержании нет,
              это как? Строки содержания не являются ссылками и по ним нельзя перейти на раздел? Ни разу не видел такого. Отсутствующее содержание — неоднократно, а вот нерабочее… (но конечно, утверждать что «не бывает» не могу, я ж далеко не все даташиты на свете видел, и даже хотя бы только на AVR тоже сильно не все).

              ссылок на него со страниц
              «На него» — на содержание? А зачем ссылки на содержание, если оно почти любой pdf-читалкой показывается слева.

              бывает так
              Баги и опечатки, конечно, бывают. Вопрос, насколько они систематичны. Мне такое попадалось единицы раз.
                0
                Проверил сейчас два Атмеловских (Микрочип) даташита к Atmega328p (один к ней лично, другой к 48-328) — там вообще нет содержания. В refman к STM8 и STM32 строки содержания — не ссылки.

                если оно почти любой pdf-читалкой показывается слева.

                Ну вот поэтому и нужна pdf-читалка. Кстати, строго говоря, то, что слева открывается, — это не содержание, а закладки. Если авторы pdf их не сделали, то ой (китайцы, например, не умеют, зато умеют лочить даташиты, так что их и вручную не проставишь...)
                  0
                  зато умеют лочить даташиты

                  Ну, это-то не беда, такие «локи» снимаются легко и быстро соответствующими утилитами :) Но вообще я вот никогда не понимал — зачем в даташит или описание команд ставить запрет на копирование и печать? Время от времени сталкиваюсь с таким.
                    0
                    А еще нередко бывает, что копирование вроде и работает, но вставляется какая-то белиберда.
                    0
                    Ну если эти закладки и отражают содержание — то какая разница?

                    Или вам важно, чтобы содержание как список разделов именно в тексте было встроено? Но так ведь менее удобно — для переключения на произвольный раздел нужно сначала отмотать до содержания (а оно еще и не на самой первой странице или самой последней, да и само несколько страниц занимает...). Да, тут могли бы помочь ссылки «перейти к содержанию» в каждом разделе, но это замусоривает документ — и все равно придется делать минимум два прыжка.

                    два Атмеловских (Микрочип) даташита к Atmega328p (один к ней лично, другой к 48-328) — там вообще нет содержания.

                    Странно. Первая же ссылка в гугле:
                    Заголовок спойлера

                    — содержание есть и и в виде закладок, и встроенное в текст, со ссылками.
                    ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf


                    А китайские даташиты — тема отдельная. Как и китайские библиотеки, китайские SoC и т.п.

                    Если авторы pdf их не сделали

                    Ну так и в html тоже авторы могут не сделать перекрестные ссылки внутри одной страницы гипертекстовыми — перематывайте вручную, дорогие пользователи.
                      0
                      два Атмеловских (Микрочип) даташита к Atmega328p (один к ней лично, другой к 48-328) — там вообще нет содержания.

                      Странно. Первая же ссылка в гугле:


                      Ааа! Оно в конце! Спасибо, не догадывался туда посмотреть.
              +2
              >> HAL и конкретно STM32CubeMX – инструмент для профессиональных инженеров
              Позволю себе не согласится. Профессионалы так же пишут в регистры, только с учетом проффесионализма через свои ранее написанные библиотеки.
                +2
                свои ранее написанные библиотеки

                Сам раньше страдал изобретанием велосипедов. Сейчас юзаю HAL, это удобно и есть некая унификация. И да, индусский код приходится часто править, иногда багфиксинг, иногда не хватает функционала. Наверно скоро выложу на Гитхабе пофикшеный HAL для STM32 с дальнейшим суппортом.
                0
                Наконец, отказ от LL, на мой взгляд, упрощает миграцию, особенно если закладываться на нее с самого начала работы над проектом.

                Если брать AVR Studio или WinAVR, то там LL есть «искаропки». Вот-бы ещё сам Atmel более обдуманно подходил к именам регистров, приводимых в документации…
                  0
                  Ну и в Arduino IDE есть LL. Не знаю, правда, сами они его писали, или он вместе с AvrLibc идет.
                  +1
                  HAL — High Hardware Abstraction Layer
                    0
                    точно, спасибо. Исправил.
                    0
                    HAL и конкретно STM32CubeMX – инструмент для профессиональных инженеров, плотно работающих с чипами STM32
                    Повеселило. Потратить полдня на изучение и никаких вопросов не возникнет. Все библиотеки поставляются в исходных кодах — нет ни какой проблемы залезть внутрь и посмотреть. А если очень надо — нет никакой проблемы использовать регистры совместно с HAL.
                      0
                      Ага, меня тоже. Я использую кубик только для планирования ресурсов (ноги, аппаратура и прочее) а так же подбор коэффициентов дерева тактирования. Их убогий код не использую, максимум посмотреть что да как. После получения всей карты ресурсов пишу уже сам, либо напрямую (есть наработки), либо через HAL StdPeriph.
                      0
                      Для ардуинщиков ещё нужно сделать специальный абзац про: Five volt tolerant (FT and FTf) I/O input/output
                        0
                        Справедливости ради, надо отметить, что RM те ещё монстры: что то типа такого отпугнет кого угодно не хуже простыни из Куба.
                        С другой стороны наибольшая проблема HAL состоит в том, что его нормальное использование всё равно требует чтения RM.
                          0
                          HAL и конкретно STM32CubeMX – инструмент для профессиональных инженеров, плотно работающих с чипами STM32

                          Я бы не сказал. Cube довольно удобен при проектировании периферии даже для начинающих.
                          Когда ваяешь свою схему, без Куба сложновато. Там достаточно настроить нужную периферию, посмотреть, какие ноги она занимает, можно ли заремапить, если есть конфликт и так далее. Ну и настройка системы тактирования там упрощена и позволяет играться с клоками и PLLками. Я же часто пишу в регистры сам, без HAL. HAL использую только для работы со сложной периферией, вроде USB или Ethernet. Ну и FMC/FMSC, потому что расписывать инициализацию около 40 ног для DRAM памяти как-то влом.
                            0
                            Касаемо документации, помимо даташита и рефмануала ещё желательно заглянуть в programming manual (если он существует) и обязательно прочитать errata на конкретную модель чипа, потому что можно наловить граблей в самом неожиданном месте, а отладки не бесконечны и ощутимо не бесплатны.

                            Заглядывать за ответами лучше не на StackOverflow, а на поддомен Electrical Engineering Stack Exchange, потому что вероятность найти дельный ответ по embedded там выше.

                            Ещё в словарик не помешало бы добавить такое обозначение как rc_w1, которое фигурирует в статусных регистрах NVIC ARM-овских ядер (насчёт AVR, PIC и более экзотических не в курсе).
                              0
                              Заглядывать за ответами лучше не на StackOverflow, а на поддомен Electrical Engineering Stack Exchange, потому что вероятность найти дельный ответ по embedded там выше.

                              Скучно там, не успеешь никого еще даже послать в пешее путешествие, как уже в глубоком минусе сидишь. Как в том фильме «Человек с Бульвара Капуцинов» Простите, сэр…
                              Но я позволю себе заметить, что вы находитесь в месте, где демонстрируется фильма!
                              У нас не принято распивать спиртные напитки, а тем более — приносить их с собой.
                              :-)
                              Идут они со своим иксчейнджем.

                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                              Самое читаемое