Миландр

Ключевым подразделением нашей компании
является Центр Проектирования интегральных микросхем
Текущее время: 2022-янв-28 10:44

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 7 сообщений ] 
Автор Сообщение
 Заголовок сообщения: [К1986ВК025] Настройка SysTick
СообщениеДобавлено: 2022-янв-14 21:26 
Не в сети
Аватара пользователя

Зарегистрирован: 2021-дек-09 19:02
Сообщения: 7
Организация: Incotex Electronics Group
Доброго времени суток! Столкнулся с неопределённостью при настройке machine timer interrupt.
Исходя из документации понял, что существует 2 регистра таймера "Значения 0x02004000" и "Сравнения 0x0200BFF8".
Для того, чтобы сгенерировалось прерывание по таймеру необходимо, чтобы значение по адресу 0x02004000 стало строго больше чем по адресу 0x0200BFF8. Здесь всё более менее прозрачно.
Далее разобрался, что необходимо обязательно проинициализировать LSE, чтобы заработал обработчик прерывания, иначе таймер не инкриментируется. Однако в спецификации указано, что SysTick может работать, как от LSE, так и от HCLK с заданным делителем, но только начиная со второй ревизии микроконтроллера.
Как мне узнать ревизию микроконтроллера?
Как переключать источник тактирования?
Как задавать значение делителя, если нигде не указан адрес регистра DIV_SYS_TIM?

Теперь главное. Я использую LSE. LSE на 32 кГц стандартный на отладочной плате. Если я в обработчике прерывания инкрементирую значение регистра сравнения на 32768, то обработчик прерывания вызывается 2 раза в секунду, а не 1 раз. В том же проекте я успешно настроил и использую модуль RTC, который тактируется так же от LSE. При этом часы идут с нормальной скоростью. Что я делаю не так при настройке SysTick? Или системный таймер инкрементируется по обоим фронтам LSE и надо инкрементировать регистр сравнения на 65535?


Вернуться к началу
 Заголовок сообщения: Re: [К1986ВК025] Настройка SysTick
СообщениеДобавлено: 2022-янв-17 13:03 
В сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 679
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
Открыть обращение пользователя theARTof1337
theARTof1337 писал(а): *
Доброго времени суток! Столкнулся с неопределённостью при настройке machine timer interrupt.
Исходя из документации понял, что существует 2 регистра таймера "Значения 0x02004000" и "Сравнения 0x0200BFF8".
Для того, чтобы сгенерировалось прерывание по таймеру необходимо, чтобы значение по адресу 0x02004000 стало строго больше чем по адресу 0x0200BFF8. Здесь всё более менее прозрачно.
Далее разобрался, что необходимо обязательно проинициализировать LSE, чтобы заработал обработчик прерывания, иначе таймер не инкриментируется. Однако в спецификации указано, что SysTick может работать, как от LSE, так и от HCLK с заданным делителем, но только начиная со второй ревизии микроконтроллера.
Как мне узнать ревизию микроконтроллера?
Как переключать источник тактирования?
Как задавать значение делителя, если нигде не указан адрес регистра DIV_SYS_TIM?

Теперь главное. Я использую LSE. LSE на 32 кГц стандартный на отладочной плате. Если я в обработчике прерывания инкрементирую значение регистра сравнения на 32768, то обработчик прерывания вызывается 2 раза в секунду, а не 1 раз. В том же проекте я успешно настроил и использую модуль RTC, который тактируется так же от LSE. При этом часы идут с нормальной скоростью. Что я делаю не так при настройке SysTick? Или системный таймер инкрементируется по обоим фронтам LSE и надо инкрементировать регистр сравнения на 65535?
Закрыть
Здравствуйте!

