Начинаем изучать Cortex-M на примере STM32, часть 2
Данная статья является продолжением цикла по программированию микроконтроллеров на базе ядра Cortex-M.
Первую статью можно прочитать здесь:
Начинаем изучать Cortex-M на примере STM32
Задачей статей является подробное описание особенностей, возникающих при программировании МК. Материал не предназначен для желающих за 10 минут запустить пример мигания светодиодом. Я постараюсь подробно описать то, что часто скрывают от новичков, чтобы их не напугать.
Мне очень хочется, чтобы программисты использующие стандартные библиотеки, шаблоны, примеры и т.д. понимали как все это работает. А при отсутствии этих самых библиотек и примеров могли самостоятельно решить свою задачу.
Основной акцент сделан на изучение документации на ядро Cortex-M и документации на конкретный контроллер.
На этот раз речь пойдет про прерывания, а так же будут затронуты некоторые вопросы архитектуры памяти и структуры прошивки МК.
Несколько слов про документацию ARM
По не совсем ясным для меня причинам, нельзя зайти на сайт ARM и скачать полную документацию на ядро Cortex-M4. Да и на Cortex-M3 тоже нельзя.
Придется почитать несколько документов.
1. Изучение придется начать с Cortex ™-M3 TechnicalReference Manual Revision: r1p1 — самой первой ревизии технической спецификации на ядро Cortex-M3
2. Во всех дальнейших ревизиях и описании Cortex ™-M4 TechnicalReference Manual описаны лишь общие данные и изменения относительно предыдущего документа.
Так что прошу не удивляться ссылкам на спецификации другого ядра.
Interrupt and Events
Прежде всего необходимо разобраться с тем, что такое прерывания.
В МК Cortex-M есть два понятия, которые часто путают Interrupt и Event.
Event — это событие (аппаратное или программное), на которое могут реагировать ядро или периферийные блоки. Одним из вариантов реакции может быть — прерывание.
Interrupt — это прерывание работы программы и переход управления в специализированный участок обработчик прерывания.
Взаимосвязь между Event и Interrupt заключается в следующем:
Каждый Interrupt вызывается Event, но не каждый Event вызывает Interrupt.
Помимо прерываний, события могут активировать и другие возможности МК.
Управление и обработка прерываниями производится контроллером приоритетных векторных прерываний NVIC (Nested Vectored Interrupt Controller). Контроллер прерываний часть ядра Cortex-M. Документацию на этот контроллер необходимо начинать изучать с Cortex ™-M3 TechnicalReference Manual Revision: r1p1
При возникновении, некоторого события контроллер прерываний автоматически прерывает выполнение основной программы, и вызывает соответствующую функцию обработки прерываний. После выхода из функции обработчика прерываний программа продолжает выполнение с того места, где произошло прерывание. Все происходит автоматически (при правильной настройке NVIC, но об этом ниже).
Из самого названия видно, что контроллер NVIC поддерживает вложенность прерываний и приоритеты. Каждому прерыванию при настройке NVIC присваивается свой приоритет. Если во время обработки низкоприоритетного прерывания возникает высокоприоритетное, то оно, в свою очередь, прервет обработчик низкоприоритетного прерывания.
Как это работает?
Данный пост не претендует на абсолютную полноту, я советую изучить раздел прерываний в Cortex™-M3 Technical Reference Manual. Поскольку эта часть ядра не претерпела изменений, ее описание дано в первой ревизии r1p1 на ядро Cortex-M3.
Вход в прерывание и выход из него
При инициации прерывания NVIC переключает ядро в режим обработки прерывания. После перехода в режим обработки прерывания регистры ядра помещаются в стек. Непосредственно во время записи значения регистров в стек осуществляется выборка начального адреса функции обработки прерывания.
В стек перемещается регистр регистр статуса программы ( Program Status Register (PSR)), счетчик программы (Program Counter (PC)) и регистр связи (Link Register (LR) ). Описание регистров ядра приведено в Cortex-M4 Generic User Guide. Благодаря этому, запоминается состояние, в котором находилось ядро перед переходом в режим обработки прерываний.
Также сохраняются регистры R0 — R3 и R12. Эти регистры используются в инструкциях для передачи параметров, поэтому, помещение в стек делает возможным их использование в функции обработки прерывания, а R12 часто выступает в роли рабочего регистра программы.
По завершении обработки прерывания все действия выполнятся в обратном порядке: извлекается содержимое стека и, параллельно с этим, осуществляется выборка адреса возврата.
С момента инициации прерывания до выполнения первой команды обработчика прерывний проходит 12 тактов, такое же время необходимо для возобновления основной программы после завершения обработки прерывания.
Вложенность прерываний
Как было сказано выше NVIC поддерживает прерывания с различными приоритетами, которые могут прерывать друг друга. При этом, могут возникнуть различные ситуации, обработка которых по разному оптимизирована.
1. Приостановка низкоприоритетного прерывания
В этой ситуации, обработка низкоприоритетного прерывания прекращается. Следующие 12 циклов выполняется сохранение в стек нового набора данных и запускается обработка высокоприоритетного прерывания. После его обработки, содержимое стека автоматически извлекается и возобновляется обработка низкоприоритетного прерывания.
Больших отличий от прерывания основной программы не наблюдается.
2. Непрерывная обработка прерываний
Эта ситуация может возникнуть в двух случаях: если два прерывания имеют одинаковый приоритет и возникают одновременно, если низкоприоритетное прерывание возникает во время обработки высокоприоритетного.
В этом случае, промежуточные операции над стеком не производятся. Происходит только загрузка адреса обработчика низкоприоритетного прерывания и переход к его выполнению. Отказ от операций над стеком экономит 6 тактов. Переход к следующему прерыванию происходит не за 12 тактов, а всего за 6.
3. Запаздывание высокприоритетного прерывания
Ситуация возникает, если высокоприоритетное прерывание происходит во перехода к обработке низкоприоритетного (за те самые 12 тактов). В этом случае переход к высокоприоритетному прерыванию будет происходить не менее 6 тактов с момента его возникновения (время необходимое для загрузки адреса обработчика прерывания и перехода к нему). Возврат в низкоприоритетное уже описан выше.
Приоритеты прерываний
Помимо простой установки приоритета прерываний, NVIC реализует возможность группировки приоритетов.
Прерывания в группе с более высоким приоритетом могут прерывать обработчики прерываний группы с более низким приоритетом. прерывания из одной группы, но с разным приоритетом внутри группы не могут прерывать друг друга. Приоритет внутри группы определяет только порядок вызова обработчика, когда были активизированы оба события.
Значение приоритета прерывания задается в регистрах Interrupt Priority Registers (см. Cortex-M4 Generic User Guide). При этом, часть бит отвечает за приоритет группы, в которой находится прерывание, а часть — за приоритет внутри группы.
Настройка распределение бит на приоритет группы или приоритет внутри группы осуществляется с помощью регистра Application Interrupt and Reset Control Register (ВНИМАТЕЛЬНО. см. Cortex-M4 Generic User Guide).
Как вы, наверно, заметили, в Cortex-M4 Generic User Guide сказано, что настройка приоритетов и группировки приоритетов зависят от конкретной реализации implementation defined.
А вот дальше не очень приятная вещь. В Reference manual к МК STM32F407 про NVIC почти нет информации. Но есть ссылка на отдельный документ. Для того, чтобы разобраться с реализацией NVIC в STM32 придется прочитать еще один документ — STM32F3xxx and STM32F4xxx Cortex-M4 programming manual. Вообще говоря, я советую внимательно изучить данный документ и по всем другим вопросам, в нем работа ядра расписана более подробно, чем в документации от ARM.
В нем, уже можно найти:
Из возможных 8 бит приоритета используются только 4. Но этого вполне достаточно для большинства задач.
Маскирование прерываний
Предположим, что у нас стоит задача запуска ракеты-носителя при нажатии на красную кнопку, но только при условии, что повернут ключ.
Нет совершенно ни какого смысла генерировать прерывание на поворот ключа. А вот прерывание на нажатие красной копки нам понадобится. Для того, чтобы включать/выключать различные вектора прерываний, существует маскирование прерываний.
Маскирование прерывания осуществляется с помощью регистров Interrupt Set-enable Registers.
Если прерывание замаскировано, это не означает, что периферия не генерирует события! Просто NVIC не вызывает обработчик этого события.
Таблица векторов прерываний
Все возможные прерывания, поддерживаемые NVIC, записываются в таблицу векторов прерываний. По сути своей, таблица векторов прерываний есть ни что иное, как список адресов функций обработчиков прерываний. Номер в списке соответствует номеру прерывания.
- Reset
- NMI
- HardFault
- MemManage
- BusFault
- UsageFault
- SVCall
- PendSV
- SysTick
Расположение векторов прерываний и загрузка МК
Из начала флеш памяти ядро считывает значение SP (stack top addres) и PC (reset routine location). Таким образом, автоматически начинает выполняться функция, с адресом считанным в регистр PC. Это может быть, например main.
После обязательных четырех компонентов, может находиться дальнейшая таблица векторов прерываний. Главное сохранить порядок.
При желании, можно разместить таблицу векторов прерываний в другой области памяти, но тогда, необходимо сообщить NVIC, куда мы передвинули таблицу. За это смещение таблицы векторов отвечает регистр Vector Table Offset Register (см. Cortex-M4 Technical Reference Manual. Это может понадобиться для написание встроенного загрузчика нового ПО (bootloader), но об этом как-нибудь в другой раз.
От теории к практике
ТЗ второго проекта
Пример создается для отладочной платы STM32F4Discovery.
При нажатии на кнопку должен загореться светодиод LED3. При замыкании контактов PC6 и GND загорается светодиод LED5.
В процессе программирования поиграемся с приоритетами прерываний и посмотрим к чему это приведет.
Железная часть
Найдем в документации к плате кнопку и светодиод:
При ненажатой кнопке на пине PA0 будет логический ноль, при нажатии на кнопку на кнопке появится логическая 1 (3.3В).
Светодиод LED3 подключен к пину PD13.
Светодиод LED5 подключен к пину PD14.
Интересней всего с контактом PC6 — он напрямую выведен на штыревой разъем. Нам будет необходимо обеспечить регистрацию логической 1, когда он не закорочен с контактом GND. О том, как это сделать пойдет речь ниже.
Настройка GPIO
Для нашей задачи необходимо настроить пины PD13 и PD14 как выходные. О том, как это делать можно прочитать в предыдущей статье.
С настройкой пина PA0 тоже все достаточно просто — его нужно настроить на вход. Не смотря на то, что после ресчета МК почти все пины настроены на вход, крайне желательно явно прописать эту инициализацию.
С пином PC7 все несколько интереснее. Поскольку он «висит в воздухе», его состояние не определено. Нам же необходимо, чтобы при этом его состояние всегда было «1». Для этого, в блоке GPIO активировать подтяжку. В нашем случае, необходима подтяжка к питанию — PULL UP.
Активация подтяжки осуществляется с помощью регистра GPIO port pull-up/pull-down register.
Прерывания EXTI
Для выполнения нашего «ТЗ» с использованием прерываний, нам необходимо настроить прерывания, которые будут срабатывать при переходе контакта PA0 из состояния «0» в состояние «1», и прерывание при переходе контакта PC6 из состояния «1» в состояние «0».
В МК STM32F4xx для этой цели служит контроллер внешних прерываний/событий — EXTI (External interrupt/event controller). Я настоятельно рекомендую ознакомиться с его функционалом в Reference manual. Нам необходимо поступить в соответствии с описанным:
Нам понадобятся 0 и 6 линии EXTI. Для размаскирования соответствующих линий прерываний необходимо записать в регистр EXTI_IMR значение 0x9.
Для линии PA0, необходима генерация события прерывания по переходу из состояния «0» в состояние «1» — по возрастающему фронту. То есть, необходимо записать 1 в нулевой бит регистра EXTI_RTSR.
Для линии PC6, наоборот, необходима генерация события прерывания по переходу из состояния «1» в состояние «0» — по падающему фронту. То есть, необходимо записать 1 в шестой бит регистра EXTI_FTSR.
На этом настройка блока EXTI закончена. Последний пункт будет реализован при настойке NVIC.
По мимо этого, необходимо определиться, пин с какого порта подключается к определенной линии EXTI. Делается это с помощью регистров SYSCFG external interrupt configuration register (Reference manual). Эти регистры находятся в System configuration controller, что мне кажется не очень логичным (почему было не включить эту насторойку в EXTI?), но оставим сей факт на совести ST.
Настройка NVIC
Активация обработки определенного вектора прерывания осуществляется с помощью регистров Interrupt set-enable registers (NVIC_ISERx). Описание регистров приведено в Cortex-M4 Generic User Guide. Сама таблицу векторов прерываний для нашего МК приведена в Reference manual (см. Table 61).
Из таблицы можно увидеть, что для 0 линии есть отдельное прерывание, а вот линии с 5 по 9 генерируют одно прерывание на всех.
Кроме того, из таблицы мы узнали номера векторов, необходимых нам прерываний. Теперь нужно записать «1» в 6 бит (активация прерываний линии 0 EXTI) регистра NVIC_ISER0 (адрес 0xE000E100) и в 23 бит того же регистра (активация прерываний линий 5-9).
Настройка приоритетов
Для того, чтобы можно было побаловаться с приоритетами прерываний настроим группы приоритетов так, чтобы 2 бита отвечали за приоритет внутри группы, и 2 бита — за приоритет самой группы. Для этого необходимо записать значение 0х05FA0500 в регистр Application interrupt and reset control register (STM32F3xxx and STM32F4xxx Cortex-M4 programming manual).
Настройка приоритетов осуществляется с помощью регистров Interrupt Priority Registers (STM32F3xxx and STM32F4xxx Cortex-M4 programming manual). Нас будут интересовать регистры Interrupt Priority Register 2 (0xE000E4008) и регистр Interrupt Priority Register 5(0xE000E401C).
Пока не будем изменять приоритеты. Пусть будут одинаковы для обоих прерываний.
Обработка прерываний
Функции обработчики прерываний — ни что иное, как просто функции языка C, который ни чего не получают и не возвращают (и правильно — не от кого и не кому).
Главное правило — обработка прерываний должна осуществляться как можно быстрее. Иначе низкоприоритетные прерывания могут слишком долго ждать.
После окончания обработки прерывания необходимо сбросить активность события, вызвавшего прерывание — «очистить прерывание». Очистка прерывания EXTI производится с помощью регистра EXTI_PR . Обратите внимание: запись «1» очищает прерывание, запись «0» не имеет ни какого воздействия.
Если с обработкой прерывания линии 0 EXTI все достаточно просто, то с группой линий 5-9 возникает вопрос — как определить какая линия вызвала прерывание. Узнать это можно проверкой бит регистра Pending register (EXTI_PR) — Reference manual.
Создаем таблицу векторов и располагаем ее в правильном месте
Использование
Располагает таблицу __vector_table в начале секции, объявленной в файле линкера. Сам файл можно посмотреть тут:
Сама секция задается в начале ROM памяти. Адреса можно посмотреть тут (документ, в котором описана адресация флеш памяти STM32):
Комбинация директивы IAR и спецфункции IAR:
Записывает в начале флеша указатель на верхушку стека.
Саму таблицу заполняют адреса функций, реализующий вечный цикл. Исключение сделано только для интересующих нас функций:
В функции, вызываемой при старте, просто производится переход к
Это функция — main(). Сам символ можно переопределить, если возникнет желание:
Переходим к основному файлу
Обратите внимание на то, что значения спецрегистров МК объявлены как volatile. Это необходимо, чтобы компилятор не пытался оптимизировать операции обращения к ним, поскольку это не просто участки памяти и их значения могут изменяться без участия ядра.
Настраиваем группирование приоритетов
В первую очередь стоит настроить группировку приоритетов прерываний:.Данное действие должно выполняться только один раз. В сложных проектах, использующих сторонние библиотеки стоит проверять данный факт. Изменение разбиения приоритетов на группы может привести к некорректной работе прошивки.
Включение тактирование используемой периферии
Напомню, что перед началом работы с периферийными блоками необходимо включить их тактирование:
Работать сразу с SYSCFG нельзя, нужно подождать несколько тактов. Но мы и не будем. Займемся инициализацией GPIO.
Инициализация GPIO
Светодиоды инициализируются так же как и в прошлый раз:
Кнопка PA0 и контакт PC7 инициализируются как входные:
Вот только для контакта PC6 необходимо включить подтяжку питания. Активация подтяжки производится с помощью регистра GPIOC_PUPDR:
Настройка EXTI
И так, на нужно настроить следующие параметры — включить прерывания для линий 0 и 6, для линии 0 прерывание по растущему фронту, для линии 6 — прерывание по падающему фронту:
Осталось настроить пины каких портов подключены к линии EXTI (странное решение, например МК stellaris могут генерировать прерывание при любой комбинации пинов, у STM32 с этим сложнее):
Настройка NVIC
Осталось настроить приоритеты прерываний и маскировать их для инициации обработки. Обратите внимание, что регистры NVIC_IPR доступны для побайтового обращения, что значительно упрощает доступ только к необходимым байтам приоритетов отдельных векторов прерываний. Достаточно только сделать сдвиг на величину номера вектора прерывания (см. листинг определений). Еще раз напомним, что EXTI Line 0 имеет 6 номер в таблице векторов, а EXTI line 5_9 — номер 23. У STM32 значение имеют только старшие 4 бита приоритета:
Для демонстрации приоритеты установлены различными.
Теперь можно включить прерывания:
С этого момента нажатие на кнопку и закоротки PC6 и GND будет приводить к вызову функций обработчиков прерываний EXTI_Line0_IntHandler и EXTI_Line6_IntHandler соответственно.
Обработка прерываний
В функциях обработки прерываний в первую очередь необходимо очистить прерывание, после этого можно зажечь светодиоды. Для демонстрации приоритетов прерываний в один из обработчиков добавлен вечный цикл. Если приоритет прерывания с вечным циклом ниже приоритета второго — то оно не сможет быть вызвано. Иначе, оно сможет прервать первое. Я предлагаю вам самим попробовать различные знчения приоритетов прерываний и наглядно увидеть к чему это приводит (ВНИМАНИЕ — не забудьте про группы прерываний!).
RTC HAL stm32
Речь пойдёт о программировании RTC (встроенных часов) в микроконтроллере stm32.
Описание сделано для F103 и F303, но так как у них много общих функций, то читать нужно всё.
Первым делом нужно указать источник тактирования для часов. Указываем внешний кварцевый резонатор, он есть на многих платах…
В CubeMX выбираем RCC и указываем — Low Speed External (LSE) ⇨ Crystal/Ceramic Resonator
В мультиплексоре RTC Clock Mux нужно указать источник LSE…
Если внешнего кварца нет, тогда в мультиплексоре укажите LSI, а Low Speed External (LSE) ⇨ Disable.
Переходим в раздел RTC и делаем так…
Для F103
Data Format ⇨ Binary data format .
Со временем и календарём всё понятно. Формат 24-х часовой.
Auto Predivider Calcalation ⇨ Enabled — активирован автоматический расчёт предделителя.
Asynchronous Predivider value — предделитель часового кварца. С его помощью достигается тактирование в 1Гц (один тик в одну секунду). Если отключить автоматический режим, то нужно будет ввести число от 0 до 127.
Для F303
Здесь два предделителя для настройки частоты — Asynchronous Predivider value и Synchronous Predivider value . Для внешнего кварца укажите 127 и 255.
Если у Вас LSI 40kHz, тогда во втором предделителе укажите 311. Если частота другая, тогда смотрите ниже.
Настройка предделителей для разных источников тактирования…
У нас тактируется от LSE = 32.768кГц, тогда исходя из формулы получается следующее: 128 * 256 = 32768 / 32.768кГц = 1Гц (один тик в секунду). Если уменьшить или увеличить какое-нибудь значение, то часы пойдут быстрее или медленнее.
Hour Format — можно изменить формат времени 12/24.
Day Light Saving: value of hour adjustment — зимнее/летнее время (добавляет/вычитает один час из текущего времени).
Пишем код. В функции static void MX_RTC_Init(void) есть две структуры, их надо объявить как глобальные…
И заодно объявим массив для вывода данных в UART.
У F303 структура даты называется sDate.
В бесконечном цикле будем читать дату и время:
Если на пин Vbat подключить батерейку или просто подать 3 вольта, тогда после ресета данные будут сохраняться. Предварительно нужно в функции static void MX_RTC_Init(void) закомментировать установку времени и даты…
Эти же функции можно использовать где-нибудь в программе для изменения времени/даты на лету.
Теперь можно прошить ещё раз и понажимать ресет. Данные должны сохраняться.
Помните о том, что при повторной генерации проекта в CubeMX комментарии удалятся!
У микроконтроллера F103, дата не сохраняется. Это связано с тем, что F103 всего один 32-х битный регистр, см. спойлер…
Вот так выглядит схема RTC в F103…
От батарейки работает только регистр со временем и будильником, ну и ещё предделитель. То есть дату сохранить нельзя.
Но, дату сохранить нельзя только если пользоваться HAL, если же написать свой костыль, тогда в RTC_CNT можно сохранять дату/время в UNIX-формате, то есть количество секунд прошедшее с 1970 года. А потом средствами СИ вытаскивать из этого числа дату и время.
У более «жирных» камней сохраняется и дата и время.
Если используется LSI, то данные сохранятся, но время идти не будет.
Если у вас микроконтроллер F4xx или F7xx, и вы хотите считывать только время (без даты), то в любом случае нужно после функции HAL_RTC_GetTime(. ) вызывать HAL_RTC_GetDate(. ) , в противном случае время не будет обновляться.
Будильник (Alarm) для F103
Будильник сработает через пять секунд после старта.
RTC OUT ⇨ RTC Output on the Tamper pin — во время срабатывания будильника на tamper-пин (РС13) будет подан кратковременный импульс. Можно подключить светодиод и посмотреть. На плате BluePill увидеть что-либо трудно так как импульс очень уж слабенький (я подключал через транзистор).
Output ⇨ Alarm pulse signal on the TAMPER pin — во время срабатывания будильника подаётся импульс. При выборе этого режима появляется пункт с настройкой будильника — Alarm A .
Можно сгенерировать проект, прошить и посмотреть как мигнёт светодиод.
Output ⇨ RTC clock with a frequency divided by 64 on the TAMPER pin — на tamper-пин будет подана частота с часового кварца поделённая на 64. Можно осциллографом проверять точность кварца.
Output ⇨ Second pulse signal on the TAMPER pin — на tamper-пин будет подаваться импульс раз в секунду.
После того как попробуете эти режимы верните всё как на картинке.
Включите прерывание от будильника…
Будильник соединён с линией EXTI17 – RTC Alert event.
Добавьте колбек будильника:
Прошивайте и смотрите результат.
Чтобы посмотреть настройки будильника из программы, нужно вызвать функцию HAL_RTC_GetAlarm() …
Структуру будильника объявим как глобальную:
Для программной установки будильника нужно воспользоваться функцией HAL_RTC_SetAlarm_IT() , она есть в функции инициализации — static void MX_RTC_Init(void) .
Помимо прерывания от будильника, есть ещё прерывание, которое может вызываться раз в секунду.
Включите глобальное прерывание…
Добавьте ещё один колбек:
Перед бесконечным циклом добавьте функцию:
Прошейте и смотрите.
Как использовать этот функционал — например можно сделать так: в колбеке будильника запускаем это прерывание, после чего оно вызовется 10 раз и выключится. В прерывании можно делать что угодно, например подавать импульс на какой-нибудь пин с подключённой пищалкой.
Если установить RTC OUT ⇨ Disable …
… то режимы Output ⇨ RTC clock with a frequency divided by 64 on the TAMPER pin и Output ⇨ Second pulse signal on the TAMPER pin будут работать, а если RTC OUT ⇨ No RTC Output , то на tamper-пин ничего нельзя подать.
Tamper для F103 и F303
В RTC OUT указывайте что хотите. Calendar можно включить, а можно и не включать.
До этого мы использовали tamper-пин для вывода сигнала, а сейчас он будет выполнять обратную функцию.
У F103 есть десять 16-ти битных регистров для хранения пользовательских данных (backup registers). Если подключена батарейка, то данные в этих регистрах не обнуляются ни при нажатии Reset, ни при выходе из спящего режима, ни при отключении основного питания.
Если в эти регистры записать какие-то данные, то их можно будет стереть подав на tamper-пин кратковременный импульс.
В Reference manual предлагается использовать этот функционал в качестве контроля несанкционированного доступа к устройству. Видимо поэтому это назвали Tamper (вмешательство).
Какой именно сигнал послужит триггером, настраивается в пункте Tamper Trigger .
Rising Edge — с LOW на HIGH.
Falling Edge — с HIGH на LOW.
Внутренняя подтяжка такая слабенькая, что срабатывает от прикосновения пальца, поэтому желательно подтянуть пин к «плюсу» резистором (10КОм).
Запишем в первые два регистра данные:
В бесконечном цикле читаем эти данные:
Прошейте эту программу и коротните пин на «землю» — данные обнулятся.
Теперь если нажать Reset, то по идее данные должны будут записаться заново, но этого не случится. Дело в том, что после подачи сигнала запись в эти регистры будет запрещена. Чтобы восстановить возможность записи нужно полностью обесточить плату (батарейку тоже нужно отключить). Так происходит только в режиме Tamper, если его отключить, то эти регистры можно перезаписывать как угодно.
Помимо обнуления регистров этот сигнал может вызывать прерывание…
В программе нужно добавить только колбек:
Если включено прерывание, то при нажатии Reset регистры с данными будут перезаписываться!
Для работы без прерываний можно воспользоваться функцией ожидания сигнала.
Структуру тампера объявляем глобально:
В бесконечном цикле делаем так:
Опять же, при нажатии Reset регистры с данными будут перезаписываться.
У F303 15 пользовательских регистров и три tamper-пина.
Прерывания включаются так…
У каждого пина свой колбек:
Всё остальное как у F103.
Я когда ковырялся с этим функционалом, время от времени возникало ощущение что что-то «глючит» (регистры то записываются, то не записываются, то обнуляются, то не обнуляются), но потом стало понятно что это всего лишь следствие неправильных действий. Это к тому, что нужно проявить терпение и разобраться.
Будильник (Alarm) для F303
У этого микроконтроллера два будильника А и В…
У них есть два варианта настроек:
Internal Alarm — просто будильник, может вызывать прерывание.
Routed to OUT — во время срабатывания будильника можно вызвать прерывание и/или подать кратковременный импульс на пин РС13 .
Сейчас укажите Internal Alarm А .
Настройте всё как на картинке…
Время у нас установлено 10:34:00, а будильник сработает в 10:34:10.
Sub Seconds — это миллисекунды.
Следующие пункты, это различные комбинации настроек времени/даты срабатывания будильника. Например пункт Alarm Mask Date Week day ⇨ Enable говорит о том, что будильник должен срабатывать каждый день.
Если активировать пункт Alarm Mask Minutes ⇨ Enable , то будильник будет срабатывать каждую минуту в течении часа. Срабатывания будут происходить не ровно в минуту, а минута + 10сек.
Если активировать пункт Alarm Mask Seconds ⇨ Enable , то срабатывать будет каждую секунду в течении минуты.
Этих комбинаций достаточно много, поэтому надеюсь что вы разберётесь самостоятельно.
Активируйте прерывание от будильника…
В код добавьте колбек:
У Alarm B свой колбек:
В бесконечном цикле будем выводить инфу:
Чтобы будильник подавал импульс на пин РС13, надо указать Routed to OUT …
В настройках появятся два дополнительных пункта…
Output Polarity — на ножку будет подаваться «плюс».
Output Type — почитайте здесь.
Делайте как на картинке и не забудьте будильник настроить, он сбивается при изменении режима.
Подключите светодиод к пину РС13 и смотрите как он мигнёт во время срабатывания будильника.
WakeUp
WakeUp может выводить МК из спящего режима, вызывать прерывание и подавать сигнал на пин РС13.
WakeUp это простой 16-ти битный (от 0 до 65535) счётчик. Тактирование можно настроить с помощью предделителей часового генератора.
Например если сделать так…
Тогда счётчик будет увеличиваться со скоростью 2048 единиц в секунду и достигнет 10000 примерно через 5 секунд (32.768кГц / 16 = 2048, 10000 / 2048 = 4.88 сек). То есть WakeUp будет срабатывать каждые
Можно не заморачиваться с предделителями, а просто указать 1Hz…
Счётчик будет увеличиваться со скоростью 1 единица в секунду и срабатывать через каждые 5 сек.
Таким образом можно настроить пробуждение МК на достаточно большой интервал. Например если указать 65000, то WakeUp будет срабатывать каждые 18 часов.
Если включено прерывание, то на пин РС13 подаётся кратковременный импульс, а если отключено, то подаётся постоянный сигнал.
И добавьте соответствующий колбек:
Прошивайте и смотрите что получилось.
Посмотреть значение счётчика можно так:
TimeStamp
Прикольная функция. Если на пин РС13 подать внешний импульс, тогда в специальные регистры будут записаны текущие время и дата. Настройка только одна и она ничем не отличается от того, что написано в главе «Tamper для F103 и F303». То есть нужно указать фронт сигнала и подтянуть пин.
В бесконечном цикле сделайте так:
Прошейте МК и коротните РС13 на «землю».
Данные из регистров записываются в структуры времени и даты (чтоб не создавать дополнительные структуры).
Обратите внимание на то, что регистры обнуляются после чтения.
Прерывание то же что и у Tamper…
Calibration
В мануале про этот выход сказано так:
«Выход RTC_CALIB используется для генерации сигнала переменной частоты. В зависимости от пожелания пользователя этот сигнал может играть роль опорной частоты для внешнего устройства или его можно подключить к зуммеру для генерации звука.»
Есть два варианты частоты — 1Гц и 512Гц…
Запускается и останавливается этот сигнал функциями…
Можно помигать или попищать при срабатывании будильника.
Для калибровки часов этот выход нужно подключить к осциллографу и добиваться необходимой частоты двумя способами:
1. Манипулировать предделителями — грубая калибровка.
2. С помощью пропусков (маскировки) или добавления тактов — мягкая калибровка.
Осциллографа у меня нет поэтому я особо в этом не разбирался. За мягкую калибровку отвечает функция HAL_RTCEx_SetSmoothCalib() . Все подробности смотрите в AN3371, глава 1.4, стр. 17.
Reference clock detection — на это пин можно подать опорную частоту (50 Гц) из розетки. Проводить эксперименты я не решился
В мануале есть такая картика…
В статье не описаны некоторые функции — посмотреть их можно в файлах stm32f3xx_hal_rtc.c и stm32f3xx_hal_rtc_ex.c.
На этом всё.
Всем спасибо
Русские Блоги
После просмотра официального демо ST RTC_Tamper
На официальной плате STM32H743I-EVAL2 проверьте и поймите точки знаний, показанные в демонстрации.
Точки знаний, показанные в демонстрации RTC_Tamper, — это чтение и запись в регистр RTC STM32H743 и реакция обнаружения вторжения.
Эти 3 точки знаний очень полезны. Вы можете хранить некоторые конфиденциальные секреты в регистре RTC, и вы не хотите, чтобы за вами шпионили. Когда вы обнаружите, что дело открыто, вы можете взять некоторые Саморазрушающие меры.
Я перестроил проект с CubeMx с нуля, чтобы завершить чтение и запись регистров RTC и реализацию ответа на обнаружение вторжений.
Для этого эксперимента необходимо установить 2 контакта с помощью CubeMx.
Контакт обнаружения вторжения PC13 RTC
Когда я впервые начал эксперимент, я все еще не понимал, почему кнопка PC13 будет вводить ответ обнаружения вторжения.
Позже я хотел понять, что это аппаратная реализация (поскольку PC13 является контактом обнаружения вторжения RTC), пока PC13 обозначен как RTC_TAMP1, нажатие PC13 приведет к прерыванию обнаружения вторжения RTC ответ.
Светодиодный индикатор
Когда программа работает на полной скорости и работает без STLINK, если вы хотите увидеть разницу до и после обнаружения вторжения, вам понадобится хотя бы одна инструкция.
Настройки STM32CubeMX
Настройки прерывания при обнаружении вторжений
Также необходимо выбрать соответствующее прерывание, иначе функция ответа на прерывание при обнаружении вторжения отсутствует.
Псевдоним настройки PIN-кода
PF10 — это светодиод.После установки псевдонима PORT и PIN псевдонима будут автоматически использоваться при инициализации этого вывода в CubeMx, который имеет лучшую ремонтопригодность. Нам не нужно самостоятельно определять макрос псевдонима вывода.
Предварительный просмотр проекта реконструирован с помощью CubeMx
подводить итоги
Инженерная структура, созданная CubeMx, действительно чиста.
Из демонстрационного проекта мы действительно можем увидеть разницу между поставщиками восходящего и нижнего звена.
Производители апстрима продают микросхемы, и они подробно расскажут о функциях и характеристиках микросхем, привлекая пользователей к покупке микросхем для продуктов.
Последующие производители продают платы и решения для разработки, и они с меньшей вероятностью расскажут пользователям подробности. Все они посвящены основам и основным моментам. Предполагается, что энергия и стоимость недопустимы.
Даже на демонстрационных примерах исходных производителей, если вы внимательно следите за пошаговыми инструкциями, вы все равно можете увидеть код отходов.
например, если RTC инициализируется, устанавливаются следующие параметры
Когда происходит обнаружение вторжения, содержимое регистра RTC было очищено оборудованием, и нет необходимости явно вызывать HAL_RTCEx_DeactivateTamper ()
Tamper rtc что это
- />15 часов назад
- Тема:А можно ли как-то найти тему, где участвовали дв…
- От:iiv
- />15 часов назад
- Тема:А можно ли как-то найти тему, где участвовали дв…
- От:iiv
—>
Другие известные форумы и сайты по электронике
все что посвящено электронике и общению специалистов. реклама других ресурсов.
- Магазины
- Форумы и конференции
- Производители
- Информационные ресурсы
- Поисковики
- FTP-серверы
- />Четверг в 07:49
- Тема:Производитель встраиваемых систем Forlinx
- От:geliang
- />Четверг в 07:49
- Тема:Производитель встраиваемых систем Forlinx
- От:geliang
—>
В помощь начинающему
вопросы начального уровня
Модераторы раздела VAI aosp SergM fill vetal KRS Alexandr des00 Uladzimir Rst7 iosifk ViKo Herz l1l1l1 Tanya Сергей Борщ Omen_13 Vasily_ Егоров Walrus
- ARM, 32bit
- MCS51, AVR, PIC, STM8, 8bit
- Программирование
- Схемотехника
- Интерфейсы
- />15 часов назад
- Тема:Зажигание светодиода при помощи кнопки
- От:Michael58
- />15 часов назад
- Тема:Зажигание светодиода при помощи кнопки
- От:Michael58
—>
International Forum
This is a special forum for English spoken people, read it first.
- />23 июня
- От:OwlSurf
- />23 июня
- От:OwlSurf
—>
Образование в области электроники
все что касается образования, процесса обучения, студентам, преподавателям.
Модераторы раздела des00
- />26 сентября
- Тема:Создание профессиональной ассоциации по микроэле…
- От:byRAM
- />26 сентября
- Тема:Создание профессиональной ассоциации по микроэле…
- От:byRAM
—>
Обучающие видео-материалы и обмен опытом
Обсуждение вопросов создания видео-материалов
Модераторы раздела iosifk
- />29 августа
- Тема:Интеграция CADLib Модель и Архив с Artlantis
- От:Paola Shar
- />29 августа
- Тема:Интеграция CADLib Модель и Архив с Artlantis
- От:Paola Shar
Cистемный уровень проектирования
- Последнее сообщение
—>
Вопросы системного уровня проектирования
Применение MATLAB, Simulink, CoCentric, SPW, SystemC ESL, SoC
Модераторы раздела Rst7
- />25 сентября
- Тема:Labview VISA UART — периодически раз в несколько…
- От:vov4ick
- />25 сентября
- Тема:Labview VISA UART — периодически раз в несколько…
- От:vov4ick
—>
Математика и Физика
Модераторы раздела Rst7
- />Среда в 18:51
- Тема:Вопрос про ТАУ и про ПИД- регулятор
- От:Sverchok
- />Среда в 18:51
- Тема:Вопрос про ТАУ и про ПИД- регулятор
- От:Sverchok
—>
Операционные системы
Linux, Win, DOS, QNX, uCOS, eCOS, RTEMS и другие
Модераторы раздела Rst7
- Программирование
- Linux
- uC/OS-II
- scmRTOS
- FreeRTOS
- Android
- />8 часов назад
- Тема:Видеокамера + tvp5150
- От:Tarbal
- />8 часов назад
- Тема:Видеокамера + tvp5150
- От:Tarbal
—>
Документация
оформление документации и все что с ней связано
Модераторы раздела Rst7
- />Суббота в 11:53
- Тема:UniCAN
- От:OPTIMA
- />Суббота в 11:53
- Тема:UniCAN
- От:OPTIMA
—>
Системы CAD/CAM/CAE/PLM
обсуждение САПР AutoCAD, Компас, SolidWorks и др.
- />4 августа
- Тема:Итоги Практической конференции 4.0 «Опыт цифрово…
- От:Maxim_S
- />4 августа
- Тема:Итоги Практической конференции 4.0 «Опыт цифрово…
- От:Maxim_S
—>
Разработка цифровых, аналоговых, аналого-цифровых ИС
Модераторы раздела Rst7
- />8 сентября
- Тема:Прошу помочь найти кандидата или доктора наук, в…
- От:K0nstantin
- />8 сентября
- Тема:Прошу помочь найти кандидата или доктора наук, в…
- От:K0nstantin
—>
Электробезопасность и ЭМС
Обсуждение вопросов электробезопасности и целостности сигналов
Модераторы раздела Rst7
- ЭМС
- Электробезопасность
- />12 часов назад
- Тема:Разъем авиационный
- От:selax
- />12 часов назад
- Тема:Разъем авиационный
- От:selax
—>
Управление проектами
Управление жизненным циклом проектов, системы контроля версий и т.п.
Модераторы раздела Rst7
- />17 марта
- Тема:Не проходит авторизацию при push после смены пра…
- От:KARLSON
- />17 марта
- Тема:Не проходит авторизацию при push после смены пра…
- От:KARLSON
—>
Нейронные сети и машинное обучение (NN/ML)
Форум для обсуждения вопросов машинного обучения и нейронных сетей
Модераторы раздела Rst7
- />6 сентября
- Тема:Написание комментария с помощью нейронной сети, …
- От:tgruzd
- />6 сентября
- Тема:Написание комментария с помощью нейронной сети, …
- От:tgruzd
Программируемая логика ПЛИС (FPGA,CPLD, PLD)
- Последнее сообщение
—>
Среды разработки — обсуждаем САПРы
Quartus, MAX, Foundation, ISE, DXP, ActiveHDL и прочие.
возможности, удобства.
Модераторы раздела vetal />des00 />
- />Суббота в 21:16
- Тема:Quartus Pro v22.3 новости
- От:RobFPGA
- />Суббота в 21:16
- Тема:Quartus Pro v22.3 новости
- От:RobFPGA
—>
Работаем с ПЛИС, области применения, выбор
на чем сделать? почему не работает? кто подскажет?
Модераторы раздела vetal />des00 />
- />17 часов назад
- Тема:Китайские ПЛИС
- От:makc
- />17 часов назад
- Тема:Китайские ПЛИС
- От:makc
—>
Языки проектирования на ПЛИС (FPGA)
Verilog, VHDL, AHDL, SystemC, SystemVerilog и др.
Модераторы раздела aosp vetal des00
- />Суббота в 10:00
- Тема:Работа с case
- От:Александр77
- />Суббота в 10:00
- Тема:Работа с case
- От:Александр77
—>
Системы на ПЛИС — System on a Programmable Chip (SoPC)
разработка встраиваемых процессоров и периферии для ПЛИС
Модераторы раздела vetal des00 Omen_13
- />Четверг в 07:12
- Тема:Помогите разобраться с genlock — Clocked video o…
- От:mils
- />Четверг в 07:12
- Тема:Помогите разобраться с genlock — Clocked video o…
- От:mils
Цифровая обработка сигналов — ЦОС (DSP)
- Последнее сообщение
—>
Сигнальные процессоры и их программирование — DSP
Обсуждение различных сигнальных (DSP) процессоров, возможностей, совместимости и связанных с этим тем.
Модераторы раздела des00
- />Четверг в 15:08
- Тема:Собираю информацию по доступным DSP процессорам
- От:byRAM
- />Четверг в 15:08
- Тема:Собираю информацию по доступным DSP процессорам
- От:byRAM
—>
Алгоритмы ЦОС (DSP)
Обсуждение вопросов разработки и применения (программирования) алгоритмов цифровой обработки сигналов.
Модераторы раздела des00
- />43 минуты назад
- Тема:Корректирующий равновесный код 4B12B с синхрониз…
- От:vitaly_n
- />43 минуты назад
- Тема:Корректирующий равновесный код 4B12B с синхрониз…
- От:vitaly_n
Микроконтроллеры (MCs)
- Последнее сообщение
—>
Cредства разработки для МК
FAQ, How-to, тонкости работы со средствами разработки
- IAR
- Keil
- GNU/OpenSource средства разработки
- />Среда в 18:18
- Тема:C-SPY — сохранение данных в файл
- От:k155la3
- />Среда в 18:18
- Тема:C-SPY — сохранение данных в файл
- От:k155la3
—>
- STM
- NXP
- Microchip (Atmel)
- TI, Allwinner, Nordic Semiconductor, Espressif Systems и другие
- />29 минут назад
- Тема:GD32F407 и SWO
- От:uriy
- />29 минут назад
- Тема:GD32F407 и SWO
- От:uriy
—>
- />12 часов назад
- Тема:Switch и вызов функции генератора на Т0 проблема
- От:rockdomenik1105
- />12 часов назад
- Тема:Switch и вызов функции генератора на Т0 проблема
- От:rockdomenik1105
—>
MSP430
Модераторы раздела VAI
- />21 апреля
- Тема:MSP430F5172 XT1
- От:k155la3
- />21 апреля
- Тема:MSP430F5172 XT1
- От:k155la3
—>
Все остальные микроконтроллеры
и все что с ними связано
- PIC
- MCS51
- PowerQUICC
- HC(S)08
- AVR32
- STM8
- MIPS
- />7 октября
- Тема:pic32MZ crt0
- От:another_one
- />7 октября
- Тема:pic32MZ crt0
- От:another_one
—>
Отладочные платы
Вопросы, связанные с отладочными платами на базе МК: заказ, сборка, запуск
- Arduino
- Raspberry Pi
- Rainbow
- Siberia
- EVMxxxx
- />19 минут назад
- Тема:Ищется замена модулю DART-MX6
- От:mantech
- />19 минут назад
- Тема:Ищется замена модулю DART-MX6
- От:mantech
Печатные платы (PCB)
- Последнее сообщение
—>
Разрабатываем ПП в САПР — PCB development
FAQ, вопросы проектирования в ORCAD, PCAD, Protel, Allegro, Spectra, DXP, SDD, WG и др.
Модераторы раздела SergM />fill />
- Библиотеки компонентов
- Altium Designer, DXP, Protel
- P-CAD 200x howto
- Эремекс, Delta Design
- Cadence
- Примеры
- Zuken CADSTAR
- Siemens EDA — Xpedition, PADS (ex. Mentor)
- Бесплатные САПР: KiCAD, EasyEDA, EAGLE и др.
- />11 часов назад
- Тема:Варианты конструкций ПП 3мм с м/с 0,2/0,2 и терм…
- От:makc
- />11 часов назад
- Тема:Варианты конструкций ПП 3мм с м/с 0,2/0,2 и терм…
- От:makc
—>
Работаем с трассировкой
тонкости PCB дизайна, от Spectra и далее.
Модераторы раздела fill
- />3 октября
- Тема:Вопрос по трассировке на плате высокочастотных у…
- От:artemkad
- />3 октября
- Тема:Вопрос по трассировке на плате высокочастотных у…
- От:artemkad
—>
Изготовление ПП — PCB manufacturing
Фирмы, занимающиеся изготовлением, качество, цены, сроки
Модераторы раздела fill
- ПСБ Технолоджи
- ТеПро
- PS-Electro
- Резонит
- PCB Professional
- Абрис
- ОАО "НИЦЭВТ"
- ООО "М-Плата"
- в домашних условиях
- />4 октября
- Тема:"левая" проводимость на печатной плате 30-60 Ом
- От:Vasil_Riabko
- />4 октября
- Тема:"левая" проводимость на печатной плате 30-60 Ом
- От:Vasil_Riabko
Сборка РЭУ
- Последнее сообщение
—>
Пайка и монтаж
вопросы сборки ПП, готовых изделий, а также устранения производственных дефектов
- />Среда в 07:21
- Тема:Посоветуйте точный(!) ручной трафаретный принтер
- От:mrKirill
- />Среда в 07:21
- Тема:Посоветуйте точный(!) ручной трафаретный принтер
- От:mrKirill
—>
Корпуса
обсуждаем какие есть копруса, где делать и прочее
- />5 октября
- Тема:Покрытие фрезерованного стеклотекстолита
- От:wim
- />5 октября
- Тема:Покрытие фрезерованного стеклотекстолита
- От:wim
—>
Вопросы надежности и испытаний
расчеты, методики, подбор компонентов
- />22 августа
- Тема:Полнота и достоверность информации при расчёте э…
- От:В. Алёна
- />22 августа
- Тема:Полнота и достоверность информации при расчёте э…
- От:В. Алёна
Аналоговая и цифровая техника, прикладная электроника
- Последнее сообщение
—>
Вопросы аналоговой техники
разработка аналоговых схем, моделирование схем в SPICE, расчёты и анализ, выбор элементной базы
Модераторы раздела Alexandr ViKo Tanya Егоров
- />Пятница в 22:04
- Тема:CCD АЦП AD9945 — что ему надо?
- От:alexPec
- />Пятница в 22:04
- Тема:CCD АЦП AD9945 — что ему надо?
- От:alexPec
—>
Цифровые схемы, высокоскоростные ЦС
High Speed Digital Design
- />Суббота в 12:59
- Тема:ADIsimCLK
- От:Самурай
- />Суббота в 12:59
- Тема:ADIsimCLK
- От:Самурай
—>
RF & Microwave Design
wireless технологии и не только
Модераторы раздела l1l1l1
- />19 минут назад
- Тема:Синтезаторы частот. От концепции к продукту.
- От:byRAM
- />19 минут назад
- Тема:Синтезаторы частот. От концепции к продукту.
- От:byRAM
—>
Метрология, датчики, измерительная техника
Все что связано с измерениями: измерительные приборы (осциллографы, анализаторы спектра и пр.), датчики, обработка результатов измерений, калибровка, технологии измерений и др.
Модераторы раздела ViKo />Tanya />
- />Четверг в 16:41
- Тема:Изготовление штрихового диска для энкодера
- От:Vladimir_T
- />Четверг в 16:41
- Тема:Изготовление штрихового диска для энкодера
- От:Vladimir_T
—>
АВТО электроника
особенности электроники любых транспортных средств: автомашин и мотоциклов, поездов, судов и самолетов, космических кораблей и летающих тарелок.
Модераторы раздела Vasily_
- />12 часов назад
- Тема:CVR-M2G, модуль GPS для видеорегистраторов
- От:Abhram
- />12 часов назад
- Тема:CVR-M2G, модуль GPS для видеорегистраторов
- От:Abhram
—>
Умный дом
- />4 октября
- Тема:Умный дом: эффективность или роскошь.
- От:mantech
- />4 октября
- Тема:Умный дом: эффективность или роскошь.
- От:mantech
—>
3D печать
3D принтеры, наборы, аксессуары, ПО
- />29 июля
- Тема:Кто- нибудь пробовал Klipper ?
- От:muravei
- />29 июля
- Тема:Кто- нибудь пробовал Klipper ?
- От:muravei
—>
Робототехника
Модели, классификация, решения, научные исследования, варианты применения
- />31 марта
- Тема:Подключение дисплея 3.2inch 320×240 Touch LCD (А…
- От:Aaronli
- />31 марта
- Тема:Подключение дисплея 3.2inch 320×240 Touch LCD (А…
- От:Aaronli
—>
Ремонт и отладка
обсуждение вопросов ремонта и отладки различных устройств и готовых изделий
Модераторы раздела Herz
- />1 октября
- Тема:Sim bank — ремонт
- От:Лика
- />1 октября
- Тема:Sim bank — ремонт
- От:Лика
Силовая электроника — Power Electronics
- Последнее сообщение
—>
Силовая Преобразовательная Техника
Источники питания электронной аппаратуры, импульсные и линейные регуляторы. Топологии AC-DC, DC-DC преобразователей (Forward, Flyback, Buck, Boost, Push-Pull, SEPIC, Cuk, Full-Bridge, Half-Bridge). Драйвера ключевых элементов, динамика, алгоритмы управления, защита. Синхронное выпрямление, коррекция коэффициента мощности (PFC)
Модераторы раздела Herz />Егоров />
- />8 октября
- Тема:нужен силовой умный ключ на замену (TPS1H100)
- От:_gari
- />8 октября
- Тема:нужен силовой умный ключ на замену (TPS1H100)
- От:_gari
—>
Обратная Связь, Стабилизация, Регулирование, Компенсация
Организация обратных связей в цепях регулирования, выбор топологии, обеспечение стабильности, схемотехника, расчёт
Модераторы раздела Herz />Егоров />
- />17 сентября
- Тема:Ограничение скорости нарастания сигнала ШИМ на д…
- От:Alex-lab
- />17 сентября
- Тема:Ограничение скорости нарастания сигнала ШИМ на д…
- От:Alex-lab
—>
Первичные и Вторичные Химические Источники Питания
Li-ion, Li-pol, литиевые, Ni-MH, Ni-Cd, свинцово-кислотные аккумуляторы. Солевые, щелочные (алкалиновые), литиевые первичные элементы. Применение, зарядные устройства, методы и алгоритмы заряда, условия эксплуатации. Системы бесперебойного и резервного питания
Модераторы раздела Herz />Егоров />
- />31 августа
- Тема:подскажите простой способ сделать зарядку двух L…
- От:dlsh
- />31 августа
- Тема:подскажите простой способ сделать зарядку двух L…
- От:dlsh
—>
Высоковольтные Устройства — High-Voltage
Высоковольтные выпрямители, умножители напряжения, делители напряжения, высоковольтная развязка, изоляция, электрическая прочность. Высоковольтная наносекундная импульсная техника
Модераторы раздела Herz
- />19 сентября
- Тема:Защита и регулировка входа осциллографа от высок…
- От:byRAM
- />19 сентября
- Тема:Защита и регулировка входа осциллографа от высок…
- От:byRAM
—>
Электрические машины, Электропривод и Управление
Электропривод постоянного тока, асинхронный электропривод, шаговый электропривод, сервопривод. Синхронные, асинхронные, вентильные электродвигатели, генераторы
Модераторы раздела Herz
- />13 сентября
- Тема:запуск бесколлекторного трехфазного двигателя
- От:Андрей Назаренко
- />13 сентября
- Тема:запуск бесколлекторного трехфазного двигателя
- От:Андрей Назаренко
—>
Индукционный Нагрев — Induction Heating
Технологии, теория и практика индукционного нагрева
Модераторы раздела Herz
- />8 сентября
- Тема:Отопление с помощью индукционного нагрева
- От:Baza
- />8 сентября
- Тема:Отопление с помощью индукционного нагрева
- От:Baza
—>
Системы Охлаждения, Тепловой Расчет – Cooling Systems
Охлаждение компонентов, систем, корпусов, расчёт параметров охладителей
Модераторы раздела Herz
- />1 июня
- Тема:Сравнение экспериментальных данных с расчетом
- От:ZodiaC
- />1 июня
- Тема:Сравнение экспериментальных данных с расчетом
- От:ZodiaC
—>
Моделирование и Анализ Силовых Устройств – Power Supply Simulation
Моделирование силовых устройств в популярных САПР, самостоятельных симуляторах и специализированных программах. Анализ устойчивости источников питания, непрерывные модели устройств, модели компонентов
Модераторы раздела Herz />Егоров />
- />Пятница в 12:11
- Тема:Micro-Cap стал бесплатным
- От:Politeh
- />Пятница в 12:11
- Тема:Micro-Cap стал бесплатным
- От:Politeh
—>
Компоненты Силовой Электроники — Parts for Power Supply Design
Силовые полупроводниковые приборы (MOSFET, BJT, IGBT, SCR, GTO, диоды). Силовые трансформаторы, дроссели, фильтры (проектирование, экранирование, изготовление), конденсаторы, разъемы, электромеханические изделия, датчики, микросхемы для ИП. Электротехнические и изоляционные материалы.
Модераторы раздела Herz />Егоров />
- />25 сентября
- Тема:Соединители для очень больших токов
- От:byRAM
- />25 сентября
- Тема:Соединители для очень больших токов
- От:byRAM
Интерфейсы
- Последнее сообщение
—>
Форумы по интерфейсам
все интерфейсы здесь
- ISDN/G.703/E1
- ISA/PCI/PCI-X/PCI Express
- Wireless/Optic
- RS232/LPT/USB/PCMCIA/FireWire
- Fast Ethernet/Gigabit Ethernet/FibreChannel
- Интерфейсы для "интеллектуального дома"
- от ТТЛ до LVDS здесь
- IDE/ATA/SATA/SAS/SCSI/CF
- Аудио/Видео интерфейсы
- Сотовая связь и ее приложения
- FAQ по XPort/WiPort
- Controller Area Network (CAN)
- />Пятница в 13:13
- Тема:Объединение сетей RS485 с одинаковыми адресными …
- От:smart_pic
- />Пятница в 13:13
- Тема:Объединение сетей RS485 с одинаковыми адресными …
- От:smart_pic
Поставщики компонентов для электроники
- Последнее сообщение
—>
Поставщики всего остального
от транзисторов до проводов
- />Вторник в 12:39
- Тема:Чип и Дип меняет цены, переобуваясь в полёте.
- От:baumanets
- />Вторник в 12:39
- Тема:Чип и Дип меняет цены, переобуваясь в полёте.
- От:baumanets
—>
Компоненты
Закачка тех. документации, обмен опытом, прочие вопросы.
- Тех. документация
- Микросхемы
- Транзисторы
- Диоды
- Резисторы
- Средства индикации
- />Суббота в 08:41
- Тема:Вилки SAM и AVR программаторов Atmel-ICE и Power…
- От:Ivanii
- />Суббота в 08:41
- Тема:Вилки SAM и AVR программаторов Atmel-ICE и Power…
- От:Ivanii
Майнеры криптовалют и их разработка, BitCoin, LightCoin, Dash, Zcash, Эфир
- Последнее сообщение
—>
Обсуждение Майнеров, их поставки и производства
наблюдается очень большой спрос на данные устройства.
- />16 июля, 2021
- Тема:Материнские платы для майнинга
- От:Doka
- />16 июля, 2021
- Тема:Материнские платы для майнинга
- От:Doka
Дополнительные разделы — Additional sections
- Последнее сообщение
—>
Встречи и поздравления
Предложения встретиться, поздравления участников форума и обсуждение мест и поводов для встреч.
Модераторы раздела VAI aosp SergM vetal KRS Alexandr des00 Uladzimir Rst7 iosifk ViKo Herz l1l1l1 Tanya Сергей Борщ Omen_13 Vasily_ Егоров Walrus
- />14 декабря, 2021
- Тема:С Праздником !
- От:makc
- />14 декабря, 2021
- Тема:С Праздником !
- От:makc
—>
Ищу работу
ищу работу, выполню заказ, нужны клиенты — все это сюда
Модераторы раздела VAI aosp SergM vetal KRS Alexandr des00 Uladzimir Rst7 iosifk ViKo Herz l1l1l1 Tanya Сергей Борщ Omen_13 Vasily_ Егоров Walrus
- />Четверг в 03:39
- Тема:Радиомонтажник на дому Москва (М) Фонвизинская
- От:shakov
- />Четверг в 03:39
- Тема:Радиомонтажник на дому Москва (М) Фонвизинская
- От:shakov
—>
Предлагаю работу
нужен постоянный работник, разовое предложение, совместные проекты, кто возьмется за работу, нужно сделать.
Модераторы раздела VAI aosp SergM vetal KRS Alexandr des00 Uladzimir Rst7 iosifk ViKo Herz l1l1l1 Tanya Сергей Борщ Omen_13 Vasily_ Егоров Walrus
- />Четверг в 11:58
- Тема:Написать прошивку для микроконтроллера
- От:borodach
- />Четверг в 11:58
- Тема:Написать прошивку для микроконтроллера
- От:borodach
—>
Куплю
микросхему; устройство; то, что предложишь ты 🙂
Модераторы раздела VAI aosp SergM vetal KRS Alexandr des00 Uladzimir Rst7 iosifk ViKo Herz l1l1l1 Tanya Сергей Борщ Omen_13 Vasily_ Егоров Walrus
- />Пятница в 02:31
- Тема:LT6231CS8#PBF 10шт
- От:leozhang123
- />Пятница в 02:31
- Тема:LT6231CS8#PBF 10шт
- От:leozhang123
—>
Продам
есть что продать за деньги, пиво, даром ?
Реклама товаров и сайтов также здесь.
Модераторы раздела VAI aosp SergM vetal KRS Alexandr des00 Uladzimir Rst7 iosifk ViKo Herz l1l1l1 Tanya Сергей Борщ Omen_13 Vasily_ Егоров Walrus
- />Суббота в 18:10
- Тема:Продам осцилограф Rigol DS6102
- От:SonicTel
- />Суббота в 18:10
- Тема:Продам осцилограф Rigol DS6102
- От:SonicTel
—>
Объявления пользователей
Тренинги, семинары, анонсы и прочие события
Модераторы раздела VAI aosp SergM vetal KRS Alexandr des00 Uladzimir Rst7 iosifk ViKo Herz l1l1l1 Tanya Сергей Борщ Omen_13 Vasily_ Егоров Walrus
- />Пятница в 08:54
- Тема:Литиевые батарейки FANSO EVE Energy для автомоби…
- От:КОМПЭЛ
- />Пятница в 08:54
- Тема:Литиевые батарейки FANSO EVE Energy для автомоби…
- От:КОМПЭЛ
—>
Общение заказчиков и потребителей электронных разработок
Обсуждение проектов, исполнителей и конкурсов
Модераторы раздела VAI aosp SergM vetal KRS Alexandr des00 Uladzimir Rst7 iosifk ViKo Herz l1l1l1 Tanya Сергей Борщ Omen_13 Vasily_ Егоров Walrus
- />9 октября
- Тема:Закупщики электронных компонентов
- От:byRAM
- />9 октября
- Тема:Закупщики электронных компонентов
- От:byRAM