Предметные ответы по Вашему запросу:
theARTof1337 писал(а):
Для того, чтобы сгенерировалось прерывание по таймеру необходимо, чтобы значение по адресу 0x02004000 стало строго больше чем по адресу 0x0200BFF8. Здесь всё более менее прозрачно.
Это действительно так, по факту совпадения значения счётчика со значением сравнения выставляется запрос прерывания от счётчика SysTick. Запрос удерживается, пока значение счёта больше значения сравнения.
theARTof1337 писал(а):
Далее разобрался, что необходимо обязательно проинициализировать LSE, чтобы заработал обработчик прерывания, иначе таймер не инкриментируется. Однако в спецификации указано, что SysTick может работать, как от LSE, так и от HCLK с заданным делителем, но только начиная со второй ревизии микроконтроллера.
Дело в том, что в первой ревизии микроконтроллера К1986ВК025, счётчик SysTick вел счёт на частоте LSE (с примечанием, описанным далее по посту), то есть пока LSE выключен, счётчик в регистре MDR_CLINT_TIMER (значение по адресу 0x0200BFF8 - название же объявлено в файле MLDR187_it.h файлов поддержки) блока CLINT не считает. Во второй ревизии источником тактирования для таймера SysTick стала частота HCLK с делителем, настраиваемым в регистре DIV_SYS_TIM блока контроллера тактовых частот (адрес 0x40020030), при этом важно отметить, что как такового выбора источника тактирования во второй ревизии уже нет, частота счёта SysTick теперь жестко привязана к частоте HCLK с настраиваемым делителем. Переход сделан для удобства тестирования.
theARTof1337 писал(а):
Как мне узнать ревизию микроконтроллера?
Если Вы наблюдаете, что счётчик SysTick не ведет счёт при отключенном генераторе LSE, то у Вас первая ревизия. Во второй ревизии, даже если LSE будет отключен, счётчик SysTick будет работать. Тем не менее, процедура проверки ревизии стандартная: необходимо взглянуть на крышку корпуса и зафиксировать четыре цифры (это дата выпуска микросхемы в формате ГГНН), после чего обратиться к документу errata, который содержит список наличия/отсутствия ошибок в работе микросхемы в рамках всех выпускаемых ревизий. Имеется лишь одно замечание, что в текущей версии errata присутствует только одна первая ревизия микросхемы, в самое ближайшее время документ errata будет обновлен, проходит внутреннее тестирование программных исправлений.
theARTof1337 писал(а):
Как переключать источник тактирования?
Как сообщалось выше, во второй ревизии микроконтроллера К1986ВК025 счёт SysTick будет жестко привязан к частоте HCLK без возможности её изменения на LSE.
theARTof1337 писал(а):
Как задавать значение делителя, если нигде не указан адрес регистра DIV_SYS_TIM?
Обратите, пожалуйста, внимание, что выше в посте было указано, что регистр DIV_SYS_TIM находится в контроллере тактовых частот с адресом 0x40020030. Смещение 0x30 для данного регистра регламентировано в актуальной версии спецификации на микроконтроллер К1986ВК025 (ТСКЯ.431296.023СП Версия 0.7.0 от 23.12.2021 - подраздел 16.6 "Описание регистров блока контроллера тактовой частоты", стр. 120).
theARTof1337 писал(а):
Теперь главное. Я использую LSE. LSE на 32 кГц стандартный на отладочной плате. Если я в обработчике прерывания инкрементирую значение регистра сравнения на 32768, то обработчик прерывания вызывается 2 раза в секунду, а не 1 раз. В том же проекте я успешно настроил и использую модуль RTC, который тактируется так же от LSE. При этом часы идут с нормальной скоростью. Что я делаю не так при настройке SysTick? Или системный таймер инкрементируется по обоим фронтам LSE и надо инкрементировать регистр сравнения на 65535?
Вы делаете всё абсолютно правильно, просто счётчик SysTick действительно инкрементируется по обоим фронтам LSE, соответственно, для генерации прерывания раз в секунду на первой ревизии микроконтроллера необходимо при номинальной частоте 32768 Гц от LSE выставить значение для сравнения в два раза выше. Информация о данном механизме будет добавлена в спецификацию. При этом в рамках тестирования второй ревизии К1986ВК025 подтвердили, что счётчик SysTick инкрементируется строго по переднему фронту частоты HCLK с учётом делителя.

_________________
Отдел технической поддержки support@milandr.ru

Информационный портал отдела технической поддержки support.milandr.ru


Вернуться к началу
 Заголовок сообщения: Re: [К1986ВК025] Настройка SysTick
СообщениеДобавлено: 2022-янв-17 13:18 
Не в сети
Аватара пользователя

Зарегистрирован: 2021-дек-09 19:02
Сообщения: 7
Организация: Incotex Electronics Group
Огромное спасибо за содержательный ответ!


Вернуться к началу
 Заголовок сообщения: Re: [К1986ВК025] Настройка SysTick
СообщениеДобавлено: 2022-янв-17 13:39 
Не в сети
Аватара пользователя

Зарегистрирован: 2021-дек-09 19:02
Сообщения: 7
Организация: Incotex Electronics Group
Открыть ответ пользователя Lampadov
Lampadov писал(а): *
Открыть обращение пользователя theARTof1337
theARTof1337 писал(а): *
Доброго времени суток! Столкнулся с неопределённостью при настройке machine timer interrupt.
Исходя из документации понял, что существует 2 регистра таймера "Значения 0x02004000" и "Сравнения 0x0200BFF8".
Для того, чтобы сгенерировалось прерывание по таймеру необходимо, чтобы значение по адресу 0x02004000 стало строго больше чем по адресу 0x0200BFF8. Здесь всё более менее прозрачно.
Далее разобрался, что необходимо обязательно проинициализировать LSE, чтобы заработал обработчик прерывания, иначе таймер не инкриментируется. Однако в спецификации указано, что SysTick может работать, как от LSE, так и от HCLK с заданным делителем, но только начиная со второй ревизии микроконтроллера.
Как мне узнать ревизию микроконтроллера?
Как переключать источник тактирования?
Как задавать значение делителя, если нигде не указан адрес регистра DIV_SYS_TIM?

Теперь главное. Я использую LSE. LSE на 32 кГц стандартный на отладочной плате. Если я в обработчике прерывания инкрементирую значение регистра сравнения на 32768, то обработчик прерывания вызывается 2 раза в секунду, а не 1 раз. В том же проекте я успешно настроил и использую модуль RTC, который тактируется так же от LSE. При этом часы идут с нормальной скоростью. Что я делаю не так при настройке SysTick? Или системный таймер инкрементируется по обоим фронтам LSE и надо инкрементировать регистр сравнения на 65535?
Закрыть
Здравствуйте!

Предметные ответы по Вашему запросу:
theARTof1337 писал(а):
Для того, чтобы сгенерировалось прерывание по таймеру необходимо, чтобы значение по адресу 0x02004000 стало строго больше чем по адресу 0x0200BFF8. Здесь всё более менее прозрачно.
Это действительно так, по факту совпадения значения счётчика со значением сравнения выставляется запрос прерывания от счётчика SysTick. Запрос удерживается, пока значение счёта больше значения сравнения.
theARTof1337 писал(а):
Далее разобрался, что необходимо обязательно проинициализировать LSE, чтобы заработал обработчик прерывания, иначе таймер не инкриментируется. Однако в спецификации указано, что SysTick может работать, как от LSE, так и от HCLK с заданным делителем, но только начиная со второй ревизии микроконтроллера.
Дело в том, что в первой ревизии микроконтроллера К1986ВК025, счётчик SysTick вел счёт на частоте LSE (с примечанием, описанным далее по посту), то есть пока LSE выключен, счётчик в регистре MDR_CLINT_TIMER (значение по адресу 0x0200BFF8 - название же объявлено в файле MLDR187_it.h файлов поддержки) блока CLINT не считает. Во второй ревизии источником тактирования для таймера SysTick стала частота HCLK с делителем, настраиваемым в регистре DIV_SYS_TIM блока контроллера тактовых частот (адрес 0x40020030), при этом важно отметить, что как такового выбора источника тактирования во второй ревизии уже нет, частота счёта SysTick теперь жестко привязана к частоте HCLK с настраиваемым делителем. Переход сделан для удобства тестирования.
theARTof1337 писал(а):
Как мне узнать ревизию микроконтроллера?
Если Вы наблюдаете, что счётчик SysTick не ведет счёт при отключенном генераторе LSE, то у Вас первая ревизия. Во второй ревизии, даже если LSE будет отключен, счётчик SysTick будет работать. Тем не менее, процедура проверки ревизии стандартная: необходимо взглянуть на крышку корпуса и зафиксировать четыре цифры (это дата выпуска микросхемы в формате ГГНН), после чего обратиться к документу errata, который содержит список наличия/отсутствия ошибок в работе микросхемы в рамках всех выпускаемых ревизий. Имеется лишь одно замечание, что в текущей версии errata присутствует только одна первая ревизия микросхемы, в самое ближайшее время документ errata будет обновлен, проходит внутреннее тестирование программных исправлений.
theARTof1337 писал(а):
Как переключать источник тактирования?
Как сообщалось выше, во второй ревизии микроконтроллера К1986ВК025 счёт SysTick будет жестко привязан к частоте HCLK без возможности её изменения на LSE.
theARTof1337 писал(а):
Как задавать значение делителя, если нигде не указан адрес регистра DIV_SYS_TIM?
Обратите, пожалуйста, внимание, что выше в посте было указано, что регистр DIV_SYS_TIM находится в контроллере тактовых частот с адресом 0x40020030. Смещение 0x30 для данного регистра регламентировано в актуальной версии спецификации на микроконтроллер К1986ВК025 (ТСКЯ.431296.023СП Версия 0.7.0 от 23.12.2021 - подраздел 16.6 "Описание регистров блока контроллера тактовой частоты", стр. 120).
theARTof1337 писал(а):
Теперь главное. Я использую LSE. LSE на 32 кГц стандартный на отладочной плате. Если я в обработчике прерывания инкрементирую значение регистра сравнения на 32768, то обработчик прерывания вызывается 2 раза в секунду, а не 1 раз. В том же проекте я успешно настроил и использую модуль RTC, который тактируется так же от LSE. При этом часы идут с нормальной скоростью. Что я делаю не так при настройке SysTick? Или системный таймер инкрементируется по обоим фронтам LSE и надо инкрементировать регистр сравнения на 65535?
Вы делаете всё абсолютно правильно, просто счётчик SysTick действительно инкрементируется по обоим фронтам LSE, соответственно, для генерации прерывания раз в секунду на первой ревизии микроконтроллера необходимо при номинальной частоте 32768 Гц от LSE выставить значение для сравнения в два раза выше. Информация о данном механизме будет добавлена в спецификацию. При этом в рамках тестирования второй ревизии К1986ВК025 подтвердили, что счётчик SysTick инкрементируется строго по переднему фронту частоты HCLK с учётом делителя.
Закрыть
Lampadov писал(а):
Как сообщалось выше, во второй ревизии микроконтроллера К1986ВК025 счёт SysTick будет жестко привязан к частоте HCLK без возможности её изменения на LSE.
Я установил, что на плате у меня установлен МК с кодом 2038, это как раз первая ревизия, согласно эррате. Также на производстве мне выдали МК с кодом 2120. Я так понимаю, это уже будет вторая ревизия. Однако выдали МК с оговоркой, что на них нет некоего бутлоадера и после перепайки на отладочной плате они работать сразу не будут.
Отсюда вопросы:

Можно ли перепаять МК ревизии 2120 на ту же самую отладочную плату?

Если можно, действительно ли на нём нет бутлоадера "из коробки"?
Если бутлоадера нет, какого процедура его загрузки?
Можно ли это сделать средствами отладочной платы MLDR187B Ver2, или требуется дополнительное оборудование?

Если МК ревизии 2120 нельзя перепаивать, на ту же отладочную плату, то как можно получить новую отладочную плату?


Вернуться к началу
 Заголовок сообщения: Re: [К1986ВК025] Настройка SysTick
СообщениеДобавлено: 2022-янв-17 14:12 
В сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 679
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
Открыть обращение пользователя theARTof1337
theARTof1337 писал(а): *
Открыть ответ пользователя Lampadov
Lampadov писал(а): *
Открыть обращение пользователя theARTof1337
theARTof1337 писал(а): *
Доброго времени суток! Столкнулся с неопределённостью при настройке machine timer interrupt.
Исходя из документации понял, что существует 2 регистра таймера "Значения 0x02004000" и "Сравнения 0x0200BFF8".
Для того, чтобы сгенерировалось прерывание по таймеру необходимо, чтобы значение по адресу 0x02004000 стало строго больше чем по адресу 0x0200BFF8. Здесь всё более менее прозрачно.
Далее разобрался, что необходимо обязательно проинициализировать LSE, чтобы заработал обработчик прерывания, иначе таймер не инкриментируется. Однако в спецификации указано, что SysTick может работать, как от LSE, так и от HCLK с заданным делителем, но только начиная со второй ревизии микроконтроллера.
Как мне узнать ревизию микроконтроллера?
Как переключать источник тактирования?
Как задавать значение делителя, если нигде не указан адрес регистра DIV_SYS_TIM?

Теперь главное. Я использую LSE. LSE на 32 кГц стандартный на отладочной плате. Если я в обработчике прерывания инкрементирую значение регистра сравнения на 32768, то обработчик прерывания вызывается 2 раза в секунду, а не 1 раз. В том же проекте я успешно настроил и использую модуль RTC, который тактируется так же от LSE. При этом часы идут с нормальной скоростью. Что я делаю не так при настройке SysTick? Или системный таймер инкрементируется по обоим фронтам LSE и надо инкрементировать регистр сравнения на 65535?
Закрыть
Здравствуйте!

Предметные ответы по Вашему запросу:
theARTof1337 писал(а):
Для того, чтобы сгенерировалось прерывание по таймеру необходимо, чтобы значение по адресу 0x02004000 стало строго больше чем по адресу 0x0200BFF8. Здесь всё более менее прозрачно.
Это действительно так, по факту совпадения значения счётчика со значением сравнения выставляется запрос прерывания от счётчика SysTick. Запрос удерживается, пока значение счёта больше значения сравнения.
theARTof1337 писал(а):
Далее разобрался, что необходимо обязательно проинициализировать LSE, чтобы заработал обработчик прерывания, иначе таймер не инкриментируется. Однако в спецификации указано, что SysTick может работать, как от LSE, так и от HCLK с заданным делителем, но только начиная со второй ревизии микроконтроллера.
Дело в том, что в первой ревизии микроконтроллера К1986ВК025, счётчик SysTick вел счёт на частоте LSE (с примечанием, описанным далее по посту), то есть пока LSE выключен, счётчик в регистре MDR_CLINT_TIMER (значение по адресу 0x0200BFF8 - название же объявлено в файле MLDR187_it.h файлов поддержки) блока CLINT не считает. Во второй ревизии источником тактирования для таймера SysTick стала частота HCLK с делителем, настраиваемым в регистре DIV_SYS_TIM блока контроллера тактовых частот (адрес 0x40020030), при этом важно отметить, что как такового выбора источника тактирования во второй ревизии уже нет, частота счёта SysTick теперь жестко привязана к частоте HCLK с настраиваемым делителем. Переход сделан для удобства тестирования.
theARTof1337 писал(а):
Как мне узнать ревизию микроконтроллера?
Если Вы наблюдаете, что счётчик SysTick не ведет счёт при отключенном генераторе LSE, то у Вас первая ревизия. Во второй ревизии, даже если LSE будет отключен, счётчик SysTick будет работать. Тем не менее, процедура проверки ревизии стандартная: необходимо взглянуть на крышку корпуса и зафиксировать четыре цифры (это дата выпуска микросхемы в формате ГГНН), после чего обратиться к документу errata, который содержит список наличия/отсутствия ошибок в работе микросхемы в рамках всех выпускаемых ревизий. Имеется лишь одно замечание, что в текущей версии errata присутствует только одна первая ревизия микросхемы, в самое ближайшее время документ errata будет обновлен, проходит внутреннее тестирование программных исправлений.
theARTof1337 писал(а):
Как переключать источник тактирования?
Как сообщалось выше, во второй ревизии микроконтроллера К1986ВК025 счёт SysTick будет жестко привязан к частоте HCLK без возможности её изменения на LSE.
theARTof1337 писал(а):
Как задавать значение делителя, если нигде не указан адрес регистра DIV_SYS_TIM?
Обратите, пожалуйста, внимание, что выше в посте было указано, что регистр DIV_SYS_TIM находится в контроллере тактовых частот с адресом 0x40020030. Смещение 0x30 для данного регистра регламентировано в актуальной версии спецификации на микроконтроллер К1986ВК025 (ТСКЯ.431296.023СП Версия 0.7.0 от 23.12.2021 - подраздел 16.6 "Описание регистров блока контроллера тактовой частоты", стр. 120).
theARTof1337 писал(а):
Теперь главное. Я использую LSE. LSE на 32 кГц стандартный на отладочной плате. Если я в обработчике прерывания инкрементирую значение регистра сравнения на 32768, то обработчик прерывания вызывается 2 раза в секунду, а не 1 раз. В том же проекте я успешно настроил и использую модуль RTC, который тактируется так же от LSE. При этом часы идут с нормальной скоростью. Что я делаю не так при настройке SysTick? Или системный таймер инкрементируется по обоим фронтам LSE и надо инкрементировать регистр сравнения на 65535?
Вы делаете всё абсолютно правильно, просто счётчик SysTick действительно инкрементируется по обоим фронтам LSE, соответственно, для генерации прерывания раз в секунду на первой ревизии микроконтроллера необходимо при номинальной частоте 32768 Гц от LSE выставить значение для сравнения в два раза выше. Информация о данном механизме будет добавлена в спецификацию. При этом в рамках тестирования второй ревизии К1986ВК025 подтвердили, что счётчик SysTick инкрементируется строго по переднему фронту частоты HCLK с учётом делителя.
Закрыть
Lampadov писал(а):
Как сообщалось выше, во второй ревизии микроконтроллера К1986ВК025 счёт SysTick будет жестко привязан к частоте HCLK без возможности её изменения на LSE.
Я установил, что на плате у меня установлен МК с кодом 2038, это как раз первая ревизия, согласно эррате. Также на производстве мне выдали МК с кодом 2120. Я так понимаю, это уже будет вторая ревизия. Однако выдали МК с оговоркой, что на них нет некоего бутлоадера и после перепайки на отладочной плате они работать сразу не будут.
Отсюда вопросы:

Можно ли перепаять МК ревизии 2120 на ту же самую отладочную плату?
Если можно, действительно ли на нём нет бутлоадера "из коробки"?
Если бутлоадера нет, какого процедура его загрузки?
Можно ли это сделать средствами отладочной платы MLDR187B Ver2, или требуется дополнительное оборудование?
Закрыть
theARTof1337 писал(а):
Я установил, что на плате у меня установлен МК с кодом 2038, это как раз первая ревизия, согласно эррате. Также на производстве мне выдали МК с кодом 2120. Я так понимаю, это уже будет вторая ревизия. Однако выдали МК с оговоркой, что на них нет некоего бутлоадера и после перепайки на отладочной плате они работать сразу не будут.
Микросхема К1986ВК025 с маркировкой 2038 действительно относится к первой ревизии. Но только и маркировка 2120 также относится к первой ревизии. Обратите, пожалуйста, внимание, что между первой и второй ревизиями также была промежуточная ревизия 1.1, то есть она шла сразу после первой и выпускалась, начиная с маркировки 2124 - данная ревизия содержала исправление ряда ошибок из errata, а именно 0002 "Не запуск микроконтроллера при несоблюдении порядка подачи питаний AUСС и UCС" и 0006 "Недопустимо использование пониженного напряжения питания менее +2,4В". Начиная с маркировки 2140, микроконтроллер К1986ВК025 имеет вторую ревизию, где внесено множество исправлений, которые уже сейчас можно отследить в том числе по актуальной версии спецификации (по ключевым словосочетаниям "начиная со 2 ревизии" и т.д) - переход счёта SysTick на частоту HCLK произошел в рамках именно этой ревизии, не промежуточной 1.1. Информация о маркировках 1.1 и 2, как и сообщалось в прошлом посте, будет содержаться в рамках обновленной версии документа errata, который находится в стадии подготовки к публикации.
theARTof1337 писал(а):
Можно ли перепаять МК ревизии 2120 на ту же самую отладочную плату?
Это сделать можно, но как и сообщалось ранее, этот переход не обеспечит работу SysTick от HCLK.
theARTof1337 писал(а):
Если можно, действительно ли на нём нет бутлоадера "из коробки"?
Всё верно, это возможный вариант поставки микросхем (upd. в соответствии с информацией из поста поставка без загрузчика - единственный вариант поставки), то есть пользователь в таком случае может написать свою загрузочную программу (загрузочная программа записывается в память OTP, а алгоритм работы представлен в рамках статьи информационного портала отдела технической поддержки компании Миландр). Тем не менее, есть стандартная реализация загрузочной программы от Миландр (исходные данные доступны в рамках указанной выше статьи информационного портала), которую может применить пользователь: её описание приведено в подразделе 9.2 "Пример одного из возможных вариантов загрузочной программы*" актуальной версии спецификации.
theARTof1337 писал(а):
Если бутлоадера нет, какого процедура его загрузки?
При отсутствии загрузочной программы микроконтроллер просто не знает, что ему делать после включения питания. Но загрузить программу во Flash-память или память ОЗУ можно, как можно и произвести отладку данной программы, например, при помощи галочки "Debug in RAM" в среде Eclipse при настройке отладчика (подробнее об опции "Debug in RAM" в статье информационного портала). Либо же произвести программирование загрузочной программы в OTP-память.
theARTof1337 писал(а):
Можно ли это сделать средствами отладочной платы MLDR187B Ver2, или требуется дополнительное оборудование?
Да, конечно, всё то, о чем шла речь в данном посте, можно делать в рамках платы MLDR187B Ver2. В отделе технической поддержки компании Миландр мы оперируем платой с установленным контактным устройством, что позволяет оперативно производить тестирование различных конфигураций на разных ревизиях микроконтроллера.

_________________
Отдел технической поддержки support@milandr.ru

Информационный портал отдела технической поддержки support.milandr.ru


Вернуться к началу
 Заголовок сообщения: Re: [К1986ВК025] Настройка SysTick
СообщениеДобавлено: 2022-янв-17 14:21 
Не в сети
Аватара пользователя

Зарегистрирован: 2021-дек-09 19:02
Сообщения: 7
Организация: Incotex Electronics Group
Открыть ответ пользователя Lampadov
Lampadov писал(а): *
Открыть обращение пользователя theARTof1337
theARTof1337 писал(а): *
Открыть ответ пользователя Lampadov
Lampadov писал(а): *
Открыть обращение пользователя theARTof1337
Закрыть
Здравствуйте!

Предметные ответы по Вашему запросу:



Это действительно так, по факту совпадения значения счётчика со значением сравнения выставляется запрос прерывания от счётчика SysTick. Запрос удерживается, пока значение счёта больше значения сравнения.



Дело в том, что в первой ревизии микроконтроллера К1986ВК025, счётчик SysTick вел счёт на частоте LSE (с примечанием, описанным далее по посту), то есть пока LSE выключен, счётчик в регистре MDR_CLINT_TIMER (значение по адресу 0x0200BFF8 - название же объявлено в файле MLDR187_it.h файлов поддержки) блока CLINT не считает. Во второй ревизии источником тактирования для таймера SysTick стала частота HCLK с делителем, настраиваемым в регистре DIV_SYS_TIM блока контроллера тактовых частот (адрес 0x40020030), при этом важно отметить, что как такового выбора источника тактирования во второй ревизии уже нет, частота счёта SysTick теперь жестко привязана к частоте HCLK с настраиваемым делителем. Переход сделан для удобства тестирования.



Если Вы наблюдаете, что счётчик SysTick не ведет счёт при отключенном генераторе LSE, то у Вас первая ревизия. Во второй ревизии, даже если LSE будет отключен, счётчик SysTick будет работать. Тем не менее, процедура проверки ревизии стандартная: необходимо взглянуть на крышку корпуса и зафиксировать четыре цифры (это дата выпуска микросхемы в формате ГГНН), после чего обратиться к документу errata, который содержит список наличия/отсутствия ошибок в работе микросхемы в рамках всех выпускаемых ревизий. Имеется лишь одно замечание, что в текущей версии errata присутствует только одна первая ревизия микросхемы, в самое ближайшее время документ errata будет обновлен, проходит внутреннее тестирование программных исправлений.



Как сообщалось выше, во второй ревизии микроконтроллера К1986ВК025 счёт SysTick будет жестко привязан к частоте HCLK без возможности её изменения на LSE.



Обратите, пожалуйста, внимание, что выше в посте было указано, что регистр DIV_SYS_TIM находится в контроллере тактовых частот с адресом 0x40020030. Смещение 0x30 для данного регистра регламентировано в актуальной версии спецификации на микроконтроллер К1986ВК025 (ТСКЯ.431296.023СП Версия 0.7.0 от 23.12.2021 - подраздел 16.6 "Описание регистров блока контроллера тактовой частоты", стр. 120).



Вы делаете всё абсолютно правильно, просто счётчик SysTick действительно инкрементируется по обоим фронтам LSE, соответственно, для генерации прерывания раз в секунду на первой ревизии микроконтроллера необходимо при номинальной частоте 32768 Гц от LSE выставить значение для сравнения в два раза выше. Информация о данном механизме будет добавлена в спецификацию. При этом в рамках тестирования второй ревизии К1986ВК025 подтвердили, что счётчик SysTick инкрементируется строго по переднему фронту частоты HCLK с учётом делителя.
Закрыть
Lampadov писал(а):
Как сообщалось выше, во второй ревизии микроконтроллера К1986ВК025 счёт SysTick будет жестко привязан к частоте HCLK без возможности её изменения на LSE.
Я установил, что на плате у меня установлен МК с кодом 2038, это как раз первая ревизия, согласно эррате. Также на производстве мне выдали МК с кодом 2120. Я так понимаю, это уже будет вторая ревизия. Однако выдали МК с оговоркой, что на них нет некоего бутлоадера и после перепайки на отладочной плате они работать сразу не будут.
Отсюда вопросы:

Можно ли перепаять МК ревизии 2120 на ту же самую отладочную плату?
Если можно, действительно ли на нём нет бутлоадера "из коробки"?
Если бутлоадера нет, какого процедура его загрузки?
Можно ли это сделать средствами отладочной платы MLDR187B Ver2, или требуется дополнительное оборудование?
Закрыть
theARTof1337 писал(а):
Я установил, что на плате у меня установлен МК с кодом 2038, это как раз первая ревизия, согласно эррате. Также на производстве мне выдали МК с кодом 2120. Я так понимаю, это уже будет вторая ревизия. Однако выдали МК с оговоркой, что на них нет некоего бутлоадера и после перепайки на отладочной плате они работать сразу не будут.
Микросхема К1986ВК025 с маркировкой 2038 действительно относится к первой ревизии. Но только и маркировка 2120 также относится к первой ревизии. Обратите, пожалуйста, внимание, что между первой и второй ревизиями также была промежуточная ревизия 1.1, то есть она шла сразу после первой и выпускалась, начиная с маркировки 2124 - данная ревизия содержала исправление ряда ошибок из errata, а именно 0002 "Не запуск микроконтроллера при несоблюдении порядка подачи питаний AUСС и UCС" и 0006 "Недопустимо использование пониженного напряжения питания менее +2,4В". Начиная с маркировки 2140, микроконтроллер К1986ВК025 имеет вторую ревизию, где внесено множество исправлений, которые уже сейчас можно отследить в том числе по актуальной версии спецификации (по ключевым словосочетаниям "начиная со 2 ревизии" и т.д) - переход счёта SysTick на частоту HCLK произошел в рамках именно этой ревизии, не промежуточной 1.1. Информация о маркировках 1.1 и 2, как и сообщалось в прошлом посте, будет содержаться в рамках обновленной версии документа errata, который находится в стадии подготовки к публикации.
theARTof1337 писал(а):
Можно ли перепаять МК ревизии 2120 на ту же самую отладочную плату?
Это сделать можно, но как и сообщалось ранее, этот переход не обеспечит работу SysTick от HCLK.
theARTof1337 писал(а):
Если можно, действительно ли на нём нет бутлоадера "из коробки"?
Всё верно, это возможный вариант поставки микросхем, то есть пользователь в таком случае может написать свою загрузочную программу (загрузочная программа записывается в память OTP, а алгоритм работы представлен в рамках статьи информационного портала отдела технической поддержки компании Миландр). Тем не менее, есть стандартная реализация загрузочной программы от Миландр (исходные данные доступны в рамках указанной выше статьи информационного портала), которую может применить пользователь: её описание приведено в подразделе 9.2 "Пример одного из возможных вариантов загрузочной программы*" актуальной версии спецификации.
theARTof1337 писал(а):
Если бутлоадера нет, какого процедура его загрузки?
При отсутствии загрузочной программы микроконтроллер просто не знает, что ему делать после включения питания. Но загрузить программу во Flash-память или память ОЗУ можно, как можно и произвести отладку данной программы, например, при помощи галочки "Debug in RAM" в среде Eclipse при настройке отладчика (подробнее об опции "Debug in RAM" в статье информационного портала). Либо же произвести программирование загрузочной программы в OTP-память.
theARTof1337 писал(а):
Можно ли это сделать средствами отладочной платы MLDR187B Ver2, или требуется дополнительное оборудование?
Да, конечно, всё то, о чем шла речь в данном посте, можно делать в рамках платы MLDR187B Ver2. В отделе технической поддержки компании Миландр мы оперируем платой с установленным контактным устройством, что позволяет оперативно производить тестирование различных конфигураций на разных ревизиях микроконтроллера.
Закрыть
Вопрос по монтажу этих МК теряет актуальность, принимая во внимание, что это по-прежнему первая ревизия.
Подскажите, пожалуйста, что нужно, чтобы получить образцы именно второй ревизии?
Что нужно, чтобы получить МК второй ревизии, при том сразу с бутлоадером?
Можно ли будет установить именно вторую ревизию МК на ту же отладочную плату?


Вернуться к началу
 Заголовок сообщения: Re: [К1986ВК025] Настройка SysTick
СообщениеДобавлено: 2022-янв-17 17:29 
В сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 679
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
Открыть обращение пользователя theARTof1337
theARTof1337 писал(а): *
Открыть ответ пользователя Lampadov
Lampadov писал(а): *
Открыть обращение пользователя theARTof1337
theARTof1337 писал(а): *
Открыть ответ пользователя Lampadov
Закрыть


Я установил, что на плате у меня установлен МК с кодом 2038, это как раз первая ревизия, согласно эррате. Также на производстве мне выдали МК с кодом 2120. Я так понимаю, это уже будет вторая ревизия. Однако выдали МК с оговоркой, что на них нет некоего бутлоадера и после перепайки на отладочной плате они работать сразу не будут.
Отсюда вопросы:

Можно ли перепаять МК ревизии 2120 на ту же самую отладочную плату?
Если можно, действительно ли на нём нет бутлоадера "из коробки"?
Если бутлоадера нет, какого процедура его загрузки?
Можно ли это сделать средствами отладочной платы MLDR187B Ver2, или требуется дополнительное оборудование?
Закрыть
theARTof1337 писал(а):
Я установил, что на плате у меня установлен МК с кодом 2038, это как раз первая ревизия, согласно эррате. Также на производстве мне выдали МК с кодом 2120. Я так понимаю, это уже будет вторая ревизия. Однако выдали МК с оговоркой, что на них нет некоего бутлоадера и после перепайки на отладочной плате они работать сразу не будут.
Микросхема К1986ВК025 с маркировкой 2038 действительно относится к первой ревизии. Но только и маркировка 2120 также относится к первой ревизии. Обратите, пожалуйста, внимание, что между первой и второй ревизиями также была промежуточная ревизия 1.1, то есть она шла сразу после первой и выпускалась, начиная с маркировки 2124 - данная ревизия содержала исправление ряда ошибок из errata, а именно 0002 "Не запуск микроконтроллера при несоблюдении порядка подачи питаний AUСС и UCС" и 0006 "Недопустимо использование пониженного напряжения питания менее +2,4В". Начиная с маркировки 2140, микроконтроллер К1986ВК025 имеет вторую ревизию, где внесено множество исправлений, которые уже сейчас можно отследить в том числе по актуальной версии спецификации (по ключевым словосочетаниям "начиная со 2 ревизии" и т.д) - переход счёта SysTick на частоту HCLK произошел в рамках именно этой ревизии, не промежуточной 1.1. Информация о маркировках 1.1 и 2, как и сообщалось в прошлом посте, будет содержаться в рамках обновленной версии документа errata, который находится в стадии подготовки к публикации.
theARTof1337 писал(а):
Можно ли перепаять МК ревизии 2120 на ту же самую отладочную плату?
Это сделать можно, но как и сообщалось ранее, этот переход не обеспечит работу SysTick от HCLK.
theARTof1337 писал(а):
Если можно, действительно ли на нём нет бутлоадера "из коробки"?
Всё верно, это возможный вариант поставки микросхем, то есть пользователь в таком случае может написать свою загрузочную программу (загрузочная программа записывается в память OTP, а алгоритм работы представлен в рамках статьи информационного портала отдела технической поддержки компании Миландр). Тем не менее, есть стандартная реализация загрузочной программы от Миландр (исходные данные доступны в рамках указанной выше статьи информационного портала), которую может применить пользователь: её описание приведено в подразделе 9.2 "Пример одного из возможных вариантов загрузочной программы*" актуальной версии спецификации.
theARTof1337 писал(а):
Если бутлоадера нет, какого процедура его загрузки?
При отсутствии загрузочной программы микроконтроллер просто не знает, что ему делать после включения питания. Но загрузить программу во Flash-память или память ОЗУ можно, как можно и произвести отладку данной программы, например, при помощи галочки "Debug in RAM" в среде Eclipse при настройке отладчика (подробнее об опции "Debug in RAM" в статье информационного портала). Либо же произвести программирование загрузочной программы в OTP-память.
theARTof1337 писал(а):
Можно ли это сделать средствами отладочной платы MLDR187B Ver2, или требуется дополнительное оборудование?
Да, конечно, всё то, о чем шла речь в данном посте, можно делать в рамках платы MLDR187B Ver2. В отделе технической поддержки компании Миландр мы оперируем платой с установленным контактным устройством, что позволяет оперативно производить тестирование различных конфигураций на разных ревизиях микроконтроллера.
Закрыть
Вопрос по монтажу этих МК теряет актуальность, принимая во внимание, что это по-прежнему первая ревизия.
Подскажите, пожалуйста, что нужно, чтобы получить образцы именно второй ревизии?
Что нужно, чтобы получить МК второй ревизии, при том сразу с бутлоадером?
Можно ли будет установить именно вторую ревизию МК на ту же отладочную плату?
Закрыть
theARTof1337 писал(а):
Подскажите, пожалуйста, что нужно, чтобы получить образцы именно второй ревизии?
По имеющейся информации у Вашей организации уже имеются микросхемы второй ревизии. Тем не менее, в рамках дополнительного запроса, направленного по электронной почте, в ближайшее время с Вами свяжется отдел маркетинга с предоставлением информации касательно возможности замены/получения образцов К1986ВК025 второй ревизии.
theARTof1337 писал(а):
Что нужно, чтобы получить МК второй ревизии, при том сразу с бутлоадером?
Обратите, пожалуйста, внимание, что ранее направленная информация о том, что одним из вариантов поставки является поставка микросхем К1986ВК025 без загрузчика, неверна. Микросхемы поставляются строго без загрузчика - загрузчик или свой, или стандартный, программируется в память OTP самостоятельно на основании ранее направленных материалов с информационного портала отдела технической поддержки компании Миландр.
theARTof1337 писал(а):
Можно ли будет установить именно вторую ревизию МК на ту же отладочную плату?
Да, установить вторую ревизию микроконтроллера К1986ВК025 на ту же самую плату можно (обратите, пожалуйста, внимание, что ответ на данный вопрос был приведен при упоминании работы со стандартной платой с КУ)

_________________
Отдел технической поддержки support@milandr.ru

Информационный портал отдела технической поддержки support.milandr.ru


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 7 сообщений ] 

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти: 

Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB